[{"data":1,"prerenderedAt":1577},["ShallowReactive",2],{"navigation_docs":3,"-themes-theme-anatomy":217,"-themes-theme-anatomy-surround":1573},[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":94,"body":219,"description":1566,"extension":1567,"links":1568,"meta":1569,"navigation":1570,"path":95,"seo":1571,"stem":96,"__hash__":1572},"docs\u002F5.themes\u002F2.theme-anatomy.md",{"type":220,"value":221,"toc":1550},"minimark",[222,231,235,733,736,787,794,809,826,836,844,967,973,990,1028,1033,1115,1119,1264,1286,1296,1300,1326,1330,1395,1399,1436,1441,1445,1464,1477,1497,1501,1519,1523,1546],[223,224,226,227],"h2",{"id":225},"entry-modulets","Entry: ",[228,229,230],"code",{},"module.ts",[232,233,234],"p",{},"Typical pattern (Nova \u002F Win95 \u002F Paper):",[236,237,242],"pre",{"className":238,"code":239,"language":240,"meta":241,"style":241},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createResolver, addComponentsDir, addPlugin, installModule } from '@nuxt\u002Fkit'\nimport { defineDesktopTheme } from '@owdproject\u002Fcore'\nimport { registerThemeTailwindPath } from '@owdproject\u002Fkit-tailwind\u002Fkit\u002FregisterTailwindPath'\n\nexport default defineDesktopTheme({\n  meta: { name: 'desktop-theme-nova' },\n  defaults: {\n    name: 'nova',\n    systemBar: { enabled: true, position: 'top', startButton: true },\n    dockBar: { enabled: true, position: 'bottom' },\n  },\n  async setup(options, nuxt) {\n    const { resolve } = createResolver(import.meta.url)\n\n    await installModule('@owdproject\u002Fkit-primevue')\n    registerThemeTailwindPath(nuxt, import.meta.url)\n\n    addComponentsDir({ path: resolve('.\u002Fruntime\u002Fcomponents'), global: true })\n\n    addPlugin({\n      src: resolve('.\u002Fruntime\u002Fplugins\u002F50.desktop-theme-nova-dialogs.client.ts'),\n      mode: 'client',\n    })\n  },\n})\n","ts","",[228,243,244,293,314,335,342,360,388,399,417,461,492,498,524,560,565,584,610,615,657,662,672,695,712,720,725],{"__ignoreMap":241},[245,246,249,253,257,261,264,267,269,272,274,277,280,283,286,290],"span",{"class":247,"line":248},"line",1,[245,250,252],{"class":251},"s7zQu","import",[245,254,256],{"class":255},"sMK4o"," {",[245,258,260],{"class":259},"sTEyZ"," createResolver",[245,262,263],{"class":255},",",[245,265,266],{"class":259}," addComponentsDir",[245,268,263],{"class":255},[245,270,271],{"class":259}," addPlugin",[245,273,263],{"class":255},[245,275,276],{"class":259}," installModule",[245,278,279],{"class":255}," }",[245,281,282],{"class":251}," from",[245,284,285],{"class":255}," '",[245,287,289],{"class":288},"sfazB","@nuxt\u002Fkit",[245,291,292],{"class":255},"'\n",[245,294,296,298,300,303,305,307,309,312],{"class":247,"line":295},2,[245,297,252],{"class":251},[245,299,256],{"class":255},[245,301,302],{"class":259}," defineDesktopTheme",[245,304,279],{"class":255},[245,306,282],{"class":251},[245,308,285],{"class":255},[245,310,311],{"class":288},"@owdproject\u002Fcore",[245,313,292],{"class":255},[245,315,317,319,321,324,326,328,330,333],{"class":247,"line":316},3,[245,318,252],{"class":251},[245,320,256],{"class":255},[245,322,323],{"class":259}," registerThemeTailwindPath",[245,325,279],{"class":255},[245,327,282],{"class":251},[245,329,285],{"class":255},[245,331,332],{"class":288},"@owdproject\u002Fkit-tailwind\u002Fkit\u002FregisterTailwindPath",[245,334,292],{"class":255},[245,336,338],{"class":247,"line":337},4,[245,339,341],{"emptyLinePlaceholder":340},true,"\n",[245,343,345,348,351,354,357],{"class":247,"line":344},5,[245,346,347],{"class":251},"export",[245,349,350],{"class":251}," default",[245,352,302],{"class":353},"s2Zo4",[245,355,356],{"class":259},"(",[245,358,359],{"class":255},"{\n",[245,361,363,367,370,372,375,377,379,382,385],{"class":247,"line":362},6,[245,364,366],{"class":365},"swJcz","  meta",[245,368,369],{"class":255},":",[245,371,256],{"class":255},[245,373,374],{"class":365}," name",[245,376,369],{"class":255},[245,378,285],{"class":255},[245,380,381],{"class":288},"desktop-theme-nova",[245,383,384],{"class":255},"'",[245,386,387],{"class":255}," },\n",[245,389,391,394,396],{"class":247,"line":390},7,[245,392,393],{"class":365},"  defaults",[245,395,369],{"class":255},[245,397,398],{"class":255}," {\n",[245,400,402,405,407,409,412,414],{"class":247,"line":401},8,[245,403,404],{"class":365},"    name",[245,406,369],{"class":255},[245,408,285],{"class":255},[245,410,411],{"class":288},"nova",[245,413,384],{"class":255},[245,415,416],{"class":255},",\n",[245,418,420,423,425,427,430,432,436,438,441,443,445,448,450,452,455,457,459],{"class":247,"line":419},9,[245,421,422],{"class":365},"    systemBar",[245,424,369],{"class":255},[245,426,256],{"class":255},[245,428,429],{"class":365}," enabled",[245,431,369],{"class":255},[245,433,435],{"class":434},"sfNiH"," true",[245,437,263],{"class":255},[245,439,440],{"class":365}," position",[245,442,369],{"class":255},[245,444,285],{"class":255},[245,446,447],{"class":288},"top",[245,449,384],{"class":255},[245,451,263],{"class":255},[245,453,454],{"class":365}," startButton",[245,456,369],{"class":255},[245,458,435],{"class":434},[245,460,387],{"class":255},[245,462,464,467,469,471,473,475,477,479,481,483,485,488,490],{"class":247,"line":463},10,[245,465,466],{"class":365},"    dockBar",[245,468,369],{"class":255},[245,470,256],{"class":255},[245,472,429],{"class":365},[245,474,369],{"class":255},[245,476,435],{"class":434},[245,478,263],{"class":255},[245,480,440],{"class":365},[245,482,369],{"class":255},[245,484,285],{"class":255},[245,486,487],{"class":288},"bottom",[245,489,384],{"class":255},[245,491,387],{"class":255},[245,493,495],{"class":247,"line":494},11,[245,496,497],{"class":255},"  },\n",[245,499,501,505,508,510,514,516,519,522],{"class":247,"line":500},12,[245,502,504],{"class":503},"spNyl","  async",[245,506,507],{"class":365}," setup",[245,509,356],{"class":255},[245,511,513],{"class":512},"sHdIc","options",[245,515,263],{"class":255},[245,517,518],{"class":512}," nuxt",[245,520,521],{"class":255},")",[245,523,398],{"class":255},[245,525,527,530,532,535,537,540,542,544,546,549,552,554,557],{"class":247,"line":526},13,[245,528,529],{"class":503},"    const",[245,531,256],{"class":255},[245,533,534],{"class":259}," resolve",[245,536,279],{"class":255},[245,538,539],{"class":255}," =",[245,541,260],{"class":353},[245,543,356],{"class":365},[245,545,252],{"class":251},[245,547,548],{"class":255},".",[245,550,551],{"class":259},"meta",[245,553,548],{"class":255},[245,555,556],{"class":259},"url",[245,558,559],{"class":365},")\n",[245,561,563],{"class":247,"line":562},14,[245,564,341],{"emptyLinePlaceholder":340},[245,566,568,571,573,575,577,580,582],{"class":247,"line":567},15,[245,569,570],{"class":251},"    await",[245,572,276],{"class":353},[245,574,356],{"class":365},[245,576,384],{"class":255},[245,578,579],{"class":288},"@owdproject\u002Fkit-primevue",[245,581,384],{"class":255},[245,583,559],{"class":365},[245,585,587,590,592,595,597,600,602,604,606,608],{"class":247,"line":586},16,[245,588,589],{"class":353},"    registerThemeTailwindPath",[245,591,356],{"class":365},[245,593,594],{"class":259},"nuxt",[245,596,263],{"class":255},[245,598,599],{"class":251}," import",[245,601,548],{"class":255},[245,603,551],{"class":259},[245,605,548],{"class":255},[245,607,556],{"class":259},[245,609,559],{"class":365},[245,611,613],{"class":247,"line":612},17,[245,614,341],{"emptyLinePlaceholder":340},[245,616,618,621,623,626,629,631,633,635,637,640,642,644,646,649,651,653,655],{"class":247,"line":617},18,[245,619,620],{"class":353},"    addComponentsDir",[245,622,356],{"class":365},[245,624,625],{"class":255},"{",[245,627,628],{"class":365}," path",[245,630,369],{"class":255},[245,632,534],{"class":353},[245,634,356],{"class":365},[245,636,384],{"class":255},[245,638,639],{"class":288},".\u002Fruntime\u002Fcomponents",[245,641,384],{"class":255},[245,643,521],{"class":365},[245,645,263],{"class":255},[245,647,648],{"class":365}," global",[245,650,369],{"class":255},[245,652,435],{"class":434},[245,654,279],{"class":255},[245,656,559],{"class":365},[245,658,660],{"class":247,"line":659},19,[245,661,341],{"emptyLinePlaceholder":340},[245,663,665,668,670],{"class":247,"line":664},20,[245,666,667],{"class":353},"    addPlugin",[245,669,356],{"class":365},[245,671,359],{"class":255},[245,673,675,678,680,682,684,686,689,691,693],{"class":247,"line":674},21,[245,676,677],{"class":365},"      src",[245,679,369],{"class":255},[245,681,534],{"class":353},[245,683,356],{"class":365},[245,685,384],{"class":255},[245,687,688],{"class":288},".\u002Fruntime\u002Fplugins\u002F50.desktop-theme-nova-dialogs.client.ts",[245,690,384],{"class":255},[245,692,521],{"class":365},[245,694,416],{"class":255},[245,696,698,701,703,705,708,710],{"class":247,"line":697},22,[245,699,700],{"class":365},"      mode",[245,702,369],{"class":255},[245,704,285],{"class":255},[245,706,707],{"class":288},"client",[245,709,384],{"class":255},[245,711,416],{"class":255},[245,713,715,718],{"class":247,"line":714},23,[245,716,717],{"class":255},"    }",[245,719,559],{"class":365},[245,721,723],{"class":247,"line":722},24,[245,724,497],{"class":255},[245,726,728,731],{"class":247,"line":727},25,[245,729,730],{"class":255},"}",[245,732,559],{"class":259},[232,734,735],{},"Avoid anti-patterns removed in recent themes:",[737,738,739,755,774],"ul",{},[740,741,742,743,749,750,548],"li",{},"Duplicating a ",[744,745,746],"strong",{},[228,747,748],{},"paperShell"," object that repeats ",[744,751,752],{},[228,753,754],{},"defaults",[740,756,757,762,763,768,769,773],{},[744,758,759],{},[228,760,761],{},"deepMerge(deepMerge(a, b), c)"," — use ",[744,764,765],{},[228,766,767],{},"defu"," and module ",[744,770,771],{},[228,772,754],{}," instead.",[740,775,776,777,782,783,548],{},"Forcing nested keys after merge (e.g. overwriting ",[744,778,779],{},[228,780,781],{},"systemBar",") — put them in ",[744,784,785],{},[228,786,754],{},[223,788,790,791],{"id":789},"merging-runtimeconfigpublicdesktop","Merging ",[228,792,793],{},"runtimeConfig.public.desktop",[232,795,796,799,800,804,805,808],{},[744,797,798],{},"Core"," has already applied ",[744,801,802],{},[228,803,147],{},". The theme fills ",[744,806,807],{},"undefined"," keys only:",[236,810,812],{"className":238,"code":811,"language":240,"meta":241,"style":241},"defu(existingDesktop, options)\n",[228,813,814],{"__ignoreMap":241},[245,815,816,818,821,823],{"class":247,"line":248},[245,817,767],{"class":353},[245,819,820],{"class":259},"(existingDesktop",[245,822,263],{"class":255},[245,824,825],{"class":259}," options)\n",[232,827,828,831,832,548],{},[744,829,830],{},"User config wins"," on conflicts — correct for per-project overrides in ",[744,833,834],{},[228,835,147],{},[232,837,838,839,843],{},"Some themes (GNOME) also import a local ",[744,840,841],{},[228,842,147],{}," inside the theme repo for packaged defaults:",[236,845,847],{"className":238,"code":846,"language":240,"meta":241,"style":241},"const themeDefaults = (await import(resolve('.\u002Fdesktop.config.ts'))).default\nnuxt.options.runtimeConfig.public.desktop = defu(\n  nuxt.options.runtimeConfig.public.desktop ?? {},\n  defu(themeDefaults, options),\n)\n",[228,848,849,890,921,948,963],{"__ignoreMap":241},[245,850,851,854,857,860,863,866,868,870,873,875,877,880,882,885,887],{"class":247,"line":248},[245,852,853],{"class":503},"const",[245,855,856],{"class":259}," themeDefaults ",[245,858,859],{"class":255},"=",[245,861,862],{"class":259}," (",[245,864,865],{"class":251},"await",[245,867,599],{"class":353},[245,869,356],{"class":259},[245,871,872],{"class":353},"resolve",[245,874,356],{"class":259},[245,876,384],{"class":255},[245,878,879],{"class":288},".\u002Fdesktop.config.ts",[245,881,384],{"class":255},[245,883,884],{"class":259},")))",[245,886,548],{"class":255},[245,888,889],{"class":259},"default\n",[245,891,892,894,896,898,900,903,905,908,910,913,915,918],{"class":247,"line":295},[245,893,594],{"class":259},[245,895,548],{"class":255},[245,897,513],{"class":259},[245,899,548],{"class":255},[245,901,902],{"class":259},"runtimeConfig",[245,904,548],{"class":255},[245,906,907],{"class":259},"public",[245,909,548],{"class":255},[245,911,912],{"class":259},"desktop ",[245,914,859],{"class":255},[245,916,917],{"class":353}," defu",[245,919,920],{"class":259},"(\n",[245,922,923,926,928,930,932,934,936,938,940,942,945],{"class":247,"line":316},[245,924,925],{"class":259},"  nuxt",[245,927,548],{"class":255},[245,929,513],{"class":259},[245,931,548],{"class":255},[245,933,902],{"class":259},[245,935,548],{"class":255},[245,937,907],{"class":259},[245,939,548],{"class":255},[245,941,912],{"class":259},[245,943,944],{"class":255},"??",[245,946,947],{"class":255}," {},\n",[245,949,950,953,956,958,961],{"class":247,"line":337},[245,951,952],{"class":353},"  defu",[245,954,955],{"class":259},"(themeDefaults",[245,957,263],{"class":255},[245,959,960],{"class":259}," options)",[245,962,416],{"class":255},[245,964,965],{"class":247,"line":344},[245,966,559],{"class":259},[223,968,970],{"id":969},"desktopvue",[228,971,972],{},"Desktop.vue",[232,974,975,980,981,984,985,369],{},[744,976,977],{},[228,978,979],{},"runtime\u002Fcomponents\u002FDesktop.vue"," is the ",[744,982,983],{},"theme entry component",". The consumer desktop project mounts it from ",[744,986,987],{},[228,988,989],{},"app.vue",[236,991,995],{"className":992,"code":993,"language":994,"meta":241,"style":241},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Ctemplate>\n  \u003CDesktop \u002F>\n\u003C\u002Ftemplate>\n","vue",[228,996,997,1008,1019],{"__ignoreMap":241},[245,998,999,1002,1005],{"class":247,"line":248},[245,1000,1001],{"class":255},"\u003C",[245,1003,1004],{"class":365},"template",[245,1006,1007],{"class":255},">\n",[245,1009,1010,1013,1016],{"class":247,"line":295},[245,1011,1012],{"class":255},"  \u003C",[245,1014,1015],{"class":365},"Desktop",[245,1017,1018],{"class":255}," \u002F>\n",[245,1020,1021,1024,1026],{"class":247,"line":316},[245,1022,1023],{"class":255},"\u003C\u002F",[245,1025,1004],{"class":365},[245,1027,1007],{"class":255},[1029,1030,1032],"h3",{"id":1031},"responsibilities","Responsibilities",[1034,1035,1036,1052],"table",{},[1037,1038,1039],"thead",{},[1040,1041,1042,1046,1049],"tr",{},[1043,1044,1045],"th",{},"Layer",[1043,1047,1048],{},"Owner",[1043,1050,1051],{},"Role",[1053,1054,1055,1072,1086,1102],"tbody",{},[1040,1056,1057,1065,1069],{},[1058,1059,1060],"td",{},[744,1061,1062],{},[228,1063,1064],{},"DesktopCore",[1058,1066,1067],{},[228,1068,311],{},[1058,1070,1071],{},"Window manager, workspaces, app mounting, z-order",[1040,1073,1074,1080,1083],{},[1058,1075,1076],{},[744,1077,1078],{},[228,1079,972],{},[1058,1081,1082],{},"Theme",[1058,1084,1085],{},"Shell layout — background, system bar, dock, slots",[1040,1087,1088,1093,1099],{},[1058,1089,1090],{},[744,1091,1092],{},"Window chrome",[1058,1094,1095,1096,521],{},"Theme (",[228,1097,1098],{},"Window*.vue",[1058,1100,1101],{},"Title bar, resize handles, theme styling",[1040,1103,1104,1109,1112],{},[1058,1105,1106],{},[744,1107,1108],{},"App content",[1058,1110,1111],{},"App modules",[1058,1113,1114],{},"Business UI inside window content slot",[1029,1116,1118],{"id":1117},"typical-structure","Typical structure",[236,1120,1122],{"className":992,"code":1121,"language":994,"meta":241,"style":241},"\u003Ctemplate>\n  \u003CDesktopCore>\n    \u003Ctemplate #background>\n      \u003CBackground \u002F>\n    \u003C\u002Ftemplate>\n    \u003Ctemplate #system-bar>\n      \u003CSystemBar \u002F>\n    \u003C\u002Ftemplate>\n    \u003Ctemplate #dock>\n      \u003CDockBar v-if=\"desktop.dockBar?.enabled\" \u002F>\n    \u003C\u002Ftemplate>\n  \u003C\u002FDesktopCore>\n\u003C\u002Ftemplate>\n",[228,1123,1124,1132,1140,1155,1165,1174,1187,1196,1204,1217,1239,1247,1256],{"__ignoreMap":241},[245,1125,1126,1128,1130],{"class":247,"line":248},[245,1127,1001],{"class":255},[245,1129,1004],{"class":365},[245,1131,1007],{"class":255},[245,1133,1134,1136,1138],{"class":247,"line":295},[245,1135,1012],{"class":255},[245,1137,1064],{"class":365},[245,1139,1007],{"class":255},[245,1141,1142,1145,1147,1150,1153],{"class":247,"line":316},[245,1143,1144],{"class":255},"    \u003C",[245,1146,1004],{"class":365},[245,1148,1149],{"class":255}," #",[245,1151,1152],{"class":503},"background",[245,1154,1007],{"class":255},[245,1156,1157,1160,1163],{"class":247,"line":337},[245,1158,1159],{"class":255},"      \u003C",[245,1161,1162],{"class":365},"Background",[245,1164,1018],{"class":255},[245,1166,1167,1170,1172],{"class":247,"line":344},[245,1168,1169],{"class":255},"    \u003C\u002F",[245,1171,1004],{"class":365},[245,1173,1007],{"class":255},[245,1175,1176,1178,1180,1182,1185],{"class":247,"line":362},[245,1177,1144],{"class":255},[245,1179,1004],{"class":365},[245,1181,1149],{"class":255},[245,1183,1184],{"class":503},"system-bar",[245,1186,1007],{"class":255},[245,1188,1189,1191,1194],{"class":247,"line":390},[245,1190,1159],{"class":255},[245,1192,1193],{"class":365},"SystemBar",[245,1195,1018],{"class":255},[245,1197,1198,1200,1202],{"class":247,"line":401},[245,1199,1169],{"class":255},[245,1201,1004],{"class":365},[245,1203,1007],{"class":255},[245,1205,1206,1208,1210,1212,1215],{"class":247,"line":419},[245,1207,1144],{"class":255},[245,1209,1004],{"class":365},[245,1211,1149],{"class":255},[245,1213,1214],{"class":503},"dock",[245,1216,1007],{"class":255},[245,1218,1219,1221,1224,1227,1229,1232,1235,1237],{"class":247,"line":463},[245,1220,1159],{"class":255},[245,1222,1223],{"class":365},"DockBar",[245,1225,1226],{"class":503}," v-if",[245,1228,859],{"class":255},[245,1230,1231],{"class":255},"\"",[245,1233,1234],{"class":288},"desktop.dockBar?.enabled",[245,1236,1231],{"class":255},[245,1238,1018],{"class":255},[245,1240,1241,1243,1245],{"class":247,"line":494},[245,1242,1169],{"class":255},[245,1244,1004],{"class":365},[245,1246,1007],{"class":255},[245,1248,1249,1252,1254],{"class":247,"line":500},[245,1250,1251],{"class":255},"  \u003C\u002F",[245,1253,1064],{"class":365},[245,1255,1007],{"class":255},[245,1257,1258,1260,1262],{"class":247,"line":526},[245,1259,1023],{"class":255},[245,1261,1004],{"class":365},[245,1263,1007],{"class":255},[232,1265,1266,1267,1271,1272,1275,1276,548],{},"Exact slot names follow ",[744,1268,1269],{},[228,1270,1064],{}," API — inspect core’s ",[228,1273,1274],{},"DesktopCore.vue"," or reference ",[1277,1278,1282,1285],"a",{"href":1279,"rel":1280},"https:\u002F\u002Fgithub.com\u002Fowdproject\u002Ftheme-nova\u002Ftree\u002Fmain\u002Fsrc\u002Fruntime\u002Fcomponents",[1281],"nofollow",[228,1283,1284],{},"theme-nova"," Desktop",[232,1287,1288,1291,1292,1295],{},[744,1289,1290],{},"Paper"," uses a thinner wrapper; ",[744,1293,1294],{},"Nova"," adds dock, explorer integration, and richer chrome. Start minimal, add slots as the shell grows.",[1029,1297,1299],{"id":1298},"global-registration","Global registration",[232,1301,1302,1305,1306,1308,1309,1313,1314,1318,1319,1321,1322,1325],{},[228,1303,1304],{},"addComponentsDir({ global: true })"," in ",[228,1307,230],{}," auto-imports ",[744,1310,1311],{},[228,1312,1015],{},", ",[744,1315,1316],{},[228,1317,1193],{},", etc. The component name matches the filename (",[228,1320,972],{}," → ",[228,1323,1324],{},"\u003CDesktop \u002F>",").",[223,1327,1329],{"id":1328},"other-components","Other components",[1034,1331,1332,1341],{},[1037,1333,1334],{},[1040,1335,1336,1339],{},[1043,1337,1338],{},"File",[1043,1340,1051],{},[1053,1342,1343,1365,1379],{},[1040,1344,1345,1351],{},[1058,1346,1347],{},[744,1348,1349],{},[228,1350,1098],{},[1058,1352,1353,1354,1359,1360,548],{},"Wrap ",[744,1355,1356],{},[228,1357,1358],{},"DesktopWindow"," \u002F ",[744,1361,1362],{},[228,1363,1364],{},"DesktopWindowContent",[1040,1366,1367,1374],{},[1058,1368,1369],{},[744,1370,1371],{},[228,1372,1373],{},"DesktopWindowNavButton.vue",[1058,1375,1376,1377,548],{},"Title-bar button primitive (close, min\u002Fmax, app tools). See ",[1277,1378,122],{"href":123},[1040,1380,1381,1392],{},[1058,1382,1383,1313,1387,1391],{},[744,1384,1385],{},[228,1386,1193],{},[744,1388,1389],{},[228,1390,1162],{},", …",[1058,1393,1394],{},"OS chrome",[223,1396,1398],{"id":1397},"kits-and-optional-modules","Kits and optional modules",[1034,1400,1401,1411],{},[1037,1402,1403],{},[1040,1404,1405,1408],{},[1043,1406,1407],{},"Dependency",[1043,1409,1410],{},"When",[1053,1412,1413,1424],{},[1040,1414,1415,1421],{},[1058,1416,1417],{},[744,1418,1419],{},[228,1420,579],{},[1058,1422,1423],{},"Almost always for standard themes — handles PrimeVue dialogs, Tailwind CSS, and explorer UI components.",[1040,1425,1426,1433],{},[1058,1427,1428],{},[744,1429,1430],{},[228,1431,1432],{},"@owdproject\u002Fmodule-fs",[1058,1434,1435],{},"Required when adding filesystem support — provides headless virtual filesystem logic and explorer stores.",[232,1437,1438,1439,548],{},"See ",[1277,1440,117],{"href":118},[223,1442,1444],{"id":1443},"peer-dependency","Peer dependency",[232,1446,1447,1448,1453,1454,1459,1460,1463],{},"Declare ",[744,1449,1450],{},[228,1451,1452],{},"@owdproject\u002Fcore\": \"^3.4.0\""," and ",[744,1455,1456],{},[228,1457,1458],{},"@owdproject\u002Fkit-primevue\": \"^3.4.0\""," as ",[744,1461,1462],{},"peers"," so install warns on API skew.",[232,1465,1466,1467,1453,1472,548],{},"Themes that import PrimeVue directly should also peer ",[744,1468,1469],{},[228,1470,1471],{},"primevue",[744,1473,1474],{},[228,1475,1476],{},"@primeuix\u002Fthemes",[232,1478,1479,1480,1313,1483,1488,1489,1494,1495,548],{},"In the ",[744,1481,1482],{},"client monorepo",[744,1484,1485],{},[228,1486,1487],{},"devDependencies"," may use ",[744,1490,1491],{},[228,1492,1493],{},"workspace:*"," for core while developing kits and themes together — see ",[1277,1496,137],{"href":138},[223,1498,1500],{"id":1499},"tailwind","Tailwind",[232,1502,1503,1504,1509,1510,1515,1516,1518],{},"Call ",[744,1505,1506],{},[228,1507,1508],{},"registerThemeTailwindPath"," once in theme setup, and call ",[744,1511,1512],{},[228,1513,1514],{},"registerTailwindPath"," (both imported from ",[228,1517,332],{},") for any custom paths containing Tailwind classes.",[223,1520,1522],{"id":1521},"related","Related",[737,1524,1525,1529,1533,1537,1541],{},[740,1526,1527],{},[1277,1528,56],{"href":100},[740,1530,1531],{},[1277,1532,122],{"href":123},[740,1534,1535],{},[1277,1536,103],{"href":104},[740,1538,1539],{},[1277,1540,107],{"href":108},[740,1542,1543],{},[1277,1544,1545],{"href":183},"Kernel components",[1547,1548,1549],"style",{},"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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .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":241,"searchDepth":295,"depth":295,"links":1551},[1552,1554,1556,1561,1562,1563,1564,1565],{"id":225,"depth":295,"text":1553},"Entry: module.ts",{"id":789,"depth":295,"text":1555},"Merging runtimeConfig.public.desktop",{"id":969,"depth":295,"text":972,"children":1557},[1558,1559,1560],{"id":1031,"depth":316,"text":1032},{"id":1117,"depth":316,"text":1118},{"id":1298,"depth":316,"text":1299},{"id":1328,"depth":295,"text":1329},{"id":1397,"depth":295,"text":1398},{"id":1443,"depth":295,"text":1444},{"id":1499,"depth":295,"text":1500},{"id":1521,"depth":295,"text":1522},"module.ts, desktop runtimeConfig, Desktop.vue, defu merge, and kit dependencies.","md",null,{},{"icon":97},{"title":94,"description":1566},"FCNEuSa2eIm6onodZgrchOyiMeLZkM6TlZcmhtGlm18",[1574,1576],{"title":5,"path":91,"stem":92,"description":1575,"icon":50,"children":-1},"What an OWD theme is versus core and apps.",{"title":99,"path":100,"stem":101,"description":241,"children":-1},1782171656147]