[{"data":1,"prerenderedAt":5286},["ShallowReactive",2],{"navigation_docs":3,"-docs-guides-themes-customize-blocks-":1990},[4,54,132,180,390,1721],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002Fgetting-started\u002Findex",[9,10,17,23,30,36,42,48],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13,"children":14,"icon":16},"Apps and Sites","\u002Fdocs\u002Fgetting-started\u002Fapps-and-sites","docs\u002Fgetting-started\u002Fapps-and-sites\u002Findex",[15],{"title":11,"path":12,"stem":13,"icon":16},"i-lucide-columns-2",{"title":18,"path":19,"stem":20,"children":21},"Architecture Overview","\u002Fdocs\u002Fgetting-started\u002Farchitecture","docs\u002Fgetting-started\u002Farchitecture\u002Findex",[22],{"title":18,"path":19,"stem":20},{"title":24,"path":25,"stem":26,"children":27,"icon":29},"Get Help","\u002Fdocs\u002Fgetting-started\u002Fget-help","docs\u002Fgetting-started\u002Fget-help\u002Findex",[28],{"title":24,"path":25,"stem":26,"icon":29},"i-lucide-life-buoy",{"title":31,"path":32,"stem":33,"children":34},"Glossary","\u002Fdocs\u002Fgetting-started\u002Fglossary","docs\u002Fgetting-started\u002Fglossary\u002Findex",[35],{"title":31,"path":32,"stem":33},{"title":37,"path":38,"stem":39,"children":40},"Platform Overview","\u002Fdocs\u002Fgetting-started\u002Fplatform-overview","docs\u002Fgetting-started\u002Fplatform-overview\u002Findex",[41],{"title":37,"path":38,"stem":39},{"title":43,"path":44,"stem":45,"children":46},"Prerequisites","\u002Fdocs\u002Fgetting-started\u002Fprerequisites","docs\u002Fgetting-started\u002Fprerequisites\u002Findex",[47],{"title":43,"path":44,"stem":45},{"title":49,"path":50,"stem":51,"children":52},"Your First App in 15 Minutes","\u002Fdocs\u002Fgetting-started\u002Fquick-start","docs\u002Fgetting-started\u002Fquick-start\u002Findex",[53],{"title":49,"path":50,"stem":51},{"title":55,"path":56,"stem":57,"children":58},"Guides","\u002Fdocs\u002Fguides","docs\u002Fguides\u002Findex",[59,60,84,90,96,102],{"title":55,"path":56,"stem":57},{"title":61,"path":62,"stem":63,"children":64},"Build a revenexx App","\u002Fdocs\u002Fguides\u002Fapps","docs\u002Fguides\u002Fapps\u002Findex",[65,66,72,78],{"title":61,"path":62,"stem":63},{"title":67,"path":68,"stem":69,"children":70},"Add a data model","\u002Fdocs\u002Fguides\u002Fapps\u002Fadd-a-data-model","docs\u002Fguides\u002Fapps\u002Fadd-a-data-model\u002Findex",[71],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75,"children":76},"Build your first app","\u002Fdocs\u002Fguides\u002Fapps\u002Fbuild-your-first-app","docs\u002Fguides\u002Fapps\u002Fbuild-your-first-app\u002Findex",[77],{"title":73,"path":74,"stem":75},{"title":79,"path":80,"stem":81,"children":82},"Deploy with the CLI","\u002Fdocs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli","docs\u002Fguides\u002Fapps\u002Fdeploy-with-the-cli\u002Findex",[83],{"title":79,"path":80,"stem":81},{"title":85,"path":86,"stem":87,"children":88},"Configure pricing rules","\u002Fdocs\u002Fguides\u002Fconfigure-pricing-rules","docs\u002Fguides\u002Fconfigure-pricing-rules\u002Findex",[89],{"title":85,"path":86,"stem":87},{"title":91,"path":92,"stem":93,"children":94},"Examples","\u002Fdocs\u002Fguides\u002Fexamples","docs\u002Fguides\u002Fexamples\u002Findex",[95],{"title":91,"path":92,"stem":93},{"title":97,"path":98,"stem":99,"children":100},"Import a BMECAT product catalog","\u002Fdocs\u002Fguides\u002Fimport-a-bmecat-catalog","docs\u002Fguides\u002Fimport-a-bmecat-catalog\u002Findex",[101],{"title":97,"path":98,"stem":99},{"title":103,"path":104,"stem":105,"children":106},"Build a storefront Theme","\u002Fdocs\u002Fguides\u002Fthemes","docs\u002Fguides\u002Fthemes\u002Findex",[107,108,114,120,126],{"title":103,"path":104,"stem":105},{"title":109,"path":110,"stem":111,"children":112},"Build your first Theme","\u002Fdocs\u002Fguides\u002Fthemes\u002Fbuild-your-first-theme","docs\u002Fguides\u002Fthemes\u002Fbuild-your-first-theme\u002Findex",[113],{"title":109,"path":110,"stem":111},{"title":115,"path":116,"stem":117,"children":118},"Customize blocks","\u002Fdocs\u002Fguides\u002Fthemes\u002Fcustomize-blocks","docs\u002Fguides\u002Fthemes\u002Fcustomize-blocks\u002Findex",[119],{"title":115,"path":116,"stem":117},{"title":121,"path":122,"stem":123,"children":124},"Deploy your storefront","\u002Fdocs\u002Fguides\u002Fthemes\u002Fdeploy-your-storefront","docs\u002Fguides\u002Fthemes\u002Fdeploy-your-storefront\u002Findex",[125],{"title":121,"path":122,"stem":123},{"title":127,"path":128,"stem":129,"children":130},"Theme tokens and styling","\u002Fdocs\u002Fguides\u002Fthemes\u002Ftheme-tokens-and-styling","docs\u002Fguides\u002Fthemes\u002Ftheme-tokens-and-styling\u002Findex",[131],{"title":127,"path":128,"stem":129},{"title":133,"path":134,"stem":135,"children":136},"SDKs","\u002Fdocs\u002Fsdks","docs\u002Fsdks\u002Findex",[137,138,144,150,156,162,168,174],{"title":133,"path":134,"stem":135},{"title":139,"path":140,"stem":141,"children":142},"App SDK","\u002Fdocs\u002Fsdks\u002Fapp-sdk","docs\u002Fsdks\u002Fapp-sdk\u002Findex",[143],{"title":139,"path":140,"stem":141},{"title":145,"path":146,"stem":147,"children":148},"CLI","\u002Fdocs\u002Fsdks\u002Fcli","docs\u002Fsdks\u002Fcli\u002Findex",[149],{"title":145,"path":146,"stem":147},{"title":151,"path":152,"stem":153,"children":154},"Design systems","\u002Fdocs\u002Fsdks\u002Fdesign-systems","docs\u002Fsdks\u002Fdesign-systems\u002Findex",[155],{"title":151,"path":152,"stem":153},{"title":157,"path":158,"stem":159,"children":160},"Integration Node SDK","\u002Fdocs\u002Fsdks\u002Fintegration-nodes","docs\u002Fsdks\u002Fintegration-nodes\u002Findex",[161],{"title":157,"path":158,"stem":159},{"title":163,"path":164,"stem":165,"children":166},"Node SDK","\u002Fdocs\u002Fsdks\u002Fnode","docs\u002Fsdks\u002Fnode\u002Findex",[167],{"title":163,"path":164,"stem":165},{"title":169,"path":170,"stem":171,"children":172},"PHP SDK","\u002Fdocs\u002Fsdks\u002Fphp","docs\u002Fsdks\u002Fphp\u002Findex",[173],{"title":169,"path":170,"stem":171},{"title":175,"path":176,"stem":177,"children":178},"Web \u002F JavaScript SDK","\u002Fdocs\u002Fsdks\u002Fweb","docs\u002Fsdks\u002Fweb\u002Findex",[179],{"title":175,"path":176,"stem":177},{"title":181,"path":182,"stem":183,"children":184},"Services","\u002Fdocs\u002Fservices","docs\u002Fservices\u002Findex",[185,186,222,252,270,324,372],{"title":181,"path":182,"stem":183},{"title":187,"path":188,"stem":189,"children":190},"API usage","\u002Fdocs\u002Fservices\u002Fapi-usage","docs\u002Fservices\u002Fapi-usage\u002Findex",[191,192,198,204,210,216],{"title":187,"path":188,"stem":189},{"title":193,"path":194,"stem":195,"children":196},"Errors","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Ferrors","docs\u002Fservices\u002Fapi-usage\u002Ferrors\u002Findex",[197],{"title":193,"path":194,"stem":195},{"title":199,"path":200,"stem":201,"children":202},"Retries & idempotency","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fidempotency","docs\u002Fservices\u002Fapi-usage\u002Fidempotency\u002Findex",[203],{"title":199,"path":200,"stem":201},{"title":205,"path":206,"stem":207,"children":208},"Pagination & filtering","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fpagination","docs\u002Fservices\u002Fapi-usage\u002Fpagination\u002Findex",[209],{"title":205,"path":206,"stem":207},{"title":211,"path":212,"stem":213,"children":214},"Rate limits","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Frate-limits","docs\u002Fservices\u002Fapi-usage\u002Frate-limits\u002Findex",[215],{"title":211,"path":212,"stem":213},{"title":217,"path":218,"stem":219,"children":220},"Versioning & stability","\u002Fdocs\u002Fservices\u002Fapi-usage\u002Fversioning","docs\u002Fservices\u002Fapi-usage\u002Fversioning\u002Findex",[221],{"title":217,"path":218,"stem":219},{"title":223,"path":224,"stem":225,"children":226},"Authentication","\u002Fdocs\u002Fservices\u002Fauth","docs\u002Fservices\u002Fauth\u002Findex",[227,228,234,240,246],{"title":223,"path":224,"stem":225},{"title":229,"path":230,"stem":231,"children":232},"API keys","\u002Fdocs\u002Fservices\u002Fauth\u002Fapi-keys","docs\u002Fservices\u002Fauth\u002Fapi-keys\u002Findex",[233],{"title":229,"path":230,"stem":231},{"title":235,"path":236,"stem":237,"children":238},"Multi-factor authentication","\u002Fdocs\u002Fservices\u002Fauth\u002Fmfa","docs\u002Fservices\u002Fauth\u002Fmfa\u002Findex",[239],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243,"children":244},"Social sign-in","\u002Fdocs\u002Fservices\u002Fauth\u002Foauth2","docs\u002Fservices\u002Fauth\u002Foauth2\u002Findex",[245],{"title":241,"path":242,"stem":243},{"title":247,"path":248,"stem":249,"children":250},"Sessions","\u002Fdocs\u002Fservices\u002Fauth\u002Fsessions","docs\u002Fservices\u002Fauth\u002Fsessions\u002Findex",[251],{"title":247,"path":248,"stem":249},{"title":253,"path":254,"stem":255,"children":256},"Events","\u002Fdocs\u002Fservices\u002Fevents","docs\u002Fservices\u002Fevents\u002Findex",[257,258,264],{"title":253,"path":254,"stem":255},{"title":259,"path":260,"stem":261,"children":262},"Consuming events","\u002Fdocs\u002Fservices\u002Fevents\u002Fconsuming-events","docs\u002Fservices\u002Fevents\u002Fconsuming-events\u002Findex",[263],{"title":259,"path":260,"stem":261},{"title":265,"path":266,"stem":267,"children":268},"Event types","\u002Fdocs\u002Fservices\u002Fevents\u002Fevent-types","docs\u002Fservices\u002Fevents\u002Fevent-types\u002Findex",[269],{"title":265,"path":266,"stem":267},{"title":271,"path":272,"stem":273,"children":274},"Network","\u002Fdocs\u002Fservices\u002Fnetwork","docs\u002Fservices\u002Fnetwork\u002Findex",[275,276,282,288,294,300,306,312,318],{"title":271,"path":272,"stem":273},{"title":277,"path":278,"stem":279,"children":280},"Caching","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcaching","docs\u002Fservices\u002Fnetwork\u002Fcaching\u002Findex",[281],{"title":277,"path":278,"stem":279},{"title":283,"path":284,"stem":285,"children":286},"Content delivery (CDN)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcdn","docs\u002Fservices\u002Fnetwork\u002Fcdn\u002Findex",[287],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291,"children":292},"Compression","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fcompression","docs\u002Fservices\u002Fnetwork\u002Fcompression\u002Findex",[293],{"title":289,"path":290,"stem":291},{"title":295,"path":296,"stem":297,"children":298},"DDoS mitigation","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fddos","docs\u002Fservices\u002Fnetwork\u002Fddos\u002Findex",[299],{"title":295,"path":296,"stem":297},{"title":301,"path":302,"stem":303,"children":304},"Edge network","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fedges","docs\u002Fservices\u002Fnetwork\u002Fedges\u002Findex",[305],{"title":301,"path":302,"stem":303},{"title":307,"path":308,"stem":309,"children":310},"Endpoints","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fendpoints","docs\u002Fservices\u002Fnetwork\u002Fendpoints\u002Findex",[311],{"title":307,"path":308,"stem":309},{"title":313,"path":314,"stem":315,"children":316},"Transport Layer Security (TLS)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Ftls","docs\u002Fservices\u002Fnetwork\u002Ftls\u002Findex",[317],{"title":313,"path":314,"stem":315},{"title":319,"path":320,"stem":321,"children":322},"Web application firewall (WAF)","\u002Fdocs\u002Fservices\u002Fnetwork\u002Fwaf","docs\u002Fservices\u002Fnetwork\u002Fwaf\u002Findex",[323],{"title":319,"path":320,"stem":321},{"title":325,"path":326,"stem":327,"children":328},"Storage","\u002Fdocs\u002Fservices\u002Fstorage","docs\u002Fservices\u002Fstorage\u002Findex",[329,330,336,342,348,354,360,366],{"title":325,"path":326,"stem":327},{"title":331,"path":332,"stem":333,"children":334},"Folders","\u002Fdocs\u002Fservices\u002Fstorage\u002Fbuckets","docs\u002Fservices\u002Fstorage\u002Fbuckets\u002Findex",[335],{"title":331,"path":332,"stem":333},{"title":337,"path":338,"stem":339,"children":340},"Signed URLs and access","\u002Fdocs\u002Fservices\u002Fstorage\u002Ffile-tokens","docs\u002Fservices\u002Fstorage\u002Ffile-tokens\u002Findex",[341],{"title":337,"path":338,"stem":339},{"title":343,"path":344,"stem":345,"children":346},"Serve and transform images","\u002Fdocs\u002Fservices\u002Fstorage\u002Fimages","docs\u002Fservices\u002Fstorage\u002Fimages\u002Findex",[347],{"title":343,"path":344,"stem":345},{"title":349,"path":350,"stem":351,"children":352},"3D assets","\u002Fdocs\u002Fservices\u002Fstorage\u002Fmodel-viewer","docs\u002Fservices\u002Fstorage\u002Fmodel-viewer\u002Findex",[353],{"title":349,"path":350,"stem":351},{"title":355,"path":356,"stem":357,"children":358},"Access control and visibility","\u002Fdocs\u002Fservices\u002Fstorage\u002Fpermissions","docs\u002Fservices\u002Fstorage\u002Fpermissions\u002Findex",[359],{"title":355,"path":356,"stem":357},{"title":361,"path":362,"stem":363,"children":364},"Quick start","\u002Fdocs\u002Fservices\u002Fstorage\u002Fquick-start","docs\u002Fservices\u002Fstorage\u002Fquick-start\u002Findex",[365],{"title":361,"path":362,"stem":363},{"title":367,"path":368,"stem":369,"children":370},"Upload and manage files","\u002Fdocs\u002Fservices\u002Fstorage\u002Fupload-download","docs\u002Fservices\u002Fstorage\u002Fupload-download\u002Findex",[371],{"title":367,"path":368,"stem":369},{"title":373,"path":374,"stem":375,"children":376},"Webhooks","\u002Fdocs\u002Fservices\u002Fwebhooks","docs\u002Fservices\u002Fwebhooks\u002Findex",[377,378,384],{"title":373,"path":374,"stem":375},{"title":379,"path":380,"stem":381,"children":382},"Delivery","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fdelivery","docs\u002Fservices\u002Fwebhooks\u002Fdelivery\u002Findex",[383],{"title":379,"path":380,"stem":381},{"title":385,"path":386,"stem":387,"children":388},"Security","\u002Fdocs\u002Fservices\u002Fwebhooks\u002Fsecurity","docs\u002Fservices\u002Fwebhooks\u002Fsecurity\u002Findex",[389],{"title":385,"path":386,"stem":387},{"title":391,"path":392,"stem":393,"children":394},"Studios","\u002Fdocs\u002Fstudios","docs\u002Fstudios\u002Findex",[395,396,402,570,913,1195,1378],{"title":391,"path":392,"stem":393},{"title":397,"path":398,"stem":399,"children":400},"AI Studio","\u002Fdocs\u002Fstudios\u002Fai","docs\u002Fstudios\u002Fai\u002Findex",[401],{"title":397,"path":398,"stem":399},{"title":403,"path":404,"stem":405,"children":406},"Analytics Studio","\u002Fdocs\u002Fstudios\u002Fanalytics","docs\u002Fstudios\u002Fanalytics\u002Findex",[407,408,451,488,495,514,545],{"title":403,"path":404,"stem":405},{"title":409,"path":410,"stem":411,"children":412,"icon":414},"Make your app's data analyzable","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Findex",[413,415,421,427,433,439,445],{"title":409,"path":410,"stem":411,"icon":414},"i-lucide-table-2",{"title":416,"path":417,"stem":418,"children":419},"Column locators","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fcolumn-locators\u002Findex",[420],{"title":416,"path":417,"stem":418},{"title":422,"path":423,"stem":424,"children":425},"Declaring a view","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fdeclaring-a-view\u002Findex",[426],{"title":422,"path":423,"stem":424},{"title":428,"path":429,"stem":430,"children":431},"Example","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fexample\u002Findex",[432],{"title":428,"path":429,"stem":430},{"title":434,"path":435,"stem":436,"children":437},"Semantic roles","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fsemantic-roles\u002Findex",[438],{"title":434,"path":435,"stem":436},{"title":440,"path":441,"stem":442,"children":443},"Tenant isolation","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Ftenant-isolation\u002Findex",[444],{"title":440,"path":441,"stem":442},{"title":446,"path":447,"stem":448,"children":449},"The contract","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract","docs\u002Fstudios\u002Fanalytics\u002Fanalytics-json\u002Fthe-contract\u002Findex",[450],{"title":446,"path":447,"stem":448},{"title":452,"path":453,"stem":454,"children":455,"icon":457},"Stream commerce activity","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Findex",[456,458,464,470,476,482],{"title":452,"path":453,"stem":454,"icon":457},"i-lucide-radio",{"title":459,"path":460,"stem":461,"children":462},"Delivery guarantees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fdelivery-guarantees\u002Findex",[463],{"title":459,"path":460,"stem":461},{"title":465,"path":466,"stem":467,"children":468},"Event types for reporting","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fevent-types-for-reporting\u002Findex",[469],{"title":465,"path":466,"stem":467},{"title":471,"path":472,"stem":473,"children":474},"Register an endpoint","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fregister-an-endpoint\u002Findex",[475],{"title":471,"path":472,"stem":473},{"title":477,"path":478,"stem":479,"children":480},"The event stream","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fthe-event-stream\u002Findex",[481],{"title":477,"path":478,"stem":479},{"title":483,"path":484,"stem":485,"children":486},"Verify a delivery","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery","docs\u002Fstudios\u002Fanalytics\u002Fevents\u002Fverify-a-delivery\u002Findex",[487],{"title":483,"path":484,"stem":485},{"title":489,"path":490,"stem":491,"children":492,"icon":494},"Getting data out","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out","docs\u002Fstudios\u002Fanalytics\u002Fgetting-data-out\u002Findex",[493],{"title":489,"path":490,"stem":491,"icon":494},"i-lucide-arrow-right-left",{"title":496,"path":497,"stem":498,"children":499,"icon":501},"Limits and what's next","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Findex",[500,502,508],{"title":496,"path":497,"stem":498,"icon":501},"i-lucide-list-checks",{"title":503,"path":504,"stem":505,"children":506},"Designing for what's coming","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fdesigning-for-whats-coming\u002Findex",[507],{"title":503,"path":504,"stem":505},{"title":509,"path":510,"stem":511,"children":512},"What does not exist yet","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet","docs\u002Fstudios\u002Fanalytics\u002Flimits\u002Fwhat-does-not-exist-yet\u002Findex",[513],{"title":509,"path":510,"stem":511},{"title":515,"path":516,"stem":517,"children":518,"icon":520},"Build your own reporting store","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Findex",[519,521,527,533,539],{"title":515,"path":516,"stem":517,"icon":520},"i-lucide-database",{"title":522,"path":523,"stem":524,"children":525},"Backfill","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fbackfill\u002Findex",[526],{"title":522,"path":523,"stem":524},{"title":528,"path":529,"stem":530,"children":531},"Incremental sync","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fincremental-sync\u002Findex",[532],{"title":528,"path":529,"stem":530},{"title":534,"path":535,"stem":536,"children":537},"Modelling","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fmodelling\u002Findex",[538],{"title":534,"path":535,"stem":536},{"title":540,"path":541,"stem":542,"children":543},"Pull versus push","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push","docs\u002Fstudios\u002Fanalytics\u002Fown-store\u002Fpull-vs-push\u002Findex",[544],{"title":540,"path":541,"stem":542},{"title":546,"path":547,"stem":548,"children":549,"icon":551},"What the tenant sees","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Findex",[550,552,558,564],{"title":546,"path":547,"stem":548,"icon":551},"i-lucide-chart-column",{"title":553,"path":554,"stem":555,"children":556},"Cohorts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fcohorts\u002Findex",[557],{"title":553,"path":554,"stem":555},{"title":559,"path":560,"stem":561,"children":562},"Datasets and charts","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fdatasets-and-charts\u002Findex",[563],{"title":559,"path":560,"stem":561},{"title":565,"path":566,"stem":567,"children":568},"Studio overview","\u002Fdocs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview","docs\u002Fstudios\u002Fanalytics\u002Fwhat-the-tenant-sees\u002Fstudio-overview\u002Findex",[569],{"title":565,"path":566,"stem":567},{"title":571,"path":572,"stem":573,"children":574},"App Studio","\u002Fdocs\u002Fstudios\u002Fapps","docs\u002Fstudios\u002Fapps\u002Findex",[575,576,613,684,749,767,834],{"title":571,"path":572,"stem":573},{"title":577,"path":578,"stem":579,"children":580,"icon":582},"Admin UI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Findex",[581,583,589,595,601,607],{"title":577,"path":578,"stem":579,"icon":582},"i-lucide-layout-dashboard",{"title":584,"path":585,"stem":586,"children":587},"How the Cockpit renders","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fhow-cockpit-renders\u002Findex",[588],{"title":584,"path":585,"stem":586},{"title":590,"path":591,"stem":592,"children":593},"Preview locally","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fpreview-locally\u002Findex",[594],{"title":590,"path":591,"stem":592},{"title":596,"path":597,"stem":598,"children":599},"Reading settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Freading-settings\u002Findex",[600],{"title":596,"path":597,"stem":598},{"title":602,"path":603,"stem":604,"children":605},"Settings","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fsettings\u002Findex",[606],{"title":602,"path":603,"stem":604},{"title":608,"path":609,"stem":610,"children":611},"Vocabularies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies","docs\u002Fstudios\u002Fapps\u002Fadmin-ui\u002Fvocabularies\u002Findex",[612],{"title":608,"path":609,"stem":610},{"title":614,"path":615,"stem":616,"children":617,"icon":619},"Your app's API","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Findex",[618,620,625,631,637,643,649,654,660,666,672,678],{"title":614,"path":615,"stem":616,"icon":619},"i-lucide-route",{"title":277,"path":621,"stem":622,"children":623},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcaching\u002Findex",[624],{"title":277,"path":621,"stem":622},{"title":626,"path":627,"stem":628,"children":629},"Calling another app","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcalling-another-app\u002Findex",[630],{"title":626,"path":627,"stem":628},{"title":632,"path":633,"stem":634,"children":635},"Capabilities","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapabilities\u002Findex",[636],{"title":632,"path":633,"stem":634},{"title":638,"path":639,"stem":640,"children":641},"Capability reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcapability-reference\u002Findex",[642],{"title":638,"path":639,"stem":640},{"title":644,"path":645,"stem":646,"children":647},"CRUD","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fcrud\u002Findex",[648],{"title":644,"path":645,"stem":646},{"title":193,"path":650,"stem":651,"children":652},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ferrors\u002Findex",[653],{"title":193,"path":650,"stem":651},{"title":655,"path":656,"stem":657,"children":658},"Overriding a capability","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability","docs\u002Fstudios\u002Fapps\u002Fapi\u002Foverriding-a-capability\u002Findex",[659],{"title":655,"path":656,"stem":657},{"title":661,"path":662,"stem":663,"children":664},"Pagination and filtering","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpagination-and-filtering\u002Findex",[665],{"title":661,"path":662,"stem":663},{"title":667,"path":668,"stem":669,"children":670},"Published OpenAPI","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi","docs\u002Fstudios\u002Fapps\u002Fapi\u002Fpublished-openapi\u002Findex",[671],{"title":667,"path":668,"stem":669},{"title":673,"path":674,"stem":675,"children":676},"The router","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter","docs\u002Fstudios\u002Fapps\u002Fapi\u002Frouter\u002Findex",[677],{"title":673,"path":674,"stem":675},{"title":679,"path":680,"stem":681,"children":682},"Tags","\u002Fdocs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags","docs\u002Fstudios\u002Fapps\u002Fapi\u002Ftags\u002Findex",[683],{"title":679,"path":680,"stem":681},{"title":685,"path":686,"stem":687,"children":688,"icon":520},"Data model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Findex",[689,690,696,702,708,714,720,726,732,738,743],{"title":685,"path":686,"stem":687,"icon":520},{"title":691,"path":692,"stem":693,"children":694},"Adapters","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fadapters\u002Findex",[695],{"title":691,"path":692,"stem":693},{"title":697,"path":698,"stem":699,"children":700},"Column types","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcolumn-types\u002Findex",[701],{"title":697,"path":698,"stem":699},{"title":703,"path":704,"stem":705,"children":706},"Cross-app lookups","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fcross-app-lookups\u002Findex",[707],{"title":703,"path":704,"stem":705},{"title":709,"path":710,"stem":711,"children":712},"Migrations","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fmigrations\u002Findex",[713],{"title":709,"path":710,"stem":711},{"title":715,"path":716,"stem":717,"children":718},"Projections","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fprojections\u002Findex",[719],{"title":715,"path":716,"stem":717},{"title":721,"path":722,"stem":723,"children":724},"Relationships","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Frelationships\u002Findex",[725],{"title":721,"path":722,"stem":723},{"title":727,"path":728,"stem":729,"children":730},"Schema reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fschema-reference\u002Findex",[731],{"title":727,"path":728,"stem":729},{"title":733,"path":734,"stem":735,"children":736},"Scoping","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Fscoping\u002Findex",[737],{"title":733,"path":734,"stem":735},{"title":440,"path":739,"stem":740,"children":741},"\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftenant-isolation\u002Findex",[742],{"title":440,"path":739,"stem":740},{"title":744,"path":745,"stem":746,"children":747},"The typed client","\u002Fdocs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client","docs\u002Fstudios\u002Fapps\u002Fdata-model\u002Ftyped-client\u002Findex",[748],{"title":744,"path":745,"stem":746},{"title":750,"path":751,"stem":752,"children":753},"Getting started","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Findex",[754,755,761],{"title":750,"path":751,"stem":752},{"title":756,"path":757,"stem":758,"children":759},"App model","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fapp-model\u002Findex",[760],{"title":756,"path":757,"stem":758},{"title":762,"path":763,"stem":764,"children":765},"App isolation","\u002Fdocs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation","docs\u002Fstudios\u002Fapps\u002Fgetting-started\u002Fisolation\u002Findex",[766],{"title":762,"path":763,"stem":764},{"title":768,"path":769,"stem":770,"children":771,"icon":773},"Platform services","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Findex",[772,774,780,786,792,798,804,810,816,822,828],{"title":768,"path":769,"stem":770,"icon":773},"i-lucide-boxes",{"title":775,"path":776,"stem":777,"children":778},"Entity access","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fentity-access\u002Findex",[779],{"title":775,"path":776,"stem":777},{"title":781,"path":782,"stem":783,"children":784},"Events you emit","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-emit\u002Findex",[785],{"title":781,"path":782,"stem":783},{"title":787,"path":788,"stem":789,"children":790},"Events you receive","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fevents-you-receive\u002Findex",[791],{"title":787,"path":788,"stem":789},{"title":793,"path":794,"stem":795,"children":796},"Not yet proven","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fnot-yet-proven\u002Findex",[797],{"title":793,"path":794,"stem":795},{"title":799,"path":800,"stem":801,"children":802},"Outbound HTTP","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Foutbound-http\u002Findex",[803],{"title":799,"path":800,"stem":801},{"title":805,"path":806,"stem":807,"children":808},"Permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fpermissions\u002Findex",[809],{"title":805,"path":806,"stem":807},{"title":811,"path":812,"stem":813,"children":814},"Person permissions","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fperson-permissions\u002Findex",[815],{"title":811,"path":812,"stem":813},{"title":817,"path":818,"stem":819,"children":820},"Scheduled work","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Fscheduled-work\u002Findex",[821],{"title":817,"path":818,"stem":819},{"title":823,"path":824,"stem":825,"children":826},"Tenant identity","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftenant-identity\u002Findex",[827],{"title":823,"path":824,"stem":825},{"title":829,"path":830,"stem":831,"children":832},"Tracing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing","docs\u002Fstudios\u002Fapps\u002Fplatform-services\u002Ftracing\u002Findex",[833],{"title":829,"path":830,"stem":831},{"title":835,"path":836,"stem":837,"children":838,"icon":840},"Ship and operate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Findex",[839,841,847,853,859,865,871,877,883,889,895,901,907],{"title":835,"path":836,"stem":837,"icon":840},"i-lucide-rocket",{"title":842,"path":843,"stem":844,"children":845},"Billing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fbilling\u002Findex",[846],{"title":842,"path":843,"stem":844},{"title":848,"path":849,"stem":850,"children":851},"Consent","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fconsent\u002Findex",[852],{"title":848,"path":849,"stem":850},{"title":854,"path":855,"stem":856,"children":857},"Dependencies","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdependencies\u002Findex",[858],{"title":854,"path":855,"stem":856},{"title":860,"path":861,"stem":862,"children":863},"Deploying","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fdeploying\u002Findex",[864],{"title":860,"path":861,"stem":862},{"title":866,"path":867,"stem":868,"children":869},"Manifest reference","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fmanifest-reference\u002Findex",[870],{"title":866,"path":867,"stem":868},{"title":872,"path":873,"stem":874,"children":875},"Operating","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Foperating\u002Findex",[876],{"title":872,"path":873,"stem":874},{"title":878,"path":879,"stem":880,"children":881},"Private or Marketplace","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fprivate-vs-marketplace\u002Findex",[882],{"title":878,"path":879,"stem":880},{"title":884,"path":885,"stem":886,"children":887},"Publish and install","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fpublish-and-install\u002Findex",[888],{"title":884,"path":885,"stem":886},{"title":890,"path":891,"stem":892,"children":893},"Testing","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Ftesting\u002Findex",[894],{"title":890,"path":891,"stem":892},{"title":896,"path":897,"stem":898,"children":899},"Validate","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fvalidate\u002Findex",[900],{"title":896,"path":897,"stem":898},{"title":902,"path":903,"stem":904,"children":905},"Verifying live","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fverifying-live\u002Findex",[906],{"title":902,"path":903,"stem":904},{"title":908,"path":909,"stem":910,"children":911},"Versioning","\u002Fdocs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning","docs\u002Fstudios\u002Fapps\u002Fship-and-operate\u002Fversioning\u002Findex",[912],{"title":908,"path":909,"stem":910},{"title":914,"path":915,"stem":916,"children":917},"Commerce Studio","\u002Fdocs\u002Fstudios\u002Fcommerce","docs\u002Fstudios\u002Fcommerce\u002Findex",[918,919,991,1045,1088,1093,1147],{"title":914,"path":915,"stem":916},{"title":920,"path":921,"stem":922,"children":923,"icon":925},"Build an app","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Findex",[924,926,932,938,944,950,956,962,968,974,980,985],{"title":920,"path":921,"stem":922,"icon":925},"i-lucide-puzzle",{"title":927,"path":928,"stem":929,"children":930},"Actions and writes","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Factions-and-writes\u002Findex",[931],{"title":927,"path":928,"stem":929},{"title":933,"path":934,"stem":935,"children":936},"cockpit.json reference","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fcockpit-json-reference\u002Findex",[937],{"title":933,"path":934,"stem":935},{"title":939,"path":940,"stem":941,"children":942},"Detail views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fdetail-views\u002Findex",[943],{"title":939,"path":940,"stem":941},{"title":945,"path":946,"stem":947,"children":948},"Forms","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fforms\u002Findex",[949],{"title":945,"path":946,"stem":947},{"title":951,"path":952,"stem":953,"children":954},"From manifest to installed","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Ffrom-manifest-to-installed","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Ffrom-manifest-to-installed\u002Findex",[955],{"title":951,"path":952,"stem":953},{"title":957,"path":958,"stem":959,"children":960},"How it renders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fhow-it-renders\u002Findex",[961],{"title":957,"path":958,"stem":959},{"title":963,"path":964,"stem":965,"children":966},"List views","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Flist-views\u002Findex",[967],{"title":963,"path":964,"stem":965},{"title":969,"path":970,"stem":971,"children":972},"Navigation","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fnavigation\u002Findex",[973],{"title":969,"path":970,"stem":971},{"title":975,"path":976,"stem":977,"children":978},"Permissions and scope","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpermissions-and-scope\u002Findex",[979],{"title":975,"path":976,"stem":977},{"title":590,"path":981,"stem":982,"children":983},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fpreview-locally\u002Findex",[984],{"title":590,"path":981,"stem":982},{"title":986,"path":987,"stem":988,"children":989},"Widgets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets","docs\u002Fstudios\u002Fcommerce\u002Fbuild-an-app\u002Fwidgets\u002Findex",[990],{"title":986,"path":987,"stem":988},{"title":992,"path":993,"stem":994,"children":995,"icon":997},"Catalog","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Findex",[996,998,1004,1010,1016,1022,1027,1033,1039],{"title":992,"path":993,"stem":994,"icon":997},"i-lucide-package",{"title":999,"path":1000,"stem":1001,"children":1002},"Assets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassets\u002Findex",[1003],{"title":999,"path":1000,"stem":1001},{"title":1005,"path":1006,"stem":1007,"children":1008},"Associations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fassociations\u002Findex",[1009],{"title":1005,"path":1006,"stem":1007},{"title":1011,"path":1012,"stem":1013,"children":1014},"Categories","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcategories\u002Findex",[1015],{"title":1011,"path":1012,"stem":1013},{"title":1017,"path":1018,"stem":1019,"children":1020},"Completeness","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fcompleteness\u002Findex",[1021],{"title":1017,"path":1018,"stem":1019},{"title":685,"path":1023,"stem":1024,"children":1025},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fdata-model\u002Findex",[1026],{"title":685,"path":1023,"stem":1024},{"title":1028,"path":1029,"stem":1030,"children":1031},"Import and export","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fimport-and-export\u002Findex",[1032],{"title":1028,"path":1029,"stem":1030},{"title":1034,"path":1035,"stem":1036,"children":1037},"Products","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Fproducts\u002Findex",[1038],{"title":1034,"path":1035,"stem":1036},{"title":1040,"path":1041,"stem":1042,"children":1043},"References","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences","docs\u002Fstudios\u002Fcommerce\u002Fcatalog\u002Freferences\u002Findex",[1044],{"title":1040,"path":1041,"stem":1042},{"title":1046,"path":1047,"stem":1048,"children":1049,"icon":1051},"Customers","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Findex",[1050,1052,1058,1064,1070,1076,1082],{"title":1046,"path":1047,"stem":1048,"icon":1051},"i-lucide-building-2",{"title":1053,"path":1054,"stem":1055,"children":1056},"Contacts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fcontacts\u002Findex",[1057],{"title":1053,"path":1054,"stem":1055},{"title":1059,"path":1060,"stem":1061,"children":1062},"Organizations","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Forganizations\u002Findex",[1063],{"title":1059,"path":1060,"stem":1061},{"title":1065,"path":1066,"stem":1067,"children":1068},"Roles and permissions","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Froles-and-permissions\u002Findex",[1069],{"title":1065,"path":1066,"stem":1067},{"title":1071,"path":1072,"stem":1073,"children":1074},"Segments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fsegments\u002Findex",[1075],{"title":1071,"path":1072,"stem":1073},{"title":1077,"path":1078,"stem":1079,"children":1080},"Storefront accounts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fstorefront-accounts\u002Findex",[1081],{"title":1077,"path":1078,"stem":1079},{"title":1083,"path":1084,"stem":1085,"children":1086},"Value lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists","docs\u002Fstudios\u002Fcommerce\u002Fcustomers\u002Fvalue-lists\u002Findex",[1087],{"title":1083,"path":1084,"stem":1085},{"title":750,"path":1089,"stem":1090,"children":1091,"icon":840},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fgetting-started","docs\u002Fstudios\u002Fcommerce\u002Fgetting-started\u002Findex",[1092],{"title":750,"path":1089,"stem":1090,"icon":840},{"title":1094,"path":1095,"stem":1096,"children":1097,"icon":1099},"Markets and pricing","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Findex",[1098,1100,1106,1112,1118,1124,1130,1136,1141],{"title":1094,"path":1095,"stem":1096,"icon":1099},"i-lucide-globe",{"title":1101,"path":1102,"stem":1103,"children":1104},"Carriers and tracking","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fcarriers-and-tracking\u002Findex",[1105],{"title":1101,"path":1102,"stem":1103},{"title":1107,"path":1108,"stem":1109,"children":1110},"Channels","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fchannels\u002Findex",[1111],{"title":1107,"path":1108,"stem":1109},{"title":1113,"path":1114,"stem":1115,"children":1116},"Markets","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fmarkets\u002Findex",[1117],{"title":1113,"path":1114,"stem":1115},{"title":1119,"path":1120,"stem":1121,"children":1122},"Payment lifecycle","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-lifecycle\u002Findex",[1123],{"title":1119,"path":1120,"stem":1121},{"title":1125,"path":1126,"stem":1127,"children":1128},"Payment methods","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fpayment-methods\u002Findex",[1129],{"title":1125,"path":1126,"stem":1127},{"title":1131,"path":1132,"stem":1133,"children":1134},"Price lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fprice-lists\u002Findex",[1135],{"title":1131,"path":1132,"stem":1133},{"title":602,"path":1137,"stem":1138,"children":1139},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fsettings\u002Findex",[1140],{"title":602,"path":1137,"stem":1138},{"title":1142,"path":1143,"stem":1144,"children":1145},"Shipping rates","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates","docs\u002Fstudios\u002Fcommerce\u002Fmarkets-and-pricing\u002Fshipping-rates\u002Findex",[1146],{"title":1142,"path":1143,"stem":1144},{"title":1148,"path":1149,"stem":1150,"children":1151,"icon":1153},"Orders","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Findex",[1152,1154,1160,1166,1172,1178,1183,1189],{"title":1148,"path":1149,"stem":1150,"icon":1153},"i-lucide-receipt-text",{"title":1155,"path":1156,"stem":1157,"children":1158},"Carts","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fcarts\u002Findex",[1159],{"title":1155,"path":1156,"stem":1157},{"title":1161,"path":1162,"stem":1163,"children":1164},"Events and comments","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fevents-and-comments\u002Findex",[1165],{"title":1161,"path":1162,"stem":1163},{"title":1167,"path":1168,"stem":1169,"children":1170},"Number ranges","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fnumber-ranges\u002Findex",[1171],{"title":1167,"path":1168,"stem":1169},{"title":1173,"path":1174,"stem":1175,"children":1176},"Order lists","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forder-lists\u002Findex",[1177],{"title":1173,"path":1174,"stem":1175},{"title":1148,"path":1179,"stem":1180,"children":1181},"\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Forders\u002Findex",[1182],{"title":1148,"path":1179,"stem":1180},{"title":1184,"path":1185,"stem":1186,"children":1187},"Returns","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Freturns\u002Findex",[1188],{"title":1184,"path":1185,"stem":1186},{"title":1190,"path":1191,"stem":1192,"children":1193},"Stock","\u002Fdocs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock","docs\u002Fstudios\u002Fcommerce\u002Forders\u002Fstock\u002Findex",[1194],{"title":1190,"path":1191,"stem":1192},{"title":1196,"path":1197,"stem":1198,"children":1199},"Integration Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio","docs\u002Fstudios\u002Fintegration-studio\u002Findex",[1200,1201,1238,1275,1305,1310,1341],{"title":1196,"path":1197,"stem":1198},{"title":1202,"path":1203,"stem":1204,"children":1205,"icon":1207},"Build the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Findex",[1206,1208,1214,1220,1226,1232],{"title":1202,"path":1203,"stem":1204,"icon":1207},"i-lucide-workflow",{"title":1209,"path":1210,"stem":1211,"children":1212},"Expressions","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fexpressions\u002Findex",[1213],{"title":1209,"path":1210,"stem":1211},{"title":1215,"path":1216,"stem":1217,"children":1218},"Node catalog","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-catalog\u002Findex",[1219],{"title":1215,"path":1216,"stem":1217},{"title":1221,"path":1222,"stem":1223,"children":1224},"Node configuration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fnode-configuration\u002Findex",[1225],{"title":1221,"path":1222,"stem":1223},{"title":1227,"path":1228,"stem":1229,"children":1230},"Templates","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Ftemplates\u002Findex",[1231],{"title":1227,"path":1228,"stem":1229},{"title":1233,"path":1234,"stem":1235,"children":1236},"The workflow document","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model","docs\u002Fstudios\u002Fintegration-studio\u002Fbuild\u002Fworkflow-model\u002Findex",[1237],{"title":1233,"path":1234,"stem":1235},{"title":1239,"path":1240,"stem":1241,"children":1242,"icon":1244},"Connect the systems","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Findex",[1243,1245,1251,1257,1263,1269],{"title":1239,"path":1240,"stem":1241,"icon":1244},"i-lucide-key-round",{"title":1246,"path":1247,"stem":1248,"children":1249},"Credentials","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fcredentials\u002Findex",[1250],{"title":1246,"path":1247,"stem":1248},{"title":1252,"path":1253,"stem":1254,"children":1255},"File transfer","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Ffiles\u002Findex",[1256],{"title":1252,"path":1253,"stem":1254},{"title":1258,"path":1259,"stem":1260,"children":1261},"OAuth","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Foauth\u002Findex",[1262],{"title":1258,"path":1259,"stem":1260},{"title":1264,"path":1265,"stem":1266,"children":1267},"Reaching Revenue Cloud","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Freaching-revenue-cloud\u002Findex",[1268],{"title":1264,"path":1265,"stem":1266},{"title":1270,"path":1271,"stem":1272,"children":1273},"Secrets","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets","docs\u002Fstudios\u002Fintegration-studio\u002Fconnect\u002Fsecrets\u002Findex",[1274],{"title":1270,"path":1271,"stem":1272},{"title":1276,"path":1277,"stem":1278,"children":1279,"icon":997},"Extend the Studio","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Findex",[1280,1281,1287,1293,1299],{"title":1276,"path":1277,"stem":1278,"icon":997},{"title":1282,"path":1283,"stem":1284,"children":1285},"Custom nodes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fcustom-nodes\u002Findex",[1286],{"title":1282,"path":1283,"stem":1284},{"title":1288,"path":1289,"stem":1290,"children":1291},"Dynamic behaviour","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fdynamic-behaviour\u002Findex",[1292],{"title":1288,"path":1289,"stem":1290},{"title":1294,"path":1295,"stem":1296,"children":1297},"Package manifest","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fpackage-manifest\u002Findex",[1298],{"title":1294,"path":1295,"stem":1296},{"title":1300,"path":1301,"stem":1302,"children":1303},"Registration","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration","docs\u002Fstudios\u002Fintegration-studio\u002Fextend\u002Fregistration\u002Findex",[1304],{"title":1300,"path":1301,"stem":1302},{"title":750,"path":1306,"stem":1307,"children":1308,"icon":840},"\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started","docs\u002Fstudios\u002Fintegration-studio\u002Fgetting-started\u002Findex",[1309],{"title":750,"path":1306,"stem":1307,"icon":840},{"title":1311,"path":1312,"stem":1313,"children":1314,"icon":1316},"Run, watch, recover","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Findex",[1315,1317,1323,1329,1335],{"title":1311,"path":1312,"stem":1313,"icon":1316},"i-lucide-activity",{"title":1318,"path":1319,"stem":1320,"children":1321},"Missed runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fdead-letters\u002Findex",[1322],{"title":1318,"path":1319,"stem":1320},{"title":1324,"path":1325,"stem":1326,"children":1327},"Failure handling","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Ffailure-handling\u002Findex",[1328],{"title":1324,"path":1325,"stem":1326},{"title":1330,"path":1331,"stem":1332,"children":1333},"Revisions and audit","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Frevisions-and-audit\u002Findex",[1334],{"title":1330,"path":1331,"stem":1332},{"title":1336,"path":1337,"stem":1338,"children":1339},"Runs","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns","docs\u002Fstudios\u002Fintegration-studio\u002Foperate\u002Fruns\u002Findex",[1340],{"title":1336,"path":1337,"stem":1338},{"title":1342,"path":1343,"stem":1344,"children":1345,"icon":1347},"Start the workflow","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Findex",[1346,1348,1354,1360,1366,1372],{"title":1342,"path":1343,"stem":1344,"icon":1347},"i-lucide-zap",{"title":1349,"path":1350,"stem":1351,"children":1352},"Event triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fevent-triggers\u002Findex",[1353],{"title":1349,"path":1350,"stem":1351},{"title":1355,"path":1356,"stem":1357,"children":1358},"Execution modes","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fexecution-modes\u002Findex",[1359],{"title":1355,"path":1356,"stem":1357},{"title":1361,"path":1362,"stem":1363,"children":1364},"Schedule triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fschedule-triggers\u002Findex",[1365],{"title":1361,"path":1362,"stem":1363},{"title":1367,"path":1368,"stem":1369,"children":1370},"Triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Ftriggers\u002Findex",[1371],{"title":1367,"path":1368,"stem":1369},{"title":1373,"path":1374,"stem":1375,"children":1376},"Webhook triggers","\u002Fdocs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers","docs\u002Fstudios\u002Fintegration-studio\u002Fstart\u002Fwebhook-triggers\u002Findex",[1377],{"title":1373,"path":1374,"stem":1375},{"title":1379,"path":1380,"stem":1381,"children":1382},"Experience Studio","\u002Fdocs\u002Fstudios\u002Fsites","docs\u002Fstudios\u002Fsites\u002Findex",[1383,1384,1433,1480,1606,1612,1654],{"title":1379,"path":1380,"stem":1381},{"title":1385,"path":1386,"stem":1387,"children":1388,"icon":1390},"Compose pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Findex",[1389,1391,1397,1403,1409,1415,1421,1427],{"title":1385,"path":1386,"stem":1387,"icon":1390},"i-lucide-layout-template",{"title":1392,"path":1393,"stem":1394,"children":1395},"Block catalog","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-catalog\u002Findex",[1396],{"title":1392,"path":1393,"stem":1394},{"title":1398,"path":1399,"stem":1400,"children":1401},"Block options","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fblock-options\u002Findex",[1402],{"title":1398,"path":1399,"stem":1400},{"title":1404,"path":1405,"stem":1406,"children":1407},"How a block works","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works\u002Findex",[1408],{"title":1404,"path":1405,"stem":1406},{"title":1410,"path":1411,"stem":1412,"children":1413},"Inline editing","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Finline-editing\u002Findex",[1414],{"title":1410,"path":1411,"stem":1412},{"title":1416,"path":1417,"stem":1418,"children":1419},"Reading published pages","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Freading-pages\u002Findex",[1420],{"title":1416,"path":1417,"stem":1418},{"title":1422,"path":1423,"stem":1424,"children":1425},"Registering blocks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fregistering\u002Findex",[1426],{"title":1422,"path":1423,"stem":1424},{"title":1428,"path":1429,"stem":1430,"children":1431},"Shells and fields","\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields","docs\u002Fstudios\u002Fsites\u002Fblocks\u002Fshells-and-fields\u002Findex",[1432],{"title":1428,"path":1429,"stem":1430},{"title":1434,"path":1435,"stem":1436,"children":1437,"icon":1439},"Connect data","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata","docs\u002Fstudios\u002Fsites\u002Fdata\u002Findex",[1438,1440,1445,1451,1457,1462,1468,1474],{"title":1434,"path":1435,"stem":1436,"icon":1439},"i-lucide-plug",{"title":223,"path":1441,"stem":1442,"children":1443},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fauthentication\u002Findex",[1444],{"title":223,"path":1441,"stem":1442},{"title":1446,"path":1447,"stem":1448,"children":1449},"The BFF pattern","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fbff-pattern\u002Findex",[1450],{"title":1446,"path":1447,"stem":1448},{"title":1452,"path":1453,"stem":1454,"children":1455},"Catalog, cart, checkout","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fcatalog-cart-checkout\u002Findex",[1456],{"title":1452,"path":1453,"stem":1454},{"title":945,"path":1458,"stem":1459,"children":1460},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fforms\u002Findex",[1461],{"title":945,"path":1458,"stem":1459},{"title":1463,"path":1464,"stem":1465,"children":1466},"Media and assets","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmedia\u002Findex",[1467],{"title":1463,"path":1464,"stem":1465},{"title":1469,"path":1470,"stem":1471,"children":1472},"Multi-tenant themes","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fmulti-tenant-themes\u002Findex",[1473],{"title":1469,"path":1470,"stem":1471},{"title":1475,"path":1476,"stem":1477,"children":1478},"Search","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch","docs\u002Fstudios\u002Fsites\u002Fdata\u002Fsearch\u002Findex",[1479],{"title":1475,"path":1476,"stem":1477},{"title":1481,"path":1482,"stem":1483,"children":1484,"icon":840},"Build and deploy","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Findex",[1485,1486,1492,1498,1504,1510,1516,1522,1600],{"title":1481,"path":1482,"stem":1483,"icon":840},{"title":1487,"path":1488,"stem":1489,"children":1490},"Build configuration","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fbuild-configuration\u002Findex",[1491],{"title":1487,"path":1488,"stem":1489},{"title":1493,"path":1494,"stem":1495,"children":1496},"Compute specifications","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fcompute-specifications\u002Findex",[1497],{"title":1493,"path":1494,"stem":1495},{"title":1499,"path":1500,"stem":1501,"children":1502},"Environment variables","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fenvironment-variables\u002Findex",[1503],{"title":1499,"path":1500,"stem":1501},{"title":1505,"path":1506,"stem":1507,"children":1508},"From Git","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-git\u002Findex",[1509],{"title":1505,"path":1506,"stem":1507},{"title":1511,"path":1512,"stem":1513,"children":1514},"From the CLI","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Ffrom-the-cli\u002Findex",[1515],{"title":1511,"path":1512,"stem":1513},{"title":1517,"path":1518,"stem":1519,"children":1520},"Manually","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fmanually\u002Findex",[1521],{"title":1517,"path":1518,"stem":1519},{"title":1523,"path":1524,"stem":1525,"children":1526},"Quick-starts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Findex",[1527,1528,1534,1540,1546,1552,1558,1564,1570,1576,1582,1588,1594],{"title":1523,"path":1524,"stem":1525},{"title":1529,"path":1530,"stem":1531,"children":1532},"Deploy an Angular app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fangular\u002Findex",[1533],{"title":1529,"path":1530,"stem":1531},{"title":1535,"path":1536,"stem":1537,"children":1538},"Deploy a Astro app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fastro\u002Findex",[1539],{"title":1535,"path":1536,"stem":1537},{"title":1541,"path":1542,"stem":1543,"children":1544},"Deploy a Flutter Web app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fflutter\u002Findex",[1545],{"title":1541,"path":1542,"stem":1543},{"title":1547,"path":1548,"stem":1549,"children":1550},"Deploy a Next.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnextjs\u002Findex",[1551],{"title":1547,"path":1548,"stem":1549},{"title":1553,"path":1554,"stem":1555,"children":1556},"Deploy a Nuxt app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fnuxt\u002Findex",[1557],{"title":1553,"path":1554,"stem":1555},{"title":1559,"path":1560,"stem":1561,"children":1562},"Deploy a React Native app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact-native","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact-native\u002Findex",[1563],{"title":1559,"path":1560,"stem":1561},{"title":1565,"path":1566,"stem":1567,"children":1568},"Deploy a React app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Freact\u002Findex",[1569],{"title":1565,"path":1566,"stem":1567},{"title":1571,"path":1572,"stem":1573,"children":1574},"Deploy a Remix app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fremix\u002Findex",[1575],{"title":1571,"path":1572,"stem":1573},{"title":1577,"path":1578,"stem":1579,"children":1580},"Deploy a SvelteKit app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fsveltekit\u002Findex",[1581],{"title":1577,"path":1578,"stem":1579},{"title":1583,"path":1584,"stem":1585,"children":1586},"Deploy a TanStack Start app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Ftanstack-start","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Ftanstack-start\u002Findex",[1587],{"title":1583,"path":1584,"stem":1585},{"title":1589,"path":1590,"stem":1591,"children":1592},"Deploy a Vanilla JS app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvanilla\u002Findex",[1593],{"title":1589,"path":1590,"stem":1591},{"title":1595,"path":1596,"stem":1597,"children":1598},"Deploy a Vue.js app to revenexx Storefronts","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fquick-starts\u002Fvue\u002Findex",[1599],{"title":1595,"path":1596,"stem":1597},{"title":1601,"path":1602,"stem":1603,"children":1604},"Starting points","\u002Fdocs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points","docs\u002Fstudios\u002Fsites\u002Fdeploy\u002Fstarting-points\u002Findex",[1605],{"title":1601,"path":1602,"stem":1603},{"title":750,"path":1607,"stem":1608,"children":1609,"icon":1611},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fgetting-started","docs\u002Fstudios\u002Fsites\u002Fgetting-started\u002Findex",[1610],{"title":750,"path":1607,"stem":1608,"icon":1611},"i-lucide-terminal",{"title":1613,"path":1614,"stem":1615,"children":1616,"icon":1099},"Production","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Findex",[1617,1618,1624,1630,1636,1642,1648],{"title":1613,"path":1614,"stem":1615,"icon":1099},{"title":1619,"path":1620,"stem":1621,"children":1622},"Deployments","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdeployments\u002Findex",[1623],{"title":1619,"path":1620,"stem":1621},{"title":1625,"path":1626,"stem":1627,"children":1628},"Domains","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fdomains\u002Findex",[1629],{"title":1625,"path":1626,"stem":1627},{"title":1631,"path":1632,"stem":1633,"children":1634},"Instant rollbacks","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Finstant-rollbacks\u002Findex",[1635],{"title":1631,"path":1632,"stem":1633},{"title":1637,"path":1638,"stem":1639,"children":1640},"Logs","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Flogs\u002Findex",[1641],{"title":1637,"path":1638,"stem":1639},{"title":1643,"path":1644,"stem":1645,"children":1646},"Previews","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpreviews\u002Findex",[1647],{"title":1643,"path":1644,"stem":1645},{"title":1649,"path":1650,"stem":1651,"children":1652},"Publishing a theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme","docs\u002Fstudios\u002Fsites\u002Fproduction\u002Fpublishing-a-theme\u002Findex",[1653],{"title":1649,"path":1650,"stem":1651},{"title":1655,"path":1656,"stem":1657,"children":1658,"icon":1660},"Build the theme","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Findex",[1659,1661,1667,1673,1679,1685,1691,1697,1715],{"title":1655,"path":1656,"stem":1657,"icon":1660},"i-lucide-palette",{"title":1662,"path":1663,"stem":1664,"children":1665},"Theme anatomy","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fanatomy\u002Findex",[1666],{"title":1662,"path":1663,"stem":1664},{"title":1668,"path":1669,"stem":1670,"children":1671},"Design tokens","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fdesign-tokens\u002Findex",[1672],{"title":1668,"path":1669,"stem":1670},{"title":1674,"path":1675,"stem":1676,"children":1677},"Frameworks","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fframeworks\u002Findex",[1678],{"title":1674,"path":1675,"stem":1676},{"title":1680,"path":1681,"stem":1682,"children":1683},"The layer chain","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flayer-chain\u002Findex",[1684],{"title":1680,"path":1681,"stem":1682},{"title":1686,"path":1687,"stem":1688,"children":1689},"Local development","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Flocal-development\u002Findex",[1690],{"title":1686,"path":1687,"stem":1688},{"title":1692,"path":1693,"stem":1694,"children":1695},"Overriding","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Foverriding\u002Findex",[1696],{"title":1692,"path":1693,"stem":1694},{"title":1698,"path":1699,"stem":1700,"children":1701},"Rendering","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Findex",[1702,1703,1709],{"title":1698,"path":1699,"stem":1700},{"title":1704,"path":1705,"stem":1706,"children":1707},"SSR","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fssr\u002Findex",[1708],{"title":1704,"path":1705,"stem":1706},{"title":1710,"path":1711,"stem":1712,"children":1713},"Static","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Frendering\u002Fstatic\u002Findex",[1714],{"title":1710,"path":1711,"stem":1712},{"title":1716,"path":1717,"stem":1718,"children":1719},"Service modes","\u002Fdocs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes","docs\u002Fstudios\u002Fsites\u002Ftheme\u002Fservice-modes\u002Findex",[1720],{"title":1716,"path":1717,"stem":1718},{"title":1722,"path":1723,"stem":1724,"children":1725},"Tools","\u002Fdocs\u002Ftools","docs\u002Ftools\u002Findex",[1726,1727,1936],{"title":1722,"path":1723,"stem":1724},{"title":1728,"path":1729,"stem":1730,"children":1731},"Command line","\u002Fdocs\u002Ftools\u002Fcommand-line","docs\u002Ftools\u002Fcommand-line\u002Findex",[1732,1733,1739,1744,1750,1756,1762,1768,1774,1894,1900,1906,1912,1918,1924,1930],{"title":1728,"path":1729,"stem":1730},{"title":1734,"path":1735,"stem":1736,"children":1737},"Aliases","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Faliases","docs\u002Ftools\u002Fcommand-line\u002Faliases\u002Findex",[1738],{"title":1734,"path":1735,"stem":1736},{"title":223,"path":1740,"stem":1741,"children":1742},"\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fauthentication","docs\u002Ftools\u002Fcommand-line\u002Fauthentication\u002Findex",[1743],{"title":223,"path":1740,"stem":1741},{"title":1745,"path":1746,"stem":1747,"children":1748},"Commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fcommands","docs\u002Ftools\u002Fcommand-line\u002Fcommands\u002Findex",[1749],{"title":1745,"path":1746,"stem":1747},{"title":1751,"path":1752,"stem":1753,"children":1754},"Installation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finstallation","docs\u002Ftools\u002Fcommand-line\u002Finstallation\u002Findex",[1755],{"title":1751,"path":1752,"stem":1753},{"title":1757,"path":1758,"stem":1759,"children":1760},"Interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Finteractive","docs\u002Ftools\u002Fcommand-line\u002Finteractive\u002Findex",[1761],{"title":1757,"path":1758,"stem":1759},{"title":1763,"path":1764,"stem":1765,"children":1766},"Non-interactive use","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fnon-interactive","docs\u002Ftools\u002Fcommand-line\u002Fnon-interactive\u002Findex",[1767],{"title":1763,"path":1764,"stem":1765},{"title":1769,"path":1770,"stem":1771,"children":1772},"Project configuration","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fproject-configuration","docs\u002Ftools\u002Fcommand-line\u002Fproject-configuration\u002Findex",[1773],{"title":1769,"path":1770,"stem":1771},{"title":1775,"path":1776,"stem":1777,"children":1778},"Command reference","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Findex",[1779,1780,1786,1792,1798,1804,1810,1816,1822,1828,1834,1840,1846,1852,1858,1864,1870,1876,1882,1888],{"title":1775,"path":1776,"stem":1777},{"title":1781,"path":1782,"stem":1783,"children":1784},"About commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fabout\u002Findex",[1785],{"title":1781,"path":1782,"stem":1783},{"title":1787,"path":1788,"stem":1789,"children":1790},"Apps commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fapps\u002Findex",[1791],{"title":1787,"path":1788,"stem":1789},{"title":1793,"path":1794,"stem":1795,"children":1796},"Carts commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcarts\u002Findex",[1797],{"title":1793,"path":1794,"stem":1795},{"title":1799,"path":1800,"stem":1801,"children":1802},"Channels commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fchannels\u002Findex",[1803],{"title":1799,"path":1800,"stem":1801},{"title":1805,"path":1806,"stem":1807,"children":1808},"Create commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcreate\u002Findex",[1809],{"title":1805,"path":1806,"stem":1807},{"title":1811,"path":1812,"stem":1813,"children":1814},"Customers commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fcustomers\u002Findex",[1815],{"title":1811,"path":1812,"stem":1813},{"title":1817,"path":1818,"stem":1819,"children":1820},"Deploy commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fdeploy\u002Findex",[1821],{"title":1817,"path":1818,"stem":1819},{"title":1823,"path":1824,"stem":1825,"children":1826},"Forms commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fforms\u002Findex",[1827],{"title":1823,"path":1824,"stem":1825},{"title":1829,"path":1830,"stem":1831,"children":1832},"Markets commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fmarkets\u002Findex",[1833],{"title":1829,"path":1830,"stem":1831},{"title":1835,"path":1836,"stem":1837,"children":1838},"Order lists commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forderlists\u002Findex",[1839],{"title":1835,"path":1836,"stem":1837},{"title":1841,"path":1842,"stem":1843,"children":1844},"Orders commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Forders\u002Findex",[1845],{"title":1841,"path":1842,"stem":1843},{"title":1847,"path":1848,"stem":1849,"children":1850},"Pages commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fpages\u002Findex",[1851],{"title":1847,"path":1848,"stem":1849},{"title":1853,"path":1854,"stem":1855,"children":1856},"Prices commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fprices\u002Findex",[1857],{"title":1853,"path":1854,"stem":1855},{"title":1859,"path":1860,"stem":1861,"children":1862},"Products commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fproducts\u002Findex",[1863],{"title":1859,"path":1860,"stem":1861},{"title":1865,"path":1866,"stem":1867,"children":1868},"Search commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsearch\u002Findex",[1869],{"title":1865,"path":1866,"stem":1867},{"title":1871,"path":1872,"stem":1873,"children":1874},"Settings commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsettings\u002Findex",[1875],{"title":1871,"path":1872,"stem":1873},{"title":1877,"path":1878,"stem":1879,"children":1880},"Sites commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fsites\u002Findex",[1881],{"title":1877,"path":1878,"stem":1879},{"title":1883,"path":1884,"stem":1885,"children":1886},"Skills commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fskills\u002Findex",[1887],{"title":1883,"path":1884,"stem":1885},{"title":1889,"path":1890,"stem":1891,"children":1892},"Storage commands","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage","docs\u002Ftools\u002Fcommand-line\u002Freference\u002Fstorage\u002Findex",[1893],{"title":1889,"path":1890,"stem":1891},{"title":1895,"path":1896,"stem":1897,"children":1898},"Interactive shell (REPL)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Frepl","docs\u002Ftools\u002Fcommand-line\u002Frepl\u002Findex",[1899],{"title":1895,"path":1896,"stem":1897},{"title":1901,"path":1902,"stem":1903,"children":1904},"Scaffolding","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscaffolding","docs\u002Ftools\u002Fcommand-line\u002Fscaffolding\u002Findex",[1905],{"title":1901,"path":1902,"stem":1903},{"title":1907,"path":1908,"stem":1909,"children":1910},"Scripting & output","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fscripting","docs\u002Ftools\u002Fcommand-line\u002Fscripting\u002Findex",[1911],{"title":1907,"path":1908,"stem":1909},{"title":1913,"path":1914,"stem":1915,"children":1916},"Skills","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fskills","docs\u002Ftools\u002Fcommand-line\u002Fskills\u002Findex",[1917],{"title":1913,"path":1914,"stem":1915},{"title":1919,"path":1920,"stem":1921,"children":1922},"Full-screen app (TUI)","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftui","docs\u002Ftools\u002Fcommand-line\u002Ftui\u002Findex",[1923],{"title":1919,"path":1920,"stem":1921},{"title":1925,"path":1926,"stem":1927,"children":1928},"Type generation","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Ftype-generation","docs\u002Ftools\u002Fcommand-line\u002Ftype-generation\u002Findex",[1929],{"title":1925,"path":1926,"stem":1927},{"title":1931,"path":1932,"stem":1933,"children":1934},"Background watchers","\u002Fdocs\u002Ftools\u002Fcommand-line\u002Fwatch","docs\u002Ftools\u002Fcommand-line\u002Fwatch\u002Findex",[1935],{"title":1931,"path":1932,"stem":1933},{"title":1937,"path":1938,"stem":1939,"children":1940},"Model Context Protocol","\u002Fdocs\u002Ftools\u002Fmcp","docs\u002Ftools\u002Fmcp\u002Findex",[1941,1942,1948,1954,1960,1966,1972,1978,1984],{"title":1937,"path":1938,"stem":1939},{"title":1943,"path":1944,"stem":1945,"children":1946},"revenexx docs MCP in Google Antigravity","\u002Fdocs\u002Ftools\u002Fmcp\u002Fantigravity","docs\u002Ftools\u002Fmcp\u002Fantigravity\u002Findex",[1947],{"title":1943,"path":1944,"stem":1945},{"title":1949,"path":1950,"stem":1951,"children":1952},"revenexx docs MCP in Claude Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-code","docs\u002Ftools\u002Fmcp\u002Fclaude-code\u002Findex",[1953],{"title":1949,"path":1950,"stem":1951},{"title":1955,"path":1956,"stem":1957,"children":1958},"revenexx docs MCP in Claude Desktop","\u002Fdocs\u002Ftools\u002Fmcp\u002Fclaude-desktop","docs\u002Ftools\u002Fmcp\u002Fclaude-desktop\u002Findex",[1959],{"title":1955,"path":1956,"stem":1957},{"title":1961,"path":1962,"stem":1963,"children":1964},"revenexx docs MCP in Cursor","\u002Fdocs\u002Ftools\u002Fmcp\u002Fcursor","docs\u002Ftools\u002Fmcp\u002Fcursor\u002Findex",[1965],{"title":1961,"path":1962,"stem":1963},{"title":1967,"path":1968,"stem":1969,"children":1970},"revenexx docs MCP in OpenCode","\u002Fdocs\u002Ftools\u002Fmcp\u002Fopencode","docs\u002Ftools\u002Fmcp\u002Fopencode\u002Findex",[1971],{"title":1967,"path":1968,"stem":1969},{"title":1973,"path":1974,"stem":1975,"children":1976},"revenexx docs MCP in VS Code","\u002Fdocs\u002Ftools\u002Fmcp\u002Fvscode","docs\u002Ftools\u002Fmcp\u002Fvscode\u002Findex",[1977],{"title":1973,"path":1974,"stem":1975},{"title":1979,"path":1980,"stem":1981,"children":1982},"revenexx docs MCP in Windsurf","\u002Fdocs\u002Ftools\u002Fmcp\u002Fwindsurf","docs\u002Ftools\u002Fmcp\u002Fwindsurf\u002Findex",[1983],{"title":1979,"path":1980,"stem":1981},{"title":1985,"path":1986,"stem":1987,"children":1988},"revenexx docs MCP in Zenflow","\u002Fdocs\u002Ftools\u002Fmcp\u002Fzenflow","docs\u002Ftools\u002Fmcp\u002Fzenflow\u002Findex",[1989],{"title":1985,"path":1986,"stem":1987},{"id":1991,"title":115,"body":1992,"description":5279,"extension":5280,"landing":5281,"links":5281,"meta":5282,"navigation":2234,"path":116,"seo":5283,"sitemap":5284,"stem":117,"__hash__":5285},"docs\u002Fdocs\u002Fguides\u002Fthemes\u002Fcustomize-blocks\u002Findex.md",{"type":1993,"value":1994,"toc":5267},"minimark",[1995,1999,2017,2021,2032,2039,2043,2046,2760,2773,2777,2780,2787,2902,2905,3065,3074,3078,3085,3090,3097,3720,3723,3727,3738,4800,4807,4931,4934,5160,5163,5167,5201,5205,5234,5238,5263],[1996,1997,1998],"p",{},"Blocks are what make a Theme composable. An editor drags a block onto a page in Cockpit, sets its props, and the Theme renders it. This tutorial shows how to write a block, register it so editors can use it, and connect a block to live catalog data without slowing down the first paint.",[1996,2000,2001,2002,2006,2007,2011,2012,2016],{},"This page is for ",[2003,2004,2005],"strong",{},"frontend developers"," comfortable with Vue 3 ",[2008,2009,2010],"code",{},"\u003Cscript setup>",". You should have a Theme scaffolded already — see ",[2013,2014,109],"a",{"href":2015},"\u002Fdocs\u002Fguides\u002Fthemes\u002Fbuild-your-first-theme\u002F",".",[2018,2019,1404],"h2",{"id":2020},"how-a-block-works",[1996,2022,2023,2024,2027,2028,2031],{},"A Blökkli block is a Vue component with one extra call: ",[2008,2025,2026],{},"defineBlokkli",". That call declares the block's ",[2008,2029,2030],{},"bundle"," (the id that ties the component to the manifest) and, optionally, the mock props the editor shows while composing. The component's props are the fields an editor fills in on the canvas.",[1996,2033,2034,2035,2038],{},"Blocks live under ",[2008,2036,2037],{},"app\u002Fcomponents\u002Fblokkli\u002F\u003Cblock>\u002Findex.vue",". A Theme keeps a small map from block id to component so the renderer can resolve a page's block tree to real components.",[2018,2040,2042],{"id":2041},"_1-write-a-block-component","1. Write a block component",[1996,2044,2045],{},"Start with a self-contained block — a hero with a headline, an optional subline, and a background choice. The editor sees the props as editable fields.",[2047,2048,2054],"pre",{"className":2049,"code":2050,"filename":2051,"language":2052,"meta":2053,"style":2053},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst props = withDefaults(defineProps\u003C{\n  headline: string\n  subheadline?: string\n  bgPreset?: string\n  bgCustom?: string\n}>(), {\n  subheadline: undefined,\n  bgPreset: 'auto',\n  bgCustom: '#4f46e5',\n})\n\ndefineBlokkli({\n  bundle: 'hero',\n  editor: {\n    \u002F\u002F What the editor previews before real content is entered.\n    mockProps: () => ({\n      headline: 'New hero headline',\n      subheadline: 'New hero subheadline',\n    }),\n  },\n})\n\nconst PRESET_HEX: Record\u003Cstring, string> = {\n  white: '#ffffff',\n  sand: '#f5efe6',\n  slate: '#1f2937',\n  mint: '#a7f3d0',\n}\n\nconst bgHex = computed\u003Cstring | null>(() => {\n  if (props.bgPreset === 'custom') return props.bgCustom ?? null\n  if (props.bgPreset in PRESET_HEX) return PRESET_HEX[props.bgPreset] ?? null\n  return null\n})\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Csection\n    class=\"hero\"\n    :style=\"bgHex ? { backgroundColor: bgHex } : undefined\"\n  >\n    \u003Ch1>{{ props.headline }}\u003C\u002Fh1>\n    \u003Cp v-if=\"props.subheadline\" class=\"subline\">{{ props.subheadline }}\u003C\u002Fp>\n  \u003C\u002Fsection>\n\u003C\u002Ftemplate>\n","app\u002Fcomponents\u002Fblokkli\u002Fhero\u002Findex.vue","vue","",[2008,2055,2056,2091,2116,2129,2140,2150,2160,2175,2185,2204,2220,2229,2236,2246,2263,2273,2280,2299,2316,2333,2344,2350,2357,2362,2393,2410,2427,2444,2461,2467,2472,2505,2552,2593,2601,2608,2618,2623,2633,2642,2657,2672,2678,2698,2740,2751],{"__ignoreMap":2053},[2057,2058,2061,2065,2069,2073,2076,2079,2082,2086,2088],"span",{"class":2059,"line":2060},"line",1,[2057,2062,2064],{"class":2063},"sMK4o","\u003C",[2057,2066,2068],{"class":2067},"swJcz","script",[2057,2070,2072],{"class":2071},"spNyl"," setup",[2057,2074,2075],{"class":2071}," lang",[2057,2077,2078],{"class":2063},"=",[2057,2080,2081],{"class":2063},"\"",[2057,2083,2085],{"class":2084},"sfazB","ts",[2057,2087,2081],{"class":2063},[2057,2089,2090],{"class":2063},">\n",[2057,2092,2094,2097,2101,2103,2107,2110,2113],{"class":2059,"line":2093},2,[2057,2095,2096],{"class":2071},"const",[2057,2098,2100],{"class":2099},"sTEyZ"," props ",[2057,2102,2078],{"class":2063},[2057,2104,2106],{"class":2105},"s2Zo4"," withDefaults",[2057,2108,2109],{"class":2099},"(",[2057,2111,2112],{"class":2105},"defineProps",[2057,2114,2115],{"class":2063},"\u003C{\n",[2057,2117,2119,2122,2125],{"class":2059,"line":2118},3,[2057,2120,2121],{"class":2067},"  headline",[2057,2123,2124],{"class":2063},":",[2057,2126,2128],{"class":2127},"sBMFI"," string\n",[2057,2130,2132,2135,2138],{"class":2059,"line":2131},4,[2057,2133,2134],{"class":2067},"  subheadline",[2057,2136,2137],{"class":2063},"?:",[2057,2139,2128],{"class":2127},[2057,2141,2143,2146,2148],{"class":2059,"line":2142},5,[2057,2144,2145],{"class":2067},"  bgPreset",[2057,2147,2137],{"class":2063},[2057,2149,2128],{"class":2127},[2057,2151,2153,2156,2158],{"class":2059,"line":2152},6,[2057,2154,2155],{"class":2067},"  bgCustom",[2057,2157,2137],{"class":2063},[2057,2159,2128],{"class":2127},[2057,2161,2163,2166,2169,2172],{"class":2059,"line":2162},7,[2057,2164,2165],{"class":2063},"}>",[2057,2167,2168],{"class":2099},"()",[2057,2170,2171],{"class":2063},",",[2057,2173,2174],{"class":2063}," {\n",[2057,2176,2178,2180,2182],{"class":2059,"line":2177},8,[2057,2179,2134],{"class":2067},[2057,2181,2124],{"class":2063},[2057,2183,2184],{"class":2063}," undefined,\n",[2057,2186,2188,2190,2192,2195,2198,2201],{"class":2059,"line":2187},9,[2057,2189,2145],{"class":2067},[2057,2191,2124],{"class":2063},[2057,2193,2194],{"class":2063}," '",[2057,2196,2197],{"class":2084},"auto",[2057,2199,2200],{"class":2063},"'",[2057,2202,2203],{"class":2063},",\n",[2057,2205,2207,2209,2211,2213,2216,2218],{"class":2059,"line":2206},10,[2057,2208,2155],{"class":2067},[2057,2210,2124],{"class":2063},[2057,2212,2194],{"class":2063},[2057,2214,2215],{"class":2084},"#4f46e5",[2057,2217,2200],{"class":2063},[2057,2219,2203],{"class":2063},[2057,2221,2223,2226],{"class":2059,"line":2222},11,[2057,2224,2225],{"class":2063},"}",[2057,2227,2228],{"class":2099},")\n",[2057,2230,2232],{"class":2059,"line":2231},12,[2057,2233,2235],{"emptyLinePlaceholder":2234},true,"\n",[2057,2237,2239,2241,2243],{"class":2059,"line":2238},13,[2057,2240,2026],{"class":2105},[2057,2242,2109],{"class":2099},[2057,2244,2245],{"class":2063},"{\n",[2057,2247,2249,2252,2254,2256,2259,2261],{"class":2059,"line":2248},14,[2057,2250,2251],{"class":2067},"  bundle",[2057,2253,2124],{"class":2063},[2057,2255,2194],{"class":2063},[2057,2257,2258],{"class":2084},"hero",[2057,2260,2200],{"class":2063},[2057,2262,2203],{"class":2063},[2057,2264,2266,2269,2271],{"class":2059,"line":2265},15,[2057,2267,2268],{"class":2067},"  editor",[2057,2270,2124],{"class":2063},[2057,2272,2174],{"class":2063},[2057,2274,2276],{"class":2059,"line":2275},16,[2057,2277,2279],{"class":2278},"sHwdD","    \u002F\u002F What the editor previews before real content is entered.\n",[2057,2281,2283,2286,2288,2291,2294,2297],{"class":2059,"line":2282},17,[2057,2284,2285],{"class":2105},"    mockProps",[2057,2287,2124],{"class":2063},[2057,2289,2290],{"class":2063}," ()",[2057,2292,2293],{"class":2071}," =>",[2057,2295,2296],{"class":2099}," (",[2057,2298,2245],{"class":2063},[2057,2300,2302,2305,2307,2309,2312,2314],{"class":2059,"line":2301},18,[2057,2303,2304],{"class":2067},"      headline",[2057,2306,2124],{"class":2063},[2057,2308,2194],{"class":2063},[2057,2310,2311],{"class":2084},"New hero headline",[2057,2313,2200],{"class":2063},[2057,2315,2203],{"class":2063},[2057,2317,2319,2322,2324,2326,2329,2331],{"class":2059,"line":2318},19,[2057,2320,2321],{"class":2067},"      subheadline",[2057,2323,2124],{"class":2063},[2057,2325,2194],{"class":2063},[2057,2327,2328],{"class":2084},"New hero subheadline",[2057,2330,2200],{"class":2063},[2057,2332,2203],{"class":2063},[2057,2334,2336,2339,2342],{"class":2059,"line":2335},20,[2057,2337,2338],{"class":2063},"    }",[2057,2340,2341],{"class":2099},")",[2057,2343,2203],{"class":2063},[2057,2345,2347],{"class":2059,"line":2346},21,[2057,2348,2349],{"class":2063},"  },\n",[2057,2351,2353,2355],{"class":2059,"line":2352},22,[2057,2354,2225],{"class":2063},[2057,2356,2228],{"class":2099},[2057,2358,2360],{"class":2059,"line":2359},23,[2057,2361,2235],{"emptyLinePlaceholder":2234},[2057,2363,2365,2367,2370,2372,2375,2377,2380,2382,2385,2388,2391],{"class":2059,"line":2364},24,[2057,2366,2096],{"class":2071},[2057,2368,2369],{"class":2099}," PRESET_HEX",[2057,2371,2124],{"class":2063},[2057,2373,2374],{"class":2127}," Record",[2057,2376,2064],{"class":2063},[2057,2378,2379],{"class":2127},"string",[2057,2381,2171],{"class":2063},[2057,2383,2384],{"class":2127}," string",[2057,2386,2387],{"class":2063},">",[2057,2389,2390],{"class":2063}," =",[2057,2392,2174],{"class":2063},[2057,2394,2396,2399,2401,2403,2406,2408],{"class":2059,"line":2395},25,[2057,2397,2398],{"class":2067},"  white",[2057,2400,2124],{"class":2063},[2057,2402,2194],{"class":2063},[2057,2404,2405],{"class":2084},"#ffffff",[2057,2407,2200],{"class":2063},[2057,2409,2203],{"class":2063},[2057,2411,2413,2416,2418,2420,2423,2425],{"class":2059,"line":2412},26,[2057,2414,2415],{"class":2067},"  sand",[2057,2417,2124],{"class":2063},[2057,2419,2194],{"class":2063},[2057,2421,2422],{"class":2084},"#f5efe6",[2057,2424,2200],{"class":2063},[2057,2426,2203],{"class":2063},[2057,2428,2430,2433,2435,2437,2440,2442],{"class":2059,"line":2429},27,[2057,2431,2432],{"class":2067},"  slate",[2057,2434,2124],{"class":2063},[2057,2436,2194],{"class":2063},[2057,2438,2439],{"class":2084},"#1f2937",[2057,2441,2200],{"class":2063},[2057,2443,2203],{"class":2063},[2057,2445,2447,2450,2452,2454,2457,2459],{"class":2059,"line":2446},28,[2057,2448,2449],{"class":2067},"  mint",[2057,2451,2124],{"class":2063},[2057,2453,2194],{"class":2063},[2057,2455,2456],{"class":2084},"#a7f3d0",[2057,2458,2200],{"class":2063},[2057,2460,2203],{"class":2063},[2057,2462,2464],{"class":2059,"line":2463},29,[2057,2465,2466],{"class":2063},"}\n",[2057,2468,2470],{"class":2059,"line":2469},30,[2057,2471,2235],{"emptyLinePlaceholder":2234},[2057,2473,2475,2477,2480,2482,2485,2487,2489,2492,2495,2497,2499,2501,2503],{"class":2059,"line":2474},31,[2057,2476,2096],{"class":2071},[2057,2478,2479],{"class":2099}," bgHex ",[2057,2481,2078],{"class":2063},[2057,2483,2484],{"class":2105}," computed",[2057,2486,2064],{"class":2063},[2057,2488,2379],{"class":2127},[2057,2490,2491],{"class":2063}," |",[2057,2493,2494],{"class":2127}," null",[2057,2496,2387],{"class":2063},[2057,2498,2109],{"class":2099},[2057,2500,2168],{"class":2063},[2057,2502,2293],{"class":2071},[2057,2504,2174],{"class":2063},[2057,2506,2508,2512,2514,2517,2519,2522,2525,2527,2530,2532,2535,2538,2541,2543,2546,2549],{"class":2059,"line":2507},32,[2057,2509,2511],{"class":2510},"s7zQu","  if",[2057,2513,2296],{"class":2067},[2057,2515,2516],{"class":2099},"props",[2057,2518,2016],{"class":2063},[2057,2520,2521],{"class":2099},"bgPreset",[2057,2523,2524],{"class":2063}," ===",[2057,2526,2194],{"class":2063},[2057,2528,2529],{"class":2084},"custom",[2057,2531,2200],{"class":2063},[2057,2533,2534],{"class":2067},") ",[2057,2536,2537],{"class":2510},"return",[2057,2539,2540],{"class":2099}," props",[2057,2542,2016],{"class":2063},[2057,2544,2545],{"class":2099},"bgCustom",[2057,2547,2548],{"class":2063}," ??",[2057,2550,2551],{"class":2063}," null\n",[2057,2553,2555,2557,2559,2561,2563,2565,2568,2570,2572,2574,2576,2579,2581,2583,2585,2588,2591],{"class":2059,"line":2554},33,[2057,2556,2511],{"class":2510},[2057,2558,2296],{"class":2067},[2057,2560,2516],{"class":2099},[2057,2562,2016],{"class":2063},[2057,2564,2521],{"class":2099},[2057,2566,2567],{"class":2063}," in",[2057,2569,2369],{"class":2099},[2057,2571,2534],{"class":2067},[2057,2573,2537],{"class":2510},[2057,2575,2369],{"class":2099},[2057,2577,2578],{"class":2067},"[",[2057,2580,2516],{"class":2099},[2057,2582,2016],{"class":2063},[2057,2584,2521],{"class":2099},[2057,2586,2587],{"class":2067},"] ",[2057,2589,2590],{"class":2063},"??",[2057,2592,2551],{"class":2063},[2057,2594,2596,2599],{"class":2059,"line":2595},34,[2057,2597,2598],{"class":2510},"  return",[2057,2600,2551],{"class":2063},[2057,2602,2604,2606],{"class":2059,"line":2603},35,[2057,2605,2225],{"class":2063},[2057,2607,2228],{"class":2099},[2057,2609,2611,2614,2616],{"class":2059,"line":2610},36,[2057,2612,2613],{"class":2063},"\u003C\u002F",[2057,2615,2068],{"class":2067},[2057,2617,2090],{"class":2063},[2057,2619,2621],{"class":2059,"line":2620},37,[2057,2622,2235],{"emptyLinePlaceholder":2234},[2057,2624,2626,2628,2631],{"class":2059,"line":2625},38,[2057,2627,2064],{"class":2063},[2057,2629,2630],{"class":2067},"template",[2057,2632,2090],{"class":2063},[2057,2634,2636,2639],{"class":2059,"line":2635},39,[2057,2637,2638],{"class":2063},"  \u003C",[2057,2640,2641],{"class":2067},"section\n",[2057,2643,2645,2648,2650,2652,2654],{"class":2059,"line":2644},40,[2057,2646,2647],{"class":2071},"    class",[2057,2649,2078],{"class":2063},[2057,2651,2081],{"class":2063},[2057,2653,2258],{"class":2084},[2057,2655,2656],{"class":2063},"\"\n",[2057,2658,2660,2663,2665,2667,2670],{"class":2059,"line":2659},41,[2057,2661,2662],{"class":2071},"    :style",[2057,2664,2078],{"class":2063},[2057,2666,2081],{"class":2063},[2057,2668,2669],{"class":2084},"bgHex ? { backgroundColor: bgHex } : undefined",[2057,2671,2656],{"class":2063},[2057,2673,2675],{"class":2059,"line":2674},42,[2057,2676,2677],{"class":2063},"  >\n",[2057,2679,2681,2684,2687,2689,2692,2694,2696],{"class":2059,"line":2680},43,[2057,2682,2683],{"class":2063},"    \u003C",[2057,2685,2686],{"class":2067},"h1",[2057,2688,2387],{"class":2063},[2057,2690,2691],{"class":2099},"{{ props.headline }}",[2057,2693,2613],{"class":2063},[2057,2695,2686],{"class":2067},[2057,2697,2090],{"class":2063},[2057,2699,2701,2703,2705,2708,2710,2712,2715,2717,2720,2722,2724,2727,2729,2731,2734,2736,2738],{"class":2059,"line":2700},44,[2057,2702,2683],{"class":2063},[2057,2704,1996],{"class":2067},[2057,2706,2707],{"class":2071}," v-if",[2057,2709,2078],{"class":2063},[2057,2711,2081],{"class":2063},[2057,2713,2714],{"class":2084},"props.subheadline",[2057,2716,2081],{"class":2063},[2057,2718,2719],{"class":2071}," class",[2057,2721,2078],{"class":2063},[2057,2723,2081],{"class":2063},[2057,2725,2726],{"class":2084},"subline",[2057,2728,2081],{"class":2063},[2057,2730,2387],{"class":2063},[2057,2732,2733],{"class":2099},"{{ props.subheadline }}",[2057,2735,2613],{"class":2063},[2057,2737,1996],{"class":2067},[2057,2739,2090],{"class":2063},[2057,2741,2743,2746,2749],{"class":2059,"line":2742},45,[2057,2744,2745],{"class":2063},"  \u003C\u002F",[2057,2747,2748],{"class":2067},"section",[2057,2750,2090],{"class":2063},[2057,2752,2754,2756,2758],{"class":2059,"line":2753},46,[2057,2755,2613],{"class":2063},[2057,2757,2630],{"class":2067},[2057,2759,2090],{"class":2063},[1996,2761,2762,2765,2766,2768,2769,2772],{},[2008,2763,2764],{},"bundle: 'hero'"," is the link between this component and the ",[2008,2767,2258],{}," entry in your manifest. The ",[2008,2770,2771],{},"mockProps"," give the editor something to show before real content exists.",[2018,2774,2776],{"id":2775},"_2-register-the-block","2. Register the block",[1996,2778,2779],{},"Two registrations make the block usable.",[1996,2781,2782,2783,2786],{},"First, declare it in ",[2008,2784,2785],{},"theme.json"," so it appears in the editor's block list:",[2047,2788,2792],{"className":2789,"code":2790,"filename":2785,"language":2791,"meta":2053,"style":2053},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"blokkli\": {\n    \"blocks\": [\n      { \"id\": \"hero\", \"title\": \"Hero\", \"description\": \"Full-width hero with headline, subline, and a background choice.\" }\n    ]\n  }\n}\n","json",[2008,2793,2794,2798,2812,2827,2888,2893,2898],{"__ignoreMap":2053},[2057,2795,2796],{"class":2059,"line":2060},[2057,2797,2245],{"class":2063},[2057,2799,2800,2803,2806,2808,2810],{"class":2059,"line":2093},[2057,2801,2802],{"class":2063},"  \"",[2057,2804,2805],{"class":2071},"blokkli",[2057,2807,2081],{"class":2063},[2057,2809,2124],{"class":2063},[2057,2811,2174],{"class":2063},[2057,2813,2814,2817,2820,2822,2824],{"class":2059,"line":2118},[2057,2815,2816],{"class":2063},"    \"",[2057,2818,2819],{"class":2127},"blocks",[2057,2821,2081],{"class":2063},[2057,2823,2124],{"class":2063},[2057,2825,2826],{"class":2063}," [\n",[2057,2828,2829,2832,2835,2839,2841,2843,2845,2847,2849,2851,2853,2856,2858,2860,2862,2865,2867,2869,2871,2874,2876,2878,2880,2883,2885],{"class":2059,"line":2131},[2057,2830,2831],{"class":2063},"      {",[2057,2833,2834],{"class":2063}," \"",[2057,2836,2838],{"class":2837},"sbssI","id",[2057,2840,2081],{"class":2063},[2057,2842,2124],{"class":2063},[2057,2844,2834],{"class":2063},[2057,2846,2258],{"class":2084},[2057,2848,2081],{"class":2063},[2057,2850,2171],{"class":2063},[2057,2852,2834],{"class":2063},[2057,2854,2855],{"class":2837},"title",[2057,2857,2081],{"class":2063},[2057,2859,2124],{"class":2063},[2057,2861,2834],{"class":2063},[2057,2863,2864],{"class":2084},"Hero",[2057,2866,2081],{"class":2063},[2057,2868,2171],{"class":2063},[2057,2870,2834],{"class":2063},[2057,2872,2873],{"class":2837},"description",[2057,2875,2081],{"class":2063},[2057,2877,2124],{"class":2063},[2057,2879,2834],{"class":2063},[2057,2881,2882],{"class":2084},"Full-width hero with headline, subline, and a background choice.",[2057,2884,2081],{"class":2063},[2057,2886,2887],{"class":2063}," }\n",[2057,2889,2890],{"class":2059,"line":2142},[2057,2891,2892],{"class":2063},"    ]\n",[2057,2894,2895],{"class":2059,"line":2152},[2057,2896,2897],{"class":2063},"  }\n",[2057,2899,2900],{"class":2059,"line":2162},[2057,2901,2466],{"class":2063},[1996,2903,2904],{},"Second, map the block id to its component so the renderer can resolve it:",[2047,2906,2910],{"className":2907,"code":2908,"filename":2909,"language":2085,"meta":2053,"style":2053},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { Component } from 'vue'\n\nimport BlokkliHero from '..\u002Fcomponents\u002Fblokkli\u002Fhero\u002Findex.vue'\nimport BlokkliProductGrid from '..\u002Fcomponents\u002Fblokkli\u002Fproduct_grid\u002Findex.vue'\nimport BlokkliText from '..\u002Fcomponents\u002Fblokkli\u002Ftext\u002Findex.vue'\n\nexport const BLOCK_COMPONENTS: Record\u003Cstring, Component> = {\n  hero: BlokkliHero,\n  product_grid: BlokkliProductGrid,\n  text: BlokkliText,\n}\n","app\u002Fconfig\u002FblokkliBlocks.ts",[2008,2911,2912,2939,2943,2960,2976,2992,2996,3025,3037,3049,3061],{"__ignoreMap":2053},[2057,2913,2914,2917,2920,2923,2926,2929,2932,2934,2936],{"class":2059,"line":2060},[2057,2915,2916],{"class":2510},"import",[2057,2918,2919],{"class":2510}," type",[2057,2921,2922],{"class":2063}," {",[2057,2924,2925],{"class":2099}," Component",[2057,2927,2928],{"class":2063}," }",[2057,2930,2931],{"class":2510}," from",[2057,2933,2194],{"class":2063},[2057,2935,2052],{"class":2084},[2057,2937,2938],{"class":2063},"'\n",[2057,2940,2941],{"class":2059,"line":2093},[2057,2942,2235],{"emptyLinePlaceholder":2234},[2057,2944,2945,2947,2950,2953,2955,2958],{"class":2059,"line":2118},[2057,2946,2916],{"class":2510},[2057,2948,2949],{"class":2099}," BlokkliHero ",[2057,2951,2952],{"class":2510},"from",[2057,2954,2194],{"class":2063},[2057,2956,2957],{"class":2084},"..\u002Fcomponents\u002Fblokkli\u002Fhero\u002Findex.vue",[2057,2959,2938],{"class":2063},[2057,2961,2962,2964,2967,2969,2971,2974],{"class":2059,"line":2131},[2057,2963,2916],{"class":2510},[2057,2965,2966],{"class":2099}," BlokkliProductGrid ",[2057,2968,2952],{"class":2510},[2057,2970,2194],{"class":2063},[2057,2972,2973],{"class":2084},"..\u002Fcomponents\u002Fblokkli\u002Fproduct_grid\u002Findex.vue",[2057,2975,2938],{"class":2063},[2057,2977,2978,2980,2983,2985,2987,2990],{"class":2059,"line":2142},[2057,2979,2916],{"class":2510},[2057,2981,2982],{"class":2099}," BlokkliText ",[2057,2984,2952],{"class":2510},[2057,2986,2194],{"class":2063},[2057,2988,2989],{"class":2084},"..\u002Fcomponents\u002Fblokkli\u002Ftext\u002Findex.vue",[2057,2991,2938],{"class":2063},[2057,2993,2994],{"class":2059,"line":2152},[2057,2995,2235],{"emptyLinePlaceholder":2234},[2057,2997,2998,3001,3004,3007,3009,3011,3013,3015,3017,3019,3021,3023],{"class":2059,"line":2162},[2057,2999,3000],{"class":2510},"export",[2057,3002,3003],{"class":2071}," const",[2057,3005,3006],{"class":2099}," BLOCK_COMPONENTS",[2057,3008,2124],{"class":2063},[2057,3010,2374],{"class":2127},[2057,3012,2064],{"class":2063},[2057,3014,2379],{"class":2127},[2057,3016,2171],{"class":2063},[2057,3018,2925],{"class":2127},[2057,3020,2387],{"class":2063},[2057,3022,2390],{"class":2063},[2057,3024,2174],{"class":2063},[2057,3026,3027,3030,3032,3035],{"class":2059,"line":2177},[2057,3028,3029],{"class":2067},"  hero",[2057,3031,2124],{"class":2063},[2057,3033,3034],{"class":2099}," BlokkliHero",[2057,3036,2203],{"class":2063},[2057,3038,3039,3042,3044,3047],{"class":2059,"line":2187},[2057,3040,3041],{"class":2067},"  product_grid",[2057,3043,2124],{"class":2063},[2057,3045,3046],{"class":2099}," BlokkliProductGrid",[2057,3048,2203],{"class":2063},[2057,3050,3051,3054,3056,3059],{"class":2059,"line":2206},[2057,3052,3053],{"class":2067},"  text",[2057,3055,2124],{"class":2063},[2057,3057,3058],{"class":2099}," BlokkliText",[2057,3060,2203],{"class":2063},[2057,3062,3063],{"class":2059,"line":2222},[2057,3064,2466],{"class":2063},[1996,3066,3067,3068,3070,3071,3073],{},"Keep the manifest ",[2008,3069,2838],{},", the component's ",[2008,3072,2030],{},", and the map key in sync. Drift between them is the most common reason a block renders as \"unknown\".",[2018,3075,3077],{"id":3076},"_3-connect-a-block-to-live-catalog-data","3. Connect a block to live catalog data",[1996,3079,3080,3081,3084],{},"A product block needs data from the platform. The catalog (names, images, descriptions, categories) is cheap and cacheable; price and availability are buyer-specific and slow. The pattern that keeps storefronts fast is ",[2003,3082,3083],{},"shell-first",": render the catalog during server-side rendering, then fill in price and stock after the page paints.",[3086,3087,3089],"h3",{"id":3088},"fetch-the-catalog-in-the-block","Fetch the catalog in the block",[1996,3091,3092,3093,3096],{},"A product block reads its category from the editor's props and fetches the matching products. The Theme exposes a ",[2008,3094,3095],{},"useProducts"," composable that calls the Theme's server-side API route, which in turn calls the gateway with the per-request tenant context.",[2047,3098,3101],{"className":2049,"code":3099,"filename":3100,"language":2052,"meta":2053,"style":2053},"\u003Cscript setup lang=\"ts\">\nconst props = withDefaults(defineProps\u003C{\n  categorySlug?: string\n  limit?: string\n  sort?: 'featured' | 'price-asc' | 'price-desc' | 'name-asc'\n}>(), {\n  categorySlug: '',\n  limit: '8',\n  sort: 'featured',\n})\n\ndefineBlokkli({\n  bundle: 'product_grid',\n  editor: { mockProps: () => ({}) },\n})\n\nconst category = computed(() => props.categorySlug?.trim() || undefined)\n\n\u002F\u002F Catalog shell — fetched during SSR, in the first byte. No price\u002Fstock here.\nconst { products, status, error } = useProducts(category)\n\nconst visible = computed(() => {\n  const n = Number(props.limit) || 0\n  return n > 0 ? products.value.slice(0, n) : products.value\n})\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Csection class=\"product-grid\">\n    \u003CCategoryListSkeleton v-if=\"status === 'pending'\" \u002F>\n    \u003CErrorBoundary v-else-if=\"error\" title=\"Products could not be loaded\" \u002F>\n    \u003CEmptyState v-else-if=\"!visible.length\" title=\"No products found\" \u002F>\n    \u003Cdiv v-else class=\"grid\">\n      \u003CProductCard v-for=\"product in visible\" :key=\"product.id\" :product=\"product\" \u002F>\n    \u003C\u002Fdiv>\n  \u003C\u002Fsection>\n\u003C\u002Ftemplate>\n","app\u002Fcomponents\u002Fblokkli\u002Fproduct_grid\u002Findex.vue",[2008,3102,3103,3123,3139,3148,3157,3198,3208,3219,3234,3248,3254,3258,3266,3281,3308,3314,3318,3359,3363,3368,3397,3401,3420,3449,3496,3502,3510,3514,3522,3541,3562,3595,3626,3649,3695,3704,3712],{"__ignoreMap":2053},[2057,3104,3105,3107,3109,3111,3113,3115,3117,3119,3121],{"class":2059,"line":2060},[2057,3106,2064],{"class":2063},[2057,3108,2068],{"class":2067},[2057,3110,2072],{"class":2071},[2057,3112,2075],{"class":2071},[2057,3114,2078],{"class":2063},[2057,3116,2081],{"class":2063},[2057,3118,2085],{"class":2084},[2057,3120,2081],{"class":2063},[2057,3122,2090],{"class":2063},[2057,3124,3125,3127,3129,3131,3133,3135,3137],{"class":2059,"line":2093},[2057,3126,2096],{"class":2071},[2057,3128,2100],{"class":2099},[2057,3130,2078],{"class":2063},[2057,3132,2106],{"class":2105},[2057,3134,2109],{"class":2099},[2057,3136,2112],{"class":2105},[2057,3138,2115],{"class":2063},[2057,3140,3141,3144,3146],{"class":2059,"line":2118},[2057,3142,3143],{"class":2067},"  categorySlug",[2057,3145,2137],{"class":2063},[2057,3147,2128],{"class":2127},[2057,3149,3150,3153,3155],{"class":2059,"line":2131},[2057,3151,3152],{"class":2067},"  limit",[2057,3154,2137],{"class":2063},[2057,3156,2128],{"class":2127},[2057,3158,3159,3162,3164,3166,3169,3171,3173,3175,3178,3180,3182,3184,3187,3189,3191,3193,3196],{"class":2059,"line":2142},[2057,3160,3161],{"class":2067},"  sort",[2057,3163,2137],{"class":2063},[2057,3165,2194],{"class":2063},[2057,3167,3168],{"class":2084},"featured",[2057,3170,2200],{"class":2063},[2057,3172,2491],{"class":2063},[2057,3174,2194],{"class":2063},[2057,3176,3177],{"class":2084},"price-asc",[2057,3179,2200],{"class":2063},[2057,3181,2491],{"class":2063},[2057,3183,2194],{"class":2063},[2057,3185,3186],{"class":2084},"price-desc",[2057,3188,2200],{"class":2063},[2057,3190,2491],{"class":2063},[2057,3192,2194],{"class":2063},[2057,3194,3195],{"class":2084},"name-asc",[2057,3197,2938],{"class":2063},[2057,3199,3200,3202,3204,3206],{"class":2059,"line":2152},[2057,3201,2165],{"class":2063},[2057,3203,2168],{"class":2099},[2057,3205,2171],{"class":2063},[2057,3207,2174],{"class":2063},[2057,3209,3210,3212,3214,3217],{"class":2059,"line":2162},[2057,3211,3143],{"class":2067},[2057,3213,2124],{"class":2063},[2057,3215,3216],{"class":2063}," ''",[2057,3218,2203],{"class":2063},[2057,3220,3221,3223,3225,3227,3230,3232],{"class":2059,"line":2177},[2057,3222,3152],{"class":2067},[2057,3224,2124],{"class":2063},[2057,3226,2194],{"class":2063},[2057,3228,3229],{"class":2084},"8",[2057,3231,2200],{"class":2063},[2057,3233,2203],{"class":2063},[2057,3235,3236,3238,3240,3242,3244,3246],{"class":2059,"line":2187},[2057,3237,3161],{"class":2067},[2057,3239,2124],{"class":2063},[2057,3241,2194],{"class":2063},[2057,3243,3168],{"class":2084},[2057,3245,2200],{"class":2063},[2057,3247,2203],{"class":2063},[2057,3249,3250,3252],{"class":2059,"line":2206},[2057,3251,2225],{"class":2063},[2057,3253,2228],{"class":2099},[2057,3255,3256],{"class":2059,"line":2222},[2057,3257,2235],{"emptyLinePlaceholder":2234},[2057,3259,3260,3262,3264],{"class":2059,"line":2231},[2057,3261,2026],{"class":2105},[2057,3263,2109],{"class":2099},[2057,3265,2245],{"class":2063},[2057,3267,3268,3270,3272,3274,3277,3279],{"class":2059,"line":2238},[2057,3269,2251],{"class":2067},[2057,3271,2124],{"class":2063},[2057,3273,2194],{"class":2063},[2057,3275,3276],{"class":2084},"product_grid",[2057,3278,2200],{"class":2063},[2057,3280,2203],{"class":2063},[2057,3282,3283,3285,3287,3289,3292,3294,3296,3298,3300,3303,3305],{"class":2059,"line":2248},[2057,3284,2268],{"class":2067},[2057,3286,2124],{"class":2063},[2057,3288,2922],{"class":2063},[2057,3290,3291],{"class":2105}," mockProps",[2057,3293,2124],{"class":2063},[2057,3295,2290],{"class":2063},[2057,3297,2293],{"class":2071},[2057,3299,2296],{"class":2099},[2057,3301,3302],{"class":2063},"{}",[2057,3304,2534],{"class":2099},[2057,3306,3307],{"class":2063},"},\n",[2057,3309,3310,3312],{"class":2059,"line":2265},[2057,3311,2225],{"class":2063},[2057,3313,2228],{"class":2099},[2057,3315,3316],{"class":2059,"line":2275},[2057,3317,2235],{"emptyLinePlaceholder":2234},[2057,3319,3320,3322,3325,3327,3329,3331,3333,3335,3337,3339,3342,3345,3348,3351,3354,3357],{"class":2059,"line":2282},[2057,3321,2096],{"class":2071},[2057,3323,3324],{"class":2099}," category ",[2057,3326,2078],{"class":2063},[2057,3328,2484],{"class":2105},[2057,3330,2109],{"class":2099},[2057,3332,2168],{"class":2063},[2057,3334,2293],{"class":2071},[2057,3336,2540],{"class":2099},[2057,3338,2016],{"class":2063},[2057,3340,3341],{"class":2099},"categorySlug",[2057,3343,3344],{"class":2063},"?.",[2057,3346,3347],{"class":2105},"trim",[2057,3349,3350],{"class":2099},"() ",[2057,3352,3353],{"class":2063},"||",[2057,3355,3356],{"class":2063}," undefined",[2057,3358,2228],{"class":2099},[2057,3360,3361],{"class":2059,"line":2301},[2057,3362,2235],{"emptyLinePlaceholder":2234},[2057,3364,3365],{"class":2059,"line":2318},[2057,3366,3367],{"class":2278},"\u002F\u002F Catalog shell — fetched during SSR, in the first byte. No price\u002Fstock here.\n",[2057,3369,3370,3372,3374,3377,3379,3382,3384,3387,3389,3391,3394],{"class":2059,"line":2335},[2057,3371,2096],{"class":2071},[2057,3373,2922],{"class":2063},[2057,3375,3376],{"class":2099}," products",[2057,3378,2171],{"class":2063},[2057,3380,3381],{"class":2099}," status",[2057,3383,2171],{"class":2063},[2057,3385,3386],{"class":2099}," error ",[2057,3388,2225],{"class":2063},[2057,3390,2390],{"class":2063},[2057,3392,3393],{"class":2105}," useProducts",[2057,3395,3396],{"class":2099},"(category)\n",[2057,3398,3399],{"class":2059,"line":2346},[2057,3400,2235],{"emptyLinePlaceholder":2234},[2057,3402,3403,3405,3408,3410,3412,3414,3416,3418],{"class":2059,"line":2352},[2057,3404,2096],{"class":2071},[2057,3406,3407],{"class":2099}," visible ",[2057,3409,2078],{"class":2063},[2057,3411,2484],{"class":2105},[2057,3413,2109],{"class":2099},[2057,3415,2168],{"class":2063},[2057,3417,2293],{"class":2071},[2057,3419,2174],{"class":2063},[2057,3421,3422,3425,3428,3430,3433,3435,3437,3439,3442,3444,3446],{"class":2059,"line":2359},[2057,3423,3424],{"class":2071},"  const",[2057,3426,3427],{"class":2099}," n",[2057,3429,2390],{"class":2063},[2057,3431,3432],{"class":2105}," Number",[2057,3434,2109],{"class":2067},[2057,3436,2516],{"class":2099},[2057,3438,2016],{"class":2063},[2057,3440,3441],{"class":2099},"limit",[2057,3443,2534],{"class":2067},[2057,3445,3353],{"class":2063},[2057,3447,3448],{"class":2837}," 0\n",[2057,3450,3451,3453,3455,3458,3461,3464,3466,3468,3471,3473,3476,3478,3481,3483,3485,3487,3489,3491,3493],{"class":2059,"line":2364},[2057,3452,2598],{"class":2510},[2057,3454,3427],{"class":2099},[2057,3456,3457],{"class":2063}," >",[2057,3459,3460],{"class":2837}," 0",[2057,3462,3463],{"class":2063}," ?",[2057,3465,3376],{"class":2099},[2057,3467,2016],{"class":2063},[2057,3469,3470],{"class":2099},"value",[2057,3472,2016],{"class":2063},[2057,3474,3475],{"class":2105},"slice",[2057,3477,2109],{"class":2067},[2057,3479,3480],{"class":2837},"0",[2057,3482,2171],{"class":2063},[2057,3484,3427],{"class":2099},[2057,3486,2534],{"class":2067},[2057,3488,2124],{"class":2063},[2057,3490,3376],{"class":2099},[2057,3492,2016],{"class":2063},[2057,3494,3495],{"class":2099},"value\n",[2057,3497,3498,3500],{"class":2059,"line":2395},[2057,3499,2225],{"class":2063},[2057,3501,2228],{"class":2099},[2057,3503,3504,3506,3508],{"class":2059,"line":2412},[2057,3505,2613],{"class":2063},[2057,3507,2068],{"class":2067},[2057,3509,2090],{"class":2063},[2057,3511,3512],{"class":2059,"line":2429},[2057,3513,2235],{"emptyLinePlaceholder":2234},[2057,3515,3516,3518,3520],{"class":2059,"line":2446},[2057,3517,2064],{"class":2063},[2057,3519,2630],{"class":2067},[2057,3521,2090],{"class":2063},[2057,3523,3524,3526,3528,3530,3532,3534,3537,3539],{"class":2059,"line":2463},[2057,3525,2638],{"class":2063},[2057,3527,2748],{"class":2067},[2057,3529,2719],{"class":2071},[2057,3531,2078],{"class":2063},[2057,3533,2081],{"class":2063},[2057,3535,3536],{"class":2084},"product-grid",[2057,3538,2081],{"class":2063},[2057,3540,2090],{"class":2063},[2057,3542,3543,3545,3548,3550,3552,3554,3557,3559],{"class":2059,"line":2469},[2057,3544,2683],{"class":2063},[2057,3546,3547],{"class":2067},"CategoryListSkeleton",[2057,3549,2707],{"class":2071},[2057,3551,2078],{"class":2063},[2057,3553,2081],{"class":2063},[2057,3555,3556],{"class":2084},"status === 'pending'",[2057,3558,2081],{"class":2063},[2057,3560,3561],{"class":2063}," \u002F>\n",[2057,3563,3564,3566,3569,3572,3574,3576,3579,3581,3584,3586,3588,3591,3593],{"class":2059,"line":2474},[2057,3565,2683],{"class":2063},[2057,3567,3568],{"class":2067},"ErrorBoundary",[2057,3570,3571],{"class":2071}," v-else-if",[2057,3573,2078],{"class":2063},[2057,3575,2081],{"class":2063},[2057,3577,3578],{"class":2084},"error",[2057,3580,2081],{"class":2063},[2057,3582,3583],{"class":2071}," title",[2057,3585,2078],{"class":2063},[2057,3587,2081],{"class":2063},[2057,3589,3590],{"class":2084},"Products could not be loaded",[2057,3592,2081],{"class":2063},[2057,3594,3561],{"class":2063},[2057,3596,3597,3599,3602,3604,3606,3608,3611,3613,3615,3617,3619,3622,3624],{"class":2059,"line":2507},[2057,3598,2683],{"class":2063},[2057,3600,3601],{"class":2067},"EmptyState",[2057,3603,3571],{"class":2071},[2057,3605,2078],{"class":2063},[2057,3607,2081],{"class":2063},[2057,3609,3610],{"class":2084},"!visible.length",[2057,3612,2081],{"class":2063},[2057,3614,3583],{"class":2071},[2057,3616,2078],{"class":2063},[2057,3618,2081],{"class":2063},[2057,3620,3621],{"class":2084},"No products found",[2057,3623,2081],{"class":2063},[2057,3625,3561],{"class":2063},[2057,3627,3628,3630,3633,3636,3638,3640,3642,3645,3647],{"class":2059,"line":2554},[2057,3629,2683],{"class":2063},[2057,3631,3632],{"class":2067},"div",[2057,3634,3635],{"class":2071}," v-else",[2057,3637,2719],{"class":2071},[2057,3639,2078],{"class":2063},[2057,3641,2081],{"class":2063},[2057,3643,3644],{"class":2084},"grid",[2057,3646,2081],{"class":2063},[2057,3648,2090],{"class":2063},[2057,3650,3651,3654,3657,3660,3662,3664,3667,3669,3672,3674,3676,3679,3681,3684,3686,3688,3691,3693],{"class":2059,"line":2595},[2057,3652,3653],{"class":2063},"      \u003C",[2057,3655,3656],{"class":2067},"ProductCard",[2057,3658,3659],{"class":2071}," v-for",[2057,3661,2078],{"class":2063},[2057,3663,2081],{"class":2063},[2057,3665,3666],{"class":2084},"product in visible",[2057,3668,2081],{"class":2063},[2057,3670,3671],{"class":2071}," :key",[2057,3673,2078],{"class":2063},[2057,3675,2081],{"class":2063},[2057,3677,3678],{"class":2084},"product.id",[2057,3680,2081],{"class":2063},[2057,3682,3683],{"class":2071}," :product",[2057,3685,2078],{"class":2063},[2057,3687,2081],{"class":2063},[2057,3689,3690],{"class":2084},"product",[2057,3692,2081],{"class":2063},[2057,3694,3561],{"class":2063},[2057,3696,3697,3700,3702],{"class":2059,"line":2603},[2057,3698,3699],{"class":2063},"    \u003C\u002F",[2057,3701,3632],{"class":2067},[2057,3703,2090],{"class":2063},[2057,3705,3706,3708,3710],{"class":2059,"line":2610},[2057,3707,2745],{"class":2063},[2057,3709,2748],{"class":2067},[2057,3711,2090],{"class":2063},[2057,3713,3714,3716,3718],{"class":2059,"line":2620},[2057,3715,2613],{"class":2063},[2057,3717,2630],{"class":2067},[2057,3719,2090],{"class":2063},[1996,3721,3722],{},"The catalog response carries no prices. That's deliberate — it keeps the catalog cacheable and stops a slow price lookup from blocking the grid.",[3086,3724,3726],{"id":3725},"defer-the-offer","Defer the offer",[1996,3728,3729,3730,3733,3734,3737],{},"Price and availability are the ",[2003,3731,3732],{},"offer",". Resolve them on their own axis: one batched request for the visible products, fired after the page paints, with a skeleton until it returns. A shared ",[2008,3735,3736],{},"useOffers"," composable does the batching and caching.",[2047,3739,3742],{"className":2907,"code":3740,"filename":3741,"language":2085,"meta":2053,"style":2053},"export interface Offer {\n  id: string\n  prices: { [tier: string]: number }[]\n  isOutOfStock: boolean\n}\n\nexport function useOffers() {\n  const cache = useState\u003CRecord\u003Cstring, Offer>>('offers:cache', () => ({}))\n  const inflight = useState\u003CRecord\u003Cstring, boolean>>('offers:pending', () => ({}))\n  \u002F\u002F Ids whose fetch has finished (resolved or soft-failed). Until then a product\n  \u002F\u002F reads as \"pending\" so SSR and the first client render both show a skeleton.\n  const attempted = useState\u003CRecord\u003Cstring, boolean>>('offers:attempted', () => ({}))\n\n  async function loadOffers(items: { id: string; sku?: string }[]): Promise\u003Cvoid> {\n    \u002F\u002F No-op on the server: the offer never blocks the first byte.\n    if (import.meta.server) return\n\n    const want = items.filter(\n      item => item?.id && !(item.id in cache.value) && !inflight.value[item.id],\n    )\n    if (!want.length) return\n\n    inflight.value = { ...inflight.value, ...Object.fromEntries(want.map(i => [i.id, true])) }\n    try {\n      const { offers } = await $fetch\u003C{ offers: Record\u003Cstring, Offer> }>('\u002Fapi\u002Foffers', {\n        method: 'POST',\n        body: { items: want.map(i => ({ id: i.id, sku: i.sku })) },\n      })\n      cache.value = { ...cache.value, ...offers }\n    }\n    catch {\n      \u002F\u002F Soft failure: leave uncached so widgets render \"price on request\", never €0.\n    }\n    finally {\n      const next = { ...inflight.value }\n      for (const i of want) delete next[i.id]\n      inflight.value = next\n      attempted.value = { ...attempted.value, ...Object.fromEntries(want.map(i => [i.id, true])) }\n    }\n  }\n\n  function useOffer(getId: MaybeRefOrGetter\u003Cstring>) {\n    const id = computed(() => toValue(getId))\n    const offer = computed\u003COffer | undefined>(() => cache.value[id.value])\n    \u002F\u002F Default-pending so SSR and the first client render agree (no hydration flash).\n    const pending = computed(() => !offer.value && !attempted.value[id.value])\n    return { offer, pending }\n  }\n\n  return { loadOffers, useOffer }\n}\n","app\u002Fcomposables\u002FuseOffers.ts",[2008,3743,3744,3756,3765,3798,3808,3812,3816,3830,3880,3927,3932,3937,3983,3987,4043,4048,4072,4076,4097,4160,4165,4186,4190,4259,4266,4321,4337,4398,4405,4436,4441,4448,4453,4457,4464,4485,4519,4533,4595,4599,4603,4607,4634,4659,4704,4709,4754,4770,4775,4780,4795],{"__ignoreMap":2053},[2057,3745,3746,3748,3751,3754],{"class":2059,"line":2060},[2057,3747,3000],{"class":2510},[2057,3749,3750],{"class":2071}," interface",[2057,3752,3753],{"class":2127}," Offer",[2057,3755,2174],{"class":2063},[2057,3757,3758,3761,3763],{"class":2059,"line":2093},[2057,3759,3760],{"class":2067},"  id",[2057,3762,2124],{"class":2063},[2057,3764,2128],{"class":2127},[2057,3766,3767,3770,3772,3774,3777,3781,3783,3785,3788,3790,3793,3795],{"class":2059,"line":2118},[2057,3768,3769],{"class":2067},"  prices",[2057,3771,2124],{"class":2063},[2057,3773,2922],{"class":2063},[2057,3775,3776],{"class":2099}," [",[2057,3778,3780],{"class":3779},"sHdIc","tier",[2057,3782,2124],{"class":2063},[2057,3784,2384],{"class":2127},[2057,3786,3787],{"class":2099},"]",[2057,3789,2124],{"class":2063},[2057,3791,3792],{"class":2127}," number",[2057,3794,2928],{"class":2063},[2057,3796,3797],{"class":2099},"[]\n",[2057,3799,3800,3803,3805],{"class":2059,"line":2131},[2057,3801,3802],{"class":2067},"  isOutOfStock",[2057,3804,2124],{"class":2063},[2057,3806,3807],{"class":2127}," boolean\n",[2057,3809,3810],{"class":2059,"line":2142},[2057,3811,2466],{"class":2063},[2057,3813,3814],{"class":2059,"line":2152},[2057,3815,2235],{"emptyLinePlaceholder":2234},[2057,3817,3818,3820,3823,3826,3828],{"class":2059,"line":2162},[2057,3819,3000],{"class":2510},[2057,3821,3822],{"class":2071}," function",[2057,3824,3825],{"class":2105}," useOffers",[2057,3827,2168],{"class":2063},[2057,3829,2174],{"class":2063},[2057,3831,3832,3834,3837,3839,3842,3844,3847,3849,3851,3853,3855,3858,3860,3862,3865,3867,3869,3871,3873,3875,3877],{"class":2059,"line":2177},[2057,3833,3424],{"class":2071},[2057,3835,3836],{"class":2099}," cache",[2057,3838,2390],{"class":2063},[2057,3840,3841],{"class":2105}," useState",[2057,3843,2064],{"class":2063},[2057,3845,3846],{"class":2127},"Record",[2057,3848,2064],{"class":2063},[2057,3850,2379],{"class":2127},[2057,3852,2171],{"class":2063},[2057,3854,3753],{"class":2127},[2057,3856,3857],{"class":2063},">>",[2057,3859,2109],{"class":2067},[2057,3861,2200],{"class":2063},[2057,3863,3864],{"class":2084},"offers:cache",[2057,3866,2200],{"class":2063},[2057,3868,2171],{"class":2063},[2057,3870,2290],{"class":2063},[2057,3872,2293],{"class":2071},[2057,3874,2296],{"class":2067},[2057,3876,3302],{"class":2063},[2057,3878,3879],{"class":2067},"))\n",[2057,3881,3882,3884,3887,3889,3891,3893,3895,3897,3899,3901,3904,3906,3908,3910,3913,3915,3917,3919,3921,3923,3925],{"class":2059,"line":2187},[2057,3883,3424],{"class":2071},[2057,3885,3886],{"class":2099}," inflight",[2057,3888,2390],{"class":2063},[2057,3890,3841],{"class":2105},[2057,3892,2064],{"class":2063},[2057,3894,3846],{"class":2127},[2057,3896,2064],{"class":2063},[2057,3898,2379],{"class":2127},[2057,3900,2171],{"class":2063},[2057,3902,3903],{"class":2127}," boolean",[2057,3905,3857],{"class":2063},[2057,3907,2109],{"class":2067},[2057,3909,2200],{"class":2063},[2057,3911,3912],{"class":2084},"offers:pending",[2057,3914,2200],{"class":2063},[2057,3916,2171],{"class":2063},[2057,3918,2290],{"class":2063},[2057,3920,2293],{"class":2071},[2057,3922,2296],{"class":2067},[2057,3924,3302],{"class":2063},[2057,3926,3879],{"class":2067},[2057,3928,3929],{"class":2059,"line":2206},[2057,3930,3931],{"class":2278},"  \u002F\u002F Ids whose fetch has finished (resolved or soft-failed). Until then a product\n",[2057,3933,3934],{"class":2059,"line":2222},[2057,3935,3936],{"class":2278},"  \u002F\u002F reads as \"pending\" so SSR and the first client render both show a skeleton.\n",[2057,3938,3939,3941,3944,3946,3948,3950,3952,3954,3956,3958,3960,3962,3964,3966,3969,3971,3973,3975,3977,3979,3981],{"class":2059,"line":2231},[2057,3940,3424],{"class":2071},[2057,3942,3943],{"class":2099}," attempted",[2057,3945,2390],{"class":2063},[2057,3947,3841],{"class":2105},[2057,3949,2064],{"class":2063},[2057,3951,3846],{"class":2127},[2057,3953,2064],{"class":2063},[2057,3955,2379],{"class":2127},[2057,3957,2171],{"class":2063},[2057,3959,3903],{"class":2127},[2057,3961,3857],{"class":2063},[2057,3963,2109],{"class":2067},[2057,3965,2200],{"class":2063},[2057,3967,3968],{"class":2084},"offers:attempted",[2057,3970,2200],{"class":2063},[2057,3972,2171],{"class":2063},[2057,3974,2290],{"class":2063},[2057,3976,2293],{"class":2071},[2057,3978,2296],{"class":2067},[2057,3980,3302],{"class":2063},[2057,3982,3879],{"class":2067},[2057,3984,3985],{"class":2059,"line":2238},[2057,3986,2235],{"emptyLinePlaceholder":2234},[2057,3988,3989,3992,3994,3997,3999,4002,4004,4006,4009,4011,4013,4016,4019,4021,4023,4025,4028,4031,4034,4036,4039,4041],{"class":2059,"line":2248},[2057,3990,3991],{"class":2071},"  async",[2057,3993,3822],{"class":2071},[2057,3995,3996],{"class":2105}," loadOffers",[2057,3998,2109],{"class":2063},[2057,4000,4001],{"class":3779},"items",[2057,4003,2124],{"class":2063},[2057,4005,2922],{"class":2063},[2057,4007,4008],{"class":2067}," id",[2057,4010,2124],{"class":2063},[2057,4012,2384],{"class":2127},[2057,4014,4015],{"class":2063},";",[2057,4017,4018],{"class":2067}," sku",[2057,4020,2137],{"class":2063},[2057,4022,2384],{"class":2127},[2057,4024,2928],{"class":2063},[2057,4026,4027],{"class":2067},"[]",[2057,4029,4030],{"class":2063},"):",[2057,4032,4033],{"class":2127}," Promise",[2057,4035,2064],{"class":2063},[2057,4037,4038],{"class":2127},"void",[2057,4040,2387],{"class":2063},[2057,4042,2174],{"class":2063},[2057,4044,4045],{"class":2059,"line":2265},[2057,4046,4047],{"class":2278},"    \u002F\u002F No-op on the server: the offer never blocks the first byte.\n",[2057,4049,4050,4053,4055,4057,4059,4062,4064,4067,4069],{"class":2059,"line":2275},[2057,4051,4052],{"class":2510},"    if",[2057,4054,2296],{"class":2067},[2057,4056,2916],{"class":2510},[2057,4058,2016],{"class":2063},[2057,4060,4061],{"class":2099},"meta",[2057,4063,2016],{"class":2063},[2057,4065,4066],{"class":2099},"server",[2057,4068,2534],{"class":2067},[2057,4070,4071],{"class":2510},"return\n",[2057,4073,4074],{"class":2059,"line":2282},[2057,4075,2235],{"emptyLinePlaceholder":2234},[2057,4077,4078,4081,4084,4086,4089,4091,4094],{"class":2059,"line":2301},[2057,4079,4080],{"class":2071},"    const",[2057,4082,4083],{"class":2099}," want",[2057,4085,2390],{"class":2063},[2057,4087,4088],{"class":2099}," items",[2057,4090,2016],{"class":2063},[2057,4092,4093],{"class":2105},"filter",[2057,4095,4096],{"class":2067},"(\n",[2057,4098,4099,4102,4104,4107,4109,4111,4114,4117,4119,4122,4124,4126,4128,4130,4132,4134,4136,4139,4141,4144,4146,4148,4150,4152,4154,4156,4158],{"class":2059,"line":2318},[2057,4100,4101],{"class":3779},"      item",[2057,4103,2293],{"class":2071},[2057,4105,4106],{"class":2099}," item",[2057,4108,3344],{"class":2063},[2057,4110,2838],{"class":2099},[2057,4112,4113],{"class":2063}," &&",[2057,4115,4116],{"class":2063}," !",[2057,4118,2109],{"class":2067},[2057,4120,4121],{"class":2099},"item",[2057,4123,2016],{"class":2063},[2057,4125,2838],{"class":2099},[2057,4127,2567],{"class":2063},[2057,4129,3836],{"class":2099},[2057,4131,2016],{"class":2063},[2057,4133,3470],{"class":2099},[2057,4135,2534],{"class":2067},[2057,4137,4138],{"class":2063},"&&",[2057,4140,4116],{"class":2063},[2057,4142,4143],{"class":2099},"inflight",[2057,4145,2016],{"class":2063},[2057,4147,3470],{"class":2099},[2057,4149,2578],{"class":2067},[2057,4151,4121],{"class":2099},[2057,4153,2016],{"class":2063},[2057,4155,2838],{"class":2099},[2057,4157,3787],{"class":2067},[2057,4159,2203],{"class":2063},[2057,4161,4162],{"class":2059,"line":2335},[2057,4163,4164],{"class":2067},"    )\n",[2057,4166,4167,4169,4171,4174,4177,4179,4182,4184],{"class":2059,"line":2346},[2057,4168,4052],{"class":2510},[2057,4170,2296],{"class":2067},[2057,4172,4173],{"class":2063},"!",[2057,4175,4176],{"class":2099},"want",[2057,4178,2016],{"class":2063},[2057,4180,4181],{"class":2099},"length",[2057,4183,2534],{"class":2067},[2057,4185,4071],{"class":2510},[2057,4187,4188],{"class":2059,"line":2352},[2057,4189,2235],{"emptyLinePlaceholder":2234},[2057,4191,4192,4195,4197,4199,4201,4203,4206,4208,4210,4212,4214,4216,4219,4221,4224,4226,4228,4230,4233,4235,4238,4240,4242,4244,4246,4248,4250,4254,4257],{"class":2059,"line":2359},[2057,4193,4194],{"class":2099},"    inflight",[2057,4196,2016],{"class":2063},[2057,4198,3470],{"class":2099},[2057,4200,2390],{"class":2063},[2057,4202,2922],{"class":2063},[2057,4204,4205],{"class":2063}," ...",[2057,4207,4143],{"class":2099},[2057,4209,2016],{"class":2063},[2057,4211,3470],{"class":2099},[2057,4213,2171],{"class":2063},[2057,4215,4205],{"class":2063},[2057,4217,4218],{"class":2099},"Object",[2057,4220,2016],{"class":2063},[2057,4222,4223],{"class":2105},"fromEntries",[2057,4225,2109],{"class":2067},[2057,4227,4176],{"class":2099},[2057,4229,2016],{"class":2063},[2057,4231,4232],{"class":2105},"map",[2057,4234,2109],{"class":2067},[2057,4236,4237],{"class":3779},"i",[2057,4239,2293],{"class":2071},[2057,4241,3776],{"class":2067},[2057,4243,4237],{"class":2099},[2057,4245,2016],{"class":2063},[2057,4247,2838],{"class":2099},[2057,4249,2171],{"class":2063},[2057,4251,4253],{"class":4252},"sfNiH"," true",[2057,4255,4256],{"class":2067},"])) ",[2057,4258,2466],{"class":2063},[2057,4260,4261,4264],{"class":2059,"line":2364},[2057,4262,4263],{"class":2510},"    try",[2057,4265,2174],{"class":2063},[2057,4267,4268,4271,4273,4276,4278,4280,4283,4286,4289,4291,4293,4295,4297,4299,4301,4303,4305,4308,4310,4312,4315,4317,4319],{"class":2059,"line":2395},[2057,4269,4270],{"class":2071},"      const",[2057,4272,2922],{"class":2063},[2057,4274,4275],{"class":2099}," offers",[2057,4277,2928],{"class":2063},[2057,4279,2390],{"class":2063},[2057,4281,4282],{"class":2510}," await",[2057,4284,4285],{"class":2105}," $fetch",[2057,4287,4288],{"class":2063},"\u003C{",[2057,4290,4275],{"class":2067},[2057,4292,2124],{"class":2063},[2057,4294,2374],{"class":2127},[2057,4296,2064],{"class":2063},[2057,4298,2379],{"class":2127},[2057,4300,2171],{"class":2063},[2057,4302,3753],{"class":2127},[2057,4304,2387],{"class":2063},[2057,4306,4307],{"class":2063}," }>",[2057,4309,2109],{"class":2067},[2057,4311,2200],{"class":2063},[2057,4313,4314],{"class":2084},"\u002Fapi\u002Foffers",[2057,4316,2200],{"class":2063},[2057,4318,2171],{"class":2063},[2057,4320,2174],{"class":2063},[2057,4322,4323,4326,4328,4330,4333,4335],{"class":2059,"line":2412},[2057,4324,4325],{"class":2067},"        method",[2057,4327,2124],{"class":2063},[2057,4329,2194],{"class":2063},[2057,4331,4332],{"class":2084},"POST",[2057,4334,2200],{"class":2063},[2057,4336,2203],{"class":2063},[2057,4338,4339,4342,4344,4346,4348,4350,4352,4354,4356,4358,4360,4362,4364,4367,4369,4371,4374,4376,4378,4380,4382,4384,4386,4388,4391,4393,4396],{"class":2059,"line":2429},[2057,4340,4341],{"class":2067},"        body",[2057,4343,2124],{"class":2063},[2057,4345,2922],{"class":2063},[2057,4347,4088],{"class":2067},[2057,4349,2124],{"class":2063},[2057,4351,4083],{"class":2099},[2057,4353,2016],{"class":2063},[2057,4355,4232],{"class":2105},[2057,4357,2109],{"class":2067},[2057,4359,4237],{"class":3779},[2057,4361,2293],{"class":2071},[2057,4363,2296],{"class":2067},[2057,4365,4366],{"class":2063},"{",[2057,4368,4008],{"class":2067},[2057,4370,2124],{"class":2063},[2057,4372,4373],{"class":2099}," i",[2057,4375,2016],{"class":2063},[2057,4377,2838],{"class":2099},[2057,4379,2171],{"class":2063},[2057,4381,4018],{"class":2067},[2057,4383,2124],{"class":2063},[2057,4385,4373],{"class":2099},[2057,4387,2016],{"class":2063},[2057,4389,4390],{"class":2099},"sku",[2057,4392,2928],{"class":2063},[2057,4394,4395],{"class":2067},")) ",[2057,4397,3307],{"class":2063},[2057,4399,4400,4403],{"class":2059,"line":2446},[2057,4401,4402],{"class":2063},"      }",[2057,4404,2228],{"class":2067},[2057,4406,4407,4410,4412,4414,4416,4418,4420,4423,4425,4427,4429,4431,4434],{"class":2059,"line":2463},[2057,4408,4409],{"class":2099},"      cache",[2057,4411,2016],{"class":2063},[2057,4413,3470],{"class":2099},[2057,4415,2390],{"class":2063},[2057,4417,2922],{"class":2063},[2057,4419,4205],{"class":2063},[2057,4421,4422],{"class":2099},"cache",[2057,4424,2016],{"class":2063},[2057,4426,3470],{"class":2099},[2057,4428,2171],{"class":2063},[2057,4430,4205],{"class":2063},[2057,4432,4433],{"class":2099},"offers",[2057,4435,2887],{"class":2063},[2057,4437,4438],{"class":2059,"line":2469},[2057,4439,4440],{"class":2063},"    }\n",[2057,4442,4443,4446],{"class":2059,"line":2474},[2057,4444,4445],{"class":2510},"    catch",[2057,4447,2174],{"class":2063},[2057,4449,4450],{"class":2059,"line":2507},[2057,4451,4452],{"class":2278},"      \u002F\u002F Soft failure: leave uncached so widgets render \"price on request\", never €0.\n",[2057,4454,4455],{"class":2059,"line":2554},[2057,4456,4440],{"class":2063},[2057,4458,4459,4462],{"class":2059,"line":2595},[2057,4460,4461],{"class":2510},"    finally",[2057,4463,2174],{"class":2063},[2057,4465,4466,4468,4471,4473,4475,4477,4479,4481,4483],{"class":2059,"line":2603},[2057,4467,4270],{"class":2071},[2057,4469,4470],{"class":2099}," next",[2057,4472,2390],{"class":2063},[2057,4474,2922],{"class":2063},[2057,4476,4205],{"class":2063},[2057,4478,4143],{"class":2099},[2057,4480,2016],{"class":2063},[2057,4482,3470],{"class":2099},[2057,4484,2887],{"class":2063},[2057,4486,4487,4490,4492,4494,4496,4499,4501,4503,4506,4508,4510,4512,4514,4516],{"class":2059,"line":2610},[2057,4488,4489],{"class":2510},"      for",[2057,4491,2296],{"class":2067},[2057,4493,2096],{"class":2071},[2057,4495,4373],{"class":2099},[2057,4497,4498],{"class":2063}," of",[2057,4500,4083],{"class":2099},[2057,4502,2534],{"class":2067},[2057,4504,4505],{"class":2063},"delete",[2057,4507,4470],{"class":2099},[2057,4509,2578],{"class":2067},[2057,4511,4237],{"class":2099},[2057,4513,2016],{"class":2063},[2057,4515,2838],{"class":2099},[2057,4517,4518],{"class":2067},"]\n",[2057,4520,4521,4524,4526,4528,4530],{"class":2059,"line":2620},[2057,4522,4523],{"class":2099},"      inflight",[2057,4525,2016],{"class":2063},[2057,4527,3470],{"class":2099},[2057,4529,2390],{"class":2063},[2057,4531,4532],{"class":2099}," next\n",[2057,4534,4535,4538,4540,4542,4544,4546,4548,4551,4553,4555,4557,4559,4561,4563,4565,4567,4569,4571,4573,4575,4577,4579,4581,4583,4585,4587,4589,4591,4593],{"class":2059,"line":2625},[2057,4536,4537],{"class":2099},"      attempted",[2057,4539,2016],{"class":2063},[2057,4541,3470],{"class":2099},[2057,4543,2390],{"class":2063},[2057,4545,2922],{"class":2063},[2057,4547,4205],{"class":2063},[2057,4549,4550],{"class":2099},"attempted",[2057,4552,2016],{"class":2063},[2057,4554,3470],{"class":2099},[2057,4556,2171],{"class":2063},[2057,4558,4205],{"class":2063},[2057,4560,4218],{"class":2099},[2057,4562,2016],{"class":2063},[2057,4564,4223],{"class":2105},[2057,4566,2109],{"class":2067},[2057,4568,4176],{"class":2099},[2057,4570,2016],{"class":2063},[2057,4572,4232],{"class":2105},[2057,4574,2109],{"class":2067},[2057,4576,4237],{"class":3779},[2057,4578,2293],{"class":2071},[2057,4580,3776],{"class":2067},[2057,4582,4237],{"class":2099},[2057,4584,2016],{"class":2063},[2057,4586,2838],{"class":2099},[2057,4588,2171],{"class":2063},[2057,4590,4253],{"class":4252},[2057,4592,4256],{"class":2067},[2057,4594,2466],{"class":2063},[2057,4596,4597],{"class":2059,"line":2635},[2057,4598,4440],{"class":2063},[2057,4600,4601],{"class":2059,"line":2644},[2057,4602,2897],{"class":2063},[2057,4604,4605],{"class":2059,"line":2659},[2057,4606,2235],{"emptyLinePlaceholder":2234},[2057,4608,4609,4612,4615,4617,4620,4622,4625,4627,4629,4632],{"class":2059,"line":2674},[2057,4610,4611],{"class":2071},"  function",[2057,4613,4614],{"class":2105}," useOffer",[2057,4616,2109],{"class":2063},[2057,4618,4619],{"class":3779},"getId",[2057,4621,2124],{"class":2063},[2057,4623,4624],{"class":2127}," MaybeRefOrGetter",[2057,4626,2064],{"class":2063},[2057,4628,2379],{"class":2127},[2057,4630,4631],{"class":2063},">)",[2057,4633,2174],{"class":2063},[2057,4635,4636,4638,4640,4642,4644,4646,4648,4650,4653,4655,4657],{"class":2059,"line":2680},[2057,4637,4080],{"class":2071},[2057,4639,4008],{"class":2099},[2057,4641,2390],{"class":2063},[2057,4643,2484],{"class":2105},[2057,4645,2109],{"class":2067},[2057,4647,2168],{"class":2063},[2057,4649,2293],{"class":2071},[2057,4651,4652],{"class":2105}," toValue",[2057,4654,2109],{"class":2067},[2057,4656,4619],{"class":2099},[2057,4658,3879],{"class":2067},[2057,4660,4661,4663,4666,4668,4670,4672,4675,4677,4679,4681,4683,4685,4687,4689,4691,4693,4695,4697,4699,4701],{"class":2059,"line":2700},[2057,4662,4080],{"class":2071},[2057,4664,4665],{"class":2099}," offer",[2057,4667,2390],{"class":2063},[2057,4669,2484],{"class":2105},[2057,4671,2064],{"class":2063},[2057,4673,4674],{"class":2127},"Offer",[2057,4676,2491],{"class":2063},[2057,4678,3356],{"class":2127},[2057,4680,2387],{"class":2063},[2057,4682,2109],{"class":2067},[2057,4684,2168],{"class":2063},[2057,4686,2293],{"class":2071},[2057,4688,3836],{"class":2099},[2057,4690,2016],{"class":2063},[2057,4692,3470],{"class":2099},[2057,4694,2578],{"class":2067},[2057,4696,2838],{"class":2099},[2057,4698,2016],{"class":2063},[2057,4700,3470],{"class":2099},[2057,4702,4703],{"class":2067},"])\n",[2057,4705,4706],{"class":2059,"line":2742},[2057,4707,4708],{"class":2278},"    \u002F\u002F Default-pending so SSR and the first client render agree (no hydration flash).\n",[2057,4710,4711,4713,4716,4718,4720,4722,4724,4726,4728,4730,4732,4734,4736,4738,4740,4742,4744,4746,4748,4750,4752],{"class":2059,"line":2753},[2057,4712,4080],{"class":2071},[2057,4714,4715],{"class":2099}," pending",[2057,4717,2390],{"class":2063},[2057,4719,2484],{"class":2105},[2057,4721,2109],{"class":2067},[2057,4723,2168],{"class":2063},[2057,4725,2293],{"class":2071},[2057,4727,4116],{"class":2063},[2057,4729,3732],{"class":2099},[2057,4731,2016],{"class":2063},[2057,4733,3470],{"class":2099},[2057,4735,4113],{"class":2063},[2057,4737,4116],{"class":2063},[2057,4739,4550],{"class":2099},[2057,4741,2016],{"class":2063},[2057,4743,3470],{"class":2099},[2057,4745,2578],{"class":2067},[2057,4747,2838],{"class":2099},[2057,4749,2016],{"class":2063},[2057,4751,3470],{"class":2099},[2057,4753,4703],{"class":2067},[2057,4755,4757,4760,4762,4764,4766,4768],{"class":2059,"line":4756},47,[2057,4758,4759],{"class":2510},"    return",[2057,4761,2922],{"class":2063},[2057,4763,4665],{"class":2099},[2057,4765,2171],{"class":2063},[2057,4767,4715],{"class":2099},[2057,4769,2887],{"class":2063},[2057,4771,4773],{"class":2059,"line":4772},48,[2057,4774,2897],{"class":2063},[2057,4776,4778],{"class":2059,"line":4777},49,[2057,4779,2235],{"emptyLinePlaceholder":2234},[2057,4781,4783,4785,4787,4789,4791,4793],{"class":2059,"line":4782},50,[2057,4784,2598],{"class":2510},[2057,4786,2922],{"class":2063},[2057,4788,3996],{"class":2099},[2057,4790,2171],{"class":2063},[2057,4792,4614],{"class":2099},[2057,4794,2887],{"class":2063},[2057,4796,4798],{"class":2059,"line":4797},51,[2057,4799,2466],{"class":2063},[1996,4801,4802,4803,4806],{},"Trigger one ",[2008,4804,4805],{},"loadOffers"," for the visible products — once per page, never one request per card:",[2047,4808,4811],{"className":2049,"code":4809,"filename":4810,"language":2052,"meta":2053,"style":2053},"\u003Cscript setup lang=\"ts\">\nconst { loadOffers } = useOffers()\n\n\u002F\u002F Batch the visible products into a single offer request after they're known.\nwatch(visible, (list) => {\n  if (list.length) void loadOffers(list)\n}, { immediate: true })\n\u003C\u002Fscript>\n","In the product grid block",[2008,4812,4813,4833,4851,4855,4860,4881,4905,4923],{"__ignoreMap":2053},[2057,4814,4815,4817,4819,4821,4823,4825,4827,4829,4831],{"class":2059,"line":2060},[2057,4816,2064],{"class":2063},[2057,4818,2068],{"class":2067},[2057,4820,2072],{"class":2071},[2057,4822,2075],{"class":2071},[2057,4824,2078],{"class":2063},[2057,4826,2081],{"class":2063},[2057,4828,2085],{"class":2084},[2057,4830,2081],{"class":2063},[2057,4832,2090],{"class":2063},[2057,4834,4835,4837,4839,4842,4844,4846,4848],{"class":2059,"line":2093},[2057,4836,2096],{"class":2071},[2057,4838,2922],{"class":2063},[2057,4840,4841],{"class":2099}," loadOffers ",[2057,4843,2225],{"class":2063},[2057,4845,2390],{"class":2063},[2057,4847,3825],{"class":2105},[2057,4849,4850],{"class":2099},"()\n",[2057,4852,4853],{"class":2059,"line":2118},[2057,4854,2235],{"emptyLinePlaceholder":2234},[2057,4856,4857],{"class":2059,"line":2131},[2057,4858,4859],{"class":2278},"\u002F\u002F Batch the visible products into a single offer request after they're known.\n",[2057,4861,4862,4865,4868,4870,4872,4875,4877,4879],{"class":2059,"line":2142},[2057,4863,4864],{"class":2105},"watch",[2057,4866,4867],{"class":2099},"(visible",[2057,4869,2171],{"class":2063},[2057,4871,2296],{"class":2063},[2057,4873,4874],{"class":3779},"list",[2057,4876,2341],{"class":2063},[2057,4878,2293],{"class":2071},[2057,4880,2174],{"class":2063},[2057,4882,4883,4885,4887,4889,4891,4893,4895,4897,4899,4901,4903],{"class":2059,"line":2152},[2057,4884,2511],{"class":2510},[2057,4886,2296],{"class":2067},[2057,4888,4874],{"class":2099},[2057,4890,2016],{"class":2063},[2057,4892,4181],{"class":2099},[2057,4894,2534],{"class":2067},[2057,4896,4038],{"class":2063},[2057,4898,3996],{"class":2105},[2057,4900,2109],{"class":2067},[2057,4902,4874],{"class":2099},[2057,4904,2228],{"class":2067},[2057,4906,4907,4910,4912,4915,4917,4919,4921],{"class":2059,"line":2162},[2057,4908,4909],{"class":2063},"},",[2057,4911,2922],{"class":2063},[2057,4913,4914],{"class":2067}," immediate",[2057,4916,2124],{"class":2063},[2057,4918,4253],{"class":4252},[2057,4920,2928],{"class":2063},[2057,4922,2228],{"class":2099},[2057,4924,4925,4927,4929],{"class":2059,"line":2177},[2057,4926,2613],{"class":2063},[2057,4928,2068],{"class":2067},[2057,4930,2090],{"class":2063},[1996,4932,4933],{},"The price widget on each card reads the shared cache and shows a skeleton while pending:",[2047,4935,4938],{"className":2049,"code":4936,"filename":4937,"language":2052,"meta":2053,"style":2053},"\u003Cscript setup lang=\"ts\">\nconst props = defineProps\u003C{ productId: string }>()\nconst { useOffer } = useOffers()\nconst { offer, pending } = useOffer(() => props.productId)\n\u003C\u002Fscript>\n\n\u003Ctemplate>\n  \u003Cspan v-if=\"pending\" class=\"price-skeleton\" aria-hidden=\"true\" \u002F>\n  \u003Cspan v-else-if=\"offer\">{{ formatPrice(offer.prices) }}\u003C\u002Fspan>\n  \u003Cspan v-else class=\"price-on-request\">Price on request\u003C\u002Fspan>\n\u003C\u002Ftemplate>\n","app\u002Fcomponents\u002FProductPrice.vue",[2008,4939,4940,4960,4984,5001,5033,5041,5045,5053,5095,5122,5152],{"__ignoreMap":2053},[2057,4941,4942,4944,4946,4948,4950,4952,4954,4956,4958],{"class":2059,"line":2060},[2057,4943,2064],{"class":2063},[2057,4945,2068],{"class":2067},[2057,4947,2072],{"class":2071},[2057,4949,2075],{"class":2071},[2057,4951,2078],{"class":2063},[2057,4953,2081],{"class":2063},[2057,4955,2085],{"class":2084},[2057,4957,2081],{"class":2063},[2057,4959,2090],{"class":2063},[2057,4961,4962,4964,4966,4968,4971,4973,4976,4978,4980,4982],{"class":2059,"line":2093},[2057,4963,2096],{"class":2071},[2057,4965,2100],{"class":2099},[2057,4967,2078],{"class":2063},[2057,4969,4970],{"class":2105}," defineProps",[2057,4972,4288],{"class":2063},[2057,4974,4975],{"class":2067}," productId",[2057,4977,2124],{"class":2063},[2057,4979,2384],{"class":2127},[2057,4981,4307],{"class":2063},[2057,4983,4850],{"class":2099},[2057,4985,4986,4988,4990,4993,4995,4997,4999],{"class":2059,"line":2118},[2057,4987,2096],{"class":2071},[2057,4989,2922],{"class":2063},[2057,4991,4992],{"class":2099}," useOffer ",[2057,4994,2225],{"class":2063},[2057,4996,2390],{"class":2063},[2057,4998,3825],{"class":2105},[2057,5000,4850],{"class":2099},[2057,5002,5003,5005,5007,5009,5011,5014,5016,5018,5020,5022,5024,5026,5028,5030],{"class":2059,"line":2131},[2057,5004,2096],{"class":2071},[2057,5006,2922],{"class":2063},[2057,5008,4665],{"class":2099},[2057,5010,2171],{"class":2063},[2057,5012,5013],{"class":2099}," pending ",[2057,5015,2225],{"class":2063},[2057,5017,2390],{"class":2063},[2057,5019,4614],{"class":2105},[2057,5021,2109],{"class":2099},[2057,5023,2168],{"class":2063},[2057,5025,2293],{"class":2071},[2057,5027,2540],{"class":2099},[2057,5029,2016],{"class":2063},[2057,5031,5032],{"class":2099},"productId)\n",[2057,5034,5035,5037,5039],{"class":2059,"line":2142},[2057,5036,2613],{"class":2063},[2057,5038,2068],{"class":2067},[2057,5040,2090],{"class":2063},[2057,5042,5043],{"class":2059,"line":2152},[2057,5044,2235],{"emptyLinePlaceholder":2234},[2057,5046,5047,5049,5051],{"class":2059,"line":2162},[2057,5048,2064],{"class":2063},[2057,5050,2630],{"class":2067},[2057,5052,2090],{"class":2063},[2057,5054,5055,5057,5059,5061,5063,5065,5068,5070,5072,5074,5076,5079,5081,5084,5086,5088,5091,5093],{"class":2059,"line":2177},[2057,5056,2638],{"class":2063},[2057,5058,2057],{"class":2067},[2057,5060,2707],{"class":2071},[2057,5062,2078],{"class":2063},[2057,5064,2081],{"class":2063},[2057,5066,5067],{"class":2084},"pending",[2057,5069,2081],{"class":2063},[2057,5071,2719],{"class":2071},[2057,5073,2078],{"class":2063},[2057,5075,2081],{"class":2063},[2057,5077,5078],{"class":2084},"price-skeleton",[2057,5080,2081],{"class":2063},[2057,5082,5083],{"class":2071}," aria-hidden",[2057,5085,2078],{"class":2063},[2057,5087,2081],{"class":2063},[2057,5089,5090],{"class":2084},"true",[2057,5092,2081],{"class":2063},[2057,5094,3561],{"class":2063},[2057,5096,5097,5099,5101,5103,5105,5107,5109,5111,5113,5116,5118,5120],{"class":2059,"line":2187},[2057,5098,2638],{"class":2063},[2057,5100,2057],{"class":2067},[2057,5102,3571],{"class":2071},[2057,5104,2078],{"class":2063},[2057,5106,2081],{"class":2063},[2057,5108,3732],{"class":2084},[2057,5110,2081],{"class":2063},[2057,5112,2387],{"class":2063},[2057,5114,5115],{"class":2099},"{{ formatPrice(offer.prices) }}",[2057,5117,2613],{"class":2063},[2057,5119,2057],{"class":2067},[2057,5121,2090],{"class":2063},[2057,5123,5124,5126,5128,5130,5132,5134,5136,5139,5141,5143,5146,5148,5150],{"class":2059,"line":2206},[2057,5125,2638],{"class":2063},[2057,5127,2057],{"class":2067},[2057,5129,3635],{"class":2071},[2057,5131,2719],{"class":2071},[2057,5133,2078],{"class":2063},[2057,5135,2081],{"class":2063},[2057,5137,5138],{"class":2084},"price-on-request",[2057,5140,2081],{"class":2063},[2057,5142,2387],{"class":2063},[2057,5144,5145],{"class":2099},"Price on request",[2057,5147,2613],{"class":2063},[2057,5149,2057],{"class":2067},[2057,5151,2090],{"class":2063},[2057,5153,5154,5156,5158],{"class":2059,"line":2222},[2057,5155,2613],{"class":2063},[2057,5157,2630],{"class":2067},[2057,5159,2090],{"class":2063},[1996,5161,5162],{},"The skeleton is the default state, not the empty state — that way the server and the first client render produce the same markup, so there's no hydration mismatch and no flash of \"price on request\".",[2018,5164,5166],{"id":5165},"rules-that-keep-blocks-fast","Rules that keep blocks fast",[5168,5169,5170,5177,5183,5189,5195],"ul",{},[5171,5172,5173,5176],"li",{},[2003,5174,5175],{},"Catalog in SSR, offer deferred."," Never fetch price or stock inside the catalog response just because it's convenient — it re-welds the boundary that keeps the catalog cacheable.",[5171,5178,5179,5182],{},[2003,5180,5181],{},"One offer request per page."," Batch the visible items; don't fire one request per card.",[5171,5184,5185,5188],{},[2003,5186,5187],{},"Skeleton by default."," A deferred value is unknown during SSR. Render the skeleton, not the empty state, so SSR and the first client render agree.",[5171,5190,5191,5194],{},[2003,5192,5193],{},"Soft-fail resolves the skeleton."," A failed offer fetch should fall back to \"price on request\", never spin forever and never render €0.",[5171,5196,5197,5200],{},[2003,5198,5199],{},"Read the tenant per request."," Server-side routes use the per-request tenant context. Never cache one tenant's catalog under a key that another tenant can read.",[2018,5202,5204],{"id":5203},"troubleshooting","Troubleshooting",[5168,5206,5207,5218,5226],{},[5171,5208,5209,5212,5213,3070,5215,5217],{},[2003,5210,5211],{},"Block renders as \"unknown\"."," The manifest ",[2008,5214,2838],{},[2008,5216,2030],{},", and the key in your block map don't match. Align all three.",[5171,5219,5220,5223,5224,2016],{},[2003,5221,5222],{},"Prices flash on load."," Your price widget defaults to the empty state instead of the skeleton, so the client render differs from SSR. Make the skeleton the default while ",[2008,5225,5067],{},[5171,5227,5228,5231,5232,2016],{},[2003,5229,5230],{},"The grid waits on prices."," The catalog fetch is pulling price data. Split it: catalog in SSR, offer deferred via ",[2008,5233,3736],{},[2018,5235,5237],{"id":5236},"whats-next","What's next",[5168,5239,5240,5248,5256],{},[5171,5241,5242,5247],{},[2003,5243,5244],{},[2013,5245,127],{"href":5246},"\u002Fdocs\u002Fguides\u002Fthemes\u002Ftheme-tokens-and-styling\u002F"," — brand your blocks per tenant with CSS custom properties.",[5171,5249,5250,5255],{},[2003,5251,5252],{},[2013,5253,121],{"href":5254},"\u002Fdocs\u002Fguides\u002Fthemes\u002Fdeploy-your-storefront\u002F"," — ship the Theme with its new blocks.",[5171,5257,5258,5259,2016],{},"Reference: ",[2013,5260,5262],{"href":5261},"\u002Fdocs\u002Fstudios\u002Fsites\u002Fblocks\u002Fhow-a-block-works\u002F","Blökkli blocks",[5264,5265,5266],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":2053,"searchDepth":2093,"depth":2093,"links":5268},[5269,5270,5271,5272,5276,5277,5278],{"id":2020,"depth":2093,"text":1404},{"id":2041,"depth":2093,"text":2042},{"id":2775,"depth":2093,"text":2776},{"id":3076,"depth":2093,"text":3077,"children":5273},[5274,5275],{"id":3088,"depth":2118,"text":3089},{"id":3725,"depth":2118,"text":3726},{"id":5165,"depth":2093,"text":5166},{"id":5203,"depth":2093,"text":5204},{"id":5236,"depth":2093,"text":5237},"Write a Blökkli block as a Vue component, register it in the manifest, and connect a block to live catalog data the shell-first way.","md",null,{},{"title":115,"description":5279},{"loc":116},"7cb-et8INSb27RkHmc_yqlCHra9payE2dLrozXuhEBE",1788429670008]