[{"data":1,"prerenderedAt":4346},["ShallowReactive",2],{"navigation_docs":3,"-apps-app-development-consent-adapters":1905,"-apps-app-development-consent-adapters-surround":4341},[4,136,463,647,1532,1622,1628,1634,1693,1792],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","0.getting-started/0.index",[9,10,14,18,56,81,115,132],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Starting new project","/getting-started/starting-new-project","0.getting-started/1.starting-new-project",{"title":15,"path":16,"stem":17},"What is Laioutr?","/getting-started/what-is-laioutr","0.getting-started/2.what-is-laioutr",{"title":19,"path":20,"stem":21,"children":22,"page":55},"Key Concepts","/getting-started/key-concepts","0.getting-started/3.key-concepts",[23,27,31,35,39,43,47,51],{"title":24,"path":25,"stem":26},"Architecture","/getting-started/key-concepts/architecture","0.getting-started/3.key-concepts/1.architecture",{"title":28,"path":29,"stem":30},"Data Model","/getting-started/key-concepts/data-model","0.getting-started/3.key-concepts/2.data-model",{"title":32,"path":33,"stem":34},"Internationalization","/getting-started/key-concepts/5.internationalization","0.getting-started/3.key-concepts/3.5.internationalization",{"title":36,"path":37,"stem":38},"Data Flow","/getting-started/key-concepts/data-flow","0.getting-started/3.key-concepts/3.data-flow",{"title":40,"path":41,"stem":42},"Extensibility","/getting-started/key-concepts/extensibility","0.getting-started/3.key-concepts/4.extensibility",{"title":44,"path":45,"stem":46},"Philosophy","/getting-started/key-concepts/philosophy","0.getting-started/3.key-concepts/5.philosophy",{"title":48,"path":49,"stem":50},"CI/CD Pipeline","/getting-started/key-concepts/ci-cd-pipeline","0.getting-started/3.key-concepts/6.ci-cd-pipeline",{"title":52,"path":53,"stem":54},"Multi-tenancy","/getting-started/key-concepts/multi-tenancy","0.getting-started/3.key-concepts/multi-tenancy",false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Next Steps","/getting-started/next-steps","0.getting-started/4.next-steps",[61,65,69,73,77],{"title":62,"path":63,"stem":64},"Create Organization and Project","/getting-started/next-steps/create-org-and-project","0.getting-started/4.next-steps/0.create-org-and-project",{"title":66,"path":67,"stem":68},"First Project Configuration","/getting-started/next-steps/first-project-config","0.getting-started/4.next-steps/1.first-project-config",{"title":70,"path":71,"stem":72},"Setup Local Development Environment","/getting-started/next-steps/local-setup","0.getting-started/4.next-steps/3.local-setup",{"title":74,"path":75,"stem":76},"Create your first custom app","/getting-started/next-steps/create-custom-app","0.getting-started/4.next-steps/4.create-custom-app",{"title":78,"path":79,"stem":80},"CLI","/getting-started/next-steps/cli","0.getting-started/4.next-steps/5.cli",{"title":82,"path":83,"stem":84,"children":85},"Changelogs","/getting-started/changelogs","0.getting-started/5.Changelogs/0.index",[86,87,91,95,99,103,107,111],{"title":82,"path":83,"stem":84},{"title":88,"path":89,"stem":90},"Canonical Types Changelog","/getting-started/changelogs/canonical-types-changelog","0.getting-started/5.Changelogs/canonical-types-changelog",{"title":92,"path":93,"stem":94},"CLI Changelog","/getting-started/changelogs/cli-changelog","0.getting-started/5.Changelogs/cli-changelog",{"title":96,"path":97,"stem":98},"Cockpit Changelog","/getting-started/changelogs/cockpit-changelog","0.getting-started/5.Changelogs/cockpit-changelog",{"title":100,"path":101,"stem":102},"Figma Kit Changelog","/getting-started/changelogs/figma-kit-changelog","0.getting-started/5.Changelogs/figma-kit-changelog",{"title":104,"path":105,"stem":106},"Frontend Changelog","/getting-started/changelogs/frontend-changelog","0.getting-started/5.Changelogs/frontend-changelog",{"title":108,"path":109,"stem":110},"Orchestr Changelog","/getting-started/changelogs/orchestr-changelog","0.getting-started/5.Changelogs/orchestr-changelog",{"title":112,"path":113,"stem":114},"UI Changelog","/getting-started/changelogs/ui-changelog","0.getting-started/5.Changelogs/ui-changelog",{"title":116,"path":117,"stem":118,"children":119,"page":55},"Hints And Tips","/getting-started/hints-and-tips","0.getting-started/6.Hints-and-Tips",[120,124,128],{"title":121,"path":122,"stem":123},"Introduction","/getting-started/hints-and-tips/introduction","0.getting-started/6.Hints-and-Tips/0.introduction",{"title":125,"path":126,"stem":127},"Developer tools","/getting-started/hints-and-tips/developer-tools","0.getting-started/6.Hints-and-Tips/1.developer-tools",{"title":129,"path":130,"stem":131},"Claude Code plugin","/getting-started/hints-and-tips/claude-marketplace","0.getting-started/6.Hints-and-Tips/2.claude-marketplace",{"title":133,"path":134,"stem":135},"MCP Server","/getting-started/mcp-server","0.getting-started/7.mcp-server",{"title":137,"path":138,"stem":139,"children":140},"Frontend","/frontend","1.Frontend/0.index",[141,142,153,215,241,305],{"title":137,"path":138,"stem":139},{"title":121,"path":143,"stem":144,"children":145,"page":55},"/frontend/introduction","1.Frontend/1.Introduction",[146,149],{"title":19,"path":147,"stem":148},"/frontend/introduction/key-concepts","1.Frontend/1.Introduction/0.key-concepts",{"title":150,"path":151,"stem":152},"Tech Stack","/frontend/introduction/tech-stack","1.Frontend/1.Introduction/1.tech-stack",{"title":154,"path":155,"stem":156,"children":157},"Features","/frontend/features","1.Frontend/2.Features/0.index",[158,159,163,167,171,175,179,183,187,191,195,199,203,207,211],{"title":154,"path":155,"stem":156},{"title":160,"path":161,"stem":162},"Consent Management","/frontend/features/consent-management","1.Frontend/2.Features/consent-management",{"title":164,"path":165,"stem":166},"Currencies","/frontend/features/currencies","1.Frontend/2.Features/currencies",{"title":168,"path":169,"stem":170},"Environments & Staging","/frontend/features/environments","1.Frontend/2.Features/environments",{"title":172,"path":173,"stem":174},"Hooks","/frontend/features/hooks","1.Frontend/2.Features/hooks",{"title":176,"path":177,"stem":178},"Media and Media Library","/frontend/features/media","1.Frontend/2.Features/media",{"title":180,"path":181,"stem":182},"Multi-language Support","/frontend/features/multi-language-support","1.Frontend/2.Features/multi-language-support",{"title":184,"path":185,"stem":186},"Multi-market","/frontend/features/multi-market","1.Frontend/2.Features/multi-market",{"title":188,"path":189,"stem":190},"Page Types","/frontend/features/pagetypes","1.Frontend/2.Features/pagetypes",{"title":192,"path":193,"stem":194},"PWA","/frontend/features/pwa","1.Frontend/2.Features/pwa",{"title":196,"path":197,"stem":198},"Redirects","/frontend/features/redirects","1.Frontend/2.Features/redirects",{"title":200,"path":201,"stem":202},"Routing","/frontend/features/routing","1.Frontend/2.Features/routing",{"title":204,"path":205,"stem":206},"Server-Side Rendering (SSR) and Caching","/frontend/features/ssr-and-caching","1.Frontend/2.Features/ssr-and-caching",{"title":208,"path":209,"stem":210},"Tracking","/frontend/features/tracking","1.Frontend/2.Features/tracking",{"title":212,"path":213,"stem":214},"Z-Ordering","/frontend/features/z-ordering","1.Frontend/2.Features/z-ordering",{"title":216,"path":217,"stem":218,"children":219},"SEO","/frontend/seo","1.Frontend/3.SEO/0.index",[220,221,225,229,233,237],{"title":216,"path":217,"stem":218},{"title":222,"path":223,"stem":224},"Link Checker","/frontend/seo/link-checker","1.Frontend/3.SEO/link-checker",{"title":226,"path":227,"stem":228},"OG Image","/frontend/seo/og-image","1.Frontend/3.SEO/og-image",{"title":230,"path":231,"stem":232},"Robots.txt","/frontend/seo/robots-txt","1.Frontend/3.SEO/robots-txt",{"title":234,"path":235,"stem":236},"Schema.org","/frontend/seo/schema-org","1.Frontend/3.SEO/schema-org",{"title":238,"path":239,"stem":240},"Sitemap","/frontend/seo/sitemap","1.Frontend/3.SEO/sitemap",{"title":242,"path":243,"stem":244,"children":245},"Backend for Frontend","/frontend/orchestr","1.Frontend/4.Orchestr/0.index",[246,247,273,277,281,285,289,293,297,301],{"title":242,"path":243,"stem":244},{"title":248,"path":249,"stem":250,"children":251},"Recipes","/frontend/orchestr/recipes","1.Frontend/4.Orchestr/99.recipes/0.index",[252,253,257,261,265,269],{"title":248,"path":249,"stem":250},{"title":254,"path":255,"stem":256},"Analytics components from query handlers","/frontend/orchestr/recipes/analytics-from-query-handlers","1.Frontend/4.Orchestr/99.recipes/analytics-from-query-handlers",{"title":258,"path":259,"stem":260},"Identity cookies (cart and visitor IDs)","/frontend/orchestr/recipes/identity-cookies","1.Frontend/4.Orchestr/99.recipes/identity-cookies",{"title":262,"path":263,"stem":264},"System bootstrap in extendRequest","/frontend/orchestr/recipes/system-bootstrap","1.Frontend/4.Orchestr/99.recipes/system-bootstrap",{"title":266,"path":267,"stem":268},"Translating vendor errors","/frontend/orchestr/recipes/translating-vendor-errors","1.Frontend/4.Orchestr/99.recipes/translating-vendor-errors",{"title":270,"path":271,"stem":272},"Userland cache patterns","/frontend/orchestr/recipes/userland-cache-patterns","1.Frontend/4.Orchestr/99.recipes/userland-cache-patterns",{"title":274,"path":275,"stem":276},"Actions","/frontend/orchestr/actions","1.Frontend/4.Orchestr/Actions",{"title":278,"path":279,"stem":280},"Caching","/frontend/orchestr/caching","1.Frontend/4.Orchestr/Caching",{"title":282,"path":283,"stem":284},"Middleware","/frontend/orchestr/middleware","1.Frontend/4.Orchestr/Middleware",{"title":286,"path":287,"stem":288},"Queries & Links","/frontend/orchestr/queries","1.Frontend/4.Orchestr/Queries",{"title":290,"path":291,"stem":292},"Component Resolvers","/frontend/orchestr/component-resolvers","1.Frontend/4.Orchestr/component-resolvers",{"title":294,"path":295,"stem":296},"Filters","/frontend/orchestr/filters","1.Frontend/4.Orchestr/filters",{"title":298,"path":299,"stem":300},"URL Query Parameters","/frontend/orchestr/url-query-params","1.Frontend/4.Orchestr/url-query-params",{"title":302,"path":303,"stem":304},"Orchestr Wire Format","/frontend/orchestr/wire-format","1.Frontend/4.Orchestr/wire-format",{"title":306,"path":307,"stem":308,"children":309},"API Reference","/frontend/api-reference","1.Frontend/99.api-reference/0.index",[310,311,373,376,406,422,430,441,449,456],{"title":306,"path":307,"stem":308},{"title":312,"path":313,"stem":314,"children":315},"Entities","/frontend/api-reference/entities","1.Frontend/99.api-reference/01.entities/0.index",[316,317,321,325,329,333,337,341,345,349,353,357,361,365,369],{"title":312,"path":313,"stem":314},{"title":318,"path":319,"stem":320},"Product","/frontend/api-reference/entities/product","1.Frontend/99.api-reference/01.entities/1.product",{"title":322,"path":323,"stem":324},"SuggestedSearch","/frontend/api-reference/entities/suggested-search","1.Frontend/99.api-reference/01.entities/10.suggested-search",{"title":326,"path":327,"stem":328},"SuggestedSearchEntry","/frontend/api-reference/entities/suggested-search-entry","1.Frontend/99.api-reference/01.entities/11.suggested-search-entry",{"title":330,"path":331,"stem":332},"BlogCollection","/frontend/api-reference/entities/blog-collection","1.Frontend/99.api-reference/01.entities/12.blog-collection",{"title":334,"path":335,"stem":336},"Comment","/frontend/api-reference/entities/comment","1.Frontend/99.api-reference/01.entities/13.comment",{"title":338,"path":339,"stem":340},"Location","/frontend/api-reference/entities/location","1.Frontend/99.api-reference/01.entities/14.location",{"title":342,"path":343,"stem":344},"ProductVariant","/frontend/api-reference/entities/product-variant","1.Frontend/99.api-reference/01.entities/2.product-variant",{"title":346,"path":347,"stem":348},"Category","/frontend/api-reference/entities/category","1.Frontend/99.api-reference/01.entities/3.category",{"title":350,"path":351,"stem":352},"Cart","/frontend/api-reference/entities/cart","1.Frontend/99.api-reference/01.entities/4.cart",{"title":354,"path":355,"stem":356},"CartItem","/frontend/api-reference/entities/cart-item","1.Frontend/99.api-reference/01.entities/5.cart-item",{"title":358,"path":359,"stem":360},"Review","/frontend/api-reference/entities/review","1.Frontend/99.api-reference/01.entities/6.review",{"title":362,"path":363,"stem":364},"BreadcrumbItem","/frontend/api-reference/entities/breadcrumb-item","1.Frontend/99.api-reference/01.entities/7.breadcrumb-item",{"title":366,"path":367,"stem":368},"MenuItem","/frontend/api-reference/entities/menu-item","1.Frontend/99.api-reference/01.entities/8.menu-item",{"title":370,"path":371,"stem":372},"BlogPost","/frontend/api-reference/entities/blog-post","1.Frontend/99.api-reference/01.entities/9.blog-post",{"title":188,"path":374,"stem":375},"/frontend/api-reference/page-types","1.Frontend/99.api-reference/02.page-types",{"title":377,"path":378,"stem":379,"children":380},"Common Types","/frontend/api-reference/common-types","1.Frontend/99.api-reference/03.common-types/0.index",[381,382,386,390,394,398,402],{"title":377,"path":378,"stem":379},{"title":383,"path":384,"stem":385},"Link","/frontend/api-reference/common-types/link","1.Frontend/99.api-reference/03.common-types/1.link",{"title":387,"path":388,"stem":389},"Media","/frontend/api-reference/common-types/media","1.Frontend/99.api-reference/03.common-types/2.media",{"title":391,"path":392,"stem":393},"Money","/frontend/api-reference/common-types/money","1.Frontend/99.api-reference/03.common-types/3.money",{"title":395,"path":396,"stem":397},"UnitPrice","/frontend/api-reference/common-types/unit-price","1.Frontend/99.api-reference/03.common-types/4.unit-price",{"title":399,"path":400,"stem":401},"Measurement","/frontend/api-reference/common-types/measurement","1.Frontend/99.api-reference/03.common-types/5.measurement",{"title":403,"path":404,"stem":405},"Opening Hours","/frontend/api-reference/common-types/opening-hours","1.Frontend/99.api-reference/03.common-types/6.opening-hours",{"title":407,"path":408,"stem":409,"children":410,"page":55},"Ecommerce","/frontend/api-reference/ecommerce","1.Frontend/99.api-reference/10.ecommerce",[411,414,418],{"title":274,"path":412,"stem":413},"/frontend/api-reference/ecommerce/actions","1.Frontend/99.api-reference/10.ecommerce/1.actions",{"title":415,"path":416,"stem":417},"Queries","/frontend/api-reference/ecommerce/queries","1.Frontend/99.api-reference/10.ecommerce/2.queries",{"title":419,"path":420,"stem":421},"Errors","/frontend/api-reference/ecommerce/errors","1.Frontend/99.api-reference/10.ecommerce/3.errors",{"title":423,"path":424,"stem":425,"children":426,"page":55},"Newsletter","/frontend/api-reference/newsletter","1.Frontend/99.api-reference/11.newsletter",[427],{"title":274,"path":428,"stem":429},"/frontend/api-reference/newsletter/actions","1.Frontend/99.api-reference/11.newsletter/1.actions",{"title":431,"path":432,"stem":433,"children":434,"page":55},"Blog","/frontend/api-reference/blog","1.Frontend/99.api-reference/12.blog",[435,438],{"title":415,"path":436,"stem":437},"/frontend/api-reference/blog/queries","1.Frontend/99.api-reference/12.blog/1.queries",{"title":419,"path":439,"stem":440},"/frontend/api-reference/blog/errors","1.Frontend/99.api-reference/12.blog/2.errors",{"title":442,"path":443,"stem":444,"children":445,"page":55},"Suggested Search","/frontend/api-reference/suggested-search","1.Frontend/99.api-reference/13.suggested-search",[446],{"title":415,"path":447,"stem":448},"/frontend/api-reference/suggested-search/queries","1.Frontend/99.api-reference/13.suggested-search/1.queries",{"title":208,"path":450,"stem":451,"children":452,"page":55},"/frontend/api-reference/tracking","1.Frontend/99.api-reference/14.tracking",[453],{"title":274,"path":454,"stem":455},"/frontend/api-reference/tracking/actions","1.Frontend/99.api-reference/14.tracking/1.actions",{"title":338,"path":457,"stem":458,"children":459,"page":55},"/frontend/api-reference/location","1.Frontend/99.api-reference/15.location",[460],{"title":415,"path":461,"stem":462},"/frontend/api-reference/location/queries","1.Frontend/99.api-reference/15.location/1.queries",{"title":464,"path":465,"stem":466,"children":467},"Apps","/apps","2.Apps/0.index",[468,469,545,631],{"title":464,"path":465,"stem":466},{"title":470,"path":471,"stem":472,"children":473},"App Development","/apps/app-development","2.Apps/app-development/0.index",[474,475,497,501,505,509,513,517,521,525,529,533,537,541],{"title":470,"path":471,"stem":472},{"title":476,"path":477,"stem":478,"children":479},"Guides","/apps/app-development/guides","2.Apps/app-development/99.guides/0.index",[480,481,485,489,493],{"title":476,"path":477,"stem":478},{"title":482,"path":483,"stem":484},"Separate schema components from UI components","/apps/app-development/guides/schema-components-vs-ui-components","2.Apps/app-development/99.guides/schema-components-vs-ui-components",{"title":486,"path":487,"stem":488},"Section config standard","/apps/app-development/guides/section-config-standard","2.Apps/app-development/99.guides/section-config-standard",{"title":490,"path":491,"stem":492},"Shared field factories","/apps/app-development/guides/shared-field-factories","2.Apps/app-development/99.guides/shared-field-factories",{"title":494,"path":495,"stem":496},"How to write CSS","/apps/app-development/guides/writing-css","2.Apps/app-development/99.guides/writing-css",{"title":498,"path":499,"stem":500},"App Configuration","/apps/app-development/app-configuration","2.Apps/app-development/app-configuration",{"title":502,"path":503,"stem":504},"App Starter","/apps/app-development/app-starter","2.Apps/app-development/app-starter",{"title":506,"path":507,"stem":508},"Best Practice","/apps/app-development/best-practice","2.Apps/app-development/best-practice",{"title":510,"path":511,"stem":512},"Block Definitions","/apps/app-development/block-definitions","2.Apps/app-development/block-definitions",{"title":514,"path":515,"stem":516},"Coding Standards","/apps/app-development/coding-standards","2.Apps/app-development/coding-standards",{"title":518,"path":519,"stem":520},"Consent Adapters","/apps/app-development/consent-adapters","2.Apps/app-development/consent-adapters",{"title":522,"path":523,"stem":524},"Consuming Query Fields","/apps/app-development/consuming-query-fields","2.Apps/app-development/consuming-query-fields",{"title":526,"path":527,"stem":528},"Implementation Overview","/apps/app-development/implementation-overview","2.Apps/app-development/implementation-overview",{"title":530,"path":531,"stem":532},"Platform Dependencies","/apps/app-development/platform-dependencies","2.Apps/app-development/platform-dependencies",{"title":534,"path":535,"stem":536},"Schema Fields","/apps/app-development/schema-fields","2.Apps/app-development/schema-fields",{"title":538,"path":539,"stem":540},"Section Definitions","/apps/app-development/section-definitions","2.Apps/app-development/section-definitions",{"title":542,"path":543,"stem":544},"Studio Icons","/apps/app-development/studio-icons","2.Apps/app-development/studio-icons",{"title":546,"path":547,"stem":548,"children":549},"App Docs","/apps/app-docs","2.Apps/app-docs/0.index",[550,551,555,559,563,567,571,575,579,583,587,591,595,599,603,607,611,615,619,623,627],{"title":546,"path":547,"stem":548},{"title":552,"path":553,"stem":554},"Actindo","/apps/app-docs/actindo","2.Apps/app-docs/actindo",{"title":556,"path":557,"stem":558},"Adobe Commerce","/apps/app-docs/adobe-commerce","2.Apps/app-docs/adobe-commerce",{"title":560,"path":561,"stem":562},"B2Bsellers","/apps/app-docs/b2bsellers","2.Apps/app-docs/b2bsellers",{"title":564,"path":565,"stem":566},"Battery Included","/apps/app-docs/battery-included","2.Apps/app-docs/battery-included",{"title":568,"path":569,"stem":570},"CCM19","/apps/app-docs/ccm19","2.Apps/app-docs/ccm19",{"title":572,"path":573,"stem":574},"Cookiebot","/apps/app-docs/cookiebot","2.Apps/app-docs/cookiebot",{"title":576,"path":577,"stem":578},"Google Tag Manager (GTM)","/apps/app-docs/gtm","2.Apps/app-docs/gtm",{"title":580,"path":581,"stem":582},"Hygraph","/apps/app-docs/hygraph","2.Apps/app-docs/hygraph",{"title":584,"path":585,"stem":586},"JTL Platform","/apps/app-docs/jtl-platform","2.Apps/app-docs/jtl-platform",{"title":588,"path":589,"stem":590},"Nimstrata Google Retail API","/apps/app-docs/nimstrata","2.Apps/app-docs/nimstrata",{"title":592,"path":593,"stem":594},"Pimcore","/apps/app-docs/pimcore","2.Apps/app-docs/pimcore",{"title":596,"path":597,"stem":598},"Sylius","/apps/app-docs/sylius","2.Apps/app-docs/sylius",{"title":600,"path":601,"stem":602},"Commercetools","/apps/app-docs/commercetools","2.apps/app-docs/commercetools",{"title":604,"path":605,"stem":606},"Emporix","/apps/app-docs/emporix","2.apps/app-docs/emporix",{"title":608,"path":609,"stem":610},"Klaviyo","/apps/app-docs/klaviyo","2.apps/app-docs/klaviyo",{"title":612,"path":613,"stem":614},"OXID eShop","/apps/app-docs/oxid","2.apps/app-docs/oxid",{"title":616,"path":617,"stem":618},"Shopify","/apps/app-docs/shopify","2.apps/app-docs/shopify",{"title":620,"path":621,"stem":622},"Shopware","/apps/app-docs/shopware","2.apps/app-docs/shopware",{"title":624,"path":625,"stem":626},"Vercel Analytics","/apps/app-docs/vercel-analytics","2.apps/app-docs/vercel-analytics",{"title":628,"path":629,"stem":630},"Vercel Speed Insights","/apps/app-docs/vercel-speed-insights","2.apps/app-docs/vercel-speed-insights",{"title":632,"path":633,"stem":634,"children":635,"page":55},"Essentials","/apps/essentials","2.Apps/essentials",[636,640,644],{"title":637,"path":638,"stem":639},"Legal","/apps/essentials/legal","2.Apps/essentials/legal",{"title":641,"path":642,"stem":643},"Mailer","/apps/essentials/mailer","2.Apps/essentials/mailer",{"title":216,"path":645,"stem":646},"/apps/essentials/seo","2.Apps/essentials/seo",{"title":648,"path":649,"stem":650,"children":651},"Laioutr UI","/laioutr-ui","3.laioutr-ui/0.index",[652,653,685,691,697,885,902,908,914,968,986,1116],{"title":648,"path":649,"stem":650},{"title":5,"path":654,"stem":655,"children":656},"/laioutr-ui/getting-started","3.laioutr-ui/01.getting-started/0.index",[657,658,662,666,670,674,678,682],{"title":5,"path":654,"stem":655},{"title":659,"path":660,"stem":661},"Browser support","/laioutr-ui/getting-started/browser-support","3.laioutr-ui/01.getting-started/1.browser-support",{"title":663,"path":664,"stem":665},"Common Data","/laioutr-ui/getting-started/common-data","3.laioutr-ui/01.getting-started/99.common-data",{"title":667,"path":668,"stem":669},"CSS Layers","/laioutr-ui/getting-started/css-layers","3.laioutr-ui/01.getting-started/css-layers",{"title":671,"path":672,"stem":673},"Figma Kit","/laioutr-ui/getting-started/figma-kit","3.laioutr-ui/01.getting-started/figma-kit",{"title":675,"path":676,"stem":677},"Surface Tone","/laioutr-ui/getting-started/surface-tone","3.laioutr-ui/01.getting-started/surface-tone",{"title":679,"path":680,"stem":681},"Theming","/laioutr-ui/getting-started/theming","3.laioutr-ui/01.getting-started/theming",{"title":212,"path":683,"stem":684},"/laioutr-ui/getting-started/z-ordering","3.laioutr-ui/01.getting-started/z-ordering",{"title":686,"path":687,"stem":688,"children":689},"B2B","/laioutr-ui/b2b","3.laioutr-ui/b2b/0.index",[690],{"title":686,"path":687,"stem":688},{"title":692,"path":693,"stem":694,"children":695},"Booking","/laioutr-ui/booking","3.laioutr-ui/booking/0.index",[696],{"title":692,"path":693,"stem":694},{"title":698,"path":699,"stem":700,"children":701},"CMS","/laioutr-ui/cms","3.laioutr-ui/cms/0.index",[702,703,709,734,746,750,754,758,762,766,778,799,820,836],{"title":698,"path":699,"stem":700},{"title":704,"path":705,"stem":706,"children":707},"Alphabetical Index","/laioutr-ui/cms/alphabetical-index","3.laioutr-ui/cms/alphabetical-index",[708],{"title":704,"path":705,"stem":706},{"title":710,"path":711,"stem":712,"children":713,"page":55},"Banner","/laioutr-ui/cms/banner","3.laioutr-ui/cms/banner",[714,718,722,726,730],{"title":715,"path":716,"stem":717},"Banner Basic","/laioutr-ui/cms/banner/banner-basic","3.laioutr-ui/cms/banner/banner-basic",{"title":719,"path":720,"stem":721},"Banner Integrated","/laioutr-ui/cms/banner/banner-integrated","3.laioutr-ui/cms/banner/banner-integrated",{"title":723,"path":724,"stem":725},"Banner Showcase","/laioutr-ui/cms/banner/banner-showcase","3.laioutr-ui/cms/banner/banner-showcase",{"title":727,"path":728,"stem":729},"Media + Text","/laioutr-ui/cms/banner/media-text","3.laioutr-ui/cms/banner/media-text",{"title":731,"path":732,"stem":733},"USP Banner","/laioutr-ui/cms/banner/usp-banner","3.laioutr-ui/cms/banner/usp-banner",{"title":431,"path":735,"stem":736,"children":737,"page":55},"/laioutr-ui/cms/blog","3.laioutr-ui/cms/blog",[738,742],{"title":739,"path":740,"stem":741},"Blog Post Detail","/laioutr-ui/cms/blog/blog-post-detail","3.laioutr-ui/cms/blog/blog-post-detail",{"title":743,"path":744,"stem":745},"Blog Post Listing","/laioutr-ui/cms/blog/blog-post-listing","3.laioutr-ui/cms/blog/blog-post-listing",{"title":747,"path":748,"stem":749},"Brand Hero","/laioutr-ui/cms/brand-hero","3.laioutr-ui/cms/brand-hero",{"title":751,"path":752,"stem":753},"Container","/laioutr-ui/cms/container","3.laioutr-ui/cms/container",{"title":755,"path":756,"stem":757},"Content Grid","/laioutr-ui/cms/content-grid","3.laioutr-ui/cms/content-grid",{"title":759,"path":760,"stem":761},"Editorial Grid","/laioutr-ui/cms/editorial-grid","3.laioutr-ui/cms/editorial-grid",{"title":763,"path":764,"stem":765},"Media Gallery","/laioutr-ui/cms/media-gallery","3.laioutr-ui/cms/media-gallery",{"title":423,"path":767,"stem":768,"children":769,"page":55},"/laioutr-ui/cms/newsletter","3.laioutr-ui/cms/newsletter",[770,774],{"title":771,"path":772,"stem":773},"Email Input Form","/laioutr-ui/cms/newsletter/email-input-form","3.laioutr-ui/cms/newsletter/email-input-form",{"title":775,"path":776,"stem":777},"Newsletter Registration","/laioutr-ui/cms/newsletter/newsletter-registration","3.laioutr-ui/cms/newsletter/newsletter-registration",{"title":779,"path":780,"stem":781,"children":782,"page":55},"Popups","/laioutr-ui/cms/popups","3.laioutr-ui/cms/popups",[783,787,791,795],{"title":784,"path":785,"stem":786},"PopUp","/laioutr-ui/cms/popups/pop-up","3.laioutr-ui/cms/popups/pop-up",{"title":788,"path":789,"stem":790},"PopUp Info","/laioutr-ui/cms/popups/pop-up-info","3.laioutr-ui/cms/popups/pop-up-info",{"title":792,"path":793,"stem":794},"PopUp Newsletter","/laioutr-ui/cms/popups/pop-up-newsletter","3.laioutr-ui/cms/popups/pop-up-newsletter",{"title":796,"path":797,"stem":798},"PopUp Promotion","/laioutr-ui/cms/popups/pop-up-promotion","3.laioutr-ui/cms/popups/pop-up-promotion",{"title":800,"path":801,"stem":802,"children":803,"page":55},"Quotes","/laioutr-ui/cms/quotes","3.laioutr-ui/cms/quotes",[804,808,812,816],{"title":805,"path":806,"stem":807},"Persona Quote","/laioutr-ui/cms/quotes/persona-quote","3.laioutr-ui/cms/quotes/persona-quote",{"title":809,"path":810,"stem":811},"Persona Quote Slider","/laioutr-ui/cms/quotes/persona-quote-slider","3.laioutr-ui/cms/quotes/persona-quote-slider",{"title":813,"path":814,"stem":815},"Quote Card","/laioutr-ui/cms/quotes/quote-card","3.laioutr-ui/cms/quotes/quote-card",{"title":817,"path":818,"stem":819},"Quote Card Slider","/laioutr-ui/cms/quotes/quote-card-slider","3.laioutr-ui/cms/quotes/quote-card-slider",{"title":821,"path":822,"stem":823,"children":824,"page":55},"Reviews","/laioutr-ui/cms/reviews","3.laioutr-ui/cms/reviews",[825,828,832],{"title":358,"path":826,"stem":827},"/laioutr-ui/cms/reviews/review","3.laioutr-ui/cms/reviews/review",{"title":829,"path":830,"stem":831},"Review Form","/laioutr-ui/cms/reviews/review-form","3.laioutr-ui/cms/reviews/review-form",{"title":833,"path":834,"stem":835},"Social Share","/laioutr-ui/cms/reviews/social-share","3.laioutr-ui/cms/reviews/social-share",{"title":837,"path":838,"stem":839,"children":840,"page":55},"Slider","/laioutr-ui/cms/slider","3.laioutr-ui/cms/slider",[841,845,849,853,857,861,865,869,873,877,881],{"title":842,"path":843,"stem":844},"Content Slider","/laioutr-ui/cms/slider/content-slider","3.laioutr-ui/cms/slider/content-slider",{"title":846,"path":847,"stem":848},"Hero Slider","/laioutr-ui/cms/slider/hero-slider","3.laioutr-ui/cms/slider/hero-slider",{"title":850,"path":851,"stem":852},"Logo Grid","/laioutr-ui/cms/slider/logo-grid","3.laioutr-ui/cms/slider/logo-grid",{"title":854,"path":855,"stem":856},"Logo Slider","/laioutr-ui/cms/slider/logo-slider","3.laioutr-ui/cms/slider/logo-slider",{"title":858,"path":859,"stem":860},"Swiper Arrows","/laioutr-ui/cms/slider/swiper-arrows","3.laioutr-ui/cms/slider/swiper-arrows",{"title":862,"path":863,"stem":864},"Swiper Bullets","/laioutr-ui/cms/slider/swiper-bullets","3.laioutr-ui/cms/slider/swiper-bullets",{"title":866,"path":867,"stem":868},"Swiper Chrome","/laioutr-ui/cms/slider/swiper-chrome","3.laioutr-ui/cms/slider/swiper-chrome",{"title":870,"path":871,"stem":872},"Swiper Nav Bar","/laioutr-ui/cms/slider/swiper-nav-bar","3.laioutr-ui/cms/slider/swiper-nav-bar",{"title":874,"path":875,"stem":876},"Swiper Numbers","/laioutr-ui/cms/slider/swiper-numbers","3.laioutr-ui/cms/slider/swiper-numbers",{"title":878,"path":879,"stem":880},"Swiper Scrollbar","/laioutr-ui/cms/slider/swiper-scrollbar","3.laioutr-ui/cms/slider/swiper-scrollbar",{"title":882,"path":883,"stem":884},"Thumbnails Slider","/laioutr-ui/cms/slider/thumbnails-slider","3.laioutr-ui/cms/slider/thumbnails-slider",{"title":338,"path":886,"stem":887,"children":888},"/laioutr-ui/location","3.laioutr-ui/location/0.index",[889,890,894,898],{"title":338,"path":886,"stem":887},{"title":891,"path":892,"stem":893},"Location Card","/laioutr-ui/location/location-card","3.laioutr-ui/location/location-card",{"title":895,"path":896,"stem":897},"Location Detail","/laioutr-ui/location/location-detail","3.laioutr-ui/location/location-detail",{"title":899,"path":900,"stem":901},"Location Finder","/laioutr-ui/location/location-finder","3.laioutr-ui/location/location-finder",{"title":903,"path":904,"stem":905,"children":906},"Marketplace","/laioutr-ui/marketplace","3.laioutr-ui/marketplace/0.index",[907],{"title":903,"path":904,"stem":905},{"title":909,"path":910,"stem":911,"children":912},"Multichannel","/laioutr-ui/multichannel","3.laioutr-ui/multichannel/0.index",[913],{"title":909,"path":910,"stem":911},{"title":915,"path":916,"stem":917,"children":918},"Navigation & Headers","/laioutr-ui/navigation","3.laioutr-ui/navigation/0.index",[919,920,924,928,932,936,940,944,948,952,956,960,964],{"title":915,"path":916,"stem":917},{"title":921,"path":922,"stem":923},"Breadcrumbs","/laioutr-ui/navigation/breadcrumbs","3.laioutr-ui/navigation/breadcrumbs",{"title":925,"path":926,"stem":927},"Footer","/laioutr-ui/navigation/footer","3.laioutr-ui/navigation/footer",{"title":929,"path":930,"stem":931},"Footer Menu","/laioutr-ui/navigation/footer-menu","3.laioutr-ui/navigation/footer-menu",{"title":933,"path":934,"stem":935},"Header Basic","/laioutr-ui/navigation/header-basic","3.laioutr-ui/navigation/header-basic",{"title":937,"path":938,"stem":939},"Header Shop","/laioutr-ui/navigation/header-shop","3.laioutr-ui/navigation/header-shop",{"title":941,"path":942,"stem":943},"Mega Menu","/laioutr-ui/navigation/mega-menu","3.laioutr-ui/navigation/mega-menu",{"title":945,"path":946,"stem":947},"Menu Side by Side","/laioutr-ui/navigation/menu-side-by-side","3.laioutr-ui/navigation/menu-side-by-side",{"title":949,"path":950,"stem":951},"Mobile Menu (Basic)","/laioutr-ui/navigation/mobile-menu-basic","3.laioutr-ui/navigation/mobile-menu-basic",{"title":953,"path":954,"stem":955},"Mobile Menu (Shop)","/laioutr-ui/navigation/mobile-menu-shop","3.laioutr-ui/navigation/mobile-menu-shop",{"title":957,"path":958,"stem":959},"Page Not Found","/laioutr-ui/navigation/page-not-found","3.laioutr-ui/navigation/page-not-found",{"title":961,"path":962,"stem":963},"Search Auto-Suggest","/laioutr-ui/navigation/search-auto-suggest","3.laioutr-ui/navigation/search-auto-suggest",{"title":965,"path":966,"stem":967},"Top Bar","/laioutr-ui/navigation/top-bar","3.laioutr-ui/navigation/top-bar",{"title":969,"path":970,"stem":971,"children":972},"SaaS","/laioutr-ui/saas","3.laioutr-ui/saas/0.index",[973,974,978,982],{"title":969,"path":970,"stem":971},{"title":975,"path":976,"stem":977},"Plan Card","/laioutr-ui/saas/plan-card","3.laioutr-ui/saas/plan-card",{"title":979,"path":980,"stem":981},"Plan Card Slider","/laioutr-ui/saas/plan-card-slider","3.laioutr-ui/saas/plan-card-slider",{"title":983,"path":984,"stem":985},"Plan Comparison Table","/laioutr-ui/saas/plan-comparison-table","3.laioutr-ui/saas/plan-comparison-table",{"title":987,"path":988,"stem":989,"children":990},"Shop","/laioutr-ui/shop","3.laioutr-ui/shop/0.index",[991,992,1020,1024,1028,1032,1036,1092,1096,1100,1104,1108,1112],{"title":987,"path":988,"stem":989},{"title":350,"path":993,"stem":994,"children":995,"page":55},"/laioutr-ui/shop/cart","3.laioutr-ui/shop/cart",[996,1000,1004,1008,1012,1016],{"title":997,"path":998,"stem":999},"Cart Coupon Code Accordion","/laioutr-ui/shop/cart/cart-coupon-code-accordion","3.laioutr-ui/shop/cart/cart-coupon-code-accordion",{"title":1001,"path":1002,"stem":1003},"Cart List Item","/laioutr-ui/shop/cart/cart-list-item","3.laioutr-ui/shop/cart/cart-list-item",{"title":1005,"path":1006,"stem":1007},"Cart Sheet","/laioutr-ui/shop/cart/cart-sheet","3.laioutr-ui/shop/cart/cart-sheet",{"title":1009,"path":1010,"stem":1011},"Cart Summary Box","/laioutr-ui/shop/cart/cart-summary-box","3.laioutr-ui/shop/cart/cart-summary-box",{"title":1013,"path":1014,"stem":1015},"Empty State Cart","/laioutr-ui/shop/cart/empty-state-cart","3.laioutr-ui/shop/cart/empty-state-cart",{"title":1017,"path":1018,"stem":1019},"Free Delivery Progress","/laioutr-ui/shop/cart/free-delivery-progress","3.laioutr-ui/shop/cart/free-delivery-progress",{"title":1021,"path":1022,"stem":1023},"Category Card Grid","/laioutr-ui/shop/category-card-grid","3.laioutr-ui/shop/category-card-grid",{"title":1025,"path":1026,"stem":1027},"Category Card Slider","/laioutr-ui/shop/category-card-slider","3.laioutr-ui/shop/category-card-slider",{"title":1029,"path":1030,"stem":1031},"Filter Bar","/laioutr-ui/shop/filter-bar","3.laioutr-ui/shop/filter-bar",{"title":1033,"path":1034,"stem":1035},"Filter Off Canvas","/laioutr-ui/shop/filter-off-canvas","3.laioutr-ui/shop/filter-off-canvas",{"title":1037,"path":1038,"stem":1039,"children":1040,"page":55},"Product Detail","/laioutr-ui/shop/product-detail","3.laioutr-ui/shop/product-detail",[1041,1045,1049,1053,1057,1061,1064,1068,1072,1076,1080,1084,1088],{"title":1042,"path":1043,"stem":1044},"Add to Cart","/laioutr-ui/shop/product-detail/add-to-cart","3.laioutr-ui/shop/product-detail/add-to-cart",{"title":1046,"path":1047,"stem":1048},"Benefits Box","/laioutr-ui/shop/product-detail/benefits-box","3.laioutr-ui/shop/product-detail/benefits-box",{"title":1050,"path":1051,"stem":1052},"Coupon Box","/laioutr-ui/shop/product-detail/coupon-box","3.laioutr-ui/shop/product-detail/coupon-box",{"title":1054,"path":1055,"stem":1056},"Energy Label","/laioutr-ui/shop/product-detail/energy-label","3.laioutr-ui/shop/product-detail/energy-label",{"title":1058,"path":1059,"stem":1060},"Price Info","/laioutr-ui/shop/product-detail/price-info","3.laioutr-ui/shop/product-detail/price-info",{"title":1037,"path":1062,"stem":1063},"/laioutr-ui/shop/product-detail/product-detail","3.laioutr-ui/shop/product-detail/product-detail",{"title":1065,"path":1066,"stem":1067},"Product Image Gallery","/laioutr-ui/shop/product-detail/product-image-gallery","3.laioutr-ui/shop/product-detail/product-image-gallery",{"title":1069,"path":1070,"stem":1071},"Product Title","/laioutr-ui/shop/product-detail/product-title","3.laioutr-ui/shop/product-detail/product-title",{"title":1073,"path":1074,"stem":1075},"Quantity Discount","/laioutr-ui/shop/product-detail/quantity-discount","3.laioutr-ui/shop/product-detail/quantity-discount",{"title":1077,"path":1078,"stem":1079},"Variant Off Canvas","/laioutr-ui/shop/product-detail/variant-off-canvas","3.laioutr-ui/shop/product-detail/variant-off-canvas",{"title":1081,"path":1082,"stem":1083},"Variant Selector Configurator","/laioutr-ui/shop/product-detail/variant-selector-configurator","3.laioutr-ui/shop/product-detail/variant-selector-configurator",{"title":1085,"path":1086,"stem":1087},"Variant Selector (Multiple)","/laioutr-ui/shop/product-detail/variant-selector-multiple","3.laioutr-ui/shop/product-detail/variant-selector-multiple",{"title":1089,"path":1090,"stem":1091},"Variant Selector Options","/laioutr-ui/shop/product-detail/variant-selector-options","3.laioutr-ui/shop/product-detail/variant-selector-options",{"title":1093,"path":1094,"stem":1095},"Product Listing Grid","/laioutr-ui/shop/product-listing-grid","3.laioutr-ui/shop/product-listing-grid",{"title":1097,"path":1098,"stem":1099},"Product Slider","/laioutr-ui/shop/product-slider","3.laioutr-ui/shop/product-slider",{"title":1101,"path":1102,"stem":1103},"Product Slider Showcase","/laioutr-ui/shop/product-slider-showcase","3.laioutr-ui/shop/product-slider-showcase",{"title":1105,"path":1106,"stem":1107},"Product Tile (Basic)","/laioutr-ui/shop/product-tile-basic","3.laioutr-ui/shop/product-tile-basic",{"title":1109,"path":1110,"stem":1111},"Search Result Hero","/laioutr-ui/shop/search-result-hero","3.laioutr-ui/shop/search-result-hero",{"title":1113,"path":1114,"stem":1115},"Sort Modes","/laioutr-ui/shop/sort-modes","3.laioutr-ui/shop/sort-modes",{"title":1117,"path":1118,"stem":1119,"children":1120},"UI Kit","/laioutr-ui/ui-kit","3.laioutr-ui/ui-kit/0.index",[1121,1122,1282,1306,1327,1344,1381,1490,1519],{"title":1117,"path":1118,"stem":1119},{"title":1123,"path":1124,"stem":1125,"children":1126,"page":55},"General","/laioutr-ui/ui-kit/general","3.laioutr-ui/ui-kit/01.general",[1127,1131,1135,1139,1143,1147,1151,1155,1159,1163,1167,1170,1174,1178,1182,1186,1190,1194,1198,1202,1206,1210,1214,1218,1222,1226,1230,1234,1238,1242,1246,1250,1254,1258,1262,1266,1270,1274,1278],{"title":1128,"path":1129,"stem":1130},"Accordion","/laioutr-ui/ui-kit/general/accordion","3.laioutr-ui/ui-kit/01.general/Accordion",{"title":1132,"path":1133,"stem":1134},"Avatar","/laioutr-ui/ui-kit/general/avatar","3.laioutr-ui/ui-kit/01.general/Avatar",{"title":1136,"path":1137,"stem":1138},"Backdrop","/laioutr-ui/ui-kit/general/backdrop","3.laioutr-ui/ui-kit/01.general/Backdrop",{"title":1140,"path":1141,"stem":1142},"Dropdown Menu","/laioutr-ui/ui-kit/general/dropdownmenu","3.laioutr-ui/ui-kit/01.general/DropdownMenu",{"title":1144,"path":1145,"stem":1146},"Edge Glow","/laioutr-ui/ui-kit/general/edgeglow","3.laioutr-ui/ui-kit/01.general/EdgeGlow",{"title":1148,"path":1149,"stem":1150},"Empty State","/laioutr-ui/ui-kit/general/emptystate","3.laioutr-ui/ui-kit/01.general/EmptyState",{"title":1152,"path":1153,"stem":1154},"Icon","/laioutr-ui/ui-kit/general/icon","3.laioutr-ui/ui-kit/01.general/Icon",{"title":1156,"path":1157,"stem":1158},"Image Contrast Overlay","/laioutr-ui/ui-kit/general/imagecontrastoverlay","3.laioutr-ui/ui-kit/01.general/ImageContrastOverlay",{"title":1160,"path":1161,"stem":1162},"Lightbox","/laioutr-ui/ui-kit/general/lightbox","3.laioutr-ui/ui-kit/01.general/Lightbox",{"title":1164,"path":1165,"stem":1166},"Loading Spinner","/laioutr-ui/ui-kit/general/loadingspinner","3.laioutr-ui/ui-kit/01.general/LoadingSpinner",{"title":387,"path":1168,"stem":1169},"/laioutr-ui/ui-kit/general/media","3.laioutr-ui/ui-kit/01.general/Media",{"title":1171,"path":1172,"stem":1173},"Navigation Bullets","/laioutr-ui/ui-kit/general/navigationbullets","3.laioutr-ui/ui-kit/01.general/NavigationBullets",{"title":1175,"path":1176,"stem":1177},"Placeholder","/laioutr-ui/ui-kit/general/placeholder","3.laioutr-ui/ui-kit/01.general/Placeholder",{"title":1179,"path":1180,"stem":1181},"Progress Bar","/laioutr-ui/ui-kit/general/progressbar","3.laioutr-ui/ui-kit/01.general/ProgressBar",{"title":1183,"path":1184,"stem":1185},"Scrollbar","/laioutr-ui/ui-kit/general/scrollbar","3.laioutr-ui/ui-kit/01.general/Scrollbar",{"title":1187,"path":1188,"stem":1189},"Swatch","/laioutr-ui/ui-kit/general/swatch","3.laioutr-ui/ui-kit/01.general/Swatch",{"title":1191,"path":1192,"stem":1193},"SwiperScrollbar","/laioutr-ui/ui-kit/general/swiperscrollbar","3.laioutr-ui/ui-kit/01.general/SwiperScrollbar",{"title":1195,"path":1196,"stem":1197},"Thumbnail","/laioutr-ui/ui-kit/general/thumbnail","3.laioutr-ui/ui-kit/01.general/Thumbnail",{"title":1199,"path":1200,"stem":1201},"Tooltip","/laioutr-ui/ui-kit/general/tooltip","3.laioutr-ui/ui-kit/01.general/Tooltip",{"title":1203,"path":1204,"stem":1205},"Amount Pill","/laioutr-ui/ui-kit/general/amount-pill","3.laioutr-ui/ui-kit/01.general/amount-pill",{"title":1207,"path":1208,"stem":1209},"Dark Mode Switch","/laioutr-ui/ui-kit/general/dark-mode-switch","3.laioutr-ui/ui-kit/01.general/dark-mode-switch",{"title":1211,"path":1212,"stem":1213},"Language Switcher","/laioutr-ui/ui-kit/general/language-switcher","3.laioutr-ui/ui-kit/01.general/language-switcher",{"title":1215,"path":1216,"stem":1217},"Media Preview","/laioutr-ui/ui-kit/general/media-preview","3.laioutr-ui/ui-kit/01.general/media-preview",{"title":1219,"path":1220,"stem":1221},"Media Stage","/laioutr-ui/ui-kit/general/media-stage","3.laioutr-ui/ui-kit/01.general/media-stage",{"title":1223,"path":1224,"stem":1225},"Nav Link Item","/laioutr-ui/ui-kit/general/nav-link-item","3.laioutr-ui/ui-kit/01.general/nav-link-item",{"title":1227,"path":1228,"stem":1229},"Nav Section Heading","/laioutr-ui/ui-kit/general/nav-section-heading","3.laioutr-ui/ui-kit/01.general/nav-section-heading",{"title":1231,"path":1232,"stem":1233},"OnSurface","/laioutr-ui/ui-kit/general/on-surface","3.laioutr-ui/ui-kit/01.general/on-surface",{"title":1235,"path":1236,"stem":1237},"Opening Hours Weekly Table","/laioutr-ui/ui-kit/general/opening-hours-weekly-table","3.laioutr-ui/ui-kit/01.general/opening-hours-weekly-table",{"title":1239,"path":1240,"stem":1241},"Opening Status","/laioutr-ui/ui-kit/general/opening-status","3.laioutr-ui/ui-kit/01.general/opening-status",{"title":1243,"path":1244,"stem":1245},"Opening Status Detail","/laioutr-ui/ui-kit/general/opening-status-detail","3.laioutr-ui/ui-kit/01.general/opening-status-detail",{"title":1247,"path":1248,"stem":1249},"Opening Status Indicator","/laioutr-ui/ui-kit/general/opening-status-indicator","3.laioutr-ui/ui-kit/01.general/opening-status-indicator",{"title":1251,"path":1252,"stem":1253},"Rating Progress Bar Filter","/laioutr-ui/ui-kit/general/rating-progress-bar-filter","3.laioutr-ui/ui-kit/01.general/rating-progress-bar-filter",{"title":1255,"path":1256,"stem":1257},"Status Message","/laioutr-ui/ui-kit/general/status-message","3.laioutr-ui/ui-kit/01.general/status-message",{"title":1259,"path":1260,"stem":1261},"Stock Info Summary","/laioutr-ui/ui-kit/general/stock-info-summary","3.laioutr-ui/ui-kit/01.general/stock-info-summary",{"title":1263,"path":1264,"stem":1265},"Swatch Chip","/laioutr-ui/ui-kit/general/swatch-chip","3.laioutr-ui/ui-kit/01.general/swatch-chip",{"title":1267,"path":1268,"stem":1269},"Swatch Option","/laioutr-ui/ui-kit/general/swatch-option","3.laioutr-ui/ui-kit/01.general/swatch-option",{"title":1271,"path":1272,"stem":1273},"Swatch Summary","/laioutr-ui/ui-kit/general/swatch-summary","3.laioutr-ui/ui-kit/01.general/swatch-summary",{"title":1275,"path":1276,"stem":1277},"Zoom Level (Segmented)","/laioutr-ui/ui-kit/general/zoom-level-segmented","3.laioutr-ui/ui-kit/01.general/zoom-level-segmented",{"title":1279,"path":1280,"stem":1281},"Zoom Level (Stepper)","/laioutr-ui/ui-kit/general/zoom-level-stepper","3.laioutr-ui/ui-kit/01.general/zoom-level-stepper",{"title":1283,"path":1284,"stem":1285,"children":1286,"page":55},"Typography","/laioutr-ui/ui-kit/typography","3.laioutr-ui/ui-kit/02.typography",[1287,1291,1294,1298,1302],{"title":1288,"path":1289,"stem":1290},"Icon List","/laioutr-ui/ui-kit/typography/iconlist","3.laioutr-ui/ui-kit/02.typography/IconList",{"title":383,"path":1292,"stem":1293},"/laioutr-ui/ui-kit/typography/link","3.laioutr-ui/ui-kit/02.typography/Link",{"title":1295,"path":1296,"stem":1297},"Rich Content","/laioutr-ui/ui-kit/typography/richcontent","3.laioutr-ui/ui-kit/02.typography/RichContent",{"title":1299,"path":1300,"stem":1301},"Text","/laioutr-ui/ui-kit/typography/text","3.laioutr-ui/ui-kit/02.typography/Text",{"title":1303,"path":1304,"stem":1305},"Text Group","/laioutr-ui/ui-kit/typography/text-group","3.laioutr-ui/ui-kit/02.typography/text-group",{"title":1307,"path":1308,"stem":1309,"children":1310,"page":55},"Layout","/laioutr-ui/ui-kit/layout","3.laioutr-ui/ui-kit/03.layout",[1311,1315,1319,1323],{"title":1312,"path":1313,"stem":1314},"Grid Fill","/laioutr-ui/ui-kit/layout/gridfill","3.laioutr-ui/ui-kit/03.layout/GridFill",{"title":1316,"path":1317,"stem":1318},"Grid Masonry","/laioutr-ui/ui-kit/layout/gridmasonry","3.laioutr-ui/ui-kit/03.layout/GridMasonry",{"title":1320,"path":1321,"stem":1322},"Scroll Area","/laioutr-ui/ui-kit/layout/scrollarea","3.laioutr-ui/ui-kit/03.layout/ScrollArea",{"title":1324,"path":1325,"stem":1326},"Separator","/laioutr-ui/ui-kit/layout/separator","3.laioutr-ui/ui-kit/03.layout/Separator",{"title":1328,"path":1329,"stem":1330,"children":1331,"page":55},"Content","/laioutr-ui/ui-kit/content","3.laioutr-ui/ui-kit/04.content",[1332,1336,1340],{"title":1333,"path":1334,"stem":1335},"Card","/laioutr-ui/ui-kit/content/card","3.laioutr-ui/ui-kit/04.content/Card",{"title":1337,"path":1338,"stem":1339},"Description List","/laioutr-ui/ui-kit/content/description-list","3.laioutr-ui/ui-kit/04.content/description-list",{"title":1341,"path":1342,"stem":1343},"Link Tile","/laioutr-ui/ui-kit/content/link-tile","3.laioutr-ui/ui-kit/04.content/link-tile",{"title":1345,"path":1346,"stem":1347,"children":1348,"page":55},"Surfaces","/laioutr-ui/ui-kit/surfaces","3.laioutr-ui/ui-kit/05.surfaces",[1349,1353,1357,1361,1365,1369,1373,1377],{"title":1350,"path":1351,"stem":1352},"Alert Dialog","/laioutr-ui/ui-kit/surfaces/alertdialog","3.laioutr-ui/ui-kit/05.surfaces/AlertDialog",{"title":1354,"path":1355,"stem":1356},"Popover","/laioutr-ui/ui-kit/surfaces/popover","3.laioutr-ui/ui-kit/05.surfaces/Popover",{"title":1358,"path":1359,"stem":1360},"Sheet","/laioutr-ui/ui-kit/surfaces/sheet","3.laioutr-ui/ui-kit/05.surfaces/Sheet",{"title":1362,"path":1363,"stem":1364},"Tabs","/laioutr-ui/ui-kit/surfaces/tabs","3.laioutr-ui/ui-kit/05.surfaces/Tabs",{"title":1366,"path":1367,"stem":1368},"Toast","/laioutr-ui/ui-kit/surfaces/toast","3.laioutr-ui/ui-kit/05.surfaces/Toast",{"title":1370,"path":1371,"stem":1372},"Toaster","/laioutr-ui/ui-kit/surfaces/toaster","3.laioutr-ui/ui-kit/05.surfaces/Toaster",{"title":1374,"path":1375,"stem":1376},"Context Menu","/laioutr-ui/ui-kit/surfaces/context-menu","3.laioutr-ui/ui-kit/05.surfaces/context-menu",{"title":1378,"path":1379,"stem":1380},"Navigation Menu","/laioutr-ui/ui-kit/surfaces/navigation-menu","3.laioutr-ui/ui-kit/05.surfaces/navigation-menu",{"title":1382,"path":1383,"stem":1384,"children":1385,"page":55},"Form","/laioutr-ui/ui-kit/form","3.laioutr-ui/ui-kit/06.form",[1386,1390,1394,1398,1402,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1454,1458,1462,1466,1470,1474,1478,1482,1486],{"title":1387,"path":1388,"stem":1389},"Button","/laioutr-ui/ui-kit/form/button","3.laioutr-ui/ui-kit/06.form/Button",{"title":1391,"path":1392,"stem":1393},"Checkbox","/laioutr-ui/ui-kit/form/checkbox","3.laioutr-ui/ui-kit/06.form/Checkbox",{"title":1395,"path":1396,"stem":1397},"Field","/laioutr-ui/ui-kit/form/field","3.laioutr-ui/ui-kit/06.form/Field",{"title":1399,"path":1400,"stem":1401},"Input","/laioutr-ui/ui-kit/form/input","3.laioutr-ui/ui-kit/06.form/Input",{"title":1403,"path":1404,"stem":1405},"Label","/laioutr-ui/ui-kit/form/label","3.laioutr-ui/ui-kit/06.form/Label",{"title":1407,"path":1408,"stem":1409},"Load More","/laioutr-ui/ui-kit/form/loadmore","3.laioutr-ui/ui-kit/06.form/LoadMore",{"title":1411,"path":1412,"stem":1413},"Pagination","/laioutr-ui/ui-kit/form/pagination","3.laioutr-ui/ui-kit/06.form/Pagination",{"title":1415,"path":1416,"stem":1417},"Quantity Picker","/laioutr-ui/ui-kit/form/quantitypicker","3.laioutr-ui/ui-kit/06.form/QuantityPicker",{"title":1419,"path":1420,"stem":1421},"Select","/laioutr-ui/ui-kit/form/select","3.laioutr-ui/ui-kit/06.form/Select",{"title":1423,"path":1424,"stem":1425},"Switch","/laioutr-ui/ui-kit/form/switch","3.laioutr-ui/ui-kit/06.form/Switch",{"title":1427,"path":1428,"stem":1429},"Highlight Toggle","/laioutr-ui/ui-kit/form/highlight-toggle","3.laioutr-ui/ui-kit/06.form/highlight-toggle",{"title":1431,"path":1432,"stem":1433},"Icon Button","/laioutr-ui/ui-kit/form/icon-button","3.laioutr-ui/ui-kit/06.form/icon-button",{"title":1435,"path":1436,"stem":1437},"Input Autocomplete","/laioutr-ui/ui-kit/form/input-autocomplete","3.laioutr-ui/ui-kit/06.form/input-autocomplete",{"title":1439,"path":1440,"stem":1441},"Input Checkbox","/laioutr-ui/ui-kit/form/input-checkbox","3.laioutr-ui/ui-kit/06.form/input-checkbox",{"title":1443,"path":1444,"stem":1445},"Input Combobox","/laioutr-ui/ui-kit/form/input-combobox","3.laioutr-ui/ui-kit/06.form/input-combobox",{"title":1447,"path":1448,"stem":1449},"Input Group","/laioutr-ui/ui-kit/form/input-group","3.laioutr-ui/ui-kit/06.form/input-group",{"title":1451,"path":1452,"stem":1453},"Input Password","/laioutr-ui/ui-kit/form/input-password","3.laioutr-ui/ui-kit/06.form/input-password",{"title":1455,"path":1456,"stem":1457},"Input Pin","/laioutr-ui/ui-kit/form/input-pin","3.laioutr-ui/ui-kit/06.form/input-pin",{"title":1459,"path":1460,"stem":1461},"Input Radio","/laioutr-ui/ui-kit/form/input-radio","3.laioutr-ui/ui-kit/06.form/input-radio",{"title":1463,"path":1464,"stem":1465},"Input Rating","/laioutr-ui/ui-kit/form/input-rating","3.laioutr-ui/ui-kit/06.form/input-rating",{"title":1467,"path":1468,"stem":1469},"Input Search","/laioutr-ui/ui-kit/form/input-search","3.laioutr-ui/ui-kit/06.form/input-search",{"title":1471,"path":1472,"stem":1473},"Input Slider","/laioutr-ui/ui-kit/form/input-slider","3.laioutr-ui/ui-kit/06.form/input-slider",{"title":1475,"path":1476,"stem":1477},"Listbox","/laioutr-ui/ui-kit/form/listbox","3.laioutr-ui/ui-kit/06.form/listbox",{"title":1479,"path":1480,"stem":1481},"Option Tile (Image)","/laioutr-ui/ui-kit/form/option-tile-image","3.laioutr-ui/ui-kit/06.form/option-tile-image",{"title":1483,"path":1484,"stem":1485},"Option Tile (Text)","/laioutr-ui/ui-kit/form/option-tile-text","3.laioutr-ui/ui-kit/06.form/option-tile-text",{"title":1487,"path":1488,"stem":1489},"Variant Selection Card","/laioutr-ui/ui-kit/form/variant-selection-card","3.laioutr-ui/ui-kit/06.form/variant-selection-card",{"title":1491,"path":1492,"stem":1493,"children":1494,"page":55},"Indicators","/laioutr-ui/ui-kit/indicators","3.laioutr-ui/ui-kit/07.indicators",[1495,1499,1503,1507,1511,1515],{"title":1496,"path":1497,"stem":1498},"Badge","/laioutr-ui/ui-kit/indicators/badge","3.laioutr-ui/ui-kit/07.indicators/Badge",{"title":1500,"path":1501,"stem":1502},"Caption Flag","/laioutr-ui/ui-kit/indicators/captionflag","3.laioutr-ui/ui-kit/07.indicators/CaptionFlag",{"title":1504,"path":1505,"stem":1506},"Product Tile Flag","/laioutr-ui/ui-kit/indicators/producttileflag","3.laioutr-ui/ui-kit/07.indicators/ProductTileFlag",{"title":1508,"path":1509,"stem":1510},"Rating Summary","/laioutr-ui/ui-kit/indicators/ratingsummary","3.laioutr-ui/ui-kit/07.indicators/RatingSummary",{"title":1512,"path":1513,"stem":1514},"Stars Rating","/laioutr-ui/ui-kit/indicators/starsrating","3.laioutr-ui/ui-kit/07.indicators/StarsRating",{"title":1516,"path":1517,"stem":1518},"Badge Promotion","/laioutr-ui/ui-kit/indicators/badge-promotion","3.laioutr-ui/ui-kit/07.indicators/badge-promotion",{"title":1520,"path":1521,"stem":1522,"children":1523,"page":55},"Utility Components","/laioutr-ui/ui-kit/utility-components","3.laioutr-ui/ui-kit/08.utility-components",[1524,1528],{"title":1525,"path":1526,"stem":1527},"Highlighted Text","/laioutr-ui/ui-kit/utility-components/highlighted-text","3.laioutr-ui/ui-kit/08.utility-components/highlighted-text",{"title":1529,"path":1530,"stem":1531},"Sizer","/laioutr-ui/ui-kit/utility-components/sizer","3.laioutr-ui/ui-kit/08.utility-components/sizer",{"title":1533,"path":1534,"stem":1535,"children":1536},"Hosting","/hosting","4.hosting/0.index",[1537,1538,1544,1574,1592],{"title":1533,"path":1534,"stem":1535},{"title":1539,"path":1540,"stem":1541,"children":1542},"Laioutr Cloud","/hosting/laioutr-cloud","4.hosting/0.laioutr-cloud/0.index",[1543],{"title":1539,"path":1540,"stem":1541},{"title":1545,"path":1546,"stem":1547,"children":1548},"Hyperscaler","/hosting/hyperscaler","4.hosting/1.hyperscaler/0.index",[1549,1550,1554,1558,1562,1566,1570],{"title":1545,"path":1546,"stem":1547},{"title":1551,"path":1552,"stem":1553},"Akamai Adapter","/hosting/hyperscaler/akamai-adapter","4.hosting/1.hyperscaler/akamai-adapter",{"title":1555,"path":1556,"stem":1557},"AWS Adapter","/hosting/hyperscaler/aws-adapter","4.hosting/1.hyperscaler/aws-adapter",{"title":1559,"path":1560,"stem":1561},"Azure Adapter","/hosting/hyperscaler/azure-adapter","4.hosting/1.hyperscaler/azure-adapter",{"title":1563,"path":1564,"stem":1565},"Google Adapter","/hosting/hyperscaler/google-adapter","4.hosting/1.hyperscaler/google-adapter",{"title":1567,"path":1568,"stem":1569},"Netlify Adapter","/hosting/hyperscaler/netlify-adapter","4.hosting/1.hyperscaler/netlify-adapter",{"title":1571,"path":1572,"stem":1573},"Vercel Adapter","/hosting/hyperscaler/vercel-adapter","4.hosting/1.hyperscaler/vercel-adapter",{"title":1575,"path":1576,"stem":1577,"children":1578},"Native Hosting","/hosting/native-hosting-providers","4.hosting/2.native-hosting-providers/0.index",[1579,1580,1584,1588],{"title":1575,"path":1576,"stem":1577},{"title":1581,"path":1582,"stem":1583},"maxcluster","/hosting/native-hosting-providers/maxcluster","4.hosting/2.native-hosting-providers/maxcluster",{"title":1585,"path":1586,"stem":1587},"profihost","/hosting/native-hosting-providers/profihost","4.hosting/2.native-hosting-providers/profihost",{"title":1589,"path":1590,"stem":1591},"ScaleCommerce","/hosting/native-hosting-providers/scale-commerce","4.hosting/2.native-hosting-providers/scale-commerce",{"title":1593,"path":1594,"stem":1595,"children":1596},"Bring Your Own Server (BYOS)","/hosting/bring-your-own-server-byos","4.hosting/3.bring-your-own-server-byos/0.index",[1597,1598,1602,1606,1610,1614,1618],{"title":1593,"path":1594,"stem":1595},{"title":1599,"path":1600,"stem":1601},"BYOS Agent","/hosting/bring-your-own-server-byos/byos-agent","4.hosting/3.bring-your-own-server-byos/byos-agent",{"title":1603,"path":1604,"stem":1605},"Changelog","/hosting/bring-your-own-server-byos/changelog","4.hosting/3.bring-your-own-server-byos/changelog",{"title":1607,"path":1608,"stem":1609},"DevOps Components","/hosting/bring-your-own-server-byos/devops","4.hosting/3.bring-your-own-server-byos/devops",{"title":1611,"path":1612,"stem":1613},"Infrastructure Requirements","/hosting/bring-your-own-server-byos/infrastructure","4.hosting/3.bring-your-own-server-byos/infrastructure",{"title":1615,"path":1616,"stem":1617},"Software Requirements","/hosting/bring-your-own-server-byos/software","4.hosting/3.bring-your-own-server-byos/software",{"title":1619,"path":1620,"stem":1621},"Webhook Configuration","/hosting/bring-your-own-server-byos/webhook-config","4.hosting/3.bring-your-own-server-byos/webhook-config",{"title":1623,"path":1624,"stem":1625,"children":1626},"Checkout","/checkout","5.Checkout/0.index",[1627],{"title":1623,"path":1624,"stem":1625},{"title":1629,"path":1630,"stem":1631,"children":1632},"Larry AI","/larry-ai","6.Larry-AI/0.index",[1633],{"title":1629,"path":1630,"stem":1631},{"title":671,"path":1635,"stem":1636,"children":1637},"/figma-kit","7.Figma Kit/0.index",[1638,1639,1655],{"title":671,"path":1635,"stem":1636},{"title":121,"path":1640,"stem":1641,"children":1642,"page":55},"/figma-kit/introduction","7.Figma Kit/1.Introduction",[1643,1647,1651],{"title":1644,"path":1645,"stem":1646},"How to Start","/figma-kit/introduction/howtostart","7.Figma Kit/1.Introduction/0.howtostart",{"title":1648,"path":1649,"stem":1650},"Figma Variables","/figma-kit/introduction/figma-variables","7.Figma Kit/1.Introduction/figma-variables",{"title":1652,"path":1653,"stem":1654},"Library Connections","/figma-kit/introduction/library-connections","7.Figma Kit/1.Introduction/library-connections",{"title":1656,"path":1657,"stem":1658,"children":1659,"page":55},"Kits","/figma-kit/kits","7.Figma Kit/Kits",[1660,1663,1666,1669,1673,1676,1680,1684,1687,1690],{"title":686,"path":1661,"stem":1662},"/figma-kit/kits/b2b","7.Figma Kit/Kits/b2b",{"title":692,"path":1664,"stem":1665},"/figma-kit/kits/booking","7.Figma Kit/Kits/booking",{"title":698,"path":1667,"stem":1668},"/figma-kit/kits/cms","7.Figma Kit/Kits/cms",{"title":1670,"path":1671,"stem":1672},"Inpage Navigation","/figma-kit/kits/inpage-navigation","7.Figma Kit/Kits/inpage-navigation",{"title":903,"path":1674,"stem":1675},"/figma-kit/kits/marketplace","7.Figma Kit/Kits/marketplace",{"title":1677,"path":1678,"stem":1679},"Retail & Multichannel","/figma-kit/kits/multichannel","7.Figma Kit/Kits/multichannel",{"title":1681,"path":1682,"stem":1683},"Navigation","/figma-kit/kits/navigation","7.Figma Kit/Kits/navigation",{"title":969,"path":1685,"stem":1686},"/figma-kit/kits/saas","7.Figma Kit/Kits/saas",{"title":987,"path":1688,"stem":1689},"/figma-kit/kits/shop","7.Figma Kit/Kits/shop",{"title":1117,"path":1691,"stem":1692},"/figma-kit/kits/ui-kit","7.Figma Kit/Kits/ui-kit",{"title":1694,"path":1695,"stem":1696,"children":1697},"Cockpit","/cockpit","8.Cockpit/0.index",[1698,1699,1729,1746,1763],{"title":1694,"path":1695,"stem":1696},{"title":154,"path":1700,"stem":1701,"children":1702,"page":55},"/cockpit/features","8.Cockpit/1.Features",[1703,1706,1710,1714,1718,1721,1725],{"title":464,"path":1704,"stem":1705},"/cockpit/features/apps","8.Cockpit/1.Features/apps",{"title":1707,"path":1708,"stem":1709},"Content (Collections)","/cockpit/features/content-collections","8.Cockpit/1.Features/content-collections",{"title":1711,"path":1712,"stem":1713},"Deployments","/cockpit/features/deployments","8.Cockpit/1.Features/deployments",{"title":1715,"path":1716,"stem":1717},"Markets","/cockpit/features/markets","8.Cockpit/1.Features/markets",{"title":196,"path":1719,"stem":1720},"/cockpit/features/redirects","8.Cockpit/1.Features/redirects",{"title":1722,"path":1723,"stem":1724},"Studio","/cockpit/features/studio","8.Cockpit/1.Features/studio",{"title":1726,"path":1727,"stem":1728},"Translations","/cockpit/features/translations","8.Cockpit/1.Features/translations",{"title":1730,"path":1731,"stem":1732,"children":1733,"page":55},"Project Settings","/cockpit/project-settings","8.Cockpit/2.Project-Settings",[1734,1738,1742],{"title":1735,"path":1736,"stem":1737},"Delete a project","/cockpit/project-settings/delete-project","8.Cockpit/2.Project-Settings/delete-project",{"title":1739,"path":1740,"stem":1741},"NPM","/cockpit/project-settings/npm","8.Cockpit/2.Project-Settings/npm",{"title":1743,"path":1744,"stem":1745},"Project secret key","/cockpit/project-settings/project-secret-key","8.Cockpit/2.Project-Settings/project-secret-key",{"title":1747,"path":1748,"stem":1749,"children":1750,"page":55},"Account Settings","/cockpit/account-settings","8.Cockpit/3.Account-Settings",[1751,1755,1759],{"title":1752,"path":1753,"stem":1754},"Notifications","/cockpit/account-settings/notifications","8.Cockpit/3.Account-Settings/notifications",{"title":1756,"path":1757,"stem":1758},"Preferences","/cockpit/account-settings/preferences","8.Cockpit/3.Account-Settings/preferences",{"title":1760,"path":1761,"stem":1762},"Security","/cockpit/account-settings/security","8.Cockpit/3.Account-Settings/security",{"title":1764,"path":1765,"stem":1766,"children":1767,"page":55},"Organisation Settings","/cockpit/organisation-settings","8.Cockpit/4.Organisation-Settings",[1768,1772,1776,1780,1784,1788],{"title":1769,"path":1770,"stem":1771},"API keys","/cockpit/organisation-settings/api-keys","8.Cockpit/4.Organisation-Settings/api-keys",{"title":1773,"path":1774,"stem":1775},"Billing","/cockpit/organisation-settings/billing","8.Cockpit/4.Organisation-Settings/billing",{"title":1777,"path":1778,"stem":1779},"General settings","/cockpit/organisation-settings/general-settings","8.Cockpit/4.Organisation-Settings/general-settings",{"title":1781,"path":1782,"stem":1783},"Members","/cockpit/organisation-settings/members","8.Cockpit/4.Organisation-Settings/members",{"title":1785,"path":1786,"stem":1787},"Projects","/cockpit/organisation-settings/projects","8.Cockpit/4.Organisation-Settings/projects",{"title":1789,"path":1790,"stem":1791},"Roles","/cockpit/organisation-settings/roles","8.Cockpit/4.Organisation-Settings/roles",{"title":1793,"path":1794,"stem":1795,"children":1796},"Offering","/offering","9.Offering/0.index",[1797,1798,1830,1843,1856,1890,1899],{"title":1793,"path":1794,"stem":1795},{"title":1799,"path":1800,"stem":1801,"children":1802},"Products","/offering/products","9.Offering/1.Products/0.index",[1803,1804,1809,1814,1819,1825],{"title":1799,"path":1800,"stem":1801},{"title":137,"path":1805,"stem":1806,"children":1807},"/offering/products/frontend","9.Offering/1.Products/1.Frontend/0.index",[1808],{"title":137,"path":1805,"stem":1806},{"title":1694,"path":1810,"stem":1811,"children":1812},"/offering/products/cockpit","9.Offering/1.Products/2.Cockpit/0.index",[1813],{"title":1694,"path":1810,"stem":1811},{"title":1623,"path":1815,"stem":1816,"children":1817},"/offering/products/checkout","9.Offering/1.Products/3.Checkout/0.index",[1818],{"title":1623,"path":1815,"stem":1816},{"title":1820,"path":1821,"stem":1822,"children":1823},"Cloud","/offering/products/cloud","9.Offering/1.Products/4.cloud/0.index",[1824],{"title":1820,"path":1821,"stem":1822},{"title":1629,"path":1826,"stem":1827,"children":1828},"/offering/products/larry-ai","9.Offering/1.Products/5.larry-ai/0.index",[1829],{"title":1629,"path":1826,"stem":1827},{"title":1831,"path":1832,"stem":1833,"children":1834,"page":55},"Service Level Agreement","/offering/service-level-agreement","9.Offering/2.service-level-agreement",[1835,1839],{"title":1836,"path":1837,"stem":1838},"Standard Service Level Agreement Composable Frontend","/offering/service-level-agreement/standard-service-level-agreement","9.Offering/2.service-level-agreement/1.standard-service-level-agreement",{"title":1840,"path":1841,"stem":1842},"Backups","/offering/service-level-agreement/backups","9.Offering/2.service-level-agreement/backups",{"title":1844,"path":1845,"stem":1846,"children":1847,"page":55},"Customer Support","/offering/customer-support","9.Offering/3.customer-support",[1848,1852],{"title":1849,"path":1850,"stem":1851},"Standard Customer Support","/offering/customer-support/standard-customer-support","9.Offering/3.customer-support/1.standard-customer-support",{"title":1853,"path":1854,"stem":1855},"Customer Support Severity Levels of Laioutr products","/offering/customer-support/maximum-serverity-levels","9.Offering/3.customer-support/maximum-serverity-levels",{"title":1857,"path":1858,"stem":1859,"children":1860},"Trust Center","/offering/trust-center","9.Offering/4.trust-center/0.index",[1861,1862,1866,1870,1874,1878,1882,1886],{"title":1857,"path":1858,"stem":1859},{"title":1863,"path":1864,"stem":1865},"Data Protection (GDPR)","/offering/trust-center/data-protection","9.Offering/4.trust-center/1.data-protection",{"title":1867,"path":1868,"stem":1869},"Subprocessors","/offering/trust-center/subprocessors","9.Offering/4.trust-center/2.subprocessors",{"title":1871,"path":1872,"stem":1873},"Infrastructure & Hosting","/offering/trust-center/infrastructure","9.Offering/4.trust-center/3.infrastructure",{"title":1875,"path":1876,"stem":1877},"Security Measures","/offering/trust-center/security-measures","9.Offering/4.trust-center/4.security-measures",{"title":1879,"path":1880,"stem":1881},"Incident Response","/offering/trust-center/incident-response","9.Offering/4.trust-center/5.incident-response",{"title":1883,"path":1884,"stem":1885},"Compliance & Certifications","/offering/trust-center/compliance","9.Offering/4.trust-center/6.compliance",{"title":1887,"path":1888,"stem":1889},"FAQ","/offering/trust-center/faq","9.Offering/4.trust-center/7.faq",{"title":1891,"path":1892,"stem":1893,"children":1894,"page":55},"Policies","/offering/policies","9.Offering/5.policies",[1895],{"title":1896,"path":1897,"stem":1898},"Fair usage policy","/offering/policies/fair-usage-policy","9.Offering/5.policies/fair-usage-policy",{"title":1900,"path":1901,"stem":1902,"children":1903},"Academy","/offering/academy","9.Offering/6.academy/0.index",[1904],{"title":1900,"path":1901,"stem":1902},{"id":1906,"title":518,"aliases":1907,"body":1908,"changelogKeys":1907,"description":4332,"extension":4333,"links":1907,"meta":4334,"navigation":2081,"path":519,"playground":1907,"seo":4335,"sitemap":4337,"stem":520,"__hash__":4340},"docs/2.Apps/app-development/consent-adapters.md",null,{"type":1909,"value":1910,"toc":4323},"minimark",[1911,1916,1942,1953,1960,1997,2009,2013,2023,2338,2416,2422,2426,2449,2453,2460,2682,2697,2700,4131,4135,4138,4189,4206,4210,4213,4274,4281,4285,4319],[1912,1913,1915],"h2",{"id":1914},"what-you-are-building","What you are building",[1917,1918,1919,1920,1924,1925,1929,1930,1933,1934,1937,1938,1941],"p",{},"A consent adapter is a small class that bridges a concrete CMP (OneTrust, CookieYes, an in-house solution) and Laioutr's ",[1921,1922,1923],"a",{"href":161},"consent store",". The store calls ",[1926,1927,1928],"code",{},"init()"," to load the CMP, asks ",[1926,1931,1932],{},"getConsentState()"," for the current categories, subscribes to ",[1926,1935,1936],{},"onConsentChange()"," for live updates, and forwards user actions like \"open the banner\" through ",[1926,1939,1940],{},"showConsentOverlay()",".",[1917,1943,1944,1945,1948,1949,1952],{},"If your CMP is already covered by ",[1926,1946,1947],{},"@laioutr-app/cookiebot"," or ",[1926,1950,1951],{},"@laioutr-app/ccm19",", use those instead. Build your own only when no existing app fits.",[1917,1954,1955,1956,1959],{},"A consent adapter app is a normal Laioutr app (a Nuxt module that exposes its options on ",[1926,1957,1958],{},"runtimeConfig.public"," and registers a client plugin) plus two adapter-specific pieces:",[1961,1962,1963,1979],"ol",{},[1964,1965,1966,1967,1971,1972,1975,1976,1941],"li",{},"An ",[1968,1969,1970],"strong",{},"adapter class"," that implements ",[1926,1973,1974],{},"ConsentAdapter"," from ",[1926,1977,1978],{},"#frontend/consent",[1964,1980,1981,1982,1985,1986,1989,1990,1993,1994,1941],{},"A ",[1968,1983,1984],{},"client plugin"," that instantiates the adapter and registers it with ",[1926,1987,1988],{},"useConsentStore()"," via ",[1926,1991,1992],{},"registerAdapter"," + ",[1926,1995,1996],{},"activateAdapter",[1917,1998,1999,2000,2002,2003,2005,2006,2008],{},"For the module skeleton, options handling, and how ",[1926,2001,1958],{}," flows into your plugin, scaffold from the ",[1921,2004,502],{"href":503}," and follow ",[1921,2007,498],{"href":499},". This guide focuses on the consent-specific contract and walks through one worked example against a fictional CMP API.",[1912,2010,2012],{"id":2011},"the-consentadapter-contract","The ConsentAdapter contract",[1917,2014,2015,2016,2019,2020,2022],{},"The contract is exported from ",[1926,2017,2018],{},"@laioutr-core/frontend-core"," and re-exported under the ",[1926,2021,1978],{}," alias:",[2024,2025,2030],"pre",{"className":2026,"code":2027,"language":2028,"meta":2029,"style":2029},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { ConsentAdapter, ConsentManagementState } from '#frontend/consent';\n\nexport interface ConsentAdapter {\n  readonly name: string;\n  readonly isActive: boolean;\n  init(): Promise\u003Cvoid> | void;\n  getConsentState(): Promise\u003CPartial\u003CConsentManagementState>> | Partial\u003CConsentManagementState>;\n  showConsentOverlay(): Promise\u003Cvoid> | void;\n  renewConsent(): Promise\u003Cvoid> | void;\n  hasCategoryConsent(category: keyof ConsentManagementState): boolean;\n  onConsentChange(callback: (consent: Partial\u003CConsentManagementState>) => void): void;\n  destroy?(): Promise\u003Cvoid> | void;\n}\n","ts","",[1926,2031,2032,2076,2083,2099,2117,2132,2161,2196,2218,2240,2267,2309,2332],{"__ignoreMap":2029},[2033,2034,2037,2041,2044,2048,2052,2055,2058,2061,2064,2067,2070,2073],"span",{"class":2035,"line":2036},"line",1,[2033,2038,2040],{"class":2039},"s7zQu","import",[2033,2042,2043],{"class":2039}," type",[2033,2045,2047],{"class":2046},"sMK4o"," {",[2033,2049,2051],{"class":2050},"sTEyZ"," ConsentAdapter",[2033,2053,2054],{"class":2046},",",[2033,2056,2057],{"class":2050}," ConsentManagementState",[2033,2059,2060],{"class":2046}," }",[2033,2062,2063],{"class":2039}," from",[2033,2065,2066],{"class":2046}," '",[2033,2068,1978],{"class":2069},"sfazB",[2033,2071,2072],{"class":2046},"'",[2033,2074,2075],{"class":2046},";\n",[2033,2077,2079],{"class":2035,"line":2078},2,[2033,2080,2082],{"emptyLinePlaceholder":2081},true,"\n",[2033,2084,2086,2089,2093,2096],{"class":2035,"line":2085},3,[2033,2087,2088],{"class":2039},"export",[2033,2090,2092],{"class":2091},"spNyl"," interface",[2033,2094,2051],{"class":2095},"sBMFI",[2033,2097,2098],{"class":2046}," {\n",[2033,2100,2102,2105,2109,2112,2115],{"class":2035,"line":2101},4,[2033,2103,2104],{"class":2091},"  readonly",[2033,2106,2108],{"class":2107},"swJcz"," name",[2033,2110,2111],{"class":2046},":",[2033,2113,2114],{"class":2095}," string",[2033,2116,2075],{"class":2046},[2033,2118,2120,2122,2125,2127,2130],{"class":2035,"line":2119},5,[2033,2121,2104],{"class":2091},[2033,2123,2124],{"class":2107}," isActive",[2033,2126,2111],{"class":2046},[2033,2128,2129],{"class":2095}," boolean",[2033,2131,2075],{"class":2046},[2033,2133,2135,2138,2141,2144,2147,2150,2153,2156,2159],{"class":2035,"line":2134},6,[2033,2136,2137],{"class":2107},"  init",[2033,2139,2140],{"class":2046},"():",[2033,2142,2143],{"class":2095}," Promise",[2033,2145,2146],{"class":2046},"\u003C",[2033,2148,2149],{"class":2095},"void",[2033,2151,2152],{"class":2046},">",[2033,2154,2155],{"class":2046}," |",[2033,2157,2158],{"class":2095}," void",[2033,2160,2075],{"class":2046},[2033,2162,2164,2167,2169,2171,2173,2176,2178,2181,2184,2186,2189,2191,2193],{"class":2035,"line":2163},7,[2033,2165,2166],{"class":2107},"  getConsentState",[2033,2168,2140],{"class":2046},[2033,2170,2143],{"class":2095},[2033,2172,2146],{"class":2046},[2033,2174,2175],{"class":2095},"Partial",[2033,2177,2146],{"class":2046},[2033,2179,2180],{"class":2095},"ConsentManagementState",[2033,2182,2183],{"class":2046},">>",[2033,2185,2155],{"class":2046},[2033,2187,2188],{"class":2095}," Partial",[2033,2190,2146],{"class":2046},[2033,2192,2180],{"class":2095},[2033,2194,2195],{"class":2046},">;\n",[2033,2197,2199,2202,2204,2206,2208,2210,2212,2214,2216],{"class":2035,"line":2198},8,[2033,2200,2201],{"class":2107},"  showConsentOverlay",[2033,2203,2140],{"class":2046},[2033,2205,2143],{"class":2095},[2033,2207,2146],{"class":2046},[2033,2209,2149],{"class":2095},[2033,2211,2152],{"class":2046},[2033,2213,2155],{"class":2046},[2033,2215,2158],{"class":2095},[2033,2217,2075],{"class":2046},[2033,2219,2221,2224,2226,2228,2230,2232,2234,2236,2238],{"class":2035,"line":2220},9,[2033,2222,2223],{"class":2107},"  renewConsent",[2033,2225,2140],{"class":2046},[2033,2227,2143],{"class":2095},[2033,2229,2146],{"class":2046},[2033,2231,2149],{"class":2095},[2033,2233,2152],{"class":2046},[2033,2235,2155],{"class":2046},[2033,2237,2158],{"class":2095},[2033,2239,2075],{"class":2046},[2033,2241,2243,2246,2249,2253,2255,2258,2260,2263,2265],{"class":2035,"line":2242},10,[2033,2244,2245],{"class":2107},"  hasCategoryConsent",[2033,2247,2248],{"class":2046},"(",[2033,2250,2252],{"class":2251},"sHdIc","category",[2033,2254,2111],{"class":2046},[2033,2256,2257],{"class":2046}," keyof",[2033,2259,2057],{"class":2095},[2033,2261,2262],{"class":2046},"):",[2033,2264,2129],{"class":2095},[2033,2266,2075],{"class":2046},[2033,2268,2270,2273,2275,2279,2281,2284,2287,2289,2291,2293,2295,2298,2301,2303,2305,2307],{"class":2035,"line":2269},11,[2033,2271,2272],{"class":2107},"  onConsentChange",[2033,2274,2248],{"class":2046},[2033,2276,2278],{"class":2277},"s2Zo4","callback",[2033,2280,2111],{"class":2046},[2033,2282,2283],{"class":2046}," (",[2033,2285,2286],{"class":2251},"consent",[2033,2288,2111],{"class":2046},[2033,2290,2188],{"class":2095},[2033,2292,2146],{"class":2046},[2033,2294,2180],{"class":2095},[2033,2296,2297],{"class":2046},">)",[2033,2299,2300],{"class":2091}," =>",[2033,2302,2158],{"class":2095},[2033,2304,2262],{"class":2046},[2033,2306,2158],{"class":2095},[2033,2308,2075],{"class":2046},[2033,2310,2312,2315,2318,2320,2322,2324,2326,2328,2330],{"class":2035,"line":2311},12,[2033,2313,2314],{"class":2107},"  destroy",[2033,2316,2317],{"class":2046},"?():",[2033,2319,2143],{"class":2095},[2033,2321,2146],{"class":2046},[2033,2323,2149],{"class":2095},[2033,2325,2152],{"class":2046},[2033,2327,2155],{"class":2046},[2033,2329,2158],{"class":2095},[2033,2331,2075],{"class":2046},[2033,2333,2335],{"class":2035,"line":2334},13,[2033,2336,2337],{"class":2046},"}\n",[2339,2340,2341,2364,2375,2383,2391,2394,2398,2405,2412],"field-group",{},[2342,2343,2347,2348,2351,2352,2351,2355,2358,2359,2361,2362,1941],"field",{"name":2344,"type":2345,":required":2346},"name","string","true","Stable identifier for the adapter (e.g. ",[1926,2349,2350],{},"'cookiebot'",", ",[1926,2353,2354],{},"'ccm19'",[1926,2356,2357],{},"'onetrust'","). The store uses it as the key in ",[1926,2360,1992],{}," / ",[1926,2363,1996],{},[2342,2365,2368,2369,2371,2372,2374],{"name":2366,"type":2367,":required":2346},"isActive","boolean","Readonly flag the adapter sets to ",[1926,2370,2346],{}," after ",[1926,2373,1928],{}," finishes successfully. Useful for diagnostics; the store does not depend on it.",[2342,2376,2378,2379,2382],{"name":1928,"type":2377,":required":2346},"() => Promise\u003Cvoid> | void","Loads the CMP script (typically via ",[1926,2380,2381],{},"useHead","), wires up cookie or event listeners, and prepares the adapter to report consent. Throw if required configuration is missing; the store will catch the error and deactivate.",[2342,2384,2386,2387,2390],{"name":1932,"type":2385,":required":2346},"() => Promise\u003CPartial\u003CConsentManagementState>> | Partial\u003CConsentManagementState>","Returns the current consent as a partial of the five-category shape. Called once on activation (the result is merged into ",[1926,2388,2389],{},"state","). Sync if you can read from a cookie; async only when you genuinely need to wait.",[2342,2392,2393],{"name":1940,"type":2377,":required":2346},"Opens the CMP's main banner. Wired to \"Cookie preferences\" links in the user's app.",[2342,2395,2397],{"name":2396,"type":2377,":required":2346},"renewConsent()","Opens the granular preferences dialog so the user can revisit individual categories. Some CMPs use the same UI for both; that is fine.",[2342,2399,2402,2403,1941],{"name":2400,"type":2401,":required":2346},"hasCategoryConsent(category)","(category: keyof ConsentManagementState) => boolean","Synchronous check for one category. Almost always derived from ",[1926,2404,1932],{},[2342,2406,2409,2410,1941],{"name":2407,"type":2408,":required":2346},"onConsentChange(callback)","(callback: (consent: Partial\u003CConsentManagementState>) => void) => void","Registers a callback fired whenever the CMP reports a consent change. The store calls this once during activation; you must invoke every registered callback when the CMP fires its own change event. The store merges the callback's argument into ",[1926,2411,2389],{},[2342,2413,2415],{"name":2414,"type":2377},"destroy()","Optional. Tear down listeners and globals when the store deactivates the adapter. Lets you clean up timers, event handlers, or injected scripts.",[1917,2417,1981,2418,2421],{},[1926,2419,2420],{},"Partial\u003CConsentManagementState>"," is enough: the store merges it into the existing state, so omitted keys keep their previous value.",[1912,2423,2425],{"id":2424},"registering-the-adapter","Registering the adapter",[1917,2427,2428,2429,2432,2433,2436,2437,2439,2440,2442,2443,2445,2446,2448],{},"Once the adapter class exists, the client plugin in your app instantiates it, calls ",[1926,2430,2431],{},"store.registerAdapter(adapter)",", then ",[1926,2434,2435],{},"store.activateAdapter(adapter.name)",". ",[1926,2438,1992],{}," is idempotent; ",[1926,2441,1996],{}," deactivates any previously active adapter first, so the active provider is always exactly one. Activation triggers ",[1926,2444,1928],{}," and the initial ",[1926,2447,1932],{}," read inside the store, so the host app does nothing beyond installing your module.",[1912,2450,2452],{"id":2451},"worked-example","Worked example",[1917,2454,2455,2456,2459],{},"The fictional CMP ",[1926,2457,2458],{},"ConsentKit"," is the example for the rest of the guide. Imagine its API looks like this:",[2024,2461,2463],{"className":2026,"code":2462,"language":2028,"meta":2029,"style":2029},"declare global {\n  interface Window {\n    ConsentKit?: ConsentKitGlobal;\n  }\n}\n\ninterface ConsentKitGlobal {\n  getConsent(): ConsentKitState | null;\n  openBanner(): void;\n  openPreferences(): void;\n  on(event: 'consent-change', handler: (state: ConsentKitState) => void): () => void;\n}\n\ninterface ConsentKitState {\n  essential: boolean;\n  functional: boolean;\n  analytics: boolean;\n  ads: boolean;\n}\n",[1926,2464,2465,2476,2486,2499,2504,2508,2512,2521,2538,2549,2560,2612,2616,2620,2629,2641,2653,2665,2677],{"__ignoreMap":2029},[2033,2466,2467,2470,2473],{"class":2035,"line":2036},[2033,2468,2469],{"class":2091},"declare",[2033,2471,2472],{"class":2050}," global ",[2033,2474,2475],{"class":2046},"{\n",[2033,2477,2478,2481,2484],{"class":2035,"line":2078},[2033,2479,2480],{"class":2091},"  interface",[2033,2482,2483],{"class":2095}," Window",[2033,2485,2098],{"class":2046},[2033,2487,2488,2491,2494,2497],{"class":2035,"line":2085},[2033,2489,2490],{"class":2107},"    ConsentKit",[2033,2492,2493],{"class":2046},"?:",[2033,2495,2496],{"class":2095}," ConsentKitGlobal",[2033,2498,2075],{"class":2046},[2033,2500,2501],{"class":2035,"line":2101},[2033,2502,2503],{"class":2046},"  }\n",[2033,2505,2506],{"class":2035,"line":2119},[2033,2507,2337],{"class":2046},[2033,2509,2510],{"class":2035,"line":2134},[2033,2511,2082],{"emptyLinePlaceholder":2081},[2033,2513,2514,2517,2519],{"class":2035,"line":2163},[2033,2515,2516],{"class":2091},"interface",[2033,2518,2496],{"class":2095},[2033,2520,2098],{"class":2046},[2033,2522,2523,2526,2528,2531,2533,2536],{"class":2035,"line":2198},[2033,2524,2525],{"class":2107},"  getConsent",[2033,2527,2140],{"class":2046},[2033,2529,2530],{"class":2095}," ConsentKitState",[2033,2532,2155],{"class":2046},[2033,2534,2535],{"class":2095}," null",[2033,2537,2075],{"class":2046},[2033,2539,2540,2543,2545,2547],{"class":2035,"line":2220},[2033,2541,2542],{"class":2107},"  openBanner",[2033,2544,2140],{"class":2046},[2033,2546,2158],{"class":2095},[2033,2548,2075],{"class":2046},[2033,2550,2551,2554,2556,2558],{"class":2035,"line":2242},[2033,2552,2553],{"class":2107},"  openPreferences",[2033,2555,2140],{"class":2046},[2033,2557,2158],{"class":2095},[2033,2559,2075],{"class":2046},[2033,2561,2562,2565,2567,2570,2572,2574,2577,2579,2581,2584,2586,2588,2590,2592,2594,2597,2599,2601,2603,2606,2608,2610],{"class":2035,"line":2269},[2033,2563,2564],{"class":2107},"  on",[2033,2566,2248],{"class":2046},[2033,2568,2569],{"class":2251},"event",[2033,2571,2111],{"class":2046},[2033,2573,2066],{"class":2046},[2033,2575,2576],{"class":2069},"consent-change",[2033,2578,2072],{"class":2046},[2033,2580,2054],{"class":2046},[2033,2582,2583],{"class":2277}," handler",[2033,2585,2111],{"class":2046},[2033,2587,2283],{"class":2046},[2033,2589,2389],{"class":2251},[2033,2591,2111],{"class":2046},[2033,2593,2530],{"class":2095},[2033,2595,2596],{"class":2046},")",[2033,2598,2300],{"class":2091},[2033,2600,2158],{"class":2095},[2033,2602,2262],{"class":2046},[2033,2604,2605],{"class":2046}," ()",[2033,2607,2300],{"class":2091},[2033,2609,2158],{"class":2095},[2033,2611,2075],{"class":2046},[2033,2613,2614],{"class":2035,"line":2311},[2033,2615,2337],{"class":2046},[2033,2617,2618],{"class":2035,"line":2334},[2033,2619,2082],{"emptyLinePlaceholder":2081},[2033,2621,2623,2625,2627],{"class":2035,"line":2622},14,[2033,2624,2516],{"class":2091},[2033,2626,2530],{"class":2095},[2033,2628,2098],{"class":2046},[2033,2630,2632,2635,2637,2639],{"class":2035,"line":2631},15,[2033,2633,2634],{"class":2107},"  essential",[2033,2636,2111],{"class":2046},[2033,2638,2129],{"class":2095},[2033,2640,2075],{"class":2046},[2033,2642,2644,2647,2649,2651],{"class":2035,"line":2643},16,[2033,2645,2646],{"class":2107},"  functional",[2033,2648,2111],{"class":2046},[2033,2650,2129],{"class":2095},[2033,2652,2075],{"class":2046},[2033,2654,2656,2659,2661,2663],{"class":2035,"line":2655},17,[2033,2657,2658],{"class":2107},"  analytics",[2033,2660,2111],{"class":2046},[2033,2662,2129],{"class":2095},[2033,2664,2075],{"class":2046},[2033,2666,2668,2671,2673,2675],{"class":2035,"line":2667},18,[2033,2669,2670],{"class":2107},"  ads",[2033,2672,2111],{"class":2046},[2033,2674,2129],{"class":2095},[2033,2676,2075],{"class":2046},[2033,2678,2680],{"class":2035,"line":2679},19,[2033,2681,2337],{"class":2046},[1917,2683,2684,2685,2688,2689,2692,2693,2696],{},"The widget is loaded with a script tag, exposes a ",[1926,2686,2687],{},"window.ConsentKit"," global once ready, fires a ",[1926,2690,2691],{},"consentkit:ready"," event when that global becomes available, and lets you subscribe to consent changes via ",[1926,2694,2695],{},"ConsentKit.on('consent-change', ...)",". A real CMP will look broadly like this; the moving parts (script injection, late init, mapping, cleanup) are the same shape regardless of the provider.",[1917,2698,2699],{},"Here is the full adapter:",[2024,2701,2703],{"className":2026,"code":2702,"language":2028,"meta":2029,"style":2029},"import { useHead } from 'nuxt/app';\nimport type { ConsentAdapter, ConsentManagementState } from '#frontend/consent';\n\ninterface ConsentKitConfig {\n  apiKey: string;\n  region?: string;\n}\n\nexport class ConsentKitAdapter implements ConsentAdapter {\n  readonly name = 'consentkit';\n  private _isActive = false;\n  private _callbacks: Array\u003C(c: Partial\u003CConsentManagementState>) => void> = [];\n  private _unsubscribe: (() => void) | null = null;\n\n  constructor(private _config: ConsentKitConfig) {}\n\n  get isActive() { return this._isActive; }\n\n  async init() {\n    if (!this._config.apiKey) throw new Error('ConsentKit: apiKey is required');\n\n    const params = new URLSearchParams({ key: this._config.apiKey });\n    if (this._config.region) params.set('region', this._config.region);\n\n    useHead({\n      script: [{ id: 'consentkit', src: `https://cdn.consentkit.example/widget.js?${params}`, async: true }],\n    });\n\n    if (import.meta.client) {\n      // The widget may load before or after this plugin runs; handle both.\n      const subscribe = () => {\n        this._unsubscribe = window.ConsentKit!.on('consent-change', (state) => {\n          this._notify(this.mapConsent(state));\n        });\n        const initial = window.ConsentKit!.getConsent();\n        if (initial) this._notify(this.mapConsent(initial));\n      };\n\n      if (window.ConsentKit) subscribe();\n      else window.addEventListener('consentkit:ready', subscribe, { once: true });\n    }\n\n    this._isActive = true;\n  }\n\n  getConsentState(): Partial\u003CConsentManagementState> {\n    if (import.meta.client && window.ConsentKit) {\n      const current = window.ConsentKit.getConsent();\n      if (current) return this.mapConsent(current);\n    }\n    return { necessary: true }; // SSR or pre-load: only essential is safe by default.\n  }\n\n  hasCategoryConsent(category: keyof ConsentManagementState): boolean {\n    return this.getConsentState()[category] ?? false;\n  }\n\n  onConsentChange(callback: (c: Partial\u003CConsentManagementState>) => void) {\n    this._callbacks.push(callback);\n  }\n\n  async showConsentOverlay() {\n    if (import.meta.client) window.ConsentKit?.openBanner();\n  }\n\n  async renewConsent() {\n    if (import.meta.client) window.ConsentKit?.openPreferences();\n  }\n\n  async destroy() {\n    this._unsubscribe?.();\n    this._unsubscribe = null;\n    this._callbacks = [];\n    this._isActive = false;\n  }\n\n  // The contract boundary: ConsentKit's category names become Laioutr's.\n  private mapConsent(c: ConsentKitState): Partial\u003CConsentManagementState> {\n    return { necessary: c.essential, functional: c.functional, statistics: c.analytics, marketing: c.ads };\n  }\n\n  private _notify(consent: Partial\u003CConsentManagementState>) {\n    for (const cb of this._callbacks) cb(consent);\n  }\n}\n",[1926,2704,2705,2727,2753,2757,2766,2777,2788,2792,2796,2813,2831,2847,2888,2919,2923,2945,2949,2975,2979,2991,3034,3039,3079,3128,3133,3143,3206,3216,3221,3244,3251,3268,3312,3337,3347,3373,3404,3410,3415,3439,3481,3487,3492,3506,3511,3516,3533,3563,3587,3614,3619,3640,3645,3650,3671,3696,3701,3706,3739,3760,3765,3770,3782,3817,3822,3827,3839,3873,3878,3883,3895,3908,3919,3932,3945,3950,3955,3961,3989,4053,4058,4063,4087,4121,4126],{"__ignoreMap":2029},[2033,2706,2707,2709,2711,2714,2716,2718,2720,2723,2725],{"class":2035,"line":2036},[2033,2708,2040],{"class":2039},[2033,2710,2047],{"class":2046},[2033,2712,2713],{"class":2050}," useHead",[2033,2715,2060],{"class":2046},[2033,2717,2063],{"class":2039},[2033,2719,2066],{"class":2046},[2033,2721,2722],{"class":2069},"nuxt/app",[2033,2724,2072],{"class":2046},[2033,2726,2075],{"class":2046},[2033,2728,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751],{"class":2035,"line":2078},[2033,2730,2040],{"class":2039},[2033,2732,2043],{"class":2039},[2033,2734,2047],{"class":2046},[2033,2736,2051],{"class":2050},[2033,2738,2054],{"class":2046},[2033,2740,2057],{"class":2050},[2033,2742,2060],{"class":2046},[2033,2744,2063],{"class":2039},[2033,2746,2066],{"class":2046},[2033,2748,1978],{"class":2069},[2033,2750,2072],{"class":2046},[2033,2752,2075],{"class":2046},[2033,2754,2755],{"class":2035,"line":2085},[2033,2756,2082],{"emptyLinePlaceholder":2081},[2033,2758,2759,2761,2764],{"class":2035,"line":2101},[2033,2760,2516],{"class":2091},[2033,2762,2763],{"class":2095}," ConsentKitConfig",[2033,2765,2098],{"class":2046},[2033,2767,2768,2771,2773,2775],{"class":2035,"line":2119},[2033,2769,2770],{"class":2107},"  apiKey",[2033,2772,2111],{"class":2046},[2033,2774,2114],{"class":2095},[2033,2776,2075],{"class":2046},[2033,2778,2779,2782,2784,2786],{"class":2035,"line":2134},[2033,2780,2781],{"class":2107},"  region",[2033,2783,2493],{"class":2046},[2033,2785,2114],{"class":2095},[2033,2787,2075],{"class":2046},[2033,2789,2790],{"class":2035,"line":2163},[2033,2791,2337],{"class":2046},[2033,2793,2794],{"class":2035,"line":2198},[2033,2795,2082],{"emptyLinePlaceholder":2081},[2033,2797,2798,2800,2803,2806,2809,2811],{"class":2035,"line":2220},[2033,2799,2088],{"class":2039},[2033,2801,2802],{"class":2091}," class",[2033,2804,2805],{"class":2095}," ConsentKitAdapter",[2033,2807,2808],{"class":2091}," implements",[2033,2810,2051],{"class":2095},[2033,2812,2098],{"class":2046},[2033,2814,2815,2817,2819,2822,2824,2827,2829],{"class":2035,"line":2242},[2033,2816,2104],{"class":2091},[2033,2818,2108],{"class":2107},[2033,2820,2821],{"class":2046}," =",[2033,2823,2066],{"class":2046},[2033,2825,2826],{"class":2069},"consentkit",[2033,2828,2072],{"class":2046},[2033,2830,2075],{"class":2046},[2033,2832,2833,2836,2839,2841,2845],{"class":2035,"line":2269},[2033,2834,2835],{"class":2091},"  private",[2033,2837,2838],{"class":2107}," _isActive",[2033,2840,2821],{"class":2046},[2033,2842,2844],{"class":2843},"sfNiH"," false",[2033,2846,2075],{"class":2046},[2033,2848,2849,2851,2854,2856,2859,2862,2865,2867,2869,2871,2873,2875,2877,2879,2881,2883,2886],{"class":2035,"line":2311},[2033,2850,2835],{"class":2091},[2033,2852,2853],{"class":2107}," _callbacks",[2033,2855,2111],{"class":2046},[2033,2857,2858],{"class":2095}," Array",[2033,2860,2861],{"class":2046},"\u003C(",[2033,2863,2864],{"class":2251},"c",[2033,2866,2111],{"class":2046},[2033,2868,2188],{"class":2095},[2033,2870,2146],{"class":2046},[2033,2872,2180],{"class":2095},[2033,2874,2297],{"class":2046},[2033,2876,2300],{"class":2091},[2033,2878,2158],{"class":2095},[2033,2880,2152],{"class":2046},[2033,2882,2821],{"class":2046},[2033,2884,2885],{"class":2050}," []",[2033,2887,2075],{"class":2046},[2033,2889,2890,2892,2895,2897,2899,2902,2904,2906,2909,2912,2914,2916],{"class":2035,"line":2334},[2033,2891,2835],{"class":2091},[2033,2893,2894],{"class":2107}," _unsubscribe",[2033,2896,2111],{"class":2046},[2033,2898,2283],{"class":2050},[2033,2900,2901],{"class":2046},"()",[2033,2903,2300],{"class":2091},[2033,2905,2158],{"class":2095},[2033,2907,2908],{"class":2050},") ",[2033,2910,2911],{"class":2046},"|",[2033,2913,2535],{"class":2095},[2033,2915,2821],{"class":2046},[2033,2917,2918],{"class":2046}," null;\n",[2033,2920,2921],{"class":2035,"line":2622},[2033,2922,2082],{"emptyLinePlaceholder":2081},[2033,2924,2925,2928,2930,2933,2936,2938,2940,2942],{"class":2035,"line":2631},[2033,2926,2927],{"class":2091},"  constructor",[2033,2929,2248],{"class":2046},[2033,2931,2932],{"class":2091},"private",[2033,2934,2935],{"class":2251}," _config",[2033,2937,2111],{"class":2046},[2033,2939,2763],{"class":2095},[2033,2941,2596],{"class":2046},[2033,2943,2944],{"class":2046}," {}\n",[2033,2946,2947],{"class":2035,"line":2643},[2033,2948,2082],{"emptyLinePlaceholder":2081},[2033,2950,2951,2954,2956,2958,2960,2963,2966,2969,2972],{"class":2035,"line":2655},[2033,2952,2953],{"class":2091},"  get",[2033,2955,2124],{"class":2107},[2033,2957,2901],{"class":2046},[2033,2959,2047],{"class":2046},[2033,2961,2962],{"class":2039}," return",[2033,2964,2965],{"class":2046}," this.",[2033,2967,2968],{"class":2050},"_isActive",[2033,2970,2971],{"class":2046},";",[2033,2973,2974],{"class":2046}," }\n",[2033,2976,2977],{"class":2035,"line":2667},[2033,2978,2082],{"emptyLinePlaceholder":2081},[2033,2980,2981,2984,2987,2989],{"class":2035,"line":2679},[2033,2982,2983],{"class":2091},"  async",[2033,2985,2986],{"class":2107}," init",[2033,2988,2901],{"class":2046},[2033,2990,2098],{"class":2046},[2033,2992,2994,2997,2999,3002,3005,3007,3010,3012,3015,3018,3021,3023,3025,3028,3030,3032],{"class":2035,"line":2993},20,[2033,2995,2996],{"class":2039},"    if",[2033,2998,2283],{"class":2107},[2033,3000,3001],{"class":2046},"!this.",[2033,3003,3004],{"class":2050},"_config",[2033,3006,1941],{"class":2046},[2033,3008,3009],{"class":2050},"apiKey",[2033,3011,2908],{"class":2107},[2033,3013,3014],{"class":2039},"throw",[2033,3016,3017],{"class":2046}," new",[2033,3019,3020],{"class":2277}," Error",[2033,3022,2248],{"class":2107},[2033,3024,2072],{"class":2046},[2033,3026,3027],{"class":2069},"ConsentKit: apiKey is required",[2033,3029,2072],{"class":2046},[2033,3031,2596],{"class":2107},[2033,3033,2075],{"class":2046},[2033,3035,3037],{"class":2035,"line":3036},21,[2033,3038,2082],{"emptyLinePlaceholder":2081},[2033,3040,3042,3045,3048,3050,3052,3055,3057,3060,3063,3065,3067,3069,3071,3073,3075,3077],{"class":2035,"line":3041},22,[2033,3043,3044],{"class":2091},"    const",[2033,3046,3047],{"class":2050}," params",[2033,3049,2821],{"class":2046},[2033,3051,3017],{"class":2046},[2033,3053,3054],{"class":2277}," URLSearchParams",[2033,3056,2248],{"class":2107},[2033,3058,3059],{"class":2046},"{",[2033,3061,3062],{"class":2107}," key",[2033,3064,2111],{"class":2046},[2033,3066,2965],{"class":2046},[2033,3068,3004],{"class":2050},[2033,3070,1941],{"class":2046},[2033,3072,3009],{"class":2050},[2033,3074,2060],{"class":2046},[2033,3076,2596],{"class":2107},[2033,3078,2075],{"class":2046},[2033,3080,3082,3084,3086,3089,3091,3093,3096,3098,3101,3103,3106,3108,3110,3112,3114,3116,3118,3120,3122,3124,3126],{"class":2035,"line":3081},23,[2033,3083,2996],{"class":2039},[2033,3085,2283],{"class":2107},[2033,3087,3088],{"class":2046},"this.",[2033,3090,3004],{"class":2050},[2033,3092,1941],{"class":2046},[2033,3094,3095],{"class":2050},"region",[2033,3097,2908],{"class":2107},[2033,3099,3100],{"class":2050},"params",[2033,3102,1941],{"class":2046},[2033,3104,3105],{"class":2277},"set",[2033,3107,2248],{"class":2107},[2033,3109,2072],{"class":2046},[2033,3111,3095],{"class":2069},[2033,3113,2072],{"class":2046},[2033,3115,2054],{"class":2046},[2033,3117,2965],{"class":2046},[2033,3119,3004],{"class":2050},[2033,3121,1941],{"class":2046},[2033,3123,3095],{"class":2050},[2033,3125,2596],{"class":2107},[2033,3127,2075],{"class":2046},[2033,3129,3131],{"class":2035,"line":3130},24,[2033,3132,2082],{"emptyLinePlaceholder":2081},[2033,3134,3136,3139,3141],{"class":2035,"line":3135},25,[2033,3137,3138],{"class":2277},"    useHead",[2033,3140,2248],{"class":2107},[2033,3142,2475],{"class":2046},[2033,3144,3146,3149,3151,3154,3156,3159,3161,3163,3165,3167,3169,3172,3174,3177,3180,3183,3185,3188,3190,3193,3195,3198,3200,3203],{"class":2035,"line":3145},26,[2033,3147,3148],{"class":2107},"      script",[2033,3150,2111],{"class":2046},[2033,3152,3153],{"class":2107}," [",[2033,3155,3059],{"class":2046},[2033,3157,3158],{"class":2107}," id",[2033,3160,2111],{"class":2046},[2033,3162,2066],{"class":2046},[2033,3164,2826],{"class":2069},[2033,3166,2072],{"class":2046},[2033,3168,2054],{"class":2046},[2033,3170,3171],{"class":2107}," src",[2033,3173,2111],{"class":2046},[2033,3175,3176],{"class":2046}," `",[2033,3178,3179],{"class":2069},"https://cdn.consentkit.example/widget.js?",[2033,3181,3182],{"class":2046},"${",[2033,3184,3100],{"class":2050},[2033,3186,3187],{"class":2046},"}`",[2033,3189,2054],{"class":2046},[2033,3191,3192],{"class":2107}," async",[2033,3194,2111],{"class":2046},[2033,3196,3197],{"class":2843}," true",[2033,3199,2060],{"class":2046},[2033,3201,3202],{"class":2107},"]",[2033,3204,3205],{"class":2046},",\n",[2033,3207,3209,3212,3214],{"class":2035,"line":3208},27,[2033,3210,3211],{"class":2046},"    }",[2033,3213,2596],{"class":2107},[2033,3215,2075],{"class":2046},[2033,3217,3219],{"class":2035,"line":3218},28,[2033,3220,2082],{"emptyLinePlaceholder":2081},[2033,3222,3224,3226,3228,3230,3232,3235,3237,3240,3242],{"class":2035,"line":3223},29,[2033,3225,2996],{"class":2039},[2033,3227,2283],{"class":2107},[2033,3229,2040],{"class":2039},[2033,3231,1941],{"class":2046},[2033,3233,3234],{"class":2050},"meta",[2033,3236,1941],{"class":2046},[2033,3238,3239],{"class":2050},"client",[2033,3241,2908],{"class":2107},[2033,3243,2475],{"class":2046},[2033,3245,3247],{"class":2035,"line":3246},30,[2033,3248,3250],{"class":3249},"sHwdD","      // The widget may load before or after this plugin runs; handle both.\n",[2033,3252,3254,3257,3260,3262,3264,3266],{"class":2035,"line":3253},31,[2033,3255,3256],{"class":2091},"      const",[2033,3258,3259],{"class":2050}," subscribe",[2033,3261,2821],{"class":2046},[2033,3263,2605],{"class":2046},[2033,3265,2300],{"class":2091},[2033,3267,2098],{"class":2046},[2033,3269,3271,3274,3277,3279,3282,3284,3286,3289,3292,3294,3296,3298,3300,3302,3304,3306,3308,3310],{"class":2035,"line":3270},32,[2033,3272,3273],{"class":2046},"        this.",[2033,3275,3276],{"class":2050},"_unsubscribe",[2033,3278,2821],{"class":2046},[2033,3280,3281],{"class":2050}," window",[2033,3283,1941],{"class":2046},[2033,3285,2458],{"class":2050},[2033,3287,3288],{"class":2046},"!.",[2033,3290,3291],{"class":2277},"on",[2033,3293,2248],{"class":2107},[2033,3295,2072],{"class":2046},[2033,3297,2576],{"class":2069},[2033,3299,2072],{"class":2046},[2033,3301,2054],{"class":2046},[2033,3303,2283],{"class":2046},[2033,3305,2389],{"class":2251},[2033,3307,2596],{"class":2046},[2033,3309,2300],{"class":2091},[2033,3311,2098],{"class":2046},[2033,3313,3315,3318,3321,3323,3325,3328,3330,3332,3335],{"class":2035,"line":3314},33,[2033,3316,3317],{"class":2046},"          this.",[2033,3319,3320],{"class":2277},"_notify",[2033,3322,2248],{"class":2107},[2033,3324,3088],{"class":2046},[2033,3326,3327],{"class":2277},"mapConsent",[2033,3329,2248],{"class":2107},[2033,3331,2389],{"class":2050},[2033,3333,3334],{"class":2107},"))",[2033,3336,2075],{"class":2046},[2033,3338,3340,3343,3345],{"class":2035,"line":3339},34,[2033,3341,3342],{"class":2046},"        }",[2033,3344,2596],{"class":2107},[2033,3346,2075],{"class":2046},[2033,3348,3350,3353,3356,3358,3360,3362,3364,3366,3369,3371],{"class":2035,"line":3349},35,[2033,3351,3352],{"class":2091},"        const",[2033,3354,3355],{"class":2050}," initial",[2033,3357,2821],{"class":2046},[2033,3359,3281],{"class":2050},[2033,3361,1941],{"class":2046},[2033,3363,2458],{"class":2050},[2033,3365,3288],{"class":2046},[2033,3367,3368],{"class":2277},"getConsent",[2033,3370,2901],{"class":2107},[2033,3372,2075],{"class":2046},[2033,3374,3376,3379,3381,3384,3386,3388,3390,3392,3394,3396,3398,3400,3402],{"class":2035,"line":3375},36,[2033,3377,3378],{"class":2039},"        if",[2033,3380,2283],{"class":2107},[2033,3382,3383],{"class":2050},"initial",[2033,3385,2908],{"class":2107},[2033,3387,3088],{"class":2046},[2033,3389,3320],{"class":2277},[2033,3391,2248],{"class":2107},[2033,3393,3088],{"class":2046},[2033,3395,3327],{"class":2277},[2033,3397,2248],{"class":2107},[2033,3399,3383],{"class":2050},[2033,3401,3334],{"class":2107},[2033,3403,2075],{"class":2046},[2033,3405,3407],{"class":2035,"line":3406},37,[2033,3408,3409],{"class":2046},"      };\n",[2033,3411,3413],{"class":2035,"line":3412},38,[2033,3414,2082],{"emptyLinePlaceholder":2081},[2033,3416,3418,3421,3423,3426,3428,3430,3432,3435,3437],{"class":2035,"line":3417},39,[2033,3419,3420],{"class":2039},"      if",[2033,3422,2283],{"class":2107},[2033,3424,3425],{"class":2050},"window",[2033,3427,1941],{"class":2046},[2033,3429,2458],{"class":2050},[2033,3431,2908],{"class":2107},[2033,3433,3434],{"class":2277},"subscribe",[2033,3436,2901],{"class":2107},[2033,3438,2075],{"class":2046},[2033,3440,3442,3445,3447,3449,3452,3454,3456,3458,3460,3462,3464,3466,3468,3471,3473,3475,3477,3479],{"class":2035,"line":3441},40,[2033,3443,3444],{"class":2039},"      else",[2033,3446,3281],{"class":2050},[2033,3448,1941],{"class":2046},[2033,3450,3451],{"class":2277},"addEventListener",[2033,3453,2248],{"class":2107},[2033,3455,2072],{"class":2046},[2033,3457,2691],{"class":2069},[2033,3459,2072],{"class":2046},[2033,3461,2054],{"class":2046},[2033,3463,3259],{"class":2050},[2033,3465,2054],{"class":2046},[2033,3467,2047],{"class":2046},[2033,3469,3470],{"class":2107}," once",[2033,3472,2111],{"class":2046},[2033,3474,3197],{"class":2843},[2033,3476,2060],{"class":2046},[2033,3478,2596],{"class":2107},[2033,3480,2075],{"class":2046},[2033,3482,3484],{"class":2035,"line":3483},41,[2033,3485,3486],{"class":2046},"    }\n",[2033,3488,3490],{"class":2035,"line":3489},42,[2033,3491,2082],{"emptyLinePlaceholder":2081},[2033,3493,3495,3498,3500,3502,3504],{"class":2035,"line":3494},43,[2033,3496,3497],{"class":2046},"    this.",[2033,3499,2968],{"class":2050},[2033,3501,2821],{"class":2046},[2033,3503,3197],{"class":2843},[2033,3505,2075],{"class":2046},[2033,3507,3509],{"class":2035,"line":3508},44,[2033,3510,2503],{"class":2046},[2033,3512,3514],{"class":2035,"line":3513},45,[2033,3515,2082],{"emptyLinePlaceholder":2081},[2033,3517,3519,3521,3523,3525,3527,3529,3531],{"class":2035,"line":3518},46,[2033,3520,2166],{"class":2107},[2033,3522,2140],{"class":2046},[2033,3524,2188],{"class":2095},[2033,3526,2146],{"class":2046},[2033,3528,2180],{"class":2095},[2033,3530,2152],{"class":2046},[2033,3532,2098],{"class":2046},[2033,3534,3536,3538,3540,3542,3544,3546,3548,3550,3553,3555,3557,3559,3561],{"class":2035,"line":3535},47,[2033,3537,2996],{"class":2039},[2033,3539,2283],{"class":2107},[2033,3541,2040],{"class":2039},[2033,3543,1941],{"class":2046},[2033,3545,3234],{"class":2050},[2033,3547,1941],{"class":2046},[2033,3549,3239],{"class":2050},[2033,3551,3552],{"class":2046}," &&",[2033,3554,3281],{"class":2050},[2033,3556,1941],{"class":2046},[2033,3558,2458],{"class":2050},[2033,3560,2908],{"class":2107},[2033,3562,2475],{"class":2046},[2033,3564,3566,3568,3571,3573,3575,3577,3579,3581,3583,3585],{"class":2035,"line":3565},48,[2033,3567,3256],{"class":2091},[2033,3569,3570],{"class":2050}," current",[2033,3572,2821],{"class":2046},[2033,3574,3281],{"class":2050},[2033,3576,1941],{"class":2046},[2033,3578,2458],{"class":2050},[2033,3580,1941],{"class":2046},[2033,3582,3368],{"class":2277},[2033,3584,2901],{"class":2107},[2033,3586,2075],{"class":2046},[2033,3588,3590,3592,3594,3597,3599,3602,3604,3606,3608,3610,3612],{"class":2035,"line":3589},49,[2033,3591,3420],{"class":2039},[2033,3593,2283],{"class":2107},[2033,3595,3596],{"class":2050},"current",[2033,3598,2908],{"class":2107},[2033,3600,3601],{"class":2039},"return",[2033,3603,2965],{"class":2046},[2033,3605,3327],{"class":2277},[2033,3607,2248],{"class":2107},[2033,3609,3596],{"class":2050},[2033,3611,2596],{"class":2107},[2033,3613,2075],{"class":2046},[2033,3615,3617],{"class":2035,"line":3616},50,[2033,3618,3486],{"class":2046},[2033,3620,3622,3625,3627,3630,3632,3634,3637],{"class":2035,"line":3621},51,[2033,3623,3624],{"class":2039},"    return",[2033,3626,2047],{"class":2046},[2033,3628,3629],{"class":2107}," necessary",[2033,3631,2111],{"class":2046},[2033,3633,3197],{"class":2843},[2033,3635,3636],{"class":2046}," };",[2033,3638,3639],{"class":3249}," // SSR or pre-load: only essential is safe by default.\n",[2033,3641,3643],{"class":2035,"line":3642},52,[2033,3644,2503],{"class":2046},[2033,3646,3648],{"class":2035,"line":3647},53,[2033,3649,2082],{"emptyLinePlaceholder":2081},[2033,3651,3653,3655,3657,3659,3661,3663,3665,3667,3669],{"class":2035,"line":3652},54,[2033,3654,2245],{"class":2107},[2033,3656,2248],{"class":2046},[2033,3658,2252],{"class":2251},[2033,3660,2111],{"class":2046},[2033,3662,2257],{"class":2046},[2033,3664,2057],{"class":2095},[2033,3666,2262],{"class":2046},[2033,3668,2129],{"class":2095},[2033,3670,2098],{"class":2046},[2033,3672,3674,3676,3678,3681,3684,3686,3689,3692,3694],{"class":2035,"line":3673},55,[2033,3675,3624],{"class":2039},[2033,3677,2965],{"class":2046},[2033,3679,3680],{"class":2277},"getConsentState",[2033,3682,3683],{"class":2107},"()[",[2033,3685,2252],{"class":2050},[2033,3687,3688],{"class":2107},"] ",[2033,3690,3691],{"class":2046},"??",[2033,3693,2844],{"class":2843},[2033,3695,2075],{"class":2046},[2033,3697,3699],{"class":2035,"line":3698},56,[2033,3700,2503],{"class":2046},[2033,3702,3704],{"class":2035,"line":3703},57,[2033,3705,2082],{"emptyLinePlaceholder":2081},[2033,3707,3709,3711,3713,3715,3717,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737],{"class":2035,"line":3708},58,[2033,3710,2272],{"class":2107},[2033,3712,2248],{"class":2046},[2033,3714,2278],{"class":2277},[2033,3716,2111],{"class":2046},[2033,3718,2283],{"class":2046},[2033,3720,2864],{"class":2251},[2033,3722,2111],{"class":2046},[2033,3724,2188],{"class":2095},[2033,3726,2146],{"class":2046},[2033,3728,2180],{"class":2095},[2033,3730,2297],{"class":2046},[2033,3732,2300],{"class":2091},[2033,3734,2158],{"class":2095},[2033,3736,2596],{"class":2046},[2033,3738,2098],{"class":2046},[2033,3740,3742,3744,3747,3749,3752,3754,3756,3758],{"class":2035,"line":3741},59,[2033,3743,3497],{"class":2046},[2033,3745,3746],{"class":2050},"_callbacks",[2033,3748,1941],{"class":2046},[2033,3750,3751],{"class":2277},"push",[2033,3753,2248],{"class":2107},[2033,3755,2278],{"class":2050},[2033,3757,2596],{"class":2107},[2033,3759,2075],{"class":2046},[2033,3761,3763],{"class":2035,"line":3762},60,[2033,3764,2503],{"class":2046},[2033,3766,3768],{"class":2035,"line":3767},61,[2033,3769,2082],{"emptyLinePlaceholder":2081},[2033,3771,3773,3775,3778,3780],{"class":2035,"line":3772},62,[2033,3774,2983],{"class":2091},[2033,3776,3777],{"class":2107}," showConsentOverlay",[2033,3779,2901],{"class":2046},[2033,3781,2098],{"class":2046},[2033,3783,3785,3787,3789,3791,3793,3795,3797,3799,3801,3803,3805,3807,3810,3813,3815],{"class":2035,"line":3784},63,[2033,3786,2996],{"class":2039},[2033,3788,2283],{"class":2107},[2033,3790,2040],{"class":2039},[2033,3792,1941],{"class":2046},[2033,3794,3234],{"class":2050},[2033,3796,1941],{"class":2046},[2033,3798,3239],{"class":2050},[2033,3800,2908],{"class":2107},[2033,3802,3425],{"class":2050},[2033,3804,1941],{"class":2046},[2033,3806,2458],{"class":2050},[2033,3808,3809],{"class":2046},"?.",[2033,3811,3812],{"class":2277},"openBanner",[2033,3814,2901],{"class":2107},[2033,3816,2075],{"class":2046},[2033,3818,3820],{"class":2035,"line":3819},64,[2033,3821,2503],{"class":2046},[2033,3823,3825],{"class":2035,"line":3824},65,[2033,3826,2082],{"emptyLinePlaceholder":2081},[2033,3828,3830,3832,3835,3837],{"class":2035,"line":3829},66,[2033,3831,2983],{"class":2091},[2033,3833,3834],{"class":2107}," renewConsent",[2033,3836,2901],{"class":2046},[2033,3838,2098],{"class":2046},[2033,3840,3842,3844,3846,3848,3850,3852,3854,3856,3858,3860,3862,3864,3866,3869,3871],{"class":2035,"line":3841},67,[2033,3843,2996],{"class":2039},[2033,3845,2283],{"class":2107},[2033,3847,2040],{"class":2039},[2033,3849,1941],{"class":2046},[2033,3851,3234],{"class":2050},[2033,3853,1941],{"class":2046},[2033,3855,3239],{"class":2050},[2033,3857,2908],{"class":2107},[2033,3859,3425],{"class":2050},[2033,3861,1941],{"class":2046},[2033,3863,2458],{"class":2050},[2033,3865,3809],{"class":2046},[2033,3867,3868],{"class":2277},"openPreferences",[2033,3870,2901],{"class":2107},[2033,3872,2075],{"class":2046},[2033,3874,3876],{"class":2035,"line":3875},68,[2033,3877,2503],{"class":2046},[2033,3879,3881],{"class":2035,"line":3880},69,[2033,3882,2082],{"emptyLinePlaceholder":2081},[2033,3884,3886,3888,3891,3893],{"class":2035,"line":3885},70,[2033,3887,2983],{"class":2091},[2033,3889,3890],{"class":2107}," destroy",[2033,3892,2901],{"class":2046},[2033,3894,2098],{"class":2046},[2033,3896,3898,3900,3902,3904,3906],{"class":2035,"line":3897},71,[2033,3899,3497],{"class":2046},[2033,3901,3276],{"class":2277},[2033,3903,3809],{"class":2046},[2033,3905,2901],{"class":2107},[2033,3907,2075],{"class":2046},[2033,3909,3911,3913,3915,3917],{"class":2035,"line":3910},72,[2033,3912,3497],{"class":2046},[2033,3914,3276],{"class":2050},[2033,3916,2821],{"class":2046},[2033,3918,2918],{"class":2046},[2033,3920,3922,3924,3926,3928,3930],{"class":2035,"line":3921},73,[2033,3923,3497],{"class":2046},[2033,3925,3746],{"class":2050},[2033,3927,2821],{"class":2046},[2033,3929,2885],{"class":2107},[2033,3931,2075],{"class":2046},[2033,3933,3935,3937,3939,3941,3943],{"class":2035,"line":3934},74,[2033,3936,3497],{"class":2046},[2033,3938,2968],{"class":2050},[2033,3940,2821],{"class":2046},[2033,3942,2844],{"class":2843},[2033,3944,2075],{"class":2046},[2033,3946,3948],{"class":2035,"line":3947},75,[2033,3949,2503],{"class":2046},[2033,3951,3953],{"class":2035,"line":3952},76,[2033,3954,2082],{"emptyLinePlaceholder":2081},[2033,3956,3958],{"class":2035,"line":3957},77,[2033,3959,3960],{"class":3249},"  // The contract boundary: ConsentKit's category names become Laioutr's.\n",[2033,3962,3964,3966,3969,3971,3973,3975,3977,3979,3981,3983,3985,3987],{"class":2035,"line":3963},78,[2033,3965,2835],{"class":2091},[2033,3967,3968],{"class":2107}," mapConsent",[2033,3970,2248],{"class":2046},[2033,3972,2864],{"class":2251},[2033,3974,2111],{"class":2046},[2033,3976,2530],{"class":2095},[2033,3978,2262],{"class":2046},[2033,3980,2188],{"class":2095},[2033,3982,2146],{"class":2046},[2033,3984,2180],{"class":2095},[2033,3986,2152],{"class":2046},[2033,3988,2098],{"class":2046},[2033,3990,3992,3994,3996,3998,4000,4003,4005,4008,4010,4013,4015,4017,4019,4022,4024,4027,4029,4031,4033,4036,4038,4041,4043,4045,4047,4050],{"class":2035,"line":3991},79,[2033,3993,3624],{"class":2039},[2033,3995,2047],{"class":2046},[2033,3997,3629],{"class":2107},[2033,3999,2111],{"class":2046},[2033,4001,4002],{"class":2050}," c",[2033,4004,1941],{"class":2046},[2033,4006,4007],{"class":2050},"essential",[2033,4009,2054],{"class":2046},[2033,4011,4012],{"class":2107}," functional",[2033,4014,2111],{"class":2046},[2033,4016,4002],{"class":2050},[2033,4018,1941],{"class":2046},[2033,4020,4021],{"class":2050},"functional",[2033,4023,2054],{"class":2046},[2033,4025,4026],{"class":2107}," statistics",[2033,4028,2111],{"class":2046},[2033,4030,4002],{"class":2050},[2033,4032,1941],{"class":2046},[2033,4034,4035],{"class":2050},"analytics",[2033,4037,2054],{"class":2046},[2033,4039,4040],{"class":2107}," marketing",[2033,4042,2111],{"class":2046},[2033,4044,4002],{"class":2050},[2033,4046,1941],{"class":2046},[2033,4048,4049],{"class":2050},"ads",[2033,4051,4052],{"class":2046}," };\n",[2033,4054,4056],{"class":2035,"line":4055},80,[2033,4057,2503],{"class":2046},[2033,4059,4061],{"class":2035,"line":4060},81,[2033,4062,2082],{"emptyLinePlaceholder":2081},[2033,4064,4066,4068,4071,4073,4075,4077,4079,4081,4083,4085],{"class":2035,"line":4065},82,[2033,4067,2835],{"class":2091},[2033,4069,4070],{"class":2107}," _notify",[2033,4072,2248],{"class":2046},[2033,4074,2286],{"class":2251},[2033,4076,2111],{"class":2046},[2033,4078,2188],{"class":2095},[2033,4080,2146],{"class":2046},[2033,4082,2180],{"class":2095},[2033,4084,2297],{"class":2046},[2033,4086,2098],{"class":2046},[2033,4088,4090,4093,4095,4098,4101,4104,4106,4108,4110,4113,4115,4117,4119],{"class":2035,"line":4089},83,[2033,4091,4092],{"class":2039},"    for",[2033,4094,2283],{"class":2107},[2033,4096,4097],{"class":2091},"const",[2033,4099,4100],{"class":2050}," cb",[2033,4102,4103],{"class":2046}," of",[2033,4105,2965],{"class":2046},[2033,4107,3746],{"class":2050},[2033,4109,2908],{"class":2107},[2033,4111,4112],{"class":2277},"cb",[2033,4114,2248],{"class":2107},[2033,4116,2286],{"class":2050},[2033,4118,2596],{"class":2107},[2033,4120,2075],{"class":2046},[2033,4122,4124],{"class":2035,"line":4123},84,[2033,4125,2503],{"class":2046},[2033,4127,4129],{"class":2035,"line":4128},85,[2033,4130,2337],{"class":2046},[1912,4132,4134],{"id":4133},"patterns-worth-stealing","Patterns worth stealing",[1917,4136,4137],{},"Even if your CMP looks nothing like ConsentKit, the same handful of moves apply:",[4139,4140,4141,4147,4153,4159,4167,4176],"ul",{},[1964,4142,4143,4144,4146],{},"Inject the CMP script through ",[1926,4145,2381],{}," so it gets the same SSR/hydration handling as any other Nuxt-managed tag.",[1964,4148,4149,4150,4152],{},"Validate required configuration in ",[1926,4151,1928],{}," and throw on missing values. The store catches the error, logs it, and deactivates the adapter. Treat this as the right way to fail loudly.",[1964,4154,4155,4156,4158],{},"Handle both load orderings. If the CMP's global is already on ",[1926,4157,3425],{}," when your plugin runs, subscribe immediately. Otherwise wait for the CMP's \"ready\" event. Either case must end with you holding a subscription.",[1964,4160,4161,4162,2351,4164,4166],{},"Keep all category-name translation in one private method. The contract boundary belongs in one place, not sprinkled across ",[1926,4163,1928],{},[1926,4165,1932],{},", and the change handler.",[1964,4168,4169,4170,1975,4173,4175],{},"Return ",[1926,4171,4172],{},"{ necessary: true }",[1926,4174,1932],{}," when you cannot reconstruct consent on the server (or before the script has loaded). The client overwrites it once the CMP reports in, and consumers see safe defaults until then.",[1964,4177,4178,4179,4182,4183,4185,4186,4188],{},"Save every subscription handle (the function returned by ",[1926,4180,4181],{},"on(...)",", the ",[1926,4184,3451],{}," reference) and release them in ",[1926,4187,2414],{},". Without this, deactivating the adapter (or hot-reloading in dev) leaks handlers.",[1917,4190,4191,4192,4194,4195,4198,4199,4202,4203,4205],{},"If your CMP fires its consent events synchronously during its own init script (before any client plugin can attach), the standard fix is to inject an inline bootstrap script via ",[1926,4193,2381],{}," with ",[1926,4196,4197],{},"tagPriority: 1",". The bootstrap parses before the CMP and accumulates the early event burst into a ",[1926,4200,4201],{},"window.__*"," global that ",[1926,4204,1932],{}," reads later.",[1912,4207,4209],{"id":4208},"notes-on-ssr-late-init-and-cleanup","Notes on SSR, late init, and cleanup",[1917,4211,4212],{},"A few constraints are easy to miss:",[4139,4214,4215,4240,4255,4261],{},[1964,4216,4217,4219,4220,4223,4224,4226,4227,2351,4229,4232,4233,4235,4236,4239],{},[1926,4218,2381],{}," and ",[1926,4221,4222],{},"useCookie"," work on both the server and the client. Call them unconditionally inside ",[1926,4225,1928],{},". Only ",[1926,4228,3425],{},[1926,4230,4231],{},"document",", and ",[1926,4234,3451],{}," need an ",[1926,4237,4238],{},"import.meta.client"," guard.",[1964,4241,4242,4243,4245,4246,4248,4249,4251,4252,4254],{},"The store calls ",[1926,4244,1928],{}," first, then ",[1926,4247,1932],{},", then registers its own callback through ",[1926,4250,1936],{},". The order matters when you reason about which payloads arrive at the store before activation completes (none) versus after (every subsequent ",[1926,4253,3320],{}," call).",[1964,4256,4257,4258,4260],{},"If your CMP exposes consent through a server-readable cookie, ",[1926,4259,1932],{}," can read it on SSR and the first byte renders with the correct state. If it does not, return the denied baseline and let the client correct it.",[1964,4262,4263,4265,4266,4269,4270,4273],{},[1926,4264,2414],{}," only runs when the store deactivates the adapter (an explicit ",[1926,4267,4268],{},"deactivateAdapter()"," call or a swap to a different adapter via ",[1926,4271,4272],{},"activateAdapter()","). It does not run on Nuxt page navigation. Adapters that need per-route cleanup must arrange that themselves.",[1917,4275,4276,4277,4280],{},"Once your adapter is active, ",[1926,4278,4279],{},"useConsentStore().hasCategoryConsent('statistics')"," works in every consumer (your code, the tracking store, the GTM app) without anyone knowing which CMP you wired in.",[1912,4282,4284],{"id":4283},"related","Related",[4139,4286,4287,4292,4301,4307,4313],{},[1964,4288,4289,4291],{},[1921,4290,502],{"href":503},". Scaffold the Nuxt module, runtime, and plugin skeleton your adapter plugs into.",[1964,4293,4294,4296,4297,4300],{},[1921,4295,498],{"href":499},". How ",[1926,4298,4299],{},"runtimeConfig",", options, and per-app keys flow into your plugin.",[1964,4302,4303,4306],{},[1921,4304,4305],{"href":161},"Consent Management feature overview",". The consumer-facing side of the same store.",[1964,4308,4309,4312],{},[1921,4310,4311],{"href":573},"Cookiebot app",". Reference implementation for cookie-based CMPs.",[1964,4314,4315,4318],{},[1921,4316,4317],{"href":569},"CCM19 app",". Reference implementation for event-based CMPs with custom purposes.",[4320,4321,4322],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}",{"title":2029,"searchDepth":2078,"depth":2078,"links":4324},[4325,4326,4327,4328,4329,4330,4331],{"id":1914,"depth":2078,"text":1915},{"id":2011,"depth":2078,"text":2012},{"id":2424,"depth":2078,"text":2425},{"id":2451,"depth":2078,"text":2452},{"id":4133,"depth":2078,"text":4134},{"id":4208,"depth":2078,"text":4209},{"id":4283,"depth":2078,"text":4284},"How to build a Laioutr app that integrates a Consent Management Platform (CMP) by implementing the ConsentAdapter contract from frontend-core.","md",{},{"title":4336,"description":4332},"Consent Adapters | Laioutr",{"loc":519,"lastmod":4338,"changefreq":4339,"priority":2036},"2026-04-27","monthly","JVYAc9FS56Pq27h4LoWdZrHl6cKLBfJ9fcQrHTYp1iw",[4342,4344],{"title":514,"path":515,"stem":516,"description":4343,"children":-1},"Conventions and quality guidelines for developing Laioutr apps. Use these standards to keep app code consistent, maintainable, and aligned with the Laioutr ecosystem.",{"title":522,"path":523,"stem":524,"description":4345,"children":-1},"How blocks and sections read interactive state from a resolved query field and update the URL when the user changes filters, sorting, or pagination.",1783259588155]