[{"data":1,"prerenderedAt":1676},["ShallowReactive",2],{"navigation":3,"\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages":358,"\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages-surround":1671},[4,14,36,69,140,341],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17,"children":18,"page":35},"Guides","\u002Fguides","2.guides",[19,23,27,31],{"title":20,"path":21,"stem":22},"Your First Layout","\u002Fguides\u002Fyour-first-layout","2.guides\u002F1.your-first-layout",{"title":24,"path":25,"stem":26},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","2.guides\u002F2.your-first-page-template",{"title":28,"path":29,"stem":30},"Your First Component","\u002Fguides\u002Fyour-first-component","2.guides\u002F3.your-first-component",{"title":32,"path":33,"stem":34},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","2.guides\u002F4.alternative-ui-variants",false,{"title":37,"path":38,"stem":39,"children":40,"page":35},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[41,45,49,53,57,61,65],{"title":42,"path":43,"stem":44},"How It All Works","\u002Fcore-concepts\u002Farchitecture","3.core-concepts\u002F1.architecture",{"title":46,"path":47,"stem":48},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","3.core-concepts\u002F2.the-data-model",{"title":50,"path":51,"stem":52},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","3.core-concepts\u002F3.layouts-and-pages",{"title":54,"path":55,"stem":56},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","3.core-concepts\u002F4.dynamic-pages",{"title":58,"path":59,"stem":60},"Components","\u002Fcore-concepts\u002Fcomponents","3.core-concepts\u002F5.components",{"title":62,"path":63,"stem":64},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","3.core-concepts\u002F6.draft-and-publish",{"title":66,"path":67,"stem":68},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","3.core-concepts\u002F7.admin-panel",{"title":70,"path":71,"stem":72,"children":73,"page":35},"Api","\u002Fapi","4.api",[74,78,116,120,124,128,132,136],{"title":75,"path":76,"stem":77},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F1.bundle-setup",{"title":58,"path":79,"stem":80,"children":81,"page":35},"\u002Fapi\u002Fcomponents","4.api\u002F2.components",[82,86,103],{"title":83,"path":84,"stem":85},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F2.components\u002F1.creating-components",{"title":87,"path":88,"stem":89,"children":90,"page":35},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F2.components\u002F2.annotations",[91,95,99],{"title":92,"path":93,"stem":94},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F2.components\u002F2.annotations\u002F1.publishable",{"title":96,"path":97,"stem":98},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F2.components\u002F2.annotations\u002F2.uploadable",{"title":100,"path":101,"stem":102},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F2.components\u002F2.annotations\u002F3.timestamped",{"title":104,"path":105,"stem":106,"children":107,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[108,112],{"title":109,"path":110,"stem":111},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":113,"path":114,"stem":115},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":117,"path":118,"stem":119},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":121,"path":122,"stem":123},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":125,"path":126,"stem":127},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":129,"path":130,"stem":131},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":133,"path":134,"stem":135},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":137,"path":138,"stem":139},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":141,"path":142,"stem":143,"children":144,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[145,149,162,182,207,211,295,320,324],{"title":146,"path":147,"stem":148},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":150,"path":151,"stem":152,"children":153,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[154,158],{"title":155,"path":156,"stem":157},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":159,"path":160,"stem":161},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":163,"path":164,"stem":165,"children":166,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[167,171,175,178],{"title":168,"path":169,"stem":170},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":172,"path":173,"stem":174},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":176,"stem":177},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":179,"path":180,"stem":181},"CLI Generator","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcwa-cli","5.nuxt-module\u002F3.building-your-ui\u002F4.cwa-cli",{"title":183,"path":184,"stem":185,"children":186,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[187,191,195,199,203],{"title":188,"path":189,"stem":190},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":192,"path":193,"stem":194},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":196,"path":197,"stem":198},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":200,"path":201,"stem":202},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":204,"path":205,"stem":206},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":208,"path":209,"stem":210},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":212,"path":213,"stem":214,"children":215,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[216,224,261,278],{"title":217,"path":218,"stem":219,"children":220,"page":35},"Layout","\u002Fnuxt-module\u002Fcomposables\u002Flayout","5.nuxt-module\u002F6.composables\u002F0.layout",[221],{"title":217,"path":222,"stem":223},"\u002Fnuxt-module\u002Fcomposables\u002Flayout\u002Fuse-cwa-layout","5.nuxt-module\u002F6.composables\u002F0.layout\u002F1.use-cwa-layout",{"title":225,"path":226,"stem":227,"children":228,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[229,233,237,241,245,249,253,257],{"title":230,"path":231,"stem":232},"Component (recommended)","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-component","5.nuxt-module\u002F6.composables\u002F1.component\u002F0.use-cwa-component",{"title":234,"path":235,"stem":236},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":238,"path":239,"stem":240},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":242,"path":243,"stem":244},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":246,"path":247,"stem":248},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":250,"path":251,"stem":252},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":254,"path":255,"stem":256},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":258,"path":259,"stem":260},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":262,"path":263,"stem":264,"children":265,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[266,270,274],{"title":267,"path":268,"stem":269},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":271,"path":272,"stem":273},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F2.use-cwa-resource-model",{"title":275,"path":276,"stem":277},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F3.use-cwa-resource-upload",{"title":279,"path":280,"stem":281,"children":282,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[283,287,291],{"title":284,"path":285,"stem":286},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":288,"path":289,"stem":290},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":292,"path":293,"stem":294},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":296,"path":297,"stem":298,"children":299,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[300,304,308,312,316],{"title":301,"path":302,"stem":303},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":305,"path":306,"stem":307},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":309,"path":310,"stem":311},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":313,"path":314,"stem":315},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":317,"path":318,"stem":319},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":321,"path":322,"stem":323},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":325,"path":326,"stem":327,"children":328,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[329,333,337],{"title":330,"path":331,"stem":332},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":334,"path":335,"stem":336},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":338,"path":339,"stem":340},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":342,"path":343,"stem":344,"children":345,"page":35},"Deployment","\u002Fdeployment","6.deployment",[346,350,354],{"title":347,"path":348,"stem":349},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":351,"path":352,"stem":353},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":355,"path":356,"stem":357},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":359,"title":334,"badge":360,"body":363,"description":1665,"extension":1666,"links":1667,"meta":1668,"navigation":915,"path":335,"seo":1669,"stem":336,"__hash__":1670},"docs\u002F5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages.md",{"label":361,"color":362},"Draft","amber",{"type":364,"value":365,"toc":1652},"minimark",[366,375,380,482,486,496,1057,1060,1066,1120,1125,1179,1184,1237,1242,1390,1396,1439,1443,1446,1512,1518,1522,1537,1641,1648],[367,368,369,370,374],"p",{},"The CWA layer ships complete auth pages for every standard authentication flow. They work immediately after installation. Override any of them by creating the same path in ",[371,372,373],"code",{},"app\u002Fpages\u002F",".",[376,377,379],"h2",{"id":378},"provided-pages","Provided Pages",[381,382,383,398],"table",{},[384,385,386],"thead",{},[387,388,389,393,395],"tr",{},[390,391,392],"th",{},"Route",[390,394,225],{},[390,396,397],{},"Composable",[399,400,401,419,436,453,468],"tbody",{},[387,402,403,409,414],{},[404,405,406],"td",{},[371,407,408],{},"\u002Flogin",[404,410,411],{},[371,412,413],{},"\u003CCwaLoginPage>",[404,415,416],{},[371,417,418],{},"useLogin()",[387,420,421,426,431],{},[404,422,423],{},[371,424,425],{},"\u002Fforgot-password",[404,427,428],{},[371,429,430],{},"\u003CCwaForgotPasswordPage>",[404,432,433],{},[371,434,435],{},"useForgotPassword()",[387,437,438,443,448],{},[404,439,440],{},[371,441,442],{},"\u002Freset-password\u002F[username]\u002F[token]",[404,444,445],{},[371,446,447],{},"\u003CCwaResetPasswordPage>",[404,449,450],{},[371,451,452],{},"useResetPassword()",[387,454,455,460,463],{},[404,456,457],{},[371,458,459],{},"\u002Fverify-email\u002F[username]\u002F[token]",[404,461,462],{},"— (auto-verifies on mount)",[404,464,465],{},[371,466,467],{},"useVerifyEmail()",[387,469,470,475,478],{},[404,471,472],{},[371,473,474],{},"\u002Fconfirm-new-email\u002F[username]\u002F[newEmail]\u002F[token]",[404,476,477],{},"— (auto-confirms on mount)",[404,479,480],{},[371,481,467],{},[376,483,485],{"id":484},"overriding-the-login-page","Overriding the Login Page",[367,487,488,489,492,493,495],{},"Create ",[371,490,491],{},"app\u002Fpages\u002Flogin.vue",". Use ",[371,494,418],{}," to keep the same API wiring:",[497,498,503],"pre",{"className":499,"code":500,"language":501,"meta":502,"style":502},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003C!-- app\u002Fpages\u002Flogin.vue -->\n\u003Ctemplate>\n    \u003Cdiv class=\"max-w-sm mx-auto mt-16\">\n        \u003Ch1 class=\"text-2xl font-bold mb-8\">Welcome back\u003C\u002Fh1>\n        \u003Cform @submit.prevent=\"submit\" class=\"space-y-4\">\n            \u003Cinput v-model=\"model.username\" type=\"email\" class=\"input w-full\" placeholder=\"Email\" \u002F>\n            \u003Cinput v-model=\"model.password\" type=\"password\" class=\"input w-full\" placeholder=\"Password\" \u002F>\n            \u003Cp v-if=\"error\" class=\"text-red-500 text-sm\">{{ error }}\u003C\u002Fp>\n            \u003Cbutton type=\"submit\" :disabled=\"loading\" class=\"btn-primary w-full\">\n                {{ loading ? 'Signing in…' : 'Sign in' }}\n            \u003C\u002Fbutton>\n        \u003C\u002Fform>\n        \u003CNuxtLink to=\"\u002Fforgot-password\" class=\"text-sm text-gray-500 mt-4 block\">\n            Forgot your password?\n        \u003C\u002FNuxtLink>\n    \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nimport { useLogin } from '#imports'\n\ndefinePageMeta({ layout: 'cwa-root-layout' })\nconst { model, submit, loading, error } = useLogin()\n\u003C\u002Fscript>\n","vue","",[371,504,505,514,528,556,590,623,682,734,775,818,824,834,844,876,882,891,901,910,917,942,970,975,1008,1048],{"__ignoreMap":502},[506,507,510],"span",{"class":508,"line":509},"line",1,[506,511,513],{"class":512},"sTBSN","\u003C!-- app\u002Fpages\u002Flogin.vue -->\n",[506,515,517,521,525],{"class":508,"line":516},2,[506,518,520],{"class":519},"sOvfz","\u003C",[506,522,524],{"class":523},"s-h7I","template",[506,526,527],{"class":519},">\n",[506,529,531,534,537,541,544,548,552,554],{"class":508,"line":530},3,[506,532,533],{"class":519},"    \u003C",[506,535,536],{"class":523},"div",[506,538,540],{"class":539},"sGtlX"," class",[506,542,543],{"class":519},"=",[506,545,547],{"class":546},"seSrl","\"",[506,549,551],{"class":550},"sLL54","max-w-sm mx-auto mt-16",[506,553,547],{"class":546},[506,555,527],{"class":519},[506,557,559,562,565,567,569,571,574,576,579,583,586,588],{"class":508,"line":558},4,[506,560,561],{"class":519},"        \u003C",[506,563,564],{"class":523},"h1",[506,566,540],{"class":539},[506,568,543],{"class":519},[506,570,547],{"class":546},[506,572,573],{"class":550},"text-2xl font-bold mb-8",[506,575,547],{"class":546},[506,577,578],{"class":519},">",[506,580,582],{"class":581},"sPB8G","Welcome back",[506,584,585],{"class":519},"\u003C\u002F",[506,587,564],{"class":523},[506,589,527],{"class":519},[506,591,593,595,598,601,603,605,608,610,612,614,616,619,621],{"class":508,"line":592},5,[506,594,561],{"class":519},[506,596,597],{"class":523},"form",[506,599,600],{"class":539}," @submit.prevent",[506,602,543],{"class":519},[506,604,547],{"class":546},[506,606,607],{"class":550},"submit",[506,609,547],{"class":546},[506,611,540],{"class":539},[506,613,543],{"class":519},[506,615,547],{"class":546},[506,617,618],{"class":550},"space-y-4",[506,620,547],{"class":546},[506,622,527],{"class":519},[506,624,626,629,632,635,637,639,642,644,647,649,651,654,656,658,660,662,665,667,670,672,674,677,679],{"class":508,"line":625},6,[506,627,628],{"class":519},"            \u003C",[506,630,631],{"class":523},"input",[506,633,634],{"class":539}," v-model",[506,636,543],{"class":519},[506,638,547],{"class":546},[506,640,641],{"class":550},"model.username",[506,643,547],{"class":546},[506,645,646],{"class":539}," type",[506,648,543],{"class":519},[506,650,547],{"class":546},[506,652,653],{"class":550},"email",[506,655,547],{"class":546},[506,657,540],{"class":539},[506,659,543],{"class":519},[506,661,547],{"class":546},[506,663,664],{"class":550},"input w-full",[506,666,547],{"class":546},[506,668,669],{"class":539}," placeholder",[506,671,543],{"class":519},[506,673,547],{"class":546},[506,675,676],{"class":550},"Email",[506,678,547],{"class":546},[506,680,681],{"class":519}," \u002F>\n",[506,683,685,687,689,691,693,695,698,700,702,704,706,709,711,713,715,717,719,721,723,725,727,730,732],{"class":508,"line":684},7,[506,686,628],{"class":519},[506,688,631],{"class":523},[506,690,634],{"class":539},[506,692,543],{"class":519},[506,694,547],{"class":546},[506,696,697],{"class":550},"model.password",[506,699,547],{"class":546},[506,701,646],{"class":539},[506,703,543],{"class":519},[506,705,547],{"class":546},[506,707,708],{"class":550},"password",[506,710,547],{"class":546},[506,712,540],{"class":539},[506,714,543],{"class":519},[506,716,547],{"class":546},[506,718,664],{"class":550},[506,720,547],{"class":546},[506,722,669],{"class":539},[506,724,543],{"class":519},[506,726,547],{"class":546},[506,728,729],{"class":550},"Password",[506,731,547],{"class":546},[506,733,681],{"class":519},[506,735,737,739,741,744,746,748,751,753,755,757,759,762,764,766,769,771,773],{"class":508,"line":736},8,[506,738,628],{"class":519},[506,740,367],{"class":523},[506,742,743],{"class":539}," v-if",[506,745,543],{"class":519},[506,747,547],{"class":546},[506,749,750],{"class":550},"error",[506,752,547],{"class":546},[506,754,540],{"class":539},[506,756,543],{"class":519},[506,758,547],{"class":546},[506,760,761],{"class":550},"text-red-500 text-sm",[506,763,547],{"class":546},[506,765,578],{"class":519},[506,767,768],{"class":581},"{{ error }}",[506,770,585],{"class":519},[506,772,367],{"class":523},[506,774,527],{"class":519},[506,776,778,780,783,785,787,789,791,793,796,798,800,803,805,807,809,811,814,816],{"class":508,"line":777},9,[506,779,628],{"class":519},[506,781,782],{"class":523},"button",[506,784,646],{"class":539},[506,786,543],{"class":519},[506,788,547],{"class":546},[506,790,607],{"class":550},[506,792,547],{"class":546},[506,794,795],{"class":539}," :disabled",[506,797,543],{"class":519},[506,799,547],{"class":546},[506,801,802],{"class":550},"loading",[506,804,547],{"class":546},[506,806,540],{"class":539},[506,808,543],{"class":519},[506,810,547],{"class":546},[506,812,813],{"class":550},"btn-primary w-full",[506,815,547],{"class":546},[506,817,527],{"class":519},[506,819,821],{"class":508,"line":820},10,[506,822,823],{"class":581},"                {{ loading ? 'Signing in…' : 'Sign in' }}\n",[506,825,827,830,832],{"class":508,"line":826},11,[506,828,829],{"class":519},"            \u003C\u002F",[506,831,782],{"class":523},[506,833,527],{"class":519},[506,835,837,840,842],{"class":508,"line":836},12,[506,838,839],{"class":519},"        \u003C\u002F",[506,841,597],{"class":523},[506,843,527],{"class":519},[506,845,847,849,852,855,857,859,861,863,865,867,869,872,874],{"class":508,"line":846},13,[506,848,561],{"class":519},[506,850,851],{"class":523},"NuxtLink",[506,853,854],{"class":539}," to",[506,856,543],{"class":519},[506,858,547],{"class":546},[506,860,425],{"class":550},[506,862,547],{"class":546},[506,864,540],{"class":539},[506,866,543],{"class":519},[506,868,547],{"class":546},[506,870,871],{"class":550},"text-sm text-gray-500 mt-4 block",[506,873,547],{"class":546},[506,875,527],{"class":519},[506,877,879],{"class":508,"line":878},14,[506,880,881],{"class":581},"            Forgot your password?\n",[506,883,885,887,889],{"class":508,"line":884},15,[506,886,839],{"class":519},[506,888,851],{"class":523},[506,890,527],{"class":519},[506,892,894,897,899],{"class":508,"line":893},16,[506,895,896],{"class":519},"    \u003C\u002F",[506,898,536],{"class":523},[506,900,527],{"class":519},[506,902,904,906,908],{"class":508,"line":903},17,[506,905,585],{"class":519},[506,907,524],{"class":523},[506,909,527],{"class":519},[506,911,913],{"class":508,"line":912},18,[506,914,916],{"emptyLinePlaceholder":915},true,"\n",[506,918,920,922,925,928,931,933,935,938,940],{"class":508,"line":919},19,[506,921,520],{"class":519},[506,923,924],{"class":523},"script",[506,926,927],{"class":539}," setup",[506,929,930],{"class":539}," lang",[506,932,543],{"class":519},[506,934,547],{"class":546},[506,936,937],{"class":550},"ts",[506,939,547],{"class":546},[506,941,527],{"class":519},[506,943,945,949,952,955,958,961,964,967],{"class":508,"line":944},20,[506,946,948],{"class":947},"sm4w6","import",[506,950,951],{"class":519}," {",[506,953,954],{"class":581}," useLogin",[506,956,957],{"class":519}," }",[506,959,960],{"class":947}," from",[506,962,963],{"class":546}," '",[506,965,966],{"class":550},"#imports",[506,968,969],{"class":546},"'\n",[506,971,973],{"class":508,"line":972},21,[506,974,916],{"emptyLinePlaceholder":915},[506,976,978,982,985,988,992,995,997,1000,1003,1005],{"class":508,"line":977},22,[506,979,981],{"class":980},"sKpYG","definePageMeta",[506,983,984],{"class":581},"(",[506,986,987],{"class":519},"{",[506,989,991],{"class":990},"sDHlG"," layout",[506,993,994],{"class":519},":",[506,996,963],{"class":546},[506,998,999],{"class":550},"cwa-root-layout",[506,1001,1002],{"class":546},"'",[506,1004,957],{"class":519},[506,1006,1007],{"class":581},")\n",[506,1009,1011,1015,1017,1021,1024,1027,1029,1032,1034,1037,1039,1043,1045],{"class":508,"line":1010},23,[506,1012,1014],{"class":1013},"swB56","const",[506,1016,951],{"class":519},[506,1018,1020],{"class":1019},"sc2zw"," model",[506,1022,1023],{"class":519},",",[506,1025,1026],{"class":1019}," submit",[506,1028,1023],{"class":519},[506,1030,1031],{"class":1019}," loading",[506,1033,1023],{"class":519},[506,1035,1036],{"class":1019}," error",[506,1038,957],{"class":519},[506,1040,1042],{"class":1041},"sVlFx"," =",[506,1044,954],{"class":980},[506,1046,1047],{"class":581},"()\n",[506,1049,1051,1053,1055],{"class":508,"line":1050},24,[506,1052,585],{"class":519},[506,1054,924],{"class":523},[506,1056,527],{"class":519},[376,1058,212],{"id":1059},"composables",[1061,1062,1064],"h3",{"id":1063},"uselogin",[371,1065,418],{},[497,1067,1070],{"className":1068,"code":1069,"language":937,"meta":502,"style":502},"language-ts shiki shiki-themes github-light github-dark material-theme-palenight","const { model, submit, loading, error } = useLogin()\n\u002F\u002F model.username, model.password — reactive form fields\n\u002F\u002F submit() — calls cwa.auth.signIn and redirects on success\n\u002F\u002F loading — Ref\u003Cboolean>\n\u002F\u002F error — Ref\u003Cstring | null>\n",[371,1071,1072,1100,1105,1110,1115],{"__ignoreMap":502},[506,1073,1074,1076,1078,1080,1082,1084,1086,1088,1090,1092,1094,1096,1098],{"class":508,"line":509},[506,1075,1014],{"class":1013},[506,1077,951],{"class":519},[506,1079,1020],{"class":1019},[506,1081,1023],{"class":519},[506,1083,1026],{"class":1019},[506,1085,1023],{"class":519},[506,1087,1031],{"class":1019},[506,1089,1023],{"class":519},[506,1091,1036],{"class":1019},[506,1093,957],{"class":519},[506,1095,1042],{"class":1041},[506,1097,954],{"class":980},[506,1099,1047],{"class":581},[506,1101,1102],{"class":508,"line":516},[506,1103,1104],{"class":512},"\u002F\u002F model.username, model.password — reactive form fields\n",[506,1106,1107],{"class":508,"line":530},[506,1108,1109],{"class":512},"\u002F\u002F submit() — calls cwa.auth.signIn and redirects on success\n",[506,1111,1112],{"class":508,"line":558},[506,1113,1114],{"class":512},"\u002F\u002F loading — Ref\u003Cboolean>\n",[506,1116,1117],{"class":508,"line":592},[506,1118,1119],{"class":512},"\u002F\u002F error — Ref\u003Cstring | null>\n",[1061,1121,1123],{"id":1122},"useforgotpassword",[371,1124,435],{},[497,1126,1128],{"className":1068,"code":1127,"language":937,"meta":502,"style":502},"const { model, submit, loading, success, error } = useForgotPassword()\n\u002F\u002F model.username — the user's email or username\n\u002F\u002F submit() — POST \u002Fpassword\u002Freset\u002Frequest\u002F{username}\n\u002F\u002F success — Ref\u003Cboolean> — true after a successful request\n",[371,1129,1130,1164,1169,1174],{"__ignoreMap":502},[506,1131,1132,1134,1136,1138,1140,1142,1144,1146,1148,1151,1153,1155,1157,1159,1162],{"class":508,"line":509},[506,1133,1014],{"class":1013},[506,1135,951],{"class":519},[506,1137,1020],{"class":1019},[506,1139,1023],{"class":519},[506,1141,1026],{"class":1019},[506,1143,1023],{"class":519},[506,1145,1031],{"class":1019},[506,1147,1023],{"class":519},[506,1149,1150],{"class":1019}," success",[506,1152,1023],{"class":519},[506,1154,1036],{"class":1019},[506,1156,957],{"class":519},[506,1158,1042],{"class":1041},[506,1160,1161],{"class":980}," useForgotPassword",[506,1163,1047],{"class":581},[506,1165,1166],{"class":508,"line":516},[506,1167,1168],{"class":512},"\u002F\u002F model.username — the user's email or username\n",[506,1170,1171],{"class":508,"line":530},[506,1172,1173],{"class":512},"\u002F\u002F submit() — POST \u002Fpassword\u002Freset\u002Frequest\u002F{username}\n",[506,1175,1176],{"class":508,"line":558},[506,1177,1178],{"class":512},"\u002F\u002F success — Ref\u003Cboolean> — true after a successful request\n",[1061,1180,1182],{"id":1181},"useresetpassword",[371,1183,452],{},[497,1185,1187],{"className":1068,"code":1186,"language":937,"meta":502,"style":502},"const { model, submit, loading, success, error } = useResetPassword()\n\u002F\u002F model.username, model.token — from route params\n\u002F\u002F model.password, model.passwordConfirm — the new password fields\n\u002F\u002F submit() — PUT \u002Fpassword\u002Freset\u002F{username}\u002F{token}\n",[371,1188,1189,1222,1227,1232],{"__ignoreMap":502},[506,1190,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1220],{"class":508,"line":509},[506,1192,1014],{"class":1013},[506,1194,951],{"class":519},[506,1196,1020],{"class":1019},[506,1198,1023],{"class":519},[506,1200,1026],{"class":1019},[506,1202,1023],{"class":519},[506,1204,1031],{"class":1019},[506,1206,1023],{"class":519},[506,1208,1150],{"class":1019},[506,1210,1023],{"class":519},[506,1212,1036],{"class":1019},[506,1214,957],{"class":519},[506,1216,1042],{"class":1041},[506,1218,1219],{"class":980}," useResetPassword",[506,1221,1047],{"class":581},[506,1223,1224],{"class":508,"line":516},[506,1225,1226],{"class":512},"\u002F\u002F model.username, model.token — from route params\n",[506,1228,1229],{"class":508,"line":530},[506,1230,1231],{"class":512},"\u002F\u002F model.password, model.passwordConfirm — the new password fields\n",[506,1233,1234],{"class":508,"line":558},[506,1235,1236],{"class":512},"\u002F\u002F submit() — PUT \u002Fpassword\u002Freset\u002F{username}\u002F{token}\n",[1061,1238,1240],{"id":1239},"useverifyemail",[371,1241,467],{},[497,1243,1245],{"className":1068,"code":1244,"language":937,"meta":502,"style":502},"const { verifyEmail, confirmEmail, loading, success, error } = useVerifyEmail()\n\n\u002F\u002F Verify registration email\nonMounted(() => verifyEmail(route.params.username, route.params.token))\n\n\u002F\u002F Confirm email address change\nonMounted(() => confirmEmail(route.params.username, route.params.token, route.params.newEmail))\n",[371,1246,1247,1282,1286,1291,1333,1337,1342],{"__ignoreMap":502},[506,1248,1249,1251,1253,1256,1258,1261,1263,1265,1267,1269,1271,1273,1275,1277,1280],{"class":508,"line":509},[506,1250,1014],{"class":1013},[506,1252,951],{"class":519},[506,1254,1255],{"class":1019}," verifyEmail",[506,1257,1023],{"class":519},[506,1259,1260],{"class":1019}," confirmEmail",[506,1262,1023],{"class":519},[506,1264,1031],{"class":1019},[506,1266,1023],{"class":519},[506,1268,1150],{"class":1019},[506,1270,1023],{"class":519},[506,1272,1036],{"class":1019},[506,1274,957],{"class":519},[506,1276,1042],{"class":1041},[506,1278,1279],{"class":980}," useVerifyEmail",[506,1281,1047],{"class":581},[506,1283,1284],{"class":508,"line":516},[506,1285,916],{"emptyLinePlaceholder":915},[506,1287,1288],{"class":508,"line":530},[506,1289,1290],{"class":512},"\u002F\u002F Verify registration email\n",[506,1292,1293,1296,1298,1301,1304,1306,1309,1311,1314,1316,1319,1321,1324,1326,1328,1330],{"class":508,"line":558},[506,1294,1295],{"class":980},"onMounted",[506,1297,984],{"class":581},[506,1299,1300],{"class":519},"()",[506,1302,1303],{"class":1013}," =>",[506,1305,1255],{"class":980},[506,1307,1308],{"class":581},"(route",[506,1310,374],{"class":519},[506,1312,1313],{"class":581},"params",[506,1315,374],{"class":519},[506,1317,1318],{"class":581},"username",[506,1320,1023],{"class":519},[506,1322,1323],{"class":581}," route",[506,1325,374],{"class":519},[506,1327,1313],{"class":581},[506,1329,374],{"class":519},[506,1331,1332],{"class":581},"token))\n",[506,1334,1335],{"class":508,"line":592},[506,1336,916],{"emptyLinePlaceholder":915},[506,1338,1339],{"class":508,"line":625},[506,1340,1341],{"class":512},"\u002F\u002F Confirm email address change\n",[506,1343,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1366,1368,1370,1372,1374,1377,1379,1381,1383,1385,1387],{"class":508,"line":684},[506,1345,1295],{"class":980},[506,1347,984],{"class":581},[506,1349,1300],{"class":519},[506,1351,1303],{"class":1013},[506,1353,1260],{"class":980},[506,1355,1308],{"class":581},[506,1357,374],{"class":519},[506,1359,1313],{"class":581},[506,1361,374],{"class":519},[506,1363,1318],{"class":581},[506,1365,1023],{"class":519},[506,1367,1323],{"class":581},[506,1369,374],{"class":519},[506,1371,1313],{"class":581},[506,1373,374],{"class":519},[506,1375,1376],{"class":581},"token",[506,1378,1023],{"class":519},[506,1380,1323],{"class":581},[506,1382,374],{"class":519},[506,1384,1313],{"class":581},[506,1386,374],{"class":519},[506,1388,1389],{"class":581},"newEmail))\n",[1061,1391,1393],{"id":1392},"useresendverifyemail",[371,1394,1395],{},"useResendVerifyEmail()",[497,1397,1399],{"className":1068,"code":1398,"language":937,"meta":502,"style":502},"const { resendVerifyEmail, loading, success, error } = useResendVerifyEmail()\nresendVerifyEmail(username)\n",[371,1400,1401,1431],{"__ignoreMap":502},[506,1402,1403,1405,1407,1410,1412,1414,1416,1418,1420,1422,1424,1426,1429],{"class":508,"line":509},[506,1404,1014],{"class":1013},[506,1406,951],{"class":519},[506,1408,1409],{"class":1019}," resendVerifyEmail",[506,1411,1023],{"class":519},[506,1413,1031],{"class":1019},[506,1415,1023],{"class":519},[506,1417,1150],{"class":1019},[506,1419,1023],{"class":519},[506,1421,1036],{"class":1019},[506,1423,957],{"class":519},[506,1425,1042],{"class":1041},[506,1427,1428],{"class":980}," useResendVerifyEmail",[506,1430,1047],{"class":581},[506,1432,1433,1436],{"class":508,"line":516},[506,1434,1435],{"class":980},"resendVerifyEmail",[506,1437,1438],{"class":581},"(username)\n",[376,1440,1442],{"id":1441},"protecting-your-own-pages","Protecting Your Own Pages",[367,1444,1445],{},"Use the provided route middleware in any page you want to gate behind authentication:",[497,1447,1449],{"className":1068,"code":1448,"language":937,"meta":502,"style":502},"\u002F\u002F Signed-in users only\ndefinePageMeta({ middleware: 'auth' })\n\n\u002F\u002F Admin users only (ROLE_ADMIN+)\ndefinePageMeta({ middleware: 'admin' })\n",[371,1450,1451,1456,1480,1484,1489],{"__ignoreMap":502},[506,1452,1453],{"class":508,"line":509},[506,1454,1455],{"class":512},"\u002F\u002F Signed-in users only\n",[506,1457,1458,1460,1462,1464,1467,1469,1471,1474,1476,1478],{"class":508,"line":516},[506,1459,981],{"class":980},[506,1461,984],{"class":581},[506,1463,987],{"class":519},[506,1465,1466],{"class":990}," middleware",[506,1468,994],{"class":519},[506,1470,963],{"class":546},[506,1472,1473],{"class":550},"auth",[506,1475,1002],{"class":546},[506,1477,957],{"class":519},[506,1479,1007],{"class":581},[506,1481,1482],{"class":508,"line":530},[506,1483,916],{"emptyLinePlaceholder":915},[506,1485,1486],{"class":508,"line":558},[506,1487,1488],{"class":512},"\u002F\u002F Admin users only (ROLE_ADMIN+)\n",[506,1490,1491,1493,1495,1497,1499,1501,1503,1506,1508,1510],{"class":508,"line":592},[506,1492,981],{"class":980},[506,1494,984],{"class":581},[506,1496,987],{"class":519},[506,1498,1466],{"class":990},[506,1500,994],{"class":519},[506,1502,963],{"class":546},[506,1504,1505],{"class":550},"admin",[506,1507,1002],{"class":546},[506,1509,957],{"class":519},[506,1511,1007],{"class":581},[367,1513,1514,1515,1517],{},"Unauthenticated users are redirected to ",[371,1516,408],{},". After signing in they are returned to the original page.",[376,1519,1521],{"id":1520},"registration","Registration",[367,1523,1524,1525,1528,1529,1532,1533,1536],{},"There is no built-in ",[371,1526,1527],{},"\u002Fregister"," page — registration flows vary too much between projects. Build your own and use ",[371,1530,1531],{},"$fetch"," to ",[371,1534,1535],{},"POST \u002Fusers"," to the API:",[497,1538,1540],{"className":1068,"code":1539,"language":937,"meta":502,"style":502},"await $fetch(`${cwa.apiUrlBase}\u002Fusers`, {\n    method: 'POST',\n    credentials: 'include',\n    body: { username, emailAddress, plainPassword }\n})\n",[371,1541,1542,1577,1594,1610,1635],{"__ignoreMap":502},[506,1543,1544,1547,1550,1552,1555,1558,1560,1563,1566,1569,1572,1574],{"class":508,"line":509},[506,1545,1546],{"class":947},"await",[506,1548,1549],{"class":980}," $fetch",[506,1551,984],{"class":581},[506,1553,1554],{"class":546},"`${",[506,1556,1557],{"class":581},"cwa",[506,1559,374],{"class":546},[506,1561,1562],{"class":581},"apiUrlBase",[506,1564,1565],{"class":546},"}",[506,1567,1568],{"class":550},"\u002Fusers",[506,1570,1571],{"class":546},"`",[506,1573,1023],{"class":519},[506,1575,1576],{"class":519}," {\n",[506,1578,1579,1582,1584,1586,1589,1591],{"class":508,"line":516},[506,1580,1581],{"class":990},"    method",[506,1583,994],{"class":519},[506,1585,963],{"class":546},[506,1587,1588],{"class":550},"POST",[506,1590,1002],{"class":546},[506,1592,1593],{"class":519},",\n",[506,1595,1596,1599,1601,1603,1606,1608],{"class":508,"line":530},[506,1597,1598],{"class":990},"    credentials",[506,1600,994],{"class":519},[506,1602,963],{"class":546},[506,1604,1605],{"class":550},"include",[506,1607,1002],{"class":546},[506,1609,1593],{"class":519},[506,1611,1612,1615,1617,1619,1622,1624,1627,1629,1632],{"class":508,"line":558},[506,1613,1614],{"class":990},"    body",[506,1616,994],{"class":519},[506,1618,951],{"class":519},[506,1620,1621],{"class":581}," username",[506,1623,1023],{"class":519},[506,1625,1626],{"class":581}," emailAddress",[506,1628,1023],{"class":519},[506,1630,1631],{"class":581}," plainPassword ",[506,1633,1634],{"class":519},"}\n",[506,1636,1637,1639],{"class":508,"line":592},[506,1638,1565],{"class":519},[506,1640,1007],{"class":581},[367,1642,1643,1644,1647],{},"The API sends a verification email automatically if ",[371,1645,1646],{},"verify_on_register: true"," is set in the bundle config.",[1649,1650,1651],"style",{},"html pre.shiki code .sTBSN, html code.shiki .sTBSN{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .s-h7I, html code.shiki .s-h7I{--shiki-light:#22863A;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sGtlX, html code.shiki .sGtlX{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#C792EA}html pre.shiki code .seSrl, html code.shiki .seSrl{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .sLL54, html code.shiki .sLL54{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html pre.shiki code .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .sm4w6, html code.shiki .sm4w6{--shiki-light:#D73A49;--shiki-light-font-style:inherit;--shiki-default:#F97583;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sKpYG, html code.shiki .sKpYG{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .sDHlG, html code.shiki .sDHlG{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#F07178}html pre.shiki code .swB56, html code.shiki .swB56{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sc2zw, html code.shiki .sc2zw{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sVlFx, html code.shiki .sVlFx{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#89DDFF}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);}",{"title":502,"searchDepth":516,"depth":516,"links":1653},[1654,1655,1656,1663,1664],{"id":378,"depth":516,"text":379},{"id":484,"depth":516,"text":485},{"id":1059,"depth":516,"text":212,"children":1657},[1658,1659,1660,1661,1662],{"id":1063,"depth":530,"text":418},{"id":1122,"depth":530,"text":435},{"id":1181,"depth":530,"text":452},{"id":1239,"depth":530,"text":467},{"id":1392,"depth":530,"text":1395},{"id":1441,"depth":516,"text":1442},{"id":1520,"depth":516,"text":1521},"The auth pages the CWA layer provides automatically, their composables, and how to override each one with your own design.","md",null,{},{"title":334,"description":1665},"8G1wB8kdhtWHRW6VW1_1eUeb-QqswQYWqmINEuLKtoE",[1672,1674],{"title":330,"path":331,"stem":332,"description":1673,"children":-1},"The CWA layer — what the module auto-provides, how to override it, and how to use its reusable components in your own pages.",{"title":338,"path":339,"stem":340,"description":1675,"children":-1},"The built-in CWA admin — pages, edit mode, the resource manager, and how to extend it with custom manager tabs.",1782512902392]