[{"data":1,"prerenderedAt":6525},["ShallowReactive",2],{"navigation_docs":3,"-apps-app-development-content-collections":2169,"-apps-app-development-content-collections-surround":6520},[4,140,553,581,697,909,1840,1948,1953,1958,2017,2127],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","0.getting-started/0.index",[9,10,14,18,56,85,119,136],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Starting new project","/getting-started/starting-new-project","0.getting-started/1.starting-new-project",{"title":15,"path":16,"stem":17},"What is Laioutr?","/getting-started/what-is-laioutr","0.getting-started/2.what-is-laioutr",{"title":19,"path":20,"stem":21,"children":22,"page":55},"Key Concepts","/getting-started/key-concepts","0.getting-started/3.key-concepts",[23,27,31,35,39,43,47,51],{"title":24,"path":25,"stem":26},"Architecture","/getting-started/key-concepts/architecture","0.getting-started/3.key-concepts/1.architecture",{"title":28,"path":29,"stem":30},"Data Model","/getting-started/key-concepts/data-model","0.getting-started/3.key-concepts/2.data-model",{"title":32,"path":33,"stem":34},"Internationalization","/getting-started/key-concepts/5.internationalization","0.getting-started/3.key-concepts/3.5.internationalization",{"title":36,"path":37,"stem":38},"Data Flow","/getting-started/key-concepts/data-flow","0.getting-started/3.key-concepts/3.data-flow",{"title":40,"path":41,"stem":42},"Extensibility","/getting-started/key-concepts/extensibility","0.getting-started/3.key-concepts/4.extensibility",{"title":44,"path":45,"stem":46},"Philosophy","/getting-started/key-concepts/philosophy","0.getting-started/3.key-concepts/5.philosophy",{"title":48,"path":49,"stem":50},"CI/CD Pipeline","/getting-started/key-concepts/ci-cd-pipeline","0.getting-started/3.key-concepts/6.ci-cd-pipeline",{"title":52,"path":53,"stem":54},"Multi-tenancy","/getting-started/key-concepts/multi-tenancy","0.getting-started/3.key-concepts/multi-tenancy",false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Next Steps","/getting-started/next-steps","0.getting-started/4.next-steps",[61,65,69,73,77,81],{"title":62,"path":63,"stem":64},"Create Organization and Project","/getting-started/next-steps/create-org-and-project","0.getting-started/4.next-steps/0.create-org-and-project",{"title":66,"path":67,"stem":68},"First Project Configuration","/getting-started/next-steps/first-project-config","0.getting-started/4.next-steps/1.first-project-config",{"title":70,"path":71,"stem":72},"Setup Local Development Environment","/getting-started/next-steps/local-setup","0.getting-started/4.next-steps/3.local-setup",{"title":74,"path":75,"stem":76},"Troubleshooting Local Setup","/getting-started/next-steps/local-setup-troubleshooting","0.getting-started/4.next-steps/4.local-setup-troubleshooting",{"title":78,"path":79,"stem":80},"Create your first custom app","/getting-started/next-steps/create-custom-app","0.getting-started/4.next-steps/5.create-custom-app",{"title":82,"path":83,"stem":84},"CLI","/getting-started/next-steps/cli","0.getting-started/4.next-steps/6.cli",{"title":86,"path":87,"stem":88,"children":89},"Changelogs","/getting-started/changelogs","0.getting-started/5.Changelogs/0.index",[90,91,95,99,103,107,111,115],{"title":86,"path":87,"stem":88},{"title":92,"path":93,"stem":94},"Canonical Types Changelog","/getting-started/changelogs/canonical-types-changelog","0.getting-started/5.Changelogs/canonical-types-changelog",{"title":96,"path":97,"stem":98},"CLI Changelog","/getting-started/changelogs/cli-changelog","0.getting-started/5.Changelogs/cli-changelog",{"title":100,"path":101,"stem":102},"Cockpit Changelog","/getting-started/changelogs/cockpit-changelog","0.getting-started/5.Changelogs/cockpit-changelog",{"title":104,"path":105,"stem":106},"Figma Kit Changelog","/getting-started/changelogs/figma-kit-changelog","0.getting-started/5.Changelogs/figma-kit-changelog",{"title":108,"path":109,"stem":110},"Frontend Changelog","/getting-started/changelogs/frontend-changelog","0.getting-started/5.Changelogs/frontend-changelog",{"title":112,"path":113,"stem":114},"Orchestr Changelog","/getting-started/changelogs/orchestr-changelog","0.getting-started/5.Changelogs/orchestr-changelog",{"title":116,"path":117,"stem":118},"UI Changelog","/getting-started/changelogs/ui-changelog","0.getting-started/5.Changelogs/ui-changelog",{"title":120,"path":121,"stem":122,"children":123,"page":55},"Hints And Tips","/getting-started/hints-and-tips","0.getting-started/6.Hints-and-Tips",[124,128,132],{"title":125,"path":126,"stem":127},"Introduction","/getting-started/hints-and-tips/introduction","0.getting-started/6.Hints-and-Tips/0.introduction",{"title":129,"path":130,"stem":131},"Developer tools","/getting-started/hints-and-tips/developer-tools","0.getting-started/6.Hints-and-Tips/1.developer-tools",{"title":133,"path":134,"stem":135},"Claude Code plugin","/getting-started/hints-and-tips/claude-marketplace","0.getting-started/6.Hints-and-Tips/2.claude-marketplace",{"title":137,"path":138,"stem":139},"Documentation MCP Server","/getting-started/documentation-mcp-server","0.getting-started/7.documentation-mcp-server",{"title":141,"path":142,"stem":143,"children":144},"Frontend","/frontend","1.Frontend/0.index",[145,146,157,227,253,331],{"title":141,"path":142,"stem":143},{"title":125,"path":147,"stem":148,"children":149,"page":55},"/frontend/introduction","1.Frontend/1.Introduction",[150,153],{"title":19,"path":151,"stem":152},"/frontend/introduction/key-concepts","1.Frontend/1.Introduction/0.key-concepts",{"title":154,"path":155,"stem":156},"Tech Stack","/frontend/introduction/tech-stack","1.Frontend/1.Introduction/1.tech-stack",{"title":158,"path":159,"stem":160,"children":161},"Features","/frontend/features","1.Frontend/2.Features/0.index",[162,163,167,171,175,179,183,187,191,195,199,203,207,211,215,219,223],{"title":158,"path":159,"stem":160},{"title":164,"path":165,"stem":166},"Bot Protection","/frontend/features/bot-protection","1.Frontend/2.Features/bot-protection",{"title":168,"path":169,"stem":170},"Consent Management","/frontend/features/consent-management","1.Frontend/2.Features/consent-management",{"title":172,"path":173,"stem":174},"Content Preview","/frontend/features/content-preview","1.Frontend/2.Features/content-preview",{"title":176,"path":177,"stem":178},"Currencies","/frontend/features/currencies","1.Frontend/2.Features/currencies",{"title":180,"path":181,"stem":182},"Environments & Staging","/frontend/features/environments","1.Frontend/2.Features/environments",{"title":184,"path":185,"stem":186},"Hooks","/frontend/features/hooks","1.Frontend/2.Features/hooks",{"title":188,"path":189,"stem":190},"Media and Media Library","/frontend/features/media","1.Frontend/2.Features/media",{"title":192,"path":193,"stem":194},"Multi-language Support","/frontend/features/multi-language-support","1.Frontend/2.Features/multi-language-support",{"title":196,"path":197,"stem":198},"Multi-market","/frontend/features/multi-market","1.Frontend/2.Features/multi-market",{"title":200,"path":201,"stem":202},"Page Types","/frontend/features/pagetypes","1.Frontend/2.Features/pagetypes",{"title":204,"path":205,"stem":206},"PWA","/frontend/features/pwa","1.Frontend/2.Features/pwa",{"title":208,"path":209,"stem":210},"Redirects","/frontend/features/redirects","1.Frontend/2.Features/redirects",{"title":212,"path":213,"stem":214},"Routing","/frontend/features/routing","1.Frontend/2.Features/routing",{"title":216,"path":217,"stem":218},"Server-Side Rendering (SSR) and Caching","/frontend/features/ssr-and-caching","1.Frontend/2.Features/ssr-and-caching",{"title":220,"path":221,"stem":222},"Tracking","/frontend/features/tracking","1.Frontend/2.Features/tracking",{"title":224,"path":225,"stem":226},"Z-Ordering","/frontend/features/z-ordering","1.Frontend/2.Features/z-ordering",{"title":228,"path":229,"stem":230,"children":231},"SEO","/frontend/seo","1.Frontend/3.SEO/0.index",[232,233,237,241,245,249],{"title":228,"path":229,"stem":230},{"title":234,"path":235,"stem":236},"Link Checker","/frontend/seo/link-checker","1.Frontend/3.SEO/link-checker",{"title":238,"path":239,"stem":240},"OG Image","/frontend/seo/og-image","1.Frontend/3.SEO/og-image",{"title":242,"path":243,"stem":244},"Robots.txt","/frontend/seo/robots-txt","1.Frontend/3.SEO/robots-txt",{"title":246,"path":247,"stem":248},"Schema.org","/frontend/seo/schema-org","1.Frontend/3.SEO/schema-org",{"title":250,"path":251,"stem":252},"Sitemap","/frontend/seo/sitemap","1.Frontend/3.SEO/sitemap",{"title":254,"path":255,"stem":256,"children":257},"Backend for Frontend","/frontend/orchestr","1.Frontend/4.Orchestr/0.index",[258,259,285,289,293,297,301,305,309,313,317,323,327],{"title":254,"path":255,"stem":256},{"title":260,"path":261,"stem":262,"children":263},"Recipes","/frontend/orchestr/recipes","1.Frontend/4.Orchestr/99.recipes/0.index",[264,265,269,273,277,281],{"title":260,"path":261,"stem":262},{"title":266,"path":267,"stem":268},"Analytics components from query handlers","/frontend/orchestr/recipes/analytics-from-query-handlers","1.Frontend/4.Orchestr/99.recipes/analytics-from-query-handlers",{"title":270,"path":271,"stem":272},"Identity cookies (cart and visitor IDs)","/frontend/orchestr/recipes/identity-cookies","1.Frontend/4.Orchestr/99.recipes/identity-cookies",{"title":274,"path":275,"stem":276},"System bootstrap in extendRequest","/frontend/orchestr/recipes/system-bootstrap","1.Frontend/4.Orchestr/99.recipes/system-bootstrap",{"title":278,"path":279,"stem":280},"Translating vendor errors","/frontend/orchestr/recipes/translating-vendor-errors","1.Frontend/4.Orchestr/99.recipes/translating-vendor-errors",{"title":282,"path":283,"stem":284},"Userland cache patterns","/frontend/orchestr/recipes/userland-cache-patterns","1.Frontend/4.Orchestr/99.recipes/userland-cache-patterns",{"title":286,"path":287,"stem":288},"Actions","/frontend/orchestr/actions","1.Frontend/4.Orchestr/Actions",{"title":290,"path":291,"stem":292},"Caching","/frontend/orchestr/caching","1.Frontend/4.Orchestr/Caching",{"title":294,"path":295,"stem":296},"Store Devtools","/frontend/orchestr/devtools","1.Frontend/4.Orchestr/Devtools",{"title":298,"path":299,"stem":300},"Middleware","/frontend/orchestr/middleware","1.Frontend/4.Orchestr/Middleware",{"title":302,"path":303,"stem":304},"Queries & Links","/frontend/orchestr/queries","1.Frontend/4.Orchestr/Queries",{"title":306,"path":307,"stem":308},"Client Environment","/frontend/orchestr/client-env","1.Frontend/4.Orchestr/client-env",{"title":310,"path":311,"stem":312},"Component Resolvers","/frontend/orchestr/component-resolvers","1.Frontend/4.Orchestr/component-resolvers",{"title":314,"path":315,"stem":316},"Filters","/frontend/orchestr/filters","1.Frontend/4.Orchestr/filters",{"title":318,"path":319,"stem":320,"children":321},"Page Index","/frontend/orchestr/page-index","1.Frontend/4.Orchestr/page-index",[322],{"title":318,"path":319,"stem":320},{"title":324,"path":325,"stem":326},"URL Query Parameters","/frontend/orchestr/url-query-params","1.Frontend/4.Orchestr/url-query-params",{"title":328,"path":329,"stem":330},"Orchestr Wire Format","/frontend/orchestr/wire-format","1.Frontend/4.Orchestr/wire-format",{"title":332,"path":333,"stem":334,"children":335},"API Reference","/frontend/api-reference","1.Frontend/99.api-reference/0.index",[336,337,455,458,492,508,516,527,535,542],{"title":332,"path":333,"stem":334},{"title":338,"path":339,"stem":340,"children":341},"Entities","/frontend/api-reference/entities","1.Frontend/99.api-reference/01.entities/0.index",[342,343,347,351,355,359,363,367,371,375,379,383,387,391,395,399,403,407,411,415,419,423,427,431,435,439,443,447,451],{"title":338,"path":339,"stem":340},{"title":344,"path":345,"stem":346},"Product","/frontend/api-reference/entities/product","1.Frontend/99.api-reference/01.entities/1.product",{"title":348,"path":349,"stem":350},"SuggestedSearch","/frontend/api-reference/entities/suggested-search","1.Frontend/99.api-reference/01.entities/10.suggested-search",{"title":352,"path":353,"stem":354},"SuggestedSearchEntry","/frontend/api-reference/entities/suggested-search-entry","1.Frontend/99.api-reference/01.entities/11.suggested-search-entry",{"title":356,"path":357,"stem":358},"BlogCollection","/frontend/api-reference/entities/blog-collection","1.Frontend/99.api-reference/01.entities/12.blog-collection",{"title":360,"path":361,"stem":362},"Comment","/frontend/api-reference/entities/comment","1.Frontend/99.api-reference/01.entities/13.comment",{"title":364,"path":365,"stem":366},"Location","/frontend/api-reference/entities/location","1.Frontend/99.api-reference/01.entities/14.location",{"title":368,"path":369,"stem":370},"Glossary","/frontend/api-reference/entities/glossary","1.Frontend/99.api-reference/01.entities/15.glossary",{"title":372,"path":373,"stem":374},"Product List","/frontend/api-reference/entities/product-list","1.Frontend/99.api-reference/01.entities/16.product-list",{"title":376,"path":377,"stem":378},"Product List Item","/frontend/api-reference/entities/product-list-item","1.Frontend/99.api-reference/01.entities/17.product-list-item",{"title":380,"path":381,"stem":382},"Organization","/frontend/api-reference/entities/organization","1.Frontend/99.api-reference/01.entities/18.organization",{"title":384,"path":385,"stem":386},"Employee","/frontend/api-reference/entities/employee","1.Frontend/99.api-reference/01.entities/19.employee",{"title":388,"path":389,"stem":390},"ProductVariant","/frontend/api-reference/entities/product-variant","1.Frontend/99.api-reference/01.entities/2.product-variant",{"title":392,"path":393,"stem":394},"Cost Center","/frontend/api-reference/entities/cost-center","1.Frontend/99.api-reference/01.entities/20.cost-center",{"title":396,"path":397,"stem":398},"Budget","/frontend/api-reference/entities/budget","1.Frontend/99.api-reference/01.entities/21.budget",{"title":400,"path":401,"stem":402},"Quote","/frontend/api-reference/entities/quote","1.Frontend/99.api-reference/01.entities/22.quote",{"title":404,"path":405,"stem":406},"Quote Item","/frontend/api-reference/entities/quote-item","1.Frontend/99.api-reference/01.entities/23.quote-item",{"title":408,"path":409,"stem":410},"Approval Flow","/frontend/api-reference/entities/approval-flow","1.Frontend/99.api-reference/01.entities/24.approval-flow",{"title":412,"path":413,"stem":414},"Approval Rule","/frontend/api-reference/entities/approval-rule","1.Frontend/99.api-reference/01.entities/25.approval-rule",{"title":416,"path":417,"stem":418},"Fee","/frontend/api-reference/entities/fee","1.Frontend/99.api-reference/01.entities/26.fee",{"title":420,"path":421,"stem":422},"Stock Location","/frontend/api-reference/entities/stock-location","1.Frontend/99.api-reference/01.entities/27.stock-location",{"title":424,"path":425,"stem":426},"Stock Level","/frontend/api-reference/entities/stock-level","1.Frontend/99.api-reference/01.entities/28.stock-level",{"title":428,"path":429,"stem":430},"Category","/frontend/api-reference/entities/category","1.Frontend/99.api-reference/01.entities/3.category",{"title":432,"path":433,"stem":434},"Cart","/frontend/api-reference/entities/cart","1.Frontend/99.api-reference/01.entities/4.cart",{"title":436,"path":437,"stem":438},"CartItem","/frontend/api-reference/entities/cart-item","1.Frontend/99.api-reference/01.entities/5.cart-item",{"title":440,"path":441,"stem":442},"Review","/frontend/api-reference/entities/review","1.Frontend/99.api-reference/01.entities/6.review",{"title":444,"path":445,"stem":446},"BreadcrumbItem","/frontend/api-reference/entities/breadcrumb-item","1.Frontend/99.api-reference/01.entities/7.breadcrumb-item",{"title":448,"path":449,"stem":450},"MenuItem","/frontend/api-reference/entities/menu-item","1.Frontend/99.api-reference/01.entities/8.menu-item",{"title":452,"path":453,"stem":454},"BlogPost","/frontend/api-reference/entities/blog-post","1.Frontend/99.api-reference/01.entities/9.blog-post",{"title":200,"path":456,"stem":457},"/frontend/api-reference/page-types","1.Frontend/99.api-reference/02.page-types",{"title":459,"path":460,"stem":461,"children":462},"Common Types","/frontend/api-reference/common-types","1.Frontend/99.api-reference/03.common-types/0.index",[463,464,468,472,476,480,484,488],{"title":459,"path":460,"stem":461},{"title":465,"path":466,"stem":467},"Link","/frontend/api-reference/common-types/link","1.Frontend/99.api-reference/03.common-types/1.link",{"title":469,"path":470,"stem":471},"Media","/frontend/api-reference/common-types/media","1.Frontend/99.api-reference/03.common-types/2.media",{"title":473,"path":474,"stem":475},"Money","/frontend/api-reference/common-types/money","1.Frontend/99.api-reference/03.common-types/3.money",{"title":477,"path":478,"stem":479},"UnitPrice","/frontend/api-reference/common-types/unit-price","1.Frontend/99.api-reference/03.common-types/4.unit-price",{"title":481,"path":482,"stem":483},"Measurement","/frontend/api-reference/common-types/measurement","1.Frontend/99.api-reference/03.common-types/5.measurement",{"title":485,"path":486,"stem":487},"Opening Hours","/frontend/api-reference/common-types/opening-hours","1.Frontend/99.api-reference/03.common-types/6.opening-hours",{"title":489,"path":490,"stem":491},"Commerce Value Types","/frontend/api-reference/common-types/commerce-values","1.Frontend/99.api-reference/03.common-types/7.commerce-values",{"title":493,"path":494,"stem":495,"children":496,"page":55},"Ecommerce","/frontend/api-reference/ecommerce","1.Frontend/99.api-reference/10.ecommerce",[497,500,504],{"title":286,"path":498,"stem":499},"/frontend/api-reference/ecommerce/actions","1.Frontend/99.api-reference/10.ecommerce/1.actions",{"title":501,"path":502,"stem":503},"Queries","/frontend/api-reference/ecommerce/queries","1.Frontend/99.api-reference/10.ecommerce/2.queries",{"title":505,"path":506,"stem":507},"Errors","/frontend/api-reference/ecommerce/errors","1.Frontend/99.api-reference/10.ecommerce/3.errors",{"title":509,"path":510,"stem":511,"children":512,"page":55},"Newsletter","/frontend/api-reference/newsletter","1.Frontend/99.api-reference/11.newsletter",[513],{"title":286,"path":514,"stem":515},"/frontend/api-reference/newsletter/actions","1.Frontend/99.api-reference/11.newsletter/1.actions",{"title":517,"path":518,"stem":519,"children":520,"page":55},"Blog","/frontend/api-reference/blog","1.Frontend/99.api-reference/12.blog",[521,524],{"title":501,"path":522,"stem":523},"/frontend/api-reference/blog/queries","1.Frontend/99.api-reference/12.blog/1.queries",{"title":505,"path":525,"stem":526},"/frontend/api-reference/blog/errors","1.Frontend/99.api-reference/12.blog/2.errors",{"title":528,"path":529,"stem":530,"children":531,"page":55},"Suggested Search","/frontend/api-reference/suggested-search","1.Frontend/99.api-reference/13.suggested-search",[532],{"title":501,"path":533,"stem":534},"/frontend/api-reference/suggested-search/queries","1.Frontend/99.api-reference/13.suggested-search/1.queries",{"title":364,"path":536,"stem":537,"children":538,"page":55},"/frontend/api-reference/location","1.Frontend/99.api-reference/15.location",[539],{"title":501,"path":540,"stem":541},"/frontend/api-reference/location/queries","1.Frontend/99.api-reference/15.location/1.queries",{"title":543,"path":544,"stem":545,"children":546,"page":55},"B2b","/frontend/api-reference/b2b","1.Frontend/99.api-reference/16.b2b",[547,550],{"title":286,"path":548,"stem":549},"/frontend/api-reference/b2b/actions","1.Frontend/99.api-reference/16.b2b/1.actions",{"title":505,"path":551,"stem":552},"/frontend/api-reference/b2b/errors","1.Frontend/99.api-reference/16.b2b/2.errors",{"title":554,"path":555,"stem":556,"children":557},"Agent API","/agent-api","10.Agent-API/0.index",[558,559],{"title":554,"path":555,"stem":556},{"title":560,"path":561,"stem":562,"children":563},"Laioutr MCP","/agent-api/laioutr-mcp","10.Agent-API/1.Laioutr-MCP/0.index",[564,565,569,573,577],{"title":560,"path":561,"stem":562},{"title":566,"path":567,"stem":568},"Connecting to Laioutr MCP","/agent-api/laioutr-mcp/connecting-to-laioutr-mcp","10.Agent-API/1.Laioutr-MCP/1.connecting-to-laioutr-mcp",{"title":570,"path":571,"stem":572},"Supported tools","/agent-api/laioutr-mcp/supported-tools","10.Agent-API/1.Laioutr-MCP/2.supported-tools",{"title":574,"path":575,"stem":576},"Security best practices","/agent-api/laioutr-mcp/security-best-practices","10.Agent-API/1.Laioutr-MCP/3.security-best-practices",{"title":578,"path":579,"stem":580},"Integrating your own MCP client","/agent-api/laioutr-mcp/integrating-your-own-mcp-client","10.Agent-API/1.Laioutr-MCP/4.integrating-your-own-mcp-client",{"title":582,"path":583,"stem":584,"children":585},"Offering","/offering","11.Offering/0.index",[586,587,622,635,648,682,691],{"title":582,"path":583,"stem":584},{"title":588,"path":589,"stem":590,"children":591},"Products","/offering/products","11.Offering/1.Products/0.index",[592,593,598,604,610,616],{"title":588,"path":589,"stem":590},{"title":141,"path":594,"stem":595,"children":596},"/offering/products/frontend","11.Offering/1.Products/1.Frontend/0.index",[597],{"title":141,"path":594,"stem":595},{"title":599,"path":600,"stem":601,"children":602},"Cockpit","/offering/products/cockpit","11.Offering/1.Products/2.Cockpit/0.index",[603],{"title":599,"path":600,"stem":601},{"title":605,"path":606,"stem":607,"children":608},"Checkout","/offering/products/checkout","11.Offering/1.Products/3.Checkout/0.index",[609],{"title":605,"path":606,"stem":607},{"title":611,"path":612,"stem":613,"children":614},"Cloud","/offering/products/cloud","11.Offering/1.Products/4.cloud/0.index",[615],{"title":611,"path":612,"stem":613},{"title":617,"path":618,"stem":619,"children":620},"Larry AI","/offering/products/larry-ai","11.Offering/1.Products/5.larry-ai/0.index",[621],{"title":617,"path":618,"stem":619},{"title":623,"path":624,"stem":625,"children":626,"page":55},"Service Level Agreement","/offering/service-level-agreement","11.Offering/2.service-level-agreement",[627,631],{"title":628,"path":629,"stem":630},"Standard Service Level Agreement Composable Frontend","/offering/service-level-agreement/standard-service-level-agreement","11.Offering/2.service-level-agreement/1.standard-service-level-agreement",{"title":632,"path":633,"stem":634},"Backups","/offering/service-level-agreement/backups","11.Offering/2.service-level-agreement/backups",{"title":636,"path":637,"stem":638,"children":639,"page":55},"Customer Support","/offering/customer-support","11.Offering/3.customer-support",[640,644],{"title":641,"path":642,"stem":643},"Standard Customer Support","/offering/customer-support/standard-customer-support","11.Offering/3.customer-support/1.standard-customer-support",{"title":645,"path":646,"stem":647},"Customer Support Severity Levels of Laioutr products","/offering/customer-support/maximum-serverity-levels","11.Offering/3.customer-support/maximum-serverity-levels",{"title":649,"path":650,"stem":651,"children":652},"Trust Center","/offering/trust-center","11.Offering/4.trust-center/0.index",[653,654,658,662,666,670,674,678],{"title":649,"path":650,"stem":651},{"title":655,"path":656,"stem":657},"Data Protection (GDPR)","/offering/trust-center/data-protection","11.Offering/4.trust-center/1.data-protection",{"title":659,"path":660,"stem":661},"Subprocessors","/offering/trust-center/subprocessors","11.Offering/4.trust-center/2.subprocessors",{"title":663,"path":664,"stem":665},"Infrastructure & Hosting","/offering/trust-center/infrastructure","11.Offering/4.trust-center/3.infrastructure",{"title":667,"path":668,"stem":669},"Security Measures","/offering/trust-center/security-measures","11.Offering/4.trust-center/4.security-measures",{"title":671,"path":672,"stem":673},"Incident Response","/offering/trust-center/incident-response","11.Offering/4.trust-center/5.incident-response",{"title":675,"path":676,"stem":677},"Compliance & Certifications","/offering/trust-center/compliance","11.Offering/4.trust-center/6.compliance",{"title":679,"path":680,"stem":681},"FAQ","/offering/trust-center/faq","11.Offering/4.trust-center/7.faq",{"title":683,"path":684,"stem":685,"children":686,"page":55},"Policies","/offering/policies","11.Offering/5.policies",[687],{"title":688,"path":689,"stem":690},"Fair usage policy","/offering/policies/fair-usage-policy","11.Offering/5.policies/fair-usage-policy",{"title":692,"path":693,"stem":694,"children":695},"Academy","/offering/academy","11.Offering/6.academy/0.index",[696],{"title":692,"path":693,"stem":694},{"title":698,"path":699,"stem":700,"children":701},"Apps","/apps","2.apps/0.index",[702,703,799,893],{"title":698,"path":699,"stem":700},{"title":704,"path":705,"stem":706,"children":707},"App Development","/apps/app-development","2.apps/app-development/0.index",[708,709,731,735,739,743,747,751,755,759,763,767,771,775,779,783,787,791,795],{"title":704,"path":705,"stem":706},{"title":710,"path":711,"stem":712,"children":713},"Guides","/apps/app-development/guides","2.apps/app-development/99.guides/0.index",[714,715,719,723,727],{"title":710,"path":711,"stem":712},{"title":716,"path":717,"stem":718},"Separate schema components from UI components","/apps/app-development/guides/schema-components-vs-ui-components","2.apps/app-development/99.guides/schema-components-vs-ui-components",{"title":720,"path":721,"stem":722},"Section config standard","/apps/app-development/guides/section-config-standard","2.apps/app-development/99.guides/section-config-standard",{"title":724,"path":725,"stem":726},"Shared field factories","/apps/app-development/guides/shared-field-factories","2.apps/app-development/99.guides/shared-field-factories",{"title":728,"path":729,"stem":730},"How to write CSS","/apps/app-development/guides/writing-css","2.apps/app-development/99.guides/writing-css",{"title":732,"path":733,"stem":734},"App Configuration","/apps/app-development/app-configuration","2.apps/app-development/app-configuration",{"title":736,"path":737,"stem":738},"App Manifest","/apps/app-development/app-manifest","2.apps/app-development/app-manifest",{"title":740,"path":741,"stem":742},"App Starter","/apps/app-development/app-starter","2.apps/app-development/app-starter",{"title":744,"path":745,"stem":746},"Best Practice","/apps/app-development/best-practice","2.apps/app-development/best-practice",{"title":748,"path":749,"stem":750},"Block Definitions","/apps/app-development/block-definitions","2.apps/app-development/block-definitions",{"title":752,"path":753,"stem":754},"Bot Protection Providers","/apps/app-development/bot-protection-providers","2.apps/app-development/bot-protection-providers",{"title":756,"path":757,"stem":758},"Coding Standards","/apps/app-development/coding-standards","2.apps/app-development/coding-standards",{"title":760,"path":761,"stem":762},"Consent Adapters","/apps/app-development/consent-adapters","2.apps/app-development/consent-adapters",{"title":764,"path":765,"stem":766},"Consuming Query Fields","/apps/app-development/consuming-query-fields","2.apps/app-development/consuming-query-fields",{"title":768,"path":769,"stem":770},"Content Collections","/apps/app-development/content-collections","2.apps/app-development/content-collections",{"title":772,"path":773,"stem":774},"Implementation Overview","/apps/app-development/implementation-overview","2.apps/app-development/implementation-overview",{"title":776,"path":777,"stem":778},"Media Libraries","/apps/app-development/media-libraries","2.apps/app-development/media-libraries",{"title":780,"path":781,"stem":782},"Platform Dependencies","/apps/app-development/platform-dependencies","2.apps/app-development/platform-dependencies",{"title":784,"path":785,"stem":786},"Releasing an App","/apps/app-development/releasing-an-app","2.apps/app-development/releasing-an-app",{"title":788,"path":789,"stem":790},"Schema Fields","/apps/app-development/schema-fields","2.apps/app-development/schema-fields",{"title":792,"path":793,"stem":794},"Section Definitions","/apps/app-development/section-definitions","2.apps/app-development/section-definitions",{"title":796,"path":797,"stem":798},"Studio Icons","/apps/app-development/studio-icons","2.apps/app-development/studio-icons",{"title":800,"path":801,"stem":802,"children":803},"App Docs","/apps/app-docs","2.apps/app-docs/0.index",[804,805,809,813,817,821,825,829,833,837,841,845,849,853,857,861,865,869,873,877,881,885,889],{"title":800,"path":801,"stem":802},{"title":806,"path":807,"stem":808},"Actindo","/apps/app-docs/actindo","2.apps/app-docs/actindo",{"title":810,"path":811,"stem":812},"Adobe Commerce","/apps/app-docs/adobe-commerce","2.apps/app-docs/adobe-commerce",{"title":814,"path":815,"stem":816},"B2Bsellers","/apps/app-docs/b2bsellers","2.apps/app-docs/b2bsellers",{"title":818,"path":819,"stem":820},"Battery Included","/apps/app-docs/battery-included","2.apps/app-docs/battery-included",{"title":822,"path":823,"stem":824},"Vercel BotID","/apps/app-docs/botid","2.apps/app-docs/botid",{"title":826,"path":827,"stem":828},"CCM19","/apps/app-docs/ccm19","2.apps/app-docs/ccm19",{"title":830,"path":831,"stem":832},"Commercetools","/apps/app-docs/commercetools","2.apps/app-docs/commercetools",{"title":834,"path":835,"stem":836},"Cookiebot","/apps/app-docs/cookiebot","2.apps/app-docs/cookiebot",{"title":838,"path":839,"stem":840},"Emporix","/apps/app-docs/emporix","2.apps/app-docs/emporix",{"title":842,"path":843,"stem":844},"Google Tag Manager (GTM)","/apps/app-docs/gtm","2.apps/app-docs/gtm",{"title":846,"path":847,"stem":848},"Hygraph","/apps/app-docs/hygraph","2.apps/app-docs/hygraph",{"title":850,"path":851,"stem":852},"JTL Platform","/apps/app-docs/jtl-platform","2.apps/app-docs/jtl-platform",{"title":854,"path":855,"stem":856},"Klaviyo","/apps/app-docs/klaviyo","2.apps/app-docs/klaviyo",{"title":858,"path":859,"stem":860},"Nimstrata Google Retail API","/apps/app-docs/nimstrata","2.apps/app-docs/nimstrata",{"title":862,"path":863,"stem":864},"OXID eShop","/apps/app-docs/oxid","2.apps/app-docs/oxid",{"title":866,"path":867,"stem":868},"Pimcore","/apps/app-docs/pimcore","2.apps/app-docs/pimcore",{"title":870,"path":871,"stem":872},"Shopify","/apps/app-docs/shopify","2.apps/app-docs/shopify",{"title":874,"path":875,"stem":876},"Shopware","/apps/app-docs/shopware","2.apps/app-docs/shopware",{"title":878,"path":879,"stem":880},"Sylius","/apps/app-docs/sylius","2.apps/app-docs/sylius",{"title":882,"path":883,"stem":884},"Cloudflare Turnstile","/apps/app-docs/turnstile","2.apps/app-docs/turnstile",{"title":886,"path":887,"stem":888},"Vercel Analytics","/apps/app-docs/vercel-analytics","2.apps/app-docs/vercel-analytics",{"title":890,"path":891,"stem":892},"Vercel Speed Insights","/apps/app-docs/vercel-speed-insights","2.apps/app-docs/vercel-speed-insights",{"title":894,"path":895,"stem":896,"children":897,"page":55},"Essentials","/apps/essentials","2.apps/essentials",[898,902,906],{"title":899,"path":900,"stem":901},"Legal","/apps/essentials/legal","2.apps/essentials/legal",{"title":903,"path":904,"stem":905},"Mailer","/apps/essentials/mailer","2.apps/essentials/mailer",{"title":228,"path":907,"stem":908},"/apps/essentials/seo","2.apps/essentials/seo",{"title":910,"path":911,"stem":912,"children":913},"Laioutr UI","/laioutr-ui","3.laioutr-ui/0.index",[914,915,947,953,959,1155,1176,1182,1188,1242,1252,1270,1408],{"title":910,"path":911,"stem":912},{"title":5,"path":916,"stem":917,"children":918},"/laioutr-ui/getting-started","3.laioutr-ui/01.getting-started/0.index",[919,920,924,928,932,936,940,944],{"title":5,"path":916,"stem":917},{"title":921,"path":922,"stem":923},"Browser support","/laioutr-ui/getting-started/browser-support","3.laioutr-ui/01.getting-started/1.browser-support",{"title":925,"path":926,"stem":927},"Common Data","/laioutr-ui/getting-started/common-data","3.laioutr-ui/01.getting-started/99.common-data",{"title":929,"path":930,"stem":931},"CSS Layers","/laioutr-ui/getting-started/css-layers","3.laioutr-ui/01.getting-started/css-layers",{"title":933,"path":934,"stem":935},"Figma Kit","/laioutr-ui/getting-started/figma-kit","3.laioutr-ui/01.getting-started/figma-kit",{"title":937,"path":938,"stem":939},"Surface Tone","/laioutr-ui/getting-started/surface-tone","3.laioutr-ui/01.getting-started/surface-tone",{"title":941,"path":942,"stem":943},"Theming","/laioutr-ui/getting-started/theming","3.laioutr-ui/01.getting-started/theming",{"title":224,"path":945,"stem":946},"/laioutr-ui/getting-started/z-ordering","3.laioutr-ui/01.getting-started/z-ordering",{"title":948,"path":949,"stem":950,"children":951},"B2B","/laioutr-ui/b2b","3.laioutr-ui/b2b/0.index",[952],{"title":948,"path":949,"stem":950},{"title":954,"path":955,"stem":956,"children":957},"Booking","/laioutr-ui/booking","3.laioutr-ui/booking/0.index",[958],{"title":954,"path":955,"stem":956},{"title":960,"path":961,"stem":962,"children":963},"CMS","/laioutr-ui/cms","3.laioutr-ui/cms/0.index",[964,965,971,996,1008,1012,1016,1020,1024,1028,1040,1061,1065,1086,1102,1151],{"title":960,"path":961,"stem":962},{"title":966,"path":967,"stem":968,"children":969},"Alphabetical Index","/laioutr-ui/cms/alphabetical-index","3.laioutr-ui/cms/alphabetical-index",[970],{"title":966,"path":967,"stem":968},{"title":972,"path":973,"stem":974,"children":975,"page":55},"Banner","/laioutr-ui/cms/banner","3.laioutr-ui/cms/banner",[976,980,984,988,992],{"title":977,"path":978,"stem":979},"Banner Basic","/laioutr-ui/cms/banner/banner-basic","3.laioutr-ui/cms/banner/banner-basic",{"title":981,"path":982,"stem":983},"Banner Integrated","/laioutr-ui/cms/banner/banner-integrated","3.laioutr-ui/cms/banner/banner-integrated",{"title":985,"path":986,"stem":987},"Banner Showcase","/laioutr-ui/cms/banner/banner-showcase","3.laioutr-ui/cms/banner/banner-showcase",{"title":989,"path":990,"stem":991},"Media + Text","/laioutr-ui/cms/banner/media-text","3.laioutr-ui/cms/banner/media-text",{"title":993,"path":994,"stem":995},"USP Banner","/laioutr-ui/cms/banner/usp-banner","3.laioutr-ui/cms/banner/usp-banner",{"title":517,"path":997,"stem":998,"children":999,"page":55},"/laioutr-ui/cms/blog","3.laioutr-ui/cms/blog",[1000,1004],{"title":1001,"path":1002,"stem":1003},"Article Detail","/laioutr-ui/cms/blog/article-detail","3.laioutr-ui/cms/blog/article-detail",{"title":1005,"path":1006,"stem":1007},"Blog Post Listing","/laioutr-ui/cms/blog/blog-post-listing","3.laioutr-ui/cms/blog/blog-post-listing",{"title":1009,"path":1010,"stem":1011},"Brand Hero","/laioutr-ui/cms/brand-hero","3.laioutr-ui/cms/brand-hero",{"title":1013,"path":1014,"stem":1015},"Container","/laioutr-ui/cms/container","3.laioutr-ui/cms/container",{"title":1017,"path":1018,"stem":1019},"Content Grid","/laioutr-ui/cms/content-grid","3.laioutr-ui/cms/content-grid",{"title":1021,"path":1022,"stem":1023},"Editorial Grid","/laioutr-ui/cms/editorial-grid","3.laioutr-ui/cms/editorial-grid",{"title":1025,"path":1026,"stem":1027},"Media Gallery","/laioutr-ui/cms/media-gallery","3.laioutr-ui/cms/media-gallery",{"title":509,"path":1029,"stem":1030,"children":1031,"page":55},"/laioutr-ui/cms/newsletter","3.laioutr-ui/cms/newsletter",[1032,1036],{"title":1033,"path":1034,"stem":1035},"Email Input Form","/laioutr-ui/cms/newsletter/email-input-form","3.laioutr-ui/cms/newsletter/email-input-form",{"title":1037,"path":1038,"stem":1039},"Newsletter Registration","/laioutr-ui/cms/newsletter/newsletter-registration","3.laioutr-ui/cms/newsletter/newsletter-registration",{"title":1041,"path":1042,"stem":1043,"children":1044,"page":55},"Popups","/laioutr-ui/cms/popups","3.laioutr-ui/cms/popups",[1045,1049,1053,1057],{"title":1046,"path":1047,"stem":1048},"PopUp","/laioutr-ui/cms/popups/pop-up","3.laioutr-ui/cms/popups/pop-up",{"title":1050,"path":1051,"stem":1052},"PopUp Info","/laioutr-ui/cms/popups/pop-up-info","3.laioutr-ui/cms/popups/pop-up-info",{"title":1054,"path":1055,"stem":1056},"PopUp Newsletter","/laioutr-ui/cms/popups/pop-up-newsletter","3.laioutr-ui/cms/popups/pop-up-newsletter",{"title":1058,"path":1059,"stem":1060},"PopUp Promotion","/laioutr-ui/cms/popups/pop-up-promotion","3.laioutr-ui/cms/popups/pop-up-promotion",{"title":1062,"path":1063,"stem":1064},"Promotion Banner","/laioutr-ui/cms/promotion-banner","3.laioutr-ui/cms/promotion-banner",{"title":1066,"path":1067,"stem":1068,"children":1069,"page":55},"Quotes","/laioutr-ui/cms/quotes","3.laioutr-ui/cms/quotes",[1070,1074,1078,1082],{"title":1071,"path":1072,"stem":1073},"Persona Quote","/laioutr-ui/cms/quotes/persona-quote","3.laioutr-ui/cms/quotes/persona-quote",{"title":1075,"path":1076,"stem":1077},"Persona Quote Slider","/laioutr-ui/cms/quotes/persona-quote-slider","3.laioutr-ui/cms/quotes/persona-quote-slider",{"title":1079,"path":1080,"stem":1081},"Quote Card","/laioutr-ui/cms/quotes/quote-card","3.laioutr-ui/cms/quotes/quote-card",{"title":1083,"path":1084,"stem":1085},"Quote Card Slider","/laioutr-ui/cms/quotes/quote-card-slider","3.laioutr-ui/cms/quotes/quote-card-slider",{"title":1087,"path":1088,"stem":1089,"children":1090,"page":55},"Reviews","/laioutr-ui/cms/reviews","3.laioutr-ui/cms/reviews",[1091,1094,1098],{"title":440,"path":1092,"stem":1093},"/laioutr-ui/cms/reviews/review","3.laioutr-ui/cms/reviews/review",{"title":1095,"path":1096,"stem":1097},"Review Form","/laioutr-ui/cms/reviews/review-form","3.laioutr-ui/cms/reviews/review-form",{"title":1099,"path":1100,"stem":1101},"Social Share","/laioutr-ui/cms/reviews/social-share","3.laioutr-ui/cms/reviews/social-share",{"title":1103,"path":1104,"stem":1105,"children":1106,"page":55},"Slider","/laioutr-ui/cms/slider","3.laioutr-ui/cms/slider",[1107,1111,1115,1119,1123,1127,1131,1135,1139,1143,1147],{"title":1108,"path":1109,"stem":1110},"Content Slider","/laioutr-ui/cms/slider/content-slider","3.laioutr-ui/cms/slider/content-slider",{"title":1112,"path":1113,"stem":1114},"Hero Slider","/laioutr-ui/cms/slider/hero-slider","3.laioutr-ui/cms/slider/hero-slider",{"title":1116,"path":1117,"stem":1118},"Logo Grid","/laioutr-ui/cms/slider/logo-grid","3.laioutr-ui/cms/slider/logo-grid",{"title":1120,"path":1121,"stem":1122},"Logo Slider","/laioutr-ui/cms/slider/logo-slider","3.laioutr-ui/cms/slider/logo-slider",{"title":1124,"path":1125,"stem":1126},"Swiper Arrows","/laioutr-ui/cms/slider/swiper-arrows","3.laioutr-ui/cms/slider/swiper-arrows",{"title":1128,"path":1129,"stem":1130},"Swiper Bullets","/laioutr-ui/cms/slider/swiper-bullets","3.laioutr-ui/cms/slider/swiper-bullets",{"title":1132,"path":1133,"stem":1134},"Swiper Chrome","/laioutr-ui/cms/slider/swiper-chrome","3.laioutr-ui/cms/slider/swiper-chrome",{"title":1136,"path":1137,"stem":1138},"Swiper Nav Bar","/laioutr-ui/cms/slider/swiper-nav-bar","3.laioutr-ui/cms/slider/swiper-nav-bar",{"title":1140,"path":1141,"stem":1142},"Swiper Numbers","/laioutr-ui/cms/slider/swiper-numbers","3.laioutr-ui/cms/slider/swiper-numbers",{"title":1144,"path":1145,"stem":1146},"Swiper Scrollbar","/laioutr-ui/cms/slider/swiper-scrollbar","3.laioutr-ui/cms/slider/swiper-scrollbar",{"title":1148,"path":1149,"stem":1150},"Thumbnails Slider","/laioutr-ui/cms/slider/thumbnails-slider","3.laioutr-ui/cms/slider/thumbnails-slider",{"title":1152,"path":1153,"stem":1154},"Withdrawal Form","/laioutr-ui/cms/withdrawal-form","3.laioutr-ui/cms/withdrawal-form",{"title":364,"path":1156,"stem":1157,"children":1158},"/laioutr-ui/location","3.laioutr-ui/location/0.index",[1159,1160,1164,1168,1172],{"title":364,"path":1156,"stem":1157},{"title":1161,"path":1162,"stem":1163},"Location Card","/laioutr-ui/location/location-card","3.laioutr-ui/location/location-card",{"title":1165,"path":1166,"stem":1167},"Location Detail","/laioutr-ui/location/location-detail","3.laioutr-ui/location/location-detail",{"title":1169,"path":1170,"stem":1171},"Location Finder","/laioutr-ui/location/location-finder","3.laioutr-ui/location/location-finder",{"title":1173,"path":1174,"stem":1175},"Table Opening Hours","/laioutr-ui/location/table-opening-hours","3.laioutr-ui/location/table-opening-hours",{"title":1177,"path":1178,"stem":1179,"children":1180},"Marketplace","/laioutr-ui/marketplace","3.laioutr-ui/marketplace/0.index",[1181],{"title":1177,"path":1178,"stem":1179},{"title":1183,"path":1184,"stem":1185,"children":1186},"Multichannel","/laioutr-ui/multichannel","3.laioutr-ui/multichannel/0.index",[1187],{"title":1183,"path":1184,"stem":1185},{"title":1189,"path":1190,"stem":1191,"children":1192},"Navigation & Headers","/laioutr-ui/navigation","3.laioutr-ui/navigation/0.index",[1193,1194,1198,1202,1206,1210,1214,1218,1222,1226,1230,1234,1238],{"title":1189,"path":1190,"stem":1191},{"title":1195,"path":1196,"stem":1197},"Breadcrumbs","/laioutr-ui/navigation/breadcrumbs","3.laioutr-ui/navigation/breadcrumbs",{"title":1199,"path":1200,"stem":1201},"Footer","/laioutr-ui/navigation/footer","3.laioutr-ui/navigation/footer",{"title":1203,"path":1204,"stem":1205},"Footer Menu","/laioutr-ui/navigation/footer-menu","3.laioutr-ui/navigation/footer-menu",{"title":1207,"path":1208,"stem":1209},"Header Basic","/laioutr-ui/navigation/header-basic","3.laioutr-ui/navigation/header-basic",{"title":1211,"path":1212,"stem":1213},"Header Shop","/laioutr-ui/navigation/header-shop","3.laioutr-ui/navigation/header-shop",{"title":1215,"path":1216,"stem":1217},"Mega Menu","/laioutr-ui/navigation/mega-menu","3.laioutr-ui/navigation/mega-menu",{"title":1219,"path":1220,"stem":1221},"Menu Side by Side","/laioutr-ui/navigation/menu-side-by-side","3.laioutr-ui/navigation/menu-side-by-side",{"title":1223,"path":1224,"stem":1225},"Mobile Menu (Basic)","/laioutr-ui/navigation/mobile-menu-basic","3.laioutr-ui/navigation/mobile-menu-basic",{"title":1227,"path":1228,"stem":1229},"Mobile Menu (Shop)","/laioutr-ui/navigation/mobile-menu-shop","3.laioutr-ui/navigation/mobile-menu-shop",{"title":1231,"path":1232,"stem":1233},"Page Not Found","/laioutr-ui/navigation/page-not-found","3.laioutr-ui/navigation/page-not-found",{"title":1235,"path":1236,"stem":1237},"Search Auto-Suggest","/laioutr-ui/navigation/search-auto-suggest","3.laioutr-ui/navigation/search-auto-suggest",{"title":1239,"path":1240,"stem":1241},"Top Bar","/laioutr-ui/navigation/top-bar","3.laioutr-ui/navigation/top-bar",{"title":1243,"path":1244,"stem":1245,"children":1246},"Publishers & Media","/laioutr-ui/publishers","3.laioutr-ui/publishers/0.index",[1247,1248],{"title":1243,"path":1244,"stem":1245},{"title":1249,"path":1250,"stem":1251},"Media Feed","/laioutr-ui/publishers/media-feed","3.laioutr-ui/publishers/media-feed",{"title":1253,"path":1254,"stem":1255,"children":1256},"SaaS","/laioutr-ui/saas","3.laioutr-ui/saas/0.index",[1257,1258,1262,1266],{"title":1253,"path":1254,"stem":1255},{"title":1259,"path":1260,"stem":1261},"Plan Card","/laioutr-ui/saas/plan-card","3.laioutr-ui/saas/plan-card",{"title":1263,"path":1264,"stem":1265},"Plan Card Slider","/laioutr-ui/saas/plan-card-slider","3.laioutr-ui/saas/plan-card-slider",{"title":1267,"path":1268,"stem":1269},"Plan Comparison Table","/laioutr-ui/saas/plan-comparison-table","3.laioutr-ui/saas/plan-comparison-table",{"title":1271,"path":1272,"stem":1273,"children":1274},"Shop","/laioutr-ui/shop","3.laioutr-ui/shop/0.index",[1275,1276,1304,1308,1312,1316,1320,1384,1388,1392,1396,1400,1404],{"title":1271,"path":1272,"stem":1273},{"title":432,"path":1277,"stem":1278,"children":1279,"page":55},"/laioutr-ui/shop/cart","3.laioutr-ui/shop/cart",[1280,1284,1288,1292,1296,1300],{"title":1281,"path":1282,"stem":1283},"Cart Coupon Code Accordion","/laioutr-ui/shop/cart/cart-coupon-code-accordion","3.laioutr-ui/shop/cart/cart-coupon-code-accordion",{"title":1285,"path":1286,"stem":1287},"Cart List Item","/laioutr-ui/shop/cart/cart-list-item","3.laioutr-ui/shop/cart/cart-list-item",{"title":1289,"path":1290,"stem":1291},"Cart Sheet","/laioutr-ui/shop/cart/cart-sheet","3.laioutr-ui/shop/cart/cart-sheet",{"title":1293,"path":1294,"stem":1295},"Cart Summary Box","/laioutr-ui/shop/cart/cart-summary-box","3.laioutr-ui/shop/cart/cart-summary-box",{"title":1297,"path":1298,"stem":1299},"Empty State Cart","/laioutr-ui/shop/cart/empty-state-cart","3.laioutr-ui/shop/cart/empty-state-cart",{"title":1301,"path":1302,"stem":1303},"Free Delivery Progress","/laioutr-ui/shop/cart/free-delivery-progress","3.laioutr-ui/shop/cart/free-delivery-progress",{"title":1305,"path":1306,"stem":1307},"Category Card Grid","/laioutr-ui/shop/category-card-grid","3.laioutr-ui/shop/category-card-grid",{"title":1309,"path":1310,"stem":1311},"Category Card Slider","/laioutr-ui/shop/category-card-slider","3.laioutr-ui/shop/category-card-slider",{"title":1313,"path":1314,"stem":1315},"Filter Bar","/laioutr-ui/shop/filter-bar","3.laioutr-ui/shop/filter-bar",{"title":1317,"path":1318,"stem":1319},"Filter Off Canvas","/laioutr-ui/shop/filter-off-canvas","3.laioutr-ui/shop/filter-off-canvas",{"title":1321,"path":1322,"stem":1323,"children":1324,"page":55},"Product Detail","/laioutr-ui/shop/product-detail","3.laioutr-ui/shop/product-detail",[1325,1329,1333,1337,1341,1345,1349,1352,1356,1360,1364,1368,1372,1376,1380],{"title":1326,"path":1327,"stem":1328},"Add to Cart","/laioutr-ui/shop/product-detail/add-to-cart","3.laioutr-ui/shop/product-detail/add-to-cart",{"title":1330,"path":1331,"stem":1332},"Benefits Box","/laioutr-ui/shop/product-detail/benefits-box","3.laioutr-ui/shop/product-detail/benefits-box",{"title":1334,"path":1335,"stem":1336},"Button Group","/laioutr-ui/shop/product-detail/button-group","3.laioutr-ui/shop/product-detail/button-group",{"title":1338,"path":1339,"stem":1340},"Coupon Box","/laioutr-ui/shop/product-detail/coupon-box","3.laioutr-ui/shop/product-detail/coupon-box",{"title":1342,"path":1343,"stem":1344},"Energy Label","/laioutr-ui/shop/product-detail/energy-label","3.laioutr-ui/shop/product-detail/energy-label",{"title":1346,"path":1347,"stem":1348},"Price Info","/laioutr-ui/shop/product-detail/price-info","3.laioutr-ui/shop/product-detail/price-info",{"title":1321,"path":1350,"stem":1351},"/laioutr-ui/shop/product-detail/product-detail","3.laioutr-ui/shop/product-detail/product-detail",{"title":1353,"path":1354,"stem":1355},"Product Image Gallery","/laioutr-ui/shop/product-detail/product-image-gallery","3.laioutr-ui/shop/product-detail/product-image-gallery",{"title":1357,"path":1358,"stem":1359},"Product Specifications Table","/laioutr-ui/shop/product-detail/product-specifications","3.laioutr-ui/shop/product-detail/product-specifications",{"title":1361,"path":1362,"stem":1363},"Product Title","/laioutr-ui/shop/product-detail/product-title","3.laioutr-ui/shop/product-detail/product-title",{"title":1365,"path":1366,"stem":1367},"Quantity Discount","/laioutr-ui/shop/product-detail/quantity-discount","3.laioutr-ui/shop/product-detail/quantity-discount",{"title":1369,"path":1370,"stem":1371},"Variant Off Canvas","/laioutr-ui/shop/product-detail/variant-off-canvas","3.laioutr-ui/shop/product-detail/variant-off-canvas",{"title":1373,"path":1374,"stem":1375},"Variant Selector Configurator","/laioutr-ui/shop/product-detail/variant-selector-configurator","3.laioutr-ui/shop/product-detail/variant-selector-configurator",{"title":1377,"path":1378,"stem":1379},"Variant Selector (Multiple)","/laioutr-ui/shop/product-detail/variant-selector-multiple","3.laioutr-ui/shop/product-detail/variant-selector-multiple",{"title":1381,"path":1382,"stem":1383},"Variant Selector Options","/laioutr-ui/shop/product-detail/variant-selector-options","3.laioutr-ui/shop/product-detail/variant-selector-options",{"title":1385,"path":1386,"stem":1387},"Product Listing Grid","/laioutr-ui/shop/product-listing-grid","3.laioutr-ui/shop/product-listing-grid",{"title":1389,"path":1390,"stem":1391},"Product Slider","/laioutr-ui/shop/product-slider","3.laioutr-ui/shop/product-slider",{"title":1393,"path":1394,"stem":1395},"Product Slider Showcase","/laioutr-ui/shop/product-slider-showcase","3.laioutr-ui/shop/product-slider-showcase",{"title":1397,"path":1398,"stem":1399},"Product Tile (Basic)","/laioutr-ui/shop/product-tile-basic","3.laioutr-ui/shop/product-tile-basic",{"title":1401,"path":1402,"stem":1403},"Search Result Hero","/laioutr-ui/shop/search-result-hero","3.laioutr-ui/shop/search-result-hero",{"title":1405,"path":1406,"stem":1407},"Sort Modes","/laioutr-ui/shop/sort-modes","3.laioutr-ui/shop/sort-modes",{"title":1409,"path":1410,"stem":1411,"children":1412},"UI Kit","/laioutr-ui/ui-kit","3.laioutr-ui/ui-kit/0.index",[1413,1414,1586,1610,1631,1648,1685,1798,1827],{"title":1409,"path":1410,"stem":1411},{"title":1415,"path":1416,"stem":1417,"children":1418,"page":55},"General","/laioutr-ui/ui-kit/general","3.laioutr-ui/ui-kit/01.general",[1419,1423,1427,1431,1435,1439,1443,1447,1451,1455,1459,1462,1466,1470,1474,1478,1482,1486,1490,1494,1498,1502,1506,1510,1514,1518,1522,1526,1530,1534,1538,1542,1546,1550,1554,1558,1562,1566,1570,1574,1578,1582],{"title":1420,"path":1421,"stem":1422},"Accordion","/laioutr-ui/ui-kit/general/accordion","3.laioutr-ui/ui-kit/01.general/Accordion",{"title":1424,"path":1425,"stem":1426},"Avatar","/laioutr-ui/ui-kit/general/avatar","3.laioutr-ui/ui-kit/01.general/Avatar",{"title":1428,"path":1429,"stem":1430},"Backdrop","/laioutr-ui/ui-kit/general/backdrop","3.laioutr-ui/ui-kit/01.general/Backdrop",{"title":1432,"path":1433,"stem":1434},"Dropdown Menu","/laioutr-ui/ui-kit/general/dropdownmenu","3.laioutr-ui/ui-kit/01.general/DropdownMenu",{"title":1436,"path":1437,"stem":1438},"Edge Glow","/laioutr-ui/ui-kit/general/edgeglow","3.laioutr-ui/ui-kit/01.general/EdgeGlow",{"title":1440,"path":1441,"stem":1442},"Empty State","/laioutr-ui/ui-kit/general/emptystate","3.laioutr-ui/ui-kit/01.general/EmptyState",{"title":1444,"path":1445,"stem":1446},"Icon","/laioutr-ui/ui-kit/general/icon","3.laioutr-ui/ui-kit/01.general/Icon",{"title":1448,"path":1449,"stem":1450},"Image Contrast Overlay","/laioutr-ui/ui-kit/general/imagecontrastoverlay","3.laioutr-ui/ui-kit/01.general/ImageContrastOverlay",{"title":1452,"path":1453,"stem":1454},"Lightbox","/laioutr-ui/ui-kit/general/lightbox","3.laioutr-ui/ui-kit/01.general/Lightbox",{"title":1456,"path":1457,"stem":1458},"Loading Spinner","/laioutr-ui/ui-kit/general/loadingspinner","3.laioutr-ui/ui-kit/01.general/LoadingSpinner",{"title":469,"path":1460,"stem":1461},"/laioutr-ui/ui-kit/general/media","3.laioutr-ui/ui-kit/01.general/Media",{"title":1463,"path":1464,"stem":1465},"Navigation Bullets","/laioutr-ui/ui-kit/general/navigationbullets","3.laioutr-ui/ui-kit/01.general/NavigationBullets",{"title":1467,"path":1468,"stem":1469},"Placeholder","/laioutr-ui/ui-kit/general/placeholder","3.laioutr-ui/ui-kit/01.general/Placeholder",{"title":1471,"path":1472,"stem":1473},"Progress Bar","/laioutr-ui/ui-kit/general/progressbar","3.laioutr-ui/ui-kit/01.general/ProgressBar",{"title":1475,"path":1476,"stem":1477},"Scrollbar","/laioutr-ui/ui-kit/general/scrollbar","3.laioutr-ui/ui-kit/01.general/Scrollbar",{"title":1479,"path":1480,"stem":1481},"Swatch","/laioutr-ui/ui-kit/general/swatch","3.laioutr-ui/ui-kit/01.general/Swatch",{"title":1483,"path":1484,"stem":1485},"SwiperScrollbar","/laioutr-ui/ui-kit/general/swiperscrollbar","3.laioutr-ui/ui-kit/01.general/SwiperScrollbar",{"title":1487,"path":1488,"stem":1489},"Thumbnail","/laioutr-ui/ui-kit/general/thumbnail","3.laioutr-ui/ui-kit/01.general/Thumbnail",{"title":1491,"path":1492,"stem":1493},"Tooltip","/laioutr-ui/ui-kit/general/tooltip","3.laioutr-ui/ui-kit/01.general/Tooltip",{"title":1495,"path":1496,"stem":1497},"Amount Pill","/laioutr-ui/ui-kit/general/amount-pill","3.laioutr-ui/ui-kit/01.general/amount-pill",{"title":1499,"path":1500,"stem":1501},"Animated Icon","/laioutr-ui/ui-kit/general/animated-icon","3.laioutr-ui/ui-kit/01.general/animated-icon",{"title":1503,"path":1504,"stem":1505},"Countdown","/laioutr-ui/ui-kit/general/countdown","3.laioutr-ui/ui-kit/01.general/countdown",{"title":1507,"path":1508,"stem":1509},"Countdown Boxed","/laioutr-ui/ui-kit/general/countdown-boxed","3.laioutr-ui/ui-kit/01.general/countdown-boxed",{"title":1511,"path":1512,"stem":1513},"Dark Mode Switch","/laioutr-ui/ui-kit/general/dark-mode-switch","3.laioutr-ui/ui-kit/01.general/dark-mode-switch",{"title":1515,"path":1516,"stem":1517},"Language Switcher","/laioutr-ui/ui-kit/general/language-switcher","3.laioutr-ui/ui-kit/01.general/language-switcher",{"title":1519,"path":1520,"stem":1521},"Media Preview","/laioutr-ui/ui-kit/general/media-preview","3.laioutr-ui/ui-kit/01.general/media-preview",{"title":1523,"path":1524,"stem":1525},"Media Stage","/laioutr-ui/ui-kit/general/media-stage","3.laioutr-ui/ui-kit/01.general/media-stage",{"title":1527,"path":1528,"stem":1529},"Nav Link Item","/laioutr-ui/ui-kit/general/nav-link-item","3.laioutr-ui/ui-kit/01.general/nav-link-item",{"title":1531,"path":1532,"stem":1533},"Nav Section Heading","/laioutr-ui/ui-kit/general/nav-section-heading","3.laioutr-ui/ui-kit/01.general/nav-section-heading",{"title":1535,"path":1536,"stem":1537},"OnSurface","/laioutr-ui/ui-kit/general/on-surface","3.laioutr-ui/ui-kit/01.general/on-surface",{"title":1539,"path":1540,"stem":1541},"Opening Status","/laioutr-ui/ui-kit/general/opening-status","3.laioutr-ui/ui-kit/01.general/opening-status",{"title":1543,"path":1544,"stem":1545},"Opening Status Detail","/laioutr-ui/ui-kit/general/opening-status-detail","3.laioutr-ui/ui-kit/01.general/opening-status-detail",{"title":1547,"path":1548,"stem":1549},"Opening Status Indicator","/laioutr-ui/ui-kit/general/opening-status-indicator","3.laioutr-ui/ui-kit/01.general/opening-status-indicator",{"title":1551,"path":1552,"stem":1553},"Rating Progress Bar Filter","/laioutr-ui/ui-kit/general/rating-progress-bar-filter","3.laioutr-ui/ui-kit/01.general/rating-progress-bar-filter",{"title":1555,"path":1556,"stem":1557},"Status Message","/laioutr-ui/ui-kit/general/status-message","3.laioutr-ui/ui-kit/01.general/status-message",{"title":1559,"path":1560,"stem":1561},"Stock Info Summary","/laioutr-ui/ui-kit/general/stock-info-summary","3.laioutr-ui/ui-kit/01.general/stock-info-summary",{"title":1563,"path":1564,"stem":1565},"Swatch Chip","/laioutr-ui/ui-kit/general/swatch-chip","3.laioutr-ui/ui-kit/01.general/swatch-chip",{"title":1567,"path":1568,"stem":1569},"Swatch Option","/laioutr-ui/ui-kit/general/swatch-option","3.laioutr-ui/ui-kit/01.general/swatch-option",{"title":1571,"path":1572,"stem":1573},"Swatch Summary","/laioutr-ui/ui-kit/general/swatch-summary","3.laioutr-ui/ui-kit/01.general/swatch-summary",{"title":1575,"path":1576,"stem":1577},"Table of Contents","/laioutr-ui/ui-kit/general/table-of-contents","3.laioutr-ui/ui-kit/01.general/table-of-contents",{"title":1579,"path":1580,"stem":1581},"Zoom Level (Segmented)","/laioutr-ui/ui-kit/general/zoom-level-segmented","3.laioutr-ui/ui-kit/01.general/zoom-level-segmented",{"title":1583,"path":1584,"stem":1585},"Zoom Level (Stepper)","/laioutr-ui/ui-kit/general/zoom-level-stepper","3.laioutr-ui/ui-kit/01.general/zoom-level-stepper",{"title":1587,"path":1588,"stem":1589,"children":1590,"page":55},"Typography","/laioutr-ui/ui-kit/typography","3.laioutr-ui/ui-kit/02.typography",[1591,1595,1598,1602,1606],{"title":1592,"path":1593,"stem":1594},"Icon List","/laioutr-ui/ui-kit/typography/iconlist","3.laioutr-ui/ui-kit/02.typography/IconList",{"title":465,"path":1596,"stem":1597},"/laioutr-ui/ui-kit/typography/link","3.laioutr-ui/ui-kit/02.typography/Link",{"title":1599,"path":1600,"stem":1601},"Rich Content","/laioutr-ui/ui-kit/typography/richcontent","3.laioutr-ui/ui-kit/02.typography/RichContent",{"title":1603,"path":1604,"stem":1605},"Text","/laioutr-ui/ui-kit/typography/text","3.laioutr-ui/ui-kit/02.typography/Text",{"title":1607,"path":1608,"stem":1609},"Text Group","/laioutr-ui/ui-kit/typography/text-group","3.laioutr-ui/ui-kit/02.typography/text-group",{"title":1611,"path":1612,"stem":1613,"children":1614,"page":55},"Layout","/laioutr-ui/ui-kit/layout","3.laioutr-ui/ui-kit/03.layout",[1615,1619,1623,1627],{"title":1616,"path":1617,"stem":1618},"Grid Fill","/laioutr-ui/ui-kit/layout/gridfill","3.laioutr-ui/ui-kit/03.layout/GridFill",{"title":1620,"path":1621,"stem":1622},"Grid Masonry","/laioutr-ui/ui-kit/layout/gridmasonry","3.laioutr-ui/ui-kit/03.layout/GridMasonry",{"title":1624,"path":1625,"stem":1626},"Scroll Area","/laioutr-ui/ui-kit/layout/scrollarea","3.laioutr-ui/ui-kit/03.layout/ScrollArea",{"title":1628,"path":1629,"stem":1630},"Separator","/laioutr-ui/ui-kit/layout/separator","3.laioutr-ui/ui-kit/03.layout/Separator",{"title":1632,"path":1633,"stem":1634,"children":1635,"page":55},"Content","/laioutr-ui/ui-kit/content","3.laioutr-ui/ui-kit/04.content",[1636,1640,1644],{"title":1637,"path":1638,"stem":1639},"Card","/laioutr-ui/ui-kit/content/card","3.laioutr-ui/ui-kit/04.content/Card",{"title":1641,"path":1642,"stem":1643},"Basic Table","/laioutr-ui/ui-kit/content/basic-table","3.laioutr-ui/ui-kit/04.content/basic-table",{"title":1645,"path":1646,"stem":1647},"Link Tile","/laioutr-ui/ui-kit/content/link-tile","3.laioutr-ui/ui-kit/04.content/link-tile",{"title":1649,"path":1650,"stem":1651,"children":1652,"page":55},"Surfaces","/laioutr-ui/ui-kit/surfaces","3.laioutr-ui/ui-kit/05.surfaces",[1653,1657,1661,1665,1669,1673,1677,1681],{"title":1654,"path":1655,"stem":1656},"Alert Dialog","/laioutr-ui/ui-kit/surfaces/alertdialog","3.laioutr-ui/ui-kit/05.surfaces/AlertDialog",{"title":1658,"path":1659,"stem":1660},"Popover","/laioutr-ui/ui-kit/surfaces/popover","3.laioutr-ui/ui-kit/05.surfaces/Popover",{"title":1662,"path":1663,"stem":1664},"Sheet","/laioutr-ui/ui-kit/surfaces/sheet","3.laioutr-ui/ui-kit/05.surfaces/Sheet",{"title":1666,"path":1667,"stem":1668},"Tabs","/laioutr-ui/ui-kit/surfaces/tabs","3.laioutr-ui/ui-kit/05.surfaces/Tabs",{"title":1670,"path":1671,"stem":1672},"Toast","/laioutr-ui/ui-kit/surfaces/toast","3.laioutr-ui/ui-kit/05.surfaces/Toast",{"title":1674,"path":1675,"stem":1676},"Toaster","/laioutr-ui/ui-kit/surfaces/toaster","3.laioutr-ui/ui-kit/05.surfaces/Toaster",{"title":1678,"path":1679,"stem":1680},"Context Menu","/laioutr-ui/ui-kit/surfaces/context-menu","3.laioutr-ui/ui-kit/05.surfaces/context-menu",{"title":1682,"path":1683,"stem":1684},"Navigation Menu","/laioutr-ui/ui-kit/surfaces/navigation-menu","3.laioutr-ui/ui-kit/05.surfaces/navigation-menu",{"title":1686,"path":1687,"stem":1688,"children":1689,"page":55},"Form","/laioutr-ui/ui-kit/form","3.laioutr-ui/ui-kit/06.form",[1690,1694,1698,1702,1706,1710,1714,1718,1722,1726,1730,1734,1738,1742,1746,1750,1754,1758,1762,1766,1770,1774,1778,1782,1786,1790,1794],{"title":1691,"path":1692,"stem":1693},"Button","/laioutr-ui/ui-kit/form/button","3.laioutr-ui/ui-kit/06.form/Button",{"title":1695,"path":1696,"stem":1697},"Checkbox","/laioutr-ui/ui-kit/form/checkbox","3.laioutr-ui/ui-kit/06.form/Checkbox",{"title":1699,"path":1700,"stem":1701},"Field","/laioutr-ui/ui-kit/form/field","3.laioutr-ui/ui-kit/06.form/Field",{"title":1703,"path":1704,"stem":1705},"Input","/laioutr-ui/ui-kit/form/input","3.laioutr-ui/ui-kit/06.form/Input",{"title":1707,"path":1708,"stem":1709},"Label","/laioutr-ui/ui-kit/form/label","3.laioutr-ui/ui-kit/06.form/Label",{"title":1711,"path":1712,"stem":1713},"Load More","/laioutr-ui/ui-kit/form/loadmore","3.laioutr-ui/ui-kit/06.form/LoadMore",{"title":1715,"path":1716,"stem":1717},"Pagination","/laioutr-ui/ui-kit/form/pagination","3.laioutr-ui/ui-kit/06.form/Pagination",{"title":1719,"path":1720,"stem":1721},"Quantity Picker","/laioutr-ui/ui-kit/form/quantitypicker","3.laioutr-ui/ui-kit/06.form/QuantityPicker",{"title":1723,"path":1724,"stem":1725},"Select","/laioutr-ui/ui-kit/form/select","3.laioutr-ui/ui-kit/06.form/Select",{"title":1727,"path":1728,"stem":1729},"Switch","/laioutr-ui/ui-kit/form/switch","3.laioutr-ui/ui-kit/06.form/Switch",{"title":1731,"path":1732,"stem":1733},"Animated Button","/laioutr-ui/ui-kit/form/animated-button","3.laioutr-ui/ui-kit/06.form/animated-button",{"title":1735,"path":1736,"stem":1737},"Highlight Toggle","/laioutr-ui/ui-kit/form/highlight-toggle","3.laioutr-ui/ui-kit/06.form/highlight-toggle",{"title":1739,"path":1740,"stem":1741},"Icon Button","/laioutr-ui/ui-kit/form/icon-button","3.laioutr-ui/ui-kit/06.form/icon-button",{"title":1743,"path":1744,"stem":1745},"Input Autocomplete","/laioutr-ui/ui-kit/form/input-autocomplete","3.laioutr-ui/ui-kit/06.form/input-autocomplete",{"title":1747,"path":1748,"stem":1749},"Input Checkbox","/laioutr-ui/ui-kit/form/input-checkbox","3.laioutr-ui/ui-kit/06.form/input-checkbox",{"title":1751,"path":1752,"stem":1753},"Input Combobox","/laioutr-ui/ui-kit/form/input-combobox","3.laioutr-ui/ui-kit/06.form/input-combobox",{"title":1755,"path":1756,"stem":1757},"Input Group","/laioutr-ui/ui-kit/form/input-group","3.laioutr-ui/ui-kit/06.form/input-group",{"title":1759,"path":1760,"stem":1761},"Input Password","/laioutr-ui/ui-kit/form/input-password","3.laioutr-ui/ui-kit/06.form/input-password",{"title":1763,"path":1764,"stem":1765},"Input Pin","/laioutr-ui/ui-kit/form/input-pin","3.laioutr-ui/ui-kit/06.form/input-pin",{"title":1767,"path":1768,"stem":1769},"Input Radio","/laioutr-ui/ui-kit/form/input-radio","3.laioutr-ui/ui-kit/06.form/input-radio",{"title":1771,"path":1772,"stem":1773},"Input Rating","/laioutr-ui/ui-kit/form/input-rating","3.laioutr-ui/ui-kit/06.form/input-rating",{"title":1775,"path":1776,"stem":1777},"Input Search","/laioutr-ui/ui-kit/form/input-search","3.laioutr-ui/ui-kit/06.form/input-search",{"title":1779,"path":1780,"stem":1781},"Input Slider","/laioutr-ui/ui-kit/form/input-slider","3.laioutr-ui/ui-kit/06.form/input-slider",{"title":1783,"path":1784,"stem":1785},"Listbox","/laioutr-ui/ui-kit/form/listbox","3.laioutr-ui/ui-kit/06.form/listbox",{"title":1787,"path":1788,"stem":1789},"Option Tile (Image)","/laioutr-ui/ui-kit/form/option-tile-image","3.laioutr-ui/ui-kit/06.form/option-tile-image",{"title":1791,"path":1792,"stem":1793},"Option Tile (Text)","/laioutr-ui/ui-kit/form/option-tile-text","3.laioutr-ui/ui-kit/06.form/option-tile-text",{"title":1795,"path":1796,"stem":1797},"Variant Selection Card","/laioutr-ui/ui-kit/form/variant-selection-card","3.laioutr-ui/ui-kit/06.form/variant-selection-card",{"title":1799,"path":1800,"stem":1801,"children":1802,"page":55},"Indicators","/laioutr-ui/ui-kit/indicators","3.laioutr-ui/ui-kit/07.indicators",[1803,1807,1811,1815,1819,1823],{"title":1804,"path":1805,"stem":1806},"Badge","/laioutr-ui/ui-kit/indicators/badge","3.laioutr-ui/ui-kit/07.indicators/Badge",{"title":1808,"path":1809,"stem":1810},"Caption Flag","/laioutr-ui/ui-kit/indicators/captionflag","3.laioutr-ui/ui-kit/07.indicators/CaptionFlag",{"title":1812,"path":1813,"stem":1814},"Product Tile Flag","/laioutr-ui/ui-kit/indicators/producttileflag","3.laioutr-ui/ui-kit/07.indicators/ProductTileFlag",{"title":1816,"path":1817,"stem":1818},"Rating Summary","/laioutr-ui/ui-kit/indicators/ratingsummary","3.laioutr-ui/ui-kit/07.indicators/RatingSummary",{"title":1820,"path":1821,"stem":1822},"Stars Rating","/laioutr-ui/ui-kit/indicators/starsrating","3.laioutr-ui/ui-kit/07.indicators/StarsRating",{"title":1824,"path":1825,"stem":1826},"Badge Promotion","/laioutr-ui/ui-kit/indicators/badge-promotion","3.laioutr-ui/ui-kit/07.indicators/badge-promotion",{"title":1828,"path":1829,"stem":1830,"children":1831,"page":55},"Utility Components","/laioutr-ui/ui-kit/utility-components","3.laioutr-ui/ui-kit/08.utility-components",[1832,1836],{"title":1833,"path":1834,"stem":1835},"Highlighted Text","/laioutr-ui/ui-kit/utility-components/highlighted-text","3.laioutr-ui/ui-kit/08.utility-components/highlighted-text",{"title":1837,"path":1838,"stem":1839},"Sizer","/laioutr-ui/ui-kit/utility-components/sizer","3.laioutr-ui/ui-kit/08.utility-components/sizer",{"title":1841,"path":1842,"stem":1843,"children":1844},"Hosting","/hosting","4.hosting/0.index",[1845,1846,1860,1890,1908,1938],{"title":1841,"path":1842,"stem":1843},{"title":1847,"path":1848,"stem":1849,"children":1850},"Laioutr Cloud","/hosting/laioutr-cloud","4.hosting/0.laioutr-cloud/0.index",[1851,1852,1856],{"title":1847,"path":1848,"stem":1849},{"title":1853,"path":1854,"stem":1855},"Limits","/hosting/laioutr-cloud/limits","4.hosting/0.laioutr-cloud/1.limits",{"title":1857,"path":1858,"stem":1859},"Fair use","/hosting/laioutr-cloud/fair-use","4.hosting/0.laioutr-cloud/2.fair-use",{"title":1861,"path":1862,"stem":1863,"children":1864},"Hyperscaler","/hosting/hyperscaler","4.hosting/1.hyperscaler/0.index",[1865,1866,1870,1874,1878,1882,1886],{"title":1861,"path":1862,"stem":1863},{"title":1867,"path":1868,"stem":1869},"Akamai Adapter","/hosting/hyperscaler/akamai-adapter","4.hosting/1.hyperscaler/akamai-adapter",{"title":1871,"path":1872,"stem":1873},"AWS Adapter","/hosting/hyperscaler/aws-adapter","4.hosting/1.hyperscaler/aws-adapter",{"title":1875,"path":1876,"stem":1877},"Azure Adapter","/hosting/hyperscaler/azure-adapter","4.hosting/1.hyperscaler/azure-adapter",{"title":1879,"path":1880,"stem":1881},"Google Adapter","/hosting/hyperscaler/google-adapter","4.hosting/1.hyperscaler/google-adapter",{"title":1883,"path":1884,"stem":1885},"Netlify Adapter","/hosting/hyperscaler/netlify-adapter","4.hosting/1.hyperscaler/netlify-adapter",{"title":1887,"path":1888,"stem":1889},"Vercel Adapter","/hosting/hyperscaler/vercel-adapter","4.hosting/1.hyperscaler/vercel-adapter",{"title":1891,"path":1892,"stem":1893,"children":1894},"Native Hosting","/hosting/native-hosting-providers","4.hosting/2.native-hosting-providers/0.index",[1895,1896,1900,1904],{"title":1891,"path":1892,"stem":1893},{"title":1897,"path":1898,"stem":1899},"maxcluster","/hosting/native-hosting-providers/maxcluster","4.hosting/2.native-hosting-providers/maxcluster",{"title":1901,"path":1902,"stem":1903},"profihost","/hosting/native-hosting-providers/profihost","4.hosting/2.native-hosting-providers/profihost",{"title":1905,"path":1906,"stem":1907},"ScaleCommerce","/hosting/native-hosting-providers/scale-commerce","4.hosting/2.native-hosting-providers/scale-commerce",{"title":1909,"path":1910,"stem":1911,"children":1912},"Bring Your Own Server (BYOS)","/hosting/bring-your-own-server-byos","4.hosting/3.bring-your-own-server-byos/0.index",[1913,1914,1918,1922,1926,1930,1934],{"title":1909,"path":1910,"stem":1911},{"title":1915,"path":1916,"stem":1917},"BYOS Agent","/hosting/bring-your-own-server-byos/byos-agent","4.hosting/3.bring-your-own-server-byos/byos-agent",{"title":1919,"path":1920,"stem":1921},"Changelog","/hosting/bring-your-own-server-byos/changelog","4.hosting/3.bring-your-own-server-byos/changelog",{"title":1923,"path":1924,"stem":1925},"DevOps Components","/hosting/bring-your-own-server-byos/devops","4.hosting/3.bring-your-own-server-byos/devops",{"title":1927,"path":1928,"stem":1929},"Infrastructure Requirements","/hosting/bring-your-own-server-byos/infrastructure","4.hosting/3.bring-your-own-server-byos/infrastructure",{"title":1931,"path":1932,"stem":1933},"Software Requirements","/hosting/bring-your-own-server-byos/software","4.hosting/3.bring-your-own-server-byos/software",{"title":1935,"path":1936,"stem":1937},"Webhook Configuration","/hosting/bring-your-own-server-byos/webhook-config","4.hosting/3.bring-your-own-server-byos/webhook-config",{"title":1939,"path":1940,"stem":1941,"children":1942},"CDN","/hosting/cdn","4.hosting/4.cdn/0.index",[1943,1944],{"title":1939,"path":1940,"stem":1941},{"title":1945,"path":1946,"stem":1947},"Video CDN","/hosting/cdn/video-cdn","4.hosting/4.cdn/1.video-cdn",{"title":605,"path":1949,"stem":1950,"children":1951},"/checkout","5.Checkout/0.index",[1952],{"title":605,"path":1949,"stem":1950},{"title":617,"path":1954,"stem":1955,"children":1956},"/larry-ai","6.Larry-AI/0.index",[1957],{"title":617,"path":1954,"stem":1955},{"title":933,"path":1959,"stem":1960,"children":1961},"/figma-kit","7.Figma Kit/0.index",[1962,1963,1979],{"title":933,"path":1959,"stem":1960},{"title":125,"path":1964,"stem":1965,"children":1966,"page":55},"/figma-kit/introduction","7.Figma Kit/1.Introduction",[1967,1971,1975],{"title":1968,"path":1969,"stem":1970},"How to Start","/figma-kit/introduction/howtostart","7.Figma Kit/1.Introduction/0.howtostart",{"title":1972,"path":1973,"stem":1974},"Figma Variables","/figma-kit/introduction/figma-variables","7.Figma Kit/1.Introduction/figma-variables",{"title":1976,"path":1977,"stem":1978},"Library Connections","/figma-kit/introduction/library-connections","7.Figma Kit/1.Introduction/library-connections",{"title":1980,"path":1981,"stem":1982,"children":1983,"page":55},"Kits","/figma-kit/kits","7.Figma Kit/Kits",[1984,1987,1990,1993,1997,2000,2004,2008,2011,2014],{"title":948,"path":1985,"stem":1986},"/figma-kit/kits/b2b","7.Figma Kit/Kits/b2b",{"title":954,"path":1988,"stem":1989},"/figma-kit/kits/booking","7.Figma Kit/Kits/booking",{"title":960,"path":1991,"stem":1992},"/figma-kit/kits/cms","7.Figma Kit/Kits/cms",{"title":1994,"path":1995,"stem":1996},"Inpage Navigation","/figma-kit/kits/inpage-navigation","7.Figma Kit/Kits/inpage-navigation",{"title":1177,"path":1998,"stem":1999},"/figma-kit/kits/marketplace","7.Figma Kit/Kits/marketplace",{"title":2001,"path":2002,"stem":2003},"Retail & Multichannel","/figma-kit/kits/multichannel","7.Figma Kit/Kits/multichannel",{"title":2005,"path":2006,"stem":2007},"Navigation","/figma-kit/kits/navigation","7.Figma Kit/Kits/navigation",{"title":1253,"path":2009,"stem":2010},"/figma-kit/kits/saas","7.Figma Kit/Kits/saas",{"title":1271,"path":2012,"stem":2013},"/figma-kit/kits/shop","7.Figma Kit/Kits/shop",{"title":1409,"path":2015,"stem":2016},"/figma-kit/kits/ui-kit","7.Figma Kit/Kits/ui-kit",{"title":599,"path":2018,"stem":2019,"children":2020},"/cockpit","8.Cockpit/0.index",[2021,2022,2064,2081,2098],{"title":599,"path":2018,"stem":2019},{"title":158,"path":2023,"stem":2024,"children":2025,"page":55},"/cockpit/features","8.Cockpit/1.Features",[2026,2029,2033,2037,2041,2045,2049,2053,2056,2060],{"title":698,"path":2027,"stem":2028},"/cockpit/features/apps","8.Cockpit/1.Features/apps",{"title":2030,"path":2031,"stem":2032},"Configuration","/cockpit/features/configuration","8.Cockpit/1.Features/configuration",{"title":2034,"path":2035,"stem":2036},"Content (Collections)","/cockpit/features/content-collections","8.Cockpit/1.Features/content-collections",{"title":2038,"path":2039,"stem":2040},"Deployments","/cockpit/features/deployments","8.Cockpit/1.Features/deployments",{"title":2042,"path":2043,"stem":2044},"Distributr","/cockpit/features/distributr","8.Cockpit/1.Features/distributr",{"title":2046,"path":2047,"stem":2048},"Environments","/cockpit/features/environments","8.Cockpit/1.Features/environments",{"title":2050,"path":2051,"stem":2052},"Markets","/cockpit/features/markets","8.Cockpit/1.Features/markets",{"title":208,"path":2054,"stem":2055},"/cockpit/features/redirects","8.Cockpit/1.Features/redirects",{"title":2057,"path":2058,"stem":2059},"Studio","/cockpit/features/studio","8.Cockpit/1.Features/studio",{"title":2061,"path":2062,"stem":2063},"Translations","/cockpit/features/translations","8.Cockpit/1.Features/translations",{"title":2065,"path":2066,"stem":2067,"children":2068,"page":55},"Project Settings","/cockpit/project-settings","8.Cockpit/2.Project-Settings",[2069,2073,2077],{"title":2070,"path":2071,"stem":2072},"Delete a project","/cockpit/project-settings/delete-project","8.Cockpit/2.Project-Settings/delete-project",{"title":2074,"path":2075,"stem":2076},"NPM","/cockpit/project-settings/npm","8.Cockpit/2.Project-Settings/npm",{"title":2078,"path":2079,"stem":2080},"Project secret key","/cockpit/project-settings/project-secret-key","8.Cockpit/2.Project-Settings/project-secret-key",{"title":2082,"path":2083,"stem":2084,"children":2085,"page":55},"Account Settings","/cockpit/account-settings","8.Cockpit/3.Account-Settings",[2086,2090,2094],{"title":2087,"path":2088,"stem":2089},"Notifications","/cockpit/account-settings/notifications","8.Cockpit/3.Account-Settings/notifications",{"title":2091,"path":2092,"stem":2093},"Preferences","/cockpit/account-settings/preferences","8.Cockpit/3.Account-Settings/preferences",{"title":2095,"path":2096,"stem":2097},"Security","/cockpit/account-settings/security","8.Cockpit/3.Account-Settings/security",{"title":2099,"path":2100,"stem":2101,"children":2102,"page":55},"Organisation Settings","/cockpit/organisation-settings","8.Cockpit/4.Organisation-Settings",[2103,2107,2111,2115,2119,2123],{"title":2104,"path":2105,"stem":2106},"API keys","/cockpit/organisation-settings/api-keys","8.Cockpit/4.Organisation-Settings/api-keys",{"title":2108,"path":2109,"stem":2110},"Billing","/cockpit/organisation-settings/billing","8.Cockpit/4.Organisation-Settings/billing",{"title":2112,"path":2113,"stem":2114},"General settings","/cockpit/organisation-settings/general-settings","8.Cockpit/4.Organisation-Settings/general-settings",{"title":2116,"path":2117,"stem":2118},"Members","/cockpit/organisation-settings/members","8.Cockpit/4.Organisation-Settings/members",{"title":2120,"path":2121,"stem":2122},"Projects","/cockpit/organisation-settings/projects","8.Cockpit/4.Organisation-Settings/projects",{"title":2124,"path":2125,"stem":2126},"Roles","/cockpit/organisation-settings/roles","8.Cockpit/4.Organisation-Settings/roles",{"title":2128,"path":2129,"stem":2130,"children":2131},"Data API","/data-api","9.Data-API/0.index",[2132,2133,2153,2163],{"title":2128,"path":2129,"stem":2130},{"title":2134,"path":2135,"stem":2136,"children":2137,"page":55},"Api Info","/data-api/api-info","9.Data-API/1.API-Info",[2138,2142,2146,2149],{"title":2139,"path":2140,"stem":2141},"API Basics","/data-api/api-info/api-basics","9.Data-API/1.API-Info/1.api-basics",{"title":2143,"path":2144,"stem":2145},"Authentication","/data-api/api-info/authentication","9.Data-API/1.API-Info/2.authentication",{"title":505,"path":2147,"stem":2148},"/data-api/api-info/errors","9.Data-API/1.API-Info/3.errors",{"title":2150,"path":2151,"stem":2152},"HTTP details","/data-api/api-info/http-details","9.Data-API/1.API-Info/4.http-details",{"title":2154,"path":2155,"stem":2156,"children":2157},"Management API","/data-api/management-api","9.Data-API/2.Management-API/0.index",[2158,2159],{"title":2154,"path":2155,"stem":2156},{"title":2160,"path":2161,"stem":2162},"Assets","/data-api/management-api/assets","9.Data-API/2.Management-API/1.assets",{"title":2164,"path":2165,"stem":2166,"children":2167},"Delivery API","/data-api/delivery-api","9.Data-API/3.Delivery-API/0.index",[2168],{"title":2164,"path":2165,"stem":2166},{"id":2170,"title":768,"aliases":2171,"body":2172,"changelogKeys":2171,"description":6511,"extension":6512,"links":2171,"meta":6513,"navigation":2906,"path":769,"playground":2171,"seo":6514,"sitemap":6516,"stem":770,"__hash__":6519},"docs/2.apps/app-development/content-collections.md",null,{"type":2173,"value":2174,"toc":6487},"minimark",[2175,2180,2209,2215,2252,2258,2273,2287,2291,2301,2464,2470,2605,2614,2617,2636,2642,2712,2738,2744,2749,2755,2774,2785,2789,2796,2803,2807,2818,3182,3189,3257,3268,3274,3311,3314,3349,3356,3360,3385,3388,3527,3542,3549,3552,3555,3560,3574,3577,3583,3653,3656,3660,3663,4485,4489,4504,4518,4522,4528,4544,4655,4663,4720,4741,4761,4775,4792,4798,4800,4808,4817,4919,4930,5024,5027,5123,5146,5156,5169,5175,5190,5218,5233,5237,5255,5259,5271,5289,5383,5506,5509,5547,5551,5565,5651,5675,5681,6040,6060,6066,6070,6077,6103,6135,6155,6165,6186,6192,6199,6203,6221,6229,6232,6239,6243,6330,6346,6352,6355,6358,6448,6451,6455,6483],[2176,2177,2179],"h2",{"id":2178},"what-the-cms-serves","What the CMS serves",[2181,2182,2183,2184,2188,2189,2192,2193,2196,2197,2200,2201,2204,2205,2208],"p",{},"The Laioutr CMS stores ",[2185,2186,2187],"strong",{},"entries"," of entity types your storefront already knows — a ",[2190,2191,452],"code",{},", a ",[2190,2194,2195],{},"Recipe",", an ",[2190,2198,2199],{},"Author",". Editors create, translate and publish them in Cockpit, under ",[2202,2203,1632],"a",{"href":2035},". The storefront reads them through ",[2190,2206,2207],{},"@laioutr-app/cms",", which fetches them from the Laioutr content delivery API (cms-api) and answers Orchestr like any other connector.",[2181,2210,2211,2212,2214],{},"For every type you declare, ",[2190,2213,2207],{}," registers:",[2216,2217,2218,2234,2240,2246],"ul",{},[2219,2220,2221,2222,2225,2226,2229,2230,2233],"li",{},"a ",[2185,2223,2224],{},"query handler"," for each query token of the type that the offering app serves by default or its ",[2190,2227,2228],{},"queries"," option lists (see ",[2202,2231,501],{"href":2232},"#queries",");",[2219,2235,2221,2236,2239],{},[2185,2237,2238],{},"component resolver"," for the type's components;",[2219,2241,2221,2242,2245],{},[2185,2243,2244],{},"link handler"," for each link token between two declared types;",[2219,2247,2221,2248,2251],{},[2185,2249,2250],{},"page index"," for each page type that gives an entry its own URL.",[2181,2253,2254,2255,2257],{},"The CMS defines no tokens of its own. It answers the tokens that already exist for the type, so a section built for canonical ",[2190,2256,452],{}," data works with CMS entries unchanged.",[2181,2259,2260,2261,2264,2265,2268,2269,2272],{},"A visitor sees ",[2185,2262,2263],{},"published"," entries. A request in ",[2202,2266,2267],{"href":173},"content preview"," sees the ",[2185,2270,2271],{},"drafts"," instead: what Cockpit last saved, unpublished changes included.",[2181,2274,2275,2276,2279,2280,2279,2283,2286],{},"The query handlers, resolvers and link handlers are not cached. Every read reaches cms-api, so a publish is visible on the next request. A route rule of your own that caches pages (",[2190,2277,2278],{},"isr",", ",[2190,2281,2282],{},"swr",[2190,2284,2285],{},"cache",") delays a publish by that rule, as it does for every connector.",[2176,2288,2290],{"id":2289},"declaring-collections","Declaring collections",[2181,2292,2293,2294,2297,2298,2300],{},"A project lists the types the CMS manages in the ",[2190,2295,2296],{},"collections"," option of ",[2190,2299,2207],{},". Nothing listed means nothing served: installing the app, or an app that offers types, adds no collection by itself.",[2302,2303,2309],"pre",{"className":2304,"code":2305,"filename":2306,"language":2307,"meta":2308,"style":2308},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  '@laioutr-app/cms': {\n    collections: [\n      // Offered by an installed app: named by its entity type.\n      'BlogPost',\n      'Recipe',\n      // A type of the project's own, defined in a token file.\n      { entityType: 'Author', tokens: './cms/author.tokens' },\n    ],\n  },\n});\n","nuxt.config.ts","ts","",[2190,2310,2311,2335,2353,2364,2371,2385,2396,2402,2438,2446,2452],{"__ignoreMap":2308},[2312,2313,2316,2320,2323,2327,2331],"span",{"class":2314,"line":2315},"line",1,[2312,2317,2319],{"class":2318},"s7zQu","export",[2312,2321,2322],{"class":2318}," default",[2312,2324,2326],{"class":2325},"s2Zo4"," defineNuxtConfig",[2312,2328,2330],{"class":2329},"sTEyZ","(",[2312,2332,2334],{"class":2333},"sMK4o","{\n",[2312,2336,2338,2341,2344,2347,2350],{"class":2314,"line":2337},2,[2312,2339,2340],{"class":2333},"  '",[2312,2342,2207],{"class":2343},"swJcz",[2312,2345,2346],{"class":2333},"'",[2312,2348,2349],{"class":2333},":",[2312,2351,2352],{"class":2333}," {\n",[2312,2354,2356,2359,2361],{"class":2314,"line":2355},3,[2312,2357,2358],{"class":2343},"    collections",[2312,2360,2349],{"class":2333},[2312,2362,2363],{"class":2329}," [\n",[2312,2365,2367],{"class":2314,"line":2366},4,[2312,2368,2370],{"class":2369},"sHwdD","      // Offered by an installed app: named by its entity type.\n",[2312,2372,2374,2377,2380,2382],{"class":2314,"line":2373},5,[2312,2375,2376],{"class":2333},"      '",[2312,2378,452],{"class":2379},"sfazB",[2312,2381,2346],{"class":2333},[2312,2383,2384],{"class":2333},",\n",[2312,2386,2388,2390,2392,2394],{"class":2314,"line":2387},6,[2312,2389,2376],{"class":2333},[2312,2391,2195],{"class":2379},[2312,2393,2346],{"class":2333},[2312,2395,2384],{"class":2333},[2312,2397,2399],{"class":2314,"line":2398},7,[2312,2400,2401],{"class":2369},"      // A type of the project's own, defined in a token file.\n",[2312,2403,2405,2408,2411,2413,2416,2418,2420,2423,2426,2428,2430,2433,2435],{"class":2314,"line":2404},8,[2312,2406,2407],{"class":2333},"      {",[2312,2409,2410],{"class":2343}," entityType",[2312,2412,2349],{"class":2333},[2312,2414,2415],{"class":2333}," '",[2312,2417,2199],{"class":2379},[2312,2419,2346],{"class":2333},[2312,2421,2422],{"class":2333},",",[2312,2424,2425],{"class":2343}," tokens",[2312,2427,2349],{"class":2333},[2312,2429,2415],{"class":2333},[2312,2431,2432],{"class":2379},"./cms/author.tokens",[2312,2434,2346],{"class":2333},[2312,2436,2437],{"class":2333}," },\n",[2312,2439,2441,2444],{"class":2314,"line":2440},9,[2312,2442,2443],{"class":2329},"    ]",[2312,2445,2384],{"class":2333},[2312,2447,2449],{"class":2314,"line":2448},10,[2312,2450,2451],{"class":2333},"  },\n",[2312,2453,2455,2458,2461],{"class":2314,"line":2454},11,[2312,2456,2457],{"class":2333},"}",[2312,2459,2460],{"class":2329},")",[2312,2462,2463],{"class":2333},";\n",[2181,2465,2466,2467,2349],{},"A hosted project carries the same list in the app's config in ",[2190,2468,2469],{},"laioutrrc.json",[2302,2471,2475],{"className":2472,"code":2473,"filename":2469,"language":2474,"meta":2308,"style":2308},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"apps\": [\n    {\n      \"name\": \"@laioutr-app/cms\",\n      \"version\": \"latest\",\n      \"config\": { \"collections\": [\"BlogPost\", \"Recipe\"] }\n    }\n  ]\n}\n","json",[2190,2476,2477,2481,2497,2502,2524,2544,2590,2595,2600],{"__ignoreMap":2308},[2312,2478,2479],{"class":2314,"line":2315},[2312,2480,2334],{"class":2333},[2312,2482,2483,2486,2490,2493,2495],{"class":2314,"line":2337},[2312,2484,2485],{"class":2333},"  \"",[2312,2487,2489],{"class":2488},"spNyl","apps",[2312,2491,2492],{"class":2333},"\"",[2312,2494,2349],{"class":2333},[2312,2496,2363],{"class":2333},[2312,2498,2499],{"class":2314,"line":2355},[2312,2500,2501],{"class":2333},"    {\n",[2312,2503,2504,2507,2511,2513,2515,2518,2520,2522],{"class":2314,"line":2366},[2312,2505,2506],{"class":2333},"      \"",[2312,2508,2510],{"class":2509},"sBMFI","name",[2312,2512,2492],{"class":2333},[2312,2514,2349],{"class":2333},[2312,2516,2517],{"class":2333}," \"",[2312,2519,2207],{"class":2379},[2312,2521,2492],{"class":2333},[2312,2523,2384],{"class":2333},[2312,2525,2526,2528,2531,2533,2535,2537,2540,2542],{"class":2314,"line":2373},[2312,2527,2506],{"class":2333},[2312,2529,2530],{"class":2509},"version",[2312,2532,2492],{"class":2333},[2312,2534,2349],{"class":2333},[2312,2536,2517],{"class":2333},[2312,2538,2539],{"class":2379},"latest",[2312,2541,2492],{"class":2333},[2312,2543,2384],{"class":2333},[2312,2545,2546,2548,2551,2553,2555,2558,2560,2563,2565,2567,2570,2572,2574,2576,2578,2580,2582,2584,2587],{"class":2314,"line":2387},[2312,2547,2506],{"class":2333},[2312,2549,2550],{"class":2509},"config",[2312,2552,2492],{"class":2333},[2312,2554,2349],{"class":2333},[2312,2556,2557],{"class":2333}," {",[2312,2559,2517],{"class":2333},[2312,2561,2296],{"class":2562},"sbssI",[2312,2564,2492],{"class":2333},[2312,2566,2349],{"class":2333},[2312,2568,2569],{"class":2333}," [",[2312,2571,2492],{"class":2333},[2312,2573,452],{"class":2379},[2312,2575,2492],{"class":2333},[2312,2577,2422],{"class":2333},[2312,2579,2517],{"class":2333},[2312,2581,2195],{"class":2379},[2312,2583,2492],{"class":2333},[2312,2585,2586],{"class":2333},"]",[2312,2588,2589],{"class":2333}," }\n",[2312,2591,2592],{"class":2314,"line":2398},[2312,2593,2594],{"class":2333},"    }\n",[2312,2596,2597],{"class":2314,"line":2404},[2312,2598,2599],{"class":2333},"  ]\n",[2312,2601,2602],{"class":2314,"line":2440},[2312,2603,2604],{"class":2333},"}\n",[2181,2606,2607,2608,2610,2611,2613],{},"A collection serves its components and links as soon as it is listed. Its queries, and the page types that depend on them, are served when the offering app serves them by default or the ",[2190,2609,2228],{}," option lists them — see ",[2202,2612,501],{"href":2232},".",[2181,2615,2616],{},"The list is read when the storefront is built, so a change takes effect with the next deploy.",[2181,2618,2619,2622,2623,2626,2627,2630,2631,2635],{},[2185,2620,2621],{},"A name is an entity type."," ",[2190,2624,2625],{},"'BlogPost'"," is the ",[2190,2628,2629],{},"entityType"," its component tokens are defined with. Cockpit lists it in words, as \"Blog Post\". A name is served when an installed app ",[2202,2632,2634],{"href":2633},"#offering-types-from-an-app","offers"," that type. Entries are stored by entity type and component name, so replacing a token file with an app's offer of the same type, or the other way round, keeps every entry.",[2181,2637,2638,2641],{},[2185,2639,2640],{},"The object form"," names a token file, or adjusts a type:",[2643,2644,2645,2657],"table",{},[2646,2647,2648],"thead",{},[2649,2650,2651,2654],"tr",{},[2652,2653,1699],"th",{},[2652,2655,2656],{},"Meaning",[2658,2659,2660,2670,2680,2698],"tbody",{},[2649,2661,2662,2667],{},[2663,2664,2665],"td",{},[2190,2666,2629],{},[2663,2668,2669],{},"The entity type. Required.",[2649,2671,2672,2677],{},[2663,2673,2674],{},[2190,2675,2676],{},"tokens",[2663,2678,2679],{},"A module that defines the type, or adds tokens to an offered one. A relative path, or a package specifier that resolves from the project root.",[2649,2681,2682,2687],{},[2663,2683,2684],{},[2190,2685,2686],{},"slug",[2663,2688,2689,2690,2693,2694,2697],{},"Where an entry's slug lives, as ",[2190,2691,2692],{},"component.field",", or ",[2190,2695,2696],{},"false"," for a type without one.",[2649,2699,2700,2705],{},[2663,2701,2702],{},[2190,2703,2704],{},"requiredComponents",[2663,2706,2707,2708,2613],{},"The components an entry must have before it can be published. Only for a type no app offers — see ",[2202,2709,2711],{"href":2710},"#mandatory-components","Mandatory components",[2181,2713,2714,2715,2717,2718,2721,2722,2724,2725,2727,2728,2730,2731,2734,2735,2737],{},"When ",[2190,2716,2686],{}," is left out, it is ",[2190,2719,2720],{},"base.slug"," for a type from a token file, the offer's ",[2190,2723,2686],{}," (else ",[2190,2726,2720],{},") for a type an app offers from a token module, and ",[2190,2729,2720],{}," for a type from a manifest when its ",[2190,2732,2733],{},"base"," component has a string ",[2190,2736,2686],{}," field. A type without a slug gets no by-slug query and no page.",[2181,2739,2740,2741,2743],{},"A hosted project has no local files, so a relative ",[2190,2742,2676],{}," path does not resolve there. Publish the token file in a package and name it by its specifier.",[2745,2746,2748],"h3",{"id":2747},"when-the-list-is-wrong","When the list is wrong",[2181,2750,2751,2752,2349],{},"Nothing in the option fails the build. Each problem costs the entry it is in, and the build logs one warning that lists them all under ",[2190,2753,2754],{},"[@laioutr-app/cms] … note(s) on the content collections",[2216,2756,2757,2760,2766,2771],{},[2219,2758,2759],{},"an entry that is neither a name nor an object, or has a malformed field;",[2219,2761,2762,2763,2765],{},"a name no installed app offers, with no ",[2190,2764,2676],{},";",[2219,2767,2221,2768,2770],{},[2190,2769,2676],{}," path that does not resolve;",[2219,2772,2773],{},"a type listed twice with different settings, which keeps the first.",[2181,2775,2776,2778,2779,2781,2782,2784],{},[2190,2777,2306],{}," and ",[2190,2780,2469],{}," can both hold ",[2190,2783,2296],{},", and Nuxt concatenates the two lists when it merges the module's options. An identical duplicate is dropped silently. A type listed in both with different settings keeps only one of them, and which one depends on how the app is installed, so keep each type in one place.",[2745,2786,2788],{"id":2787},"what-cockpit-shows","What Cockpit shows",[2181,2790,2791,2792,2795],{},"Cockpit reads the list from the storefront deployed on the project's ",[2185,2793,2794],{},"main"," environment. A type appears there once that deploy declares it.",[2181,2797,2798,2799,2802],{},"A type that has stored entries and is no longer declared stays listed, marked ",[2185,2800,2801],{},"Not declared",", so its entries stay reachable. Its entries cannot be created, edited or published until a deploy declares the type again. When the main environment cannot be reached, Cockpit says so and lists the types as that storefront last declared them. If Cockpit has never read that storefront's declaration, it lists only the types that already have entries.",[2176,2804,2806],{"id":2805},"offering-types-from-an-app","Offering types from an app",[2181,2808,2809,2810,2813,2814,2817],{},"An app that defines entity types can let projects store them in the CMS. It adds a ",[2190,2811,2812],{},"cmsOffers"," list to the app definition it registers with ",[2190,2815,2816],{},"@laioutr-core/kit",", in its module setup:",[2302,2819,2822],{"className":2304,"code":2820,"filename":2821,"language":2307,"meta":2308,"style":2308},"import { createResolver, defineNuxtModule } from '@nuxt/kit';\nimport { registerLaioutrApp } from '@laioutr-core/kit';\nimport { name, version } from '../package.json';\n\nexport default defineNuxtModule({\n  meta: { name, version, configKey: name },\n  async setup() {\n    const { resolve } = createResolver(import.meta.url);\n\n    await registerLaioutrApp({\n      name,\n      version,\n      orchestrDirs: [resolve('./runtime/server/orchestr')],\n      cmsOffers: [\n        {\n          entityType: 'Recipe',\n          tokens: resolve('./runtime/cms/recipe.tokens'),\n          slug: 'base.slug',\n          requiredComponents: ['base'],\n        },\n      ],\n    });\n  },\n});\n","src/module.ts",[2190,2823,2824,2854,2875,2902,2908,2920,2948,2961,2996,3000,3011,3018,3026,3053,3063,3069,3085,3108,3124,3144,3150,3158,3168,3173],{"__ignoreMap":2308},[2312,2825,2826,2829,2831,2834,2836,2839,2842,2845,2847,2850,2852],{"class":2314,"line":2315},[2312,2827,2828],{"class":2318},"import",[2312,2830,2557],{"class":2333},[2312,2832,2833],{"class":2329}," createResolver",[2312,2835,2422],{"class":2333},[2312,2837,2838],{"class":2329}," defineNuxtModule",[2312,2840,2841],{"class":2333}," }",[2312,2843,2844],{"class":2318}," from",[2312,2846,2415],{"class":2333},[2312,2848,2849],{"class":2379},"@nuxt/kit",[2312,2851,2346],{"class":2333},[2312,2853,2463],{"class":2333},[2312,2855,2856,2858,2860,2863,2865,2867,2869,2871,2873],{"class":2314,"line":2337},[2312,2857,2828],{"class":2318},[2312,2859,2557],{"class":2333},[2312,2861,2862],{"class":2329}," registerLaioutrApp",[2312,2864,2841],{"class":2333},[2312,2866,2844],{"class":2318},[2312,2868,2415],{"class":2333},[2312,2870,2816],{"class":2379},[2312,2872,2346],{"class":2333},[2312,2874,2463],{"class":2333},[2312,2876,2877,2879,2881,2884,2886,2889,2891,2893,2895,2898,2900],{"class":2314,"line":2355},[2312,2878,2828],{"class":2318},[2312,2880,2557],{"class":2333},[2312,2882,2883],{"class":2329}," name",[2312,2885,2422],{"class":2333},[2312,2887,2888],{"class":2329}," version",[2312,2890,2841],{"class":2333},[2312,2892,2844],{"class":2318},[2312,2894,2415],{"class":2333},[2312,2896,2897],{"class":2379},"../package.json",[2312,2899,2346],{"class":2333},[2312,2901,2463],{"class":2333},[2312,2903,2904],{"class":2314,"line":2366},[2312,2905,2907],{"emptyLinePlaceholder":2906},true,"\n",[2312,2909,2910,2912,2914,2916,2918],{"class":2314,"line":2373},[2312,2911,2319],{"class":2318},[2312,2913,2322],{"class":2318},[2312,2915,2838],{"class":2325},[2312,2917,2330],{"class":2329},[2312,2919,2334],{"class":2333},[2312,2921,2922,2925,2927,2929,2931,2933,2935,2937,2940,2942,2945],{"class":2314,"line":2387},[2312,2923,2924],{"class":2343},"  meta",[2312,2926,2349],{"class":2333},[2312,2928,2557],{"class":2333},[2312,2930,2883],{"class":2329},[2312,2932,2422],{"class":2333},[2312,2934,2888],{"class":2329},[2312,2936,2422],{"class":2333},[2312,2938,2939],{"class":2343}," configKey",[2312,2941,2349],{"class":2333},[2312,2943,2944],{"class":2329}," name ",[2312,2946,2947],{"class":2333},"},\n",[2312,2949,2950,2953,2956,2959],{"class":2314,"line":2398},[2312,2951,2952],{"class":2488},"  async",[2312,2954,2955],{"class":2343}," setup",[2312,2957,2958],{"class":2333},"()",[2312,2960,2352],{"class":2333},[2312,2962,2963,2966,2968,2971,2973,2976,2978,2980,2982,2984,2987,2989,2992,2994],{"class":2314,"line":2404},[2312,2964,2965],{"class":2488},"    const",[2312,2967,2557],{"class":2333},[2312,2969,2970],{"class":2329}," resolve",[2312,2972,2841],{"class":2333},[2312,2974,2975],{"class":2333}," =",[2312,2977,2833],{"class":2325},[2312,2979,2330],{"class":2343},[2312,2981,2828],{"class":2318},[2312,2983,2613],{"class":2333},[2312,2985,2986],{"class":2329},"meta",[2312,2988,2613],{"class":2333},[2312,2990,2991],{"class":2329},"url",[2312,2993,2460],{"class":2343},[2312,2995,2463],{"class":2333},[2312,2997,2998],{"class":2314,"line":2440},[2312,2999,2907],{"emptyLinePlaceholder":2906},[2312,3001,3002,3005,3007,3009],{"class":2314,"line":2448},[2312,3003,3004],{"class":2318},"    await",[2312,3006,2862],{"class":2325},[2312,3008,2330],{"class":2343},[2312,3010,2334],{"class":2333},[2312,3012,3013,3016],{"class":2314,"line":2454},[2312,3014,3015],{"class":2329},"      name",[2312,3017,2384],{"class":2333},[2312,3019,3021,3024],{"class":2314,"line":3020},12,[2312,3022,3023],{"class":2329},"      version",[2312,3025,2384],{"class":2333},[2312,3027,3029,3032,3034,3036,3039,3041,3043,3046,3048,3051],{"class":2314,"line":3028},13,[2312,3030,3031],{"class":2343},"      orchestrDirs",[2312,3033,2349],{"class":2333},[2312,3035,2569],{"class":2343},[2312,3037,3038],{"class":2325},"resolve",[2312,3040,2330],{"class":2343},[2312,3042,2346],{"class":2333},[2312,3044,3045],{"class":2379},"./runtime/server/orchestr",[2312,3047,2346],{"class":2333},[2312,3049,3050],{"class":2343},")]",[2312,3052,2384],{"class":2333},[2312,3054,3056,3059,3061],{"class":2314,"line":3055},14,[2312,3057,3058],{"class":2343},"      cmsOffers",[2312,3060,2349],{"class":2333},[2312,3062,2363],{"class":2343},[2312,3064,3066],{"class":2314,"line":3065},15,[2312,3067,3068],{"class":2333},"        {\n",[2312,3070,3072,3075,3077,3079,3081,3083],{"class":2314,"line":3071},16,[2312,3073,3074],{"class":2343},"          entityType",[2312,3076,2349],{"class":2333},[2312,3078,2415],{"class":2333},[2312,3080,2195],{"class":2379},[2312,3082,2346],{"class":2333},[2312,3084,2384],{"class":2333},[2312,3086,3088,3091,3093,3095,3097,3099,3102,3104,3106],{"class":2314,"line":3087},17,[2312,3089,3090],{"class":2343},"          tokens",[2312,3092,2349],{"class":2333},[2312,3094,2970],{"class":2325},[2312,3096,2330],{"class":2343},[2312,3098,2346],{"class":2333},[2312,3100,3101],{"class":2379},"./runtime/cms/recipe.tokens",[2312,3103,2346],{"class":2333},[2312,3105,2460],{"class":2343},[2312,3107,2384],{"class":2333},[2312,3109,3111,3114,3116,3118,3120,3122],{"class":2314,"line":3110},18,[2312,3112,3113],{"class":2343},"          slug",[2312,3115,2349],{"class":2333},[2312,3117,2415],{"class":2333},[2312,3119,2720],{"class":2379},[2312,3121,2346],{"class":2333},[2312,3123,2384],{"class":2333},[2312,3125,3127,3130,3132,3134,3136,3138,3140,3142],{"class":2314,"line":3126},19,[2312,3128,3129],{"class":2343},"          requiredComponents",[2312,3131,2349],{"class":2333},[2312,3133,2569],{"class":2343},[2312,3135,2346],{"class":2333},[2312,3137,2733],{"class":2379},[2312,3139,2346],{"class":2333},[2312,3141,2586],{"class":2343},[2312,3143,2384],{"class":2333},[2312,3145,3147],{"class":2314,"line":3146},20,[2312,3148,3149],{"class":2333},"        },\n",[2312,3151,3153,3156],{"class":2314,"line":3152},21,[2312,3154,3155],{"class":2343},"      ]",[2312,3157,2384],{"class":2333},[2312,3159,3161,3164,3166],{"class":2314,"line":3160},22,[2312,3162,3163],{"class":2333},"    }",[2312,3165,2460],{"class":2343},[2312,3167,2463],{"class":2333},[2312,3169,3171],{"class":2314,"line":3170},23,[2312,3172,2451],{"class":2333},[2312,3174,3176,3178,3180],{"class":2314,"line":3175},24,[2312,3177,2457],{"class":2333},[2312,3179,2460],{"class":2329},[2312,3181,2463],{"class":2333},[2181,3183,3184,3185,3188],{},"An offer (",[2190,3186,3187],{},"CmsContentOffer",") takes one of two shapes:",[2643,3190,3191,3201],{},[2646,3192,3193],{},[2649,3194,3195,3198],{},[2652,3196,3197],{},"Shape",[2652,3199,3200],{},"Fields",[2658,3202,3203,3232],{},[2649,3204,3205,3208],{},[2663,3206,3207],{},"A token module",[2663,3209,3210,3212,3213,3215,3216,3218,3219,3221,3222,3224,3225,3227,3228,2778,3230,2613],{},[2190,3211,2629],{},"; ",[2190,3214,2676],{},", an absolute path the app resolves or a package specifier that resolves from the project root; optionally ",[2190,3217,2686],{}," (",[2190,3220,2692],{}," or ",[2190,3223,2696],{},", default ",[2190,3226,2720],{},"), ",[2190,3229,2704],{},[2190,3231,2228],{},[2649,3233,3234,3237],{},[2663,3235,3236],{},"A token manifest",[2663,3238,3239,3242,3243,3246,3247,3250,3251,3254,3255,2613],{},[2190,3240,3241],{},"package",", and ",[2190,3244,3245],{},"manifest",", the absolute path of a manifest in the format ",[2190,3248,3249],{},"@laioutr-core/canonical-types"," publishes under ",[2190,3252,3253],{},"./reflection",". It offers every entity type the manifest lists. Optionally ",[2190,3256,2228],{},[2181,3258,3259,3261,3262,3267],{},[2190,3260,2228],{}," on an offer names the queries the CMS serves by default, in the shape of the ",[2202,3263,3264,3266],{"href":2232},[2190,3265,2228],{}," option",". A project that names the type serves them without listing them, and can override each one or switch it off.",[2181,3269,3270,3271,3273],{},"The offer carries the paths, so a project that names ",[2190,3272,2195],{}," needs no file of its own, hosted projects included. A project then writes only the name:",[2302,3275,3277],{"className":2304,"code":3276,"language":2307,"meta":2308,"style":2308},"'@laioutr-app/cms': { collections: ['Recipe'] },\n",[2190,3278,3279],{"__ignoreMap":2308},[2312,3280,3281,3283,3285,3287,3290,3293,3296,3298,3300,3302,3304,3306,3309],{"class":2314,"line":2315},[2312,3282,2346],{"class":2333},[2312,3284,2207],{"class":2379},[2312,3286,2346],{"class":2333},[2312,3288,3289],{"class":2329},": ",[2312,3291,3292],{"class":2333},"{",[2312,3294,3295],{"class":2343}," collections",[2312,3297,2349],{"class":2333},[2312,3299,2569],{"class":2329},[2312,3301,2346],{"class":2333},[2312,3303,2195],{"class":2379},[2312,3305,2346],{"class":2333},[2312,3307,3308],{"class":2329},"] ",[2312,3310,2947],{"class":2333},[2181,3312,3313],{},"Rules an offering app should know:",[2216,3315,3316,3322,3328,3334,3340],{},[2219,3317,3318,3321],{},[2185,3319,3320],{},"Register offers in module setup."," The CMS reads them once every module is set up. An offer registered later is not seen.",[2219,3323,3324,3327],{},[2185,3325,3326],{},"The token module is imported twice"," — into the server bundle, and into the Vue app so that its page types reach the link resolver and Studio. It must load in both.",[2219,3329,3330,3333],{},[2185,3331,3332],{},"One offer per type."," When two apps offer the same type, the first to register wins and the build warning names both.",[2219,3335,3336,3339],{},[2185,3337,3338],{},"An offer serves nothing by itself."," Installing the app changes nothing until a project names the type.",[2219,3341,3342,3345,3346,3348],{},[2185,3343,3344],{},"Default queries apply only to named types."," A default for a query of a type the project does not name is dropped without a warning. In a manifest offer, a default counts for the type whose query it is. A token module's defaults count only for queries of its own ",[2190,3347,2629],{},"; any other is ignored with a warning when the server starts. A malformed default, or one for a query the manifest does not define, is ignored with a warning that names the app. When two apps serve the same token by default in different ways, the first to register wins, and the build warning names both unless the project sets that token itself.",[2181,3350,3351,3352,3355],{},"A project can still name a token file for an offered type. It then ",[2185,3353,3354],{},"extends"," the offer: its components, queries and links are served next to the offered ones.",[2745,3357,3359],{"id":3358},"canonical-types","Canonical types",[2181,3361,3362,3365,3366,3369,3370,3372,3373,2279,3375,2279,3378,3381,3382,2613],{},[2190,3363,3364],{},"@laioutr-core/frontend-core"," offers the ",[2202,3367,3368],{"href":339},"canonical entity types"," of ",[2190,3371,3249],{}," from that package's manifest, when the package resolves from the project root. A project names them like any other offered type — ",[2190,3374,2625],{},[2190,3376,3377],{},"'BlogCollection'",[2190,3379,3380],{},"'Product'"," — and their canonical queries answer from CMS entries. So do the canonical page types built on a served by-slug query, such as ",[2190,3383,3384],{},"blog/post-single",[2181,3386,3387],{},"The offer serves these queries by default:",[2643,3389,3390,3403],{},[2646,3391,3392],{},[2649,3393,3394,3397,3400],{},[2652,3395,3396],{},"Type",[2652,3398,3399],{},"Query",[2652,3401,3402],{},"Served as",[2658,3404,3405,3421,3445,3466,3487,3507],{},[2649,3406,3407,3411,3416],{},[2663,3408,3409],{},[2190,3410,344],{},[2663,3412,3413],{},[2190,3414,3415],{},"ecommerce/product/by-slug",[2663,3417,3418],{},[2190,3419,3420],{},"'by-slug'",[2649,3422,3423,3427,3432],{},[2663,3424,3425],{},[2190,3426,344],{},[2663,3428,3429],{},[2190,3430,3431],{},"ecommerce/product/by-category-slug",[2663,3433,3434,3435,3438,3439,3441,3442],{},"through ",[2190,3436,3437],{},"ecommerce/category/products"," from a ",[2190,3440,428],{}," found by slug in ",[2190,3443,3444],{},"categorySlug",[2649,3446,3447,3451,3456],{},[2663,3448,3449],{},[2190,3450,344],{},[2663,3452,3453],{},[2190,3454,3455],{},"ecommerce/product/by-category-id",[2663,3457,3434,3458,3438,3460,3462,3463],{},[2190,3459,3437],{},[2190,3461,428],{}," found by id in ",[2190,3464,3465],{},"categoryId",[2649,3467,3468,3472,3480],{},[2663,3469,3470],{},[2190,3471,428],{},[2663,3473,3474,2279,3477],{},[2190,3475,3476],{},"ecommerce/category/all",[2190,3478,3479],{},"ecommerce/category/by-slug",[2663,3481,3482,2279,3485],{},[2190,3483,3484],{},"'all'",[2190,3486,3420],{},[2649,3488,3489,3493,3501],{},[2663,3490,3491],{},[2190,3492,452],{},[2663,3494,3495,2279,3498],{},[2190,3496,3497],{},"blog/post/all",[2190,3499,3500],{},"blog/post/by-slug",[2663,3502,3503,2279,3505],{},[2190,3504,3484],{},[2190,3506,3420],{},[2649,3508,3509,3513,3521],{},[2663,3510,3511],{},[2190,3512,356],{},[2663,3514,3515,2279,3518],{},[2190,3516,3517],{},"blog/collection/all",[2190,3519,3520],{},"blog/collection/by-slug",[2663,3522,3523,2279,3525],{},[2190,3524,3484],{},[2190,3526,3420],{},[2181,3528,3529,3530,3532,3533,3536,3537,3541],{},"The two category queries need ",[2190,3531,428],{}," among the collections too. Product search, posts by topic and ",[2190,3534,3535],{},"ProductList"," have no default: list them under ",[2202,3538,3539],{"href":2232},[2190,3540,2228],{}," if the CMS should answer them.",[2181,3543,3544,3545,3548],{},"A manifest is read at build time, so the build already knows which of its tokens the CMS cannot serve. Those appear in Cockpit on the type's entry list, under ",[2185,3546,3547],{},"Not served by the CMS",", with the reason. For a token module the same check runs when the server starts, and its result goes to the server log only.",[2176,3550,2711],{"id":3551},"mandatory-components",[2181,3553,3554],{},"Every component of an entry may be absent. The resolver serves the entity without it, and Orchestr requires none. That breaks a page whose sections read a component without checking for it, so the type's author can mark components as mandatory.",[2181,3556,3557,3559],{},[2190,3558,2704],{}," names them, by component name:",[2216,3561,3562,3568],{},[2219,3563,3564,3567],{},[2185,3565,3566],{},"On an offer."," The offering app decides, because its sections are what break.",[2219,3569,3570,3573],{},[2185,3571,3572],{},"On a project collection entry,"," only for a type no app offers. On an offered type it is ignored, and the build warns.",[2181,3575,3576],{},"Cockpit refuses to publish an entry that lacks a mandatory component in any served locale, after that locale's fallbacks. The form marks the component as required and offers no way to remove it.",[2181,3578,3579,3580,3582],{},"A canonical type requires ",[2190,3581,2733],{}," when it has one, unless the table below lists it; a listed type requires exactly its list:",[2643,3584,3585,3593],{},[2646,3586,3587],{},[2649,3588,3589,3591],{},[2652,3590,3396],{},[2652,3592,2711],{},[2658,3594,3595,3611,3623,3642],{},[2649,3596,3597,3601],{},[2663,3598,3599],{},[2190,3600,452],{},[2663,3602,3603,2279,3605,2279,3608],{},[2190,3604,2733],{},[2190,3606,3607],{},"excerpt",[2190,3609,3610],{},"content",[2649,3612,3613,3617],{},[2663,3614,3615],{},[2190,3616,368],{},[2663,3618,3619,2279,3621],{},[2190,3620,2733],{},[2190,3622,3610],{},[2649,3624,3625,3629],{},[2663,3626,3627],{},[2190,3628,344],{},[2663,3630,3631,2279,3633,2279,3636,2279,3639],{},[2190,3632,2733],{},[2190,3634,3635],{},"info",[2190,3637,3638],{},"prices",[2190,3640,3641],{},"media",[2649,3643,3644,3648],{},[2663,3645,3646],{},[2190,3647,388],{},[2663,3649,3650],{},[2190,3651,3652],{},"availability",[2181,3654,3655],{},"A name that matches no component of the type is not enforced: the build or the server start logs it, and Cockpit leaves it out of what it checks.",[2176,3657,3659],{"id":3658},"token-files-for-your-own-types","Token files for your own types",[2181,3661,3662],{},"A token file defines a type no app offers. It exports the type's tokens — components, and optionally queries, links and page types. Only the exported tokens count.",[2302,3664,3667],{"className":2304,"code":3665,"filename":3666,"language":2307,"meta":2308,"style":2308},"import { z } from 'zod/v4';\nimport { definePageTypeToken } from '@laioutr-core/core-types/frontend';\nimport { defineEntityComponentToken, defineQueryToken } from '@laioutr-core/core-types/orchestr';\n\nexport const AuthorBase = defineEntityComponentToken('base', {\n  entityType: 'Author',\n  schema: z.object({\n    name: z.string(),\n    slug: z.string(),\n    email: z.string().meta({ cms: { localized: false } }),\n    bornOn: z.date().optional(),\n  }),\n});\n\nexport const AllAuthorsQuery = defineQueryToken('acme/author/all', {\n  entity: 'Author',\n  type: 'multi',\n  label: 'All authors',\n  input: z.object({}),\n  defaultLimit: 12,\n});\n\nexport const AuthorBySlugQuery = defineQueryToken('acme/author/by-slug', {\n  entity: 'Author',\n  type: 'single',\n  label: 'Author by slug',\n  input: z.object({ slug: z.string() }),\n});\n\nexport const AuthorPage = definePageTypeToken('acme/author-page', {\n  kind: 'dynamic',\n  studio: { label: 'Author', group: 'Authors' },\n  requiredQueries: [\n    {\n      alias: 'author',\n      entityType: 'Author',\n      single: true,\n      default: {\n        label: 'Author',\n        token: AuthorBySlugQuery,\n        inputRules: { slug: { var: 'route.params.slug' } },\n      },\n    },\n  ],\n  pathConstraints: { requiredParams: ['slug'], default: '/authors/:slug' },\n  resolveFor: [{ referenceType: 'Author' }],\n});\n","cms/author.tokens.ts",[2190,3668,3669,3691,3713,3740,3744,3771,3786,3804,3822,3839,3886,3911,3920,3928,3932,3958,3973,3989,4005,4027,4039,4047,4051,4077,4091,4107,4123,4160,4169,4174,4201,4218,4255,4265,4270,4287,4303,4316,4326,4342,4355,4387,4393,4399,4407,4447,4476],{"__ignoreMap":2308},[2312,3670,3671,3673,3675,3678,3680,3682,3684,3687,3689],{"class":2314,"line":2315},[2312,3672,2828],{"class":2318},[2312,3674,2557],{"class":2333},[2312,3676,3677],{"class":2329}," z",[2312,3679,2841],{"class":2333},[2312,3681,2844],{"class":2318},[2312,3683,2415],{"class":2333},[2312,3685,3686],{"class":2379},"zod/v4",[2312,3688,2346],{"class":2333},[2312,3690,2463],{"class":2333},[2312,3692,3693,3695,3697,3700,3702,3704,3706,3709,3711],{"class":2314,"line":2337},[2312,3694,2828],{"class":2318},[2312,3696,2557],{"class":2333},[2312,3698,3699],{"class":2329}," definePageTypeToken",[2312,3701,2841],{"class":2333},[2312,3703,2844],{"class":2318},[2312,3705,2415],{"class":2333},[2312,3707,3708],{"class":2379},"@laioutr-core/core-types/frontend",[2312,3710,2346],{"class":2333},[2312,3712,2463],{"class":2333},[2312,3714,3715,3717,3719,3722,3724,3727,3729,3731,3733,3736,3738],{"class":2314,"line":2355},[2312,3716,2828],{"class":2318},[2312,3718,2557],{"class":2333},[2312,3720,3721],{"class":2329}," defineEntityComponentToken",[2312,3723,2422],{"class":2333},[2312,3725,3726],{"class":2329}," defineQueryToken",[2312,3728,2841],{"class":2333},[2312,3730,2844],{"class":2318},[2312,3732,2415],{"class":2333},[2312,3734,3735],{"class":2379},"@laioutr-core/core-types/orchestr",[2312,3737,2346],{"class":2333},[2312,3739,2463],{"class":2333},[2312,3741,3742],{"class":2314,"line":2366},[2312,3743,2907],{"emptyLinePlaceholder":2906},[2312,3745,3746,3748,3751,3754,3757,3759,3761,3763,3765,3767,3769],{"class":2314,"line":2373},[2312,3747,2319],{"class":2318},[2312,3749,3750],{"class":2488}," const",[2312,3752,3753],{"class":2329}," AuthorBase ",[2312,3755,3756],{"class":2333},"=",[2312,3758,3721],{"class":2325},[2312,3760,2330],{"class":2329},[2312,3762,2346],{"class":2333},[2312,3764,2733],{"class":2379},[2312,3766,2346],{"class":2333},[2312,3768,2422],{"class":2333},[2312,3770,2352],{"class":2333},[2312,3772,3773,3776,3778,3780,3782,3784],{"class":2314,"line":2387},[2312,3774,3775],{"class":2343},"  entityType",[2312,3777,2349],{"class":2333},[2312,3779,2415],{"class":2333},[2312,3781,2199],{"class":2379},[2312,3783,2346],{"class":2333},[2312,3785,2384],{"class":2333},[2312,3787,3788,3791,3793,3795,3797,3800,3802],{"class":2314,"line":2398},[2312,3789,3790],{"class":2343},"  schema",[2312,3792,2349],{"class":2333},[2312,3794,3677],{"class":2329},[2312,3796,2613],{"class":2333},[2312,3798,3799],{"class":2325},"object",[2312,3801,2330],{"class":2329},[2312,3803,2334],{"class":2333},[2312,3805,3806,3809,3811,3813,3815,3818,3820],{"class":2314,"line":2404},[2312,3807,3808],{"class":2343},"    name",[2312,3810,2349],{"class":2333},[2312,3812,3677],{"class":2329},[2312,3814,2613],{"class":2333},[2312,3816,3817],{"class":2325},"string",[2312,3819,2958],{"class":2329},[2312,3821,2384],{"class":2333},[2312,3823,3824,3827,3829,3831,3833,3835,3837],{"class":2314,"line":2440},[2312,3825,3826],{"class":2343},"    slug",[2312,3828,2349],{"class":2333},[2312,3830,3677],{"class":2329},[2312,3832,2613],{"class":2333},[2312,3834,3817],{"class":2325},[2312,3836,2958],{"class":2329},[2312,3838,2384],{"class":2333},[2312,3840,3841,3844,3846,3848,3850,3852,3854,3856,3858,3860,3862,3865,3867,3869,3872,3874,3878,3880,3882,3884],{"class":2314,"line":2448},[2312,3842,3843],{"class":2343},"    email",[2312,3845,2349],{"class":2333},[2312,3847,3677],{"class":2329},[2312,3849,2613],{"class":2333},[2312,3851,3817],{"class":2325},[2312,3853,2958],{"class":2329},[2312,3855,2613],{"class":2333},[2312,3857,2986],{"class":2325},[2312,3859,2330],{"class":2329},[2312,3861,3292],{"class":2333},[2312,3863,3864],{"class":2343}," cms",[2312,3866,2349],{"class":2333},[2312,3868,2557],{"class":2333},[2312,3870,3871],{"class":2343}," localized",[2312,3873,2349],{"class":2333},[2312,3875,3877],{"class":3876},"sfNiH"," false",[2312,3879,2841],{"class":2333},[2312,3881,2841],{"class":2333},[2312,3883,2460],{"class":2329},[2312,3885,2384],{"class":2333},[2312,3887,3888,3891,3893,3895,3897,3900,3902,3904,3907,3909],{"class":2314,"line":2454},[2312,3889,3890],{"class":2343},"    bornOn",[2312,3892,2349],{"class":2333},[2312,3894,3677],{"class":2329},[2312,3896,2613],{"class":2333},[2312,3898,3899],{"class":2325},"date",[2312,3901,2958],{"class":2329},[2312,3903,2613],{"class":2333},[2312,3905,3906],{"class":2325},"optional",[2312,3908,2958],{"class":2329},[2312,3910,2384],{"class":2333},[2312,3912,3913,3916,3918],{"class":2314,"line":3020},[2312,3914,3915],{"class":2333},"  }",[2312,3917,2460],{"class":2329},[2312,3919,2384],{"class":2333},[2312,3921,3922,3924,3926],{"class":2314,"line":3028},[2312,3923,2457],{"class":2333},[2312,3925,2460],{"class":2329},[2312,3927,2463],{"class":2333},[2312,3929,3930],{"class":2314,"line":3055},[2312,3931,2907],{"emptyLinePlaceholder":2906},[2312,3933,3934,3936,3938,3941,3943,3945,3947,3949,3952,3954,3956],{"class":2314,"line":3065},[2312,3935,2319],{"class":2318},[2312,3937,3750],{"class":2488},[2312,3939,3940],{"class":2329}," AllAuthorsQuery ",[2312,3942,3756],{"class":2333},[2312,3944,3726],{"class":2325},[2312,3946,2330],{"class":2329},[2312,3948,2346],{"class":2333},[2312,3950,3951],{"class":2379},"acme/author/all",[2312,3953,2346],{"class":2333},[2312,3955,2422],{"class":2333},[2312,3957,2352],{"class":2333},[2312,3959,3960,3963,3965,3967,3969,3971],{"class":2314,"line":3071},[2312,3961,3962],{"class":2343},"  entity",[2312,3964,2349],{"class":2333},[2312,3966,2415],{"class":2333},[2312,3968,2199],{"class":2379},[2312,3970,2346],{"class":2333},[2312,3972,2384],{"class":2333},[2312,3974,3975,3978,3980,3982,3985,3987],{"class":2314,"line":3087},[2312,3976,3977],{"class":2343},"  type",[2312,3979,2349],{"class":2333},[2312,3981,2415],{"class":2333},[2312,3983,3984],{"class":2379},"multi",[2312,3986,2346],{"class":2333},[2312,3988,2384],{"class":2333},[2312,3990,3991,3994,3996,3998,4001,4003],{"class":2314,"line":3110},[2312,3992,3993],{"class":2343},"  label",[2312,3995,2349],{"class":2333},[2312,3997,2415],{"class":2333},[2312,3999,4000],{"class":2379},"All authors",[2312,4002,2346],{"class":2333},[2312,4004,2384],{"class":2333},[2312,4006,4007,4010,4012,4014,4016,4018,4020,4023,4025],{"class":2314,"line":3126},[2312,4008,4009],{"class":2343},"  input",[2312,4011,2349],{"class":2333},[2312,4013,3677],{"class":2329},[2312,4015,2613],{"class":2333},[2312,4017,3799],{"class":2325},[2312,4019,2330],{"class":2329},[2312,4021,4022],{"class":2333},"{}",[2312,4024,2460],{"class":2329},[2312,4026,2384],{"class":2333},[2312,4028,4029,4032,4034,4037],{"class":2314,"line":3146},[2312,4030,4031],{"class":2343},"  defaultLimit",[2312,4033,2349],{"class":2333},[2312,4035,4036],{"class":2562}," 12",[2312,4038,2384],{"class":2333},[2312,4040,4041,4043,4045],{"class":2314,"line":3152},[2312,4042,2457],{"class":2333},[2312,4044,2460],{"class":2329},[2312,4046,2463],{"class":2333},[2312,4048,4049],{"class":2314,"line":3160},[2312,4050,2907],{"emptyLinePlaceholder":2906},[2312,4052,4053,4055,4057,4060,4062,4064,4066,4068,4071,4073,4075],{"class":2314,"line":3170},[2312,4054,2319],{"class":2318},[2312,4056,3750],{"class":2488},[2312,4058,4059],{"class":2329}," AuthorBySlugQuery ",[2312,4061,3756],{"class":2333},[2312,4063,3726],{"class":2325},[2312,4065,2330],{"class":2329},[2312,4067,2346],{"class":2333},[2312,4069,4070],{"class":2379},"acme/author/by-slug",[2312,4072,2346],{"class":2333},[2312,4074,2422],{"class":2333},[2312,4076,2352],{"class":2333},[2312,4078,4079,4081,4083,4085,4087,4089],{"class":2314,"line":3175},[2312,4080,3962],{"class":2343},[2312,4082,2349],{"class":2333},[2312,4084,2415],{"class":2333},[2312,4086,2199],{"class":2379},[2312,4088,2346],{"class":2333},[2312,4090,2384],{"class":2333},[2312,4092,4094,4096,4098,4100,4103,4105],{"class":2314,"line":4093},25,[2312,4095,3977],{"class":2343},[2312,4097,2349],{"class":2333},[2312,4099,2415],{"class":2333},[2312,4101,4102],{"class":2379},"single",[2312,4104,2346],{"class":2333},[2312,4106,2384],{"class":2333},[2312,4108,4110,4112,4114,4116,4119,4121],{"class":2314,"line":4109},26,[2312,4111,3993],{"class":2343},[2312,4113,2349],{"class":2333},[2312,4115,2415],{"class":2333},[2312,4117,4118],{"class":2379},"Author by slug",[2312,4120,2346],{"class":2333},[2312,4122,2384],{"class":2333},[2312,4124,4126,4128,4130,4132,4134,4136,4138,4140,4143,4145,4147,4149,4151,4154,4156,4158],{"class":2314,"line":4125},27,[2312,4127,4009],{"class":2343},[2312,4129,2349],{"class":2333},[2312,4131,3677],{"class":2329},[2312,4133,2613],{"class":2333},[2312,4135,3799],{"class":2325},[2312,4137,2330],{"class":2329},[2312,4139,3292],{"class":2333},[2312,4141,4142],{"class":2343}," slug",[2312,4144,2349],{"class":2333},[2312,4146,3677],{"class":2329},[2312,4148,2613],{"class":2333},[2312,4150,3817],{"class":2325},[2312,4152,4153],{"class":2329},"() ",[2312,4155,2457],{"class":2333},[2312,4157,2460],{"class":2329},[2312,4159,2384],{"class":2333},[2312,4161,4163,4165,4167],{"class":2314,"line":4162},28,[2312,4164,2457],{"class":2333},[2312,4166,2460],{"class":2329},[2312,4168,2463],{"class":2333},[2312,4170,4172],{"class":2314,"line":4171},29,[2312,4173,2907],{"emptyLinePlaceholder":2906},[2312,4175,4177,4179,4181,4184,4186,4188,4190,4192,4195,4197,4199],{"class":2314,"line":4176},30,[2312,4178,2319],{"class":2318},[2312,4180,3750],{"class":2488},[2312,4182,4183],{"class":2329}," AuthorPage ",[2312,4185,3756],{"class":2333},[2312,4187,3699],{"class":2325},[2312,4189,2330],{"class":2329},[2312,4191,2346],{"class":2333},[2312,4193,4194],{"class":2379},"acme/author-page",[2312,4196,2346],{"class":2333},[2312,4198,2422],{"class":2333},[2312,4200,2352],{"class":2333},[2312,4202,4204,4207,4209,4211,4214,4216],{"class":2314,"line":4203},31,[2312,4205,4206],{"class":2343},"  kind",[2312,4208,2349],{"class":2333},[2312,4210,2415],{"class":2333},[2312,4212,4213],{"class":2379},"dynamic",[2312,4215,2346],{"class":2333},[2312,4217,2384],{"class":2333},[2312,4219,4221,4224,4226,4228,4231,4233,4235,4237,4239,4241,4244,4246,4248,4251,4253],{"class":2314,"line":4220},32,[2312,4222,4223],{"class":2343},"  studio",[2312,4225,2349],{"class":2333},[2312,4227,2557],{"class":2333},[2312,4229,4230],{"class":2343}," label",[2312,4232,2349],{"class":2333},[2312,4234,2415],{"class":2333},[2312,4236,2199],{"class":2379},[2312,4238,2346],{"class":2333},[2312,4240,2422],{"class":2333},[2312,4242,4243],{"class":2343}," group",[2312,4245,2349],{"class":2333},[2312,4247,2415],{"class":2333},[2312,4249,4250],{"class":2379},"Authors",[2312,4252,2346],{"class":2333},[2312,4254,2437],{"class":2333},[2312,4256,4258,4261,4263],{"class":2314,"line":4257},33,[2312,4259,4260],{"class":2343},"  requiredQueries",[2312,4262,2349],{"class":2333},[2312,4264,2363],{"class":2329},[2312,4266,4268],{"class":2314,"line":4267},34,[2312,4269,2501],{"class":2333},[2312,4271,4273,4276,4278,4280,4283,4285],{"class":2314,"line":4272},35,[2312,4274,4275],{"class":2343},"      alias",[2312,4277,2349],{"class":2333},[2312,4279,2415],{"class":2333},[2312,4281,4282],{"class":2379},"author",[2312,4284,2346],{"class":2333},[2312,4286,2384],{"class":2333},[2312,4288,4290,4293,4295,4297,4299,4301],{"class":2314,"line":4289},36,[2312,4291,4292],{"class":2343},"      entityType",[2312,4294,2349],{"class":2333},[2312,4296,2415],{"class":2333},[2312,4298,2199],{"class":2379},[2312,4300,2346],{"class":2333},[2312,4302,2384],{"class":2333},[2312,4304,4306,4309,4311,4314],{"class":2314,"line":4305},37,[2312,4307,4308],{"class":2343},"      single",[2312,4310,2349],{"class":2333},[2312,4312,4313],{"class":3876}," true",[2312,4315,2384],{"class":2333},[2312,4317,4319,4322,4324],{"class":2314,"line":4318},38,[2312,4320,4321],{"class":2343},"      default",[2312,4323,2349],{"class":2333},[2312,4325,2352],{"class":2333},[2312,4327,4329,4332,4334,4336,4338,4340],{"class":2314,"line":4328},39,[2312,4330,4331],{"class":2343},"        label",[2312,4333,2349],{"class":2333},[2312,4335,2415],{"class":2333},[2312,4337,2199],{"class":2379},[2312,4339,2346],{"class":2333},[2312,4341,2384],{"class":2333},[2312,4343,4345,4348,4350,4353],{"class":2314,"line":4344},40,[2312,4346,4347],{"class":2343},"        token",[2312,4349,2349],{"class":2333},[2312,4351,4352],{"class":2329}," AuthorBySlugQuery",[2312,4354,2384],{"class":2333},[2312,4356,4358,4361,4363,4365,4367,4369,4371,4374,4376,4378,4381,4383,4385],{"class":2314,"line":4357},41,[2312,4359,4360],{"class":2343},"        inputRules",[2312,4362,2349],{"class":2333},[2312,4364,2557],{"class":2333},[2312,4366,4142],{"class":2343},[2312,4368,2349],{"class":2333},[2312,4370,2557],{"class":2333},[2312,4372,4373],{"class":2343}," var",[2312,4375,2349],{"class":2333},[2312,4377,2415],{"class":2333},[2312,4379,4380],{"class":2379},"route.params.slug",[2312,4382,2346],{"class":2333},[2312,4384,2841],{"class":2333},[2312,4386,2437],{"class":2333},[2312,4388,4390],{"class":2314,"line":4389},42,[2312,4391,4392],{"class":2333},"      },\n",[2312,4394,4396],{"class":2314,"line":4395},43,[2312,4397,4398],{"class":2333},"    },\n",[2312,4400,4402,4405],{"class":2314,"line":4401},44,[2312,4403,4404],{"class":2329},"  ]",[2312,4406,2384],{"class":2333},[2312,4408,4410,4413,4415,4417,4420,4422,4424,4426,4428,4430,4432,4434,4436,4438,4440,4443,4445],{"class":2314,"line":4409},45,[2312,4411,4412],{"class":2343},"  pathConstraints",[2312,4414,2349],{"class":2333},[2312,4416,2557],{"class":2333},[2312,4418,4419],{"class":2343}," requiredParams",[2312,4421,2349],{"class":2333},[2312,4423,2569],{"class":2329},[2312,4425,2346],{"class":2333},[2312,4427,2686],{"class":2379},[2312,4429,2346],{"class":2333},[2312,4431,2586],{"class":2329},[2312,4433,2422],{"class":2333},[2312,4435,2322],{"class":2343},[2312,4437,2349],{"class":2333},[2312,4439,2415],{"class":2333},[2312,4441,4442],{"class":2379},"/authors/:slug",[2312,4444,2346],{"class":2333},[2312,4446,2437],{"class":2333},[2312,4448,4450,4453,4455,4457,4459,4462,4464,4466,4468,4470,4472,4474],{"class":2314,"line":4449},46,[2312,4451,4452],{"class":2343},"  resolveFor",[2312,4454,2349],{"class":2333},[2312,4456,2569],{"class":2329},[2312,4458,3292],{"class":2333},[2312,4460,4461],{"class":2343}," referenceType",[2312,4463,2349],{"class":2333},[2312,4465,2415],{"class":2333},[2312,4467,2199],{"class":2379},[2312,4469,2346],{"class":2333},[2312,4471,2841],{"class":2333},[2312,4473,2586],{"class":2329},[2312,4475,2384],{"class":2333},[2312,4477,4479,4481,4483],{"class":2314,"line":4478},47,[2312,4480,2457],{"class":2333},[2312,4482,2460],{"class":2329},[2312,4484,2463],{"class":2333},[2745,4486,4488],{"id":4487},"components","Components",[2181,4490,4491,4492,4495,4496,4499,4500,4503],{},"Each component schema is a ",[2190,4493,4494],{},"z.object"," with named fields, even when the value is a shared type such as ",[2190,4497,4498],{},"HtmlFragment",": name it under a key (",[2190,4501,4502],{},"z.object({ bio: HtmlFragment })","). That keeps every component's shape the same kind of thing, and lets you add a field next to it later without changing the shared type. Cockpit builds the entry form from the component schemas of the deployed storefront, and publishes only an entry that passes them.",[2181,4505,4506,4509,4510,4513,4514,4517],{},[2185,4507,4508],{},"Localization is decided per field."," By default a string is translated per locale, unless it carries an enum, a constant or a format such as a date. Rich text, media and links are translated too. Numbers, booleans, enums and dates are one value for every locale. Override the default on a field with ",[2190,4511,4512],{},".meta({ cms: { localized: boolean } })",", as ",[2190,4515,4516],{},"email"," does above. A value is read along the language's fallback chain, as the project's language configuration defines it.",[2745,4519,4521],{"id":4520},"form-hints","Form hints",[2181,4523,4524,4527],{},[2190,4525,4526],{},".meta({ cms: { … } })"," on a field tells Cockpit how to edit it. No hint changes how your storefront parses a value.",[2181,4529,4530,4531,4533,4534,2778,4537,3242,4540,4543],{},"Each key is read on its own, and the outermost one wins. A hint at the field therefore overrides the same key on the shared type the field uses, key by key: ",[2190,4532,473],{}," carries ",[2190,4535,4536],{},"kind: 'laioutr.money'",[2190,4538,4539],{},"localized: false",[2190,4541,4542],{},"price: Money.meta({ cms: { label: 'Price' } })"," keeps both and adds the label.",[2643,4545,4546,4556],{},[2646,4547,4548],{},[2649,4549,4550,4553],{},[2652,4551,4552],{},"Key",[2652,4554,4555],{},"What it does",[2658,4557,4558,4573,4591,4615,4625,4635,4645],{},[2649,4559,4560,4565],{},[2663,4561,4562],{},[2190,4563,4564],{},"localized",[2663,4566,4567,3221,4570,4572],{},[2190,4568,4569],{},"true",[2190,4571,2696],{},": whether the value differs per locale (see above). It also applies to every field below the one that carries it.",[2649,4574,4575,4580],{},[2663,4576,4577],{},[2190,4578,4579],{},"label",[2663,4581,4582,4583,4586,4587,4590],{},"The field's label. Without it, Cockpit uses the schema's ",[2190,4584,4585],{},"title",", then the property name in words (",[2190,4588,4589],{},"bornOn"," reads \"Born On\").",[2649,4592,4593,4598],{},[2663,4594,4595],{},[2190,4596,4597],{},"description",[2663,4599,4600,4601,4603,4604,4607,4608,3221,4611,4614],{},"Help text under the field. Without it, Cockpit uses the schema's ",[2190,4602,4597],{},", which is often a type's JSDoc; a ",[2190,4605,4606],{},"{@link Target | text}"," in it reads as its text. ",[2190,4609,4610],{},"''",[2190,4612,4613],{},"null"," shows no help text, even when the schema has a description.",[2649,4616,4617,4622],{},[2663,4618,4619],{},[2190,4620,4621],{},"placeholder",[2663,4623,4624],{},"Shown in the field's input while it is empty. A value inherited from a fallback locale is shown instead where there is one.",[2649,4626,4627,4632],{},[2663,4628,4629],{},[2190,4630,4631],{},"default",[2663,4633,4634],{},"Written when the value is created — a new entry, a new list item, a newly chosen variant, a new object — and never to a value that already exists. A localized default is written in the locale being edited. It is an ordinary value: the entry's schema checks it like any other.",[2649,4636,4637,4642],{},[2663,4638,4639],{},[2190,4640,4641],{},"suggestions",[2663,4643,4644],{},"A list of strings the editor offers for a string field. The field still accepts any other value. Empty strings and duplicates are dropped.",[2649,4646,4647,4652],{},[2663,4648,4649],{},[2190,4650,4651],{},"kind",[2663,4653,4654],{},"The editor to use, instead of the one the field's shape gives.",[2181,4656,4657,4662],{},[2185,4658,4659,4661],{},[2190,4660,4651],{}," values."," The editors Cockpit ships:",[2216,4664,4665,4701],{},[2219,4666,4667,4668,2279,4671,2279,4674,2279,4677,2279,4680,2279,4683,2279,4686,2279,4689,2279,4692,2279,4695,2279,4698,2765],{},"by shape: ",[2190,4669,4670],{},"core.string",[2190,4672,4673],{},"core.number",[2190,4675,4676],{},"core.integer",[2190,4678,4679],{},"core.boolean",[2190,4681,4682],{},"core.enum",[2190,4684,4685],{},"core.date",[2190,4687,4688],{},"core.datetime",[2190,4690,4691],{},"core.time",[2190,4693,4694],{},"core.object",[2190,4696,4697],{},"core.array",[2190,4699,4700],{},"core.union",[2219,4702,4703,4704,2279,4707,2279,4710,2279,4713,3242,4716,4719],{},"by meaning: ",[2190,4705,4706],{},"laioutr.richtext",[2190,4708,4709],{},"laioutr.money",[2190,4711,4712],{},"laioutr.media",[2190,4714,4715],{},"laioutr.link",[2190,4717,4718],{},"core.json"," for a raw JSON value.",[2181,4721,4722,4723,4725,4726,2279,4728,4725,4730,4732,4733,2778,4735,4737,4738,4740],{},"The shared types already carry the right kind — ",[2190,4724,4498],{}," is ",[2190,4727,4706],{},[2190,4729,473],{},[2190,4731,4709],{},", the media and link types are ",[2190,4734,4712],{},[2190,4736,4715],{}," — so a field that uses them needs no ",[2190,4739,4651],{}," of its own.",[2216,4742,4743,4752,4758],{},[2219,4744,4745,2279,4747,2778,4749,4751],{},[2190,4746,4712],{},[2190,4748,4715],{},[2190,4750,4718],{}," store the value whole, under one key. A media or link field offers exactly the media or link types its own schema accepts.",[2219,4753,4754,4755,4757],{},"Every other kind only changes the editor. Its editor must be able to write the field's shape: ",[2190,4756,4670],{}," on an object field, for example, shows the field read-only.",[2219,4759,4760],{},"A kind Cockpit has no editor for is still kept. Cockpit edits such a field as JSON when its value is stored whole, and shows it read-only when it is an object, a list or a union.",[2181,4762,4763,4766,4767,4770,4771,4774],{},[2185,4764,4765],{},"Dates:"," a ",[2190,4768,4769],{},"z.date()"," field is stored as an ISO 8601 timestamp in UTC and reaches your component as a ",[2190,4772,4773],{},"Date",". The editor enters it in the browser's time zone.",[2181,4776,4777,4780,4781,4784,4785,4788,4789,4791],{},[2185,4778,4779],{},"Empty values:"," a field that is ",[2190,4782,4783],{},".nullable()"," but not ",[2190,4786,4787],{},".optional()"," arrives as ",[2190,4790,4613],{}," when the entry leaves it blank.",[2181,4793,4794,4797],{},[2185,4795,4796],{},"A component that fails its schema"," costs the entry, not the list. The resolver skips the entry with a warning naming its id and the component; the entry's id stays in the query result, so the section receives an entity without data. Published entries passed the same schema when they were published, so this mostly concerns drafts in preview and a schema that changed after a publish.",[2745,4799,501],{"id":2228},[2181,4801,4802,4803,2297,4805,4807],{},"The CMS serves a query token only when the app that offers its type serves it by default, or the ",[2190,4804,2228],{},[2190,4806,2207],{}," lists it. The option maps each token to how the CMS answers it. Neither the token's name nor its input decides anything: a token of a served type that neither lists is not served, so the CMS never answers a query it was not asked to, such as a customer's wishlist with every product list.",[2181,4809,4810,4811,4813,4814,4816],{},"An entry in ",[2190,4812,2228],{}," overrides the offer's default for its token, and ",[2190,4815,2696],{}," switches a default off. A type that only a project token file defines has no defaults.",[2643,4818,4819,4838],{},[2646,4820,4821],{},[2649,4822,4823,4826,4829,4834],{},[2652,4824,4825],{},"Option",[2652,4827,4828],{},"Serves",[2652,4830,4831,4833],{},[2190,4832,3984],{}," token",[2652,4835,4836,4833],{},[2190,4837,4102],{},[2658,4839,4840,4855,4872,4886],{},[2649,4841,4842,4846,4849,4852],{},[2663,4843,4844],{},[2190,4845,3484],{},[2663,4847,4848],{},"every entry of the type, whatever the token's input",[2663,4850,4851],{},"every entry, most recently created first, paged with offset and limit",[2663,4853,4854],{},"the most recently created entry, or an error when none exists",[2649,4856,4857,4861,4866,4869],{},[2663,4858,4859],{},[2190,4860,3420],{},[2663,4862,4863,4864],{},"the entry whose slug is in the input key ",[2190,4865,2686],{},[2663,4867,4868],{},"a list of that one entry, or an empty list",[2663,4870,4871],{},"that entry, or an error when none exists",[2649,4873,4874,4879,4882,4884],{},[2663,4875,4876],{},[2190,4877,4878],{},"{ serve: 'by-slug', input: 'handle' }",[2663,4880,4881],{},"the same, with the slug in the input key you name",[2663,4883,4868],{},[2663,4885,4871],{},[2649,4887,4888,4893,4913,4916],{},[2663,4889,4890],{},[2190,4891,4892],{},"{ serve: 'through-link', link, source, by, input }",[2663,4894,4895,4896,4899,4900,4903,4904,3221,4906,4909,4910],{},"the entries that one entry of the ",[2190,4897,4898],{},"source"," type links to with the ",[2190,4901,4902],{},"link"," token; that entry is found by ",[2190,4905,2686],{},[2190,4907,4908],{},"id",", from the input key ",[2190,4911,4912],{},"input",[2663,4914,4915],{},"one page of the linked entries, in the order the editor gave them, with their total; an empty list when the input has no value or no source entry matches",[2663,4917,4918],{},"the first linked entry; an error when the input has no value, no source entry matches, or the source links to nothing",[2181,4920,4921,4922,4924,4925,4929],{},"For a shop whose categories and products are CMS entries, and whose editors sort the products of a category through the canonical ",[2190,4923,3437],{}," link, the ",[2202,4926,4928],{"href":4927},"#canonical-types","canonical defaults"," already serve products by slug and by category. This project switches off products by category id, which its storefront never binds:",[2302,4931,4933],{"className":2304,"code":4932,"filename":2306,"language":2307,"meta":2308,"style":2308},"export default defineNuxtConfig({\n  '@laioutr-app/cms': {\n    collections: ['Product', 'Category'],\n    queries: {\n      'ecommerce/product/by-category-id': false,\n    },\n  },\n});\n",[2190,4934,4935,4947,4959,4985,4994,5008,5012,5016],{"__ignoreMap":2308},[2312,4936,4937,4939,4941,4943,4945],{"class":2314,"line":2315},[2312,4938,2319],{"class":2318},[2312,4940,2322],{"class":2318},[2312,4942,2326],{"class":2325},[2312,4944,2330],{"class":2329},[2312,4946,2334],{"class":2333},[2312,4948,4949,4951,4953,4955,4957],{"class":2314,"line":2337},[2312,4950,2340],{"class":2333},[2312,4952,2207],{"class":2343},[2312,4954,2346],{"class":2333},[2312,4956,2349],{"class":2333},[2312,4958,2352],{"class":2333},[2312,4960,4961,4963,4965,4967,4969,4971,4973,4975,4977,4979,4981,4983],{"class":2314,"line":2355},[2312,4962,2358],{"class":2343},[2312,4964,2349],{"class":2333},[2312,4966,2569],{"class":2329},[2312,4968,2346],{"class":2333},[2312,4970,344],{"class":2379},[2312,4972,2346],{"class":2333},[2312,4974,2422],{"class":2333},[2312,4976,2415],{"class":2333},[2312,4978,428],{"class":2379},[2312,4980,2346],{"class":2333},[2312,4982,2586],{"class":2329},[2312,4984,2384],{"class":2333},[2312,4986,4987,4990,4992],{"class":2314,"line":2366},[2312,4988,4989],{"class":2343},"    queries",[2312,4991,2349],{"class":2333},[2312,4993,2352],{"class":2333},[2312,4995,4996,4998,5000,5002,5004,5006],{"class":2314,"line":2373},[2312,4997,2376],{"class":2333},[2312,4999,3455],{"class":2343},[2312,5001,2346],{"class":2333},[2312,5003,2349],{"class":2333},[2312,5005,3877],{"class":3876},[2312,5007,2384],{"class":2333},[2312,5009,5010],{"class":2314,"line":2387},[2312,5011,4398],{"class":2333},[2312,5013,5014],{"class":2314,"line":2398},[2312,5015,2451],{"class":2333},[2312,5017,5018,5020,5022],{"class":2314,"line":2404},[2312,5019,2457],{"class":2333},[2312,5021,2460],{"class":2329},[2312,5023,2463],{"class":2333},[2181,5025,5026],{},"A default written out in full has the same shape:",[2302,5028,5030],{"className":2304,"code":5029,"language":2307,"meta":2308,"style":2308},"'ecommerce/product/by-category-slug': {\n  serve: 'through-link',\n  link: 'ecommerce/category/products',\n  source: 'Category',\n  by: 'slug',\n  input: 'categorySlug',\n},\n",[2190,5031,5032,5044,5060,5075,5090,5105,5119],{"__ignoreMap":2308},[2312,5033,5034,5036,5038,5040,5042],{"class":2314,"line":2315},[2312,5035,2346],{"class":2333},[2312,5037,3431],{"class":2379},[2312,5039,2346],{"class":2333},[2312,5041,3289],{"class":2329},[2312,5043,2334],{"class":2333},[2312,5045,5046,5049,5051,5053,5056,5058],{"class":2314,"line":2337},[2312,5047,5048],{"class":2343},"  serve",[2312,5050,2349],{"class":2333},[2312,5052,2415],{"class":2333},[2312,5054,5055],{"class":2379},"through-link",[2312,5057,2346],{"class":2333},[2312,5059,2384],{"class":2333},[2312,5061,5062,5065,5067,5069,5071,5073],{"class":2314,"line":2355},[2312,5063,5064],{"class":2343},"  link",[2312,5066,2349],{"class":2333},[2312,5068,2415],{"class":2333},[2312,5070,3437],{"class":2379},[2312,5072,2346],{"class":2333},[2312,5074,2384],{"class":2333},[2312,5076,5077,5080,5082,5084,5086,5088],{"class":2314,"line":2366},[2312,5078,5079],{"class":2343},"  source",[2312,5081,2349],{"class":2333},[2312,5083,2415],{"class":2333},[2312,5085,428],{"class":2379},[2312,5087,2346],{"class":2333},[2312,5089,2384],{"class":2333},[2312,5091,5092,5095,5097,5099,5101,5103],{"class":2314,"line":2373},[2312,5093,5094],{"class":2343},"  by",[2312,5096,2349],{"class":2333},[2312,5098,2415],{"class":2333},[2312,5100,2686],{"class":2379},[2312,5102,2346],{"class":2333},[2312,5104,2384],{"class":2333},[2312,5106,5107,5109,5111,5113,5115,5117],{"class":2314,"line":2387},[2312,5108,4009],{"class":2343},[2312,5110,2349],{"class":2333},[2312,5112,2415],{"class":2333},[2312,5114,3444],{"class":2379},[2312,5116,2346],{"class":2333},[2312,5118,2384],{"class":2333},[2312,5120,5121],{"class":2314,"line":2398},[2312,5122,2947],{"class":2333},[2181,5124,5125,5126,5130,5131,2778,5134,5137,5138,5140,5141,5143,5144,2613],{},"The token file under ",[2202,5127,5129],{"href":5128},"#token-files-for-your-own-types","Token files"," serves its two queries once the project lists them as ",[2190,5132,5133],{},"'acme/author/all': 'all'",[2190,5135,5136],{},"'acme/author/by-slug': 'by-slug'",". A hosted project carries ",[2190,5139,2228],{}," in the app's config in ",[2190,5142,2469],{},", next to ",[2190,5145,2296],{},[2181,5147,5148,5149,5151,5152,5155],{},"A page of a ",[2190,5150,3984],{}," query holds the limit the request asks for, else the token's ",[2190,5153,5154],{},"defaultLimit",", else 24. cms-api serves 1 to 100 entries per request: a larger or smaller limit is answered with the nearest of the two, and the server warns.",[2181,5157,5158,5159,5162,5163,5165,5166,5168],{},"With ",[2190,5160,5161],{},"by: 'id'",", an input value that is not a CMS entry id, such as another platform's id or a typo in a binding, matches no source entry: a ",[2190,5164,3984],{}," query answers an empty list, a ",[2190,5167,4102],{}," query an error, and the server warns naming the value without asking cms-api.",[2181,5170,5171,5172,5174],{},"When an editor binds a section to a by-slug query or to a query through a link by id in Studio, Studio offers entries to pick from, searchable by title or slug: the published entries of the type for a by-slug query, and those of the link's ",[2190,5173,4898],{}," type for a query through a link by id. A query through a link by slug offers none. The search covers the first 500 entries of that type, in slug order, and needs that type to have a slug. A binding by slug stores the slug of the locale the editor picked the entry in, and a binding by id stores its id. A query by slug resolves that slug along the current locale's fallback chain, so a slug that is changed later, or that differs in another locale, may not find the entry there. Bind a fixed entry by id where the token allows it.",[2181,5176,5177,5180,5181,5183,5184,5186,5187,5189],{},[2185,5178,5179],{},"What is skipped."," A token that neither a default nor ",[2190,5182,2228],{}," serves is skipped as not listed, and one ",[2190,5185,2228],{}," sets to ",[2190,5188,2696],{}," as switched off. A listed token the CMS cannot serve is skipped with the reason:",[2216,5191,5192,5195,5198,5210],{},[2219,5193,5194],{},"a by-slug query of a type without a slug;",[2219,5196,5197],{},"a query whose input has no key of the name the option gives;",[2219,5199,5200,5201,5203,5204,4725,5207,2765],{},"a query through a link whose ",[2190,5202,4898],{}," is not a collection of the project, or has no slug when ",[2190,5205,5206],{},"by",[2190,5208,5209],{},"'slug'",[2219,5211,5200,5212,5214,5215,5217],{},[2190,5213,4902],{}," does not lead from ",[2190,5216,4898],{}," to the query's type. This one is checked when the server starts, and logged there only.",[2181,5219,5220,5221,5223,5224,5226,5227,5229,5230,5232],{},"A skip never fails the build or the server start: the type is served without that query, and the server logs one line per type that names the skipped tokens and why. For a manifest offer the build logs it instead, and Cockpit lists it. A malformed entry in ",[2190,5222,2228],{}," is ignored with a warning that names its token, and a token ",[2190,5225,2228],{}," lists that no collection has, such as a misspelled one, gets one warning when the server starts, or in the build warning when no collection is served at all. A default of a type the project does not serve gets no warning. When ",[2190,5228,2296],{}," names types and neither ",[2190,5231,2228],{}," nor the offering apps serve a query, the build warning says so first: the CMS then serves no query and indexes no page.",[2745,5234,5236],{"id":5235},"what-stops-a-type-from-being-served","What stops a type from being served",[2216,5238,5239,5245,5248],{},[2219,5240,5241,5242,5244],{},"A token file that exports no component of its ",[2190,5243,2629],{}," serves nothing, with a warning at server start.",[2219,5246,5247],{},"A component the server bundle does not register is dropped with a warning.",[2219,5249,5250,5251,5254],{},"A token module that throws while it is read, or a collection whose handlers cannot be registered, ",[2185,5252,5253],{},"stops the server from starting",", with an error that names the entity type and the module. A storefront that silently serves without one of its content types would be worse.",[2176,5256,5258],{"id":5257},"links","Links",[2181,5260,5261,5262,5266,5267,5270],{},"A relation between two entries is a ",[2202,5263,5265],{"href":5264},"/frontend/orchestr/queries#links","link token",". ",[2185,5268,5269],{},"A link is served by the collection of its source type",", and only when it is exported from a token module of that collection: the source type's offer, or a token file the project names for it. A link token in another collection's file is ignored.",[2181,5272,5273,5274,5276,5277,5279,5280,5282,5283,5285,5286,5288],{},"For a ",[2190,5275,2195],{}," → ",[2190,5278,2199],{}," link, where ",[2190,5281,2195],{}," is offered by an app and ",[2190,5284,2199],{}," comes from the project's own file, the project adds a token file for ",[2190,5287,2195],{},". It extends the offer:",[2302,5290,5292],{"className":2304,"code":5291,"filename":2306,"language":2307,"meta":2308,"style":2308},"'@laioutr-app/cms': {\n  collections: [\n    { entityType: 'Recipe', tokens: './cms/recipe.tokens' },\n    { entityType: 'Author', tokens: './cms/author.tokens' },\n  ],\n},\n",[2190,5293,5294,5306,5315,5345,5373,5379],{"__ignoreMap":2308},[2312,5295,5296,5298,5300,5302,5304],{"class":2314,"line":2315},[2312,5297,2346],{"class":2333},[2312,5299,2207],{"class":2379},[2312,5301,2346],{"class":2333},[2312,5303,3289],{"class":2329},[2312,5305,2334],{"class":2333},[2312,5307,5308,5311,5313],{"class":2314,"line":2337},[2312,5309,5310],{"class":2343},"  collections",[2312,5312,2349],{"class":2333},[2312,5314,2363],{"class":2329},[2312,5316,5317,5320,5322,5324,5326,5328,5330,5332,5334,5336,5338,5341,5343],{"class":2314,"line":2355},[2312,5318,5319],{"class":2333},"    {",[2312,5321,2410],{"class":2343},[2312,5323,2349],{"class":2333},[2312,5325,2415],{"class":2333},[2312,5327,2195],{"class":2379},[2312,5329,2346],{"class":2333},[2312,5331,2422],{"class":2333},[2312,5333,2425],{"class":2343},[2312,5335,2349],{"class":2333},[2312,5337,2415],{"class":2333},[2312,5339,5340],{"class":2379},"./cms/recipe.tokens",[2312,5342,2346],{"class":2333},[2312,5344,2437],{"class":2333},[2312,5346,5347,5349,5351,5353,5355,5357,5359,5361,5363,5365,5367,5369,5371],{"class":2314,"line":2366},[2312,5348,5319],{"class":2333},[2312,5350,2410],{"class":2343},[2312,5352,2349],{"class":2333},[2312,5354,2415],{"class":2333},[2312,5356,2199],{"class":2379},[2312,5358,2346],{"class":2333},[2312,5360,2422],{"class":2333},[2312,5362,2425],{"class":2343},[2312,5364,2349],{"class":2333},[2312,5366,2415],{"class":2333},[2312,5368,2432],{"class":2379},[2312,5370,2346],{"class":2333},[2312,5372,2437],{"class":2333},[2312,5374,5375,5377],{"class":2314,"line":2373},[2312,5376,4404],{"class":2329},[2312,5378,2384],{"class":2333},[2312,5380,5381],{"class":2314,"line":2387},[2312,5382,2947],{"class":2333},[2302,5384,5387],{"className":2304,"code":5385,"filename":5386,"language":2307,"meta":2308,"style":2308},"import { defineLinkToken } from '@laioutr-core/core-types/orchestr';\n\nexport const RecipeAuthorLink = defineLinkToken('acme/recipe/author', {\n  label: 'Recipe author',\n  source: 'Recipe',\n  target: 'Author',\n  type: 'single',\n});\n","cms/recipe.tokens.ts",[2190,5388,5389,5410,5414,5440,5455,5469,5484,5498],{"__ignoreMap":2308},[2312,5390,5391,5393,5395,5398,5400,5402,5404,5406,5408],{"class":2314,"line":2315},[2312,5392,2828],{"class":2318},[2312,5394,2557],{"class":2333},[2312,5396,5397],{"class":2329}," defineLinkToken",[2312,5399,2841],{"class":2333},[2312,5401,2844],{"class":2318},[2312,5403,2415],{"class":2333},[2312,5405,3735],{"class":2379},[2312,5407,2346],{"class":2333},[2312,5409,2463],{"class":2333},[2312,5411,5412],{"class":2314,"line":2337},[2312,5413,2907],{"emptyLinePlaceholder":2906},[2312,5415,5416,5418,5420,5423,5425,5427,5429,5431,5434,5436,5438],{"class":2314,"line":2355},[2312,5417,2319],{"class":2318},[2312,5419,3750],{"class":2488},[2312,5421,5422],{"class":2329}," RecipeAuthorLink ",[2312,5424,3756],{"class":2333},[2312,5426,5397],{"class":2325},[2312,5428,2330],{"class":2329},[2312,5430,2346],{"class":2333},[2312,5432,5433],{"class":2379},"acme/recipe/author",[2312,5435,2346],{"class":2333},[2312,5437,2422],{"class":2333},[2312,5439,2352],{"class":2333},[2312,5441,5442,5444,5446,5448,5451,5453],{"class":2314,"line":2366},[2312,5443,3993],{"class":2343},[2312,5445,2349],{"class":2333},[2312,5447,2415],{"class":2333},[2312,5449,5450],{"class":2379},"Recipe author",[2312,5452,2346],{"class":2333},[2312,5454,2384],{"class":2333},[2312,5456,5457,5459,5461,5463,5465,5467],{"class":2314,"line":2373},[2312,5458,5079],{"class":2343},[2312,5460,2349],{"class":2333},[2312,5462,2415],{"class":2333},[2312,5464,2195],{"class":2379},[2312,5466,2346],{"class":2333},[2312,5468,2384],{"class":2333},[2312,5470,5471,5474,5476,5478,5480,5482],{"class":2314,"line":2387},[2312,5472,5473],{"class":2343},"  target",[2312,5475,2349],{"class":2333},[2312,5477,2415],{"class":2333},[2312,5479,2199],{"class":2379},[2312,5481,2346],{"class":2333},[2312,5483,2384],{"class":2333},[2312,5485,5486,5488,5490,5492,5494,5496],{"class":2314,"line":2398},[2312,5487,3977],{"class":2343},[2312,5489,2349],{"class":2333},[2312,5491,2415],{"class":2333},[2312,5493,4102],{"class":2379},[2312,5495,2346],{"class":2333},[2312,5497,2384],{"class":2333},[2312,5499,5500,5502,5504],{"class":2314,"line":2404},[2312,5501,2457],{"class":2333},[2312,5503,2460],{"class":2329},[2312,5505,2463],{"class":2333},[2181,5507,5508],{},"Component data holds no references; a link relates two whole entries. A reference inside a component value — a list of items that each hold an entry and a caption — is not a link. Model the item as its own type, with a link to it.",[2216,5510,5511,5520,5526,5534,5537],{},[2219,5512,5513,5516,5517,5519],{},[2185,5514,5515],{},"Both ends must be declared collections."," A link whose target is not a collection of the project — another app's type, or a type not in ",[2190,5518,2296],{}," — is skipped, and Cockpit does not offer it for editing.",[2219,5521,5522,5523,5525],{},"A ",[2190,5524,4102],{}," link answers one target, and leaves a source without one out of its answer.",[2219,5527,5522,5528,5530,5531,5533],{},[2190,5529,3984],{}," link keeps the order the editor gave it and pages per source. Without pagination it answers at most ",[2190,5532,5154],{}," targets per source, and never more than 100.",[2219,5535,5536],{},"A visitor sees a link only to an entry that is published. A link to a target published later appears then, with no second publish of the source.",[2219,5538,5539,5542,5543,5546],{},[2185,5540,5541],{},"A deleted target"," is allowed. Cockpit's confirmation says how many entries link to it. The link disappears from delivery at once, and the source's editor shows the item as ",[2185,5544,5545],{},"Deleted entry",", for an editor to remove.",[2176,5548,5550],{"id":5549},"your-own-queries","Your own queries",[2181,5552,5553,5554,5556,5557,5560,5561,5564],{},"A query the ",[2190,5555,2228],{}," option cannot express — a fixed category, a combination of two lookups — is a query handler of the project's own. It reads the CMS through the content repository that ",[2190,5558,5559],{},"@laioutr-app/cms/server"," exports. ",[2190,5562,5563],{},"useCmsContent(clientEnv)"," returns it for one request: it reads drafts in content preview and published entries everywhere else, along the request's locale chain.",[2643,5566,5567,5577],{},[2646,5568,5569],{},[2649,5570,5571,5574],{},[2652,5572,5573],{},"Method",[2652,5575,5576],{},"Returns",[2658,5578,5579,5595,5617,5633],{},[2649,5580,5581,5586],{},[2663,5582,5583],{},[2190,5584,5585],{},"entryIdBySlug(entityType, slug)",[2663,5587,5588,5589,5591,5592,5594],{},"The id of the entry of ",[2190,5590,2629],{}," with that slug in the request's locale chain, or ",[2190,5593,4613],{},". Throws for a type that is not a CMS collection with a slug.",[2649,5596,5597,5602],{},[2663,5598,5599],{},[2190,5600,5601],{},"linkedIds(linkToken, sourceIds, page?)",[2663,5603,5604,5605,5608,5609,5612,5613,5616],{},"One item ",[2190,5606,5607],{},"{ sourceId, ids, total }"," per source, in the order of ",[2190,5610,5611],{},"sourceIds",": one page of the entries it links to with ",[2190,5614,5615],{},"linkToken",", in the editor's order, and their total.",[2649,5618,5619,5624],{},[2663,5620,5621],{},[2190,5622,5623],{},"list(entityType, page)",[2663,5625,5626,5629,5630,5632],{},[2190,5627,5628],{},"{ ids, total }",": one page of the entries of ",[2190,5631,2629],{},", most recently created first.",[2649,5634,5635,5640],{},[2663,5636,5637],{},[2190,5638,5639],{},"entries(entityType, ids)",[2663,5641,5642,5643,5646,5647,5650],{},"The entries that loaded, as ",[2190,5644,5645],{},"{ id, entityType, data }",", with ",[2190,5648,5649],{},"data"," the entry's components projected onto the request's locale chain.",[2181,5652,5653,4725,5656,5659,5660,5662,5663,3221,5665,5668,5669,2778,5672,5674],{},[2190,5654,5655],{},"page",[2190,5657,5658],{},"{ offset, limit }",", and a limit outside 1 to 100 is answered with the nearest of the two, with a warning. A cms-api request that fails, or does not answer within five seconds, throws an error naming the cms-api route, and the server warns naming what was read. ",[2190,5661,2187],{}," fetches in batches of up to 100: a failed batch costs only its own entries, with a warning, and it throws only when every batch failed. An id in ",[2190,5664,5611],{},[2190,5666,5667],{},"ids"," that is not a CMS entry id is left out, with one warning per call that names it; when none is left, ",[2190,5670,5671],{},"linkedIds",[2190,5673,2187],{}," answer an empty list without a cms-api request.",[2181,5676,5677,5678,2349],{},"A \"Bestsellers\" product slider that shows the products editors put into the category ",[2190,5679,5680],{},"bestsellers",[2302,5682,5685],{"className":2304,"code":5683,"filename":5684,"language":2307,"meta":2308,"style":2308},"import { useCmsContent } from '@laioutr-app/cms/server';\nimport { BestsellersQuery } from '../../../shared/tokens';\nimport { defineAcme } from '../middleware/defineAcme';\n\nexport default defineAcme.queryHandler({\n  implements: BestsellersQuery,\n  run: async ({ clientEnv, pagination }) => {\n    const cms = useCmsContent(clientEnv);\n    const categoryId = await cms.entryIdBySlug('Category', 'bestsellers');\n    if (!categoryId) return { ids: [], total: 0 };\n\n    const [products] = await cms.linkedIds('ecommerce/category/products', [categoryId], pagination ?? { offset: 0, limit: 24 });\n    return { ids: products?.ids ?? [], total: products?.total ?? 0 };\n  },\n});\n","src/runtime/server/orchestr/Product/bestsellers.query.ts",[2190,5686,5687,5708,5730,5752,5756,5773,5784,5814,5833,5872,5913,5917,5986,6028,6032],{"__ignoreMap":2308},[2312,5688,5689,5691,5693,5696,5698,5700,5702,5704,5706],{"class":2314,"line":2315},[2312,5690,2828],{"class":2318},[2312,5692,2557],{"class":2333},[2312,5694,5695],{"class":2329}," useCmsContent",[2312,5697,2841],{"class":2333},[2312,5699,2844],{"class":2318},[2312,5701,2415],{"class":2333},[2312,5703,5559],{"class":2379},[2312,5705,2346],{"class":2333},[2312,5707,2463],{"class":2333},[2312,5709,5710,5712,5714,5717,5719,5721,5723,5726,5728],{"class":2314,"line":2337},[2312,5711,2828],{"class":2318},[2312,5713,2557],{"class":2333},[2312,5715,5716],{"class":2329}," BestsellersQuery",[2312,5718,2841],{"class":2333},[2312,5720,2844],{"class":2318},[2312,5722,2415],{"class":2333},[2312,5724,5725],{"class":2379},"../../../shared/tokens",[2312,5727,2346],{"class":2333},[2312,5729,2463],{"class":2333},[2312,5731,5732,5734,5736,5739,5741,5743,5745,5748,5750],{"class":2314,"line":2355},[2312,5733,2828],{"class":2318},[2312,5735,2557],{"class":2333},[2312,5737,5738],{"class":2329}," defineAcme",[2312,5740,2841],{"class":2333},[2312,5742,2844],{"class":2318},[2312,5744,2415],{"class":2333},[2312,5746,5747],{"class":2379},"../middleware/defineAcme",[2312,5749,2346],{"class":2333},[2312,5751,2463],{"class":2333},[2312,5753,5754],{"class":2314,"line":2366},[2312,5755,2907],{"emptyLinePlaceholder":2906},[2312,5757,5758,5760,5762,5764,5766,5769,5771],{"class":2314,"line":2373},[2312,5759,2319],{"class":2318},[2312,5761,2322],{"class":2318},[2312,5763,5738],{"class":2329},[2312,5765,2613],{"class":2333},[2312,5767,5768],{"class":2325},"queryHandler",[2312,5770,2330],{"class":2329},[2312,5772,2334],{"class":2333},[2312,5774,5775,5778,5780,5782],{"class":2314,"line":2387},[2312,5776,5777],{"class":2343},"  implements",[2312,5779,2349],{"class":2333},[2312,5781,5716],{"class":2329},[2312,5783,2384],{"class":2333},[2312,5785,5786,5789,5791,5794,5797,5801,5803,5806,5809,5812],{"class":2314,"line":2398},[2312,5787,5788],{"class":2325},"  run",[2312,5790,2349],{"class":2333},[2312,5792,5793],{"class":2488}," async",[2312,5795,5796],{"class":2333}," ({",[2312,5798,5800],{"class":5799},"sHdIc"," clientEnv",[2312,5802,2422],{"class":2333},[2312,5804,5805],{"class":5799}," pagination",[2312,5807,5808],{"class":2333}," })",[2312,5810,5811],{"class":2488}," =>",[2312,5813,2352],{"class":2333},[2312,5815,5816,5818,5820,5822,5824,5826,5829,5831],{"class":2314,"line":2404},[2312,5817,2965],{"class":2488},[2312,5819,3864],{"class":2329},[2312,5821,2975],{"class":2333},[2312,5823,5695],{"class":2325},[2312,5825,2330],{"class":2343},[2312,5827,5828],{"class":2329},"clientEnv",[2312,5830,2460],{"class":2343},[2312,5832,2463],{"class":2333},[2312,5834,5835,5837,5840,5842,5845,5847,5849,5852,5854,5856,5858,5860,5862,5864,5866,5868,5870],{"class":2314,"line":2440},[2312,5836,2965],{"class":2488},[2312,5838,5839],{"class":2329}," categoryId",[2312,5841,2975],{"class":2333},[2312,5843,5844],{"class":2318}," await",[2312,5846,3864],{"class":2329},[2312,5848,2613],{"class":2333},[2312,5850,5851],{"class":2325},"entryIdBySlug",[2312,5853,2330],{"class":2343},[2312,5855,2346],{"class":2333},[2312,5857,428],{"class":2379},[2312,5859,2346],{"class":2333},[2312,5861,2422],{"class":2333},[2312,5863,2415],{"class":2333},[2312,5865,5680],{"class":2379},[2312,5867,2346],{"class":2333},[2312,5869,2460],{"class":2343},[2312,5871,2463],{"class":2333},[2312,5873,5874,5877,5879,5882,5884,5887,5890,5892,5895,5897,5900,5902,5905,5907,5910],{"class":2314,"line":2448},[2312,5875,5876],{"class":2318},"    if",[2312,5878,3218],{"class":2343},[2312,5880,5881],{"class":2333},"!",[2312,5883,3465],{"class":2329},[2312,5885,5886],{"class":2343},") ",[2312,5888,5889],{"class":2318},"return",[2312,5891,2557],{"class":2333},[2312,5893,5894],{"class":2343}," ids",[2312,5896,2349],{"class":2333},[2312,5898,5899],{"class":2343}," []",[2312,5901,2422],{"class":2333},[2312,5903,5904],{"class":2343}," total",[2312,5906,2349],{"class":2333},[2312,5908,5909],{"class":2562}," 0",[2312,5911,5912],{"class":2333}," };\n",[2312,5914,5915],{"class":2314,"line":2454},[2312,5916,2907],{"emptyLinePlaceholder":2906},[2312,5918,5919,5921,5923,5926,5928,5930,5932,5934,5936,5938,5940,5942,5944,5946,5948,5950,5952,5954,5956,5958,5961,5963,5966,5968,5970,5972,5975,5977,5980,5982,5984],{"class":2314,"line":3020},[2312,5920,2965],{"class":2488},[2312,5922,2569],{"class":2333},[2312,5924,5925],{"class":2329},"products",[2312,5927,2586],{"class":2333},[2312,5929,2975],{"class":2333},[2312,5931,5844],{"class":2318},[2312,5933,3864],{"class":2329},[2312,5935,2613],{"class":2333},[2312,5937,5671],{"class":2325},[2312,5939,2330],{"class":2343},[2312,5941,2346],{"class":2333},[2312,5943,3437],{"class":2379},[2312,5945,2346],{"class":2333},[2312,5947,2422],{"class":2333},[2312,5949,2569],{"class":2343},[2312,5951,3465],{"class":2329},[2312,5953,2586],{"class":2343},[2312,5955,2422],{"class":2333},[2312,5957,5805],{"class":2329},[2312,5959,5960],{"class":2333}," ??",[2312,5962,2557],{"class":2333},[2312,5964,5965],{"class":2343}," offset",[2312,5967,2349],{"class":2333},[2312,5969,5909],{"class":2562},[2312,5971,2422],{"class":2333},[2312,5973,5974],{"class":2343}," limit",[2312,5976,2349],{"class":2333},[2312,5978,5979],{"class":2562}," 24",[2312,5981,2841],{"class":2333},[2312,5983,2460],{"class":2343},[2312,5985,2463],{"class":2333},[2312,5987,5988,5991,5993,5995,5997,6000,6003,6005,6007,6009,6011,6013,6015,6017,6019,6022,6024,6026],{"class":2314,"line":3028},[2312,5989,5990],{"class":2318},"    return",[2312,5992,2557],{"class":2333},[2312,5994,5894],{"class":2343},[2312,5996,2349],{"class":2333},[2312,5998,5999],{"class":2329}," products",[2312,6001,6002],{"class":2333},"?.",[2312,6004,5667],{"class":2329},[2312,6006,5960],{"class":2333},[2312,6008,5899],{"class":2343},[2312,6010,2422],{"class":2333},[2312,6012,5904],{"class":2343},[2312,6014,2349],{"class":2333},[2312,6016,5999],{"class":2329},[2312,6018,6002],{"class":2333},[2312,6020,6021],{"class":2329},"total",[2312,6023,5960],{"class":2333},[2312,6025,5909],{"class":2562},[2312,6027,5912],{"class":2333},[2312,6029,6030],{"class":2314,"line":3055},[2312,6031,2451],{"class":2333},[2312,6033,6034,6036,6038],{"class":2314,"line":3065},[2312,6035,2457],{"class":2333},[2312,6037,2460],{"class":2329},[2312,6039,2463],{"class":2333},[2181,6041,6042,6045,6046,6048,6049,6051,6052,6054,6055,2778,6057,6059],{},[2190,6043,6044],{},"BestsellersQuery"," is a ",[2190,6047,3984],{}," query token of ",[2190,6050,344],{}," that the project defines. The ids it answers are resolved by the CMS's component resolver for ",[2190,6053,344],{},", like those of any CMS query, so ",[2190,6056,344],{},[2190,6058,428],{}," must both be collections.",[2181,6061,6062,6063,6065],{},"The repository is a public API of ",[2190,6064,2207],{},": a breaking change to it is a breaking change of the app, released as one.",[2176,6067,6069],{"id":6068},"page-types-and-the-sitemap","Page types and the sitemap",[2181,6071,6072,6073,6076],{},"An entry gets its own URL through a ",[2202,6074,6075],{"href":201},"page type",". The CMS serves a page index for a page type about one of its types when:",[2216,6078,6079,6088],{},[2219,6080,6081,6082,3218,6084,6087],{},"the page type's only route param is ",[2190,6083,2686],{},[2190,6085,6086],{},"pathConstraints.requiredParams: ['slug']","), and",[2219,6089,6090,6091,6094,6095,6097,6098,6100,6101,2613],{},"one of its ",[2190,6092,6093],{},"requiredQueries"," is a query of the type that is served as ",[2190,6096,3420],{},", or as by slug through the input key ",[2190,6099,2686],{},", by default or through ",[2190,6102,2228],{},[2181,6104,6105,6108,6109,6111,6112,6114,6115,6117,6118,6120,6121,6123,6124,6127,6128,6130,6131,6134],{},[2190,6106,6107],{},"AuthorPage"," above qualifies once ",[2190,6110,2228],{}," lists ",[2190,6113,4070],{},", and so does canonical ",[2190,6116,3384],{}," for a CMS ",[2190,6119,452],{},", whose ",[2190,6122,3500],{}," is served by default. A page type about the type that does not qualify is skipped as not indexable. A page at a fixed path, such as a blog listing, needs no index and works as soon as its query is served. Name the type in ",[2190,6125,6126],{},"resolveFor"," so that a ",[2202,6129,4902],{"href":466}," of type ",[2190,6132,6133],{},"reference"," to an entry resolves to its page.",[2181,6136,6137,6138,6140,6141,6143,6144,2724,6147,6150,6151,6154],{},"The ",[2202,6139,2250],{"href":319}," lists every ",[2185,6142,2263],{}," entry that has a slug in the request's locale chain, ordered by slug. Each item carries the entry's ",[2190,6145,6146],{},"base.title",[2190,6148,6149],{},"base.name",") as its title and its publish date as ",[2190,6152,6153],{},"lastModified",". An entry without a slug has no page. A slug longer than 1,024 characters is left out, and a slug two entries share is listed once, for the entry that URL shows.",[2181,6156,6157,6158,6164],{},"The index is cached for 60 seconds, so a publish reaches Studio's page picker and the locale switcher within a minute. ",[2202,6159,6161],{"href":6160},"/frontend/orchestr/page-index#resuming-a-walk-across-requests",[2190,6162,6163],{},"listPagesFrom",", which sitemaps read, uses no cache.",[2181,6166,6167,6170,6171,6174,6175,6177,6178,6181,6182,6185],{},[2185,6168,6169],{},"The sitemap."," The sitemap module of the SEO essentials app, ",[2190,6172,6173],{},"@laioutr/app-essentials-seo"," (see ",[2202,6176,228],{"href":907},"), reads these indexes. It builds one child sitemap per CMS page type and locale, with one URL per published entry and ",[2190,6179,6180],{},"\u003Clastmod>"," set to the entry's publish date. It keeps its sitemap for a while before it rebuilds it, so an ",[2185,6183,6184],{},"unpublished entry can stay in the sitemap for up to about a day",". The page itself is gone at once.",[2181,6187,6188,6191],{},[2185,6189,6190],{},"Translated slugs."," When the CMS answers \"which entry is this URL\", it also reports the entry's slug in every language a domain serves. The hreflang alternates and the locale switcher of an entry's page therefore link each language's own slug, and leave out a language in which the entry has no slug. A project serving more than 50 languages, or a language with more than 9 fallback languages, gets a server warning and the current slug in every language instead.",[2181,6193,5522,6194,6130,6196,6198],{},[2190,6195,465],{},[2190,6197,6133],{}," stores the target's slug. When an editor changes an entry's slug, existing reference links keep the old one and lead nowhere until they are picked again.",[2176,6200,6202],{"id":6201},"preview","Preview",[2181,6204,6205,6206,6208,6209,6212,6213,6216,6217,6220],{},"In ",[2202,6207,2267],{"href":173}," — any storefront URL with ",[2190,6210,6211],{},"?preview_token=\u003Cthe project's token>",", or Studio's preview toggle — every CMS query, resolver and link handler reads the ",[2185,6214,6215],{},"draft"," of each entry instead of its published version. That covers entries never published and changes not yet published, as Cockpit last saved them, on any storefront the token opens, ",[2190,6218,6219],{},"localhost"," included.",[2302,6222,6227],{"className":6223,"code":6225,"language":6226},[6224],"language-text","http://localhost:3000/authors/jane-doe?preview_token=pvtk_…\n","text",[2190,6228,6225],{"__ignoreMap":2308},[2181,6230,6231],{},"The page index is the exception: it lists published entries only, in preview too, so Studio's page picker and the sitemap never show a draft.",[2181,6233,6234,6235,6238],{},"Drafts are not validated before they are saved, so a draft may fail its schema. It is then skipped as described under ",[2202,6236,4488],{"href":6237},"#components",", and a list in preview can be one entry short.",[2176,6240,6242],{"id":6241},"delivery-api-and-credentials","Delivery API and credentials",[2643,6244,6245,6257],{},[2646,6246,6247],{},[2649,6248,6249,6252,6255],{},[2652,6250,6251],{},"Module option",[2652,6253,6254],{},"Default",[2652,6256],{},[2658,6258,6259,6274,6289,6302,6317],{},[2649,6260,6261,6266,6271],{},[2663,6262,6263],{},[2190,6264,6265],{},"cmsApiUrl",[2663,6267,6268],{},[2190,6269,6270],{},"https://api.laioutr.cloud/cms/v1",[2663,6272,6273],{},"Where entries are read. Server-only.",[2649,6275,6276,6281,6286],{},[2663,6277,6278],{},[2190,6279,6280],{},"cdnApiUrl",[2663,6282,6283],{},[2190,6284,6285],{},"https://api.laioutr.cloud/cdn/v1",[2663,6287,6288],{},"Where media is managed. Server-only.",[2649,6290,6291,6296,6299],{},[2663,6292,6293],{},[2190,6294,6295],{},"maxFileSize",[2663,6297,6298],{},"100 MB",[2663,6300,6301],{},"The upload size the media picker allows before sending. cdn-api checks it again.",[2649,6303,6304,6308,6311],{},[2663,6305,6306],{},[2190,6307,2296],{},[2663,6309,6310],{},"none",[2663,6312,6313,6314,2613],{},"See ",[2202,6315,2290],{"href":6316},"#declaring-collections",[2649,6318,6319,6323,6326],{},[2663,6320,6321],{},[2190,6322,2228],{},[2663,6324,6325],{},"the offering apps' defaults",[2663,6327,6313,6328,2613],{},[2202,6329,501],{"href":2232},[2181,6331,6332,6335,6336,6338,6339,6341,6342,6345],{},[2185,6333,6334],{},"The credential is not an option."," Content and media share the project's cdn key. Cockpit issues it when it sets up the project's Laioutr CDN, which also installs ",[2190,6337,2207],{},", and writes it into ",[2190,6340,2469],{}," as ",[2190,6343,6344],{},"config.cdn",". It is read into private runtime config and never reaches the browser. Without it the module still builds, but every cms-api request is refused.",[2181,6347,6348,6351],{},[2185,6349,6350],{},"When cms-api does not answer."," Each request waits at most five seconds. A query that fails throws, and Orchestr turns that into an error for the section that asked, which shows its error state; the rest of the page renders. The server logs a warning that names the query, link or type and what failed. Entries are fetched in batches of up to 100, and a batch that fails costs only its own entries.",[2176,6353,1853],{"id":6354},"limits",[2181,6356,6357],{},"These are enforced by Cockpit, per entry and per project.",[2643,6359,6360,6376],{},[2646,6361,6362],{},[2649,6363,6364,6367,6370,6373],{},[2652,6365,6366],{},"Limit",[2652,6368,6369],{},"Value",[2652,6371,6372],{},"What happens",[2652,6374,6375],{},"What to do",[2658,6377,6378,6392,6406,6420,6434],{},[2649,6379,6380,6383,6386,6389],{},[2663,6381,6382],{},"Recommended entry size",[2663,6384,6385],{},"200 KB",[2663,6387,6388],{},"The entry shows a warning that it loads and publishes more slowly. It stays editable and publishable.",[2663,6390,6391],{},"Shrink it: put long lists in their own entries and link them, and use media instead of inline data.",[2649,6393,6394,6397,6400,6403],{},[2663,6395,6396],{},"Entry size",[2663,6398,6399],{},"1 MB",[2663,6401,6402],{},"The entry turns read-only. Once it is closed, it cannot be opened again: Cockpit shows \"The entry could not be opened for editing.\" Its published version, if it has one, keeps being served.",[2663,6404,6405],{},"Keep entries well below 200 KB. An entry already above 1 MB can be deleted from the entries list. To recover its content, contact Laioutr support.",[2649,6407,6408,6411,6414,6417],{},[2663,6409,6410],{},"Entries open for editing, together",[2663,6412,6413],{},"2 MB",[2663,6415,6416],{},"The open entries' forms turn read-only, with a message to close other entries. Opening a further entry past the limit is refused: \"The entry could not be opened for editing.\"",[2663,6418,6419],{},"Close entries you are not editing.",[2649,6421,6422,6425,6428,6431],{},[2663,6423,6424],{},"All entries held for editing, open or recently closed",[2663,6426,6427],{},"5 MB",[2663,6429,6430],{},"Cockpit refuses to open another entry: \"The entry could not be opened for editing.\" A closed entry is released about three minutes after its last tab left it. After a tab crashed or lost its connection, this takes up to 15 minutes.",[2663,6432,6433],{},"Wait a few minutes, then try again. If a tab crashed, allow up to 15 minutes.",[2649,6435,6436,6439,6442,6445],{},[2663,6437,6438],{},"Editor tabs per project",[2663,6440,6441],{},"12",[2663,6443,6444],{},"A further tab that opens an entry says that the project has 12 editor tabs open, and stays read-only. It offers to try again.",[2663,6446,6447],{},"Close editor tabs. A tab on a list with no entry open gives its place up after three minutes.",[2181,6449,6450],{},"An entry's size is measured on what Cockpit stores: every locale of every field, plus its links.",[2176,6452,6454],{"id":6453},"related","Related",[2216,6456,6457,6463,6468,6473,6478],{},[2219,6458,6459,6462],{},[2202,6460,6461],{"href":2035},"Content in Cockpit"," — the editor's side of the same feature",[2219,6464,6465],{},[2202,6466,6467],{"href":173},"Content preview",[2219,6469,6470],{},[2202,6471,6472],{"href":319},"Page index",[2219,6474,6475],{},[2202,6476,6477],{"href":201},"Page types",[2219,6479,6480],{},[2202,6481,6482],{"href":303},"Queries and links",[6484,6485,6486],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":2308,"searchDepth":2337,"depth":2337,"links":6488},[6489,6490,6494,6497,6498,6504,6505,6506,6507,6508,6509,6510],{"id":2178,"depth":2337,"text":2179},{"id":2289,"depth":2337,"text":2290,"children":6491},[6492,6493],{"id":2747,"depth":2355,"text":2748},{"id":2787,"depth":2355,"text":2788},{"id":2805,"depth":2337,"text":2806,"children":6495},[6496],{"id":3358,"depth":2355,"text":3359},{"id":3551,"depth":2337,"text":2711},{"id":3658,"depth":2337,"text":3659,"children":6499},[6500,6501,6502,6503],{"id":4487,"depth":2355,"text":4488},{"id":4520,"depth":2355,"text":4521},{"id":2228,"depth":2355,"text":501},{"id":5235,"depth":2355,"text":5236},{"id":5257,"depth":2337,"text":5258},{"id":5549,"depth":2337,"text":5550},{"id":6068,"depth":2337,"text":6069},{"id":6201,"depth":2337,"text":6202},{"id":6241,"depth":2337,"text":6242},{"id":6354,"depth":2337,"text":1853},{"id":6453,"depth":2337,"text":6454},"How a storefront declares the entity types the Laioutr CMS manages, how an app offers its own types to it, and how entries reach Orchestr, previews and sitemaps.","md",{},{"title":6515,"description":6511},"Content Collections | Laioutr",{"loc":769,"lastmod":6517,"changefreq":6518,"priority":2315},"2026-09-28","monthly","gljQYeUOKBG-H_Vi4qNxihwBrBY8NcAIAojN7_Yq-Z8",[6521,6523],{"title":764,"path":765,"stem":766,"description":6522,"children":-1},"How blocks and sections read interactive state from a resolved query field and update the URL when the user changes filters, sorting, or pagination.",{"title":772,"path":773,"stem":774,"description":6524,"children":-1},"What a connector app needs to implement for Laioutr and Laioutr UI compatibility, and what existing connectors already provide.",1791071343508]