[{"data":1,"prerenderedAt":1378},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fyour-first-page-template":358,"\u002Fguides\u002Fyour-first-page-template-surround":1373},[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":24,"badge":360,"body":363,"description":1367,"extension":1368,"links":1369,"meta":1370,"navigation":525,"path":25,"seo":1371,"stem":26,"__hash__":1372},"docs\u002F2.guides\u002F2.your-first-page-template.md",{"label":361,"color":362},"Draft","amber",{"type":364,"value":365,"toc":1354},"minimark",[366,375,382,389,394,401,629,634,643,654,671,675,678,950,960,964,1083,1087,1090,1108,1112,1128,1133,1137,1219,1236,1240,1250,1307,1317,1334,1339,1343,1350],[367,368,369,370,374],"p",{},"Your layout is in place — but the ",[371,372,373],"code",{},"\u003Cslot \u002F>"," is empty. A page template fills it. It's a Vue file that defines the regions for a page: where the hero sits, where the main content goes, where the sidebar lives.",[367,376,377,378,381],{},"Each region is a ",[371,379,380],{},"CwaComponentGroup",". You declare which regions exist and what they're called; editors fill them with components at runtime.",[383,384,386],"callout",{"icon":385},"i-heroicons-photo",[367,387,388],{},"IMAGE: Page template in edit mode showing two CwaComponentGroup regions highlighted as editable areas with + hotspots",[390,391,393],"h2",{"id":392},"the-file","The File",[367,395,396,397,400],{},"Create ",[371,398,399],{},"app\u002Fcwa\u002Fpages\u002FPrimaryPageTemplate.vue",":",[402,403,408],"pre",{"className":404,"code":405,"language":406,"meta":407,"style":407},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003Ctemplate>\n  \u003Cdiv class=\"mx-auto max-w-7xl px-4 py-10\">\n    \u003CCwaComponentGroup\n      reference=\"primary\"\n      :location=\"props.iri\"\n    \u002F>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nimport type { IriProp } from '#cwa\u002Fcomposables\u002Fcwa-resource'\n\nconst props = defineProps\u003CIriProp>()\n\u003C\u002Fscript>\n","vue","",[371,409,410,426,454,463,479,494,500,510,520,527,552,584,589,620],{"__ignoreMap":407},[411,412,415,419,423],"span",{"class":413,"line":414},"line",1,[411,416,418],{"class":417},"sOvfz","\u003C",[411,420,422],{"class":421},"s-h7I","template",[411,424,425],{"class":417},">\n",[411,427,429,432,435,439,442,446,450,452],{"class":413,"line":428},2,[411,430,431],{"class":417},"  \u003C",[411,433,434],{"class":421},"div",[411,436,438],{"class":437},"sGtlX"," class",[411,440,441],{"class":417},"=",[411,443,445],{"class":444},"seSrl","\"",[411,447,449],{"class":448},"sLL54","mx-auto max-w-7xl px-4 py-10",[411,451,445],{"class":444},[411,453,425],{"class":417},[411,455,457,460],{"class":413,"line":456},3,[411,458,459],{"class":417},"    \u003C",[411,461,462],{"class":421},"CwaComponentGroup\n",[411,464,466,469,471,473,476],{"class":413,"line":465},4,[411,467,468],{"class":437},"      reference",[411,470,441],{"class":417},[411,472,445],{"class":444},[411,474,475],{"class":448},"primary",[411,477,478],{"class":444},"\"\n",[411,480,482,485,487,489,492],{"class":413,"line":481},5,[411,483,484],{"class":437},"      :location",[411,486,441],{"class":417},[411,488,445],{"class":444},[411,490,491],{"class":448},"props.iri",[411,493,478],{"class":444},[411,495,497],{"class":413,"line":496},6,[411,498,499],{"class":417},"    \u002F>\n",[411,501,503,506,508],{"class":413,"line":502},7,[411,504,505],{"class":417},"  \u003C\u002F",[411,507,434],{"class":421},[411,509,425],{"class":417},[411,511,513,516,518],{"class":413,"line":512},8,[411,514,515],{"class":417},"\u003C\u002F",[411,517,422],{"class":421},[411,519,425],{"class":417},[411,521,523],{"class":413,"line":522},9,[411,524,526],{"emptyLinePlaceholder":525},true,"\n",[411,528,530,532,535,538,541,543,545,548,550],{"class":413,"line":529},10,[411,531,418],{"class":417},[411,533,534],{"class":421},"script",[411,536,537],{"class":437}," setup",[411,539,540],{"class":437}," lang",[411,542,441],{"class":417},[411,544,445],{"class":444},[411,546,547],{"class":448},"ts",[411,549,445],{"class":444},[411,551,425],{"class":417},[411,553,555,559,562,565,569,572,575,578,581],{"class":413,"line":554},11,[411,556,558],{"class":557},"sm4w6","import",[411,560,561],{"class":557}," type",[411,563,564],{"class":417}," {",[411,566,568],{"class":567},"sPB8G"," IriProp",[411,570,571],{"class":417}," }",[411,573,574],{"class":557}," from",[411,576,577],{"class":444}," '",[411,579,580],{"class":448},"#cwa\u002Fcomposables\u002Fcwa-resource",[411,582,583],{"class":444},"'\n",[411,585,587],{"class":413,"line":586},12,[411,588,526],{"emptyLinePlaceholder":525},[411,590,592,596,600,604,608,610,614,617],{"class":413,"line":591},13,[411,593,595],{"class":594},"swB56","const",[411,597,599],{"class":598},"sc2zw"," props",[411,601,603],{"class":602},"sVlFx"," =",[411,605,607],{"class":606},"sKpYG"," defineProps",[411,609,418],{"class":417},[411,611,613],{"class":612},"sRCss","IriProp",[411,615,616],{"class":417},">",[411,618,619],{"class":567},"()\n",[411,621,623,625,627],{"class":413,"line":622},14,[411,624,515],{"class":417},[411,626,534],{"class":421},[411,628,425],{"class":417},[630,631,633],"h3",{"id":632},"key-points","Key points",[367,635,636,642],{},[637,638,639],"strong",{},[371,640,641],{},"defineProps\u003CIriProp>()"," — every page template receives its page's IRI as a prop. The module passes this automatically when rendering the page.",[367,644,645,650,651,653],{},[637,646,647],{},[371,648,649],{},"CwaComponentGroup reference=\"primary\" :location=\"props.iri\""," — creates a content region called ",[371,652,475],{}," owned by this page. Any components the editor adds here are stored against this specific page record.",[383,655,657],{"icon":656},"i-heroicons-information-circle",[367,658,659,660,663,664,667,668,670],{},"The ",[371,661,662],{},"location"," must be the IRI of a ",[637,665,666],{},"layout, page, or component",". For page regions, always use ",[371,669,491],{}," — the IRI the module passes in automatically for the current page.",[390,672,674],{"id":673},"multiple-regions","Multiple Regions",[367,676,677],{},"Real page templates usually have several regions:",[402,679,681],{"className":404,"code":680,"language":406,"meta":407,"style":407},"\u003Ctemplate>\n  \u003Cdiv>\n    \u003C!-- Full-width hero area -->\n    \u003CCwaComponentGroup\n      reference=\"hero\"\n      :location=\"props.iri\"\n      :allowed-components=\"['\u002Fcomponent\u002Fhero_sections']\"\n    \u002F>\n\n    \u003C!-- Main content + optional sidebar -->\n    \u003Cdiv class=\"max-w-7xl mx-auto px-4 py-10 flex gap-10\">\n      \u003Cdiv class=\"flex-1\">\n        \u003CCwaComponentGroup\n          reference=\"main\"\n          :location=\"props.iri\"\n        \u002F>\n      \u003C\u002Fdiv>\n      \u003Caside class=\"w-64\">\n        \u003CCwaComponentGroup\n          reference=\"sidebar\"\n          :location=\"props.iri\"\n        \u002F>\n      \u003C\u002Faside>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n",[371,682,683,691,699,705,711,724,736,750,754,758,763,782,802,809,823,837,843,853,874,881,895,908,913,922,932,941],{"__ignoreMap":407},[411,684,685,687,689],{"class":413,"line":414},[411,686,418],{"class":417},[411,688,422],{"class":421},[411,690,425],{"class":417},[411,692,693,695,697],{"class":413,"line":428},[411,694,431],{"class":417},[411,696,434],{"class":421},[411,698,425],{"class":417},[411,700,701],{"class":413,"line":456},[411,702,704],{"class":703},"sTBSN","    \u003C!-- Full-width hero area -->\n",[411,706,707,709],{"class":413,"line":465},[411,708,459],{"class":417},[411,710,462],{"class":421},[411,712,713,715,717,719,722],{"class":413,"line":481},[411,714,468],{"class":437},[411,716,441],{"class":417},[411,718,445],{"class":444},[411,720,721],{"class":448},"hero",[411,723,478],{"class":444},[411,725,726,728,730,732,734],{"class":413,"line":496},[411,727,484],{"class":437},[411,729,441],{"class":417},[411,731,445],{"class":444},[411,733,491],{"class":448},[411,735,478],{"class":444},[411,737,738,741,743,745,748],{"class":413,"line":502},[411,739,740],{"class":437},"      :allowed-components",[411,742,441],{"class":417},[411,744,445],{"class":444},[411,746,747],{"class":448},"['\u002Fcomponent\u002Fhero_sections']",[411,749,478],{"class":444},[411,751,752],{"class":413,"line":512},[411,753,499],{"class":417},[411,755,756],{"class":413,"line":522},[411,757,526],{"emptyLinePlaceholder":525},[411,759,760],{"class":413,"line":529},[411,761,762],{"class":703},"    \u003C!-- Main content + optional sidebar -->\n",[411,764,765,767,769,771,773,775,778,780],{"class":413,"line":554},[411,766,459],{"class":417},[411,768,434],{"class":421},[411,770,438],{"class":437},[411,772,441],{"class":417},[411,774,445],{"class":444},[411,776,777],{"class":448},"max-w-7xl mx-auto px-4 py-10 flex gap-10",[411,779,445],{"class":444},[411,781,425],{"class":417},[411,783,784,787,789,791,793,795,798,800],{"class":413,"line":586},[411,785,786],{"class":417},"      \u003C",[411,788,434],{"class":421},[411,790,438],{"class":437},[411,792,441],{"class":417},[411,794,445],{"class":444},[411,796,797],{"class":448},"flex-1",[411,799,445],{"class":444},[411,801,425],{"class":417},[411,803,804,807],{"class":413,"line":591},[411,805,806],{"class":417},"        \u003C",[411,808,462],{"class":421},[411,810,811,814,816,818,821],{"class":413,"line":622},[411,812,813],{"class":437},"          reference",[411,815,441],{"class":417},[411,817,445],{"class":444},[411,819,820],{"class":448},"main",[411,822,478],{"class":444},[411,824,826,829,831,833,835],{"class":413,"line":825},15,[411,827,828],{"class":437},"          :location",[411,830,441],{"class":417},[411,832,445],{"class":444},[411,834,491],{"class":448},[411,836,478],{"class":444},[411,838,840],{"class":413,"line":839},16,[411,841,842],{"class":417},"        \u002F>\n",[411,844,846,849,851],{"class":413,"line":845},17,[411,847,848],{"class":417},"      \u003C\u002F",[411,850,434],{"class":421},[411,852,425],{"class":417},[411,854,856,858,861,863,865,867,870,872],{"class":413,"line":855},18,[411,857,786],{"class":417},[411,859,860],{"class":421},"aside",[411,862,438],{"class":437},[411,864,441],{"class":417},[411,866,445],{"class":444},[411,868,869],{"class":448},"w-64",[411,871,445],{"class":444},[411,873,425],{"class":417},[411,875,877,879],{"class":413,"line":876},19,[411,878,806],{"class":417},[411,880,462],{"class":421},[411,882,884,886,888,890,893],{"class":413,"line":883},20,[411,885,813],{"class":437},[411,887,441],{"class":417},[411,889,445],{"class":444},[411,891,892],{"class":448},"sidebar",[411,894,478],{"class":444},[411,896,898,900,902,904,906],{"class":413,"line":897},21,[411,899,828],{"class":437},[411,901,441],{"class":417},[411,903,445],{"class":444},[411,905,491],{"class":448},[411,907,478],{"class":444},[411,909,911],{"class":413,"line":910},22,[411,912,842],{"class":417},[411,914,916,918,920],{"class":413,"line":915},23,[411,917,848],{"class":417},[411,919,860],{"class":421},[411,921,425],{"class":417},[411,923,925,928,930],{"class":413,"line":924},24,[411,926,927],{"class":417},"    \u003C\u002F",[411,929,434],{"class":421},[411,931,425],{"class":417},[411,933,935,937,939],{"class":413,"line":934},25,[411,936,505],{"class":417},[411,938,434],{"class":421},[411,940,425],{"class":417},[411,942,944,946,948],{"class":413,"line":943},26,[411,945,515],{"class":417},[411,947,422],{"class":421},[411,949,425],{"class":417},[367,951,952,953,955,956,959],{},"Each ",[371,954,380],{}," with a unique ",[371,957,958],{},"reference"," becomes a separate, independently manageable region in the CMS.",[390,961,963],{"id":962},"register-in-nuxtconfig","Register in nuxt.config",[402,965,968],{"className":966,"code":967,"language":547,"meta":407,"style":407},"language-ts shiki shiki-themes github-light github-dark material-theme-palenight","\u002F\u002F nuxt.config.ts\ncwa: {\n  pages: {\n    PrimaryPageTemplate: {\n      name: 'Primary Page',\n      classes: [\n        { value: '', label: 'Default' }\n      ]\n    }\n  }\n}\n",[371,969,970,975,985,994,1003,1021,1032,1063,1068,1073,1078],{"__ignoreMap":407},[411,971,972],{"class":413,"line":414},[411,973,974],{"class":703},"\u002F\u002F nuxt.config.ts\n",[411,976,977,980,982],{"class":413,"line":428},[411,978,979],{"class":612},"cwa",[411,981,400],{"class":417},[411,983,984],{"class":417}," {\n",[411,986,987,990,992],{"class":413,"line":456},[411,988,989],{"class":612},"  pages",[411,991,400],{"class":417},[411,993,984],{"class":417},[411,995,996,999,1001],{"class":413,"line":465},[411,997,998],{"class":612},"    PrimaryPageTemplate",[411,1000,400],{"class":417},[411,1002,984],{"class":417},[411,1004,1005,1008,1010,1012,1015,1018],{"class":413,"line":481},[411,1006,1007],{"class":612},"      name",[411,1009,400],{"class":417},[411,1011,577],{"class":444},[411,1013,1014],{"class":448},"Primary Page",[411,1016,1017],{"class":444},"'",[411,1019,1020],{"class":417},",\n",[411,1022,1023,1026,1028],{"class":413,"line":496},[411,1024,1025],{"class":612},"      classes",[411,1027,400],{"class":417},[411,1029,1031],{"class":1030},"sDHlG"," [\n",[411,1033,1034,1037,1040,1042,1045,1048,1051,1053,1055,1058,1060],{"class":413,"line":502},[411,1035,1036],{"class":417},"        {",[411,1038,1039],{"class":1030}," value",[411,1041,400],{"class":417},[411,1043,1044],{"class":444}," ''",[411,1046,1047],{"class":417},",",[411,1049,1050],{"class":1030}," label",[411,1052,400],{"class":417},[411,1054,577],{"class":444},[411,1056,1057],{"class":448},"Default",[411,1059,1017],{"class":444},[411,1061,1062],{"class":417}," }\n",[411,1064,1065],{"class":413,"line":512},[411,1066,1067],{"class":1030},"      ]\n",[411,1069,1070],{"class":413,"line":522},[411,1071,1072],{"class":417},"    }\n",[411,1074,1075],{"class":413,"line":529},[411,1076,1077],{"class":417},"  }\n",[411,1079,1080],{"class":413,"line":554},[411,1081,1082],{"class":417},"}\n",[390,1084,1086],{"id":1085},"create-a-page-record","Create a Page Record",[367,1088,1089],{},"A page template Vue file defines the structure; a Page record in the database gives it a URL and assigns it to a layout.",[367,1091,1092,1095,1096,1099,1100,1103,1104,1107],{},[637,1093,1094],{},"Naming convention:"," unlike layouts, page template ",[371,1097,1098],{},"uiComponent"," values are not prefixed — the value is the Vue filename as-is. ",[371,1101,1102],{},"PrimaryPageTemplate.vue"," → ",[371,1105,1106],{},"PrimaryPageTemplate",".",[630,1109,1111],{"id":1110},"via-the-admin","Via the admin",[367,1113,1114,1115,1103,1118,1121,1122,1124,1125,1127],{},"Go to ",[371,1116,1117],{},"\u002F_cwa\u002Fpages",[637,1119,1120],{},"Create"," → set ",[371,1123,1098],{}," to ",[371,1126,1106],{},", assign a layout, and set the route path.",[383,1129,1130],{"icon":385},[367,1131,1132],{},"IMAGE: Admin create page form showing uiComponent, layout, and route fields",[630,1134,1136],{"id":1135},"via-fixtures","Via fixtures",[402,1138,1142],{"className":1139,"code":1140,"language":1141,"meta":407,"style":407},"language-php shiki shiki-themes github-light github-dark material-theme-palenight","$cwa->page('home', 'PrimaryPageTemplate', layout: 'main', route: '\u002F');\n$cwa->flush();\n","php",[371,1143,1144,1205],{"__ignoreMap":407},[411,1145,1146,1149,1151,1154,1157,1160,1162,1165,1167,1169,1171,1173,1175,1177,1180,1182,1184,1186,1188,1190,1193,1195,1197,1200,1202],{"class":413,"line":414},[411,1147,1148],{"class":417},"$",[411,1150,979],{"class":567},[411,1152,1153],{"class":602},"->",[411,1155,1156],{"class":606},"page",[411,1158,1159],{"class":417},"(",[411,1161,1017],{"class":444},[411,1163,1164],{"class":448},"home",[411,1166,1017],{"class":444},[411,1168,1047],{"class":417},[411,1170,577],{"class":444},[411,1172,1106],{"class":448},[411,1174,1017],{"class":444},[411,1176,1047],{"class":417},[411,1178,1179],{"class":612}," layout",[411,1181,400],{"class":417},[411,1183,577],{"class":444},[411,1185,820],{"class":448},[411,1187,1017],{"class":444},[411,1189,1047],{"class":417},[411,1191,1192],{"class":612}," route",[411,1194,400],{"class":417},[411,1196,577],{"class":444},[411,1198,1199],{"class":448},"\u002F",[411,1201,1017],{"class":444},[411,1203,1204],{"class":417},");\n",[411,1206,1207,1209,1211,1213,1216],{"class":413,"line":428},[411,1208,1148],{"class":417},[411,1210,979],{"class":567},[411,1212,1153],{"class":602},[411,1214,1215],{"class":606},"flush",[411,1217,1218],{"class":417},"();\n",[367,1220,659,1221,1224,1225,1228,1229,1231,1232,1235],{},[371,1222,1223],{},"'main'"," argument refers to the layout reference from your scaffold (",[371,1226,1227],{},"$cwa->layout('main', ...)",") — not the ",[371,1230,1098],{}," value. See ",[1233,1234,125],"a",{"href":126}," for the full API.",[390,1237,1239],{"id":1238},"template-pages-for-dynamic-content","Template Pages for Dynamic Content",[367,1241,1242,1243,1246,1247,400],{},"Static pages (home, about, contact) map one-to-one: one URL, one page. But for repeating content — blog articles, events, products — you want the ",[637,1244,1245],{},"same page structure"," reused across many URLs. For this, you create a ",[637,1248,1249],{},"template page",[402,1251,1253],{"className":1139,"code":1252,"language":1141,"meta":407,"style":407},"$cwa->page('blog-template', 'PrimaryPageTemplate', layout: 'main', isTemplate: true);\n",[371,1254,1255],{"__ignoreMap":407},[411,1256,1257,1259,1261,1263,1265,1267,1269,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290,1292,1294,1296,1299,1301,1305],{"class":413,"line":414},[411,1258,1148],{"class":417},[411,1260,979],{"class":567},[411,1262,1153],{"class":602},[411,1264,1156],{"class":606},[411,1266,1159],{"class":417},[411,1268,1017],{"class":444},[411,1270,1271],{"class":448},"blog-template",[411,1273,1017],{"class":444},[411,1275,1047],{"class":417},[411,1277,577],{"class":444},[411,1279,1106],{"class":448},[411,1281,1017],{"class":444},[411,1283,1047],{"class":417},[411,1285,1179],{"class":612},[411,1287,400],{"class":417},[411,1289,577],{"class":444},[411,1291,820],{"class":448},[411,1293,1017],{"class":444},[411,1295,1047],{"class":417},[411,1297,1298],{"class":612}," isTemplate",[411,1300,400],{"class":417},[411,1302,1304],{"class":1303},"sBtbT"," true",[411,1306,1204],{"class":417},[367,1308,1309,1310,1313,1314,1316],{},"A template page has no URL. Instead, each blog article (or product, or event) is a ",[637,1311,1312],{},"PageData"," record that references this template and gets its own URL. All those records share the same component regions you've defined in ",[371,1315,1102],{},", but each has its own data.",[383,1318,1319],{"icon":656},[367,1320,1321,1322,1325,1326,1329,1330,1333],{},"In the admin, ",[637,1323,1324],{},"blue"," records are static pages, ",[637,1327,1328],{},"yellow"," are template pages, and ",[637,1331,1332],{},"green"," are PageData records (individual articles, products, etc.). This colour coding makes it easy to see what's a shared structure vs. an individual piece of content.",[367,1335,1336,1337,1107],{},"The full dynamic pages pattern — how PageData records work, how to bind component positions to data fields — is in ",[1233,1338,54],{"href":55},[390,1340,1342],{"id":1341},"next-create-a-component","Next: Create a Component",[367,1344,1345,1346,1349],{},"With a layout and page template in place, ",[1233,1347,1348],{"href":29},"build a component"," to fill those regions with real, editable content.",[1351,1352,1353],"style",{},"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 .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 .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}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 .sRCss, html code.shiki .sRCss{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}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 .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 .sDHlG, html code.shiki .sDHlG{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#F07178}html pre.shiki code .sBtbT, html code.shiki .sBtbT{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}",{"title":407,"searchDepth":428,"depth":428,"links":1355},[1356,1359,1360,1361,1365,1366],{"id":392,"depth":428,"text":393,"children":1357},[1358],{"id":632,"depth":456,"text":633},{"id":673,"depth":428,"text":674},{"id":962,"depth":428,"text":963},{"id":1085,"depth":428,"text":1086,"children":1362},[1363,1364],{"id":1110,"depth":456,"text":1111},{"id":1135,"depth":456,"text":1136},{"id":1238,"depth":428,"text":1239},{"id":1341,"depth":428,"text":1342},"Create a page template that defines the content regions within a layout using CwaComponentGroup.","md",null,{},{"title":24,"description":1367},"rogNtAKtU22o5arlfbNVCI80K0HdLcCwjw-ffpprrqQ",[1374,1376],{"title":20,"path":21,"stem":22,"description":1375,"children":-1},"Create a layout component that wraps every page with your site header, footer, and navigation.",{"title":28,"path":29,"stem":30,"description":1377,"children":-1},"Create a CWA component in four steps using the generator commands.",1782512894926]