[{"data":1,"prerenderedAt":1019},["ShallowReactive",2],{"navigation":3,"\u002Fcore-concepts\u002Fglossary":553,"\u002Fcore-concepts\u002Fglossary-surround":1014},[4,22,64,89,215,503],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10,14,18],{"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},"Key Ideas","\u002Fgetting-started\u002Fkey-ideas","1.getting-started\u002F3.key-ideas",{"title":19,"path":20,"stem":21},"Releases","\u002Fgetting-started\u002Freleases","1.getting-started\u002F4.releases",{"title":23,"path":24,"stem":25,"children":26},"Overview","\u002Fcore-concepts","2.core-concepts\u002F0.index",[27,28,32,36,40,44,48,52,56,60],{"title":23,"path":24,"stem":25},{"title":29,"path":30,"stem":31},"How It All Works","\u002Fcore-concepts\u002Farchitecture","2.core-concepts\u002F1.architecture",{"title":33,"path":34,"stem":35},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","2.core-concepts\u002F2.the-data-model",{"title":37,"path":38,"stem":39},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","2.core-concepts\u002F3.layouts-and-pages",{"title":41,"path":42,"stem":43},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","2.core-concepts\u002F4.dynamic-pages",{"title":45,"path":46,"stem":47},"Components","\u002Fcore-concepts\u002Fcomponents","2.core-concepts\u002F5.components",{"title":49,"path":50,"stem":51},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","2.core-concepts\u002F6.draft-and-publish",{"title":53,"path":54,"stem":55},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","2.core-concepts\u002F7.admin-panel",{"title":57,"path":58,"stem":59},"Caching","\u002Fcore-concepts\u002Fcaching","2.core-concepts\u002F8.caching",{"title":61,"path":62,"stem":63},"Glossary","\u002Fcore-concepts\u002Fglossary","2.core-concepts\u002F9.glossary",{"title":23,"path":65,"stem":66,"children":67},"\u002Fguides","3.guides\u002F0.index",[68,69,73,77,81,85],{"title":23,"path":65,"stem":66},{"title":70,"path":71,"stem":72},"Your First Layout","\u002Fguides\u002Fyour-first-layout","3.guides\u002F1.your-first-layout",{"title":74,"path":75,"stem":76},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","3.guides\u002F2.your-first-page-template",{"title":78,"path":79,"stem":80},"Your First Component","\u002Fguides\u002Fyour-first-component","3.guides\u002F3.your-first-component",{"title":82,"path":83,"stem":84},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","3.guides\u002F4.alternative-ui-variants",{"title":86,"path":87,"stem":88},"Your First Dynamic Page","\u002Fguides\u002Fyour-first-dynamic-page","3.guides\u002F5.your-first-dynamic-page",{"title":23,"path":90,"stem":91,"children":92},"\u002Fapi","4.api\u002F0.index",[93,94,98,102,120,162,166,170,195,199,203,207,211],{"title":23,"path":90,"stem":91},{"title":95,"path":96,"stem":97},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F02.bundle-setup",{"title":99,"path":100,"stem":101},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F03.configuration",{"title":103,"path":104,"stem":105,"children":106,"page":119},"Users","\u002Fapi\u002Fusers","4.api\u002F04.users",[107,111,115],{"title":108,"path":109,"stem":110},"Authentication","\u002Fapi\u002Fusers\u002Fauthentication","4.api\u002F04.users\u002F1.authentication",{"title":112,"path":113,"stem":114},"User Emails","\u002Fapi\u002Fusers\u002Fuser-emails","4.api\u002F04.users\u002F2.user-emails",{"title":116,"path":117,"stem":118},"Access Control","\u002Fapi\u002Fusers\u002Faccess-control","4.api\u002F04.users\u002F3.access-control",false,{"title":45,"path":121,"stem":122,"children":123,"page":119},"\u002Fapi\u002Fcomponents","4.api\u002F05.components",[124,128,149],{"title":125,"path":126,"stem":127},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F05.components\u002F1.creating-components",{"title":129,"path":130,"stem":131,"children":132,"page":119},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F05.components\u002F2.annotations",[133,137,141,145],{"title":134,"path":135,"stem":136},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F05.components\u002F2.annotations\u002F1.publishable",{"title":138,"path":139,"stem":140},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F05.components\u002F2.annotations\u002F2.uploadable",{"title":142,"path":143,"stem":144},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F05.components\u002F2.annotations\u002F3.timestamped",{"title":146,"path":147,"stem":148},"Explicit Allow Only","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fexplicit-allow-only","4.api\u002F05.components\u002F2.annotations\u002F4.explicit-allow-only",{"title":150,"path":151,"stem":152,"children":153,"page":119},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F05.components\u002F3.built-ins",[154,158],{"title":155,"path":156,"stem":157},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F05.components\u002F3.built-ins\u002F1.collection-component",{"title":159,"path":160,"stem":161},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F05.components\u002F3.built-ins\u002F2.form-component",{"title":163,"path":164,"stem":165},"Page Data & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F06.dynamic-pages",{"title":167,"path":168,"stem":169},"Routes","\u002Fapi\u002Froutes","4.api\u002F07.routes",{"title":171,"path":172,"stem":173,"children":174,"page":119},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F08.data-fixtures",[175,179,183,187,191],{"title":176,"path":177,"stem":178},"Getting Started with Fixtures","\u002Fapi\u002Fdata-fixtures\u002Fgetting-started","4.api\u002F08.data-fixtures\u002F1.getting-started",{"title":180,"path":181,"stem":182},"Builder Reference","\u002Fapi\u002Fdata-fixtures\u002Fbuilder-reference","4.api\u002F08.data-fixtures\u002F2.builder-reference",{"title":184,"path":185,"stem":186},"Seeding Content","\u002Fapi\u002Fdata-fixtures\u002Fseeding-content","4.api\u002F08.data-fixtures\u002F3.seeding-content",{"title":188,"path":189,"stem":190},"Appending & Multiple Scaffolds","\u002Fapi\u002Fdata-fixtures\u002Fappending","4.api\u002F08.data-fixtures\u002F4.appending",{"title":192,"path":193,"stem":194},"Generating Fixtures","\u002Fapi\u002Fdata-fixtures\u002Fgenerating-fixtures","4.api\u002F08.data-fixtures\u002F5.generating-fixtures",{"title":196,"path":197,"stem":198},"Real-Time (Mercure)","\u002Fapi\u002Freal-time","4.api\u002F09.real-time",{"title":200,"path":201,"stem":202},"HTTP Caching","\u002Fapi\u002Fhttp-caching","4.api\u002F10.http-caching",{"title":204,"path":205,"stem":206},"Orphaned Data","\u002Fapi\u002Forphaned-data","4.api\u002F11.orphaned-data",{"title":208,"path":209,"stem":210},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F12.console-commands",{"title":212,"path":213,"stem":214},"Debugging & Errors","\u002Fapi\u002Fdebugging","4.api\u002F13.debugging",{"title":23,"path":216,"stem":217,"children":218},"\u002Fnuxt-module","5.nuxt-module\u002F0.index",[219,220,224,237,257,286,307,430,464,467,495,499],{"title":23,"path":216,"stem":217},{"title":221,"path":222,"stem":223},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F01.module-setup",{"title":225,"path":226,"stem":227,"children":228,"page":119},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F02.configuration",[229,233],{"title":230,"path":231,"stem":232},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F02.configuration\u002F1.nuxt-config",{"title":234,"path":235,"stem":236},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F02.configuration\u002F2.site-config-and-seo",{"title":238,"path":239,"stem":240,"children":241,"page":119},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F03.building-your-ui",[242,246,250,253],{"title":243,"path":244,"stem":245},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F03.building-your-ui\u002F1.creating-layouts",{"title":247,"path":248,"stem":249},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F03.building-your-ui\u002F2.creating-page-templates",{"title":45,"path":251,"stem":252},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F03.building-your-ui\u002F3.creating-components",{"title":254,"path":255,"stem":256},"CLI Generator","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcwa-cli","5.nuxt-module\u002F03.building-your-ui\u002F4.cwa-cli",{"title":258,"path":259,"stem":260,"children":261,"page":119},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F04.component-helpers",[262,266,270,274,278,282],{"title":263,"path":264,"stem":265},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F04.component-helpers\u002F1.images-and-uploads",{"title":267,"path":268,"stem":269},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F04.component-helpers\u002F2.collections-and-pagination",{"title":271,"path":272,"stem":273},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F04.component-helpers\u002F3.html-content",{"title":275,"path":276,"stem":277},"Rich-Text Editor","\u002Fnuxt-module\u002Fcomponent-helpers\u002Frich-text-editor","5.nuxt-module\u002F04.component-helpers\u002F4.rich-text-editor",{"title":279,"path":280,"stem":281},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F04.component-helpers\u002F5.real-time-updates",{"title":283,"path":284,"stem":285},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F04.component-helpers\u002F6.forms",{"title":287,"path":288,"stem":289,"children":290,"page":119},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F05.cwa-components",[291,295,299,303],{"title":292,"path":293,"stem":294},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F05.cwa-components\u002F1.cwa-component-group",{"title":296,"path":297,"stem":298},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F05.cwa-components\u002F2.cwa-page",{"title":300,"path":301,"stem":302},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F05.cwa-components\u002F3.cwa-link",{"title":304,"path":305,"stem":306},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F05.cwa-components\u002F5.cwa-default-layout",{"title":308,"path":309,"stem":310,"children":311,"page":119},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F06.composables",[312,315,323,348,368,385,405],{"title":23,"path":313,"stem":314},"\u002Fnuxt-module\u002Fcomposables\u002Foverview","5.nuxt-module\u002F06.composables\u002F0.overview",{"title":316,"path":317,"stem":318,"children":319,"page":119},"Layout","\u002Fnuxt-module\u002Fcomposables\u002Flayout","5.nuxt-module\u002F06.composables\u002F1.layout",[320],{"title":316,"path":321,"stem":322},"\u002Fnuxt-module\u002Fcomposables\u002Flayout\u002Fuse-cwa-layout","5.nuxt-module\u002F06.composables\u002F1.layout\u002F1.use-cwa-layout",{"title":324,"path":325,"stem":326,"children":327,"page":119},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F06.composables\u002F2.component",[328,332,336,340,344],{"title":329,"path":330,"stem":331},"Component (recommended)","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-component","5.nuxt-module\u002F06.composables\u002F2.component\u002F1.use-cwa-component",{"title":333,"path":334,"stem":335},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F06.composables\u002F2.component\u002F2.use-cwa-resource",{"title":337,"path":338,"stem":339},"File Field","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-file-field","5.nuxt-module\u002F06.composables\u002F2.component\u002F3.use-cwa-file-field",{"title":341,"path":342,"stem":343},"Collection Pagination","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-pagination","5.nuxt-module\u002F06.composables\u002F2.component\u002F4.use-cwa-collection-pagination",{"title":345,"path":346,"stem":347},"Collection Resource (deprecated)","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F06.composables\u002F2.component\u002F9.use-cwa-collection-resource",{"title":349,"path":350,"stem":351,"children":352,"page":119},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fform","5.nuxt-module\u002F06.composables\u002F3.form",[353,356,360,364],{"title":349,"path":354,"stem":355},"\u002Fnuxt-module\u002Fcomposables\u002Fform\u002Fuse-cwa-form","5.nuxt-module\u002F06.composables\u002F3.form\u002F1.use-cwa-form",{"title":357,"path":358,"stem":359},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fform\u002Fuse-cwa-form-input","5.nuxt-module\u002F06.composables\u002F3.form\u002F2.use-cwa-form-input",{"title":361,"path":362,"stem":363},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fform\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F06.composables\u002F3.form\u002F3.use-cwa-form-repeated",{"title":365,"path":366,"stem":367},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fform\u002Fuse-cwa-form-collection","5.nuxt-module\u002F06.composables\u002F3.form\u002F4.use-cwa-form-collection",{"title":369,"path":370,"stem":371,"children":372,"page":119},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F06.composables\u002F4.admin-manager",[373,377,381],{"title":374,"path":375,"stem":376},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F06.composables\u002F4.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":378,"path":379,"stem":380},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F06.composables\u002F4.admin-manager\u002F2.use-cwa-resource-model",{"title":382,"path":383,"stem":384},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F06.composables\u002F4.admin-manager\u002F3.use-cwa-resource-upload",{"title":386,"path":387,"stem":388,"children":389,"page":119},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F06.composables\u002F5.utilities",[390,394,398,402],{"title":391,"path":392,"stem":393},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F06.composables\u002F5.utilities\u002F1.use-cwa-resource-endpoint",{"title":395,"path":396,"stem":397},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F06.composables\u002F5.utilities\u002F2.use-query-bound-model",{"title":399,"path":400,"stem":401},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F06.composables\u002F5.utilities\u002F3.use-cwa-resource-route",{"title":271,"path":403,"stem":404},"\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-html-content","5.nuxt-module\u002F06.composables\u002F5.utilities\u002F4.use-html-content",{"title":406,"path":407,"stem":408,"children":409,"page":119},"Auth","\u002Fnuxt-module\u002Fcomposables\u002Fauth","5.nuxt-module\u002F06.composables\u002F6.auth",[410,414,418,422,426],{"title":411,"path":412,"stem":413},"Login","\u002Fnuxt-module\u002Fcomposables\u002Fauth\u002Fuse-login","5.nuxt-module\u002F06.composables\u002F6.auth\u002F1.use-login",{"title":415,"path":416,"stem":417},"Forgot Password","\u002Fnuxt-module\u002Fcomposables\u002Fauth\u002Fuse-forgot-password","5.nuxt-module\u002F06.composables\u002F6.auth\u002F2.use-forgot-password",{"title":419,"path":420,"stem":421},"Reset Password","\u002Fnuxt-module\u002Fcomposables\u002Fauth\u002Fuse-reset-password","5.nuxt-module\u002F06.composables\u002F6.auth\u002F3.use-reset-password",{"title":423,"path":424,"stem":425},"Verify Email","\u002Fnuxt-module\u002Fcomposables\u002Fauth\u002Fuse-verify-email","5.nuxt-module\u002F06.composables\u002F6.auth\u002F4.use-verify-email",{"title":427,"path":428,"stem":429},"Resend Verify Email","\u002Fnuxt-module\u002Fcomposables\u002Fauth\u002Fuse-resend-verify-email","5.nuxt-module\u002F06.composables\u002F6.auth\u002F5.use-resend-verify-email",{"title":431,"path":432,"stem":433,"children":434,"page":119},"Cwa Api","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F07.cwa-api",[435,438,442,446,449,452,456,460],{"title":23,"path":436,"stem":437},"\u002Fnuxt-module\u002Fcwa-api\u002Foverview","5.nuxt-module\u002F07.cwa-api\u002F1.overview",{"title":439,"path":440,"stem":441},"Resources","\u002Fnuxt-module\u002Fcwa-api\u002Fresources","5.nuxt-module\u002F07.cwa-api\u002F2.resources",{"title":443,"path":444,"stem":445},"Resources Manager","\u002Fnuxt-module\u002Fcwa-api\u002Fresources-manager","5.nuxt-module\u002F07.cwa-api\u002F3.resources-manager",{"title":406,"path":447,"stem":448},"\u002Fnuxt-module\u002Fcwa-api\u002Fauth","5.nuxt-module\u002F07.cwa-api\u002F4.auth",{"title":283,"path":450,"stem":451},"\u002Fnuxt-module\u002Fcwa-api\u002Fforms","5.nuxt-module\u002F07.cwa-api\u002F5.forms",{"title":453,"path":454,"stem":455},"Admin","\u002Fnuxt-module\u002Fcwa-api\u002Fadmin","5.nuxt-module\u002F07.cwa-api\u002F6.admin",{"title":457,"path":458,"stem":459},"Site Config","\u002Fnuxt-module\u002Fcwa-api\u002Fsite-config","5.nuxt-module\u002F07.cwa-api\u002F7.site-config",{"title":461,"path":462,"stem":463},"Orphaned Resources","\u002Fnuxt-module\u002Fcwa-api\u002Forphaned-resources","5.nuxt-module\u002F07.cwa-api\u002F8.orphaned-resources",{"title":108,"path":465,"stem":466},"\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F08.authentication",{"title":468,"path":469,"stem":470,"children":471,"page":119},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[472,475,479,483,487,491],{"title":23,"path":473,"stem":474},"\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":476,"path":477,"stem":478},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":480,"path":481,"stem":482},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":484,"path":485,"stem":486},"Styling","\u002Fnuxt-module\u002Fcwa-layer\u002Fstyling","5.nuxt-module\u002F9.cwa-layer\u002F4.styling",{"title":488,"path":489,"stem":490},"Date Pickers","\u002Fnuxt-module\u002Fcwa-layer\u002Fdate-pickers","5.nuxt-module\u002F9.cwa-layer\u002F5.date-pickers",{"title":492,"path":493,"stem":494},"Maintenance","\u002Fnuxt-module\u002Fcwa-layer\u002Fmaintenance","5.nuxt-module\u002F9.cwa-layer\u002F6.maintenance",{"title":496,"path":497,"stem":498},"PWA & Offline","\u002Fnuxt-module\u002Fpwa","5.nuxt-module\u002F91.pwa",{"title":500,"path":501,"stem":502},"Page Caching","\u002Fnuxt-module\u002Fpage-caching","5.nuxt-module\u002F92.page-caching",{"title":504,"path":505,"stem":506,"children":507},"Deploying a CWA Site","\u002Fdeployment","6.deployment\u002F0.index",[508,509,513,517,521,525,529,533,537,541,545,549],{"title":504,"path":505,"stem":506},{"title":510,"path":511,"stem":512},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":514,"path":515,"stem":516},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":518,"path":519,"stem":520},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"title":522,"path":523,"stem":524},"CI\u002FCD Variables","\u002Fdeployment\u002Fvariables","6.deployment\u002F4.variables",{"title":526,"path":527,"stem":528},"Cloudflare","\u002Fdeployment\u002Fcloudflare","6.deployment\u002F5.cloudflare",{"title":530,"path":531,"stem":532},"Origin Protection","\u002Fdeployment\u002Forigin-protection","6.deployment\u002F5.origin-protection",{"title":534,"path":535,"stem":536},"Load Testing","\u002Fdeployment\u002Fload-testing","6.deployment\u002F6.load-testing",{"title":538,"path":539,"stem":540},"Performance Audit","\u002Fdeployment\u002Fperformance-audit","6.deployment\u002F6.performance-audit",{"title":542,"path":543,"stem":544},"Reading Lighthouse Scores","\u002Fdeployment\u002Freading-lighthouse-scores","6.deployment\u002F6.reading-lighthouse-scores",{"title":546,"path":547,"stem":548},"Faster Functional Tests","\u002Fdeployment\u002Ffaster-functional-tests","6.deployment\u002F7.faster-functional-tests",{"title":550,"path":551,"stem":552},"Troubleshooting","\u002Fdeployment\u002Ftroubleshooting","6.deployment\u002F7.troubleshooting",{"id":554,"title":61,"badge":555,"body":556,"description":1008,"extension":1009,"links":555,"meta":1010,"navigation":1011,"path":62,"seo":1012,"stem":63,"__hash__":1013},"docs\u002F2.core-concepts\u002F9.glossary.md",null,{"type":557,"value":558,"toc":971},"minimark",[559,567,572,576,588,592,598,602,618,622,646,650,659,663,672,675,684,688,707,711,717,721,727,733,747,751,761,765,770,774,778,795,799,810,814,819,823,837,841,858,862,871,875,879,888,892,903,908,915,919,926,930,935,939,958,962],[560,561,562,563,566],"p",{},"Each term has a short definition and a link to the page that covers it. ",[564,565,15],"a",{"href":16}," explains the main ones in more words, for readers about to start the guides.",[568,569,571],"h2",{"id":570},"content-structure","Content structure",[573,574,316],"h3",{"id":575},"layout",[560,577,578,579,583,584,587],{},"The outer shell a page renders in: header, footer, navigation. A layout is a record in the database, and its Vue file is in ",[580,581,582],"code",{},"app\u002Fapp\u002Fcwa\u002Flayouts\u002F",". See ",[564,585,37],{"href":586},"\u002Fcore-concepts\u002Flayouts-and-pages#layouts",".",[573,589,591],{"id":590},"page","Page",[560,593,594,595,587],{},"A record that names a layout and a page template, and holds the page's component groups. A page usually has a route. See ",[564,596,37],{"href":597},"\u002Fcore-concepts\u002Flayouts-and-pages#pages",[573,599,601],{"id":600},"page-template","Page template",[560,603,604,605,608,609,613,614,587],{},"The Vue file a page renders through, in ",[580,606,607],{},"app\u002Fapp\u002Fcwa\u002Fpages\u002F",". It places the page's component groups. In the admin it's the ",[610,611,612],"strong",{},"Page UI",". Not the same as a ",[564,615,617],{"href":616},"#template-page","template page",[573,619,621],{"id":620},"template-page","Template page",[560,623,624,625,628,629,633,634,637,638,583,642,587],{},"A page record with ",[580,626,627],{},"isTemplate: true",". It has no route of its own: every ",[564,630,632],{"href":631},"#page-data","page data"," record of one type renders through it. In the admin it's a ",[610,635,636],{},"Dynamic"," page. Not the same as a ",[564,639,641],{"href":640},"#page-template","page template",[564,643,645],{"href":644},"\u002Fcore-concepts\u002Flayouts-and-pages#template-pages-istemplate-true","Layouts & Pages → Template Pages",[573,647,649],{"id":648},"page-data","Page data",[560,651,652,653,656,657,587],{},"A record for one item of repeating content, such as one blog article. It extends ",[580,654,655],{},"AbstractPageData",", has its own route and fields, and renders through a template page. See ",[564,658,41],{"href":42},[573,660,662],{"id":661},"route","Route",[560,664,665,666,669,670,587],{},"A record that maps a path, such as ",[580,667,668],{},"\u002Fabout-us",", to one page or page data record. A route can also redirect to another route, and can have a go-live date. See ",[564,671,167],{"href":168},[573,673,324],{"id":674},"component",[560,676,677,678,681,682,587],{},"One piece of content, such as a title, a quote or an image. A component type is a PHP entity that extends ",[580,679,680],{},"AbstractComponent",", plus a Vue file that displays it and admin tabs that edit it. See ",[564,683,45],{"href":46},[573,685,687],{"id":686},"component-group","Component group",[560,689,690,691,694,695,698,699,702,703,587],{},"A named region where editors add components, such as ",[580,692,693],{},"main"," or ",[580,696,697],{},"banner",". A layout, page or component owns it, and a Vue file declares it with ",[580,700,701],{},"\u003CCwaComponentGroup reference=\"main\">",". Also called a group or a region. See ",[564,704,705],{"href":293},[580,706,292],{},[573,708,710],{"id":709},"component-position","Component position",[560,712,713,714,587],{},"The slot that holds one component in a component group, and sets its order. Also called a position. The admin creates positions when an editor adds a component. See ",[564,715,33],{"href":716},"\u002Fcore-concepts\u002Fthe-data-model#componentposition",[573,718,720],{"id":719},"dynamic-position","Dynamic position",[560,722,723,724,587],{},"A component position bound to a page data property. It shows a different component on each page data record that shares the template page. See ",[564,725,41],{"href":726},"\u002Fcore-concepts\u002Fdynamic-pages#linking-a-pagedata-field-to-a-region",[573,728,730],{"id":729},"uicomponent",[580,731,732],{},"uiComponent",[560,734,735,736,739,740,583,743,587],{},"The field on a layout, page or component record that names the Vue file it renders through. A layout file ",[580,737,738],{},"landing.vue"," is stored as ",[580,741,742],{},"CwaLayoutLanding",[564,744,746],{"href":745},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts#how-uicomponent-names-resolve","How uiComponent names resolve",[573,748,750],{"id":749},"stranded-component-group","Stranded component group",[560,752,753,754,757,758,587],{},"A group still attached to a record after its ",[580,755,756],{},"reference"," was renamed in code, so visitors no longer see it. The admin bar offers to merge or delete it. See ",[564,759,492],{"href":760},"\u002Fnuxt-module\u002Fcwa-layer\u002Fmaintenance#stranded-component-groups",[573,762,764],{"id":763},"orphan","Orphan",[560,766,767,768,587],{},"A record that nothing uses: a component nothing displays, an empty position, or a group nothing owns. An orphaned file is a stored upload that no row references. The admin and console commands find and delete them. See ",[564,769,204],{"href":205},[568,771,773],{"id":772},"identifying-and-loading","Identifying and loading",[573,775,777],{"id":776},"iri","IRI",[560,779,780,781,694,784,787,788,790,791,587],{},"The path that identifies a record in the API, such as ",[580,782,783],{},"\u002F_\u002Fpages\u002F018e…",[580,785,786],{},"\u002Fcomponent\u002Ftitles\u002F018e…",". The module passes a record's IRI to its Vue file as the ",[580,789,776],{}," prop, and the API uses IRIs as cache tags. See ",[564,792,794],{"href":793},"\u002Fgetting-started\u002Fkey-ideas#how-records-are-identified","Key Ideas → IRI",[573,796,798],{"id":797},"manifest","Manifest",[560,800,801,802,805,806,587],{},"The resource manifest, ",[580,803,804],{},"GET \u002F_\u002Fresource_manifest\u002F{path}",", lists every resource a page renders, grouped by rendering depth. The module requests it alongside the route, so it can fetch the whole page at once. See ",[564,807,809],{"href":808},"\u002Fapi\u002Froutes#the-resource-manifest","Routes → The Resource Manifest",[573,811,813],{"id":812},"draft-and-published","Draft and published",[560,815,816,817,587],{},"A publishable component has two versions. Editors change the draft; visitors see the published version until an editor publishes it. See ",[564,818,49],{"href":50},[573,820,822],{"id":821},"edit-mode","Edit mode",[560,824,825,826,829,830,833,834,587],{},"What an editor turns on with ",[610,827,828],{},"Edit"," in the admin bar. Empty groups show a ",[610,831,832],{},"+",", and clicking a component selects it and opens the manager panel. See ",[564,835,53],{"href":836},"\u002Fcore-concepts\u002Fadmin-panel#edit-mode",[573,838,840],{"id":839},"layer","Layer",[560,842,843,846,847,850,851,854,855,587],{},[580,844,845],{},"@cwa\u002Fnuxt"," is installed as a Nuxt layer (",[580,848,849],{},"extends: ['@cwa\u002Fnuxt\u002Flayer']","). The layer adds the module, the sign-in pages and the ",[580,852,853],{},"\u002F_cwa"," admin pages. See ",[564,856,857],{"href":473},"The CWA Layer",[573,859,861],{"id":860},"scaffold","Scaffold",[560,863,864,865,868,869,587],{},"A fixture class that extends ",[580,866,867],{},"AbstractCwaScaffold"," and builds layouts, pages, routes and components in code. See ",[564,870,171],{"href":177},[568,872,874],{"id":873},"caching-and-deployment","Caching and deployment",[573,876,878],{"id":877},"souin","Souin",[560,880,881,882,885,886,587],{},"The HTTP cache inside Caddy, in the template's php container. It stores page HTML and ",[580,883,884],{},"\u002F_api"," responses, and drops them when the API purges their tags. See ",[564,887,57],{"href":58},[573,889,891],{"id":890},"cache-tag","Cache tag",[560,893,894,895,898,899,587],{},"A label on a cached response that lets it be purged. CWA tags each response with the IRIs of the resources in it, in the ",[580,896,897],{},"Surrogate-Key"," header. See ",[564,900,902],{"href":901},"\u002Fapi\u002Fhttp-caching#cache-tags-and-purging","HTTP Caching → Cache Tags and Purging",[573,904,906],{"id":905},"cwa-html",[580,907,905],{},[560,909,910,911,587],{},"The cache tag on every page that Nuxt renders. Purging it drops every cached page but keeps cached API responses. Saving site config and every deploy purge it. See ",[564,912,914],{"href":913},"\u002Fapi\u002Fhttp-caching#purging-every-rendered-page","Purging Every Rendered Page",[573,916,918],{"id":917},"purge","Purge",[560,920,921,922,587],{},"Removing cached responses by tag, so the next request gets a fresh copy. A full flush empties the whole cache. See ",[564,923,925],{"href":924},"\u002Fcore-concepts\u002Fcaching#purges","Caching → Purges",[573,927,929],{"id":928},"mercure","Mercure",[560,931,932,933,587],{},"The real-time hub, inside Caddy in the template. The API publishes every change to it, and each open browser applies the change without a reload. See ",[564,934,279],{"href":197},[573,936,938],{"id":937},"track","Track",[560,940,941,942,945,946,949,950,694,953,583,956,587],{},"A deploy target in the template's pipeline: ",[580,943,944],{},"stable"," (production), ",[580,947,948],{},"staging",", ",[580,951,952],{},"canary",[580,954,955],{},"review",[564,957,518],{"href":519},[568,959,961],{"id":960},"next-build-your-first-layout","Next: Build Your First Layout",[560,963,964,965,968,969,587],{},"The ",[564,966,967],{"href":65},"guides"," put these ideas to work. Start with ",[564,970,70],{"href":71},{"title":972,"searchDepth":973,"depth":973,"links":974},"",2,[975,991,999,1007],{"id":570,"depth":973,"text":571,"children":976},[977,979,980,981,982,983,984,985,986,987,988,989,990],{"id":575,"depth":978,"text":316},3,{"id":590,"depth":978,"text":591},{"id":600,"depth":978,"text":601},{"id":620,"depth":978,"text":621},{"id":648,"depth":978,"text":649},{"id":661,"depth":978,"text":662},{"id":674,"depth":978,"text":324},{"id":686,"depth":978,"text":687},{"id":709,"depth":978,"text":710},{"id":719,"depth":978,"text":720},{"id":729,"depth":978,"text":732},{"id":749,"depth":978,"text":750},{"id":763,"depth":978,"text":764},{"id":772,"depth":973,"text":773,"children":992},[993,994,995,996,997,998],{"id":776,"depth":978,"text":777},{"id":797,"depth":978,"text":798},{"id":812,"depth":978,"text":813},{"id":821,"depth":978,"text":822},{"id":839,"depth":978,"text":840},{"id":860,"depth":978,"text":861},{"id":873,"depth":973,"text":874,"children":1000},[1001,1002,1003,1004,1005,1006],{"id":877,"depth":978,"text":878},{"id":890,"depth":978,"text":891},{"id":905,"depth":978,"text":905},{"id":917,"depth":978,"text":918},{"id":928,"depth":978,"text":929},{"id":937,"depth":978,"text":938},{"id":960,"depth":973,"text":961},"Every CWA term used in these docs, defined once, from IRI and component position to manifest, track, Souin and orphan.","md",{},true,{"title":61,"description":1008},"ZsjiLWbmggq9G5m2KucJwSLMh7t0pcQXQ1CrVPV2pjs",[1015,1017],{"title":57,"path":58,"stem":59,"description":1016,"children":-1},"Every cache between a visitor and the API in a CWA site, from the service worker to Cloudflare, Souin and the API's cache tags. What each one stores, how long, and what clears it.",{"title":23,"path":65,"stem":66,"description":1018,"children":-1},"Step-by-step guides that build a small CWA site, from a layout to a dynamic page. Who they're for and the order to follow.",1791855268243]