[{"data":1,"prerenderedAt":555},["ShallowReactive",2],{"navigation_docs_en":3,"-en-docs-plugin-system-override-modes":62,"-en-docs-plugin-system-override-modes-surround":550},[4,9,26,37,51],{"title":5,"path":6,"stem":7,"icon":8},"Introduction","\u002Fen\u002Fdocs\u002Fintroduction","en\u002Fdocs\u002F1.introduction","i-heroicons-book-open",{"title":10,"icon":11,"path":12,"stem":13,"children":14,"page":25},"Getting Started","i-heroicons-bolt","\u002Fen\u002Fdocs\u002Fgetting-started","en\u002Fdocs\u002F2.getting-started",[15,20],{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fen\u002Fdocs\u002Fgetting-started\u002Finstallation","en\u002Fdocs\u002F2.getting-started\u002Finstallation","i-heroicons-cloud-arrow-down",{"title":21,"path":22,"stem":23,"icon":24},"Project Structure","\u002Fen\u002Fdocs\u002Fgetting-started\u002Fproject-structure","en\u002Fdocs\u002F2.getting-started\u002Fproject-structure","i-heroicons-folder",false,{"title":27,"icon":28,"path":29,"stem":30,"children":31,"page":25},"Architecture","i-heroicons-square-3-stack-3d","\u002Fen\u002Fdocs\u002Farchitecture","en\u002Fdocs\u002F3.architecture",[32],{"title":33,"path":34,"stem":35,"icon":36},"Architecture: Nuxt Layers","\u002Fen\u002Fdocs\u002Farchitecture\u002Foverview","en\u002Fdocs\u002F3.architecture\u002Foverview","i-heroicons-cpu-chip",{"title":38,"icon":39,"path":40,"stem":41,"children":42,"page":25},"Plugin System","i-heroicons-puzzle-piece","\u002Fen\u002Fdocs\u002Fplugin-system","en\u002Fdocs\u002F4.plugin-system",[43,46],{"title":38,"path":44,"stem":45,"icon":39},"\u002Fen\u002Fdocs\u002Fplugin-system\u002Fbasics","en\u002Fdocs\u002F4.plugin-system\u002Fbasics",{"title":47,"path":48,"stem":49,"icon":50},"Override System","\u002Fen\u002Fdocs\u002Fplugin-system\u002Foverride-modes","en\u002Fdocs\u002F4.plugin-system\u002Foverride-modes","i-heroicons-arrow-path",{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":25},"Guides","i-heroicons-academic-cap","\u002Fen\u002Fdocs\u002Fguides","en\u002Fdocs\u002F5.guides",[57],{"title":58,"path":59,"stem":60,"icon":61},"Plugin Creation Guide","\u002Fen\u002Fdocs\u002Fguides\u002Fcreate-plugin","en\u002Fdocs\u002F5.guides\u002Fcreate-plugin","i-heroicons-command-line",{"id":63,"title":47,"body":64,"description":543,"extension":544,"links":545,"meta":546,"navigation":547,"path":48,"seo":548,"stem":49,"__hash__":549},"docs_en\u002Fen\u002Fdocs\u002F4.plugin-system\u002Foverride-modes.md",{"type":65,"value":66,"toc":537},"minimark",[67,71,93,98,108,256,259,282,286,292,420,427,445,452,456,459,470,475,479,482,508,522,525,533],[68,69,47],"h1",{"id":70},"override-system",[72,73,74,75,79,80,83,84,88,89,92],"p",{},"The current implementation uses two main mechanisms: ",[76,77,78],"strong",{},"extend"," through plugin routes\u002Flayers, and ",[76,81,82],{},"replace core"," through the ",[85,86,87],"code",{},"replaces"," field. There is no ",[85,90,91],{},"overrideMode"," field read by the current source.",[94,95,97],"h2",{"id":96},"extend-add-a-new-feature","Extend: Add a New Feature",[72,99,100,101,104,105,107],{},"To add a new feature, create an enabled plugin with its own ",[85,102,103],{},"routes"," and leave ",[85,106,87],{}," empty or omitted.",[109,110,115],"pre",{"className":111,"code":112,"language":113,"meta":114,"style":114},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default {\n  enabled: true,\n  routes: [\n    {\n      key: 'gamification',\n      path: '\u002Fdashboard\u002Fgamification',\n      icon: 'i-heroicons-trophy',\n      label: 'Gamification'\n    }\n  ]\n}\n","typescript","",[85,116,117,133,150,162,168,188,205,222,238,244,250],{"__ignoreMap":114},[118,119,122,126,129],"span",{"class":120,"line":121},"line",1,[118,123,125],{"class":124},"s7zQu","export",[118,127,128],{"class":124}," default",[118,130,132],{"class":131},"sMK4o"," {\n",[118,134,136,140,143,147],{"class":120,"line":135},2,[118,137,139],{"class":138},"swJcz","  enabled",[118,141,142],{"class":131},":",[118,144,146],{"class":145},"sfNiH"," true",[118,148,149],{"class":131},",\n",[118,151,153,156,158],{"class":120,"line":152},3,[118,154,155],{"class":138},"  routes",[118,157,142],{"class":131},[118,159,161],{"class":160},"sTEyZ"," [\n",[118,163,165],{"class":120,"line":164},4,[118,166,167],{"class":131},"    {\n",[118,169,171,174,176,179,183,186],{"class":120,"line":170},5,[118,172,173],{"class":138},"      key",[118,175,142],{"class":131},[118,177,178],{"class":131}," '",[118,180,182],{"class":181},"sfazB","gamification",[118,184,185],{"class":131},"'",[118,187,149],{"class":131},[118,189,191,194,196,198,201,203],{"class":120,"line":190},6,[118,192,193],{"class":138},"      path",[118,195,142],{"class":131},[118,197,178],{"class":131},[118,199,200],{"class":181},"\u002Fdashboard\u002Fgamification",[118,202,185],{"class":131},[118,204,149],{"class":131},[118,206,208,211,213,215,218,220],{"class":120,"line":207},7,[118,209,210],{"class":138},"      icon",[118,212,142],{"class":131},[118,214,178],{"class":131},[118,216,217],{"class":181},"i-heroicons-trophy",[118,219,185],{"class":131},[118,221,149],{"class":131},[118,223,225,228,230,232,235],{"class":120,"line":224},8,[118,226,227],{"class":138},"      label",[118,229,142],{"class":131},[118,231,178],{"class":131},[118,233,234],{"class":181},"Gamification",[118,236,237],{"class":131},"'\n",[118,239,241],{"class":120,"line":240},9,[118,242,243],{"class":131},"    }\n",[118,245,247],{"class":120,"line":246},10,[118,248,249],{"class":160},"  ]\n",[118,251,253],{"class":120,"line":252},11,[118,254,255],{"class":131},"}\n",[72,257,258],{},"The result:",[260,261,262,266,273,279],"ul",{},[263,264,265],"li",{},"the plugin layer is included in Nuxt;",[263,267,268,269,272],{},"plugin pages are available based on the ",[85,270,271],{},"pages\u002F"," structure;",[263,274,275,276,278],{},"dashboard menu items are added from ",[85,277,103],{},";",[263,280,281],{},"built-in cores remain active.",[94,283,285],{"id":284},"replace-replace-a-core","Replace: Replace a Core",[72,287,288,289,291],{},"To replace a core feature, set ",[85,290,87],{}," to the core ids you want to disable.",[109,293,295],{"className":111,"code":294,"language":113,"meta":114,"style":114},"export default {\n  enabled: true,\n  replaces: ['program'],\n  routes: [\n    {\n      key: 'custom-program',\n      path: '\u002Fdashboard\u002Fcustom-program',\n      icon: 'i-heroicons-rectangle-stack',\n      label: 'Custom Program'\n    }\n  ]\n}\n",[85,296,297,305,315,337,345,349,364,379,394,407,411,415],{"__ignoreMap":114},[118,298,299,301,303],{"class":120,"line":121},[118,300,125],{"class":124},[118,302,128],{"class":124},[118,304,132],{"class":131},[118,306,307,309,311,313],{"class":120,"line":135},[118,308,139],{"class":138},[118,310,142],{"class":131},[118,312,146],{"class":145},[118,314,149],{"class":131},[118,316,317,320,322,325,327,330,332,335],{"class":120,"line":152},[118,318,319],{"class":138},"  replaces",[118,321,142],{"class":131},[118,323,324],{"class":160}," [",[118,326,185],{"class":131},[118,328,329],{"class":181},"program",[118,331,185],{"class":131},[118,333,334],{"class":160},"]",[118,336,149],{"class":131},[118,338,339,341,343],{"class":120,"line":164},[118,340,155],{"class":138},[118,342,142],{"class":131},[118,344,161],{"class":160},[118,346,347],{"class":120,"line":170},[118,348,167],{"class":131},[118,350,351,353,355,357,360,362],{"class":120,"line":190},[118,352,173],{"class":138},[118,354,142],{"class":131},[118,356,178],{"class":131},[118,358,359],{"class":181},"custom-program",[118,361,185],{"class":131},[118,363,149],{"class":131},[118,365,366,368,370,372,375,377],{"class":120,"line":207},[118,367,193],{"class":138},[118,369,142],{"class":131},[118,371,178],{"class":131},[118,373,374],{"class":181},"\u002Fdashboard\u002Fcustom-program",[118,376,185],{"class":131},[118,378,149],{"class":131},[118,380,381,383,385,387,390,392],{"class":120,"line":224},[118,382,210],{"class":138},[118,384,142],{"class":131},[118,386,178],{"class":131},[118,388,389],{"class":181},"i-heroicons-rectangle-stack",[118,391,185],{"class":131},[118,393,149],{"class":131},[118,395,396,398,400,402,405],{"class":120,"line":240},[118,397,227],{"class":138},[118,399,142],{"class":131},[118,401,178],{"class":131},[118,403,404],{"class":181},"Custom Program",[118,406,237],{"class":131},[118,408,409],{"class":120,"line":246},[118,410,243],{"class":131},[118,412,413],{"class":120,"line":252},[118,414,249],{"class":160},[118,416,418],{"class":120,"line":417},12,[118,419,255],{"class":131},[72,421,422,423,426],{},"When auto-discovery runs, ",[85,424,425],{},"shared\u002Futils\u002Flayers.ts"," will:",[428,429,430,433,438],"ol",{},[263,431,432],{},"read enabled plugins;",[263,434,435,436,278],{},"collect every core id in ",[85,437,87],{},[263,439,440,441,444],{},"skip those cores while composing ",[85,442,443],{},"extends",".",[72,446,447,448,451],{},"With the example above, ",[85,449,450],{},"cores\u002Fprogram"," will not be loaded as a layer.",[94,453,455],{"id":454},"partial-component-override","Partial Component Override",[72,457,458],{},"Nuxt Layers can resolve components by layer priority, but this project currently does not have a dedicated config field for \"partial override\". If you want to replace a specific component, do it carefully:",[260,460,461,464,467],{},[263,462,463],{},"use the same component name as the target component;",[263,465,466],{},"make sure the plugin is enabled and included in the layer composition;",[263,468,469],{},"verify the result in the browser because resolution priority follows Nuxt Layers rules.",[72,471,472,473,444],{},"For explicit and stable replacement, use ",[85,474,87],{},[94,476,478],{"id":477},"sidebar-override","Sidebar Override",[72,480,481],{},"The sidebar follows configuration instead of being hardcoded:",[260,483,484,490,496,502],{},[263,485,486,487,278],{},"core items come from ",[85,488,489],{},"core.config.ts",[263,491,492,493,278],{},"plugin items come from ",[85,494,495],{},"plugin.config.ts",[263,497,498,499,278],{},"dynamic items come from ",[85,500,501],{},"sidebar.ts",[263,503,504,505,507],{},"cores listed in ",[85,506,87],{}," are not shown.",[72,509,510,511,513,514,517,518,521],{},"If an item from ",[85,512,501],{}," has the same ",[85,515,516],{},"key"," as a static item, both are merged. This is useful for adding dynamic ",[85,519,520],{},"children"," under a plugin menu.",[523,524],"hr",{},[72,526,527,528,444],{},"Ready to try? Follow the guide on ",[529,530,532],"a",{"href":531},"\u002Fguides\u002Fcreate-plugin","Creating Your First Plugin",[534,535,536],"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 .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 .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 .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":114,"searchDepth":135,"depth":135,"links":538},[539,540,541,542],{"id":96,"depth":135,"text":97},{"id":284,"depth":135,"text":285},{"id":454,"depth":135,"text":455},{"id":477,"depth":135,"text":478},"The current implementation uses two main mechanisms: extend through plugin routes\u002Flayers, and replace core through the replaces field. There is no overrideMode field read by the current source.","md",null,{},{"icon":50},{"title":47,"description":543},"_L4mDjjWowR0RB0dZXq93pcXRoK0Adg--bwgc9TBwUw",[551,553],{"title":38,"path":44,"stem":45,"description":552,"icon":39,"children":-1},"A plugin is an additional Nuxt Layer placed under plugins\u002F. Plugins are used to add new features, replace selected cores, or enrich navigation without changing source files under cores\u002F.",{"title":58,"path":59,"stem":60,"description":554,"icon":61,"children":-1},"This guide creates a simple welcome-banner plugin that adds a dashboard page and a new sidebar item.",1780026930496]