[{"data":1,"prerenderedAt":728},["ShallowReactive",2],{"navigation_docs":3,"-themes-theme-and-optional-modules":217,"-themes-theme-and-optional-modules-surround":723},[4,25,41,84,126,165,201],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":24},"Overview","i-lucide-house","\u002Fgetting-started","1.getting-started",[10,14,19],{"title":11,"path":12,"stem":13,"icon":6},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F3.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Project structure","\u002Fgetting-started\u002Fproject-structure","1.getting-started\u002F4.project-structure","i-lucide-folder-tree",false,{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":24},"Architecture","i-lucide-cpu","\u002Farchitecture","3.architecture",[31,36],{"title":32,"path":33,"stem":34,"icon":35},"Core, themes, and apps","\u002Farchitecture\u002Foverview","3.architecture\u002F1.overview","i-lucide-layers",{"title":37,"path":38,"stem":39,"icon":40},"Kits and extension modules","\u002Farchitecture\u002Fkits","3.architecture\u002F3.kits","i-lucide-puzzle",{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":24},"Apps","i-lucide-app-window","\u002Fapps","4.apps",[47,51,55,60,64,69,74,79],{"title":5,"path":48,"stem":49,"icon":50},"\u002Fapps\u002Foverview","4.apps\u002F1.overview","i-lucide-info",{"title":52,"path":53,"stem":54,"icon":23},"Package layout","\u002Fapps\u002Fpackage-layout","4.apps\u002F2.package-layout",{"title":56,"path":57,"stem":58,"icon":59},"Create from scratch","\u002Fapps\u002Fcreate-from-scratch","4.apps\u002F3.create-from-scratch","i-lucide-list-checks",{"title":61,"path":62,"stem":63,"icon":40},"Module and runtime","\u002Fapps\u002Fmodule-and-runtime","4.apps\u002F4.module-and-runtime",{"title":65,"path":66,"stem":67,"icon":68},"Plugins","\u002Fapps\u002Fplugins","4.apps\u002F5.plugins","i-lucide-plug",{"title":70,"path":71,"stem":72,"icon":73},"Windows and commands","\u002Fapps\u002Fwindows-and-commands","4.apps\u002F6.windows-and-commands","i-lucide-layout-panel-top",{"title":75,"path":76,"stem":77,"icon":78},"Playground","\u002Fapps\u002Fplayground","4.apps\u002F7.playground","i-lucide-flask-conical",{"title":80,"path":81,"stem":82,"icon":83},"Build and publish","\u002Fapps\u002Fbuild-and-publish","4.apps\u002F8.build-and-publish","i-lucide-package",{"title":85,"icon":86,"path":87,"stem":88,"children":89,"page":24},"Themes","i-lucide-palette","\u002Fthemes","5.themes",[90,93,98,102,106,111,116,121],{"title":5,"path":91,"stem":92,"icon":50},"\u002Fthemes\u002Foverview","5.themes\u002F1.overview",{"title":94,"path":95,"stem":96,"icon":97},"Theme anatomy","\u002Fthemes\u002Ftheme-anatomy","5.themes\u002F2.theme-anatomy","i-lucide-component",{"title":99,"path":100,"stem":101},"Create From Scratch","\u002Fthemes\u002Fcreate-from-scratch","5.themes\u002F3.create-from-scratch",{"title":103,"path":104,"stem":105,"icon":68},"Theme plugins","\u002Fthemes\u002Fplugins","5.themes\u002F4.plugins",{"title":107,"path":108,"stem":109,"icon":110},"Styling and Tailwind","\u002Fthemes\u002Fstyling-and-tailwind","5.themes\u002F5.styling-and-tailwind","i-lucide-brush",{"title":112,"path":113,"stem":114,"icon":115},"Pages and boot flow","\u002Fthemes\u002Fpages-and-boot-flow","5.themes\u002F6.pages-and-boot-flow","i-lucide-power",{"title":117,"path":118,"stem":119,"icon":120},"Theme and optional modules","\u002Fthemes\u002Ftheme-and-optional-modules","5.themes\u002F7.theme-and-optional-modules","i-lucide-link",{"title":122,"path":123,"stem":124,"icon":125},"Window chrome and nav buttons","\u002Fthemes\u002Fwindow-chrome-and-nav-buttons","5.themes\u002F8.window-chrome-and-nav-buttons","i-lucide-square-mouse-pointer",{"title":127,"icon":128,"path":129,"stem":130,"children":131,"page":24},"Client & CLI","i-lucide-terminal","\u002Fsetup","6.setup",[132,136,141,146,151,156,161],{"title":133,"path":134,"stem":135,"icon":128},"desktop CLI","\u002Fsetup\u002Fdesktop-cli","6.setup\u002F1.desktop-cli",{"title":137,"path":138,"stem":139,"icon":140},"Package linking","\u002Fsetup\u002Fpackage-linking","6.setup\u002F2.package-linking","i-lucide-link-2",{"title":142,"path":143,"stem":144,"icon":145},"Monorepo and workspace","\u002Fsetup\u002Fmonorepo-workspace","6.setup\u002F3.monorepo-workspace","i-lucide-blocks",{"title":147,"path":148,"stem":149,"icon":150},"desktop.config.ts","\u002Fsetup\u002Fdesktop-config","6.setup\u002F4.desktop-config","i-lucide-file-code",{"title":152,"path":153,"stem":154,"icon":155},"Migrate themes, apps, and modules (3.3.2)","\u002Fsetup\u002Fmigrate-packages-3.3.2","6.setup\u002F5.migrate-packages-3.3.2","i-lucide-arrow-right-left",{"title":157,"path":158,"stem":159,"icon":160},"Migrate themes, apps, and modules (3.4)","\u002Fsetup\u002Fmigrate-packages-3.4","6.setup\u002F6.migrate-packages-3.4","i-lucide-arrow-up-right",{"title":162,"path":163,"stem":164},"Troubleshooting","\u002Fsetup\u002Ftroubleshooting","6.setup\u002F7.troubleshooting",{"title":166,"icon":167,"path":168,"stem":169,"children":170,"page":24},"Internals","i-lucide-book-open","\u002Finternals","7.internals",[171,176,181,186,191,196],{"title":172,"path":173,"stem":174,"icon":175},"Boot sequence","\u002Finternals\u002Fboot-sequence","7.internals\u002F1.boot-sequence","i-lucide-list-ordered",{"title":177,"path":178,"stem":179,"icon":180},"Stores and composables","\u002Finternals\u002Fstores-and-composables","7.internals\u002F2.stores-and-composables","i-lucide-database",{"title":182,"path":183,"stem":184,"icon":185},"Core components","\u002Finternals\u002Fcore-components","7.internals\u002F3.core-components","i-lucide-layout-grid",{"title":187,"path":188,"stem":189,"icon":190},"Dialog provider","\u002Finternals\u002Fdialog-provider","7.internals\u002F4.dialog-provider","i-lucide-message-square",{"title":192,"path":193,"stem":194,"icon":195},"Kernel contract","\u002Finternals\u002Fkernel-contract","7.internals\u002F5.kernel-contract","i-lucide-shield-check",{"title":197,"path":198,"stem":199,"icon":200},"Shell identity","\u002Finternals\u002Fshell-identity","7.internals\u002F6.shell-identity","i-lucide-user",{"title":202,"icon":203,"path":204,"stem":205,"children":206,"page":24},"Reference","i-lucide-book-marked","\u002Freference","8.reference",[207,212],{"title":208,"path":209,"stem":210,"icon":211},"Glossary","\u002Freference\u002Fglossary","8.reference\u002F1.glossary","i-lucide-book-a",{"title":213,"path":214,"stem":215,"icon":216},"Ecosystem","\u002Freference\u002Fuseful-links","8.reference\u002F2.useful-links","i-lucide-external-link",{"id":218,"title":117,"body":219,"description":716,"extension":717,"links":718,"meta":719,"navigation":720,"path":118,"seo":721,"stem":119,"__hash__":722},"docs\u002F5.themes\u002F7.theme-and-optional-modules.md",{"type":220,"value":221,"toc":708},"minimark",[222,243,248,295,323,341,345,351,500,503,522,529,606,627,644,648,651,686,690,704],[223,224,225,226,230,231,237,238,242],"p",{},"Themes stay ",[227,228,229],"strong",{},"installable without"," a virtual filesystem. Heavy features gate on whether the user added ",[227,232,233],{},[234,235,236],"code",{},"@owdproject\u002Fmodule-fs"," to ",[227,239,240],{},[234,241,147],{},".",[244,245,247],"h2",{"id":246},"layering","Layering",[249,250,255],"pre",{"className":251,"code":252,"language":253,"meta":254,"style":254},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowchart LR\n  modFs[module-fs ZenFS & headless explorer]\n  kitPV[kit-primevue components & dialogs]\n  theme[Theme module]\n  modFs --> kitPV\n  kitPV --> theme\n","mermaid","",[234,256,257,265,271,277,283,289],{"__ignoreMap":254},[258,259,262],"span",{"class":260,"line":261},"line",1,[258,263,264],{},"flowchart LR\n",[258,266,268],{"class":260,"line":267},2,[258,269,270],{},"  modFs[module-fs ZenFS & headless explorer]\n",[258,272,274],{"class":260,"line":273},3,[258,275,276],{},"  kitPV[kit-primevue components & dialogs]\n",[258,278,280],{"class":260,"line":279},4,[258,281,282],{},"  theme[Theme module]\n",[258,284,286],{"class":260,"line":285},5,[258,287,288],{},"  modFs --> kitPV\n",[258,290,292],{"class":260,"line":291},6,[258,293,294],{},"  kitPV --> theme\n",[296,297,298,315],"ul",{},[299,300,301,306,307,310,311,314],"li",{},[227,302,303],{},[234,304,305],{},"module-fs"," — ZenFS virtual filesystem runtime and headless explorer state\u002Fstores (",[234,308,309],{},"useExplorerStore",", ",[234,312,313],{},"useExplorerWindow",").",[299,316,317,322],{},[227,318,319],{},[234,320,321],{},"kit-primevue"," — Nuxt PrimeVue configuration, dialog provider bridge, and UI explorer components (Workspace, Toolbar, FileEntry).",[223,324,325,326,329,330,333,334,338,339,242],{},"Core does ",[227,327,328],{},"not"," include explorer UI — do not import ",[234,331,332],{},"useDesktopExplorerStore"," from core; use ",[227,335,336],{},[234,337,309],{}," from ",[234,340,236],{},[244,342,344],{"id":343},"conditional-pattern","Conditional pattern",[223,346,347,348,350],{},"Themes can conditionally register filesystem-dependent components or plugins based on whether ",[234,349,236],{}," is active:",[249,352,356],{"className":353,"code":354,"language":355,"meta":254,"style":254},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","if (nuxt.options.modules.includes('@owdproject\u002Fmodule-fs')) {\n  \u002F\u002F Add explorer-specific theme components or custom plugins\n  addPlugin({ src: resolve('.\u002Fruntime\u002Fapps\u002Fexplorer\u002Fplugin.ts'), mode: 'client' })\n  addComponentsDir({ path: resolve('.\u002Fruntime\u002Fapps\u002Fexplorer\u002Fcomponents') })\n}\n","ts",[234,357,358,402,408,462,495],{"__ignoreMap":254},[258,359,360,364,368,371,374,376,379,381,385,388,391,394,396,399],{"class":260,"line":261},[258,361,363],{"class":362},"s7zQu","if",[258,365,367],{"class":366},"sTEyZ"," (nuxt",[258,369,242],{"class":370},"sMK4o",[258,372,373],{"class":366},"options",[258,375,242],{"class":370},[258,377,378],{"class":366},"modules",[258,380,242],{"class":370},[258,382,384],{"class":383},"s2Zo4","includes",[258,386,387],{"class":366},"(",[258,389,390],{"class":370},"'",[258,392,236],{"class":393},"sfazB",[258,395,390],{"class":370},[258,397,398],{"class":366},")) ",[258,400,401],{"class":370},"{\n",[258,403,404],{"class":260,"line":267},[258,405,407],{"class":406},"sHwdD","  \u002F\u002F Add explorer-specific theme components or custom plugins\n",[258,409,410,413,416,419,422,425,428,430,432,435,437,440,443,446,448,451,454,456,459],{"class":260,"line":273},[258,411,412],{"class":383},"  addPlugin",[258,414,387],{"class":415},"swJcz",[258,417,418],{"class":370},"{",[258,420,421],{"class":415}," src",[258,423,424],{"class":370},":",[258,426,427],{"class":383}," resolve",[258,429,387],{"class":415},[258,431,390],{"class":370},[258,433,434],{"class":393},".\u002Fruntime\u002Fapps\u002Fexplorer\u002Fplugin.ts",[258,436,390],{"class":370},[258,438,439],{"class":415},")",[258,441,442],{"class":370},",",[258,444,445],{"class":415}," mode",[258,447,424],{"class":370},[258,449,450],{"class":370}," '",[258,452,453],{"class":393},"client",[258,455,390],{"class":370},[258,457,458],{"class":370}," }",[258,460,461],{"class":415},")\n",[258,463,464,467,469,471,474,476,478,480,482,485,487,490,493],{"class":260,"line":279},[258,465,466],{"class":383},"  addComponentsDir",[258,468,387],{"class":415},[258,470,418],{"class":370},[258,472,473],{"class":415}," path",[258,475,424],{"class":370},[258,477,427],{"class":383},[258,479,387],{"class":415},[258,481,390],{"class":370},[258,483,484],{"class":393},".\u002Fruntime\u002Fapps\u002Fexplorer\u002Fcomponents",[258,486,390],{"class":370},[258,488,489],{"class":415},") ",[258,491,492],{"class":370},"}",[258,494,461],{"class":415},[258,496,497],{"class":260,"line":285},[258,498,499],{"class":370},"}\n",[223,501,502],{},"Benefits:",[296,504,505,511],{},[299,506,507,510],{},[227,508,509],{},"Lighter"," desktop when the user skips filesystem modules.",[299,512,513,516,517,521],{},[227,514,515],{},"Self-contained"," theme demos when the playground lists ",[227,518,519],{},[234,520,305],{}," in config.",[244,523,525,526],{"id":524},"dependencies-in-packagejson","Dependencies in ",[234,527,528],{},"package.json",[530,531,532,545],"table",{},[533,534,535],"thead",{},[536,537,538,542],"tr",{},[539,540,541],"th",{},"Style",[539,543,544],{},"When",[546,547,548,567,585],"tbody",{},[536,549,550,564],{},[551,552,553,558,559],"td",{},[227,554,555],{},[234,556,557],{},"@owdproject\u002Fkit-primevue",": npm ",[227,560,561],{},[234,562,563],{},"^3.4.0",[551,565,566],{},"Standalone theme repo \u002F publish",[536,568,569,577],{},[551,570,571,576],{},[227,572,573],{},[234,574,575],{},"workspace:*"," for kits",[551,578,579,580],{},"Theme cloned under client ",[227,581,582],{},[234,583,584],{},"themes\u002F*",[536,586,587,598],{},[551,588,589],{},[227,590,591,592,594,595],{},"No ",[234,593,305],{}," in theme ",[234,596,597],{},"dependencies",[551,599,600,601,605],{},"Prefer playground + user desktop to add ",[227,602,603],{},[234,604,305],{}," via npm",[223,607,608,609,611,612,616,617,621,622,242],{},"Do ",[227,610,328],{}," use ",[227,613,614],{},[234,615,575],{}," for ",[227,618,619],{},[234,620,305],{}," unless you cloned it into the workspace with ",[227,623,624],{},[234,625,626],{},"desktop add module-fs --dev",[223,628,629,630,635,636,640,641,242],{},"When the playground enables explorer demos, align ",[227,631,632],{},[234,633,634],{},"playground\u002Fpackage.json"," with ",[227,637,638],{},[234,639,147],{}," — see ",[642,643,56],"a",{"href":100},[244,645,647],{"id":646},"coupling-checklist-for-theme-readme","Coupling checklist for theme README",[223,649,650],{},"Document:",[296,652,653,660,674],{},[299,654,655,656,659],{},"Which ",[227,657,658],{},"optional modules"," unlock explorer \u002F media apps.",[299,661,662,667,668,673],{},[227,663,664],{},[234,665,666],{},"peerDependencies"," on ",[227,669,670],{},[234,671,672],{},"@owdproject\u002Fcore"," version.",[299,675,676,677,680,681,685],{},"Behaviour ",[227,678,679],{},"without"," ",[227,682,683],{},[234,684,305],{}," (explorer entries hidden vs disabled).",[244,687,689],{"id":688},"related","Related",[296,691,692,696,700],{},[299,693,694],{},[642,695,137],{"href":138},[299,697,698],{},[642,699,94],{"href":95},[299,701,702],{},[642,703,56],{"href":100},[705,706,707],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":254,"searchDepth":267,"depth":267,"links":709},[710,711,712,714,715],{"id":246,"depth":267,"text":247},{"id":343,"depth":267,"text":344},{"id":524,"depth":267,"text":713},"Dependencies in package.json",{"id":646,"depth":267,"text":647},{"id":688,"depth":267,"text":689},"Conditionally loading filesystem, explorer kits, and bundled apps from a theme.","md",null,{},{"icon":120},{"title":117,"description":716},"5cETL1RsOYIgNkeKnWnru08tBTiRI6s7DYNnjjg1G9Y",[724,726],{"title":112,"path":113,"stem":114,"description":725,"icon":115,"children":-1},"start\u002Fboot routes, desktop lifecycle, and system composables.",{"title":122,"path":123,"stem":124,"description":727,"icon":125,"children":-1},"DesktopWindowNavButton, nav-append-inner, and title-bar slots every theme must implement.",1782171656815]