[{"data":1,"prerenderedAt":1582},["ShallowReactive",2],{"navigation":3,"\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo":358,"\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo-surround":1577},[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":159,"badge":360,"body":363,"description":1571,"extension":1572,"links":1573,"meta":1574,"navigation":636,"path":160,"seo":1575,"stem":161,"__hash__":1576},"docs\u002F5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo.md",{"label":361,"color":362},"Draft","amber",{"type":364,"value":365,"toc":1558},"minimark",[366,389,396,401,404,586,590,597,759,766,817,821,920,924,927,987,997,1057,1061,1072,1079,1112,1123,1128,1138,1226,1236,1240,1256,1389,1393,1404,1410,1414,1426,1429,1472,1476,1483,1551,1554],[367,368,369,370,380,381,384,385,388],"p",{},"CWA's SEO layer is built on top of ",[371,372,376],"a",{"href":373,"rel":374},"https:\u002F\u002Fnuxtseo.com",[375],"nofollow",[377,378,379],"code",{},"@nuxtjs\u002Fseo"," — the full Nuxt SEO bundle is available to you out of the box, including ",[377,382,383],{},"useSeoMeta",", ",[377,386,387],{},"useSchemaOrg",", robots meta, sitemap generation, and OG image support. CWA layers on top of it with API-driven site config and automatic per-page meta from your Page and PageData records.",[367,390,391,392,395],{},"Site-wide settings are stored in the API and cached in Pinia. Admins change them at ",[377,393,394],{},"\u002F_cwa\u002Fsettings"," — no deploy required.",[397,398,400],"h2",{"id":399},"default-settings","Default Settings",[367,402,403],{},"The module ships with sensible defaults:",[405,406,407,423],"table",{},[408,409,410],"thead",{},[411,412,413,417,420],"tr",{},[414,415,416],"th",{},"Key",[414,418,419],{},"Default",[414,421,422],{},"Description",[424,425,426,446,464,482,496,511,529,544,558,572],"tbody",{},[411,427,428,434,439],{},[429,430,431],"td",{},[377,432,433],{},"siteName",[429,435,436],{},[377,437,438],{},"'CWA Web App'",[429,440,441,442,445],{},"Used in ",[377,443,444],{},"\u003Ctitle>"," concatenation",[411,447,448,453,458],{},[429,449,450],{},[377,451,452],{},"fallbackTitle",[429,454,455],{},[377,456,457],{},"true",[429,459,460,461,463],{},"Show ",[377,462,433],{}," when a page has no title",[411,465,466,471,475],{},[429,467,468],{},[377,469,470],{},"concatTitle",[429,472,473],{},[377,474,457],{},[429,476,477,478,481],{},"Append ",[377,479,480],{}," | siteName"," to page titles",[411,483,484,489,493],{},[429,485,486],{},[377,487,488],{},"indexable",[429,490,491],{},[377,492,457],{},[429,494,495],{},"Whether search engines should index the site",[411,497,498,503,508],{},[429,499,500],{},[377,501,502],{},"canonicalUrl",[429,504,505],{},[377,506,507],{},"''",[429,509,510],{},"Base URL for canonical tags",[411,512,513,518,522],{},[429,514,515],{},[377,516,517],{},"sitemapEnabled",[429,519,520],{},[377,521,457],{},[429,523,524,525,528],{},"Generate ",[377,526,527],{},"\u002Fsitemap.xml"," from routes",[411,530,531,536,541],{},[429,532,533],{},[377,534,535],{},"maintenanceModeEnabled",[429,537,538],{},[377,539,540],{},"false",[429,542,543],{},"Redirect all non-admin visitors to maintenance page",[411,545,546,551,555],{},[429,547,548],{},[377,549,550],{},"robotsText",[429,552,553],{},[377,554,507],{},[429,556,557],{},"Custom robots.txt content",[411,559,560,565,569],{},[429,561,562],{},[377,563,564],{},"robotsAllowNonSeoCrawlers",[429,566,567],{},[377,568,457],{},[429,570,571],{},"Allow non-SEO bots",[411,573,574,579,583],{},[429,575,576],{},[377,577,578],{},"robotsAllowAiBots",[429,580,581],{},[377,582,457],{},[429,584,585],{},"Allow AI crawlers",[397,587,589],{"id":588},"accessing-site-config","Accessing Site Config",[367,591,592,593,596],{},"Use ",[377,594,595],{},"cwa.siteConfig.config"," — it's a reactive store getter:",[598,599,604],"pre",{"className":600,"code":601,"language":602,"meta":603,"style":603},"language-ts shiki shiki-themes github-light github-dark material-theme-palenight","const cwa = useCwa()\n\nconst siteName = computed(() => cwa.siteConfig.config.value?.siteName)\nconst isMaintenanceMode = computed(() => cwa.siteConfig.config.value?.maintenanceModeEnabled)\nconst sitemapEnabled = computed(() => cwa.siteConfig.config.value?.sitemapEnabled)\n","ts","",[377,605,606,631,638,685,722],{"__ignoreMap":603},[607,608,611,615,619,623,627],"span",{"class":609,"line":610},"line",1,[607,612,614],{"class":613},"swB56","const",[607,616,618],{"class":617},"sc2zw"," cwa",[607,620,622],{"class":621},"sVlFx"," =",[607,624,626],{"class":625},"sKpYG"," useCwa",[607,628,630],{"class":629},"sPB8G","()\n",[607,632,634],{"class":609,"line":633},2,[607,635,637],{"emptyLinePlaceholder":636},true,"\n",[607,639,641,643,646,648,651,654,658,661,663,666,669,671,674,676,679,682],{"class":609,"line":640},3,[607,642,614],{"class":613},[607,644,645],{"class":617}," siteName",[607,647,622],{"class":621},[607,649,650],{"class":625}," computed",[607,652,653],{"class":629},"(",[607,655,657],{"class":656},"sOvfz","()",[607,659,660],{"class":613}," =>",[607,662,618],{"class":629},[607,664,665],{"class":656},".",[607,667,668],{"class":629},"siteConfig",[607,670,665],{"class":656},[607,672,673],{"class":629},"config",[607,675,665],{"class":656},[607,677,678],{"class":629},"value",[607,680,681],{"class":656},"?.",[607,683,684],{"class":629},"siteName)\n",[607,686,688,690,693,695,697,699,701,703,705,707,709,711,713,715,717,719],{"class":609,"line":687},4,[607,689,614],{"class":613},[607,691,692],{"class":617}," isMaintenanceMode",[607,694,622],{"class":621},[607,696,650],{"class":625},[607,698,653],{"class":629},[607,700,657],{"class":656},[607,702,660],{"class":613},[607,704,618],{"class":629},[607,706,665],{"class":656},[607,708,668],{"class":629},[607,710,665],{"class":656},[607,712,673],{"class":629},[607,714,665],{"class":656},[607,716,678],{"class":629},[607,718,681],{"class":656},[607,720,721],{"class":629},"maintenanceModeEnabled)\n",[607,723,725,727,730,732,734,736,738,740,742,744,746,748,750,752,754,756],{"class":609,"line":724},5,[607,726,614],{"class":613},[607,728,729],{"class":617}," sitemapEnabled",[607,731,622],{"class":621},[607,733,650],{"class":625},[607,735,653],{"class":629},[607,737,657],{"class":656},[607,739,660],{"class":613},[607,741,618],{"class":629},[607,743,665],{"class":656},[607,745,668],{"class":629},[607,747,665],{"class":656},[607,749,673],{"class":629},[607,751,665],{"class":656},[607,753,678],{"class":629},[607,755,681],{"class":656},[607,757,758],{"class":629},"sitemapEnabled)\n",[367,760,761,762,765],{},"Or use ",[377,763,764],{},"useCwaSiteConfig"," directly for utility functions:",[598,767,769],{"className":600,"code":768,"language":602,"meta":603,"style":603},"import { useCwaSiteConfig } from '#imports'\nconst { defaultSiteConfig } = useCwaSiteConfig()\n",[377,770,771,800],{"__ignoreMap":603},[607,772,773,777,780,783,786,789,793,797],{"class":609,"line":610},[607,774,776],{"class":775},"sm4w6","import",[607,778,779],{"class":656}," {",[607,781,782],{"class":629}," useCwaSiteConfig",[607,784,785],{"class":656}," }",[607,787,788],{"class":775}," from",[607,790,792],{"class":791},"seSrl"," '",[607,794,796],{"class":795},"sLL54","#imports",[607,798,799],{"class":791},"'\n",[607,801,802,804,806,809,811,813,815],{"class":609,"line":633},[607,803,614],{"class":613},[607,805,779],{"class":656},[607,807,808],{"class":617}," defaultSiteConfig",[607,810,785],{"class":656},[607,812,622],{"class":621},[607,814,782],{"class":625},[607,816,630],{"class":629},[397,818,820],{"id":819},"saving-config-changes-admin","Saving Config Changes (Admin)",[598,822,824],{"className":600,"code":823,"language":602,"meta":603,"style":603},"const result = cwa.siteConfig.saveConfig({\n    siteName: 'My Rebranded Site',\n    maintenanceModeEnabled: false,\n    robotsAllowAiBots: false\n})\n\n\u002F\u002F result.totalConfigsChanged — number of keys that actually changed\n\u002F\u002F Only changed keys are PATCHed to the API\n",[377,825,826,851,871,884,894,902,907,914],{"__ignoreMap":603},[607,827,828,830,833,835,837,839,841,843,846,848],{"class":609,"line":610},[607,829,614],{"class":613},[607,831,832],{"class":617}," result",[607,834,622],{"class":621},[607,836,618],{"class":629},[607,838,665],{"class":656},[607,840,668],{"class":629},[607,842,665],{"class":656},[607,844,845],{"class":625},"saveConfig",[607,847,653],{"class":629},[607,849,850],{"class":656},"{\n",[607,852,853,857,860,862,865,868],{"class":609,"line":633},[607,854,856],{"class":855},"sDHlG","    siteName",[607,858,859],{"class":656},":",[607,861,792],{"class":791},[607,863,864],{"class":795},"My Rebranded Site",[607,866,867],{"class":791},"'",[607,869,870],{"class":656},",\n",[607,872,873,876,878,882],{"class":609,"line":640},[607,874,875],{"class":855},"    maintenanceModeEnabled",[607,877,859],{"class":656},[607,879,881],{"class":880},"swWMF"," false",[607,883,870],{"class":656},[607,885,886,889,891],{"class":609,"line":687},[607,887,888],{"class":855},"    robotsAllowAiBots",[607,890,859],{"class":656},[607,892,893],{"class":880}," false\n",[607,895,896,899],{"class":609,"line":724},[607,897,898],{"class":656},"}",[607,900,901],{"class":629},")\n",[607,903,905],{"class":609,"line":904},6,[607,906,637],{"emptyLinePlaceholder":636},[607,908,910],{"class":609,"line":909},7,[607,911,913],{"class":912},"sTBSN","\u002F\u002F result.totalConfigsChanged — number of keys that actually changed\n",[607,915,917],{"class":609,"line":916},8,[607,918,919],{"class":912},"\u002F\u002F Only changed keys are PATCHed to the API\n",[397,921,923],{"id":922},"per-page-seo","Per-Page SEO",[367,925,926],{},"The route resolution middleware automatically applies SEO meta tags from the current page or page data:",[405,928,929,939],{},[408,930,931],{},[411,932,933,936],{},[414,934,935],{},"Source",[414,937,938],{},"Applied as",[424,940,941,952,964,976],{},[411,942,943,948],{},[429,944,945],{},[377,946,947],{},"Page.title",[429,949,950],{},[377,951,444],{},[411,953,954,959],{},[429,955,956],{},[377,957,958],{},"Page.metaDescription",[429,960,961],{},[377,962,963],{},"\u003Cmeta name=\"description\">",[411,965,966,971],{},[429,967,968],{},[377,969,970],{},"PageData.title",[429,972,973,974],{},"Overrides ",[377,975,947],{},[411,977,978,983],{},[429,979,980],{},[377,981,982],{},"PageData.metaDescription",[429,984,973,985],{},[377,986,958],{},[367,988,989,990,992,993,996],{},"These are wired into ",[377,991,379],{}," via ",[377,994,995],{},"useSeoMeta()",". You can add your own after the middleware runs and your call will win:",[598,998,1000],{"className":600,"code":999,"language":602,"meta":603,"style":603},"\u002F\u002F In a page template component\nuseHead({\n    title: computed(() => `${articleHeadline.value} - In-depth Guide`)\n})\n",[377,1001,1002,1007,1016,1051],{"__ignoreMap":603},[607,1003,1004],{"class":609,"line":610},[607,1005,1006],{"class":912},"\u002F\u002F In a page template component\n",[607,1008,1009,1012,1014],{"class":609,"line":633},[607,1010,1011],{"class":625},"useHead",[607,1013,653],{"class":629},[607,1015,850],{"class":656},[607,1017,1018,1021,1023,1025,1027,1029,1031,1034,1037,1039,1041,1043,1046,1049],{"class":609,"line":640},[607,1019,1020],{"class":855},"    title",[607,1022,859],{"class":656},[607,1024,650],{"class":625},[607,1026,653],{"class":629},[607,1028,657],{"class":656},[607,1030,660],{"class":613},[607,1032,1033],{"class":791}," `${",[607,1035,1036],{"class":629},"articleHeadline",[607,1038,665],{"class":791},[607,1040,678],{"class":629},[607,1042,898],{"class":791},[607,1044,1045],{"class":795}," - In-depth Guide",[607,1047,1048],{"class":791},"`",[607,1050,901],{"class":629},[607,1052,1053,1055],{"class":609,"line":687},[607,1054,898],{"class":656},[607,1056,901],{"class":629},[397,1058,1060],{"id":1059},"default-og-image","Default OG Image",[367,1062,1063,1064,1071],{},"The module ships a default Open Graph image template via ",[371,1065,1068],{"href":1066,"rel":1067},"https:\u002F\u002Fnuxtseo.com\u002Fog-image",[375],[377,1069,1070],{},"nuxt-og-image",". Every CWA page automatically gets a dark-background social card containing the CWA logo, the page title, and the meta description — no setup required.",[367,1073,1074,1075,1078],{},"The template is ",[377,1076,1077],{},"CwaDefault.satori.vue"," (a Satori\u002FSVG renderer). It receives:",[405,1080,1081,1090],{},[408,1082,1083],{},[411,1084,1085,1088],{},[414,1086,1087],{},"Prop",[414,1089,935],{},[424,1091,1092,1102],{},[411,1093,1094,1099],{},[429,1095,1096],{},[377,1097,1098],{},"title",[429,1100,1101],{},"Current page or pageData title",[411,1103,1104,1109],{},[429,1105,1106],{},[377,1107,1108],{},"description",[429,1110,1111],{},"Current page or pageData meta description",[367,1113,1114,1118,1119,1122],{},[1115,1116,1117],"strong",{},"Previewing locally"," — visit ",[377,1120,1121],{},"\u002F__og-image__\u002Fimage\u002Fyour-path\u002Fog.png"," to preview the generated image for any route.",[1124,1125,1127],"h3",{"id":1126},"overriding-the-og-image","Overriding the OG image",[367,1129,1130,1133,1134,1137],{},[1115,1131,1132],{},"Per-page override"," — call ",[377,1135,1136],{},"defineOgImage()"," in your page template component. Your call replaces the module default for that route:",[598,1139,1141],{"className":600,"code":1140,"language":602,"meta":603,"style":603},"\u002F\u002F In your page template \u003Cscript setup>\ndefineOgImage('MyCustomTemplate', {\n    title: pageData.value?.data?.headline,\n    imageUrl: pageData.value?.data?.heroImage?.contentUrl\n})\n",[377,1142,1143,1148,1168,1193,1220],{"__ignoreMap":603},[607,1144,1145],{"class":609,"line":610},[607,1146,1147],{"class":912},"\u002F\u002F In your page template \u003Cscript setup>\n",[607,1149,1150,1153,1155,1157,1160,1162,1165],{"class":609,"line":633},[607,1151,1152],{"class":625},"defineOgImage",[607,1154,653],{"class":629},[607,1156,867],{"class":791},[607,1158,1159],{"class":795},"MyCustomTemplate",[607,1161,867],{"class":791},[607,1163,1164],{"class":656},",",[607,1166,1167],{"class":656}," {\n",[607,1169,1170,1172,1174,1177,1179,1181,1183,1186,1188,1191],{"class":609,"line":640},[607,1171,1020],{"class":855},[607,1173,859],{"class":656},[607,1175,1176],{"class":629}," pageData",[607,1178,665],{"class":656},[607,1180,678],{"class":629},[607,1182,681],{"class":656},[607,1184,1185],{"class":629},"data",[607,1187,681],{"class":656},[607,1189,1190],{"class":629},"headline",[607,1192,870],{"class":656},[607,1194,1195,1198,1200,1202,1204,1206,1208,1210,1212,1215,1217],{"class":609,"line":687},[607,1196,1197],{"class":855},"    imageUrl",[607,1199,859],{"class":656},[607,1201,1176],{"class":629},[607,1203,665],{"class":656},[607,1205,678],{"class":629},[607,1207,681],{"class":656},[607,1209,1185],{"class":629},[607,1211,681],{"class":656},[607,1213,1214],{"class":629},"heroImage",[607,1216,681],{"class":656},[607,1218,1219],{"class":629},"contentUrl\n",[607,1221,1222,1224],{"class":609,"line":724},[607,1223,898],{"class":656},[607,1225,901],{"class":629},[367,1227,1228,1231,1232,1235],{},[1115,1229,1230],{},"Project-wide override"," — create ",[377,1233,1234],{},"app\u002Fcomponents\u002Fog-image\u002FCwaDefault.satori.vue"," in your application. Nuxt resolves component names from the app layer first, so this shadows the module's default template for all pages that haven't overridden per-page.",[397,1237,1239],{"id":1238},"open-graph-and-twitter-cards","Open Graph and Twitter Cards",[367,1241,1242,1243,384,1246,384,1249,384,1252,1255],{},"Social card meta tags (",[377,1244,1245],{},"og:title",[377,1247,1248],{},"og:description",[377,1250,1251],{},"og:image",[377,1253,1254],{},"twitter:card",") are too content-specific for the module to set automatically — add them in your page templates alongside your own content fields:",[598,1257,1259],{"className":600,"code":1258,"language":602,"meta":603,"style":603},"useSeoMeta({\n    ogTitle: computed(() => pageData.value?.data?.headline),\n    ogDescription: computed(() => pageData.value?.data?.summary),\n    ogImage: computed(() => pageData.value?.data?.heroImage?.contentUrl),\n    twitterCard: 'summary_large_image'\n})\n",[377,1260,1261,1269,1301,1333,1369,1383],{"__ignoreMap":603},[607,1262,1263,1265,1267],{"class":609,"line":610},[607,1264,383],{"class":625},[607,1266,653],{"class":629},[607,1268,850],{"class":656},[607,1270,1271,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1299],{"class":609,"line":633},[607,1272,1273],{"class":855},"    ogTitle",[607,1275,859],{"class":656},[607,1277,650],{"class":625},[607,1279,653],{"class":629},[607,1281,657],{"class":656},[607,1283,660],{"class":613},[607,1285,1176],{"class":629},[607,1287,665],{"class":656},[607,1289,678],{"class":629},[607,1291,681],{"class":656},[607,1293,1185],{"class":629},[607,1295,681],{"class":656},[607,1297,1298],{"class":629},"headline)",[607,1300,870],{"class":656},[607,1302,1303,1306,1308,1310,1312,1314,1316,1318,1320,1322,1324,1326,1328,1331],{"class":609,"line":640},[607,1304,1305],{"class":855},"    ogDescription",[607,1307,859],{"class":656},[607,1309,650],{"class":625},[607,1311,653],{"class":629},[607,1313,657],{"class":656},[607,1315,660],{"class":613},[607,1317,1176],{"class":629},[607,1319,665],{"class":656},[607,1321,678],{"class":629},[607,1323,681],{"class":656},[607,1325,1185],{"class":629},[607,1327,681],{"class":656},[607,1329,1330],{"class":629},"summary)",[607,1332,870],{"class":656},[607,1334,1335,1338,1340,1342,1344,1346,1348,1350,1352,1354,1356,1358,1360,1362,1364,1367],{"class":609,"line":687},[607,1336,1337],{"class":855},"    ogImage",[607,1339,859],{"class":656},[607,1341,650],{"class":625},[607,1343,653],{"class":629},[607,1345,657],{"class":656},[607,1347,660],{"class":613},[607,1349,1176],{"class":629},[607,1351,665],{"class":656},[607,1353,678],{"class":629},[607,1355,681],{"class":656},[607,1357,1185],{"class":629},[607,1359,681],{"class":656},[607,1361,1214],{"class":629},[607,1363,681],{"class":656},[607,1365,1366],{"class":629},"contentUrl)",[607,1368,870],{"class":656},[607,1370,1371,1374,1376,1378,1381],{"class":609,"line":724},[607,1372,1373],{"class":855},"    twitterCard",[607,1375,859],{"class":656},[607,1377,792],{"class":791},[607,1379,1380],{"class":795},"summary_large_image",[607,1382,799],{"class":791},[607,1384,1385,1387],{"class":609,"line":904},[607,1386,898],{"class":656},[607,1388,901],{"class":629},[397,1390,1392],{"id":1391},"maintenance-mode","Maintenance Mode",[367,1394,1395,1396,1399,1400,1403],{},"When ",[377,1397,1398],{},"maintenanceModeEnabled: true",", the module redirects all non-admin visitors to ",[377,1401,1402],{},"\u002F_cwa\u002Fmaintenance",". Admins are not redirected and can still access the site to turn maintenance mode off.",[367,1405,1406,1407,665],{},"Override the maintenance page by creating ",[377,1408,1409],{},"app\u002Fpages\u002F_cwa\u002Fmaintenance.vue",[397,1411,1413],{"id":1412},"sitemap","Sitemap",[367,1415,1416,1418,1419,1422,1423,665],{},[377,1417,527],{}," is auto-generated from all ",[377,1420,1421],{},"Route"," resources in the API. Only published, public routes are included. Customise priority and changefreq per-route in the admin under ",[377,1424,1425],{},"\u002F_cwa\u002Froutes",[367,1427,1428],{},"Disable sitemap generation if you manage it externally:",[598,1430,1432],{"className":600,"code":1431,"language":602,"meta":603,"style":603},"\u002F\u002F Admin settings panel → Sitemap → Disabled\n\u002F\u002F Or programmatically:\ncwa.siteConfig.saveConfig({ sitemapEnabled: false })\n",[377,1433,1434,1439,1444],{"__ignoreMap":603},[607,1435,1436],{"class":609,"line":610},[607,1437,1438],{"class":912},"\u002F\u002F Admin settings panel → Sitemap → Disabled\n",[607,1440,1441],{"class":609,"line":633},[607,1442,1443],{"class":912},"\u002F\u002F Or programmatically:\n",[607,1445,1446,1449,1451,1453,1455,1457,1459,1462,1464,1466,1468,1470],{"class":609,"line":640},[607,1447,1448],{"class":629},"cwa",[607,1450,665],{"class":656},[607,1452,668],{"class":629},[607,1454,665],{"class":656},[607,1456,845],{"class":625},[607,1458,653],{"class":629},[607,1460,1461],{"class":656},"{",[607,1463,729],{"class":855},[607,1465,859],{"class":656},[607,1467,881],{"class":880},[607,1469,785],{"class":656},[607,1471,901],{"class":629},[397,1473,1475],{"id":1474},"nuxt-config-overrides-static-defaults","Nuxt Config Overrides (Static Defaults)",[367,1477,1478,1479,1482],{},"You can set site config defaults in ",[377,1480,1481],{},"nuxt.config"," — these are merged with the API's stored values, with the API winning for any key it defines:",[598,1484,1486],{"className":600,"code":1485,"language":602,"meta":603,"style":603},"\u002F\u002F nuxt.config.ts\ncwa: {\n    siteConfig: {\n        siteName: 'My App',\n        canonicalUrl: 'https:\u002F\u002Fwww.example.com'\n    }\n}\n",[377,1487,1488,1493,1502,1511,1527,1541,1546],{"__ignoreMap":603},[607,1489,1490],{"class":609,"line":610},[607,1491,1492],{"class":912},"\u002F\u002F nuxt.config.ts\n",[607,1494,1495,1498,1500],{"class":609,"line":633},[607,1496,1448],{"class":1497},"sRCss",[607,1499,859],{"class":656},[607,1501,1167],{"class":656},[607,1503,1504,1507,1509],{"class":609,"line":640},[607,1505,1506],{"class":1497},"    siteConfig",[607,1508,859],{"class":656},[607,1510,1167],{"class":656},[607,1512,1513,1516,1518,1520,1523,1525],{"class":609,"line":687},[607,1514,1515],{"class":1497},"        siteName",[607,1517,859],{"class":656},[607,1519,792],{"class":791},[607,1521,1522],{"class":795},"My App",[607,1524,867],{"class":791},[607,1526,870],{"class":656},[607,1528,1529,1532,1534,1536,1539],{"class":609,"line":724},[607,1530,1531],{"class":1497},"        canonicalUrl",[607,1533,859],{"class":656},[607,1535,792],{"class":791},[607,1537,1538],{"class":795},"https:\u002F\u002Fwww.example.com",[607,1540,799],{"class":791},[607,1542,1543],{"class":609,"line":904},[607,1544,1545],{"class":656},"    }\n",[607,1547,1548],{"class":609,"line":909},[607,1549,1550],{"class":656},"}\n",[367,1552,1553],{},"This lets you ship a sensible default without requiring a database record on first boot.",[1555,1556,1557],"style",{},"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 pre.shiki code .sKpYG, html code.shiki .sKpYG{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--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);}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 .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 .sDHlG, html code.shiki .sDHlG{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#F07178}html pre.shiki code .swWMF, html code.shiki .swWMF{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#FF9CAC}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 .sRCss, html code.shiki .sRCss{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}",{"title":603,"searchDepth":633,"depth":633,"links":1559},[1560,1561,1562,1563,1564,1567,1568,1569,1570],{"id":399,"depth":633,"text":400},{"id":588,"depth":633,"text":589},{"id":819,"depth":633,"text":820},{"id":922,"depth":633,"text":923},{"id":1059,"depth":633,"text":1060,"children":1565},[1566],{"id":1126,"depth":640,"text":1127},{"id":1238,"depth":633,"text":1239},{"id":1391,"depth":633,"text":1392},{"id":1412,"depth":633,"text":1413},{"id":1474,"depth":633,"text":1475},"Admin settings panel, siteConfig API, per-page SEO from page data, sitemap, maintenance mode, and robots configuration.","md",null,{},{"title":159,"description":1571},"y4wFYrIEefnU5PhPI2ap9BVSuREhEMPCkVJku2pXSF0",[1578,1580],{"title":155,"path":156,"stem":157,"description":1579,"children":-1},"[object Object]",{"title":168,"path":169,"stem":170,"description":1581,"children":-1},"How to create CWA layout components that form the outer shell of your site — header, footer, navigation, and component group regions.",1782512901042]