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