[{"data":1,"prerenderedAt":1330},["ShallowReactive",2],{"navigation_docs_en":3,"-en-internal-authoring-code":317,"-en-internal-authoring-code-surround":1325},[4,19,74],{"title":5,"path":6,"stem":7,"children":8,"page":18},"Public","\u002Fen\u002Fpublic","en\u002F1.public",[9],{"title":10,"icon":11,"path":12,"stem":13,"children":14,"page":18},"Welcome","i-lucide-sparkles","\u002Fen\u002Fpublic\u002Fwelcome","en\u002F1.public\u002F1.welcome",[15],{"title":10,"path":16,"stem":17},"\u002Fen\u002Fpublic\u002Fwelcome\u002Foverview","en\u002F1.public\u002F1.welcome\u002F1.overview",false,{"title":20,"path":21,"stem":22,"children":23,"page":18},"Cloud","\u002Fen\u002Fcloud","en\u002F2.cloud",[24,33,48],{"title":10,"icon":25,"path":26,"stem":27,"children":28,"page":18},"i-lucide-lock","\u002Fen\u002Fcloud\u002Fwelcome","en\u002F2.cloud\u002F1.welcome",[29],{"title":30,"path":31,"stem":32},"Cloud Docs","\u002Fen\u002Fcloud\u002Fwelcome\u002Foverview","en\u002F2.cloud\u002F1.welcome\u002F1.overview",{"title":34,"icon":35,"path":36,"stem":37,"children":38,"page":18},"Firmware over RDM","i-lucide-radio-tower","\u002Fen\u002Fcloud\u002Ffirmware-over-rdm","en\u002F2.cloud\u002F2.firmware-over-rdm",[39,43],{"title":40,"path":41,"stem":42,"icon":35},"Firmware Update over RDM","\u002Fen\u002Fcloud\u002Ffirmware-over-rdm\u002Foverview","en\u002F2.cloud\u002F2.firmware-over-rdm\u002F1.overview",{"title":44,"path":45,"stem":46,"icon":47},"Implementation Guide","\u002Fen\u002Fcloud\u002Ffirmware-over-rdm\u002Fimplementation-guide","en\u002F2.cloud\u002F2.firmware-over-rdm\u002F2.implementation-guide","i-lucide-list-checks",{"title":49,"icon":50,"path":51,"stem":52,"children":53,"page":18},"KLSTR.rdm","i-lucide-cable","\u002Fen\u002Fcloud\u002Fklstr-rdm","en\u002F2.cloud\u002F3.klstr-rdm",[54,59,64,69],{"title":55,"path":56,"stem":57,"icon":58},"Introduction","\u002Fen\u002Fcloud\u002Fklstr-rdm\u002Fintroduction","en\u002F2.cloud\u002F3.klstr-rdm\u002F1.introduction","i-lucide-circuit-board",{"title":60,"path":61,"stem":62,"icon":63},"Use KLSTR.dev hardware","\u002Fen\u002Fcloud\u002Fklstr-rdm\u002Fuse-klstr-dev-hardware","en\u002F2.cloud\u002F3.klstr-rdm\u002F2.use-klstr-dev-hardware","i-lucide-wrench",{"title":65,"path":66,"stem":67,"icon":68},"Special firmware","\u002Fen\u002Fcloud\u002Fklstr-rdm\u002Fspecial-firmware","en\u002F2.cloud\u002F3.klstr-rdm\u002F3.special-firmware","i-lucide-download",{"title":70,"path":71,"stem":72,"icon":73},"RDM-Compliance Testing","\u002Fen\u002Fcloud\u002Fklstr-rdm\u002Frdm-compliance-testing","en\u002F2.cloud\u002F3.klstr-rdm\u002F4.rdm-compliance-testing","i-lucide-clipboard-check",{"title":75,"path":76,"stem":77,"children":78,"page":18},"Internal","\u002Fen\u002Finternal","en\u002F3.internal",[79,250,264,278],{"title":80,"icon":81,"path":82,"stem":83,"children":84,"page":18},"Review (ex-public)","i-lucide-inbox","\u002Fen\u002Finternal\u002Freview","en\u002F3.internal\u002F0.review",[85,102,120,138,187,205],{"title":86,"icon":87,"path":88,"stem":89,"children":90,"page":18},"Getting Started","i-lucide-rocket","\u002Fen\u002Finternal\u002Freview\u002Ftutorials","en\u002F3.internal\u002F0.review\u002F1.tutorials",[91,94,98],{"title":86,"path":92,"stem":93},"\u002Fen\u002Finternal\u002Freview\u002Ftutorials\u002Fgetting-started","en\u002F3.internal\u002F0.review\u002F1.tutorials\u002F1.getting-started",{"title":95,"path":96,"stem":97},"Setup KLSTR.one","\u002Fen\u002Finternal\u002Freview\u002Ftutorials\u002Fsetup-klstr-one","en\u002F3.internal\u002F0.review\u002F1.tutorials\u002F2.setup-klstr-one",{"title":99,"path":100,"stem":101},"Setup KLSTR.nano","\u002Fen\u002Finternal\u002Freview\u002Ftutorials\u002Fsetup-klstr-nano","en\u002F3.internal\u002F0.review\u002F1.tutorials\u002F3.setup-klstr-nano",{"title":103,"icon":104,"path":105,"stem":106,"children":107,"page":18},"KLSTR.one","i-lucide-cpu","\u002Fen\u002Finternal\u002Freview\u002Fklstr-one","en\u002F3.internal\u002F0.review\u002F2.klstr-one",[108,112,116],{"title":109,"path":110,"stem":111},"KLSTR.one Overview","\u002Fen\u002Finternal\u002Freview\u002Fklstr-one\u002Foverview","en\u002F3.internal\u002F0.review\u002F2.klstr-one\u002F1.overview",{"title":113,"path":114,"stem":115},"KLSTR.one Installation","\u002Fen\u002Finternal\u002Freview\u002Fklstr-one\u002Finstallation","en\u002F3.internal\u002F0.review\u002F2.klstr-one\u002F2.installation",{"title":117,"path":118,"stem":119},"KLSTR.one Specifications","\u002Fen\u002Finternal\u002Freview\u002Fklstr-one\u002Fspecifications","en\u002F3.internal\u002F0.review\u002F2.klstr-one\u002F3.specifications",{"title":121,"icon":122,"path":123,"stem":124,"children":125,"page":18},"KLSTR.nano","i-lucide-microchip","\u002Fen\u002Finternal\u002Freview\u002Fklstr-nano","en\u002F3.internal\u002F0.review\u002F4.klstr-nano",[126,130,134],{"title":127,"path":128,"stem":129},"KLSTR.nano Overview","\u002Fen\u002Finternal\u002Freview\u002Fklstr-nano\u002Foverview","en\u002F3.internal\u002F0.review\u002F4.klstr-nano\u002F1.overview",{"title":131,"path":132,"stem":133},"KLSTR.nano Installation","\u002Fen\u002Finternal\u002Freview\u002Fklstr-nano\u002Finstallation","en\u002F3.internal\u002F0.review\u002F4.klstr-nano\u002F2.installation",{"title":135,"path":136,"stem":137},"KLSTR.nano Specifications","\u002Fen\u002Finternal\u002Freview\u002Fklstr-nano\u002Fspecifications","en\u002F3.internal\u002F0.review\u002F4.klstr-nano\u002F3.specifications",{"title":139,"icon":140,"path":141,"stem":142,"children":143,"page":18},"Developer Guide","i-lucide-code","\u002Fen\u002Finternal\u002Freview\u002Fdeveloper","en\u002F3.internal\u002F0.review\u002F5.developer",[144,147,151,155,159,175],{"title":139,"path":145,"stem":146},"\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Foverview","en\u002F3.internal\u002F0.review\u002F5.developer\u002F0.overview",{"title":148,"path":149,"stem":150},"Choosing a Module","\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Fchoosing-a-module","en\u002F3.internal\u002F0.review\u002F5.developer\u002F1.choosing-a-module",{"title":152,"path":153,"stem":154},"Dual-Mode Operation","\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Fdual-mode","en\u002F3.internal\u002F0.review\u002F5.developer\u002F2.dual-mode",{"title":156,"path":157,"stem":158},"Fleet Management","\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Ffleet-management","en\u002F3.internal\u002F0.review\u002F5.developer\u002F3.fleet-management",{"title":103,"path":160,"stem":161,"children":162,"page":18},"\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Fklstr-one","en\u002F3.internal\u002F0.review\u002F5.developer\u002F4.klstr-one",[163,167,171],{"title":164,"path":165,"stem":166},"KLSTR.one: Hardware Integration","\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Fklstr-one\u002Fhardware-integration","en\u002F3.internal\u002F0.review\u002F5.developer\u002F4.klstr-one\u002F1.hardware-integration",{"title":168,"path":169,"stem":170},"KLSTR.one: Provisioning","\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Fklstr-one\u002Fprovisioning","en\u002F3.internal\u002F0.review\u002F5.developer\u002F4.klstr-one\u002F2.provisioning",{"title":172,"path":173,"stem":174},"KLSTR.one: RDM Protocol","\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Fklstr-one\u002Frdm-protocol","en\u002F3.internal\u002F0.review\u002F5.developer\u002F4.klstr-one\u002F3.rdm-protocol",{"title":121,"path":176,"stem":177,"children":178,"page":18},"\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Fklstr-nano","en\u002F3.internal\u002F0.review\u002F5.developer\u002F5.klstr-nano",[179,183],{"title":180,"path":181,"stem":182},"KLSTR.nano: Hardware Integration","\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Fklstr-nano\u002Fhardware-integration","en\u002F3.internal\u002F0.review\u002F5.developer\u002F5.klstr-nano\u002F1.hardware-integration",{"title":184,"path":185,"stem":186},"KLSTR.nano: Provisioning","\u002Fen\u002Finternal\u002Freview\u002Fdeveloper\u002Fklstr-nano\u002Fprovisioning","en\u002F3.internal\u002F0.review\u002F5.developer\u002F5.klstr-nano\u002F2.provisioning",{"title":188,"icon":189,"path":190,"stem":191,"children":192,"page":18},"FAQ","i-lucide-circle-help","\u002Fen\u002Finternal\u002Freview\u002Ffaq","en\u002F3.internal\u002F0.review\u002F6.faq",[193,197,201],{"title":194,"path":195,"stem":196},"General Questions","\u002Fen\u002Finternal\u002Freview\u002Ffaq\u002Fgeneral","en\u002F3.internal\u002F0.review\u002F6.faq\u002F1.general",{"title":198,"path":199,"stem":200},"Connectivity","\u002Fen\u002Finternal\u002Freview\u002Ffaq\u002Fconnectivity","en\u002F3.internal\u002F0.review\u002F6.faq\u002F2.connectivity",{"title":202,"path":203,"stem":204},"Troubleshooting","\u002Fen\u002Finternal\u002Freview\u002Ffaq\u002Ftroubleshooting","en\u002F3.internal\u002F0.review\u002F6.faq\u002F3.troubleshooting",{"title":206,"icon":207,"path":208,"stem":209,"children":210,"page":18},"Articles","i-lucide-newspaper","\u002Fen\u002Finternal\u002Freview\u002Farticles","en\u002F3.internal\u002F0.review\u002F7.articles",[211,215,219,223,227,231,235,239,243,247],{"title":212,"path":213,"stem":214},"Overview","\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Foverview","en\u002F3.internal\u002F0.review\u002F7.articles\u002F0.overview",{"title":216,"path":217,"stem":218},"KLSTR Integration Guide for Fixture Manufacturers","\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Fintegration-guide","en\u002F3.internal\u002F0.review\u002F7.articles\u002F1.integration-guide",{"title":220,"path":221,"stem":222},"RDM Protocol Reference for KLSTR.one","\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Frdm-protocol","en\u002F3.internal\u002F0.review\u002F7.articles\u002F2.rdm-protocol",{"title":224,"path":225,"stem":226},"KLSTR.one Provisioning Guide","\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Fklstr-one-provisioning","en\u002F3.internal\u002F0.review\u002F7.articles\u002F3.klstr-one-provisioning",{"title":228,"path":229,"stem":230},"KLSTR.one Integration Guide","\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Fklstr-one-plug-in-integration","en\u002F3.internal\u002F0.review\u002F7.articles\u002F4.klstr-one-plug-in-integration",{"title":232,"path":233,"stem":234},"KLSTR.nano Provisioning Guide","\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Fklstr-nano-provisioning","en\u002F3.internal\u002F0.review\u002F7.articles\u002F5.klstr-nano-provisioning",{"title":236,"path":237,"stem":238},"KLSTR.nano Plug-In Integration","\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Fklstr-nano-plug-in-integration","en\u002F3.internal\u002F0.review\u002F7.articles\u002F6.klstr-nano-plug-in-integration",{"title":240,"path":241,"stem":242},"Hello","\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Fhello","en\u002F3.internal\u002F0.review\u002F7.articles\u002F7.hello",{"title":244,"path":245,"stem":246},"TestNew file","\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Fiwantmd","en\u002F3.internal\u002F0.review\u002F7.articles\u002Fiwantmd",{"title":244,"path":248,"stem":249},"\u002Fen\u002Finternal\u002Freview\u002Farticles\u002Ftestnew","en\u002F3.internal\u002F0.review\u002F7.articles\u002Ftestnew",{"title":251,"icon":252,"path":253,"stem":254,"children":255,"page":18},"Admin","i-lucide-shield-check","\u002Fen\u002Finternal\u002Fadmin","en\u002F3.internal\u002F3.admin",[256,260],{"title":257,"path":258,"stem":259},"Admin Dashboard","\u002Fen\u002Finternal\u002Fadmin\u002Fdashboard","en\u002F3.internal\u002F3.admin\u002F1.dashboard",{"title":261,"path":262,"stem":263},"Internal Release Notes","\u002Fen\u002Finternal\u002Fadmin\u002Frelease-notes","en\u002F3.internal\u002F3.admin\u002F2.release-notes",{"title":265,"path":266,"stem":267,"children":268,"page":18},"Developer","\u002Fen\u002Finternal\u002Fdeveloper","en\u002F3.internal\u002F5.developer",[269],{"title":270,"path":271,"stem":272,"children":273,"page":18},"Klstr One","\u002Fen\u002Finternal\u002Fdeveloper\u002Fklstr-one","en\u002F3.internal\u002F5.developer\u002F4.klstr-one",[274],{"title":275,"path":276,"stem":277},"Internal (Partner Only)","\u002Fen\u002Finternal\u002Fdeveloper\u002Fklstr-one\u002Finternal","en\u002F3.internal\u002F5.developer\u002F4.klstr-one\u002F4.internal",{"title":279,"icon":280,"path":281,"stem":282,"children":283,"page":18},"Authoring Guide","i-lucide-pen-line","\u002Fen\u002Finternal\u002Fauthoring","en\u002F3.internal\u002F9.authoring",[284,288,293,297,302,307,312],{"title":285,"path":286,"stem":287,"icon":11},"Overview & MDC Basics","\u002Fen\u002Finternal\u002Fauthoring\u002Foverview","en\u002F3.internal\u002F9.authoring\u002F1.overview",{"title":289,"path":290,"stem":291,"icon":292},"Text & Prose","\u002Fen\u002Finternal\u002Fauthoring\u002Ftext-and-prose","en\u002F3.internal\u002F9.authoring\u002F2.text-and-prose","i-lucide-type",{"title":294,"path":295,"stem":296,"icon":140},"Code Blocks","\u002Fen\u002Finternal\u002Fauthoring\u002Fcode","en\u002F3.internal\u002F9.authoring\u002F3.code",{"title":298,"path":299,"stem":300,"icon":301},"Callouts & Cards","\u002Fen\u002Finternal\u002Fauthoring\u002Fcallouts-and-cards","en\u002F3.internal\u002F9.authoring\u002F4.callouts-and-cards","i-lucide-message-square-warning",{"title":303,"path":304,"stem":305,"icon":306},"Layout & Interactivity","\u002Fen\u002Finternal\u002Fauthoring\u002Flayout-and-interactivity","en\u002F3.internal\u002F9.authoring\u002F5.layout-and-interactivity","i-lucide-layout-panel-left",{"title":308,"path":309,"stem":310,"icon":311},"Visuals — Images, Icons & Diagrams","\u002Fen\u002Finternal\u002Fauthoring\u002Fvisuals","en\u002F3.internal\u002F9.authoring\u002F6.visuals","i-lucide-image",{"title":313,"path":314,"stem":315,"icon":316},"Design System & Configuration","\u002Fen\u002Finternal\u002Fauthoring\u002Fdesign-system","en\u002F3.internal\u002F9.authoring\u002F7.design-system","i-lucide-palette",{"id":318,"title":294,"body":319,"description":1319,"extension":341,"links":1320,"meta":1321,"navigation":1322,"path":295,"seo":1323,"stem":296,"__hash__":1324},"docs_en\u002Fen\u002F3.internal\u002F9.authoring\u002F3.code.md",{"type":320,"value":321,"toc":1308},"minimark",[322,331,336,409,412,445,449,452,490,494,501,573,617,621,627,741,824,828,837,841,849,925,960,964,971,1056,1113,1117,1126,1219,1267,1271,1285,1289,1304],[323,324,325,326,330],"p",{},"Code is a first-class citizen. Fenced blocks are syntax-highlighted with Shiki, themed for\nlight\u002Fdark, and get a ",[327,328,329],"strong",{},"copy button"," for free.",[332,333,335],"h2",{"id":334},"a-basic-fenced-block","A basic fenced block",[337,338,343],"pre",{"className":339,"code":340,"language":341,"meta":342,"style":342},"language-md shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","```ts\nconst universe = 1\ndevice.patch(universe, 0x01)\n```\n","md","",[344,345,346,359,378,403],"code",{"__ignoreMap":342},[347,348,351,355],"span",{"class":349,"line":350},"line",1,[347,352,354],{"class":353},"sfazB","```",[347,356,358],{"class":357},"sJsPd","ts\n",[347,360,362,366,370,374],{"class":349,"line":361},2,[347,363,365],{"class":364},"spNyl","const",[347,367,369],{"class":368},"sTEyZ"," universe ",[347,371,373],{"class":372},"sMK4o","=",[347,375,377],{"class":376},"sbssI"," 1\n",[347,379,381,384,387,391,394,397,400],{"class":349,"line":380},3,[347,382,383],{"class":368},"device",[347,385,386],{"class":372},".",[347,388,390],{"class":389},"s2Zo4","patch",[347,392,393],{"class":368},"(universe",[347,395,396],{"class":372},",",[347,398,399],{"class":376}," 0x01",[347,401,402],{"class":368},")\n",[347,404,406],{"class":349,"line":405},4,[347,407,408],{"class":353},"```\n",[323,410,411],{},"renders as:",[337,413,417],{"className":414,"code":415,"language":416,"meta":342,"style":342},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","const universe = 1\ndevice.patch(universe, 0x01)\n","ts",[344,418,419,429],{"__ignoreMap":342},[347,420,421,423,425,427],{"class":349,"line":350},[347,422,365],{"class":364},[347,424,369],{"class":368},[347,426,373],{"class":372},[347,428,377],{"class":376},[347,430,431,433,435,437,439,441,443],{"class":349,"line":361},[347,432,383],{"class":368},[347,434,386],{"class":372},[347,436,390],{"class":389},[347,438,393],{"class":368},[347,440,396],{"class":372},[347,442,399],{"class":376},[347,444,402],{"class":368},[332,446,448],{"id":447},"available-languages","Available languages",[323,450,451],{},"Highlighting is enabled for this set — stick to it or the block falls back to plain text:",[323,453,454,458,459,458,462,458,465,458,468,458,470,458,473,458,476,458,479,458,482,458,485,458,487],{},[455,456,457],"badge",{},"bash"," ",[455,460,461],{},"diff",[455,463,464],{},"json",[455,466,467],{},"js",[455,469,416],{},[455,471,472],{},"html",[455,474,475],{},"css",[455,477,478],{},"vue",[455,480,481],{},"shell",[455,483,484],{},"mdc",[455,486,341],{},[455,488,489],{},"yaml",[332,491,493],{"id":492},"filename-label","Filename label",[323,495,496,497,500],{},"Add ",[344,498,499],{},"[filename]"," after the language for a titled block (the icon is inferred from the\nextension):",[337,502,504],{"className":339,"code":503,"language":341,"meta":342,"style":342},"```ts [server\u002Futils\u002Fsupabase.ts]\nexport function resolveRole(claims) {\n  return claims.app_role ?? 'user'\n}\n```\n",[344,505,506,513,538,563,568],{"__ignoreMap":342},[347,507,508,510],{"class":349,"line":350},[347,509,354],{"class":353},[347,511,512],{"class":357},"ts [server\u002Futils\u002Fsupabase.ts]\n",[347,514,515,519,522,525,528,532,535],{"class":349,"line":361},[347,516,518],{"class":517},"s7zQu","export",[347,520,521],{"class":364}," function",[347,523,524],{"class":389}," resolveRole",[347,526,527],{"class":372},"(",[347,529,531],{"class":530},"sHdIc","claims",[347,533,534],{"class":372},")",[347,536,537],{"class":372}," {\n",[347,539,540,543,546,548,551,554,557,560],{"class":349,"line":380},[347,541,542],{"class":517},"  return",[347,544,545],{"class":368}," claims",[347,547,386],{"class":372},[347,549,550],{"class":368},"app_role",[347,552,553],{"class":372}," ??",[347,555,556],{"class":372}," '",[347,558,559],{"class":353},"user",[347,561,562],{"class":372},"'\n",[347,564,565],{"class":349,"line":405},[347,566,567],{"class":372},"}\n",[347,569,571],{"class":349,"line":570},5,[347,572,408],{"class":353},[337,574,577],{"className":414,"code":575,"filename":576,"language":416,"meta":342,"style":342},"export function resolveRole(claims) {\n  return claims.app_role ?? 'user'\n}\n","server\u002Futils\u002Fsupabase.ts",[344,578,579,595,613],{"__ignoreMap":342},[347,580,581,583,585,587,589,591,593],{"class":349,"line":350},[347,582,518],{"class":517},[347,584,521],{"class":364},[347,586,524],{"class":389},[347,588,527],{"class":372},[347,590,531],{"class":530},[347,592,534],{"class":372},[347,594,537],{"class":372},[347,596,597,599,601,603,605,607,609,611],{"class":349,"line":361},[347,598,542],{"class":517},[347,600,545],{"class":368},[347,602,386],{"class":372},[347,604,550],{"class":368},[347,606,553],{"class":372},[347,608,556],{"class":372},[347,610,559],{"class":353},[347,612,562],{"class":372},[347,614,615],{"class":349,"line":380},[347,616,567],{"class":372},[332,618,620],{"id":619},"highlight-specific-lines","Highlight specific lines",[323,622,496,623,626],{},[344,624,625],{},"{lines}"," — single lines and ranges, comma-separated:",[337,628,630],{"className":339,"code":629,"language":341,"meta":342,"style":342},"```ts [auth.ts]{2,4-5}\nfunction gate(role) {\n  if (role !== 'admin') {      \u002F\u002F highlighted\n    return allow()\n  }\n  return redirect('\u002Flogin')    \u002F\u002F highlighted\n}                              \u002F\u002F highlighted\n```\n",[344,631,632,639,656,688,699,704,727,736],{"__ignoreMap":342},[347,633,634,636],{"class":349,"line":350},[347,635,354],{"class":353},[347,637,638],{"class":357},"ts [auth.ts]{2,4-5}\n",[347,640,641,644,647,649,652,654],{"class":349,"line":361},[347,642,643],{"class":364},"function",[347,645,646],{"class":389}," gate",[347,648,527],{"class":372},[347,650,651],{"class":530},"role",[347,653,534],{"class":372},[347,655,537],{"class":372},[347,657,658,661,665,667,670,672,675,678,681,684],{"class":349,"line":380},[347,659,660],{"class":517},"  if",[347,662,664],{"class":663},"swJcz"," (",[347,666,651],{"class":368},[347,668,669],{"class":372}," !==",[347,671,556],{"class":372},[347,673,674],{"class":353},"admin",[347,676,677],{"class":372},"'",[347,679,680],{"class":663},") ",[347,682,683],{"class":372},"{",[347,685,687],{"class":686},"sHwdD","      \u002F\u002F highlighted\n",[347,689,690,693,696],{"class":349,"line":405},[347,691,692],{"class":517},"    return",[347,694,695],{"class":389}," allow",[347,697,698],{"class":663},"()\n",[347,700,701],{"class":349,"line":570},[347,702,703],{"class":372},"  }\n",[347,705,707,709,712,714,716,719,721,724],{"class":349,"line":706},6,[347,708,542],{"class":517},[347,710,711],{"class":389}," redirect",[347,713,527],{"class":663},[347,715,677],{"class":372},[347,717,718],{"class":353},"\u002Flogin",[347,720,677],{"class":372},[347,722,723],{"class":663},")    ",[347,725,726],{"class":686},"\u002F\u002F highlighted\n",[347,728,730,733],{"class":349,"line":729},7,[347,731,732],{"class":372},"}",[347,734,735],{"class":686},"                              \u002F\u002F highlighted\n",[347,737,739],{"class":349,"line":738},8,[347,740,408],{"class":353},[337,742,746],{"className":414,"code":743,"filename":744,"highlights":745,"language":416,"meta":342,"style":342},"function gate(role) {\n  if (role !== 'admin') {      \u002F\u002F highlighted\n    return allow()\n  }\n  return redirect('\u002Flogin')    \u002F\u002F highlighted\n}                              \u002F\u002F highlighted\n","auth.ts",[361,405,570],[344,747,748,762,786,794,799,818],{"__ignoreMap":342},[347,749,750,752,754,756,758,760],{"class":349,"line":350},[347,751,643],{"class":364},[347,753,646],{"class":389},[347,755,527],{"class":372},[347,757,651],{"class":530},[347,759,534],{"class":372},[347,761,537],{"class":372},[347,763,766,768,770,772,774,776,778,780,782,784],{"class":764,"line":361},[349,765],"highlight",[347,767,660],{"class":517},[347,769,664],{"class":663},[347,771,651],{"class":368},[347,773,669],{"class":372},[347,775,556],{"class":372},[347,777,674],{"class":353},[347,779,677],{"class":372},[347,781,680],{"class":663},[347,783,683],{"class":372},[347,785,687],{"class":686},[347,787,788,790,792],{"class":349,"line":380},[347,789,692],{"class":517},[347,791,695],{"class":389},[347,793,698],{"class":663},[347,795,797],{"class":796,"line":405},[349,765],[347,798,703],{"class":372},[347,800,802,804,806,808,810,812,814,816],{"class":801,"line":570},[349,765],[347,803,542],{"class":517},[347,805,711],{"class":389},[347,807,527],{"class":663},[347,809,677],{"class":372},[347,811,718],{"class":353},[347,813,677],{"class":372},[347,815,723],{"class":663},[347,817,726],{"class":686},[347,819,820,822],{"class":349,"line":706},[347,821,732],{"class":372},[347,823,735],{"class":686},[332,825,827],{"id":826},"inline-code-with-highlighting","Inline code with highlighting",[323,829,830,833,834,386],{},[344,831,832],{},":code[const x = 1]{lang=\"ts\"}"," renders highlighted inline → ",[344,835,836],{"lang":416},"const x = 1",[332,838,840],{"id":839},"tabbed-code-groups","Tabbed code groups",[323,842,843,846,847,386],{},[344,844,845],{},"::code-group"," turns several blocks into tabs — perfect for npm\u002Fpnpm or multi-language\nexamples. The tab label comes from each block's ",[344,848,499],{},[337,850,853],{"className":851,"code":852,"language":484,"meta":342,"style":342},"language-mdc shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","::code-group\n```bash [npm]\nnpm install\n```\n```bash [pnpm]\npnpm install\n```\n```bash [yarn]\nyarn\n```\n::\n",[344,854,855,863,870,879,883,890,897,901,908,914,919],{"__ignoreMap":342},[347,856,857,860],{"class":349,"line":350},[347,858,859],{"class":372},"::",[347,861,862],{"class":663},"code-group\n",[347,864,865,867],{"class":349,"line":361},[347,866,354],{"class":353},[347,868,869],{"class":357},"bash [npm]\n",[347,871,872,876],{"class":349,"line":380},[347,873,875],{"class":874},"sBMFI","npm",[347,877,878],{"class":353}," install\n",[347,880,881],{"class":349,"line":405},[347,882,408],{"class":353},[347,884,885,887],{"class":349,"line":570},[347,886,354],{"class":353},[347,888,889],{"class":357},"bash [pnpm]\n",[347,891,892,895],{"class":349,"line":706},[347,893,894],{"class":874},"pnpm",[347,896,878],{"class":353},[347,898,899],{"class":349,"line":729},[347,900,408],{"class":353},[347,902,903,905],{"class":349,"line":738},[347,904,354],{"class":353},[347,906,907],{"class":357},"bash [yarn]\n",[347,909,911],{"class":349,"line":910},9,[347,912,913],{"class":874},"yarn\n",[347,915,917],{"class":349,"line":916},10,[347,918,408],{"class":353},[347,920,922],{"class":349,"line":921},11,[347,923,924],{"class":372},"::\n",[926,927,928,940,951],"code-group",{},[337,929,932],{"className":930,"code":931,"filename":875,"language":457,"meta":342,"style":342},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install\n",[344,933,934],{"__ignoreMap":342},[347,935,936,938],{"class":349,"line":350},[347,937,875],{"class":874},[347,939,878],{"class":353},[337,941,943],{"className":930,"code":942,"filename":894,"language":457,"meta":342,"style":342},"pnpm install\n",[344,944,945],{"__ignoreMap":342},[347,946,947,949],{"class":349,"line":350},[347,948,894],{"class":874},[347,950,878],{"class":353},[337,952,954],{"className":930,"code":913,"filename":953,"language":457,"meta":342,"style":342},"yarn",[344,955,956],{"__ignoreMap":342},[347,957,958],{"class":349,"line":350},[347,959,913],{"class":874},[332,961,963],{"id":962},"collapsible-code","Collapsible code",[323,965,966,967,970],{},"Long listings can start collapsed with ",[344,968,969],{},"::code-collapse",":",[337,972,974],{"className":851,"code":973,"language":484,"meta":342,"style":342},"::code-collapse\n```ts [nuxt.config.ts]\nexport default defineNuxtConfig({\n  \u002F\u002F …imagine 200 lines of config…\n  modules: ['docus', 'nuxt-studio'],\n})\n```\n::\n",[344,975,976,983,990,1005,1010,1042,1048,1052],{"__ignoreMap":342},[347,977,978,980],{"class":349,"line":350},[347,979,859],{"class":372},[347,981,982],{"class":663},"code-collapse\n",[347,984,985,987],{"class":349,"line":361},[347,986,354],{"class":353},[347,988,989],{"class":357},"ts [nuxt.config.ts]\n",[347,991,992,994,997,1000,1002],{"class":349,"line":380},[347,993,518],{"class":517},[347,995,996],{"class":517}," default",[347,998,999],{"class":389}," defineNuxtConfig",[347,1001,527],{"class":368},[347,1003,1004],{"class":372},"{\n",[347,1006,1007],{"class":349,"line":405},[347,1008,1009],{"class":686},"  \u002F\u002F …imagine 200 lines of config…\n",[347,1011,1012,1015,1017,1020,1022,1025,1027,1029,1031,1034,1036,1039],{"class":349,"line":570},[347,1013,1014],{"class":663},"  modules",[347,1016,970],{"class":372},[347,1018,1019],{"class":368}," [",[347,1021,677],{"class":372},[347,1023,1024],{"class":353},"docus",[347,1026,677],{"class":372},[347,1028,396],{"class":372},[347,1030,556],{"class":372},[347,1032,1033],{"class":353},"nuxt-studio",[347,1035,677],{"class":372},[347,1037,1038],{"class":368},"]",[347,1040,1041],{"class":372},",\n",[347,1043,1044,1046],{"class":349,"line":706},[347,1045,732],{"class":372},[347,1047,402],{"class":368},[347,1049,1050],{"class":349,"line":729},[347,1051,408],{"class":353},[347,1053,1054],{"class":349,"line":738},[347,1055,924],{"class":372},[1057,1058,1059],"code-collapse",{},[337,1060,1063],{"className":414,"code":1061,"filename":1062,"language":416,"meta":342,"style":342},"export default defineNuxtConfig({\n  \u002F\u002F …imagine 200 lines of config…\n  modules: ['docus', 'nuxt-studio'],\n})\n","nuxt.config.ts",[344,1064,1065,1077,1081,1107],{"__ignoreMap":342},[347,1066,1067,1069,1071,1073,1075],{"class":349,"line":350},[347,1068,518],{"class":517},[347,1070,996],{"class":517},[347,1072,999],{"class":389},[347,1074,527],{"class":368},[347,1076,1004],{"class":372},[347,1078,1079],{"class":349,"line":361},[347,1080,1009],{"class":686},[347,1082,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105],{"class":349,"line":380},[347,1084,1014],{"class":663},[347,1086,970],{"class":372},[347,1088,1019],{"class":368},[347,1090,677],{"class":372},[347,1092,1024],{"class":353},[347,1094,677],{"class":372},[347,1096,396],{"class":372},[347,1098,556],{"class":372},[347,1100,1033],{"class":353},[347,1102,677],{"class":372},[347,1104,1038],{"class":368},[347,1106,1041],{"class":372},[347,1108,1109,1111],{"class":349,"line":405},[347,1110,732],{"class":372},[347,1112,402],{"class":368},[332,1114,1116],{"id":1115},"file-trees","File trees",[323,1118,1119,1122,1123,970],{},[344,1120,1121],{},"::code-tree"," shows a multi-file block as a navigable file explorer — give each block a\n",[344,1124,1125],{},"[path]",[337,1127,1129],{"className":851,"code":1128,"language":484,"meta":342,"style":342},"::code-tree{default-value=\"content.config.ts\"}\n```ts [content.config.ts]\nexport default defineContentConfig({ \u002F* … *\u002F })\n```\n```ts [nuxt.config.ts]\nexport default defineNuxtConfig({ \u002F* … *\u002F })\n```\n::\n",[344,1130,1131,1155,1162,1183,1187,1193,1211,1215],{"__ignoreMap":342},[347,1132,1133,1135,1138,1140,1143,1145,1148,1151,1153],{"class":349,"line":350},[347,1134,859],{"class":372},[347,1136,1137],{"class":663},"code-tree",[347,1139,683],{"class":372},[347,1141,1142],{"class":364},"default-value",[347,1144,373],{"class":372},[347,1146,1147],{"class":372},"\"",[347,1149,1150],{"class":353},"content.config.ts",[347,1152,1147],{"class":372},[347,1154,567],{"class":372},[347,1156,1157,1159],{"class":349,"line":361},[347,1158,354],{"class":353},[347,1160,1161],{"class":357},"ts [content.config.ts]\n",[347,1163,1164,1166,1168,1171,1173,1175,1178,1181],{"class":349,"line":380},[347,1165,518],{"class":517},[347,1167,996],{"class":517},[347,1169,1170],{"class":389}," defineContentConfig",[347,1172,527],{"class":368},[347,1174,683],{"class":372},[347,1176,1177],{"class":686}," \u002F* … *\u002F",[347,1179,1180],{"class":372}," }",[347,1182,402],{"class":368},[347,1184,1185],{"class":349,"line":405},[347,1186,408],{"class":353},[347,1188,1189,1191],{"class":349,"line":570},[347,1190,354],{"class":353},[347,1192,989],{"class":357},[347,1194,1195,1197,1199,1201,1203,1205,1207,1209],{"class":349,"line":706},[347,1196,518],{"class":517},[347,1198,996],{"class":517},[347,1200,999],{"class":389},[347,1202,527],{"class":368},[347,1204,683],{"class":372},[347,1206,1177],{"class":686},[347,1208,1180],{"class":372},[347,1210,402],{"class":368},[347,1212,1213],{"class":349,"line":729},[347,1214,408],{"class":353},[347,1216,1217],{"class":349,"line":738},[347,1218,924],{"class":372},[1137,1220,1221,1244],{"default-value":1150},[337,1222,1224],{"className":414,"code":1223,"filename":1150,"language":416,"meta":342,"style":342},"export default defineContentConfig({ \u002F* … *\u002F })\n",[344,1225,1226],{"__ignoreMap":342},[347,1227,1228,1230,1232,1234,1236,1238,1240,1242],{"class":349,"line":350},[347,1229,518],{"class":517},[347,1231,996],{"class":517},[347,1233,1170],{"class":389},[347,1235,527],{"class":368},[347,1237,683],{"class":372},[347,1239,1177],{"class":686},[347,1241,1180],{"class":372},[347,1243,402],{"class":368},[337,1245,1247],{"className":414,"code":1246,"filename":1062,"language":416,"meta":342,"style":342},"export default defineNuxtConfig({ \u002F* … *\u002F })\n",[344,1248,1249],{"__ignoreMap":342},[347,1250,1251,1253,1255,1257,1259,1261,1263,1265],{"class":349,"line":350},[347,1252,518],{"class":517},[347,1254,996],{"class":517},[347,1256,999],{"class":389},[347,1258,527],{"class":368},[347,1260,683],{"class":372},[347,1262,1177],{"class":686},[347,1264,1180],{"class":372},[347,1266,402],{"class":368},[332,1268,1270],{"id":1269},"ai-prompt-block","AI prompt block",[323,1272,1273,1276,1277,1280,1281,1284],{},[344,1274,1275],{},"::prompt"," presents a ready-to-copy ",[327,1278,1279],{},"AI prompt"," with copy \u002F \"open in editor\" actions —\nhandy for \"ask the assistant\" call-outs. The visible label is the ",[344,1282,1283],{},"description","; the\ndefault slot is the text that actually gets copied.",[1286,1287,1288],"prompt",{"description":1288,"icon":11},"Summarise this page into three release-note bullets.",[1290,1291,1292,1293,1296,1297,1300,1301,1303],"tip",{},"To show a ",[327,1294,1295],{},"terminal command"," instead, use a fenced ",[344,1298,1299],{},"```bash"," block (with copy button) or\na ",[344,1302,845],{}," — see above.",[1305,1306,1307],"style",{},"html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sJsPd, html code.shiki .sJsPd{--shiki-light:#90A4AE90;--shiki-default:#EEFFFF90;--shiki-dark:#BABED890}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":342,"searchDepth":361,"depth":361,"links":1309},[1310,1311,1312,1313,1314,1315,1316,1317,1318],{"id":334,"depth":361,"text":335},{"id":447,"depth":361,"text":448},{"id":492,"depth":361,"text":493},{"id":619,"depth":361,"text":620},{"id":826,"depth":361,"text":827},{"id":839,"depth":361,"text":840},{"id":962,"depth":361,"text":963},{"id":1115,"depth":361,"text":1116},{"id":1269,"depth":361,"text":1270},"Fenced code with filenames, line highlighting and copy buttons, plus tabbed groups, collapsible blocks, file trees and live previews.",null,{},{"icon":140},{"title":294,"description":1319},"OtQy9oIT2-CaKzMo8g0RCzwQTI-9y5A3CzCffL5VbWY",[1326,1328],{"title":289,"path":290,"stem":291,"description":1327,"icon":292,"children":-1},"Headings, emphasis, lists, tables, links, inline code, keyboard keys and badges — the everyday Markdown, styled.",{"title":298,"path":299,"stem":300,"description":1329,"icon":301,"children":-1},"Draw the eye with note\u002Ftip\u002Fwarning\u002Fcaution callouts, link cards and card grids, and document APIs with fields.",1787149441771]