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