[{"data":1,"prerenderedAt":3443},["ShallowReactive",2],{"navigation_docs":3,"-apps-app-development-media-libraries":2059,"-apps-app-development-media-libraries-surround":3300,"changelog-data":3305,"/apps/app-development/media-libraries-MediaLibrary-0.31.0-0-note":3406},[4,136,531,559,675,863,1760,1850,1855,1860,1919,2017],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","0.getting-started/0.index",[9,10,14,18,56,81,115,132],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Starting new project","/getting-started/starting-new-project","0.getting-started/1.starting-new-project",{"title":15,"path":16,"stem":17},"What is Laioutr?","/getting-started/what-is-laioutr","0.getting-started/2.what-is-laioutr",{"title":19,"path":20,"stem":21,"children":22,"page":55},"Key Concepts","/getting-started/key-concepts","0.getting-started/3.key-concepts",[23,27,31,35,39,43,47,51],{"title":24,"path":25,"stem":26},"Architecture","/getting-started/key-concepts/architecture","0.getting-started/3.key-concepts/1.architecture",{"title":28,"path":29,"stem":30},"Data Model","/getting-started/key-concepts/data-model","0.getting-started/3.key-concepts/2.data-model",{"title":32,"path":33,"stem":34},"Internationalization","/getting-started/key-concepts/5.internationalization","0.getting-started/3.key-concepts/3.5.internationalization",{"title":36,"path":37,"stem":38},"Data Flow","/getting-started/key-concepts/data-flow","0.getting-started/3.key-concepts/3.data-flow",{"title":40,"path":41,"stem":42},"Extensibility","/getting-started/key-concepts/extensibility","0.getting-started/3.key-concepts/4.extensibility",{"title":44,"path":45,"stem":46},"Philosophy","/getting-started/key-concepts/philosophy","0.getting-started/3.key-concepts/5.philosophy",{"title":48,"path":49,"stem":50},"CI/CD Pipeline","/getting-started/key-concepts/ci-cd-pipeline","0.getting-started/3.key-concepts/6.ci-cd-pipeline",{"title":52,"path":53,"stem":54},"Multi-tenancy","/getting-started/key-concepts/multi-tenancy","0.getting-started/3.key-concepts/multi-tenancy",false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Next Steps","/getting-started/next-steps","0.getting-started/4.next-steps",[61,65,69,73,77],{"title":62,"path":63,"stem":64},"Create Organization and Project","/getting-started/next-steps/create-org-and-project","0.getting-started/4.next-steps/0.create-org-and-project",{"title":66,"path":67,"stem":68},"First Project Configuration","/getting-started/next-steps/first-project-config","0.getting-started/4.next-steps/1.first-project-config",{"title":70,"path":71,"stem":72},"Setup Local Development Environment","/getting-started/next-steps/local-setup","0.getting-started/4.next-steps/3.local-setup",{"title":74,"path":75,"stem":76},"Create your first custom app","/getting-started/next-steps/create-custom-app","0.getting-started/4.next-steps/4.create-custom-app",{"title":78,"path":79,"stem":80},"CLI","/getting-started/next-steps/cli","0.getting-started/4.next-steps/5.cli",{"title":82,"path":83,"stem":84,"children":85},"Changelogs","/getting-started/changelogs","0.getting-started/5.Changelogs/0.index",[86,87,91,95,99,103,107,111],{"title":82,"path":83,"stem":84},{"title":88,"path":89,"stem":90},"Canonical Types Changelog","/getting-started/changelogs/canonical-types-changelog","0.getting-started/5.Changelogs/canonical-types-changelog",{"title":92,"path":93,"stem":94},"CLI Changelog","/getting-started/changelogs/cli-changelog","0.getting-started/5.Changelogs/cli-changelog",{"title":96,"path":97,"stem":98},"Cockpit Changelog","/getting-started/changelogs/cockpit-changelog","0.getting-started/5.Changelogs/cockpit-changelog",{"title":100,"path":101,"stem":102},"Figma Kit Changelog","/getting-started/changelogs/figma-kit-changelog","0.getting-started/5.Changelogs/figma-kit-changelog",{"title":104,"path":105,"stem":106},"Frontend Changelog","/getting-started/changelogs/frontend-changelog","0.getting-started/5.Changelogs/frontend-changelog",{"title":108,"path":109,"stem":110},"Orchestr Changelog","/getting-started/changelogs/orchestr-changelog","0.getting-started/5.Changelogs/orchestr-changelog",{"title":112,"path":113,"stem":114},"UI Changelog","/getting-started/changelogs/ui-changelog","0.getting-started/5.Changelogs/ui-changelog",{"title":116,"path":117,"stem":118,"children":119,"page":55},"Hints And Tips","/getting-started/hints-and-tips","0.getting-started/6.Hints-and-Tips",[120,124,128],{"title":121,"path":122,"stem":123},"Introduction","/getting-started/hints-and-tips/introduction","0.getting-started/6.Hints-and-Tips/0.introduction",{"title":125,"path":126,"stem":127},"Developer tools","/getting-started/hints-and-tips/developer-tools","0.getting-started/6.Hints-and-Tips/1.developer-tools",{"title":129,"path":130,"stem":131},"Claude Code plugin","/getting-started/hints-and-tips/claude-marketplace","0.getting-started/6.Hints-and-Tips/2.claude-marketplace",{"title":133,"path":134,"stem":135},"Documentation MCP Server","/getting-started/documentation-mcp-server","0.getting-started/7.documentation-mcp-server",{"title":137,"path":138,"stem":139,"children":140},"Frontend","/frontend","1.Frontend/0.index",[141,142,153,215,241,309],{"title":137,"path":138,"stem":139},{"title":121,"path":143,"stem":144,"children":145,"page":55},"/frontend/introduction","1.Frontend/1.Introduction",[146,149],{"title":19,"path":147,"stem":148},"/frontend/introduction/key-concepts","1.Frontend/1.Introduction/0.key-concepts",{"title":150,"path":151,"stem":152},"Tech Stack","/frontend/introduction/tech-stack","1.Frontend/1.Introduction/1.tech-stack",{"title":154,"path":155,"stem":156,"children":157},"Features","/frontend/features","1.Frontend/2.Features/0.index",[158,159,163,167,171,175,179,183,187,191,195,199,203,207,211],{"title":154,"path":155,"stem":156},{"title":160,"path":161,"stem":162},"Consent Management","/frontend/features/consent-management","1.Frontend/2.Features/consent-management",{"title":164,"path":165,"stem":166},"Currencies","/frontend/features/currencies","1.Frontend/2.Features/currencies",{"title":168,"path":169,"stem":170},"Environments & Staging","/frontend/features/environments","1.Frontend/2.Features/environments",{"title":172,"path":173,"stem":174},"Hooks","/frontend/features/hooks","1.Frontend/2.Features/hooks",{"title":176,"path":177,"stem":178},"Media and Media Library","/frontend/features/media","1.Frontend/2.Features/media",{"title":180,"path":181,"stem":182},"Multi-language Support","/frontend/features/multi-language-support","1.Frontend/2.Features/multi-language-support",{"title":184,"path":185,"stem":186},"Multi-market","/frontend/features/multi-market","1.Frontend/2.Features/multi-market",{"title":188,"path":189,"stem":190},"Page Types","/frontend/features/pagetypes","1.Frontend/2.Features/pagetypes",{"title":192,"path":193,"stem":194},"PWA","/frontend/features/pwa","1.Frontend/2.Features/pwa",{"title":196,"path":197,"stem":198},"Redirects","/frontend/features/redirects","1.Frontend/2.Features/redirects",{"title":200,"path":201,"stem":202},"Routing","/frontend/features/routing","1.Frontend/2.Features/routing",{"title":204,"path":205,"stem":206},"Server-Side Rendering (SSR) and Caching","/frontend/features/ssr-and-caching","1.Frontend/2.Features/ssr-and-caching",{"title":208,"path":209,"stem":210},"Tracking","/frontend/features/tracking","1.Frontend/2.Features/tracking",{"title":212,"path":213,"stem":214},"Z-Ordering","/frontend/features/z-ordering","1.Frontend/2.Features/z-ordering",{"title":216,"path":217,"stem":218,"children":219},"SEO","/frontend/seo","1.Frontend/3.SEO/0.index",[220,221,225,229,233,237],{"title":216,"path":217,"stem":218},{"title":222,"path":223,"stem":224},"Link Checker","/frontend/seo/link-checker","1.Frontend/3.SEO/link-checker",{"title":226,"path":227,"stem":228},"OG Image","/frontend/seo/og-image","1.Frontend/3.SEO/og-image",{"title":230,"path":231,"stem":232},"Robots.txt","/frontend/seo/robots-txt","1.Frontend/3.SEO/robots-txt",{"title":234,"path":235,"stem":236},"Schema.org","/frontend/seo/schema-org","1.Frontend/3.SEO/schema-org",{"title":238,"path":239,"stem":240},"Sitemap","/frontend/seo/sitemap","1.Frontend/3.SEO/sitemap",{"title":242,"path":243,"stem":244,"children":245},"Backend for Frontend","/frontend/orchestr","1.Frontend/4.Orchestr/0.index",[246,247,273,277,281,285,289,293,297,301,305],{"title":242,"path":243,"stem":244},{"title":248,"path":249,"stem":250,"children":251},"Recipes","/frontend/orchestr/recipes","1.Frontend/4.Orchestr/99.recipes/0.index",[252,253,257,261,265,269],{"title":248,"path":249,"stem":250},{"title":254,"path":255,"stem":256},"Analytics components from query handlers","/frontend/orchestr/recipes/analytics-from-query-handlers","1.Frontend/4.Orchestr/99.recipes/analytics-from-query-handlers",{"title":258,"path":259,"stem":260},"Identity cookies (cart and visitor IDs)","/frontend/orchestr/recipes/identity-cookies","1.Frontend/4.Orchestr/99.recipes/identity-cookies",{"title":262,"path":263,"stem":264},"System bootstrap in extendRequest","/frontend/orchestr/recipes/system-bootstrap","1.Frontend/4.Orchestr/99.recipes/system-bootstrap",{"title":266,"path":267,"stem":268},"Translating vendor errors","/frontend/orchestr/recipes/translating-vendor-errors","1.Frontend/4.Orchestr/99.recipes/translating-vendor-errors",{"title":270,"path":271,"stem":272},"Userland cache patterns","/frontend/orchestr/recipes/userland-cache-patterns","1.Frontend/4.Orchestr/99.recipes/userland-cache-patterns",{"title":274,"path":275,"stem":276},"Actions","/frontend/orchestr/actions","1.Frontend/4.Orchestr/Actions",{"title":278,"path":279,"stem":280},"Caching","/frontend/orchestr/caching","1.Frontend/4.Orchestr/Caching",{"title":282,"path":283,"stem":284},"Store Devtools","/frontend/orchestr/devtools","1.Frontend/4.Orchestr/Devtools",{"title":286,"path":287,"stem":288},"Middleware","/frontend/orchestr/middleware","1.Frontend/4.Orchestr/Middleware",{"title":290,"path":291,"stem":292},"Queries & Links","/frontend/orchestr/queries","1.Frontend/4.Orchestr/Queries",{"title":294,"path":295,"stem":296},"Component Resolvers","/frontend/orchestr/component-resolvers","1.Frontend/4.Orchestr/component-resolvers",{"title":298,"path":299,"stem":300},"Filters","/frontend/orchestr/filters","1.Frontend/4.Orchestr/filters",{"title":302,"path":303,"stem":304},"URL Query Parameters","/frontend/orchestr/url-query-params","1.Frontend/4.Orchestr/url-query-params",{"title":306,"path":307,"stem":308},"Orchestr Wire Format","/frontend/orchestr/wire-format","1.Frontend/4.Orchestr/wire-format",{"title":310,"path":311,"stem":312,"children":313},"API Reference","/frontend/api-reference","1.Frontend/99.api-reference/0.index",[314,315,433,436,470,486,494,505,513,520],{"title":310,"path":311,"stem":312},{"title":316,"path":317,"stem":318,"children":319},"Entities","/frontend/api-reference/entities","1.Frontend/99.api-reference/01.entities/0.index",[320,321,325,329,333,337,341,345,349,353,357,361,365,369,373,377,381,385,389,393,397,401,405,409,413,417,421,425,429],{"title":316,"path":317,"stem":318},{"title":322,"path":323,"stem":324},"Product","/frontend/api-reference/entities/product","1.Frontend/99.api-reference/01.entities/1.product",{"title":326,"path":327,"stem":328},"SuggestedSearch","/frontend/api-reference/entities/suggested-search","1.Frontend/99.api-reference/01.entities/10.suggested-search",{"title":330,"path":331,"stem":332},"SuggestedSearchEntry","/frontend/api-reference/entities/suggested-search-entry","1.Frontend/99.api-reference/01.entities/11.suggested-search-entry",{"title":334,"path":335,"stem":336},"BlogCollection","/frontend/api-reference/entities/blog-collection","1.Frontend/99.api-reference/01.entities/12.blog-collection",{"title":338,"path":339,"stem":340},"Comment","/frontend/api-reference/entities/comment","1.Frontend/99.api-reference/01.entities/13.comment",{"title":342,"path":343,"stem":344},"Location","/frontend/api-reference/entities/location","1.Frontend/99.api-reference/01.entities/14.location",{"title":346,"path":347,"stem":348},"Glossary","/frontend/api-reference/entities/glossary","1.Frontend/99.api-reference/01.entities/15.glossary",{"title":350,"path":351,"stem":352},"Product List","/frontend/api-reference/entities/product-list","1.Frontend/99.api-reference/01.entities/16.product-list",{"title":354,"path":355,"stem":356},"Product List Item","/frontend/api-reference/entities/product-list-item","1.Frontend/99.api-reference/01.entities/17.product-list-item",{"title":358,"path":359,"stem":360},"Organization","/frontend/api-reference/entities/organization","1.Frontend/99.api-reference/01.entities/18.organization",{"title":362,"path":363,"stem":364},"Employee","/frontend/api-reference/entities/employee","1.Frontend/99.api-reference/01.entities/19.employee",{"title":366,"path":367,"stem":368},"ProductVariant","/frontend/api-reference/entities/product-variant","1.Frontend/99.api-reference/01.entities/2.product-variant",{"title":370,"path":371,"stem":372},"Cost Center","/frontend/api-reference/entities/cost-center","1.Frontend/99.api-reference/01.entities/20.cost-center",{"title":374,"path":375,"stem":376},"Budget","/frontend/api-reference/entities/budget","1.Frontend/99.api-reference/01.entities/21.budget",{"title":378,"path":379,"stem":380},"Quote","/frontend/api-reference/entities/quote","1.Frontend/99.api-reference/01.entities/22.quote",{"title":382,"path":383,"stem":384},"Quote Item","/frontend/api-reference/entities/quote-item","1.Frontend/99.api-reference/01.entities/23.quote-item",{"title":386,"path":387,"stem":388},"Approval Flow","/frontend/api-reference/entities/approval-flow","1.Frontend/99.api-reference/01.entities/24.approval-flow",{"title":390,"path":391,"stem":392},"Approval Rule","/frontend/api-reference/entities/approval-rule","1.Frontend/99.api-reference/01.entities/25.approval-rule",{"title":394,"path":395,"stem":396},"Fee","/frontend/api-reference/entities/fee","1.Frontend/99.api-reference/01.entities/26.fee",{"title":398,"path":399,"stem":400},"Stock Location","/frontend/api-reference/entities/stock-location","1.Frontend/99.api-reference/01.entities/27.stock-location",{"title":402,"path":403,"stem":404},"Stock Level","/frontend/api-reference/entities/stock-level","1.Frontend/99.api-reference/01.entities/28.stock-level",{"title":406,"path":407,"stem":408},"Category","/frontend/api-reference/entities/category","1.Frontend/99.api-reference/01.entities/3.category",{"title":410,"path":411,"stem":412},"Cart","/frontend/api-reference/entities/cart","1.Frontend/99.api-reference/01.entities/4.cart",{"title":414,"path":415,"stem":416},"CartItem","/frontend/api-reference/entities/cart-item","1.Frontend/99.api-reference/01.entities/5.cart-item",{"title":418,"path":419,"stem":420},"Review","/frontend/api-reference/entities/review","1.Frontend/99.api-reference/01.entities/6.review",{"title":422,"path":423,"stem":424},"BreadcrumbItem","/frontend/api-reference/entities/breadcrumb-item","1.Frontend/99.api-reference/01.entities/7.breadcrumb-item",{"title":426,"path":427,"stem":428},"MenuItem","/frontend/api-reference/entities/menu-item","1.Frontend/99.api-reference/01.entities/8.menu-item",{"title":430,"path":431,"stem":432},"BlogPost","/frontend/api-reference/entities/blog-post","1.Frontend/99.api-reference/01.entities/9.blog-post",{"title":188,"path":434,"stem":435},"/frontend/api-reference/page-types","1.Frontend/99.api-reference/02.page-types",{"title":437,"path":438,"stem":439,"children":440},"Common Types","/frontend/api-reference/common-types","1.Frontend/99.api-reference/03.common-types/0.index",[441,442,446,450,454,458,462,466],{"title":437,"path":438,"stem":439},{"title":443,"path":444,"stem":445},"Link","/frontend/api-reference/common-types/link","1.Frontend/99.api-reference/03.common-types/1.link",{"title":447,"path":448,"stem":449},"Media","/frontend/api-reference/common-types/media","1.Frontend/99.api-reference/03.common-types/2.media",{"title":451,"path":452,"stem":453},"Money","/frontend/api-reference/common-types/money","1.Frontend/99.api-reference/03.common-types/3.money",{"title":455,"path":456,"stem":457},"UnitPrice","/frontend/api-reference/common-types/unit-price","1.Frontend/99.api-reference/03.common-types/4.unit-price",{"title":459,"path":460,"stem":461},"Measurement","/frontend/api-reference/common-types/measurement","1.Frontend/99.api-reference/03.common-types/5.measurement",{"title":463,"path":464,"stem":465},"Opening Hours","/frontend/api-reference/common-types/opening-hours","1.Frontend/99.api-reference/03.common-types/6.opening-hours",{"title":467,"path":468,"stem":469},"Commerce Value Types","/frontend/api-reference/common-types/commerce-values","1.Frontend/99.api-reference/03.common-types/7.commerce-values",{"title":471,"path":472,"stem":473,"children":474,"page":55},"Ecommerce","/frontend/api-reference/ecommerce","1.Frontend/99.api-reference/10.ecommerce",[475,478,482],{"title":274,"path":476,"stem":477},"/frontend/api-reference/ecommerce/actions","1.Frontend/99.api-reference/10.ecommerce/1.actions",{"title":479,"path":480,"stem":481},"Queries","/frontend/api-reference/ecommerce/queries","1.Frontend/99.api-reference/10.ecommerce/2.queries",{"title":483,"path":484,"stem":485},"Errors","/frontend/api-reference/ecommerce/errors","1.Frontend/99.api-reference/10.ecommerce/3.errors",{"title":487,"path":488,"stem":489,"children":490,"page":55},"Newsletter","/frontend/api-reference/newsletter","1.Frontend/99.api-reference/11.newsletter",[491],{"title":274,"path":492,"stem":493},"/frontend/api-reference/newsletter/actions","1.Frontend/99.api-reference/11.newsletter/1.actions",{"title":495,"path":496,"stem":497,"children":498,"page":55},"Blog","/frontend/api-reference/blog","1.Frontend/99.api-reference/12.blog",[499,502],{"title":479,"path":500,"stem":501},"/frontend/api-reference/blog/queries","1.Frontend/99.api-reference/12.blog/1.queries",{"title":483,"path":503,"stem":504},"/frontend/api-reference/blog/errors","1.Frontend/99.api-reference/12.blog/2.errors",{"title":506,"path":507,"stem":508,"children":509,"page":55},"Suggested Search","/frontend/api-reference/suggested-search","1.Frontend/99.api-reference/13.suggested-search",[510],{"title":479,"path":511,"stem":512},"/frontend/api-reference/suggested-search/queries","1.Frontend/99.api-reference/13.suggested-search/1.queries",{"title":342,"path":514,"stem":515,"children":516,"page":55},"/frontend/api-reference/location","1.Frontend/99.api-reference/15.location",[517],{"title":479,"path":518,"stem":519},"/frontend/api-reference/location/queries","1.Frontend/99.api-reference/15.location/1.queries",{"title":521,"path":522,"stem":523,"children":524,"page":55},"B2b","/frontend/api-reference/b2b","1.Frontend/99.api-reference/16.b2b",[525,528],{"title":274,"path":526,"stem":527},"/frontend/api-reference/b2b/actions","1.Frontend/99.api-reference/16.b2b/1.actions",{"title":483,"path":529,"stem":530},"/frontend/api-reference/b2b/errors","1.Frontend/99.api-reference/16.b2b/2.errors",{"title":532,"path":533,"stem":534,"children":535},"Agent API","/agent-api","10.Agent-API/0.index",[536,537],{"title":532,"path":533,"stem":534},{"title":538,"path":539,"stem":540,"children":541},"Laioutr MCP","/agent-api/laioutr-mcp","10.Agent-API/1.Laioutr-MCP/0.index",[542,543,547,551,555],{"title":538,"path":539,"stem":540},{"title":544,"path":545,"stem":546},"Connecting to Laioutr MCP","/agent-api/laioutr-mcp/connecting-to-laioutr-mcp","10.Agent-API/1.Laioutr-MCP/1.connecting-to-laioutr-mcp",{"title":548,"path":549,"stem":550},"Supported tools","/agent-api/laioutr-mcp/supported-tools","10.Agent-API/1.Laioutr-MCP/2.supported-tools",{"title":552,"path":553,"stem":554},"Security best practices","/agent-api/laioutr-mcp/security-best-practices","10.Agent-API/1.Laioutr-MCP/3.security-best-practices",{"title":556,"path":557,"stem":558},"Integrating your own MCP client","/agent-api/laioutr-mcp/integrating-your-own-mcp-client","10.Agent-API/1.Laioutr-MCP/4.integrating-your-own-mcp-client",{"title":560,"path":561,"stem":562,"children":563},"Offering","/offering","11.Offering/0.index",[564,565,600,613,626,660,669],{"title":560,"path":561,"stem":562},{"title":566,"path":567,"stem":568,"children":569},"Products","/offering/products","11.Offering/1.Products/0.index",[570,571,576,582,588,594],{"title":566,"path":567,"stem":568},{"title":137,"path":572,"stem":573,"children":574},"/offering/products/frontend","11.Offering/1.Products/1.Frontend/0.index",[575],{"title":137,"path":572,"stem":573},{"title":577,"path":578,"stem":579,"children":580},"Cockpit","/offering/products/cockpit","11.Offering/1.Products/2.Cockpit/0.index",[581],{"title":577,"path":578,"stem":579},{"title":583,"path":584,"stem":585,"children":586},"Checkout","/offering/products/checkout","11.Offering/1.Products/3.Checkout/0.index",[587],{"title":583,"path":584,"stem":585},{"title":589,"path":590,"stem":591,"children":592},"Cloud","/offering/products/cloud","11.Offering/1.Products/4.cloud/0.index",[593],{"title":589,"path":590,"stem":591},{"title":595,"path":596,"stem":597,"children":598},"Larry AI","/offering/products/larry-ai","11.Offering/1.Products/5.larry-ai/0.index",[599],{"title":595,"path":596,"stem":597},{"title":601,"path":602,"stem":603,"children":604,"page":55},"Service Level Agreement","/offering/service-level-agreement","11.Offering/2.service-level-agreement",[605,609],{"title":606,"path":607,"stem":608},"Standard Service Level Agreement Composable Frontend","/offering/service-level-agreement/standard-service-level-agreement","11.Offering/2.service-level-agreement/1.standard-service-level-agreement",{"title":610,"path":611,"stem":612},"Backups","/offering/service-level-agreement/backups","11.Offering/2.service-level-agreement/backups",{"title":614,"path":615,"stem":616,"children":617,"page":55},"Customer Support","/offering/customer-support","11.Offering/3.customer-support",[618,622],{"title":619,"path":620,"stem":621},"Standard Customer Support","/offering/customer-support/standard-customer-support","11.Offering/3.customer-support/1.standard-customer-support",{"title":623,"path":624,"stem":625},"Customer Support Severity Levels of Laioutr products","/offering/customer-support/maximum-serverity-levels","11.Offering/3.customer-support/maximum-serverity-levels",{"title":627,"path":628,"stem":629,"children":630},"Trust Center","/offering/trust-center","11.Offering/4.trust-center/0.index",[631,632,636,640,644,648,652,656],{"title":627,"path":628,"stem":629},{"title":633,"path":634,"stem":635},"Data Protection (GDPR)","/offering/trust-center/data-protection","11.Offering/4.trust-center/1.data-protection",{"title":637,"path":638,"stem":639},"Subprocessors","/offering/trust-center/subprocessors","11.Offering/4.trust-center/2.subprocessors",{"title":641,"path":642,"stem":643},"Infrastructure & Hosting","/offering/trust-center/infrastructure","11.Offering/4.trust-center/3.infrastructure",{"title":645,"path":646,"stem":647},"Security Measures","/offering/trust-center/security-measures","11.Offering/4.trust-center/4.security-measures",{"title":649,"path":650,"stem":651},"Incident Response","/offering/trust-center/incident-response","11.Offering/4.trust-center/5.incident-response",{"title":653,"path":654,"stem":655},"Compliance & Certifications","/offering/trust-center/compliance","11.Offering/4.trust-center/6.compliance",{"title":657,"path":658,"stem":659},"FAQ","/offering/trust-center/faq","11.Offering/4.trust-center/7.faq",{"title":661,"path":662,"stem":663,"children":664,"page":55},"Policies","/offering/policies","11.Offering/5.policies",[665],{"title":666,"path":667,"stem":668},"Fair usage policy","/offering/policies/fair-usage-policy","11.Offering/5.policies/fair-usage-policy",{"title":670,"path":671,"stem":672,"children":673},"Academy","/offering/academy","11.Offering/6.academy/0.index",[674],{"title":670,"path":671,"stem":672},{"title":676,"path":677,"stem":678,"children":679},"Apps","/apps","2.apps/0.index",[680,681,761,847],{"title":676,"path":677,"stem":678},{"title":682,"path":683,"stem":684,"children":685},"App Development","/apps/app-development","2.apps/app-development/0.index",[686,687,709,713,717,721,725,729,733,737,741,745,749,753,757],{"title":682,"path":683,"stem":684},{"title":688,"path":689,"stem":690,"children":691},"Guides","/apps/app-development/guides","2.apps/app-development/99.guides/0.index",[692,693,697,701,705],{"title":688,"path":689,"stem":690},{"title":694,"path":695,"stem":696},"Separate schema components from UI components","/apps/app-development/guides/schema-components-vs-ui-components","2.apps/app-development/99.guides/schema-components-vs-ui-components",{"title":698,"path":699,"stem":700},"Section config standard","/apps/app-development/guides/section-config-standard","2.apps/app-development/99.guides/section-config-standard",{"title":702,"path":703,"stem":704},"Shared field factories","/apps/app-development/guides/shared-field-factories","2.apps/app-development/99.guides/shared-field-factories",{"title":706,"path":707,"stem":708},"How to write CSS","/apps/app-development/guides/writing-css","2.apps/app-development/99.guides/writing-css",{"title":710,"path":711,"stem":712},"App Configuration","/apps/app-development/app-configuration","2.apps/app-development/app-configuration",{"title":714,"path":715,"stem":716},"App Starter","/apps/app-development/app-starter","2.apps/app-development/app-starter",{"title":718,"path":719,"stem":720},"Best Practice","/apps/app-development/best-practice","2.apps/app-development/best-practice",{"title":722,"path":723,"stem":724},"Block Definitions","/apps/app-development/block-definitions","2.apps/app-development/block-definitions",{"title":726,"path":727,"stem":728},"Coding Standards","/apps/app-development/coding-standards","2.apps/app-development/coding-standards",{"title":730,"path":731,"stem":732},"Consent Adapters","/apps/app-development/consent-adapters","2.apps/app-development/consent-adapters",{"title":734,"path":735,"stem":736},"Consuming Query Fields","/apps/app-development/consuming-query-fields","2.apps/app-development/consuming-query-fields",{"title":738,"path":739,"stem":740},"Implementation Overview","/apps/app-development/implementation-overview","2.apps/app-development/implementation-overview",{"title":742,"path":743,"stem":744},"Media Libraries","/apps/app-development/media-libraries","2.apps/app-development/media-libraries",{"title":746,"path":747,"stem":748},"Platform Dependencies","/apps/app-development/platform-dependencies","2.apps/app-development/platform-dependencies",{"title":750,"path":751,"stem":752},"Schema Fields","/apps/app-development/schema-fields","2.apps/app-development/schema-fields",{"title":754,"path":755,"stem":756},"Section Definitions","/apps/app-development/section-definitions","2.apps/app-development/section-definitions",{"title":758,"path":759,"stem":760},"Studio Icons","/apps/app-development/studio-icons","2.apps/app-development/studio-icons",{"title":762,"path":763,"stem":764,"children":765},"App Docs","/apps/app-docs","2.apps/app-docs/0.index",[766,767,771,775,779,783,787,791,795,799,803,807,811,815,819,823,827,831,835,839,843],{"title":762,"path":763,"stem":764},{"title":768,"path":769,"stem":770},"Actindo","/apps/app-docs/actindo","2.apps/app-docs/actindo",{"title":772,"path":773,"stem":774},"Adobe Commerce","/apps/app-docs/adobe-commerce","2.apps/app-docs/adobe-commerce",{"title":776,"path":777,"stem":778},"B2Bsellers","/apps/app-docs/b2bsellers","2.apps/app-docs/b2bsellers",{"title":780,"path":781,"stem":782},"Battery Included","/apps/app-docs/battery-included","2.apps/app-docs/battery-included",{"title":784,"path":785,"stem":786},"CCM19","/apps/app-docs/ccm19","2.apps/app-docs/ccm19",{"title":788,"path":789,"stem":790},"Commercetools","/apps/app-docs/commercetools","2.apps/app-docs/commercetools",{"title":792,"path":793,"stem":794},"Cookiebot","/apps/app-docs/cookiebot","2.apps/app-docs/cookiebot",{"title":796,"path":797,"stem":798},"Emporix","/apps/app-docs/emporix","2.apps/app-docs/emporix",{"title":800,"path":801,"stem":802},"Google Tag Manager (GTM)","/apps/app-docs/gtm","2.apps/app-docs/gtm",{"title":804,"path":805,"stem":806},"Hygraph","/apps/app-docs/hygraph","2.apps/app-docs/hygraph",{"title":808,"path":809,"stem":810},"JTL Platform","/apps/app-docs/jtl-platform","2.apps/app-docs/jtl-platform",{"title":812,"path":813,"stem":814},"Klaviyo","/apps/app-docs/klaviyo","2.apps/app-docs/klaviyo",{"title":816,"path":817,"stem":818},"Nimstrata Google Retail API","/apps/app-docs/nimstrata","2.apps/app-docs/nimstrata",{"title":820,"path":821,"stem":822},"OXID eShop","/apps/app-docs/oxid","2.apps/app-docs/oxid",{"title":824,"path":825,"stem":826},"Pimcore","/apps/app-docs/pimcore","2.apps/app-docs/pimcore",{"title":828,"path":829,"stem":830},"Shopify","/apps/app-docs/shopify","2.apps/app-docs/shopify",{"title":832,"path":833,"stem":834},"Shopware","/apps/app-docs/shopware","2.apps/app-docs/shopware",{"title":836,"path":837,"stem":838},"Sylius","/apps/app-docs/sylius","2.apps/app-docs/sylius",{"title":840,"path":841,"stem":842},"Vercel Analytics","/apps/app-docs/vercel-analytics","2.apps/app-docs/vercel-analytics",{"title":844,"path":845,"stem":846},"Vercel Speed Insights","/apps/app-docs/vercel-speed-insights","2.apps/app-docs/vercel-speed-insights",{"title":848,"path":849,"stem":850,"children":851,"page":55},"Essentials","/apps/essentials","2.apps/essentials",[852,856,860],{"title":853,"path":854,"stem":855},"Legal","/apps/essentials/legal","2.apps/essentials/legal",{"title":857,"path":858,"stem":859},"Mailer","/apps/essentials/mailer","2.apps/essentials/mailer",{"title":216,"path":861,"stem":862},"/apps/essentials/seo","2.apps/essentials/seo",{"title":864,"path":865,"stem":866,"children":867},"Laioutr UI","/laioutr-ui","3.laioutr-ui/0.index",[868,869,901,907,913,1105,1126,1132,1138,1192,1210,1344],{"title":864,"path":865,"stem":866},{"title":5,"path":870,"stem":871,"children":872},"/laioutr-ui/getting-started","3.laioutr-ui/01.getting-started/0.index",[873,874,878,882,886,890,894,898],{"title":5,"path":870,"stem":871},{"title":875,"path":876,"stem":877},"Browser support","/laioutr-ui/getting-started/browser-support","3.laioutr-ui/01.getting-started/1.browser-support",{"title":879,"path":880,"stem":881},"Common Data","/laioutr-ui/getting-started/common-data","3.laioutr-ui/01.getting-started/99.common-data",{"title":883,"path":884,"stem":885},"CSS Layers","/laioutr-ui/getting-started/css-layers","3.laioutr-ui/01.getting-started/css-layers",{"title":887,"path":888,"stem":889},"Figma Kit","/laioutr-ui/getting-started/figma-kit","3.laioutr-ui/01.getting-started/figma-kit",{"title":891,"path":892,"stem":893},"Surface Tone","/laioutr-ui/getting-started/surface-tone","3.laioutr-ui/01.getting-started/surface-tone",{"title":895,"path":896,"stem":897},"Theming","/laioutr-ui/getting-started/theming","3.laioutr-ui/01.getting-started/theming",{"title":212,"path":899,"stem":900},"/laioutr-ui/getting-started/z-ordering","3.laioutr-ui/01.getting-started/z-ordering",{"title":902,"path":903,"stem":904,"children":905},"B2B","/laioutr-ui/b2b","3.laioutr-ui/b2b/0.index",[906],{"title":902,"path":903,"stem":904},{"title":908,"path":909,"stem":910,"children":911},"Booking","/laioutr-ui/booking","3.laioutr-ui/booking/0.index",[912],{"title":908,"path":909,"stem":910},{"title":914,"path":915,"stem":916,"children":917},"CMS","/laioutr-ui/cms","3.laioutr-ui/cms/0.index",[918,919,925,950,962,966,970,974,978,982,994,1015,1036,1052,1101],{"title":914,"path":915,"stem":916},{"title":920,"path":921,"stem":922,"children":923},"Alphabetical Index","/laioutr-ui/cms/alphabetical-index","3.laioutr-ui/cms/alphabetical-index",[924],{"title":920,"path":921,"stem":922},{"title":926,"path":927,"stem":928,"children":929,"page":55},"Banner","/laioutr-ui/cms/banner","3.laioutr-ui/cms/banner",[930,934,938,942,946],{"title":931,"path":932,"stem":933},"Banner Basic","/laioutr-ui/cms/banner/banner-basic","3.laioutr-ui/cms/banner/banner-basic",{"title":935,"path":936,"stem":937},"Banner Integrated","/laioutr-ui/cms/banner/banner-integrated","3.laioutr-ui/cms/banner/banner-integrated",{"title":939,"path":940,"stem":941},"Banner Showcase","/laioutr-ui/cms/banner/banner-showcase","3.laioutr-ui/cms/banner/banner-showcase",{"title":943,"path":944,"stem":945},"Media + Text","/laioutr-ui/cms/banner/media-text","3.laioutr-ui/cms/banner/media-text",{"title":947,"path":948,"stem":949},"USP Banner","/laioutr-ui/cms/banner/usp-banner","3.laioutr-ui/cms/banner/usp-banner",{"title":495,"path":951,"stem":952,"children":953,"page":55},"/laioutr-ui/cms/blog","3.laioutr-ui/cms/blog",[954,958],{"title":955,"path":956,"stem":957},"Article Detail","/laioutr-ui/cms/blog/article-detail","3.laioutr-ui/cms/blog/article-detail",{"title":959,"path":960,"stem":961},"Blog Post Listing","/laioutr-ui/cms/blog/blog-post-listing","3.laioutr-ui/cms/blog/blog-post-listing",{"title":963,"path":964,"stem":965},"Brand Hero","/laioutr-ui/cms/brand-hero","3.laioutr-ui/cms/brand-hero",{"title":967,"path":968,"stem":969},"Container","/laioutr-ui/cms/container","3.laioutr-ui/cms/container",{"title":971,"path":972,"stem":973},"Content Grid","/laioutr-ui/cms/content-grid","3.laioutr-ui/cms/content-grid",{"title":975,"path":976,"stem":977},"Editorial Grid","/laioutr-ui/cms/editorial-grid","3.laioutr-ui/cms/editorial-grid",{"title":979,"path":980,"stem":981},"Media Gallery","/laioutr-ui/cms/media-gallery","3.laioutr-ui/cms/media-gallery",{"title":487,"path":983,"stem":984,"children":985,"page":55},"/laioutr-ui/cms/newsletter","3.laioutr-ui/cms/newsletter",[986,990],{"title":987,"path":988,"stem":989},"Email Input Form","/laioutr-ui/cms/newsletter/email-input-form","3.laioutr-ui/cms/newsletter/email-input-form",{"title":991,"path":992,"stem":993},"Newsletter Registration","/laioutr-ui/cms/newsletter/newsletter-registration","3.laioutr-ui/cms/newsletter/newsletter-registration",{"title":995,"path":996,"stem":997,"children":998,"page":55},"Popups","/laioutr-ui/cms/popups","3.laioutr-ui/cms/popups",[999,1003,1007,1011],{"title":1000,"path":1001,"stem":1002},"PopUp","/laioutr-ui/cms/popups/pop-up","3.laioutr-ui/cms/popups/pop-up",{"title":1004,"path":1005,"stem":1006},"PopUp Info","/laioutr-ui/cms/popups/pop-up-info","3.laioutr-ui/cms/popups/pop-up-info",{"title":1008,"path":1009,"stem":1010},"PopUp Newsletter","/laioutr-ui/cms/popups/pop-up-newsletter","3.laioutr-ui/cms/popups/pop-up-newsletter",{"title":1012,"path":1013,"stem":1014},"PopUp Promotion","/laioutr-ui/cms/popups/pop-up-promotion","3.laioutr-ui/cms/popups/pop-up-promotion",{"title":1016,"path":1017,"stem":1018,"children":1019,"page":55},"Quotes","/laioutr-ui/cms/quotes","3.laioutr-ui/cms/quotes",[1020,1024,1028,1032],{"title":1021,"path":1022,"stem":1023},"Persona Quote","/laioutr-ui/cms/quotes/persona-quote","3.laioutr-ui/cms/quotes/persona-quote",{"title":1025,"path":1026,"stem":1027},"Persona Quote Slider","/laioutr-ui/cms/quotes/persona-quote-slider","3.laioutr-ui/cms/quotes/persona-quote-slider",{"title":1029,"path":1030,"stem":1031},"Quote Card","/laioutr-ui/cms/quotes/quote-card","3.laioutr-ui/cms/quotes/quote-card",{"title":1033,"path":1034,"stem":1035},"Quote Card Slider","/laioutr-ui/cms/quotes/quote-card-slider","3.laioutr-ui/cms/quotes/quote-card-slider",{"title":1037,"path":1038,"stem":1039,"children":1040,"page":55},"Reviews","/laioutr-ui/cms/reviews","3.laioutr-ui/cms/reviews",[1041,1044,1048],{"title":418,"path":1042,"stem":1043},"/laioutr-ui/cms/reviews/review","3.laioutr-ui/cms/reviews/review",{"title":1045,"path":1046,"stem":1047},"Review Form","/laioutr-ui/cms/reviews/review-form","3.laioutr-ui/cms/reviews/review-form",{"title":1049,"path":1050,"stem":1051},"Social Share","/laioutr-ui/cms/reviews/social-share","3.laioutr-ui/cms/reviews/social-share",{"title":1053,"path":1054,"stem":1055,"children":1056,"page":55},"Slider","/laioutr-ui/cms/slider","3.laioutr-ui/cms/slider",[1057,1061,1065,1069,1073,1077,1081,1085,1089,1093,1097],{"title":1058,"path":1059,"stem":1060},"Content Slider","/laioutr-ui/cms/slider/content-slider","3.laioutr-ui/cms/slider/content-slider",{"title":1062,"path":1063,"stem":1064},"Hero Slider","/laioutr-ui/cms/slider/hero-slider","3.laioutr-ui/cms/slider/hero-slider",{"title":1066,"path":1067,"stem":1068},"Logo Grid","/laioutr-ui/cms/slider/logo-grid","3.laioutr-ui/cms/slider/logo-grid",{"title":1070,"path":1071,"stem":1072},"Logo Slider","/laioutr-ui/cms/slider/logo-slider","3.laioutr-ui/cms/slider/logo-slider",{"title":1074,"path":1075,"stem":1076},"Swiper Arrows","/laioutr-ui/cms/slider/swiper-arrows","3.laioutr-ui/cms/slider/swiper-arrows",{"title":1078,"path":1079,"stem":1080},"Swiper Bullets","/laioutr-ui/cms/slider/swiper-bullets","3.laioutr-ui/cms/slider/swiper-bullets",{"title":1082,"path":1083,"stem":1084},"Swiper Chrome","/laioutr-ui/cms/slider/swiper-chrome","3.laioutr-ui/cms/slider/swiper-chrome",{"title":1086,"path":1087,"stem":1088},"Swiper Nav Bar","/laioutr-ui/cms/slider/swiper-nav-bar","3.laioutr-ui/cms/slider/swiper-nav-bar",{"title":1090,"path":1091,"stem":1092},"Swiper Numbers","/laioutr-ui/cms/slider/swiper-numbers","3.laioutr-ui/cms/slider/swiper-numbers",{"title":1094,"path":1095,"stem":1096},"Swiper Scrollbar","/laioutr-ui/cms/slider/swiper-scrollbar","3.laioutr-ui/cms/slider/swiper-scrollbar",{"title":1098,"path":1099,"stem":1100},"Thumbnails Slider","/laioutr-ui/cms/slider/thumbnails-slider","3.laioutr-ui/cms/slider/thumbnails-slider",{"title":1102,"path":1103,"stem":1104},"Withdrawal Form","/laioutr-ui/cms/withdrawal-form","3.laioutr-ui/cms/withdrawal-form",{"title":342,"path":1106,"stem":1107,"children":1108},"/laioutr-ui/location","3.laioutr-ui/location/0.index",[1109,1110,1114,1118,1122],{"title":342,"path":1106,"stem":1107},{"title":1111,"path":1112,"stem":1113},"Location Card","/laioutr-ui/location/location-card","3.laioutr-ui/location/location-card",{"title":1115,"path":1116,"stem":1117},"Location Detail","/laioutr-ui/location/location-detail","3.laioutr-ui/location/location-detail",{"title":1119,"path":1120,"stem":1121},"Location Finder","/laioutr-ui/location/location-finder","3.laioutr-ui/location/location-finder",{"title":1123,"path":1124,"stem":1125},"Table Opening Hours","/laioutr-ui/location/table-opening-hours","3.laioutr-ui/location/table-opening-hours",{"title":1127,"path":1128,"stem":1129,"children":1130},"Marketplace","/laioutr-ui/marketplace","3.laioutr-ui/marketplace/0.index",[1131],{"title":1127,"path":1128,"stem":1129},{"title":1133,"path":1134,"stem":1135,"children":1136},"Multichannel","/laioutr-ui/multichannel","3.laioutr-ui/multichannel/0.index",[1137],{"title":1133,"path":1134,"stem":1135},{"title":1139,"path":1140,"stem":1141,"children":1142},"Navigation & Headers","/laioutr-ui/navigation","3.laioutr-ui/navigation/0.index",[1143,1144,1148,1152,1156,1160,1164,1168,1172,1176,1180,1184,1188],{"title":1139,"path":1140,"stem":1141},{"title":1145,"path":1146,"stem":1147},"Breadcrumbs","/laioutr-ui/navigation/breadcrumbs","3.laioutr-ui/navigation/breadcrumbs",{"title":1149,"path":1150,"stem":1151},"Footer","/laioutr-ui/navigation/footer","3.laioutr-ui/navigation/footer",{"title":1153,"path":1154,"stem":1155},"Footer Menu","/laioutr-ui/navigation/footer-menu","3.laioutr-ui/navigation/footer-menu",{"title":1157,"path":1158,"stem":1159},"Header Basic","/laioutr-ui/navigation/header-basic","3.laioutr-ui/navigation/header-basic",{"title":1161,"path":1162,"stem":1163},"Header Shop","/laioutr-ui/navigation/header-shop","3.laioutr-ui/navigation/header-shop",{"title":1165,"path":1166,"stem":1167},"Mega Menu","/laioutr-ui/navigation/mega-menu","3.laioutr-ui/navigation/mega-menu",{"title":1169,"path":1170,"stem":1171},"Menu Side by Side","/laioutr-ui/navigation/menu-side-by-side","3.laioutr-ui/navigation/menu-side-by-side",{"title":1173,"path":1174,"stem":1175},"Mobile Menu (Basic)","/laioutr-ui/navigation/mobile-menu-basic","3.laioutr-ui/navigation/mobile-menu-basic",{"title":1177,"path":1178,"stem":1179},"Mobile Menu (Shop)","/laioutr-ui/navigation/mobile-menu-shop","3.laioutr-ui/navigation/mobile-menu-shop",{"title":1181,"path":1182,"stem":1183},"Page Not Found","/laioutr-ui/navigation/page-not-found","3.laioutr-ui/navigation/page-not-found",{"title":1185,"path":1186,"stem":1187},"Search Auto-Suggest","/laioutr-ui/navigation/search-auto-suggest","3.laioutr-ui/navigation/search-auto-suggest",{"title":1189,"path":1190,"stem":1191},"Top Bar","/laioutr-ui/navigation/top-bar","3.laioutr-ui/navigation/top-bar",{"title":1193,"path":1194,"stem":1195,"children":1196},"SaaS","/laioutr-ui/saas","3.laioutr-ui/saas/0.index",[1197,1198,1202,1206],{"title":1193,"path":1194,"stem":1195},{"title":1199,"path":1200,"stem":1201},"Plan Card","/laioutr-ui/saas/plan-card","3.laioutr-ui/saas/plan-card",{"title":1203,"path":1204,"stem":1205},"Plan Card Slider","/laioutr-ui/saas/plan-card-slider","3.laioutr-ui/saas/plan-card-slider",{"title":1207,"path":1208,"stem":1209},"Plan Comparison Table","/laioutr-ui/saas/plan-comparison-table","3.laioutr-ui/saas/plan-comparison-table",{"title":1211,"path":1212,"stem":1213,"children":1214},"Shop","/laioutr-ui/shop","3.laioutr-ui/shop/0.index",[1215,1216,1244,1248,1252,1256,1260,1320,1324,1328,1332,1336,1340],{"title":1211,"path":1212,"stem":1213},{"title":410,"path":1217,"stem":1218,"children":1219,"page":55},"/laioutr-ui/shop/cart","3.laioutr-ui/shop/cart",[1220,1224,1228,1232,1236,1240],{"title":1221,"path":1222,"stem":1223},"Cart Coupon Code Accordion","/laioutr-ui/shop/cart/cart-coupon-code-accordion","3.laioutr-ui/shop/cart/cart-coupon-code-accordion",{"title":1225,"path":1226,"stem":1227},"Cart List Item","/laioutr-ui/shop/cart/cart-list-item","3.laioutr-ui/shop/cart/cart-list-item",{"title":1229,"path":1230,"stem":1231},"Cart Sheet","/laioutr-ui/shop/cart/cart-sheet","3.laioutr-ui/shop/cart/cart-sheet",{"title":1233,"path":1234,"stem":1235},"Cart Summary Box","/laioutr-ui/shop/cart/cart-summary-box","3.laioutr-ui/shop/cart/cart-summary-box",{"title":1237,"path":1238,"stem":1239},"Empty State Cart","/laioutr-ui/shop/cart/empty-state-cart","3.laioutr-ui/shop/cart/empty-state-cart",{"title":1241,"path":1242,"stem":1243},"Free Delivery Progress","/laioutr-ui/shop/cart/free-delivery-progress","3.laioutr-ui/shop/cart/free-delivery-progress",{"title":1245,"path":1246,"stem":1247},"Category Card Grid","/laioutr-ui/shop/category-card-grid","3.laioutr-ui/shop/category-card-grid",{"title":1249,"path":1250,"stem":1251},"Category Card Slider","/laioutr-ui/shop/category-card-slider","3.laioutr-ui/shop/category-card-slider",{"title":1253,"path":1254,"stem":1255},"Filter Bar","/laioutr-ui/shop/filter-bar","3.laioutr-ui/shop/filter-bar",{"title":1257,"path":1258,"stem":1259},"Filter Off Canvas","/laioutr-ui/shop/filter-off-canvas","3.laioutr-ui/shop/filter-off-canvas",{"title":1261,"path":1262,"stem":1263,"children":1264,"page":55},"Product Detail","/laioutr-ui/shop/product-detail","3.laioutr-ui/shop/product-detail",[1265,1269,1273,1277,1281,1285,1288,1292,1296,1300,1304,1308,1312,1316],{"title":1266,"path":1267,"stem":1268},"Add to Cart","/laioutr-ui/shop/product-detail/add-to-cart","3.laioutr-ui/shop/product-detail/add-to-cart",{"title":1270,"path":1271,"stem":1272},"Benefits Box","/laioutr-ui/shop/product-detail/benefits-box","3.laioutr-ui/shop/product-detail/benefits-box",{"title":1274,"path":1275,"stem":1276},"Coupon Box","/laioutr-ui/shop/product-detail/coupon-box","3.laioutr-ui/shop/product-detail/coupon-box",{"title":1278,"path":1279,"stem":1280},"Energy Label","/laioutr-ui/shop/product-detail/energy-label","3.laioutr-ui/shop/product-detail/energy-label",{"title":1282,"path":1283,"stem":1284},"Price Info","/laioutr-ui/shop/product-detail/price-info","3.laioutr-ui/shop/product-detail/price-info",{"title":1261,"path":1286,"stem":1287},"/laioutr-ui/shop/product-detail/product-detail","3.laioutr-ui/shop/product-detail/product-detail",{"title":1289,"path":1290,"stem":1291},"Product Image Gallery","/laioutr-ui/shop/product-detail/product-image-gallery","3.laioutr-ui/shop/product-detail/product-image-gallery",{"title":1293,"path":1294,"stem":1295},"Product Specifications Table","/laioutr-ui/shop/product-detail/product-specifications","3.laioutr-ui/shop/product-detail/product-specifications",{"title":1297,"path":1298,"stem":1299},"Product Title","/laioutr-ui/shop/product-detail/product-title","3.laioutr-ui/shop/product-detail/product-title",{"title":1301,"path":1302,"stem":1303},"Quantity Discount","/laioutr-ui/shop/product-detail/quantity-discount","3.laioutr-ui/shop/product-detail/quantity-discount",{"title":1305,"path":1306,"stem":1307},"Variant Off Canvas","/laioutr-ui/shop/product-detail/variant-off-canvas","3.laioutr-ui/shop/product-detail/variant-off-canvas",{"title":1309,"path":1310,"stem":1311},"Variant Selector Configurator","/laioutr-ui/shop/product-detail/variant-selector-configurator","3.laioutr-ui/shop/product-detail/variant-selector-configurator",{"title":1313,"path":1314,"stem":1315},"Variant Selector (Multiple)","/laioutr-ui/shop/product-detail/variant-selector-multiple","3.laioutr-ui/shop/product-detail/variant-selector-multiple",{"title":1317,"path":1318,"stem":1319},"Variant Selector Options","/laioutr-ui/shop/product-detail/variant-selector-options","3.laioutr-ui/shop/product-detail/variant-selector-options",{"title":1321,"path":1322,"stem":1323},"Product Listing Grid","/laioutr-ui/shop/product-listing-grid","3.laioutr-ui/shop/product-listing-grid",{"title":1325,"path":1326,"stem":1327},"Product Slider","/laioutr-ui/shop/product-slider","3.laioutr-ui/shop/product-slider",{"title":1329,"path":1330,"stem":1331},"Product Slider Showcase","/laioutr-ui/shop/product-slider-showcase","3.laioutr-ui/shop/product-slider-showcase",{"title":1333,"path":1334,"stem":1335},"Product Tile (Basic)","/laioutr-ui/shop/product-tile-basic","3.laioutr-ui/shop/product-tile-basic",{"title":1337,"path":1338,"stem":1339},"Search Result Hero","/laioutr-ui/shop/search-result-hero","3.laioutr-ui/shop/search-result-hero",{"title":1341,"path":1342,"stem":1343},"Sort Modes","/laioutr-ui/shop/sort-modes","3.laioutr-ui/shop/sort-modes",{"title":1345,"path":1346,"stem":1347,"children":1348},"UI Kit","/laioutr-ui/ui-kit","3.laioutr-ui/ui-kit/0.index",[1349,1350,1510,1534,1555,1572,1609,1718,1747],{"title":1345,"path":1346,"stem":1347},{"title":1351,"path":1352,"stem":1353,"children":1354,"page":55},"General","/laioutr-ui/ui-kit/general","3.laioutr-ui/ui-kit/01.general",[1355,1359,1363,1367,1371,1375,1379,1383,1387,1391,1395,1398,1402,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1454,1458,1462,1466,1470,1474,1478,1482,1486,1490,1494,1498,1502,1506],{"title":1356,"path":1357,"stem":1358},"Accordion","/laioutr-ui/ui-kit/general/accordion","3.laioutr-ui/ui-kit/01.general/Accordion",{"title":1360,"path":1361,"stem":1362},"Avatar","/laioutr-ui/ui-kit/general/avatar","3.laioutr-ui/ui-kit/01.general/Avatar",{"title":1364,"path":1365,"stem":1366},"Backdrop","/laioutr-ui/ui-kit/general/backdrop","3.laioutr-ui/ui-kit/01.general/Backdrop",{"title":1368,"path":1369,"stem":1370},"Dropdown Menu","/laioutr-ui/ui-kit/general/dropdownmenu","3.laioutr-ui/ui-kit/01.general/DropdownMenu",{"title":1372,"path":1373,"stem":1374},"Edge Glow","/laioutr-ui/ui-kit/general/edgeglow","3.laioutr-ui/ui-kit/01.general/EdgeGlow",{"title":1376,"path":1377,"stem":1378},"Empty State","/laioutr-ui/ui-kit/general/emptystate","3.laioutr-ui/ui-kit/01.general/EmptyState",{"title":1380,"path":1381,"stem":1382},"Icon","/laioutr-ui/ui-kit/general/icon","3.laioutr-ui/ui-kit/01.general/Icon",{"title":1384,"path":1385,"stem":1386},"Image Contrast Overlay","/laioutr-ui/ui-kit/general/imagecontrastoverlay","3.laioutr-ui/ui-kit/01.general/ImageContrastOverlay",{"title":1388,"path":1389,"stem":1390},"Lightbox","/laioutr-ui/ui-kit/general/lightbox","3.laioutr-ui/ui-kit/01.general/Lightbox",{"title":1392,"path":1393,"stem":1394},"Loading Spinner","/laioutr-ui/ui-kit/general/loadingspinner","3.laioutr-ui/ui-kit/01.general/LoadingSpinner",{"title":447,"path":1396,"stem":1397},"/laioutr-ui/ui-kit/general/media","3.laioutr-ui/ui-kit/01.general/Media",{"title":1399,"path":1400,"stem":1401},"Navigation Bullets","/laioutr-ui/ui-kit/general/navigationbullets","3.laioutr-ui/ui-kit/01.general/NavigationBullets",{"title":1403,"path":1404,"stem":1405},"Placeholder","/laioutr-ui/ui-kit/general/placeholder","3.laioutr-ui/ui-kit/01.general/Placeholder",{"title":1407,"path":1408,"stem":1409},"Progress Bar","/laioutr-ui/ui-kit/general/progressbar","3.laioutr-ui/ui-kit/01.general/ProgressBar",{"title":1411,"path":1412,"stem":1413},"Scrollbar","/laioutr-ui/ui-kit/general/scrollbar","3.laioutr-ui/ui-kit/01.general/Scrollbar",{"title":1415,"path":1416,"stem":1417},"Swatch","/laioutr-ui/ui-kit/general/swatch","3.laioutr-ui/ui-kit/01.general/Swatch",{"title":1419,"path":1420,"stem":1421},"SwiperScrollbar","/laioutr-ui/ui-kit/general/swiperscrollbar","3.laioutr-ui/ui-kit/01.general/SwiperScrollbar",{"title":1423,"path":1424,"stem":1425},"Thumbnail","/laioutr-ui/ui-kit/general/thumbnail","3.laioutr-ui/ui-kit/01.general/Thumbnail",{"title":1427,"path":1428,"stem":1429},"Tooltip","/laioutr-ui/ui-kit/general/tooltip","3.laioutr-ui/ui-kit/01.general/Tooltip",{"title":1431,"path":1432,"stem":1433},"Amount Pill","/laioutr-ui/ui-kit/general/amount-pill","3.laioutr-ui/ui-kit/01.general/amount-pill",{"title":1435,"path":1436,"stem":1437},"Dark Mode Switch","/laioutr-ui/ui-kit/general/dark-mode-switch","3.laioutr-ui/ui-kit/01.general/dark-mode-switch",{"title":1439,"path":1440,"stem":1441},"Language Switcher","/laioutr-ui/ui-kit/general/language-switcher","3.laioutr-ui/ui-kit/01.general/language-switcher",{"title":1443,"path":1444,"stem":1445},"Media Preview","/laioutr-ui/ui-kit/general/media-preview","3.laioutr-ui/ui-kit/01.general/media-preview",{"title":1447,"path":1448,"stem":1449},"Media Stage","/laioutr-ui/ui-kit/general/media-stage","3.laioutr-ui/ui-kit/01.general/media-stage",{"title":1451,"path":1452,"stem":1453},"Nav Link Item","/laioutr-ui/ui-kit/general/nav-link-item","3.laioutr-ui/ui-kit/01.general/nav-link-item",{"title":1455,"path":1456,"stem":1457},"Nav Section Heading","/laioutr-ui/ui-kit/general/nav-section-heading","3.laioutr-ui/ui-kit/01.general/nav-section-heading",{"title":1459,"path":1460,"stem":1461},"OnSurface","/laioutr-ui/ui-kit/general/on-surface","3.laioutr-ui/ui-kit/01.general/on-surface",{"title":1463,"path":1464,"stem":1465},"Opening Status","/laioutr-ui/ui-kit/general/opening-status","3.laioutr-ui/ui-kit/01.general/opening-status",{"title":1467,"path":1468,"stem":1469},"Opening Status Detail","/laioutr-ui/ui-kit/general/opening-status-detail","3.laioutr-ui/ui-kit/01.general/opening-status-detail",{"title":1471,"path":1472,"stem":1473},"Opening Status Indicator","/laioutr-ui/ui-kit/general/opening-status-indicator","3.laioutr-ui/ui-kit/01.general/opening-status-indicator",{"title":1475,"path":1476,"stem":1477},"Rating Progress Bar Filter","/laioutr-ui/ui-kit/general/rating-progress-bar-filter","3.laioutr-ui/ui-kit/01.general/rating-progress-bar-filter",{"title":1479,"path":1480,"stem":1481},"Status Message","/laioutr-ui/ui-kit/general/status-message","3.laioutr-ui/ui-kit/01.general/status-message",{"title":1483,"path":1484,"stem":1485},"Stock Info Summary","/laioutr-ui/ui-kit/general/stock-info-summary","3.laioutr-ui/ui-kit/01.general/stock-info-summary",{"title":1487,"path":1488,"stem":1489},"Swatch Chip","/laioutr-ui/ui-kit/general/swatch-chip","3.laioutr-ui/ui-kit/01.general/swatch-chip",{"title":1491,"path":1492,"stem":1493},"Swatch Option","/laioutr-ui/ui-kit/general/swatch-option","3.laioutr-ui/ui-kit/01.general/swatch-option",{"title":1495,"path":1496,"stem":1497},"Swatch Summary","/laioutr-ui/ui-kit/general/swatch-summary","3.laioutr-ui/ui-kit/01.general/swatch-summary",{"title":1499,"path":1500,"stem":1501},"Table of Contents","/laioutr-ui/ui-kit/general/table-of-contents","3.laioutr-ui/ui-kit/01.general/table-of-contents",{"title":1503,"path":1504,"stem":1505},"Zoom Level (Segmented)","/laioutr-ui/ui-kit/general/zoom-level-segmented","3.laioutr-ui/ui-kit/01.general/zoom-level-segmented",{"title":1507,"path":1508,"stem":1509},"Zoom Level (Stepper)","/laioutr-ui/ui-kit/general/zoom-level-stepper","3.laioutr-ui/ui-kit/01.general/zoom-level-stepper",{"title":1511,"path":1512,"stem":1513,"children":1514,"page":55},"Typography","/laioutr-ui/ui-kit/typography","3.laioutr-ui/ui-kit/02.typography",[1515,1519,1522,1526,1530],{"title":1516,"path":1517,"stem":1518},"Icon List","/laioutr-ui/ui-kit/typography/iconlist","3.laioutr-ui/ui-kit/02.typography/IconList",{"title":443,"path":1520,"stem":1521},"/laioutr-ui/ui-kit/typography/link","3.laioutr-ui/ui-kit/02.typography/Link",{"title":1523,"path":1524,"stem":1525},"Rich Content","/laioutr-ui/ui-kit/typography/richcontent","3.laioutr-ui/ui-kit/02.typography/RichContent",{"title":1527,"path":1528,"stem":1529},"Text","/laioutr-ui/ui-kit/typography/text","3.laioutr-ui/ui-kit/02.typography/Text",{"title":1531,"path":1532,"stem":1533},"Text Group","/laioutr-ui/ui-kit/typography/text-group","3.laioutr-ui/ui-kit/02.typography/text-group",{"title":1535,"path":1536,"stem":1537,"children":1538,"page":55},"Layout","/laioutr-ui/ui-kit/layout","3.laioutr-ui/ui-kit/03.layout",[1539,1543,1547,1551],{"title":1540,"path":1541,"stem":1542},"Grid Fill","/laioutr-ui/ui-kit/layout/gridfill","3.laioutr-ui/ui-kit/03.layout/GridFill",{"title":1544,"path":1545,"stem":1546},"Grid Masonry","/laioutr-ui/ui-kit/layout/gridmasonry","3.laioutr-ui/ui-kit/03.layout/GridMasonry",{"title":1548,"path":1549,"stem":1550},"Scroll Area","/laioutr-ui/ui-kit/layout/scrollarea","3.laioutr-ui/ui-kit/03.layout/ScrollArea",{"title":1552,"path":1553,"stem":1554},"Separator","/laioutr-ui/ui-kit/layout/separator","3.laioutr-ui/ui-kit/03.layout/Separator",{"title":1556,"path":1557,"stem":1558,"children":1559,"page":55},"Content","/laioutr-ui/ui-kit/content","3.laioutr-ui/ui-kit/04.content",[1560,1564,1568],{"title":1561,"path":1562,"stem":1563},"Card","/laioutr-ui/ui-kit/content/card","3.laioutr-ui/ui-kit/04.content/Card",{"title":1565,"path":1566,"stem":1567},"Basic Table","/laioutr-ui/ui-kit/content/basic-table","3.laioutr-ui/ui-kit/04.content/basic-table",{"title":1569,"path":1570,"stem":1571},"Link Tile","/laioutr-ui/ui-kit/content/link-tile","3.laioutr-ui/ui-kit/04.content/link-tile",{"title":1573,"path":1574,"stem":1575,"children":1576,"page":55},"Surfaces","/laioutr-ui/ui-kit/surfaces","3.laioutr-ui/ui-kit/05.surfaces",[1577,1581,1585,1589,1593,1597,1601,1605],{"title":1578,"path":1579,"stem":1580},"Alert Dialog","/laioutr-ui/ui-kit/surfaces/alertdialog","3.laioutr-ui/ui-kit/05.surfaces/AlertDialog",{"title":1582,"path":1583,"stem":1584},"Popover","/laioutr-ui/ui-kit/surfaces/popover","3.laioutr-ui/ui-kit/05.surfaces/Popover",{"title":1586,"path":1587,"stem":1588},"Sheet","/laioutr-ui/ui-kit/surfaces/sheet","3.laioutr-ui/ui-kit/05.surfaces/Sheet",{"title":1590,"path":1591,"stem":1592},"Tabs","/laioutr-ui/ui-kit/surfaces/tabs","3.laioutr-ui/ui-kit/05.surfaces/Tabs",{"title":1594,"path":1595,"stem":1596},"Toast","/laioutr-ui/ui-kit/surfaces/toast","3.laioutr-ui/ui-kit/05.surfaces/Toast",{"title":1598,"path":1599,"stem":1600},"Toaster","/laioutr-ui/ui-kit/surfaces/toaster","3.laioutr-ui/ui-kit/05.surfaces/Toaster",{"title":1602,"path":1603,"stem":1604},"Context Menu","/laioutr-ui/ui-kit/surfaces/context-menu","3.laioutr-ui/ui-kit/05.surfaces/context-menu",{"title":1606,"path":1607,"stem":1608},"Navigation Menu","/laioutr-ui/ui-kit/surfaces/navigation-menu","3.laioutr-ui/ui-kit/05.surfaces/navigation-menu",{"title":1610,"path":1611,"stem":1612,"children":1613,"page":55},"Form","/laioutr-ui/ui-kit/form","3.laioutr-ui/ui-kit/06.form",[1614,1618,1622,1626,1630,1634,1638,1642,1646,1650,1654,1658,1662,1666,1670,1674,1678,1682,1686,1690,1694,1698,1702,1706,1710,1714],{"title":1615,"path":1616,"stem":1617},"Button","/laioutr-ui/ui-kit/form/button","3.laioutr-ui/ui-kit/06.form/Button",{"title":1619,"path":1620,"stem":1621},"Checkbox","/laioutr-ui/ui-kit/form/checkbox","3.laioutr-ui/ui-kit/06.form/Checkbox",{"title":1623,"path":1624,"stem":1625},"Field","/laioutr-ui/ui-kit/form/field","3.laioutr-ui/ui-kit/06.form/Field",{"title":1627,"path":1628,"stem":1629},"Input","/laioutr-ui/ui-kit/form/input","3.laioutr-ui/ui-kit/06.form/Input",{"title":1631,"path":1632,"stem":1633},"Label","/laioutr-ui/ui-kit/form/label","3.laioutr-ui/ui-kit/06.form/Label",{"title":1635,"path":1636,"stem":1637},"Load More","/laioutr-ui/ui-kit/form/loadmore","3.laioutr-ui/ui-kit/06.form/LoadMore",{"title":1639,"path":1640,"stem":1641},"Pagination","/laioutr-ui/ui-kit/form/pagination","3.laioutr-ui/ui-kit/06.form/Pagination",{"title":1643,"path":1644,"stem":1645},"Quantity Picker","/laioutr-ui/ui-kit/form/quantitypicker","3.laioutr-ui/ui-kit/06.form/QuantityPicker",{"title":1647,"path":1648,"stem":1649},"Select","/laioutr-ui/ui-kit/form/select","3.laioutr-ui/ui-kit/06.form/Select",{"title":1651,"path":1652,"stem":1653},"Switch","/laioutr-ui/ui-kit/form/switch","3.laioutr-ui/ui-kit/06.form/Switch",{"title":1655,"path":1656,"stem":1657},"Highlight Toggle","/laioutr-ui/ui-kit/form/highlight-toggle","3.laioutr-ui/ui-kit/06.form/highlight-toggle",{"title":1659,"path":1660,"stem":1661},"Icon Button","/laioutr-ui/ui-kit/form/icon-button","3.laioutr-ui/ui-kit/06.form/icon-button",{"title":1663,"path":1664,"stem":1665},"Input Autocomplete","/laioutr-ui/ui-kit/form/input-autocomplete","3.laioutr-ui/ui-kit/06.form/input-autocomplete",{"title":1667,"path":1668,"stem":1669},"Input Checkbox","/laioutr-ui/ui-kit/form/input-checkbox","3.laioutr-ui/ui-kit/06.form/input-checkbox",{"title":1671,"path":1672,"stem":1673},"Input Combobox","/laioutr-ui/ui-kit/form/input-combobox","3.laioutr-ui/ui-kit/06.form/input-combobox",{"title":1675,"path":1676,"stem":1677},"Input Group","/laioutr-ui/ui-kit/form/input-group","3.laioutr-ui/ui-kit/06.form/input-group",{"title":1679,"path":1680,"stem":1681},"Input Password","/laioutr-ui/ui-kit/form/input-password","3.laioutr-ui/ui-kit/06.form/input-password",{"title":1683,"path":1684,"stem":1685},"Input Pin","/laioutr-ui/ui-kit/form/input-pin","3.laioutr-ui/ui-kit/06.form/input-pin",{"title":1687,"path":1688,"stem":1689},"Input Radio","/laioutr-ui/ui-kit/form/input-radio","3.laioutr-ui/ui-kit/06.form/input-radio",{"title":1691,"path":1692,"stem":1693},"Input Rating","/laioutr-ui/ui-kit/form/input-rating","3.laioutr-ui/ui-kit/06.form/input-rating",{"title":1695,"path":1696,"stem":1697},"Input Search","/laioutr-ui/ui-kit/form/input-search","3.laioutr-ui/ui-kit/06.form/input-search",{"title":1699,"path":1700,"stem":1701},"Input Slider","/laioutr-ui/ui-kit/form/input-slider","3.laioutr-ui/ui-kit/06.form/input-slider",{"title":1703,"path":1704,"stem":1705},"Listbox","/laioutr-ui/ui-kit/form/listbox","3.laioutr-ui/ui-kit/06.form/listbox",{"title":1707,"path":1708,"stem":1709},"Option Tile (Image)","/laioutr-ui/ui-kit/form/option-tile-image","3.laioutr-ui/ui-kit/06.form/option-tile-image",{"title":1711,"path":1712,"stem":1713},"Option Tile (Text)","/laioutr-ui/ui-kit/form/option-tile-text","3.laioutr-ui/ui-kit/06.form/option-tile-text",{"title":1715,"path":1716,"stem":1717},"Variant Selection Card","/laioutr-ui/ui-kit/form/variant-selection-card","3.laioutr-ui/ui-kit/06.form/variant-selection-card",{"title":1719,"path":1720,"stem":1721,"children":1722,"page":55},"Indicators","/laioutr-ui/ui-kit/indicators","3.laioutr-ui/ui-kit/07.indicators",[1723,1727,1731,1735,1739,1743],{"title":1724,"path":1725,"stem":1726},"Badge","/laioutr-ui/ui-kit/indicators/badge","3.laioutr-ui/ui-kit/07.indicators/Badge",{"title":1728,"path":1729,"stem":1730},"Caption Flag","/laioutr-ui/ui-kit/indicators/captionflag","3.laioutr-ui/ui-kit/07.indicators/CaptionFlag",{"title":1732,"path":1733,"stem":1734},"Product Tile Flag","/laioutr-ui/ui-kit/indicators/producttileflag","3.laioutr-ui/ui-kit/07.indicators/ProductTileFlag",{"title":1736,"path":1737,"stem":1738},"Rating Summary","/laioutr-ui/ui-kit/indicators/ratingsummary","3.laioutr-ui/ui-kit/07.indicators/RatingSummary",{"title":1740,"path":1741,"stem":1742},"Stars Rating","/laioutr-ui/ui-kit/indicators/starsrating","3.laioutr-ui/ui-kit/07.indicators/StarsRating",{"title":1744,"path":1745,"stem":1746},"Badge Promotion","/laioutr-ui/ui-kit/indicators/badge-promotion","3.laioutr-ui/ui-kit/07.indicators/badge-promotion",{"title":1748,"path":1749,"stem":1750,"children":1751,"page":55},"Utility Components","/laioutr-ui/ui-kit/utility-components","3.laioutr-ui/ui-kit/08.utility-components",[1752,1756],{"title":1753,"path":1754,"stem":1755},"Highlighted Text","/laioutr-ui/ui-kit/utility-components/highlighted-text","3.laioutr-ui/ui-kit/08.utility-components/highlighted-text",{"title":1757,"path":1758,"stem":1759},"Sizer","/laioutr-ui/ui-kit/utility-components/sizer","3.laioutr-ui/ui-kit/08.utility-components/sizer",{"title":1761,"path":1762,"stem":1763,"children":1764},"Hosting","/hosting","4.hosting/0.index",[1765,1766,1772,1802,1820],{"title":1761,"path":1762,"stem":1763},{"title":1767,"path":1768,"stem":1769,"children":1770},"Laioutr Cloud","/hosting/laioutr-cloud","4.hosting/0.laioutr-cloud/0.index",[1771],{"title":1767,"path":1768,"stem":1769},{"title":1773,"path":1774,"stem":1775,"children":1776},"Hyperscaler","/hosting/hyperscaler","4.hosting/1.hyperscaler/0.index",[1777,1778,1782,1786,1790,1794,1798],{"title":1773,"path":1774,"stem":1775},{"title":1779,"path":1780,"stem":1781},"Akamai Adapter","/hosting/hyperscaler/akamai-adapter","4.hosting/1.hyperscaler/akamai-adapter",{"title":1783,"path":1784,"stem":1785},"AWS Adapter","/hosting/hyperscaler/aws-adapter","4.hosting/1.hyperscaler/aws-adapter",{"title":1787,"path":1788,"stem":1789},"Azure Adapter","/hosting/hyperscaler/azure-adapter","4.hosting/1.hyperscaler/azure-adapter",{"title":1791,"path":1792,"stem":1793},"Google Adapter","/hosting/hyperscaler/google-adapter","4.hosting/1.hyperscaler/google-adapter",{"title":1795,"path":1796,"stem":1797},"Netlify Adapter","/hosting/hyperscaler/netlify-adapter","4.hosting/1.hyperscaler/netlify-adapter",{"title":1799,"path":1800,"stem":1801},"Vercel Adapter","/hosting/hyperscaler/vercel-adapter","4.hosting/1.hyperscaler/vercel-adapter",{"title":1803,"path":1804,"stem":1805,"children":1806},"Native Hosting","/hosting/native-hosting-providers","4.hosting/2.native-hosting-providers/0.index",[1807,1808,1812,1816],{"title":1803,"path":1804,"stem":1805},{"title":1809,"path":1810,"stem":1811},"maxcluster","/hosting/native-hosting-providers/maxcluster","4.hosting/2.native-hosting-providers/maxcluster",{"title":1813,"path":1814,"stem":1815},"profihost","/hosting/native-hosting-providers/profihost","4.hosting/2.native-hosting-providers/profihost",{"title":1817,"path":1818,"stem":1819},"ScaleCommerce","/hosting/native-hosting-providers/scale-commerce","4.hosting/2.native-hosting-providers/scale-commerce",{"title":1821,"path":1822,"stem":1823,"children":1824},"Bring Your Own Server (BYOS)","/hosting/bring-your-own-server-byos","4.hosting/3.bring-your-own-server-byos/0.index",[1825,1826,1830,1834,1838,1842,1846],{"title":1821,"path":1822,"stem":1823},{"title":1827,"path":1828,"stem":1829},"BYOS Agent","/hosting/bring-your-own-server-byos/byos-agent","4.hosting/3.bring-your-own-server-byos/byos-agent",{"title":1831,"path":1832,"stem":1833},"Changelog","/hosting/bring-your-own-server-byos/changelog","4.hosting/3.bring-your-own-server-byos/changelog",{"title":1835,"path":1836,"stem":1837},"DevOps Components","/hosting/bring-your-own-server-byos/devops","4.hosting/3.bring-your-own-server-byos/devops",{"title":1839,"path":1840,"stem":1841},"Infrastructure Requirements","/hosting/bring-your-own-server-byos/infrastructure","4.hosting/3.bring-your-own-server-byos/infrastructure",{"title":1843,"path":1844,"stem":1845},"Software Requirements","/hosting/bring-your-own-server-byos/software","4.hosting/3.bring-your-own-server-byos/software",{"title":1847,"path":1848,"stem":1849},"Webhook Configuration","/hosting/bring-your-own-server-byos/webhook-config","4.hosting/3.bring-your-own-server-byos/webhook-config",{"title":583,"path":1851,"stem":1852,"children":1853},"/checkout","5.Checkout/0.index",[1854],{"title":583,"path":1851,"stem":1852},{"title":595,"path":1856,"stem":1857,"children":1858},"/larry-ai","6.Larry-AI/0.index",[1859],{"title":595,"path":1856,"stem":1857},{"title":887,"path":1861,"stem":1862,"children":1863},"/figma-kit","7.Figma Kit/0.index",[1864,1865,1881],{"title":887,"path":1861,"stem":1862},{"title":121,"path":1866,"stem":1867,"children":1868,"page":55},"/figma-kit/introduction","7.Figma Kit/1.Introduction",[1869,1873,1877],{"title":1870,"path":1871,"stem":1872},"How to Start","/figma-kit/introduction/howtostart","7.Figma Kit/1.Introduction/0.howtostart",{"title":1874,"path":1875,"stem":1876},"Figma Variables","/figma-kit/introduction/figma-variables","7.Figma Kit/1.Introduction/figma-variables",{"title":1878,"path":1879,"stem":1880},"Library Connections","/figma-kit/introduction/library-connections","7.Figma Kit/1.Introduction/library-connections",{"title":1882,"path":1883,"stem":1884,"children":1885,"page":55},"Kits","/figma-kit/kits","7.Figma Kit/Kits",[1886,1889,1892,1895,1899,1902,1906,1910,1913,1916],{"title":902,"path":1887,"stem":1888},"/figma-kit/kits/b2b","7.Figma Kit/Kits/b2b",{"title":908,"path":1890,"stem":1891},"/figma-kit/kits/booking","7.Figma Kit/Kits/booking",{"title":914,"path":1893,"stem":1894},"/figma-kit/kits/cms","7.Figma Kit/Kits/cms",{"title":1896,"path":1897,"stem":1898},"Inpage Navigation","/figma-kit/kits/inpage-navigation","7.Figma Kit/Kits/inpage-navigation",{"title":1127,"path":1900,"stem":1901},"/figma-kit/kits/marketplace","7.Figma Kit/Kits/marketplace",{"title":1903,"path":1904,"stem":1905},"Retail & Multichannel","/figma-kit/kits/multichannel","7.Figma Kit/Kits/multichannel",{"title":1907,"path":1908,"stem":1909},"Navigation","/figma-kit/kits/navigation","7.Figma Kit/Kits/navigation",{"title":1193,"path":1911,"stem":1912},"/figma-kit/kits/saas","7.Figma Kit/Kits/saas",{"title":1211,"path":1914,"stem":1915},"/figma-kit/kits/shop","7.Figma Kit/Kits/shop",{"title":1345,"path":1917,"stem":1918},"/figma-kit/kits/ui-kit","7.Figma Kit/Kits/ui-kit",{"title":577,"path":1920,"stem":1921,"children":1922},"/cockpit","8.Cockpit/0.index",[1923,1924,1954,1971,1988],{"title":577,"path":1920,"stem":1921},{"title":154,"path":1925,"stem":1926,"children":1927,"page":55},"/cockpit/features","8.Cockpit/1.Features",[1928,1931,1935,1939,1943,1946,1950],{"title":676,"path":1929,"stem":1930},"/cockpit/features/apps","8.Cockpit/1.Features/apps",{"title":1932,"path":1933,"stem":1934},"Content (Collections)","/cockpit/features/content-collections","8.Cockpit/1.Features/content-collections",{"title":1936,"path":1937,"stem":1938},"Deployments","/cockpit/features/deployments","8.Cockpit/1.Features/deployments",{"title":1940,"path":1941,"stem":1942},"Markets","/cockpit/features/markets","8.Cockpit/1.Features/markets",{"title":196,"path":1944,"stem":1945},"/cockpit/features/redirects","8.Cockpit/1.Features/redirects",{"title":1947,"path":1948,"stem":1949},"Studio","/cockpit/features/studio","8.Cockpit/1.Features/studio",{"title":1951,"path":1952,"stem":1953},"Translations","/cockpit/features/translations","8.Cockpit/1.Features/translations",{"title":1955,"path":1956,"stem":1957,"children":1958,"page":55},"Project Settings","/cockpit/project-settings","8.Cockpit/2.Project-Settings",[1959,1963,1967],{"title":1960,"path":1961,"stem":1962},"Delete a project","/cockpit/project-settings/delete-project","8.Cockpit/2.Project-Settings/delete-project",{"title":1964,"path":1965,"stem":1966},"NPM","/cockpit/project-settings/npm","8.Cockpit/2.Project-Settings/npm",{"title":1968,"path":1969,"stem":1970},"Project secret key","/cockpit/project-settings/project-secret-key","8.Cockpit/2.Project-Settings/project-secret-key",{"title":1972,"path":1973,"stem":1974,"children":1975,"page":55},"Account Settings","/cockpit/account-settings","8.Cockpit/3.Account-Settings",[1976,1980,1984],{"title":1977,"path":1978,"stem":1979},"Notifications","/cockpit/account-settings/notifications","8.Cockpit/3.Account-Settings/notifications",{"title":1981,"path":1982,"stem":1983},"Preferences","/cockpit/account-settings/preferences","8.Cockpit/3.Account-Settings/preferences",{"title":1985,"path":1986,"stem":1987},"Security","/cockpit/account-settings/security","8.Cockpit/3.Account-Settings/security",{"title":1989,"path":1990,"stem":1991,"children":1992,"page":55},"Organisation Settings","/cockpit/organisation-settings","8.Cockpit/4.Organisation-Settings",[1993,1997,2001,2005,2009,2013],{"title":1994,"path":1995,"stem":1996},"API keys","/cockpit/organisation-settings/api-keys","8.Cockpit/4.Organisation-Settings/api-keys",{"title":1998,"path":1999,"stem":2000},"Billing","/cockpit/organisation-settings/billing","8.Cockpit/4.Organisation-Settings/billing",{"title":2002,"path":2003,"stem":2004},"General settings","/cockpit/organisation-settings/general-settings","8.Cockpit/4.Organisation-Settings/general-settings",{"title":2006,"path":2007,"stem":2008},"Members","/cockpit/organisation-settings/members","8.Cockpit/4.Organisation-Settings/members",{"title":2010,"path":2011,"stem":2012},"Projects","/cockpit/organisation-settings/projects","8.Cockpit/4.Organisation-Settings/projects",{"title":2014,"path":2015,"stem":2016},"Roles","/cockpit/organisation-settings/roles","8.Cockpit/4.Organisation-Settings/roles",{"title":2018,"path":2019,"stem":2020,"children":2021},"Data API","/data-api","9.Data-API/0.index",[2022,2023,2043,2053],{"title":2018,"path":2019,"stem":2020},{"title":2024,"path":2025,"stem":2026,"children":2027,"page":55},"Api Info","/data-api/api-info","9.Data-API/1.API-Info",[2028,2032,2036,2039],{"title":2029,"path":2030,"stem":2031},"API Basics","/data-api/api-info/api-basics","9.Data-API/1.API-Info/1.api-basics",{"title":2033,"path":2034,"stem":2035},"Authentication","/data-api/api-info/authentication","9.Data-API/1.API-Info/2.authentication",{"title":483,"path":2037,"stem":2038},"/data-api/api-info/errors","9.Data-API/1.API-Info/3.errors",{"title":2040,"path":2041,"stem":2042},"HTTP details","/data-api/api-info/http-details","9.Data-API/1.API-Info/4.http-details",{"title":2044,"path":2045,"stem":2046,"children":2047},"Management API","/data-api/management-api","9.Data-API/2.Management-API/0.index",[2048,2049],{"title":2044,"path":2045,"stem":2046},{"title":2050,"path":2051,"stem":2052},"Assets","/data-api/management-api/assets","9.Data-API/2.Management-API/1.assets",{"title":2054,"path":2055,"stem":2056,"children":2057},"Delivery API","/data-api/delivery-api","9.Data-API/3.Delivery-API/0.index",[2058],{"title":2054,"path":2055,"stem":2056},{"id":2060,"title":742,"aliases":2061,"body":2062,"changelogKeys":3289,"description":3291,"extension":3292,"links":2061,"meta":3293,"navigation":2131,"path":743,"playground":2061,"seo":3294,"sitemap":3296,"stem":744,"__hash__":3299},"docs/2.apps/app-development/media-libraries.md",null,{"type":2063,"value":2064,"toc":3279},"minimark",[2065,2070,2079,2443,2450,2461,2464,2479,2586,2592,2598,2829,2832,2898,2901,2907,2917,2954,2960,3031,3045,3178,3200,3215,3219,3222,3275],[2066,2067,2069],"h2",{"id":2068},"what-you-are-building","What you are building",[2071,2072,2073,2074,2078],"p",{},"A media-library connector lets Studio editors browse, search, and upload assets that live in an external system — a shop backend's media section (Shopify Files, Shopware media), a DAM, or a CMS asset store. The connector is a facet of your app's Orchestr builder: you declare static ",[2075,2076,2077],"strong",{},"capabilities"," and implement a small set of handlers, and the platform provides the routes, the picker UI, validation, and origin tracking.",[2080,2081,2087],"pre",{"className":2082,"code":2083,"filename":2084,"language":2085,"meta":2086,"style":2086},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { defineAcme } from '../middleware/defineAcme';\n\nexport default defineAcme.mediaLibrary({\n  capabilities: {\n    search: true,\n    folders: true,\n    sorts: [{ key: 'createdAt:desc', label: 'Newest first' }],\n    upload: { transfer: 'staged', accept: ['image/*'], maxFileSize: 20 * 1024 * 1024 },\n  },\n  list: async (query, ctx) => {\n    /* compile query into your backend's DSL, return items + folders */\n  },\n  createUploadTargets: async ({ files }, ctx) => {\n    /* mint signed upload URLs */\n  },\n  finalizeUploads: async ({ refs }, ctx) => {\n    /* commit the uploaded files, return finished items */\n  },\n});\n","src/runtime/server/media-libraries/acme.ts","ts","",[2088,2089,2090,2126,2133,2157,2170,2185,2197,2245,2309,2315,2347,2354,2359,2386,2392,2397,2422,2428,2433],"code",{"__ignoreMap":2086},[2091,2092,2095,2099,2103,2107,2110,2113,2116,2120,2123],"span",{"class":2093,"line":2094},"line",1,[2091,2096,2098],{"class":2097},"s7zQu","import",[2091,2100,2102],{"class":2101},"sMK4o"," {",[2091,2104,2106],{"class":2105},"sTEyZ"," defineAcme",[2091,2108,2109],{"class":2101}," }",[2091,2111,2112],{"class":2097}," from",[2091,2114,2115],{"class":2101}," '",[2091,2117,2119],{"class":2118},"sfazB","../middleware/defineAcme",[2091,2121,2122],{"class":2101},"'",[2091,2124,2125],{"class":2101},";\n",[2091,2127,2129],{"class":2093,"line":2128},2,[2091,2130,2132],{"emptyLinePlaceholder":2131},true,"\n",[2091,2134,2136,2139,2142,2144,2147,2151,2154],{"class":2093,"line":2135},3,[2091,2137,2138],{"class":2097},"export",[2091,2140,2141],{"class":2097}," default",[2091,2143,2106],{"class":2105},[2091,2145,2146],{"class":2101},".",[2091,2148,2150],{"class":2149},"s2Zo4","mediaLibrary",[2091,2152,2153],{"class":2105},"(",[2091,2155,2156],{"class":2101},"{\n",[2091,2158,2160,2164,2167],{"class":2093,"line":2159},4,[2091,2161,2163],{"class":2162},"swJcz","  capabilities",[2091,2165,2166],{"class":2101},":",[2091,2168,2169],{"class":2101}," {\n",[2091,2171,2173,2176,2178,2182],{"class":2093,"line":2172},5,[2091,2174,2175],{"class":2162},"    search",[2091,2177,2166],{"class":2101},[2091,2179,2181],{"class":2180},"sfNiH"," true",[2091,2183,2184],{"class":2101},",\n",[2091,2186,2188,2191,2193,2195],{"class":2093,"line":2187},6,[2091,2189,2190],{"class":2162},"    folders",[2091,2192,2166],{"class":2101},[2091,2194,2181],{"class":2180},[2091,2196,2184],{"class":2101},[2091,2198,2200,2203,2205,2208,2211,2214,2216,2218,2221,2223,2226,2229,2231,2233,2236,2238,2240,2243],{"class":2093,"line":2199},7,[2091,2201,2202],{"class":2162},"    sorts",[2091,2204,2166],{"class":2101},[2091,2206,2207],{"class":2105}," [",[2091,2209,2210],{"class":2101},"{",[2091,2212,2213],{"class":2162}," key",[2091,2215,2166],{"class":2101},[2091,2217,2115],{"class":2101},[2091,2219,2220],{"class":2118},"createdAt:desc",[2091,2222,2122],{"class":2101},[2091,2224,2225],{"class":2101},",",[2091,2227,2228],{"class":2162}," label",[2091,2230,2166],{"class":2101},[2091,2232,2115],{"class":2101},[2091,2234,2235],{"class":2118},"Newest first",[2091,2237,2122],{"class":2101},[2091,2239,2109],{"class":2101},[2091,2241,2242],{"class":2105},"]",[2091,2244,2184],{"class":2101},[2091,2246,2248,2251,2253,2255,2258,2260,2262,2265,2267,2269,2272,2274,2276,2278,2281,2283,2285,2287,2290,2292,2296,2299,2302,2304,2306],{"class":2093,"line":2247},8,[2091,2249,2250],{"class":2162},"    upload",[2091,2252,2166],{"class":2101},[2091,2254,2102],{"class":2101},[2091,2256,2257],{"class":2162}," transfer",[2091,2259,2166],{"class":2101},[2091,2261,2115],{"class":2101},[2091,2263,2264],{"class":2118},"staged",[2091,2266,2122],{"class":2101},[2091,2268,2225],{"class":2101},[2091,2270,2271],{"class":2162}," accept",[2091,2273,2166],{"class":2101},[2091,2275,2207],{"class":2105},[2091,2277,2122],{"class":2101},[2091,2279,2280],{"class":2118},"image/*",[2091,2282,2122],{"class":2101},[2091,2284,2242],{"class":2105},[2091,2286,2225],{"class":2101},[2091,2288,2289],{"class":2162}," maxFileSize",[2091,2291,2166],{"class":2101},[2091,2293,2295],{"class":2294},"sbssI"," 20",[2091,2297,2298],{"class":2101}," *",[2091,2300,2301],{"class":2294}," 1024",[2091,2303,2298],{"class":2101},[2091,2305,2301],{"class":2294},[2091,2307,2308],{"class":2101}," },\n",[2091,2310,2312],{"class":2093,"line":2311},9,[2091,2313,2314],{"class":2101},"  },\n",[2091,2316,2318,2321,2323,2327,2330,2334,2336,2339,2342,2345],{"class":2093,"line":2317},10,[2091,2319,2320],{"class":2149},"  list",[2091,2322,2166],{"class":2101},[2091,2324,2326],{"class":2325},"spNyl"," async",[2091,2328,2329],{"class":2101}," (",[2091,2331,2333],{"class":2332},"sHdIc","query",[2091,2335,2225],{"class":2101},[2091,2337,2338],{"class":2332}," ctx",[2091,2340,2341],{"class":2101},")",[2091,2343,2344],{"class":2325}," =>",[2091,2346,2169],{"class":2101},[2091,2348,2350],{"class":2093,"line":2349},11,[2091,2351,2353],{"class":2352},"sHwdD","    /* compile query into your backend's DSL, return items + folders */\n",[2091,2355,2357],{"class":2093,"line":2356},12,[2091,2358,2314],{"class":2101},[2091,2360,2362,2365,2367,2369,2372,2375,2378,2380,2382,2384],{"class":2093,"line":2361},13,[2091,2363,2364],{"class":2149},"  createUploadTargets",[2091,2366,2166],{"class":2101},[2091,2368,2326],{"class":2325},[2091,2370,2371],{"class":2101}," ({",[2091,2373,2374],{"class":2332}," files",[2091,2376,2377],{"class":2101}," },",[2091,2379,2338],{"class":2332},[2091,2381,2341],{"class":2101},[2091,2383,2344],{"class":2325},[2091,2385,2169],{"class":2101},[2091,2387,2389],{"class":2093,"line":2388},14,[2091,2390,2391],{"class":2352},"    /* mint signed upload URLs */\n",[2091,2393,2395],{"class":2093,"line":2394},15,[2091,2396,2314],{"class":2101},[2091,2398,2400,2403,2405,2407,2409,2412,2414,2416,2418,2420],{"class":2093,"line":2399},16,[2091,2401,2402],{"class":2149},"  finalizeUploads",[2091,2404,2166],{"class":2101},[2091,2406,2326],{"class":2325},[2091,2408,2371],{"class":2101},[2091,2410,2411],{"class":2332}," refs",[2091,2413,2377],{"class":2101},[2091,2415,2338],{"class":2332},[2091,2417,2341],{"class":2101},[2091,2419,2344],{"class":2325},[2091,2421,2169],{"class":2101},[2091,2423,2425],{"class":2093,"line":2424},17,[2091,2426,2427],{"class":2352},"    /* commit the uploaded files, return finished items */\n",[2091,2429,2431],{"class":2093,"line":2430},18,[2091,2432,2314],{"class":2101},[2091,2434,2436,2439,2441],{"class":2093,"line":2435},19,[2091,2437,2438],{"class":2101},"}",[2091,2440,2341],{"class":2105},[2091,2442,2125],{"class":2101},[2071,2444,2445,2446,2449],{},"The library's identity (id, label, icon) is derived from the builder's ",[2088,2447,2448],{},".meta()"," — you do not declare it again. Registration happens when the returned Nitro plugin runs, and Studio discovers the library (with its capabilities) through the reflect payload.",[2071,2451,2452,2453,2456,2457,2460],{},"Handlers receive two arguments: the query/args object and ",[2088,2454,2455],{},"ctx"," — the per-request context built by your app's ",[2088,2458,2459],{},"extendRequest"," initwares. Use the clients your initware already constructs (e.g. an authenticated admin client) instead of building new ones. Note that media requests originate from Studio, not a storefront visitor: the platform supplies a neutral locale/currency to the initwares, so do not rely on visitor-specific context in media handlers.",[2066,2462,2463],{"id":2077},"Capabilities",[2071,2465,2466,2467,2470,2471,2474,2475,2478],{},"Capabilities are ",[2075,2468,2469],{},"static"," flags the picker reads before its first request. Only declare what your backend genuinely supports — the platform strips undeclared query fields before they reach your handler and drops undeclared response fields (a ",[2088,2472,2473],{},"folders"," array from a library that declared ",[2088,2476,2477],{},"folders: false"," is discarded).",[2480,2481,2482,2495],"table",{},[2483,2484,2485],"thead",{},[2486,2487,2488,2492],"tr",{},[2489,2490,2491],"th",{},"Capability",[2489,2493,2494],{},"Effect",[2496,2497,2498,2513,2527,2544,2561],"tbody",{},[2486,2499,2500,2506],{},[2501,2502,2503],"td",{},[2088,2504,2505],{},"search",[2501,2507,2508,2509,2512],{},"Free-text term rides in ",[2088,2510,2511],{},"query.term","; the picker shows a search box.",[2486,2514,2515,2520],{},[2501,2516,2517],{},[2088,2518,2519],{},"tags",[2501,2521,2522,2523,2526],{},"Tag filter rides in ",[2088,2524,2525],{},"query.tags"," (no picker UI yet — the contract is ready).",[2486,2528,2529,2533],{},[2501,2530,2531],{},[2088,2532,2473],{},[2501,2534,2535,2536,2539,2540,2543],{},"The picker renders folder tiles + a breadcrumb; ",[2088,2537,2538],{},"query.folderId"," selects the browsed location and your ",[2088,2541,2542],{},"list"," returns that location's subfolders.",[2486,2545,2546,2551],{},[2501,2547,2548],{},[2088,2549,2550],{},"sorts",[2501,2552,2553,2554,2557,2558,2146],{},"Declared options render as a sort dropdown; the chosen ",[2088,2555,2556],{},"key"," rides in ",[2088,2559,2560],{},"query.sorting",[2486,2562,2563,2568],{},[2501,2564,2565],{},[2088,2566,2567],{},"upload",[2501,2569,2570,2571,2574,2575,2578,2579,2578,2582,2585],{},"Enables upload; ",[2088,2572,2573],{},"transfer"," selects proxied or staged (see below), ",[2088,2576,2577],{},"accept","/",[2088,2580,2581],{},"maxFileSize",[2088,2583,2584],{},"maxBatchSize"," drive client-side pre-validation.",[2066,2587,2589,2590],{"id":2588},"browsing-list","Browsing: ",[2088,2591,2542],{},[2071,2593,2594,2597],{},[2088,2595,2596],{},"list(query, ctx)"," returns one page of one location:",[2080,2599,2601],{"className":2082,"code":2600,"language":2085,"meta":2086,"style":2086},"interface MediaQuery {\n  cursor?: string;          // opaque; omit = first page\n  limit: number;\n  term?: string;            // only when capabilities.search\n  type?: MediaType[];       // 'image' | 'video' | 'audio' — filter server-side!\n  tags?: string[];          // only when capabilities.tags\n  sorting?: string;         // one of your declared sort keys\n  folderId?: string;        // only when capabilities.folders; undefined = root\n  scope?: 'folder' | 'all'; // 'all' = whole-library search, ignore folderId\n}\n\ninterface MediaListResult {\n  items: ProviderStudioMediaItem[];\n  folders?: MediaFolder[];  // subfolders of the queried location — FIRST page only\n  nextCursor?: string;      // absent = end of the stream\n  total?: number;           // optional; omit if your backend can't answer cheaply\n}\n",[2088,2602,2603,2614,2631,2643,2657,2675,2691,2705,2719,2748,2753,2757,2766,2780,2797,2811,2825],{"__ignoreMap":2086},[2091,2604,2605,2608,2612],{"class":2093,"line":2094},[2091,2606,2607],{"class":2325},"interface",[2091,2609,2611],{"class":2610},"sBMFI"," MediaQuery",[2091,2613,2169],{"class":2101},[2091,2615,2616,2619,2622,2625,2628],{"class":2093,"line":2128},[2091,2617,2618],{"class":2162},"  cursor",[2091,2620,2621],{"class":2101},"?:",[2091,2623,2624],{"class":2610}," string",[2091,2626,2627],{"class":2101},";",[2091,2629,2630],{"class":2352},"          // opaque; omit = first page\n",[2091,2632,2633,2636,2638,2641],{"class":2093,"line":2135},[2091,2634,2635],{"class":2162},"  limit",[2091,2637,2166],{"class":2101},[2091,2639,2640],{"class":2610}," number",[2091,2642,2125],{"class":2101},[2091,2644,2645,2648,2650,2652,2654],{"class":2093,"line":2159},[2091,2646,2647],{"class":2162},"  term",[2091,2649,2621],{"class":2101},[2091,2651,2624],{"class":2610},[2091,2653,2627],{"class":2101},[2091,2655,2656],{"class":2352},"            // only when capabilities.search\n",[2091,2658,2659,2662,2664,2667,2670,2672],{"class":2093,"line":2172},[2091,2660,2661],{"class":2162},"  type",[2091,2663,2621],{"class":2101},[2091,2665,2666],{"class":2610}," MediaType",[2091,2668,2669],{"class":2105},"[]",[2091,2671,2627],{"class":2101},[2091,2673,2674],{"class":2352},"       // 'image' | 'video' | 'audio' — filter server-side!\n",[2091,2676,2677,2680,2682,2684,2686,2688],{"class":2093,"line":2187},[2091,2678,2679],{"class":2162},"  tags",[2091,2681,2621],{"class":2101},[2091,2683,2624],{"class":2610},[2091,2685,2669],{"class":2105},[2091,2687,2627],{"class":2101},[2091,2689,2690],{"class":2352},"          // only when capabilities.tags\n",[2091,2692,2693,2696,2698,2700,2702],{"class":2093,"line":2199},[2091,2694,2695],{"class":2162},"  sorting",[2091,2697,2621],{"class":2101},[2091,2699,2624],{"class":2610},[2091,2701,2627],{"class":2101},[2091,2703,2704],{"class":2352},"         // one of your declared sort keys\n",[2091,2706,2707,2710,2712,2714,2716],{"class":2093,"line":2247},[2091,2708,2709],{"class":2162},"  folderId",[2091,2711,2621],{"class":2101},[2091,2713,2624],{"class":2610},[2091,2715,2627],{"class":2101},[2091,2717,2718],{"class":2352},"        // only when capabilities.folders; undefined = root\n",[2091,2720,2721,2724,2726,2728,2731,2733,2736,2738,2741,2743,2745],{"class":2093,"line":2311},[2091,2722,2723],{"class":2162},"  scope",[2091,2725,2621],{"class":2101},[2091,2727,2115],{"class":2101},[2091,2729,2730],{"class":2118},"folder",[2091,2732,2122],{"class":2101},[2091,2734,2735],{"class":2101}," |",[2091,2737,2115],{"class":2101},[2091,2739,2740],{"class":2118},"all",[2091,2742,2122],{"class":2101},[2091,2744,2627],{"class":2101},[2091,2746,2747],{"class":2352}," // 'all' = whole-library search, ignore folderId\n",[2091,2749,2750],{"class":2093,"line":2317},[2091,2751,2752],{"class":2101},"}\n",[2091,2754,2755],{"class":2093,"line":2349},[2091,2756,2132],{"emptyLinePlaceholder":2131},[2091,2758,2759,2761,2764],{"class":2093,"line":2356},[2091,2760,2607],{"class":2325},[2091,2762,2763],{"class":2610}," MediaListResult",[2091,2765,2169],{"class":2101},[2091,2767,2768,2771,2773,2776,2778],{"class":2093,"line":2361},[2091,2769,2770],{"class":2162},"  items",[2091,2772,2166],{"class":2101},[2091,2774,2775],{"class":2610}," ProviderStudioMediaItem",[2091,2777,2669],{"class":2105},[2091,2779,2125],{"class":2101},[2091,2781,2782,2785,2787,2790,2792,2794],{"class":2093,"line":2388},[2091,2783,2784],{"class":2162},"  folders",[2091,2786,2621],{"class":2101},[2091,2788,2789],{"class":2610}," MediaFolder",[2091,2791,2669],{"class":2105},[2091,2793,2627],{"class":2101},[2091,2795,2796],{"class":2352},"  // subfolders of the queried location — FIRST page only\n",[2091,2798,2799,2802,2804,2806,2808],{"class":2093,"line":2394},[2091,2800,2801],{"class":2162},"  nextCursor",[2091,2803,2621],{"class":2101},[2091,2805,2624],{"class":2610},[2091,2807,2627],{"class":2101},[2091,2809,2810],{"class":2352},"      // absent = end of the stream\n",[2091,2812,2813,2816,2818,2820,2822],{"class":2093,"line":2399},[2091,2814,2815],{"class":2162},"  total",[2091,2817,2621],{"class":2101},[2091,2819,2640],{"class":2610},[2091,2821,2627],{"class":2101},[2091,2823,2824],{"class":2352},"           // optional; omit if your backend can't answer cheaply\n",[2091,2826,2827],{"class":2093,"line":2424},[2091,2828,2752],{"class":2101},[2071,2830,2831],{},"Rules that matter:",[2833,2834,2835,2842,2851,2868],"ul",{},[2836,2837,2838,2841],"li",{},[2075,2839,2840],{},"Pagination is always opaque-cursor."," If your backend is offset-based, encode the offset inside the cursor string.",[2836,2843,2844,2850],{},[2075,2845,2846,2847,2146],{},"Honor ",[2088,2848,2849],{},"type"," The picker seeds it from the media field's allowed types — an image-only field must not receive videos.",[2836,2852,2853,2856,2857,2859,2860,2863,2864,2867],{},[2075,2854,2855],{},"Folders ride on the first page only."," A cursor-continuation request continues the asset stream and returns no ",[2088,2858,2473],{},". Root is ",[2088,2861,2862],{},"folderId: undefined","; if your backend distinguishes \"unfiled root assets\" from \"everything\" (Shopware does), that's exactly why ",[2088,2865,2866],{},"scope: 'all'"," exists — a whole-library search sends it, and you drop the folder filter.",[2836,2869,2870,2871,2874,2875,2880,2881,2884,2885,2329,2890,2893,2894,2897],{},"Each item is ",[2088,2872,2873],{},"{ media, previewUrl, fileName?, externalId?, status?, statusMessage? }",". Set ",[2075,2876,2877],{},[2088,2878,2879],{},"externalId"," to your backend's stable asset id — the platform fans it into the stored media's per-source ",[2088,2882,2883],{},"origin"," so assets can later be traced back to your library. Set ",[2075,2886,2887],{},[2088,2888,2889],{},"status",[2088,2891,2892],{},"'processing'"," / ",[2088,2895,2896],{},"'failed'",") for assets your backend is still transcoding or failed to process; the grid shows a spinner or error badge and blocks picking failed assets. Absent means ready.",[2066,2899,2900],{"id":2567},"Upload",[2071,2902,2903,2904,2166],{},"Two transfer modes, chosen by ",[2088,2905,2906],{},"capabilities.upload.transfer",[2071,2908,2909,2912,2913,2916],{},[2075,2910,2911],{},"Proxied"," — the browser sends bytes to the project's protected ",[2088,2914,2915],{},"media-upload"," route, which hands them to your handler. Right for small files and backends without signed-upload support:",[2080,2918,2920],{"className":2082,"code":2919,"language":2085,"meta":2086,"style":2086},"upload: async ({ files }, ctx) => Promise\u003CUploadOutcome[]>\n",[2088,2921,2922],{"__ignoreMap":2086},[2091,2923,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2945,2948,2951],{"class":2093,"line":2094},[2091,2925,2567],{"class":2610},[2091,2927,2166],{"class":2101},[2091,2929,2326],{"class":2325},[2091,2931,2371],{"class":2101},[2091,2933,2374],{"class":2332},[2091,2935,2377],{"class":2101},[2091,2937,2338],{"class":2332},[2091,2939,2341],{"class":2101},[2091,2941,2344],{"class":2325},[2091,2943,2944],{"class":2610}," Promise",[2091,2946,2947],{"class":2101},"\u003C",[2091,2949,2950],{"class":2105},"UploadOutcome[]",[2091,2952,2953],{"class":2101},">\n",[2071,2955,2956,2959],{},[2075,2957,2958],{},"Staged"," — the browser uploads directly to your backend via a signed target; your handler never touches bytes. Right for large files and serverless deployments:",[2080,2961,2963],{"className":2082,"code":2962,"language":2085,"meta":2086,"style":2086},"createUploadTargets: async ({ files }, ctx) => Promise\u003CUploadTarget[]>  // mint signed URLs (metadata only)\nfinalizeUploads: async ({ refs }, ctx) => Promise\u003CUploadOutcome[]>     // commit + return finished items\n",[2088,2964,2965,2999],{"__ignoreMap":2086},[2091,2966,2967,2970,2972,2974,2976,2978,2980,2982,2984,2986,2988,2990,2993,2996],{"class":2093,"line":2094},[2091,2968,2969],{"class":2610},"createUploadTargets",[2091,2971,2166],{"class":2101},[2091,2973,2326],{"class":2325},[2091,2975,2371],{"class":2101},[2091,2977,2374],{"class":2332},[2091,2979,2377],{"class":2101},[2091,2981,2338],{"class":2332},[2091,2983,2341],{"class":2101},[2091,2985,2344],{"class":2325},[2091,2987,2944],{"class":2610},[2091,2989,2947],{"class":2101},[2091,2991,2992],{"class":2105},"UploadTarget[]",[2091,2994,2995],{"class":2101},">",[2091,2997,2998],{"class":2352},"  // mint signed URLs (metadata only)\n",[2091,3000,3001,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028],{"class":2093,"line":2128},[2091,3002,3003],{"class":2610},"finalizeUploads",[2091,3005,2166],{"class":2101},[2091,3007,2326],{"class":2325},[2091,3009,2371],{"class":2101},[2091,3011,2411],{"class":2332},[2091,3013,2377],{"class":2101},[2091,3015,2338],{"class":2332},[2091,3017,2341],{"class":2101},[2091,3019,2344],{"class":2325},[2091,3021,2944],{"class":2610},[2091,3023,2947],{"class":2101},[2091,3025,2950],{"class":2105},[2091,3027,2995],{"class":2101},[2091,3029,3030],{"class":2352},"     // commit + return finished items\n",[2071,3032,3033,3034,3037,3038,3040,3041,3044],{},"The ",[2088,3035,3036],{},"ref"," on each target is an opaque string you invent; it comes back in ",[2088,3039,3003],{}," so you can correlate. Return ",[2075,3042,3043],{},"per-file outcomes"," — one failed file must not sink the batch:",[2080,3046,3048],{"className":2082,"code":3047,"language":2085,"meta":2086,"style":2086},"type UploadOutcome =\n  | { ref: string; ok: true; item: ProviderStudioMediaItem }\n  | { ref: string; ok: false; error: { code: 'too_large' | 'unsupported_type' | 'processing_failed' | 'upload_failed'; message: string } };\n",[2088,3049,3050,3060,3095],{"__ignoreMap":2086},[2091,3051,3052,3054,3057],{"class":2093,"line":2094},[2091,3053,2849],{"class":2325},[2091,3055,3056],{"class":2610}," UploadOutcome",[2091,3058,3059],{"class":2101}," =\n",[2091,3061,3062,3065,3067,3070,3072,3074,3076,3079,3081,3083,3085,3088,3090,3092],{"class":2093,"line":2128},[2091,3063,3064],{"class":2101},"  |",[2091,3066,2102],{"class":2101},[2091,3068,3069],{"class":2162}," ref",[2091,3071,2166],{"class":2101},[2091,3073,2624],{"class":2610},[2091,3075,2627],{"class":2101},[2091,3077,3078],{"class":2162}," ok",[2091,3080,2166],{"class":2101},[2091,3082,2181],{"class":2610},[2091,3084,2627],{"class":2101},[2091,3086,3087],{"class":2162}," item",[2091,3089,2166],{"class":2101},[2091,3091,2775],{"class":2610},[2091,3093,3094],{"class":2101}," }\n",[2091,3096,3097,3099,3101,3103,3105,3107,3109,3111,3113,3116,3118,3121,3123,3125,3128,3130,3132,3135,3137,3139,3141,3144,3146,3148,3150,3153,3155,3157,3159,3162,3164,3166,3169,3171,3173,3175],{"class":2093,"line":2135},[2091,3098,3064],{"class":2101},[2091,3100,2102],{"class":2101},[2091,3102,3069],{"class":2162},[2091,3104,2166],{"class":2101},[2091,3106,2624],{"class":2610},[2091,3108,2627],{"class":2101},[2091,3110,3078],{"class":2162},[2091,3112,2166],{"class":2101},[2091,3114,3115],{"class":2610}," false",[2091,3117,2627],{"class":2101},[2091,3119,3120],{"class":2162}," error",[2091,3122,2166],{"class":2101},[2091,3124,2102],{"class":2101},[2091,3126,3127],{"class":2162}," code",[2091,3129,2166],{"class":2101},[2091,3131,2115],{"class":2101},[2091,3133,3134],{"class":2118},"too_large",[2091,3136,2122],{"class":2101},[2091,3138,2735],{"class":2101},[2091,3140,2115],{"class":2101},[2091,3142,3143],{"class":2118},"unsupported_type",[2091,3145,2122],{"class":2101},[2091,3147,2735],{"class":2101},[2091,3149,2115],{"class":2101},[2091,3151,3152],{"class":2118},"processing_failed",[2091,3154,2122],{"class":2101},[2091,3156,2735],{"class":2101},[2091,3158,2115],{"class":2101},[2091,3160,3161],{"class":2118},"upload_failed",[2091,3163,2122],{"class":2101},[2091,3165,2627],{"class":2101},[2091,3167,3168],{"class":2162}," message",[2091,3170,2166],{"class":2101},[2091,3172,2624],{"class":2610},[2091,3174,2109],{"class":2101},[2091,3176,3177],{"class":2101}," };\n",[2071,3179,3180,3183,3184,3186,3187,2578,3189,3191,3192,3195,3196,3199],{},[2075,3181,3182],{},"Readiness is your problem, not the contract's."," Return a usable ",[2088,3185,447],{}," from ",[2088,3188,3003],{},[2088,3190,2567],{},". If your backend's delivery URL only exists after processing, poll until it's ready (Shopify polls ",[2088,3193,3194],{},"fileStatus"," to ",[2088,3197,3198],{},"READY","). If the URL is derivable from a stable id issued at upload time and self-heals once processing completes (Cloudflare Stream, Mux), return it immediately.",[3201,3202,3204,3207,3208,2578,3211,3214],"callout",{"type":3203},"warning",[2075,3205,3206],{},"Staged upload requires CORS on your backend."," The browser PUTs/POSTs bytes directly to the signed target URL, so the target host must allow cross-origin uploads from the Cockpit origin (and any origin you expect editors to use). Shopify's staged targets allow this out of the box; an S3/GCS-backed target needs an explicit bucket CORS rule permitting ",[2088,3209,3210],{},"PUT",[2088,3212,3213],{},"POST"," from the Cockpit origin. Without it, every upload fails in the browser with an opaque CORS error while your server-side code looks healthy. Document the required CORS setup prominently in your app's README.",[2066,3216,3218],{"id":3217},"what-the-platform-does-with-your-output","What the platform does with your output",[2071,3220,3221],{},"Everything your handlers return crosses a validation boundary before it reaches an editor or gets stored:",[2833,3223,3224,3237,3259,3262],{},[2836,3225,3226,3227,3230,3231,3233,3234,3236],{},"Every ",[2088,3228,3229],{},"media"," is parsed against the canonical ",[2088,3232,447],{}," schema; invalid items are dropped from ",[2088,3235,2542],{}," results (with a server-side warning naming your library and the failing field) and converted into failed outcomes on upload paths.",[2836,3238,3239,3242,3243,3246,3247,3250,3251,3254,3255,3258],{},[2088,3240,3241],{},"src"," and ",[2088,3244,3245],{},"previewUrl"," values with ",[2088,3248,3249],{},"javascript:",", ",[2088,3252,3253],{},"data:",", or ",[2088,3256,3257],{},"vbscript:"," schemes are rejected — including inside nested poster/cover images.",[2836,3260,3261],{},"Response fields you did not declare a capability for are discarded, and query fields you did not declare are stripped before your handler runs.",[2836,3263,3264,3265,3268,3269,3271,3272,3274],{},"The platform stamps every stored media source with ",[2088,3266,3267],{},"origin: { libraryId, externalId? }"," — your library's id plus the item-level ",[2088,3270,2879],{}," you provided. If a single media mixes assets (e.g. art-directed sources from different backend assets), set ",[2088,3273,2883],{}," per source yourself; a value you set is never overwritten.",[3276,3277,3278],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .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}",{"title":2086,"searchDepth":2128,"depth":2128,"links":3280},[3281,3282,3283,3285,3286,3287],{"id":2068,"depth":2128,"text":2069},{"id":2077,"depth":2128,"text":2463},{"id":2588,"depth":2128,"text":3284},"Browsing: list",{"id":2567,"depth":2128,"text":2900},{"id":3217,"depth":2128,"text":3218},{"id":3288,"text":1831,"depth":2128},"changelog",[3290],"MediaLibrary","How to connect an external asset source (DAM, CMS, shop backend) to Studio's media picker by implementing the media-library facet of the Orchestr builder.","md",{},{"title":3295,"description":3291},"Media Libraries | Laioutr",{"loc":743,"lastmod":3297,"changefreq":3298,"priority":2094},"2026-07-02","monthly","J-d4ri3pQmqn-gOosN2SZdF2TCQRtOVwgj3y8ZvUaAU",[3301,3303],{"title":738,"path":739,"stem":740,"description":3302,"children":-1},"What a connector app needs to implement for Laioutr and Laioutr UI compatibility, and what existing connectors already provide.",{"title":746,"path":747,"stem":748,"description":3304,"children":-1},"Nuxt modules and their versions that the Laioutr platform installs. Check this list before adding dependencies to your custom app.",{"id":3306,"extension":3307,"meta":3308,"stem":3288,"__hash__":3405},"changelog/changelog.yml","yml",{"AlphabeticalIndex":3309,"ArticleDetail":3320,"BasicTable":3327,"BannerBasic":3332,"BannerIntegrated":3335,"BannerShowcase":3338,"CouponBox":3341,"EmailInputForm":3344,"GridFill":3347,"Input":3350,"LocationFinder":3353,"Media":3356,"MediaLibrary":3370,"MediaComponent":3374,"MediaText":3379,"MegaMenu":3382,"MenuSideBySide":3385,"NavigationMenuTextItem":3388,"SectionGlossaryDetail":3391,"SchemaCondition":3394,"TableOpeningHours":3398,"TableProductSpecifications":3402},[3310,3315],{"version":3311,"type":3312,"changelog":3313,"note":3314},"2.4.0","fixed","ui","Group content is now top-aligned (`align-items: flex-start` instead of `center`), so columns of uneven height line up along their top edge.",{"version":3316,"type":3317,"breaking":2131,"changelog":3313,"note":3318,"migration":3319},"2.3.0","changed","Renamed from `BrandList` and generalized beyond brands — pass any `items` and a `heading` instead of `brands`.","Import from the new component, rename the `brands` prop to `items`, and\npass `heading` explicitly — the old built-in `\"Brands\"` translation no\nlonger renders automatically.\n\n```ts\n// Before\ninterface BrandListProps {\n  brands: { name: string; href: string; count?: number }[];\n}\n\n// After\ninterface AlphabeticalIndexProps {\n  heading?: string;\n  items: { name: string; href: string; count?: number }[];\n}\n```\n",[3321,3324],{"version":3311,"type":3317,"breaking":2131,"changelog":3313,"note":3322,"migration":3323},"`BlogPostDetail` was renamed to `ArticleDetail` and promoted to the shared reading view behind both the Blog Post and Glossary sections. There is no backwards-compatible alias.","Update imports and template tags.\n\n```diff\n- import BlogPostDetail from '#ui/components/BlogPostDetail/BlogPostDetail.vue';\n+ import ArticleDetail from '#ui/components/ArticleDetail/ArticleDetail.vue';\n\n- \u003CLBlogPostDetail :title :media :body />\n+ \u003CLArticleDetail :title :media :body />\n```\n",{"version":3311,"type":3325,"changelog":3313,"note":3326},"added","New optional `showSocialShare` prop (default `false`) toggles the trailing `SocialShare` row. `SectionBlogPostDetail` enables it; `SectionGlossaryDetail` leaves it off.",[3328],{"version":3329,"type":3317,"breaking":2131,"changelog":3313,"note":3330,"migration":3331},"2.5.0","Renamed from `DescriptionList` (and `DescriptionListItem` → `BasicTableRow`), now rendered as a semantic description list (`\u003Cdl>` with `\u003Cdt>`/`\u003Cdd>` rows) instead of presentational `\u003Cdiv>`s. The label column is overridable via the new public `--basic-table-label-col` custom property; the grid/subgrid layout and CSS surface (`.basic-table` class, BEM classes) are unchanged.","```diff\n- import DescriptionList from '#ui-kit/components/DescriptionList/DescriptionList.vue';\n- import DescriptionListItem from '#ui-kit/components/DescriptionList/DescriptionListItem.vue';\n+ import BasicTable from '#ui-kit/components/BasicTable/BasicTable.vue';\n+ import BasicTableRow from '#ui-kit/components/BasicTable/BasicTableRow.vue';\n```\n",[3333],{"version":3311,"type":3325,"changelog":3313,"note":3334},"New `contentPadding` prop (`'default' | 'm' | 's' | 'none'`) with matching `.banner-basic--content-padding-{m,s,none}` modifier classes. Unset preserves the existing padding. In Studio it surfaces as the Design → Layout **Content Padding** control.",[3336],{"version":3311,"type":3325,"changelog":3313,"note":3337},"New `contentPadding` prop (`'default' | 'm' | 's' | 'none'`) with matching `.banner-integrated--content-padding-{m,s,none}` modifier classes. Unset preserves the existing padding, and the Design → Layout **Content Padding** control exposes it in Studio.",[3339],{"version":3311,"type":3325,"changelog":3313,"note":3340},"New `contentPadding` prop (`'default' | 'm' | 's' | 'none'`) with matching `.banner-showcase--content-padding-{m,s,none}` modifier classes. Unset preserves the existing padding, and the Design → Layout **Content Padding** control exposes it in Studio.",[3342],{"version":3311,"type":3325,"changelog":3313,"note":3343},"New `BlockProductDetailCouponBox` wraps `CouponBox` for placement in the Product Detail section's content slot. Editors configure the text, code, optional discount badge, and icon; the block hard-wires `action=\"copy\"` so shoppers copy the code to the clipboard.",[3345],{"version":3311,"type":3325,"changelog":3313,"note":3346},"`EmailInputForm` and `EmailInputFormDisplay` gained a `variant` (`'boxed' | 'plain'`) prop, forwarded to the underlying `Input`. The `plain` variant paints resting backgrounds and borders from the `--input-field-plain-*` tokens, so a footer or popup signup can sit flush on an already-styled surface.",[3348],{"version":3311,"type":3325,"changelog":3313,"note":3349},"New `justify` and `align` props (`'start' | 'center' | 'end'`, both default `'start'`) set main- and cross-axis item alignment. They are stated logically: under `sizing=\"greedy-first\"` GridFill internally un-mirrors the reversed axis, so `start`/`end` resolve to the intended physical direction. `Container` maps its 2D `alignment` onto these, fixing mirrored alignment under \"Greedy First\" sizing.",[3351],{"version":3311,"type":3325,"changelog":3313,"note":3352},"A `plain` variant joins `outline` (default) and `subtle`. It paints resting, hover, focus, disabled, and error backgrounds/borders from the `--input-field-plain-*` tokens, for inputs that sit on an already-styled surface.",[3354],{"version":3311,"type":3317,"changelog":3313,"note":3355},"The container-style control moved to the shared `containerStyleField` toggle (`'full-width' | 'boxed'`); the field name and stored values are unchanged, so no re-authoring is needed. In `boxed` mode `.location-finder--boxed` now clamps to `--container-max-width` and centres with `margin-inline: auto` from the `--lg` breakpoint up.",[3357,3361,3364,3367],{"version":3358,"type":3325,"changelog":3359,"note":3360},"0.34.0","frontend","Every source gained an optional [`origin`](/frontend/api-reference/common-types/media#source-origin) (`{ libraryId, externalId? }`) recording the media library that produced it and that library's stable asset id. It is stamped automatically when an asset is picked from a media library, and is management-plane only — the renderer never reads it. Additive and optional, so media stored before it existed stay valid.",{"version":3362,"type":3325,"changelog":3359,"note":3363},"0.30.1","Added an [`audio`](/frontend/api-reference/common-types/media#mediaaudio) variant, plus [text tracks](/frontend/api-reference/common-types/media#text-tracks) and [streaming formats](/frontend/api-reference/common-types/media#streaming-formats) for video. Studio `media` fields can restrict to it with `allowedTypes: ['audio']`.",{"version":3362,"type":3317,"breaking":2131,"changelog":3359,"note":3365,"migration":3366},"`MediaVideo.preview` was renamed to `MediaVideo.poster` to match the HTML `\u003Cvideo poster>` attribute.","Rename the field on every `MediaVideo` you construct or read.\n\n```ts\n// Before\nconst video: MediaVideo = { type: 'video', sources, preview: posterImage };\n// After\nconst video: MediaVideo = { type: 'video', sources, poster: posterImage };\n```\n",{"version":3362,"type":3317,"breaking":2131,"changelog":3359,"note":3368,"migration":3369},"The `Media` union was widened to include `MediaAudio`, so `media.type` can now be `'audio'`.","Any exhaustive `switch (media.type)` without a `default` branch must add an\n`'audio'` case, or TypeScript reports a non-exhaustive switch.\n\n```ts\nswitch (media.type) {\n  case 'image': return renderImage(media);\n  case 'video': return renderVideo(media);\n  case 'audio': return renderAudio(media); // new\n}\n```\n",[3371],{"version":3372,"type":3317,"changelog":3359,"note":3373},"0.31.0","Media-library connectors are now defined through the Orchestr builder's `mediaLibrary` facet. `defineMediaLibraryProvider()` remains available as a deprecated compatibility shim, but legacy providers do not support folders, staged uploads, declared sorts, or server-side type filtering.",[3375,3377],{"version":3311,"type":3325,"changelog":3313,"note":3376},"`\u003CMedia>` gained a `playback` mode for video. `playback=\"background\"` is a one-switch decorative loop (`autoplay`, `muted`, `loop`, `playsinline`, `disablePictureInPicture` on, `controls` off); `interactive` (the default) is the native player. Each attribute still has its own overriding prop. `\u003CMedia>` now exposes `v-model:paused` so consumers render their own WCAG 2.2.2 pause control, and suppresses autoplay under reduced motion. See [Background video](/laioutr-ui/ui-kit/general/media#background-video).",{"version":3316,"type":3325,"changelog":3313,"note":3378},"`\u003CMedia>` is now a dispatcher that renders video and audio, not only images. Built-in native `\u003Cvideo>` and `\u003Caudio>` players handle progressive sources out of the box (the video `poster` and audio `cover` are shown automatically), and playback is set with props on `\u003CMedia>` (`controls`, `autoplay`, `muted`, `loop`, `playsinline`). Register a renderer with `provideMediaRenderers` to override the built-in for adaptive streaming (HLS/DASH) or a custom player UI. See [Rendering video and audio](/laioutr-ui/ui-kit/general/media#rendering-video-and-audio).",[3380],{"version":3311,"type":3325,"changelog":3313,"note":3381},"New `innerBlockPadding` prop (`'s' | 'm' | 'l'`) forwarded to `Backdrop`, surfaced as the Design → Layout **Padding** control (none/S/M/L). Unset defaults to none, so existing sections render unchanged.",[3383],{"version":3311,"type":3325,"changelog":3313,"note":3384},"`MegaMenuItem` gained an optional `textColor` (`ColorFieldValue`) that overrides the surface-tone label color of a top-level trigger. In Studio, `BlockMegaMenu` exposes a per-item color picker via an `as: 'style'` decorator on author-typed titles.",[3386],{"version":3311,"type":3325,"changelog":3313,"note":3387},"`NavigationNode` gained an optional `textColor` (`ColorFieldValue`) that overrides the surface-tone label color of a top-level node. In Studio, `BlockMenuSideBySide` and `BlockMenuBasic` expose a per-item color picker via an `as: 'style'` decorator on author-typed titles.",[3389],{"version":3311,"type":3325,"changelog":3313,"note":3390},"New optional `textColor` prop accepting a resolved CSS color string. When set it overrides the surface-tone label color for that item; unset, the item inherits the surrounding surface tone.",[3392],{"version":3311,"type":3325,"changelog":3313,"note":3393},"New section that renders a single glossary entry through the shared `ArticleDetail` reading view, bound to the `Glossary` entity's `base` and `content` components.",[3395],{"version":3396,"type":3325,"changelog":3359,"note":3397},"0.30.0","Field and fieldset definitions gained an optional `if` expression that hides a control in the Studio sidebar — see [Conditional visibility](/apps/app-development/schema-fields#conditional-visibility).",[3399],{"version":3329,"type":3317,"breaking":2131,"changelog":3313,"note":3400,"migration":3401},"Moved out of UI Kit into `@laioutr-core/ui` (renamed from `OpeningHoursWeeklyTable`), now built on the `BasicTable` primitive and gaining an `outlined` / `plain` `variant`. The weekday-grouping behavior is unchanged.","```diff\n- import OpeningHoursWeeklyTable from '#ui-kit/components/OpeningHoursWeeklyTable/OpeningHoursWeeklyTable.vue';\n+ import TableOpeningHours from '#ui/components/TableOpeningHours/TableOpeningHours.vue';\n```\n",[3403],{"version":3329,"type":3325,"changelog":3313,"note":3404},"Product specification sheet built on `BasicTable`. Rows carry a `label` and a typed `value` (`string | number | boolean | Measurement | Money`) formatted per locale by the `TableProductSpecificationsValue` subcomponent, with optional per-row `sectionName` grouping. Consumes a Product's `specifications` component or manually authored rows.","mU5fAvWkeNi2htfOv-etzvx14hmXp_GLz4qppmfVhIw",{"body":3407,"excerpt":-1},{"type":3408,"children":3409},"root",[3410],{"type":3411,"tag":2071,"props":3412,"children":3413,"position":-1},"element",{},[3414,3417,3426,3430,3439],{"type":3415,"value":3416,"position":-1},"text","Media-library connectors are now defined through the Orchestr builder's ",{"type":3411,"tag":2088,"props":3418,"children":3420,"position":3425},{"className":3419},[],[3421],{"type":3415,"value":2150,"position":3422},{"start":3423,"end":3424},72,86,{"start":3423,"end":3424},{"type":3415,"value":3427,"position":3428}," facet. ",{"start":3424,"end":3429},94,{"type":3411,"tag":2088,"props":3431,"children":3433,"position":3438},{"className":3432},[],[3434],{"type":3415,"value":3435,"position":3436},"defineMediaLibraryProvider()",{"start":3429,"end":3437},124,{"start":3429,"end":3437},{"type":3415,"value":3440,"position":3441}," remains available as a deprecated compatibility shim, but legacy providers do not support folders, staged uploads, declared sorts, or server-side type filtering.",{"start":3437,"end":3442},286,1784674607391]