[{"data":1,"prerenderedAt":1064},["ShallowReactive",2],{"tech-dark-mode-search-nuxt-github-libraries":3},{"id":4,"title":5,"author":6,"body":7,"category":1048,"date":1049,"description":1050,"extension":1051,"image":1052,"meta":1053,"navigation":199,"path":1054,"readingTime":1055,"seo":1056,"stem":1057,"tags":1058,"__hash__":1063},"tech\u002Ftech\u002Fdark-mode-search-nuxt-github-libraries.md","Dark Mode & Search di Nuxt 3? Nggak Perlu Ribet — Cukup Tambah 2 Script","Zainul Fanani",{"type":8,"value":9,"toc":1035},"minimark",[10,15,19,22,34,37,41,46,61,64,96,100,108,111,137,139,143,146,153,400,406,420,423,426,924,930,932,936,943,973,986,988,992,995,1012,1015,1017,1031],[11,12,14],"h2",{"id":13},"dark-mode-search-mandatory-di-2026","Dark Mode & Search = Mandatory di 2026",[16,17,18],"p",{},"Kalo blog kamu belum punya dark mode dan search, rasanya kayak rumah tanpa lampu dan pintu — fungsional sih, tapi pengunjung pasti bete 😅",[16,20,21],{},"Tapi masalahnya... implementasi dark mode itu sering ribet. State management, CSS variables, localStorage, transition animation... Belum lagi search — butuh backend atau Algolia yang bikin tagihan naik.",[16,23,24,25,29,30,33],{},"Nah, ternyata ada cara ",[26,27,28],"strong",{},"super simpel"," yang jarang orang bahas: pakai library GitHub yang tinggal tempel via CDN. ",[26,31,32],{},"Zero npm install."," Seriusan.",[35,36],"hr",{},[11,38,40],{"id":39},"siapa-penolong-kita","Siapa Penolong Kita?",[42,43,45],"h3",{"id":44},"darkmodejs-16k-stars-di-github","🌙 Darkmode.js — 16k+ Stars di GitHub",[16,47,48,55,56,60],{},[49,50,54],"a",{"href":51,"rel":52},"https:\u002F\u002Fgithub.com\u002Frichardtorres314\u002Fdarkmode-js",[53],"nofollow","Darkmode.js"," itu library kecil yang bikin dark mode jalan otomatis di website kamu. Tinggal load script-nya, panggil ",[57,58,59],"code",{},"new Darkmode()",", dan boom — website kamu punya toggle dark\u002Flight mode.",[16,62,63],{},"Yang keren:",[65,66,67,75,81,87],"ul",{},[68,69,70,71,74],"li",{},"✅ ",[26,72,73],{},"Tanpa konfigurasi CSS"," — otomatis invert warna halaman",[68,76,70,77,80],{},[26,78,79],{},"Smooth transition"," — animasi flip yang keren pas toggle",[68,82,70,83,86],{},[26,84,85],{},"Remember preference"," — pilihan user tersimpan di localStorage",[68,88,70,89,92,93],{},[26,90,91],{},"CDN ready"," — nggak perlu bundler, tinggal tambah ",[57,94,95],{},"\u003Cscript>",[42,97,99],{"id":98},"fusejs-19k-stars-di-github","🔍 Fuse.js — 19k+ Stars di GitHub",[16,101,102,107],{},[49,103,106],{"href":104,"rel":105},"https:\u002F\u002Fgithub.com\u002Fkrisk\u002FFuse",[53],"Fuse.js"," adalah fuzzy-search library yang super ringan. Artinya, user nggak perlu ketik persis — ketik \"nuxt tut\" tetap nemu \"Nuxt Tutorial\".",[16,109,110],{},"Fitur yang bikin aku suka:",[65,112,113,119,125,131],{},[68,114,70,115,118],{},[26,116,117],{},"Fuzzy matching"," — typo kecil tetap ketemu",[68,120,70,121,124],{},[26,122,123],{},"Super ringan"," — ~5KB minified",[68,126,70,127,130],{},[26,128,129],{},"Bisa search di array of objects"," — cocok buat list artikel",[68,132,70,133,136],{},[26,134,135],{},"Zero dependency"," — tinggal load dan pakai",[35,138],{},[11,140,142],{"id":141},"cara-pasang-singkat-jelas","Cara Pasang — Singkat & Jelas",[42,144,54],{"id":145},"darkmodejs",[16,147,148,149,152],{},"Tambahkan ini di ",[57,150,151],{},"app.vue"," atau layout kamu:",[154,155,160],"pre",{"className":156,"code":157,"language":158,"meta":159,"style":159},"language-html shiki shiki-themes github-light github-dark","\u003Cscript src=\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fdarkmode-js@1.5.7\u002Flib\u002Fdarkmode-js.min.js\">\u003C\u002Fscript>\n\n\u003Cscript>\n  function addDarkmodeWidget() {\n    new Darkmode({\n      bottom: '64px',\n      right: 'unset',\n      left: '32px',\n      time: '0.5s',\n      mixColor: '#fff',\n      backgroundColor: '#fff',\n      buttonColorDark: '#100f2c',\n      buttonColorLight: '#fff',\n      label: '🌓',\n      saveInCookies: false,\n      autoMatchOsTheme: true\n    }).showWidget()\n  }\n  window.addEventListener('load', addDarkmodeWidget)\n\u003C\u002Fscript>\n","html","",[57,161,162,194,201,210,223,235,247,258,269,280,291,301,312,322,333,345,354,366,372,390],{"__ignoreMap":159},[163,164,167,171,175,179,182,186,189,191],"span",{"class":165,"line":166},"line",1,[163,168,170],{"class":169},"sVt8B","\u003C",[163,172,174],{"class":173},"s9eBZ","script",[163,176,178],{"class":177},"sScJk"," src",[163,180,181],{"class":169},"=",[163,183,185],{"class":184},"sZZnC","\"https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Fdarkmode-js@1.5.7\u002Flib\u002Fdarkmode-js.min.js\"",[163,187,188],{"class":169},">\u003C\u002F",[163,190,174],{"class":173},[163,192,193],{"class":169},">\n",[163,195,197],{"class":165,"line":196},2,[163,198,200],{"emptyLinePlaceholder":199},true,"\n",[163,202,204,206,208],{"class":165,"line":203},3,[163,205,170],{"class":169},[163,207,174],{"class":173},[163,209,193],{"class":169},[163,211,213,217,220],{"class":165,"line":212},4,[163,214,216],{"class":215},"szBVR","  function",[163,218,219],{"class":177}," addDarkmodeWidget",[163,221,222],{"class":169},"() {\n",[163,224,226,229,232],{"class":165,"line":225},5,[163,227,228],{"class":215},"    new",[163,230,231],{"class":177}," Darkmode",[163,233,234],{"class":169},"({\n",[163,236,238,241,244],{"class":165,"line":237},6,[163,239,240],{"class":169},"      bottom: ",[163,242,243],{"class":184},"'64px'",[163,245,246],{"class":169},",\n",[163,248,250,253,256],{"class":165,"line":249},7,[163,251,252],{"class":169},"      right: ",[163,254,255],{"class":184},"'unset'",[163,257,246],{"class":169},[163,259,261,264,267],{"class":165,"line":260},8,[163,262,263],{"class":169},"      left: ",[163,265,266],{"class":184},"'32px'",[163,268,246],{"class":169},[163,270,272,275,278],{"class":165,"line":271},9,[163,273,274],{"class":169},"      time: ",[163,276,277],{"class":184},"'0.5s'",[163,279,246],{"class":169},[163,281,283,286,289],{"class":165,"line":282},10,[163,284,285],{"class":169},"      mixColor: ",[163,287,288],{"class":184},"'#fff'",[163,290,246],{"class":169},[163,292,294,297,299],{"class":165,"line":293},11,[163,295,296],{"class":169},"      backgroundColor: ",[163,298,288],{"class":184},[163,300,246],{"class":169},[163,302,304,307,310],{"class":165,"line":303},12,[163,305,306],{"class":169},"      buttonColorDark: ",[163,308,309],{"class":184},"'#100f2c'",[163,311,246],{"class":169},[163,313,315,318,320],{"class":165,"line":314},13,[163,316,317],{"class":169},"      buttonColorLight: ",[163,319,288],{"class":184},[163,321,246],{"class":169},[163,323,325,328,331],{"class":165,"line":324},14,[163,326,327],{"class":169},"      label: ",[163,329,330],{"class":184},"'🌓'",[163,332,246],{"class":169},[163,334,336,339,343],{"class":165,"line":335},15,[163,337,338],{"class":169},"      saveInCookies: ",[163,340,342],{"class":341},"sj4cs","false",[163,344,246],{"class":169},[163,346,348,351],{"class":165,"line":347},16,[163,349,350],{"class":169},"      autoMatchOsTheme: ",[163,352,353],{"class":341},"true\n",[163,355,357,360,363],{"class":165,"line":356},17,[163,358,359],{"class":169},"    }).",[163,361,362],{"class":177},"showWidget",[163,364,365],{"class":169},"()\n",[163,367,369],{"class":165,"line":368},18,[163,370,371],{"class":169},"  }\n",[163,373,375,378,381,384,387],{"class":165,"line":374},19,[163,376,377],{"class":169},"  window.",[163,379,380],{"class":177},"addEventListener",[163,382,383],{"class":169},"(",[163,385,386],{"class":184},"'load'",[163,388,389],{"class":169},", addDarkmodeWidget)\n",[163,391,393,396,398],{"class":165,"line":392},20,[163,394,395],{"class":169},"\u003C\u002F",[163,397,174],{"class":173},[163,399,193],{"class":169},[16,401,402,403],{},"Done. Dark mode jalan. ",[26,404,405],{},"Segitu aja.",[407,408,409],"blockquote",{},[16,410,411,412,415,416,419],{},"💡 ",[26,413,414],{},"Pro tip:"," Set ",[57,417,418],{},"autoMatchOsTheme: true"," biar otomatis ikut tema OS user. Kalo user pakai dark mode di laptop-nya, website langsung dark juga.",[42,421,106],{"id":422},"fusejs",[16,424,425],{},"Buat search, kamu perlu dua hal: input field dan sedikit JavaScript:",[154,427,431],{"className":428,"code":429,"language":430,"meta":159,"style":159},"language-vue shiki shiki-themes github-light github-dark","\u003Ctemplate>\n  \u003Cdiv class=\"search-container\">\n    \u003Cinput\n      v-model=\"query\"\n      placeholder=\"Cari artikel...\"\n      class=\"search-input\"\n    \u002F>\n    \u003Cdiv v-if=\"results.length > 0\" class=\"results\">\n      \u003CNuxtLink\n        v-for=\"result in results\"\n        :key=\"result.item.slug\"\n        :to=\"result.item.path\"\n        class=\"result-item\"\n      >\n        {{ result.item.title }}\n      \u003C\u002FNuxtLink>\n    \u003C\u002Fdiv>\n  \u003C\u002Fdiv>\n\u003C\u002Ftemplate>\n\n\u003Cscript setup>\nimport Fuse from 'fuse.js'\n\nconst query = ref('')\nconst articles = queryContent('\u002Ftech').only(['title', 'description', 'path', 'slug']).sort({ date: -1 }).limit(50)\nconst { data: posts } = await useAsyncData('search-posts', () => articles)\n\nconst fuse = computed(() => new Fuse(posts.value || [], {\n  keys: ['title', 'description'],\n  threshold: 0.3\n}))\n\nconst results = computed(() =>\n  query.value ? fuse.value.search(query.value) : []\n)\n\u003C\u002Fscript>\n","vue",[57,432,433,442,460,468,478,488,498,503,526,534,544,554,564,574,579,584,594,603,612,620,624,636,651,656,679,753,796,801,834,849,858,864,869,886,910,915],{"__ignoreMap":159},[163,434,435,437,440],{"class":165,"line":166},[163,436,170],{"class":169},[163,438,439],{"class":173},"template",[163,441,193],{"class":169},[163,443,444,447,450,453,455,458],{"class":165,"line":196},[163,445,446],{"class":169},"  \u003C",[163,448,449],{"class":173},"div",[163,451,452],{"class":177}," class",[163,454,181],{"class":169},[163,456,457],{"class":184},"\"search-container\"",[163,459,193],{"class":169},[163,461,462,465],{"class":165,"line":203},[163,463,464],{"class":169},"    \u003C",[163,466,467],{"class":173},"input\n",[163,469,470,473,475],{"class":165,"line":212},[163,471,472],{"class":177},"      v-model",[163,474,181],{"class":169},[163,476,477],{"class":184},"\"query\"\n",[163,479,480,483,485],{"class":165,"line":225},[163,481,482],{"class":177},"      placeholder",[163,484,181],{"class":169},[163,486,487],{"class":184},"\"Cari artikel...\"\n",[163,489,490,493,495],{"class":165,"line":237},[163,491,492],{"class":177},"      class",[163,494,181],{"class":169},[163,496,497],{"class":184},"\"search-input\"\n",[163,499,500],{"class":165,"line":249},[163,501,502],{"class":169},"    \u002F>\n",[163,504,505,507,509,512,514,517,519,521,524],{"class":165,"line":260},[163,506,464],{"class":169},[163,508,449],{"class":173},[163,510,511],{"class":177}," v-if",[163,513,181],{"class":169},[163,515,516],{"class":184},"\"results.length > 0\"",[163,518,452],{"class":177},[163,520,181],{"class":169},[163,522,523],{"class":184},"\"results\"",[163,525,193],{"class":169},[163,527,528,531],{"class":165,"line":271},[163,529,530],{"class":169},"      \u003C",[163,532,533],{"class":173},"NuxtLink\n",[163,535,536,539,541],{"class":165,"line":282},[163,537,538],{"class":177},"        v-for",[163,540,181],{"class":169},[163,542,543],{"class":184},"\"result in results\"\n",[163,545,546,549,551],{"class":165,"line":293},[163,547,548],{"class":177},"        :key",[163,550,181],{"class":169},[163,552,553],{"class":184},"\"result.item.slug\"\n",[163,555,556,559,561],{"class":165,"line":303},[163,557,558],{"class":177},"        :to",[163,560,181],{"class":169},[163,562,563],{"class":184},"\"result.item.path\"\n",[163,565,566,569,571],{"class":165,"line":314},[163,567,568],{"class":177},"        class",[163,570,181],{"class":169},[163,572,573],{"class":184},"\"result-item\"\n",[163,575,576],{"class":165,"line":324},[163,577,578],{"class":169},"      >\n",[163,580,581],{"class":165,"line":335},[163,582,583],{"class":169},"        {{ result.item.title }}\n",[163,585,586,589,592],{"class":165,"line":347},[163,587,588],{"class":169},"      \u003C\u002F",[163,590,591],{"class":173},"NuxtLink",[163,593,193],{"class":169},[163,595,596,599,601],{"class":165,"line":356},[163,597,598],{"class":169},"    \u003C\u002F",[163,600,449],{"class":173},[163,602,193],{"class":169},[163,604,605,608,610],{"class":165,"line":368},[163,606,607],{"class":169},"  \u003C\u002F",[163,609,449],{"class":173},[163,611,193],{"class":169},[163,613,614,616,618],{"class":165,"line":374},[163,615,395],{"class":169},[163,617,439],{"class":173},[163,619,193],{"class":169},[163,621,622],{"class":165,"line":392},[163,623,200],{"emptyLinePlaceholder":199},[163,625,627,629,631,634],{"class":165,"line":626},21,[163,628,170],{"class":169},[163,630,174],{"class":173},[163,632,633],{"class":177}," setup",[163,635,193],{"class":169},[163,637,639,642,645,648],{"class":165,"line":638},22,[163,640,641],{"class":215},"import",[163,643,644],{"class":169}," Fuse ",[163,646,647],{"class":215},"from",[163,649,650],{"class":184}," 'fuse.js'\n",[163,652,654],{"class":165,"line":653},23,[163,655,200],{"emptyLinePlaceholder":199},[163,657,659,662,665,668,671,673,676],{"class":165,"line":658},24,[163,660,661],{"class":215},"const",[163,663,664],{"class":341}," query",[163,666,667],{"class":215}," =",[163,669,670],{"class":177}," ref",[163,672,383],{"class":169},[163,674,675],{"class":184},"''",[163,677,678],{"class":169},")\n",[163,680,682,684,687,689,692,694,697,700,703,706,709,712,715,717,720,722,725,728,731,734,737,740,743,746,748,751],{"class":165,"line":681},25,[163,683,661],{"class":215},[163,685,686],{"class":341}," articles",[163,688,667],{"class":215},[163,690,691],{"class":177}," queryContent",[163,693,383],{"class":169},[163,695,696],{"class":184},"'\u002Ftech'",[163,698,699],{"class":169},").",[163,701,702],{"class":177},"only",[163,704,705],{"class":169},"([",[163,707,708],{"class":184},"'title'",[163,710,711],{"class":169},", ",[163,713,714],{"class":184},"'description'",[163,716,711],{"class":169},[163,718,719],{"class":184},"'path'",[163,721,711],{"class":169},[163,723,724],{"class":184},"'slug'",[163,726,727],{"class":169},"]).",[163,729,730],{"class":177},"sort",[163,732,733],{"class":169},"({ date: ",[163,735,736],{"class":215},"-",[163,738,739],{"class":341},"1",[163,741,742],{"class":169}," }).",[163,744,745],{"class":177},"limit",[163,747,383],{"class":169},[163,749,750],{"class":341},"50",[163,752,678],{"class":169},[163,754,756,758,761,765,768,771,774,776,779,782,784,787,790,793],{"class":165,"line":755},26,[163,757,661],{"class":215},[163,759,760],{"class":169}," { ",[163,762,764],{"class":763},"s4XuR","data",[163,766,767],{"class":169},": ",[163,769,770],{"class":341},"posts",[163,772,773],{"class":169}," } ",[163,775,181],{"class":215},[163,777,778],{"class":215}," await",[163,780,781],{"class":177}," useAsyncData",[163,783,383],{"class":169},[163,785,786],{"class":184},"'search-posts'",[163,788,789],{"class":169},", () ",[163,791,792],{"class":215},"=>",[163,794,795],{"class":169}," articles)\n",[163,797,799],{"class":165,"line":798},27,[163,800,200],{"emptyLinePlaceholder":199},[163,802,804,806,809,811,814,817,819,822,825,828,831],{"class":165,"line":803},28,[163,805,661],{"class":215},[163,807,808],{"class":341}," fuse",[163,810,667],{"class":215},[163,812,813],{"class":177}," computed",[163,815,816],{"class":169},"(() ",[163,818,792],{"class":215},[163,820,821],{"class":215}," new",[163,823,824],{"class":177}," Fuse",[163,826,827],{"class":169},"(posts.value ",[163,829,830],{"class":215},"||",[163,832,833],{"class":169}," [], {\n",[163,835,837,840,842,844,846],{"class":165,"line":836},29,[163,838,839],{"class":169},"  keys: [",[163,841,708],{"class":184},[163,843,711],{"class":169},[163,845,714],{"class":184},[163,847,848],{"class":169},"],\n",[163,850,852,855],{"class":165,"line":851},30,[163,853,854],{"class":169},"  threshold: ",[163,856,857],{"class":341},"0.3\n",[163,859,861],{"class":165,"line":860},31,[163,862,863],{"class":169},"}))\n",[163,865,867],{"class":165,"line":866},32,[163,868,200],{"emptyLinePlaceholder":199},[163,870,872,874,877,879,881,883],{"class":165,"line":871},33,[163,873,661],{"class":215},[163,875,876],{"class":341}," results",[163,878,667],{"class":215},[163,880,813],{"class":177},[163,882,816],{"class":169},[163,884,885],{"class":215},"=>\n",[163,887,889,892,895,898,901,904,907],{"class":165,"line":888},34,[163,890,891],{"class":169},"  query.value ",[163,893,894],{"class":215},"?",[163,896,897],{"class":169}," fuse.value.",[163,899,900],{"class":177},"search",[163,902,903],{"class":169},"(query.value) ",[163,905,906],{"class":215},":",[163,908,909],{"class":169}," []\n",[163,911,913],{"class":165,"line":912},35,[163,914,678],{"class":169},[163,916,918,920,922],{"class":165,"line":917},36,[163,919,395],{"class":169},[163,921,174],{"class":173},[163,923,193],{"class":169},[16,925,926,929],{},[57,927,928],{},"threshold: 0.3"," artinya toleran sama typo. Makin kecil angkanya, makin ketat pencariannya.",[35,931],{},[11,933,935],{"id":934},"kenapa-ini-pendekatan-yang-cheat","Kenapa Ini Pendekatan yang \"Cheat\"?",[16,937,938,939,942],{},"Sebenarnya untuk project besar, mendingan pakai CSS variables + Tailwind dark class untuk dark mode, dan Algolia atau server-side search. Tapi buat ",[26,940,941],{},"blog pribadi atau project kecil",", pendekatan CDN ini:",[65,944,945,952,959,966],{},[68,946,947,948,951],{},"🚀 ",[26,949,950],{},"5 menit setup"," dari nol sampai jalan",[68,953,954,955,958],{},"📦 ",[26,956,957],{},"Zero bundle size increase"," — library di-load terpisah",[68,960,961,962,965],{},"🔧 ",[26,963,964],{},"Zero config"," — tinggal copy-paste",[68,967,968,969,972],{},"💰 ",[26,970,971],{},"Gratis"," — nggak perlu Algolia atau backend",[407,974,975],{},[16,976,977,978,981,982,985],{},"⚠️ ",[26,979,980],{},"Catatan:"," Darkmode.js pakai CSS filter inversion, jadi warna gambar bisa sedikit berubah di dark mode. Buat kontrol penuh, mendingan pakai Tailwind ",[57,983,984],{},"dark:"," classes.",[35,987],{},[11,989,991],{"id":990},"hasilnya","Hasilnya?",[16,993,994],{},"Blog kamu langsung punya dua fitur yang bikin pengunjung betah:",[996,997,998,1005],"ol",{},[68,999,1000,1001,1004],{},"🌙 ",[26,1002,1003],{},"Dark mode"," — mata nggak pedes baca malam",[68,1006,1007,1008,1011],{},"🔍 ",[26,1009,1010],{},"Search"," — artikel lama gampang ditemukan",[16,1013,1014],{},"Fitur sederhana, tapi impact-nya besar banget buat UX.",[35,1016],{},[407,1018,1019],{},[16,1020,1021,1022,1025,1026],{},"📎 ",[26,1023,1024],{},"Source:"," Tutorial lengkap di ",[49,1027,1030],{"href":1028,"rel":1029},"https:\u002F\u002Fgithub.com\u002Ffanani-radian\u002Fopenclaw-sumopod\u002Fblob\u002Fmain\u002Ftutorials\u002Fdark-mode-search-nuxt-github-libraries.md",[53],"GitHub OpenClaw Sumopod",[1032,1033,1034],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":159,"searchDepth":196,"depth":196,"links":1036},[1037,1038,1042,1046,1047],{"id":13,"depth":196,"text":14},{"id":39,"depth":196,"text":40,"children":1039},[1040,1041],{"id":44,"depth":203,"text":45},{"id":98,"depth":203,"text":99},{"id":141,"depth":196,"text":142,"children":1043},[1044,1045],{"id":145,"depth":203,"text":54},{"id":422,"depth":203,"text":106},{"id":934,"depth":196,"text":935},{"id":990,"depth":196,"text":991},"tech","2026-04-03","Mau pasang dark mode dan search di blog Nuxt 3 kamu? Tanpa npm install, tanpa plugin ribet. Cukup tambah 2 library dari CDN — Darkmode.js dan Fuse.js.","md","\u002Fimages\u002Fposts\u002Fdark-mode-search-og.jpg",{},"\u002Ftech\u002Fdark-mode-search-nuxt-github-libraries","3",{"title":5,"description":1050},"tech\u002Fdark-mode-search-nuxt-github-libraries",[1059,1060,1061,1062],"dark-mode","nuxt","javascript","tutorial","3772UueCnu1pmn4K3Pd3IksCwckEXJmbiy99SwXaWQ4",1775317693214]