[{"data":1,"prerenderedAt":383},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-project-structure":217,"-getting-started-project-structure-surround":378},[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":20,"body":219,"description":371,"extension":372,"links":373,"meta":374,"navigation":375,"path":21,"seo":376,"stem":22,"__hash__":377},"docs\u002F1.getting-started\u002F4.project-structure.md",{"type":220,"value":221,"toc":364},"minimark",[222,227,238,258,262,319,330,334,340,348,352,358],[223,224,226],"h2",{"id":225},"client-monorepo","Client monorepo",[228,229,235],"pre",{"className":230,"code":232,"language":233,"meta":234},[231],"language-text","client\u002F\n├── desktop\u002F                 # Runnable Nuxt desktop\n│   ├── nuxt.config.ts\n│   ├── desktop.config.ts\n│   └── app\u002Fapp.vue          # \u003CDesktop \u002F>\n├── packages\u002F\n│   ├── core\u002F                # @owdproject\u002Fcore + desktop CLI\n│   └── nx\u002F                  # @owdproject\u002Fnx\n├── themes\u002F                  # gitignored clones for workspace dev\n├── apps\u002F                    # gitignored clones for workspace dev\n├── template\u002F                # npm create owd scaffold (desktop template)\n└── docs\u002F                    # This documentation site\n","text","",[236,237,232],"code",{"__ignoreMap":234},[239,240,241,242,245,246,249,250,253,254,257],"p",{},"Extension modules (",[236,243,244],{},"module-fs",", ",[236,247,248],{},"module-persistence",") and kits (",[236,251,252],{},"kit-primevue",") are developed under ",[236,255,256],{},"extend\u002Fpackages\u002F"," or loaded from npm.",[223,259,261],{"id":260},"your-desktop-project","Your desktop project",[263,264,265,278],"table",{},[266,267,268],"thead",{},[269,270,271,275],"tr",{},[272,273,274],"th",{},"Path",[272,276,277],{},"Role",[279,280,281,295,306],"tbody",{},[269,282,283,289],{},[284,285,286],"td",{},[236,287,288],{},"nuxt.config.ts",[284,290,291,294],{},[236,292,293],{},"modules: ['@owdproject\u002Fcore']","; all normal Nuxt options here",[269,296,297,301],{},[284,298,299],{},[236,300,147],{},[284,302,303],{},[236,304,305],{},"defineDesktopConfig({ theme, apps, modules, … })",[269,307,308,313],{},[284,309,310],{},[236,311,312],{},"app\u002Fapp.vue",[284,314,315,318],{},[236,316,317],{},"\u003CDesktop \u002F>"," from the active theme",[239,320,321,322,326,327,329],{},"Core ",[323,324,325],"strong",{},"requires"," ",[236,328,147],{}," at the Nuxt root.",[223,331,333],{"id":332},"app-package","App package",[228,335,338],{"className":336,"code":337,"language":233,"meta":234},[231],"@owdproject\u002Fmy-app\u002F\n├── src\u002Fmodule.ts\n├── src\u002Fruntime\u002F\n│   ├── plugin.ts            # defineDesktopApp(...)\n│   ├── app.config.ts\n│   └── components\u002FWindow\u002F\n├── playground\u002F\n└── dist\u002Fmodule.mjs          # after prepack\n",[236,339,337],{"__ignoreMap":234},[239,341,342,345,346],{},[343,344,52],"a",{"href":53}," · ",[343,347,56],{"href":57},[223,349,351],{"id":350},"theme-package","Theme package",[228,353,356],{"className":354,"code":355,"language":233,"meta":234},[231],"@owdproject\u002Fmy-theme\u002F\n├── src\u002Fmodule.ts            # defu → runtimeConfig.public.desktop\n└── src\u002Fruntime\u002Fcomponents\u002F\n    ├── Desktop.vue          # entry: wraps DesktopCore\n    ├── Window.vue\n    └── …\n",[236,357,355],{"__ignoreMap":234},[239,359,360,345,362],{},[343,361,94],{"href":95},[343,363,56],{"href":100},{"title":234,"searchDepth":365,"depth":365,"links":366},2,[367,368,369,370],{"id":225,"depth":365,"text":226},{"id":260,"depth":365,"text":261},{"id":332,"depth":365,"text":333},{"id":350,"depth":365,"text":351},"Client monorepo, desktop project, app and theme packages.","md",null,{},{"icon":23},{"title":20,"description":371},"mLbb1NgVFjknwv9U_PPqseIN95gVwdyAvKDKN-VErb0",[379,381],{"title":15,"path":16,"stem":17,"description":380,"icon":18,"children":-1},"Run the OWD client monorepo and app\u002Ftheme playgrounds.",{"title":32,"path":33,"stem":34,"description":382,"icon":35,"children":-1},"How Open Web Desktop is layered so you can ship any “OS” UI while staying agnostic at the engine level.",1782171655061]