[{"data":1,"prerenderedAt":3787},["ShallowReactive",2],{"navigation_docs":3,"-apps-app-development-guides-shared-field-factories":1765,"-apps-app-development-guides-shared-field-factories-surround":3782},[4,136,446,617,1450,1522,1528,1534,1593,1692],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","/getting-started","0.getting-started/0.index",[9,10,14,18,56,81,115,132],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Starting new project","/getting-started/starting-new-project","0.getting-started/1.starting-new-project",{"title":15,"path":16,"stem":17},"What is Laioutr?","/getting-started/what-is-laioutr","0.getting-started/2.what-is-laioutr",{"title":19,"path":20,"stem":21,"children":22,"page":55},"Key Concepts","/getting-started/key-concepts","0.getting-started/3.key-concepts",[23,27,31,35,39,43,47,51],{"title":24,"path":25,"stem":26},"Architecture","/getting-started/key-concepts/architecture","0.getting-started/3.key-concepts/1.architecture",{"title":28,"path":29,"stem":30},"Data Model","/getting-started/key-concepts/data-model","0.getting-started/3.key-concepts/2.data-model",{"title":32,"path":33,"stem":34},"Internationalization","/getting-started/key-concepts/5.internationalization","0.getting-started/3.key-concepts/3.5.internationalization",{"title":36,"path":37,"stem":38},"Data Flow","/getting-started/key-concepts/data-flow","0.getting-started/3.key-concepts/3.data-flow",{"title":40,"path":41,"stem":42},"Extensibility","/getting-started/key-concepts/extensibility","0.getting-started/3.key-concepts/4.extensibility",{"title":44,"path":45,"stem":46},"Philosophy","/getting-started/key-concepts/philosophy","0.getting-started/3.key-concepts/5.philosophy",{"title":48,"path":49,"stem":50},"CI/CD Pipeline","/getting-started/key-concepts/ci-cd-pipeline","0.getting-started/3.key-concepts/6.ci-cd-pipeline",{"title":52,"path":53,"stem":54},"Multi-tenancy","/getting-started/key-concepts/multi-tenancy","0.getting-started/3.key-concepts/multi-tenancy",false,{"title":57,"path":58,"stem":59,"children":60,"page":55},"Next Steps","/getting-started/next-steps","0.getting-started/4.next-steps",[61,65,69,73,77],{"title":62,"path":63,"stem":64},"Create Organization and Project","/getting-started/next-steps/create-org-and-project","0.getting-started/4.next-steps/0.create-org-and-project",{"title":66,"path":67,"stem":68},"First Project Configuration","/getting-started/next-steps/first-project-config","0.getting-started/4.next-steps/1.first-project-config",{"title":70,"path":71,"stem":72},"Setup Local Development Environment","/getting-started/next-steps/local-setup","0.getting-started/4.next-steps/3.local-setup",{"title":74,"path":75,"stem":76},"Create your first custom app","/getting-started/next-steps/create-custom-app","0.getting-started/4.next-steps/4.create-custom-app",{"title":78,"path":79,"stem":80},"CLI","/getting-started/next-steps/cli","0.getting-started/4.next-steps/5.cli",{"title":82,"path":83,"stem":84,"children":85},"Changelogs","/getting-started/changelogs","0.getting-started/5.Changelogs/0.index",[86,87,91,95,99,103,107,111],{"title":82,"path":83,"stem":84},{"title":88,"path":89,"stem":90},"CLI Changelog","/getting-started/changelogs/cli-changelog","0.getting-started/5.Changelogs/cli-changelog",{"title":92,"path":93,"stem":94},"Cockpit Changelog","/getting-started/changelogs/cockpit-changelog","0.getting-started/5.Changelogs/cockpit-changelog",{"title":96,"path":97,"stem":98},"Figma Kit Changelog","/getting-started/changelogs/figma-kit-changelog","0.getting-started/5.Changelogs/figma-kit-changelog",{"title":100,"path":101,"stem":102},"Frontend Changelog","/getting-started/changelogs/frontend-changelog","0.getting-started/5.Changelogs/frontend-changelog",{"title":104,"path":105,"stem":106},"Orchestr Changelog","/getting-started/changelogs/orchestr-changelog","0.getting-started/5.Changelogs/orchestr-changelog",{"title":108,"path":109,"stem":110},"Orchestr Devtools Changelog","/getting-started/changelogs/orchestr-devtools-changelog","0.getting-started/5.Changelogs/orchestr-devtools-changelog",{"title":112,"path":113,"stem":114},"UI Changelog","/getting-started/changelogs/ui-changelog","0.getting-started/5.Changelogs/ui-changelog",{"title":116,"path":117,"stem":118,"children":119,"page":55},"Hints And Tips","/getting-started/hints-and-tips","0.getting-started/6.Hints-and-Tips",[120,124,128],{"title":121,"path":122,"stem":123},"Introduction","/getting-started/hints-and-tips/introduction","0.getting-started/6.Hints-and-Tips/0.introduction",{"title":125,"path":126,"stem":127},"Developer tools","/getting-started/hints-and-tips/developer-tools","0.getting-started/6.Hints-and-Tips/1.developer-tools",{"title":129,"path":130,"stem":131},"Claude Code plugin","/getting-started/hints-and-tips/claude-marketplace","0.getting-started/6.Hints-and-Tips/2.claude-marketplace",{"title":133,"path":134,"stem":135},"MCP Server","/getting-started/mcp-server","0.getting-started/7.mcp-server",{"title":137,"path":138,"stem":139,"children":140},"Frontend","/frontend","1.Frontend/0.index",[141,142,153,215,241,305],{"title":137,"path":138,"stem":139},{"title":121,"path":143,"stem":144,"children":145,"page":55},"/frontend/introduction","1.Frontend/1.Introduction",[146,149],{"title":19,"path":147,"stem":148},"/frontend/introduction/key-concepts","1.Frontend/1.Introduction/0.key-concepts",{"title":150,"path":151,"stem":152},"Tech Stack","/frontend/introduction/tech-stack","1.Frontend/1.Introduction/1.tech-stack",{"title":154,"path":155,"stem":156,"children":157},"Features","/frontend/features","1.Frontend/2.Features/0.index",[158,159,163,167,171,175,179,183,187,191,195,199,203,207,211],{"title":154,"path":155,"stem":156},{"title":160,"path":161,"stem":162},"Consent Management","/frontend/features/consent-management","1.Frontend/2.Features/consent-management",{"title":164,"path":165,"stem":166},"Currencies","/frontend/features/currencies","1.Frontend/2.Features/currencies",{"title":168,"path":169,"stem":170},"Environments & Staging","/frontend/features/environments","1.Frontend/2.Features/environments",{"title":172,"path":173,"stem":174},"Hooks","/frontend/features/hooks","1.Frontend/2.Features/hooks",{"title":176,"path":177,"stem":178},"Media and Media Library","/frontend/features/media","1.Frontend/2.Features/media",{"title":180,"path":181,"stem":182},"Multi-language Support","/frontend/features/multi-language-support","1.Frontend/2.Features/multi-language-support",{"title":184,"path":185,"stem":186},"Multi-market","/frontend/features/multi-market","1.Frontend/2.Features/multi-market",{"title":188,"path":189,"stem":190},"Page Types","/frontend/features/pagetypes","1.Frontend/2.Features/pagetypes",{"title":192,"path":193,"stem":194},"PWA","/frontend/features/pwa","1.Frontend/2.Features/pwa",{"title":196,"path":197,"stem":198},"Redirects","/frontend/features/redirects","1.Frontend/2.Features/redirects",{"title":200,"path":201,"stem":202},"Routing","/frontend/features/routing","1.Frontend/2.Features/routing",{"title":204,"path":205,"stem":206},"Server-Side Rendering (SSR) and Caching","/frontend/features/ssr-and-caching","1.Frontend/2.Features/ssr-and-caching",{"title":208,"path":209,"stem":210},"Tracking","/frontend/features/tracking","1.Frontend/2.Features/tracking",{"title":212,"path":213,"stem":214},"Z-Ordering","/frontend/features/z-ordering","1.Frontend/2.Features/z-ordering",{"title":216,"path":217,"stem":218,"children":219},"SEO","/frontend/seo","1.Frontend/3.SEO/0.index",[220,221,225,229,233,237],{"title":216,"path":217,"stem":218},{"title":222,"path":223,"stem":224},"Link Checker","/frontend/seo/link-checker","1.Frontend/3.SEO/link-checker",{"title":226,"path":227,"stem":228},"OG Image","/frontend/seo/og-image","1.Frontend/3.SEO/og-image",{"title":230,"path":231,"stem":232},"Robots.txt","/frontend/seo/robots-txt","1.Frontend/3.SEO/robots-txt",{"title":234,"path":235,"stem":236},"Schema.org","/frontend/seo/schema-org","1.Frontend/3.SEO/schema-org",{"title":238,"path":239,"stem":240},"Sitemap","/frontend/seo/sitemap","1.Frontend/3.SEO/sitemap",{"title":242,"path":243,"stem":244,"children":245},"Backend for Frontend","/frontend/orchestr","1.Frontend/4.Orchestr/0.index",[246,247,273,277,281,285,289,293,297,301],{"title":242,"path":243,"stem":244},{"title":248,"path":249,"stem":250,"children":251},"Recipes","/frontend/orchestr/recipes","1.Frontend/4.Orchestr/99.recipes/0.index",[252,253,257,261,265,269],{"title":248,"path":249,"stem":250},{"title":254,"path":255,"stem":256},"Analytics components from query handlers","/frontend/orchestr/recipes/analytics-from-query-handlers","1.Frontend/4.Orchestr/99.recipes/analytics-from-query-handlers",{"title":258,"path":259,"stem":260},"Identity cookies (cart and visitor IDs)","/frontend/orchestr/recipes/identity-cookies","1.Frontend/4.Orchestr/99.recipes/identity-cookies",{"title":262,"path":263,"stem":264},"System bootstrap in extendRequest","/frontend/orchestr/recipes/system-bootstrap","1.Frontend/4.Orchestr/99.recipes/system-bootstrap",{"title":266,"path":267,"stem":268},"Translating vendor errors","/frontend/orchestr/recipes/translating-vendor-errors","1.Frontend/4.Orchestr/99.recipes/translating-vendor-errors",{"title":270,"path":271,"stem":272},"Userland cache patterns","/frontend/orchestr/recipes/userland-cache-patterns","1.Frontend/4.Orchestr/99.recipes/userland-cache-patterns",{"title":274,"path":275,"stem":276},"Actions","/frontend/orchestr/actions","1.Frontend/4.Orchestr/Actions",{"title":278,"path":279,"stem":280},"Caching","/frontend/orchestr/caching","1.Frontend/4.Orchestr/Caching",{"title":282,"path":283,"stem":284},"Middleware","/frontend/orchestr/middleware","1.Frontend/4.Orchestr/Middleware",{"title":286,"path":287,"stem":288},"Queries & Links","/frontend/orchestr/queries","1.Frontend/4.Orchestr/Queries",{"title":290,"path":291,"stem":292},"Component Resolvers","/frontend/orchestr/component-resolvers","1.Frontend/4.Orchestr/component-resolvers",{"title":294,"path":295,"stem":296},"Filters","/frontend/orchestr/filters","1.Frontend/4.Orchestr/filters",{"title":298,"path":299,"stem":300},"URL Query Parameters","/frontend/orchestr/url-query-params","1.Frontend/4.Orchestr/url-query-params",{"title":302,"path":303,"stem":304},"Orchestr Wire Format","/frontend/orchestr/wire-format","1.Frontend/4.Orchestr/wire-format",{"title":306,"path":307,"stem":308,"children":309},"API Reference","/frontend/api-reference","1.Frontend/99.api-reference/0.index",[310,311,368,371,396,412,420,431,439],{"title":306,"path":307,"stem":308},{"title":312,"path":313,"stem":314,"children":315,"page":55},"Entities","/frontend/api-reference/entities","1.Frontend/99.api-reference/01.entities",[316,320,324,328,332,336,340,344,348,352,356,360,364],{"title":317,"path":318,"stem":319},"Product","/frontend/api-reference/entities/product","1.Frontend/99.api-reference/01.entities/1.product",{"title":321,"path":322,"stem":323},"SuggestedSearch","/frontend/api-reference/entities/suggested-search","1.Frontend/99.api-reference/01.entities/10.suggested-search",{"title":325,"path":326,"stem":327},"SuggestedSearchEntry","/frontend/api-reference/entities/suggested-search-entry","1.Frontend/99.api-reference/01.entities/11.suggested-search-entry",{"title":329,"path":330,"stem":331},"BlogCollection","/frontend/api-reference/entities/blog-collection","1.Frontend/99.api-reference/01.entities/12.blog-collection",{"title":333,"path":334,"stem":335},"Comment","/frontend/api-reference/entities/comment","1.Frontend/99.api-reference/01.entities/13.comment",{"title":337,"path":338,"stem":339},"ProductVariant","/frontend/api-reference/entities/product-variant","1.Frontend/99.api-reference/01.entities/2.product-variant",{"title":341,"path":342,"stem":343},"Category","/frontend/api-reference/entities/category","1.Frontend/99.api-reference/01.entities/3.category",{"title":345,"path":346,"stem":347},"Cart","/frontend/api-reference/entities/cart","1.Frontend/99.api-reference/01.entities/4.cart",{"title":349,"path":350,"stem":351},"CartItem","/frontend/api-reference/entities/cart-item","1.Frontend/99.api-reference/01.entities/5.cart-item",{"title":353,"path":354,"stem":355},"Review","/frontend/api-reference/entities/review","1.Frontend/99.api-reference/01.entities/6.review",{"title":357,"path":358,"stem":359},"BreadcrumbItem","/frontend/api-reference/entities/breadcrumb-item","1.Frontend/99.api-reference/01.entities/7.breadcrumb-item",{"title":361,"path":362,"stem":363},"MenuItem","/frontend/api-reference/entities/menu-item","1.Frontend/99.api-reference/01.entities/8.menu-item",{"title":365,"path":366,"stem":367},"BlogPost","/frontend/api-reference/entities/blog-post","1.Frontend/99.api-reference/01.entities/9.blog-post",{"title":188,"path":369,"stem":370},"/frontend/api-reference/page-types","1.Frontend/99.api-reference/02.page-types",{"title":372,"path":373,"stem":374,"children":375,"page":55},"Common Types","/frontend/api-reference/common-types","1.Frontend/99.api-reference/03.common-types",[376,380,384,388,392],{"title":377,"path":378,"stem":379},"Link","/frontend/api-reference/common-types/link","1.Frontend/99.api-reference/03.common-types/1.link",{"title":381,"path":382,"stem":383},"Media","/frontend/api-reference/common-types/media","1.Frontend/99.api-reference/03.common-types/2.media",{"title":385,"path":386,"stem":387},"Money","/frontend/api-reference/common-types/money","1.Frontend/99.api-reference/03.common-types/3.money",{"title":389,"path":390,"stem":391},"UnitPrice","/frontend/api-reference/common-types/unit-price","1.Frontend/99.api-reference/03.common-types/4.unit-price",{"title":393,"path":394,"stem":395},"Measurement","/frontend/api-reference/common-types/measurement","1.Frontend/99.api-reference/03.common-types/5.measurement",{"title":397,"path":398,"stem":399,"children":400,"page":55},"Ecommerce","/frontend/api-reference/ecommerce","1.Frontend/99.api-reference/10.ecommerce",[401,404,408],{"title":274,"path":402,"stem":403},"/frontend/api-reference/ecommerce/actions","1.Frontend/99.api-reference/10.ecommerce/1.actions",{"title":405,"path":406,"stem":407},"Queries","/frontend/api-reference/ecommerce/queries","1.Frontend/99.api-reference/10.ecommerce/2.queries",{"title":409,"path":410,"stem":411},"Errors","/frontend/api-reference/ecommerce/errors","1.Frontend/99.api-reference/10.ecommerce/3.errors",{"title":413,"path":414,"stem":415,"children":416,"page":55},"Newsletter","/frontend/api-reference/newsletter","1.Frontend/99.api-reference/11.newsletter",[417],{"title":274,"path":418,"stem":419},"/frontend/api-reference/newsletter/actions","1.Frontend/99.api-reference/11.newsletter/1.actions",{"title":421,"path":422,"stem":423,"children":424,"page":55},"Blog","/frontend/api-reference/blog","1.Frontend/99.api-reference/12.blog",[425,428],{"title":405,"path":426,"stem":427},"/frontend/api-reference/blog/queries","1.Frontend/99.api-reference/12.blog/1.queries",{"title":409,"path":429,"stem":430},"/frontend/api-reference/blog/errors","1.Frontend/99.api-reference/12.blog/2.errors",{"title":432,"path":433,"stem":434,"children":435,"page":55},"Suggested Search","/frontend/api-reference/suggested-search","1.Frontend/99.api-reference/13.suggested-search",[436],{"title":405,"path":437,"stem":438},"/frontend/api-reference/suggested-search/queries","1.Frontend/99.api-reference/13.suggested-search/1.queries",{"title":208,"path":440,"stem":441,"children":442,"page":55},"/frontend/api-reference/tracking","1.Frontend/99.api-reference/14.tracking",[443],{"title":274,"path":444,"stem":445},"/frontend/api-reference/tracking/actions","1.Frontend/99.api-reference/14.tracking/1.actions",{"title":447,"path":448,"stem":449,"children":450},"Apps","/apps","2.Apps/0.index",[451,452,528,601],{"title":447,"path":448,"stem":449},{"title":453,"path":454,"stem":455,"children":456},"App Development","/apps/app-development","2.Apps/app-development/0.index",[457,458,480,484,488,492,496,500,504,508,512,516,520,524],{"title":453,"path":454,"stem":455},{"title":459,"path":460,"stem":461,"children":462},"Guides","/apps/app-development/guides","2.Apps/app-development/99.guides/0.index",[463,464,468,472,476],{"title":459,"path":460,"stem":461},{"title":465,"path":466,"stem":467},"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":469,"path":470,"stem":471},"Section config standard","/apps/app-development/guides/section-config-standard","2.Apps/app-development/99.guides/section-config-standard",{"title":473,"path":474,"stem":475},"Shared field factories","/apps/app-development/guides/shared-field-factories","2.Apps/app-development/99.guides/shared-field-factories",{"title":477,"path":478,"stem":479},"How to write CSS","/apps/app-development/guides/writing-css","2.Apps/app-development/99.guides/writing-css",{"title":481,"path":482,"stem":483},"App Configuration","/apps/app-development/app-configuration","2.Apps/app-development/app-configuration",{"title":485,"path":486,"stem":487},"App Starter","/apps/app-development/app-starter","2.Apps/app-development/app-starter",{"title":489,"path":490,"stem":491},"Best Practice","/apps/app-development/best-practice","2.Apps/app-development/best-practice",{"title":493,"path":494,"stem":495},"Block Definitions","/apps/app-development/block-definitions","2.Apps/app-development/block-definitions",{"title":497,"path":498,"stem":499},"Coding Standards","/apps/app-development/coding-standards","2.Apps/app-development/coding-standards",{"title":501,"path":502,"stem":503},"Consent Adapters","/apps/app-development/consent-adapters","2.Apps/app-development/consent-adapters",{"title":505,"path":506,"stem":507},"Consuming Query Fields","/apps/app-development/consuming-query-fields","2.Apps/app-development/consuming-query-fields",{"title":509,"path":510,"stem":511},"Implementation Overview","/apps/app-development/implementation-overview","2.Apps/app-development/implementation-overview",{"title":513,"path":514,"stem":515},"Platform Dependencies","/apps/app-development/platform-dependencies","2.Apps/app-development/platform-dependencies",{"title":517,"path":518,"stem":519},"Schema Fields","/apps/app-development/schema-fields","2.Apps/app-development/schema-fields",{"title":521,"path":522,"stem":523},"Section Definitions","/apps/app-development/section-definitions","2.Apps/app-development/section-definitions",{"title":525,"path":526,"stem":527},"Studio Icons","/apps/app-development/studio-icons","2.Apps/app-development/studio-icons",{"title":529,"path":530,"stem":531,"children":532,"page":55},"App Docs","/apps/app-docs","2.Apps/app-docs",[533,537,541,545,549,553,557,561,565,569,573,577,581,585,589,593,597],{"title":534,"path":535,"stem":536},"Adobe Commerce","/apps/app-docs/adobe-commerce","2.Apps/app-docs/adobe-commerce",{"title":538,"path":539,"stem":540},"B2Bsellers","/apps/app-docs/b2bsellers","2.Apps/app-docs/b2bsellers",{"title":542,"path":543,"stem":544},"Battery Included","/apps/app-docs/battery-included","2.Apps/app-docs/battery-included",{"title":546,"path":547,"stem":548},"CCM19","/apps/app-docs/ccm19","2.Apps/app-docs/ccm19",{"title":550,"path":551,"stem":552},"Cookiebot","/apps/app-docs/cookiebot","2.Apps/app-docs/cookiebot",{"title":554,"path":555,"stem":556},"Google Tag Manager (GTM)","/apps/app-docs/gtm","2.Apps/app-docs/gtm",{"title":558,"path":559,"stem":560},"Hygraph","/apps/app-docs/hygraph","2.Apps/app-docs/hygraph",{"title":562,"path":563,"stem":564},"Nimstrata Google Retail API","/apps/app-docs/nimstrata","2.Apps/app-docs/nimstrata",{"title":566,"path":567,"stem":568},"Pimcore","/apps/app-docs/pimcore","2.Apps/app-docs/pimcore",{"title":570,"path":571,"stem":572},"Commercetools","/apps/app-docs/commercetools","2.apps/app-docs/commercetools",{"title":574,"path":575,"stem":576},"Emporix","/apps/app-docs/emporix","2.apps/app-docs/emporix",{"title":578,"path":579,"stem":580},"Klaviyo","/apps/app-docs/klaviyo","2.apps/app-docs/klaviyo",{"title":582,"path":583,"stem":584},"OXID eShop","/apps/app-docs/oxid","2.apps/app-docs/oxid",{"title":586,"path":587,"stem":588},"Shopify","/apps/app-docs/shopify","2.apps/app-docs/shopify",{"title":590,"path":591,"stem":592},"Shopware","/apps/app-docs/shopware","2.apps/app-docs/shopware",{"title":594,"path":595,"stem":596},"Vercel Analytics","/apps/app-docs/vercel-analytics","2.apps/app-docs/vercel-analytics",{"title":598,"path":599,"stem":600},"Vercel Speed Insights","/apps/app-docs/vercel-speed-insights","2.apps/app-docs/vercel-speed-insights",{"title":602,"path":603,"stem":604,"children":605,"page":55},"Essentials","/apps/essentials","2.Apps/essentials",[606,610,614],{"title":607,"path":608,"stem":609},"Legal","/apps/essentials/legal","2.Apps/essentials/legal",{"title":611,"path":612,"stem":613},"Mailer","/apps/essentials/mailer","2.Apps/essentials/mailer",{"title":216,"path":615,"stem":616},"/apps/essentials/seo","2.Apps/essentials/seo",{"title":618,"path":619,"stem":620,"children":621},"Laioutr UI","/laioutr-ui","3.laioutr-ui/0.index",[622,623,655,661,667,853,859,865,919,937,1067],{"title":618,"path":619,"stem":620},{"title":5,"path":624,"stem":625,"children":626},"/laioutr-ui/getting-started","3.laioutr-ui/01.getting-started/0.index",[627,628,632,636,640,644,648,652],{"title":5,"path":624,"stem":625},{"title":629,"path":630,"stem":631},"Browser support","/laioutr-ui/getting-started/browser-support","3.laioutr-ui/01.getting-started/1.browser-support",{"title":633,"path":634,"stem":635},"Common Data","/laioutr-ui/getting-started/common-data","3.laioutr-ui/01.getting-started/99.common-data",{"title":637,"path":638,"stem":639},"CSS Layers","/laioutr-ui/getting-started/css-layers","3.laioutr-ui/01.getting-started/css-layers",{"title":641,"path":642,"stem":643},"Figma Kit","/laioutr-ui/getting-started/figma-kit","3.laioutr-ui/01.getting-started/figma-kit",{"title":645,"path":646,"stem":647},"Surface Tone","/laioutr-ui/getting-started/surface-tone","3.laioutr-ui/01.getting-started/surface-tone",{"title":649,"path":650,"stem":651},"Theming","/laioutr-ui/getting-started/theming","3.laioutr-ui/01.getting-started/theming",{"title":212,"path":653,"stem":654},"/laioutr-ui/getting-started/z-ordering","3.laioutr-ui/01.getting-started/z-ordering",{"title":656,"path":657,"stem":658,"children":659},"B2B","/laioutr-ui/b2b","3.laioutr-ui/b2b/0.index",[660],{"title":656,"path":657,"stem":658},{"title":662,"path":663,"stem":664,"children":665},"Booking","/laioutr-ui/booking","3.laioutr-ui/booking/0.index",[666],{"title":662,"path":663,"stem":664},{"title":668,"path":669,"stem":670,"children":671},"CMS","/laioutr-ui/cms","3.laioutr-ui/cms/0.index",[672,673,698,710,714,718,722,726,730,734,746,767,788,804],{"title":668,"path":669,"stem":670},{"title":674,"path":675,"stem":676,"children":677,"page":55},"Banner","/laioutr-ui/cms/banner","3.laioutr-ui/cms/banner",[678,682,686,690,694],{"title":679,"path":680,"stem":681},"Banner Basic","/laioutr-ui/cms/banner/banner-basic","3.laioutr-ui/cms/banner/banner-basic",{"title":683,"path":684,"stem":685},"Banner Integrated","/laioutr-ui/cms/banner/banner-integrated","3.laioutr-ui/cms/banner/banner-integrated",{"title":687,"path":688,"stem":689},"Banner Showcase","/laioutr-ui/cms/banner/banner-showcase","3.laioutr-ui/cms/banner/banner-showcase",{"title":691,"path":692,"stem":693},"Media + Text","/laioutr-ui/cms/banner/media-text","3.laioutr-ui/cms/banner/media-text",{"title":695,"path":696,"stem":697},"USP Banner","/laioutr-ui/cms/banner/usp-banner","3.laioutr-ui/cms/banner/usp-banner",{"title":421,"path":699,"stem":700,"children":701,"page":55},"/laioutr-ui/cms/blog","3.laioutr-ui/cms/blog",[702,706],{"title":703,"path":704,"stem":705},"Blog Post Detail","/laioutr-ui/cms/blog/blog-post-detail","3.laioutr-ui/cms/blog/blog-post-detail",{"title":707,"path":708,"stem":709},"Blog Post Listing","/laioutr-ui/cms/blog/blog-post-listing","3.laioutr-ui/cms/blog/blog-post-listing",{"title":711,"path":712,"stem":713},"Brand Hero","/laioutr-ui/cms/brand-hero","3.laioutr-ui/cms/brand-hero",{"title":715,"path":716,"stem":717},"Brand List","/laioutr-ui/cms/brand-list","3.laioutr-ui/cms/brand-list",{"title":719,"path":720,"stem":721},"Container","/laioutr-ui/cms/container","3.laioutr-ui/cms/container",{"title":723,"path":724,"stem":725},"Content Grid","/laioutr-ui/cms/content-grid","3.laioutr-ui/cms/content-grid",{"title":727,"path":728,"stem":729},"Editorial Grid","/laioutr-ui/cms/editorial-grid","3.laioutr-ui/cms/editorial-grid",{"title":731,"path":732,"stem":733},"Media Gallery","/laioutr-ui/cms/media-gallery","3.laioutr-ui/cms/media-gallery",{"title":413,"path":735,"stem":736,"children":737,"page":55},"/laioutr-ui/cms/newsletter","3.laioutr-ui/cms/newsletter",[738,742],{"title":739,"path":740,"stem":741},"Email Input Form","/laioutr-ui/cms/newsletter/email-input-form","3.laioutr-ui/cms/newsletter/email-input-form",{"title":743,"path":744,"stem":745},"Newsletter Registration","/laioutr-ui/cms/newsletter/newsletter-registration","3.laioutr-ui/cms/newsletter/newsletter-registration",{"title":747,"path":748,"stem":749,"children":750,"page":55},"Popups","/laioutr-ui/cms/popups","3.laioutr-ui/cms/popups",[751,755,759,763],{"title":752,"path":753,"stem":754},"PopUp","/laioutr-ui/cms/popups/pop-up","3.laioutr-ui/cms/popups/pop-up",{"title":756,"path":757,"stem":758},"PopUp Info","/laioutr-ui/cms/popups/pop-up-info","3.laioutr-ui/cms/popups/pop-up-info",{"title":760,"path":761,"stem":762},"PopUp Newsletter","/laioutr-ui/cms/popups/pop-up-newsletter","3.laioutr-ui/cms/popups/pop-up-newsletter",{"title":764,"path":765,"stem":766},"PopUp Promotion","/laioutr-ui/cms/popups/pop-up-promotion","3.laioutr-ui/cms/popups/pop-up-promotion",{"title":768,"path":769,"stem":770,"children":771,"page":55},"Quotes","/laioutr-ui/cms/quotes","3.laioutr-ui/cms/quotes",[772,776,780,784],{"title":773,"path":774,"stem":775},"Persona Quote","/laioutr-ui/cms/quotes/persona-quote","3.laioutr-ui/cms/quotes/persona-quote",{"title":777,"path":778,"stem":779},"Persona Quote Slider","/laioutr-ui/cms/quotes/persona-quote-slider","3.laioutr-ui/cms/quotes/persona-quote-slider",{"title":781,"path":782,"stem":783},"Quote Card","/laioutr-ui/cms/quotes/quote-card","3.laioutr-ui/cms/quotes/quote-card",{"title":785,"path":786,"stem":787},"Quote Card Slider","/laioutr-ui/cms/quotes/quote-card-slider","3.laioutr-ui/cms/quotes/quote-card-slider",{"title":789,"path":790,"stem":791,"children":792,"page":55},"Reviews","/laioutr-ui/cms/reviews","3.laioutr-ui/cms/reviews",[793,796,800],{"title":353,"path":794,"stem":795},"/laioutr-ui/cms/reviews/review","3.laioutr-ui/cms/reviews/review",{"title":797,"path":798,"stem":799},"Review Form","/laioutr-ui/cms/reviews/review-form","3.laioutr-ui/cms/reviews/review-form",{"title":801,"path":802,"stem":803},"Social Share","/laioutr-ui/cms/reviews/social-share","3.laioutr-ui/cms/reviews/social-share",{"title":805,"path":806,"stem":807,"children":808,"page":55},"Slider","/laioutr-ui/cms/slider","3.laioutr-ui/cms/slider",[809,813,817,821,825,829,833,837,841,845,849],{"title":810,"path":811,"stem":812},"Content Slider","/laioutr-ui/cms/slider/content-slider","3.laioutr-ui/cms/slider/content-slider",{"title":814,"path":815,"stem":816},"Hero Slider","/laioutr-ui/cms/slider/hero-slider","3.laioutr-ui/cms/slider/hero-slider",{"title":818,"path":819,"stem":820},"Logo Grid","/laioutr-ui/cms/slider/logo-grid","3.laioutr-ui/cms/slider/logo-grid",{"title":822,"path":823,"stem":824},"Logo Slider","/laioutr-ui/cms/slider/logo-slider","3.laioutr-ui/cms/slider/logo-slider",{"title":826,"path":827,"stem":828},"Swiper Arrows","/laioutr-ui/cms/slider/swiper-arrows","3.laioutr-ui/cms/slider/swiper-arrows",{"title":830,"path":831,"stem":832},"Swiper Bullets","/laioutr-ui/cms/slider/swiper-bullets","3.laioutr-ui/cms/slider/swiper-bullets",{"title":834,"path":835,"stem":836},"Swiper Chrome","/laioutr-ui/cms/slider/swiper-chrome","3.laioutr-ui/cms/slider/swiper-chrome",{"title":838,"path":839,"stem":840},"Swiper Nav Bar","/laioutr-ui/cms/slider/swiper-nav-bar","3.laioutr-ui/cms/slider/swiper-nav-bar",{"title":842,"path":843,"stem":844},"Swiper Numbers","/laioutr-ui/cms/slider/swiper-numbers","3.laioutr-ui/cms/slider/swiper-numbers",{"title":846,"path":847,"stem":848},"Swiper Scrollbar","/laioutr-ui/cms/slider/swiper-scrollbar","3.laioutr-ui/cms/slider/swiper-scrollbar",{"title":850,"path":851,"stem":852},"Thumbnails Slider","/laioutr-ui/cms/slider/thumbnails-slider","3.laioutr-ui/cms/slider/thumbnails-slider",{"title":854,"path":855,"stem":856,"children":857},"Marketplace","/laioutr-ui/marketplace","3.laioutr-ui/marketplace/0.index",[858],{"title":854,"path":855,"stem":856},{"title":860,"path":861,"stem":862,"children":863},"Multichannel","/laioutr-ui/multichannel","3.laioutr-ui/multichannel/0.index",[864],{"title":860,"path":861,"stem":862},{"title":866,"path":867,"stem":868,"children":869},"Navigation & Headers","/laioutr-ui/navigation","3.laioutr-ui/navigation/0.index",[870,871,875,879,883,887,891,895,899,903,907,911,915],{"title":866,"path":867,"stem":868},{"title":872,"path":873,"stem":874},"Breadcrumbs","/laioutr-ui/navigation/breadcrumbs","3.laioutr-ui/navigation/breadcrumbs",{"title":876,"path":877,"stem":878},"Footer","/laioutr-ui/navigation/footer","3.laioutr-ui/navigation/footer",{"title":880,"path":881,"stem":882},"Footer Menu","/laioutr-ui/navigation/footer-menu","3.laioutr-ui/navigation/footer-menu",{"title":884,"path":885,"stem":886},"Header Basic","/laioutr-ui/navigation/header-basic","3.laioutr-ui/navigation/header-basic",{"title":888,"path":889,"stem":890},"Header Shop","/laioutr-ui/navigation/header-shop","3.laioutr-ui/navigation/header-shop",{"title":892,"path":893,"stem":894},"Mega Menu","/laioutr-ui/navigation/mega-menu","3.laioutr-ui/navigation/mega-menu",{"title":896,"path":897,"stem":898},"Menu Side by Side","/laioutr-ui/navigation/menu-side-by-side","3.laioutr-ui/navigation/menu-side-by-side",{"title":900,"path":901,"stem":902},"Mobile Menu (Basic)","/laioutr-ui/navigation/mobile-menu-basic","3.laioutr-ui/navigation/mobile-menu-basic",{"title":904,"path":905,"stem":906},"Mobile Menu (Shop)","/laioutr-ui/navigation/mobile-menu-shop","3.laioutr-ui/navigation/mobile-menu-shop",{"title":908,"path":909,"stem":910},"Page Not Found","/laioutr-ui/navigation/page-not-found","3.laioutr-ui/navigation/page-not-found",{"title":912,"path":913,"stem":914},"Search Auto-Suggest","/laioutr-ui/navigation/search-auto-suggest","3.laioutr-ui/navigation/search-auto-suggest",{"title":916,"path":917,"stem":918},"Top Bar","/laioutr-ui/navigation/top-bar","3.laioutr-ui/navigation/top-bar",{"title":920,"path":921,"stem":922,"children":923},"SaaS","/laioutr-ui/saas","3.laioutr-ui/saas/0.index",[924,925,929,933],{"title":920,"path":921,"stem":922},{"title":926,"path":927,"stem":928},"Plan Card","/laioutr-ui/saas/plan-card","3.laioutr-ui/saas/plan-card",{"title":930,"path":931,"stem":932},"Plan Card Slider","/laioutr-ui/saas/plan-card-slider","3.laioutr-ui/saas/plan-card-slider",{"title":934,"path":935,"stem":936},"Plan Comparison Table","/laioutr-ui/saas/plan-comparison-table","3.laioutr-ui/saas/plan-comparison-table",{"title":938,"path":939,"stem":940,"children":941},"Shop","/laioutr-ui/shop","3.laioutr-ui/shop/0.index",[942,943,971,975,979,983,987,1043,1047,1051,1055,1059,1063],{"title":938,"path":939,"stem":940},{"title":345,"path":944,"stem":945,"children":946,"page":55},"/laioutr-ui/shop/cart","3.laioutr-ui/shop/cart",[947,951,955,959,963,967],{"title":948,"path":949,"stem":950},"Cart Coupon Code Accordion","/laioutr-ui/shop/cart/cart-coupon-code-accordion","3.laioutr-ui/shop/cart/cart-coupon-code-accordion",{"title":952,"path":953,"stem":954},"Cart List Item","/laioutr-ui/shop/cart/cart-list-item","3.laioutr-ui/shop/cart/cart-list-item",{"title":956,"path":957,"stem":958},"Cart Sheet","/laioutr-ui/shop/cart/cart-sheet","3.laioutr-ui/shop/cart/cart-sheet",{"title":960,"path":961,"stem":962},"Cart Summary Box","/laioutr-ui/shop/cart/cart-summary-box","3.laioutr-ui/shop/cart/cart-summary-box",{"title":964,"path":965,"stem":966},"Empty State Cart","/laioutr-ui/shop/cart/empty-state-cart","3.laioutr-ui/shop/cart/empty-state-cart",{"title":968,"path":969,"stem":970},"Free Delivery Progress","/laioutr-ui/shop/cart/free-delivery-progress","3.laioutr-ui/shop/cart/free-delivery-progress",{"title":972,"path":973,"stem":974},"Category Card Grid","/laioutr-ui/shop/category-card-grid","3.laioutr-ui/shop/category-card-grid",{"title":976,"path":977,"stem":978},"Category Card Slider","/laioutr-ui/shop/category-card-slider","3.laioutr-ui/shop/category-card-slider",{"title":980,"path":981,"stem":982},"Filter Bar","/laioutr-ui/shop/filter-bar","3.laioutr-ui/shop/filter-bar",{"title":984,"path":985,"stem":986},"Filter Off Canvas","/laioutr-ui/shop/filter-off-canvas","3.laioutr-ui/shop/filter-off-canvas",{"title":988,"path":989,"stem":990,"children":991,"page":55},"Product Detail","/laioutr-ui/shop/product-detail","3.laioutr-ui/shop/product-detail",[992,996,1000,1004,1008,1012,1015,1019,1023,1027,1031,1035,1039],{"title":993,"path":994,"stem":995},"Add to Cart","/laioutr-ui/shop/product-detail/add-to-cart","3.laioutr-ui/shop/product-detail/add-to-cart",{"title":997,"path":998,"stem":999},"Benefits Box","/laioutr-ui/shop/product-detail/benefits-box","3.laioutr-ui/shop/product-detail/benefits-box",{"title":1001,"path":1002,"stem":1003},"Coupon Box","/laioutr-ui/shop/product-detail/coupon-box","3.laioutr-ui/shop/product-detail/coupon-box",{"title":1005,"path":1006,"stem":1007},"Energy Label","/laioutr-ui/shop/product-detail/energy-label","3.laioutr-ui/shop/product-detail/energy-label",{"title":1009,"path":1010,"stem":1011},"Price Info","/laioutr-ui/shop/product-detail/price-info","3.laioutr-ui/shop/product-detail/price-info",{"title":988,"path":1013,"stem":1014},"/laioutr-ui/shop/product-detail/product-detail","3.laioutr-ui/shop/product-detail/product-detail",{"title":1016,"path":1017,"stem":1018},"Product Image Gallery","/laioutr-ui/shop/product-detail/product-image-gallery","3.laioutr-ui/shop/product-detail/product-image-gallery",{"title":1020,"path":1021,"stem":1022},"Product Title","/laioutr-ui/shop/product-detail/product-title","3.laioutr-ui/shop/product-detail/product-title",{"title":1024,"path":1025,"stem":1026},"Quantity Discount","/laioutr-ui/shop/product-detail/quantity-discount","3.laioutr-ui/shop/product-detail/quantity-discount",{"title":1028,"path":1029,"stem":1030},"Variant Off Canvas","/laioutr-ui/shop/product-detail/variant-off-canvas","3.laioutr-ui/shop/product-detail/variant-off-canvas",{"title":1032,"path":1033,"stem":1034},"Variant Selector Configurator","/laioutr-ui/shop/product-detail/variant-selector-configurator","3.laioutr-ui/shop/product-detail/variant-selector-configurator",{"title":1036,"path":1037,"stem":1038},"Variant Selector (Multiple)","/laioutr-ui/shop/product-detail/variant-selector-multiple","3.laioutr-ui/shop/product-detail/variant-selector-multiple",{"title":1040,"path":1041,"stem":1042},"Variant Selector Options","/laioutr-ui/shop/product-detail/variant-selector-options","3.laioutr-ui/shop/product-detail/variant-selector-options",{"title":1044,"path":1045,"stem":1046},"Product Listing Grid","/laioutr-ui/shop/product-listing-grid","3.laioutr-ui/shop/product-listing-grid",{"title":1048,"path":1049,"stem":1050},"Product Slider","/laioutr-ui/shop/product-slider","3.laioutr-ui/shop/product-slider",{"title":1052,"path":1053,"stem":1054},"Product Slider Showcase","/laioutr-ui/shop/product-slider-showcase","3.laioutr-ui/shop/product-slider-showcase",{"title":1056,"path":1057,"stem":1058},"Product Tile (Basic)","/laioutr-ui/shop/product-tile-basic","3.laioutr-ui/shop/product-tile-basic",{"title":1060,"path":1061,"stem":1062},"Search Result Hero","/laioutr-ui/shop/search-result-hero","3.laioutr-ui/shop/search-result-hero",{"title":1064,"path":1065,"stem":1066},"Sort Modes","/laioutr-ui/shop/sort-modes","3.laioutr-ui/shop/sort-modes",{"title":1068,"path":1069,"stem":1070,"children":1071},"UI Kit","/laioutr-ui/ui-kit","3.laioutr-ui/ui-kit/0.index",[1072,1073,1217,1241,1262,1275,1312,1421],{"title":1068,"path":1069,"stem":1070},{"title":1074,"path":1075,"stem":1076,"children":1077,"page":55},"General","/laioutr-ui/ui-kit/general","3.laioutr-ui/ui-kit/01.general",[1078,1082,1086,1090,1094,1098,1102,1106,1110,1114,1118,1122,1125,1129,1133,1137,1141,1145,1149,1153,1157,1161,1165,1169,1173,1177,1181,1185,1189,1193,1197,1201,1205,1209,1213],{"title":1079,"path":1080,"stem":1081},"Accordion","/laioutr-ui/ui-kit/general/accordion","3.laioutr-ui/ui-kit/01.general/Accordion",{"title":1083,"path":1084,"stem":1085},"Avatar","/laioutr-ui/ui-kit/general/avatar","3.laioutr-ui/ui-kit/01.general/Avatar",{"title":1087,"path":1088,"stem":1089},"Backdrop","/laioutr-ui/ui-kit/general/backdrop","3.laioutr-ui/ui-kit/01.general/Backdrop",{"title":1091,"path":1092,"stem":1093},"Dropdown Menu","/laioutr-ui/ui-kit/general/dropdownmenu","3.laioutr-ui/ui-kit/01.general/DropdownMenu",{"title":1095,"path":1096,"stem":1097},"Edge Glow","/laioutr-ui/ui-kit/general/edgeglow","3.laioutr-ui/ui-kit/01.general/EdgeGlow",{"title":1099,"path":1100,"stem":1101},"Empty State","/laioutr-ui/ui-kit/general/emptystate","3.laioutr-ui/ui-kit/01.general/EmptyState",{"title":1103,"path":1104,"stem":1105},"Icon","/laioutr-ui/ui-kit/general/icon","3.laioutr-ui/ui-kit/01.general/Icon",{"title":1107,"path":1108,"stem":1109},"Iframe","/laioutr-ui/ui-kit/general/iframe","3.laioutr-ui/ui-kit/01.general/Iframe",{"title":1111,"path":1112,"stem":1113},"Image Contrast Overlay","/laioutr-ui/ui-kit/general/imagecontrastoverlay","3.laioutr-ui/ui-kit/01.general/ImageContrastOverlay",{"title":1115,"path":1116,"stem":1117},"Lightbox","/laioutr-ui/ui-kit/general/lightbox","3.laioutr-ui/ui-kit/01.general/Lightbox",{"title":1119,"path":1120,"stem":1121},"Loading Spinner","/laioutr-ui/ui-kit/general/loadingspinner","3.laioutr-ui/ui-kit/01.general/LoadingSpinner",{"title":381,"path":1123,"stem":1124},"/laioutr-ui/ui-kit/general/media","3.laioutr-ui/ui-kit/01.general/Media",{"title":1126,"path":1127,"stem":1128},"Navigation Bullets","/laioutr-ui/ui-kit/general/navigationbullets","3.laioutr-ui/ui-kit/01.general/NavigationBullets",{"title":1130,"path":1131,"stem":1132},"Placeholder","/laioutr-ui/ui-kit/general/placeholder","3.laioutr-ui/ui-kit/01.general/Placeholder",{"title":1134,"path":1135,"stem":1136},"Progress Bar","/laioutr-ui/ui-kit/general/progressbar","3.laioutr-ui/ui-kit/01.general/ProgressBar",{"title":1138,"path":1139,"stem":1140},"Scrollbar","/laioutr-ui/ui-kit/general/scrollbar","3.laioutr-ui/ui-kit/01.general/Scrollbar",{"title":1142,"path":1143,"stem":1144},"Swatch","/laioutr-ui/ui-kit/general/swatch","3.laioutr-ui/ui-kit/01.general/Swatch",{"title":1146,"path":1147,"stem":1148},"Thumbnail","/laioutr-ui/ui-kit/general/thumbnail","3.laioutr-ui/ui-kit/01.general/Thumbnail",{"title":1150,"path":1151,"stem":1152},"Tooltip","/laioutr-ui/ui-kit/general/tooltip","3.laioutr-ui/ui-kit/01.general/Tooltip",{"title":1154,"path":1155,"stem":1156},"Amount Pill","/laioutr-ui/ui-kit/general/amount-pill","3.laioutr-ui/ui-kit/01.general/amount-pill",{"title":1158,"path":1159,"stem":1160},"Dark Mode Switch","/laioutr-ui/ui-kit/general/dark-mode-switch","3.laioutr-ui/ui-kit/01.general/dark-mode-switch",{"title":1162,"path":1163,"stem":1164},"Language Switcher","/laioutr-ui/ui-kit/general/language-switcher","3.laioutr-ui/ui-kit/01.general/language-switcher",{"title":1166,"path":1167,"stem":1168},"Media Preview","/laioutr-ui/ui-kit/general/media-preview","3.laioutr-ui/ui-kit/01.general/media-preview",{"title":1170,"path":1171,"stem":1172},"Media Stage","/laioutr-ui/ui-kit/general/media-stage","3.laioutr-ui/ui-kit/01.general/media-stage",{"title":1174,"path":1175,"stem":1176},"Nav Link Item","/laioutr-ui/ui-kit/general/nav-link-item","3.laioutr-ui/ui-kit/01.general/nav-link-item",{"title":1178,"path":1179,"stem":1180},"Nav Section Heading","/laioutr-ui/ui-kit/general/nav-section-heading","3.laioutr-ui/ui-kit/01.general/nav-section-heading",{"title":1182,"path":1183,"stem":1184},"OnSurface","/laioutr-ui/ui-kit/general/on-surface","3.laioutr-ui/ui-kit/01.general/on-surface",{"title":1186,"path":1187,"stem":1188},"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":1190,"path":1191,"stem":1192},"Status Message","/laioutr-ui/ui-kit/general/status-message","3.laioutr-ui/ui-kit/01.general/status-message",{"title":1194,"path":1195,"stem":1196},"Stock Info Summary","/laioutr-ui/ui-kit/general/stock-info-summary","3.laioutr-ui/ui-kit/01.general/stock-info-summary",{"title":1198,"path":1199,"stem":1200},"Swatch Chip","/laioutr-ui/ui-kit/general/swatch-chip","3.laioutr-ui/ui-kit/01.general/swatch-chip",{"title":1202,"path":1203,"stem":1204},"Swatch Option","/laioutr-ui/ui-kit/general/swatch-option","3.laioutr-ui/ui-kit/01.general/swatch-option",{"title":1206,"path":1207,"stem":1208},"Swatch Summary","/laioutr-ui/ui-kit/general/swatch-summary","3.laioutr-ui/ui-kit/01.general/swatch-summary",{"title":1210,"path":1211,"stem":1212},"Zoom Level (Segmented)","/laioutr-ui/ui-kit/general/zoom-level-segmented","3.laioutr-ui/ui-kit/01.general/zoom-level-segmented",{"title":1214,"path":1215,"stem":1216},"Zoom Level (Stepper)","/laioutr-ui/ui-kit/general/zoom-level-stepper","3.laioutr-ui/ui-kit/01.general/zoom-level-stepper",{"title":1218,"path":1219,"stem":1220,"children":1221,"page":55},"Typography","/laioutr-ui/ui-kit/typography","3.laioutr-ui/ui-kit/02.typography",[1222,1226,1229,1233,1237],{"title":1223,"path":1224,"stem":1225},"Icon List","/laioutr-ui/ui-kit/typography/iconlist","3.laioutr-ui/ui-kit/02.typography/IconList",{"title":377,"path":1227,"stem":1228},"/laioutr-ui/ui-kit/typography/link","3.laioutr-ui/ui-kit/02.typography/Link",{"title":1230,"path":1231,"stem":1232},"Rich Content","/laioutr-ui/ui-kit/typography/richcontent","3.laioutr-ui/ui-kit/02.typography/RichContent",{"title":1234,"path":1235,"stem":1236},"Text","/laioutr-ui/ui-kit/typography/text","3.laioutr-ui/ui-kit/02.typography/Text",{"title":1238,"path":1239,"stem":1240},"Text Group","/laioutr-ui/ui-kit/typography/text-group","3.laioutr-ui/ui-kit/02.typography/text-group",{"title":1242,"path":1243,"stem":1244,"children":1245,"page":55},"Layout","/laioutr-ui/ui-kit/layout","3.laioutr-ui/ui-kit/03.layout",[1246,1250,1254,1258],{"title":1247,"path":1248,"stem":1249},"Grid Fill","/laioutr-ui/ui-kit/layout/gridfill","3.laioutr-ui/ui-kit/03.layout/GridFill",{"title":1251,"path":1252,"stem":1253},"Grid Masonry","/laioutr-ui/ui-kit/layout/gridmasonry","3.laioutr-ui/ui-kit/03.layout/GridMasonry",{"title":1255,"path":1256,"stem":1257},"Scroll Area","/laioutr-ui/ui-kit/layout/scrollarea","3.laioutr-ui/ui-kit/03.layout/ScrollArea",{"title":1259,"path":1260,"stem":1261},"Separator","/laioutr-ui/ui-kit/layout/separator","3.laioutr-ui/ui-kit/03.layout/Separator",{"title":1263,"path":1264,"stem":1265,"children":1266,"page":55},"Content","/laioutr-ui/ui-kit/content","3.laioutr-ui/ui-kit/04.content",[1267,1271],{"title":1268,"path":1269,"stem":1270},"Card","/laioutr-ui/ui-kit/content/card","3.laioutr-ui/ui-kit/04.content/Card",{"title":1272,"path":1273,"stem":1274},"Link Tile","/laioutr-ui/ui-kit/content/link-tile","3.laioutr-ui/ui-kit/04.content/link-tile",{"title":1276,"path":1277,"stem":1278,"children":1279,"page":55},"Surfaces","/laioutr-ui/ui-kit/surfaces","3.laioutr-ui/ui-kit/05.surfaces",[1280,1284,1288,1292,1296,1300,1304,1308],{"title":1281,"path":1282,"stem":1283},"Alert Dialog","/laioutr-ui/ui-kit/surfaces/alertdialog","3.laioutr-ui/ui-kit/05.surfaces/AlertDialog",{"title":1285,"path":1286,"stem":1287},"Popover","/laioutr-ui/ui-kit/surfaces/popover","3.laioutr-ui/ui-kit/05.surfaces/Popover",{"title":1289,"path":1290,"stem":1291},"Sheet","/laioutr-ui/ui-kit/surfaces/sheet","3.laioutr-ui/ui-kit/05.surfaces/Sheet",{"title":1293,"path":1294,"stem":1295},"Tabs","/laioutr-ui/ui-kit/surfaces/tabs","3.laioutr-ui/ui-kit/05.surfaces/Tabs",{"title":1297,"path":1298,"stem":1299},"Toast","/laioutr-ui/ui-kit/surfaces/toast","3.laioutr-ui/ui-kit/05.surfaces/Toast",{"title":1301,"path":1302,"stem":1303},"Toaster","/laioutr-ui/ui-kit/surfaces/toaster","3.laioutr-ui/ui-kit/05.surfaces/Toaster",{"title":1305,"path":1306,"stem":1307},"Context Menu","/laioutr-ui/ui-kit/surfaces/context-menu","3.laioutr-ui/ui-kit/05.surfaces/context-menu",{"title":1309,"path":1310,"stem":1311},"Navigation Menu","/laioutr-ui/ui-kit/surfaces/navigation-menu","3.laioutr-ui/ui-kit/05.surfaces/navigation-menu",{"title":1313,"path":1314,"stem":1315,"children":1316,"page":55},"Form","/laioutr-ui/ui-kit/form","3.laioutr-ui/ui-kit/06.form",[1317,1321,1325,1329,1333,1337,1341,1345,1349,1353,1357,1361,1365,1369,1373,1377,1381,1385,1389,1393,1397,1401,1405,1409,1413,1417],{"title":1318,"path":1319,"stem":1320},"Button","/laioutr-ui/ui-kit/form/button","3.laioutr-ui/ui-kit/06.form/Button",{"title":1322,"path":1323,"stem":1324},"Checkbox","/laioutr-ui/ui-kit/form/checkbox","3.laioutr-ui/ui-kit/06.form/Checkbox",{"title":1326,"path":1327,"stem":1328},"Field","/laioutr-ui/ui-kit/form/field","3.laioutr-ui/ui-kit/06.form/Field",{"title":1330,"path":1331,"stem":1332},"Input","/laioutr-ui/ui-kit/form/input","3.laioutr-ui/ui-kit/06.form/Input",{"title":1334,"path":1335,"stem":1336},"Label","/laioutr-ui/ui-kit/form/label","3.laioutr-ui/ui-kit/06.form/Label",{"title":1338,"path":1339,"stem":1340},"Load More","/laioutr-ui/ui-kit/form/loadmore","3.laioutr-ui/ui-kit/06.form/LoadMore",{"title":1342,"path":1343,"stem":1344},"Pagination","/laioutr-ui/ui-kit/form/pagination","3.laioutr-ui/ui-kit/06.form/Pagination",{"title":1346,"path":1347,"stem":1348},"Quantity Picker","/laioutr-ui/ui-kit/form/quantitypicker","3.laioutr-ui/ui-kit/06.form/QuantityPicker",{"title":1350,"path":1351,"stem":1352},"Select","/laioutr-ui/ui-kit/form/select","3.laioutr-ui/ui-kit/06.form/Select",{"title":1354,"path":1355,"stem":1356},"Switch","/laioutr-ui/ui-kit/form/switch","3.laioutr-ui/ui-kit/06.form/Switch",{"title":1358,"path":1359,"stem":1360},"Highlight Toggle","/laioutr-ui/ui-kit/form/highlight-toggle","3.laioutr-ui/ui-kit/06.form/highlight-toggle",{"title":1362,"path":1363,"stem":1364},"Icon Button","/laioutr-ui/ui-kit/form/icon-button","3.laioutr-ui/ui-kit/06.form/icon-button",{"title":1366,"path":1367,"stem":1368},"Input Autocomplete","/laioutr-ui/ui-kit/form/input-autocomplete","3.laioutr-ui/ui-kit/06.form/input-autocomplete",{"title":1370,"path":1371,"stem":1372},"Input Checkbox","/laioutr-ui/ui-kit/form/input-checkbox","3.laioutr-ui/ui-kit/06.form/input-checkbox",{"title":1374,"path":1375,"stem":1376},"Input Combobox","/laioutr-ui/ui-kit/form/input-combobox","3.laioutr-ui/ui-kit/06.form/input-combobox",{"title":1378,"path":1379,"stem":1380},"Input Group","/laioutr-ui/ui-kit/form/input-group","3.laioutr-ui/ui-kit/06.form/input-group",{"title":1382,"path":1383,"stem":1384},"Input Password","/laioutr-ui/ui-kit/form/input-password","3.laioutr-ui/ui-kit/06.form/input-password",{"title":1386,"path":1387,"stem":1388},"Input Pin","/laioutr-ui/ui-kit/form/input-pin","3.laioutr-ui/ui-kit/06.form/input-pin",{"title":1390,"path":1391,"stem":1392},"Input Radio","/laioutr-ui/ui-kit/form/input-radio","3.laioutr-ui/ui-kit/06.form/input-radio",{"title":1394,"path":1395,"stem":1396},"Input Rating","/laioutr-ui/ui-kit/form/input-rating","3.laioutr-ui/ui-kit/06.form/input-rating",{"title":1398,"path":1399,"stem":1400},"Input Search","/laioutr-ui/ui-kit/form/input-search","3.laioutr-ui/ui-kit/06.form/input-search",{"title":1402,"path":1403,"stem":1404},"Input Slider","/laioutr-ui/ui-kit/form/input-slider","3.laioutr-ui/ui-kit/06.form/input-slider",{"title":1406,"path":1407,"stem":1408},"Listbox","/laioutr-ui/ui-kit/form/listbox","3.laioutr-ui/ui-kit/06.form/listbox",{"title":1410,"path":1411,"stem":1412},"Option Tile (Image)","/laioutr-ui/ui-kit/form/option-tile-image","3.laioutr-ui/ui-kit/06.form/option-tile-image",{"title":1414,"path":1415,"stem":1416},"Option Tile (Text)","/laioutr-ui/ui-kit/form/option-tile-text","3.laioutr-ui/ui-kit/06.form/option-tile-text",{"title":1418,"path":1419,"stem":1420},"Variant Selection Card","/laioutr-ui/ui-kit/form/variant-selection-card","3.laioutr-ui/ui-kit/06.form/variant-selection-card",{"title":1422,"path":1423,"stem":1424,"children":1425,"page":55},"Indicators","/laioutr-ui/ui-kit/indicators","3.laioutr-ui/ui-kit/07.indicators",[1426,1430,1434,1438,1442,1446],{"title":1427,"path":1428,"stem":1429},"Badge","/laioutr-ui/ui-kit/indicators/badge","3.laioutr-ui/ui-kit/07.indicators/Badge",{"title":1431,"path":1432,"stem":1433},"Caption Flag","/laioutr-ui/ui-kit/indicators/captionflag","3.laioutr-ui/ui-kit/07.indicators/CaptionFlag",{"title":1435,"path":1436,"stem":1437},"Product Tile Flag","/laioutr-ui/ui-kit/indicators/producttileflag","3.laioutr-ui/ui-kit/07.indicators/ProductTileFlag",{"title":1439,"path":1440,"stem":1441},"Rating Summary","/laioutr-ui/ui-kit/indicators/ratingsummary","3.laioutr-ui/ui-kit/07.indicators/RatingSummary",{"title":1443,"path":1444,"stem":1445},"Stars Rating","/laioutr-ui/ui-kit/indicators/starsrating","3.laioutr-ui/ui-kit/07.indicators/StarsRating",{"title":1447,"path":1448,"stem":1449},"Badge Promotion","/laioutr-ui/ui-kit/indicators/badge-promotion","3.laioutr-ui/ui-kit/07.indicators/badge-promotion",{"title":1451,"path":1452,"stem":1453,"children":1454},"Hosting","/hosting","4.hosting/0.index",[1455,1456,1462,1492],{"title":1451,"path":1452,"stem":1453},{"title":1457,"path":1458,"stem":1459,"children":1460},"Laioutr Cloud","/hosting/laioutr-cloud","4.hosting/0.laioutr-cloud/0.index",[1461],{"title":1457,"path":1458,"stem":1459},{"title":1463,"path":1464,"stem":1465,"children":1466},"Hosting Adapter","/hosting/hosting-adapter","4.hosting/1.hosting-adapter/0.index",[1467,1468,1472,1476,1480,1484,1488],{"title":1463,"path":1464,"stem":1465},{"title":1469,"path":1470,"stem":1471},"AWS Adapter","/hosting/hosting-adapter/aws-adapter","4.hosting/1.hosting-adapter/aws-adapter",{"title":1473,"path":1474,"stem":1475},"Azure Adapter","/hosting/hosting-adapter/azure-adapter","4.hosting/1.hosting-adapter/azure-adapter",{"title":1477,"path":1478,"stem":1479},"Google Adapter","/hosting/hosting-adapter/google-adapter","4.hosting/1.hosting-adapter/google-adapter",{"title":1481,"path":1482,"stem":1483},"Netlify Adapter","/hosting/hosting-adapter/netlify-adapter","4.hosting/1.hosting-adapter/netlify-adapter",{"title":1485,"path":1486,"stem":1487},"Scale Commerce Adapter","/hosting/hosting-adapter/scale-commerce-adapter","4.hosting/1.hosting-adapter/scale-commerce-adapter",{"title":1489,"path":1490,"stem":1491},"Vercel Adapter","/hosting/hosting-adapter/vercel-adapter","4.hosting/1.hosting-adapter/vercel-adapter",{"title":1493,"path":1494,"stem":1495,"children":1496},"Bring Your Own Server (BYOS)","/hosting/bring-your-own-server-byos","4.hosting/2.bring-your-own-server-byos/0.index",[1497,1498,1502,1506,1510,1514,1518],{"title":1493,"path":1494,"stem":1495},{"title":1499,"path":1500,"stem":1501},"BYOS Agent","/hosting/bring-your-own-server-byos/byos-agent","4.hosting/2.bring-your-own-server-byos/byos-agent",{"title":1503,"path":1504,"stem":1505},"Changelog","/hosting/bring-your-own-server-byos/changelog","4.hosting/2.bring-your-own-server-byos/changelog",{"title":1507,"path":1508,"stem":1509},"DevOps Components","/hosting/bring-your-own-server-byos/devops","4.hosting/2.bring-your-own-server-byos/devops",{"title":1511,"path":1512,"stem":1513},"Infrastructure Requirements","/hosting/bring-your-own-server-byos/infrastructure","4.hosting/2.bring-your-own-server-byos/infrastructure",{"title":1515,"path":1516,"stem":1517},"Software Requirements","/hosting/bring-your-own-server-byos/software","4.hosting/2.bring-your-own-server-byos/software",{"title":1519,"path":1520,"stem":1521},"Webhook Configuration","/hosting/bring-your-own-server-byos/webhook-config","4.hosting/2.bring-your-own-server-byos/webhook-config",{"title":1523,"path":1524,"stem":1525,"children":1526},"Checkout","/checkout","5.Checkout/0.index",[1527],{"title":1523,"path":1524,"stem":1525},{"title":1529,"path":1530,"stem":1531,"children":1532},"Larry AI","/larry-ai","6.Larry-AI/0.index",[1533],{"title":1529,"path":1530,"stem":1531},{"title":641,"path":1535,"stem":1536,"children":1537},"/figma-kit","7.Figma Kit/0.index",[1538,1539,1555],{"title":641,"path":1535,"stem":1536},{"title":121,"path":1540,"stem":1541,"children":1542,"page":55},"/figma-kit/introduction","7.Figma Kit/1.Introduction",[1543,1547,1551],{"title":1544,"path":1545,"stem":1546},"How to Start","/figma-kit/introduction/howtostart","7.Figma Kit/1.Introduction/0.howtostart",{"title":1548,"path":1549,"stem":1550},"Figma Variables","/figma-kit/introduction/figma-variables","7.Figma Kit/1.Introduction/figma-variables",{"title":1552,"path":1553,"stem":1554},"Library Connections","/figma-kit/introduction/library-connections","7.Figma Kit/1.Introduction/library-connections",{"title":1556,"path":1557,"stem":1558,"children":1559,"page":55},"Kits","/figma-kit/kits","7.Figma Kit/Kits",[1560,1563,1566,1569,1573,1576,1580,1584,1587,1590],{"title":656,"path":1561,"stem":1562},"/figma-kit/kits/b2b","7.Figma Kit/Kits/b2b",{"title":662,"path":1564,"stem":1565},"/figma-kit/kits/booking","7.Figma Kit/Kits/booking",{"title":668,"path":1567,"stem":1568},"/figma-kit/kits/cms","7.Figma Kit/Kits/cms",{"title":1570,"path":1571,"stem":1572},"Inpage Navigation","/figma-kit/kits/inpage-navigation","7.Figma Kit/Kits/inpage-navigation",{"title":854,"path":1574,"stem":1575},"/figma-kit/kits/marketplace","7.Figma Kit/Kits/marketplace",{"title":1577,"path":1578,"stem":1579},"Retail & Multichannel","/figma-kit/kits/multichannel","7.Figma Kit/Kits/multichannel",{"title":1581,"path":1582,"stem":1583},"Navigation","/figma-kit/kits/navigation","7.Figma Kit/Kits/navigation",{"title":920,"path":1585,"stem":1586},"/figma-kit/kits/saas","7.Figma Kit/Kits/saas",{"title":938,"path":1588,"stem":1589},"/figma-kit/kits/shop","7.Figma Kit/Kits/shop",{"title":1068,"path":1591,"stem":1592},"/figma-kit/kits/ui-kit","7.Figma Kit/Kits/ui-kit",{"title":1594,"path":1595,"stem":1596,"children":1597},"Cockpit","/cockpit","8.Cockpit/0.index",[1598,1599,1629,1646,1663],{"title":1594,"path":1595,"stem":1596},{"title":154,"path":1600,"stem":1601,"children":1602,"page":55},"/cockpit/features","8.Cockpit/1.Features",[1603,1606,1610,1614,1618,1621,1625],{"title":447,"path":1604,"stem":1605},"/cockpit/features/apps","8.Cockpit/1.Features/apps",{"title":1607,"path":1608,"stem":1609},"Content (Collections)","/cockpit/features/content-collections","8.Cockpit/1.Features/content-collections",{"title":1611,"path":1612,"stem":1613},"Deployments","/cockpit/features/deployments","8.Cockpit/1.Features/deployments",{"title":1615,"path":1616,"stem":1617},"Markets","/cockpit/features/markets","8.Cockpit/1.Features/markets",{"title":196,"path":1619,"stem":1620},"/cockpit/features/redirects","8.Cockpit/1.Features/redirects",{"title":1622,"path":1623,"stem":1624},"Studio","/cockpit/features/studio","8.Cockpit/1.Features/studio",{"title":1626,"path":1627,"stem":1628},"Translations","/cockpit/features/translations","8.Cockpit/1.Features/translations",{"title":1630,"path":1631,"stem":1632,"children":1633,"page":55},"Project Settings","/cockpit/project-settings","8.Cockpit/2.Project-Settings",[1634,1638,1642],{"title":1635,"path":1636,"stem":1637},"Delete a project","/cockpit/project-settings/delete-project","8.Cockpit/2.Project-Settings/delete-project",{"title":1639,"path":1640,"stem":1641},"NPM","/cockpit/project-settings/npm","8.Cockpit/2.Project-Settings/npm",{"title":1643,"path":1644,"stem":1645},"Project secret key","/cockpit/project-settings/project-secret-key","8.Cockpit/2.Project-Settings/project-secret-key",{"title":1647,"path":1648,"stem":1649,"children":1650,"page":55},"Account Settings","/cockpit/account-settings","8.Cockpit/3.Account-Settings",[1651,1655,1659],{"title":1652,"path":1653,"stem":1654},"Notifications","/cockpit/account-settings/notifications","8.Cockpit/3.Account-Settings/notifications",{"title":1656,"path":1657,"stem":1658},"Preferences","/cockpit/account-settings/preferences","8.Cockpit/3.Account-Settings/preferences",{"title":1660,"path":1661,"stem":1662},"Security","/cockpit/account-settings/security","8.Cockpit/3.Account-Settings/security",{"title":1664,"path":1665,"stem":1666,"children":1667,"page":55},"Organisation Settings","/cockpit/organisation-settings","8.Cockpit/4.Organisation-Settings",[1668,1672,1676,1680,1684,1688],{"title":1669,"path":1670,"stem":1671},"API keys","/cockpit/organisation-settings/api-keys","8.Cockpit/4.Organisation-Settings/api-keys",{"title":1673,"path":1674,"stem":1675},"Billing","/cockpit/organisation-settings/billing","8.Cockpit/4.Organisation-Settings/billing",{"title":1677,"path":1678,"stem":1679},"General settings","/cockpit/organisation-settings/general-settings","8.Cockpit/4.Organisation-Settings/general-settings",{"title":1681,"path":1682,"stem":1683},"Members","/cockpit/organisation-settings/members","8.Cockpit/4.Organisation-Settings/members",{"title":1685,"path":1686,"stem":1687},"Projects","/cockpit/organisation-settings/projects","8.Cockpit/4.Organisation-Settings/projects",{"title":1689,"path":1690,"stem":1691},"Roles","/cockpit/organisation-settings/roles","8.Cockpit/4.Organisation-Settings/roles",{"title":1693,"path":1694,"stem":1695,"children":1696},"Offering","/offering","9.Offering/0.index",[1697,1698,1730,1743,1756],{"title":1693,"path":1694,"stem":1695},{"title":1699,"path":1700,"stem":1701,"children":1702},"Products","/offering/products","9.Offering/1.Products/0.index",[1703,1704,1709,1714,1719,1725],{"title":1699,"path":1700,"stem":1701},{"title":137,"path":1705,"stem":1706,"children":1707},"/offering/products/frontend","9.Offering/1.Products/1.Frontend/0.index",[1708],{"title":137,"path":1705,"stem":1706},{"title":1594,"path":1710,"stem":1711,"children":1712},"/offering/products/cockpit","9.Offering/1.Products/2.Cockpit/0.index",[1713],{"title":1594,"path":1710,"stem":1711},{"title":1523,"path":1715,"stem":1716,"children":1717},"/offering/products/checkout","9.Offering/1.Products/3.Checkout/0.index",[1718],{"title":1523,"path":1715,"stem":1716},{"title":1720,"path":1721,"stem":1722,"children":1723},"Cloud","/offering/products/cloud","9.Offering/1.Products/4.cloud/0.index",[1724],{"title":1720,"path":1721,"stem":1722},{"title":1529,"path":1726,"stem":1727,"children":1728},"/offering/products/larry-ai","9.Offering/1.Products/5.larry-ai/0.index",[1729],{"title":1529,"path":1726,"stem":1727},{"title":1731,"path":1732,"stem":1733,"children":1734,"page":55},"Service Level Agreement","/offering/service-level-agreement","9.Offering/2.service-level-agreement",[1735,1739],{"title":1736,"path":1737,"stem":1738},"Standard Service Level Agreement Composable Frontend","/offering/service-level-agreement/standard-service-level-agreement","9.Offering/2.service-level-agreement/1.standard-service-level-agreement",{"title":1740,"path":1741,"stem":1742},"Backups","/offering/service-level-agreement/backups","9.Offering/2.service-level-agreement/backups",{"title":1744,"path":1745,"stem":1746,"children":1747,"page":55},"Customer Support","/offering/customer-support","9.Offering/3.customer-support",[1748,1752],{"title":1749,"path":1750,"stem":1751},"Standard Customer Support","/offering/customer-support/standard-customer-support","9.Offering/3.customer-support/1.standard-customer-support",{"title":1753,"path":1754,"stem":1755},"Customer Support Severity Levels of Laioutr products","/offering/customer-support/maximum-serverity-levels","9.Offering/3.customer-support/maximum-serverity-levels",{"title":1757,"path":1758,"stem":1759,"children":1760,"page":55},"Compliance","/offering/compliance","9.Offering/4.Compliance",[1761],{"title":1762,"path":1763,"stem":1764},"Fair usage policy","/offering/compliance/fair-usage-policy","9.Offering/4.Compliance/fair-usage-policy",{"id":1766,"title":473,"aliases":1767,"body":1768,"description":3769,"extension":3770,"meta":3771,"navigation":1847,"path":474,"seo":3772,"sitemap":3775,"stem":475,"__hash__":3781},"docs/2.Apps/app-development/99.guides/shared-field-factories.md",[],{"type":1769,"value":1770,"toc":3760},"minimark",[1771,1790,1793,2096,2099,2176,2183,2188,2214,2238,2245,2249,2256,2495,2510,2513,2547,2551,2554,2682,2693,2840,2843,2913,2924,2928,2938,2976,3008,3021,3507,3522,3525,3653,3657,3660,3663,3667,3681,3728,3737,3741,3756],[1772,1773,1774,1775,1779,1780,1779,1783,1779,1786,1789],"p",{},"Your app has six sections and four of them have the same margin field: a select with ",[1776,1777,1778],"code",{},"none",", ",[1776,1781,1782],{},"s",[1776,1784,1785],{},"m",[1776,1787,1788],{},"l",". The fifth section adds it. The sixth section is about to. You're now maintaining the same option list in six places, and the option labels drift apart by the second copy.",[1772,1791,1792],{},"Promote the field to a factory. A tiny one-liner like this:",[1794,1795,1801],"pre",{"className":1796,"code":1797,"filename":1798,"language":1799,"meta":1800,"style":1800},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { StudioFieldDefinition } from '@laioutr-core/core-types/fields';\n\nexport const marginField = {\n  type: 'select',\n  name: 'margin',\n  label: 'Margin',\n  default: 'none',\n  options: [\n    { label: 'None', value: 'none' },\n    { label: 'S', value: 's' },\n    { label: 'M', value: 'm' },\n    { label: 'L', value: 'l' },\n  ],\n} satisfies StudioFieldDefinition;\n","shared-fields/margin.ts","ts","",[1776,1802,1803,1842,1849,1868,1888,1905,1922,1938,1949,1984,2014,2044,2074,2082],{"__ignoreMap":1800},[1804,1805,1808,1812,1815,1819,1823,1826,1829,1832,1836,1839],"span",{"class":1806,"line":1807},"line",1,[1804,1809,1811],{"class":1810},"s7zQu","import",[1804,1813,1814],{"class":1810}," type",[1804,1816,1818],{"class":1817},"sMK4o"," {",[1804,1820,1822],{"class":1821},"sTEyZ"," StudioFieldDefinition",[1804,1824,1825],{"class":1817}," }",[1804,1827,1828],{"class":1810}," from",[1804,1830,1831],{"class":1817}," '",[1804,1833,1835],{"class":1834},"sfazB","@laioutr-core/core-types/fields",[1804,1837,1838],{"class":1817},"'",[1804,1840,1841],{"class":1817},";\n",[1804,1843,1845],{"class":1806,"line":1844},2,[1804,1846,1848],{"emptyLinePlaceholder":1847},true,"\n",[1804,1850,1852,1855,1859,1862,1865],{"class":1806,"line":1851},3,[1804,1853,1854],{"class":1810},"export",[1804,1856,1858],{"class":1857},"spNyl"," const",[1804,1860,1861],{"class":1821}," marginField ",[1804,1863,1864],{"class":1817},"=",[1804,1866,1867],{"class":1817}," {\n",[1804,1869,1871,1875,1878,1880,1883,1885],{"class":1806,"line":1870},4,[1804,1872,1874],{"class":1873},"swJcz","  type",[1804,1876,1877],{"class":1817},":",[1804,1879,1831],{"class":1817},[1804,1881,1882],{"class":1834},"select",[1804,1884,1838],{"class":1817},[1804,1886,1887],{"class":1817},",\n",[1804,1889,1891,1894,1896,1898,1901,1903],{"class":1806,"line":1890},5,[1804,1892,1893],{"class":1873},"  name",[1804,1895,1877],{"class":1817},[1804,1897,1831],{"class":1817},[1804,1899,1900],{"class":1834},"margin",[1804,1902,1838],{"class":1817},[1804,1904,1887],{"class":1817},[1804,1906,1908,1911,1913,1915,1918,1920],{"class":1806,"line":1907},6,[1804,1909,1910],{"class":1873},"  label",[1804,1912,1877],{"class":1817},[1804,1914,1831],{"class":1817},[1804,1916,1917],{"class":1834},"Margin",[1804,1919,1838],{"class":1817},[1804,1921,1887],{"class":1817},[1804,1923,1925,1928,1930,1932,1934,1936],{"class":1806,"line":1924},7,[1804,1926,1927],{"class":1873},"  default",[1804,1929,1877],{"class":1817},[1804,1931,1831],{"class":1817},[1804,1933,1778],{"class":1834},[1804,1935,1838],{"class":1817},[1804,1937,1887],{"class":1817},[1804,1939,1941,1944,1946],{"class":1806,"line":1940},8,[1804,1942,1943],{"class":1873},"  options",[1804,1945,1877],{"class":1817},[1804,1947,1948],{"class":1821}," [\n",[1804,1950,1952,1955,1958,1960,1962,1965,1967,1970,1973,1975,1977,1979,1981],{"class":1806,"line":1951},9,[1804,1953,1954],{"class":1817},"    {",[1804,1956,1957],{"class":1873}," label",[1804,1959,1877],{"class":1817},[1804,1961,1831],{"class":1817},[1804,1963,1964],{"class":1834},"None",[1804,1966,1838],{"class":1817},[1804,1968,1969],{"class":1817},",",[1804,1971,1972],{"class":1873}," value",[1804,1974,1877],{"class":1817},[1804,1976,1831],{"class":1817},[1804,1978,1778],{"class":1834},[1804,1980,1838],{"class":1817},[1804,1982,1983],{"class":1817}," },\n",[1804,1985,1987,1989,1991,1993,1995,1998,2000,2002,2004,2006,2008,2010,2012],{"class":1806,"line":1986},10,[1804,1988,1954],{"class":1817},[1804,1990,1957],{"class":1873},[1804,1992,1877],{"class":1817},[1804,1994,1831],{"class":1817},[1804,1996,1997],{"class":1834},"S",[1804,1999,1838],{"class":1817},[1804,2001,1969],{"class":1817},[1804,2003,1972],{"class":1873},[1804,2005,1877],{"class":1817},[1804,2007,1831],{"class":1817},[1804,2009,1782],{"class":1834},[1804,2011,1838],{"class":1817},[1804,2013,1983],{"class":1817},[1804,2015,2017,2019,2021,2023,2025,2028,2030,2032,2034,2036,2038,2040,2042],{"class":1806,"line":2016},11,[1804,2018,1954],{"class":1817},[1804,2020,1957],{"class":1873},[1804,2022,1877],{"class":1817},[1804,2024,1831],{"class":1817},[1804,2026,2027],{"class":1834},"M",[1804,2029,1838],{"class":1817},[1804,2031,1969],{"class":1817},[1804,2033,1972],{"class":1873},[1804,2035,1877],{"class":1817},[1804,2037,1831],{"class":1817},[1804,2039,1785],{"class":1834},[1804,2041,1838],{"class":1817},[1804,2043,1983],{"class":1817},[1804,2045,2047,2049,2051,2053,2055,2058,2060,2062,2064,2066,2068,2070,2072],{"class":1806,"line":2046},12,[1804,2048,1954],{"class":1817},[1804,2050,1957],{"class":1873},[1804,2052,1877],{"class":1817},[1804,2054,1831],{"class":1817},[1804,2056,2057],{"class":1834},"L",[1804,2059,1838],{"class":1817},[1804,2061,1969],{"class":1817},[1804,2063,1972],{"class":1873},[1804,2065,1877],{"class":1817},[1804,2067,1831],{"class":1817},[1804,2069,1788],{"class":1834},[1804,2071,1838],{"class":1817},[1804,2073,1983],{"class":1817},[1804,2075,2077,2080],{"class":1806,"line":2076},13,[1804,2078,2079],{"class":1821},"  ]",[1804,2081,1887],{"class":1817},[1804,2083,2085,2088,2091,2094],{"class":1806,"line":2084},14,[1804,2086,2087],{"class":1817},"}",[1804,2089,2090],{"class":1810}," satisfies",[1804,2092,1822],{"class":2093},"sBMFI",[1804,2095,1841],{"class":1817},[1772,2097,2098],{},"Then reuse it:",[1794,2100,2103],{"className":1796,"code":2101,"filename":2102,"language":1799,"meta":1800,"style":1800},"schema: [\n  {\n    label: 'Design',\n    fields: [\n      marginField,\n      // ...\n    ],\n  },\n],\n","sections/SectionHero.vue",[1776,2104,2105,2114,2119,2135,2144,2151,2157,2164,2169],{"__ignoreMap":1800},[1804,2106,2107,2110,2112],{"class":1806,"line":1807},[1804,2108,2109],{"class":2093},"schema",[1804,2111,1877],{"class":1817},[1804,2113,1948],{"class":1821},[1804,2115,2116],{"class":1806,"line":1844},[1804,2117,2118],{"class":1817},"  {\n",[1804,2120,2121,2124,2126,2128,2131,2133],{"class":1806,"line":1851},[1804,2122,2123],{"class":1873},"    label",[1804,2125,1877],{"class":1817},[1804,2127,1831],{"class":1817},[1804,2129,2130],{"class":1834},"Design",[1804,2132,1838],{"class":1817},[1804,2134,1887],{"class":1817},[1804,2136,2137,2140,2142],{"class":1806,"line":1870},[1804,2138,2139],{"class":1873},"    fields",[1804,2141,1877],{"class":1817},[1804,2143,1948],{"class":1821},[1804,2145,2146,2149],{"class":1806,"line":1890},[1804,2147,2148],{"class":1821},"      marginField",[1804,2150,1887],{"class":1817},[1804,2152,2153],{"class":1806,"line":1907},[1804,2154,2156],{"class":2155},"sHwdD","      // ...\n",[1804,2158,2159,2162],{"class":1806,"line":1924},[1804,2160,2161],{"class":1821},"    ]",[1804,2163,1887],{"class":1817},[1804,2165,2166],{"class":1806,"line":1940},[1804,2167,2168],{"class":1817},"  },\n",[1804,2170,2171,2174],{"class":1806,"line":1951},[1804,2172,2173],{"class":1821},"]",[1804,2175,1887],{"class":1817},[1772,2177,2178,2179,2182],{},"That works for the simple case. The rest of this guide is about the cases where the simple case fails: when TypeScript silently widens your literals and ",[1776,2180,2181],{},"definitionToProps"," stops producing narrow types.",[2184,2185,2187],"h2",{"id":2186},"the-widening-problem","The widening problem",[1772,2189,2190,2191,2194,2195,1779,2198,1779,2201,2204,2205,2209,2210,2213],{},"The reason factories are non-trivial is that schema field arrays in ",[1776,2192,2193],{},"defineSection"," are typed as a union of every possible field type. Each member carries ",[1776,2196,2197],{},"name: string",[1776,2199,2200],{},"type: string",[1776,2202,2203],{},"value: string",". When TypeScript resolves your factory call inside that array, it lines up your return against the union and ",[2206,2207,2208],"strong",{},"widens"," literals to plain ",[1776,2211,2212],{},"string"," along the way.",[1772,2215,2216,2217,2219,2220,2223,2224,2227,2228,2230,2231,2233,2234,2237],{},"The result: ",[1776,2218,2181],{}," derives prop types from ",[1776,2221,2222],{},"options[i].value",". If your ",[1776,2225,2226],{},"value"," widens to ",[1776,2229,2212],{},", the prop type widens to ",[1776,2232,2212],{},". You lose the ",[1776,2235,2236],{},"'none' | 's' | 'm' | 'l'"," discrimination that you wanted.",[1772,2239,2240,2241,2244],{},"The fix is to write factories whose return types are derived ",[2206,2242,2243],{},"structurally"," from the input, not inferred as independent generic parameters with defaults.",[2184,2246,2248],{"id":2247},"pattern-1-static-field-no-generics","Pattern 1: static field, no generics",[1772,2250,2251,2252,2255],{},"When the field shape is fixed (margin, padding, fixed enum), you don't need generics. Use ",[1776,2253,2254],{},"satisfies"," to keep literal types intact:",[1794,2257,2260],{"className":1796,"code":2258,"filename":2259,"language":1799,"meta":1800,"style":1800},"import type { StudioFieldDefinition } from '@laioutr-core/core-types/fields';\n\nexport const paddingField = {\n  type: 'select',\n  name: 'padding',\n  label: 'Padding',\n  default: 'none',\n  options: [\n    { label: 'None', value: 'none' },\n    { label: 'S', value: 's' },\n    { label: 'M', value: 'm' },\n    { label: 'L', value: 'l' },\n  ],\n} satisfies StudioFieldDefinition;\n","shared-fields/padding.ts",[1776,2261,2262,2284,2288,2301,2315,2330,2345,2359,2367,2395,2423,2451,2479,2485],{"__ignoreMap":1800},[1804,2263,2264,2266,2268,2270,2272,2274,2276,2278,2280,2282],{"class":1806,"line":1807},[1804,2265,1811],{"class":1810},[1804,2267,1814],{"class":1810},[1804,2269,1818],{"class":1817},[1804,2271,1822],{"class":1821},[1804,2273,1825],{"class":1817},[1804,2275,1828],{"class":1810},[1804,2277,1831],{"class":1817},[1804,2279,1835],{"class":1834},[1804,2281,1838],{"class":1817},[1804,2283,1841],{"class":1817},[1804,2285,2286],{"class":1806,"line":1844},[1804,2287,1848],{"emptyLinePlaceholder":1847},[1804,2289,2290,2292,2294,2297,2299],{"class":1806,"line":1851},[1804,2291,1854],{"class":1810},[1804,2293,1858],{"class":1857},[1804,2295,2296],{"class":1821}," paddingField ",[1804,2298,1864],{"class":1817},[1804,2300,1867],{"class":1817},[1804,2302,2303,2305,2307,2309,2311,2313],{"class":1806,"line":1870},[1804,2304,1874],{"class":1873},[1804,2306,1877],{"class":1817},[1804,2308,1831],{"class":1817},[1804,2310,1882],{"class":1834},[1804,2312,1838],{"class":1817},[1804,2314,1887],{"class":1817},[1804,2316,2317,2319,2321,2323,2326,2328],{"class":1806,"line":1890},[1804,2318,1893],{"class":1873},[1804,2320,1877],{"class":1817},[1804,2322,1831],{"class":1817},[1804,2324,2325],{"class":1834},"padding",[1804,2327,1838],{"class":1817},[1804,2329,1887],{"class":1817},[1804,2331,2332,2334,2336,2338,2341,2343],{"class":1806,"line":1907},[1804,2333,1910],{"class":1873},[1804,2335,1877],{"class":1817},[1804,2337,1831],{"class":1817},[1804,2339,2340],{"class":1834},"Padding",[1804,2342,1838],{"class":1817},[1804,2344,1887],{"class":1817},[1804,2346,2347,2349,2351,2353,2355,2357],{"class":1806,"line":1924},[1804,2348,1927],{"class":1873},[1804,2350,1877],{"class":1817},[1804,2352,1831],{"class":1817},[1804,2354,1778],{"class":1834},[1804,2356,1838],{"class":1817},[1804,2358,1887],{"class":1817},[1804,2360,2361,2363,2365],{"class":1806,"line":1940},[1804,2362,1943],{"class":1873},[1804,2364,1877],{"class":1817},[1804,2366,1948],{"class":1821},[1804,2368,2369,2371,2373,2375,2377,2379,2381,2383,2385,2387,2389,2391,2393],{"class":1806,"line":1951},[1804,2370,1954],{"class":1817},[1804,2372,1957],{"class":1873},[1804,2374,1877],{"class":1817},[1804,2376,1831],{"class":1817},[1804,2378,1964],{"class":1834},[1804,2380,1838],{"class":1817},[1804,2382,1969],{"class":1817},[1804,2384,1972],{"class":1873},[1804,2386,1877],{"class":1817},[1804,2388,1831],{"class":1817},[1804,2390,1778],{"class":1834},[1804,2392,1838],{"class":1817},[1804,2394,1983],{"class":1817},[1804,2396,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421],{"class":1806,"line":1986},[1804,2398,1954],{"class":1817},[1804,2400,1957],{"class":1873},[1804,2402,1877],{"class":1817},[1804,2404,1831],{"class":1817},[1804,2406,1997],{"class":1834},[1804,2408,1838],{"class":1817},[1804,2410,1969],{"class":1817},[1804,2412,1972],{"class":1873},[1804,2414,1877],{"class":1817},[1804,2416,1831],{"class":1817},[1804,2418,1782],{"class":1834},[1804,2420,1838],{"class":1817},[1804,2422,1983],{"class":1817},[1804,2424,2425,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449],{"class":1806,"line":2016},[1804,2426,1954],{"class":1817},[1804,2428,1957],{"class":1873},[1804,2430,1877],{"class":1817},[1804,2432,1831],{"class":1817},[1804,2434,2027],{"class":1834},[1804,2436,1838],{"class":1817},[1804,2438,1969],{"class":1817},[1804,2440,1972],{"class":1873},[1804,2442,1877],{"class":1817},[1804,2444,1831],{"class":1817},[1804,2446,1785],{"class":1834},[1804,2448,1838],{"class":1817},[1804,2450,1983],{"class":1817},[1804,2452,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477],{"class":1806,"line":2046},[1804,2454,1954],{"class":1817},[1804,2456,1957],{"class":1873},[1804,2458,1877],{"class":1817},[1804,2460,1831],{"class":1817},[1804,2462,2057],{"class":1834},[1804,2464,1838],{"class":1817},[1804,2466,1969],{"class":1817},[1804,2468,1972],{"class":1873},[1804,2470,1877],{"class":1817},[1804,2472,1831],{"class":1817},[1804,2474,1788],{"class":1834},[1804,2476,1838],{"class":1817},[1804,2478,1983],{"class":1817},[1804,2480,2481,2483],{"class":1806,"line":2076},[1804,2482,2079],{"class":1821},[1804,2484,1887],{"class":1817},[1804,2486,2487,2489,2491,2493],{"class":1806,"line":2084},[1804,2488,2087],{"class":1817},[1804,2490,2090],{"class":1810},[1804,2492,1822],{"class":2093},[1804,2494,1841],{"class":1817},[1772,2496,2497,2499,2500,2503,2504,2506,2507,2509],{},[1776,2498,2254],{}," checks that the literal matches ",[1776,2501,2502],{},"StudioFieldDefinition"," without changing the inferred type of the object. The values stay as ",[1776,2505,2236],{},", not ",[1776,2508,2212],{},".",[1772,2511,2512],{},"Do not annotate the type directly:",[1794,2514,2516],{"className":1796,"code":2515,"language":1799,"meta":1800,"style":1800},"// Don't: this widens every literal to string\nexport const paddingField: StudioFieldDefinition = { /* ... */ };\n",[1776,2517,2518,2523],{"__ignoreMap":1800},[1804,2519,2520],{"class":1806,"line":1807},[1804,2521,2522],{"class":2155},"// Don't: this widens every literal to string\n",[1804,2524,2525,2527,2529,2532,2534,2536,2539,2541,2544],{"class":1806,"line":1844},[1804,2526,1854],{"class":1810},[1804,2528,1858],{"class":1857},[1804,2530,2531],{"class":1821}," paddingField",[1804,2533,1877],{"class":1817},[1804,2535,1822],{"class":2093},[1804,2537,2538],{"class":1817}," =",[1804,2540,1818],{"class":1817},[1804,2542,2543],{"class":2155}," /* ... */",[1804,2545,2546],{"class":1817}," };\n",[2184,2548,2550],{"id":2549},"pattern-2-reusable-option-lists","Pattern 2: reusable option lists",[1772,2552,2553],{},"When you want to share an options array (not a whole field), wrap it in a helper that enforces the non-empty tuple shape while preserving literals:",[1794,2555,2558],{"className":1796,"code":2556,"filename":2557,"language":1799,"meta":1800,"style":1800},"import type { FieldDefinitionSelectOption } from '@laioutr-core/core-types/fields';\n\nexport const defineSelectOptions = \u003C\n  const T extends readonly [FieldDefinitionSelectOption, ...FieldDefinitionSelectOption[]],\n>(\n  options: T,\n): [...T] => [...options];\n","shared-fields/defineSelectOptions.ts",[1776,2559,2560,2583,2587,2601,2633,2641,2652],{"__ignoreMap":1800},[1804,2561,2562,2564,2566,2568,2571,2573,2575,2577,2579,2581],{"class":1806,"line":1807},[1804,2563,1811],{"class":1810},[1804,2565,1814],{"class":1810},[1804,2567,1818],{"class":1817},[1804,2569,2570],{"class":1821}," FieldDefinitionSelectOption",[1804,2572,1825],{"class":1817},[1804,2574,1828],{"class":1810},[1804,2576,1831],{"class":1817},[1804,2578,1835],{"class":1834},[1804,2580,1838],{"class":1817},[1804,2582,1841],{"class":1817},[1804,2584,2585],{"class":1806,"line":1844},[1804,2586,1848],{"emptyLinePlaceholder":1847},[1804,2588,2589,2591,2593,2596,2598],{"class":1806,"line":1851},[1804,2590,1854],{"class":1810},[1804,2592,1858],{"class":1857},[1804,2594,2595],{"class":1821}," defineSelectOptions ",[1804,2597,1864],{"class":1817},[1804,2599,2600],{"class":1817}," \u003C\n",[1804,2602,2603,2606,2609,2612,2615,2618,2621,2623,2626,2628,2631],{"class":1806,"line":1870},[1804,2604,2605],{"class":1857},"  const",[1804,2607,2608],{"class":2093}," T",[1804,2610,2611],{"class":1857}," extends",[1804,2613,2614],{"class":1857}," readonly",[1804,2616,2617],{"class":1821}," [",[1804,2619,2620],{"class":2093},"FieldDefinitionSelectOption",[1804,2622,1969],{"class":1817},[1804,2624,2625],{"class":1817}," ...",[1804,2627,2620],{"class":2093},[1804,2629,2630],{"class":1821},"[]]",[1804,2632,1887],{"class":1817},[1804,2634,2635,2638],{"class":1806,"line":1890},[1804,2636,2637],{"class":1817},">",[1804,2639,2640],{"class":1821},"(\n",[1804,2642,2643,2646,2648,2650],{"class":1806,"line":1907},[1804,2644,1943],{"class":2645},"sHdIc",[1804,2647,1877],{"class":1817},[1804,2649,2608],{"class":2093},[1804,2651,1887],{"class":1817},[1804,2653,2654,2657,2659,2661,2664,2667,2670,2673,2675,2677,2680],{"class":1806,"line":1924},[1804,2655,2656],{"class":1821},")",[1804,2658,1877],{"class":1817},[1804,2660,2617],{"class":1821},[1804,2662,2663],{"class":1817},"...",[1804,2665,2666],{"class":2093},"T",[1804,2668,2669],{"class":1821},"] ",[1804,2671,2672],{"class":1857},"=>",[1804,2674,2617],{"class":1821},[1804,2676,2663],{"class":1817},[1804,2678,2679],{"class":1821},"options]",[1804,2681,1841],{"class":1817},[1772,2683,2684,2685,2688,2689,2692],{},"The ",[1776,2686,2687],{},"const T"," modifier tells TypeScript to keep the literal types. The function returns a fresh array, so callers can assign it directly to a field's ",[1776,2690,2691],{},"options"," and mutations cannot corrupt the shared export.",[1794,2694,2697],{"className":1796,"code":2695,"filename":2696,"language":1799,"meta":1800,"style":1800},"import { defineSelectOptions } from './defineSelectOptions';\n\nexport const buttonVariantOptions = defineSelectOptions([\n  { label: 'Primary', value: 'primary' },\n  { label: 'Secondary', value: 'secondary' },\n  { label: 'Tertiary', value: 'tertiary' },\n]);\n","shared-fields/buttonVariant.ts",[1776,2698,2699,2721,2725,2742,2773,2803,2833],{"__ignoreMap":1800},[1804,2700,2701,2703,2705,2708,2710,2712,2714,2717,2719],{"class":1806,"line":1807},[1804,2702,1811],{"class":1810},[1804,2704,1818],{"class":1817},[1804,2706,2707],{"class":1821}," defineSelectOptions",[1804,2709,1825],{"class":1817},[1804,2711,1828],{"class":1810},[1804,2713,1831],{"class":1817},[1804,2715,2716],{"class":1834},"./defineSelectOptions",[1804,2718,1838],{"class":1817},[1804,2720,1841],{"class":1817},[1804,2722,2723],{"class":1806,"line":1844},[1804,2724,1848],{"emptyLinePlaceholder":1847},[1804,2726,2727,2729,2731,2734,2736,2739],{"class":1806,"line":1851},[1804,2728,1854],{"class":1810},[1804,2730,1858],{"class":1857},[1804,2732,2733],{"class":1821}," buttonVariantOptions ",[1804,2735,1864],{"class":1817},[1804,2737,2707],{"class":2738},"s2Zo4",[1804,2740,2741],{"class":1821},"([\n",[1804,2743,2744,2747,2749,2751,2753,2756,2758,2760,2762,2764,2766,2769,2771],{"class":1806,"line":1870},[1804,2745,2746],{"class":1817},"  {",[1804,2748,1957],{"class":1873},[1804,2750,1877],{"class":1817},[1804,2752,1831],{"class":1817},[1804,2754,2755],{"class":1834},"Primary",[1804,2757,1838],{"class":1817},[1804,2759,1969],{"class":1817},[1804,2761,1972],{"class":1873},[1804,2763,1877],{"class":1817},[1804,2765,1831],{"class":1817},[1804,2767,2768],{"class":1834},"primary",[1804,2770,1838],{"class":1817},[1804,2772,1983],{"class":1817},[1804,2774,2775,2777,2779,2781,2783,2786,2788,2790,2792,2794,2796,2799,2801],{"class":1806,"line":1890},[1804,2776,2746],{"class":1817},[1804,2778,1957],{"class":1873},[1804,2780,1877],{"class":1817},[1804,2782,1831],{"class":1817},[1804,2784,2785],{"class":1834},"Secondary",[1804,2787,1838],{"class":1817},[1804,2789,1969],{"class":1817},[1804,2791,1972],{"class":1873},[1804,2793,1877],{"class":1817},[1804,2795,1831],{"class":1817},[1804,2797,2798],{"class":1834},"secondary",[1804,2800,1838],{"class":1817},[1804,2802,1983],{"class":1817},[1804,2804,2805,2807,2809,2811,2813,2816,2818,2820,2822,2824,2826,2829,2831],{"class":1806,"line":1907},[1804,2806,2746],{"class":1817},[1804,2808,1957],{"class":1873},[1804,2810,1877],{"class":1817},[1804,2812,1831],{"class":1817},[1804,2814,2815],{"class":1834},"Tertiary",[1804,2817,1838],{"class":1817},[1804,2819,1969],{"class":1817},[1804,2821,1972],{"class":1873},[1804,2823,1877],{"class":1817},[1804,2825,1831],{"class":1817},[1804,2827,2828],{"class":1834},"tertiary",[1804,2830,1838],{"class":1817},[1804,2832,1983],{"class":1817},[1804,2834,2835,2838],{"class":1806,"line":1924},[1804,2836,2837],{"class":1821},"])",[1804,2839,1841],{"class":1817},[1772,2841,2842],{},"Then use it in any field:",[1794,2844,2846],{"className":1796,"code":2845,"language":1799,"meta":1800,"style":1800},"{\n  type: 'select',\n  name: 'variant',\n  label: 'Variant',\n  options: buttonVariantOptions,\n}\n",[1776,2847,2848,2853,2867,2882,2897,2908],{"__ignoreMap":1800},[1804,2849,2850],{"class":1806,"line":1807},[1804,2851,2852],{"class":1817},"{\n",[1804,2854,2855,2857,2859,2861,2863,2865],{"class":1806,"line":1844},[1804,2856,1874],{"class":2093},[1804,2858,1877],{"class":1817},[1804,2860,1831],{"class":1817},[1804,2862,1882],{"class":1834},[1804,2864,1838],{"class":1817},[1804,2866,1887],{"class":1817},[1804,2868,2869,2871,2873,2875,2878,2880],{"class":1806,"line":1851},[1804,2870,1893],{"class":2093},[1804,2872,1877],{"class":1817},[1804,2874,1831],{"class":1817},[1804,2876,2877],{"class":1834},"variant",[1804,2879,1838],{"class":1817},[1804,2881,1887],{"class":1817},[1804,2883,2884,2886,2888,2890,2893,2895],{"class":1806,"line":1870},[1804,2885,1910],{"class":2093},[1804,2887,1877],{"class":1817},[1804,2889,1831],{"class":1817},[1804,2891,2892],{"class":1834},"Variant",[1804,2894,1838],{"class":1817},[1804,2896,1887],{"class":1817},[1804,2898,2899,2901,2903,2906],{"class":1806,"line":1890},[1804,2900,1943],{"class":2093},[1804,2902,1877],{"class":1817},[1804,2904,2905],{"class":1821}," buttonVariantOptions",[1804,2907,1887],{"class":1817},[1804,2909,2910],{"class":1806,"line":1907},[1804,2911,2912],{"class":1817},"}\n",[1772,2914,2915,2916,2918,2919,2506,2922,2509],{},"The prop type for ",[1776,2917,2877],{}," will be ",[1776,2920,2921],{},"'primary' | 'secondary' | 'tertiary'",[1776,2923,2212],{},[2184,2925,2927],{"id":2926},"pattern-3-dynamic-factory-with-computed-name","Pattern 3: dynamic factory with computed name",[1772,2929,2930,2931,2934,2935,1877],{},"Sometimes the field's ",[1776,2932,2933],{},"name"," is derived from an argument. A visibility checkbox toggles another field; its name should be ",[1776,2936,2937],{},"${target}Visible",[1794,2939,2941],{"className":1796,"code":2940,"language":1799,"meta":1800,"style":1800},"visibilityField({ for: 'heading' })\n// => { type: 'checkbox', as: 'visibility', for: 'heading', name: 'headingVisible' }\n",[1776,2942,2943,2971],{"__ignoreMap":1800},[1804,2944,2945,2948,2951,2954,2957,2959,2961,2964,2966,2968],{"class":1806,"line":1807},[1804,2946,2947],{"class":2738},"visibilityField",[1804,2949,2950],{"class":1821},"(",[1804,2952,2953],{"class":1817},"{",[1804,2955,2956],{"class":1873}," for",[1804,2958,1877],{"class":1817},[1804,2960,1831],{"class":1817},[1804,2962,2963],{"class":1834},"heading",[1804,2965,1838],{"class":1817},[1804,2967,1825],{"class":1817},[1804,2969,2970],{"class":1821},")\n",[1804,2972,2973],{"class":1806,"line":1844},[1804,2974,2975],{"class":2155},"// => { type: 'checkbox', as: 'visibility', for: 'heading', name: 'headingVisible' }\n",[1772,2977,2978,2979,2982,2983,2986,2987,2990,2991,2993,2996,2997,2212,3000,3003,3004,3007],{},"The obvious implementation has two generic parameters: ",[1776,2980,2981],{},"ForKey extends string"," and ",[1776,2984,2985],{},"Name extends string = \\","${ForKey}Visible`",[1776,2988,2989],{},". **This does not work.** Inside a"," fields: ",[1804,2992,2663],{},[1776,2994,2995],{},"array, contextual typing widens","Name",[1776,2998,2999],{},"to",[1776,3001,3002],{},", and the resulting field's"," name",[1776,3005,3006],{},"property loses its literal type.","definitionToProps` then matches the visibility checkbox against fields it shouldn't, and prop types break in surprising ways.",[1772,3009,3010,3011,3014,3015,3017,3018,1877],{},"The fix: collapse the generics into a single ",[1776,3012,3013],{},"const Opts"," parameter and derive the resolved name ",[2206,3016,2243],{}," from ",[1776,3019,3020],{},"Opts",[1794,3022,3025],{"className":1796,"code":3023,"filename":3024,"language":1799,"meta":1800,"style":1800},"export const visibilityField = \u003C\n  const Opts extends {\n    for: string;\n    name?: string;\n    label?: string;\n    default?: boolean;\n  },\n>(\n  opts: Opts,\n) => {\n  type ResolvedName = Opts extends { name: string }\n    ? Opts['name']\n    : `${Opts['for']}Visible`;\n\n  const field: {\n    type: 'checkbox';\n    as: 'visibility';\n    for: Opts['for'];\n    name: ResolvedName;\n    label?: string;\n    default?: boolean;\n  } = {\n    type: 'checkbox',\n    as: 'visibility',\n    for: opts.for,\n    name: (opts.name ?? `${opts.for}Visible`) as ResolvedName,\n  };\n\n  if (opts.label !== undefined) field.label = opts.label;\n  if (opts.default !== undefined) field.default = opts.default;\n  return field;\n};\n","shared-fields/visibility.ts",[1776,3026,3027,3040,3051,3063,3075,3085,3097,3101,3107,3118,3127,3151,3170,3201,3205,3217,3234,3251,3272,3283,3294,3305,3315,3330,3345,3361,3404,3410,3415,3455,3491,3501],{"__ignoreMap":1800},[1804,3028,3029,3031,3033,3036,3038],{"class":1806,"line":1807},[1804,3030,1854],{"class":1810},[1804,3032,1858],{"class":1857},[1804,3034,3035],{"class":1821}," visibilityField ",[1804,3037,1864],{"class":1817},[1804,3039,2600],{"class":1817},[1804,3041,3042,3044,3047,3049],{"class":1806,"line":1844},[1804,3043,2605],{"class":1857},[1804,3045,3046],{"class":2093}," Opts",[1804,3048,2611],{"class":1857},[1804,3050,1867],{"class":1817},[1804,3052,3053,3056,3058,3061],{"class":1806,"line":1851},[1804,3054,3055],{"class":1873},"    for",[1804,3057,1877],{"class":1817},[1804,3059,3060],{"class":2093}," string",[1804,3062,1841],{"class":1817},[1804,3064,3065,3068,3071,3073],{"class":1806,"line":1870},[1804,3066,3067],{"class":1873},"    name",[1804,3069,3070],{"class":1817},"?:",[1804,3072,3060],{"class":2093},[1804,3074,1841],{"class":1817},[1804,3076,3077,3079,3081,3083],{"class":1806,"line":1890},[1804,3078,2123],{"class":1873},[1804,3080,3070],{"class":1817},[1804,3082,3060],{"class":2093},[1804,3084,1841],{"class":1817},[1804,3086,3087,3090,3092,3095],{"class":1806,"line":1907},[1804,3088,3089],{"class":1873},"    default",[1804,3091,3070],{"class":1817},[1804,3093,3094],{"class":2093}," boolean",[1804,3096,1841],{"class":1817},[1804,3098,3099],{"class":1806,"line":1924},[1804,3100,2168],{"class":1817},[1804,3102,3103,3105],{"class":1806,"line":1940},[1804,3104,2637],{"class":1817},[1804,3106,2640],{"class":1821},[1804,3108,3109,3112,3114,3116],{"class":1806,"line":1951},[1804,3110,3111],{"class":2645},"  opts",[1804,3113,1877],{"class":1817},[1804,3115,3046],{"class":2093},[1804,3117,1887],{"class":1817},[1804,3119,3120,3123,3125],{"class":1806,"line":1986},[1804,3121,3122],{"class":1821},") ",[1804,3124,2672],{"class":1857},[1804,3126,1867],{"class":1817},[1804,3128,3129,3131,3134,3136,3138,3140,3142,3144,3146,3148],{"class":1806,"line":2016},[1804,3130,1874],{"class":1857},[1804,3132,3133],{"class":2093}," ResolvedName",[1804,3135,2538],{"class":1817},[1804,3137,3046],{"class":2093},[1804,3139,2611],{"class":1857},[1804,3141,1818],{"class":1817},[1804,3143,3003],{"class":1873},[1804,3145,1877],{"class":1817},[1804,3147,3060],{"class":2093},[1804,3149,3150],{"class":1817}," }\n",[1804,3152,3153,3156,3158,3161,3163,3165,3167],{"class":1806,"line":2046},[1804,3154,3155],{"class":1817},"    ?",[1804,3157,3046],{"class":2093},[1804,3159,3160],{"class":1873},"[",[1804,3162,1838],{"class":1817},[1804,3164,2933],{"class":1834},[1804,3166,1838],{"class":1817},[1804,3168,3169],{"class":1873},"]\n",[1804,3171,3172,3175,3178,3180,3182,3184,3187,3189,3191,3193,3196,3199],{"class":1806,"line":2076},[1804,3173,3174],{"class":1817},"    :",[1804,3176,3177],{"class":1817}," `${",[1804,3179,3020],{"class":2093},[1804,3181,3160],{"class":1821},[1804,3183,1838],{"class":1817},[1804,3185,3186],{"class":1834},"for",[1804,3188,1838],{"class":1817},[1804,3190,2173],{"class":1821},[1804,3192,2087],{"class":1817},[1804,3194,3195],{"class":1834},"Visible",[1804,3197,3198],{"class":1817},"`",[1804,3200,1841],{"class":1817},[1804,3202,3203],{"class":1806,"line":2084},[1804,3204,1848],{"emptyLinePlaceholder":1847},[1804,3206,3208,3210,3213,3215],{"class":1806,"line":3207},15,[1804,3209,2605],{"class":1857},[1804,3211,3212],{"class":1821}," field",[1804,3214,1877],{"class":1817},[1804,3216,1867],{"class":1817},[1804,3218,3220,3223,3225,3227,3230,3232],{"class":1806,"line":3219},16,[1804,3221,3222],{"class":1873},"    type",[1804,3224,1877],{"class":1817},[1804,3226,1831],{"class":1817},[1804,3228,3229],{"class":1834},"checkbox",[1804,3231,1838],{"class":1817},[1804,3233,1841],{"class":1817},[1804,3235,3237,3240,3242,3244,3247,3249],{"class":1806,"line":3236},17,[1804,3238,3239],{"class":1873},"    as",[1804,3241,1877],{"class":1817},[1804,3243,1831],{"class":1817},[1804,3245,3246],{"class":1834},"visibility",[1804,3248,1838],{"class":1817},[1804,3250,1841],{"class":1817},[1804,3252,3254,3256,3258,3260,3262,3264,3266,3268,3270],{"class":1806,"line":3253},18,[1804,3255,3055],{"class":1873},[1804,3257,1877],{"class":1817},[1804,3259,3046],{"class":2093},[1804,3261,3160],{"class":1873},[1804,3263,1838],{"class":1817},[1804,3265,3186],{"class":1834},[1804,3267,1838],{"class":1817},[1804,3269,2173],{"class":1873},[1804,3271,1841],{"class":1817},[1804,3273,3275,3277,3279,3281],{"class":1806,"line":3274},19,[1804,3276,3067],{"class":1873},[1804,3278,1877],{"class":1817},[1804,3280,3133],{"class":2093},[1804,3282,1841],{"class":1817},[1804,3284,3286,3288,3290,3292],{"class":1806,"line":3285},20,[1804,3287,2123],{"class":1873},[1804,3289,3070],{"class":1817},[1804,3291,3060],{"class":2093},[1804,3293,1841],{"class":1817},[1804,3295,3297,3299,3301,3303],{"class":1806,"line":3296},21,[1804,3298,3089],{"class":1873},[1804,3300,3070],{"class":1817},[1804,3302,3094],{"class":2093},[1804,3304,1841],{"class":1817},[1804,3306,3308,3311,3313],{"class":1806,"line":3307},22,[1804,3309,3310],{"class":1817},"  }",[1804,3312,2538],{"class":1817},[1804,3314,1867],{"class":1817},[1804,3316,3318,3320,3322,3324,3326,3328],{"class":1806,"line":3317},23,[1804,3319,3222],{"class":1873},[1804,3321,1877],{"class":1817},[1804,3323,1831],{"class":1817},[1804,3325,3229],{"class":1834},[1804,3327,1838],{"class":1817},[1804,3329,1887],{"class":1817},[1804,3331,3333,3335,3337,3339,3341,3343],{"class":1806,"line":3332},24,[1804,3334,3239],{"class":1873},[1804,3336,1877],{"class":1817},[1804,3338,1831],{"class":1817},[1804,3340,3246],{"class":1834},[1804,3342,1838],{"class":1817},[1804,3344,1887],{"class":1817},[1804,3346,3348,3350,3352,3355,3357,3359],{"class":1806,"line":3347},25,[1804,3349,3055],{"class":1873},[1804,3351,1877],{"class":1817},[1804,3353,3354],{"class":1821}," opts",[1804,3356,2509],{"class":1817},[1804,3358,3186],{"class":1821},[1804,3360,1887],{"class":1817},[1804,3362,3364,3366,3368,3371,3374,3376,3378,3381,3383,3385,3387,3389,3391,3393,3395,3397,3400,3402],{"class":1806,"line":3363},26,[1804,3365,3067],{"class":1873},[1804,3367,1877],{"class":1817},[1804,3369,3370],{"class":1873}," (",[1804,3372,3373],{"class":1821},"opts",[1804,3375,2509],{"class":1817},[1804,3377,2933],{"class":1821},[1804,3379,3380],{"class":1817}," ??",[1804,3382,3177],{"class":1817},[1804,3384,3373],{"class":1821},[1804,3386,2509],{"class":1817},[1804,3388,3186],{"class":1821},[1804,3390,2087],{"class":1817},[1804,3392,3195],{"class":1834},[1804,3394,3198],{"class":1817},[1804,3396,3122],{"class":1873},[1804,3398,3399],{"class":1810},"as",[1804,3401,3133],{"class":2093},[1804,3403,1887],{"class":1817},[1804,3405,3407],{"class":1806,"line":3406},27,[1804,3408,3409],{"class":1817},"  };\n",[1804,3411,3413],{"class":1806,"line":3412},28,[1804,3414,1848],{"emptyLinePlaceholder":1847},[1804,3416,3418,3421,3423,3425,3427,3430,3433,3436,3438,3441,3443,3445,3447,3449,3451,3453],{"class":1806,"line":3417},29,[1804,3419,3420],{"class":1810},"  if",[1804,3422,3370],{"class":1873},[1804,3424,3373],{"class":1821},[1804,3426,2509],{"class":1817},[1804,3428,3429],{"class":1821},"label",[1804,3431,3432],{"class":1817}," !==",[1804,3434,3435],{"class":1817}," undefined",[1804,3437,3122],{"class":1873},[1804,3439,3440],{"class":1821},"field",[1804,3442,2509],{"class":1817},[1804,3444,3429],{"class":1821},[1804,3446,2538],{"class":1817},[1804,3448,3354],{"class":1821},[1804,3450,2509],{"class":1817},[1804,3452,3429],{"class":1821},[1804,3454,1841],{"class":1817},[1804,3456,3458,3460,3462,3464,3466,3469,3471,3473,3475,3477,3479,3481,3483,3485,3487,3489],{"class":1806,"line":3457},30,[1804,3459,3420],{"class":1810},[1804,3461,3370],{"class":1873},[1804,3463,3373],{"class":1821},[1804,3465,2509],{"class":1817},[1804,3467,3468],{"class":1821},"default",[1804,3470,3432],{"class":1817},[1804,3472,3435],{"class":1817},[1804,3474,3122],{"class":1873},[1804,3476,3440],{"class":1821},[1804,3478,2509],{"class":1817},[1804,3480,3468],{"class":1821},[1804,3482,2538],{"class":1817},[1804,3484,3354],{"class":1821},[1804,3486,2509],{"class":1817},[1804,3488,3468],{"class":1821},[1804,3490,1841],{"class":1817},[1804,3492,3494,3497,3499],{"class":1806,"line":3493},31,[1804,3495,3496],{"class":1810},"  return",[1804,3498,3212],{"class":1821},[1804,3500,1841],{"class":1817},[1804,3502,3504],{"class":1806,"line":3503},32,[1804,3505,3506],{"class":1817},"};\n",[1772,3508,3509,3510,3513,3514,3517,3518,3521],{},"The key is ",[1776,3511,3512],{},"type ResolvedName = Opts extends { name: string } ? Opts['name'] : \\","${Opts ",[1804,3515,3516],{},"'for'"," }Visible`",[1776,3519,3520],{},". The resolved name is computed from"," Opts`, not declared as a separate inferable generic. Contextual typing cannot widen what it cannot see.",[1772,3523,3524],{},"Use it inside a schema:",[1794,3526,3528],{"className":1796,"code":3527,"language":1799,"meta":1800,"style":1800},"schema: [\n  {\n    label: 'Content',\n    fields: [\n      { type: 'text', name: 'heading', label: 'Heading' },\n      visibilityField({ for: 'heading' }),\n      // ResolvedName is 'headingVisible' (literal)\n    ],\n  },\n],\n",[1776,3529,3530,3538,3542,3556,3564,3607,3632,3637,3643,3647],{"__ignoreMap":1800},[1804,3531,3532,3534,3536],{"class":1806,"line":1807},[1804,3533,2109],{"class":2093},[1804,3535,1877],{"class":1817},[1804,3537,1948],{"class":1821},[1804,3539,3540],{"class":1806,"line":1844},[1804,3541,2118],{"class":1817},[1804,3543,3544,3546,3548,3550,3552,3554],{"class":1806,"line":1851},[1804,3545,2123],{"class":1873},[1804,3547,1877],{"class":1817},[1804,3549,1831],{"class":1817},[1804,3551,1263],{"class":1834},[1804,3553,1838],{"class":1817},[1804,3555,1887],{"class":1817},[1804,3557,3558,3560,3562],{"class":1806,"line":1870},[1804,3559,2139],{"class":1873},[1804,3561,1877],{"class":1817},[1804,3563,1948],{"class":1821},[1804,3565,3566,3569,3571,3573,3575,3578,3580,3582,3584,3586,3588,3590,3592,3594,3596,3598,3600,3603,3605],{"class":1806,"line":1890},[1804,3567,3568],{"class":1817},"      {",[1804,3570,1814],{"class":1873},[1804,3572,1877],{"class":1817},[1804,3574,1831],{"class":1817},[1804,3576,3577],{"class":1834},"text",[1804,3579,1838],{"class":1817},[1804,3581,1969],{"class":1817},[1804,3583,3003],{"class":1873},[1804,3585,1877],{"class":1817},[1804,3587,1831],{"class":1817},[1804,3589,2963],{"class":1834},[1804,3591,1838],{"class":1817},[1804,3593,1969],{"class":1817},[1804,3595,1957],{"class":1873},[1804,3597,1877],{"class":1817},[1804,3599,1831],{"class":1817},[1804,3601,3602],{"class":1834},"Heading",[1804,3604,1838],{"class":1817},[1804,3606,1983],{"class":1817},[1804,3608,3609,3612,3614,3616,3618,3620,3622,3624,3626,3628,3630],{"class":1806,"line":1907},[1804,3610,3611],{"class":2738},"      visibilityField",[1804,3613,2950],{"class":1821},[1804,3615,2953],{"class":1817},[1804,3617,2956],{"class":1873},[1804,3619,1877],{"class":1817},[1804,3621,1831],{"class":1817},[1804,3623,2963],{"class":1834},[1804,3625,1838],{"class":1817},[1804,3627,1825],{"class":1817},[1804,3629,2656],{"class":1821},[1804,3631,1887],{"class":1817},[1804,3633,3634],{"class":1806,"line":1924},[1804,3635,3636],{"class":2155},"      // ResolvedName is 'headingVisible' (literal)\n",[1804,3638,3639,3641],{"class":1806,"line":1940},[1804,3640,2161],{"class":1821},[1804,3642,1887],{"class":1817},[1804,3644,3645],{"class":1806,"line":1951},[1804,3646,2168],{"class":1817},[1804,3648,3649,3651],{"class":1806,"line":1986},[1804,3650,2173],{"class":1821},[1804,3652,1887],{"class":1817},[2184,3654,3656],{"id":3655},"when-to-write-a-factory","When to write a factory",[1772,3658,3659],{},"A simple test: count the copies. One section: keep it inline. Two: probably still inline (the duplication is cheap, and the two sections might diverge). Three or more: promote to a factory.",[1772,3661,3662],{},"A second test: are the option values stable, or do you find yourself touching them in every section? Stable values that you copy unchanged are perfect factory candidates. Per-section tweaks suggest the field is component-specific, not shared.",[2184,3664,3666],{"id":3665},"detecting-widening-regressions","Detecting widening regressions",[1772,3668,3669,3670,3672,3673,3676,3677,3680],{},"If ",[1776,3671,2181],{}," suddenly produces a prop type like ",[1776,3674,3675],{},"string | boolean"," (or ",[1776,3678,3679],{},"string | number",") where you expected a single primitive, suspect a widened factory. The fastest check is to inspect the schema type directly:",[1794,3682,3684],{"className":1796,"code":3683,"language":1799,"meta":1800,"style":1800},"type Check = typeof definition['schema'][number]['fields'][number];\n//   ^? Inspect this in your editor\n",[1776,3685,3686,3723],{"__ignoreMap":1800},[1804,3687,3688,3691,3694,3696,3699,3702,3704,3706,3708,3711,3713,3716,3718,3721],{"class":1806,"line":1807},[1804,3689,3690],{"class":1857},"type",[1804,3692,3693],{"class":2093}," Check",[1804,3695,2538],{"class":1817},[1804,3697,3698],{"class":1817}," typeof",[1804,3700,3701],{"class":1821}," definition[",[1804,3703,1838],{"class":1817},[1804,3705,2109],{"class":1834},[1804,3707,1838],{"class":1817},[1804,3709,3710],{"class":1821},"][number][",[1804,3712,1838],{"class":1817},[1804,3714,3715],{"class":1834},"fields",[1804,3717,1838],{"class":1817},[1804,3719,3720],{"class":1821},"][number]",[1804,3722,1841],{"class":1817},[1804,3724,3725],{"class":1806,"line":1844},[1804,3726,3727],{"class":2155},"//   ^? Inspect this in your editor\n",[1772,3729,3730,3731,3733,3734,3736],{},"If a checkbox or select inside the array shows ",[1776,3732,2197],{}," instead of the literal you expect, a factory is widening. Switch it to the ",[1776,3735,3013],{}," pattern.",[2184,3738,3740],{"id":3739},"related","Related",[3742,3743,3744,3751],"ul",{},[3745,3746,3747,3750],"li",{},[3748,3749,469],"a",{"href":470}," for the canonical names and types that good candidates for factories follow.",[3745,3752,3753,3755],{},[3748,3754,517],{"href":518}," for the field types and properties these factories produce.",[3757,3758,3759],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":1800,"searchDepth":1844,"depth":1844,"links":3761},[3762,3763,3764,3765,3766,3767,3768],{"id":2186,"depth":1844,"text":2187},{"id":2247,"depth":1844,"text":2248},{"id":2549,"depth":1844,"text":2550},{"id":2926,"depth":1844,"text":2927},{"id":3655,"depth":1844,"text":3656},{"id":3665,"depth":1844,"text":3666},{"id":3739,"depth":1844,"text":3740},"When the same field shape appears in three or more sections, promote it to a factory function. The trick is keeping the literal types intact, so definitionToProps still produces narrow prop types.","md",{},{"title":3773,"description":3774},"Shared field factories | Laioutr","A pattern for reusing schema fields across sections and blocks without losing literal types.",{"loc":474,"lastmod":3776,"changefreq":3777,"priority":3778,"videos":3779,"images":3780},"2026-05-15","monthly",0.9,[],[],"HNOknL_UGJnIUFs-D5DojMuI2Lsh55rOo1knvD0Ya0s",[3783,3785],{"title":469,"path":470,"stem":471,"description":3784,"children":-1},"A canonical sidebar layout and field-naming convention for every section and block. Same ordering and the same names everywhere, so editors learn one app and know them all.",{"title":477,"path":478,"stem":479,"description":3786,"children":-1},"A short checklist for writing component CSS in a Laioutr app. Restyleable from the outside, responsive without JavaScript, predictable in SSR.",1779266525943]