[{"data":1,"prerenderedAt":4059},["ShallowReactive",2],{"navigation_docs":3,"-frontend-orchestr-recipes-system-bootstrap":1474,"-frontend-orchestr-recipes-system-bootstrap-surround":4054},[4,132,442,591,1159,1231,1237,1243,1302,1401],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","0.getting-started/0.index",[9,10,14,18,56,81,115,128],{"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},"CLI Changelog","/getting-started/changelogs/cli-changelog","0.getting-started/5.Changelogs/cli-changelog",{"title":92,"path":93,"stem":94},"Cockpit Changelog","/getting-started/changelogs/cockpit-changelog","0.getting-started/5.Changelogs/cockpit-changelog",{"title":96,"path":97,"stem":98},"Figma Kit Changelog","/getting-started/changelogs/figma-kit-changelog","0.getting-started/5.Changelogs/figma-kit-changelog",{"title":100,"path":101,"stem":102},"Frontend Changelog","/getting-started/changelogs/frontend-changelog","0.getting-started/5.Changelogs/frontend-changelog",{"title":104,"path":105,"stem":106},"Orchestr Changelog","/getting-started/changelogs/orchestr-changelog","0.getting-started/5.Changelogs/orchestr-changelog",{"title":108,"path":109,"stem":110},"Orchestr Devtools Changelog","/getting-started/changelogs/orchestr-devtools-changelog","0.getting-started/5.Changelogs/orchestr-devtools-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],{"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},"MCP Server","/getting-started/mcp-server","0.getting-started/7.mcp-server",{"title":133,"path":134,"stem":135,"children":136},"Frontend","/frontend","1.Frontend/0.index",[137,138,149,211,237,301],{"title":133,"path":134,"stem":135},{"title":121,"path":139,"stem":140,"children":141,"page":55},"/frontend/introduction","1.Frontend/1.Introduction",[142,145],{"title":19,"path":143,"stem":144},"/frontend/introduction/key-concepts","1.Frontend/1.Introduction/0.key-concepts",{"title":146,"path":147,"stem":148},"Tech Stack","/frontend/introduction/tech-stack","1.Frontend/1.Introduction/1.tech-stack",{"title":150,"path":151,"stem":152,"children":153},"Features","/frontend/features","1.Frontend/2.Features/0.index",[154,155,159,163,167,171,175,179,183,187,191,195,199,203,207],{"title":150,"path":151,"stem":152},{"title":156,"path":157,"stem":158},"Consent Management","/frontend/features/consent-management","1.Frontend/2.Features/consent-management",{"title":160,"path":161,"stem":162},"Currencies","/frontend/features/currencies","1.Frontend/2.Features/currencies",{"title":164,"path":165,"stem":166},"Environments & Staging","/frontend/features/environments","1.Frontend/2.Features/environments",{"title":168,"path":169,"stem":170},"Hooks","/frontend/features/hooks","1.Frontend/2.Features/hooks",{"title":172,"path":173,"stem":174},"Media and Media Library","/frontend/features/media","1.Frontend/2.Features/media",{"title":176,"path":177,"stem":178},"Multi-language Support","/frontend/features/multi-language-support","1.Frontend/2.Features/multi-language-support",{"title":180,"path":181,"stem":182},"Multi-market","/frontend/features/multi-market","1.Frontend/2.Features/multi-market",{"title":184,"path":185,"stem":186},"Page Types","/frontend/features/pagetypes","1.Frontend/2.Features/pagetypes",{"title":188,"path":189,"stem":190},"PWA","/frontend/features/pwa","1.Frontend/2.Features/pwa",{"title":192,"path":193,"stem":194},"Redirects","/frontend/features/redirects","1.Frontend/2.Features/redirects",{"title":196,"path":197,"stem":198},"Routing","/frontend/features/routing","1.Frontend/2.Features/routing",{"title":200,"path":201,"stem":202},"Server-Side Rendering (SSR) and Caching","/frontend/features/ssr-and-caching","1.Frontend/2.Features/ssr-and-caching",{"title":204,"path":205,"stem":206},"Tracking","/frontend/features/tracking","1.Frontend/2.Features/tracking",{"title":208,"path":209,"stem":210},"Z-Ordering","/frontend/features/z-ordering","1.Frontend/2.Features/z-ordering",{"title":212,"path":213,"stem":214,"children":215},"SEO","/frontend/seo","1.Frontend/3.SEO/0.index",[216,217,221,225,229,233],{"title":212,"path":213,"stem":214},{"title":218,"path":219,"stem":220},"Link Checker","/frontend/seo/link-checker","1.Frontend/3.SEO/link-checker",{"title":222,"path":223,"stem":224},"OG Image","/frontend/seo/og-image","1.Frontend/3.SEO/og-image",{"title":226,"path":227,"stem":228},"Robots.txt","/frontend/seo/robots-txt","1.Frontend/3.SEO/robots-txt",{"title":230,"path":231,"stem":232},"Schema.org","/frontend/seo/schema-org","1.Frontend/3.SEO/schema-org",{"title":234,"path":235,"stem":236},"Sitemap","/frontend/seo/sitemap","1.Frontend/3.SEO/sitemap",{"title":238,"path":239,"stem":240,"children":241},"Backend for Frontend","/frontend/orchestr","1.Frontend/4.Orchestr/0.index",[242,243,269,273,277,281,285,289,293,297],{"title":238,"path":239,"stem":240},{"title":244,"path":245,"stem":246,"children":247},"Recipes","/frontend/orchestr/recipes","1.Frontend/4.Orchestr/99.recipes/0.index",[248,249,253,257,261,265],{"title":244,"path":245,"stem":246},{"title":250,"path":251,"stem":252},"Analytics components from query handlers","/frontend/orchestr/recipes/analytics-from-query-handlers","1.Frontend/4.Orchestr/99.recipes/analytics-from-query-handlers",{"title":254,"path":255,"stem":256},"Identity cookies (cart and visitor IDs)","/frontend/orchestr/recipes/identity-cookies","1.Frontend/4.Orchestr/99.recipes/identity-cookies",{"title":258,"path":259,"stem":260},"System bootstrap in extendRequest","/frontend/orchestr/recipes/system-bootstrap","1.Frontend/4.Orchestr/99.recipes/system-bootstrap",{"title":262,"path":263,"stem":264},"Translating vendor errors","/frontend/orchestr/recipes/translating-vendor-errors","1.Frontend/4.Orchestr/99.recipes/translating-vendor-errors",{"title":266,"path":267,"stem":268},"Userland cache patterns","/frontend/orchestr/recipes/userland-cache-patterns","1.Frontend/4.Orchestr/99.recipes/userland-cache-patterns",{"title":270,"path":271,"stem":272},"Actions","/frontend/orchestr/actions","1.Frontend/4.Orchestr/Actions",{"title":274,"path":275,"stem":276},"Caching","/frontend/orchestr/caching","1.Frontend/4.Orchestr/Caching",{"title":278,"path":279,"stem":280},"Middleware","/frontend/orchestr/middleware","1.Frontend/4.Orchestr/Middleware",{"title":282,"path":283,"stem":284},"Queries & Links","/frontend/orchestr/queries","1.Frontend/4.Orchestr/Queries",{"title":286,"path":287,"stem":288},"Component Resolvers","/frontend/orchestr/component-resolvers","1.Frontend/4.Orchestr/component-resolvers",{"title":290,"path":291,"stem":292},"Filters","/frontend/orchestr/filters","1.Frontend/4.Orchestr/filters",{"title":294,"path":295,"stem":296},"URL Query Parameters","/frontend/orchestr/url-query-params","1.Frontend/4.Orchestr/url-query-params",{"title":298,"path":299,"stem":300},"Orchestr Wire Format","/frontend/orchestr/wire-format","1.Frontend/4.Orchestr/wire-format",{"title":302,"path":303,"stem":304,"children":305},"API Reference","/frontend/api-reference","1.Frontend/99.api-reference/0.index",[306,307,364,367,392,408,416,427,435],{"title":302,"path":303,"stem":304},{"title":308,"path":309,"stem":310,"children":311,"page":55},"Entities","/frontend/api-reference/entities","1.Frontend/99.api-reference/01.entities",[312,316,320,324,328,332,336,340,344,348,352,356,360],{"title":313,"path":314,"stem":315},"Product","/frontend/api-reference/entities/product","1.Frontend/99.api-reference/01.entities/1.product",{"title":317,"path":318,"stem":319},"SuggestedSearch","/frontend/api-reference/entities/suggested-search","1.Frontend/99.api-reference/01.entities/10.suggested-search",{"title":321,"path":322,"stem":323},"SuggestedSearchEntry","/frontend/api-reference/entities/suggested-search-entry","1.Frontend/99.api-reference/01.entities/11.suggested-search-entry",{"title":325,"path":326,"stem":327},"BlogCollection","/frontend/api-reference/entities/blog-collection","1.Frontend/99.api-reference/01.entities/12.blog-collection",{"title":329,"path":330,"stem":331},"Comment","/frontend/api-reference/entities/comment","1.Frontend/99.api-reference/01.entities/13.comment",{"title":333,"path":334,"stem":335},"ProductVariant","/frontend/api-reference/entities/product-variant","1.Frontend/99.api-reference/01.entities/2.product-variant",{"title":337,"path":338,"stem":339},"Category","/frontend/api-reference/entities/category","1.Frontend/99.api-reference/01.entities/3.category",{"title":341,"path":342,"stem":343},"Cart","/frontend/api-reference/entities/cart","1.Frontend/99.api-reference/01.entities/4.cart",{"title":345,"path":346,"stem":347},"CartItem","/frontend/api-reference/entities/cart-item","1.Frontend/99.api-reference/01.entities/5.cart-item",{"title":349,"path":350,"stem":351},"Review","/frontend/api-reference/entities/review","1.Frontend/99.api-reference/01.entities/6.review",{"title":353,"path":354,"stem":355},"BreadcrumbItem","/frontend/api-reference/entities/breadcrumb-item","1.Frontend/99.api-reference/01.entities/7.breadcrumb-item",{"title":357,"path":358,"stem":359},"MenuItem","/frontend/api-reference/entities/menu-item","1.Frontend/99.api-reference/01.entities/8.menu-item",{"title":361,"path":362,"stem":363},"BlogPost","/frontend/api-reference/entities/blog-post","1.Frontend/99.api-reference/01.entities/9.blog-post",{"title":184,"path":365,"stem":366},"/frontend/api-reference/page-types","1.Frontend/99.api-reference/02.page-types",{"title":368,"path":369,"stem":370,"children":371,"page":55},"Common Types","/frontend/api-reference/common-types","1.Frontend/99.api-reference/03.common-types",[372,376,380,384,388],{"title":373,"path":374,"stem":375},"Link","/frontend/api-reference/common-types/link","1.Frontend/99.api-reference/03.common-types/1.link",{"title":377,"path":378,"stem":379},"Media","/frontend/api-reference/common-types/media","1.Frontend/99.api-reference/03.common-types/2.media",{"title":381,"path":382,"stem":383},"Money","/frontend/api-reference/common-types/money","1.Frontend/99.api-reference/03.common-types/3.money",{"title":385,"path":386,"stem":387},"UnitPrice","/frontend/api-reference/common-types/unit-price","1.Frontend/99.api-reference/03.common-types/4.unit-price",{"title":389,"path":390,"stem":391},"Measurement","/frontend/api-reference/common-types/measurement","1.Frontend/99.api-reference/03.common-types/5.measurement",{"title":393,"path":394,"stem":395,"children":396,"page":55},"Ecommerce","/frontend/api-reference/ecommerce","1.Frontend/99.api-reference/10.ecommerce",[397,400,404],{"title":270,"path":398,"stem":399},"/frontend/api-reference/ecommerce/actions","1.Frontend/99.api-reference/10.ecommerce/1.actions",{"title":401,"path":402,"stem":403},"Queries","/frontend/api-reference/ecommerce/queries","1.Frontend/99.api-reference/10.ecommerce/2.queries",{"title":405,"path":406,"stem":407},"Errors","/frontend/api-reference/ecommerce/errors","1.Frontend/99.api-reference/10.ecommerce/3.errors",{"title":409,"path":410,"stem":411,"children":412,"page":55},"Newsletter","/frontend/api-reference/newsletter","1.Frontend/99.api-reference/11.newsletter",[413],{"title":270,"path":414,"stem":415},"/frontend/api-reference/newsletter/actions","1.Frontend/99.api-reference/11.newsletter/1.actions",{"title":417,"path":418,"stem":419,"children":420,"page":55},"Blog","/frontend/api-reference/blog","1.Frontend/99.api-reference/12.blog",[421,424],{"title":401,"path":422,"stem":423},"/frontend/api-reference/blog/queries","1.Frontend/99.api-reference/12.blog/1.queries",{"title":405,"path":425,"stem":426},"/frontend/api-reference/blog/errors","1.Frontend/99.api-reference/12.blog/2.errors",{"title":428,"path":429,"stem":430,"children":431,"page":55},"Suggested Search","/frontend/api-reference/suggested-search","1.Frontend/99.api-reference/13.suggested-search",[432],{"title":401,"path":433,"stem":434},"/frontend/api-reference/suggested-search/queries","1.Frontend/99.api-reference/13.suggested-search/1.queries",{"title":204,"path":436,"stem":437,"children":438,"page":55},"/frontend/api-reference/tracking","1.Frontend/99.api-reference/14.tracking",[439],{"title":270,"path":440,"stem":441},"/frontend/api-reference/tracking/actions","1.Frontend/99.api-reference/14.tracking/1.actions",{"title":443,"path":444,"stem":445,"children":446},"Apps","/apps","2.Apps/0.index",[447,448,502,575],{"title":443,"path":444,"stem":445},{"title":449,"path":450,"stem":451,"children":452},"App Development","/apps/app-development","2.Apps/app-development/0.index",[453,454,458,462,466,470,474,478,482,486,490,494,498],{"title":449,"path":450,"stem":451},{"title":455,"path":456,"stem":457},"App Configuration","/apps/app-development/app-configuration","2.Apps/app-development/app-configuration",{"title":459,"path":460,"stem":461},"App Starter","/apps/app-development/app-starter","2.Apps/app-development/app-starter",{"title":463,"path":464,"stem":465},"Best Practice","/apps/app-development/best-practice","2.Apps/app-development/best-practice",{"title":467,"path":468,"stem":469},"Block Definitions","/apps/app-development/block-definitions","2.Apps/app-development/block-definitions",{"title":471,"path":472,"stem":473},"Coding Standards","/apps/app-development/coding-standards","2.Apps/app-development/coding-standards",{"title":475,"path":476,"stem":477},"Consent Adapters","/apps/app-development/consent-adapters","2.Apps/app-development/consent-adapters",{"title":479,"path":480,"stem":481},"Consuming Query Fields","/apps/app-development/consuming-query-fields","2.Apps/app-development/consuming-query-fields",{"title":483,"path":484,"stem":485},"Implementation Overview","/apps/app-development/implementation-overview","2.Apps/app-development/implementation-overview",{"title":487,"path":488,"stem":489},"Platform Dependencies","/apps/app-development/platform-dependencies","2.Apps/app-development/platform-dependencies",{"title":491,"path":492,"stem":493},"Schema Fields","/apps/app-development/schema-fields","2.Apps/app-development/schema-fields",{"title":495,"path":496,"stem":497},"Section Definitions","/apps/app-development/section-definitions","2.Apps/app-development/section-definitions",{"title":499,"path":500,"stem":501},"Studio Icons","/apps/app-development/studio-icons","2.Apps/app-development/studio-icons",{"title":503,"path":504,"stem":505,"children":506,"page":55},"App Docs","/apps/app-docs","2.Apps/app-docs",[507,511,515,519,523,527,531,535,539,543,547,551,555,559,563,567,571],{"title":508,"path":509,"stem":510},"Adobe Commerce","/apps/app-docs/adobe-commerce","2.Apps/app-docs/adobe-commerce",{"title":512,"path":513,"stem":514},"B2Bsellers","/apps/app-docs/b2bsellers","2.Apps/app-docs/b2bsellers",{"title":516,"path":517,"stem":518},"Battery Included","/apps/app-docs/battery-included","2.Apps/app-docs/battery-included",{"title":520,"path":521,"stem":522},"CCM19","/apps/app-docs/ccm19","2.Apps/app-docs/ccm19",{"title":524,"path":525,"stem":526},"Cookiebot","/apps/app-docs/cookiebot","2.Apps/app-docs/cookiebot",{"title":528,"path":529,"stem":530},"Google Tag Manager (GTM)","/apps/app-docs/gtm","2.Apps/app-docs/gtm",{"title":532,"path":533,"stem":534},"Hygraph","/apps/app-docs/hygraph","2.Apps/app-docs/hygraph",{"title":536,"path":537,"stem":538},"Nimstrata Google Retail API","/apps/app-docs/nimstrata","2.Apps/app-docs/nimstrata",{"title":540,"path":541,"stem":542},"Pimcore","/apps/app-docs/pimcore","2.Apps/app-docs/pimcore",{"title":544,"path":545,"stem":546},"Commercetools","/apps/app-docs/commercetools","2.apps/app-docs/commercetools",{"title":548,"path":549,"stem":550},"Emporix","/apps/app-docs/emporix","2.apps/app-docs/emporix",{"title":552,"path":553,"stem":554},"Klaviyo","/apps/app-docs/klaviyo","2.apps/app-docs/klaviyo",{"title":556,"path":557,"stem":558},"OXID eShop","/apps/app-docs/oxid","2.apps/app-docs/oxid",{"title":560,"path":561,"stem":562},"Shopify","/apps/app-docs/shopify","2.apps/app-docs/shopify",{"title":564,"path":565,"stem":566},"Shopware","/apps/app-docs/shopware","2.apps/app-docs/shopware",{"title":568,"path":569,"stem":570},"Vercel Analytics","/apps/app-docs/vercel-analytics","2.apps/app-docs/vercel-analytics",{"title":572,"path":573,"stem":574},"Vercel Speed Insights","/apps/app-docs/vercel-speed-insights","2.apps/app-docs/vercel-speed-insights",{"title":576,"path":577,"stem":578,"children":579,"page":55},"Essentials","/apps/essentials","2.Apps/essentials",[580,584,588],{"title":581,"path":582,"stem":583},"Legal","/apps/essentials/legal","2.Apps/essentials/legal",{"title":585,"path":586,"stem":587},"Mailer","/apps/essentials/mailer","2.Apps/essentials/mailer",{"title":212,"path":589,"stem":590},"/apps/essentials/seo","2.Apps/essentials/seo",{"title":592,"path":593,"stem":594,"children":595},"Laioutr UI","/laioutr-ui","3.laioutr-ui/0.index",[596,597,621,627,633,739,745,751,805,827,880],{"title":592,"path":593,"stem":594},{"title":5,"path":598,"stem":599,"children":600},"/laioutr-ui/getting-started","3.laioutr-ui/01.getting-started/0.index",[601,602,606,610,614,618],{"title":5,"path":598,"stem":599},{"title":603,"path":604,"stem":605},"Browser support","/laioutr-ui/getting-started/browser-support","3.laioutr-ui/01.getting-started/1.browser-support",{"title":607,"path":608,"stem":609},"Common Data","/laioutr-ui/getting-started/common-data","3.laioutr-ui/01.getting-started/99.common-data",{"title":611,"path":612,"stem":613},"Figma Kit","/laioutr-ui/getting-started/figma-kit","3.laioutr-ui/01.getting-started/figma-kit",{"title":615,"path":616,"stem":617},"Theming","/laioutr-ui/getting-started/theming","3.laioutr-ui/01.getting-started/theming",{"title":208,"path":619,"stem":620},"/laioutr-ui/getting-started/z-ordering","3.laioutr-ui/01.getting-started/z-ordering",{"title":622,"path":623,"stem":624,"children":625},"B2B","/laioutr-ui/b2b","3.laioutr-ui/b2b/0.index",[626],{"title":622,"path":623,"stem":624},{"title":628,"path":629,"stem":630,"children":631},"Booking","/laioutr-ui/booking","3.laioutr-ui/booking/0.index",[632],{"title":628,"path":629,"stem":630},{"title":634,"path":635,"stem":636,"children":637},"CMS","/laioutr-ui/cms","3.laioutr-ui/cms/0.index",[638,639,664,672,684,693,714],{"title":634,"path":635,"stem":636},{"title":640,"path":641,"stem":642,"children":643,"page":55},"Banner","/laioutr-ui/cms/banner","3.laioutr-ui/cms/banner",[644,648,652,656,660],{"title":645,"path":646,"stem":647},"Banner Slider","/laioutr-ui/cms/banner/bannerslider","3.laioutr-ui/cms/banner/BannerSlider",{"title":649,"path":650,"stem":651},"Basic Banner with Image and Text","/laioutr-ui/cms/banner/basicbannerwithimageandtext","3.laioutr-ui/cms/banner/BasicBannerWithImageAndText",{"title":653,"path":654,"stem":655},"Content with Image and Text","/laioutr-ui/cms/banner/contentwithimageandtext","3.laioutr-ui/cms/banner/ContentWithImageAndText",{"title":657,"path":658,"stem":659},"Content With Text Columns","/laioutr-ui/cms/banner/contentwithtextcolumns","3.laioutr-ui/cms/banner/ContentWithTextColumns",{"title":661,"path":662,"stem":663},"USP Banner","/laioutr-ui/cms/banner/uspbanner","3.laioutr-ui/cms/banner/UspBanner",{"title":417,"path":665,"stem":666,"children":667,"page":55},"/laioutr-ui/cms/blog","3.laioutr-ui/cms/blog",[668],{"title":669,"path":670,"stem":671},"Blog Post","/laioutr-ui/cms/blog/blogpost","3.laioutr-ui/cms/blog/BlogPost",{"title":409,"path":673,"stem":674,"children":675,"page":55},"/laioutr-ui/cms/newsletter","3.laioutr-ui/cms/newsletter",[676,680],{"title":677,"path":678,"stem":679},"Input for Newsletter","/laioutr-ui/cms/newsletter/inputnewsletter","3.laioutr-ui/cms/newsletter/InputNewsletter",{"title":681,"path":682,"stem":683},"Newsletter Registration","/laioutr-ui/cms/newsletter/newsletterregistration","3.laioutr-ui/cms/newsletter/NewsletterRegistration",{"title":685,"path":686,"stem":687,"children":688,"page":55},"Quotes","/laioutr-ui/cms/quotes","3.laioutr-ui/cms/quotes",[689],{"title":690,"path":691,"stem":692},"Personal Quote with Text and Image","/laioutr-ui/cms/quotes/personalquote","3.laioutr-ui/cms/quotes/PersonalQuote",{"title":694,"path":695,"stem":696,"children":697,"page":55},"Reviews","/laioutr-ui/cms/reviews","3.laioutr-ui/cms/reviews",[698,702,706,710],{"title":699,"path":700,"stem":701},"Quote Card","/laioutr-ui/cms/reviews/quotecard","3.laioutr-ui/cms/reviews/QuoteCard",{"title":703,"path":704,"stem":705},"Rating","/laioutr-ui/cms/reviews/rating","3.laioutr-ui/cms/reviews/Rating",{"title":707,"path":708,"stem":709},"Rating Form","/laioutr-ui/cms/reviews/ratingform","3.laioutr-ui/cms/reviews/RatingForm",{"title":711,"path":712,"stem":713},"Review Section","/laioutr-ui/cms/reviews/reviewsection","3.laioutr-ui/cms/reviews/ReviewSection",{"title":715,"path":716,"stem":717,"children":718,"page":55},"Slider","/laioutr-ui/cms/slider","3.laioutr-ui/cms/slider",[719,723,727,731,735],{"title":720,"path":721,"stem":722},"Hero Slider","/laioutr-ui/cms/slider/heroslider","3.laioutr-ui/cms/slider/HeroSlider",{"title":724,"path":725,"stem":726},"Logo Slider","/laioutr-ui/cms/slider/logoslider","3.laioutr-ui/cms/slider/LogoSlider",{"title":728,"path":729,"stem":730},"Swiper Navigation with Bullets","/laioutr-ui/cms/slider/swipernavigationbullets","3.laioutr-ui/cms/slider/SwiperNavigationBullets",{"title":732,"path":733,"stem":734},"Swiper Navigation Compact","/laioutr-ui/cms/slider/swipernavigationcompact","3.laioutr-ui/cms/slider/SwiperNavigationCompact",{"title":736,"path":737,"stem":738},"Swiper Navigation with Numbers","/laioutr-ui/cms/slider/swipernavigationnumbers","3.laioutr-ui/cms/slider/SwiperNavigationNumbers",{"title":740,"path":741,"stem":742,"children":743},"Marketplace","/laioutr-ui/marketplace","3.laioutr-ui/marketplace/0.index",[744],{"title":740,"path":741,"stem":742},{"title":746,"path":747,"stem":748,"children":749},"Multichannel","/laioutr-ui/multichannel","3.laioutr-ui/multichannel/0.index",[750],{"title":746,"path":747,"stem":748},{"title":752,"path":753,"stem":754,"children":755},"Navigation & Headers","/laioutr-ui/navigation","3.laioutr-ui/navigation/0.index",[756,757,761,765,769,773,777,781,785,789,793,797,801],{"title":752,"path":753,"stem":754},{"title":758,"path":759,"stem":760},"Basic Header","/laioutr-ui/navigation/basicheader","3.laioutr-ui/navigation/BasicHeader",{"title":762,"path":763,"stem":764},"Color Mode Switch","/laioutr-ui/navigation/colormodeswitch","3.laioutr-ui/navigation/ColorModeSwitch",{"title":766,"path":767,"stem":768},"Desktop Side By Side Menu","/laioutr-ui/navigation/desktopsidebysidemenu","3.laioutr-ui/navigation/DesktopSideBySideMenu",{"title":770,"path":771,"stem":772},"Header with Text Links","/laioutr-ui/navigation/headerwithtextlinks","3.laioutr-ui/navigation/HeaderWithTextLinks",{"title":774,"path":775,"stem":776},"Locale Select","/laioutr-ui/navigation/localeselect","3.laioutr-ui/navigation/LocaleSelect",{"title":778,"path":779,"stem":780},"Mega Menu Desktop","/laioutr-ui/navigation/megamenudesktop","3.laioutr-ui/navigation/MegaMenuDesktop",{"title":782,"path":783,"stem":784},"Mobile Menu","/laioutr-ui/navigation/mobilemenu","3.laioutr-ui/navigation/MobileMenu",{"title":786,"path":787,"stem":788},"Search Overlay Input","/laioutr-ui/navigation/searchoverlayinput","3.laioutr-ui/navigation/SearchOverlayInput",{"title":790,"path":791,"stem":792},"Shop Header","/laioutr-ui/navigation/shopheader","3.laioutr-ui/navigation/ShopHeader",{"title":794,"path":795,"stem":796},"Top Bar","/laioutr-ui/navigation/topbar","3.laioutr-ui/navigation/TopBar",{"title":798,"path":799,"stem":800},"Breadcrumb","/laioutr-ui/navigation/breadcrumb","3.laioutr-ui/navigation/breadcrumb",{"title":802,"path":803,"stem":804},"Footer","/laioutr-ui/navigation/footer","3.laioutr-ui/navigation/footer",{"title":806,"path":807,"stem":808,"children":809},"SaaS","/laioutr-ui/saas","3.laioutr-ui/saas/0.index",[810,811,815,819,823],{"title":806,"path":807,"stem":808},{"title":812,"path":813,"stem":814},"Billing Cycle Switch","/laioutr-ui/saas/billingcycleswitch","3.laioutr-ui/saas/BillingCycleSwitch",{"title":816,"path":817,"stem":818},"Pricing Plan","/laioutr-ui/saas/pricingplan","3.laioutr-ui/saas/pricingplan",{"title":820,"path":821,"stem":822},"Pricing Plans","/laioutr-ui/saas/pricingplans","3.laioutr-ui/saas/pricingplans",{"title":824,"path":825,"stem":826},"Pricing Table","/laioutr-ui/saas/pricingtable","3.laioutr-ui/saas/pricingtable",{"title":828,"path":829,"stem":830,"children":831},"Shop","/laioutr-ui/shop","3.laioutr-ui/shop/0.index",[832,833,837,841,845,849,853,857,861,865,869,873,877],{"title":828,"path":829,"stem":830},{"title":834,"path":835,"stem":836},"Cards Container","/laioutr-ui/shop/cardscontainer","3.laioutr-ui/shop/CardsContainer",{"title":838,"path":839,"stem":840},"Grid Card Content","/laioutr-ui/shop/gridcardcontent","3.laioutr-ui/shop/GridCardContent",{"title":842,"path":843,"stem":844},"Grid Card Text Content","/laioutr-ui/shop/gridcardtextcontent","3.laioutr-ui/shop/GridCardTextContent",{"title":846,"path":847,"stem":848},"Inpage Navigation Basic Grid","/laioutr-ui/shop/inpagenavigationbasicgrid","3.laioutr-ui/shop/InpageNavigationBasicGrid",{"title":850,"path":851,"stem":852},"Inpage Navigation Basic Slider","/laioutr-ui/shop/inpagenavigationbasicslider","3.laioutr-ui/shop/InpageNavigationBasicSlider",{"title":854,"path":855,"stem":856},"Inpage Navigation Big Grid","/laioutr-ui/shop/inpagenavigationbiggrid","3.laioutr-ui/shop/InpageNavigationBigGrid",{"title":858,"path":859,"stem":860},"Inpage Navigation Big Slider","/laioutr-ui/shop/inpagenavigationbigslider","3.laioutr-ui/shop/InpageNavigationBigSlider",{"title":862,"path":863,"stem":864},"Inpage Navigation Compact Grid","/laioutr-ui/shop/inpagenavigationcompactgrid","3.laioutr-ui/shop/InpageNavigationCompactGrid",{"title":866,"path":867,"stem":868},"Inpage Navigation Compact Slider","/laioutr-ui/shop/inpagenavigationcompactslider","3.laioutr-ui/shop/InpageNavigationCompactSlider",{"title":870,"path":871,"stem":872},"Product Card","/laioutr-ui/shop/productcard","3.laioutr-ui/shop/ProductCard",{"title":874,"path":875,"stem":876},"Product Slider","/laioutr-ui/shop/productslider","3.laioutr-ui/shop/ProductSlider",{"title":290,"path":878,"stem":879},"/laioutr-ui/shop/filters","3.laioutr-ui/shop/filters",{"title":881,"path":882,"stem":883,"children":884},"UI Kit","/laioutr-ui/ui-kit","3.laioutr-ui/ui-kit/0.index",[885,886,962,982,1003,1036,1057,1122],{"title":881,"path":882,"stem":883},{"title":887,"path":888,"stem":889,"children":890,"page":55},"General","/laioutr-ui/ui-kit/general","3.laioutr-ui/ui-kit/01.general",[891,895,899,903,907,911,915,919,923,927,931,935,938,942,946,950,954,958],{"title":892,"path":893,"stem":894},"Accordion","/laioutr-ui/ui-kit/general/accordion","3.laioutr-ui/ui-kit/01.general/Accordion",{"title":896,"path":897,"stem":898},"Avatar","/laioutr-ui/ui-kit/general/avatar","3.laioutr-ui/ui-kit/01.general/Avatar",{"title":900,"path":901,"stem":902},"Backdrop","/laioutr-ui/ui-kit/general/backdrop","3.laioutr-ui/ui-kit/01.general/Backdrop",{"title":904,"path":905,"stem":906},"Color Swatch","/laioutr-ui/ui-kit/general/colorswatch","3.laioutr-ui/ui-kit/01.general/ColorSwatch",{"title":908,"path":909,"stem":910},"Dropdown Menu","/laioutr-ui/ui-kit/general/dropdownmenu","3.laioutr-ui/ui-kit/01.general/DropdownMenu",{"title":912,"path":913,"stem":914},"Edge Glow","/laioutr-ui/ui-kit/general/edgeglow","3.laioutr-ui/ui-kit/01.general/EdgeGlow",{"title":916,"path":917,"stem":918},"Empty State","/laioutr-ui/ui-kit/general/emptystate","3.laioutr-ui/ui-kit/01.general/EmptyState",{"title":920,"path":921,"stem":922},"Icon","/laioutr-ui/ui-kit/general/icon","3.laioutr-ui/ui-kit/01.general/Icon",{"title":924,"path":925,"stem":926},"Image Contrast Overlay","/laioutr-ui/ui-kit/general/imagecontrastoverlay","3.laioutr-ui/ui-kit/01.general/ImageContrastOverlay",{"title":928,"path":929,"stem":930},"Image Variant Thumbnail","/laioutr-ui/ui-kit/general/imagevariantthumbnail","3.laioutr-ui/ui-kit/01.general/ImageVariantThumbnail",{"title":932,"path":933,"stem":934},"Loading Spinner","/laioutr-ui/ui-kit/general/loadingspinner","3.laioutr-ui/ui-kit/01.general/LoadingSpinner",{"title":377,"path":936,"stem":937},"/laioutr-ui/ui-kit/general/media","3.laioutr-ui/ui-kit/01.general/Media",{"title":939,"path":940,"stem":941},"Navigation Bullets","/laioutr-ui/ui-kit/general/navigationbullets","3.laioutr-ui/ui-kit/01.general/NavigationBullets",{"title":943,"path":944,"stem":945},"Placeholder","/laioutr-ui/ui-kit/general/placeholder","3.laioutr-ui/ui-kit/01.general/Placeholder",{"title":947,"path":948,"stem":949},"Progress Bar","/laioutr-ui/ui-kit/general/progressbar","3.laioutr-ui/ui-kit/01.general/ProgressBar",{"title":951,"path":952,"stem":953},"Scrollbar","/laioutr-ui/ui-kit/general/scrollbar","3.laioutr-ui/ui-kit/01.general/Scrollbar",{"title":955,"path":956,"stem":957},"Swatch Preview","/laioutr-ui/ui-kit/general/swatchpreview","3.laioutr-ui/ui-kit/01.general/SwatchPreview",{"title":959,"path":960,"stem":961},"Thumbnail","/laioutr-ui/ui-kit/general/thumbnail","3.laioutr-ui/ui-kit/01.general/Thumbnail",{"title":963,"path":964,"stem":965,"children":966,"page":55},"Typography","/laioutr-ui/ui-kit/typography","3.laioutr-ui/ui-kit/02.typography",[967,971,974,978],{"title":968,"path":969,"stem":970},"Icon List","/laioutr-ui/ui-kit/typography/iconlist","3.laioutr-ui/ui-kit/02.typography/IconList",{"title":373,"path":972,"stem":973},"/laioutr-ui/ui-kit/typography/link","3.laioutr-ui/ui-kit/02.typography/Link",{"title":975,"path":976,"stem":977},"Rich Content","/laioutr-ui/ui-kit/typography/richcontent","3.laioutr-ui/ui-kit/02.typography/RichContent",{"title":979,"path":980,"stem":981},"Text","/laioutr-ui/ui-kit/typography/text","3.laioutr-ui/ui-kit/02.typography/Text",{"title":983,"path":984,"stem":985,"children":986,"page":55},"Layout","/laioutr-ui/ui-kit/layout","3.laioutr-ui/ui-kit/03.layout",[987,991,995,999],{"title":988,"path":989,"stem":990},"Grid Fill","/laioutr-ui/ui-kit/layout/gridfill","3.laioutr-ui/ui-kit/03.layout/GridFill",{"title":992,"path":993,"stem":994},"Grid Masonry","/laioutr-ui/ui-kit/layout/gridmasonry","3.laioutr-ui/ui-kit/03.layout/GridMasonry",{"title":996,"path":997,"stem":998},"Scroll Area","/laioutr-ui/ui-kit/layout/scrollarea","3.laioutr-ui/ui-kit/03.layout/ScrollArea",{"title":1000,"path":1001,"stem":1002},"Separator","/laioutr-ui/ui-kit/layout/separator","3.laioutr-ui/ui-kit/03.layout/Separator",{"title":1004,"path":1005,"stem":1006,"children":1007,"page":55},"Content","/laioutr-ui/ui-kit/content","3.laioutr-ui/ui-kit/04.content",[1008,1012,1016,1020,1024,1028,1032],{"title":1009,"path":1010,"stem":1011},"Card","/laioutr-ui/ui-kit/content/card","3.laioutr-ui/ui-kit/04.content/Card",{"title":1013,"path":1014,"stem":1015},"CTA Banner Basic","/laioutr-ui/ui-kit/content/ctabannerbasic","3.laioutr-ui/ui-kit/04.content/CtaBannerBasic",{"title":1017,"path":1018,"stem":1019},"CTA Banner Integrated","/laioutr-ui/ui-kit/content/ctabannerintegrated","3.laioutr-ui/ui-kit/04.content/CtaBannerIntegrated",{"title":1021,"path":1022,"stem":1023},"CTA Banner Showcase","/laioutr-ui/ui-kit/content/ctabannershowcase","3.laioutr-ui/ui-kit/04.content/CtaBannerShowcase",{"title":1025,"path":1026,"stem":1027},"Link Tile Basic","/laioutr-ui/ui-kit/content/linktilebasic","3.laioutr-ui/ui-kit/04.content/LinkTileBasic",{"title":1029,"path":1030,"stem":1031},"Link Tile Big","/laioutr-ui/ui-kit/content/linktilebig","3.laioutr-ui/ui-kit/04.content/LinkTileBig",{"title":1033,"path":1034,"stem":1035},"Link Tile Compact","/laioutr-ui/ui-kit/content/linktilecompact","3.laioutr-ui/ui-kit/04.content/LinkTileCompact",{"title":1037,"path":1038,"stem":1039,"children":1040,"page":55},"Surfaces","/laioutr-ui/ui-kit/surfaces","3.laioutr-ui/ui-kit/05.surfaces",[1041,1045,1049,1053],{"title":1042,"path":1043,"stem":1044},"Alert Dialog","/laioutr-ui/ui-kit/surfaces/alertdialog","3.laioutr-ui/ui-kit/05.surfaces/AlertDialog",{"title":1046,"path":1047,"stem":1048},"Sheet","/laioutr-ui/ui-kit/surfaces/sheet","3.laioutr-ui/ui-kit/05.surfaces/Sheet",{"title":1050,"path":1051,"stem":1052},"Toast","/laioutr-ui/ui-kit/surfaces/toast","3.laioutr-ui/ui-kit/05.surfaces/Toast",{"title":1054,"path":1055,"stem":1056},"Toaster","/laioutr-ui/ui-kit/surfaces/toaster","3.laioutr-ui/ui-kit/05.surfaces/Toaster",{"title":1058,"path":1059,"stem":1060,"children":1061,"page":55},"Form","/laioutr-ui/ui-kit/form","3.laioutr-ui/ui-kit/06.form",[1062,1066,1070,1074,1078,1082,1086,1090,1094,1098,1102,1106,1110,1114,1118],{"title":1063,"path":1064,"stem":1065},"Button","/laioutr-ui/ui-kit/form/button","3.laioutr-ui/ui-kit/06.form/Button",{"title":1067,"path":1068,"stem":1069},"Checkbox","/laioutr-ui/ui-kit/form/checkbox","3.laioutr-ui/ui-kit/06.form/Checkbox",{"title":1071,"path":1072,"stem":1073},"Field","/laioutr-ui/ui-kit/form/field","3.laioutr-ui/ui-kit/06.form/Field",{"title":1075,"path":1076,"stem":1077},"Input","/laioutr-ui/ui-kit/form/input","3.laioutr-ui/ui-kit/06.form/Input",{"title":1079,"path":1080,"stem":1081},"Input Checkbox","/laioutr-ui/ui-kit/form/inputcheckbox","3.laioutr-ui/ui-kit/06.form/InputCheckbox",{"title":1083,"path":1084,"stem":1085},"Password Input","/laioutr-ui/ui-kit/form/inputpassword","3.laioutr-ui/ui-kit/06.form/InputPassword",{"title":1087,"path":1088,"stem":1089},"Search Input","/laioutr-ui/ui-kit/form/inputsearch","3.laioutr-ui/ui-kit/06.form/InputSearch",{"title":1091,"path":1092,"stem":1093},"Label","/laioutr-ui/ui-kit/form/label","3.laioutr-ui/ui-kit/06.form/Label",{"title":1095,"path":1096,"stem":1097},"Load More","/laioutr-ui/ui-kit/form/loadmore","3.laioutr-ui/ui-kit/06.form/LoadMore",{"title":1099,"path":1100,"stem":1101},"Pagination","/laioutr-ui/ui-kit/form/pagination","3.laioutr-ui/ui-kit/06.form/Pagination",{"title":1103,"path":1104,"stem":1105},"Quantity Picker","/laioutr-ui/ui-kit/form/quantitypicker","3.laioutr-ui/ui-kit/06.form/QuantityPicker",{"title":1107,"path":1108,"stem":1109},"Radio Group","/laioutr-ui/ui-kit/form/radioselect","3.laioutr-ui/ui-kit/06.form/RadioSelect",{"title":1111,"path":1112,"stem":1113},"Select","/laioutr-ui/ui-kit/form/select","3.laioutr-ui/ui-kit/06.form/Select",{"title":1115,"path":1116,"stem":1117},"Switch","/laioutr-ui/ui-kit/form/switch","3.laioutr-ui/ui-kit/06.form/Switch",{"title":1119,"path":1120,"stem":1121},"Variant Select Button","/laioutr-ui/ui-kit/form/variantselectbutton","3.laioutr-ui/ui-kit/06.form/VariantSelectButton",{"title":1123,"path":1124,"stem":1125,"children":1126,"page":55},"Indicators","/laioutr-ui/ui-kit/indicators","3.laioutr-ui/ui-kit/07.indicators",[1127,1131,1135,1139,1143,1147,1151,1155],{"title":1128,"path":1129,"stem":1130},"Badge","/laioutr-ui/ui-kit/indicators/badge","3.laioutr-ui/ui-kit/07.indicators/Badge",{"title":1132,"path":1133,"stem":1134},"Caption Flag","/laioutr-ui/ui-kit/indicators/captionflag","3.laioutr-ui/ui-kit/07.indicators/CaptionFlag",{"title":1136,"path":1137,"stem":1138},"Category Node Flag","/laioutr-ui/ui-kit/indicators/categorynodeflag","3.laioutr-ui/ui-kit/07.indicators/CategoryNodeFlag",{"title":1140,"path":1141,"stem":1142},"Product Tile Flag","/laioutr-ui/ui-kit/indicators/producttileflag","3.laioutr-ui/ui-kit/07.indicators/ProductTileFlag",{"title":1144,"path":1145,"stem":1146},"Rating Summary","/laioutr-ui/ui-kit/indicators/ratingsummary","3.laioutr-ui/ui-kit/07.indicators/RatingSummary",{"title":1148,"path":1149,"stem":1150},"Rating Summary Small","/laioutr-ui/ui-kit/indicators/ratingsummarysmall","3.laioutr-ui/ui-kit/07.indicators/RatingSummarySmall",{"title":1152,"path":1153,"stem":1154},"Savings Badge","/laioutr-ui/ui-kit/indicators/savingsbadge","3.laioutr-ui/ui-kit/07.indicators/SavingsBadge",{"title":1156,"path":1157,"stem":1158},"Stars Rating","/laioutr-ui/ui-kit/indicators/starsrating","3.laioutr-ui/ui-kit/07.indicators/StarsRating",{"title":1160,"path":1161,"stem":1162,"children":1163},"Hosting","/hosting","4.hosting/0.index",[1164,1165,1171,1201],{"title":1160,"path":1161,"stem":1162},{"title":1166,"path":1167,"stem":1168,"children":1169},"Laioutr Cloud","/hosting/laioutr-cloud","4.hosting/0.laioutr-cloud/0.index",[1170],{"title":1166,"path":1167,"stem":1168},{"title":1172,"path":1173,"stem":1174,"children":1175},"Hosting Adapter","/hosting/hosting-adapter","4.hosting/1.hosting-adapter/0.index",[1176,1177,1181,1185,1189,1193,1197],{"title":1172,"path":1173,"stem":1174},{"title":1178,"path":1179,"stem":1180},"AWS Adapter","/hosting/hosting-adapter/aws-adapter","4.hosting/1.hosting-adapter/aws-adapter",{"title":1182,"path":1183,"stem":1184},"Azure Adapter","/hosting/hosting-adapter/azure-adapter","4.hosting/1.hosting-adapter/azure-adapter",{"title":1186,"path":1187,"stem":1188},"Google Adapter","/hosting/hosting-adapter/google-adapter","4.hosting/1.hosting-adapter/google-adapter",{"title":1190,"path":1191,"stem":1192},"Netlify Adapter","/hosting/hosting-adapter/netlify-adapter","4.hosting/1.hosting-adapter/netlify-adapter",{"title":1194,"path":1195,"stem":1196},"Scale Commerce Adapter","/hosting/hosting-adapter/scale-commerce-adapter","4.hosting/1.hosting-adapter/scale-commerce-adapter",{"title":1198,"path":1199,"stem":1200},"Vercel Adapter","/hosting/hosting-adapter/vercel-adapter","4.hosting/1.hosting-adapter/vercel-adapter",{"title":1202,"path":1203,"stem":1204,"children":1205},"Bring Your Own Server (BYOS)","/hosting/bring-your-own-server-byos","4.hosting/2.bring-your-own-server-byos/0.index",[1206,1207,1211,1215,1219,1223,1227],{"title":1202,"path":1203,"stem":1204},{"title":1208,"path":1209,"stem":1210},"BYOS Agent","/hosting/bring-your-own-server-byos/byos-agent","4.hosting/2.bring-your-own-server-byos/byos-agent",{"title":1212,"path":1213,"stem":1214},"Changelog","/hosting/bring-your-own-server-byos/changelog","4.hosting/2.bring-your-own-server-byos/changelog",{"title":1216,"path":1217,"stem":1218},"DevOps Components","/hosting/bring-your-own-server-byos/devops","4.hosting/2.bring-your-own-server-byos/devops",{"title":1220,"path":1221,"stem":1222},"Infrastructure Requirements","/hosting/bring-your-own-server-byos/infrastructure","4.hosting/2.bring-your-own-server-byos/infrastructure",{"title":1224,"path":1225,"stem":1226},"Software Requirements","/hosting/bring-your-own-server-byos/software","4.hosting/2.bring-your-own-server-byos/software",{"title":1228,"path":1229,"stem":1230},"Webhook Configuration","/hosting/bring-your-own-server-byos/webhook-config","4.hosting/2.bring-your-own-server-byos/webhook-config",{"title":1232,"path":1233,"stem":1234,"children":1235},"Checkout","/checkout","5.Checkout/0.index",[1236],{"title":1232,"path":1233,"stem":1234},{"title":1238,"path":1239,"stem":1240,"children":1241},"Larry AI","/larry-ai","6.Larry-AI/0.index",[1242],{"title":1238,"path":1239,"stem":1240},{"title":611,"path":1244,"stem":1245,"children":1246},"/figma-kit","7.Figma Kit/0.index",[1247,1248,1264],{"title":611,"path":1244,"stem":1245},{"title":121,"path":1249,"stem":1250,"children":1251,"page":55},"/figma-kit/introduction","7.Figma Kit/1.Introduction",[1252,1256,1260],{"title":1253,"path":1254,"stem":1255},"How to Start","/figma-kit/introduction/howtostart","7.Figma Kit/1.Introduction/0.howtostart",{"title":1257,"path":1258,"stem":1259},"Figma Variables","/figma-kit/introduction/figma-variables","7.Figma Kit/1.Introduction/figma-variables",{"title":1261,"path":1262,"stem":1263},"Library Connections","/figma-kit/introduction/library-connections","7.Figma Kit/1.Introduction/library-connections",{"title":1265,"path":1266,"stem":1267,"children":1268,"page":55},"Kits","/figma-kit/kits","7.Figma Kit/Kits",[1269,1272,1275,1278,1282,1285,1289,1293,1296,1299],{"title":622,"path":1270,"stem":1271},"/figma-kit/kits/b2b","7.Figma Kit/Kits/b2b",{"title":628,"path":1273,"stem":1274},"/figma-kit/kits/booking","7.Figma Kit/Kits/booking",{"title":634,"path":1276,"stem":1277},"/figma-kit/kits/cms","7.Figma Kit/Kits/cms",{"title":1279,"path":1280,"stem":1281},"Inpage Navigation","/figma-kit/kits/inpage-navigation","7.Figma Kit/Kits/inpage-navigation",{"title":740,"path":1283,"stem":1284},"/figma-kit/kits/marketplace","7.Figma Kit/Kits/marketplace",{"title":1286,"path":1287,"stem":1288},"Retail & Multichannel","/figma-kit/kits/multichannel","7.Figma Kit/Kits/multichannel",{"title":1290,"path":1291,"stem":1292},"Navigation","/figma-kit/kits/navigation","7.Figma Kit/Kits/navigation",{"title":806,"path":1294,"stem":1295},"/figma-kit/kits/saas","7.Figma Kit/Kits/saas",{"title":828,"path":1297,"stem":1298},"/figma-kit/kits/shop","7.Figma Kit/Kits/shop",{"title":881,"path":1300,"stem":1301},"/figma-kit/kits/ui-kit","7.Figma Kit/Kits/ui-kit",{"title":1303,"path":1304,"stem":1305,"children":1306},"Cockpit","/cockpit","8.Cockpit/0.index",[1307,1308,1338,1355,1372],{"title":1303,"path":1304,"stem":1305},{"title":150,"path":1309,"stem":1310,"children":1311,"page":55},"/cockpit/features","8.Cockpit/1.Features",[1312,1315,1319,1323,1327,1330,1334],{"title":443,"path":1313,"stem":1314},"/cockpit/features/apps","8.Cockpit/1.Features/apps",{"title":1316,"path":1317,"stem":1318},"Content (Collections)","/cockpit/features/content-collections","8.Cockpit/1.Features/content-collections",{"title":1320,"path":1321,"stem":1322},"Deployments","/cockpit/features/deployments","8.Cockpit/1.Features/deployments",{"title":1324,"path":1325,"stem":1326},"Markets","/cockpit/features/markets","8.Cockpit/1.Features/markets",{"title":192,"path":1328,"stem":1329},"/cockpit/features/redirects","8.Cockpit/1.Features/redirects",{"title":1331,"path":1332,"stem":1333},"Studio","/cockpit/features/studio","8.Cockpit/1.Features/studio",{"title":1335,"path":1336,"stem":1337},"Translations","/cockpit/features/translations","8.Cockpit/1.Features/translations",{"title":1339,"path":1340,"stem":1341,"children":1342,"page":55},"Project Settings","/cockpit/project-settings","8.Cockpit/2.Project-Settings",[1343,1347,1351],{"title":1344,"path":1345,"stem":1346},"Delete a project","/cockpit/project-settings/delete-project","8.Cockpit/2.Project-Settings/delete-project",{"title":1348,"path":1349,"stem":1350},"NPM","/cockpit/project-settings/npm","8.Cockpit/2.Project-Settings/npm",{"title":1352,"path":1353,"stem":1354},"Project secret key","/cockpit/project-settings/project-secret-key","8.Cockpit/2.Project-Settings/project-secret-key",{"title":1356,"path":1357,"stem":1358,"children":1359,"page":55},"Account Settings","/cockpit/account-settings","8.Cockpit/3.Account-Settings",[1360,1364,1368],{"title":1361,"path":1362,"stem":1363},"Notifications","/cockpit/account-settings/notifications","8.Cockpit/3.Account-Settings/notifications",{"title":1365,"path":1366,"stem":1367},"Preferences","/cockpit/account-settings/preferences","8.Cockpit/3.Account-Settings/preferences",{"title":1369,"path":1370,"stem":1371},"Security","/cockpit/account-settings/security","8.Cockpit/3.Account-Settings/security",{"title":1373,"path":1374,"stem":1375,"children":1376,"page":55},"Organisation Settings","/cockpit/organisation-settings","8.Cockpit/4.Organisation-Settings",[1377,1381,1385,1389,1393,1397],{"title":1378,"path":1379,"stem":1380},"API keys","/cockpit/organisation-settings/api-keys","8.Cockpit/4.Organisation-Settings/api-keys",{"title":1382,"path":1383,"stem":1384},"Billing","/cockpit/organisation-settings/billing","8.Cockpit/4.Organisation-Settings/billing",{"title":1386,"path":1387,"stem":1388},"General settings","/cockpit/organisation-settings/general-settings","8.Cockpit/4.Organisation-Settings/general-settings",{"title":1390,"path":1391,"stem":1392},"Members","/cockpit/organisation-settings/members","8.Cockpit/4.Organisation-Settings/members",{"title":1394,"path":1395,"stem":1396},"Projects","/cockpit/organisation-settings/projects","8.Cockpit/4.Organisation-Settings/projects",{"title":1398,"path":1399,"stem":1400},"Roles","/cockpit/organisation-settings/roles","8.Cockpit/4.Organisation-Settings/roles",{"title":1402,"path":1403,"stem":1404,"children":1405},"Offering","/offering","9.Offering/0.index",[1406,1407,1439,1452,1465],{"title":1402,"path":1403,"stem":1404},{"title":1408,"path":1409,"stem":1410,"children":1411},"Products","/offering/products","9.Offering/1.Products/0.index",[1412,1413,1418,1423,1428,1434],{"title":1408,"path":1409,"stem":1410},{"title":133,"path":1414,"stem":1415,"children":1416},"/offering/products/frontend","9.Offering/1.Products/1.Frontend/0.index",[1417],{"title":133,"path":1414,"stem":1415},{"title":1303,"path":1419,"stem":1420,"children":1421},"/offering/products/cockpit","9.Offering/1.Products/2.Cockpit/0.index",[1422],{"title":1303,"path":1419,"stem":1420},{"title":1232,"path":1424,"stem":1425,"children":1426},"/offering/products/checkout","9.Offering/1.Products/3.Checkout/0.index",[1427],{"title":1232,"path":1424,"stem":1425},{"title":1429,"path":1430,"stem":1431,"children":1432},"Cloud","/offering/products/cloud","9.Offering/1.Products/4.cloud/0.index",[1433],{"title":1429,"path":1430,"stem":1431},{"title":1238,"path":1435,"stem":1436,"children":1437},"/offering/products/larry-ai","9.Offering/1.Products/5.larry-ai/0.index",[1438],{"title":1238,"path":1435,"stem":1436},{"title":1440,"path":1441,"stem":1442,"children":1443,"page":55},"Service Level Agreement","/offering/service-level-agreement","9.Offering/2.service-level-agreement",[1444,1448],{"title":1445,"path":1446,"stem":1447},"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":1449,"path":1450,"stem":1451},"Backups","/offering/service-level-agreement/backups","9.Offering/2.service-level-agreement/backups",{"title":1453,"path":1454,"stem":1455,"children":1456,"page":55},"Customer Support","/offering/customer-support","9.Offering/3.customer-support",[1457,1461],{"title":1458,"path":1459,"stem":1460},"Standard Customer Support","/offering/customer-support/standard-customer-support","9.Offering/3.customer-support/1.standard-customer-support",{"title":1462,"path":1463,"stem":1464},"Customer Support Severity Levels of Laioutr products","/offering/customer-support/maximum-serverity-levels","9.Offering/3.customer-support/maximum-serverity-levels",{"title":1466,"path":1467,"stem":1468,"children":1469,"page":55},"Compliance","/offering/compliance","9.Offering/4.Compliance",[1470],{"title":1471,"path":1472,"stem":1473},"Fair usage policy","/offering/compliance/fair-usage-policy","9.Offering/4.Compliance/fair-usage-policy",{"id":1475,"title":258,"body":1476,"description":4043,"extension":4044,"meta":4045,"navigation":1598,"path":259,"seo":4046,"sitemap":4049,"stem":260,"__hash__":4053},"docs/1.Frontend/4.Orchestr/99.recipes/system-bootstrap.md",{"type":1477,"value":1478,"toc":4034},"minimark",[1479,1504,1515,1786,1791,1797,1807,1811,1814,2396,2402,2406,2413,2725,2733,2737,2753,3567,3570,3574,3585,3979,3990,3994,4002,4006,4030],[1480,1481,1482,1483,1487,1488,1491,1492,1495,1496,1499,1500,1503],"p",{},"Your storefront passes ",[1484,1485,1486],"code",{},"clientEnv: { locale: 'de-DE', currency: 'EUR' }"," to every Orchestr request. Your backend has no idea what ",[1484,1489,1490],{},"de-DE"," or ",[1484,1493,1494],{},"EUR"," mean. It wants its own opaque IDs (",[1484,1497,1498],{},"sw-language-id: 0190a1b2c3...",", ",[1484,1501,1502],{},"sw-currency-id: 0190a1b2d4...",") on every API call. You can't hardcode them because they differ per installation, and asking the storefront to know them is a layering violation.",[1480,1505,1506,1507,1510,1511,1514],{},"The pattern: fetch the vendor metadata once on first request, cache it for a day, and resolve ",[1484,1508,1509],{},"clientEnv"," against it inside ",[1484,1512,1513],{},"extendRequest"," on every request. The resolved IDs go onto the API client's default headers, so handlers downstream can ignore localization entirely.",[1516,1517,1522],"pre",{"className":1518,"code":1519,"language":1520,"meta":1521,"style":1521},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight",".extendRequest(async ({ event, clientEnv }) => {\n  const storefrontClient = shopwareClientFactory(event);\n\n  const systemEntities = await getCachedSystemEntities(storefrontClient);    // 1. cached metadata\n  const current = getCurrentSystemEntities(systemEntities, clientEnv);       // 2. resolve clientEnv\n  storefrontClient.defaultHeaders['sw-currency-id'] = current.currency.id;   // 3. apply to client\n  storefrontClient.defaultHeaders['sw-language-id'] = current.locale.languageId;\n\n  return { context: { storefrontClient, current } };\n});\n","ts","",[1484,1523,1524,1566,1593,1600,1631,1660,1706,1742,1747,1776],{"__ignoreMap":1521},[1525,1526,1529,1533,1536,1540,1544,1547,1551,1554,1557,1560,1563],"span",{"class":1527,"line":1528},"line",1,[1525,1530,1532],{"class":1531},"sMK4o",".",[1525,1534,1513],{"class":1535},"s2Zo4",[1525,1537,1539],{"class":1538},"sTEyZ","(",[1525,1541,1543],{"class":1542},"spNyl","async",[1525,1545,1546],{"class":1531}," ({",[1525,1548,1550],{"class":1549},"sHdIc"," event",[1525,1552,1553],{"class":1531},",",[1525,1555,1556],{"class":1549}," clientEnv",[1525,1558,1559],{"class":1531}," })",[1525,1561,1562],{"class":1542}," =>",[1525,1564,1565],{"class":1531}," {\n",[1525,1567,1569,1572,1575,1578,1581,1584,1587,1590],{"class":1527,"line":1568},2,[1525,1570,1571],{"class":1542},"  const",[1525,1573,1574],{"class":1538}," storefrontClient",[1525,1576,1577],{"class":1531}," =",[1525,1579,1580],{"class":1535}," shopwareClientFactory",[1525,1582,1539],{"class":1583},"swJcz",[1525,1585,1586],{"class":1538},"event",[1525,1588,1589],{"class":1583},")",[1525,1591,1592],{"class":1531},";\n",[1525,1594,1596],{"class":1527,"line":1595},3,[1525,1597,1599],{"emptyLinePlaceholder":1598},true,"\n",[1525,1601,1603,1605,1608,1610,1614,1617,1619,1622,1624,1627],{"class":1527,"line":1602},4,[1525,1604,1571],{"class":1542},[1525,1606,1607],{"class":1538}," systemEntities",[1525,1609,1577],{"class":1531},[1525,1611,1613],{"class":1612},"s7zQu"," await",[1525,1615,1616],{"class":1535}," getCachedSystemEntities",[1525,1618,1539],{"class":1583},[1525,1620,1621],{"class":1538},"storefrontClient",[1525,1623,1589],{"class":1583},[1525,1625,1626],{"class":1531},";",[1525,1628,1630],{"class":1629},"sHwdD","    // 1. cached metadata\n",[1525,1632,1634,1636,1639,1641,1644,1646,1649,1651,1653,1655,1657],{"class":1527,"line":1633},5,[1525,1635,1571],{"class":1542},[1525,1637,1638],{"class":1538}," current",[1525,1640,1577],{"class":1531},[1525,1642,1643],{"class":1535}," getCurrentSystemEntities",[1525,1645,1539],{"class":1583},[1525,1647,1648],{"class":1538},"systemEntities",[1525,1650,1553],{"class":1531},[1525,1652,1556],{"class":1538},[1525,1654,1589],{"class":1583},[1525,1656,1626],{"class":1531},[1525,1658,1659],{"class":1629},"       // 2. resolve clientEnv\n",[1525,1661,1663,1666,1668,1671,1674,1677,1681,1683,1686,1689,1691,1693,1696,1698,1701,1703],{"class":1527,"line":1662},6,[1525,1664,1665],{"class":1538},"  storefrontClient",[1525,1667,1532],{"class":1531},[1525,1669,1670],{"class":1538},"defaultHeaders",[1525,1672,1673],{"class":1583},"[",[1525,1675,1676],{"class":1531},"'",[1525,1678,1680],{"class":1679},"sfazB","sw-currency-id",[1525,1682,1676],{"class":1531},[1525,1684,1685],{"class":1583},"] ",[1525,1687,1688],{"class":1531},"=",[1525,1690,1638],{"class":1538},[1525,1692,1532],{"class":1531},[1525,1694,1695],{"class":1538},"currency",[1525,1697,1532],{"class":1531},[1525,1699,1700],{"class":1538},"id",[1525,1702,1626],{"class":1531},[1525,1704,1705],{"class":1629},"   // 3. apply to client\n",[1525,1707,1709,1711,1713,1715,1717,1719,1722,1724,1726,1728,1730,1732,1735,1737,1740],{"class":1527,"line":1708},7,[1525,1710,1665],{"class":1538},[1525,1712,1532],{"class":1531},[1525,1714,1670],{"class":1538},[1525,1716,1673],{"class":1583},[1525,1718,1676],{"class":1531},[1525,1720,1721],{"class":1679},"sw-language-id",[1525,1723,1676],{"class":1531},[1525,1725,1685],{"class":1583},[1525,1727,1688],{"class":1531},[1525,1729,1638],{"class":1538},[1525,1731,1532],{"class":1531},[1525,1733,1734],{"class":1538},"locale",[1525,1736,1532],{"class":1531},[1525,1738,1739],{"class":1538},"languageId",[1525,1741,1592],{"class":1531},[1525,1743,1745],{"class":1527,"line":1744},8,[1525,1746,1599],{"emptyLinePlaceholder":1598},[1525,1748,1750,1753,1756,1759,1762,1764,1766,1768,1770,1773],{"class":1527,"line":1749},9,[1525,1751,1752],{"class":1612},"  return",[1525,1754,1755],{"class":1531}," {",[1525,1757,1758],{"class":1583}," context",[1525,1760,1761],{"class":1531},":",[1525,1763,1755],{"class":1531},[1525,1765,1574],{"class":1538},[1525,1767,1553],{"class":1531},[1525,1769,1638],{"class":1538},[1525,1771,1772],{"class":1531}," }",[1525,1774,1775],{"class":1531}," };\n",[1525,1777,1779,1782,1784],{"class":1527,"line":1778},10,[1525,1780,1781],{"class":1531},"}",[1525,1783,1589],{"class":1538},[1525,1785,1592],{"class":1531},[1787,1788,1790],"h2",{"id":1789},"when-you-need-this-and-when-you-dont","When you need this (and when you don't)",[1480,1792,1793,1794,1796],{},"You need system bootstrap when your backend uses opaque internal IDs for entities that the storefront only knows by their canonical name (BCP47 locale, ISO 4217 currency, ISO 3166 country). Shopware is the case we hit hardest: every Storefront API call requires a ",[1484,1795,1721],{}," UUID, never a locale string.",[1480,1798,1799,1800,1803,1804,1806],{},"You don't need it when your backend accepts standard codes directly. The ",[1484,1801,1802],{},"defineShopify"," middleware just constructs its API clients (the Storefront API takes BCP47 locales and ISO currency codes through the request context, no resolution step needed). Adobe Commerce's middleware is the same shape. Reach for this pattern only when there's a real translation layer between ",[1484,1805,1509],{}," and your API client.",[1787,1808,1810],{"id":1809},"step-1-write-the-metadata-fetch","Step 1: write the metadata fetch",[1480,1812,1813],{},"The fetch retrieves every entity your handlers might need to translate against (currencies, locales, countries, salutations). One call per surface, run in parallel where the SDK allows it:",[1516,1815,1818],{"className":1518,"code":1816,"filename":1817,"language":1520,"meta":1521,"style":1521},"import { StorefrontClient } from '../../types/shopware';\nimport { swTranslated } from '../swTranslated';\n\nexport type SwSystemEntities = Awaited\u003CReturnType\u003Ctypeof getSystemEntities>>;\nexport type SwSystemLocale = SwSystemEntities['locales'][number];\n\nexport const getSystemEntities = async (client: StorefrontClient) => {\n  const [rawCurrencies, rawCountries, rawLanguages] = await Promise.all([\n    client.invoke('readCurrency post /currency'),\n    client.invoke('readCountry post /country'),\n    client.invoke('readLanguages post /language'),\n  ]);\n\n  return {\n    currencies: rawCurrencies.data.map((c) => ({\n      id: c.id,\n      iso: swTranslated(c, 'isoCode'),\n    })),\n    countries: rawCountries.data.elements?.map((c) => ({ id: c.id, iso: c.iso })) ?? [],\n    locales:\n      rawLanguages.data.elements?.map((lang) => ({\n        id: lang.localeId,\n        languageId: lang.id,\n        iso: swTranslated(lang.locale, 'code'),\n      })) ?? [],\n  };\n};\n","server/shopware-helper/system/getSystemEntities.ts",[1484,1819,1820,1845,1867,1871,1903,1936,1940,1971,2008,2032,2053,2075,2083,2088,2095,2132,2149,2176,2187,2264,2273,2306,2324,2340,2370,2384,2390],{"__ignoreMap":1521},[1525,1821,1822,1825,1827,1830,1832,1835,1838,1841,1843],{"class":1527,"line":1528},[1525,1823,1824],{"class":1612},"import",[1525,1826,1755],{"class":1531},[1525,1828,1829],{"class":1538}," StorefrontClient",[1525,1831,1772],{"class":1531},[1525,1833,1834],{"class":1612}," from",[1525,1836,1837],{"class":1531}," '",[1525,1839,1840],{"class":1679},"../../types/shopware",[1525,1842,1676],{"class":1531},[1525,1844,1592],{"class":1531},[1525,1846,1847,1849,1851,1854,1856,1858,1860,1863,1865],{"class":1527,"line":1568},[1525,1848,1824],{"class":1612},[1525,1850,1755],{"class":1531},[1525,1852,1853],{"class":1538}," swTranslated",[1525,1855,1772],{"class":1531},[1525,1857,1834],{"class":1612},[1525,1859,1837],{"class":1531},[1525,1861,1862],{"class":1679},"../swTranslated",[1525,1864,1676],{"class":1531},[1525,1866,1592],{"class":1531},[1525,1868,1869],{"class":1527,"line":1595},[1525,1870,1599],{"emptyLinePlaceholder":1598},[1525,1872,1873,1876,1879,1883,1885,1888,1891,1894,1897,1900],{"class":1527,"line":1602},[1525,1874,1875],{"class":1612},"export",[1525,1877,1878],{"class":1542}," type",[1525,1880,1882],{"class":1881},"sBMFI"," SwSystemEntities",[1525,1884,1577],{"class":1531},[1525,1886,1887],{"class":1881}," Awaited",[1525,1889,1890],{"class":1531},"\u003C",[1525,1892,1893],{"class":1881},"ReturnType",[1525,1895,1896],{"class":1531},"\u003Ctypeof",[1525,1898,1899],{"class":1538}," getSystemEntities",[1525,1901,1902],{"class":1531},">>;\n",[1525,1904,1905,1907,1909,1912,1914,1916,1918,1920,1923,1925,1928,1931,1934],{"class":1527,"line":1633},[1525,1906,1875],{"class":1612},[1525,1908,1878],{"class":1542},[1525,1910,1911],{"class":1881}," SwSystemLocale",[1525,1913,1577],{"class":1531},[1525,1915,1882],{"class":1881},[1525,1917,1673],{"class":1538},[1525,1919,1676],{"class":1531},[1525,1921,1922],{"class":1679},"locales",[1525,1924,1676],{"class":1531},[1525,1926,1927],{"class":1538},"][",[1525,1929,1930],{"class":1881},"number",[1525,1932,1933],{"class":1538},"]",[1525,1935,1592],{"class":1531},[1525,1937,1938],{"class":1527,"line":1662},[1525,1939,1599],{"emptyLinePlaceholder":1598},[1525,1941,1942,1944,1947,1950,1952,1955,1958,1961,1963,1965,1967,1969],{"class":1527,"line":1708},[1525,1943,1875],{"class":1612},[1525,1945,1946],{"class":1542}," const",[1525,1948,1949],{"class":1538}," getSystemEntities ",[1525,1951,1688],{"class":1531},[1525,1953,1954],{"class":1542}," async",[1525,1956,1957],{"class":1531}," (",[1525,1959,1960],{"class":1549},"client",[1525,1962,1761],{"class":1531},[1525,1964,1829],{"class":1881},[1525,1966,1589],{"class":1531},[1525,1968,1562],{"class":1542},[1525,1970,1565],{"class":1531},[1525,1972,1973,1975,1978,1981,1983,1986,1988,1991,1993,1995,1997,2000,2002,2005],{"class":1527,"line":1744},[1525,1974,1571],{"class":1542},[1525,1976,1977],{"class":1531}," [",[1525,1979,1980],{"class":1538},"rawCurrencies",[1525,1982,1553],{"class":1531},[1525,1984,1985],{"class":1538}," rawCountries",[1525,1987,1553],{"class":1531},[1525,1989,1990],{"class":1538}," rawLanguages",[1525,1992,1933],{"class":1531},[1525,1994,1577],{"class":1531},[1525,1996,1613],{"class":1612},[1525,1998,1999],{"class":1881}," Promise",[1525,2001,1532],{"class":1531},[1525,2003,2004],{"class":1535},"all",[1525,2006,2007],{"class":1583},"([\n",[1525,2009,2010,2013,2015,2018,2020,2022,2025,2027,2029],{"class":1527,"line":1749},[1525,2011,2012],{"class":1538},"    client",[1525,2014,1532],{"class":1531},[1525,2016,2017],{"class":1535},"invoke",[1525,2019,1539],{"class":1583},[1525,2021,1676],{"class":1531},[1525,2023,2024],{"class":1679},"readCurrency post /currency",[1525,2026,1676],{"class":1531},[1525,2028,1589],{"class":1583},[1525,2030,2031],{"class":1531},",\n",[1525,2033,2034,2036,2038,2040,2042,2044,2047,2049,2051],{"class":1527,"line":1778},[1525,2035,2012],{"class":1538},[1525,2037,1532],{"class":1531},[1525,2039,2017],{"class":1535},[1525,2041,1539],{"class":1583},[1525,2043,1676],{"class":1531},[1525,2045,2046],{"class":1679},"readCountry post /country",[1525,2048,1676],{"class":1531},[1525,2050,1589],{"class":1583},[1525,2052,2031],{"class":1531},[1525,2054,2056,2058,2060,2062,2064,2066,2069,2071,2073],{"class":1527,"line":2055},11,[1525,2057,2012],{"class":1538},[1525,2059,1532],{"class":1531},[1525,2061,2017],{"class":1535},[1525,2063,1539],{"class":1583},[1525,2065,1676],{"class":1531},[1525,2067,2068],{"class":1679},"readLanguages post /language",[1525,2070,1676],{"class":1531},[1525,2072,1589],{"class":1583},[1525,2074,2031],{"class":1531},[1525,2076,2078,2081],{"class":1527,"line":2077},12,[1525,2079,2080],{"class":1583},"  ])",[1525,2082,1592],{"class":1531},[1525,2084,2086],{"class":1527,"line":2085},13,[1525,2087,1599],{"emptyLinePlaceholder":1598},[1525,2089,2091,2093],{"class":1527,"line":2090},14,[1525,2092,1752],{"class":1612},[1525,2094,1565],{"class":1531},[1525,2096,2098,2101,2103,2106,2108,2111,2113,2116,2118,2120,2123,2125,2127,2129],{"class":1527,"line":2097},15,[1525,2099,2100],{"class":1583},"    currencies",[1525,2102,1761],{"class":1531},[1525,2104,2105],{"class":1538}," rawCurrencies",[1525,2107,1532],{"class":1531},[1525,2109,2110],{"class":1538},"data",[1525,2112,1532],{"class":1531},[1525,2114,2115],{"class":1535},"map",[1525,2117,1539],{"class":1583},[1525,2119,1539],{"class":1531},[1525,2121,2122],{"class":1549},"c",[1525,2124,1589],{"class":1531},[1525,2126,1562],{"class":1542},[1525,2128,1957],{"class":1583},[1525,2130,2131],{"class":1531},"{\n",[1525,2133,2135,2138,2140,2143,2145,2147],{"class":1527,"line":2134},16,[1525,2136,2137],{"class":1583},"      id",[1525,2139,1761],{"class":1531},[1525,2141,2142],{"class":1538}," c",[1525,2144,1532],{"class":1531},[1525,2146,1700],{"class":1538},[1525,2148,2031],{"class":1531},[1525,2150,2152,2155,2157,2159,2161,2163,2165,2167,2170,2172,2174],{"class":1527,"line":2151},17,[1525,2153,2154],{"class":1583},"      iso",[1525,2156,1761],{"class":1531},[1525,2158,1853],{"class":1535},[1525,2160,1539],{"class":1583},[1525,2162,2122],{"class":1538},[1525,2164,1553],{"class":1531},[1525,2166,1837],{"class":1531},[1525,2168,2169],{"class":1679},"isoCode",[1525,2171,1676],{"class":1531},[1525,2173,1589],{"class":1583},[1525,2175,2031],{"class":1531},[1525,2177,2179,2182,2185],{"class":1527,"line":2178},18,[1525,2180,2181],{"class":1531},"    }",[1525,2183,2184],{"class":1583},"))",[1525,2186,2031],{"class":1531},[1525,2188,2190,2193,2195,2197,2199,2201,2203,2206,2209,2211,2213,2215,2217,2219,2221,2223,2226,2229,2231,2233,2235,2237,2239,2242,2244,2246,2248,2251,2253,2256,2259,2262],{"class":1527,"line":2189},19,[1525,2191,2192],{"class":1583},"    countries",[1525,2194,1761],{"class":1531},[1525,2196,1985],{"class":1538},[1525,2198,1532],{"class":1531},[1525,2200,2110],{"class":1538},[1525,2202,1532],{"class":1531},[1525,2204,2205],{"class":1538},"elements",[1525,2207,2208],{"class":1531},"?.",[1525,2210,2115],{"class":1535},[1525,2212,1539],{"class":1583},[1525,2214,1539],{"class":1531},[1525,2216,2122],{"class":1549},[1525,2218,1589],{"class":1531},[1525,2220,1562],{"class":1542},[1525,2222,1957],{"class":1583},[1525,2224,2225],{"class":1531},"{",[1525,2227,2228],{"class":1583}," id",[1525,2230,1761],{"class":1531},[1525,2232,2142],{"class":1538},[1525,2234,1532],{"class":1531},[1525,2236,1700],{"class":1538},[1525,2238,1553],{"class":1531},[1525,2240,2241],{"class":1583}," iso",[1525,2243,1761],{"class":1531},[1525,2245,2142],{"class":1538},[1525,2247,1532],{"class":1531},[1525,2249,2250],{"class":1538},"iso",[1525,2252,1772],{"class":1531},[1525,2254,2255],{"class":1583},")) ",[1525,2257,2258],{"class":1531},"??",[1525,2260,2261],{"class":1583}," []",[1525,2263,2031],{"class":1531},[1525,2265,2267,2270],{"class":1527,"line":2266},20,[1525,2268,2269],{"class":1583},"    locales",[1525,2271,2272],{"class":1531},":\n",[1525,2274,2276,2279,2281,2283,2285,2287,2289,2291,2293,2295,2298,2300,2302,2304],{"class":1527,"line":2275},21,[1525,2277,2278],{"class":1538},"      rawLanguages",[1525,2280,1532],{"class":1531},[1525,2282,2110],{"class":1538},[1525,2284,1532],{"class":1531},[1525,2286,2205],{"class":1538},[1525,2288,2208],{"class":1531},[1525,2290,2115],{"class":1535},[1525,2292,1539],{"class":1583},[1525,2294,1539],{"class":1531},[1525,2296,2297],{"class":1549},"lang",[1525,2299,1589],{"class":1531},[1525,2301,1562],{"class":1542},[1525,2303,1957],{"class":1583},[1525,2305,2131],{"class":1531},[1525,2307,2309,2312,2314,2317,2319,2322],{"class":1527,"line":2308},22,[1525,2310,2311],{"class":1583},"        id",[1525,2313,1761],{"class":1531},[1525,2315,2316],{"class":1538}," lang",[1525,2318,1532],{"class":1531},[1525,2320,2321],{"class":1538},"localeId",[1525,2323,2031],{"class":1531},[1525,2325,2327,2330,2332,2334,2336,2338],{"class":1527,"line":2326},23,[1525,2328,2329],{"class":1583},"        languageId",[1525,2331,1761],{"class":1531},[1525,2333,2316],{"class":1538},[1525,2335,1532],{"class":1531},[1525,2337,1700],{"class":1538},[1525,2339,2031],{"class":1531},[1525,2341,2343,2346,2348,2350,2352,2354,2356,2358,2360,2362,2364,2366,2368],{"class":1527,"line":2342},24,[1525,2344,2345],{"class":1583},"        iso",[1525,2347,1761],{"class":1531},[1525,2349,1853],{"class":1535},[1525,2351,1539],{"class":1583},[1525,2353,2297],{"class":1538},[1525,2355,1532],{"class":1531},[1525,2357,1734],{"class":1538},[1525,2359,1553],{"class":1531},[1525,2361,1837],{"class":1531},[1525,2363,1484],{"class":1679},[1525,2365,1676],{"class":1531},[1525,2367,1589],{"class":1583},[1525,2369,2031],{"class":1531},[1525,2371,2373,2376,2378,2380,2382],{"class":1527,"line":2372},25,[1525,2374,2375],{"class":1531},"      }",[1525,2377,2255],{"class":1583},[1525,2379,2258],{"class":1531},[1525,2381,2261],{"class":1583},[1525,2383,2031],{"class":1531},[1525,2385,2387],{"class":1527,"line":2386},26,[1525,2388,2389],{"class":1531},"  };\n",[1525,2391,2393],{"class":1527,"line":2392},27,[1525,2394,2395],{"class":1531},"};\n",[1480,2397,2398,2399,2401],{},"Keep this function pure: it takes a client and returns plain data. No caching, no ",[1484,2400,1509],{},". The next step adds the cache layer.",[1787,2403,2405],{"id":2404},"step-2-cache-it-for-a-day-keyed-by-tenant","Step 2: cache it for a day, keyed by tenant",[1480,2407,2408,2409,2412],{},"Vendor metadata changes rarely (months apart) but must be invalidated when credentials rotate. Use ",[1484,2410,2411],{},"useUserlandCache"," keyed by your API token so a credential change naturally evicts the cache:",[1516,2414,2416],{"className":1518,"code":2415,"filename":1817,"language":1520,"meta":1521,"style":1521},"import { useRuntimeConfig, useUserlandCache } from '#imports';\n\nconst SYSTEM_ENTITIES_TTL = 60 * 60 * 24; // 1 day\n\nexport const getCachedSystemEntities = async (client: StorefrontClient) => {\n  const accessToken = useRuntimeConfig()['@laioutr-app/shopware'].accessToken;\n  const cache = useUserlandCache\u003CSwSystemEntities>(\n    `shopware:${accessToken}:system-entities`,\n  );\n\n  const cached = await cache.getItem('default');\n  if (cached) return cached;\n\n  const fresh = await getSystemEntities(client);\n  await cache.setItem('default', fresh, { ttl: SYSTEM_ENTITIES_TTL });\n  return fresh;\n};\n",[1484,2417,2418,2445,2449,2478,2482,2509,2539,2561,2584,2591,2595,2626,2646,2650,2671,2713,2721],{"__ignoreMap":1521},[1525,2419,2420,2422,2424,2427,2429,2432,2434,2436,2438,2441,2443],{"class":1527,"line":1528},[1525,2421,1824],{"class":1612},[1525,2423,1755],{"class":1531},[1525,2425,2426],{"class":1538}," useRuntimeConfig",[1525,2428,1553],{"class":1531},[1525,2430,2431],{"class":1538}," useUserlandCache",[1525,2433,1772],{"class":1531},[1525,2435,1834],{"class":1612},[1525,2437,1837],{"class":1531},[1525,2439,2440],{"class":1679},"#imports",[1525,2442,1676],{"class":1531},[1525,2444,1592],{"class":1531},[1525,2446,2447],{"class":1527,"line":1568},[1525,2448,1599],{"emptyLinePlaceholder":1598},[1525,2450,2451,2454,2457,2459,2463,2466,2468,2470,2473,2475],{"class":1527,"line":1595},[1525,2452,2453],{"class":1542},"const",[1525,2455,2456],{"class":1538}," SYSTEM_ENTITIES_TTL ",[1525,2458,1688],{"class":1531},[1525,2460,2462],{"class":2461},"sbssI"," 60",[1525,2464,2465],{"class":1531}," *",[1525,2467,2462],{"class":2461},[1525,2469,2465],{"class":1531},[1525,2471,2472],{"class":2461}," 24",[1525,2474,1626],{"class":1531},[1525,2476,2477],{"class":1629}," // 1 day\n",[1525,2479,2480],{"class":1527,"line":1602},[1525,2481,1599],{"emptyLinePlaceholder":1598},[1525,2483,2484,2486,2488,2491,2493,2495,2497,2499,2501,2503,2505,2507],{"class":1527,"line":1633},[1525,2485,1875],{"class":1612},[1525,2487,1946],{"class":1542},[1525,2489,2490],{"class":1538}," getCachedSystemEntities ",[1525,2492,1688],{"class":1531},[1525,2494,1954],{"class":1542},[1525,2496,1957],{"class":1531},[1525,2498,1960],{"class":1549},[1525,2500,1761],{"class":1531},[1525,2502,1829],{"class":1881},[1525,2504,1589],{"class":1531},[1525,2506,1562],{"class":1542},[1525,2508,1565],{"class":1531},[1525,2510,2511,2513,2516,2518,2520,2523,2525,2528,2530,2532,2534,2537],{"class":1527,"line":1662},[1525,2512,1571],{"class":1542},[1525,2514,2515],{"class":1538}," accessToken",[1525,2517,1577],{"class":1531},[1525,2519,2426],{"class":1535},[1525,2521,2522],{"class":1583},"()[",[1525,2524,1676],{"class":1531},[1525,2526,2527],{"class":1679},"@laioutr-app/shopware",[1525,2529,1676],{"class":1531},[1525,2531,1933],{"class":1583},[1525,2533,1532],{"class":1531},[1525,2535,2536],{"class":1538},"accessToken",[1525,2538,1592],{"class":1531},[1525,2540,2541,2543,2546,2548,2550,2552,2555,2558],{"class":1527,"line":1708},[1525,2542,1571],{"class":1542},[1525,2544,2545],{"class":1538}," cache",[1525,2547,1577],{"class":1531},[1525,2549,2431],{"class":1535},[1525,2551,1890],{"class":1531},[1525,2553,2554],{"class":1881},"SwSystemEntities",[1525,2556,2557],{"class":1531},">",[1525,2559,2560],{"class":1583},"(\n",[1525,2562,2563,2566,2569,2572,2574,2576,2579,2582],{"class":1527,"line":1744},[1525,2564,2565],{"class":1531},"    `",[1525,2567,2568],{"class":1679},"shopware:",[1525,2570,2571],{"class":1531},"${",[1525,2573,2536],{"class":1538},[1525,2575,1781],{"class":1531},[1525,2577,2578],{"class":1679},":system-entities",[1525,2580,2581],{"class":1531},"`",[1525,2583,2031],{"class":1531},[1525,2585,2586,2589],{"class":1527,"line":1749},[1525,2587,2588],{"class":1583},"  )",[1525,2590,1592],{"class":1531},[1525,2592,2593],{"class":1527,"line":1778},[1525,2594,1599],{"emptyLinePlaceholder":1598},[1525,2596,2597,2599,2602,2604,2606,2608,2610,2613,2615,2617,2620,2622,2624],{"class":1527,"line":2055},[1525,2598,1571],{"class":1542},[1525,2600,2601],{"class":1538}," cached",[1525,2603,1577],{"class":1531},[1525,2605,1613],{"class":1612},[1525,2607,2545],{"class":1538},[1525,2609,1532],{"class":1531},[1525,2611,2612],{"class":1535},"getItem",[1525,2614,1539],{"class":1583},[1525,2616,1676],{"class":1531},[1525,2618,2619],{"class":1679},"default",[1525,2621,1676],{"class":1531},[1525,2623,1589],{"class":1583},[1525,2625,1592],{"class":1531},[1525,2627,2628,2631,2633,2636,2639,2642,2644],{"class":1527,"line":2077},[1525,2629,2630],{"class":1612},"  if",[1525,2632,1957],{"class":1583},[1525,2634,2635],{"class":1538},"cached",[1525,2637,2638],{"class":1583},") ",[1525,2640,2641],{"class":1612},"return",[1525,2643,2601],{"class":1538},[1525,2645,1592],{"class":1531},[1525,2647,2648],{"class":1527,"line":2085},[1525,2649,1599],{"emptyLinePlaceholder":1598},[1525,2651,2652,2654,2657,2659,2661,2663,2665,2667,2669],{"class":1527,"line":2090},[1525,2653,1571],{"class":1542},[1525,2655,2656],{"class":1538}," fresh",[1525,2658,1577],{"class":1531},[1525,2660,1613],{"class":1612},[1525,2662,1899],{"class":1535},[1525,2664,1539],{"class":1583},[1525,2666,1960],{"class":1538},[1525,2668,1589],{"class":1583},[1525,2670,1592],{"class":1531},[1525,2672,2673,2676,2678,2680,2683,2685,2687,2689,2691,2693,2695,2697,2699,2702,2704,2707,2709,2711],{"class":1527,"line":2097},[1525,2674,2675],{"class":1612},"  await",[1525,2677,2545],{"class":1538},[1525,2679,1532],{"class":1531},[1525,2681,2682],{"class":1535},"setItem",[1525,2684,1539],{"class":1583},[1525,2686,1676],{"class":1531},[1525,2688,2619],{"class":1679},[1525,2690,1676],{"class":1531},[1525,2692,1553],{"class":1531},[1525,2694,2656],{"class":1538},[1525,2696,1553],{"class":1531},[1525,2698,1755],{"class":1531},[1525,2700,2701],{"class":1583}," ttl",[1525,2703,1761],{"class":1531},[1525,2705,2706],{"class":1538}," SYSTEM_ENTITIES_TTL",[1525,2708,1772],{"class":1531},[1525,2710,1589],{"class":1583},[1525,2712,1592],{"class":1531},[1525,2714,2715,2717,2719],{"class":1527,"line":2134},[1525,2716,1752],{"class":1612},[1525,2718,2656],{"class":1538},[1525,2720,1592],{"class":1531},[1525,2722,2723],{"class":1527,"line":2151},[1525,2724,2395],{"class":1531},[1480,2726,2727,2728,2732],{},"A 1-day TTL is the right ballpark for currency and language lists. For higher-churn data (price tier IDs, sales channel changes), drop to an hour. See ",[2729,2730,266],"a",{"href":2731},"./userland-cache-patterns#in-the-prefix-invalidate-as-a-unit"," for why the access token belongs in the cache prefix, not the value.",[1787,2734,2736],{"id":2735},"step-3-resolve-clientenv-against-the-metadata","Step 3: resolve clientEnv against the metadata",[1480,2738,2739,2740,2742,2743,1499,2746,1499,2749,2752],{},"Vendor locale formats rarely line up with BCP47 strings. A request for ",[1484,2741,1490],{}," might find ",[1484,2744,2745],{},"de_DE",[1484,2747,2748],{},"de-de",[1484,2750,2751],{},"de",", or no German at all. Apply a fallback ladder so a request never hard-fails on a locale mismatch:",[1516,2754,2757],{"className":1518,"code":2755,"filename":2756,"language":1520,"meta":1521,"style":1521},"import { ClientEnv } from '@laioutr-core/orchestr/types';\nimport { SwSystemEntities, SwSystemLocale } from './getSystemEntities';\n\nconst findBestLocale = (locales: SwSystemLocale[], clientLocale: string): SwSystemLocale => {\n  if (locales.length === 0) throw new Error('No locales available');\n\n  const normalize = (s: string) => s.replace('_', '-').toLowerCase();\n  const wanted = normalize(clientLocale);\n  const normalized = locales.map((l) => ({ ...l, isoNorm: normalize(l.iso) }));\n\n  // 1. Exact match (case-insensitive, treating de_DE and de-DE as equal).\n  const exact = normalized.find((l) => l.isoNorm === wanted);\n  if (exact) return exact;\n\n  // 2. Language-only match (de matches de-AT, de-CH).\n  const language = wanted.split('-')[0];\n  const byLanguage = normalized.find((l) => l.isoNorm.split('-')[0] === language);\n  if (byLanguage) return byLanguage;\n\n  // 3. Fall back to English in any region.\n  const english = normalized.find((l) => l.isoNorm.startsWith('en'));\n  if (english) return english;\n\n  // 4. Anything is better than nothing.\n  return locales[0];\n};\n\nexport const getCurrentSystemEntities = (system: SwSystemEntities, clientEnv: ClientEnv) => {\n  const locale = findBestLocale(system.locales, clientEnv.locale);\n  const currency = system.currencies.find((c) => c.iso === clientEnv.currency) ?? system.currencies[0];\n  const country = system.countries.find((c) => c.iso === new Intl.Locale(clientEnv.locale).region) ?? system.countries[0];\n  return { locale, currency, country };\n};\n","server/shopware-helper/system/getCurrentSystemEntities.ts",[1484,2758,2759,2781,2806,2810,2849,2892,2896,2956,2976,3037,3041,3046,3088,3105,3109,3114,3148,3206,3223,3227,3232,3281,3298,3302,3307,3321,3325,3329,3364,3397,3461,3543,3562],{"__ignoreMap":1521},[1525,2760,2761,2763,2765,2768,2770,2772,2774,2777,2779],{"class":1527,"line":1528},[1525,2762,1824],{"class":1612},[1525,2764,1755],{"class":1531},[1525,2766,2767],{"class":1538}," ClientEnv",[1525,2769,1772],{"class":1531},[1525,2771,1834],{"class":1612},[1525,2773,1837],{"class":1531},[1525,2775,2776],{"class":1679},"@laioutr-core/orchestr/types",[1525,2778,1676],{"class":1531},[1525,2780,1592],{"class":1531},[1525,2782,2783,2785,2787,2789,2791,2793,2795,2797,2799,2802,2804],{"class":1527,"line":1568},[1525,2784,1824],{"class":1612},[1525,2786,1755],{"class":1531},[1525,2788,1882],{"class":1538},[1525,2790,1553],{"class":1531},[1525,2792,1911],{"class":1538},[1525,2794,1772],{"class":1531},[1525,2796,1834],{"class":1612},[1525,2798,1837],{"class":1531},[1525,2800,2801],{"class":1679},"./getSystemEntities",[1525,2803,1676],{"class":1531},[1525,2805,1592],{"class":1531},[1525,2807,2808],{"class":1527,"line":1595},[1525,2809,1599],{"emptyLinePlaceholder":1598},[1525,2811,2812,2814,2817,2819,2821,2823,2825,2827,2830,2832,2835,2837,2840,2843,2845,2847],{"class":1527,"line":1602},[1525,2813,2453],{"class":1542},[1525,2815,2816],{"class":1538}," findBestLocale ",[1525,2818,1688],{"class":1531},[1525,2820,1957],{"class":1531},[1525,2822,1922],{"class":1549},[1525,2824,1761],{"class":1531},[1525,2826,1911],{"class":1881},[1525,2828,2829],{"class":1538},"[]",[1525,2831,1553],{"class":1531},[1525,2833,2834],{"class":1549}," clientLocale",[1525,2836,1761],{"class":1531},[1525,2838,2839],{"class":1881}," string",[1525,2841,2842],{"class":1531},"):",[1525,2844,1911],{"class":1881},[1525,2846,1562],{"class":1542},[1525,2848,1565],{"class":1531},[1525,2850,2851,2853,2855,2857,2859,2862,2865,2868,2870,2873,2876,2879,2881,2883,2886,2888,2890],{"class":1527,"line":1633},[1525,2852,2630],{"class":1612},[1525,2854,1957],{"class":1583},[1525,2856,1922],{"class":1538},[1525,2858,1532],{"class":1531},[1525,2860,2861],{"class":1538},"length",[1525,2863,2864],{"class":1531}," ===",[1525,2866,2867],{"class":2461}," 0",[1525,2869,2638],{"class":1583},[1525,2871,2872],{"class":1612},"throw",[1525,2874,2875],{"class":1531}," new",[1525,2877,2878],{"class":1535}," Error",[1525,2880,1539],{"class":1583},[1525,2882,1676],{"class":1531},[1525,2884,2885],{"class":1679},"No locales available",[1525,2887,1676],{"class":1531},[1525,2889,1589],{"class":1583},[1525,2891,1592],{"class":1531},[1525,2893,2894],{"class":1527,"line":1662},[1525,2895,1599],{"emptyLinePlaceholder":1598},[1525,2897,2898,2900,2903,2905,2907,2910,2912,2914,2916,2918,2921,2923,2926,2928,2930,2933,2935,2937,2939,2942,2944,2946,2948,2951,2954],{"class":1527,"line":1708},[1525,2899,1571],{"class":1542},[1525,2901,2902],{"class":1538}," normalize",[1525,2904,1577],{"class":1531},[1525,2906,1957],{"class":1531},[1525,2908,2909],{"class":1549},"s",[1525,2911,1761],{"class":1531},[1525,2913,2839],{"class":1881},[1525,2915,1589],{"class":1531},[1525,2917,1562],{"class":1542},[1525,2919,2920],{"class":1538}," s",[1525,2922,1532],{"class":1531},[1525,2924,2925],{"class":1535},"replace",[1525,2927,1539],{"class":1583},[1525,2929,1676],{"class":1531},[1525,2931,2932],{"class":1679},"_",[1525,2934,1676],{"class":1531},[1525,2936,1553],{"class":1531},[1525,2938,1837],{"class":1531},[1525,2940,2941],{"class":1679},"-",[1525,2943,1676],{"class":1531},[1525,2945,1589],{"class":1583},[1525,2947,1532],{"class":1531},[1525,2949,2950],{"class":1535},"toLowerCase",[1525,2952,2953],{"class":1583},"()",[1525,2955,1592],{"class":1531},[1525,2957,2958,2960,2963,2965,2967,2969,2972,2974],{"class":1527,"line":1744},[1525,2959,1571],{"class":1542},[1525,2961,2962],{"class":1538}," wanted",[1525,2964,1577],{"class":1531},[1525,2966,2902],{"class":1535},[1525,2968,1539],{"class":1583},[1525,2970,2971],{"class":1538},"clientLocale",[1525,2973,1589],{"class":1583},[1525,2975,1592],{"class":1531},[1525,2977,2978,2980,2983,2985,2988,2990,2992,2994,2996,2999,3001,3003,3005,3007,3010,3012,3014,3017,3019,3021,3023,3025,3027,3029,3031,3033,3035],{"class":1527,"line":1749},[1525,2979,1571],{"class":1542},[1525,2981,2982],{"class":1538}," normalized",[1525,2984,1577],{"class":1531},[1525,2986,2987],{"class":1538}," locales",[1525,2989,1532],{"class":1531},[1525,2991,2115],{"class":1535},[1525,2993,1539],{"class":1583},[1525,2995,1539],{"class":1531},[1525,2997,2998],{"class":1549},"l",[1525,3000,1589],{"class":1531},[1525,3002,1562],{"class":1542},[1525,3004,1957],{"class":1583},[1525,3006,2225],{"class":1531},[1525,3008,3009],{"class":1531}," ...",[1525,3011,2998],{"class":1538},[1525,3013,1553],{"class":1531},[1525,3015,3016],{"class":1583}," isoNorm",[1525,3018,1761],{"class":1531},[1525,3020,2902],{"class":1535},[1525,3022,1539],{"class":1583},[1525,3024,2998],{"class":1538},[1525,3026,1532],{"class":1531},[1525,3028,2250],{"class":1538},[1525,3030,2638],{"class":1583},[1525,3032,1781],{"class":1531},[1525,3034,2184],{"class":1583},[1525,3036,1592],{"class":1531},[1525,3038,3039],{"class":1527,"line":1778},[1525,3040,1599],{"emptyLinePlaceholder":1598},[1525,3042,3043],{"class":1527,"line":2055},[1525,3044,3045],{"class":1629},"  // 1. Exact match (case-insensitive, treating de_DE and de-DE as equal).\n",[1525,3047,3048,3050,3053,3055,3057,3059,3062,3064,3066,3068,3070,3072,3075,3077,3080,3082,3084,3086],{"class":1527,"line":2077},[1525,3049,1571],{"class":1542},[1525,3051,3052],{"class":1538}," exact",[1525,3054,1577],{"class":1531},[1525,3056,2982],{"class":1538},[1525,3058,1532],{"class":1531},[1525,3060,3061],{"class":1535},"find",[1525,3063,1539],{"class":1583},[1525,3065,1539],{"class":1531},[1525,3067,2998],{"class":1549},[1525,3069,1589],{"class":1531},[1525,3071,1562],{"class":1542},[1525,3073,3074],{"class":1538}," l",[1525,3076,1532],{"class":1531},[1525,3078,3079],{"class":1538},"isoNorm",[1525,3081,2864],{"class":1531},[1525,3083,2962],{"class":1538},[1525,3085,1589],{"class":1583},[1525,3087,1592],{"class":1531},[1525,3089,3090,3092,3094,3097,3099,3101,3103],{"class":1527,"line":2085},[1525,3091,2630],{"class":1612},[1525,3093,1957],{"class":1583},[1525,3095,3096],{"class":1538},"exact",[1525,3098,2638],{"class":1583},[1525,3100,2641],{"class":1612},[1525,3102,3052],{"class":1538},[1525,3104,1592],{"class":1531},[1525,3106,3107],{"class":1527,"line":2090},[1525,3108,1599],{"emptyLinePlaceholder":1598},[1525,3110,3111],{"class":1527,"line":2097},[1525,3112,3113],{"class":1629},"  // 2. Language-only match (de matches de-AT, de-CH).\n",[1525,3115,3116,3118,3121,3123,3125,3127,3130,3132,3134,3136,3138,3141,3144,3146],{"class":1527,"line":2134},[1525,3117,1571],{"class":1542},[1525,3119,3120],{"class":1538}," language",[1525,3122,1577],{"class":1531},[1525,3124,2962],{"class":1538},[1525,3126,1532],{"class":1531},[1525,3128,3129],{"class":1535},"split",[1525,3131,1539],{"class":1583},[1525,3133,1676],{"class":1531},[1525,3135,2941],{"class":1679},[1525,3137,1676],{"class":1531},[1525,3139,3140],{"class":1583},")[",[1525,3142,3143],{"class":2461},"0",[1525,3145,1933],{"class":1583},[1525,3147,1592],{"class":1531},[1525,3149,3150,3152,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3200,3202,3204],{"class":1527,"line":2151},[1525,3151,1571],{"class":1542},[1525,3153,3154],{"class":1538}," byLanguage",[1525,3156,1577],{"class":1531},[1525,3158,2982],{"class":1538},[1525,3160,1532],{"class":1531},[1525,3162,3061],{"class":1535},[1525,3164,1539],{"class":1583},[1525,3166,1539],{"class":1531},[1525,3168,2998],{"class":1549},[1525,3170,1589],{"class":1531},[1525,3172,1562],{"class":1542},[1525,3174,3074],{"class":1538},[1525,3176,1532],{"class":1531},[1525,3178,3079],{"class":1538},[1525,3180,1532],{"class":1531},[1525,3182,3129],{"class":1535},[1525,3184,1539],{"class":1583},[1525,3186,1676],{"class":1531},[1525,3188,2941],{"class":1679},[1525,3190,1676],{"class":1531},[1525,3192,3140],{"class":1583},[1525,3194,3143],{"class":2461},[1525,3196,1685],{"class":1583},[1525,3198,3199],{"class":1531},"===",[1525,3201,3120],{"class":1538},[1525,3203,1589],{"class":1583},[1525,3205,1592],{"class":1531},[1525,3207,3208,3210,3212,3215,3217,3219,3221],{"class":1527,"line":2178},[1525,3209,2630],{"class":1612},[1525,3211,1957],{"class":1583},[1525,3213,3214],{"class":1538},"byLanguage",[1525,3216,2638],{"class":1583},[1525,3218,2641],{"class":1612},[1525,3220,3154],{"class":1538},[1525,3222,1592],{"class":1531},[1525,3224,3225],{"class":1527,"line":2189},[1525,3226,1599],{"emptyLinePlaceholder":1598},[1525,3228,3229],{"class":1527,"line":2266},[1525,3230,3231],{"class":1629},"  // 3. Fall back to English in any region.\n",[1525,3233,3234,3236,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265,3268,3270,3272,3275,3277,3279],{"class":1527,"line":2275},[1525,3235,1571],{"class":1542},[1525,3237,3238],{"class":1538}," english",[1525,3240,1577],{"class":1531},[1525,3242,2982],{"class":1538},[1525,3244,1532],{"class":1531},[1525,3246,3061],{"class":1535},[1525,3248,1539],{"class":1583},[1525,3250,1539],{"class":1531},[1525,3252,2998],{"class":1549},[1525,3254,1589],{"class":1531},[1525,3256,1562],{"class":1542},[1525,3258,3074],{"class":1538},[1525,3260,1532],{"class":1531},[1525,3262,3079],{"class":1538},[1525,3264,1532],{"class":1531},[1525,3266,3267],{"class":1535},"startsWith",[1525,3269,1539],{"class":1583},[1525,3271,1676],{"class":1531},[1525,3273,3274],{"class":1679},"en",[1525,3276,1676],{"class":1531},[1525,3278,2184],{"class":1583},[1525,3280,1592],{"class":1531},[1525,3282,3283,3285,3287,3290,3292,3294,3296],{"class":1527,"line":2308},[1525,3284,2630],{"class":1612},[1525,3286,1957],{"class":1583},[1525,3288,3289],{"class":1538},"english",[1525,3291,2638],{"class":1583},[1525,3293,2641],{"class":1612},[1525,3295,3238],{"class":1538},[1525,3297,1592],{"class":1531},[1525,3299,3300],{"class":1527,"line":2326},[1525,3301,1599],{"emptyLinePlaceholder":1598},[1525,3303,3304],{"class":1527,"line":2342},[1525,3305,3306],{"class":1629},"  // 4. Anything is better than nothing.\n",[1525,3308,3309,3311,3313,3315,3317,3319],{"class":1527,"line":2372},[1525,3310,1752],{"class":1612},[1525,3312,2987],{"class":1538},[1525,3314,1673],{"class":1583},[1525,3316,3143],{"class":2461},[1525,3318,1933],{"class":1583},[1525,3320,1592],{"class":1531},[1525,3322,3323],{"class":1527,"line":2386},[1525,3324,2395],{"class":1531},[1525,3326,3327],{"class":1527,"line":2392},[1525,3328,1599],{"emptyLinePlaceholder":1598},[1525,3330,3332,3334,3336,3339,3341,3343,3346,3348,3350,3352,3354,3356,3358,3360,3362],{"class":1527,"line":3331},28,[1525,3333,1875],{"class":1612},[1525,3335,1946],{"class":1542},[1525,3337,3338],{"class":1538}," getCurrentSystemEntities ",[1525,3340,1688],{"class":1531},[1525,3342,1957],{"class":1531},[1525,3344,3345],{"class":1549},"system",[1525,3347,1761],{"class":1531},[1525,3349,1882],{"class":1881},[1525,3351,1553],{"class":1531},[1525,3353,1556],{"class":1549},[1525,3355,1761],{"class":1531},[1525,3357,2767],{"class":1881},[1525,3359,1589],{"class":1531},[1525,3361,1562],{"class":1542},[1525,3363,1565],{"class":1531},[1525,3365,3367,3369,3372,3374,3377,3379,3381,3383,3385,3387,3389,3391,3393,3395],{"class":1527,"line":3366},29,[1525,3368,1571],{"class":1542},[1525,3370,3371],{"class":1538}," locale",[1525,3373,1577],{"class":1531},[1525,3375,3376],{"class":1535}," findBestLocale",[1525,3378,1539],{"class":1583},[1525,3380,3345],{"class":1538},[1525,3382,1532],{"class":1531},[1525,3384,1922],{"class":1538},[1525,3386,1553],{"class":1531},[1525,3388,1556],{"class":1538},[1525,3390,1532],{"class":1531},[1525,3392,1734],{"class":1538},[1525,3394,1589],{"class":1583},[1525,3396,1592],{"class":1531},[1525,3398,3400,3402,3405,3407,3410,3412,3415,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435,3437,3439,3441,3443,3445,3447,3449,3451,3453,3455,3457,3459],{"class":1527,"line":3399},30,[1525,3401,1571],{"class":1542},[1525,3403,3404],{"class":1538}," currency",[1525,3406,1577],{"class":1531},[1525,3408,3409],{"class":1538}," system",[1525,3411,1532],{"class":1531},[1525,3413,3414],{"class":1538},"currencies",[1525,3416,1532],{"class":1531},[1525,3418,3061],{"class":1535},[1525,3420,1539],{"class":1583},[1525,3422,1539],{"class":1531},[1525,3424,2122],{"class":1549},[1525,3426,1589],{"class":1531},[1525,3428,1562],{"class":1542},[1525,3430,2142],{"class":1538},[1525,3432,1532],{"class":1531},[1525,3434,2250],{"class":1538},[1525,3436,2864],{"class":1531},[1525,3438,1556],{"class":1538},[1525,3440,1532],{"class":1531},[1525,3442,1695],{"class":1538},[1525,3444,2638],{"class":1583},[1525,3446,2258],{"class":1531},[1525,3448,3409],{"class":1538},[1525,3450,1532],{"class":1531},[1525,3452,3414],{"class":1538},[1525,3454,1673],{"class":1583},[1525,3456,3143],{"class":2461},[1525,3458,1933],{"class":1583},[1525,3460,1592],{"class":1531},[1525,3462,3464,3466,3469,3471,3473,3475,3478,3480,3482,3484,3486,3488,3490,3492,3494,3496,3498,3500,3502,3505,3507,3510,3512,3514,3516,3518,3520,3522,3525,3527,3529,3531,3533,3535,3537,3539,3541],{"class":1527,"line":3463},31,[1525,3465,1571],{"class":1542},[1525,3467,3468],{"class":1538}," country",[1525,3470,1577],{"class":1531},[1525,3472,3409],{"class":1538},[1525,3474,1532],{"class":1531},[1525,3476,3477],{"class":1538},"countries",[1525,3479,1532],{"class":1531},[1525,3481,3061],{"class":1535},[1525,3483,1539],{"class":1583},[1525,3485,1539],{"class":1531},[1525,3487,2122],{"class":1549},[1525,3489,1589],{"class":1531},[1525,3491,1562],{"class":1542},[1525,3493,2142],{"class":1538},[1525,3495,1532],{"class":1531},[1525,3497,2250],{"class":1538},[1525,3499,2864],{"class":1531},[1525,3501,2875],{"class":1531},[1525,3503,3504],{"class":1538}," Intl",[1525,3506,1532],{"class":1531},[1525,3508,3509],{"class":1535},"Locale",[1525,3511,1539],{"class":1583},[1525,3513,1509],{"class":1538},[1525,3515,1532],{"class":1531},[1525,3517,1734],{"class":1538},[1525,3519,1589],{"class":1583},[1525,3521,1532],{"class":1531},[1525,3523,3524],{"class":1538},"region",[1525,3526,2638],{"class":1583},[1525,3528,2258],{"class":1531},[1525,3530,3409],{"class":1538},[1525,3532,1532],{"class":1531},[1525,3534,3477],{"class":1538},[1525,3536,1673],{"class":1583},[1525,3538,3143],{"class":2461},[1525,3540,1933],{"class":1583},[1525,3542,1592],{"class":1531},[1525,3544,3546,3548,3550,3552,3554,3556,3558,3560],{"class":1527,"line":3545},32,[1525,3547,1752],{"class":1612},[1525,3549,1755],{"class":1531},[1525,3551,3371],{"class":1538},[1525,3553,1553],{"class":1531},[1525,3555,3404],{"class":1538},[1525,3557,1553],{"class":1531},[1525,3559,3468],{"class":1538},[1525,3561,1775],{"class":1531},[1525,3563,3565],{"class":1527,"line":3564},33,[1525,3566,2395],{"class":1531},[1480,3568,3569],{},"The ladder is sequential, not heuristic. Each rung is a clear rule someone can debug if a customer reports the wrong locale rendering. Currency and country usually only need an exact match plus a \"first available\" fallback. There's no equivalent of language-only matching for ISO 4217.",[1787,3571,3573],{"id":3572},"step-4-wire-it-into-extendrequest","Step 4: wire it into extendRequest",[1480,3575,3576,3577,3580,3581,3584],{},"The full middleware combines all three pieces. Note that handlers downstream see ",[1484,3578,3579],{},"current"," on ",[1484,3582,3583],{},"context"," and never deal with the raw metadata or the fallback logic:",[1516,3586,3589],{"className":1518,"code":3587,"filename":3588,"language":1520,"meta":1521,"style":1521},"import { defineOrchestr } from '#imports';\nimport { shopwareClientFactory } from '../client/shopwareClientFactory';\nimport { getCachedSystemEntities } from '../shopware-helper/system/getSystemEntities';\nimport { getCurrentSystemEntities } from '../shopware-helper/system/getCurrentSystemEntities';\n\nexport const defineShopware = defineOrchestr\n  .meta({ app: '@laioutr-core/shopware', label: 'Shopware', logoUrl: '/app-shopware/shopware-logo.svg' })\n  .extendRequest(async ({ event, clientEnv }) => {\n    const storefrontClient = shopwareClientFactory(event);\n\n    const systemEntities = await getCachedSystemEntities(storefrontClient);\n    const current = getCurrentSystemEntities(systemEntities, clientEnv);\n\n    storefrontClient.defaultHeaders['sw-currency-id'] = current.currency.id;\n    storefrontClient.defaultHeaders['sw-language-id'] = current.locale.languageId;\n\n    return {\n      context: {\n        storefrontClient,\n        current,\n        swCurrency: current.currency.iso,\n      },\n    };\n  });\n","server/middleware/defineShopware.ts",[1484,3590,3591,3612,3633,3654,3675,3679,3693,3749,3773,3792,3796,3816,3838,3842,3875,3907,3911,3918,3927,3934,3941,3960,3965,3970],{"__ignoreMap":1521},[1525,3592,3593,3595,3597,3600,3602,3604,3606,3608,3610],{"class":1527,"line":1528},[1525,3594,1824],{"class":1612},[1525,3596,1755],{"class":1531},[1525,3598,3599],{"class":1538}," defineOrchestr",[1525,3601,1772],{"class":1531},[1525,3603,1834],{"class":1612},[1525,3605,1837],{"class":1531},[1525,3607,2440],{"class":1679},[1525,3609,1676],{"class":1531},[1525,3611,1592],{"class":1531},[1525,3613,3614,3616,3618,3620,3622,3624,3626,3629,3631],{"class":1527,"line":1568},[1525,3615,1824],{"class":1612},[1525,3617,1755],{"class":1531},[1525,3619,1580],{"class":1538},[1525,3621,1772],{"class":1531},[1525,3623,1834],{"class":1612},[1525,3625,1837],{"class":1531},[1525,3627,3628],{"class":1679},"../client/shopwareClientFactory",[1525,3630,1676],{"class":1531},[1525,3632,1592],{"class":1531},[1525,3634,3635,3637,3639,3641,3643,3645,3647,3650,3652],{"class":1527,"line":1595},[1525,3636,1824],{"class":1612},[1525,3638,1755],{"class":1531},[1525,3640,1616],{"class":1538},[1525,3642,1772],{"class":1531},[1525,3644,1834],{"class":1612},[1525,3646,1837],{"class":1531},[1525,3648,3649],{"class":1679},"../shopware-helper/system/getSystemEntities",[1525,3651,1676],{"class":1531},[1525,3653,1592],{"class":1531},[1525,3655,3656,3658,3660,3662,3664,3666,3668,3671,3673],{"class":1527,"line":1602},[1525,3657,1824],{"class":1612},[1525,3659,1755],{"class":1531},[1525,3661,1643],{"class":1538},[1525,3663,1772],{"class":1531},[1525,3665,1834],{"class":1612},[1525,3667,1837],{"class":1531},[1525,3669,3670],{"class":1679},"../shopware-helper/system/getCurrentSystemEntities",[1525,3672,1676],{"class":1531},[1525,3674,1592],{"class":1531},[1525,3676,3677],{"class":1527,"line":1633},[1525,3678,1599],{"emptyLinePlaceholder":1598},[1525,3680,3681,3683,3685,3688,3690],{"class":1527,"line":1662},[1525,3682,1875],{"class":1612},[1525,3684,1946],{"class":1542},[1525,3686,3687],{"class":1538}," defineShopware ",[1525,3689,1688],{"class":1531},[1525,3691,3692],{"class":1538}," defineOrchestr\n",[1525,3694,3695,3698,3701,3703,3705,3708,3710,3712,3715,3717,3719,3722,3724,3726,3728,3730,3732,3735,3737,3739,3742,3744,3746],{"class":1527,"line":1708},[1525,3696,3697],{"class":1531},"  .",[1525,3699,3700],{"class":1535},"meta",[1525,3702,1539],{"class":1538},[1525,3704,2225],{"class":1531},[1525,3706,3707],{"class":1583}," app",[1525,3709,1761],{"class":1531},[1525,3711,1837],{"class":1531},[1525,3713,3714],{"class":1679},"@laioutr-core/shopware",[1525,3716,1676],{"class":1531},[1525,3718,1553],{"class":1531},[1525,3720,3721],{"class":1583}," label",[1525,3723,1761],{"class":1531},[1525,3725,1837],{"class":1531},[1525,3727,564],{"class":1679},[1525,3729,1676],{"class":1531},[1525,3731,1553],{"class":1531},[1525,3733,3734],{"class":1583}," logoUrl",[1525,3736,1761],{"class":1531},[1525,3738,1837],{"class":1531},[1525,3740,3741],{"class":1679},"/app-shopware/shopware-logo.svg",[1525,3743,1676],{"class":1531},[1525,3745,1772],{"class":1531},[1525,3747,3748],{"class":1538},")\n",[1525,3750,3751,3753,3755,3757,3759,3761,3763,3765,3767,3769,3771],{"class":1527,"line":1744},[1525,3752,3697],{"class":1531},[1525,3754,1513],{"class":1535},[1525,3756,1539],{"class":1538},[1525,3758,1543],{"class":1542},[1525,3760,1546],{"class":1531},[1525,3762,1550],{"class":1549},[1525,3764,1553],{"class":1531},[1525,3766,1556],{"class":1549},[1525,3768,1559],{"class":1531},[1525,3770,1562],{"class":1542},[1525,3772,1565],{"class":1531},[1525,3774,3775,3778,3780,3782,3784,3786,3788,3790],{"class":1527,"line":1749},[1525,3776,3777],{"class":1542},"    const",[1525,3779,1574],{"class":1538},[1525,3781,1577],{"class":1531},[1525,3783,1580],{"class":1535},[1525,3785,1539],{"class":1583},[1525,3787,1586],{"class":1538},[1525,3789,1589],{"class":1583},[1525,3791,1592],{"class":1531},[1525,3793,3794],{"class":1527,"line":1778},[1525,3795,1599],{"emptyLinePlaceholder":1598},[1525,3797,3798,3800,3802,3804,3806,3808,3810,3812,3814],{"class":1527,"line":2055},[1525,3799,3777],{"class":1542},[1525,3801,1607],{"class":1538},[1525,3803,1577],{"class":1531},[1525,3805,1613],{"class":1612},[1525,3807,1616],{"class":1535},[1525,3809,1539],{"class":1583},[1525,3811,1621],{"class":1538},[1525,3813,1589],{"class":1583},[1525,3815,1592],{"class":1531},[1525,3817,3818,3820,3822,3824,3826,3828,3830,3832,3834,3836],{"class":1527,"line":2077},[1525,3819,3777],{"class":1542},[1525,3821,1638],{"class":1538},[1525,3823,1577],{"class":1531},[1525,3825,1643],{"class":1535},[1525,3827,1539],{"class":1583},[1525,3829,1648],{"class":1538},[1525,3831,1553],{"class":1531},[1525,3833,1556],{"class":1538},[1525,3835,1589],{"class":1583},[1525,3837,1592],{"class":1531},[1525,3839,3840],{"class":1527,"line":2085},[1525,3841,1599],{"emptyLinePlaceholder":1598},[1525,3843,3844,3847,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873],{"class":1527,"line":2090},[1525,3845,3846],{"class":1538},"    storefrontClient",[1525,3848,1532],{"class":1531},[1525,3850,1670],{"class":1538},[1525,3852,1673],{"class":1583},[1525,3854,1676],{"class":1531},[1525,3856,1680],{"class":1679},[1525,3858,1676],{"class":1531},[1525,3860,1685],{"class":1583},[1525,3862,1688],{"class":1531},[1525,3864,1638],{"class":1538},[1525,3866,1532],{"class":1531},[1525,3868,1695],{"class":1538},[1525,3870,1532],{"class":1531},[1525,3872,1700],{"class":1538},[1525,3874,1592],{"class":1531},[1525,3876,3877,3879,3881,3883,3885,3887,3889,3891,3893,3895,3897,3899,3901,3903,3905],{"class":1527,"line":2097},[1525,3878,3846],{"class":1538},[1525,3880,1532],{"class":1531},[1525,3882,1670],{"class":1538},[1525,3884,1673],{"class":1583},[1525,3886,1676],{"class":1531},[1525,3888,1721],{"class":1679},[1525,3890,1676],{"class":1531},[1525,3892,1685],{"class":1583},[1525,3894,1688],{"class":1531},[1525,3896,1638],{"class":1538},[1525,3898,1532],{"class":1531},[1525,3900,1734],{"class":1538},[1525,3902,1532],{"class":1531},[1525,3904,1739],{"class":1538},[1525,3906,1592],{"class":1531},[1525,3908,3909],{"class":1527,"line":2134},[1525,3910,1599],{"emptyLinePlaceholder":1598},[1525,3912,3913,3916],{"class":1527,"line":2151},[1525,3914,3915],{"class":1612},"    return",[1525,3917,1565],{"class":1531},[1525,3919,3920,3923,3925],{"class":1527,"line":2178},[1525,3921,3922],{"class":1583},"      context",[1525,3924,1761],{"class":1531},[1525,3926,1565],{"class":1531},[1525,3928,3929,3932],{"class":1527,"line":2189},[1525,3930,3931],{"class":1538},"        storefrontClient",[1525,3933,2031],{"class":1531},[1525,3935,3936,3939],{"class":1527,"line":2266},[1525,3937,3938],{"class":1538},"        current",[1525,3940,2031],{"class":1531},[1525,3942,3943,3946,3948,3950,3952,3954,3956,3958],{"class":1527,"line":2275},[1525,3944,3945],{"class":1583},"        swCurrency",[1525,3947,1761],{"class":1531},[1525,3949,1638],{"class":1538},[1525,3951,1532],{"class":1531},[1525,3953,1695],{"class":1538},[1525,3955,1532],{"class":1531},[1525,3957,2250],{"class":1538},[1525,3959,2031],{"class":1531},[1525,3961,3962],{"class":1527,"line":2308},[1525,3963,3964],{"class":1531},"      },\n",[1525,3966,3967],{"class":1527,"line":2326},[1525,3968,3969],{"class":1531},"    };\n",[1525,3971,3972,3975,3977],{"class":1527,"line":2342},[1525,3973,3974],{"class":1531},"  }",[1525,3976,1589],{"class":1538},[1525,3978,1592],{"class":1531},[1480,3980,3981,3982,3985,3986,3989],{},"A handler now reads ",[1484,3983,3984],{},"context.swCurrency"," if it needs the ISO code, or ",[1484,3987,3988],{},"context.current.locale.languageId"," for vendor IDs, but it never runs the bootstrap. The cache means only the first request after a TTL eviction pays the network cost; the rest are an in-memory map lookup.",[1787,3991,3993],{"id":3992},"cost-discipline-in-extendrequest","Cost discipline in extendRequest",[1480,3995,3996,3998,3999,4001],{},[1484,3997,1513],{}," runs on every Orchestr request (actions, queries, links, and component resolvers all share the same per-request middleware chain), so the bootstrap call has to stay cheap. The cache layer is what makes that safe: without it, every response would carry the metadata fetch's latency, and a slow vendor would slow the entire storefront. Treat any uncached work in ",[1484,4000,1513],{}," as a hot-path performance bug.",[1787,4003,4005],{"id":4004},"related","Related",[4007,4008,4009,4017,4024],"ul",{},[4010,4011,4012,4016],"li",{},[2729,4013,4015],{"href":4014},"/frontend/orchestr/middleware#extendrequest-per-request-setup","Middleware: extendRequest",": base mechanics of per-request setup.",[4010,4018,4019,4023],{},[2729,4020,4022],{"href":4021},"/frontend/orchestr/caching#userland-cache","Caching: Userland cache",": the cache the bootstrap uses.",[4010,4025,4026,4029],{},[2729,4027,266],{"href":4028},"./userland-cache-patterns"," (recipe): the prefix-vs-key composition rule the bootstrap cache follows.",[4031,4032,4033],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":1521,"searchDepth":1568,"depth":1568,"links":4035},[4036,4037,4038,4039,4040,4041,4042],{"id":1789,"depth":1568,"text":1790},{"id":1809,"depth":1568,"text":1810},{"id":2404,"depth":1568,"text":2405},{"id":2735,"depth":1568,"text":2736},{"id":3572,"depth":1568,"text":3573},{"id":3992,"depth":1568,"text":3993},{"id":4004,"depth":1568,"text":4005},"When your backend needs internal IDs for currency, locale, or sales channel that aren't part of clientEnv, fetch and cache the metadata once, then resolve it on each request.","md",{},{"title":4047,"description":4048},"System bootstrap in extendRequest | Laioutr","When your backend needs internal IDs for currency, locale, or sales channel that aren't in clientEnv, fetch and cache the metadata once, then resolve it on each request.",{"loc":259,"lastmod":4050,"changefreq":4051,"priority":4052},"2026-05-05","monthly",0.9,"1J2ykxQX2bUQCOY0uX8zQB5pC9mjcjAX5RAGi1bQzvc",[4055,4057],{"title":254,"path":255,"stem":256,"description":4056,"children":-1},"Read-or-create-and-set patterns for cart, session, and visitor identity cookies. Where to put the bootstrap depends on when you need the ID.",{"title":262,"path":263,"stem":264,"description":4058,"children":-1},"Map raw backend errors into canonical Laioutr errors so the storefront UI can render them with no connector-specific code.",1778245943576]