[{"data":1,"prerenderedAt":781},["ShallowReactive",2],{"navigation":3,"\u002Fcore-concepts\u002Flayouts-and-pages":358,"\u002Fcore-concepts\u002Flayouts-and-pages-surround":776},[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":50,"badge":360,"body":363,"description":769,"extension":770,"links":771,"meta":772,"navigation":773,"path":51,"seo":774,"stem":52,"__hash__":775},"docs\u002F3.core-concepts\u002F3.layouts-and-pages.md",{"label":361,"color":362},"Draft","amber",{"type":364,"value":365,"toc":758},"minimark",[366,370,379,382,418,425,430,433,618,637,640,644,657,665,669,672,675,682,689,692,695,701,704,715,717,721,724,743,754],[367,368,168],"h2",{"id":369},"layouts",[371,372,373,374,378],"p",{},"A layout is the ",[375,376,377],"strong",{},"outer shell"," every page shares: the header, navigation, footer. You create one (or a few) layouts and every page uses one.",[371,380,381],{},"In the API a Layout has:",[383,384,385,401,415],"ul",{},[386,387,388,392,393,396,397,400],"li",{},[389,390,391],"code",{},"uiComponent"," — the Vue file to render (",[389,394,395],{},"CwaLayoutPrimary"," → ",[389,398,399],{},"app\u002Fcwa\u002Flayouts\u002Fprimary.vue",")",[386,402,403,406,407,410,411,414],{},[389,404,405],{},"uiClassNames"," — CSS class options admins can choose (e.g. ",[389,408,409],{},"light"," or ",[389,412,413],{},"dark"," theme)",[386,416,417],{},"ComponentGroups — regions in the layout where components can live (e.g. a navigation region)",[371,419,420,421,424],{},"The module wraps your entire site in the current layout's Vue file. Your layout renders the header, then ",[389,422,423],{},"\u003Cslot \u002F>"," where the page content goes, then the footer.",[426,427,429],"h3",{"id":428},"componentgroups-in-layouts","ComponentGroups in Layouts",[371,431,432],{},"A layout can have its own regions. The most common: a navigation bar area.",[434,435,440],"pre",{"className":436,"code":437,"language":438,"meta":439,"style":439},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003C!-- app\u002Fcwa\u002Flayouts\u002Fprimary.vue -->\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cheader>\n      \u003CCwaComponentGroup\n        reference=\"navigation\"\n        :location=\"$cwa.resources.layoutIri.value\"\n        :allowed-components=\"['\u002Fcomponent\u002Fnavigation_links']\"\n      \u002F>\n    \u003C\u002Fheader>\n    \u003Cslot \u002F>\n    \u003Cfooter>...\u003C\u002Ffooter>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n","vue","",[389,441,442,451,465,476,487,496,517,532,547,553,563,577,599,609],{"__ignoreMap":439},[443,444,447],"span",{"class":445,"line":446},"line",1,[443,448,450],{"class":449},"sTBSN","\u003C!-- app\u002Fcwa\u002Flayouts\u002Fprimary.vue -->\n",[443,452,454,458,462],{"class":445,"line":453},2,[443,455,457],{"class":456},"sOvfz","\u003C",[443,459,461],{"class":460},"s-h7I","template",[443,463,464],{"class":456},">\n",[443,466,468,471,474],{"class":445,"line":467},3,[443,469,470],{"class":456},"  \u003C",[443,472,473],{"class":460},"div",[443,475,464],{"class":456},[443,477,479,482,485],{"class":445,"line":478},4,[443,480,481],{"class":456},"    \u003C",[443,483,484],{"class":460},"header",[443,486,464],{"class":456},[443,488,490,493],{"class":445,"line":489},5,[443,491,492],{"class":456},"      \u003C",[443,494,495],{"class":460},"CwaComponentGroup\n",[443,497,499,503,506,510,514],{"class":445,"line":498},6,[443,500,502],{"class":501},"sGtlX","        reference",[443,504,505],{"class":456},"=",[443,507,509],{"class":508},"seSrl","\"",[443,511,513],{"class":512},"sLL54","navigation",[443,515,516],{"class":508},"\"\n",[443,518,520,523,525,527,530],{"class":445,"line":519},7,[443,521,522],{"class":501},"        :location",[443,524,505],{"class":456},[443,526,509],{"class":508},[443,528,529],{"class":512},"$cwa.resources.layoutIri.value",[443,531,516],{"class":508},[443,533,535,538,540,542,545],{"class":445,"line":534},8,[443,536,537],{"class":501},"        :allowed-components",[443,539,505],{"class":456},[443,541,509],{"class":508},[443,543,544],{"class":512},"['\u002Fcomponent\u002Fnavigation_links']",[443,546,516],{"class":508},[443,548,550],{"class":445,"line":549},9,[443,551,552],{"class":456},"      \u002F>\n",[443,554,556,559,561],{"class":445,"line":555},10,[443,557,558],{"class":456},"    \u003C\u002F",[443,560,484],{"class":460},[443,562,464],{"class":456},[443,564,566,568,571,575],{"class":445,"line":565},11,[443,567,481],{"class":456},[443,569,570],{"class":460},"slot",[443,572,574],{"class":573},"s01iV"," \u002F",[443,576,464],{"class":456},[443,578,580,582,585,588,592,595,597],{"class":445,"line":579},12,[443,581,481],{"class":456},[443,583,584],{"class":460},"footer",[443,586,587],{"class":456},">",[443,589,591],{"class":590},"sPB8G","...",[443,593,594],{"class":456},"\u003C\u002F",[443,596,584],{"class":460},[443,598,464],{"class":456},[443,600,602,605,607],{"class":445,"line":601},13,[443,603,604],{"class":456},"  \u003C\u002F",[443,606,473],{"class":460},[443,608,464],{"class":456},[443,610,612,614,616],{"class":445,"line":611},14,[443,613,594],{"class":456},[443,615,461],{"class":460},[443,617,464],{"class":456},[371,619,620,621,624,625,628,629,632,633,636],{},"The ",[389,622,623],{},"reference"," is a stable name for this region. The ",[389,626,627],{},"location"," is the layout's own IRI (available from ",[389,630,631],{},"$cwa.resources.layoutIri","). The ",[389,634,635],{},"allowed-components"," restricts what types can be added to this group.",[638,639],"hr",{},[367,641,643],{"id":642},"pages","Pages",[371,645,646,647,650,651,653,654,656],{},"A page defines the ",[375,648,649],{},"content structure"," that renders inside a layout's ",[389,652,423],{},". It declares a ",[389,655,391],{}," that maps to one of your page template Vue files.",[434,658,663],{"className":659,"code":661,"language":662},[660],"language-text","Layout: CwaLayoutPrimary  →  primary.vue\n  Page: PrimaryPageTemplate  →  PrimaryPageTemplate.vue\n    ComponentGroup: \"primary\"\n      ComponentPosition  →  HtmlContent component\n      ComponentPosition  →  Image component\n","text",[389,664,661],{"__ignoreMap":439},[426,666,668],{"id":667},"static-pages","Static Pages",[371,670,671],{},"A static page is a one-to-one mapping: one URL → one page. The admin creates the layout structure once, adds components to the regions, and that's the page content.",[371,673,674],{},"Good for: Home page, About page, Contact page — anything with a fixed URL and manually managed content.",[371,676,677,678,681],{},"In the admin, static pages are shown in ",[375,679,680],{},"blue",".",[426,683,685,686,400],{"id":684},"template-pages-istemplate-true","Template Pages (",[389,687,688],{},"isTemplate: true",[371,690,691],{},"A template page has no URL of its own. Instead, it's a reusable structure that many PageData records share.",[371,693,694],{},"Good for: Blog articles, events, team members, products — anything where the same layout is used for many data records, each with its own URL.",[434,696,699],{"className":697,"code":698,"language":662},[660],"\u002Fblog\u002Farticle-one  →  BlogArticleData  →  BlogTemplate (isTemplate page)\n\u002Fblog\u002Farticle-two  →  BlogArticleData  →  BlogTemplate (same template)\n",[389,700,698],{"__ignoreMap":439},[371,702,703],{},"The template defines the layout regions. The actual content (title, body, image) comes from the PageData record.",[371,705,706,707,710,711,714],{},"In the admin, template pages are shown in ",[375,708,709],{},"yellow"," and PageData records in ",[375,712,713],{},"green"," — making it easy to see at a glance what is shared structure versus individual content.",[638,716],{},[367,718,720],{"id":719},"multiple-layouts","Multiple Layouts",[371,722,723],{},"You can have several layouts for different sections of the site:",[383,725,726,731,737],{},[386,727,728,730],{},[389,729,395],{}," — main site layout with full header\u002Ffooter",[386,732,733,736],{},[389,734,735],{},"CwaLayoutMinimal"," — stripped down, maybe for landing pages",[386,738,739,742],{},[389,740,741],{},"CwaLayoutDocs"," — sidebar navigation layout",[371,744,745,746,749,750,753],{},"Each is a separate Vue file in ",[389,747,748],{},"app\u002Fcwa\u002Flayouts\u002F",". Admins choose which layout a page uses from the ",[389,751,752],{},"\u002F_cwa\u002Fpages"," admin area.",[755,756,757],"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 .s01iV, html code.shiki .s01iV{--shiki-light:#B31D28;--shiki-light-font-style:italic;--shiki-default:#FDAEB7;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:inherit}html pre.shiki code .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}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":439,"searchDepth":453,"depth":453,"links":759},[760,763,768],{"id":369,"depth":453,"text":168,"children":761},[762],{"id":428,"depth":467,"text":429},{"id":642,"depth":453,"text":643,"children":764},[765,766],{"id":667,"depth":467,"text":668},{"id":684,"depth":467,"text":767},"Template Pages (isTemplate: true)",{"id":719,"depth":453,"text":720},"How layouts form the site shell and pages define the content structure within — and the difference between static and template pages.","md",null,{},true,{"title":50,"description":769},"-dalBe7Xh5oUus7kksOit6XdmoLWhechIKnRdUiOBM8",[777,779],{"title":46,"path":47,"stem":48,"description":778,"children":-1},"The six resource types that form the content graph behind every CWA page — and how they chain together.",{"title":54,"path":55,"stem":56,"description":780,"children":-1},"How PageData records drive template pages — the pattern for blogs, events, products, and any repeating content type.",1782512894926]