[{"data":1,"prerenderedAt":892},["ShallowReactive",2],{"navigation":3,"\u002Fapi\u002Fcomponents\u002Fannotations\u002Fexplicit-allow-only":393,"\u002Fapi\u002Fcomponents\u002Fannotations\u002Fexplicit-allow-only-surround":887},[4,14,36,69,144,376],{"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,120,124,128,132,136,140],{"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,107],{"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,103],{"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},"Explicit Allow Only","\u002Fapi\u002Fcomponents\u002Fannotations\u002Fexplicit-allow-only","4.api\u002F2.components\u002F2.annotations\u002F4.explicit-allow-only",{"title":108,"path":109,"stem":110,"children":111,"page":35},"Built Ins","\u002Fapi\u002Fcomponents\u002Fbuilt-ins","4.api\u002F2.components\u002F3.built-ins",[112,116],{"title":113,"path":114,"stem":115},"Collection Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fcollection-component","4.api\u002F2.components\u002F3.built-ins\u002F1.collection-component",{"title":117,"path":118,"stem":119},"Form Component","\u002Fapi\u002Fcomponents\u002Fbuilt-ins\u002Fform-component","4.api\u002F2.components\u002F3.built-ins\u002F2.form-component",{"title":121,"path":122,"stem":123},"Dynamic & Nested Pages","\u002Fapi\u002Fdynamic-pages","4.api\u002F3.dynamic-pages",{"title":125,"path":126,"stem":127},"Users & Security","\u002Fapi\u002Fusers-and-security","4.api\u002F4.users-and-security",{"title":129,"path":130,"stem":131},"Data Fixtures","\u002Fapi\u002Fdata-fixtures","4.api\u002F5.data-fixtures",{"title":133,"path":134,"stem":135},"Configuration Reference","\u002Fapi\u002Fconfiguration","4.api\u002F6.configuration",{"title":137,"path":138,"stem":139},"Console Commands","\u002Fapi\u002Fconsole-commands","4.api\u002F7.console-commands",{"title":141,"path":142,"stem":143},"Debugging & Profiler","\u002Fapi\u002Fdebugging","4.api\u002F8.debugging",{"title":145,"path":146,"stem":147,"children":148,"page":35},"Nuxt Module","\u002Fnuxt-module","5.nuxt-module",[149,153,157,170,190,211,244,328,352,356],{"title":150,"path":151,"stem":152},"Module Setup","\u002Fnuxt-module\u002Fmodule-setup","5.nuxt-module\u002F1.module-setup",{"title":154,"path":155,"stem":156},"PWA & Offline","\u002Fnuxt-module\u002Fpwa","5.nuxt-module\u002F10.pwa",{"title":158,"path":159,"stem":160,"children":161,"page":35},"Configuration","\u002Fnuxt-module\u002Fconfiguration","5.nuxt-module\u002F2.configuration",[162,166],{"title":163,"path":164,"stem":165},"Nuxt Config","\u002Fnuxt-module\u002Fconfiguration\u002Fnuxt-config","5.nuxt-module\u002F2.configuration\u002F1.nuxt-config",{"title":167,"path":168,"stem":169},"Site Config & SEO","\u002Fnuxt-module\u002Fconfiguration\u002Fsite-config-and-seo","5.nuxt-module\u002F2.configuration\u002F2.site-config-and-seo",{"title":171,"path":172,"stem":173,"children":174,"page":35},"Building Your Ui","\u002Fnuxt-module\u002Fbuilding-your-ui","5.nuxt-module\u002F3.building-your-ui",[175,179,183,186],{"title":176,"path":177,"stem":178},"Layouts","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-layouts","5.nuxt-module\u002F3.building-your-ui\u002F1.creating-layouts",{"title":180,"path":181,"stem":182},"Page Templates","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-page-templates","5.nuxt-module\u002F3.building-your-ui\u002F2.creating-page-templates",{"title":83,"path":184,"stem":185},"\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcreating-components","5.nuxt-module\u002F3.building-your-ui\u002F3.creating-components",{"title":187,"path":188,"stem":189},"CLI Generator","\u002Fnuxt-module\u002Fbuilding-your-ui\u002Fcwa-cli","5.nuxt-module\u002F3.building-your-ui\u002F4.cwa-cli",{"title":191,"path":192,"stem":193,"children":194,"page":35},"Cwa Components","\u002Fnuxt-module\u002Fcwa-components","5.nuxt-module\u002F4.cwa-components",[195,199,203,207],{"title":196,"path":197,"stem":198},"\u003CCwaComponentGroup \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group","5.nuxt-module\u002F4.cwa-components\u002F1.cwa-component-group",{"title":200,"path":201,"stem":202},"\u003CCwaPage \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-page","5.nuxt-module\u002F4.cwa-components\u002F2.cwa-page",{"title":204,"path":205,"stem":206},"\u003CCwaLink \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-link","5.nuxt-module\u002F4.cwa-components\u002F3.cwa-link",{"title":208,"path":209,"stem":210},"\u003CCwaDefaultLayout \u002F>","\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-default-layout","5.nuxt-module\u002F4.cwa-components\u002F5.cwa-default-layout",{"title":212,"path":213,"stem":214,"children":215,"page":35},"Cwa Api","\u002Fnuxt-module\u002Fcwa-api","5.nuxt-module\u002F5.cwa-api",[216,220,224,228,232,236,240],{"title":217,"path":218,"stem":219},"Overview","\u002Fnuxt-module\u002Fcwa-api\u002Foverview","5.nuxt-module\u002F5.cwa-api\u002F1.overview",{"title":221,"path":222,"stem":223},"Resources","\u002Fnuxt-module\u002Fcwa-api\u002Fresources","5.nuxt-module\u002F5.cwa-api\u002F2.resources",{"title":225,"path":226,"stem":227},"Resources Manager","\u002Fnuxt-module\u002Fcwa-api\u002Fresources-manager","5.nuxt-module\u002F5.cwa-api\u002F3.resources-manager",{"title":229,"path":230,"stem":231},"Auth","\u002Fnuxt-module\u002Fcwa-api\u002Fauth","5.nuxt-module\u002F5.cwa-api\u002F4.auth",{"title":233,"path":234,"stem":235},"Forms","\u002Fnuxt-module\u002Fcwa-api\u002Fforms","5.nuxt-module\u002F5.cwa-api\u002F5.forms",{"title":237,"path":238,"stem":239},"Admin","\u002Fnuxt-module\u002Fcwa-api\u002Fadmin","5.nuxt-module\u002F5.cwa-api\u002F6.admin",{"title":241,"path":242,"stem":243},"Site Config","\u002Fnuxt-module\u002Fcwa-api\u002Fsite-config","5.nuxt-module\u002F5.cwa-api\u002F7.site-config",{"title":245,"path":246,"stem":247,"children":248,"page":35},"Composables","\u002Fnuxt-module\u002Fcomposables","5.nuxt-module\u002F6.composables",[249,257,294,311],{"title":250,"path":251,"stem":252,"children":253,"page":35},"Layout","\u002Fnuxt-module\u002Fcomposables\u002Flayout","5.nuxt-module\u002F6.composables\u002F0.layout",[254],{"title":250,"path":255,"stem":256},"\u002Fnuxt-module\u002Fcomposables\u002Flayout\u002Fuse-cwa-layout","5.nuxt-module\u002F6.composables\u002F0.layout\u002F1.use-cwa-layout",{"title":258,"path":259,"stem":260,"children":261,"page":35},"Component","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent","5.nuxt-module\u002F6.composables\u002F1.component",[262,266,270,274,278,282,286,290],{"title":263,"path":264,"stem":265},"Component (recommended)","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-component","5.nuxt-module\u002F6.composables\u002F1.component\u002F0.use-cwa-component",{"title":267,"path":268,"stem":269},"Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F1.use-cwa-resource",{"title":271,"path":272,"stem":273},"Collection Resource","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-collection-resource","5.nuxt-module\u002F6.composables\u002F1.component\u002F2.use-cwa-collection-resource",{"title":275,"path":276,"stem":277},"File Field","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-file-field","5.nuxt-module\u002F6.composables\u002F1.component\u002F3.use-cwa-file-field",{"title":279,"path":280,"stem":281},"Form","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form","5.nuxt-module\u002F6.composables\u002F1.component\u002F4.use-cwa-form",{"title":283,"path":284,"stem":285},"Form Input","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-input","5.nuxt-module\u002F6.composables\u002F1.component\u002F5.use-cwa-form-input",{"title":287,"path":288,"stem":289},"Form Repeated","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-repeated","5.nuxt-module\u002F6.composables\u002F1.component\u002F6.use-cwa-form-repeated",{"title":291,"path":292,"stem":293},"Form Collection","\u002Fnuxt-module\u002Fcomposables\u002Fcomponent\u002Fuse-cwa-form-collection","5.nuxt-module\u002F6.composables\u002F1.component\u002F7.use-cwa-form-collection",{"title":295,"path":296,"stem":297,"children":298,"page":35},"Admin Manager","\u002Fnuxt-module\u002Fcomposables\u002Fadmin-manager","5.nuxt-module\u002F6.composables\u002F2.admin-manager",[299,303,307],{"title":300,"path":301,"stem":302},"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":304,"path":305,"stem":306},"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":308,"path":309,"stem":310},"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":312,"path":313,"stem":314,"children":315,"page":35},"Utilities","\u002Fnuxt-module\u002Fcomposables\u002Futilities","5.nuxt-module\u002F6.composables\u002F3.utilities",[316,320,324],{"title":317,"path":318,"stem":319},"Resource Endpoint","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-endpoint","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F1.use-cwa-resource-endpoint",{"title":321,"path":322,"stem":323},"Query Model","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-query-bound-model","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F2.use-query-bound-model",{"title":325,"path":326,"stem":327},"Resource Route","\u002Fnuxt-module\u002Fcomposables\u002Futilities\u002Fuse-cwa-resource-route","5.nuxt-module\u002F6.composables\u002F3.utilities\u002F3.use-cwa-resource-route",{"title":329,"path":330,"stem":331,"children":332,"page":35},"Component Helpers","\u002Fnuxt-module\u002Fcomponent-helpers","5.nuxt-module\u002F7.component-helpers",[333,337,341,345,349],{"title":334,"path":335,"stem":336},"Images & Media","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fimages-and-uploads","5.nuxt-module\u002F7.component-helpers\u002F1.images-and-uploads",{"title":338,"path":339,"stem":340},"Collections & Pagination","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fcollections-and-pagination","5.nuxt-module\u002F7.component-helpers\u002F2.collections-and-pagination",{"title":342,"path":343,"stem":344},"HTML Content","\u002Fnuxt-module\u002Fcomponent-helpers\u002Fhtml-content","5.nuxt-module\u002F7.component-helpers\u002F3.html-content",{"title":346,"path":347,"stem":348},"Real-Time Updates","\u002Fnuxt-module\u002Fcomponent-helpers\u002Freal-time-updates","5.nuxt-module\u002F7.component-helpers\u002F4.real-time-updates",{"title":233,"path":350,"stem":351},"\u002Fnuxt-module\u002Fcomponent-helpers\u002Fforms","5.nuxt-module\u002F7.component-helpers\u002F5.forms",{"title":353,"path":354,"stem":355},"Authentication","\u002Fnuxt-module\u002Fauthentication","5.nuxt-module\u002F8.authentication",{"title":357,"path":358,"stem":359,"children":360,"page":35},"Cwa Layer","\u002Fnuxt-module\u002Fcwa-layer","5.nuxt-module\u002F9.cwa-layer",[361,364,368,372],{"title":217,"path":362,"stem":363},"\u002Fnuxt-module\u002Fcwa-layer\u002Foverview","5.nuxt-module\u002F9.cwa-layer\u002F1.overview",{"title":365,"path":366,"stem":367},"Auth Pages","\u002Fnuxt-module\u002Fcwa-layer\u002Fauth-pages","5.nuxt-module\u002F9.cwa-layer\u002F2.auth-pages",{"title":369,"path":370,"stem":371},"Admin Panel","\u002Fnuxt-module\u002Fcwa-layer\u002Fadmin-panel","5.nuxt-module\u002F9.cwa-layer\u002F3.admin-panel",{"title":373,"path":374,"stem":375},"Styling","\u002Fnuxt-module\u002Fcwa-layer\u002Fstyling","5.nuxt-module\u002F9.cwa-layer\u002F4.styling",{"title":377,"path":378,"stem":379,"children":380,"page":35},"Deployment","\u002Fdeployment","6.deployment",[381,385,389],{"title":382,"path":383,"stem":384},"Docker","\u002Fdeployment\u002Fdocker","6.deployment\u002F1.docker",{"title":386,"path":387,"stem":388},"Kubernetes & Helm","\u002Fdeployment\u002Fkubernetes","6.deployment\u002F2.kubernetes",{"title":390,"path":391,"stem":392},"CI\u002FCD","\u002Fdeployment\u002Fci-cd","6.deployment\u002F3.ci-cd",{"id":394,"title":104,"badge":395,"body":398,"description":880,"extension":881,"links":882,"meta":883,"navigation":884,"path":105,"seo":885,"stem":106,"__hash__":886},"docs\u002F4.api\u002F2.components\u002F2.annotations\u002F4.explicit-allow-only.md",{"label":396,"color":397},"Draft","amber",{"type":399,"value":400,"toc":874},"minimark",[401,425,428,433,436,592,596,599,627,634,638,656,752,767,771,782,856,870],[402,403,404,408,409,413,414,417,418,420,421,424],"p",{},[405,406,407],"code",{},"#[Silverback\\ExplicitAllowOnly]"," marks a component ",[410,411,412],"strong",{},"type"," as opt-in. By default a component group with no ",[405,415,416],{},"allowedComponents"," restriction accepts every type; a type flagged with this attribute is the exception — it may only be placed in a group whose ",[405,419,416],{}," ",[410,422,423],{},"explicitly lists it",". Everywhere else it is hidden from the admin and rejected on save.",[402,426,427],{},"Use it for components that should never appear by accident — structural or layout-only pieces (a section divider, a grid cell, a slot that only makes sense inside one specific parent).",[429,430,432],"h2",{"id":431},"setup","Setup",[402,434,435],{},"Add the attribute to the component entity. No trait or extra properties are required:",[437,438,443],"pre",{"className":439,"code":440,"language":441,"meta":442,"style":442},"language-php shiki shiki-themes github-light github-dark material-theme-palenight","use Silverback\\ApiComponentsBundle\\Annotation as Silverback;\nuse Silverback\\ApiComponentsBundle\\Entity\\Core\\AbstractComponent;\n\n#[Silverback\\ExplicitAllowOnly]\n#[ORM\\Entity]\n#[ApiResource]\nclass SectionDivider extends AbstractComponent\n{\n    \u002F\u002F ...\n}\n","php","",[405,444,445,480,508,515,533,547,557,573,579,586],{"__ignoreMap":442},[446,447,450,454,458,462,465,467,470,473,476],"span",{"class":448,"line":449},"line",1,[446,451,453],{"class":452},"stmX-","use",[446,455,457],{"class":456},"sc2zw"," Silverback",[446,459,461],{"class":460},"sBtbT","\\",[446,463,464],{"class":456},"ApiComponentsBundle",[446,466,461],{"class":460},[446,468,469],{"class":456},"Annotation",[446,471,472],{"class":452}," as",[446,474,457],{"class":475},"sRCss",[446,477,479],{"class":478},"sOvfz",";\n",[446,481,483,485,487,489,491,493,496,498,501,503,506],{"class":448,"line":482},2,[446,484,453],{"class":452},[446,486,457],{"class":456},[446,488,461],{"class":460},[446,490,464],{"class":456},[446,492,461],{"class":460},[446,494,495],{"class":456},"Entity",[446,497,461],{"class":460},[446,499,500],{"class":456},"Core",[446,502,461],{"class":460},[446,504,505],{"class":456},"AbstractComponent",[446,507,479],{"class":478},[446,509,511],{"class":448,"line":510},3,[446,512,514],{"emptyLinePlaceholder":513},true,"\n",[446,516,518,522,525,527,530],{"class":448,"line":517},4,[446,519,521],{"class":520},"sPB8G","#[",[446,523,524],{"class":456},"Silverback",[446,526,461],{"class":460},[446,528,529],{"class":456},"ExplicitAllowOnly",[446,531,532],{"class":520},"]\n",[446,534,536,538,541,543,545],{"class":448,"line":535},5,[446,537,521],{"class":520},[446,539,540],{"class":456},"ORM",[446,542,461],{"class":460},[446,544,495],{"class":456},[446,546,532],{"class":520},[446,548,550,552,555],{"class":448,"line":549},6,[446,551,521],{"class":520},[446,553,554],{"class":456},"ApiResource",[446,556,532],{"class":520},[446,558,560,564,567,570],{"class":448,"line":559},7,[446,561,563],{"class":562},"swB56","class",[446,565,566],{"class":475}," SectionDivider",[446,568,569],{"class":562}," extends",[446,571,572],{"class":475}," AbstractComponent\n",[446,574,576],{"class":448,"line":575},8,[446,577,578],{"class":478},"{\n",[446,580,582],{"class":448,"line":581},9,[446,583,585],{"class":584},"sTBSN","    \u002F\u002F ...\n",[446,587,589],{"class":448,"line":588},10,[446,590,591],{"class":478},"}\n",[429,593,595],{"id":594},"how-its-enforced","How It's Enforced",[402,597,598],{},"Once a type is flagged, it becomes opt-in in every placement path:",[600,601,602,609],"ul",{},[603,604,605,608],"li",{},[410,606,607],{},"Hidden in the admin"," — it does not appear in the \"Add Component\" dialog for any group that doesn't list it.",[603,610,611,614,615,618,619,622,623,626],{},[410,612,613],{},"Rejected on save"," — a ",[405,616,617],{},"ComponentPosition"," pointing at it, in a group that doesn't allow it, fails validation. This applies to ",[410,620,621],{},"both"," directly placed components ",[410,624,625],{},"and"," dynamic page-data positions, so the dynamic path can't be used to bypass the rule.",[628,629,631],"callout",{"icon":630},"i-heroicons-shield-check",[402,632,633],{},"Enforcement is server-side, so the rule holds regardless of the client. The admin UI simply reads the same flag to filter the type out of the add dialog early.",[429,635,637],{"id":636},"allowing-the-type-in-a-group","Allowing the Type in a Group",[402,639,640,641,643,644,646,647,650,651,655],{},"To use the component, add its collection IRI to the target group's ",[405,642,416],{},". A group whose ",[405,645,416],{}," is ",[405,648,649],{},"null"," still allows all ",[652,653,654],"em",{},"non-flagged"," types — but a flagged type must always be named explicitly.",[437,657,659],{"className":439,"code":658,"language":441,"meta":442,"style":442},"\u002F\u002F Fixtures — list the flagged type in the group's allow list\n$cwa->layout('primary', 'Primary')\n    ->group('structure', [App\\Entity\\SectionDivider::class]);\n",[405,660,661,666,709],{"__ignoreMap":442},[446,662,663],{"class":448,"line":449},[446,664,665],{"class":584},"\u002F\u002F Fixtures — list the flagged type in the group's allow list\n",[446,667,668,671,674,678,682,685,689,693,695,698,701,704,706],{"class":448,"line":482},[446,669,670],{"class":478},"$",[446,672,673],{"class":520},"cwa",[446,675,677],{"class":676},"sVlFx","->",[446,679,681],{"class":680},"sKpYG","layout",[446,683,684],{"class":478},"(",[446,686,688],{"class":687},"seSrl","'",[446,690,692],{"class":691},"sLL54","primary",[446,694,688],{"class":687},[446,696,697],{"class":478},",",[446,699,700],{"class":687}," '",[446,702,703],{"class":691},"Primary",[446,705,688],{"class":687},[446,707,708],{"class":478},")\n",[446,710,711,714,717,719,721,724,726,728,731,734,736,738,740,744,747,749],{"class":448,"line":510},[446,712,713],{"class":676},"    ->",[446,715,716],{"class":680},"group",[446,718,684],{"class":478},[446,720,688],{"class":687},[446,722,723],{"class":691},"structure",[446,725,688],{"class":687},[446,727,697],{"class":478},[446,729,730],{"class":478}," [",[446,732,733],{"class":456},"App",[446,735,461],{"class":460},[446,737,495],{"class":456},[446,739,461],{"class":460},[446,741,743],{"class":742},"sbW4m","SectionDivider",[446,745,746],{"class":676},"::",[446,748,563],{"class":452},[446,750,751],{"class":478},"]);\n",[402,753,754,755,763,764,766],{},"See ",[756,757,759,762],"a",{"href":758},"\u002Fnuxt-module\u002Fcwa-components\u002Fcwa-component-group#allowed-components",[405,760,761],{},"\u003CCwaComponentGroup>"," → Allowed Components"," for the Vue-prop, REST, and fixture ways to set ",[405,765,416],{},".",[429,768,770],{"id":769},"the-hydra-flag","The Hydra Flag",[402,772,773,774,777,778,781],{},"The attribute is surfaced to clients as a bare ",[405,775,776],{},"explicitAllowOnly: true"," boolean on the component's ",[405,779,780],{},"supportedClass"," entry in the Hydra API documentation. This is how the admin UI knows to treat the type as opt-in without any extra configuration.",[437,783,787],{"className":784,"code":785,"language":786,"meta":442,"style":442},"language-json shiki shiki-themes github-light github-dark material-theme-palenight","{\n  \"@type\": \"hydra:Class\",\n  \"title\": \"SectionDivider\",\n  \"explicitAllowOnly\": true\n}\n","json",[405,788,789,793,819,838,852],{"__ignoreMap":442},[446,790,791],{"class":448,"line":449},[446,792,578],{"class":478},[446,794,795,798,802,805,808,811,814,816],{"class":448,"line":482},[446,796,797],{"class":460},"  \"",[446,799,801],{"class":800},"sphPO","@type",[446,803,804],{"class":460},"\"",[446,806,807],{"class":478},":",[446,809,810],{"class":687}," \"",[446,812,813],{"class":691},"hydra:Class",[446,815,804],{"class":687},[446,817,818],{"class":478},",\n",[446,820,821,823,826,828,830,832,834,836],{"class":448,"line":510},[446,822,797],{"class":460},[446,824,825],{"class":800},"title",[446,827,804],{"class":460},[446,829,807],{"class":478},[446,831,810],{"class":687},[446,833,743],{"class":691},[446,835,804],{"class":687},[446,837,818],{"class":478},[446,839,840,842,845,847,849],{"class":448,"line":517},[446,841,797],{"class":460},[446,843,844],{"class":800},"explicitAllowOnly",[446,846,804],{"class":460},[446,848,807],{"class":478},[446,850,851],{"class":460}," true\n",[446,853,854],{"class":448,"line":535},[446,855,591],{"class":478},[402,857,858,859,861,862,865,866,869],{},"The flag is matched against the un-prefixed ",[405,860,825],{}," key (the class short name), and it is ",[410,863,864],{},"absent"," rather than ",[405,867,868],{},"false"," on unflagged types — which is how the Nuxt module reads it.",[871,872,873],"style",{},"html pre.shiki code .stmX-, html code.shiki .stmX-{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F78C6C}html pre.shiki code .sc2zw, html code.shiki .sc2zw{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sBtbT, html code.shiki .sBtbT{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}html pre.shiki code .sRCss, html code.shiki .sRCss{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .sOvfz, html code.shiki .sOvfz{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}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 .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 .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 .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 .sbW4m, html code.shiki .sbW4m{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}html pre.shiki code .sphPO, html code.shiki .sphPO{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#C792EA}",{"title":442,"searchDepth":482,"depth":482,"links":875},[876,877,878,879],{"id":431,"depth":482,"text":432},{"id":594,"depth":482,"text":595},{"id":636,"depth":482,"text":637},{"id":769,"depth":482,"text":770},"Make a component type opt-in — placeable only in component groups whose allowedComponents explicitly list it.","md",null,{},{"title":104},{"title":104,"description":880},"5BFPvxWikJDHCvrk53YsGvgp0P7C0OPHNEfqKgC_SJI",[888,890],{"title":100,"path":101,"stem":102,"description":889,"children":-1},"Automatically record created and modified timestamps on any component or page data entity.",{"title":113,"path":114,"stem":115,"description":891,"children":-1},"The built-in Collection resource for rendering paginated lists of other API resources as a CWA component.",1786542478444]