[{"data":1,"prerenderedAt":554},["ShallowReactive",2],{"navigation_docs_id":3,"-id-docs-plugin-system-override-modes":62,"-id-docs-plugin-system-override-modes-surround":549},[4,9,26,37,51],{"title":5,"path":6,"stem":7,"icon":8},"Pendahuluan","\u002Fid\u002Fdocs\u002Fintroduction","id\u002Fdocs\u002F1.introduction","i-heroicons-book-open",{"title":10,"icon":11,"path":12,"stem":13,"children":14,"page":25},"Getting Started","i-heroicons-bolt","\u002Fid\u002Fdocs\u002Fgetting-started","id\u002Fdocs\u002F2.getting-started",[15,20],{"title":16,"path":17,"stem":18,"icon":19},"Instalasi","\u002Fid\u002Fdocs\u002Fgetting-started\u002Finstallation","id\u002Fdocs\u002F2.getting-started\u002Finstallation","i-heroicons-cloud-arrow-down",{"title":21,"path":22,"stem":23,"icon":24},"Struktur Project","\u002Fid\u002Fdocs\u002Fgetting-started\u002Fproject-structure","id\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","\u002Fid\u002Fdocs\u002Farchitecture","id\u002Fdocs\u002F3.architecture",[32],{"title":33,"path":34,"stem":35,"icon":36},"Arsitektur: Nuxt Layers","\u002Fid\u002Fdocs\u002Farchitecture\u002Foverview","id\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","\u002Fid\u002Fdocs\u002Fplugin-system","id\u002Fdocs\u002F4.plugin-system",[43,46],{"title":38,"path":44,"stem":45,"icon":39},"\u002Fid\u002Fdocs\u002Fplugin-system\u002Fbasics","id\u002Fdocs\u002F4.plugin-system\u002Fbasics",{"title":47,"path":48,"stem":49,"icon":50},"Sistem Override","\u002Fid\u002Fdocs\u002Fplugin-system\u002Foverride-modes","id\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","\u002Fid\u002Fdocs\u002Fguides","id\u002Fdocs\u002F5.guides",[57],{"title":58,"path":59,"stem":60,"icon":61},"Panduan Membuat Plugin","\u002Fid\u002Fdocs\u002Fguides\u002Fcreate-plugin","id\u002Fdocs\u002F5.guides\u002Fcreate-plugin","i-heroicons-command-line",{"id":63,"title":47,"body":64,"description":542,"extension":543,"links":544,"meta":545,"navigation":546,"path":48,"seo":547,"stem":49,"__hash__":548},"docs_id\u002Fid\u002Fdocs\u002F4.plugin-system\u002Foverride-modes.md",{"type":65,"value":66,"toc":536},"minimark",[67,71,93,98,108,256,259,281,285,291,419,426,444,451,455,458,469,474,478,481,507,521,524,532],[68,69,47],"h1",{"id":70},"sistem-override",[72,73,74,75,79,80,83,84,88,89,92],"p",{},"Implementasi saat ini memakai dua mekanisme utama: ",[76,77,78],"strong",{},"extend"," lewat route\u002Flayer plugin, dan ",[76,81,82],{},"replace core"," lewat field ",[85,86,87],"code",{},"replaces",". Tidak ada field ",[85,90,91],{},"overrideMode"," yang dibaca oleh source saat ini.",[94,95,97],"h2",{"id":96},"extend-menambah-fitur-baru","Extend: Menambah Fitur Baru",[72,99,100,101,104,105,107],{},"Untuk menambah fitur baru, buat plugin aktif dengan ",[85,102,103],{},"routes"," sendiri dan biarkan ",[85,106,87],{}," kosong atau tidak ditulis.",[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],{},"Hasilnya:",[260,261,262,266,273,278],"ul",{},[263,264,265],"li",{},"layer plugin dimasukkan ke Nuxt;",[263,267,268,269,272],{},"halaman plugin tersedia sesuai struktur ",[85,270,271],{},"pages\u002F",";",[263,274,275,276,272],{},"menu dashboard ditambahkan dari ",[85,277,103],{},[263,279,280],{},"core bawaan tetap aktif.",[94,282,284],{"id":283},"replace-mengganti-core","Replace: Mengganti Core",[72,286,287,288,290],{},"Untuk mengganti fitur core, isi ",[85,289,87],{}," dengan id core yang ingin dinonaktifkan.",[109,292,294],{"className":111,"code":293,"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,295,296,304,314,336,344,348,363,378,393,406,410,414],{"__ignoreMap":114},[118,297,298,300,302],{"class":120,"line":121},[118,299,125],{"class":124},[118,301,128],{"class":124},[118,303,132],{"class":131},[118,305,306,308,310,312],{"class":120,"line":135},[118,307,139],{"class":138},[118,309,142],{"class":131},[118,311,146],{"class":145},[118,313,149],{"class":131},[118,315,316,319,321,324,326,329,331,334],{"class":120,"line":152},[118,317,318],{"class":138},"  replaces",[118,320,142],{"class":131},[118,322,323],{"class":160}," [",[118,325,185],{"class":131},[118,327,328],{"class":181},"program",[118,330,185],{"class":131},[118,332,333],{"class":160},"]",[118,335,149],{"class":131},[118,337,338,340,342],{"class":120,"line":164},[118,339,155],{"class":138},[118,341,142],{"class":131},[118,343,161],{"class":160},[118,345,346],{"class":120,"line":170},[118,347,167],{"class":131},[118,349,350,352,354,356,359,361],{"class":120,"line":190},[118,351,173],{"class":138},[118,353,142],{"class":131},[118,355,178],{"class":131},[118,357,358],{"class":181},"custom-program",[118,360,185],{"class":131},[118,362,149],{"class":131},[118,364,365,367,369,371,374,376],{"class":120,"line":207},[118,366,193],{"class":138},[118,368,142],{"class":131},[118,370,178],{"class":131},[118,372,373],{"class":181},"\u002Fdashboard\u002Fcustom-program",[118,375,185],{"class":131},[118,377,149],{"class":131},[118,379,380,382,384,386,389,391],{"class":120,"line":224},[118,381,210],{"class":138},[118,383,142],{"class":131},[118,385,178],{"class":131},[118,387,388],{"class":181},"i-heroicons-rectangle-stack",[118,390,185],{"class":131},[118,392,149],{"class":131},[118,394,395,397,399,401,404],{"class":120,"line":240},[118,396,227],{"class":138},[118,398,142],{"class":131},[118,400,178],{"class":131},[118,402,403],{"class":181},"Custom Program",[118,405,237],{"class":131},[118,407,408],{"class":120,"line":246},[118,409,243],{"class":131},[118,411,412],{"class":120,"line":252},[118,413,249],{"class":160},[118,415,417],{"class":120,"line":416},12,[118,418,255],{"class":131},[72,420,421,422,425],{},"Saat auto-discovery berjalan, ",[85,423,424],{},"shared\u002Futils\u002Flayers.ts"," akan:",[427,428,429,432,437],"ol",{},[263,430,431],{},"membaca plugin aktif;",[263,433,434,435,272],{},"mengumpulkan semua core id di ",[85,436,87],{},[263,438,439,440,443],{},"melewati core dengan id tersebut ketika menyusun ",[85,441,442],{},"extends",".",[72,445,446,447,450],{},"Dengan contoh di atas, ",[85,448,449],{},"cores\u002Fprogram"," tidak akan dimuat sebagai layer.",[94,452,454],{"id":453},"partial-override-komponen","Partial Override Komponen",[72,456,457],{},"Nuxt Layers dapat melakukan resolusi komponen berdasarkan prioritas layer, tetapi project saat ini tidak memiliki field config khusus untuk \"partial override\". Jika ingin mengganti komponen tertentu, lakukan dengan hati-hati:",[260,459,460,463,466],{},[263,461,462],{},"gunakan nama komponen yang sama dengan komponen target;",[263,464,465],{},"pastikan plugin aktif dan masuk komposisi layer;",[263,467,468],{},"verifikasi hasilnya di browser karena prioritas resolusi mengikuti aturan Nuxt Layers.",[72,470,471,472,443],{},"Untuk replacement yang eksplisit dan stabil, gunakan ",[85,473,87],{},[94,475,477],{"id":476},"override-sidebar","Override Sidebar",[72,479,480],{},"Sidebar mengikuti config, bukan hardcoded:",[260,482,483,489,495,501],{},[263,484,485,486,272],{},"item core berasal dari ",[85,487,488],{},"core.config.ts",[263,490,491,492,272],{},"item plugin berasal dari ",[85,493,494],{},"plugin.config.ts",[263,496,497,498,272],{},"item dinamis berasal dari ",[85,499,500],{},"sidebar.ts",[263,502,503,504,506],{},"core yang ada di ",[85,505,87],{}," tidak ditampilkan.",[72,508,509,510,512,513,516,517,520],{},"Jika item dari ",[85,511,500],{}," memiliki ",[85,514,515],{},"key"," yang sama dengan item statis, keduanya akan di-merge. Ini berguna untuk menambahkan ",[85,518,519],{},"children"," dinamis pada menu plugin.",[522,523],"hr",{},[72,525,526,527,443],{},"Siap mencoba? Ikuti panduan ",[528,529,531],"a",{"href":530},"\u002Fguides\u002Fcreate-plugin","Membuat Plugin Pertama Anda",[533,534,535],"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":537},[538,539,540,541],{"id":96,"depth":135,"text":97},{"id":283,"depth":135,"text":284},{"id":453,"depth":135,"text":454},{"id":476,"depth":135,"text":477},"Implementasi saat ini memakai dua mekanisme utama: extend lewat route\u002Flayer plugin, dan replace core lewat field replaces. Tidak ada field overrideMode yang dibaca oleh source saat ini.","md",null,{},{"icon":50},{"title":47,"description":542},"khji2G3QHRIu2E0LOTuBb-m5e5sB63uqa4au-hrbNPQ",[550,552],{"title":38,"path":44,"stem":45,"description":551,"icon":39,"children":-1},"Plugin adalah Nuxt Layer tambahan yang ditempatkan di folder plugins\u002F. Plugin dipakai untuk menambah fitur baru, mengganti core tertentu, atau memperkaya navigasi tanpa mengubah source di cores\u002F.",{"title":58,"path":59,"stem":60,"description":553,"icon":61,"children":-1},"Panduan ini membuat plugin sederhana bernama welcome-banner yang menambahkan halaman dashboard dan item sidebar baru.",1780026929986]