[{"data":1,"prerenderedAt":476},["ShallowReactive",2],{"navigation":3,"\u002Fgetting-started\u002Finstallation":178,"\u002Fgetting-started\u002Finstallation-surround":471},[4,23,78,95,123,143,158],{"title":5,"path":6,"stem":7,"children":8,"icon":22},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Configuration","\u002Fgetting-started\u002Fconfiguration","1.getting-started\u002F3.configuration","i-lucide-settings",false,{"title":24,"icon":22,"path":25,"stem":26,"children":27,"page":22},"Sign-in","\u002Fsign-in","2.sign-in",[28,33,38,43,48,53,58,63,68,73],{"title":29,"path":30,"stem":31,"icon":32},"Sign-in pages","\u002Fsign-in\u002Fpages","2.sign-in\u002F1.pages","i-lucide-log-in",{"title":34,"path":35,"stem":36,"icon":37},"Several accounts","\u002Fsign-in\u002Fmulti-session","2.sign-in\u002F10.multi-session","i-lucide-users-round",{"title":39,"path":40,"stem":41,"icon":42},"Account page","\u002Fsign-in\u002Faccount","2.sign-in\u002F2.account","i-lucide-circle-user",{"title":44,"path":45,"stem":46,"icon":47},"Other methods","\u002Fsign-in\u002Fmethods","2.sign-in\u002F3.methods","i-lucide-key-square",{"title":49,"path":50,"stem":51,"icon":52},"Sign-in providers","\u002Fsign-in\u002Fproviders","2.sign-in\u002F4.providers","i-lucide-share-2",{"title":54,"path":55,"stem":56,"icon":57},"Two-factor","\u002Fsign-in\u002Ftwo-factor","2.sign-in\u002F5.two-factor","i-lucide-shield-check",{"title":59,"path":60,"stem":61,"icon":62},"Passkeys","\u002Fsign-in\u002Fpasskeys","2.sign-in\u002F6.passkeys","i-lucide-fingerprint",{"title":64,"path":65,"stem":66,"icon":67},"Phone numbers","\u002Fsign-in\u002Fphone-numbers","2.sign-in\u002F7.phone-numbers","i-lucide-smartphone",{"title":69,"path":70,"stem":71,"icon":72},"Signing in devices","\u002Fsign-in\u002Fdevices","2.sign-in\u002F8.devices","i-lucide-tv",{"title":74,"path":75,"stem":76,"icon":77},"Security","\u002Fsign-in\u002Fsecurity","2.sign-in\u002F9.security","i-lucide-lock-keyhole",{"title":79,"path":80,"stem":81,"children":82,"icon":22},"Organizations","\u002Forganizations","3.organizations\u002F1.index",[83,85,90],{"title":79,"path":80,"stem":81,"icon":84},"i-lucide-building-2",{"title":86,"path":87,"stem":88,"icon":89},"Roles","\u002Forganizations\u002Froles","3.organizations\u002F2.roles","i-lucide-shield",{"title":91,"path":92,"stem":93,"icon":94},"Single sign-on","\u002Forganizations\u002Fsso","3.organizations\u002F3.sso","i-lucide-key-round",{"title":96,"path":97,"stem":98,"children":99,"icon":22},"Admin dashboard","\u002Fadmin","4.admin\u002F1.index",[100,103,108,113,118],{"title":101,"path":97,"stem":98,"icon":102},"Overview","i-lucide-layout-dashboard",{"title":104,"path":105,"stem":106,"icon":107},"Managing users","\u002Fadmin\u002Fusers","4.admin\u002F2.users","i-lucide-user-cog",{"title":109,"path":110,"stem":111,"icon":112},"Staff roles","\u002Fadmin\u002Froles","4.admin\u002F3.roles","i-lucide-shield-user",{"title":114,"path":115,"stem":116,"icon":117},"Audit log","\u002Fadmin\u002Faudit-log","4.admin\u002F4.audit-log","i-lucide-history",{"title":119,"path":120,"stem":121,"icon":122},"Your own pages","\u002Fadmin\u002Fextending","4.admin\u002F5.extending","i-lucide-layout-panel-left",{"title":124,"icon":22,"path":125,"stem":126,"children":127,"page":22},"Integrations","\u002Fintegrations","5.integrations",[128,133,138],{"title":129,"path":130,"stem":131,"icon":132},"Stripe","\u002Fintegrations\u002Fstripe","5.integrations\u002F1.stripe","i-simple-icons-stripe",{"title":134,"path":135,"stem":136,"icon":137},"API keys","\u002Fintegrations\u002Fapi-keys","5.integrations\u002F2.api-keys","i-lucide-key",{"title":139,"path":140,"stem":141,"icon":142},"Tokens","\u002Fintegrations\u002Ftokens","5.integrations\u002F3.tokens","i-lucide-ticket",{"title":144,"icon":22,"path":145,"stem":146,"children":147,"page":22},"Customization","\u002Fcustomization","6.customization",[148,153],{"title":149,"path":150,"stem":151,"icon":152},"Emails","\u002Fcustomization\u002Femails","6.customization\u002F1.emails","i-lucide-mail",{"title":154,"path":155,"stem":156,"icon":157},"Languages","\u002Fcustomization\u002Flanguages","6.customization\u002F2.languages","i-lucide-languages",{"title":159,"icon":22,"path":160,"stem":161,"children":162,"page":22},"Reference","\u002Freference","7.reference",[163,168,173],{"title":164,"path":165,"stem":166,"icon":167},"How it works","\u002Freference\u002Fhow-it-works","7.reference\u002F1.how-it-works","i-lucide-cog",{"title":169,"path":170,"stem":171,"icon":172},"API reference","\u002Freference\u002Fapi","7.reference\u002F2.api","i-lucide-braces",{"title":174,"path":175,"stem":176,"icon":177},"Contributing","\u002Freference\u002Fcontributing","7.reference\u002F3.contributing","i-lucide-git-pull-request",{"id":179,"title":13,"body":180,"description":464,"extension":465,"links":466,"meta":467,"navigation":468,"path":14,"seo":469,"stem":15,"__hash__":470},"docs\u002F1.getting-started\u002F2.installation.md",{"type":181,"value":182,"toc":461},"minimark",[183,435,440,443,454,457],[184,185,187,192,219,249,256,317,321,324,341,345,352,405,411,415],"steps",{"level":186},"3",[188,189,191],"h3",{"id":190},"install-the-module","Install the module",[193,194,200],"pre",{"className":195,"code":196,"filename":197,"language":198,"meta":199,"style":199},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add @treygrr\u002Fnuxt-better-auth-ui\n","Terminal","bash","",[201,202,203],"code",{"__ignoreMap":199},[204,205,208,212,216],"span",{"class":206,"line":207},"line",1,[204,209,211],{"class":210},"sBMFI","pnpm",[204,213,215],{"class":214},"sfazB"," add",[204,217,218],{"class":214}," @treygrr\u002Fnuxt-better-auth-ui\n",[220,221,222,223,232,233,240,241,244,245,248],"p",{},"It depends on ",[224,225,229],"a",{"href":226,"rel":227},"https:\u002F\u002Fui.nuxt.com",[228],"nofollow",[201,230,231],{},"@nuxt\u002Fui"," and ",[224,234,237],{"href":235,"rel":236},"https:\u002F\u002Fbetter-auth.nuxt.dev",[228],[201,238,239],{},"@nuxtjs\u002Fbetter-auth",", and\ninstalls them for you through Nuxt's module dependencies. Your app still needs its own Better Auth config\n(",[201,242,243],{},"server\u002Fauth.config.ts",", ",[201,246,247],{},"app\u002Fauth.config.ts",").",[188,250,252,253],{"id":251},"add-it-to-nuxtconfigts","Add it to ",[201,254,255],{},"nuxt.config.ts",[193,257,261],{"className":258,"code":259,"filename":255,"language":260,"meta":199,"style":199},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@treygrr\u002Fnuxt-better-auth-ui']\n})\n","ts",[201,262,263,284,308],{"__ignoreMap":199},[204,264,265,269,272,276,280],{"class":206,"line":207},[204,266,268],{"class":267},"s7zQu","export",[204,270,271],{"class":267}," default",[204,273,275],{"class":274},"s2Zo4"," defineNuxtConfig",[204,277,279],{"class":278},"sTEyZ","(",[204,281,283],{"class":282},"sMK4o","{\n",[204,285,287,291,294,297,300,303,305],{"class":206,"line":286},2,[204,288,290],{"class":289},"swJcz","  modules",[204,292,293],{"class":282},":",[204,295,296],{"class":278}," [",[204,298,299],{"class":282},"'",[204,301,302],{"class":214},"@treygrr\u002Fnuxt-better-auth-ui",[204,304,299],{"class":282},[204,306,307],{"class":278},"]\n",[204,309,311,314],{"class":206,"line":310},3,[204,312,313],{"class":282},"}",[204,315,316],{"class":278},")\n",[188,318,320],{"id":319},"install-the-icon-sets","Install the icon sets",[220,322,323],{},"The pages use these icons, and Nuxt Icon looks for them in your app's dependencies:",[193,325,327],{"className":195,"code":326,"filename":197,"language":198,"meta":199,"style":199},"pnpm add @iconify-json\u002Flucide @iconify-json\u002Fsimple-icons\n",[201,328,329],{"__ignoreMap":199},[204,330,331,333,335,338],{"class":206,"line":207},[204,332,211],{"class":210},[204,334,215],{"class":214},[204,336,337],{"class":214}," @iconify-json\u002Flucide",[204,339,340],{"class":214}," @iconify-json\u002Fsimple-icons\n",[188,342,344],{"id":343},"point-tailwind-at-the-module","Point Tailwind at the module",[220,346,347,348,351],{},"Tailwind doesn't scan ",[201,349,350],{},"node_modules",", so add the module's pages to your main CSS file:",[193,353,358],{"className":354,"code":355,"filename":356,"language":357,"meta":199,"style":199},"language-css shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","@import 'tailwindcss';\n@import '@nuxt\u002Fui';\n\n@source \"..\u002F..\u002F..\u002Fnode_modules\u002F@treygrr\u002Fnuxt-better-auth-ui\u002Fdist\u002Fruntime\";\n","app\u002Fassets\u002Fcss\u002Fmain.css","css",[201,359,360,376,388,394],{"__ignoreMap":199},[204,361,362,365,368,371,373],{"class":206,"line":207},[204,363,364],{"class":267},"@import",[204,366,367],{"class":282}," '",[204,369,370],{"class":214},"tailwindcss",[204,372,299],{"class":282},[204,374,375],{"class":282},";\n",[204,377,378,380,382,384,386],{"class":206,"line":286},[204,379,364],{"class":267},[204,381,367],{"class":282},[204,383,231],{"class":214},[204,385,299],{"class":282},[204,387,375],{"class":282},[204,389,390],{"class":206,"line":310},[204,391,393],{"emptyLinePlaceholder":392},true,"\n",[204,395,397,400,403],{"class":206,"line":396},4,[204,398,399],{"class":267},"@source",[204,401,402],{"class":278}," \"..\u002F..\u002F..\u002Fnode_modules\u002F@treygrr\u002Fnuxt-better-auth-ui\u002Fdist\u002Fruntime\"",[204,404,375],{"class":282},[220,406,407,408,410],{},"The path is relative to the CSS file; adjust it if yours isn't at ",[201,409,356],{},".",[188,412,414],{"id":413},"run-better-auths-migrations","Run Better Auth's migrations",[220,416,417,418,244,421,244,424,232,427,430,431,434],{},"The Admin plugin adds ",[201,419,420],{},"role",[201,422,423],{},"banned",[201,425,426],{},"banReason",[201,428,429],{},"banExpires"," to the user table, and ",[201,432,433],{},"impersonatedBy"," to\nsessions; other features add their own tables. Run Better Auth's migrations after installing, and again after turning\non a feature, the same way you apply your other Better Auth migrations.",[436,437,439],"h2",{"id":438},"your-first-admin","Your first admin",[220,441,442],{},"Nobody has the admin role at first. Set it once in your database, for example with SQLite:",[193,444,448],{"className":445,"code":446,"language":447,"meta":199,"style":199},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","update user set role = 'admin' where email = 'you@example.com';\n","sql",[201,449,450],{"__ignoreMap":199},[204,451,452],{"class":206,"line":207},[204,453,446],{},[220,455,456],{},"After that, admins can grant the role from the dashboard.",[458,459,460],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":199,"searchDepth":207,"depth":286,"links":462},[463],{"id":438,"depth":286,"text":439},"Add the module to your Nuxt app.","md",null,{},{"icon":16},{"title":13,"description":464},"WxXYBwK-sWIk1fVYGE_JAN7HZy03XRZU1eU5zxDoxi0",[472,474],{"title":10,"path":6,"stem":7,"description":473,"icon":11,"children":-1},"Auth UI for Better Auth in Nuxt, built with Nuxt UI.",{"title":18,"path":19,"stem":20,"description":475,"icon":21,"children":-1},"How features are turned on, and every option at a glance.",1793019844024]