frontend
Catatan teknis seputar web development, DevOps, dan integrasi AI.
104 artikel
- 13.04frontend
Teks Gradient Berubah Jadi Kotak Warna, Shorthand yang Me-Reset
Override light mode pakai shorthand background diam-diam me-reset background-clip:text dari base rule, jadi teks gradient tampil sebagai kotak warna.
TL;DR: Bug gradient text berubah jadi kotak warna muncul karena shorthand background me-reset background-clip:text dari base rule, padahal gradient-nya valid dan tidak ada error. Fix-nya cukup ganti ke longhand background-image supaya properti pemotong tetap hidup. Pelajarannya: pakai background-image untuk override tema, dan jadikan screengrab per tema langkah wajib sebelum push.
#css#frontend#tailwind - 12.44frontend
Ikon Footer yang Hilang Karena Kartunya Jadi Putih
Ikon GitHub dan badge Next.js putih hardcode lenyap begitu kartu footer light mode diubah jadi putih solid. Solusinya var(--foreground).
TL;DR: Commit d6b73b2 bikin kartu footer putih solid, dan ikon SVG yang hardcode putih ikut invisible karena white-on-white. Perbaikannya simpel: semua hex di Footer.tsx diganti var(--foreground), plus varian light gradient neon pakai palet GitHub yang lebih pekat biar kontras di light mode. Pelajarannya: warna yang mengikuti tema wajib pakai variabel, karena hex literal di komponen theme-aware cuma bom waktu.
#css#frontend#tailwind - 12.25frontend
Kartu Transparan yang Menghilang di Light Mode
Kartu bg-card/20 sampai /90 nyaris tak terlihat di light mode karena opacity modifier Tailwind v4 mengkompilasi warna jadi color-mix dengan var token.
TL;DR: Kartu portofolio pakai bg-card dengan opacity modifier Tailwind yang dikompilasi jadi color-mix terhadap variabel --card, jadi hasilnya tergantung tema. Saat latar light mode dibuat terang, campuran putih transparan menyatu dengan latar dan kartu jadi tak terlihat, padahal dark mode aman karena kontrasnya beda. Solusinya override CSS spesifik light mode yang memaksa background solid plus bayangan tipis.
#css#tailwind#frontend - 11.26frontend
Carousel Blog Saya Salah Pola, Daftar Vertikal Menang
Lima artikel tersembunyi di dalam carousel harus di geser satu per satu. Untuk navigasi blog, daftar vertikal terbukti lebih jujur.
TL;DR: Carousel di halaman Blog bikin artikel sulit ditemukan, padahal pola sama berhasil di halaman layanan. Bedanya ada di jenis konten: carousel cocok untuk showcase visual terbatas, tapi daftar artikel butuh navigasi yang bisa dipindai cepat. Solusinya simpel: daftar vertikal lima artikel terbaru, dua puluh baris kode dihapus, masalah selesai.
#ux#mobile#frontend - 10.59frontend
Carousel Mobile Pakai CSS Scroll Snap, Tanpa JavaScript
Lima kartu layanan vertikal di HP kepanjangan. Carousel manual dengan CSS scroll snap jadi jalan tengahnya, tanpa satu baris JavaScript.
TL;DR: Bagian Projects and Services dengan lima kartu vertikal kepanjangan di layar HP, bikin pengunjung berhenti di kartu pertama. Penulis sempat anti-carousel karena riset soal auto-rotate, tapi sadar masalah sebenarnya cuma panjang section di mobile. Solusinya carousel manual pakai CSS scroll snap tanpa JavaScript, dengan kartu berikutnya mengintip di tepi layar sebagai sinyal ada lanjutan.
#css#ux#mobile - 10.46frontend
Lima Capability Cards untuk Halaman Layanan Portfolio
Grid lima kartu layanan tinggal beberapa baris CSS. Yang berat justru menulis deskripsi pendek yang tidak terpotong dan menjaga shadow tetap konsisten.
TL;DR: Halaman layanan saya rombak dari daftar nama proyek jadi lima capability cards. Grid-nya gampang berkat resep CSS auto-fill dari MDN; yang makan waktu justru nulis copy pendek tanpa memotong teks, plus hover dan shadow konsisten sebagai penanda klik. Pelajarannya: tulis isinya dulu, layout menyusul.
#css#ux#frontend - 22.34frontend
Textarea React Diotomasi, Tapi Diam Saja
Teks terlihat di layar tapi React tidak tahu ada perubahan. Kenapa manual assignment gagal, dan cara bypass controlled component pakai native prototype setter.
TL;DR: Kalau isi textarea lewat assignment biasa, React tidak sadar karena setter aslinya sudah diganti wrapper React yang menelan event buatan. Solusinya panggil setter asli dari HTMLTextAreaElement.prototype, lalu dispatch event input dengan bubbles: true supaya React menangkap perubahannya. Tombol kirim yang cuma ikon tanpa teks? Cukup tekan Enter lewat API keyboard Playwright.
#deepseek#react#automation - 02.40frontend
DOM Chat AI Cuma Nyimpen Setengah Jawaban
Scraping jawaban chat AI dari DOM cuma dapat setengah karena virtualisasi. Jalur utuhnya: klik Copy, baca clipboard, plus kontrak output ke model.
TL;DR: Chat modern pakai virtualisasi, jadi DOM cuma snapshot yang terus berubah dan scraping innerText selalu kepotong. Solusinya klik tombol Copy lalu baca clipboard, dilapis accessibility tree dan innerText, dengan polling di tab baru biar stabil. Paling murah, kasih kontrak ke model: bungkus jawaban dalam blok kode ditutup sentinel ===SELESAI===.
#automation#playwright#llm - 15.29ai
Marker CTA_FLAG: YES yang Bocor ke Chat
Regex strip di akhir string nggak cukup: marker CTA dari LLM bisa lolos lewat tengah teks dan jalur streaming SSE sebelum post-processing jalan.
TL;DR: Marker CTA_FLAG: YES bocor ke user lewat dua jalur: LLM naruh marker di posisi acak yang luput dari regex ber-anchor $, dan jalur streaming SSE melewati post-processing. Patch-nya buang anchor dan strip marker di stream juga. Fix fundamentalnya: tombol CTA dirender dari field terstruktur, bukan ditumpang ke teks LLM lalu di-parse regex.
#llm#streaming#sse