[{"data":1,"prerenderedAt":7261},["ShallowReactive",2],{"navigation_docs":3,"-frontend-orchestr-queries":1905,"-frontend-orchestr-queries-surround":7256},[4,136,463,647,1532,1622,1628,1634,1693,1792],{"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},"MCP Server","/getting-started/mcp-server","0.getting-started/7.mcp-server",{"title":137,"path":138,"stem":139,"children":140},"Frontend","/frontend","1.Frontend/0.index",[141,142,153,215,241,305],{"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],{"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},"Currencies","/frontend/features/currencies","1.Frontend/2.Features/currencies",{"title":168,"path":169,"stem":170},"Environments & Staging","/frontend/features/environments","1.Frontend/2.Features/environments",{"title":172,"path":173,"stem":174},"Hooks","/frontend/features/hooks","1.Frontend/2.Features/hooks",{"title":176,"path":177,"stem":178},"Media and Media Library","/frontend/features/media","1.Frontend/2.Features/media",{"title":180,"path":181,"stem":182},"Multi-language Support","/frontend/features/multi-language-support","1.Frontend/2.Features/multi-language-support",{"title":184,"path":185,"stem":186},"Multi-market","/frontend/features/multi-market","1.Frontend/2.Features/multi-market",{"title":188,"path":189,"stem":190},"Page Types","/frontend/features/pagetypes","1.Frontend/2.Features/pagetypes",{"title":192,"path":193,"stem":194},"PWA","/frontend/features/pwa","1.Frontend/2.Features/pwa",{"title":196,"path":197,"stem":198},"Redirects","/frontend/features/redirects","1.Frontend/2.Features/redirects",{"title":200,"path":201,"stem":202},"Routing","/frontend/features/routing","1.Frontend/2.Features/routing",{"title":204,"path":205,"stem":206},"Server-Side Rendering (SSR) and Caching","/frontend/features/ssr-and-caching","1.Frontend/2.Features/ssr-and-caching",{"title":208,"path":209,"stem":210},"Tracking","/frontend/features/tracking","1.Frontend/2.Features/tracking",{"title":212,"path":213,"stem":214},"Z-Ordering","/frontend/features/z-ordering","1.Frontend/2.Features/z-ordering",{"title":216,"path":217,"stem":218,"children":219},"SEO","/frontend/seo","1.Frontend/3.SEO/0.index",[220,221,225,229,233,237],{"title":216,"path":217,"stem":218},{"title":222,"path":223,"stem":224},"Link Checker","/frontend/seo/link-checker","1.Frontend/3.SEO/link-checker",{"title":226,"path":227,"stem":228},"OG Image","/frontend/seo/og-image","1.Frontend/3.SEO/og-image",{"title":230,"path":231,"stem":232},"Robots.txt","/frontend/seo/robots-txt","1.Frontend/3.SEO/robots-txt",{"title":234,"path":235,"stem":236},"Schema.org","/frontend/seo/schema-org","1.Frontend/3.SEO/schema-org",{"title":238,"path":239,"stem":240},"Sitemap","/frontend/seo/sitemap","1.Frontend/3.SEO/sitemap",{"title":242,"path":243,"stem":244,"children":245},"Backend for Frontend","/frontend/orchestr","1.Frontend/4.Orchestr/0.index",[246,247,273,277,281,285,289,293,297,301],{"title":242,"path":243,"stem":244},{"title":248,"path":249,"stem":250,"children":251},"Recipes","/frontend/orchestr/recipes","1.Frontend/4.Orchestr/99.recipes/0.index",[252,253,257,261,265,269],{"title":248,"path":249,"stem":250},{"title":254,"path":255,"stem":256},"Analytics components from query handlers","/frontend/orchestr/recipes/analytics-from-query-handlers","1.Frontend/4.Orchestr/99.recipes/analytics-from-query-handlers",{"title":258,"path":259,"stem":260},"Identity cookies (cart and visitor IDs)","/frontend/orchestr/recipes/identity-cookies","1.Frontend/4.Orchestr/99.recipes/identity-cookies",{"title":262,"path":263,"stem":264},"System bootstrap in extendRequest","/frontend/orchestr/recipes/system-bootstrap","1.Frontend/4.Orchestr/99.recipes/system-bootstrap",{"title":266,"path":267,"stem":268},"Translating vendor errors","/frontend/orchestr/recipes/translating-vendor-errors","1.Frontend/4.Orchestr/99.recipes/translating-vendor-errors",{"title":270,"path":271,"stem":272},"Userland cache patterns","/frontend/orchestr/recipes/userland-cache-patterns","1.Frontend/4.Orchestr/99.recipes/userland-cache-patterns",{"title":274,"path":275,"stem":276},"Actions","/frontend/orchestr/actions","1.Frontend/4.Orchestr/Actions",{"title":278,"path":279,"stem":280},"Caching","/frontend/orchestr/caching","1.Frontend/4.Orchestr/Caching",{"title":282,"path":283,"stem":284},"Middleware","/frontend/orchestr/middleware","1.Frontend/4.Orchestr/Middleware",{"title":286,"path":287,"stem":288},"Queries & Links","/frontend/orchestr/queries","1.Frontend/4.Orchestr/Queries",{"title":290,"path":291,"stem":292},"Component Resolvers","/frontend/orchestr/component-resolvers","1.Frontend/4.Orchestr/component-resolvers",{"title":294,"path":295,"stem":296},"Filters","/frontend/orchestr/filters","1.Frontend/4.Orchestr/filters",{"title":298,"path":299,"stem":300},"URL Query Parameters","/frontend/orchestr/url-query-params","1.Frontend/4.Orchestr/url-query-params",{"title":302,"path":303,"stem":304},"Orchestr Wire Format","/frontend/orchestr/wire-format","1.Frontend/4.Orchestr/wire-format",{"title":306,"path":307,"stem":308,"children":309},"API Reference","/frontend/api-reference","1.Frontend/99.api-reference/0.index",[310,311,373,376,406,422,430,441,449,456],{"title":306,"path":307,"stem":308},{"title":312,"path":313,"stem":314,"children":315},"Entities","/frontend/api-reference/entities","1.Frontend/99.api-reference/01.entities/0.index",[316,317,321,325,329,333,337,341,345,349,353,357,361,365,369],{"title":312,"path":313,"stem":314},{"title":318,"path":319,"stem":320},"Product","/frontend/api-reference/entities/product","1.Frontend/99.api-reference/01.entities/1.product",{"title":322,"path":323,"stem":324},"SuggestedSearch","/frontend/api-reference/entities/suggested-search","1.Frontend/99.api-reference/01.entities/10.suggested-search",{"title":326,"path":327,"stem":328},"SuggestedSearchEntry","/frontend/api-reference/entities/suggested-search-entry","1.Frontend/99.api-reference/01.entities/11.suggested-search-entry",{"title":330,"path":331,"stem":332},"BlogCollection","/frontend/api-reference/entities/blog-collection","1.Frontend/99.api-reference/01.entities/12.blog-collection",{"title":334,"path":335,"stem":336},"Comment","/frontend/api-reference/entities/comment","1.Frontend/99.api-reference/01.entities/13.comment",{"title":338,"path":339,"stem":340},"Location","/frontend/api-reference/entities/location","1.Frontend/99.api-reference/01.entities/14.location",{"title":342,"path":343,"stem":344},"ProductVariant","/frontend/api-reference/entities/product-variant","1.Frontend/99.api-reference/01.entities/2.product-variant",{"title":346,"path":347,"stem":348},"Category","/frontend/api-reference/entities/category","1.Frontend/99.api-reference/01.entities/3.category",{"title":350,"path":351,"stem":352},"Cart","/frontend/api-reference/entities/cart","1.Frontend/99.api-reference/01.entities/4.cart",{"title":354,"path":355,"stem":356},"CartItem","/frontend/api-reference/entities/cart-item","1.Frontend/99.api-reference/01.entities/5.cart-item",{"title":358,"path":359,"stem":360},"Review","/frontend/api-reference/entities/review","1.Frontend/99.api-reference/01.entities/6.review",{"title":362,"path":363,"stem":364},"BreadcrumbItem","/frontend/api-reference/entities/breadcrumb-item","1.Frontend/99.api-reference/01.entities/7.breadcrumb-item",{"title":366,"path":367,"stem":368},"MenuItem","/frontend/api-reference/entities/menu-item","1.Frontend/99.api-reference/01.entities/8.menu-item",{"title":370,"path":371,"stem":372},"BlogPost","/frontend/api-reference/entities/blog-post","1.Frontend/99.api-reference/01.entities/9.blog-post",{"title":188,"path":374,"stem":375},"/frontend/api-reference/page-types","1.Frontend/99.api-reference/02.page-types",{"title":377,"path":378,"stem":379,"children":380},"Common Types","/frontend/api-reference/common-types","1.Frontend/99.api-reference/03.common-types/0.index",[381,382,386,390,394,398,402],{"title":377,"path":378,"stem":379},{"title":383,"path":384,"stem":385},"Link","/frontend/api-reference/common-types/link","1.Frontend/99.api-reference/03.common-types/1.link",{"title":387,"path":388,"stem":389},"Media","/frontend/api-reference/common-types/media","1.Frontend/99.api-reference/03.common-types/2.media",{"title":391,"path":392,"stem":393},"Money","/frontend/api-reference/common-types/money","1.Frontend/99.api-reference/03.common-types/3.money",{"title":395,"path":396,"stem":397},"UnitPrice","/frontend/api-reference/common-types/unit-price","1.Frontend/99.api-reference/03.common-types/4.unit-price",{"title":399,"path":400,"stem":401},"Measurement","/frontend/api-reference/common-types/measurement","1.Frontend/99.api-reference/03.common-types/5.measurement",{"title":403,"path":404,"stem":405},"Opening Hours","/frontend/api-reference/common-types/opening-hours","1.Frontend/99.api-reference/03.common-types/6.opening-hours",{"title":407,"path":408,"stem":409,"children":410,"page":55},"Ecommerce","/frontend/api-reference/ecommerce","1.Frontend/99.api-reference/10.ecommerce",[411,414,418],{"title":274,"path":412,"stem":413},"/frontend/api-reference/ecommerce/actions","1.Frontend/99.api-reference/10.ecommerce/1.actions",{"title":415,"path":416,"stem":417},"Queries","/frontend/api-reference/ecommerce/queries","1.Frontend/99.api-reference/10.ecommerce/2.queries",{"title":419,"path":420,"stem":421},"Errors","/frontend/api-reference/ecommerce/errors","1.Frontend/99.api-reference/10.ecommerce/3.errors",{"title":423,"path":424,"stem":425,"children":426,"page":55},"Newsletter","/frontend/api-reference/newsletter","1.Frontend/99.api-reference/11.newsletter",[427],{"title":274,"path":428,"stem":429},"/frontend/api-reference/newsletter/actions","1.Frontend/99.api-reference/11.newsletter/1.actions",{"title":431,"path":432,"stem":433,"children":434,"page":55},"Blog","/frontend/api-reference/blog","1.Frontend/99.api-reference/12.blog",[435,438],{"title":415,"path":436,"stem":437},"/frontend/api-reference/blog/queries","1.Frontend/99.api-reference/12.blog/1.queries",{"title":419,"path":439,"stem":440},"/frontend/api-reference/blog/errors","1.Frontend/99.api-reference/12.blog/2.errors",{"title":442,"path":443,"stem":444,"children":445,"page":55},"Suggested Search","/frontend/api-reference/suggested-search","1.Frontend/99.api-reference/13.suggested-search",[446],{"title":415,"path":447,"stem":448},"/frontend/api-reference/suggested-search/queries","1.Frontend/99.api-reference/13.suggested-search/1.queries",{"title":208,"path":450,"stem":451,"children":452,"page":55},"/frontend/api-reference/tracking","1.Frontend/99.api-reference/14.tracking",[453],{"title":274,"path":454,"stem":455},"/frontend/api-reference/tracking/actions","1.Frontend/99.api-reference/14.tracking/1.actions",{"title":338,"path":457,"stem":458,"children":459,"page":55},"/frontend/api-reference/location","1.Frontend/99.api-reference/15.location",[460],{"title":415,"path":461,"stem":462},"/frontend/api-reference/location/queries","1.Frontend/99.api-reference/15.location/1.queries",{"title":464,"path":465,"stem":466,"children":467},"Apps","/apps","2.Apps/0.index",[468,469,545,631],{"title":464,"path":465,"stem":466},{"title":470,"path":471,"stem":472,"children":473},"App Development","/apps/app-development","2.Apps/app-development/0.index",[474,475,497,501,505,509,513,517,521,525,529,533,537,541],{"title":470,"path":471,"stem":472},{"title":476,"path":477,"stem":478,"children":479},"Guides","/apps/app-development/guides","2.Apps/app-development/99.guides/0.index",[480,481,485,489,493],{"title":476,"path":477,"stem":478},{"title":482,"path":483,"stem":484},"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":486,"path":487,"stem":488},"Section config standard","/apps/app-development/guides/section-config-standard","2.Apps/app-development/99.guides/section-config-standard",{"title":490,"path":491,"stem":492},"Shared field factories","/apps/app-development/guides/shared-field-factories","2.Apps/app-development/99.guides/shared-field-factories",{"title":494,"path":495,"stem":496},"How to write CSS","/apps/app-development/guides/writing-css","2.Apps/app-development/99.guides/writing-css",{"title":498,"path":499,"stem":500},"App Configuration","/apps/app-development/app-configuration","2.Apps/app-development/app-configuration",{"title":502,"path":503,"stem":504},"App Starter","/apps/app-development/app-starter","2.Apps/app-development/app-starter",{"title":506,"path":507,"stem":508},"Best Practice","/apps/app-development/best-practice","2.Apps/app-development/best-practice",{"title":510,"path":511,"stem":512},"Block Definitions","/apps/app-development/block-definitions","2.Apps/app-development/block-definitions",{"title":514,"path":515,"stem":516},"Coding Standards","/apps/app-development/coding-standards","2.Apps/app-development/coding-standards",{"title":518,"path":519,"stem":520},"Consent Adapters","/apps/app-development/consent-adapters","2.Apps/app-development/consent-adapters",{"title":522,"path":523,"stem":524},"Consuming Query Fields","/apps/app-development/consuming-query-fields","2.Apps/app-development/consuming-query-fields",{"title":526,"path":527,"stem":528},"Implementation Overview","/apps/app-development/implementation-overview","2.Apps/app-development/implementation-overview",{"title":530,"path":531,"stem":532},"Platform Dependencies","/apps/app-development/platform-dependencies","2.Apps/app-development/platform-dependencies",{"title":534,"path":535,"stem":536},"Schema Fields","/apps/app-development/schema-fields","2.Apps/app-development/schema-fields",{"title":538,"path":539,"stem":540},"Section Definitions","/apps/app-development/section-definitions","2.Apps/app-development/section-definitions",{"title":542,"path":543,"stem":544},"Studio Icons","/apps/app-development/studio-icons","2.Apps/app-development/studio-icons",{"title":546,"path":547,"stem":548,"children":549},"App Docs","/apps/app-docs","2.Apps/app-docs/0.index",[550,551,555,559,563,567,571,575,579,583,587,591,595,599,603,607,611,615,619,623,627],{"title":546,"path":547,"stem":548},{"title":552,"path":553,"stem":554},"Actindo","/apps/app-docs/actindo","2.Apps/app-docs/actindo",{"title":556,"path":557,"stem":558},"Adobe Commerce","/apps/app-docs/adobe-commerce","2.Apps/app-docs/adobe-commerce",{"title":560,"path":561,"stem":562},"B2Bsellers","/apps/app-docs/b2bsellers","2.Apps/app-docs/b2bsellers",{"title":564,"path":565,"stem":566},"Battery Included","/apps/app-docs/battery-included","2.Apps/app-docs/battery-included",{"title":568,"path":569,"stem":570},"CCM19","/apps/app-docs/ccm19","2.Apps/app-docs/ccm19",{"title":572,"path":573,"stem":574},"Cookiebot","/apps/app-docs/cookiebot","2.Apps/app-docs/cookiebot",{"title":576,"path":577,"stem":578},"Google Tag Manager (GTM)","/apps/app-docs/gtm","2.Apps/app-docs/gtm",{"title":580,"path":581,"stem":582},"Hygraph","/apps/app-docs/hygraph","2.Apps/app-docs/hygraph",{"title":584,"path":585,"stem":586},"JTL Platform","/apps/app-docs/jtl-platform","2.Apps/app-docs/jtl-platform",{"title":588,"path":589,"stem":590},"Nimstrata Google Retail API","/apps/app-docs/nimstrata","2.Apps/app-docs/nimstrata",{"title":592,"path":593,"stem":594},"Pimcore","/apps/app-docs/pimcore","2.Apps/app-docs/pimcore",{"title":596,"path":597,"stem":598},"Sylius","/apps/app-docs/sylius","2.Apps/app-docs/sylius",{"title":600,"path":601,"stem":602},"Commercetools","/apps/app-docs/commercetools","2.apps/app-docs/commercetools",{"title":604,"path":605,"stem":606},"Emporix","/apps/app-docs/emporix","2.apps/app-docs/emporix",{"title":608,"path":609,"stem":610},"Klaviyo","/apps/app-docs/klaviyo","2.apps/app-docs/klaviyo",{"title":612,"path":613,"stem":614},"OXID eShop","/apps/app-docs/oxid","2.apps/app-docs/oxid",{"title":616,"path":617,"stem":618},"Shopify","/apps/app-docs/shopify","2.apps/app-docs/shopify",{"title":620,"path":621,"stem":622},"Shopware","/apps/app-docs/shopware","2.apps/app-docs/shopware",{"title":624,"path":625,"stem":626},"Vercel Analytics","/apps/app-docs/vercel-analytics","2.apps/app-docs/vercel-analytics",{"title":628,"path":629,"stem":630},"Vercel Speed Insights","/apps/app-docs/vercel-speed-insights","2.apps/app-docs/vercel-speed-insights",{"title":632,"path":633,"stem":634,"children":635,"page":55},"Essentials","/apps/essentials","2.Apps/essentials",[636,640,644],{"title":637,"path":638,"stem":639},"Legal","/apps/essentials/legal","2.Apps/essentials/legal",{"title":641,"path":642,"stem":643},"Mailer","/apps/essentials/mailer","2.Apps/essentials/mailer",{"title":216,"path":645,"stem":646},"/apps/essentials/seo","2.Apps/essentials/seo",{"title":648,"path":649,"stem":650,"children":651},"Laioutr UI","/laioutr-ui","3.laioutr-ui/0.index",[652,653,685,691,697,885,902,908,914,968,986,1116],{"title":648,"path":649,"stem":650},{"title":5,"path":654,"stem":655,"children":656},"/laioutr-ui/getting-started","3.laioutr-ui/01.getting-started/0.index",[657,658,662,666,670,674,678,682],{"title":5,"path":654,"stem":655},{"title":659,"path":660,"stem":661},"Browser support","/laioutr-ui/getting-started/browser-support","3.laioutr-ui/01.getting-started/1.browser-support",{"title":663,"path":664,"stem":665},"Common Data","/laioutr-ui/getting-started/common-data","3.laioutr-ui/01.getting-started/99.common-data",{"title":667,"path":668,"stem":669},"CSS Layers","/laioutr-ui/getting-started/css-layers","3.laioutr-ui/01.getting-started/css-layers",{"title":671,"path":672,"stem":673},"Figma Kit","/laioutr-ui/getting-started/figma-kit","3.laioutr-ui/01.getting-started/figma-kit",{"title":675,"path":676,"stem":677},"Surface Tone","/laioutr-ui/getting-started/surface-tone","3.laioutr-ui/01.getting-started/surface-tone",{"title":679,"path":680,"stem":681},"Theming","/laioutr-ui/getting-started/theming","3.laioutr-ui/01.getting-started/theming",{"title":212,"path":683,"stem":684},"/laioutr-ui/getting-started/z-ordering","3.laioutr-ui/01.getting-started/z-ordering",{"title":686,"path":687,"stem":688,"children":689},"B2B","/laioutr-ui/b2b","3.laioutr-ui/b2b/0.index",[690],{"title":686,"path":687,"stem":688},{"title":692,"path":693,"stem":694,"children":695},"Booking","/laioutr-ui/booking","3.laioutr-ui/booking/0.index",[696],{"title":692,"path":693,"stem":694},{"title":698,"path":699,"stem":700,"children":701},"CMS","/laioutr-ui/cms","3.laioutr-ui/cms/0.index",[702,703,709,734,746,750,754,758,762,766,778,799,820,836],{"title":698,"path":699,"stem":700},{"title":704,"path":705,"stem":706,"children":707},"Alphabetical Index","/laioutr-ui/cms/alphabetical-index","3.laioutr-ui/cms/alphabetical-index",[708],{"title":704,"path":705,"stem":706},{"title":710,"path":711,"stem":712,"children":713,"page":55},"Banner","/laioutr-ui/cms/banner","3.laioutr-ui/cms/banner",[714,718,722,726,730],{"title":715,"path":716,"stem":717},"Banner Basic","/laioutr-ui/cms/banner/banner-basic","3.laioutr-ui/cms/banner/banner-basic",{"title":719,"path":720,"stem":721},"Banner Integrated","/laioutr-ui/cms/banner/banner-integrated","3.laioutr-ui/cms/banner/banner-integrated",{"title":723,"path":724,"stem":725},"Banner Showcase","/laioutr-ui/cms/banner/banner-showcase","3.laioutr-ui/cms/banner/banner-showcase",{"title":727,"path":728,"stem":729},"Media + Text","/laioutr-ui/cms/banner/media-text","3.laioutr-ui/cms/banner/media-text",{"title":731,"path":732,"stem":733},"USP Banner","/laioutr-ui/cms/banner/usp-banner","3.laioutr-ui/cms/banner/usp-banner",{"title":431,"path":735,"stem":736,"children":737,"page":55},"/laioutr-ui/cms/blog","3.laioutr-ui/cms/blog",[738,742],{"title":739,"path":740,"stem":741},"Blog Post Detail","/laioutr-ui/cms/blog/blog-post-detail","3.laioutr-ui/cms/blog/blog-post-detail",{"title":743,"path":744,"stem":745},"Blog Post Listing","/laioutr-ui/cms/blog/blog-post-listing","3.laioutr-ui/cms/blog/blog-post-listing",{"title":747,"path":748,"stem":749},"Brand Hero","/laioutr-ui/cms/brand-hero","3.laioutr-ui/cms/brand-hero",{"title":751,"path":752,"stem":753},"Container","/laioutr-ui/cms/container","3.laioutr-ui/cms/container",{"title":755,"path":756,"stem":757},"Content Grid","/laioutr-ui/cms/content-grid","3.laioutr-ui/cms/content-grid",{"title":759,"path":760,"stem":761},"Editorial Grid","/laioutr-ui/cms/editorial-grid","3.laioutr-ui/cms/editorial-grid",{"title":763,"path":764,"stem":765},"Media Gallery","/laioutr-ui/cms/media-gallery","3.laioutr-ui/cms/media-gallery",{"title":423,"path":767,"stem":768,"children":769,"page":55},"/laioutr-ui/cms/newsletter","3.laioutr-ui/cms/newsletter",[770,774],{"title":771,"path":772,"stem":773},"Email Input Form","/laioutr-ui/cms/newsletter/email-input-form","3.laioutr-ui/cms/newsletter/email-input-form",{"title":775,"path":776,"stem":777},"Newsletter Registration","/laioutr-ui/cms/newsletter/newsletter-registration","3.laioutr-ui/cms/newsletter/newsletter-registration",{"title":779,"path":780,"stem":781,"children":782,"page":55},"Popups","/laioutr-ui/cms/popups","3.laioutr-ui/cms/popups",[783,787,791,795],{"title":784,"path":785,"stem":786},"PopUp","/laioutr-ui/cms/popups/pop-up","3.laioutr-ui/cms/popups/pop-up",{"title":788,"path":789,"stem":790},"PopUp Info","/laioutr-ui/cms/popups/pop-up-info","3.laioutr-ui/cms/popups/pop-up-info",{"title":792,"path":793,"stem":794},"PopUp Newsletter","/laioutr-ui/cms/popups/pop-up-newsletter","3.laioutr-ui/cms/popups/pop-up-newsletter",{"title":796,"path":797,"stem":798},"PopUp Promotion","/laioutr-ui/cms/popups/pop-up-promotion","3.laioutr-ui/cms/popups/pop-up-promotion",{"title":800,"path":801,"stem":802,"children":803,"page":55},"Quotes","/laioutr-ui/cms/quotes","3.laioutr-ui/cms/quotes",[804,808,812,816],{"title":805,"path":806,"stem":807},"Persona Quote","/laioutr-ui/cms/quotes/persona-quote","3.laioutr-ui/cms/quotes/persona-quote",{"title":809,"path":810,"stem":811},"Persona Quote Slider","/laioutr-ui/cms/quotes/persona-quote-slider","3.laioutr-ui/cms/quotes/persona-quote-slider",{"title":813,"path":814,"stem":815},"Quote Card","/laioutr-ui/cms/quotes/quote-card","3.laioutr-ui/cms/quotes/quote-card",{"title":817,"path":818,"stem":819},"Quote Card Slider","/laioutr-ui/cms/quotes/quote-card-slider","3.laioutr-ui/cms/quotes/quote-card-slider",{"title":821,"path":822,"stem":823,"children":824,"page":55},"Reviews","/laioutr-ui/cms/reviews","3.laioutr-ui/cms/reviews",[825,828,832],{"title":358,"path":826,"stem":827},"/laioutr-ui/cms/reviews/review","3.laioutr-ui/cms/reviews/review",{"title":829,"path":830,"stem":831},"Review Form","/laioutr-ui/cms/reviews/review-form","3.laioutr-ui/cms/reviews/review-form",{"title":833,"path":834,"stem":835},"Social Share","/laioutr-ui/cms/reviews/social-share","3.laioutr-ui/cms/reviews/social-share",{"title":837,"path":838,"stem":839,"children":840,"page":55},"Slider","/laioutr-ui/cms/slider","3.laioutr-ui/cms/slider",[841,845,849,853,857,861,865,869,873,877,881],{"title":842,"path":843,"stem":844},"Content Slider","/laioutr-ui/cms/slider/content-slider","3.laioutr-ui/cms/slider/content-slider",{"title":846,"path":847,"stem":848},"Hero Slider","/laioutr-ui/cms/slider/hero-slider","3.laioutr-ui/cms/slider/hero-slider",{"title":850,"path":851,"stem":852},"Logo Grid","/laioutr-ui/cms/slider/logo-grid","3.laioutr-ui/cms/slider/logo-grid",{"title":854,"path":855,"stem":856},"Logo Slider","/laioutr-ui/cms/slider/logo-slider","3.laioutr-ui/cms/slider/logo-slider",{"title":858,"path":859,"stem":860},"Swiper Arrows","/laioutr-ui/cms/slider/swiper-arrows","3.laioutr-ui/cms/slider/swiper-arrows",{"title":862,"path":863,"stem":864},"Swiper Bullets","/laioutr-ui/cms/slider/swiper-bullets","3.laioutr-ui/cms/slider/swiper-bullets",{"title":866,"path":867,"stem":868},"Swiper Chrome","/laioutr-ui/cms/slider/swiper-chrome","3.laioutr-ui/cms/slider/swiper-chrome",{"title":870,"path":871,"stem":872},"Swiper Nav Bar","/laioutr-ui/cms/slider/swiper-nav-bar","3.laioutr-ui/cms/slider/swiper-nav-bar",{"title":874,"path":875,"stem":876},"Swiper Numbers","/laioutr-ui/cms/slider/swiper-numbers","3.laioutr-ui/cms/slider/swiper-numbers",{"title":878,"path":879,"stem":880},"Swiper Scrollbar","/laioutr-ui/cms/slider/swiper-scrollbar","3.laioutr-ui/cms/slider/swiper-scrollbar",{"title":882,"path":883,"stem":884},"Thumbnails Slider","/laioutr-ui/cms/slider/thumbnails-slider","3.laioutr-ui/cms/slider/thumbnails-slider",{"title":338,"path":886,"stem":887,"children":888},"/laioutr-ui/location","3.laioutr-ui/location/0.index",[889,890,894,898],{"title":338,"path":886,"stem":887},{"title":891,"path":892,"stem":893},"Location Card","/laioutr-ui/location/location-card","3.laioutr-ui/location/location-card",{"title":895,"path":896,"stem":897},"Location Detail","/laioutr-ui/location/location-detail","3.laioutr-ui/location/location-detail",{"title":899,"path":900,"stem":901},"Location Finder","/laioutr-ui/location/location-finder","3.laioutr-ui/location/location-finder",{"title":903,"path":904,"stem":905,"children":906},"Marketplace","/laioutr-ui/marketplace","3.laioutr-ui/marketplace/0.index",[907],{"title":903,"path":904,"stem":905},{"title":909,"path":910,"stem":911,"children":912},"Multichannel","/laioutr-ui/multichannel","3.laioutr-ui/multichannel/0.index",[913],{"title":909,"path":910,"stem":911},{"title":915,"path":916,"stem":917,"children":918},"Navigation & Headers","/laioutr-ui/navigation","3.laioutr-ui/navigation/0.index",[919,920,924,928,932,936,940,944,948,952,956,960,964],{"title":915,"path":916,"stem":917},{"title":921,"path":922,"stem":923},"Breadcrumbs","/laioutr-ui/navigation/breadcrumbs","3.laioutr-ui/navigation/breadcrumbs",{"title":925,"path":926,"stem":927},"Footer","/laioutr-ui/navigation/footer","3.laioutr-ui/navigation/footer",{"title":929,"path":930,"stem":931},"Footer Menu","/laioutr-ui/navigation/footer-menu","3.laioutr-ui/navigation/footer-menu",{"title":933,"path":934,"stem":935},"Header Basic","/laioutr-ui/navigation/header-basic","3.laioutr-ui/navigation/header-basic",{"title":937,"path":938,"stem":939},"Header Shop","/laioutr-ui/navigation/header-shop","3.laioutr-ui/navigation/header-shop",{"title":941,"path":942,"stem":943},"Mega Menu","/laioutr-ui/navigation/mega-menu","3.laioutr-ui/navigation/mega-menu",{"title":945,"path":946,"stem":947},"Menu Side by Side","/laioutr-ui/navigation/menu-side-by-side","3.laioutr-ui/navigation/menu-side-by-side",{"title":949,"path":950,"stem":951},"Mobile Menu (Basic)","/laioutr-ui/navigation/mobile-menu-basic","3.laioutr-ui/navigation/mobile-menu-basic",{"title":953,"path":954,"stem":955},"Mobile Menu (Shop)","/laioutr-ui/navigation/mobile-menu-shop","3.laioutr-ui/navigation/mobile-menu-shop",{"title":957,"path":958,"stem":959},"Page Not Found","/laioutr-ui/navigation/page-not-found","3.laioutr-ui/navigation/page-not-found",{"title":961,"path":962,"stem":963},"Search Auto-Suggest","/laioutr-ui/navigation/search-auto-suggest","3.laioutr-ui/navigation/search-auto-suggest",{"title":965,"path":966,"stem":967},"Top Bar","/laioutr-ui/navigation/top-bar","3.laioutr-ui/navigation/top-bar",{"title":969,"path":970,"stem":971,"children":972},"SaaS","/laioutr-ui/saas","3.laioutr-ui/saas/0.index",[973,974,978,982],{"title":969,"path":970,"stem":971},{"title":975,"path":976,"stem":977},"Plan Card","/laioutr-ui/saas/plan-card","3.laioutr-ui/saas/plan-card",{"title":979,"path":980,"stem":981},"Plan Card Slider","/laioutr-ui/saas/plan-card-slider","3.laioutr-ui/saas/plan-card-slider",{"title":983,"path":984,"stem":985},"Plan Comparison Table","/laioutr-ui/saas/plan-comparison-table","3.laioutr-ui/saas/plan-comparison-table",{"title":987,"path":988,"stem":989,"children":990},"Shop","/laioutr-ui/shop","3.laioutr-ui/shop/0.index",[991,992,1020,1024,1028,1032,1036,1092,1096,1100,1104,1108,1112],{"title":987,"path":988,"stem":989},{"title":350,"path":993,"stem":994,"children":995,"page":55},"/laioutr-ui/shop/cart","3.laioutr-ui/shop/cart",[996,1000,1004,1008,1012,1016],{"title":997,"path":998,"stem":999},"Cart Coupon Code Accordion","/laioutr-ui/shop/cart/cart-coupon-code-accordion","3.laioutr-ui/shop/cart/cart-coupon-code-accordion",{"title":1001,"path":1002,"stem":1003},"Cart List Item","/laioutr-ui/shop/cart/cart-list-item","3.laioutr-ui/shop/cart/cart-list-item",{"title":1005,"path":1006,"stem":1007},"Cart Sheet","/laioutr-ui/shop/cart/cart-sheet","3.laioutr-ui/shop/cart/cart-sheet",{"title":1009,"path":1010,"stem":1011},"Cart Summary Box","/laioutr-ui/shop/cart/cart-summary-box","3.laioutr-ui/shop/cart/cart-summary-box",{"title":1013,"path":1014,"stem":1015},"Empty State Cart","/laioutr-ui/shop/cart/empty-state-cart","3.laioutr-ui/shop/cart/empty-state-cart",{"title":1017,"path":1018,"stem":1019},"Free Delivery Progress","/laioutr-ui/shop/cart/free-delivery-progress","3.laioutr-ui/shop/cart/free-delivery-progress",{"title":1021,"path":1022,"stem":1023},"Category Card Grid","/laioutr-ui/shop/category-card-grid","3.laioutr-ui/shop/category-card-grid",{"title":1025,"path":1026,"stem":1027},"Category Card Slider","/laioutr-ui/shop/category-card-slider","3.laioutr-ui/shop/category-card-slider",{"title":1029,"path":1030,"stem":1031},"Filter Bar","/laioutr-ui/shop/filter-bar","3.laioutr-ui/shop/filter-bar",{"title":1033,"path":1034,"stem":1035},"Filter Off Canvas","/laioutr-ui/shop/filter-off-canvas","3.laioutr-ui/shop/filter-off-canvas",{"title":1037,"path":1038,"stem":1039,"children":1040,"page":55},"Product Detail","/laioutr-ui/shop/product-detail","3.laioutr-ui/shop/product-detail",[1041,1045,1049,1053,1057,1061,1064,1068,1072,1076,1080,1084,1088],{"title":1042,"path":1043,"stem":1044},"Add to Cart","/laioutr-ui/shop/product-detail/add-to-cart","3.laioutr-ui/shop/product-detail/add-to-cart",{"title":1046,"path":1047,"stem":1048},"Benefits Box","/laioutr-ui/shop/product-detail/benefits-box","3.laioutr-ui/shop/product-detail/benefits-box",{"title":1050,"path":1051,"stem":1052},"Coupon Box","/laioutr-ui/shop/product-detail/coupon-box","3.laioutr-ui/shop/product-detail/coupon-box",{"title":1054,"path":1055,"stem":1056},"Energy Label","/laioutr-ui/shop/product-detail/energy-label","3.laioutr-ui/shop/product-detail/energy-label",{"title":1058,"path":1059,"stem":1060},"Price Info","/laioutr-ui/shop/product-detail/price-info","3.laioutr-ui/shop/product-detail/price-info",{"title":1037,"path":1062,"stem":1063},"/laioutr-ui/shop/product-detail/product-detail","3.laioutr-ui/shop/product-detail/product-detail",{"title":1065,"path":1066,"stem":1067},"Product Image Gallery","/laioutr-ui/shop/product-detail/product-image-gallery","3.laioutr-ui/shop/product-detail/product-image-gallery",{"title":1069,"path":1070,"stem":1071},"Product Title","/laioutr-ui/shop/product-detail/product-title","3.laioutr-ui/shop/product-detail/product-title",{"title":1073,"path":1074,"stem":1075},"Quantity Discount","/laioutr-ui/shop/product-detail/quantity-discount","3.laioutr-ui/shop/product-detail/quantity-discount",{"title":1077,"path":1078,"stem":1079},"Variant Off Canvas","/laioutr-ui/shop/product-detail/variant-off-canvas","3.laioutr-ui/shop/product-detail/variant-off-canvas",{"title":1081,"path":1082,"stem":1083},"Variant Selector Configurator","/laioutr-ui/shop/product-detail/variant-selector-configurator","3.laioutr-ui/shop/product-detail/variant-selector-configurator",{"title":1085,"path":1086,"stem":1087},"Variant Selector (Multiple)","/laioutr-ui/shop/product-detail/variant-selector-multiple","3.laioutr-ui/shop/product-detail/variant-selector-multiple",{"title":1089,"path":1090,"stem":1091},"Variant Selector Options","/laioutr-ui/shop/product-detail/variant-selector-options","3.laioutr-ui/shop/product-detail/variant-selector-options",{"title":1093,"path":1094,"stem":1095},"Product Listing Grid","/laioutr-ui/shop/product-listing-grid","3.laioutr-ui/shop/product-listing-grid",{"title":1097,"path":1098,"stem":1099},"Product Slider","/laioutr-ui/shop/product-slider","3.laioutr-ui/shop/product-slider",{"title":1101,"path":1102,"stem":1103},"Product Slider Showcase","/laioutr-ui/shop/product-slider-showcase","3.laioutr-ui/shop/product-slider-showcase",{"title":1105,"path":1106,"stem":1107},"Product Tile (Basic)","/laioutr-ui/shop/product-tile-basic","3.laioutr-ui/shop/product-tile-basic",{"title":1109,"path":1110,"stem":1111},"Search Result Hero","/laioutr-ui/shop/search-result-hero","3.laioutr-ui/shop/search-result-hero",{"title":1113,"path":1114,"stem":1115},"Sort Modes","/laioutr-ui/shop/sort-modes","3.laioutr-ui/shop/sort-modes",{"title":1117,"path":1118,"stem":1119,"children":1120},"UI Kit","/laioutr-ui/ui-kit","3.laioutr-ui/ui-kit/0.index",[1121,1122,1282,1306,1327,1344,1381,1490,1519],{"title":1117,"path":1118,"stem":1119},{"title":1123,"path":1124,"stem":1125,"children":1126,"page":55},"General","/laioutr-ui/ui-kit/general","3.laioutr-ui/ui-kit/01.general",[1127,1131,1135,1139,1143,1147,1151,1155,1159,1163,1167,1170,1174,1178,1182,1186,1190,1194,1198,1202,1206,1210,1214,1218,1222,1226,1230,1234,1238,1242,1246,1250,1254,1258,1262,1266,1270,1274,1278],{"title":1128,"path":1129,"stem":1130},"Accordion","/laioutr-ui/ui-kit/general/accordion","3.laioutr-ui/ui-kit/01.general/Accordion",{"title":1132,"path":1133,"stem":1134},"Avatar","/laioutr-ui/ui-kit/general/avatar","3.laioutr-ui/ui-kit/01.general/Avatar",{"title":1136,"path":1137,"stem":1138},"Backdrop","/laioutr-ui/ui-kit/general/backdrop","3.laioutr-ui/ui-kit/01.general/Backdrop",{"title":1140,"path":1141,"stem":1142},"Dropdown Menu","/laioutr-ui/ui-kit/general/dropdownmenu","3.laioutr-ui/ui-kit/01.general/DropdownMenu",{"title":1144,"path":1145,"stem":1146},"Edge Glow","/laioutr-ui/ui-kit/general/edgeglow","3.laioutr-ui/ui-kit/01.general/EdgeGlow",{"title":1148,"path":1149,"stem":1150},"Empty State","/laioutr-ui/ui-kit/general/emptystate","3.laioutr-ui/ui-kit/01.general/EmptyState",{"title":1152,"path":1153,"stem":1154},"Icon","/laioutr-ui/ui-kit/general/icon","3.laioutr-ui/ui-kit/01.general/Icon",{"title":1156,"path":1157,"stem":1158},"Image Contrast Overlay","/laioutr-ui/ui-kit/general/imagecontrastoverlay","3.laioutr-ui/ui-kit/01.general/ImageContrastOverlay",{"title":1160,"path":1161,"stem":1162},"Lightbox","/laioutr-ui/ui-kit/general/lightbox","3.laioutr-ui/ui-kit/01.general/Lightbox",{"title":1164,"path":1165,"stem":1166},"Loading Spinner","/laioutr-ui/ui-kit/general/loadingspinner","3.laioutr-ui/ui-kit/01.general/LoadingSpinner",{"title":387,"path":1168,"stem":1169},"/laioutr-ui/ui-kit/general/media","3.laioutr-ui/ui-kit/01.general/Media",{"title":1171,"path":1172,"stem":1173},"Navigation Bullets","/laioutr-ui/ui-kit/general/navigationbullets","3.laioutr-ui/ui-kit/01.general/NavigationBullets",{"title":1175,"path":1176,"stem":1177},"Placeholder","/laioutr-ui/ui-kit/general/placeholder","3.laioutr-ui/ui-kit/01.general/Placeholder",{"title":1179,"path":1180,"stem":1181},"Progress Bar","/laioutr-ui/ui-kit/general/progressbar","3.laioutr-ui/ui-kit/01.general/ProgressBar",{"title":1183,"path":1184,"stem":1185},"Scrollbar","/laioutr-ui/ui-kit/general/scrollbar","3.laioutr-ui/ui-kit/01.general/Scrollbar",{"title":1187,"path":1188,"stem":1189},"Swatch","/laioutr-ui/ui-kit/general/swatch","3.laioutr-ui/ui-kit/01.general/Swatch",{"title":1191,"path":1192,"stem":1193},"SwiperScrollbar","/laioutr-ui/ui-kit/general/swiperscrollbar","3.laioutr-ui/ui-kit/01.general/SwiperScrollbar",{"title":1195,"path":1196,"stem":1197},"Thumbnail","/laioutr-ui/ui-kit/general/thumbnail","3.laioutr-ui/ui-kit/01.general/Thumbnail",{"title":1199,"path":1200,"stem":1201},"Tooltip","/laioutr-ui/ui-kit/general/tooltip","3.laioutr-ui/ui-kit/01.general/Tooltip",{"title":1203,"path":1204,"stem":1205},"Amount Pill","/laioutr-ui/ui-kit/general/amount-pill","3.laioutr-ui/ui-kit/01.general/amount-pill",{"title":1207,"path":1208,"stem":1209},"Dark Mode Switch","/laioutr-ui/ui-kit/general/dark-mode-switch","3.laioutr-ui/ui-kit/01.general/dark-mode-switch",{"title":1211,"path":1212,"stem":1213},"Language Switcher","/laioutr-ui/ui-kit/general/language-switcher","3.laioutr-ui/ui-kit/01.general/language-switcher",{"title":1215,"path":1216,"stem":1217},"Media Preview","/laioutr-ui/ui-kit/general/media-preview","3.laioutr-ui/ui-kit/01.general/media-preview",{"title":1219,"path":1220,"stem":1221},"Media Stage","/laioutr-ui/ui-kit/general/media-stage","3.laioutr-ui/ui-kit/01.general/media-stage",{"title":1223,"path":1224,"stem":1225},"Nav Link Item","/laioutr-ui/ui-kit/general/nav-link-item","3.laioutr-ui/ui-kit/01.general/nav-link-item",{"title":1227,"path":1228,"stem":1229},"Nav Section Heading","/laioutr-ui/ui-kit/general/nav-section-heading","3.laioutr-ui/ui-kit/01.general/nav-section-heading",{"title":1231,"path":1232,"stem":1233},"OnSurface","/laioutr-ui/ui-kit/general/on-surface","3.laioutr-ui/ui-kit/01.general/on-surface",{"title":1235,"path":1236,"stem":1237},"Opening Hours Weekly Table","/laioutr-ui/ui-kit/general/opening-hours-weekly-table","3.laioutr-ui/ui-kit/01.general/opening-hours-weekly-table",{"title":1239,"path":1240,"stem":1241},"Opening Status","/laioutr-ui/ui-kit/general/opening-status","3.laioutr-ui/ui-kit/01.general/opening-status",{"title":1243,"path":1244,"stem":1245},"Opening Status Detail","/laioutr-ui/ui-kit/general/opening-status-detail","3.laioutr-ui/ui-kit/01.general/opening-status-detail",{"title":1247,"path":1248,"stem":1249},"Opening Status Indicator","/laioutr-ui/ui-kit/general/opening-status-indicator","3.laioutr-ui/ui-kit/01.general/opening-status-indicator",{"title":1251,"path":1252,"stem":1253},"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":1255,"path":1256,"stem":1257},"Status Message","/laioutr-ui/ui-kit/general/status-message","3.laioutr-ui/ui-kit/01.general/status-message",{"title":1259,"path":1260,"stem":1261},"Stock Info Summary","/laioutr-ui/ui-kit/general/stock-info-summary","3.laioutr-ui/ui-kit/01.general/stock-info-summary",{"title":1263,"path":1264,"stem":1265},"Swatch Chip","/laioutr-ui/ui-kit/general/swatch-chip","3.laioutr-ui/ui-kit/01.general/swatch-chip",{"title":1267,"path":1268,"stem":1269},"Swatch Option","/laioutr-ui/ui-kit/general/swatch-option","3.laioutr-ui/ui-kit/01.general/swatch-option",{"title":1271,"path":1272,"stem":1273},"Swatch Summary","/laioutr-ui/ui-kit/general/swatch-summary","3.laioutr-ui/ui-kit/01.general/swatch-summary",{"title":1275,"path":1276,"stem":1277},"Zoom Level (Segmented)","/laioutr-ui/ui-kit/general/zoom-level-segmented","3.laioutr-ui/ui-kit/01.general/zoom-level-segmented",{"title":1279,"path":1280,"stem":1281},"Zoom Level (Stepper)","/laioutr-ui/ui-kit/general/zoom-level-stepper","3.laioutr-ui/ui-kit/01.general/zoom-level-stepper",{"title":1283,"path":1284,"stem":1285,"children":1286,"page":55},"Typography","/laioutr-ui/ui-kit/typography","3.laioutr-ui/ui-kit/02.typography",[1287,1291,1294,1298,1302],{"title":1288,"path":1289,"stem":1290},"Icon List","/laioutr-ui/ui-kit/typography/iconlist","3.laioutr-ui/ui-kit/02.typography/IconList",{"title":383,"path":1292,"stem":1293},"/laioutr-ui/ui-kit/typography/link","3.laioutr-ui/ui-kit/02.typography/Link",{"title":1295,"path":1296,"stem":1297},"Rich Content","/laioutr-ui/ui-kit/typography/richcontent","3.laioutr-ui/ui-kit/02.typography/RichContent",{"title":1299,"path":1300,"stem":1301},"Text","/laioutr-ui/ui-kit/typography/text","3.laioutr-ui/ui-kit/02.typography/Text",{"title":1303,"path":1304,"stem":1305},"Text Group","/laioutr-ui/ui-kit/typography/text-group","3.laioutr-ui/ui-kit/02.typography/text-group",{"title":1307,"path":1308,"stem":1309,"children":1310,"page":55},"Layout","/laioutr-ui/ui-kit/layout","3.laioutr-ui/ui-kit/03.layout",[1311,1315,1319,1323],{"title":1312,"path":1313,"stem":1314},"Grid Fill","/laioutr-ui/ui-kit/layout/gridfill","3.laioutr-ui/ui-kit/03.layout/GridFill",{"title":1316,"path":1317,"stem":1318},"Grid Masonry","/laioutr-ui/ui-kit/layout/gridmasonry","3.laioutr-ui/ui-kit/03.layout/GridMasonry",{"title":1320,"path":1321,"stem":1322},"Scroll Area","/laioutr-ui/ui-kit/layout/scrollarea","3.laioutr-ui/ui-kit/03.layout/ScrollArea",{"title":1324,"path":1325,"stem":1326},"Separator","/laioutr-ui/ui-kit/layout/separator","3.laioutr-ui/ui-kit/03.layout/Separator",{"title":1328,"path":1329,"stem":1330,"children":1331,"page":55},"Content","/laioutr-ui/ui-kit/content","3.laioutr-ui/ui-kit/04.content",[1332,1336,1340],{"title":1333,"path":1334,"stem":1335},"Card","/laioutr-ui/ui-kit/content/card","3.laioutr-ui/ui-kit/04.content/Card",{"title":1337,"path":1338,"stem":1339},"Description List","/laioutr-ui/ui-kit/content/description-list","3.laioutr-ui/ui-kit/04.content/description-list",{"title":1341,"path":1342,"stem":1343},"Link Tile","/laioutr-ui/ui-kit/content/link-tile","3.laioutr-ui/ui-kit/04.content/link-tile",{"title":1345,"path":1346,"stem":1347,"children":1348,"page":55},"Surfaces","/laioutr-ui/ui-kit/surfaces","3.laioutr-ui/ui-kit/05.surfaces",[1349,1353,1357,1361,1365,1369,1373,1377],{"title":1350,"path":1351,"stem":1352},"Alert Dialog","/laioutr-ui/ui-kit/surfaces/alertdialog","3.laioutr-ui/ui-kit/05.surfaces/AlertDialog",{"title":1354,"path":1355,"stem":1356},"Popover","/laioutr-ui/ui-kit/surfaces/popover","3.laioutr-ui/ui-kit/05.surfaces/Popover",{"title":1358,"path":1359,"stem":1360},"Sheet","/laioutr-ui/ui-kit/surfaces/sheet","3.laioutr-ui/ui-kit/05.surfaces/Sheet",{"title":1362,"path":1363,"stem":1364},"Tabs","/laioutr-ui/ui-kit/surfaces/tabs","3.laioutr-ui/ui-kit/05.surfaces/Tabs",{"title":1366,"path":1367,"stem":1368},"Toast","/laioutr-ui/ui-kit/surfaces/toast","3.laioutr-ui/ui-kit/05.surfaces/Toast",{"title":1370,"path":1371,"stem":1372},"Toaster","/laioutr-ui/ui-kit/surfaces/toaster","3.laioutr-ui/ui-kit/05.surfaces/Toaster",{"title":1374,"path":1375,"stem":1376},"Context Menu","/laioutr-ui/ui-kit/surfaces/context-menu","3.laioutr-ui/ui-kit/05.surfaces/context-menu",{"title":1378,"path":1379,"stem":1380},"Navigation Menu","/laioutr-ui/ui-kit/surfaces/navigation-menu","3.laioutr-ui/ui-kit/05.surfaces/navigation-menu",{"title":1382,"path":1383,"stem":1384,"children":1385,"page":55},"Form","/laioutr-ui/ui-kit/form","3.laioutr-ui/ui-kit/06.form",[1386,1390,1394,1398,1402,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1454,1458,1462,1466,1470,1474,1478,1482,1486],{"title":1387,"path":1388,"stem":1389},"Button","/laioutr-ui/ui-kit/form/button","3.laioutr-ui/ui-kit/06.form/Button",{"title":1391,"path":1392,"stem":1393},"Checkbox","/laioutr-ui/ui-kit/form/checkbox","3.laioutr-ui/ui-kit/06.form/Checkbox",{"title":1395,"path":1396,"stem":1397},"Field","/laioutr-ui/ui-kit/form/field","3.laioutr-ui/ui-kit/06.form/Field",{"title":1399,"path":1400,"stem":1401},"Input","/laioutr-ui/ui-kit/form/input","3.laioutr-ui/ui-kit/06.form/Input",{"title":1403,"path":1404,"stem":1405},"Label","/laioutr-ui/ui-kit/form/label","3.laioutr-ui/ui-kit/06.form/Label",{"title":1407,"path":1408,"stem":1409},"Load More","/laioutr-ui/ui-kit/form/loadmore","3.laioutr-ui/ui-kit/06.form/LoadMore",{"title":1411,"path":1412,"stem":1413},"Pagination","/laioutr-ui/ui-kit/form/pagination","3.laioutr-ui/ui-kit/06.form/Pagination",{"title":1415,"path":1416,"stem":1417},"Quantity Picker","/laioutr-ui/ui-kit/form/quantitypicker","3.laioutr-ui/ui-kit/06.form/QuantityPicker",{"title":1419,"path":1420,"stem":1421},"Select","/laioutr-ui/ui-kit/form/select","3.laioutr-ui/ui-kit/06.form/Select",{"title":1423,"path":1424,"stem":1425},"Switch","/laioutr-ui/ui-kit/form/switch","3.laioutr-ui/ui-kit/06.form/Switch",{"title":1427,"path":1428,"stem":1429},"Highlight Toggle","/laioutr-ui/ui-kit/form/highlight-toggle","3.laioutr-ui/ui-kit/06.form/highlight-toggle",{"title":1431,"path":1432,"stem":1433},"Icon Button","/laioutr-ui/ui-kit/form/icon-button","3.laioutr-ui/ui-kit/06.form/icon-button",{"title":1435,"path":1436,"stem":1437},"Input Autocomplete","/laioutr-ui/ui-kit/form/input-autocomplete","3.laioutr-ui/ui-kit/06.form/input-autocomplete",{"title":1439,"path":1440,"stem":1441},"Input Checkbox","/laioutr-ui/ui-kit/form/input-checkbox","3.laioutr-ui/ui-kit/06.form/input-checkbox",{"title":1443,"path":1444,"stem":1445},"Input Combobox","/laioutr-ui/ui-kit/form/input-combobox","3.laioutr-ui/ui-kit/06.form/input-combobox",{"title":1447,"path":1448,"stem":1449},"Input Group","/laioutr-ui/ui-kit/form/input-group","3.laioutr-ui/ui-kit/06.form/input-group",{"title":1451,"path":1452,"stem":1453},"Input Password","/laioutr-ui/ui-kit/form/input-password","3.laioutr-ui/ui-kit/06.form/input-password",{"title":1455,"path":1456,"stem":1457},"Input Pin","/laioutr-ui/ui-kit/form/input-pin","3.laioutr-ui/ui-kit/06.form/input-pin",{"title":1459,"path":1460,"stem":1461},"Input Radio","/laioutr-ui/ui-kit/form/input-radio","3.laioutr-ui/ui-kit/06.form/input-radio",{"title":1463,"path":1464,"stem":1465},"Input Rating","/laioutr-ui/ui-kit/form/input-rating","3.laioutr-ui/ui-kit/06.form/input-rating",{"title":1467,"path":1468,"stem":1469},"Input Search","/laioutr-ui/ui-kit/form/input-search","3.laioutr-ui/ui-kit/06.form/input-search",{"title":1471,"path":1472,"stem":1473},"Input Slider","/laioutr-ui/ui-kit/form/input-slider","3.laioutr-ui/ui-kit/06.form/input-slider",{"title":1475,"path":1476,"stem":1477},"Listbox","/laioutr-ui/ui-kit/form/listbox","3.laioutr-ui/ui-kit/06.form/listbox",{"title":1479,"path":1480,"stem":1481},"Option Tile (Image)","/laioutr-ui/ui-kit/form/option-tile-image","3.laioutr-ui/ui-kit/06.form/option-tile-image",{"title":1483,"path":1484,"stem":1485},"Option Tile (Text)","/laioutr-ui/ui-kit/form/option-tile-text","3.laioutr-ui/ui-kit/06.form/option-tile-text",{"title":1487,"path":1488,"stem":1489},"Variant Selection Card","/laioutr-ui/ui-kit/form/variant-selection-card","3.laioutr-ui/ui-kit/06.form/variant-selection-card",{"title":1491,"path":1492,"stem":1493,"children":1494,"page":55},"Indicators","/laioutr-ui/ui-kit/indicators","3.laioutr-ui/ui-kit/07.indicators",[1495,1499,1503,1507,1511,1515],{"title":1496,"path":1497,"stem":1498},"Badge","/laioutr-ui/ui-kit/indicators/badge","3.laioutr-ui/ui-kit/07.indicators/Badge",{"title":1500,"path":1501,"stem":1502},"Caption Flag","/laioutr-ui/ui-kit/indicators/captionflag","3.laioutr-ui/ui-kit/07.indicators/CaptionFlag",{"title":1504,"path":1505,"stem":1506},"Product Tile Flag","/laioutr-ui/ui-kit/indicators/producttileflag","3.laioutr-ui/ui-kit/07.indicators/ProductTileFlag",{"title":1508,"path":1509,"stem":1510},"Rating Summary","/laioutr-ui/ui-kit/indicators/ratingsummary","3.laioutr-ui/ui-kit/07.indicators/RatingSummary",{"title":1512,"path":1513,"stem":1514},"Stars Rating","/laioutr-ui/ui-kit/indicators/starsrating","3.laioutr-ui/ui-kit/07.indicators/StarsRating",{"title":1516,"path":1517,"stem":1518},"Badge Promotion","/laioutr-ui/ui-kit/indicators/badge-promotion","3.laioutr-ui/ui-kit/07.indicators/badge-promotion",{"title":1520,"path":1521,"stem":1522,"children":1523,"page":55},"Utility Components","/laioutr-ui/ui-kit/utility-components","3.laioutr-ui/ui-kit/08.utility-components",[1524,1528],{"title":1525,"path":1526,"stem":1527},"Highlighted Text","/laioutr-ui/ui-kit/utility-components/highlighted-text","3.laioutr-ui/ui-kit/08.utility-components/highlighted-text",{"title":1529,"path":1530,"stem":1531},"Sizer","/laioutr-ui/ui-kit/utility-components/sizer","3.laioutr-ui/ui-kit/08.utility-components/sizer",{"title":1533,"path":1534,"stem":1535,"children":1536},"Hosting","/hosting","4.hosting/0.index",[1537,1538,1544,1574,1592],{"title":1533,"path":1534,"stem":1535},{"title":1539,"path":1540,"stem":1541,"children":1542},"Laioutr Cloud","/hosting/laioutr-cloud","4.hosting/0.laioutr-cloud/0.index",[1543],{"title":1539,"path":1540,"stem":1541},{"title":1545,"path":1546,"stem":1547,"children":1548},"Hyperscaler","/hosting/hyperscaler","4.hosting/1.hyperscaler/0.index",[1549,1550,1554,1558,1562,1566,1570],{"title":1545,"path":1546,"stem":1547},{"title":1551,"path":1552,"stem":1553},"Akamai Adapter","/hosting/hyperscaler/akamai-adapter","4.hosting/1.hyperscaler/akamai-adapter",{"title":1555,"path":1556,"stem":1557},"AWS Adapter","/hosting/hyperscaler/aws-adapter","4.hosting/1.hyperscaler/aws-adapter",{"title":1559,"path":1560,"stem":1561},"Azure Adapter","/hosting/hyperscaler/azure-adapter","4.hosting/1.hyperscaler/azure-adapter",{"title":1563,"path":1564,"stem":1565},"Google Adapter","/hosting/hyperscaler/google-adapter","4.hosting/1.hyperscaler/google-adapter",{"title":1567,"path":1568,"stem":1569},"Netlify Adapter","/hosting/hyperscaler/netlify-adapter","4.hosting/1.hyperscaler/netlify-adapter",{"title":1571,"path":1572,"stem":1573},"Vercel Adapter","/hosting/hyperscaler/vercel-adapter","4.hosting/1.hyperscaler/vercel-adapter",{"title":1575,"path":1576,"stem":1577,"children":1578},"Native Hosting","/hosting/native-hosting-providers","4.hosting/2.native-hosting-providers/0.index",[1579,1580,1584,1588],{"title":1575,"path":1576,"stem":1577},{"title":1581,"path":1582,"stem":1583},"maxcluster","/hosting/native-hosting-providers/maxcluster","4.hosting/2.native-hosting-providers/maxcluster",{"title":1585,"path":1586,"stem":1587},"profihost","/hosting/native-hosting-providers/profihost","4.hosting/2.native-hosting-providers/profihost",{"title":1589,"path":1590,"stem":1591},"ScaleCommerce","/hosting/native-hosting-providers/scale-commerce","4.hosting/2.native-hosting-providers/scale-commerce",{"title":1593,"path":1594,"stem":1595,"children":1596},"Bring Your Own Server (BYOS)","/hosting/bring-your-own-server-byos","4.hosting/3.bring-your-own-server-byos/0.index",[1597,1598,1602,1606,1610,1614,1618],{"title":1593,"path":1594,"stem":1595},{"title":1599,"path":1600,"stem":1601},"BYOS Agent","/hosting/bring-your-own-server-byos/byos-agent","4.hosting/3.bring-your-own-server-byos/byos-agent",{"title":1603,"path":1604,"stem":1605},"Changelog","/hosting/bring-your-own-server-byos/changelog","4.hosting/3.bring-your-own-server-byos/changelog",{"title":1607,"path":1608,"stem":1609},"DevOps Components","/hosting/bring-your-own-server-byos/devops","4.hosting/3.bring-your-own-server-byos/devops",{"title":1611,"path":1612,"stem":1613},"Infrastructure Requirements","/hosting/bring-your-own-server-byos/infrastructure","4.hosting/3.bring-your-own-server-byos/infrastructure",{"title":1615,"path":1616,"stem":1617},"Software Requirements","/hosting/bring-your-own-server-byos/software","4.hosting/3.bring-your-own-server-byos/software",{"title":1619,"path":1620,"stem":1621},"Webhook Configuration","/hosting/bring-your-own-server-byos/webhook-config","4.hosting/3.bring-your-own-server-byos/webhook-config",{"title":1623,"path":1624,"stem":1625,"children":1626},"Checkout","/checkout","5.Checkout/0.index",[1627],{"title":1623,"path":1624,"stem":1625},{"title":1629,"path":1630,"stem":1631,"children":1632},"Larry AI","/larry-ai","6.Larry-AI/0.index",[1633],{"title":1629,"path":1630,"stem":1631},{"title":671,"path":1635,"stem":1636,"children":1637},"/figma-kit","7.Figma Kit/0.index",[1638,1639,1655],{"title":671,"path":1635,"stem":1636},{"title":121,"path":1640,"stem":1641,"children":1642,"page":55},"/figma-kit/introduction","7.Figma Kit/1.Introduction",[1643,1647,1651],{"title":1644,"path":1645,"stem":1646},"How to Start","/figma-kit/introduction/howtostart","7.Figma Kit/1.Introduction/0.howtostart",{"title":1648,"path":1649,"stem":1650},"Figma Variables","/figma-kit/introduction/figma-variables","7.Figma Kit/1.Introduction/figma-variables",{"title":1652,"path":1653,"stem":1654},"Library Connections","/figma-kit/introduction/library-connections","7.Figma Kit/1.Introduction/library-connections",{"title":1656,"path":1657,"stem":1658,"children":1659,"page":55},"Kits","/figma-kit/kits","7.Figma Kit/Kits",[1660,1663,1666,1669,1673,1676,1680,1684,1687,1690],{"title":686,"path":1661,"stem":1662},"/figma-kit/kits/b2b","7.Figma Kit/Kits/b2b",{"title":692,"path":1664,"stem":1665},"/figma-kit/kits/booking","7.Figma Kit/Kits/booking",{"title":698,"path":1667,"stem":1668},"/figma-kit/kits/cms","7.Figma Kit/Kits/cms",{"title":1670,"path":1671,"stem":1672},"Inpage Navigation","/figma-kit/kits/inpage-navigation","7.Figma Kit/Kits/inpage-navigation",{"title":903,"path":1674,"stem":1675},"/figma-kit/kits/marketplace","7.Figma Kit/Kits/marketplace",{"title":1677,"path":1678,"stem":1679},"Retail & Multichannel","/figma-kit/kits/multichannel","7.Figma Kit/Kits/multichannel",{"title":1681,"path":1682,"stem":1683},"Navigation","/figma-kit/kits/navigation","7.Figma Kit/Kits/navigation",{"title":969,"path":1685,"stem":1686},"/figma-kit/kits/saas","7.Figma Kit/Kits/saas",{"title":987,"path":1688,"stem":1689},"/figma-kit/kits/shop","7.Figma Kit/Kits/shop",{"title":1117,"path":1691,"stem":1692},"/figma-kit/kits/ui-kit","7.Figma Kit/Kits/ui-kit",{"title":1694,"path":1695,"stem":1696,"children":1697},"Cockpit","/cockpit","8.Cockpit/0.index",[1698,1699,1729,1746,1763],{"title":1694,"path":1695,"stem":1696},{"title":154,"path":1700,"stem":1701,"children":1702,"page":55},"/cockpit/features","8.Cockpit/1.Features",[1703,1706,1710,1714,1718,1721,1725],{"title":464,"path":1704,"stem":1705},"/cockpit/features/apps","8.Cockpit/1.Features/apps",{"title":1707,"path":1708,"stem":1709},"Content (Collections)","/cockpit/features/content-collections","8.Cockpit/1.Features/content-collections",{"title":1711,"path":1712,"stem":1713},"Deployments","/cockpit/features/deployments","8.Cockpit/1.Features/deployments",{"title":1715,"path":1716,"stem":1717},"Markets","/cockpit/features/markets","8.Cockpit/1.Features/markets",{"title":196,"path":1719,"stem":1720},"/cockpit/features/redirects","8.Cockpit/1.Features/redirects",{"title":1722,"path":1723,"stem":1724},"Studio","/cockpit/features/studio","8.Cockpit/1.Features/studio",{"title":1726,"path":1727,"stem":1728},"Translations","/cockpit/features/translations","8.Cockpit/1.Features/translations",{"title":1730,"path":1731,"stem":1732,"children":1733,"page":55},"Project Settings","/cockpit/project-settings","8.Cockpit/2.Project-Settings",[1734,1738,1742],{"title":1735,"path":1736,"stem":1737},"Delete a project","/cockpit/project-settings/delete-project","8.Cockpit/2.Project-Settings/delete-project",{"title":1739,"path":1740,"stem":1741},"NPM","/cockpit/project-settings/npm","8.Cockpit/2.Project-Settings/npm",{"title":1743,"path":1744,"stem":1745},"Project secret key","/cockpit/project-settings/project-secret-key","8.Cockpit/2.Project-Settings/project-secret-key",{"title":1747,"path":1748,"stem":1749,"children":1750,"page":55},"Account Settings","/cockpit/account-settings","8.Cockpit/3.Account-Settings",[1751,1755,1759],{"title":1752,"path":1753,"stem":1754},"Notifications","/cockpit/account-settings/notifications","8.Cockpit/3.Account-Settings/notifications",{"title":1756,"path":1757,"stem":1758},"Preferences","/cockpit/account-settings/preferences","8.Cockpit/3.Account-Settings/preferences",{"title":1760,"path":1761,"stem":1762},"Security","/cockpit/account-settings/security","8.Cockpit/3.Account-Settings/security",{"title":1764,"path":1765,"stem":1766,"children":1767,"page":55},"Organisation Settings","/cockpit/organisation-settings","8.Cockpit/4.Organisation-Settings",[1768,1772,1776,1780,1784,1788],{"title":1769,"path":1770,"stem":1771},"API keys","/cockpit/organisation-settings/api-keys","8.Cockpit/4.Organisation-Settings/api-keys",{"title":1773,"path":1774,"stem":1775},"Billing","/cockpit/organisation-settings/billing","8.Cockpit/4.Organisation-Settings/billing",{"title":1777,"path":1778,"stem":1779},"General settings","/cockpit/organisation-settings/general-settings","8.Cockpit/4.Organisation-Settings/general-settings",{"title":1781,"path":1782,"stem":1783},"Members","/cockpit/organisation-settings/members","8.Cockpit/4.Organisation-Settings/members",{"title":1785,"path":1786,"stem":1787},"Projects","/cockpit/organisation-settings/projects","8.Cockpit/4.Organisation-Settings/projects",{"title":1789,"path":1790,"stem":1791},"Roles","/cockpit/organisation-settings/roles","8.Cockpit/4.Organisation-Settings/roles",{"title":1793,"path":1794,"stem":1795,"children":1796},"Offering","/offering","9.Offering/0.index",[1797,1798,1830,1843,1856,1890,1899],{"title":1793,"path":1794,"stem":1795},{"title":1799,"path":1800,"stem":1801,"children":1802},"Products","/offering/products","9.Offering/1.Products/0.index",[1803,1804,1809,1814,1819,1825],{"title":1799,"path":1800,"stem":1801},{"title":137,"path":1805,"stem":1806,"children":1807},"/offering/products/frontend","9.Offering/1.Products/1.Frontend/0.index",[1808],{"title":137,"path":1805,"stem":1806},{"title":1694,"path":1810,"stem":1811,"children":1812},"/offering/products/cockpit","9.Offering/1.Products/2.Cockpit/0.index",[1813],{"title":1694,"path":1810,"stem":1811},{"title":1623,"path":1815,"stem":1816,"children":1817},"/offering/products/checkout","9.Offering/1.Products/3.Checkout/0.index",[1818],{"title":1623,"path":1815,"stem":1816},{"title":1820,"path":1821,"stem":1822,"children":1823},"Cloud","/offering/products/cloud","9.Offering/1.Products/4.cloud/0.index",[1824],{"title":1820,"path":1821,"stem":1822},{"title":1629,"path":1826,"stem":1827,"children":1828},"/offering/products/larry-ai","9.Offering/1.Products/5.larry-ai/0.index",[1829],{"title":1629,"path":1826,"stem":1827},{"title":1831,"path":1832,"stem":1833,"children":1834,"page":55},"Service Level Agreement","/offering/service-level-agreement","9.Offering/2.service-level-agreement",[1835,1839],{"title":1836,"path":1837,"stem":1838},"Standard Service Level Agreement Composable Frontend","/offering/service-level-agreement/standard-service-level-agreement","9.Offering/2.service-level-agreement/1.standard-service-level-agreement",{"title":1840,"path":1841,"stem":1842},"Backups","/offering/service-level-agreement/backups","9.Offering/2.service-level-agreement/backups",{"title":1844,"path":1845,"stem":1846,"children":1847,"page":55},"Customer Support","/offering/customer-support","9.Offering/3.customer-support",[1848,1852],{"title":1849,"path":1850,"stem":1851},"Standard Customer Support","/offering/customer-support/standard-customer-support","9.Offering/3.customer-support/1.standard-customer-support",{"title":1853,"path":1854,"stem":1855},"Customer Support Severity Levels of Laioutr products","/offering/customer-support/maximum-serverity-levels","9.Offering/3.customer-support/maximum-serverity-levels",{"title":1857,"path":1858,"stem":1859,"children":1860},"Trust Center","/offering/trust-center","9.Offering/4.trust-center/0.index",[1861,1862,1866,1870,1874,1878,1882,1886],{"title":1857,"path":1858,"stem":1859},{"title":1863,"path":1864,"stem":1865},"Data Protection (GDPR)","/offering/trust-center/data-protection","9.Offering/4.trust-center/1.data-protection",{"title":1867,"path":1868,"stem":1869},"Subprocessors","/offering/trust-center/subprocessors","9.Offering/4.trust-center/2.subprocessors",{"title":1871,"path":1872,"stem":1873},"Infrastructure & Hosting","/offering/trust-center/infrastructure","9.Offering/4.trust-center/3.infrastructure",{"title":1875,"path":1876,"stem":1877},"Security Measures","/offering/trust-center/security-measures","9.Offering/4.trust-center/4.security-measures",{"title":1879,"path":1880,"stem":1881},"Incident Response","/offering/trust-center/incident-response","9.Offering/4.trust-center/5.incident-response",{"title":1883,"path":1884,"stem":1885},"Compliance & Certifications","/offering/trust-center/compliance","9.Offering/4.trust-center/6.compliance",{"title":1887,"path":1888,"stem":1889},"FAQ","/offering/trust-center/faq","9.Offering/4.trust-center/7.faq",{"title":1891,"path":1892,"stem":1893,"children":1894,"page":55},"Policies","/offering/policies","9.Offering/5.policies",[1895],{"title":1896,"path":1897,"stem":1898},"Fair usage policy","/offering/policies/fair-usage-policy","9.Offering/5.policies/fair-usage-policy",{"title":1900,"path":1901,"stem":1902,"children":1903},"Academy","/offering/academy","9.Offering/6.academy/0.index",[1904],{"title":1900,"path":1901,"stem":1902},{"id":1906,"title":286,"aliases":1907,"body":1908,"changelogKeys":1907,"description":7245,"extension":7246,"links":7247,"meta":7248,"navigation":1976,"path":287,"playground":1907,"seo":7249,"sitemap":7252,"stem":288,"__hash__":7255},"docs/1.Frontend/4.Orchestr/Queries.md",null,{"type":1909,"value":1910,"toc":7221},"minimark",[1911,1923,2026,2030,2042,2047,2054,2270,2283,2294,2501,2535,2540,2654,2658,2665,2668,2927,2930,3351,3372,3375,3520,3524,3534,3559,3568,3809,3836,3839,3845,3849,3988,3992,4098,4102,4108,4396,4410,4417,4421,4491,4495,4505,4633,4644,4653,4713,4716,4722,4886,4929,4943,4949,4953,4959,4966,5210,5226,5232,5236,5240,5258,5503,5517,5533,5552,5555,5561,5565,5577,6120,6127,6134,6138,6144,6155,6487,6492,6546,6550,6563,6713,6716,6722,6728,6830,6839,6842,7170,7180,7184,7194,7207,7214,7217],[1912,1913,1914,1915,1918,1919,1922],"p",{},"A product page needs to load a product by its URL slug. A category page needs to list products belonging to that category. A cart needs to show the items it contains. ",[1916,1917,415],"strong",{}," and ",[1916,1920,1921],{},"links"," are how you teach Orchestr to fetch this data from your backend.",[1924,1925,1930],"pre",{"className":1926,"code":1927,"language":1928,"meta":1929,"style":1929},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowchart LR\n    FE[\"Frontend\"]\n    O[\"Orchestr\"]\n    Q[\"Query Handler\u003Cbr/>(by-slug)\"]\n    CR[\"Component Resolver(s)\u003Cbr/>(base, prices, media)\"]\n    L[\"Link Handler\u003Cbr/>(variants)\"]\n\n    FE -->|\"product/by-slug\u003Cbr/>{ slug: 'sneaker-pro' }\"| O\n    O --> Q\n    Q -->|\"id: 'product-123'\"| O\n    O --> CR\n    O --> L\n    CR -->|\"component data\"| O\n    L -->|\"variant ids\"| O\n    O -->|\"assembled response\"| FE\n","mermaid","",[1931,1932,1933,1941,1947,1953,1959,1965,1971,1978,1984,1990,1996,2002,2008,2014,2020],"code",{"__ignoreMap":1929},[1934,1935,1938],"span",{"class":1936,"line":1937},"line",1,[1934,1939,1940],{},"flowchart LR\n",[1934,1942,1944],{"class":1936,"line":1943},2,[1934,1945,1946],{},"    FE[\"Frontend\"]\n",[1934,1948,1950],{"class":1936,"line":1949},3,[1934,1951,1952],{},"    O[\"Orchestr\"]\n",[1934,1954,1956],{"class":1936,"line":1955},4,[1934,1957,1958],{},"    Q[\"Query Handler\u003Cbr/>(by-slug)\"]\n",[1934,1960,1962],{"class":1936,"line":1961},5,[1934,1963,1964],{},"    CR[\"Component Resolver(s)\u003Cbr/>(base, prices, media)\"]\n",[1934,1966,1968],{"class":1936,"line":1967},6,[1934,1969,1970],{},"    L[\"Link Handler\u003Cbr/>(variants)\"]\n",[1934,1972,1974],{"class":1936,"line":1973},7,[1934,1975,1977],{"emptyLinePlaceholder":1976},true,"\n",[1934,1979,1981],{"class":1936,"line":1980},8,[1934,1982,1983],{},"    FE -->|\"product/by-slug\u003Cbr/>{ slug: 'sneaker-pro' }\"| O\n",[1934,1985,1987],{"class":1936,"line":1986},9,[1934,1988,1989],{},"    O --> Q\n",[1934,1991,1993],{"class":1936,"line":1992},10,[1934,1994,1995],{},"    Q -->|\"id: 'product-123'\"| O\n",[1934,1997,1999],{"class":1936,"line":1998},11,[1934,2000,2001],{},"    O --> CR\n",[1934,2003,2005],{"class":1936,"line":2004},12,[1934,2006,2007],{},"    O --> L\n",[1934,2009,2011],{"class":1936,"line":2010},13,[1934,2012,2013],{},"    CR -->|\"component data\"| O\n",[1934,2015,2017],{"class":1936,"line":2016},14,[1934,2018,2019],{},"    L -->|\"variant ids\"| O\n",[1934,2021,2023],{"class":1936,"line":2022},15,[1934,2024,2025],{},"    O -->|\"assembled response\"| FE\n",[2027,2028,415],"h2",{"id":2029},"queries",[1912,2031,2032,2033,2036,2037,2041],{},"A ",[1916,2034,2035],{},"query"," takes structured input and returns one or more entity IDs. Orchestr then passes those IDs to ",[2038,2039,2040],"a",{"href":291},"component resolvers"," to fetch the actual data.",[2043,2044,2046],"h3",{"id":2045},"defining-a-query-token","Defining a Query Token",[1912,2048,2049,2050,2053],{},"Every query starts with a ",[1916,2051,2052],{},"token"," — the contract between your app and the frontend. It declares the query name, entity type, input schema, and whether it returns a single entity or a list.",[1924,2055,2060],{"className":2056,"code":2057,"language":2058,"meta":2059,"style":1929},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// src/runtime/shared/tokens/store-locator.ts\nimport { z } from 'zod/v4';\nimport { defineQueryToken } from '@laioutr-core/core-types/orchestr';\n\nexport const StoreBySlugQuery = defineQueryToken('store-locator/store/by-slug', {\n  entity: 'StoreLocation',\n  type: 'single',\n  label: 'Store by slug',\n  input: z.object({\n    slug: z.string(),\n  }),\n});\n","ts","twoslash",[1931,2061,2062,2068,2101,2123,2127,2161,2180,2196,2212,2232,2251,2261],{"__ignoreMap":1929},[1934,2063,2064],{"class":1936,"line":1937},[1934,2065,2067],{"class":2066},"sHwdD","// src/runtime/shared/tokens/store-locator.ts\n",[1934,2069,2070,2074,2078,2082,2085,2088,2091,2095,2098],{"class":1936,"line":1943},[1934,2071,2073],{"class":2072},"s7zQu","import",[1934,2075,2077],{"class":2076},"sMK4o"," {",[1934,2079,2081],{"class":2080},"sTEyZ"," z",[1934,2083,2084],{"class":2076}," }",[1934,2086,2087],{"class":2072}," from",[1934,2089,2090],{"class":2076}," '",[1934,2092,2094],{"class":2093},"sfazB","zod/v4",[1934,2096,2097],{"class":2076},"'",[1934,2099,2100],{"class":2076},";\n",[1934,2102,2103,2105,2107,2110,2112,2114,2116,2119,2121],{"class":1936,"line":1949},[1934,2104,2073],{"class":2072},[1934,2106,2077],{"class":2076},[1934,2108,2109],{"class":2080}," defineQueryToken",[1934,2111,2084],{"class":2076},[1934,2113,2087],{"class":2072},[1934,2115,2090],{"class":2076},[1934,2117,2118],{"class":2093},"@laioutr-core/core-types/orchestr",[1934,2120,2097],{"class":2076},[1934,2122,2100],{"class":2076},[1934,2124,2125],{"class":1936,"line":1955},[1934,2126,1977],{"emptyLinePlaceholder":1976},[1934,2128,2129,2132,2136,2139,2142,2145,2148,2150,2153,2155,2158],{"class":1936,"line":1961},[1934,2130,2131],{"class":2072},"export",[1934,2133,2135],{"class":2134},"spNyl"," const",[1934,2137,2138],{"class":2080}," StoreBySlugQuery ",[1934,2140,2141],{"class":2076},"=",[1934,2143,2109],{"class":2144},"s2Zo4",[1934,2146,2147],{"class":2080},"(",[1934,2149,2097],{"class":2076},[1934,2151,2152],{"class":2093},"store-locator/store/by-slug",[1934,2154,2097],{"class":2076},[1934,2156,2157],{"class":2076},",",[1934,2159,2160],{"class":2076}," {\n",[1934,2162,2163,2167,2170,2172,2175,2177],{"class":1936,"line":1967},[1934,2164,2166],{"class":2165},"swJcz","  entity",[1934,2168,2169],{"class":2076},":",[1934,2171,2090],{"class":2076},[1934,2173,2174],{"class":2093},"StoreLocation",[1934,2176,2097],{"class":2076},[1934,2178,2179],{"class":2076},",\n",[1934,2181,2182,2185,2187,2189,2192,2194],{"class":1936,"line":1973},[1934,2183,2184],{"class":2165},"  type",[1934,2186,2169],{"class":2076},[1934,2188,2090],{"class":2076},[1934,2190,2191],{"class":2093},"single",[1934,2193,2097],{"class":2076},[1934,2195,2179],{"class":2076},[1934,2197,2198,2201,2203,2205,2208,2210],{"class":1936,"line":1980},[1934,2199,2200],{"class":2165},"  label",[1934,2202,2169],{"class":2076},[1934,2204,2090],{"class":2076},[1934,2206,2207],{"class":2093},"Store by slug",[1934,2209,2097],{"class":2076},[1934,2211,2179],{"class":2076},[1934,2213,2214,2217,2219,2221,2224,2227,2229],{"class":1936,"line":1986},[1934,2215,2216],{"class":2165},"  input",[1934,2218,2169],{"class":2076},[1934,2220,2081],{"class":2080},[1934,2222,2223],{"class":2076},".",[1934,2225,2226],{"class":2144},"object",[1934,2228,2147],{"class":2080},[1934,2230,2231],{"class":2076},"{\n",[1934,2233,2234,2237,2239,2241,2243,2246,2249],{"class":1936,"line":1992},[1934,2235,2236],{"class":2165},"    slug",[1934,2238,2169],{"class":2076},[1934,2240,2081],{"class":2080},[1934,2242,2223],{"class":2076},[1934,2244,2245],{"class":2144},"string",[1934,2247,2248],{"class":2080},"()",[1934,2250,2179],{"class":2076},[1934,2252,2253,2256,2259],{"class":1936,"line":1998},[1934,2254,2255],{"class":2076},"  }",[1934,2257,2258],{"class":2080},")",[1934,2260,2179],{"class":2076},[1934,2262,2263,2266,2268],{"class":1936,"line":2004},[1934,2264,2265],{"class":2076},"}",[1934,2267,2258],{"class":2080},[1934,2269,2100],{"class":2076},[2271,2272,2273,2274,2277,2278,2282],"tip",{},"Place token files in ",[1931,2275,2276],{},"src/runtime/shared/"," so both server handlers and frontend code can import the same token reference. See ",[2038,2279,2281],{"href":2280},"/apps/app-development/coding-standards#runtime-layout","Runtime layout"," for the full directory convention.",[1912,2284,2285,2286,2289,2290,2293],{},"For queries that return lists, set ",[1931,2287,2288],{},"type: 'multi'"," and optionally provide a ",[1931,2291,2292],{},"defaultLimit"," for pagination:",[1924,2295,2297],{"className":2056,"code":2296,"language":2058,"meta":2059,"style":1929},"import { z } from 'zod/v4';\nimport { defineQueryToken } from '@laioutr-core/core-types/orchestr';\n// ---cut---\nexport const StoreSearchQuery = defineQueryToken('store-locator/store/search', {\n  entity: 'StoreLocation',\n  type: 'multi',\n  label: 'Store search',\n  input: z.object({\n    query: z.string(),\n    radius: z.number().optional(),\n  }),\n  defaultLimit: 20,\n});\n",[1931,2298,2299,2319,2339,2344,2370,2384,2399,2414,2430,2447,2472,2480,2493],{"__ignoreMap":1929},[1934,2300,2301,2303,2305,2307,2309,2311,2313,2315,2317],{"class":1936,"line":1937},[1934,2302,2073],{"class":2072},[1934,2304,2077],{"class":2076},[1934,2306,2081],{"class":2080},[1934,2308,2084],{"class":2076},[1934,2310,2087],{"class":2072},[1934,2312,2090],{"class":2076},[1934,2314,2094],{"class":2093},[1934,2316,2097],{"class":2076},[1934,2318,2100],{"class":2076},[1934,2320,2321,2323,2325,2327,2329,2331,2333,2335,2337],{"class":1936,"line":1943},[1934,2322,2073],{"class":2072},[1934,2324,2077],{"class":2076},[1934,2326,2109],{"class":2080},[1934,2328,2084],{"class":2076},[1934,2330,2087],{"class":2072},[1934,2332,2090],{"class":2076},[1934,2334,2118],{"class":2093},[1934,2336,2097],{"class":2076},[1934,2338,2100],{"class":2076},[1934,2340,2341],{"class":1936,"line":1949},[1934,2342,2343],{"class":2066},"// ---cut---\n",[1934,2345,2346,2348,2350,2353,2355,2357,2359,2361,2364,2366,2368],{"class":1936,"line":1955},[1934,2347,2131],{"class":2072},[1934,2349,2135],{"class":2134},[1934,2351,2352],{"class":2080}," StoreSearchQuery ",[1934,2354,2141],{"class":2076},[1934,2356,2109],{"class":2144},[1934,2358,2147],{"class":2080},[1934,2360,2097],{"class":2076},[1934,2362,2363],{"class":2093},"store-locator/store/search",[1934,2365,2097],{"class":2076},[1934,2367,2157],{"class":2076},[1934,2369,2160],{"class":2076},[1934,2371,2372,2374,2376,2378,2380,2382],{"class":1936,"line":1961},[1934,2373,2166],{"class":2165},[1934,2375,2169],{"class":2076},[1934,2377,2090],{"class":2076},[1934,2379,2174],{"class":2093},[1934,2381,2097],{"class":2076},[1934,2383,2179],{"class":2076},[1934,2385,2386,2388,2390,2392,2395,2397],{"class":1936,"line":1967},[1934,2387,2184],{"class":2165},[1934,2389,2169],{"class":2076},[1934,2391,2090],{"class":2076},[1934,2393,2394],{"class":2093},"multi",[1934,2396,2097],{"class":2076},[1934,2398,2179],{"class":2076},[1934,2400,2401,2403,2405,2407,2410,2412],{"class":1936,"line":1973},[1934,2402,2200],{"class":2165},[1934,2404,2169],{"class":2076},[1934,2406,2090],{"class":2076},[1934,2408,2409],{"class":2093},"Store search",[1934,2411,2097],{"class":2076},[1934,2413,2179],{"class":2076},[1934,2415,2416,2418,2420,2422,2424,2426,2428],{"class":1936,"line":1980},[1934,2417,2216],{"class":2165},[1934,2419,2169],{"class":2076},[1934,2421,2081],{"class":2080},[1934,2423,2223],{"class":2076},[1934,2425,2226],{"class":2144},[1934,2427,2147],{"class":2080},[1934,2429,2231],{"class":2076},[1934,2431,2432,2435,2437,2439,2441,2443,2445],{"class":1936,"line":1986},[1934,2433,2434],{"class":2165},"    query",[1934,2436,2169],{"class":2076},[1934,2438,2081],{"class":2080},[1934,2440,2223],{"class":2076},[1934,2442,2245],{"class":2144},[1934,2444,2248],{"class":2080},[1934,2446,2179],{"class":2076},[1934,2448,2449,2452,2454,2456,2458,2461,2463,2465,2468,2470],{"class":1936,"line":1992},[1934,2450,2451],{"class":2165},"    radius",[1934,2453,2169],{"class":2076},[1934,2455,2081],{"class":2080},[1934,2457,2223],{"class":2076},[1934,2459,2460],{"class":2144},"number",[1934,2462,2248],{"class":2080},[1934,2464,2223],{"class":2076},[1934,2466,2467],{"class":2144},"optional",[1934,2469,2248],{"class":2080},[1934,2471,2179],{"class":2076},[1934,2473,2474,2476,2478],{"class":1936,"line":1998},[1934,2475,2255],{"class":2076},[1934,2477,2258],{"class":2080},[1934,2479,2179],{"class":2076},[1934,2481,2482,2485,2487,2491],{"class":1936,"line":2004},[1934,2483,2484],{"class":2165},"  defaultLimit",[1934,2486,2169],{"class":2076},[1934,2488,2490],{"class":2489},"sbssI"," 20",[1934,2492,2179],{"class":2076},[1934,2494,2495,2497,2499],{"class":1936,"line":2010},[1934,2496,2265],{"class":2076},[1934,2498,2258],{"class":2080},[1934,2500,2100],{"class":2076},[2502,2503,2504,2505,2508,2509,2512,2513,2512,2516,2519,2520,2512,2523,2526,2527,2530,2531,2223],"warning",{},"The ",[1931,2506,2507],{},"input"," schema is for query-specific parameters only (slugs, search terms). Don't include ",[1931,2510,2511],{},"page",", ",[1931,2514,2515],{},"limit",[1931,2517,2518],{},"sort",", or filter selections. Orchestr injects those as separate ",[1931,2521,2522],{},"pagination",[1931,2524,2525],{},"sorting",", and ",[1931,2528,2529],{},"filter"," arguments to your handler. See ",[2038,2532,2534],{"href":2533},"#handler-arguments","Handler arguments",[2536,2537,2539],"h4",{"id":2538},"query-token-fields","Query token fields",[2541,2542,2543,2558],"table",{},[2544,2545,2546],"thead",{},[2547,2548,2549,2552,2555],"tr",{},[2550,2551,1395],"th",{},[2550,2553,2554],{},"Required",[2550,2556,2557],{},"Description",[2559,2560,2561,2582,2601,2613,2625,2642],"tbody",{},[2547,2562,2563,2569,2572],{},[2564,2565,2566],"td",{},[1931,2567,2568],{},"entity",[2564,2570,2571],{},"yes",[2564,2573,2574,2575,2512,2578,2581],{},"The entity type this query returns (e.g. ",[1931,2576,2577],{},"'Product'",[1931,2579,2580],{},"'Category'",").",[2547,2583,2584,2589,2591],{},[2564,2585,2586],{},[1931,2587,2588],{},"type",[2564,2590,2571],{},[2564,2592,2593,2596,2597,2600],{},[1931,2594,2595],{},"'single'"," for one result, ",[1931,2598,2599],{},"'multi'"," for paginated lists.",[2547,2602,2603,2608,2610],{},[2564,2604,2605],{},[1931,2606,2607],{},"label",[2564,2609,2571],{},[2564,2611,2612],{},"Human-readable name, shown in Orchestr DevTools and Studio.",[2547,2614,2615,2619,2622],{},[2564,2616,2617],{},[1931,2618,2507],{},[2564,2620,2621],{},"no",[2564,2623,2624],{},"Zod schema for the query input. Omit for queries with no parameters.",[2547,2626,2627,2631,2633],{},[2564,2628,2629],{},[1931,2630,2292],{},[2564,2632,2621],{},[2564,2634,2635,2636,2638,2639,2641],{},"Default page size for ",[1931,2637,2394],{}," queries. When set, ",[1931,2640,2522],{}," is always defined in the handler.",[2547,2643,2644,2649,2651],{},[2564,2645,2646],{},[1931,2647,2648],{},"description",[2564,2650,2621],{},[2564,2652,2653],{},"Longer description for documentation and tooling.",[2043,2655,2657],{"id":2656},"writing-a-query-handler","Writing a Query Handler",[1912,2659,2660,2661,2664],{},"A query handler is a file in your app's ",[1931,2662,2663],{},"orchestr/"," directory. It implements a query token and returns entity IDs.",[1912,2666,2667],{},"Here is a single-entity query:",[1924,2669,2671],{"className":2056,"code":2670,"language":2058,"meta":1929,"style":1929},"// src/runtime/server/orchestr/StoreLocation/by-slug.query.ts\nimport { StoreBySlugQuery } from '../../shared/tokens/store-locator';\nimport { defineMyAppQuery } from '../../middleware/defineMyApp';\n\nexport default defineMyAppQuery(\n  StoreBySlugQuery,\n  async ({ input, context }) => {\n    const store = await context.storeApi.getBySlug(input.slug);\n\n    if (!store) {\n      throw createError({ statusCode: 404, message: `Store not found: ${input.slug}` });\n    }\n\n    return { id: store.id };\n  },\n);\n",[1931,2672,2673,2678,2700,2722,2726,2738,2745,2770,2809,2813,2832,2884,2889,2893,2915,2920],{"__ignoreMap":1929},[1934,2674,2675],{"class":1936,"line":1937},[1934,2676,2677],{"class":2066},"// src/runtime/server/orchestr/StoreLocation/by-slug.query.ts\n",[1934,2679,2680,2682,2684,2687,2689,2691,2693,2696,2698],{"class":1936,"line":1943},[1934,2681,2073],{"class":2072},[1934,2683,2077],{"class":2076},[1934,2685,2686],{"class":2080}," StoreBySlugQuery",[1934,2688,2084],{"class":2076},[1934,2690,2087],{"class":2072},[1934,2692,2090],{"class":2076},[1934,2694,2695],{"class":2093},"../../shared/tokens/store-locator",[1934,2697,2097],{"class":2076},[1934,2699,2100],{"class":2076},[1934,2701,2702,2704,2706,2709,2711,2713,2715,2718,2720],{"class":1936,"line":1949},[1934,2703,2073],{"class":2072},[1934,2705,2077],{"class":2076},[1934,2707,2708],{"class":2080}," defineMyAppQuery",[1934,2710,2084],{"class":2076},[1934,2712,2087],{"class":2072},[1934,2714,2090],{"class":2076},[1934,2716,2717],{"class":2093},"../../middleware/defineMyApp",[1934,2719,2097],{"class":2076},[1934,2721,2100],{"class":2076},[1934,2723,2724],{"class":1936,"line":1955},[1934,2725,1977],{"emptyLinePlaceholder":1976},[1934,2727,2728,2730,2733,2735],{"class":1936,"line":1961},[1934,2729,2131],{"class":2072},[1934,2731,2732],{"class":2072}," default",[1934,2734,2708],{"class":2144},[1934,2736,2737],{"class":2080},"(\n",[1934,2739,2740,2743],{"class":1936,"line":1967},[1934,2741,2742],{"class":2080},"  StoreBySlugQuery",[1934,2744,2179],{"class":2076},[1934,2746,2747,2750,2753,2757,2759,2762,2765,2768],{"class":1936,"line":1973},[1934,2748,2749],{"class":2134},"  async",[1934,2751,2752],{"class":2076}," ({",[1934,2754,2756],{"class":2755},"sHdIc"," input",[1934,2758,2157],{"class":2076},[1934,2760,2761],{"class":2755}," context",[1934,2763,2764],{"class":2076}," })",[1934,2766,2767],{"class":2134}," =>",[1934,2769,2160],{"class":2076},[1934,2771,2772,2775,2778,2781,2784,2786,2788,2791,2793,2796,2798,2800,2802,2805,2807],{"class":1936,"line":1980},[1934,2773,2774],{"class":2134},"    const",[1934,2776,2777],{"class":2080}," store",[1934,2779,2780],{"class":2076}," =",[1934,2782,2783],{"class":2072}," await",[1934,2785,2761],{"class":2080},[1934,2787,2223],{"class":2076},[1934,2789,2790],{"class":2080},"storeApi",[1934,2792,2223],{"class":2076},[1934,2794,2795],{"class":2144},"getBySlug",[1934,2797,2147],{"class":2165},[1934,2799,2507],{"class":2080},[1934,2801,2223],{"class":2076},[1934,2803,2804],{"class":2080},"slug",[1934,2806,2258],{"class":2165},[1934,2808,2100],{"class":2076},[1934,2810,2811],{"class":1936,"line":1986},[1934,2812,1977],{"emptyLinePlaceholder":1976},[1934,2814,2815,2818,2821,2824,2827,2830],{"class":1936,"line":1992},[1934,2816,2817],{"class":2072},"    if",[1934,2819,2820],{"class":2165}," (",[1934,2822,2823],{"class":2076},"!",[1934,2825,2826],{"class":2080},"store",[1934,2828,2829],{"class":2165},") ",[1934,2831,2231],{"class":2076},[1934,2833,2834,2837,2840,2842,2845,2848,2850,2853,2855,2858,2860,2863,2866,2869,2871,2873,2875,2878,2880,2882],{"class":1936,"line":1998},[1934,2835,2836],{"class":2072},"      throw",[1934,2838,2839],{"class":2144}," createError",[1934,2841,2147],{"class":2165},[1934,2843,2844],{"class":2076},"{",[1934,2846,2847],{"class":2165}," statusCode",[1934,2849,2169],{"class":2076},[1934,2851,2852],{"class":2489}," 404",[1934,2854,2157],{"class":2076},[1934,2856,2857],{"class":2165}," message",[1934,2859,2169],{"class":2076},[1934,2861,2862],{"class":2076}," `",[1934,2864,2865],{"class":2093},"Store not found: ",[1934,2867,2868],{"class":2076},"${",[1934,2870,2507],{"class":2080},[1934,2872,2223],{"class":2076},[1934,2874,2804],{"class":2080},[1934,2876,2877],{"class":2076},"}`",[1934,2879,2084],{"class":2076},[1934,2881,2258],{"class":2165},[1934,2883,2100],{"class":2076},[1934,2885,2886],{"class":1936,"line":2004},[1934,2887,2888],{"class":2076},"    }\n",[1934,2890,2891],{"class":1936,"line":2010},[1934,2892,1977],{"emptyLinePlaceholder":1976},[1934,2894,2895,2898,2900,2903,2905,2907,2909,2912],{"class":1936,"line":2016},[1934,2896,2897],{"class":2072},"    return",[1934,2899,2077],{"class":2076},[1934,2901,2902],{"class":2165}," id",[1934,2904,2169],{"class":2076},[1934,2906,2777],{"class":2080},[1934,2908,2223],{"class":2076},[1934,2910,2911],{"class":2080},"id",[1934,2913,2914],{"class":2076}," };\n",[1934,2916,2917],{"class":1936,"line":2022},[1934,2918,2919],{"class":2076},"  },\n",[1934,2921,2923,2925],{"class":1936,"line":2922},16,[1934,2924,2258],{"class":2080},[1934,2926,2100],{"class":2076},[1912,2928,2929],{},"And a multi-entity query with pagination, sorting, and filters:",[1924,2931,2933],{"className":2056,"code":2932,"language":2058,"meta":1929,"style":1929},"// src/runtime/server/orchestr/StoreLocation/search.query.ts\nimport { StoreSearchQuery } from '../../shared/tokens/store-locator';\nimport { defineMyAppQuery } from '../../middleware/defineMyApp';\n\nexport default defineMyAppQuery({\n  implements: StoreSearchQuery,\n  run: async ({ input, context, pagination, sorting, filter }) => {\n    const result = await context.storeApi.search({\n      query: input.query,\n      radius: input.radius,\n      limit: pagination.limit,\n      offset: pagination.offset,\n      sorting,\n      filter,\n    });\n\n    return {\n      ids: result.stores.map((store) => store.id),\n      total: result.total,\n      availableSortings: [\n        { key: 'distance', label: 'Distance' },\n        { key: 'name', label: 'Name A-Z' },\n      ],\n      sorting: sorting ?? 'distance',\n    };\n  },\n});\n",[1931,2934,2935,2940,2961,2981,2985,2997,3008,3047,3073,3088,3104,3119,3135,3142,3149,3158,3162,3169,3209,3226,3237,3272,3303,3311,3331,3337,3342],{"__ignoreMap":1929},[1934,2936,2937],{"class":1936,"line":1937},[1934,2938,2939],{"class":2066},"// src/runtime/server/orchestr/StoreLocation/search.query.ts\n",[1934,2941,2942,2944,2946,2949,2951,2953,2955,2957,2959],{"class":1936,"line":1943},[1934,2943,2073],{"class":2072},[1934,2945,2077],{"class":2076},[1934,2947,2948],{"class":2080}," StoreSearchQuery",[1934,2950,2084],{"class":2076},[1934,2952,2087],{"class":2072},[1934,2954,2090],{"class":2076},[1934,2956,2695],{"class":2093},[1934,2958,2097],{"class":2076},[1934,2960,2100],{"class":2076},[1934,2962,2963,2965,2967,2969,2971,2973,2975,2977,2979],{"class":1936,"line":1949},[1934,2964,2073],{"class":2072},[1934,2966,2077],{"class":2076},[1934,2968,2708],{"class":2080},[1934,2970,2084],{"class":2076},[1934,2972,2087],{"class":2072},[1934,2974,2090],{"class":2076},[1934,2976,2717],{"class":2093},[1934,2978,2097],{"class":2076},[1934,2980,2100],{"class":2076},[1934,2982,2983],{"class":1936,"line":1955},[1934,2984,1977],{"emptyLinePlaceholder":1976},[1934,2986,2987,2989,2991,2993,2995],{"class":1936,"line":1961},[1934,2988,2131],{"class":2072},[1934,2990,2732],{"class":2072},[1934,2992,2708],{"class":2144},[1934,2994,2147],{"class":2080},[1934,2996,2231],{"class":2076},[1934,2998,2999,3002,3004,3006],{"class":1936,"line":1967},[1934,3000,3001],{"class":2165},"  implements",[1934,3003,2169],{"class":2076},[1934,3005,2948],{"class":2080},[1934,3007,2179],{"class":2076},[1934,3009,3010,3013,3015,3018,3020,3022,3024,3026,3028,3031,3033,3036,3038,3041,3043,3045],{"class":1936,"line":1973},[1934,3011,3012],{"class":2144},"  run",[1934,3014,2169],{"class":2076},[1934,3016,3017],{"class":2134}," async",[1934,3019,2752],{"class":2076},[1934,3021,2756],{"class":2755},[1934,3023,2157],{"class":2076},[1934,3025,2761],{"class":2755},[1934,3027,2157],{"class":2076},[1934,3029,3030],{"class":2755}," pagination",[1934,3032,2157],{"class":2076},[1934,3034,3035],{"class":2755}," sorting",[1934,3037,2157],{"class":2076},[1934,3039,3040],{"class":2755}," filter",[1934,3042,2764],{"class":2076},[1934,3044,2767],{"class":2134},[1934,3046,2160],{"class":2076},[1934,3048,3049,3051,3054,3056,3058,3060,3062,3064,3066,3069,3071],{"class":1936,"line":1980},[1934,3050,2774],{"class":2134},[1934,3052,3053],{"class":2080}," result",[1934,3055,2780],{"class":2076},[1934,3057,2783],{"class":2072},[1934,3059,2761],{"class":2080},[1934,3061,2223],{"class":2076},[1934,3063,2790],{"class":2080},[1934,3065,2223],{"class":2076},[1934,3067,3068],{"class":2144},"search",[1934,3070,2147],{"class":2165},[1934,3072,2231],{"class":2076},[1934,3074,3075,3078,3080,3082,3084,3086],{"class":1936,"line":1986},[1934,3076,3077],{"class":2165},"      query",[1934,3079,2169],{"class":2076},[1934,3081,2756],{"class":2080},[1934,3083,2223],{"class":2076},[1934,3085,2035],{"class":2080},[1934,3087,2179],{"class":2076},[1934,3089,3090,3093,3095,3097,3099,3102],{"class":1936,"line":1992},[1934,3091,3092],{"class":2165},"      radius",[1934,3094,2169],{"class":2076},[1934,3096,2756],{"class":2080},[1934,3098,2223],{"class":2076},[1934,3100,3101],{"class":2080},"radius",[1934,3103,2179],{"class":2076},[1934,3105,3106,3109,3111,3113,3115,3117],{"class":1936,"line":1998},[1934,3107,3108],{"class":2165},"      limit",[1934,3110,2169],{"class":2076},[1934,3112,3030],{"class":2080},[1934,3114,2223],{"class":2076},[1934,3116,2515],{"class":2080},[1934,3118,2179],{"class":2076},[1934,3120,3121,3124,3126,3128,3130,3133],{"class":1936,"line":2004},[1934,3122,3123],{"class":2165},"      offset",[1934,3125,2169],{"class":2076},[1934,3127,3030],{"class":2080},[1934,3129,2223],{"class":2076},[1934,3131,3132],{"class":2080},"offset",[1934,3134,2179],{"class":2076},[1934,3136,3137,3140],{"class":1936,"line":2010},[1934,3138,3139],{"class":2080},"      sorting",[1934,3141,2179],{"class":2076},[1934,3143,3144,3147],{"class":1936,"line":2016},[1934,3145,3146],{"class":2080},"      filter",[1934,3148,2179],{"class":2076},[1934,3150,3151,3154,3156],{"class":1936,"line":2022},[1934,3152,3153],{"class":2076},"    }",[1934,3155,2258],{"class":2165},[1934,3157,2100],{"class":2076},[1934,3159,3160],{"class":1936,"line":2922},[1934,3161,1977],{"emptyLinePlaceholder":1976},[1934,3163,3165,3167],{"class":1936,"line":3164},17,[1934,3166,2897],{"class":2072},[1934,3168,2160],{"class":2076},[1934,3170,3172,3175,3177,3179,3181,3184,3186,3189,3191,3193,3195,3197,3199,3201,3203,3205,3207],{"class":1936,"line":3171},18,[1934,3173,3174],{"class":2165},"      ids",[1934,3176,2169],{"class":2076},[1934,3178,3053],{"class":2080},[1934,3180,2223],{"class":2076},[1934,3182,3183],{"class":2080},"stores",[1934,3185,2223],{"class":2076},[1934,3187,3188],{"class":2144},"map",[1934,3190,2147],{"class":2165},[1934,3192,2147],{"class":2076},[1934,3194,2826],{"class":2755},[1934,3196,2258],{"class":2076},[1934,3198,2767],{"class":2134},[1934,3200,2777],{"class":2080},[1934,3202,2223],{"class":2076},[1934,3204,2911],{"class":2080},[1934,3206,2258],{"class":2165},[1934,3208,2179],{"class":2076},[1934,3210,3212,3215,3217,3219,3221,3224],{"class":1936,"line":3211},19,[1934,3213,3214],{"class":2165},"      total",[1934,3216,2169],{"class":2076},[1934,3218,3053],{"class":2080},[1934,3220,2223],{"class":2076},[1934,3222,3223],{"class":2080},"total",[1934,3225,2179],{"class":2076},[1934,3227,3229,3232,3234],{"class":1936,"line":3228},20,[1934,3230,3231],{"class":2165},"      availableSortings",[1934,3233,2169],{"class":2076},[1934,3235,3236],{"class":2165}," [\n",[1934,3238,3240,3243,3246,3248,3250,3253,3255,3257,3260,3262,3264,3267,3269],{"class":1936,"line":3239},21,[1934,3241,3242],{"class":2076},"        {",[1934,3244,3245],{"class":2165}," key",[1934,3247,2169],{"class":2076},[1934,3249,2090],{"class":2076},[1934,3251,3252],{"class":2093},"distance",[1934,3254,2097],{"class":2076},[1934,3256,2157],{"class":2076},[1934,3258,3259],{"class":2165}," label",[1934,3261,2169],{"class":2076},[1934,3263,2090],{"class":2076},[1934,3265,3266],{"class":2093},"Distance",[1934,3268,2097],{"class":2076},[1934,3270,3271],{"class":2076}," },\n",[1934,3273,3275,3277,3279,3281,3283,3286,3288,3290,3292,3294,3296,3299,3301],{"class":1936,"line":3274},22,[1934,3276,3242],{"class":2076},[1934,3278,3245],{"class":2165},[1934,3280,2169],{"class":2076},[1934,3282,2090],{"class":2076},[1934,3284,3285],{"class":2093},"name",[1934,3287,2097],{"class":2076},[1934,3289,2157],{"class":2076},[1934,3291,3259],{"class":2165},[1934,3293,2169],{"class":2076},[1934,3295,2090],{"class":2076},[1934,3297,3298],{"class":2093},"Name A-Z",[1934,3300,2097],{"class":2076},[1934,3302,3271],{"class":2076},[1934,3304,3306,3309],{"class":1936,"line":3305},23,[1934,3307,3308],{"class":2165},"      ]",[1934,3310,2179],{"class":2076},[1934,3312,3314,3316,3318,3320,3323,3325,3327,3329],{"class":1936,"line":3313},24,[1934,3315,3139],{"class":2165},[1934,3317,2169],{"class":2076},[1934,3319,3035],{"class":2080},[1934,3321,3322],{"class":2076}," ??",[1934,3324,2090],{"class":2076},[1934,3326,3252],{"class":2093},[1934,3328,2097],{"class":2076},[1934,3330,2179],{"class":2076},[1934,3332,3334],{"class":1936,"line":3333},25,[1934,3335,3336],{"class":2076},"    };\n",[1934,3338,3340],{"class":1936,"line":3339},26,[1934,3341,2919],{"class":2076},[1934,3343,3345,3347,3349],{"class":1936,"line":3344},27,[1934,3346,2265],{"class":2076},[1934,3348,2258],{"class":2080},[1934,3350,2100],{"class":2076},[2271,3352,3353,3354,3357,3358,3361,3362,3365,3366,1918,3369,2223],{},"There are two syntax forms for ",[1931,3355,3356],{},"defineMyAppQuery",". The short form passes ",[1931,3359,3360],{},"(token, handlerFn)"," directly — use it for simple handlers. The object form with ",[1931,3363,3364],{},"{ implements, run }"," gives you access to additional options like ",[1931,3367,3368],{},"cache",[1931,3370,3371],{},"order",[2043,3373,2534],{"id":3374},"handler-arguments",[2541,3376,3377,3389],{},[2544,3378,3379],{},[2547,3380,3381,3384,3387],{},[2550,3382,3383],{},"Argument",[2550,3385,3386],{},"Available",[2550,3388,2557],{},[2559,3390,3391,3403,3422,3435,3448,3460,3472,3484,3496,3508],{},[2547,3392,3393,3397,3400],{},[2564,3394,3395],{},[1931,3396,2507],{},[2564,3398,3399],{},"always",[2564,3401,3402],{},"Parsed and validated query input, typed from the token's Zod schema.",[2547,3404,3405,3409,3414],{},[2564,3406,3407],{},[1931,3408,2522],{},[2564,3410,3411,3413],{},[1931,3412,2394],{}," queries",[2564,3415,3416,3419,3420,2223],{},[1931,3417,3418],{},"{ limit, offset, page }",". Always defined when the token sets ",[1931,3421,2292],{},[2547,3423,3424,3428,3432],{},[2564,3425,3426],{},[1931,3427,2525],{},[2564,3429,3430,3413],{},[1931,3431,2394],{},[2564,3433,3434],{},"The requested sorting key, if any.",[2547,3436,3437,3441,3445],{},[2564,3438,3439],{},[1931,3440,2529],{},[2564,3442,3443,3413],{},[1931,3444,2394],{},[2564,3446,3447],{},"Selected filters from the frontend.",[2547,3449,3450,3455,3457],{},[2564,3451,3452],{},[1931,3453,3454],{},"requestedComponents",[2564,3456,3399],{},[2564,3458,3459],{},"Which components the frontend needs. Use this to skip expensive API fields.",[2547,3461,3462,3467,3469],{},[2564,3463,3464],{},[1931,3465,3466],{},"requestedLinks",[2564,3468,3399],{},[2564,3470,3471],{},"Which links (and their nested components) the frontend needs.",[2547,3473,3474,3479,3481],{},[2564,3475,3476],{},[1931,3477,3478],{},"shouldLoad",[2564,3480,3399],{},[2564,3482,3483],{},"Helper to check if a component or link path is requested. Accepts a string or path array.",[2547,3485,3486,3491,3493],{},[2564,3487,3488],{},[1931,3489,3490],{},"passthrough",[2564,3492,3399],{},[2564,3494,3495],{},"Store for passing raw data to component resolvers, avoiding duplicate API calls.",[2547,3497,3498,3503,3505],{},[2564,3499,3500],{},[1931,3501,3502],{},"context",[2564,3504,3399],{},[2564,3506,3507],{},"Middleware-provided context (API clients, config, etc.).",[2547,3509,3510,3515,3517],{},[2564,3511,3512],{},[1931,3513,3514],{},"$entity",[2564,3516,3399],{},[2564,3518,3519],{},"Type-safe entity builder, same as in component resolvers.",[2043,3521,3523],{"id":3522},"returning-results","Returning results",[1912,3525,3526,3529,3530,3533],{},[1916,3527,3528],{},"Single queries"," return ",[1931,3531,3532],{},"{ id }"," — the ID of the matching entity:",[1924,3535,3537],{"className":2056,"code":3536,"language":2058,"meta":1929,"style":1929},"return { id: 'store-123' };\n",[1931,3538,3539],{"__ignoreMap":1929},[1934,3540,3541,3544,3546,3548,3550,3552,3555,3557],{"class":1936,"line":1937},[1934,3542,3543],{"class":2072},"return",[1934,3545,2077],{"class":2076},[1934,3547,2902],{"class":2165},[1934,3549,2169],{"class":2076},[1934,3551,2090],{"class":2076},[1934,3553,3554],{"class":2093},"store-123",[1934,3556,2097],{"class":2076},[1934,3558,2914],{"class":2076},[1912,3560,3561,3529,3564,3567],{},[1916,3562,3563],{},"Multi queries",[1931,3565,3566],{},"{ ids, total? }"," — an array of entity IDs and optionally the total count for pagination:",[1924,3569,3571],{"className":2056,"code":3570,"language":2058,"meta":1929,"style":1929},"return {\n  ids: ['store-1', 'store-2', 'store-3'],\n  total: 42,\n  availableSortings: [{ key: 'distance', label: 'Distance' }],\n  availableFilters: [{ id: 'city', label: 'City', type: 'list', presentation: 'text', values: [{ id: 'berlin', label: 'Berlin', count: 12 }] }],\n  sorting: 'distance',\n};\n",[1931,3572,3573,3579,3619,3631,3670,3789,3804],{"__ignoreMap":1929},[1934,3574,3575,3577],{"class":1936,"line":1937},[1934,3576,3543],{"class":2072},[1934,3578,2160],{"class":2076},[1934,3580,3581,3584,3586,3589,3591,3594,3596,3598,3600,3603,3605,3607,3609,3612,3614,3617],{"class":1936,"line":1943},[1934,3582,3583],{"class":2165},"  ids",[1934,3585,2169],{"class":2076},[1934,3587,3588],{"class":2080}," [",[1934,3590,2097],{"class":2076},[1934,3592,3593],{"class":2093},"store-1",[1934,3595,2097],{"class":2076},[1934,3597,2157],{"class":2076},[1934,3599,2090],{"class":2076},[1934,3601,3602],{"class":2093},"store-2",[1934,3604,2097],{"class":2076},[1934,3606,2157],{"class":2076},[1934,3608,2090],{"class":2076},[1934,3610,3611],{"class":2093},"store-3",[1934,3613,2097],{"class":2076},[1934,3615,3616],{"class":2080},"]",[1934,3618,2179],{"class":2076},[1934,3620,3621,3624,3626,3629],{"class":1936,"line":1949},[1934,3622,3623],{"class":2165},"  total",[1934,3625,2169],{"class":2076},[1934,3627,3628],{"class":2489}," 42",[1934,3630,2179],{"class":2076},[1934,3632,3633,3636,3638,3640,3642,3644,3646,3648,3650,3652,3654,3656,3658,3660,3662,3664,3666,3668],{"class":1936,"line":1955},[1934,3634,3635],{"class":2165},"  availableSortings",[1934,3637,2169],{"class":2076},[1934,3639,3588],{"class":2080},[1934,3641,2844],{"class":2076},[1934,3643,3245],{"class":2165},[1934,3645,2169],{"class":2076},[1934,3647,2090],{"class":2076},[1934,3649,3252],{"class":2093},[1934,3651,2097],{"class":2076},[1934,3653,2157],{"class":2076},[1934,3655,3259],{"class":2165},[1934,3657,2169],{"class":2076},[1934,3659,2090],{"class":2076},[1934,3661,3266],{"class":2093},[1934,3663,2097],{"class":2076},[1934,3665,2084],{"class":2076},[1934,3667,3616],{"class":2080},[1934,3669,2179],{"class":2076},[1934,3671,3672,3675,3677,3679,3681,3683,3685,3687,3690,3692,3694,3696,3698,3700,3703,3705,3707,3710,3712,3714,3717,3719,3721,3724,3726,3728,3731,3733,3735,3738,3740,3742,3744,3746,3748,3750,3753,3755,3757,3759,3761,3763,3766,3768,3770,3773,3775,3778,3780,3783,3785,3787],{"class":1936,"line":1961},[1934,3673,3674],{"class":2165},"  availableFilters",[1934,3676,2169],{"class":2076},[1934,3678,3588],{"class":2080},[1934,3680,2844],{"class":2076},[1934,3682,2902],{"class":2165},[1934,3684,2169],{"class":2076},[1934,3686,2090],{"class":2076},[1934,3688,3689],{"class":2093},"city",[1934,3691,2097],{"class":2076},[1934,3693,2157],{"class":2076},[1934,3695,3259],{"class":2165},[1934,3697,2169],{"class":2076},[1934,3699,2090],{"class":2076},[1934,3701,3702],{"class":2093},"City",[1934,3704,2097],{"class":2076},[1934,3706,2157],{"class":2076},[1934,3708,3709],{"class":2165}," type",[1934,3711,2169],{"class":2076},[1934,3713,2090],{"class":2076},[1934,3715,3716],{"class":2093},"list",[1934,3718,2097],{"class":2076},[1934,3720,2157],{"class":2076},[1934,3722,3723],{"class":2165}," presentation",[1934,3725,2169],{"class":2076},[1934,3727,2090],{"class":2076},[1934,3729,3730],{"class":2093},"text",[1934,3732,2097],{"class":2076},[1934,3734,2157],{"class":2076},[1934,3736,3737],{"class":2165}," values",[1934,3739,2169],{"class":2076},[1934,3741,3588],{"class":2080},[1934,3743,2844],{"class":2076},[1934,3745,2902],{"class":2165},[1934,3747,2169],{"class":2076},[1934,3749,2090],{"class":2076},[1934,3751,3752],{"class":2093},"berlin",[1934,3754,2097],{"class":2076},[1934,3756,2157],{"class":2076},[1934,3758,3259],{"class":2165},[1934,3760,2169],{"class":2076},[1934,3762,2090],{"class":2076},[1934,3764,3765],{"class":2093},"Berlin",[1934,3767,2097],{"class":2076},[1934,3769,2157],{"class":2076},[1934,3771,3772],{"class":2165}," count",[1934,3774,2169],{"class":2076},[1934,3776,3777],{"class":2489}," 12",[1934,3779,2084],{"class":2076},[1934,3781,3782],{"class":2080},"] ",[1934,3784,2265],{"class":2076},[1934,3786,3616],{"class":2080},[1934,3788,2179],{"class":2076},[1934,3790,3791,3794,3796,3798,3800,3802],{"class":1936,"line":1967},[1934,3792,3793],{"class":2165},"  sorting",[1934,3795,2169],{"class":2076},[1934,3797,2090],{"class":2076},[1934,3799,3252],{"class":2093},[1934,3801,2097],{"class":2076},[1934,3803,2179],{"class":2076},[1934,3805,3806],{"class":1936,"line":1973},[1934,3807,3808],{"class":2076},"};\n",[1912,3810,3811,3812,3815,3816,3819,3820,3823,3824,3826,3827,3829,3830,3833,3834,2223],{},"Each ",[1931,3813,3814],{},"availableSortings"," entry is ",[1931,3817,3818],{},"{ key: string, label?: string }",", where ",[1931,3821,3822],{},"key"," is the value passed back in the ",[1931,3825,2525],{}," request. For the shape of the ",[1931,3828,2529],{}," argument and the four ",[1931,3831,3832],{},"availableFilters"," variants (list, boolean, range, intervals), see ",[2038,3835,294],{"href":295},[2027,3837,3838],{"id":1921},"Links",[1912,3840,2032,3841,3844],{},[1916,3842,3843],{},"link"," defines a relationship between two entity types — for example, a Product has Variants, or a Category has Products. Links resolve to a list of target entity IDs for each source entity.",[2043,3846,3848],{"id":3847},"defining-a-link-token","Defining a Link Token",[1924,3850,3852],{"className":2056,"code":3851,"language":2058,"meta":2059,"style":1929},"// src/runtime/shared/tokens/store-locator.ts\nimport { defineLinkToken } from '@laioutr-core/core-types/orchestr';\n\nexport const StoreEventsLink = defineLinkToken('store-locator/store/events', {\n  label: 'Store Events',\n  source: 'StoreLocation',\n  target: 'StoreEvent',\n  type: 'multi',\n  defaultLimit: 10,\n});\n",[1931,3853,3854,3858,3879,3883,3909,3924,3939,3955,3969,3980],{"__ignoreMap":1929},[1934,3855,3856],{"class":1936,"line":1937},[1934,3857,2067],{"class":2066},[1934,3859,3860,3862,3864,3867,3869,3871,3873,3875,3877],{"class":1936,"line":1943},[1934,3861,2073],{"class":2072},[1934,3863,2077],{"class":2076},[1934,3865,3866],{"class":2080}," defineLinkToken",[1934,3868,2084],{"class":2076},[1934,3870,2087],{"class":2072},[1934,3872,2090],{"class":2076},[1934,3874,2118],{"class":2093},[1934,3876,2097],{"class":2076},[1934,3878,2100],{"class":2076},[1934,3880,3881],{"class":1936,"line":1949},[1934,3882,1977],{"emptyLinePlaceholder":1976},[1934,3884,3885,3887,3889,3892,3894,3896,3898,3900,3903,3905,3907],{"class":1936,"line":1955},[1934,3886,2131],{"class":2072},[1934,3888,2135],{"class":2134},[1934,3890,3891],{"class":2080}," StoreEventsLink ",[1934,3893,2141],{"class":2076},[1934,3895,3866],{"class":2144},[1934,3897,2147],{"class":2080},[1934,3899,2097],{"class":2076},[1934,3901,3902],{"class":2093},"store-locator/store/events",[1934,3904,2097],{"class":2076},[1934,3906,2157],{"class":2076},[1934,3908,2160],{"class":2076},[1934,3910,3911,3913,3915,3917,3920,3922],{"class":1936,"line":1961},[1934,3912,2200],{"class":2165},[1934,3914,2169],{"class":2076},[1934,3916,2090],{"class":2076},[1934,3918,3919],{"class":2093},"Store Events",[1934,3921,2097],{"class":2076},[1934,3923,2179],{"class":2076},[1934,3925,3926,3929,3931,3933,3935,3937],{"class":1936,"line":1967},[1934,3927,3928],{"class":2165},"  source",[1934,3930,2169],{"class":2076},[1934,3932,2090],{"class":2076},[1934,3934,2174],{"class":2093},[1934,3936,2097],{"class":2076},[1934,3938,2179],{"class":2076},[1934,3940,3941,3944,3946,3948,3951,3953],{"class":1936,"line":1973},[1934,3942,3943],{"class":2165},"  target",[1934,3945,2169],{"class":2076},[1934,3947,2090],{"class":2076},[1934,3949,3950],{"class":2093},"StoreEvent",[1934,3952,2097],{"class":2076},[1934,3954,2179],{"class":2076},[1934,3956,3957,3959,3961,3963,3965,3967],{"class":1936,"line":1980},[1934,3958,2184],{"class":2165},[1934,3960,2169],{"class":2076},[1934,3962,2090],{"class":2076},[1934,3964,2394],{"class":2093},[1934,3966,2097],{"class":2076},[1934,3968,2179],{"class":2076},[1934,3970,3971,3973,3975,3978],{"class":1936,"line":1986},[1934,3972,2484],{"class":2165},[1934,3974,2169],{"class":2076},[1934,3976,3977],{"class":2489}," 10",[1934,3979,2179],{"class":2076},[1934,3981,3982,3984,3986],{"class":1936,"line":1992},[1934,3983,2265],{"class":2076},[1934,3985,2258],{"class":2080},[1934,3987,2100],{"class":2076},[2536,3989,3991],{"id":3990},"link-token-fields","Link token fields",[2541,3993,3994,4004],{},[2544,3995,3996],{},[2547,3997,3998,4000,4002],{},[2550,3999,1395],{},[2550,4001,2554],{},[2550,4003,2557],{},[2559,4005,4006,4020,4035,4051,4062,4075,4086],{},[2547,4007,4008,4013,4015],{},[2564,4009,4010],{},[1931,4011,4012],{},"source",[2564,4014,2571],{},[2564,4016,4017,4018,2581],{},"The source entity type (e.g. ",[1931,4019,2577],{},[2547,4021,4022,4027,4029],{},[2564,4023,4024],{},[1931,4025,4026],{},"target",[2564,4028,2571],{},[2564,4030,4031,4032,2581],{},"The target entity type (e.g. ",[1931,4033,4034],{},"'ProductVariant'",[2547,4036,4037,4041,4043],{},[2564,4038,4039],{},[1931,4040,2588],{},[2564,4042,2571],{},[2564,4044,4045,4047,4048,4050],{},[1931,4046,2595],{}," for one-to-one, ",[1931,4049,2599],{}," for one-to-many relationships.",[2547,4052,4053,4057,4059],{},[2564,4054,4055],{},[1931,4056,2607],{},[2564,4058,2571],{},[2564,4060,4061],{},"Human-readable name for tooling.",[2547,4063,4064,4068,4070],{},[2564,4065,4066],{},[1931,4067,2292],{},[2564,4069,2621],{},[2564,4071,2635,4072,4074],{},[1931,4073,2394],{}," links.",[2547,4076,4077,4081,4083],{},[2564,4078,4079],{},[1931,4080,2648],{},[2564,4082,2621],{},[2564,4084,4085],{},"Longer description for documentation.",[2547,4087,4088,4093,4095],{},[2564,4089,4090],{},[1931,4091,4092],{},"nullable",[2564,4094,2621],{},[2564,4096,4097],{},"Whether the link can be absent for some source entities.",[2043,4099,4101],{"id":4100},"writing-a-link-handler","Writing a Link Handler",[1912,4103,4104,4105,4107],{},"Link handlers are files in your app's ",[1931,4106,2663],{}," directory. They receive source entity IDs and return the target IDs for each source.",[1924,4109,4111],{"className":2056,"code":4110,"language":2058,"meta":1929,"style":1929},"// src/runtime/server/orchestr/StoreLocation/events.link.ts\nimport { StoreEventsLink } from '../../shared/tokens/store-locator';\nimport { defineMyAppLink } from '../../middleware/defineMyApp';\n\nexport default defineMyAppLink(\n  StoreEventsLink,\n  async ({ entityIds, context, pagination }) => {\n    const results = await context.storeApi.getEvents(entityIds, {\n      limit: pagination?.limit ?? 10,\n    });\n\n    return {\n      links: results.map((result) => ({\n        sourceId: result.storeId,\n        targetIds: result.events.map((event) => event.id),\n        entityTotal: result.totalEvents,\n      })),\n    };\n  },\n);\n",[1931,4112,4113,4118,4139,4160,4164,4174,4181,4204,4235,4254,4262,4266,4272,4300,4316,4356,4372,4382,4386,4390],{"__ignoreMap":1929},[1934,4114,4115],{"class":1936,"line":1937},[1934,4116,4117],{"class":2066},"// src/runtime/server/orchestr/StoreLocation/events.link.ts\n",[1934,4119,4120,4122,4124,4127,4129,4131,4133,4135,4137],{"class":1936,"line":1943},[1934,4121,2073],{"class":2072},[1934,4123,2077],{"class":2076},[1934,4125,4126],{"class":2080}," StoreEventsLink",[1934,4128,2084],{"class":2076},[1934,4130,2087],{"class":2072},[1934,4132,2090],{"class":2076},[1934,4134,2695],{"class":2093},[1934,4136,2097],{"class":2076},[1934,4138,2100],{"class":2076},[1934,4140,4141,4143,4145,4148,4150,4152,4154,4156,4158],{"class":1936,"line":1949},[1934,4142,2073],{"class":2072},[1934,4144,2077],{"class":2076},[1934,4146,4147],{"class":2080}," defineMyAppLink",[1934,4149,2084],{"class":2076},[1934,4151,2087],{"class":2072},[1934,4153,2090],{"class":2076},[1934,4155,2717],{"class":2093},[1934,4157,2097],{"class":2076},[1934,4159,2100],{"class":2076},[1934,4161,4162],{"class":1936,"line":1955},[1934,4163,1977],{"emptyLinePlaceholder":1976},[1934,4165,4166,4168,4170,4172],{"class":1936,"line":1961},[1934,4167,2131],{"class":2072},[1934,4169,2732],{"class":2072},[1934,4171,4147],{"class":2144},[1934,4173,2737],{"class":2080},[1934,4175,4176,4179],{"class":1936,"line":1967},[1934,4177,4178],{"class":2080},"  StoreEventsLink",[1934,4180,2179],{"class":2076},[1934,4182,4183,4185,4187,4190,4192,4194,4196,4198,4200,4202],{"class":1936,"line":1973},[1934,4184,2749],{"class":2134},[1934,4186,2752],{"class":2076},[1934,4188,4189],{"class":2755}," entityIds",[1934,4191,2157],{"class":2076},[1934,4193,2761],{"class":2755},[1934,4195,2157],{"class":2076},[1934,4197,3030],{"class":2755},[1934,4199,2764],{"class":2076},[1934,4201,2767],{"class":2134},[1934,4203,2160],{"class":2076},[1934,4205,4206,4208,4211,4213,4215,4217,4219,4221,4223,4226,4228,4231,4233],{"class":1936,"line":1980},[1934,4207,2774],{"class":2134},[1934,4209,4210],{"class":2080}," results",[1934,4212,2780],{"class":2076},[1934,4214,2783],{"class":2072},[1934,4216,2761],{"class":2080},[1934,4218,2223],{"class":2076},[1934,4220,2790],{"class":2080},[1934,4222,2223],{"class":2076},[1934,4224,4225],{"class":2144},"getEvents",[1934,4227,2147],{"class":2165},[1934,4229,4230],{"class":2080},"entityIds",[1934,4232,2157],{"class":2076},[1934,4234,2160],{"class":2076},[1934,4236,4237,4239,4241,4243,4246,4248,4250,4252],{"class":1936,"line":1986},[1934,4238,3108],{"class":2165},[1934,4240,2169],{"class":2076},[1934,4242,3030],{"class":2080},[1934,4244,4245],{"class":2076},"?.",[1934,4247,2515],{"class":2080},[1934,4249,3322],{"class":2076},[1934,4251,3977],{"class":2489},[1934,4253,2179],{"class":2076},[1934,4255,4256,4258,4260],{"class":1936,"line":1992},[1934,4257,3153],{"class":2076},[1934,4259,2258],{"class":2165},[1934,4261,2100],{"class":2076},[1934,4263,4264],{"class":1936,"line":1998},[1934,4265,1977],{"emptyLinePlaceholder":1976},[1934,4267,4268,4270],{"class":1936,"line":2004},[1934,4269,2897],{"class":2072},[1934,4271,2160],{"class":2076},[1934,4273,4274,4277,4279,4281,4283,4285,4287,4289,4292,4294,4296,4298],{"class":1936,"line":2010},[1934,4275,4276],{"class":2165},"      links",[1934,4278,2169],{"class":2076},[1934,4280,4210],{"class":2080},[1934,4282,2223],{"class":2076},[1934,4284,3188],{"class":2144},[1934,4286,2147],{"class":2165},[1934,4288,2147],{"class":2076},[1934,4290,4291],{"class":2755},"result",[1934,4293,2258],{"class":2076},[1934,4295,2767],{"class":2134},[1934,4297,2820],{"class":2165},[1934,4299,2231],{"class":2076},[1934,4301,4302,4305,4307,4309,4311,4314],{"class":1936,"line":2016},[1934,4303,4304],{"class":2165},"        sourceId",[1934,4306,2169],{"class":2076},[1934,4308,3053],{"class":2080},[1934,4310,2223],{"class":2076},[1934,4312,4313],{"class":2080},"storeId",[1934,4315,2179],{"class":2076},[1934,4317,4318,4321,4323,4325,4327,4330,4332,4334,4336,4338,4341,4343,4345,4348,4350,4352,4354],{"class":1936,"line":2022},[1934,4319,4320],{"class":2165},"        targetIds",[1934,4322,2169],{"class":2076},[1934,4324,3053],{"class":2080},[1934,4326,2223],{"class":2076},[1934,4328,4329],{"class":2080},"events",[1934,4331,2223],{"class":2076},[1934,4333,3188],{"class":2144},[1934,4335,2147],{"class":2165},[1934,4337,2147],{"class":2076},[1934,4339,4340],{"class":2755},"event",[1934,4342,2258],{"class":2076},[1934,4344,2767],{"class":2134},[1934,4346,4347],{"class":2080}," event",[1934,4349,2223],{"class":2076},[1934,4351,2911],{"class":2080},[1934,4353,2258],{"class":2165},[1934,4355,2179],{"class":2076},[1934,4357,4358,4361,4363,4365,4367,4370],{"class":1936,"line":2922},[1934,4359,4360],{"class":2165},"        entityTotal",[1934,4362,2169],{"class":2076},[1934,4364,3053],{"class":2080},[1934,4366,2223],{"class":2076},[1934,4368,4369],{"class":2080},"totalEvents",[1934,4371,2179],{"class":2076},[1934,4373,4374,4377,4380],{"class":1936,"line":3164},[1934,4375,4376],{"class":2076},"      }",[1934,4378,4379],{"class":2165},"))",[1934,4381,2179],{"class":2076},[1934,4383,4384],{"class":1936,"line":3171},[1934,4385,3336],{"class":2076},[1934,4387,4388],{"class":1936,"line":3211},[1934,4389,2919],{"class":2076},[1934,4391,4392,4394],{"class":1936,"line":3228},[1934,4393,2258],{"class":2080},[1934,4395,2100],{"class":2076},[2502,4397,4398,4399,4401,4402,4405,4406,4409],{},"Make a single batched API call for all ",[1931,4400,4230],{},", not one call per id. Most backends support a list filter (e.g. ",[1931,4403,4404],{},"?id[]=1&id[]=2"," for REST or ",[1931,4407,4408],{},"where: { id_in: [...] }"," for GraphQL); use it. Per-id calls turn one product listing into N+1 backend round-trips and dominate response time.",[1912,4411,4412,4413,4416],{},"Like query handlers, link handlers also support the object form with ",[1931,4414,4415],{},"{ implements, run, cache }"," for additional configuration.",[2043,4418,4420],{"id":4419},"link-handler-arguments","Link handler arguments",[2541,4422,4423,4431],{},[2544,4424,4425],{},[2547,4426,4427,4429],{},[2550,4428,3383],{},[2550,4430,2557],{},[2559,4432,4433,4442,4455,4464,4473,4482],{},[2547,4434,4435,4439],{},[2564,4436,4437],{},[1931,4438,4230],{},[2564,4440,4441],{},"Source entity IDs to resolve links for.",[2547,4443,4444,4448],{},[2564,4445,4446],{},[1931,4447,2522],{},[2564,4449,4450,4452,4453,2223],{},[1931,4451,3418],{}," when the token sets ",[1931,4454,2292],{},[2547,4456,4457,4461],{},[2564,4458,4459],{},[1931,4460,2525],{},[2564,4462,4463],{},"Requested sorting key.",[2547,4465,4466,4470],{},[2564,4467,4468],{},[1931,4469,2529],{},[2564,4471,4472],{},"Selected filters.",[2547,4474,4475,4479],{},[2564,4476,4477],{},[1931,4478,3490],{},[2564,4480,4481],{},"Access data passed from query handlers.",[2547,4483,4484,4488],{},[2564,4485,4486],{},[1931,4487,3514],{},[2564,4489,4490],{},"Type-safe entity builder for inline entity data.",[2043,4492,4494],{"id":4493},"returning-link-results","Returning link results",[1912,4496,4497,4500,4501,4504],{},[1916,4498,4499],{},"Multi links"," return an array of ",[1931,4502,4503],{},"{ sourceId, targetIds }"," mappings:",[1924,4506,4508],{"className":2056,"code":4507,"language":2058,"meta":1929,"style":1929},"return {\n  links: [\n    { sourceId: 'store-1', targetIds: ['event-1', 'event-2'], entityTotal: 5 },\n    { sourceId: 'store-2', targetIds: ['event-3'], entityTotal: 1 },\n  ],\n};\n",[1931,4509,4510,4516,4525,4580,4622,4629],{"__ignoreMap":1929},[1934,4511,4512,4514],{"class":1936,"line":1937},[1934,4513,3543],{"class":2072},[1934,4515,2160],{"class":2076},[1934,4517,4518,4521,4523],{"class":1936,"line":1943},[1934,4519,4520],{"class":2165},"  links",[1934,4522,2169],{"class":2076},[1934,4524,3236],{"class":2080},[1934,4526,4527,4530,4533,4535,4537,4539,4541,4543,4546,4548,4550,4552,4555,4557,4559,4561,4564,4566,4568,4570,4573,4575,4578],{"class":1936,"line":1949},[1934,4528,4529],{"class":2076},"    {",[1934,4531,4532],{"class":2165}," sourceId",[1934,4534,2169],{"class":2076},[1934,4536,2090],{"class":2076},[1934,4538,3593],{"class":2093},[1934,4540,2097],{"class":2076},[1934,4542,2157],{"class":2076},[1934,4544,4545],{"class":2165}," targetIds",[1934,4547,2169],{"class":2076},[1934,4549,3588],{"class":2080},[1934,4551,2097],{"class":2076},[1934,4553,4554],{"class":2093},"event-1",[1934,4556,2097],{"class":2076},[1934,4558,2157],{"class":2076},[1934,4560,2090],{"class":2076},[1934,4562,4563],{"class":2093},"event-2",[1934,4565,2097],{"class":2076},[1934,4567,3616],{"class":2080},[1934,4569,2157],{"class":2076},[1934,4571,4572],{"class":2165}," entityTotal",[1934,4574,2169],{"class":2076},[1934,4576,4577],{"class":2489}," 5",[1934,4579,3271],{"class":2076},[1934,4581,4582,4584,4586,4588,4590,4592,4594,4596,4598,4600,4602,4604,4607,4609,4611,4613,4615,4617,4620],{"class":1936,"line":1955},[1934,4583,4529],{"class":2076},[1934,4585,4532],{"class":2165},[1934,4587,2169],{"class":2076},[1934,4589,2090],{"class":2076},[1934,4591,3602],{"class":2093},[1934,4593,2097],{"class":2076},[1934,4595,2157],{"class":2076},[1934,4597,4545],{"class":2165},[1934,4599,2169],{"class":2076},[1934,4601,3588],{"class":2080},[1934,4603,2097],{"class":2076},[1934,4605,4606],{"class":2093},"event-3",[1934,4608,2097],{"class":2076},[1934,4610,3616],{"class":2080},[1934,4612,2157],{"class":2076},[1934,4614,4572],{"class":2165},[1934,4616,2169],{"class":2076},[1934,4618,4619],{"class":2489}," 1",[1934,4621,3271],{"class":2076},[1934,4623,4624,4627],{"class":1936,"line":1961},[1934,4625,4626],{"class":2080},"  ]",[1934,4628,2179],{"class":2076},[1934,4630,4631],{"class":1936,"line":1967},[1934,4632,3808],{"class":2076},[1912,4634,4635,4636,1918,4638,4640,4641,4643],{},"Each multi-link entry can also include ",[1931,4637,3814],{},[1931,4639,3832],{}," for that specific source (using the same shape as multi-query responses). See ",[2038,4642,294],{"href":295}," for the filter format.",[1912,4645,4646,3529,4649,4652],{},[1916,4647,4648],{},"Single links",[1931,4650,4651],{},"{ sourceId, targetId }"," (singular) per entry:",[1924,4654,4656],{"className":2056,"code":4655,"language":2058,"meta":1929,"style":1929},"return {\n  links: [\n    { sourceId: 'product-1', targetId: 'brand-abc' },\n  ],\n};\n",[1931,4657,4658,4664,4672,4703,4709],{"__ignoreMap":1929},[1934,4659,4660,4662],{"class":1936,"line":1937},[1934,4661,3543],{"class":2072},[1934,4663,2160],{"class":2076},[1934,4665,4666,4668,4670],{"class":1936,"line":1943},[1934,4667,4520],{"class":2165},[1934,4669,2169],{"class":2076},[1934,4671,3236],{"class":2080},[1934,4673,4674,4676,4678,4680,4682,4685,4687,4689,4692,4694,4696,4699,4701],{"class":1936,"line":1949},[1934,4675,4529],{"class":2076},[1934,4677,4532],{"class":2165},[1934,4679,2169],{"class":2076},[1934,4681,2090],{"class":2076},[1934,4683,4684],{"class":2093},"product-1",[1934,4686,2097],{"class":2076},[1934,4688,2157],{"class":2076},[1934,4690,4691],{"class":2165}," targetId",[1934,4693,2169],{"class":2076},[1934,4695,2090],{"class":2076},[1934,4697,4698],{"class":2093},"brand-abc",[1934,4700,2097],{"class":2076},[1934,4702,3271],{"class":2076},[1934,4704,4705,4707],{"class":1936,"line":1955},[1934,4706,4626],{"class":2080},[1934,4708,2179],{"class":2076},[1934,4710,4711],{"class":1936,"line":1961},[1934,4712,3808],{"class":2076},[2027,4714,278],{"id":4715},"caching",[1912,4717,4718,4719,4721],{},"Both query and link handlers support caching with a ",[1931,4720,3368],{}," property:",[1924,4723,4725],{"className":2056,"code":4724,"language":2058,"meta":1929,"style":1929},"export default defineMyAppQuery({\n  implements: StoreSearchQuery,\n  cache: {\n    strategy: 'ttl',\n    ttl: '1 hour',\n    buildCacheKey: ({ input, pagination }) =>\n      `${input.query}-${pagination.limit}-${pagination.offset}`,\n  },\n  run: async (args) => { /* ... */ },\n});\n",[1931,4726,4727,4739,4749,4758,4774,4790,4810,4850,4854,4878],{"__ignoreMap":1929},[1934,4728,4729,4731,4733,4735,4737],{"class":1936,"line":1937},[1934,4730,2131],{"class":2072},[1934,4732,2732],{"class":2072},[1934,4734,2708],{"class":2144},[1934,4736,2147],{"class":2080},[1934,4738,2231],{"class":2076},[1934,4740,4741,4743,4745,4747],{"class":1936,"line":1943},[1934,4742,3001],{"class":2165},[1934,4744,2169],{"class":2076},[1934,4746,2948],{"class":2080},[1934,4748,2179],{"class":2076},[1934,4750,4751,4754,4756],{"class":1936,"line":1949},[1934,4752,4753],{"class":2165},"  cache",[1934,4755,2169],{"class":2076},[1934,4757,2160],{"class":2076},[1934,4759,4760,4763,4765,4767,4770,4772],{"class":1936,"line":1955},[1934,4761,4762],{"class":2165},"    strategy",[1934,4764,2169],{"class":2076},[1934,4766,2090],{"class":2076},[1934,4768,4769],{"class":2093},"ttl",[1934,4771,2097],{"class":2076},[1934,4773,2179],{"class":2076},[1934,4775,4776,4779,4781,4783,4786,4788],{"class":1936,"line":1961},[1934,4777,4778],{"class":2165},"    ttl",[1934,4780,2169],{"class":2076},[1934,4782,2090],{"class":2076},[1934,4784,4785],{"class":2093},"1 hour",[1934,4787,2097],{"class":2076},[1934,4789,2179],{"class":2076},[1934,4791,4792,4795,4797,4799,4801,4803,4805,4807],{"class":1936,"line":1967},[1934,4793,4794],{"class":2144},"    buildCacheKey",[1934,4796,2169],{"class":2076},[1934,4798,2752],{"class":2076},[1934,4800,2756],{"class":2755},[1934,4802,2157],{"class":2076},[1934,4804,3030],{"class":2755},[1934,4806,2764],{"class":2076},[1934,4808,4809],{"class":2134}," =>\n",[1934,4811,4812,4815,4817,4819,4821,4823,4826,4828,4830,4832,4834,4836,4838,4840,4842,4844,4846,4848],{"class":1936,"line":1973},[1934,4813,4814],{"class":2076},"      `${",[1934,4816,2507],{"class":2080},[1934,4818,2223],{"class":2076},[1934,4820,2035],{"class":2080},[1934,4822,2265],{"class":2076},[1934,4824,4825],{"class":2093},"-",[1934,4827,2868],{"class":2076},[1934,4829,2522],{"class":2080},[1934,4831,2223],{"class":2076},[1934,4833,2515],{"class":2080},[1934,4835,2265],{"class":2076},[1934,4837,4825],{"class":2093},[1934,4839,2868],{"class":2076},[1934,4841,2522],{"class":2080},[1934,4843,2223],{"class":2076},[1934,4845,3132],{"class":2080},[1934,4847,2877],{"class":2076},[1934,4849,2179],{"class":2076},[1934,4851,4852],{"class":1936,"line":1980},[1934,4853,2919],{"class":2076},[1934,4855,4856,4858,4860,4862,4864,4867,4869,4871,4873,4876],{"class":1936,"line":1986},[1934,4857,3012],{"class":2144},[1934,4859,2169],{"class":2076},[1934,4861,3017],{"class":2134},[1934,4863,2820],{"class":2076},[1934,4865,4866],{"class":2755},"args",[1934,4868,2258],{"class":2076},[1934,4870,2767],{"class":2134},[1934,4872,2077],{"class":2076},[1934,4874,4875],{"class":2066}," /* ... */",[1934,4877,3271],{"class":2076},[1934,4879,4880,4882,4884],{"class":1936,"line":1992},[1934,4881,2265],{"class":2076},[1934,4883,2258],{"class":2080},[1934,4885,2100],{"class":2076},[2541,4887,4888,4898],{},[2544,4889,4890],{},[2547,4891,4892,4895],{},[2550,4893,4894],{},"Strategy",[2550,4896,4897],{},"Behavior",[2559,4899,4900,4909,4919],{},[2547,4901,4902,4906],{},[2564,4903,4904],{},[1931,4905,4769],{},[2564,4907,4908],{},"Cache the result for a fixed duration.",[2547,4910,4911,4916],{},[2564,4912,4913],{},[1931,4914,4915],{},"swr",[2564,4917,4918],{},"Stale-while-revalidate — serve stale data while refreshing in the background.",[2547,4920,4921,4926],{},[2564,4922,4923],{},[1931,4924,4925],{},"live",[2564,4927,4928],{},"Disable caching (useful to explicitly mark a handler as uncacheable).",[1912,4930,2504,4931,4934,4935,4938,4939,4942],{},[1931,4932,4933],{},"buildCacheKey"," function receives the handler arguments and must return a unique string key. Return ",[1931,4936,4937],{},"null"," or ",[1931,4940,4941],{},"undefined"," to skip caching for a specific request.",[1912,4944,4945,4946,4948],{},"See ",[2038,4947,278],{"href":279}," for the full reference.",[2027,4950,4952],{"id":4951},"query-template-providers","Query Template Providers",[1912,4954,2032,4955,4958],{},[1916,4956,4957],{},"query template provider"," supplies valid input presets for a query token. Studio uses these to offer autocomplete when editors configure page queries (e.g. \"pick a category for this listing page\").",[1912,4960,4961,4962,4965],{},"Register a provider using the builder's ",[1931,4963,4964],{},"queryTemplateProvider"," shortcut:",[1924,4967,4969],{"className":2056,"code":4968,"language":2058,"meta":1929,"style":1929},"// src/runtime/server/orchestr/Product/byCategorySlug.template.ts\nimport { ProductsByCategorySlugQuery } from '@laioutr-core/canonical-types/ecommerce';\nimport { defineMyAppQueryTemplateProvider } from '../../middleware/defineMyApp';\n\nexport default defineMyAppQueryTemplateProvider({\n  for: ProductsByCategorySlugQuery,\n  run: async ({ input, context }) => {\n    const categories = await context.api.listCategories({ term: input.term, limit: 50 });\n\n    return categories.map((cat) => ({\n      input: { categorySlug: cat.slug },\n      label: cat.name,\n    }));\n  },\n});\n",[1931,4970,4971,4976,4998,5019,5023,5035,5046,5068,5123,5127,5152,5175,5190,5198,5202],{"__ignoreMap":1929},[1934,4972,4973],{"class":1936,"line":1937},[1934,4974,4975],{"class":2066},"// src/runtime/server/orchestr/Product/byCategorySlug.template.ts\n",[1934,4977,4978,4980,4982,4985,4987,4989,4991,4994,4996],{"class":1936,"line":1943},[1934,4979,2073],{"class":2072},[1934,4981,2077],{"class":2076},[1934,4983,4984],{"class":2080}," ProductsByCategorySlugQuery",[1934,4986,2084],{"class":2076},[1934,4988,2087],{"class":2072},[1934,4990,2090],{"class":2076},[1934,4992,4993],{"class":2093},"@laioutr-core/canonical-types/ecommerce",[1934,4995,2097],{"class":2076},[1934,4997,2100],{"class":2076},[1934,4999,5000,5002,5004,5007,5009,5011,5013,5015,5017],{"class":1936,"line":1949},[1934,5001,2073],{"class":2072},[1934,5003,2077],{"class":2076},[1934,5005,5006],{"class":2080}," defineMyAppQueryTemplateProvider",[1934,5008,2084],{"class":2076},[1934,5010,2087],{"class":2072},[1934,5012,2090],{"class":2076},[1934,5014,2717],{"class":2093},[1934,5016,2097],{"class":2076},[1934,5018,2100],{"class":2076},[1934,5020,5021],{"class":1936,"line":1955},[1934,5022,1977],{"emptyLinePlaceholder":1976},[1934,5024,5025,5027,5029,5031,5033],{"class":1936,"line":1961},[1934,5026,2131],{"class":2072},[1934,5028,2732],{"class":2072},[1934,5030,5006],{"class":2144},[1934,5032,2147],{"class":2080},[1934,5034,2231],{"class":2076},[1934,5036,5037,5040,5042,5044],{"class":1936,"line":1967},[1934,5038,5039],{"class":2165},"  for",[1934,5041,2169],{"class":2076},[1934,5043,4984],{"class":2080},[1934,5045,2179],{"class":2076},[1934,5047,5048,5050,5052,5054,5056,5058,5060,5062,5064,5066],{"class":1936,"line":1973},[1934,5049,3012],{"class":2144},[1934,5051,2169],{"class":2076},[1934,5053,3017],{"class":2134},[1934,5055,2752],{"class":2076},[1934,5057,2756],{"class":2755},[1934,5059,2157],{"class":2076},[1934,5061,2761],{"class":2755},[1934,5063,2764],{"class":2076},[1934,5065,2767],{"class":2134},[1934,5067,2160],{"class":2076},[1934,5069,5070,5072,5075,5077,5079,5081,5083,5086,5088,5091,5093,5095,5098,5100,5102,5104,5107,5109,5112,5114,5117,5119,5121],{"class":1936,"line":1980},[1934,5071,2774],{"class":2134},[1934,5073,5074],{"class":2080}," categories",[1934,5076,2780],{"class":2076},[1934,5078,2783],{"class":2072},[1934,5080,2761],{"class":2080},[1934,5082,2223],{"class":2076},[1934,5084,5085],{"class":2080},"api",[1934,5087,2223],{"class":2076},[1934,5089,5090],{"class":2144},"listCategories",[1934,5092,2147],{"class":2165},[1934,5094,2844],{"class":2076},[1934,5096,5097],{"class":2165}," term",[1934,5099,2169],{"class":2076},[1934,5101,2756],{"class":2080},[1934,5103,2223],{"class":2076},[1934,5105,5106],{"class":2080},"term",[1934,5108,2157],{"class":2076},[1934,5110,5111],{"class":2165}," limit",[1934,5113,2169],{"class":2076},[1934,5115,5116],{"class":2489}," 50",[1934,5118,2084],{"class":2076},[1934,5120,2258],{"class":2165},[1934,5122,2100],{"class":2076},[1934,5124,5125],{"class":1936,"line":1986},[1934,5126,1977],{"emptyLinePlaceholder":1976},[1934,5128,5129,5131,5133,5135,5137,5139,5141,5144,5146,5148,5150],{"class":1936,"line":1992},[1934,5130,2897],{"class":2072},[1934,5132,5074],{"class":2080},[1934,5134,2223],{"class":2076},[1934,5136,3188],{"class":2144},[1934,5138,2147],{"class":2165},[1934,5140,2147],{"class":2076},[1934,5142,5143],{"class":2755},"cat",[1934,5145,2258],{"class":2076},[1934,5147,2767],{"class":2134},[1934,5149,2820],{"class":2165},[1934,5151,2231],{"class":2076},[1934,5153,5154,5157,5159,5161,5164,5166,5169,5171,5173],{"class":1936,"line":1998},[1934,5155,5156],{"class":2165},"      input",[1934,5158,2169],{"class":2076},[1934,5160,2077],{"class":2076},[1934,5162,5163],{"class":2165}," categorySlug",[1934,5165,2169],{"class":2076},[1934,5167,5168],{"class":2080}," cat",[1934,5170,2223],{"class":2076},[1934,5172,2804],{"class":2080},[1934,5174,3271],{"class":2076},[1934,5176,5177,5180,5182,5184,5186,5188],{"class":1936,"line":2004},[1934,5178,5179],{"class":2165},"      label",[1934,5181,2169],{"class":2076},[1934,5183,5168],{"class":2080},[1934,5185,2223],{"class":2076},[1934,5187,3285],{"class":2080},[1934,5189,2179],{"class":2076},[1934,5191,5192,5194,5196],{"class":1936,"line":2010},[1934,5193,3153],{"class":2076},[1934,5195,4379],{"class":2165},[1934,5197,2100],{"class":2076},[1934,5199,5200],{"class":1936,"line":2016},[1934,5201,2919],{"class":2076},[1934,5203,5204,5206,5208],{"class":1936,"line":2022},[1934,5205,2265],{"class":2076},[1934,5207,2258],{"class":2080},[1934,5209,2100],{"class":2076},[1912,5211,5212,5213,5215,5216,5218,5219,5222,5223,5225],{},"The handler receives an ",[1931,5214,2507],{}," object with an optional ",[1931,5217,5106],{}," (the search text the editor typed in Studio) and returns an array of ",[1931,5220,5221],{},"{ input, label }"," objects. Each ",[1931,5224,2507],{}," must match the query token's Zod schema.",[1912,5227,5228,5229,5231],{},"Like other handlers, query template providers are auto-discovered from the ",[1931,5230,2663],{}," directory and support middleware context via the builder pattern.",[2027,5233,5235],{"id":5234},"advanced","Advanced",[2043,5237,5239],{"id":5238},"inline-entity-data","Inline Entity Data",[1912,5241,5242,5243,5246,5247,5250,5251,5254,5255,5257],{},"Instead of returning just IDs, query handlers can return entity component data inline. Declare the components your handler provides via ",[1931,5244,5245],{},"provides",", then return ",[1931,5248,5249],{},"{ entity }"," (single) or ",[1931,5252,5253],{},"{ entities }"," (multi) with pre-built entity objects using the ",[1931,5256,3514],{}," helper.",[1924,5259,5261],{"className":2056,"code":5260,"language":2058,"meta":1929,"style":1929},"export default defineMyAppQuery({\n  implements: StoreBySlugQuery,\n  provides: [StoreLocationBase, StoreLocationAddress],\n  run: async ({ input, context, $entity }) => {\n    const store = await context.storeApi.getBySlug(input.slug);\n\n    return {\n      entity: $entity({\n        id: store.id,\n        [StoreLocationBase]: { name: store.name, slug: store.slug },\n        [StoreLocationAddress]: { city: store.city, zip: store.zip },\n      }),\n    };\n  },\n});\n",[1931,5262,5263,5275,5285,5302,5329,5361,5365,5371,5384,5399,5439,5479,5487,5491,5495],{"__ignoreMap":1929},[1934,5264,5265,5267,5269,5271,5273],{"class":1936,"line":1937},[1934,5266,2131],{"class":2072},[1934,5268,2732],{"class":2072},[1934,5270,2708],{"class":2144},[1934,5272,2147],{"class":2080},[1934,5274,2231],{"class":2076},[1934,5276,5277,5279,5281,5283],{"class":1936,"line":1943},[1934,5278,3001],{"class":2165},[1934,5280,2169],{"class":2076},[1934,5282,2686],{"class":2080},[1934,5284,2179],{"class":2076},[1934,5286,5287,5290,5292,5295,5297,5300],{"class":1936,"line":1949},[1934,5288,5289],{"class":2165},"  provides",[1934,5291,2169],{"class":2076},[1934,5293,5294],{"class":2080}," [StoreLocationBase",[1934,5296,2157],{"class":2076},[1934,5298,5299],{"class":2080}," StoreLocationAddress]",[1934,5301,2179],{"class":2076},[1934,5303,5304,5306,5308,5310,5312,5314,5316,5318,5320,5323,5325,5327],{"class":1936,"line":1955},[1934,5305,3012],{"class":2144},[1934,5307,2169],{"class":2076},[1934,5309,3017],{"class":2134},[1934,5311,2752],{"class":2076},[1934,5313,2756],{"class":2755},[1934,5315,2157],{"class":2076},[1934,5317,2761],{"class":2755},[1934,5319,2157],{"class":2076},[1934,5321,5322],{"class":2755}," $entity",[1934,5324,2764],{"class":2076},[1934,5326,2767],{"class":2134},[1934,5328,2160],{"class":2076},[1934,5330,5331,5333,5335,5337,5339,5341,5343,5345,5347,5349,5351,5353,5355,5357,5359],{"class":1936,"line":1961},[1934,5332,2774],{"class":2134},[1934,5334,2777],{"class":2080},[1934,5336,2780],{"class":2076},[1934,5338,2783],{"class":2072},[1934,5340,2761],{"class":2080},[1934,5342,2223],{"class":2076},[1934,5344,2790],{"class":2080},[1934,5346,2223],{"class":2076},[1934,5348,2795],{"class":2144},[1934,5350,2147],{"class":2165},[1934,5352,2507],{"class":2080},[1934,5354,2223],{"class":2076},[1934,5356,2804],{"class":2080},[1934,5358,2258],{"class":2165},[1934,5360,2100],{"class":2076},[1934,5362,5363],{"class":1936,"line":1967},[1934,5364,1977],{"emptyLinePlaceholder":1976},[1934,5366,5367,5369],{"class":1936,"line":1973},[1934,5368,2897],{"class":2072},[1934,5370,2160],{"class":2076},[1934,5372,5373,5376,5378,5380,5382],{"class":1936,"line":1980},[1934,5374,5375],{"class":2165},"      entity",[1934,5377,2169],{"class":2076},[1934,5379,5322],{"class":2144},[1934,5381,2147],{"class":2165},[1934,5383,2231],{"class":2076},[1934,5385,5386,5389,5391,5393,5395,5397],{"class":1936,"line":1986},[1934,5387,5388],{"class":2165},"        id",[1934,5390,2169],{"class":2076},[1934,5392,2777],{"class":2080},[1934,5394,2223],{"class":2076},[1934,5396,2911],{"class":2080},[1934,5398,2179],{"class":2076},[1934,5400,5401,5404,5407,5409,5411,5413,5416,5418,5420,5422,5424,5426,5429,5431,5433,5435,5437],{"class":1936,"line":1992},[1934,5402,5403],{"class":2165},"        [",[1934,5405,5406],{"class":2080},"StoreLocationBase",[1934,5408,3616],{"class":2165},[1934,5410,2169],{"class":2076},[1934,5412,2077],{"class":2076},[1934,5414,5415],{"class":2165}," name",[1934,5417,2169],{"class":2076},[1934,5419,2777],{"class":2080},[1934,5421,2223],{"class":2076},[1934,5423,3285],{"class":2080},[1934,5425,2157],{"class":2076},[1934,5427,5428],{"class":2165}," slug",[1934,5430,2169],{"class":2076},[1934,5432,2777],{"class":2080},[1934,5434,2223],{"class":2076},[1934,5436,2804],{"class":2080},[1934,5438,3271],{"class":2076},[1934,5440,5441,5443,5446,5448,5450,5452,5455,5457,5459,5461,5463,5465,5468,5470,5472,5474,5477],{"class":1936,"line":1998},[1934,5442,5403],{"class":2165},[1934,5444,5445],{"class":2080},"StoreLocationAddress",[1934,5447,3616],{"class":2165},[1934,5449,2169],{"class":2076},[1934,5451,2077],{"class":2076},[1934,5453,5454],{"class":2165}," city",[1934,5456,2169],{"class":2076},[1934,5458,2777],{"class":2080},[1934,5460,2223],{"class":2076},[1934,5462,3689],{"class":2080},[1934,5464,2157],{"class":2076},[1934,5466,5467],{"class":2165}," zip",[1934,5469,2169],{"class":2076},[1934,5471,2777],{"class":2080},[1934,5473,2223],{"class":2076},[1934,5475,5476],{"class":2080},"zip",[1934,5478,3271],{"class":2076},[1934,5480,5481,5483,5485],{"class":1936,"line":2004},[1934,5482,4376],{"class":2076},[1934,5484,2258],{"class":2165},[1934,5486,2179],{"class":2076},[1934,5488,5489],{"class":1936,"line":2010},[1934,5490,3336],{"class":2076},[1934,5492,5493],{"class":1936,"line":2016},[1934,5494,2919],{"class":2076},[1934,5496,5497,5499,5501],{"class":1936,"line":2022},[1934,5498,2265],{"class":2076},[1934,5500,2258],{"class":2080},[1934,5502,2100],{"class":2076},[1912,5504,5505,5508,5509,5508,5511,5514,5515,2169],{},[1916,5506,5507],{},"How"," ",[1931,5510,5245],{},[1916,5512,5513],{},"interacts with component resolvers:"," Orchestr splits the frontend's requested components into two sets based on ",[1931,5516,5245],{},[5518,5519,5520,5527],"ul",{},[5521,5522,5523,5524,5526],"li",{},"Components listed in ",[1931,5525,5245],{}," are extracted from the query handler's inline entity data and returned directly.",[5521,5528,5529,5530,5532],{},"All remaining requested components are forwarded to ",[2038,5531,2040],{"href":291}," as usual.",[1912,5534,5535,5536,5539,5540,1918,5543,5546,5547,1918,5549,5551],{},"If your query handler declares ",[1931,5537,5538],{},"provides: [StoreLocationBase]"," but the frontend also requests ",[1931,5541,5542],{},"address",[1931,5544,5545],{},"media",", only ",[1931,5548,5542],{},[1931,5550,5545],{}," go to component resolvers. The query handler's inline data takes precedence for the components it declares. You do not need to provide all components; provide only those your query already has data for, and let resolvers handle the rest.",[1912,5553,5554],{},"Use this when your backend already returns component data as part of the query response (e.g. a search endpoint that includes product names and prices). If the data requires a separate API call per entity, let component resolvers handle it instead.",[2271,5556,5557,5558,5560],{},"For the pattern of providing one ephemeral component (search-position, attribution token) inline from a query handler while resolvers continue providing everything else, see the ",[2038,5559,254],{"href":255}," recipe.",[2043,5562,5564],{"id":5563},"inline-entity-data-on-links","Inline Entity Data on Links",[1912,5566,5567,5568,5246,5570,5573,5574,5576],{},"Link handlers can return entity component data inline too. Declare the components your link provides via ",[1931,5569,5245],{},[1931,5571,5572],{},"entities"," (with synthetic IDs and the ",[1931,5575,3514],{}," helper) per source mapping. The breadcrumb pattern is the canonical use case: each breadcrumb item is a one-shot projection of the source product, so there is no point indirecting through a component resolver.",[1924,5578,5580],{"className":2056,"code":5579,"language":2058,"meta":1929,"style":1929},"import { ProductBreadcrumbLink } from '@laioutr-core/canonical-types/ecommerce';\nimport { BreadcrumbItemBase } from '@laioutr-core/canonical-types/entity/breadcrumb-item';\n\nexport default defineMyAppLink({\n  implements: ProductBreadcrumbLink,\n  provides: [BreadcrumbItemBase],\n  run: async ({ entityIds, context, $entity }) => {\n    const products = await context.api.getProductsWithCategory(entityIds);\n\n    return {\n      links: products.map((product) => ({\n        sourceId: product.id,\n        entities: [\n          $entity({\n            id: `breadcrumb:${product.category.id}`,\n            base: () => ({\n              name: product.category.name,\n              link: { type: 'reference', reference: { type: 'Category', slug: product.category.slug, id: product.category.id } },\n            }),\n          }),\n          $entity({\n            id: `breadcrumb:${product.id}`,\n            base: () => ({\n              name: product.title,\n              link: { type: 'reference', reference: { type: 'Product', slug: product.slug, id: product.id } },\n            }),\n          }),\n        ],\n      })),\n    };\n  },\n});\n",[1931,5581,5582,5603,5625,5629,5641,5651,5662,5688,5718,5722,5728,5755,5770,5779,5788,5817,5833,5852,5927,5936,5945,5953,5975,5989,6004,6068,6076,6084,6092,6101,6106,6111],{"__ignoreMap":1929},[1934,5583,5584,5586,5588,5591,5593,5595,5597,5599,5601],{"class":1936,"line":1937},[1934,5585,2073],{"class":2072},[1934,5587,2077],{"class":2076},[1934,5589,5590],{"class":2080}," ProductBreadcrumbLink",[1934,5592,2084],{"class":2076},[1934,5594,2087],{"class":2072},[1934,5596,2090],{"class":2076},[1934,5598,4993],{"class":2093},[1934,5600,2097],{"class":2076},[1934,5602,2100],{"class":2076},[1934,5604,5605,5607,5609,5612,5614,5616,5618,5621,5623],{"class":1936,"line":1943},[1934,5606,2073],{"class":2072},[1934,5608,2077],{"class":2076},[1934,5610,5611],{"class":2080}," BreadcrumbItemBase",[1934,5613,2084],{"class":2076},[1934,5615,2087],{"class":2072},[1934,5617,2090],{"class":2076},[1934,5619,5620],{"class":2093},"@laioutr-core/canonical-types/entity/breadcrumb-item",[1934,5622,2097],{"class":2076},[1934,5624,2100],{"class":2076},[1934,5626,5627],{"class":1936,"line":1949},[1934,5628,1977],{"emptyLinePlaceholder":1976},[1934,5630,5631,5633,5635,5637,5639],{"class":1936,"line":1955},[1934,5632,2131],{"class":2072},[1934,5634,2732],{"class":2072},[1934,5636,4147],{"class":2144},[1934,5638,2147],{"class":2080},[1934,5640,2231],{"class":2076},[1934,5642,5643,5645,5647,5649],{"class":1936,"line":1961},[1934,5644,3001],{"class":2165},[1934,5646,2169],{"class":2076},[1934,5648,5590],{"class":2080},[1934,5650,2179],{"class":2076},[1934,5652,5653,5655,5657,5660],{"class":1936,"line":1967},[1934,5654,5289],{"class":2165},[1934,5656,2169],{"class":2076},[1934,5658,5659],{"class":2080}," [BreadcrumbItemBase]",[1934,5661,2179],{"class":2076},[1934,5663,5664,5666,5668,5670,5672,5674,5676,5678,5680,5682,5684,5686],{"class":1936,"line":1973},[1934,5665,3012],{"class":2144},[1934,5667,2169],{"class":2076},[1934,5669,3017],{"class":2134},[1934,5671,2752],{"class":2076},[1934,5673,4189],{"class":2755},[1934,5675,2157],{"class":2076},[1934,5677,2761],{"class":2755},[1934,5679,2157],{"class":2076},[1934,5681,5322],{"class":2755},[1934,5683,2764],{"class":2076},[1934,5685,2767],{"class":2134},[1934,5687,2160],{"class":2076},[1934,5689,5690,5692,5695,5697,5699,5701,5703,5705,5707,5710,5712,5714,5716],{"class":1936,"line":1980},[1934,5691,2774],{"class":2134},[1934,5693,5694],{"class":2080}," products",[1934,5696,2780],{"class":2076},[1934,5698,2783],{"class":2072},[1934,5700,2761],{"class":2080},[1934,5702,2223],{"class":2076},[1934,5704,5085],{"class":2080},[1934,5706,2223],{"class":2076},[1934,5708,5709],{"class":2144},"getProductsWithCategory",[1934,5711,2147],{"class":2165},[1934,5713,4230],{"class":2080},[1934,5715,2258],{"class":2165},[1934,5717,2100],{"class":2076},[1934,5719,5720],{"class":1936,"line":1986},[1934,5721,1977],{"emptyLinePlaceholder":1976},[1934,5723,5724,5726],{"class":1936,"line":1992},[1934,5725,2897],{"class":2072},[1934,5727,2160],{"class":2076},[1934,5729,5730,5732,5734,5736,5738,5740,5742,5744,5747,5749,5751,5753],{"class":1936,"line":1998},[1934,5731,4276],{"class":2165},[1934,5733,2169],{"class":2076},[1934,5735,5694],{"class":2080},[1934,5737,2223],{"class":2076},[1934,5739,3188],{"class":2144},[1934,5741,2147],{"class":2165},[1934,5743,2147],{"class":2076},[1934,5745,5746],{"class":2755},"product",[1934,5748,2258],{"class":2076},[1934,5750,2767],{"class":2134},[1934,5752,2820],{"class":2165},[1934,5754,2231],{"class":2076},[1934,5756,5757,5759,5761,5764,5766,5768],{"class":1936,"line":2004},[1934,5758,4304],{"class":2165},[1934,5760,2169],{"class":2076},[1934,5762,5763],{"class":2080}," product",[1934,5765,2223],{"class":2076},[1934,5767,2911],{"class":2080},[1934,5769,2179],{"class":2076},[1934,5771,5772,5775,5777],{"class":1936,"line":2010},[1934,5773,5774],{"class":2165},"        entities",[1934,5776,2169],{"class":2076},[1934,5778,3236],{"class":2165},[1934,5780,5781,5784,5786],{"class":1936,"line":2016},[1934,5782,5783],{"class":2144},"          $entity",[1934,5785,2147],{"class":2165},[1934,5787,2231],{"class":2076},[1934,5789,5790,5793,5795,5797,5800,5802,5804,5806,5809,5811,5813,5815],{"class":1936,"line":2022},[1934,5791,5792],{"class":2165},"            id",[1934,5794,2169],{"class":2076},[1934,5796,2862],{"class":2076},[1934,5798,5799],{"class":2093},"breadcrumb:",[1934,5801,2868],{"class":2076},[1934,5803,5746],{"class":2080},[1934,5805,2223],{"class":2076},[1934,5807,5808],{"class":2080},"category",[1934,5810,2223],{"class":2076},[1934,5812,2911],{"class":2080},[1934,5814,2877],{"class":2076},[1934,5816,2179],{"class":2076},[1934,5818,5819,5822,5824,5827,5829,5831],{"class":1936,"line":2922},[1934,5820,5821],{"class":2144},"            base",[1934,5823,2169],{"class":2076},[1934,5825,5826],{"class":2076}," ()",[1934,5828,2767],{"class":2134},[1934,5830,2820],{"class":2165},[1934,5832,2231],{"class":2076},[1934,5834,5835,5838,5840,5842,5844,5846,5848,5850],{"class":1936,"line":3164},[1934,5836,5837],{"class":2165},"              name",[1934,5839,2169],{"class":2076},[1934,5841,5763],{"class":2080},[1934,5843,2223],{"class":2076},[1934,5845,5808],{"class":2080},[1934,5847,2223],{"class":2076},[1934,5849,3285],{"class":2080},[1934,5851,2179],{"class":2076},[1934,5853,5854,5857,5859,5861,5863,5865,5867,5870,5872,5874,5877,5879,5881,5883,5885,5887,5889,5891,5893,5895,5897,5899,5901,5903,5905,5907,5909,5911,5913,5915,5917,5919,5921,5923,5925],{"class":1936,"line":3171},[1934,5855,5856],{"class":2165},"              link",[1934,5858,2169],{"class":2076},[1934,5860,2077],{"class":2076},[1934,5862,3709],{"class":2165},[1934,5864,2169],{"class":2076},[1934,5866,2090],{"class":2076},[1934,5868,5869],{"class":2093},"reference",[1934,5871,2097],{"class":2076},[1934,5873,2157],{"class":2076},[1934,5875,5876],{"class":2165}," reference",[1934,5878,2169],{"class":2076},[1934,5880,2077],{"class":2076},[1934,5882,3709],{"class":2165},[1934,5884,2169],{"class":2076},[1934,5886,2090],{"class":2076},[1934,5888,346],{"class":2093},[1934,5890,2097],{"class":2076},[1934,5892,2157],{"class":2076},[1934,5894,5428],{"class":2165},[1934,5896,2169],{"class":2076},[1934,5898,5763],{"class":2080},[1934,5900,2223],{"class":2076},[1934,5902,5808],{"class":2080},[1934,5904,2223],{"class":2076},[1934,5906,2804],{"class":2080},[1934,5908,2157],{"class":2076},[1934,5910,2902],{"class":2165},[1934,5912,2169],{"class":2076},[1934,5914,5763],{"class":2080},[1934,5916,2223],{"class":2076},[1934,5918,5808],{"class":2080},[1934,5920,2223],{"class":2076},[1934,5922,2911],{"class":2080},[1934,5924,2084],{"class":2076},[1934,5926,3271],{"class":2076},[1934,5928,5929,5932,5934],{"class":1936,"line":3211},[1934,5930,5931],{"class":2076},"            }",[1934,5933,2258],{"class":2165},[1934,5935,2179],{"class":2076},[1934,5937,5938,5941,5943],{"class":1936,"line":3228},[1934,5939,5940],{"class":2076},"          }",[1934,5942,2258],{"class":2165},[1934,5944,2179],{"class":2076},[1934,5946,5947,5949,5951],{"class":1936,"line":3239},[1934,5948,5783],{"class":2144},[1934,5950,2147],{"class":2165},[1934,5952,2231],{"class":2076},[1934,5954,5955,5957,5959,5961,5963,5965,5967,5969,5971,5973],{"class":1936,"line":3274},[1934,5956,5792],{"class":2165},[1934,5958,2169],{"class":2076},[1934,5960,2862],{"class":2076},[1934,5962,5799],{"class":2093},[1934,5964,2868],{"class":2076},[1934,5966,5746],{"class":2080},[1934,5968,2223],{"class":2076},[1934,5970,2911],{"class":2080},[1934,5972,2877],{"class":2076},[1934,5974,2179],{"class":2076},[1934,5976,5977,5979,5981,5983,5985,5987],{"class":1936,"line":3305},[1934,5978,5821],{"class":2144},[1934,5980,2169],{"class":2076},[1934,5982,5826],{"class":2076},[1934,5984,2767],{"class":2134},[1934,5986,2820],{"class":2165},[1934,5988,2231],{"class":2076},[1934,5990,5991,5993,5995,5997,5999,6002],{"class":1936,"line":3313},[1934,5992,5837],{"class":2165},[1934,5994,2169],{"class":2076},[1934,5996,5763],{"class":2080},[1934,5998,2223],{"class":2076},[1934,6000,6001],{"class":2080},"title",[1934,6003,2179],{"class":2076},[1934,6005,6006,6008,6010,6012,6014,6016,6018,6020,6022,6024,6026,6028,6030,6032,6034,6036,6038,6040,6042,6044,6046,6048,6050,6052,6054,6056,6058,6060,6062,6064,6066],{"class":1936,"line":3333},[1934,6007,5856],{"class":2165},[1934,6009,2169],{"class":2076},[1934,6011,2077],{"class":2076},[1934,6013,3709],{"class":2165},[1934,6015,2169],{"class":2076},[1934,6017,2090],{"class":2076},[1934,6019,5869],{"class":2093},[1934,6021,2097],{"class":2076},[1934,6023,2157],{"class":2076},[1934,6025,5876],{"class":2165},[1934,6027,2169],{"class":2076},[1934,6029,2077],{"class":2076},[1934,6031,3709],{"class":2165},[1934,6033,2169],{"class":2076},[1934,6035,2090],{"class":2076},[1934,6037,318],{"class":2093},[1934,6039,2097],{"class":2076},[1934,6041,2157],{"class":2076},[1934,6043,5428],{"class":2165},[1934,6045,2169],{"class":2076},[1934,6047,5763],{"class":2080},[1934,6049,2223],{"class":2076},[1934,6051,2804],{"class":2080},[1934,6053,2157],{"class":2076},[1934,6055,2902],{"class":2165},[1934,6057,2169],{"class":2076},[1934,6059,5763],{"class":2080},[1934,6061,2223],{"class":2076},[1934,6063,2911],{"class":2080},[1934,6065,2084],{"class":2076},[1934,6067,3271],{"class":2076},[1934,6069,6070,6072,6074],{"class":1936,"line":3339},[1934,6071,5931],{"class":2076},[1934,6073,2258],{"class":2165},[1934,6075,2179],{"class":2076},[1934,6077,6078,6080,6082],{"class":1936,"line":3344},[1934,6079,5940],{"class":2076},[1934,6081,2258],{"class":2165},[1934,6083,2179],{"class":2076},[1934,6085,6087,6090],{"class":1936,"line":6086},28,[1934,6088,6089],{"class":2165},"        ]",[1934,6091,2179],{"class":2076},[1934,6093,6095,6097,6099],{"class":1936,"line":6094},29,[1934,6096,4376],{"class":2076},[1934,6098,4379],{"class":2165},[1934,6100,2179],{"class":2076},[1934,6102,6104],{"class":1936,"line":6103},30,[1934,6105,3336],{"class":2076},[1934,6107,6109],{"class":1936,"line":6108},31,[1934,6110,2919],{"class":2076},[1934,6112,6114,6116,6118],{"class":1936,"line":6113},32,[1934,6115,2265],{"class":2076},[1934,6117,2258],{"class":2080},[1934,6119,2100],{"class":2076},[1912,6121,6122,6123,6126],{},"Prefix the synthetic IDs with the source token (e.g. ",[1931,6124,6125],{},"breadcrumb:${sourceId}",") so they cannot collide with real entity IDs.",[1912,6128,6129,6130,6133],{},"When the linked entities are real and reusable elsewhere (variants, related products, items in a list), return ",[1931,6131,6132],{},"targetIds"," instead and let component resolvers populate them. That path benefits from the component cache and lets other queries reuse the same entities.",[2043,6135,6137],{"id":6136},"passthrough-data","Passthrough Data",[1912,6139,6140,6143],{},[1916,6141,6142],{},"Passthrough"," lets query handlers forward raw backend data to component resolvers and link handlers, avoiding duplicate API calls. Data flows one way: query handler sets it, downstream handlers read it.",[1912,6145,6146,6147,6150,6151,6154],{},"Define a typed token with ",[1931,6148,6149],{},"createPassthroughToken",", then use the ",[1931,6152,6153],{},"PassthroughStore"," API:",[1924,6156,6158],{"className":2056,"code":6157,"language":2058,"meta":1929,"style":1929},"// tokens/passthrough.ts\nimport { createPassthroughToken } from '#orchestr/passthrough';\nexport const storeFragmentToken = createPassthroughToken\u003CStoreApiResponse>('store-fragment');\n\n// query handler\nexport default defineMyAppQuery(\n  StoreBySlugQuery,\n  async ({ input, context, passthrough }) => {\n    const store = await context.storeApi.getBySlug(input.slug);\n    passthrough.set(storeFragmentToken, store);\n    return { id: store.id };\n  },\n);\n\n// component resolver\nexport default defineMyAppResolver(\n  StoreLocationBase,\n  async ({ entityIds, passthrough, context }) => {\n    const cached = passthrough.get(storeFragmentToken);\n    const store = cached ?? await context.storeApi.getById(entityIds[0]);\n    return { /* ... */ };\n  },\n);\n",[1931,6159,6160,6165,6187,6223,6227,6232,6242,6248,6271,6303,6326,6344,6348,6354,6358,6363,6374,6381,6403,6427,6467,6477,6481],{"__ignoreMap":1929},[1934,6161,6162],{"class":1936,"line":1937},[1934,6163,6164],{"class":2066},"// tokens/passthrough.ts\n",[1934,6166,6167,6169,6171,6174,6176,6178,6180,6183,6185],{"class":1936,"line":1943},[1934,6168,2073],{"class":2072},[1934,6170,2077],{"class":2076},[1934,6172,6173],{"class":2080}," createPassthroughToken",[1934,6175,2084],{"class":2076},[1934,6177,2087],{"class":2072},[1934,6179,2090],{"class":2076},[1934,6181,6182],{"class":2093},"#orchestr/passthrough",[1934,6184,2097],{"class":2076},[1934,6186,2100],{"class":2076},[1934,6188,6189,6191,6193,6196,6198,6200,6203,6207,6210,6212,6214,6217,6219,6221],{"class":1936,"line":1949},[1934,6190,2131],{"class":2072},[1934,6192,2135],{"class":2134},[1934,6194,6195],{"class":2080}," storeFragmentToken ",[1934,6197,2141],{"class":2076},[1934,6199,6173],{"class":2144},[1934,6201,6202],{"class":2076},"\u003C",[1934,6204,6206],{"class":6205},"sBMFI","StoreApiResponse",[1934,6208,6209],{"class":2076},">",[1934,6211,2147],{"class":2080},[1934,6213,2097],{"class":2076},[1934,6215,6216],{"class":2093},"store-fragment",[1934,6218,2097],{"class":2076},[1934,6220,2258],{"class":2080},[1934,6222,2100],{"class":2076},[1934,6224,6225],{"class":1936,"line":1955},[1934,6226,1977],{"emptyLinePlaceholder":1976},[1934,6228,6229],{"class":1936,"line":1961},[1934,6230,6231],{"class":2066},"// query handler\n",[1934,6233,6234,6236,6238,6240],{"class":1936,"line":1967},[1934,6235,2131],{"class":2072},[1934,6237,2732],{"class":2072},[1934,6239,2708],{"class":2144},[1934,6241,2737],{"class":2080},[1934,6243,6244,6246],{"class":1936,"line":1973},[1934,6245,2742],{"class":2080},[1934,6247,2179],{"class":2076},[1934,6249,6250,6252,6254,6256,6258,6260,6262,6265,6267,6269],{"class":1936,"line":1980},[1934,6251,2749],{"class":2134},[1934,6253,2752],{"class":2076},[1934,6255,2756],{"class":2755},[1934,6257,2157],{"class":2076},[1934,6259,2761],{"class":2755},[1934,6261,2157],{"class":2076},[1934,6263,6264],{"class":2755}," passthrough",[1934,6266,2764],{"class":2076},[1934,6268,2767],{"class":2134},[1934,6270,2160],{"class":2076},[1934,6272,6273,6275,6277,6279,6281,6283,6285,6287,6289,6291,6293,6295,6297,6299,6301],{"class":1936,"line":1986},[1934,6274,2774],{"class":2134},[1934,6276,2777],{"class":2080},[1934,6278,2780],{"class":2076},[1934,6280,2783],{"class":2072},[1934,6282,2761],{"class":2080},[1934,6284,2223],{"class":2076},[1934,6286,2790],{"class":2080},[1934,6288,2223],{"class":2076},[1934,6290,2795],{"class":2144},[1934,6292,2147],{"class":2165},[1934,6294,2507],{"class":2080},[1934,6296,2223],{"class":2076},[1934,6298,2804],{"class":2080},[1934,6300,2258],{"class":2165},[1934,6302,2100],{"class":2076},[1934,6304,6305,6308,6310,6313,6315,6318,6320,6322,6324],{"class":1936,"line":1992},[1934,6306,6307],{"class":2080},"    passthrough",[1934,6309,2223],{"class":2076},[1934,6311,6312],{"class":2144},"set",[1934,6314,2147],{"class":2165},[1934,6316,6317],{"class":2080},"storeFragmentToken",[1934,6319,2157],{"class":2076},[1934,6321,2777],{"class":2080},[1934,6323,2258],{"class":2165},[1934,6325,2100],{"class":2076},[1934,6327,6328,6330,6332,6334,6336,6338,6340,6342],{"class":1936,"line":1998},[1934,6329,2897],{"class":2072},[1934,6331,2077],{"class":2076},[1934,6333,2902],{"class":2165},[1934,6335,2169],{"class":2076},[1934,6337,2777],{"class":2080},[1934,6339,2223],{"class":2076},[1934,6341,2911],{"class":2080},[1934,6343,2914],{"class":2076},[1934,6345,6346],{"class":1936,"line":2004},[1934,6347,2919],{"class":2076},[1934,6349,6350,6352],{"class":1936,"line":2010},[1934,6351,2258],{"class":2080},[1934,6353,2100],{"class":2076},[1934,6355,6356],{"class":1936,"line":2016},[1934,6357,1977],{"emptyLinePlaceholder":1976},[1934,6359,6360],{"class":1936,"line":2022},[1934,6361,6362],{"class":2066},"// component resolver\n",[1934,6364,6365,6367,6369,6372],{"class":1936,"line":2922},[1934,6366,2131],{"class":2072},[1934,6368,2732],{"class":2072},[1934,6370,6371],{"class":2144}," defineMyAppResolver",[1934,6373,2737],{"class":2080},[1934,6375,6376,6379],{"class":1936,"line":3164},[1934,6377,6378],{"class":2080},"  StoreLocationBase",[1934,6380,2179],{"class":2076},[1934,6382,6383,6385,6387,6389,6391,6393,6395,6397,6399,6401],{"class":1936,"line":3171},[1934,6384,2749],{"class":2134},[1934,6386,2752],{"class":2076},[1934,6388,4189],{"class":2755},[1934,6390,2157],{"class":2076},[1934,6392,6264],{"class":2755},[1934,6394,2157],{"class":2076},[1934,6396,2761],{"class":2755},[1934,6398,2764],{"class":2076},[1934,6400,2767],{"class":2134},[1934,6402,2160],{"class":2076},[1934,6404,6405,6407,6410,6412,6414,6416,6419,6421,6423,6425],{"class":1936,"line":3211},[1934,6406,2774],{"class":2134},[1934,6408,6409],{"class":2080}," cached",[1934,6411,2780],{"class":2076},[1934,6413,6264],{"class":2080},[1934,6415,2223],{"class":2076},[1934,6417,6418],{"class":2144},"get",[1934,6420,2147],{"class":2165},[1934,6422,6317],{"class":2080},[1934,6424,2258],{"class":2165},[1934,6426,2100],{"class":2076},[1934,6428,6429,6431,6433,6435,6437,6439,6441,6443,6445,6447,6449,6452,6454,6456,6459,6462,6465],{"class":1936,"line":3228},[1934,6430,2774],{"class":2134},[1934,6432,2777],{"class":2080},[1934,6434,2780],{"class":2076},[1934,6436,6409],{"class":2080},[1934,6438,3322],{"class":2076},[1934,6440,2783],{"class":2072},[1934,6442,2761],{"class":2080},[1934,6444,2223],{"class":2076},[1934,6446,2790],{"class":2080},[1934,6448,2223],{"class":2076},[1934,6450,6451],{"class":2144},"getById",[1934,6453,2147],{"class":2165},[1934,6455,4230],{"class":2080},[1934,6457,6458],{"class":2165},"[",[1934,6460,6461],{"class":2489},"0",[1934,6463,6464],{"class":2165},"])",[1934,6466,2100],{"class":2076},[1934,6468,6469,6471,6473,6475],{"class":1936,"line":3239},[1934,6470,2897],{"class":2072},[1934,6472,2077],{"class":2076},[1934,6474,4875],{"class":2066},[1934,6476,2914],{"class":2076},[1934,6478,6479],{"class":1936,"line":3274},[1934,6480,2919],{"class":2076},[1934,6482,6483,6485],{"class":1936,"line":3305},[1934,6484,2258],{"class":2080},[1934,6486,2100],{"class":2076},[1912,6488,2504,6489,6491],{},[1931,6490,6153],{}," exposes four methods:",[2541,6493,6494,6503],{},[2544,6495,6496],{},[2547,6497,6498,6501],{},[2550,6499,6500],{},"Method",[2550,6502,2557],{},[2559,6504,6505,6514,6526,6536],{},[2547,6506,6507,6511],{},[2564,6508,6509],{},[1931,6510,6312],{},[2564,6512,6513],{},"Store a value under a typed token.",[2547,6515,6516,6520],{},[2564,6517,6518],{},[1931,6519,6418],{},[2564,6521,6522,6523,6525],{},"Retrieve the value, or ",[1931,6524,4941],{}," if not set.",[2547,6527,6528,6533],{},[2564,6529,6530],{},[1931,6531,6532],{},"require",[2564,6534,6535],{},"Retrieve the value, or throw if not set.",[2547,6537,6538,6543],{},[2564,6539,6540],{},[1931,6541,6542],{},"has",[2564,6544,6545],{},"Check whether a token has been set.",[2536,6547,6549],{"id":6548},"where-to-define-passthrough-tokens","Where to define passthrough tokens",[1912,6551,6552,6553,6555,6556,6559,6560,2169],{},"Place every ",[1931,6554,6149],{}," call your app makes in one file (e.g. ",[1931,6557,6558],{},"server/const/passthroughTokens.ts",") and namespace each token with your app's package id. The built-in connectors use ",[1931,6561,6562],{},"@laioutr-app/\u003Capp-name>/\u003Ctoken-name>",[1924,6564,6566],{"className":2056,"code":6565,"language":2058,"meta":1929,"style":1929},"// src/runtime/server/const/passthroughTokens.ts\nimport { createPassthroughToken } from '#imports';\nimport type { ProductFragment, CartFragment } from '../types/storefront.generated';\n\nexport const productsFragmentToken = createPassthroughToken\u003CProductFragment[]>(\n  '@laioutr-app/shopify/productsFragment',\n);\n\nexport const cartFragmentToken = createPassthroughToken\u003CCartFragment>(\n  '@laioutr-app/shopify/cartFragment',\n);\n",[1931,6567,6568,6573,6594,6623,6627,6652,6664,6670,6674,6696,6707],{"__ignoreMap":1929},[1934,6569,6570],{"class":1936,"line":1937},[1934,6571,6572],{"class":2066},"// src/runtime/server/const/passthroughTokens.ts\n",[1934,6574,6575,6577,6579,6581,6583,6585,6587,6590,6592],{"class":1936,"line":1943},[1934,6576,2073],{"class":2072},[1934,6578,2077],{"class":2076},[1934,6580,6173],{"class":2080},[1934,6582,2084],{"class":2076},[1934,6584,2087],{"class":2072},[1934,6586,2090],{"class":2076},[1934,6588,6589],{"class":2093},"#imports",[1934,6591,2097],{"class":2076},[1934,6593,2100],{"class":2076},[1934,6595,6596,6598,6600,6602,6605,6607,6610,6612,6614,6616,6619,6621],{"class":1936,"line":1949},[1934,6597,2073],{"class":2072},[1934,6599,3709],{"class":2072},[1934,6601,2077],{"class":2076},[1934,6603,6604],{"class":2080}," ProductFragment",[1934,6606,2157],{"class":2076},[1934,6608,6609],{"class":2080}," CartFragment",[1934,6611,2084],{"class":2076},[1934,6613,2087],{"class":2072},[1934,6615,2090],{"class":2076},[1934,6617,6618],{"class":2093},"../types/storefront.generated",[1934,6620,2097],{"class":2076},[1934,6622,2100],{"class":2076},[1934,6624,6625],{"class":1936,"line":1955},[1934,6626,1977],{"emptyLinePlaceholder":1976},[1934,6628,6629,6631,6633,6636,6638,6640,6642,6645,6648,6650],{"class":1936,"line":1961},[1934,6630,2131],{"class":2072},[1934,6632,2135],{"class":2134},[1934,6634,6635],{"class":2080}," productsFragmentToken ",[1934,6637,2141],{"class":2076},[1934,6639,6173],{"class":2144},[1934,6641,6202],{"class":2076},[1934,6643,6644],{"class":6205},"ProductFragment",[1934,6646,6647],{"class":2080},"[]",[1934,6649,6209],{"class":2076},[1934,6651,2737],{"class":2080},[1934,6653,6654,6657,6660,6662],{"class":1936,"line":1967},[1934,6655,6656],{"class":2076},"  '",[1934,6658,6659],{"class":2093},"@laioutr-app/shopify/productsFragment",[1934,6661,2097],{"class":2076},[1934,6663,2179],{"class":2076},[1934,6665,6666,6668],{"class":1936,"line":1973},[1934,6667,2258],{"class":2080},[1934,6669,2100],{"class":2076},[1934,6671,6672],{"class":1936,"line":1980},[1934,6673,1977],{"emptyLinePlaceholder":1976},[1934,6675,6676,6678,6680,6683,6685,6687,6689,6692,6694],{"class":1936,"line":1986},[1934,6677,2131],{"class":2072},[1934,6679,2135],{"class":2134},[1934,6681,6682],{"class":2080}," cartFragmentToken ",[1934,6684,2141],{"class":2076},[1934,6686,6173],{"class":2144},[1934,6688,6202],{"class":2076},[1934,6690,6691],{"class":6205},"CartFragment",[1934,6693,6209],{"class":2076},[1934,6695,2737],{"class":2080},[1934,6697,6698,6700,6703,6705],{"class":1936,"line":1992},[1934,6699,6656],{"class":2076},[1934,6701,6702],{"class":2093},"@laioutr-app/shopify/cartFragment",[1934,6704,2097],{"class":2076},[1934,6706,2179],{"class":2076},[1934,6708,6709,6711],{"class":1936,"line":1998},[1934,6710,2258],{"class":2080},[1934,6712,2100],{"class":2076},[1912,6714,6715],{},"Centralizing the tokens stops two handlers from declaring the same token with different types. The namespace prefix prevents id collisions when several connector apps run in the same project.",[2043,6717,2504,6719,6721],{"id":6718},"the-shouldload-helper",[1931,6720,3478],{}," helper",[1912,6723,6724,6725,6727],{},"When your backend supports selective field loading (e.g. GraphQL), use ",[1931,6726,3478],{}," to skip fields the frontend did not request:",[1924,6729,6731],{"className":2056,"code":6730,"language":2058,"meta":1929,"style":1929},"const response = await context.queryStorefront(ProductBySlugQuery, {\n  handle: input.slug,\n  // Check if a direct component is requested\n  includeMedia: shouldLoad('media'),\n  includeDescription: shouldLoad('description'),\n});\n",[1931,6732,6733,6759,6774,6779,6801,6822],{"__ignoreMap":1929},[1934,6734,6735,6738,6741,6743,6745,6747,6749,6752,6755,6757],{"class":1936,"line":1937},[1934,6736,6737],{"class":2134},"const",[1934,6739,6740],{"class":2080}," response ",[1934,6742,2141],{"class":2076},[1934,6744,2783],{"class":2072},[1934,6746,2761],{"class":2080},[1934,6748,2223],{"class":2076},[1934,6750,6751],{"class":2144},"queryStorefront",[1934,6753,6754],{"class":2080},"(ProductBySlugQuery",[1934,6756,2157],{"class":2076},[1934,6758,2160],{"class":2076},[1934,6760,6761,6764,6766,6768,6770,6772],{"class":1936,"line":1943},[1934,6762,6763],{"class":2165},"  handle",[1934,6765,2169],{"class":2076},[1934,6767,2756],{"class":2080},[1934,6769,2223],{"class":2076},[1934,6771,2804],{"class":2080},[1934,6773,2179],{"class":2076},[1934,6775,6776],{"class":1936,"line":1949},[1934,6777,6778],{"class":2066},"  // Check if a direct component is requested\n",[1934,6780,6781,6784,6786,6789,6791,6793,6795,6797,6799],{"class":1936,"line":1955},[1934,6782,6783],{"class":2165},"  includeMedia",[1934,6785,2169],{"class":2076},[1934,6787,6788],{"class":2144}," shouldLoad",[1934,6790,2147],{"class":2080},[1934,6792,2097],{"class":2076},[1934,6794,5545],{"class":2093},[1934,6796,2097],{"class":2076},[1934,6798,2258],{"class":2080},[1934,6800,2179],{"class":2076},[1934,6802,6803,6806,6808,6810,6812,6814,6816,6818,6820],{"class":1936,"line":1961},[1934,6804,6805],{"class":2165},"  includeDescription",[1934,6807,2169],{"class":2076},[1934,6809,6788],{"class":2144},[1934,6811,2147],{"class":2080},[1934,6813,2097],{"class":2076},[1934,6815,2648],{"class":2093},[1934,6817,2097],{"class":2076},[1934,6819,2258],{"class":2080},[1934,6821,2179],{"class":2076},[1934,6823,6824,6826,6828],{"class":1936,"line":1967},[1934,6825,2265],{"class":2076},[1934,6827,2258],{"class":2080},[1934,6829,2100],{"class":2076},[1912,6831,6832,6834,6835,6838],{},[1931,6833,3478],{}," also accepts a ",[1916,6836,6837],{},"path array"," to check components requested on nested links. Pass link tokens and component tokens to walk the wire query's link tree: each element except the last navigates into a link, and the last element checks for a component (or link) at that level.",[1912,6840,6841],{},"Here is a real-world pattern from a category query that conditionally includes product data depending on what the frontend requested:",[1924,6843,6845],{"className":2056,"code":6844,"language":2058,"meta":1929,"style":1929},"import { CategoryProductsLink, ProductVariantsLink } from '@laioutr-core/canonical-types/ecommerce';\n\nexport default defineMyAppQuery(CategoryBySlugQuery, async ({ input, context, shouldLoad }) => {\n  const response = await context.api.getCategoryBySlug(input.slug, {\n    // Direct components on the category itself\n    includeBase: shouldLoad(CategoryBase),\n    includeMedia: shouldLoad(CategoryMedia),\n\n    // Does the frontend want the CategoryProducts link at all?\n    includeProducts: shouldLoad([CategoryProductsLink]),\n\n    // Components on the linked products (one level deep)\n    includeProductBase: shouldLoad([CategoryProductsLink, ProductBase]),\n    includeProductPrices: shouldLoad([CategoryProductsLink, ProductPrices]),\n    includeProductMedia: shouldLoad([CategoryProductsLink, ProductMedia]),\n\n    // Two levels deep: variant components on linked products\n    includeVariants: shouldLoad([CategoryProductsLink, ProductVariantsLink]),\n    includeVariantBase: shouldLoad([CategoryProductsLink, ProductVariantsLink, ProductVariantBase]),\n  });\n\n  // ...\n});\n",[1931,6846,6847,6873,6877,6910,6945,6950,6968,6986,6990,6995,7014,7018,7023,7045,7067,7089,7093,7098,7119,7145,7153,7157,7162],{"__ignoreMap":1929},[1934,6848,6849,6851,6853,6856,6858,6861,6863,6865,6867,6869,6871],{"class":1936,"line":1937},[1934,6850,2073],{"class":2072},[1934,6852,2077],{"class":2076},[1934,6854,6855],{"class":2080}," CategoryProductsLink",[1934,6857,2157],{"class":2076},[1934,6859,6860],{"class":2080}," ProductVariantsLink",[1934,6862,2084],{"class":2076},[1934,6864,2087],{"class":2072},[1934,6866,2090],{"class":2076},[1934,6868,4993],{"class":2093},[1934,6870,2097],{"class":2076},[1934,6872,2100],{"class":2076},[1934,6874,6875],{"class":1936,"line":1943},[1934,6876,1977],{"emptyLinePlaceholder":1976},[1934,6878,6879,6881,6883,6885,6888,6890,6892,6894,6896,6898,6900,6902,6904,6906,6908],{"class":1936,"line":1949},[1934,6880,2131],{"class":2072},[1934,6882,2732],{"class":2072},[1934,6884,2708],{"class":2144},[1934,6886,6887],{"class":2080},"(CategoryBySlugQuery",[1934,6889,2157],{"class":2076},[1934,6891,3017],{"class":2134},[1934,6893,2752],{"class":2076},[1934,6895,2756],{"class":2755},[1934,6897,2157],{"class":2076},[1934,6899,2761],{"class":2755},[1934,6901,2157],{"class":2076},[1934,6903,6788],{"class":2755},[1934,6905,2764],{"class":2076},[1934,6907,2767],{"class":2134},[1934,6909,2160],{"class":2076},[1934,6911,6912,6915,6918,6920,6922,6924,6926,6928,6930,6933,6935,6937,6939,6941,6943],{"class":1936,"line":1955},[1934,6913,6914],{"class":2134},"  const",[1934,6916,6917],{"class":2080}," response",[1934,6919,2780],{"class":2076},[1934,6921,2783],{"class":2072},[1934,6923,2761],{"class":2080},[1934,6925,2223],{"class":2076},[1934,6927,5085],{"class":2080},[1934,6929,2223],{"class":2076},[1934,6931,6932],{"class":2144},"getCategoryBySlug",[1934,6934,2147],{"class":2165},[1934,6936,2507],{"class":2080},[1934,6938,2223],{"class":2076},[1934,6940,2804],{"class":2080},[1934,6942,2157],{"class":2076},[1934,6944,2160],{"class":2076},[1934,6946,6947],{"class":1936,"line":1961},[1934,6948,6949],{"class":2066},"    // Direct components on the category itself\n",[1934,6951,6952,6955,6957,6959,6961,6964,6966],{"class":1936,"line":1967},[1934,6953,6954],{"class":2165},"    includeBase",[1934,6956,2169],{"class":2076},[1934,6958,6788],{"class":2144},[1934,6960,2147],{"class":2165},[1934,6962,6963],{"class":2080},"CategoryBase",[1934,6965,2258],{"class":2165},[1934,6967,2179],{"class":2076},[1934,6969,6970,6973,6975,6977,6979,6982,6984],{"class":1936,"line":1973},[1934,6971,6972],{"class":2165},"    includeMedia",[1934,6974,2169],{"class":2076},[1934,6976,6788],{"class":2144},[1934,6978,2147],{"class":2165},[1934,6980,6981],{"class":2080},"CategoryMedia",[1934,6983,2258],{"class":2165},[1934,6985,2179],{"class":2076},[1934,6987,6988],{"class":1936,"line":1980},[1934,6989,1977],{"emptyLinePlaceholder":1976},[1934,6991,6992],{"class":1936,"line":1986},[1934,6993,6994],{"class":2066},"    // Does the frontend want the CategoryProducts link at all?\n",[1934,6996,6997,7000,7002,7004,7007,7010,7012],{"class":1936,"line":1992},[1934,6998,6999],{"class":2165},"    includeProducts",[1934,7001,2169],{"class":2076},[1934,7003,6788],{"class":2144},[1934,7005,7006],{"class":2165},"([",[1934,7008,7009],{"class":2080},"CategoryProductsLink",[1934,7011,6464],{"class":2165},[1934,7013,2179],{"class":2076},[1934,7015,7016],{"class":1936,"line":1998},[1934,7017,1977],{"emptyLinePlaceholder":1976},[1934,7019,7020],{"class":1936,"line":2004},[1934,7021,7022],{"class":2066},"    // Components on the linked products (one level deep)\n",[1934,7024,7025,7028,7030,7032,7034,7036,7038,7041,7043],{"class":1936,"line":2010},[1934,7026,7027],{"class":2165},"    includeProductBase",[1934,7029,2169],{"class":2076},[1934,7031,6788],{"class":2144},[1934,7033,7006],{"class":2165},[1934,7035,7009],{"class":2080},[1934,7037,2157],{"class":2076},[1934,7039,7040],{"class":2080}," ProductBase",[1934,7042,6464],{"class":2165},[1934,7044,2179],{"class":2076},[1934,7046,7047,7050,7052,7054,7056,7058,7060,7063,7065],{"class":1936,"line":2016},[1934,7048,7049],{"class":2165},"    includeProductPrices",[1934,7051,2169],{"class":2076},[1934,7053,6788],{"class":2144},[1934,7055,7006],{"class":2165},[1934,7057,7009],{"class":2080},[1934,7059,2157],{"class":2076},[1934,7061,7062],{"class":2080}," ProductPrices",[1934,7064,6464],{"class":2165},[1934,7066,2179],{"class":2076},[1934,7068,7069,7072,7074,7076,7078,7080,7082,7085,7087],{"class":1936,"line":2022},[1934,7070,7071],{"class":2165},"    includeProductMedia",[1934,7073,2169],{"class":2076},[1934,7075,6788],{"class":2144},[1934,7077,7006],{"class":2165},[1934,7079,7009],{"class":2080},[1934,7081,2157],{"class":2076},[1934,7083,7084],{"class":2080}," ProductMedia",[1934,7086,6464],{"class":2165},[1934,7088,2179],{"class":2076},[1934,7090,7091],{"class":1936,"line":2922},[1934,7092,1977],{"emptyLinePlaceholder":1976},[1934,7094,7095],{"class":1936,"line":3164},[1934,7096,7097],{"class":2066},"    // Two levels deep: variant components on linked products\n",[1934,7099,7100,7103,7105,7107,7109,7111,7113,7115,7117],{"class":1936,"line":3171},[1934,7101,7102],{"class":2165},"    includeVariants",[1934,7104,2169],{"class":2076},[1934,7106,6788],{"class":2144},[1934,7108,7006],{"class":2165},[1934,7110,7009],{"class":2080},[1934,7112,2157],{"class":2076},[1934,7114,6860],{"class":2080},[1934,7116,6464],{"class":2165},[1934,7118,2179],{"class":2076},[1934,7120,7121,7124,7126,7128,7130,7132,7134,7136,7138,7141,7143],{"class":1936,"line":3211},[1934,7122,7123],{"class":2165},"    includeVariantBase",[1934,7125,2169],{"class":2076},[1934,7127,6788],{"class":2144},[1934,7129,7006],{"class":2165},[1934,7131,7009],{"class":2080},[1934,7133,2157],{"class":2076},[1934,7135,6860],{"class":2080},[1934,7137,2157],{"class":2076},[1934,7139,7140],{"class":2080}," ProductVariantBase",[1934,7142,6464],{"class":2165},[1934,7144,2179],{"class":2076},[1934,7146,7147,7149,7151],{"class":1936,"line":3228},[1934,7148,2255],{"class":2076},[1934,7150,2258],{"class":2165},[1934,7152,2100],{"class":2076},[1934,7154,7155],{"class":1936,"line":3239},[1934,7156,1977],{"emptyLinePlaceholder":1976},[1934,7158,7159],{"class":1936,"line":3274},[1934,7160,7161],{"class":2066},"  // ...\n",[1934,7163,7164,7166,7168],{"class":1936,"line":3305},[1934,7165,2265],{"class":2076},[1934,7167,2258],{"class":2080},[1934,7169,2100],{"class":2076},[1912,7171,7172,7173,2512,7176,7179],{},"Since tokens are strings at runtime, you can also pass plain strings (",[1931,7174,7175],{},"shouldLoad('media')",[1931,7177,7178],{},"shouldLoad(['ecommerce/product/variants', 'base'])","), but using imported tokens gives you type safety and rename support.",[2027,7181,7183],{"id":7182},"file-organization","File Organization",[1912,7185,7186,7187,7189,7190,7193],{},"All files inside the ",[1931,7188,2663],{}," directory registered with ",[1931,7191,7192],{},"registerLaioutrApp"," are auto-loaded — every exported handler (query, link, component resolver, action) is automatically discovered and registered. No special file suffixes or naming conventions are required.",[1912,7195,7196,7197,2512,7200,2512,7203,7206],{},"That said, the existing Laioutr apps use a convention of ",[1931,7198,7199],{},".query.ts",[1931,7201,7202],{},".link.ts",[1931,7204,7205],{},".resolver.ts"," suffixes to make the handler type obvious at a glance:",[1924,7208,7212],{"className":7209,"code":7211,"language":3730,"meta":1929},[7210],"language-text","src/runtime/server/orchestr/\n├── Product/\n│   ├── bySlug.query.ts\n│   ├── search.query.ts\n│   └── base.resolver.ts\n├── Category/\n│   ├── bySlug.query.ts\n│   └── products.link.ts\n├── StoreLocation/\n│   ├── by-slug.query.ts\n│   ├── search.query.ts\n│   └── events.link.ts\n└── plugins/\n    └── zodFix.ts\n",[1931,7213,7211],{"__ignoreMap":1929},[1912,7215,7216],{},"The directory structure and file names are purely organizational — use whatever makes sense for your team.",[7218,7219,7220],"style",{},"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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":1929,"searchDepth":1943,"depth":1943,"links":7222},[7223,7229,7235,7236,7237,7244],{"id":2029,"depth":1943,"text":415,"children":7224},[7225,7226,7227,7228],{"id":2045,"depth":1949,"text":2046},{"id":2656,"depth":1949,"text":2657},{"id":3374,"depth":1949,"text":2534},{"id":3522,"depth":1949,"text":3523},{"id":1921,"depth":1943,"text":3838,"children":7230},[7231,7232,7233,7234],{"id":3847,"depth":1949,"text":3848},{"id":4100,"depth":1949,"text":4101},{"id":4419,"depth":1949,"text":4420},{"id":4493,"depth":1949,"text":4494},{"id":4715,"depth":1943,"text":278},{"id":4951,"depth":1943,"text":4952},{"id":5234,"depth":1943,"text":5235,"children":7238},[7239,7240,7241,7242],{"id":5238,"depth":1949,"text":5239},{"id":5563,"depth":1949,"text":5564},{"id":6136,"depth":1949,"text":6137},{"id":6718,"depth":1949,"text":7243},"The shouldLoad helper",{"id":7182,"depth":1943,"text":7183},"Queries fetch entities by input (e.g. a slug or search term). Links resolve relationships between entities (e.g. product → variants). Together they form the read-side of Orchestr.","md",[],{},{"title":7250,"description":7251},"Queries & Links | Laioutr","Queries fetch entities by input (e.g. a slug or search term). Links resolve relationships between entities (e.g.…",{"loc":287,"lastmod":7253,"changefreq":7254,"priority":1937},"2026-04-08","monthly","nItvHianBmRWVwKlFXbKhLpky_RLt8uJJAB35pQ6x7E",[7257,7259],{"title":282,"path":283,"stem":284,"description":7258,"children":-1},"Extend Orchestr handlers with shared context, API clients, and cross-cutting logic using extendRequest and use.",{"title":290,"path":291,"stem":292,"description":7260,"children":-1},"Component resolvers map backend data to entity components. They are how you extend the data model — add new data to existing entities or create entirely new entity types.",1783259600003]