[{"data":1,"prerenderedAt":1161},["ShallowReactive",2],{"navigation":3,"\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel":342,"\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel-surround":1156},[4,14,36,69,140,325],{"title":5,"path":6,"stem":7,"children":8},"Introduction","\u002Fgetting-started","1.getting-started\u002F1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":15,"path":16,"stem":17,"children":18,"page":35},"Guides","\u002Fguides","2.guides",[19,23,27,31],{"title":20,"path":21,"stem":22},"Your First Layout","\u002Fguides\u002Fyour-first-layout","2.guides\u002F1.your-first-layout",{"title":24,"path":25,"stem":26},"Your First Page Template","\u002Fguides\u002Fyour-first-page-template","2.guides\u002F2.your-first-page-template",{"title":28,"path":29,"stem":30},"Your First Component","\u002Fguides\u002Fyour-first-component","2.guides\u002F3.your-first-component",{"title":32,"path":33,"stem":34},"Alternative UI Variants","\u002Fguides\u002Falternative-ui-variants","2.guides\u002F4.alternative-ui-variants",false,{"title":37,"path":38,"stem":39,"children":40,"page":35},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[41,45,49,53,57,61,65],{"title":42,"path":43,"stem":44},"How It All Works","\u002Fcore-concepts\u002Farchitecture","3.core-concepts\u002F1.architecture",{"title":46,"path":47,"stem":48},"The Data Model","\u002Fcore-concepts\u002Fthe-data-model","3.core-concepts\u002F2.the-data-model",{"title":50,"path":51,"stem":52},"Layouts & Pages","\u002Fcore-concepts\u002Flayouts-and-pages","3.core-concepts\u002F3.layouts-and-pages",{"title":54,"path":55,"stem":56},"Dynamic Pages","\u002Fcore-concepts\u002Fdynamic-pages","3.core-concepts\u002F4.dynamic-pages",{"title":58,"path":59,"stem":60},"Components","\u002Fcore-concepts\u002Fcomponents","3.core-concepts\u002F5.components",{"title":62,"path":63,"stem":64},"Draft & Publish Workflow","\u002Fcore-concepts\u002Fdraft-and-publish","3.core-concepts\u002F6.draft-and-publish",{"title":66,"path":67,"stem":68},"The Admin Panel","\u002Fcore-concepts\u002Fadmin-panel","3.core-concepts\u002F7.admin-panel",{"title":70,"path":71,"stem":72,"children":73,"page":35},"Api","\u002Fapi","4.api",[74,78,116,120,124,128,132,136],{"title":75,"path":76,"stem":77},"Bundle Setup","\u002Fapi\u002Fbundle-setup","4.api\u002F1.bundle-setup",{"title":58,"path":79,"stem":80,"children":81,"page":35},"\u002Fapi\u002Fcomponents","4.api\u002F2.components",[82,86,103],{"title":83,"path":84,"stem":85},"Creating Components","\u002Fapi\u002Fcomponents\u002Fcreating-components","4.api\u002F2.components\u002F1.creating-components",{"title":87,"path":88,"stem":89,"children":90,"page":35},"Annotations","\u002Fapi\u002Fcomponents\u002Fannotations","4.api\u002F2.components\u002F2.annotations",[91,95,99],{"title":92,"path":93,"stem":94},"Publishable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fpublishable","4.api\u002F2.components\u002F2.annotations\u002F1.publishable",{"title":96,"path":97,"stem":98},"Uploadable","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fuploadable","4.api\u002F2.components\u002F2.annotations\u002F2.uploadable",{"title":100,"path":101,"stem":102},"Timestamped","\u002Fapi\u002Fcomponents\u002Fannotations\u002Ftimestamped","4.api\u002F2.components\u002F2.annotations\u002F3.timestamped",{"title":104,"path":105,"stem":106,"children":107,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[108,112],{"title":109,"path":110,"stem":111},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":113,"path":114,"stem":115},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":117,"path":118,"stem":119},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":121,"path":122,"stem":123},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":125,"path":126,"stem":127},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":129,"path":130,"stem":131},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":133,"path":134,"stem":135},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":137,"path":138,"stem":139},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":141,"path":142,"stem":143,"children":144,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[145,149,162,178,203,207,279,304,308],{"title":146,"path":147,"stem":148},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":150,"path":151,"stem":152,"children":153,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[154,158],{"title":155,"path":156,"stem":157},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":159,"path":160,"stem":161},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":163,"path":164,"stem":165,"children":166,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[167,171,175],{"title":168,"path":169,"stem":170},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":172,"path":173,"stem":174},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":176,"stem":177},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":179,"path":180,"stem":181,"children":182,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[183,187,191,195,199],{"title":184,"path":185,"stem":186},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":188,"path":189,"stem":190},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":192,"path":193,"stem":194},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":196,"path":197,"stem":198},"\u003CCwaImage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-image","5.nuxt-module\u002F4.cwa-components\u002F4.cwa-image",{"title":200,"path":201,"stem":202},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":204,"path":205,"stem":206},"The useCwa() API","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",{"title":208,"path":209,"stem":210,"children":211,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[212,245,262],{"title":213,"path":214,"stem":215,"children":216,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[217,221,225,229,233,237,241],{"title":218,"path":219,"stem":220},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":222,"path":223,"stem":224},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":226,"path":227,"stem":228},"Image Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-image-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-image-resource",{"title":230,"path":231,"stem":232},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":234,"path":235,"stem":236},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":238,"path":239,"stem":240},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":242,"path":243,"stem":244},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":246,"path":247,"stem":248,"children":249,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[250,254,258],{"title":251,"path":252,"stem":253},"Manager Tab","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-manager-tab","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F1.use-cwa-resource-manager-tab",{"title":255,"path":256,"stem":257},"Resource Model","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-model","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F2.use-cwa-resource-model",{"title":259,"path":260,"stem":261},"Resource Upload","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager\u002Fuse-cwa-resource-upload","5.nuxt-module\u002F6.composables\u002F2.admin-manager\u002F3.use-cwa-resource-upload",{"title":263,"path":264,"stem":265,"children":266,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[267,271,275],{"title":268,"path":269,"stem":270},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":272,"path":273,"stem":274},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":276,"path":277,"stem":278},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":280,"path":281,"stem":282,"children":283,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[284,288,292,296,300],{"title":285,"path":286,"stem":287},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":289,"path":290,"stem":291},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":293,"path":294,"stem":295},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":297,"path":298,"stem":299},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":301,"path":302,"stem":303},"Forms","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":305,"path":306,"stem":307},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":309,"path":310,"stem":311,"children":312,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[313,317,321],{"title":314,"path":315,"stem":316},"Overview","\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":318,"path":319,"stem":320},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":322,"path":323,"stem":324},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":326,"path":327,"stem":328,"children":329,"page":35},"Deployment","\u002Fdeployment","6.deployment",[330,334,338],{"title":331,"path":332,"stem":333},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":335,"path":336,"stem":337},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":339,"path":340,"stem":341},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":343,"title":322,"badge":344,"body":347,"description":1150,"extension":1151,"links":1152,"meta":1153,"navigation":546,"path":323,"seo":1154,"stem":324,"__hash__":1155},"docs\u002F5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel.md",{"label":345,"color":346},"Draft","amber",{"type":348,"value":349,"toc":1140},"minimark",[350,363,368,487,496,500,507,594,601,605,611,616,626,997,1004,1011,1100,1104,1107,1110,1136],[351,352,353,354,358,359,362],"p",{},"The CWA admin panel is shipped as part of the layer and requires no setup. It becomes accessible at ",[355,356,357],"code",{},"\u002F_cwa"," for any user with ",[355,360,361],{},"ROLE_ADMIN",".",[364,365,367],"h2",{"id":366},"admin-routes","Admin Routes",[369,370,371,384],"table",{},[372,373,374],"thead",{},[375,376,377,381],"tr",{},[378,379,380],"th",{},"Route",[378,382,383],{},"Purpose",[385,386,387,397,407,417,427,437,447,457,467,477],"tbody",{},[375,388,389,394],{},[390,391,392],"td",{},[355,393,357],{},[390,395,396],{},"Dashboard",[375,398,399,404],{},[390,400,401],{},[355,402,403],{},"\u002F_cwa\u002Fpages",[390,405,406],{},"Browse, create, and edit page records",[375,408,409,414],{},[390,410,411],{},[355,412,413],{},"\u002F_cwa\u002Flayouts",[390,415,416],{},"Browse and edit layout records",[375,418,419,424],{},[390,420,421],{},[355,422,423],{},"\u002F_cwa\u002Froutes",[390,425,426],{},"Manage routes — path, name, publish state",[375,428,429,434],{},[390,430,431],{},[355,432,433],{},"\u002F_cwa\u002Fdata",[390,435,436],{},"Browse any resource by type; drill into individual records",[375,438,439,444],{},[390,440,441],{},[355,442,443],{},"\u002F_cwa\u002Fdata\u002F[type]",[390,445,446],{},"List view for a specific resource type",[375,448,449,454],{},[390,450,451],{},[355,452,453],{},"\u002F_cwa\u002Fdata\u002F[type]\u002F[iri]",[390,455,456],{},"Edit view for a single resource",[375,458,459,464],{},[390,460,461],{},[355,462,463],{},"\u002F_cwa\u002Fsettings",[390,465,466],{},"Site config, SEO settings, maintenance mode, robots",[375,468,469,474],{},[390,470,471],{},[355,472,473],{},"\u002F_cwa\u002Fusers",[390,475,476],{},"List and manage user accounts",[375,478,479,484],{},[390,480,481],{},[355,482,483],{},"\u002F_cwa\u002Fusers\u002F[iri]",[390,485,486],{},"Edit an individual user",[351,488,489,490,492,493,362],{},"All ",[355,491,357],{}," routes are client-only (SSR disabled) and guarded by ",[355,494,495],{},"middleware: 'admin'",[364,497,499],{"id":498},"edit-mode","Edit Mode",[351,501,502,503,506],{},"When an admin visits a content page, an edit bar appears at the top of the page (rendered by ",[355,504,505],{},"\u003CCwaAdminHeader>","). Clicking \"Edit\" toggles edit mode:",[508,509,514],"pre",{"className":510,"code":511,"language":512,"meta":513,"style":513},"language-ts shiki shiki-themes github-light github-dark material-theme-palenight","const cwa = useCwa()\n\ncwa.admin.isEditing.value        \u002F\u002F whether edit mode is active\ncwa.admin.toggleEdit()           \u002F\u002F open\u002Fclose edit mode\n","ts","",[355,515,516,541,548,574],{"__ignoreMap":513},[517,518,521,525,529,533,537],"span",{"class":519,"line":520},"line",1,[517,522,524],{"class":523},"swB56","const",[517,526,528],{"class":527},"sc2zw"," cwa",[517,530,532],{"class":531},"sVlFx"," =",[517,534,536],{"class":535},"sKpYG"," useCwa",[517,538,540],{"class":539},"sPB8G","()\n",[517,542,544],{"class":519,"line":543},2,[517,545,547],{"emptyLinePlaceholder":546},true,"\n",[517,549,551,554,557,560,562,565,567,570],{"class":519,"line":550},3,[517,552,553],{"class":539},"cwa",[517,555,362],{"class":556},"sOvfz",[517,558,559],{"class":539},"admin",[517,561,362],{"class":556},[517,563,564],{"class":539},"isEditing",[517,566,362],{"class":556},[517,568,569],{"class":539},"value        ",[517,571,573],{"class":572},"sTBSN","\u002F\u002F whether edit mode is active\n",[517,575,577,579,581,583,585,588,591],{"class":519,"line":576},4,[517,578,553],{"class":539},[517,580,362],{"class":556},[517,582,559],{"class":539},[517,584,362],{"class":556},[517,586,587],{"class":535},"toggleEdit",[517,589,590],{"class":539},"()           ",[517,592,593],{"class":572},"\u002F\u002F open\u002Fclose edit mode\n",[351,595,596,597,600],{},"In edit mode, every rendered component gains a selection overlay. Clicking a component opens its resource manager panel (",[355,598,599],{},"\u003CCwaAdminResourceManager>",").",[364,602,604],{"id":603},"the-resource-manager","The Resource Manager",[351,606,607,608,362],{},"The resource manager is a panel that slides in when a component is selected. It shows tabs for editing the component's data fields. The standard tabs are provided by the bundle (e.g. general fields, styles). Custom tabs are added using ",[355,609,610],{},"useCwaResourceManagerTab",[612,613,615],"h3",{"id":614},"custom-manager-tab","Custom Manager Tab",[351,617,618,619,622,623,625],{},"Create a Vue component in ",[355,620,621],{},"app\u002Fcwa\u002Fcomponents\u002F[ComponentName]\u002Fadmin\u002F[TabName].vue",". Use ",[355,624,610],{}," to register it:",[508,627,631],{"className":628,"code":629,"language":630,"meta":513,"style":513},"language-vue shiki shiki-themes github-light github-dark material-theme-palenight","\u003C!-- app\u002Fcwa\u002Fcomponents\u002FTitle\u002Fadmin\u002FSEO.vue -->\n\u003Ctemplate>\n    \u003Cdiv class=\"p-4 space-y-4\">\n        \u003CCwaUiFormInput\n            v-model=\"metaTitleModel\"\n            label=\"Meta Title\"\n            placeholder=\"Override page title for search engines\"\n        \u002F>\n    \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup lang=\"ts\">\nimport { toRef } from 'vue'\nimport type { IriProp } from '@cwa\u002Fnuxt\u002Fruntime\u002Fcomposables'\nimport { useCwaResourceManagerTab, useCwaResourceModel } from '#imports'\n\nconst props = defineProps\u003CIriProp>()\n\nuseCwaResourceManagerTab({ name: 'SEO', order: 10 })\n\nconst metaTitleModel = useCwaResourceModel(toRef(props, 'iri'), 'metaTitle')\n\u003C\u002Fscript>\n","vue",[355,632,633,638,650,677,685,701,716,731,737,747,757,762,786,813,837,864,869,893,898,940,945,988],{"__ignoreMap":513},[517,634,635],{"class":519,"line":520},[517,636,637],{"class":572},"\u003C!-- app\u002Fcwa\u002Fcomponents\u002FTitle\u002Fadmin\u002FSEO.vue -->\n",[517,639,640,643,647],{"class":519,"line":543},[517,641,642],{"class":556},"\u003C",[517,644,646],{"class":645},"s-h7I","template",[517,648,649],{"class":556},">\n",[517,651,652,655,658,662,665,669,673,675],{"class":519,"line":550},[517,653,654],{"class":556},"    \u003C",[517,656,657],{"class":645},"div",[517,659,661],{"class":660},"sGtlX"," class",[517,663,664],{"class":556},"=",[517,666,668],{"class":667},"seSrl","\"",[517,670,672],{"class":671},"sLL54","p-4 space-y-4",[517,674,668],{"class":667},[517,676,649],{"class":556},[517,678,679,682],{"class":519,"line":576},[517,680,681],{"class":556},"        \u003C",[517,683,684],{"class":645},"CwaUiFormInput\n",[517,686,688,691,693,695,698],{"class":519,"line":687},5,[517,689,690],{"class":660},"            v-model",[517,692,664],{"class":556},[517,694,668],{"class":667},[517,696,697],{"class":671},"metaTitleModel",[517,699,700],{"class":667},"\"\n",[517,702,704,707,709,711,714],{"class":519,"line":703},6,[517,705,706],{"class":660},"            label",[517,708,664],{"class":556},[517,710,668],{"class":667},[517,712,713],{"class":671},"Meta Title",[517,715,700],{"class":667},[517,717,719,722,724,726,729],{"class":519,"line":718},7,[517,720,721],{"class":660},"            placeholder",[517,723,664],{"class":556},[517,725,668],{"class":667},[517,727,728],{"class":671},"Override page title for search engines",[517,730,700],{"class":667},[517,732,734],{"class":519,"line":733},8,[517,735,736],{"class":556},"        \u002F>\n",[517,738,740,743,745],{"class":519,"line":739},9,[517,741,742],{"class":556},"    \u003C\u002F",[517,744,657],{"class":645},[517,746,649],{"class":556},[517,748,750,753,755],{"class":519,"line":749},10,[517,751,752],{"class":556},"\u003C\u002F",[517,754,646],{"class":645},[517,756,649],{"class":556},[517,758,760],{"class":519,"line":759},11,[517,761,547],{"emptyLinePlaceholder":546},[517,763,765,767,770,773,776,778,780,782,784],{"class":519,"line":764},12,[517,766,642],{"class":556},[517,768,769],{"class":645},"script",[517,771,772],{"class":660}," setup",[517,774,775],{"class":660}," lang",[517,777,664],{"class":556},[517,779,668],{"class":667},[517,781,512],{"class":671},[517,783,668],{"class":667},[517,785,649],{"class":556},[517,787,789,793,796,799,802,805,808,810],{"class":519,"line":788},13,[517,790,792],{"class":791},"sm4w6","import",[517,794,795],{"class":556}," {",[517,797,798],{"class":539}," toRef",[517,800,801],{"class":556}," }",[517,803,804],{"class":791}," from",[517,806,807],{"class":667}," '",[517,809,630],{"class":671},[517,811,812],{"class":667},"'\n",[517,814,816,818,821,823,826,828,830,832,835],{"class":519,"line":815},14,[517,817,792],{"class":791},[517,819,820],{"class":791}," type",[517,822,795],{"class":556},[517,824,825],{"class":539}," IriProp",[517,827,801],{"class":556},[517,829,804],{"class":791},[517,831,807],{"class":667},[517,833,834],{"class":671},"@cwa\u002Fnuxt\u002Fruntime\u002Fcomposables",[517,836,812],{"class":667},[517,838,840,842,844,847,850,853,855,857,859,862],{"class":519,"line":839},15,[517,841,792],{"class":791},[517,843,795],{"class":556},[517,845,846],{"class":539}," useCwaResourceManagerTab",[517,848,849],{"class":556},",",[517,851,852],{"class":539}," useCwaResourceModel",[517,854,801],{"class":556},[517,856,804],{"class":791},[517,858,807],{"class":667},[517,860,861],{"class":671},"#imports",[517,863,812],{"class":667},[517,865,867],{"class":519,"line":866},16,[517,868,547],{"emptyLinePlaceholder":546},[517,870,872,874,877,879,882,884,888,891],{"class":519,"line":871},17,[517,873,524],{"class":523},[517,875,876],{"class":527}," props",[517,878,532],{"class":531},[517,880,881],{"class":535}," defineProps",[517,883,642],{"class":556},[517,885,887],{"class":886},"sRCss","IriProp",[517,889,890],{"class":556},">",[517,892,540],{"class":539},[517,894,896],{"class":519,"line":895},18,[517,897,547],{"emptyLinePlaceholder":546},[517,899,901,903,906,909,913,916,918,921,924,926,929,931,935,937],{"class":519,"line":900},19,[517,902,610],{"class":535},[517,904,905],{"class":539},"(",[517,907,908],{"class":556},"{",[517,910,912],{"class":911},"sDHlG"," name",[517,914,915],{"class":556},":",[517,917,807],{"class":667},[517,919,920],{"class":671},"SEO",[517,922,923],{"class":667},"'",[517,925,849],{"class":556},[517,927,928],{"class":911}," order",[517,930,915],{"class":556},[517,932,934],{"class":933},"scSvc"," 10",[517,936,801],{"class":556},[517,938,939],{"class":539},")\n",[517,941,943],{"class":519,"line":942},20,[517,944,547],{"emptyLinePlaceholder":546},[517,946,948,950,953,955,957,959,962,965,967,969,972,974,977,979,981,984,986],{"class":519,"line":947},21,[517,949,524],{"class":523},[517,951,952],{"class":527}," metaTitleModel",[517,954,532],{"class":531},[517,956,852],{"class":535},[517,958,905],{"class":539},[517,960,961],{"class":535},"toRef",[517,963,964],{"class":539},"(props",[517,966,849],{"class":556},[517,968,807],{"class":667},[517,970,971],{"class":671},"iri",[517,973,923],{"class":667},[517,975,976],{"class":539},")",[517,978,849],{"class":556},[517,980,807],{"class":667},[517,982,983],{"class":671},"metaTitle",[517,985,923],{"class":667},[517,987,939],{"class":539},[517,989,991,993,995],{"class":519,"line":990},22,[517,992,752],{"class":556},[517,994,769],{"class":645},[517,996,649],{"class":556},[351,998,999,1000,1003],{},"The tab appears in the resource manager whenever a ",[355,1001,1002],{},"Title"," component is selected.",[364,1005,1007,1010],{"id":1006},"cwaadmin-api",[355,1008,1009],{},"cwa.admin"," API",[369,1012,1013,1026],{},[372,1014,1015],{},[375,1016,1017,1020,1023],{},[378,1018,1019],{},"Member",[378,1021,1022],{},"Type",[378,1024,1025],{},"Description",[385,1027,1028,1042,1057,1072,1086],{},[375,1029,1030,1034,1039],{},[390,1031,1032],{},[355,1033,564],{},[390,1035,1036],{},[355,1037,1038],{},"ComputedRef\u003Cboolean>",[390,1040,1041],{},"Whether edit mode is active",[375,1043,1044,1049,1054],{},[390,1045,1046],{},[355,1047,1048],{},"toggleEdit(state?)",[390,1050,1051],{},[355,1052,1053],{},"(boolean?) => void",[390,1055,1056],{},"Toggle or set edit mode",[375,1058,1059,1064,1069],{},[390,1060,1061],{},[355,1062,1063],{},"emptyStack()",[390,1065,1066],{},[355,1067,1068],{},"() => void",[390,1070,1071],{},"Deselect the current component",[375,1073,1074,1079,1083],{},[390,1075,1076],{},[355,1077,1078],{},"emitRedraw()",[390,1080,1081],{},[355,1082,1068],{},[390,1084,1085],{},"Force re-render of all component overlays",[375,1087,1088,1093,1097],{},[390,1089,1090],{},[355,1091,1092],{},"navigationDisabled",[390,1094,1095],{},[355,1096,1038],{},[390,1098,1099],{},"Whether the navigation guard is blocking",[364,1101,1103],{"id":1102},"navigation-guard","Navigation Guard",[351,1105,1106],{},"When a component has unsaved changes, the admin navigation guard blocks route changes and shows a confirmation dialog. It runs automatically — you don't configure it.",[351,1108,1109],{},"To disable the guard programmatically (e.g. after a save):",[508,1111,1113],{"className":510,"code":1112,"language":512,"meta":513,"style":513},"cwa.admin.setNavigationGuardDisabled(true)\n",[355,1114,1115],{"__ignoreMap":513},[517,1116,1117,1119,1121,1123,1125,1128,1130,1134],{"class":519,"line":520},[517,1118,553],{"class":539},[517,1120,362],{"class":556},[517,1122,559],{"class":539},[517,1124,362],{"class":556},[517,1126,1127],{"class":535},"setNavigationGuardDisabled",[517,1129,905],{"class":539},[517,1131,1133],{"class":1132},"swWMF","true",[517,1135,939],{"class":539},[1137,1138,1139],"style",{},"html pre.shiki code .swB56, html code.shiki .swB56{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sc2zw, html code.shiki .sc2zw{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sVlFx, html code.shiki .sVlFx{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .sKpYG, html code.shiki .sKpYG{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .sPB8G, html code.shiki .sPB8G{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html 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 .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 .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 .sRCss, html code.shiki .sRCss{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .sDHlG, html code.shiki .sDHlG{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#F07178}html pre.shiki code .scSvc, html code.shiki .scSvc{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#F78C6C}html pre.shiki code .swWMF, html code.shiki .swWMF{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#FF9CAC}",{"title":513,"searchDepth":543,"depth":543,"links":1141},[1142,1143,1144,1147,1149],{"id":366,"depth":543,"text":367},{"id":498,"depth":543,"text":499},{"id":603,"depth":543,"text":604,"children":1145},[1146],{"id":614,"depth":550,"text":615},{"id":1006,"depth":543,"text":1148},"cwa.admin API",{"id":1102,"depth":543,"text":1103},"The built-in CWA admin — pages, edit mode, the resource manager, and how to extend it with custom manager tabs.","md",null,{},{"title":322,"description":1150},"TeJ6MkUW8b0aZWzyCJh9dz9ccgrvkwI_E6jiufUQsdQ",[1157,1159],{"title":318,"path":319,"stem":320,"description":1158,"children":-1},"The auth pages the CWA layer provides automatically, their composables, and how to override each one with your own design.",{"title":331,"path":332,"stem":333,"description":1160,"children":-1},"The Docker Compose setup for local development and production — services, environment variables, volumes, and build workflow.",1782241285394]