[{"data":1,"prerenderedAt":779},["ShallowReactive",2],{"navigation_docs":3,"-setup-monorepo-workspace":217,"-setup-monorepo-workspace-surround":774},[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":142,"body":219,"description":767,"extension":768,"links":769,"meta":770,"navigation":771,"path":143,"seo":772,"stem":144,"__hash__":773},"docs\u002F6.setup\u002F3.monorepo-workspace.md",{"type":220,"value":221,"toc":760},"minimark",[222,262,278,283,289,396,405,425,445,449,601,625,629,649,653,669,716,737,741,756],[223,224,225,226,230,231,234,235,238,239,245,246,249,250,255,256,261],"p",{},"The official ",[227,228,229],"strong",{},"client"," repository is a ",[227,232,233],{},"pnpm"," + ",[227,236,237],{},"Nx"," monorepo. Use it when you work on ",[227,240,241],{},[242,243,244],"code",{},"@owdproject\u002Fcore",", ",[227,247,248],{},"kits",", or the reference ",[227,251,252],{},[242,253,254],{},"desktop\u002F"," demo with ",[227,257,258],{},[242,259,260],{},"workspace:*"," linking.",[223,263,264,265,268,269,271,272,277],{},"For ",[227,266,267],{},"how to wire dependencies"," (npm vs ",[242,270,260],{}," vs Git), read ",[227,273,274],{},[275,276,137],"a",{"href":138}," first — most install failures come from a mismatch there.",[279,280,282],"h2",{"id":281},"workspace-members","Workspace members",[223,284,285,288],{},[242,286,287],{},"pnpm-workspace.yaml"," includes:",[290,291,292,305],"table",{},[293,294,295],"thead",{},[296,297,298,302],"tr",{},[299,300,301],"th",{},"Glob",[299,303,304],{},"Contents",[306,307,308,324,360,372,384],"tbody",{},[296,309,310,317],{},[311,312,313],"td",{},[227,314,315],{},[242,316,254],{},[311,318,319,320,323],{},"Reference Nuxt shell (",[242,321,322],{},"pnpm run dev"," target).",[296,325,326,333],{},[311,327,328],{},[227,329,330],{},[242,331,332],{},"packages\u002F*",[311,334,335,245,339,245,344,245,349,245,354,359],{},[227,336,337],{},[242,338,244],{},[227,340,341],{},[242,342,343],{},"@owdproject\u002Fkit-theme",[227,345,346],{},[242,347,348],{},"@owdproject\u002Fkit-fs",[227,350,351],{},[242,352,353],{},"@owdproject\u002Fkit-explorer",[227,355,356],{},[242,357,358],{},"@owdproject\u002Fnx",", …",[296,361,362,369],{},[311,363,364],{},[227,365,366],{},[242,367,368],{},"apps\u002F*",[311,370,371],{},"App modules when cloned locally (gitignored by default).",[296,373,374,381],{},[311,375,376],{},[227,377,378],{},[242,379,380],{},"themes\u002F*",[311,382,383],{},"Theme modules when cloned locally (gitignored by default).",[296,385,386,393],{},[311,387,388],{},[227,389,390],{},[242,391,392],{},"plugins\u002F*",[311,394,395],{},"Optional Nx\u002Fplugin extensions.",[223,397,398],{},[227,399,400,401,404],{},"Not in ",[242,402,403],{},"packages\u002F"," (external npm modules):",[406,407,408,417],"ul",{},[409,410,411,416],"li",{},[227,412,413],{},[242,414,415],{},"@owdproject\u002Fmodule-fs"," — virtual filesystem (ZenFS).",[409,418,419,424],{},[227,420,421],{},[242,422,423],{},"@owdproject\u002Fmodule-persistence"," — optional Pinia persistence.",[223,426,427,428,433,434,438,439,444],{},"Install them with ",[227,429,430],{},[242,431,432],{},"desktop add module-fs"," and list them in ",[227,435,436],{},[242,437,147],{}," → ",[227,440,441],{},[242,442,443],{},"modules",". They are documented as extension modules, not vendored core packages.",[279,446,448],{"id":447},"root-scripts","Root scripts",[290,450,451,461],{},[293,452,453],{},[296,454,455,458],{},[299,456,457],{},"Script",[299,459,460],{},"Purpose",[306,462,463,483,501,526,543,561,583],{},[296,464,465,471],{},[311,466,467],{},[227,468,469],{},[242,470,322],{},[311,472,473,474,478,479,482],{},"Starts ",[227,475,476],{},[242,477,254],{}," via Nx (",[242,480,481],{},"desktop:serve",").",[296,484,485,492],{},[311,486,487],{},[227,488,489],{},[242,490,491],{},"pnpm run prepare:stubs",[311,493,494,495,500],{},"Stub-builds kit packages and any workspace themes\u002Fapps that use ",[227,496,497],{},[242,498,499],{},"nuxt-module-build",".",[296,502,503,510],{},[311,504,505],{},[227,506,507],{},[242,508,509],{},"pnpm run prepare:modules",[311,511,512,234,517,522,523,482],{},[227,513,514],{},[242,515,516],{},"prepare:stubs",[227,518,519],{},[242,520,521],{},"dev:prepare"," on packages\u002Fapps\u002Fthemes (",[242,524,525],{},"--if-present",[296,527,528,535],{},[311,529,530],{},[227,531,532],{},[242,533,534],{},"pnpm run prepare:themes",[311,536,537,538,542],{},"Theme ",[227,539,540],{},[242,541,521],{}," only.",[296,544,545,552],{},[311,546,547],{},[227,548,549],{},[242,550,551],{},"pnpm run validate:modules",[311,553,554,555,560],{},"Runs ",[227,556,557],{},[242,558,559],{},"desktop validate"," across the workspace.",[296,562,563,570],{},[311,564,565],{},[227,566,567],{},[242,568,569],{},"pnpm desktop",[311,571,572,573,245,576,245,579,582],{},"Core CLI (",[242,574,575],{},"add",[242,577,578],{},"validate",[242,580,581],{},"template",", …).",[296,584,585,592],{},[311,586,587],{},[227,588,589],{},[242,590,591],{},"pnpm template:sync",[311,593,594,595,600],{},"Refresh ",[227,596,597],{},[242,598,599],{},"template\u002F"," from the core blueprint.",[223,602,603,604,607,608,613,614,619,620,500],{},"After changing ",[227,605,606],{},"source"," of a publishable module (not just stubs), run ",[227,609,610],{},[242,611,612],{},"prepack"," \u002F ",[227,615,616],{},[242,617,618],{},"nuxt-module-build build"," before testing consumers that import ",[227,621,622],{},[242,623,624],{},"dist\u002Fmodule.mjs",[279,626,628],{"id":627},"lockfile","Lockfile",[223,630,631,632,637,638,643,644,648],{},"Commit ",[227,633,634],{},[242,635,636],{},"pnpm-lock.yaml"," at the repo root for reproducible CI. Re-run ",[227,639,640],{},[242,641,642],{},"pnpm install"," after removing workspace packages or changing ",[227,645,646],{},[242,647,260],{}," entries so ghost importers disappear from the lockfile.",[279,650,652],{"id":651},"cloning-themes-and-apps-locally","Cloning themes and apps locally",[223,654,655,659,660,664,665,668],{},[227,656,657],{},[242,658,87],{}," and ",[227,661,662],{},[242,663,44],{}," are ",[227,666,667],{},"gitignored"," in the client repo so you can:",[670,671,676],"pre",{"className":672,"code":673,"language":674,"meta":675,"style":675},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone https:\u002F\u002Fgithub.com\u002Fowdproject\u002Ftheme-nova.git themes\u002Ftheme-nova\npnpm install\npnpm run prepare:stubs\n","bash","",[242,677,678,697,705],{"__ignoreMap":675},[679,680,683,687,691,694],"span",{"class":681,"line":682},"line",1,[679,684,686],{"class":685},"sBMFI","git",[679,688,690],{"class":689},"sfazB"," clone",[679,692,693],{"class":689}," https:\u002F\u002Fgithub.com\u002Fowdproject\u002Ftheme-nova.git",[679,695,696],{"class":689}," themes\u002Ftheme-nova\n",[679,698,700,702],{"class":681,"line":699},2,[679,701,233],{"class":685},[679,703,704],{"class":689}," install\n",[679,706,708,710,713],{"class":681,"line":707},3,[679,709,233],{"class":685},[679,711,712],{"class":689}," run",[679,714,715],{"class":689}," prepare:stubs\n",[223,717,718,719,723,724,728,729,723,732,736],{},"Each nested repo keeps its own Git history. Prefer ",[227,720,721],{},[242,722,260],{}," for ",[227,725,726],{},[242,727,244],{}," and kits when the folder sits under the workspace globs; use ",[227,730,731],{},"npm semver",[227,733,734],{},[242,735,244],{}," inside standalone theme repos.",[279,738,740],{"id":739},"related","Related",[406,742,743,747,751],{},[409,744,745],{},[275,746,137],{"href":138},[409,748,749],{},[275,750,147],{"href":148},[409,752,753],{},[275,754,755],{"href":33},"Architecture overview",[757,758,759],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}",{"title":675,"searchDepth":699,"depth":699,"links":761},[762,763,764,765,766],{"id":281,"depth":699,"text":282},{"id":447,"depth":699,"text":448},{"id":627,"depth":699,"text":628},{"id":651,"depth":699,"text":652},{"id":739,"depth":699,"text":740},"pnpm workspace layout, root scripts, and how the client repo is organized.","md",null,{},{"icon":145},{"title":142,"description":767},"H5-kkS7Nolw6e9orW-omaMO7s1gCO4yknLQzB8uCkZU",[775,777],{"title":137,"path":138,"stem":139,"description":776,"icon":140,"children":-1},"How to wire @owdproject\u002F* dependencies with npm, pnpm workspace, or Git — and avoid common install failures.",{"title":147,"path":148,"stem":149,"description":778,"icon":150,"children":-1},"defineDesktopConfig, theme, apps, modules, shell keys, extension keys, and runtime merge.",1782171656852]