[{"data":1,"prerenderedAt":5345},["ShallowReactive",2],{"navigation_docs":3,"-frontend-orchestr-page-index":2085,"-frontend-orchestr-page-index-surround":5340},[4,136,545,573,689,877,1786,1876,1881,1886,1945,2043],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","0.getting-started/0.index",[9,10,14,18,56,81,115,132],{"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],{"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},"Create your first custom app","/getting-started/next-steps/create-custom-app","0.getting-started/4.next-steps/4.create-custom-app",{"title":78,"path":79,"stem":80},"CLI","/getting-started/next-steps/cli","0.getting-started/4.next-steps/5.cli",{"title":82,"path":83,"stem":84,"children":85},"Changelogs","/getting-started/changelogs","0.getting-started/5.Changelogs/0.index",[86,87,91,95,99,103,107,111],{"title":82,"path":83,"stem":84},{"title":88,"path":89,"stem":90},"Canonical Types Changelog","/getting-started/changelogs/canonical-types-changelog","0.getting-started/5.Changelogs/canonical-types-changelog",{"title":92,"path":93,"stem":94},"CLI Changelog","/getting-started/changelogs/cli-changelog","0.getting-started/5.Changelogs/cli-changelog",{"title":96,"path":97,"stem":98},"Cockpit Changelog","/getting-started/changelogs/cockpit-changelog","0.getting-started/5.Changelogs/cockpit-changelog",{"title":100,"path":101,"stem":102},"Figma Kit Changelog","/getting-started/changelogs/figma-kit-changelog","0.getting-started/5.Changelogs/figma-kit-changelog",{"title":104,"path":105,"stem":106},"Frontend Changelog","/getting-started/changelogs/frontend-changelog","0.getting-started/5.Changelogs/frontend-changelog",{"title":108,"path":109,"stem":110},"Orchestr Changelog","/getting-started/changelogs/orchestr-changelog","0.getting-started/5.Changelogs/orchestr-changelog",{"title":112,"path":113,"stem":114},"UI Changelog","/getting-started/changelogs/ui-changelog","0.getting-started/5.Changelogs/ui-changelog",{"title":116,"path":117,"stem":118,"children":119,"page":55},"Hints And Tips","/getting-started/hints-and-tips","0.getting-started/6.Hints-and-Tips",[120,124,128],{"title":121,"path":122,"stem":123},"Introduction","/getting-started/hints-and-tips/introduction","0.getting-started/6.Hints-and-Tips/0.introduction",{"title":125,"path":126,"stem":127},"Developer tools","/getting-started/hints-and-tips/developer-tools","0.getting-started/6.Hints-and-Tips/1.developer-tools",{"title":129,"path":130,"stem":131},"Claude Code plugin","/getting-started/hints-and-tips/claude-marketplace","0.getting-started/6.Hints-and-Tips/2.claude-marketplace",{"title":133,"path":134,"stem":135},"Documentation MCP Server","/getting-started/documentation-mcp-server","0.getting-started/7.documentation-mcp-server",{"title":137,"path":138,"stem":139,"children":140},"Frontend","/frontend","1.Frontend/0.index",[141,142,153,219,245,323],{"title":137,"path":138,"stem":139},{"title":121,"path":143,"stem":144,"children":145,"page":55},"/frontend/introduction","1.Frontend/1.Introduction",[146,149],{"title":19,"path":147,"stem":148},"/frontend/introduction/key-concepts","1.Frontend/1.Introduction/0.key-concepts",{"title":150,"path":151,"stem":152},"Tech Stack","/frontend/introduction/tech-stack","1.Frontend/1.Introduction/1.tech-stack",{"title":154,"path":155,"stem":156,"children":157},"Features","/frontend/features","1.Frontend/2.Features/0.index",[158,159,163,167,171,175,179,183,187,191,195,199,203,207,211,215],{"title":154,"path":155,"stem":156},{"title":160,"path":161,"stem":162},"Consent Management","/frontend/features/consent-management","1.Frontend/2.Features/consent-management",{"title":164,"path":165,"stem":166},"Content Preview","/frontend/features/content-preview","1.Frontend/2.Features/content-preview",{"title":168,"path":169,"stem":170},"Currencies","/frontend/features/currencies","1.Frontend/2.Features/currencies",{"title":172,"path":173,"stem":174},"Environments & Staging","/frontend/features/environments","1.Frontend/2.Features/environments",{"title":176,"path":177,"stem":178},"Hooks","/frontend/features/hooks","1.Frontend/2.Features/hooks",{"title":180,"path":181,"stem":182},"Media and Media Library","/frontend/features/media","1.Frontend/2.Features/media",{"title":184,"path":185,"stem":186},"Multi-language Support","/frontend/features/multi-language-support","1.Frontend/2.Features/multi-language-support",{"title":188,"path":189,"stem":190},"Multi-market","/frontend/features/multi-market","1.Frontend/2.Features/multi-market",{"title":192,"path":193,"stem":194},"Page Types","/frontend/features/pagetypes","1.Frontend/2.Features/pagetypes",{"title":196,"path":197,"stem":198},"PWA","/frontend/features/pwa","1.Frontend/2.Features/pwa",{"title":200,"path":201,"stem":202},"Redirects","/frontend/features/redirects","1.Frontend/2.Features/redirects",{"title":204,"path":205,"stem":206},"Routing","/frontend/features/routing","1.Frontend/2.Features/routing",{"title":208,"path":209,"stem":210},"Server-Side Rendering (SSR) and Caching","/frontend/features/ssr-and-caching","1.Frontend/2.Features/ssr-and-caching",{"title":212,"path":213,"stem":214},"Tracking","/frontend/features/tracking","1.Frontend/2.Features/tracking",{"title":216,"path":217,"stem":218},"Z-Ordering","/frontend/features/z-ordering","1.Frontend/2.Features/z-ordering",{"title":220,"path":221,"stem":222,"children":223},"SEO","/frontend/seo","1.Frontend/3.SEO/0.index",[224,225,229,233,237,241],{"title":220,"path":221,"stem":222},{"title":226,"path":227,"stem":228},"Link Checker","/frontend/seo/link-checker","1.Frontend/3.SEO/link-checker",{"title":230,"path":231,"stem":232},"OG Image","/frontend/seo/og-image","1.Frontend/3.SEO/og-image",{"title":234,"path":235,"stem":236},"Robots.txt","/frontend/seo/robots-txt","1.Frontend/3.SEO/robots-txt",{"title":238,"path":239,"stem":240},"Schema.org","/frontend/seo/schema-org","1.Frontend/3.SEO/schema-org",{"title":242,"path":243,"stem":244},"Sitemap","/frontend/seo/sitemap","1.Frontend/3.SEO/sitemap",{"title":246,"path":247,"stem":248,"children":249},"Backend for Frontend","/frontend/orchestr","1.Frontend/4.Orchestr/0.index",[250,251,277,281,285,289,293,297,301,305,309,315,319],{"title":246,"path":247,"stem":248},{"title":252,"path":253,"stem":254,"children":255},"Recipes","/frontend/orchestr/recipes","1.Frontend/4.Orchestr/99.recipes/0.index",[256,257,261,265,269,273],{"title":252,"path":253,"stem":254},{"title":258,"path":259,"stem":260},"Analytics components from query handlers","/frontend/orchestr/recipes/analytics-from-query-handlers","1.Frontend/4.Orchestr/99.recipes/analytics-from-query-handlers",{"title":262,"path":263,"stem":264},"Identity cookies (cart and visitor IDs)","/frontend/orchestr/recipes/identity-cookies","1.Frontend/4.Orchestr/99.recipes/identity-cookies",{"title":266,"path":267,"stem":268},"System bootstrap in extendRequest","/frontend/orchestr/recipes/system-bootstrap","1.Frontend/4.Orchestr/99.recipes/system-bootstrap",{"title":270,"path":271,"stem":272},"Translating vendor errors","/frontend/orchestr/recipes/translating-vendor-errors","1.Frontend/4.Orchestr/99.recipes/translating-vendor-errors",{"title":274,"path":275,"stem":276},"Userland cache patterns","/frontend/orchestr/recipes/userland-cache-patterns","1.Frontend/4.Orchestr/99.recipes/userland-cache-patterns",{"title":278,"path":279,"stem":280},"Actions","/frontend/orchestr/actions","1.Frontend/4.Orchestr/Actions",{"title":282,"path":283,"stem":284},"Caching","/frontend/orchestr/caching","1.Frontend/4.Orchestr/Caching",{"title":286,"path":287,"stem":288},"Store Devtools","/frontend/orchestr/devtools","1.Frontend/4.Orchestr/Devtools",{"title":290,"path":291,"stem":292},"Middleware","/frontend/orchestr/middleware","1.Frontend/4.Orchestr/Middleware",{"title":294,"path":295,"stem":296},"Queries & Links","/frontend/orchestr/queries","1.Frontend/4.Orchestr/Queries",{"title":298,"path":299,"stem":300},"Client Environment","/frontend/orchestr/client-env","1.Frontend/4.Orchestr/client-env",{"title":302,"path":303,"stem":304},"Component Resolvers","/frontend/orchestr/component-resolvers","1.Frontend/4.Orchestr/component-resolvers",{"title":306,"path":307,"stem":308},"Filters","/frontend/orchestr/filters","1.Frontend/4.Orchestr/filters",{"title":310,"path":311,"stem":312,"children":313},"Page Index","/frontend/orchestr/page-index","1.Frontend/4.Orchestr/page-index",[314],{"title":310,"path":311,"stem":312},{"title":316,"path":317,"stem":318},"URL Query Parameters","/frontend/orchestr/url-query-params","1.Frontend/4.Orchestr/url-query-params",{"title":320,"path":321,"stem":322},"Orchestr Wire Format","/frontend/orchestr/wire-format","1.Frontend/4.Orchestr/wire-format",{"title":324,"path":325,"stem":326,"children":327},"API Reference","/frontend/api-reference","1.Frontend/99.api-reference/0.index",[328,329,447,450,484,500,508,519,527,534],{"title":324,"path":325,"stem":326},{"title":330,"path":331,"stem":332,"children":333},"Entities","/frontend/api-reference/entities","1.Frontend/99.api-reference/01.entities/0.index",[334,335,339,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],{"title":330,"path":331,"stem":332},{"title":336,"path":337,"stem":338},"Product","/frontend/api-reference/entities/product","1.Frontend/99.api-reference/01.entities/1.product",{"title":340,"path":341,"stem":342},"SuggestedSearch","/frontend/api-reference/entities/suggested-search","1.Frontend/99.api-reference/01.entities/10.suggested-search",{"title":344,"path":345,"stem":346},"SuggestedSearchEntry","/frontend/api-reference/entities/suggested-search-entry","1.Frontend/99.api-reference/01.entities/11.suggested-search-entry",{"title":348,"path":349,"stem":350},"BlogCollection","/frontend/api-reference/entities/blog-collection","1.Frontend/99.api-reference/01.entities/12.blog-collection",{"title":352,"path":353,"stem":354},"Comment","/frontend/api-reference/entities/comment","1.Frontend/99.api-reference/01.entities/13.comment",{"title":356,"path":357,"stem":358},"Location","/frontend/api-reference/entities/location","1.Frontend/99.api-reference/01.entities/14.location",{"title":360,"path":361,"stem":362},"Glossary","/frontend/api-reference/entities/glossary","1.Frontend/99.api-reference/01.entities/15.glossary",{"title":364,"path":365,"stem":366},"Product List","/frontend/api-reference/entities/product-list","1.Frontend/99.api-reference/01.entities/16.product-list",{"title":368,"path":369,"stem":370},"Product List Item","/frontend/api-reference/entities/product-list-item","1.Frontend/99.api-reference/01.entities/17.product-list-item",{"title":372,"path":373,"stem":374},"Organization","/frontend/api-reference/entities/organization","1.Frontend/99.api-reference/01.entities/18.organization",{"title":376,"path":377,"stem":378},"Employee","/frontend/api-reference/entities/employee","1.Frontend/99.api-reference/01.entities/19.employee",{"title":380,"path":381,"stem":382},"ProductVariant","/frontend/api-reference/entities/product-variant","1.Frontend/99.api-reference/01.entities/2.product-variant",{"title":384,"path":385,"stem":386},"Cost Center","/frontend/api-reference/entities/cost-center","1.Frontend/99.api-reference/01.entities/20.cost-center",{"title":388,"path":389,"stem":390},"Budget","/frontend/api-reference/entities/budget","1.Frontend/99.api-reference/01.entities/21.budget",{"title":392,"path":393,"stem":394},"Quote","/frontend/api-reference/entities/quote","1.Frontend/99.api-reference/01.entities/22.quote",{"title":396,"path":397,"stem":398},"Quote Item","/frontend/api-reference/entities/quote-item","1.Frontend/99.api-reference/01.entities/23.quote-item",{"title":400,"path":401,"stem":402},"Approval Flow","/frontend/api-reference/entities/approval-flow","1.Frontend/99.api-reference/01.entities/24.approval-flow",{"title":404,"path":405,"stem":406},"Approval Rule","/frontend/api-reference/entities/approval-rule","1.Frontend/99.api-reference/01.entities/25.approval-rule",{"title":408,"path":409,"stem":410},"Fee","/frontend/api-reference/entities/fee","1.Frontend/99.api-reference/01.entities/26.fee",{"title":412,"path":413,"stem":414},"Stock Location","/frontend/api-reference/entities/stock-location","1.Frontend/99.api-reference/01.entities/27.stock-location",{"title":416,"path":417,"stem":418},"Stock Level","/frontend/api-reference/entities/stock-level","1.Frontend/99.api-reference/01.entities/28.stock-level",{"title":420,"path":421,"stem":422},"Category","/frontend/api-reference/entities/category","1.Frontend/99.api-reference/01.entities/3.category",{"title":424,"path":425,"stem":426},"Cart","/frontend/api-reference/entities/cart","1.Frontend/99.api-reference/01.entities/4.cart",{"title":428,"path":429,"stem":430},"CartItem","/frontend/api-reference/entities/cart-item","1.Frontend/99.api-reference/01.entities/5.cart-item",{"title":432,"path":433,"stem":434},"Review","/frontend/api-reference/entities/review","1.Frontend/99.api-reference/01.entities/6.review",{"title":436,"path":437,"stem":438},"BreadcrumbItem","/frontend/api-reference/entities/breadcrumb-item","1.Frontend/99.api-reference/01.entities/7.breadcrumb-item",{"title":440,"path":441,"stem":442},"MenuItem","/frontend/api-reference/entities/menu-item","1.Frontend/99.api-reference/01.entities/8.menu-item",{"title":444,"path":445,"stem":446},"BlogPost","/frontend/api-reference/entities/blog-post","1.Frontend/99.api-reference/01.entities/9.blog-post",{"title":192,"path":448,"stem":449},"/frontend/api-reference/page-types","1.Frontend/99.api-reference/02.page-types",{"title":451,"path":452,"stem":453,"children":454},"Common Types","/frontend/api-reference/common-types","1.Frontend/99.api-reference/03.common-types/0.index",[455,456,460,464,468,472,476,480],{"title":451,"path":452,"stem":453},{"title":457,"path":458,"stem":459},"Link","/frontend/api-reference/common-types/link","1.Frontend/99.api-reference/03.common-types/1.link",{"title":461,"path":462,"stem":463},"Media","/frontend/api-reference/common-types/media","1.Frontend/99.api-reference/03.common-types/2.media",{"title":465,"path":466,"stem":467},"Money","/frontend/api-reference/common-types/money","1.Frontend/99.api-reference/03.common-types/3.money",{"title":469,"path":470,"stem":471},"UnitPrice","/frontend/api-reference/common-types/unit-price","1.Frontend/99.api-reference/03.common-types/4.unit-price",{"title":473,"path":474,"stem":475},"Measurement","/frontend/api-reference/common-types/measurement","1.Frontend/99.api-reference/03.common-types/5.measurement",{"title":477,"path":478,"stem":479},"Opening Hours","/frontend/api-reference/common-types/opening-hours","1.Frontend/99.api-reference/03.common-types/6.opening-hours",{"title":481,"path":482,"stem":483},"Commerce Value Types","/frontend/api-reference/common-types/commerce-values","1.Frontend/99.api-reference/03.common-types/7.commerce-values",{"title":485,"path":486,"stem":487,"children":488,"page":55},"Ecommerce","/frontend/api-reference/ecommerce","1.Frontend/99.api-reference/10.ecommerce",[489,492,496],{"title":278,"path":490,"stem":491},"/frontend/api-reference/ecommerce/actions","1.Frontend/99.api-reference/10.ecommerce/1.actions",{"title":493,"path":494,"stem":495},"Queries","/frontend/api-reference/ecommerce/queries","1.Frontend/99.api-reference/10.ecommerce/2.queries",{"title":497,"path":498,"stem":499},"Errors","/frontend/api-reference/ecommerce/errors","1.Frontend/99.api-reference/10.ecommerce/3.errors",{"title":501,"path":502,"stem":503,"children":504,"page":55},"Newsletter","/frontend/api-reference/newsletter","1.Frontend/99.api-reference/11.newsletter",[505],{"title":278,"path":506,"stem":507},"/frontend/api-reference/newsletter/actions","1.Frontend/99.api-reference/11.newsletter/1.actions",{"title":509,"path":510,"stem":511,"children":512,"page":55},"Blog","/frontend/api-reference/blog","1.Frontend/99.api-reference/12.blog",[513,516],{"title":493,"path":514,"stem":515},"/frontend/api-reference/blog/queries","1.Frontend/99.api-reference/12.blog/1.queries",{"title":497,"path":517,"stem":518},"/frontend/api-reference/blog/errors","1.Frontend/99.api-reference/12.blog/2.errors",{"title":520,"path":521,"stem":522,"children":523,"page":55},"Suggested Search","/frontend/api-reference/suggested-search","1.Frontend/99.api-reference/13.suggested-search",[524],{"title":493,"path":525,"stem":526},"/frontend/api-reference/suggested-search/queries","1.Frontend/99.api-reference/13.suggested-search/1.queries",{"title":356,"path":528,"stem":529,"children":530,"page":55},"/frontend/api-reference/location","1.Frontend/99.api-reference/15.location",[531],{"title":493,"path":532,"stem":533},"/frontend/api-reference/location/queries","1.Frontend/99.api-reference/15.location/1.queries",{"title":535,"path":536,"stem":537,"children":538,"page":55},"B2b","/frontend/api-reference/b2b","1.Frontend/99.api-reference/16.b2b",[539,542],{"title":278,"path":540,"stem":541},"/frontend/api-reference/b2b/actions","1.Frontend/99.api-reference/16.b2b/1.actions",{"title":497,"path":543,"stem":544},"/frontend/api-reference/b2b/errors","1.Frontend/99.api-reference/16.b2b/2.errors",{"title":546,"path":547,"stem":548,"children":549},"Agent API","/agent-api","10.Agent-API/0.index",[550,551],{"title":546,"path":547,"stem":548},{"title":552,"path":553,"stem":554,"children":555},"Laioutr MCP","/agent-api/laioutr-mcp","10.Agent-API/1.Laioutr-MCP/0.index",[556,557,561,565,569],{"title":552,"path":553,"stem":554},{"title":558,"path":559,"stem":560},"Connecting to Laioutr MCP","/agent-api/laioutr-mcp/connecting-to-laioutr-mcp","10.Agent-API/1.Laioutr-MCP/1.connecting-to-laioutr-mcp",{"title":562,"path":563,"stem":564},"Supported tools","/agent-api/laioutr-mcp/supported-tools","10.Agent-API/1.Laioutr-MCP/2.supported-tools",{"title":566,"path":567,"stem":568},"Security best practices","/agent-api/laioutr-mcp/security-best-practices","10.Agent-API/1.Laioutr-MCP/3.security-best-practices",{"title":570,"path":571,"stem":572},"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":574,"path":575,"stem":576,"children":577},"Offering","/offering","11.Offering/0.index",[578,579,614,627,640,674,683],{"title":574,"path":575,"stem":576},{"title":580,"path":581,"stem":582,"children":583},"Products","/offering/products","11.Offering/1.Products/0.index",[584,585,590,596,602,608],{"title":580,"path":581,"stem":582},{"title":137,"path":586,"stem":587,"children":588},"/offering/products/frontend","11.Offering/1.Products/1.Frontend/0.index",[589],{"title":137,"path":586,"stem":587},{"title":591,"path":592,"stem":593,"children":594},"Cockpit","/offering/products/cockpit","11.Offering/1.Products/2.Cockpit/0.index",[595],{"title":591,"path":592,"stem":593},{"title":597,"path":598,"stem":599,"children":600},"Checkout","/offering/products/checkout","11.Offering/1.Products/3.Checkout/0.index",[601],{"title":597,"path":598,"stem":599},{"title":603,"path":604,"stem":605,"children":606},"Cloud","/offering/products/cloud","11.Offering/1.Products/4.cloud/0.index",[607],{"title":603,"path":604,"stem":605},{"title":609,"path":610,"stem":611,"children":612},"Larry AI","/offering/products/larry-ai","11.Offering/1.Products/5.larry-ai/0.index",[613],{"title":609,"path":610,"stem":611},{"title":615,"path":616,"stem":617,"children":618,"page":55},"Service Level Agreement","/offering/service-level-agreement","11.Offering/2.service-level-agreement",[619,623],{"title":620,"path":621,"stem":622},"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":624,"path":625,"stem":626},"Backups","/offering/service-level-agreement/backups","11.Offering/2.service-level-agreement/backups",{"title":628,"path":629,"stem":630,"children":631,"page":55},"Customer Support","/offering/customer-support","11.Offering/3.customer-support",[632,636],{"title":633,"path":634,"stem":635},"Standard Customer Support","/offering/customer-support/standard-customer-support","11.Offering/3.customer-support/1.standard-customer-support",{"title":637,"path":638,"stem":639},"Customer Support Severity Levels of Laioutr products","/offering/customer-support/maximum-serverity-levels","11.Offering/3.customer-support/maximum-serverity-levels",{"title":641,"path":642,"stem":643,"children":644},"Trust Center","/offering/trust-center","11.Offering/4.trust-center/0.index",[645,646,650,654,658,662,666,670],{"title":641,"path":642,"stem":643},{"title":647,"path":648,"stem":649},"Data Protection (GDPR)","/offering/trust-center/data-protection","11.Offering/4.trust-center/1.data-protection",{"title":651,"path":652,"stem":653},"Subprocessors","/offering/trust-center/subprocessors","11.Offering/4.trust-center/2.subprocessors",{"title":655,"path":656,"stem":657},"Infrastructure & Hosting","/offering/trust-center/infrastructure","11.Offering/4.trust-center/3.infrastructure",{"title":659,"path":660,"stem":661},"Security Measures","/offering/trust-center/security-measures","11.Offering/4.trust-center/4.security-measures",{"title":663,"path":664,"stem":665},"Incident Response","/offering/trust-center/incident-response","11.Offering/4.trust-center/5.incident-response",{"title":667,"path":668,"stem":669},"Compliance & Certifications","/offering/trust-center/compliance","11.Offering/4.trust-center/6.compliance",{"title":671,"path":672,"stem":673},"FAQ","/offering/trust-center/faq","11.Offering/4.trust-center/7.faq",{"title":675,"path":676,"stem":677,"children":678,"page":55},"Policies","/offering/policies","11.Offering/5.policies",[679],{"title":680,"path":681,"stem":682},"Fair usage policy","/offering/policies/fair-usage-policy","11.Offering/5.policies/fair-usage-policy",{"title":684,"path":685,"stem":686,"children":687},"Academy","/offering/academy","11.Offering/6.academy/0.index",[688],{"title":684,"path":685,"stem":686},{"title":690,"path":691,"stem":692,"children":693},"Apps","/apps","2.apps/0.index",[694,695,775,861],{"title":690,"path":691,"stem":692},{"title":696,"path":697,"stem":698,"children":699},"App Development","/apps/app-development","2.apps/app-development/0.index",[700,701,723,727,731,735,739,743,747,751,755,759,763,767,771],{"title":696,"path":697,"stem":698},{"title":702,"path":703,"stem":704,"children":705},"Guides","/apps/app-development/guides","2.apps/app-development/99.guides/0.index",[706,707,711,715,719],{"title":702,"path":703,"stem":704},{"title":708,"path":709,"stem":710},"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":712,"path":713,"stem":714},"Section config standard","/apps/app-development/guides/section-config-standard","2.apps/app-development/99.guides/section-config-standard",{"title":716,"path":717,"stem":718},"Shared field factories","/apps/app-development/guides/shared-field-factories","2.apps/app-development/99.guides/shared-field-factories",{"title":720,"path":721,"stem":722},"How to write CSS","/apps/app-development/guides/writing-css","2.apps/app-development/99.guides/writing-css",{"title":724,"path":725,"stem":726},"App Configuration","/apps/app-development/app-configuration","2.apps/app-development/app-configuration",{"title":728,"path":729,"stem":730},"App Starter","/apps/app-development/app-starter","2.apps/app-development/app-starter",{"title":732,"path":733,"stem":734},"Best Practice","/apps/app-development/best-practice","2.apps/app-development/best-practice",{"title":736,"path":737,"stem":738},"Block Definitions","/apps/app-development/block-definitions","2.apps/app-development/block-definitions",{"title":740,"path":741,"stem":742},"Coding Standards","/apps/app-development/coding-standards","2.apps/app-development/coding-standards",{"title":744,"path":745,"stem":746},"Consent Adapters","/apps/app-development/consent-adapters","2.apps/app-development/consent-adapters",{"title":748,"path":749,"stem":750},"Consuming Query Fields","/apps/app-development/consuming-query-fields","2.apps/app-development/consuming-query-fields",{"title":752,"path":753,"stem":754},"Implementation Overview","/apps/app-development/implementation-overview","2.apps/app-development/implementation-overview",{"title":756,"path":757,"stem":758},"Media Libraries","/apps/app-development/media-libraries","2.apps/app-development/media-libraries",{"title":760,"path":761,"stem":762},"Platform Dependencies","/apps/app-development/platform-dependencies","2.apps/app-development/platform-dependencies",{"title":764,"path":765,"stem":766},"Schema Fields","/apps/app-development/schema-fields","2.apps/app-development/schema-fields",{"title":768,"path":769,"stem":770},"Section Definitions","/apps/app-development/section-definitions","2.apps/app-development/section-definitions",{"title":772,"path":773,"stem":774},"Studio Icons","/apps/app-development/studio-icons","2.apps/app-development/studio-icons",{"title":776,"path":777,"stem":778,"children":779},"App Docs","/apps/app-docs","2.apps/app-docs/0.index",[780,781,785,789,793,797,801,805,809,813,817,821,825,829,833,837,841,845,849,853,857],{"title":776,"path":777,"stem":778},{"title":782,"path":783,"stem":784},"Actindo","/apps/app-docs/actindo","2.apps/app-docs/actindo",{"title":786,"path":787,"stem":788},"Adobe Commerce","/apps/app-docs/adobe-commerce","2.apps/app-docs/adobe-commerce",{"title":790,"path":791,"stem":792},"B2Bsellers","/apps/app-docs/b2bsellers","2.apps/app-docs/b2bsellers",{"title":794,"path":795,"stem":796},"Battery Included","/apps/app-docs/battery-included","2.apps/app-docs/battery-included",{"title":798,"path":799,"stem":800},"CCM19","/apps/app-docs/ccm19","2.apps/app-docs/ccm19",{"title":802,"path":803,"stem":804},"Commercetools","/apps/app-docs/commercetools","2.apps/app-docs/commercetools",{"title":806,"path":807,"stem":808},"Cookiebot","/apps/app-docs/cookiebot","2.apps/app-docs/cookiebot",{"title":810,"path":811,"stem":812},"Emporix","/apps/app-docs/emporix","2.apps/app-docs/emporix",{"title":814,"path":815,"stem":816},"Google Tag Manager (GTM)","/apps/app-docs/gtm","2.apps/app-docs/gtm",{"title":818,"path":819,"stem":820},"Hygraph","/apps/app-docs/hygraph","2.apps/app-docs/hygraph",{"title":822,"path":823,"stem":824},"JTL Platform","/apps/app-docs/jtl-platform","2.apps/app-docs/jtl-platform",{"title":826,"path":827,"stem":828},"Klaviyo","/apps/app-docs/klaviyo","2.apps/app-docs/klaviyo",{"title":830,"path":831,"stem":832},"Nimstrata Google Retail API","/apps/app-docs/nimstrata","2.apps/app-docs/nimstrata",{"title":834,"path":835,"stem":836},"OXID eShop","/apps/app-docs/oxid","2.apps/app-docs/oxid",{"title":838,"path":839,"stem":840},"Pimcore","/apps/app-docs/pimcore","2.apps/app-docs/pimcore",{"title":842,"path":843,"stem":844},"Shopify","/apps/app-docs/shopify","2.apps/app-docs/shopify",{"title":846,"path":847,"stem":848},"Shopware","/apps/app-docs/shopware","2.apps/app-docs/shopware",{"title":850,"path":851,"stem":852},"Sylius","/apps/app-docs/sylius","2.apps/app-docs/sylius",{"title":854,"path":855,"stem":856},"Vercel Analytics","/apps/app-docs/vercel-analytics","2.apps/app-docs/vercel-analytics",{"title":858,"path":859,"stem":860},"Vercel Speed Insights","/apps/app-docs/vercel-speed-insights","2.apps/app-docs/vercel-speed-insights",{"title":862,"path":863,"stem":864,"children":865,"page":55},"Essentials","/apps/essentials","2.apps/essentials",[866,870,874],{"title":867,"path":868,"stem":869},"Legal","/apps/essentials/legal","2.apps/essentials/legal",{"title":871,"path":872,"stem":873},"Mailer","/apps/essentials/mailer","2.apps/essentials/mailer",{"title":220,"path":875,"stem":876},"/apps/essentials/seo","2.apps/essentials/seo",{"title":878,"path":879,"stem":880,"children":881},"Laioutr UI","/laioutr-ui","3.laioutr-ui/0.index",[882,883,915,921,927,1123,1144,1150,1156,1210,1228,1362],{"title":878,"path":879,"stem":880},{"title":5,"path":884,"stem":885,"children":886},"/laioutr-ui/getting-started","3.laioutr-ui/01.getting-started/0.index",[887,888,892,896,900,904,908,912],{"title":5,"path":884,"stem":885},{"title":889,"path":890,"stem":891},"Browser support","/laioutr-ui/getting-started/browser-support","3.laioutr-ui/01.getting-started/1.browser-support",{"title":893,"path":894,"stem":895},"Common Data","/laioutr-ui/getting-started/common-data","3.laioutr-ui/01.getting-started/99.common-data",{"title":897,"path":898,"stem":899},"CSS Layers","/laioutr-ui/getting-started/css-layers","3.laioutr-ui/01.getting-started/css-layers",{"title":901,"path":902,"stem":903},"Figma Kit","/laioutr-ui/getting-started/figma-kit","3.laioutr-ui/01.getting-started/figma-kit",{"title":905,"path":906,"stem":907},"Surface Tone","/laioutr-ui/getting-started/surface-tone","3.laioutr-ui/01.getting-started/surface-tone",{"title":909,"path":910,"stem":911},"Theming","/laioutr-ui/getting-started/theming","3.laioutr-ui/01.getting-started/theming",{"title":216,"path":913,"stem":914},"/laioutr-ui/getting-started/z-ordering","3.laioutr-ui/01.getting-started/z-ordering",{"title":916,"path":917,"stem":918,"children":919},"B2B","/laioutr-ui/b2b","3.laioutr-ui/b2b/0.index",[920],{"title":916,"path":917,"stem":918},{"title":922,"path":923,"stem":924,"children":925},"Booking","/laioutr-ui/booking","3.laioutr-ui/booking/0.index",[926],{"title":922,"path":923,"stem":924},{"title":928,"path":929,"stem":930,"children":931},"CMS","/laioutr-ui/cms","3.laioutr-ui/cms/0.index",[932,933,939,964,976,980,984,988,992,996,1008,1029,1033,1054,1070,1119],{"title":928,"path":929,"stem":930},{"title":934,"path":935,"stem":936,"children":937},"Alphabetical Index","/laioutr-ui/cms/alphabetical-index","3.laioutr-ui/cms/alphabetical-index",[938],{"title":934,"path":935,"stem":936},{"title":940,"path":941,"stem":942,"children":943,"page":55},"Banner","/laioutr-ui/cms/banner","3.laioutr-ui/cms/banner",[944,948,952,956,960],{"title":945,"path":946,"stem":947},"Banner Basic","/laioutr-ui/cms/banner/banner-basic","3.laioutr-ui/cms/banner/banner-basic",{"title":949,"path":950,"stem":951},"Banner Integrated","/laioutr-ui/cms/banner/banner-integrated","3.laioutr-ui/cms/banner/banner-integrated",{"title":953,"path":954,"stem":955},"Banner Showcase","/laioutr-ui/cms/banner/banner-showcase","3.laioutr-ui/cms/banner/banner-showcase",{"title":957,"path":958,"stem":959},"Media + Text","/laioutr-ui/cms/banner/media-text","3.laioutr-ui/cms/banner/media-text",{"title":961,"path":962,"stem":963},"USP Banner","/laioutr-ui/cms/banner/usp-banner","3.laioutr-ui/cms/banner/usp-banner",{"title":509,"path":965,"stem":966,"children":967,"page":55},"/laioutr-ui/cms/blog","3.laioutr-ui/cms/blog",[968,972],{"title":969,"path":970,"stem":971},"Article Detail","/laioutr-ui/cms/blog/article-detail","3.laioutr-ui/cms/blog/article-detail",{"title":973,"path":974,"stem":975},"Blog Post Listing","/laioutr-ui/cms/blog/blog-post-listing","3.laioutr-ui/cms/blog/blog-post-listing",{"title":977,"path":978,"stem":979},"Brand Hero","/laioutr-ui/cms/brand-hero","3.laioutr-ui/cms/brand-hero",{"title":981,"path":982,"stem":983},"Container","/laioutr-ui/cms/container","3.laioutr-ui/cms/container",{"title":985,"path":986,"stem":987},"Content Grid","/laioutr-ui/cms/content-grid","3.laioutr-ui/cms/content-grid",{"title":989,"path":990,"stem":991},"Editorial Grid","/laioutr-ui/cms/editorial-grid","3.laioutr-ui/cms/editorial-grid",{"title":993,"path":994,"stem":995},"Media Gallery","/laioutr-ui/cms/media-gallery","3.laioutr-ui/cms/media-gallery",{"title":501,"path":997,"stem":998,"children":999,"page":55},"/laioutr-ui/cms/newsletter","3.laioutr-ui/cms/newsletter",[1000,1004],{"title":1001,"path":1002,"stem":1003},"Email Input Form","/laioutr-ui/cms/newsletter/email-input-form","3.laioutr-ui/cms/newsletter/email-input-form",{"title":1005,"path":1006,"stem":1007},"Newsletter Registration","/laioutr-ui/cms/newsletter/newsletter-registration","3.laioutr-ui/cms/newsletter/newsletter-registration",{"title":1009,"path":1010,"stem":1011,"children":1012,"page":55},"Popups","/laioutr-ui/cms/popups","3.laioutr-ui/cms/popups",[1013,1017,1021,1025],{"title":1014,"path":1015,"stem":1016},"PopUp","/laioutr-ui/cms/popups/pop-up","3.laioutr-ui/cms/popups/pop-up",{"title":1018,"path":1019,"stem":1020},"PopUp Info","/laioutr-ui/cms/popups/pop-up-info","3.laioutr-ui/cms/popups/pop-up-info",{"title":1022,"path":1023,"stem":1024},"PopUp Newsletter","/laioutr-ui/cms/popups/pop-up-newsletter","3.laioutr-ui/cms/popups/pop-up-newsletter",{"title":1026,"path":1027,"stem":1028},"PopUp Promotion","/laioutr-ui/cms/popups/pop-up-promotion","3.laioutr-ui/cms/popups/pop-up-promotion",{"title":1030,"path":1031,"stem":1032},"Promotion Banner","/laioutr-ui/cms/promotion-banner","3.laioutr-ui/cms/promotion-banner",{"title":1034,"path":1035,"stem":1036,"children":1037,"page":55},"Quotes","/laioutr-ui/cms/quotes","3.laioutr-ui/cms/quotes",[1038,1042,1046,1050],{"title":1039,"path":1040,"stem":1041},"Persona Quote","/laioutr-ui/cms/quotes/persona-quote","3.laioutr-ui/cms/quotes/persona-quote",{"title":1043,"path":1044,"stem":1045},"Persona Quote Slider","/laioutr-ui/cms/quotes/persona-quote-slider","3.laioutr-ui/cms/quotes/persona-quote-slider",{"title":1047,"path":1048,"stem":1049},"Quote Card","/laioutr-ui/cms/quotes/quote-card","3.laioutr-ui/cms/quotes/quote-card",{"title":1051,"path":1052,"stem":1053},"Quote Card Slider","/laioutr-ui/cms/quotes/quote-card-slider","3.laioutr-ui/cms/quotes/quote-card-slider",{"title":1055,"path":1056,"stem":1057,"children":1058,"page":55},"Reviews","/laioutr-ui/cms/reviews","3.laioutr-ui/cms/reviews",[1059,1062,1066],{"title":432,"path":1060,"stem":1061},"/laioutr-ui/cms/reviews/review","3.laioutr-ui/cms/reviews/review",{"title":1063,"path":1064,"stem":1065},"Review Form","/laioutr-ui/cms/reviews/review-form","3.laioutr-ui/cms/reviews/review-form",{"title":1067,"path":1068,"stem":1069},"Social Share","/laioutr-ui/cms/reviews/social-share","3.laioutr-ui/cms/reviews/social-share",{"title":1071,"path":1072,"stem":1073,"children":1074,"page":55},"Slider","/laioutr-ui/cms/slider","3.laioutr-ui/cms/slider",[1075,1079,1083,1087,1091,1095,1099,1103,1107,1111,1115],{"title":1076,"path":1077,"stem":1078},"Content Slider","/laioutr-ui/cms/slider/content-slider","3.laioutr-ui/cms/slider/content-slider",{"title":1080,"path":1081,"stem":1082},"Hero Slider","/laioutr-ui/cms/slider/hero-slider","3.laioutr-ui/cms/slider/hero-slider",{"title":1084,"path":1085,"stem":1086},"Logo Grid","/laioutr-ui/cms/slider/logo-grid","3.laioutr-ui/cms/slider/logo-grid",{"title":1088,"path":1089,"stem":1090},"Logo Slider","/laioutr-ui/cms/slider/logo-slider","3.laioutr-ui/cms/slider/logo-slider",{"title":1092,"path":1093,"stem":1094},"Swiper Arrows","/laioutr-ui/cms/slider/swiper-arrows","3.laioutr-ui/cms/slider/swiper-arrows",{"title":1096,"path":1097,"stem":1098},"Swiper Bullets","/laioutr-ui/cms/slider/swiper-bullets","3.laioutr-ui/cms/slider/swiper-bullets",{"title":1100,"path":1101,"stem":1102},"Swiper Chrome","/laioutr-ui/cms/slider/swiper-chrome","3.laioutr-ui/cms/slider/swiper-chrome",{"title":1104,"path":1105,"stem":1106},"Swiper Nav Bar","/laioutr-ui/cms/slider/swiper-nav-bar","3.laioutr-ui/cms/slider/swiper-nav-bar",{"title":1108,"path":1109,"stem":1110},"Swiper Numbers","/laioutr-ui/cms/slider/swiper-numbers","3.laioutr-ui/cms/slider/swiper-numbers",{"title":1112,"path":1113,"stem":1114},"Swiper Scrollbar","/laioutr-ui/cms/slider/swiper-scrollbar","3.laioutr-ui/cms/slider/swiper-scrollbar",{"title":1116,"path":1117,"stem":1118},"Thumbnails Slider","/laioutr-ui/cms/slider/thumbnails-slider","3.laioutr-ui/cms/slider/thumbnails-slider",{"title":1120,"path":1121,"stem":1122},"Withdrawal Form","/laioutr-ui/cms/withdrawal-form","3.laioutr-ui/cms/withdrawal-form",{"title":356,"path":1124,"stem":1125,"children":1126},"/laioutr-ui/location","3.laioutr-ui/location/0.index",[1127,1128,1132,1136,1140],{"title":356,"path":1124,"stem":1125},{"title":1129,"path":1130,"stem":1131},"Location Card","/laioutr-ui/location/location-card","3.laioutr-ui/location/location-card",{"title":1133,"path":1134,"stem":1135},"Location Detail","/laioutr-ui/location/location-detail","3.laioutr-ui/location/location-detail",{"title":1137,"path":1138,"stem":1139},"Location Finder","/laioutr-ui/location/location-finder","3.laioutr-ui/location/location-finder",{"title":1141,"path":1142,"stem":1143},"Table Opening Hours","/laioutr-ui/location/table-opening-hours","3.laioutr-ui/location/table-opening-hours",{"title":1145,"path":1146,"stem":1147,"children":1148},"Marketplace","/laioutr-ui/marketplace","3.laioutr-ui/marketplace/0.index",[1149],{"title":1145,"path":1146,"stem":1147},{"title":1151,"path":1152,"stem":1153,"children":1154},"Multichannel","/laioutr-ui/multichannel","3.laioutr-ui/multichannel/0.index",[1155],{"title":1151,"path":1152,"stem":1153},{"title":1157,"path":1158,"stem":1159,"children":1160},"Navigation & Headers","/laioutr-ui/navigation","3.laioutr-ui/navigation/0.index",[1161,1162,1166,1170,1174,1178,1182,1186,1190,1194,1198,1202,1206],{"title":1157,"path":1158,"stem":1159},{"title":1163,"path":1164,"stem":1165},"Breadcrumbs","/laioutr-ui/navigation/breadcrumbs","3.laioutr-ui/navigation/breadcrumbs",{"title":1167,"path":1168,"stem":1169},"Footer","/laioutr-ui/navigation/footer","3.laioutr-ui/navigation/footer",{"title":1171,"path":1172,"stem":1173},"Footer Menu","/laioutr-ui/navigation/footer-menu","3.laioutr-ui/navigation/footer-menu",{"title":1175,"path":1176,"stem":1177},"Header Basic","/laioutr-ui/navigation/header-basic","3.laioutr-ui/navigation/header-basic",{"title":1179,"path":1180,"stem":1181},"Header Shop","/laioutr-ui/navigation/header-shop","3.laioutr-ui/navigation/header-shop",{"title":1183,"path":1184,"stem":1185},"Mega Menu","/laioutr-ui/navigation/mega-menu","3.laioutr-ui/navigation/mega-menu",{"title":1187,"path":1188,"stem":1189},"Menu Side by Side","/laioutr-ui/navigation/menu-side-by-side","3.laioutr-ui/navigation/menu-side-by-side",{"title":1191,"path":1192,"stem":1193},"Mobile Menu (Basic)","/laioutr-ui/navigation/mobile-menu-basic","3.laioutr-ui/navigation/mobile-menu-basic",{"title":1195,"path":1196,"stem":1197},"Mobile Menu (Shop)","/laioutr-ui/navigation/mobile-menu-shop","3.laioutr-ui/navigation/mobile-menu-shop",{"title":1199,"path":1200,"stem":1201},"Page Not Found","/laioutr-ui/navigation/page-not-found","3.laioutr-ui/navigation/page-not-found",{"title":1203,"path":1204,"stem":1205},"Search Auto-Suggest","/laioutr-ui/navigation/search-auto-suggest","3.laioutr-ui/navigation/search-auto-suggest",{"title":1207,"path":1208,"stem":1209},"Top Bar","/laioutr-ui/navigation/top-bar","3.laioutr-ui/navigation/top-bar",{"title":1211,"path":1212,"stem":1213,"children":1214},"SaaS","/laioutr-ui/saas","3.laioutr-ui/saas/0.index",[1215,1216,1220,1224],{"title":1211,"path":1212,"stem":1213},{"title":1217,"path":1218,"stem":1219},"Plan Card","/laioutr-ui/saas/plan-card","3.laioutr-ui/saas/plan-card",{"title":1221,"path":1222,"stem":1223},"Plan Card Slider","/laioutr-ui/saas/plan-card-slider","3.laioutr-ui/saas/plan-card-slider",{"title":1225,"path":1226,"stem":1227},"Plan Comparison Table","/laioutr-ui/saas/plan-comparison-table","3.laioutr-ui/saas/plan-comparison-table",{"title":1229,"path":1230,"stem":1231,"children":1232},"Shop","/laioutr-ui/shop","3.laioutr-ui/shop/0.index",[1233,1234,1262,1266,1270,1274,1278,1338,1342,1346,1350,1354,1358],{"title":1229,"path":1230,"stem":1231},{"title":424,"path":1235,"stem":1236,"children":1237,"page":55},"/laioutr-ui/shop/cart","3.laioutr-ui/shop/cart",[1238,1242,1246,1250,1254,1258],{"title":1239,"path":1240,"stem":1241},"Cart Coupon Code Accordion","/laioutr-ui/shop/cart/cart-coupon-code-accordion","3.laioutr-ui/shop/cart/cart-coupon-code-accordion",{"title":1243,"path":1244,"stem":1245},"Cart List Item","/laioutr-ui/shop/cart/cart-list-item","3.laioutr-ui/shop/cart/cart-list-item",{"title":1247,"path":1248,"stem":1249},"Cart Sheet","/laioutr-ui/shop/cart/cart-sheet","3.laioutr-ui/shop/cart/cart-sheet",{"title":1251,"path":1252,"stem":1253},"Cart Summary Box","/laioutr-ui/shop/cart/cart-summary-box","3.laioutr-ui/shop/cart/cart-summary-box",{"title":1255,"path":1256,"stem":1257},"Empty State Cart","/laioutr-ui/shop/cart/empty-state-cart","3.laioutr-ui/shop/cart/empty-state-cart",{"title":1259,"path":1260,"stem":1261},"Free Delivery Progress","/laioutr-ui/shop/cart/free-delivery-progress","3.laioutr-ui/shop/cart/free-delivery-progress",{"title":1263,"path":1264,"stem":1265},"Category Card Grid","/laioutr-ui/shop/category-card-grid","3.laioutr-ui/shop/category-card-grid",{"title":1267,"path":1268,"stem":1269},"Category Card Slider","/laioutr-ui/shop/category-card-slider","3.laioutr-ui/shop/category-card-slider",{"title":1271,"path":1272,"stem":1273},"Filter Bar","/laioutr-ui/shop/filter-bar","3.laioutr-ui/shop/filter-bar",{"title":1275,"path":1276,"stem":1277},"Filter Off Canvas","/laioutr-ui/shop/filter-off-canvas","3.laioutr-ui/shop/filter-off-canvas",{"title":1279,"path":1280,"stem":1281,"children":1282,"page":55},"Product Detail","/laioutr-ui/shop/product-detail","3.laioutr-ui/shop/product-detail",[1283,1287,1291,1295,1299,1303,1306,1310,1314,1318,1322,1326,1330,1334],{"title":1284,"path":1285,"stem":1286},"Add to Cart","/laioutr-ui/shop/product-detail/add-to-cart","3.laioutr-ui/shop/product-detail/add-to-cart",{"title":1288,"path":1289,"stem":1290},"Benefits Box","/laioutr-ui/shop/product-detail/benefits-box","3.laioutr-ui/shop/product-detail/benefits-box",{"title":1292,"path":1293,"stem":1294},"Coupon Box","/laioutr-ui/shop/product-detail/coupon-box","3.laioutr-ui/shop/product-detail/coupon-box",{"title":1296,"path":1297,"stem":1298},"Energy Label","/laioutr-ui/shop/product-detail/energy-label","3.laioutr-ui/shop/product-detail/energy-label",{"title":1300,"path":1301,"stem":1302},"Price Info","/laioutr-ui/shop/product-detail/price-info","3.laioutr-ui/shop/product-detail/price-info",{"title":1279,"path":1304,"stem":1305},"/laioutr-ui/shop/product-detail/product-detail","3.laioutr-ui/shop/product-detail/product-detail",{"title":1307,"path":1308,"stem":1309},"Product Image Gallery","/laioutr-ui/shop/product-detail/product-image-gallery","3.laioutr-ui/shop/product-detail/product-image-gallery",{"title":1311,"path":1312,"stem":1313},"Product Specifications Table","/laioutr-ui/shop/product-detail/product-specifications","3.laioutr-ui/shop/product-detail/product-specifications",{"title":1315,"path":1316,"stem":1317},"Product Title","/laioutr-ui/shop/product-detail/product-title","3.laioutr-ui/shop/product-detail/product-title",{"title":1319,"path":1320,"stem":1321},"Quantity Discount","/laioutr-ui/shop/product-detail/quantity-discount","3.laioutr-ui/shop/product-detail/quantity-discount",{"title":1323,"path":1324,"stem":1325},"Variant Off Canvas","/laioutr-ui/shop/product-detail/variant-off-canvas","3.laioutr-ui/shop/product-detail/variant-off-canvas",{"title":1327,"path":1328,"stem":1329},"Variant Selector Configurator","/laioutr-ui/shop/product-detail/variant-selector-configurator","3.laioutr-ui/shop/product-detail/variant-selector-configurator",{"title":1331,"path":1332,"stem":1333},"Variant Selector (Multiple)","/laioutr-ui/shop/product-detail/variant-selector-multiple","3.laioutr-ui/shop/product-detail/variant-selector-multiple",{"title":1335,"path":1336,"stem":1337},"Variant Selector Options","/laioutr-ui/shop/product-detail/variant-selector-options","3.laioutr-ui/shop/product-detail/variant-selector-options",{"title":1339,"path":1340,"stem":1341},"Product Listing Grid","/laioutr-ui/shop/product-listing-grid","3.laioutr-ui/shop/product-listing-grid",{"title":1343,"path":1344,"stem":1345},"Product Slider","/laioutr-ui/shop/product-slider","3.laioutr-ui/shop/product-slider",{"title":1347,"path":1348,"stem":1349},"Product Slider Showcase","/laioutr-ui/shop/product-slider-showcase","3.laioutr-ui/shop/product-slider-showcase",{"title":1351,"path":1352,"stem":1353},"Product Tile (Basic)","/laioutr-ui/shop/product-tile-basic","3.laioutr-ui/shop/product-tile-basic",{"title":1355,"path":1356,"stem":1357},"Search Result Hero","/laioutr-ui/shop/search-result-hero","3.laioutr-ui/shop/search-result-hero",{"title":1359,"path":1360,"stem":1361},"Sort Modes","/laioutr-ui/shop/sort-modes","3.laioutr-ui/shop/sort-modes",{"title":1363,"path":1364,"stem":1365,"children":1366},"UI Kit","/laioutr-ui/ui-kit","3.laioutr-ui/ui-kit/0.index",[1367,1368,1536,1560,1581,1598,1635,1744,1773],{"title":1363,"path":1364,"stem":1365},{"title":1369,"path":1370,"stem":1371,"children":1372,"page":55},"General","/laioutr-ui/ui-kit/general","3.laioutr-ui/ui-kit/01.general",[1373,1377,1381,1385,1389,1393,1397,1401,1405,1409,1413,1416,1420,1424,1428,1432,1436,1440,1444,1448,1452,1456,1460,1464,1468,1472,1476,1480,1484,1488,1492,1496,1500,1504,1508,1512,1516,1520,1524,1528,1532],{"title":1374,"path":1375,"stem":1376},"Accordion","/laioutr-ui/ui-kit/general/accordion","3.laioutr-ui/ui-kit/01.general/Accordion",{"title":1378,"path":1379,"stem":1380},"Avatar","/laioutr-ui/ui-kit/general/avatar","3.laioutr-ui/ui-kit/01.general/Avatar",{"title":1382,"path":1383,"stem":1384},"Backdrop","/laioutr-ui/ui-kit/general/backdrop","3.laioutr-ui/ui-kit/01.general/Backdrop",{"title":1386,"path":1387,"stem":1388},"Dropdown Menu","/laioutr-ui/ui-kit/general/dropdownmenu","3.laioutr-ui/ui-kit/01.general/DropdownMenu",{"title":1390,"path":1391,"stem":1392},"Edge Glow","/laioutr-ui/ui-kit/general/edgeglow","3.laioutr-ui/ui-kit/01.general/EdgeGlow",{"title":1394,"path":1395,"stem":1396},"Empty State","/laioutr-ui/ui-kit/general/emptystate","3.laioutr-ui/ui-kit/01.general/EmptyState",{"title":1398,"path":1399,"stem":1400},"Icon","/laioutr-ui/ui-kit/general/icon","3.laioutr-ui/ui-kit/01.general/Icon",{"title":1402,"path":1403,"stem":1404},"Image Contrast Overlay","/laioutr-ui/ui-kit/general/imagecontrastoverlay","3.laioutr-ui/ui-kit/01.general/ImageContrastOverlay",{"title":1406,"path":1407,"stem":1408},"Lightbox","/laioutr-ui/ui-kit/general/lightbox","3.laioutr-ui/ui-kit/01.general/Lightbox",{"title":1410,"path":1411,"stem":1412},"Loading Spinner","/laioutr-ui/ui-kit/general/loadingspinner","3.laioutr-ui/ui-kit/01.general/LoadingSpinner",{"title":461,"path":1414,"stem":1415},"/laioutr-ui/ui-kit/general/media","3.laioutr-ui/ui-kit/01.general/Media",{"title":1417,"path":1418,"stem":1419},"Navigation Bullets","/laioutr-ui/ui-kit/general/navigationbullets","3.laioutr-ui/ui-kit/01.general/NavigationBullets",{"title":1421,"path":1422,"stem":1423},"Placeholder","/laioutr-ui/ui-kit/general/placeholder","3.laioutr-ui/ui-kit/01.general/Placeholder",{"title":1425,"path":1426,"stem":1427},"Progress Bar","/laioutr-ui/ui-kit/general/progressbar","3.laioutr-ui/ui-kit/01.general/ProgressBar",{"title":1429,"path":1430,"stem":1431},"Scrollbar","/laioutr-ui/ui-kit/general/scrollbar","3.laioutr-ui/ui-kit/01.general/Scrollbar",{"title":1433,"path":1434,"stem":1435},"Swatch","/laioutr-ui/ui-kit/general/swatch","3.laioutr-ui/ui-kit/01.general/Swatch",{"title":1437,"path":1438,"stem":1439},"SwiperScrollbar","/laioutr-ui/ui-kit/general/swiperscrollbar","3.laioutr-ui/ui-kit/01.general/SwiperScrollbar",{"title":1441,"path":1442,"stem":1443},"Thumbnail","/laioutr-ui/ui-kit/general/thumbnail","3.laioutr-ui/ui-kit/01.general/Thumbnail",{"title":1445,"path":1446,"stem":1447},"Tooltip","/laioutr-ui/ui-kit/general/tooltip","3.laioutr-ui/ui-kit/01.general/Tooltip",{"title":1449,"path":1450,"stem":1451},"Amount Pill","/laioutr-ui/ui-kit/general/amount-pill","3.laioutr-ui/ui-kit/01.general/amount-pill",{"title":1453,"path":1454,"stem":1455},"Countdown","/laioutr-ui/ui-kit/general/countdown","3.laioutr-ui/ui-kit/01.general/countdown",{"title":1457,"path":1458,"stem":1459},"Countdown Boxed","/laioutr-ui/ui-kit/general/countdown-boxed","3.laioutr-ui/ui-kit/01.general/countdown-boxed",{"title":1461,"path":1462,"stem":1463},"Dark Mode Switch","/laioutr-ui/ui-kit/general/dark-mode-switch","3.laioutr-ui/ui-kit/01.general/dark-mode-switch",{"title":1465,"path":1466,"stem":1467},"Language Switcher","/laioutr-ui/ui-kit/general/language-switcher","3.laioutr-ui/ui-kit/01.general/language-switcher",{"title":1469,"path":1470,"stem":1471},"Media Preview","/laioutr-ui/ui-kit/general/media-preview","3.laioutr-ui/ui-kit/01.general/media-preview",{"title":1473,"path":1474,"stem":1475},"Media Stage","/laioutr-ui/ui-kit/general/media-stage","3.laioutr-ui/ui-kit/01.general/media-stage",{"title":1477,"path":1478,"stem":1479},"Nav Link Item","/laioutr-ui/ui-kit/general/nav-link-item","3.laioutr-ui/ui-kit/01.general/nav-link-item",{"title":1481,"path":1482,"stem":1483},"Nav Section Heading","/laioutr-ui/ui-kit/general/nav-section-heading","3.laioutr-ui/ui-kit/01.general/nav-section-heading",{"title":1485,"path":1486,"stem":1487},"OnSurface","/laioutr-ui/ui-kit/general/on-surface","3.laioutr-ui/ui-kit/01.general/on-surface",{"title":1489,"path":1490,"stem":1491},"Opening Status","/laioutr-ui/ui-kit/general/opening-status","3.laioutr-ui/ui-kit/01.general/opening-status",{"title":1493,"path":1494,"stem":1495},"Opening Status Detail","/laioutr-ui/ui-kit/general/opening-status-detail","3.laioutr-ui/ui-kit/01.general/opening-status-detail",{"title":1497,"path":1498,"stem":1499},"Opening Status Indicator","/laioutr-ui/ui-kit/general/opening-status-indicator","3.laioutr-ui/ui-kit/01.general/opening-status-indicator",{"title":1501,"path":1502,"stem":1503},"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":1505,"path":1506,"stem":1507},"Status Message","/laioutr-ui/ui-kit/general/status-message","3.laioutr-ui/ui-kit/01.general/status-message",{"title":1509,"path":1510,"stem":1511},"Stock Info Summary","/laioutr-ui/ui-kit/general/stock-info-summary","3.laioutr-ui/ui-kit/01.general/stock-info-summary",{"title":1513,"path":1514,"stem":1515},"Swatch Chip","/laioutr-ui/ui-kit/general/swatch-chip","3.laioutr-ui/ui-kit/01.general/swatch-chip",{"title":1517,"path":1518,"stem":1519},"Swatch Option","/laioutr-ui/ui-kit/general/swatch-option","3.laioutr-ui/ui-kit/01.general/swatch-option",{"title":1521,"path":1522,"stem":1523},"Swatch Summary","/laioutr-ui/ui-kit/general/swatch-summary","3.laioutr-ui/ui-kit/01.general/swatch-summary",{"title":1525,"path":1526,"stem":1527},"Table of Contents","/laioutr-ui/ui-kit/general/table-of-contents","3.laioutr-ui/ui-kit/01.general/table-of-contents",{"title":1529,"path":1530,"stem":1531},"Zoom Level (Segmented)","/laioutr-ui/ui-kit/general/zoom-level-segmented","3.laioutr-ui/ui-kit/01.general/zoom-level-segmented",{"title":1533,"path":1534,"stem":1535},"Zoom Level (Stepper)","/laioutr-ui/ui-kit/general/zoom-level-stepper","3.laioutr-ui/ui-kit/01.general/zoom-level-stepper",{"title":1537,"path":1538,"stem":1539,"children":1540,"page":55},"Typography","/laioutr-ui/ui-kit/typography","3.laioutr-ui/ui-kit/02.typography",[1541,1545,1548,1552,1556],{"title":1542,"path":1543,"stem":1544},"Icon List","/laioutr-ui/ui-kit/typography/iconlist","3.laioutr-ui/ui-kit/02.typography/IconList",{"title":457,"path":1546,"stem":1547},"/laioutr-ui/ui-kit/typography/link","3.laioutr-ui/ui-kit/02.typography/Link",{"title":1549,"path":1550,"stem":1551},"Rich Content","/laioutr-ui/ui-kit/typography/richcontent","3.laioutr-ui/ui-kit/02.typography/RichContent",{"title":1553,"path":1554,"stem":1555},"Text","/laioutr-ui/ui-kit/typography/text","3.laioutr-ui/ui-kit/02.typography/Text",{"title":1557,"path":1558,"stem":1559},"Text Group","/laioutr-ui/ui-kit/typography/text-group","3.laioutr-ui/ui-kit/02.typography/text-group",{"title":1561,"path":1562,"stem":1563,"children":1564,"page":55},"Layout","/laioutr-ui/ui-kit/layout","3.laioutr-ui/ui-kit/03.layout",[1565,1569,1573,1577],{"title":1566,"path":1567,"stem":1568},"Grid Fill","/laioutr-ui/ui-kit/layout/gridfill","3.laioutr-ui/ui-kit/03.layout/GridFill",{"title":1570,"path":1571,"stem":1572},"Grid Masonry","/laioutr-ui/ui-kit/layout/gridmasonry","3.laioutr-ui/ui-kit/03.layout/GridMasonry",{"title":1574,"path":1575,"stem":1576},"Scroll Area","/laioutr-ui/ui-kit/layout/scrollarea","3.laioutr-ui/ui-kit/03.layout/ScrollArea",{"title":1578,"path":1579,"stem":1580},"Separator","/laioutr-ui/ui-kit/layout/separator","3.laioutr-ui/ui-kit/03.layout/Separator",{"title":1582,"path":1583,"stem":1584,"children":1585,"page":55},"Content","/laioutr-ui/ui-kit/content","3.laioutr-ui/ui-kit/04.content",[1586,1590,1594],{"title":1587,"path":1588,"stem":1589},"Card","/laioutr-ui/ui-kit/content/card","3.laioutr-ui/ui-kit/04.content/Card",{"title":1591,"path":1592,"stem":1593},"Basic Table","/laioutr-ui/ui-kit/content/basic-table","3.laioutr-ui/ui-kit/04.content/basic-table",{"title":1595,"path":1596,"stem":1597},"Link Tile","/laioutr-ui/ui-kit/content/link-tile","3.laioutr-ui/ui-kit/04.content/link-tile",{"title":1599,"path":1600,"stem":1601,"children":1602,"page":55},"Surfaces","/laioutr-ui/ui-kit/surfaces","3.laioutr-ui/ui-kit/05.surfaces",[1603,1607,1611,1615,1619,1623,1627,1631],{"title":1604,"path":1605,"stem":1606},"Alert Dialog","/laioutr-ui/ui-kit/surfaces/alertdialog","3.laioutr-ui/ui-kit/05.surfaces/AlertDialog",{"title":1608,"path":1609,"stem":1610},"Popover","/laioutr-ui/ui-kit/surfaces/popover","3.laioutr-ui/ui-kit/05.surfaces/Popover",{"title":1612,"path":1613,"stem":1614},"Sheet","/laioutr-ui/ui-kit/surfaces/sheet","3.laioutr-ui/ui-kit/05.surfaces/Sheet",{"title":1616,"path":1617,"stem":1618},"Tabs","/laioutr-ui/ui-kit/surfaces/tabs","3.laioutr-ui/ui-kit/05.surfaces/Tabs",{"title":1620,"path":1621,"stem":1622},"Toast","/laioutr-ui/ui-kit/surfaces/toast","3.laioutr-ui/ui-kit/05.surfaces/Toast",{"title":1624,"path":1625,"stem":1626},"Toaster","/laioutr-ui/ui-kit/surfaces/toaster","3.laioutr-ui/ui-kit/05.surfaces/Toaster",{"title":1628,"path":1629,"stem":1630},"Context Menu","/laioutr-ui/ui-kit/surfaces/context-menu","3.laioutr-ui/ui-kit/05.surfaces/context-menu",{"title":1632,"path":1633,"stem":1634},"Navigation Menu","/laioutr-ui/ui-kit/surfaces/navigation-menu","3.laioutr-ui/ui-kit/05.surfaces/navigation-menu",{"title":1636,"path":1637,"stem":1638,"children":1639,"page":55},"Form","/laioutr-ui/ui-kit/form","3.laioutr-ui/ui-kit/06.form",[1640,1644,1648,1652,1656,1660,1664,1668,1672,1676,1680,1684,1688,1692,1696,1700,1704,1708,1712,1716,1720,1724,1728,1732,1736,1740],{"title":1641,"path":1642,"stem":1643},"Button","/laioutr-ui/ui-kit/form/button","3.laioutr-ui/ui-kit/06.form/Button",{"title":1645,"path":1646,"stem":1647},"Checkbox","/laioutr-ui/ui-kit/form/checkbox","3.laioutr-ui/ui-kit/06.form/Checkbox",{"title":1649,"path":1650,"stem":1651},"Field","/laioutr-ui/ui-kit/form/field","3.laioutr-ui/ui-kit/06.form/Field",{"title":1653,"path":1654,"stem":1655},"Input","/laioutr-ui/ui-kit/form/input","3.laioutr-ui/ui-kit/06.form/Input",{"title":1657,"path":1658,"stem":1659},"Label","/laioutr-ui/ui-kit/form/label","3.laioutr-ui/ui-kit/06.form/Label",{"title":1661,"path":1662,"stem":1663},"Load More","/laioutr-ui/ui-kit/form/loadmore","3.laioutr-ui/ui-kit/06.form/LoadMore",{"title":1665,"path":1666,"stem":1667},"Pagination","/laioutr-ui/ui-kit/form/pagination","3.laioutr-ui/ui-kit/06.form/Pagination",{"title":1669,"path":1670,"stem":1671},"Quantity Picker","/laioutr-ui/ui-kit/form/quantitypicker","3.laioutr-ui/ui-kit/06.form/QuantityPicker",{"title":1673,"path":1674,"stem":1675},"Select","/laioutr-ui/ui-kit/form/select","3.laioutr-ui/ui-kit/06.form/Select",{"title":1677,"path":1678,"stem":1679},"Switch","/laioutr-ui/ui-kit/form/switch","3.laioutr-ui/ui-kit/06.form/Switch",{"title":1681,"path":1682,"stem":1683},"Highlight Toggle","/laioutr-ui/ui-kit/form/highlight-toggle","3.laioutr-ui/ui-kit/06.form/highlight-toggle",{"title":1685,"path":1686,"stem":1687},"Icon Button","/laioutr-ui/ui-kit/form/icon-button","3.laioutr-ui/ui-kit/06.form/icon-button",{"title":1689,"path":1690,"stem":1691},"Input Autocomplete","/laioutr-ui/ui-kit/form/input-autocomplete","3.laioutr-ui/ui-kit/06.form/input-autocomplete",{"title":1693,"path":1694,"stem":1695},"Input Checkbox","/laioutr-ui/ui-kit/form/input-checkbox","3.laioutr-ui/ui-kit/06.form/input-checkbox",{"title":1697,"path":1698,"stem":1699},"Input Combobox","/laioutr-ui/ui-kit/form/input-combobox","3.laioutr-ui/ui-kit/06.form/input-combobox",{"title":1701,"path":1702,"stem":1703},"Input Group","/laioutr-ui/ui-kit/form/input-group","3.laioutr-ui/ui-kit/06.form/input-group",{"title":1705,"path":1706,"stem":1707},"Input Password","/laioutr-ui/ui-kit/form/input-password","3.laioutr-ui/ui-kit/06.form/input-password",{"title":1709,"path":1710,"stem":1711},"Input Pin","/laioutr-ui/ui-kit/form/input-pin","3.laioutr-ui/ui-kit/06.form/input-pin",{"title":1713,"path":1714,"stem":1715},"Input Radio","/laioutr-ui/ui-kit/form/input-radio","3.laioutr-ui/ui-kit/06.form/input-radio",{"title":1717,"path":1718,"stem":1719},"Input Rating","/laioutr-ui/ui-kit/form/input-rating","3.laioutr-ui/ui-kit/06.form/input-rating",{"title":1721,"path":1722,"stem":1723},"Input Search","/laioutr-ui/ui-kit/form/input-search","3.laioutr-ui/ui-kit/06.form/input-search",{"title":1725,"path":1726,"stem":1727},"Input Slider","/laioutr-ui/ui-kit/form/input-slider","3.laioutr-ui/ui-kit/06.form/input-slider",{"title":1729,"path":1730,"stem":1731},"Listbox","/laioutr-ui/ui-kit/form/listbox","3.laioutr-ui/ui-kit/06.form/listbox",{"title":1733,"path":1734,"stem":1735},"Option Tile (Image)","/laioutr-ui/ui-kit/form/option-tile-image","3.laioutr-ui/ui-kit/06.form/option-tile-image",{"title":1737,"path":1738,"stem":1739},"Option Tile (Text)","/laioutr-ui/ui-kit/form/option-tile-text","3.laioutr-ui/ui-kit/06.form/option-tile-text",{"title":1741,"path":1742,"stem":1743},"Variant Selection Card","/laioutr-ui/ui-kit/form/variant-selection-card","3.laioutr-ui/ui-kit/06.form/variant-selection-card",{"title":1745,"path":1746,"stem":1747,"children":1748,"page":55},"Indicators","/laioutr-ui/ui-kit/indicators","3.laioutr-ui/ui-kit/07.indicators",[1749,1753,1757,1761,1765,1769],{"title":1750,"path":1751,"stem":1752},"Badge","/laioutr-ui/ui-kit/indicators/badge","3.laioutr-ui/ui-kit/07.indicators/Badge",{"title":1754,"path":1755,"stem":1756},"Caption Flag","/laioutr-ui/ui-kit/indicators/captionflag","3.laioutr-ui/ui-kit/07.indicators/CaptionFlag",{"title":1758,"path":1759,"stem":1760},"Product Tile Flag","/laioutr-ui/ui-kit/indicators/producttileflag","3.laioutr-ui/ui-kit/07.indicators/ProductTileFlag",{"title":1762,"path":1763,"stem":1764},"Rating Summary","/laioutr-ui/ui-kit/indicators/ratingsummary","3.laioutr-ui/ui-kit/07.indicators/RatingSummary",{"title":1766,"path":1767,"stem":1768},"Stars Rating","/laioutr-ui/ui-kit/indicators/starsrating","3.laioutr-ui/ui-kit/07.indicators/StarsRating",{"title":1770,"path":1771,"stem":1772},"Badge Promotion","/laioutr-ui/ui-kit/indicators/badge-promotion","3.laioutr-ui/ui-kit/07.indicators/badge-promotion",{"title":1774,"path":1775,"stem":1776,"children":1777,"page":55},"Utility Components","/laioutr-ui/ui-kit/utility-components","3.laioutr-ui/ui-kit/08.utility-components",[1778,1782],{"title":1779,"path":1780,"stem":1781},"Highlighted Text","/laioutr-ui/ui-kit/utility-components/highlighted-text","3.laioutr-ui/ui-kit/08.utility-components/highlighted-text",{"title":1783,"path":1784,"stem":1785},"Sizer","/laioutr-ui/ui-kit/utility-components/sizer","3.laioutr-ui/ui-kit/08.utility-components/sizer",{"title":1787,"path":1788,"stem":1789,"children":1790},"Hosting","/hosting","4.hosting/0.index",[1791,1792,1798,1828,1846],{"title":1787,"path":1788,"stem":1789},{"title":1793,"path":1794,"stem":1795,"children":1796},"Laioutr Cloud","/hosting/laioutr-cloud","4.hosting/0.laioutr-cloud/0.index",[1797],{"title":1793,"path":1794,"stem":1795},{"title":1799,"path":1800,"stem":1801,"children":1802},"Hyperscaler","/hosting/hyperscaler","4.hosting/1.hyperscaler/0.index",[1803,1804,1808,1812,1816,1820,1824],{"title":1799,"path":1800,"stem":1801},{"title":1805,"path":1806,"stem":1807},"Akamai Adapter","/hosting/hyperscaler/akamai-adapter","4.hosting/1.hyperscaler/akamai-adapter",{"title":1809,"path":1810,"stem":1811},"AWS Adapter","/hosting/hyperscaler/aws-adapter","4.hosting/1.hyperscaler/aws-adapter",{"title":1813,"path":1814,"stem":1815},"Azure Adapter","/hosting/hyperscaler/azure-adapter","4.hosting/1.hyperscaler/azure-adapter",{"title":1817,"path":1818,"stem":1819},"Google Adapter","/hosting/hyperscaler/google-adapter","4.hosting/1.hyperscaler/google-adapter",{"title":1821,"path":1822,"stem":1823},"Netlify Adapter","/hosting/hyperscaler/netlify-adapter","4.hosting/1.hyperscaler/netlify-adapter",{"title":1825,"path":1826,"stem":1827},"Vercel Adapter","/hosting/hyperscaler/vercel-adapter","4.hosting/1.hyperscaler/vercel-adapter",{"title":1829,"path":1830,"stem":1831,"children":1832},"Native Hosting","/hosting/native-hosting-providers","4.hosting/2.native-hosting-providers/0.index",[1833,1834,1838,1842],{"title":1829,"path":1830,"stem":1831},{"title":1835,"path":1836,"stem":1837},"maxcluster","/hosting/native-hosting-providers/maxcluster","4.hosting/2.native-hosting-providers/maxcluster",{"title":1839,"path":1840,"stem":1841},"profihost","/hosting/native-hosting-providers/profihost","4.hosting/2.native-hosting-providers/profihost",{"title":1843,"path":1844,"stem":1845},"ScaleCommerce","/hosting/native-hosting-providers/scale-commerce","4.hosting/2.native-hosting-providers/scale-commerce",{"title":1847,"path":1848,"stem":1849,"children":1850},"Bring Your Own Server (BYOS)","/hosting/bring-your-own-server-byos","4.hosting/3.bring-your-own-server-byos/0.index",[1851,1852,1856,1860,1864,1868,1872],{"title":1847,"path":1848,"stem":1849},{"title":1853,"path":1854,"stem":1855},"BYOS Agent","/hosting/bring-your-own-server-byos/byos-agent","4.hosting/3.bring-your-own-server-byos/byos-agent",{"title":1857,"path":1858,"stem":1859},"Changelog","/hosting/bring-your-own-server-byos/changelog","4.hosting/3.bring-your-own-server-byos/changelog",{"title":1861,"path":1862,"stem":1863},"DevOps Components","/hosting/bring-your-own-server-byos/devops","4.hosting/3.bring-your-own-server-byos/devops",{"title":1865,"path":1866,"stem":1867},"Infrastructure Requirements","/hosting/bring-your-own-server-byos/infrastructure","4.hosting/3.bring-your-own-server-byos/infrastructure",{"title":1869,"path":1870,"stem":1871},"Software Requirements","/hosting/bring-your-own-server-byos/software","4.hosting/3.bring-your-own-server-byos/software",{"title":1873,"path":1874,"stem":1875},"Webhook Configuration","/hosting/bring-your-own-server-byos/webhook-config","4.hosting/3.bring-your-own-server-byos/webhook-config",{"title":597,"path":1877,"stem":1878,"children":1879},"/checkout","5.Checkout/0.index",[1880],{"title":597,"path":1877,"stem":1878},{"title":609,"path":1882,"stem":1883,"children":1884},"/larry-ai","6.Larry-AI/0.index",[1885],{"title":609,"path":1882,"stem":1883},{"title":901,"path":1887,"stem":1888,"children":1889},"/figma-kit","7.Figma Kit/0.index",[1890,1891,1907],{"title":901,"path":1887,"stem":1888},{"title":121,"path":1892,"stem":1893,"children":1894,"page":55},"/figma-kit/introduction","7.Figma Kit/1.Introduction",[1895,1899,1903],{"title":1896,"path":1897,"stem":1898},"How to Start","/figma-kit/introduction/howtostart","7.Figma Kit/1.Introduction/0.howtostart",{"title":1900,"path":1901,"stem":1902},"Figma Variables","/figma-kit/introduction/figma-variables","7.Figma Kit/1.Introduction/figma-variables",{"title":1904,"path":1905,"stem":1906},"Library Connections","/figma-kit/introduction/library-connections","7.Figma Kit/1.Introduction/library-connections",{"title":1908,"path":1909,"stem":1910,"children":1911,"page":55},"Kits","/figma-kit/kits","7.Figma Kit/Kits",[1912,1915,1918,1921,1925,1928,1932,1936,1939,1942],{"title":916,"path":1913,"stem":1914},"/figma-kit/kits/b2b","7.Figma Kit/Kits/b2b",{"title":922,"path":1916,"stem":1917},"/figma-kit/kits/booking","7.Figma Kit/Kits/booking",{"title":928,"path":1919,"stem":1920},"/figma-kit/kits/cms","7.Figma Kit/Kits/cms",{"title":1922,"path":1923,"stem":1924},"Inpage Navigation","/figma-kit/kits/inpage-navigation","7.Figma Kit/Kits/inpage-navigation",{"title":1145,"path":1926,"stem":1927},"/figma-kit/kits/marketplace","7.Figma Kit/Kits/marketplace",{"title":1929,"path":1930,"stem":1931},"Retail & Multichannel","/figma-kit/kits/multichannel","7.Figma Kit/Kits/multichannel",{"title":1933,"path":1934,"stem":1935},"Navigation","/figma-kit/kits/navigation","7.Figma Kit/Kits/navigation",{"title":1211,"path":1937,"stem":1938},"/figma-kit/kits/saas","7.Figma Kit/Kits/saas",{"title":1229,"path":1940,"stem":1941},"/figma-kit/kits/shop","7.Figma Kit/Kits/shop",{"title":1363,"path":1943,"stem":1944},"/figma-kit/kits/ui-kit","7.Figma Kit/Kits/ui-kit",{"title":591,"path":1946,"stem":1947,"children":1948},"/cockpit","8.Cockpit/0.index",[1949,1950,1980,1997,2014],{"title":591,"path":1946,"stem":1947},{"title":154,"path":1951,"stem":1952,"children":1953,"page":55},"/cockpit/features","8.Cockpit/1.Features",[1954,1957,1961,1965,1969,1972,1976],{"title":690,"path":1955,"stem":1956},"/cockpit/features/apps","8.Cockpit/1.Features/apps",{"title":1958,"path":1959,"stem":1960},"Content (Collections)","/cockpit/features/content-collections","8.Cockpit/1.Features/content-collections",{"title":1962,"path":1963,"stem":1964},"Deployments","/cockpit/features/deployments","8.Cockpit/1.Features/deployments",{"title":1966,"path":1967,"stem":1968},"Markets","/cockpit/features/markets","8.Cockpit/1.Features/markets",{"title":200,"path":1970,"stem":1971},"/cockpit/features/redirects","8.Cockpit/1.Features/redirects",{"title":1973,"path":1974,"stem":1975},"Studio","/cockpit/features/studio","8.Cockpit/1.Features/studio",{"title":1977,"path":1978,"stem":1979},"Translations","/cockpit/features/translations","8.Cockpit/1.Features/translations",{"title":1981,"path":1982,"stem":1983,"children":1984,"page":55},"Project Settings","/cockpit/project-settings","8.Cockpit/2.Project-Settings",[1985,1989,1993],{"title":1986,"path":1987,"stem":1988},"Delete a project","/cockpit/project-settings/delete-project","8.Cockpit/2.Project-Settings/delete-project",{"title":1990,"path":1991,"stem":1992},"NPM","/cockpit/project-settings/npm","8.Cockpit/2.Project-Settings/npm",{"title":1994,"path":1995,"stem":1996},"Project secret key","/cockpit/project-settings/project-secret-key","8.Cockpit/2.Project-Settings/project-secret-key",{"title":1998,"path":1999,"stem":2000,"children":2001,"page":55},"Account Settings","/cockpit/account-settings","8.Cockpit/3.Account-Settings",[2002,2006,2010],{"title":2003,"path":2004,"stem":2005},"Notifications","/cockpit/account-settings/notifications","8.Cockpit/3.Account-Settings/notifications",{"title":2007,"path":2008,"stem":2009},"Preferences","/cockpit/account-settings/preferences","8.Cockpit/3.Account-Settings/preferences",{"title":2011,"path":2012,"stem":2013},"Security","/cockpit/account-settings/security","8.Cockpit/3.Account-Settings/security",{"title":2015,"path":2016,"stem":2017,"children":2018,"page":55},"Organisation Settings","/cockpit/organisation-settings","8.Cockpit/4.Organisation-Settings",[2019,2023,2027,2031,2035,2039],{"title":2020,"path":2021,"stem":2022},"API keys","/cockpit/organisation-settings/api-keys","8.Cockpit/4.Organisation-Settings/api-keys",{"title":2024,"path":2025,"stem":2026},"Billing","/cockpit/organisation-settings/billing","8.Cockpit/4.Organisation-Settings/billing",{"title":2028,"path":2029,"stem":2030},"General settings","/cockpit/organisation-settings/general-settings","8.Cockpit/4.Organisation-Settings/general-settings",{"title":2032,"path":2033,"stem":2034},"Members","/cockpit/organisation-settings/members","8.Cockpit/4.Organisation-Settings/members",{"title":2036,"path":2037,"stem":2038},"Projects","/cockpit/organisation-settings/projects","8.Cockpit/4.Organisation-Settings/projects",{"title":2040,"path":2041,"stem":2042},"Roles","/cockpit/organisation-settings/roles","8.Cockpit/4.Organisation-Settings/roles",{"title":2044,"path":2045,"stem":2046,"children":2047},"Data API","/data-api","9.Data-API/0.index",[2048,2049,2069,2079],{"title":2044,"path":2045,"stem":2046},{"title":2050,"path":2051,"stem":2052,"children":2053,"page":55},"Api Info","/data-api/api-info","9.Data-API/1.API-Info",[2054,2058,2062,2065],{"title":2055,"path":2056,"stem":2057},"API Basics","/data-api/api-info/api-basics","9.Data-API/1.API-Info/1.api-basics",{"title":2059,"path":2060,"stem":2061},"Authentication","/data-api/api-info/authentication","9.Data-API/1.API-Info/2.authentication",{"title":497,"path":2063,"stem":2064},"/data-api/api-info/errors","9.Data-API/1.API-Info/3.errors",{"title":2066,"path":2067,"stem":2068},"HTTP details","/data-api/api-info/http-details","9.Data-API/1.API-Info/4.http-details",{"title":2070,"path":2071,"stem":2072,"children":2073},"Management API","/data-api/management-api","9.Data-API/2.Management-API/0.index",[2074,2075],{"title":2070,"path":2071,"stem":2072},{"title":2076,"path":2077,"stem":2078},"Assets","/data-api/management-api/assets","9.Data-API/2.Management-API/1.assets",{"title":2080,"path":2081,"stem":2082,"children":2083},"Delivery API","/data-api/delivery-api","9.Data-API/3.Delivery-API/0.index",[2084],{"title":2080,"path":2081,"stem":2082},{"id":2086,"title":310,"aliases":2087,"body":2088,"changelogKeys":2087,"description":5331,"extension":5332,"links":2087,"meta":5333,"navigation":2654,"path":311,"playground":2087,"seo":5334,"sitemap":5335,"stem":312,"__hash__":5339},"docs/1.Frontend/4.Orchestr/page-index.md",null,{"type":2089,"value":2090,"toc":5310},"minimark",[2091,2097,2106,2119,2515,2518,2523,2530,2608,2681,2688,2692,2710,2842,3627,3644,3649,3799,3825,3829,3836,3961,3967,3978,3989,4125,4135,4139,4145,4163,4166,4175,4181,4193,4199,4204,4468,4478,4483,4502,4512,4515,4518,4606,4609,4615,4622,4737,4743,4747,4753,4858,4867,5089,5095,5099,5154,5165,5171,5180,5184,5223,5241,5245,5251,5279,5282,5286,5306],[2092,2093],"since-version",{"changelog":2094,"packages":2095,"version":2096},"orchestr","@laioutr-core/orchestr, @laioutr-core/core-types","0.38.0",[2098,2099,2100,2101,2105],"p",{},"An editor opens a link field in Studio and wants to point a banner at one specific product. Studio knows a Product Detail Page exists at ",[2102,2103,2104],"code",{},"/products/:slug",", but nothing tells it which slugs are real. The editor has to leave, find the handle in the shop admin, come back, and type it by hand.",[2098,2107,2108,2109,2113,2114,2118],{},"A ",[2110,2111,2112],"strong",{},"page index"," closes that gap. It is one registration per dynamic ",[2115,2116,2117],"a",{"href":193},"page type"," that owns the whole page-space of that type: it can walk every page, search it, count it, and resolve one page back to the entity behind it.",[2120,2121,2127],"pre",{"className":2122,"code":2123,"filename":2124,"language":2125,"meta":2126,"style":2126},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default definePageIndex({\n  for: ProductDetailPage,\n  label: 'Shopify Product',\n  list: ({ batchSize }) => paginate(async ({ cursor }) => {\n    const page = await storefront.products({ first: batchSize, after: cursor });\n    return {\n      entries: page.nodes.map((product) => ({\n        params: { slug: product.handle },\n        subject: { type: 'Product', id: product.id },\n        meta: { title: product.title, previewImage: product.featuredImage?.url },\n      })),\n      nextCursor: page.pageInfo.hasNextPage ? page.pageInfo.endCursor : undefined,\n    };\n  }),\n});\n","server/orchestr/product/detail-page.page-index.ts","ts","",[2102,2128,2129,2153,2169,2189,2231,2286,2294,2330,2357,2394,2438,2449,2489,2495,2505],{"__ignoreMap":2126},[2130,2131,2134,2138,2141,2145,2149],"span",{"class":2132,"line":2133},"line",1,[2130,2135,2137],{"class":2136},"s7zQu","export",[2130,2139,2140],{"class":2136}," default",[2130,2142,2144],{"class":2143},"s2Zo4"," definePageIndex",[2130,2146,2148],{"class":2147},"sTEyZ","(",[2130,2150,2152],{"class":2151},"sMK4o","{\n",[2130,2154,2156,2160,2163,2166],{"class":2132,"line":2155},2,[2130,2157,2159],{"class":2158},"swJcz","  for",[2130,2161,2162],{"class":2151},":",[2130,2164,2165],{"class":2147}," ProductDetailPage",[2130,2167,2168],{"class":2151},",\n",[2130,2170,2172,2175,2177,2180,2184,2187],{"class":2132,"line":2171},3,[2130,2173,2174],{"class":2158},"  label",[2130,2176,2162],{"class":2151},[2130,2178,2179],{"class":2151}," '",[2130,2181,2183],{"class":2182},"sfazB","Shopify Product",[2130,2185,2186],{"class":2151},"'",[2130,2188,2168],{"class":2151},[2130,2190,2192,2195,2197,2200,2204,2207,2211,2214,2216,2219,2221,2224,2226,2228],{"class":2132,"line":2191},4,[2130,2193,2194],{"class":2143},"  list",[2130,2196,2162],{"class":2151},[2130,2198,2199],{"class":2151}," ({",[2130,2201,2203],{"class":2202},"sHdIc"," batchSize",[2130,2205,2206],{"class":2151}," })",[2130,2208,2210],{"class":2209},"spNyl"," =>",[2130,2212,2213],{"class":2143}," paginate",[2130,2215,2148],{"class":2147},[2130,2217,2218],{"class":2209},"async",[2130,2220,2199],{"class":2151},[2130,2222,2223],{"class":2202}," cursor",[2130,2225,2206],{"class":2151},[2130,2227,2210],{"class":2209},[2130,2229,2230],{"class":2151}," {\n",[2130,2232,2234,2237,2240,2243,2246,2249,2252,2255,2257,2260,2263,2265,2267,2270,2273,2275,2277,2280,2283],{"class":2132,"line":2233},5,[2130,2235,2236],{"class":2209},"    const",[2130,2238,2239],{"class":2147}," page",[2130,2241,2242],{"class":2151}," =",[2130,2244,2245],{"class":2136}," await",[2130,2247,2248],{"class":2147}," storefront",[2130,2250,2251],{"class":2151},".",[2130,2253,2254],{"class":2143},"products",[2130,2256,2148],{"class":2158},[2130,2258,2259],{"class":2151},"{",[2130,2261,2262],{"class":2158}," first",[2130,2264,2162],{"class":2151},[2130,2266,2203],{"class":2147},[2130,2268,2269],{"class":2151},",",[2130,2271,2272],{"class":2158}," after",[2130,2274,2162],{"class":2151},[2130,2276,2223],{"class":2147},[2130,2278,2279],{"class":2151}," }",[2130,2281,2282],{"class":2158},")",[2130,2284,2285],{"class":2151},";\n",[2130,2287,2289,2292],{"class":2132,"line":2288},6,[2130,2290,2291],{"class":2136},"    return",[2130,2293,2230],{"class":2151},[2130,2295,2297,2300,2302,2304,2306,2309,2311,2314,2316,2318,2321,2323,2325,2328],{"class":2132,"line":2296},7,[2130,2298,2299],{"class":2158},"      entries",[2130,2301,2162],{"class":2151},[2130,2303,2239],{"class":2147},[2130,2305,2251],{"class":2151},[2130,2307,2308],{"class":2147},"nodes",[2130,2310,2251],{"class":2151},[2130,2312,2313],{"class":2143},"map",[2130,2315,2148],{"class":2158},[2130,2317,2148],{"class":2151},[2130,2319,2320],{"class":2202},"product",[2130,2322,2282],{"class":2151},[2130,2324,2210],{"class":2209},[2130,2326,2327],{"class":2158}," (",[2130,2329,2152],{"class":2151},[2130,2331,2333,2336,2338,2341,2344,2346,2349,2351,2354],{"class":2132,"line":2332},8,[2130,2334,2335],{"class":2158},"        params",[2130,2337,2162],{"class":2151},[2130,2339,2340],{"class":2151}," {",[2130,2342,2343],{"class":2158}," slug",[2130,2345,2162],{"class":2151},[2130,2347,2348],{"class":2147}," product",[2130,2350,2251],{"class":2151},[2130,2352,2353],{"class":2147},"handle",[2130,2355,2356],{"class":2151}," },\n",[2130,2358,2360,2363,2365,2367,2370,2372,2374,2376,2378,2380,2383,2385,2387,2389,2392],{"class":2132,"line":2359},9,[2130,2361,2362],{"class":2158},"        subject",[2130,2364,2162],{"class":2151},[2130,2366,2340],{"class":2151},[2130,2368,2369],{"class":2158}," type",[2130,2371,2162],{"class":2151},[2130,2373,2179],{"class":2151},[2130,2375,336],{"class":2182},[2130,2377,2186],{"class":2151},[2130,2379,2269],{"class":2151},[2130,2381,2382],{"class":2158}," id",[2130,2384,2162],{"class":2151},[2130,2386,2348],{"class":2147},[2130,2388,2251],{"class":2151},[2130,2390,2391],{"class":2147},"id",[2130,2393,2356],{"class":2151},[2130,2395,2397,2400,2402,2404,2407,2409,2411,2413,2416,2418,2421,2423,2425,2427,2430,2433,2436],{"class":2132,"line":2396},10,[2130,2398,2399],{"class":2158},"        meta",[2130,2401,2162],{"class":2151},[2130,2403,2340],{"class":2151},[2130,2405,2406],{"class":2158}," title",[2130,2408,2162],{"class":2151},[2130,2410,2348],{"class":2147},[2130,2412,2251],{"class":2151},[2130,2414,2415],{"class":2147},"title",[2130,2417,2269],{"class":2151},[2130,2419,2420],{"class":2158}," previewImage",[2130,2422,2162],{"class":2151},[2130,2424,2348],{"class":2147},[2130,2426,2251],{"class":2151},[2130,2428,2429],{"class":2147},"featuredImage",[2130,2431,2432],{"class":2151},"?.",[2130,2434,2435],{"class":2147},"url",[2130,2437,2356],{"class":2151},[2130,2439,2441,2444,2447],{"class":2132,"line":2440},11,[2130,2442,2443],{"class":2151},"      }",[2130,2445,2446],{"class":2158},"))",[2130,2448,2168],{"class":2151},[2130,2450,2452,2455,2457,2459,2461,2464,2466,2469,2472,2474,2476,2478,2480,2483,2486],{"class":2132,"line":2451},12,[2130,2453,2454],{"class":2158},"      nextCursor",[2130,2456,2162],{"class":2151},[2130,2458,2239],{"class":2147},[2130,2460,2251],{"class":2151},[2130,2462,2463],{"class":2147},"pageInfo",[2130,2465,2251],{"class":2151},[2130,2467,2468],{"class":2147},"hasNextPage",[2130,2470,2471],{"class":2151}," ?",[2130,2473,2239],{"class":2147},[2130,2475,2251],{"class":2151},[2130,2477,2463],{"class":2147},[2130,2479,2251],{"class":2151},[2130,2481,2482],{"class":2147},"endCursor",[2130,2484,2485],{"class":2151}," :",[2130,2487,2488],{"class":2151}," undefined,\n",[2130,2490,2492],{"class":2132,"line":2491},13,[2130,2493,2494],{"class":2151},"    };\n",[2130,2496,2498,2501,2503],{"class":2132,"line":2497},14,[2130,2499,2500],{"class":2151},"  }",[2130,2502,2282],{"class":2147},[2130,2504,2168],{"class":2151},[2130,2506,2508,2511,2513],{"class":2132,"line":2507},15,[2130,2509,2510],{"class":2151},"}",[2130,2512,2282],{"class":2147},[2130,2514,2285],{"class":2151},[2098,2516,2517],{},"That is enough for the Studio link menu to list products, for the preview-data selector to name the product on screen, and for the search box above the list to work.",[2519,2520,2522],"h2",{"id":2521},"what-a-page-index-answers","What a page index answers",[2098,2524,2525,2526,2529],{},"A registration exposes up to four capabilities. Only ",[2102,2527,2528],{},"list"," is required.",[2531,2532,2533,2549],"table",{},[2534,2535,2536],"thead",{},[2537,2538,2539,2543,2546],"tr",{},[2540,2541,2542],"th",{},"Capability",[2540,2544,2545],{},"Question it answers",[2540,2547,2548],{},"Who asks",[2550,2551,2552,2565,2578,2591],"tbody",{},[2537,2553,2554,2559,2562],{},[2555,2556,2557],"td",{},[2102,2558,2528],{},[2555,2560,2561],{},"Which pages of this type exist, in stable order?",[2555,2563,2564],{},"Studio's link menu and preview-data selector, your own server code",[2537,2566,2567,2572,2575],{},[2555,2568,2569],{},[2102,2570,2571],{},"search",[2555,2573,2574],{},"Which pages best match this term?",[2555,2576,2577],{},"The search box above those lists",[2537,2579,2580,2585,2588],{},[2555,2581,2582],{},[2102,2583,2584],{},"count",[2555,2586,2587],{},"How many pages are there in total?",[2555,2589,2590],{},"Totals and chunked exports; consumers degrade when it is missing",[2537,2592,2593,2598,2601],{},[2555,2594,2595],{},[2102,2596,2597],{},"locate",[2555,2599,2600],{},"Which entity is this URL about, and what is its slug in every other locale?",[2555,2602,2603,2604],{},"Studio's preview, the frontend's ",[2115,2605,2607],{"href":2606},"/frontend/features/multi-language-support#seo-hreflang-and-canonical","hreflang alternates and locale switcher",[2120,2609,2613],{"className":2610,"code":2611,"language":2612,"meta":2126,"style":2126},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowchart LR\n    S[\"Studio picker\"]\n    F[\"Frontend head\u003Cbr/>hreflang, locale switcher\"]\n    E[\"page-index endpoints\"]\n    R[\"Page-index runner\u003Cbr/>cache, middleware, client env\"]\n    H[\"Your registration\u003Cbr/>list / search / count / locate\"]\n    P[\"Commerce platform\"]\n\n    S --> E\n    F --> E\n    E --> R\n    R --> H\n    H --> P\n","mermaid",[2102,2614,2615,2620,2625,2630,2635,2640,2645,2650,2656,2661,2666,2671,2676],{"__ignoreMap":2126},[2130,2616,2617],{"class":2132,"line":2133},[2130,2618,2619],{},"flowchart LR\n",[2130,2621,2622],{"class":2132,"line":2155},[2130,2623,2624],{},"    S[\"Studio picker\"]\n",[2130,2626,2627],{"class":2132,"line":2171},[2130,2628,2629],{},"    F[\"Frontend head\u003Cbr/>hreflang, locale switcher\"]\n",[2130,2631,2632],{"class":2132,"line":2191},[2130,2633,2634],{},"    E[\"page-index endpoints\"]\n",[2130,2636,2637],{"class":2132,"line":2233},[2130,2638,2639],{},"    R[\"Page-index runner\u003Cbr/>cache, middleware, client env\"]\n",[2130,2641,2642],{"class":2132,"line":2288},[2130,2643,2644],{},"    H[\"Your registration\u003Cbr/>list / search / count / locate\"]\n",[2130,2646,2647],{"class":2132,"line":2296},[2130,2648,2649],{},"    P[\"Commerce platform\"]\n",[2130,2651,2652],{"class":2132,"line":2332},[2130,2653,2655],{"emptyLinePlaceholder":2654},true,"\n",[2130,2657,2658],{"class":2132,"line":2359},[2130,2659,2660],{},"    S --> E\n",[2130,2662,2663],{"class":2132,"line":2396},[2130,2664,2665],{},"    F --> E\n",[2130,2667,2668],{"class":2132,"line":2440},[2130,2669,2670],{},"    E --> R\n",[2130,2672,2673],{"class":2132,"line":2451},[2130,2674,2675],{},"    R --> H\n",[2130,2677,2678],{"class":2132,"line":2491},[2130,2679,2680],{},"    H --> P\n",[2098,2682,2683,2684,2687],{},"The runner sits between the endpoints and your handlers. It resolves the ",[2115,2685,2686],{"href":299},"client environment",", runs your app middleware, caches what comes back, and bounds the results. Your handlers only talk to the platform.",[2519,2689,2691],{"id":2690},"registering-a-page-index","Registering a page index",[2098,2693,2694,2697,2698,2701,2702,2705,2706,2709],{},[2102,2695,2696],{},"definePageIndex"," is auto-imported from ",[2102,2699,2700],{},"#imports",", like the other handler builders. If your app has a ",[2115,2703,2704],{"href":291},"middleware builder",", use its ",[2102,2707,2708],{},"pageIndex"," shortcut instead so your handlers receive the app context:",[2120,2711,2714],{"className":2122,"code":2712,"filename":2713,"language":2125,"meta":2126,"style":2126},"export const defineMyApp = defineOrchestr\n  .meta({ app: 'my-recipes', label: 'Recipes' })\n  .extendRequest(() => ({ context: { client: createRecipeClient() } }));\n\nexport const defineMyAppPageIndex = defineMyApp.pageIndex;\n","server/middleware/defineMyApp.ts",[2102,2715,2716,2732,2774,2818,2822],{"__ignoreMap":2126},[2130,2717,2718,2720,2723,2726,2729],{"class":2132,"line":2133},[2130,2719,2137],{"class":2136},[2130,2721,2722],{"class":2209}," const",[2130,2724,2725],{"class":2147}," defineMyApp ",[2130,2727,2728],{"class":2151},"=",[2130,2730,2731],{"class":2147}," defineOrchestr\n",[2130,2733,2734,2737,2740,2742,2744,2747,2749,2751,2754,2756,2758,2761,2763,2765,2767,2769,2771],{"class":2132,"line":2155},[2130,2735,2736],{"class":2151},"  .",[2130,2738,2739],{"class":2143},"meta",[2130,2741,2148],{"class":2147},[2130,2743,2259],{"class":2151},[2130,2745,2746],{"class":2158}," app",[2130,2748,2162],{"class":2151},[2130,2750,2179],{"class":2151},[2130,2752,2753],{"class":2182},"my-recipes",[2130,2755,2186],{"class":2151},[2130,2757,2269],{"class":2151},[2130,2759,2760],{"class":2158}," label",[2130,2762,2162],{"class":2151},[2130,2764,2179],{"class":2151},[2130,2766,252],{"class":2182},[2130,2768,2186],{"class":2151},[2130,2770,2279],{"class":2151},[2130,2772,2773],{"class":2147},")\n",[2130,2775,2776,2778,2781,2783,2786,2788,2790,2792,2795,2797,2799,2802,2804,2807,2810,2812,2814,2816],{"class":2132,"line":2171},[2130,2777,2736],{"class":2151},[2130,2779,2780],{"class":2143},"extendRequest",[2130,2782,2148],{"class":2147},[2130,2784,2785],{"class":2151},"()",[2130,2787,2210],{"class":2209},[2130,2789,2327],{"class":2147},[2130,2791,2259],{"class":2151},[2130,2793,2794],{"class":2158}," context",[2130,2796,2162],{"class":2151},[2130,2798,2340],{"class":2151},[2130,2800,2801],{"class":2158}," client",[2130,2803,2162],{"class":2151},[2130,2805,2806],{"class":2143}," createRecipeClient",[2130,2808,2809],{"class":2147},"() ",[2130,2811,2510],{"class":2151},[2130,2813,2279],{"class":2151},[2130,2815,2446],{"class":2147},[2130,2817,2285],{"class":2151},[2130,2819,2820],{"class":2132,"line":2191},[2130,2821,2655],{"emptyLinePlaceholder":2654},[2130,2823,2824,2826,2828,2831,2833,2836,2838,2840],{"class":2132,"line":2233},[2130,2825,2137],{"class":2136},[2130,2827,2722],{"class":2209},[2130,2829,2830],{"class":2147}," defineMyAppPageIndex ",[2130,2832,2728],{"class":2151},[2130,2834,2835],{"class":2147}," defineMyApp",[2130,2837,2251],{"class":2151},[2130,2839,2708],{"class":2147},[2130,2841,2285],{"class":2151},[2120,2843,2846],{"className":2122,"code":2844,"filename":2845,"language":2125,"meta":2126,"style":2126},"import { RecipeDetailPage } from '../../shared/pageTypes/recipe-detail.pagetype';\nimport { defineMyAppPageIndex } from '../../middleware/defineMyApp';\n\nexport default defineMyAppPageIndex({\n  for: RecipeDetailPage,\n  label: 'Recipe',\n  batchSize: 50,\n  cache: { ttl: '6h', search: { ttl: '5m' }, locate: { ttl: '1 day' } },\n\n  list: ({ context, clientEnv, batchSize }) =>\n    paginate(async ({ cursor }) => {\n      const page = await context.client.recipes({\n        limit: batchSize,\n        cursor,\n        locale: clientEnv.language.code,\n      });\n      return {\n        entries: page.items.map((recipe) => ({\n          params: { slug: recipe.slug },\n          subject: { type: 'Recipe', id: recipe.id },\n          meta: {\n            title: recipe.title,\n            previewImage: recipe.heroImageUrl,\n            lastModified: recipe.updatedAt,\n          },\n        })),\n        nextCursor: page.nextCursor,\n      };\n    }),\n\n  search: async ({ context, clientEnv, term, take }) => {\n    const hits = await context.client.searchRecipes({\n      query: term,\n      limit: take,\n      locale: clientEnv.language.code,\n    });\n    return hits.map((recipe) => ({\n      params: { slug: recipe.slug },\n      subject: { type: 'Recipe', id: recipe.id },\n      meta: { title: recipe.title },\n    }));\n  },\n\n  count: ({ context }) => context.client.countRecipes(),\n});\n","server/orchestr/recipe/detail-page.page-index.ts",[2102,2847,2848,2872,2894,2898,2910,2920,2935,2948,3014,3018,3042,3061,3088,3099,3106,3126,3135,3143,3177,3201,3235,3245,3261,3278,3295,3301,3311,3328,3334,3344,3349,3384,3411,3423,3435,3455,3464,3489,3511,3545,3567,3576,3582,3587,3618],{"__ignoreMap":2126},[2130,2849,2850,2853,2855,2858,2860,2863,2865,2868,2870],{"class":2132,"line":2133},[2130,2851,2852],{"class":2136},"import",[2130,2854,2340],{"class":2151},[2130,2856,2857],{"class":2147}," RecipeDetailPage",[2130,2859,2279],{"class":2151},[2130,2861,2862],{"class":2136}," from",[2130,2864,2179],{"class":2151},[2130,2866,2867],{"class":2182},"../../shared/pageTypes/recipe-detail.pagetype",[2130,2869,2186],{"class":2151},[2130,2871,2285],{"class":2151},[2130,2873,2874,2876,2878,2881,2883,2885,2887,2890,2892],{"class":2132,"line":2155},[2130,2875,2852],{"class":2136},[2130,2877,2340],{"class":2151},[2130,2879,2880],{"class":2147}," defineMyAppPageIndex",[2130,2882,2279],{"class":2151},[2130,2884,2862],{"class":2136},[2130,2886,2179],{"class":2151},[2130,2888,2889],{"class":2182},"../../middleware/defineMyApp",[2130,2891,2186],{"class":2151},[2130,2893,2285],{"class":2151},[2130,2895,2896],{"class":2132,"line":2171},[2130,2897,2655],{"emptyLinePlaceholder":2654},[2130,2899,2900,2902,2904,2906,2908],{"class":2132,"line":2191},[2130,2901,2137],{"class":2136},[2130,2903,2140],{"class":2136},[2130,2905,2880],{"class":2143},[2130,2907,2148],{"class":2147},[2130,2909,2152],{"class":2151},[2130,2911,2912,2914,2916,2918],{"class":2132,"line":2233},[2130,2913,2159],{"class":2158},[2130,2915,2162],{"class":2151},[2130,2917,2857],{"class":2147},[2130,2919,2168],{"class":2151},[2130,2921,2922,2924,2926,2928,2931,2933],{"class":2132,"line":2288},[2130,2923,2174],{"class":2158},[2130,2925,2162],{"class":2151},[2130,2927,2179],{"class":2151},[2130,2929,2930],{"class":2182},"Recipe",[2130,2932,2186],{"class":2151},[2130,2934,2168],{"class":2151},[2130,2936,2937,2940,2942,2946],{"class":2132,"line":2296},[2130,2938,2939],{"class":2158},"  batchSize",[2130,2941,2162],{"class":2151},[2130,2943,2945],{"class":2944},"sbssI"," 50",[2130,2947,2168],{"class":2151},[2130,2949,2950,2953,2955,2957,2960,2962,2964,2967,2969,2971,2974,2976,2978,2980,2982,2984,2987,2989,2992,2995,2997,2999,3001,3003,3005,3008,3010,3012],{"class":2132,"line":2332},[2130,2951,2952],{"class":2158},"  cache",[2130,2954,2162],{"class":2151},[2130,2956,2340],{"class":2151},[2130,2958,2959],{"class":2158}," ttl",[2130,2961,2162],{"class":2151},[2130,2963,2179],{"class":2151},[2130,2965,2966],{"class":2182},"6h",[2130,2968,2186],{"class":2151},[2130,2970,2269],{"class":2151},[2130,2972,2973],{"class":2158}," search",[2130,2975,2162],{"class":2151},[2130,2977,2340],{"class":2151},[2130,2979,2959],{"class":2158},[2130,2981,2162],{"class":2151},[2130,2983,2179],{"class":2151},[2130,2985,2986],{"class":2182},"5m",[2130,2988,2186],{"class":2151},[2130,2990,2991],{"class":2151}," },",[2130,2993,2994],{"class":2158}," locate",[2130,2996,2162],{"class":2151},[2130,2998,2340],{"class":2151},[2130,3000,2959],{"class":2158},[2130,3002,2162],{"class":2151},[2130,3004,2179],{"class":2151},[2130,3006,3007],{"class":2182},"1 day",[2130,3009,2186],{"class":2151},[2130,3011,2279],{"class":2151},[2130,3013,2356],{"class":2151},[2130,3015,3016],{"class":2132,"line":2359},[2130,3017,2655],{"emptyLinePlaceholder":2654},[2130,3019,3020,3022,3024,3026,3028,3030,3033,3035,3037,3039],{"class":2132,"line":2396},[2130,3021,2194],{"class":2143},[2130,3023,2162],{"class":2151},[2130,3025,2199],{"class":2151},[2130,3027,2794],{"class":2202},[2130,3029,2269],{"class":2151},[2130,3031,3032],{"class":2202}," clientEnv",[2130,3034,2269],{"class":2151},[2130,3036,2203],{"class":2202},[2130,3038,2206],{"class":2151},[2130,3040,3041],{"class":2209}," =>\n",[2130,3043,3044,3047,3049,3051,3053,3055,3057,3059],{"class":2132,"line":2440},[2130,3045,3046],{"class":2143},"    paginate",[2130,3048,2148],{"class":2147},[2130,3050,2218],{"class":2209},[2130,3052,2199],{"class":2151},[2130,3054,2223],{"class":2202},[2130,3056,2206],{"class":2151},[2130,3058,2210],{"class":2209},[2130,3060,2230],{"class":2151},[2130,3062,3063,3066,3068,3070,3072,3074,3076,3079,3081,3084,3086],{"class":2132,"line":2451},[2130,3064,3065],{"class":2209},"      const",[2130,3067,2239],{"class":2147},[2130,3069,2242],{"class":2151},[2130,3071,2245],{"class":2136},[2130,3073,2794],{"class":2147},[2130,3075,2251],{"class":2151},[2130,3077,3078],{"class":2147},"client",[2130,3080,2251],{"class":2151},[2130,3082,3083],{"class":2143},"recipes",[2130,3085,2148],{"class":2158},[2130,3087,2152],{"class":2151},[2130,3089,3090,3093,3095,3097],{"class":2132,"line":2491},[2130,3091,3092],{"class":2158},"        limit",[2130,3094,2162],{"class":2151},[2130,3096,2203],{"class":2147},[2130,3098,2168],{"class":2151},[2130,3100,3101,3104],{"class":2132,"line":2497},[2130,3102,3103],{"class":2147},"        cursor",[2130,3105,2168],{"class":2151},[2130,3107,3108,3111,3113,3115,3117,3120,3122,3124],{"class":2132,"line":2507},[2130,3109,3110],{"class":2158},"        locale",[2130,3112,2162],{"class":2151},[2130,3114,3032],{"class":2147},[2130,3116,2251],{"class":2151},[2130,3118,3119],{"class":2147},"language",[2130,3121,2251],{"class":2151},[2130,3123,2102],{"class":2147},[2130,3125,2168],{"class":2151},[2130,3127,3129,3131,3133],{"class":2132,"line":3128},16,[2130,3130,2443],{"class":2151},[2130,3132,2282],{"class":2158},[2130,3134,2285],{"class":2151},[2130,3136,3138,3141],{"class":2132,"line":3137},17,[2130,3139,3140],{"class":2136},"      return",[2130,3142,2230],{"class":2151},[2130,3144,3146,3149,3151,3153,3155,3158,3160,3162,3164,3166,3169,3171,3173,3175],{"class":2132,"line":3145},18,[2130,3147,3148],{"class":2158},"        entries",[2130,3150,2162],{"class":2151},[2130,3152,2239],{"class":2147},[2130,3154,2251],{"class":2151},[2130,3156,3157],{"class":2147},"items",[2130,3159,2251],{"class":2151},[2130,3161,2313],{"class":2143},[2130,3163,2148],{"class":2158},[2130,3165,2148],{"class":2151},[2130,3167,3168],{"class":2202},"recipe",[2130,3170,2282],{"class":2151},[2130,3172,2210],{"class":2209},[2130,3174,2327],{"class":2158},[2130,3176,2152],{"class":2151},[2130,3178,3180,3183,3185,3187,3189,3191,3194,3196,3199],{"class":2132,"line":3179},19,[2130,3181,3182],{"class":2158},"          params",[2130,3184,2162],{"class":2151},[2130,3186,2340],{"class":2151},[2130,3188,2343],{"class":2158},[2130,3190,2162],{"class":2151},[2130,3192,3193],{"class":2147}," recipe",[2130,3195,2251],{"class":2151},[2130,3197,3198],{"class":2147},"slug",[2130,3200,2356],{"class":2151},[2130,3202,3204,3207,3209,3211,3213,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233],{"class":2132,"line":3203},20,[2130,3205,3206],{"class":2158},"          subject",[2130,3208,2162],{"class":2151},[2130,3210,2340],{"class":2151},[2130,3212,2369],{"class":2158},[2130,3214,2162],{"class":2151},[2130,3216,2179],{"class":2151},[2130,3218,2930],{"class":2182},[2130,3220,2186],{"class":2151},[2130,3222,2269],{"class":2151},[2130,3224,2382],{"class":2158},[2130,3226,2162],{"class":2151},[2130,3228,3193],{"class":2147},[2130,3230,2251],{"class":2151},[2130,3232,2391],{"class":2147},[2130,3234,2356],{"class":2151},[2130,3236,3238,3241,3243],{"class":2132,"line":3237},21,[2130,3239,3240],{"class":2158},"          meta",[2130,3242,2162],{"class":2151},[2130,3244,2230],{"class":2151},[2130,3246,3248,3251,3253,3255,3257,3259],{"class":2132,"line":3247},22,[2130,3249,3250],{"class":2158},"            title",[2130,3252,2162],{"class":2151},[2130,3254,3193],{"class":2147},[2130,3256,2251],{"class":2151},[2130,3258,2415],{"class":2147},[2130,3260,2168],{"class":2151},[2130,3262,3264,3267,3269,3271,3273,3276],{"class":2132,"line":3263},23,[2130,3265,3266],{"class":2158},"            previewImage",[2130,3268,2162],{"class":2151},[2130,3270,3193],{"class":2147},[2130,3272,2251],{"class":2151},[2130,3274,3275],{"class":2147},"heroImageUrl",[2130,3277,2168],{"class":2151},[2130,3279,3281,3284,3286,3288,3290,3293],{"class":2132,"line":3280},24,[2130,3282,3283],{"class":2158},"            lastModified",[2130,3285,2162],{"class":2151},[2130,3287,3193],{"class":2147},[2130,3289,2251],{"class":2151},[2130,3291,3292],{"class":2147},"updatedAt",[2130,3294,2168],{"class":2151},[2130,3296,3298],{"class":2132,"line":3297},25,[2130,3299,3300],{"class":2151},"          },\n",[2130,3302,3304,3307,3309],{"class":2132,"line":3303},26,[2130,3305,3306],{"class":2151},"        }",[2130,3308,2446],{"class":2158},[2130,3310,2168],{"class":2151},[2130,3312,3314,3317,3319,3321,3323,3326],{"class":2132,"line":3313},27,[2130,3315,3316],{"class":2158},"        nextCursor",[2130,3318,2162],{"class":2151},[2130,3320,2239],{"class":2147},[2130,3322,2251],{"class":2151},[2130,3324,3325],{"class":2147},"nextCursor",[2130,3327,2168],{"class":2151},[2130,3329,3331],{"class":2132,"line":3330},28,[2130,3332,3333],{"class":2151},"      };\n",[2130,3335,3337,3340,3342],{"class":2132,"line":3336},29,[2130,3338,3339],{"class":2151},"    }",[2130,3341,2282],{"class":2147},[2130,3343,2168],{"class":2151},[2130,3345,3347],{"class":2132,"line":3346},30,[2130,3348,2655],{"emptyLinePlaceholder":2654},[2130,3350,3352,3355,3357,3360,3362,3364,3366,3368,3370,3373,3375,3378,3380,3382],{"class":2132,"line":3351},31,[2130,3353,3354],{"class":2143},"  search",[2130,3356,2162],{"class":2151},[2130,3358,3359],{"class":2209}," async",[2130,3361,2199],{"class":2151},[2130,3363,2794],{"class":2202},[2130,3365,2269],{"class":2151},[2130,3367,3032],{"class":2202},[2130,3369,2269],{"class":2151},[2130,3371,3372],{"class":2202}," term",[2130,3374,2269],{"class":2151},[2130,3376,3377],{"class":2202}," take",[2130,3379,2206],{"class":2151},[2130,3381,2210],{"class":2209},[2130,3383,2230],{"class":2151},[2130,3385,3387,3389,3392,3394,3396,3398,3400,3402,3404,3407,3409],{"class":2132,"line":3386},32,[2130,3388,2236],{"class":2209},[2130,3390,3391],{"class":2147}," hits",[2130,3393,2242],{"class":2151},[2130,3395,2245],{"class":2136},[2130,3397,2794],{"class":2147},[2130,3399,2251],{"class":2151},[2130,3401,3078],{"class":2147},[2130,3403,2251],{"class":2151},[2130,3405,3406],{"class":2143},"searchRecipes",[2130,3408,2148],{"class":2158},[2130,3410,2152],{"class":2151},[2130,3412,3414,3417,3419,3421],{"class":2132,"line":3413},33,[2130,3415,3416],{"class":2158},"      query",[2130,3418,2162],{"class":2151},[2130,3420,3372],{"class":2147},[2130,3422,2168],{"class":2151},[2130,3424,3426,3429,3431,3433],{"class":2132,"line":3425},34,[2130,3427,3428],{"class":2158},"      limit",[2130,3430,2162],{"class":2151},[2130,3432,3377],{"class":2147},[2130,3434,2168],{"class":2151},[2130,3436,3438,3441,3443,3445,3447,3449,3451,3453],{"class":2132,"line":3437},35,[2130,3439,3440],{"class":2158},"      locale",[2130,3442,2162],{"class":2151},[2130,3444,3032],{"class":2147},[2130,3446,2251],{"class":2151},[2130,3448,3119],{"class":2147},[2130,3450,2251],{"class":2151},[2130,3452,2102],{"class":2147},[2130,3454,2168],{"class":2151},[2130,3456,3458,3460,3462],{"class":2132,"line":3457},36,[2130,3459,3339],{"class":2151},[2130,3461,2282],{"class":2158},[2130,3463,2285],{"class":2151},[2130,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483,3485,3487],{"class":2132,"line":3466},37,[2130,3468,2291],{"class":2136},[2130,3470,3391],{"class":2147},[2130,3472,2251],{"class":2151},[2130,3474,2313],{"class":2143},[2130,3476,2148],{"class":2158},[2130,3478,2148],{"class":2151},[2130,3480,3168],{"class":2202},[2130,3482,2282],{"class":2151},[2130,3484,2210],{"class":2209},[2130,3486,2327],{"class":2158},[2130,3488,2152],{"class":2151},[2130,3490,3492,3495,3497,3499,3501,3503,3505,3507,3509],{"class":2132,"line":3491},38,[2130,3493,3494],{"class":2158},"      params",[2130,3496,2162],{"class":2151},[2130,3498,2340],{"class":2151},[2130,3500,2343],{"class":2158},[2130,3502,2162],{"class":2151},[2130,3504,3193],{"class":2147},[2130,3506,2251],{"class":2151},[2130,3508,3198],{"class":2147},[2130,3510,2356],{"class":2151},[2130,3512,3514,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543],{"class":2132,"line":3513},39,[2130,3515,3516],{"class":2158},"      subject",[2130,3518,2162],{"class":2151},[2130,3520,2340],{"class":2151},[2130,3522,2369],{"class":2158},[2130,3524,2162],{"class":2151},[2130,3526,2179],{"class":2151},[2130,3528,2930],{"class":2182},[2130,3530,2186],{"class":2151},[2130,3532,2269],{"class":2151},[2130,3534,2382],{"class":2158},[2130,3536,2162],{"class":2151},[2130,3538,3193],{"class":2147},[2130,3540,2251],{"class":2151},[2130,3542,2391],{"class":2147},[2130,3544,2356],{"class":2151},[2130,3546,3548,3551,3553,3555,3557,3559,3561,3563,3565],{"class":2132,"line":3547},40,[2130,3549,3550],{"class":2158},"      meta",[2130,3552,2162],{"class":2151},[2130,3554,2340],{"class":2151},[2130,3556,2406],{"class":2158},[2130,3558,2162],{"class":2151},[2130,3560,3193],{"class":2147},[2130,3562,2251],{"class":2151},[2130,3564,2415],{"class":2147},[2130,3566,2356],{"class":2151},[2130,3568,3570,3572,3574],{"class":2132,"line":3569},41,[2130,3571,3339],{"class":2151},[2130,3573,2446],{"class":2158},[2130,3575,2285],{"class":2151},[2130,3577,3579],{"class":2132,"line":3578},42,[2130,3580,3581],{"class":2151},"  },\n",[2130,3583,3585],{"class":2132,"line":3584},43,[2130,3586,2655],{"emptyLinePlaceholder":2654},[2130,3588,3590,3593,3595,3597,3599,3601,3603,3605,3607,3609,3611,3614,3616],{"class":2132,"line":3589},44,[2130,3591,3592],{"class":2143},"  count",[2130,3594,2162],{"class":2151},[2130,3596,2199],{"class":2151},[2130,3598,2794],{"class":2202},[2130,3600,2206],{"class":2151},[2130,3602,2210],{"class":2209},[2130,3604,2794],{"class":2147},[2130,3606,2251],{"class":2151},[2130,3608,3078],{"class":2147},[2130,3610,2251],{"class":2151},[2130,3612,3613],{"class":2143},"countRecipes",[2130,3615,2785],{"class":2147},[2130,3617,2168],{"class":2151},[2130,3619,3621,3623,3625],{"class":2132,"line":3620},45,[2130,3622,2510],{"class":2151},[2130,3624,2282],{"class":2147},[2130,3626,2285],{"class":2151},[2098,3628,3629,3630,3633,3634,3639,3640,3643],{},"Register the file the same way as every other handler: everything under the ",[2102,3631,3632],{},"orchestr/"," directory passed to ",[2115,3635,3636],{"href":729},[2102,3637,3638],{},"registerLaioutrApp"," is auto-discovered. The ",[2102,3641,3642],{},".page-index.ts"," suffix is a convention, not a requirement.",[3645,3646,3648],"h3",{"id":3647},"registration-fields","Registration fields",[2531,3650,3651,3663],{},[2534,3652,3653],{},[2537,3654,3655,3657,3660],{},[2540,3656,1649],{},[2540,3658,3659],{},"Type",[2540,3661,3662],{},"Description",[2550,3664,3665,3680,3699,3721,3733,3744,3755,3766,3782],{},[2537,3666,3667,3672,3677],{},[2555,3668,3669],{},[2102,3670,3671],{},"for",[2555,3673,3674],{},[2102,3675,3676],{},"PageTypeToken",[2555,3678,3679],{},"The page type this index owns. One registration wins per token.",[2537,3681,3682,3687,3692],{},[2555,3683,3684],{},[2102,3685,3686],{},"label",[2555,3688,3689],{},[2102,3690,3691],{},"string",[2555,3693,3694,3695,3698],{},"Name shown in Studio pickers, for example ",[2102,3696,3697],{},"'Shopify Product'",". Falls back to the providing app's name, then the page type's name.",[2537,3700,3701,3706,3711],{},[2555,3702,3703],{},[2102,3704,3705],{},"batchSize",[2555,3707,3708],{},[2102,3709,3710],{},"number",[2555,3712,3713,3714,3717,3718,2251],{},"How many entries your platform serves in one request. Bounds both the walk's page size and a search's ",[2102,3715,3716],{},"take",". Default ",[2102,3719,3720],{},"100",[2537,3722,3723,3727,3730],{},[2555,3724,3725],{},[2102,3726,2528],{},[2555,3728,3729],{},"function",[2555,3731,3732],{},"Full enumeration in stable order. Required.",[2537,3734,3735,3739,3741],{},[2555,3736,3737],{},[2102,3738,2571],{},[2555,3740,3729],{},[2555,3742,3743],{},"Relevance-ordered top-N for a term. Optional.",[2537,3745,3746,3750,3752],{},[2555,3747,3748],{},[2102,3749,2584],{},[2555,3751,3729],{},[2555,3753,3754],{},"Cheap total. Optional.",[2537,3756,3757,3761,3763],{},[2555,3758,3759],{},[2102,3760,2597],{},[2555,3762,3729],{},[2555,3764,3765],{},"Point lookup from route params back to the entity. Optional.",[2537,3767,3768,3773,3776],{},[2555,3769,3770],{},[2102,3771,3772],{},"cache",[2555,3774,3775],{},"object",[2555,3777,3778,3779,2251],{},"Per-tier TTLs. See ",[2115,3780,282],{"href":3781},"#caching",[2537,3783,3784,3789,3793],{},[2555,3785,3786],{},[2102,3787,3788],{},"order",[2555,3790,3791],{},[2102,3792,3710],{},[2555,3794,3795,3796,2251],{},"Breaks ties when two apps register for the same page type. Higher wins; equal orders go to the last registration. Default ",[2102,3797,3798],{},"0",[2098,3800,3801,3802,3805,3806,3805,3809,3812,3813,3816,3817,3820,3821,3824],{},"Every handler also receives ",[2102,3803,3804],{},"event",", ",[2102,3807,3808],{},"context",[2102,3810,3811],{},"clientEnv",", and ",[2102,3814,3815],{},"tokenMeta",", exactly like a query handler. Scope your platform reads with ",[2102,3818,3819],{},"clientEnv.market.id"," and ",[2102,3822,3823],{},"clientEnv.language.code",": those are the same values the runner keys its caches by, so a handler that ignores them will serve one market's pages under another market's key.",[2519,3826,3828],{"id":3827},"entries","Entries",[2098,3830,3831,3832,3835],{},"Every capability that returns pages returns ",[2102,3833,3834],{},"PageIndexEntry"," objects.",[2531,3837,3838,3848],{},[2534,3839,3840],{},[2537,3841,3842,3844,3846],{},[2540,3843,1649],{},[2540,3845,3659],{},[2540,3847,3662],{},[2550,3849,3850,3872,3887,3901,3915,3932,3946],{},[2537,3851,3852,3857,3862],{},[2555,3853,3854],{},[2102,3855,3856],{},"params",[2555,3858,3859],{},[2102,3860,3861],{},"Record\u003Cstring, string>",[2555,3863,3864,3865,3868,3869,2251],{},"The route params for this page. Keys match the page type's ",[2102,3866,3867],{},"pathConstraints.requiredParams",". Catch-all segments are joined with ",[2102,3870,3871],{},"/",[2537,3873,3874,3879,3884],{},[2555,3875,3876],{},[2102,3877,3878],{},"subject",[2555,3880,3881],{},[2102,3882,3883],{},"{ type, id }",[2555,3885,3886],{},"The entity the page is about. Used for cache-tag invalidation, for correlating entries across locales, and for recognising which entry a picker currently has selected. Omit it for computed routes such as date archives, which then fall back to TTL-only invalidation.",[2537,3888,3889,3894,3898],{},[2555,3890,3891],{},[2102,3892,3893],{},"meta.title",[2555,3895,3896],{},[2102,3897,3691],{},[2555,3899,3900],{},"What the picker shows. Without it, the picker falls back to the param values.",[2537,3902,3903,3908,3912],{},[2555,3904,3905],{},[2102,3906,3907],{},"meta.description",[2555,3909,3910],{},[2102,3911,3691],{},[2555,3913,3914],{},"Optional longer text.",[2537,3916,3917,3922,3926],{},[2555,3918,3919],{},[2102,3920,3921],{},"meta.previewImage",[2555,3923,3924],{},[2102,3925,3691],{},[2555,3927,3928,3929,3931],{},"An absolute, publicly reachable image URL. Not a ",[2102,3930,461],{}," object: the picker and other consumers run outside the Nuxt image pipeline and cannot resolve provider-relative sources.",[2537,3933,3934,3939,3943],{},[2555,3935,3936],{},[2102,3937,3938],{},"meta.lastModified",[2555,3940,3941],{},[2102,3942,3691],{},[2555,3944,3945],{},"ISO 8601 timestamp.",[2537,3947,3948,3953,3958],{},[2555,3949,3950],{},[2102,3951,3952],{},"meta.noindex",[2555,3954,3955],{},[2102,3956,3957],{},"boolean",[2555,3959,3960],{},"The page renders but should stay out of discovery surfaces such as sitemaps. Editorial surfaces (the Studio picker, link fields) ignore the flag and still list the page.",[2519,3962,3964,3965],{"id":3963},"enumerating-with-list","Enumerating with ",[2102,3966,2528],{},[2098,3968,3969,3971,3972,3974,3975,3977],{},[2102,3970,2528],{}," walks the entire page-space in stable order and returns either an array or an async iterable. It receives ",[2102,3973,3705],{}," and never a ",[2102,3976,3716],{},": a walk that stopped early would cache a truncated enumeration and every later reader would believe the catalogue ends there. Bounding is the runner's job.",[2098,3979,3980,3981,3984,3985,3988],{},"For a cursor-paged platform API, ",[2102,3982,3983],{},"paginate()"," turns the fetch into a lazy async iterable so you never write ",[2102,3986,3987],{},"async function*"," yourself:",[2120,3990,3992],{"className":2122,"code":3991,"language":2125,"meta":2126,"style":2126},"list: ({ context, batchSize }) =>\n  paginate(async ({ cursor }) => {\n    const page = await context.client.recipes({ limit: batchSize, cursor });\n    return { entries: page.items.map(toEntry), nextCursor: page.nextCursor };\n  }),\n",[2102,3993,3994,4013,4032,4073,4117],{"__ignoreMap":2126},[2130,3995,3996,3999,4001,4003,4005,4007,4009,4011],{"class":2132,"line":2133},[2130,3997,2528],{"class":3998},"sBMFI",[2130,4000,2162],{"class":2151},[2130,4002,2199],{"class":2151},[2130,4004,2794],{"class":2202},[2130,4006,2269],{"class":2151},[2130,4008,2203],{"class":2202},[2130,4010,2206],{"class":2151},[2130,4012,3041],{"class":2209},[2130,4014,4015,4018,4020,4022,4024,4026,4028,4030],{"class":2132,"line":2155},[2130,4016,4017],{"class":2143},"  paginate",[2130,4019,2148],{"class":2147},[2130,4021,2218],{"class":2209},[2130,4023,2199],{"class":2151},[2130,4025,2223],{"class":2202},[2130,4027,2206],{"class":2151},[2130,4029,2210],{"class":2209},[2130,4031,2230],{"class":2151},[2130,4033,4034,4036,4038,4040,4042,4044,4046,4048,4050,4052,4054,4056,4059,4061,4063,4065,4067,4069,4071],{"class":2132,"line":2171},[2130,4035,2236],{"class":2209},[2130,4037,2239],{"class":2147},[2130,4039,2242],{"class":2151},[2130,4041,2245],{"class":2136},[2130,4043,2794],{"class":2147},[2130,4045,2251],{"class":2151},[2130,4047,3078],{"class":2147},[2130,4049,2251],{"class":2151},[2130,4051,3083],{"class":2143},[2130,4053,2148],{"class":2158},[2130,4055,2259],{"class":2151},[2130,4057,4058],{"class":2158}," limit",[2130,4060,2162],{"class":2151},[2130,4062,2203],{"class":2147},[2130,4064,2269],{"class":2151},[2130,4066,2223],{"class":2147},[2130,4068,2279],{"class":2151},[2130,4070,2282],{"class":2158},[2130,4072,2285],{"class":2151},[2130,4074,4075,4077,4079,4082,4084,4086,4088,4090,4092,4094,4096,4099,4101,4103,4106,4108,4110,4112,4114],{"class":2132,"line":2191},[2130,4076,2291],{"class":2136},[2130,4078,2340],{"class":2151},[2130,4080,4081],{"class":2158}," entries",[2130,4083,2162],{"class":2151},[2130,4085,2239],{"class":2147},[2130,4087,2251],{"class":2151},[2130,4089,3157],{"class":2147},[2130,4091,2251],{"class":2151},[2130,4093,2313],{"class":2143},[2130,4095,2148],{"class":2158},[2130,4097,4098],{"class":2147},"toEntry",[2130,4100,2282],{"class":2158},[2130,4102,2269],{"class":2151},[2130,4104,4105],{"class":2158}," nextCursor",[2130,4107,2162],{"class":2151},[2130,4109,2239],{"class":2147},[2130,4111,2251],{"class":2151},[2130,4113,3325],{"class":2147},[2130,4115,4116],{"class":2151}," };\n",[2130,4118,4119,4121,4123],{"class":2132,"line":2233},[2130,4120,2500],{"class":2151},[2130,4122,2282],{"class":2147},[2130,4124,2168],{"class":2151},[2098,4126,4127,4128,4130,4131,4134],{},"The cursor is opaque to Orchestr. Pass whatever your platform hands back: a GraphQL ",[2102,4129,2482],{},", a stringified page number, an offset. Returning ",[2102,4132,4133],{},"nextCursor: undefined"," ends the walk; an empty string is still treated as a valid continuation.",[4136,4137,4138],"tip",{},"Stable order matters more than any particular order. The runner writes the walk to the cache in chunks and resumes from a chunk boundary, so a list whose order changes between calls produces duplicated or skipped entries.",[2519,4140,4142,4143],{"id":4141},"searching-with-search","Searching with ",[2102,4144,2571],{},[2098,4146,4147,4149,4150,4153,4154,4156,4157,4159,4160,4162],{},[2102,4148,2571],{}," receives the ",[2102,4151,4152],{},"term"," plus a ",[2102,4155,3716],{}," that is already clamped to your ",[2102,4158,3705],{},", so you can hand ",[2102,4161,3716],{}," straight to the platform as its limit.",[2098,4164,4165],{},"It is optional. Without it, a page type still answers search terms: the runner scans the first 1000 enumerated entries and keeps the ones whose title or param values contain every whitespace-separated part of the term. So \"blue towel\" finds \"Towel, blue\", and pasting a slug finds its own page.",[2098,4167,4168,4169,4171,4172,4174],{},"What implementing ",[2102,4170,2571],{}," buys you is relevance ordering and coverage past that scan. If the scan hits its 1000-entry limit without filling ",[2102,4173,3716],{},", Orchestr logs a warning naming the page type.",[2519,4176,4178,4179],{"id":4177},"counting-with-count","Counting with ",[2102,4180,2584],{},[2098,4182,4183,4185,4186,4189,4190,4192],{},[2102,4184,2584],{}," returns a single number and takes no input beyond the request context. Keep it cheap: most platforms answer it with a ",[2102,4187,4188],{},"limit: 1, totalCount: true"," read. Consumers treat a missing ",[2102,4191,2584],{}," as \"unknown\" rather than zero.",[2519,4194,4196,4197],{"id":4195},"locating-with-locate","Locating with ",[2102,4198,2597],{},[2098,4200,4201,4203],{},[2102,4202,2597],{}," runs in the other direction. Given the route params of a page in the current locale, it returns the entity behind that page and, where the connector can afford it, the params for the same page in every other locale.",[2120,4205,4207],{"className":2122,"code":4206,"language":2125,"meta":2126,"style":2126},"locate: async ({ context, params, clientEnv }) => {\n  const recipe = await context.client.recipeBySlug(params.slug, clientEnv.language.code);\n  if (!recipe) return undefined;\n\n  return {\n    subject: { type: 'Recipe', id: recipe.id },\n    meta: { title: recipe.title },\n    locales: Object.fromEntries(\n      recipe.translations.map((t) => [t.locale, { params: { slug: t.slug } }]),\n    ),\n  };\n},\n",[2102,4208,4209,4236,4282,4303,4307,4314,4347,4368,4386,4451,4458,4463],{"__ignoreMap":2126},[2130,4210,4211,4213,4215,4217,4219,4221,4223,4226,4228,4230,4232,4234],{"class":2132,"line":2133},[2130,4212,2597],{"class":3998},[2130,4214,2162],{"class":2151},[2130,4216,3359],{"class":2209},[2130,4218,2199],{"class":2151},[2130,4220,2794],{"class":2202},[2130,4222,2269],{"class":2151},[2130,4224,4225],{"class":2202}," params",[2130,4227,2269],{"class":2151},[2130,4229,3032],{"class":2202},[2130,4231,2206],{"class":2151},[2130,4233,2210],{"class":2209},[2130,4235,2230],{"class":2151},[2130,4237,4238,4241,4243,4245,4247,4249,4251,4253,4255,4258,4260,4262,4264,4266,4268,4270,4272,4274,4276,4278,4280],{"class":2132,"line":2155},[2130,4239,4240],{"class":2209},"  const",[2130,4242,3193],{"class":2147},[2130,4244,2242],{"class":2151},[2130,4246,2245],{"class":2136},[2130,4248,2794],{"class":2147},[2130,4250,2251],{"class":2151},[2130,4252,3078],{"class":2147},[2130,4254,2251],{"class":2151},[2130,4256,4257],{"class":2143},"recipeBySlug",[2130,4259,2148],{"class":2158},[2130,4261,3856],{"class":2147},[2130,4263,2251],{"class":2151},[2130,4265,3198],{"class":2147},[2130,4267,2269],{"class":2151},[2130,4269,3032],{"class":2147},[2130,4271,2251],{"class":2151},[2130,4273,3119],{"class":2147},[2130,4275,2251],{"class":2151},[2130,4277,2102],{"class":2147},[2130,4279,2282],{"class":2158},[2130,4281,2285],{"class":2151},[2130,4283,4284,4287,4289,4292,4294,4297,4300],{"class":2132,"line":2171},[2130,4285,4286],{"class":2136},"  if",[2130,4288,2327],{"class":2158},[2130,4290,4291],{"class":2151},"!",[2130,4293,3168],{"class":2147},[2130,4295,4296],{"class":2158},") ",[2130,4298,4299],{"class":2136},"return",[2130,4301,4302],{"class":2151}," undefined;\n",[2130,4304,4305],{"class":2132,"line":2191},[2130,4306,2655],{"emptyLinePlaceholder":2654},[2130,4308,4309,4312],{"class":2132,"line":2233},[2130,4310,4311],{"class":2136},"  return",[2130,4313,2230],{"class":2151},[2130,4315,4316,4319,4321,4323,4325,4327,4329,4331,4333,4335,4337,4339,4341,4343,4345],{"class":2132,"line":2288},[2130,4317,4318],{"class":2158},"    subject",[2130,4320,2162],{"class":2151},[2130,4322,2340],{"class":2151},[2130,4324,2369],{"class":2158},[2130,4326,2162],{"class":2151},[2130,4328,2179],{"class":2151},[2130,4330,2930],{"class":2182},[2130,4332,2186],{"class":2151},[2130,4334,2269],{"class":2151},[2130,4336,2382],{"class":2158},[2130,4338,2162],{"class":2151},[2130,4340,3193],{"class":2147},[2130,4342,2251],{"class":2151},[2130,4344,2391],{"class":2147},[2130,4346,2356],{"class":2151},[2130,4348,4349,4352,4354,4356,4358,4360,4362,4364,4366],{"class":2132,"line":2296},[2130,4350,4351],{"class":2158},"    meta",[2130,4353,2162],{"class":2151},[2130,4355,2340],{"class":2151},[2130,4357,2406],{"class":2158},[2130,4359,2162],{"class":2151},[2130,4361,3193],{"class":2147},[2130,4363,2251],{"class":2151},[2130,4365,2415],{"class":2147},[2130,4367,2356],{"class":2151},[2130,4369,4370,4373,4375,4378,4380,4383],{"class":2132,"line":2332},[2130,4371,4372],{"class":2158},"    locales",[2130,4374,2162],{"class":2151},[2130,4376,4377],{"class":2147}," Object",[2130,4379,2251],{"class":2151},[2130,4381,4382],{"class":2143},"fromEntries",[2130,4384,4385],{"class":2158},"(\n",[2130,4387,4388,4391,4393,4396,4398,4400,4402,4404,4407,4409,4411,4414,4416,4418,4421,4423,4425,4427,4429,4431,4433,4435,4438,4440,4442,4444,4446,4449],{"class":2132,"line":2359},[2130,4389,4390],{"class":2147},"      recipe",[2130,4392,2251],{"class":2151},[2130,4394,4395],{"class":2147},"translations",[2130,4397,2251],{"class":2151},[2130,4399,2313],{"class":2143},[2130,4401,2148],{"class":2158},[2130,4403,2148],{"class":2151},[2130,4405,4406],{"class":2202},"t",[2130,4408,2282],{"class":2151},[2130,4410,2210],{"class":2209},[2130,4412,4413],{"class":2158}," [",[2130,4415,4406],{"class":2147},[2130,4417,2251],{"class":2151},[2130,4419,4420],{"class":2147},"locale",[2130,4422,2269],{"class":2151},[2130,4424,2340],{"class":2151},[2130,4426,4225],{"class":2158},[2130,4428,2162],{"class":2151},[2130,4430,2340],{"class":2151},[2130,4432,2343],{"class":2158},[2130,4434,2162],{"class":2151},[2130,4436,4437],{"class":2147}," t",[2130,4439,2251],{"class":2151},[2130,4441,3198],{"class":2147},[2130,4443,2279],{"class":2151},[2130,4445,2279],{"class":2151},[2130,4447,4448],{"class":2158},"])",[2130,4450,2168],{"class":2151},[2130,4452,4453,4456],{"class":2132,"line":2396},[2130,4454,4455],{"class":2158},"    )",[2130,4457,2168],{"class":2151},[2130,4459,4460],{"class":2132,"line":2440},[2130,4461,4462],{"class":2151},"  };\n",[2130,4464,4465],{"class":2132,"line":2451},[2130,4466,4467],{"class":2151},"},\n",[2098,4469,4470,4471,4474,4475,4477],{},"Returning ",[2102,4472,4473],{},"undefined"," means \"no page here\", and the lookup resolves to no alternates. A ",[2102,4476,2597],{}," that throws is caught, logged, and treated the same way: this lookup runs during SSR, so it can never fail a page.",[2098,4479,4480,4482],{},[2102,4481,2739],{}," is the located page's metadata in the locale the lookup was made in. It is optional, unlike on an entry. A connector that would need an extra platform request for a title should leave it out; Studio then falls back to showing the route params.",[4484,4485,4486,4496],"caution",{},[2098,4487,4488,4491,4492,4495],{},[2102,4489,4490],{},"locales"," is a promise about completeness. When you return it, it must list ",[2110,4493,4494],{},"every"," locale in which the page exists, and a locale missing from it means the page genuinely has no counterpart there, so consumers drop that alternate instead of guessing a URL.",[2098,4497,4498,4499,4501],{},"If your platform can only resolve the locale you were called in, omit ",[2102,4500,4490],{}," entirely. A single-key map would assert absence for every locale you never looked up, silently deleting those hreflang alternates. Omitted means \"unknown\", and consumers keep filling alternates from the current locale's params.",[2098,4503,4504,4505,3820,4507,4509,4510,2251],{},"The Shopify and Shopware connectors both take that second route. Resolving a product's slug in every language costs one translated read per language on both platforms, so they return ",[2102,4506,3878],{},[2102,4508,2739],{}," and omit ",[2102,4511,4490],{},[2519,4513,282],{"id":4514},"caching",[2098,4516,4517],{},"The runner caches each capability on its own tier, all under the internal orchestr cache namespace.",[2531,4519,4520,4536],{},[2534,4521,4522],{},[2537,4523,4524,4527,4530,4533],{},[2540,4525,4526],{},"Tier",[2540,4528,4529],{},"What is cached",[2540,4531,4532],{},"Default TTL",[2540,4534,4535],{},"Config",[2550,4537,4538,4556,4573,4590],{},[2537,4539,4540,4543,4546,4551],{},[2555,4541,4542],{},"Enumerate",[2555,4544,4545],{},"The walk, in chunks of 250 entries",[2555,4547,4548],{},[2102,4549,4550],{},"1h",[2555,4552,4553],{},[2102,4554,4555],{},"cache.ttl",[2537,4557,4558,4561,4564,4568],{},[2555,4559,4560],{},"Search",[2555,4562,4563],{},"One entry list per term and take",[2555,4565,4566],{},[2102,4567,2986],{},[2555,4569,4570],{},[2102,4571,4572],{},"cache.search.ttl",[2537,4574,4575,4578,4581,4585],{},[2555,4576,4577],{},"Locate",[2555,4579,4580],{},"One result per page type, market, and param set",[2555,4582,4583],{},[2102,4584,3007],{},[2555,4586,4587],{},[2102,4588,4589],{},"cache.locate.ttl",[2537,4591,4592,4595,4598,4602],{},[2555,4593,4594],{},"Count",[2555,4596,4597],{},"The total",[2555,4599,4600],{},[2102,4601,4550],{},[2555,4603,4604],{},[2102,4605,4555],{},[2098,4607,4608],{},"Enumerate, search, and locate serve stale and refresh in the background: once 80% of the TTL has elapsed, a read still returns the cached value and schedules a refresh behind a lock, so concurrent requests trigger one upstream walk rather than many. A count expires outright and is fetched again on the next read.",[2098,4610,4611,4612,4614],{},"Enumerate and search keys carry the resolved market and locale, taken from the ",[2102,4613,3811],{}," the runner resolved. That is also why your handlers must scope their platform reads to the same values.",[2098,4616,4617,4618,4621],{},"Every cached chunk writes a ",[2110,4619,4620],{},"subject tag"," for each entry that carries one. When an entity changes, drop the chunks referencing it:",[2120,4623,4626],{"className":2122,"code":4624,"filename":4625,"language":2125,"meta":2126,"style":2126},"export default defineEventHandler(async (event) => {\n  const payload = await readBody(event);\n  const { removed } = await invalidateEntity('Product', { id: payload.id });\n  return { removed };\n});\n","server/routes/webhooks/product-updated.post.ts",[2102,4627,4628,4651,4673,4719,4729],{"__ignoreMap":2126},[2130,4629,4630,4632,4634,4637,4639,4641,4643,4645,4647,4649],{"class":2132,"line":2133},[2130,4631,2137],{"class":2136},[2130,4633,2140],{"class":2136},[2130,4635,4636],{"class":2143}," defineEventHandler",[2130,4638,2148],{"class":2147},[2130,4640,2218],{"class":2209},[2130,4642,2327],{"class":2151},[2130,4644,3804],{"class":2202},[2130,4646,2282],{"class":2151},[2130,4648,2210],{"class":2209},[2130,4650,2230],{"class":2151},[2130,4652,4653,4655,4658,4660,4662,4665,4667,4669,4671],{"class":2132,"line":2155},[2130,4654,4240],{"class":2209},[2130,4656,4657],{"class":2147}," payload",[2130,4659,2242],{"class":2151},[2130,4661,2245],{"class":2136},[2130,4663,4664],{"class":2143}," readBody",[2130,4666,2148],{"class":2158},[2130,4668,3804],{"class":2147},[2130,4670,2282],{"class":2158},[2130,4672,2285],{"class":2151},[2130,4674,4675,4677,4679,4682,4684,4686,4688,4691,4693,4695,4697,4699,4701,4703,4705,4707,4709,4711,4713,4715,4717],{"class":2132,"line":2171},[2130,4676,4240],{"class":2209},[2130,4678,2340],{"class":2151},[2130,4680,4681],{"class":2147}," removed",[2130,4683,2279],{"class":2151},[2130,4685,2242],{"class":2151},[2130,4687,2245],{"class":2136},[2130,4689,4690],{"class":2143}," invalidateEntity",[2130,4692,2148],{"class":2158},[2130,4694,2186],{"class":2151},[2130,4696,336],{"class":2182},[2130,4698,2186],{"class":2151},[2130,4700,2269],{"class":2151},[2130,4702,2340],{"class":2151},[2130,4704,2382],{"class":2158},[2130,4706,2162],{"class":2151},[2130,4708,4657],{"class":2147},[2130,4710,2251],{"class":2151},[2130,4712,2391],{"class":2147},[2130,4714,2279],{"class":2151},[2130,4716,2282],{"class":2158},[2130,4718,2285],{"class":2151},[2130,4720,4721,4723,4725,4727],{"class":2132,"line":2191},[2130,4722,4311],{"class":2136},[2130,4724,2340],{"class":2151},[2130,4726,4681],{"class":2147},[2130,4728,4116],{"class":2151},[2130,4730,4731,4733,4735],{"class":2132,"line":2233},[2130,4732,2510],{"class":2151},[2130,4734,2282],{"class":2147},[2130,4736,2285],{"class":2151},[2098,4738,4739,4740,4742],{},"Entries without a ",[2102,4741,3878],{}," cannot be tagged, so they expire on TTL alone.",[2519,4744,4746],{"id":4745},"reading-a-page-index-from-your-own-code","Reading a page index from your own code",[2098,4748,4749,4750,4752],{},"Five server utilities are auto-imported. Each takes the page type token plus the resolved ",[2102,4751,3811],{}," from the handler or endpoint you are in.",[2531,4754,4755,4768],{},[2534,4756,4757],{},[2537,4758,4759,4762,4765],{},[2540,4760,4761],{},"Utility",[2540,4763,4764],{},"Returns",[2540,4766,4767],{},"Notes",[2550,4769,4770,4788,4806,4825,4843],{},[2537,4771,4772,4777,4782],{},[2555,4773,4774],{},[2102,4775,4776],{},"listPages(token, { clientEnv, take? })",[2555,4778,4779],{},[2102,4780,4781],{},"PageIndexEntryStream",[2555,4783,4784,4785,4787],{},"Full walk in stable order unless ",[2102,4786,3716],{}," bounds it.",[2537,4789,4790,4795,4799],{},[2555,4791,4792],{},[2102,4793,4794],{},"searchPages(token, { clientEnv, term, take })",[2555,4796,4797],{},[2102,4798,4781],{},[2555,4800,4801,4803,4804,2251],{},[2102,4802,3716],{}," is required and clamped to ",[2102,4805,3705],{},[2537,4807,4808,4813,4818],{},[2555,4809,4810],{},[2102,4811,4812],{},"countPages(token, { clientEnv })",[2555,4814,4815],{},[2102,4816,4817],{},"Promise\u003Cnumber | undefined>",[2555,4819,4820,4822,4823,2251],{},[2102,4821,4473],{}," when the type has no registration or no ",[2102,4824,2584],{},[2537,4826,4827,4832,4837],{},[2555,4828,4829],{},[2102,4830,4831],{},"locatePage(token, { clientEnv, params })",[2555,4833,4834],{},[2102,4835,4836],{},"Promise\u003CPageIndexLocateResult | null>",[2555,4838,4839,4842],{},[2102,4840,4841],{},"null"," on any failure, by design.",[2537,4844,4845,4850,4855],{},[2555,4846,4847],{},[2102,4848,4849],{},"invalidateEntity(type, { id })",[2555,4851,4852],{},[2102,4853,4854],{},"Promise\u003C{ removed }>",[2555,4856,4857],{},"Drops every cached value tagged with that subject.",[2098,4859,2108,4860,4862,4863,4866],{},[2102,4861,4781],{}," is an async iterable with a ",[2102,4864,4865],{},"toArray()"," convenience method. Iterate it when the page-space is large, because the walk is lazy and stops when you stop reading:",[2120,4868,4871],{"className":2122,"code":4869,"filename":4870,"language":2125,"meta":2126,"style":2126},"export default defineMyAppQuery(RelatedRecipesQuery, async ({ clientEnv, input }) => {\n  const ids: string[] = [];\n\n  for await (const entry of listPages(RecipeDetailPage, { clientEnv, take: 200 })) {\n    if (entry.subject && entry.params.slug !== input.slug) {\n      ids.push(entry.subject.id);\n    }\n  }\n\n  return { ids, total: ids.length };\n});\n","server/orchestr/recipe/related.query.ts",[2102,4872,4873,4904,4926,4930,4977,5017,5043,5048,5053,5057,5081],{"__ignoreMap":2126},[2130,4874,4875,4877,4879,4882,4885,4887,4889,4891,4893,4895,4898,4900,4902],{"class":2132,"line":2133},[2130,4876,2137],{"class":2136},[2130,4878,2140],{"class":2136},[2130,4880,4881],{"class":2143}," defineMyAppQuery",[2130,4883,4884],{"class":2147},"(RelatedRecipesQuery",[2130,4886,2269],{"class":2151},[2130,4888,3359],{"class":2209},[2130,4890,2199],{"class":2151},[2130,4892,3032],{"class":2202},[2130,4894,2269],{"class":2151},[2130,4896,4897],{"class":2202}," input",[2130,4899,2206],{"class":2151},[2130,4901,2210],{"class":2209},[2130,4903,2230],{"class":2151},[2130,4905,4906,4908,4911,4913,4916,4919,4921,4924],{"class":2132,"line":2155},[2130,4907,4240],{"class":2209},[2130,4909,4910],{"class":2147}," ids",[2130,4912,2162],{"class":2151},[2130,4914,4915],{"class":3998}," string",[2130,4917,4918],{"class":2158},"[] ",[2130,4920,2728],{"class":2151},[2130,4922,4923],{"class":2158}," []",[2130,4925,2285],{"class":2151},[2130,4927,4928],{"class":2132,"line":2171},[2130,4929,2655],{"emptyLinePlaceholder":2654},[2130,4931,4932,4934,4936,4938,4941,4944,4947,4950,4952,4955,4957,4959,4961,4963,4965,4967,4970,4972,4975],{"class":2132,"line":2191},[2130,4933,2159],{"class":2136},[2130,4935,2245],{"class":2136},[2130,4937,2327],{"class":2158},[2130,4939,4940],{"class":2209},"const",[2130,4942,4943],{"class":2147}," entry",[2130,4945,4946],{"class":2151}," of",[2130,4948,4949],{"class":2143}," listPages",[2130,4951,2148],{"class":2158},[2130,4953,4954],{"class":2147},"RecipeDetailPage",[2130,4956,2269],{"class":2151},[2130,4958,2340],{"class":2151},[2130,4960,3032],{"class":2147},[2130,4962,2269],{"class":2151},[2130,4964,3377],{"class":2158},[2130,4966,2162],{"class":2151},[2130,4968,4969],{"class":2944}," 200",[2130,4971,2279],{"class":2151},[2130,4973,4974],{"class":2158},")) ",[2130,4976,2152],{"class":2151},[2130,4978,4979,4982,4984,4987,4989,4991,4994,4996,4998,5000,5002,5004,5007,5009,5011,5013,5015],{"class":2132,"line":2233},[2130,4980,4981],{"class":2136},"    if",[2130,4983,2327],{"class":2158},[2130,4985,4986],{"class":2147},"entry",[2130,4988,2251],{"class":2151},[2130,4990,3878],{"class":2147},[2130,4992,4993],{"class":2151}," &&",[2130,4995,4943],{"class":2147},[2130,4997,2251],{"class":2151},[2130,4999,3856],{"class":2147},[2130,5001,2251],{"class":2151},[2130,5003,3198],{"class":2147},[2130,5005,5006],{"class":2151}," !==",[2130,5008,4897],{"class":2147},[2130,5010,2251],{"class":2151},[2130,5012,3198],{"class":2147},[2130,5014,4296],{"class":2158},[2130,5016,2152],{"class":2151},[2130,5018,5019,5022,5024,5027,5029,5031,5033,5035,5037,5039,5041],{"class":2132,"line":2288},[2130,5020,5021],{"class":2147},"      ids",[2130,5023,2251],{"class":2151},[2130,5025,5026],{"class":2143},"push",[2130,5028,2148],{"class":2158},[2130,5030,4986],{"class":2147},[2130,5032,2251],{"class":2151},[2130,5034,3878],{"class":2147},[2130,5036,2251],{"class":2151},[2130,5038,2391],{"class":2147},[2130,5040,2282],{"class":2158},[2130,5042,2285],{"class":2151},[2130,5044,5045],{"class":2132,"line":2296},[2130,5046,5047],{"class":2151},"    }\n",[2130,5049,5050],{"class":2132,"line":2332},[2130,5051,5052],{"class":2151},"  }\n",[2130,5054,5055],{"class":2132,"line":2359},[2130,5056,2655],{"emptyLinePlaceholder":2654},[2130,5058,5059,5061,5063,5065,5067,5070,5072,5074,5076,5079],{"class":2132,"line":2396},[2130,5060,4311],{"class":2136},[2130,5062,2340],{"class":2151},[2130,5064,4910],{"class":2147},[2130,5066,2269],{"class":2151},[2130,5068,5069],{"class":2158}," total",[2130,5071,2162],{"class":2151},[2130,5073,4910],{"class":2147},[2130,5075,2251],{"class":2151},[2130,5077,5078],{"class":2147},"length",[2130,5080,4116],{"class":2151},[2130,5082,5083,5085,5087],{"class":2132,"line":2440},[2130,5084,2510],{"class":2151},[2130,5086,2282],{"class":2147},[2130,5088,2285],{"class":2151},[2098,5090,5091,5092,5094],{},"Calling ",[2102,5093,4865],{}," twice starts two separate walks. Collect once and reuse the array.",[2519,5096,5098],{"id":5097},"endpoints","Endpoints",[2531,5100,5101,5114],{},[2534,5102,5103],{},[2537,5104,5105,5108,5111],{},[2540,5106,5107],{},"Path",[2540,5109,5110],{},"Auth",[2540,5112,5113],{},"Used by",[2550,5115,5116,5129,5141],{},[2537,5117,5118,5123,5126],{},[2555,5119,5120],{},[2102,5121,5122],{},"POST /api/laioutr/orchestr/page-index/list",[2555,5124,5125],{},"Project secret",[2555,5127,5128],{},"Studio's link menu, preview-data selector",[2537,5130,5131,5136,5138],{},[2555,5132,5133],{},[2102,5134,5135],{},"POST /api/laioutr/orchestr/page-index/locate",[2555,5137,5125],{},[2555,5139,5140],{},"Studio's preview-data selector",[2537,5142,5143,5148,5151],{},[2555,5144,5145],{},[2102,5146,5147],{},"POST /api/orchestr/page-index/locate",[2555,5149,5150],{},"None",[2555,5152,5153],{},"The frontend's own hreflang and locale-switcher lookup",[2098,5155,5156,5157,5159,5160,5164],{},"The public ",[2102,5158,2597],{}," route exists because the frontend performs that lookup during client-side navigation as well as during SSR, so it can never hold the ",[2115,5161,5163],{"href":5162},"/cockpit/settings/project-secret-key","project secret",". It discloses only the per-locale route params that the rendered hreflang tags publish anyway.",[4484,5166,5167,5168,5170],{},"If you put a reverse proxy or an edge rule in front of the app that restricts its API paths, allow ",[2102,5169,5147],{},". Blocking it does not break rendering, but every page falls back to filling its alternates from the current locale's params.",[2098,5172,5173,5174,5176,5177,5179],{},"The ",[2102,5175,2528],{}," endpoint validates each enumerated entry on its own and drops the ones that fail, with a warning naming the page type. One malformed entry (a platform field typed non-null that arrives ",[2102,5178,4841],{},") costs one page rather than the whole catalogue. A handler that throws is not swallowed: the endpoint fails so the editor sees an error state instead of an empty catalogue that looks real.",[2519,5181,5183],{"id":5182},"where-the-index-shows-up","Where the index shows up",[5185,5186,5187,5194,5204],"ul",{},[5188,5189,5190,5193],"li",{},[2110,5191,5192],{},"Link fields in Studio."," Picking a dynamic page type opens a second level listing its pages. Selecting one stores the entry's params on the link. \"Enter params manually\" stays available above the list, so an index that is empty or unreachable never blocks the editor.",[5188,5195,5196,5199,5200,5203],{},[2110,5197,5198],{},"Preview data."," For an enumerable dynamic page, the page properties panel gains a ",[2110,5201,5202],{},"Preview Data"," selector naming the instance currently rendered in the preview. The choice lives in the Studio session and is never written to the project configuration.",[5188,5205,5206,5209,5210,5212,5213,5215,5216,3805,5219,5222],{},[2110,5207,5208],{},"Locale-correct SEO."," Where ",[2102,5211,2597],{}," reports a complete ",[2102,5214,4490],{}," map, hreflang alternates, ",[2102,5217,5218],{},"og:locale:alternate",[2102,5220,5221],{},"x-default",", and the locale switcher each use their own locale's slug.",[2098,5224,5225,5226,5228,5229,5231,5232,3805,5234,3812,5237,5240],{},"Studio learns all of this from reflection: the reflected ",[2102,5227,2708],{}," map is keyed by page-type token, the presence of a key means the type is enumerable, and ",[2102,5230,2597],{}," marks the point-lookup capability. The ",[2102,5233,3686],{},[2102,5235,5236],{},"appLabel",[2102,5238,5239],{},"logoUrl"," on each record are what the picker shows as the source of the list.",[2519,5242,5244],{"id":5243},"page-types-without-a-registration","Page types without a registration",[2098,5246,5247,5248,5250],{},"Nothing is required. A page type with no ",[2102,5249,2708],{}," behaves exactly as it did before:",[5185,5252,5253,5262,5271],{},[5188,5254,5255,3820,5258,5261],{},[2102,5256,5257],{},"listPages",[2102,5259,5260],{},"searchPages"," return an empty stream and log one warning.",[5188,5263,5264,5267,5268,5270],{},[2102,5265,5266],{},"countPages"," resolves to ",[2102,5269,4473],{}," without warning, since consumers already degrade without a total.",[5188,5272,5273,5267,5276,5278],{},[2102,5274,5275],{},"locatePage",[2102,5277,4841],{}," without warning, because it runs for whatever page the route resolved to, including static and system pages that no connector enumerates.",[2098,5280,5281],{},"Studio falls back to manual param entry, and the frontend fills alternates from the current locale's params.",[2519,5283,5285],{"id":5284},"related","Related",[5287,5288,5289,5293,5296,5303],"card-group",{},[5290,5291,5292],"card",{"title":192,"to":193},"Defining the dynamic page types a page index enumerates.",[5290,5294,5295],{"title":298,"to":299},"The market, language, and preview state every page-index handler receives.",[5290,5297,5299,5300,5302],{"title":5298,"to":185},"Multi-Language Support","How ",[2102,5301,2597],{}," feeds hreflang alternates and the locale switcher.",[5290,5304,5305],{"title":282,"to":283},"The cache layers around queries, links, components, and page indexes.",[5307,5308,5309],"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":2126,"searchDepth":2155,"depth":2155,"links":5311},[5312,5313,5316,5317,5319,5321,5323,5325,5326,5327,5328,5329,5330],{"id":2521,"depth":2155,"text":2522},{"id":2690,"depth":2155,"text":2691,"children":5314},[5315],{"id":3647,"depth":2171,"text":3648},{"id":3827,"depth":2155,"text":3828},{"id":3963,"depth":2155,"text":5318},"Enumerating with list",{"id":4141,"depth":2155,"text":5320},"Searching with search",{"id":4177,"depth":2155,"text":5322},"Counting with count",{"id":4195,"depth":2155,"text":5324},"Locating with locate",{"id":4514,"depth":2155,"text":282},{"id":4745,"depth":2155,"text":4746},{"id":5097,"depth":2155,"text":5098},{"id":5182,"depth":2155,"text":5183},{"id":5243,"depth":2155,"text":5244},{"id":5284,"depth":2155,"text":5285},"A page index enumerates the concrete pages behind a dynamic page type, so Studio can list them, search them, and resolve one back to the entity it renders.","md",{},{"title":310,"description":5331},{"loc":311,"lastmod":5336,"changefreq":5337,"priority":5338},"2026-07-29","monthly",0.9,"IygTJc3flRrzMLTuHRVcSdK4vZUwm_MAwN5HfbhW7MM",[5341,5343],{"title":306,"path":307,"stem":308,"description":5342,"children":-1},"Request and response shapes for filters in query handlers and link handlers, including faceted search and well-known filter names.",{"title":316,"path":317,"stem":318,"description":5344,"children":-1},"How Orchestr maps pagination, sorting, and filters to URL query parameters, and how to customize URL generation with hooks.",1785477679842]