I'm a Developer
4Projects & Eksperimen
8+bulan pengalaman
5Klien Aktif
86Skor Lighthouse
Kumpulan snippet, eksperimen, dan utilitas yang saya pakai sehari-hari. Silakan disalin, dipelajari, atau dimodifikasi.
Hook simple buat nge-delay value, cocok buat search input biar gak spam API call. Udah saya pake di production, works like a charm.
import { useState, useEffect } from 'react';
export function useDebounce<T>(value: T, delay: number = 500): T {
const [debounced, setDebounced] = useState(value);
useEffect(() => {
const timer = setTimeout(() => setDebounced(value), delay);
return () => clearTimeout(timer);
}, [value, delay]);
return debounced;
}
State React yang otomatis sinkron ke localStorage. Gak perlu useEffect manual di tiap komponen lagi — tinggal pakai hook-nya.
import { useEffect, useState } from 'react';
export function useLocalStorage<T>(key: string, initial: T) {
const [value, setValue] = useState<T>(() => {
try {
const raw = localStorage.getItem(key);
return raw ? (JSON.parse(raw) as T) : initial;
} catch {
return initial;
}
});
useEffect(() => {
localStorage.setItem(key, JSON.stringify(value));
}, [key, value]);
return [value, setValue] as const;
}
Dua utility CSS pakai clamp() biar layout otomatis scale dari mobile sampai desktop tanpa media query.
/* Fluid container — otomatis scale, tanpa media query */
.container {
width: 100%;
max-width: clamp(320px, 92vw, 1140px);
margin-inline: auto;
padding-inline: clamp(1rem, 4vw, 2rem);
}
/* Responsive grid auto-fit */
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: clamp(1rem, 2vw, 1.5rem);
}
Terbuka untuk proyek freelance, kolaborasi jangka panjang, maupun sekadar bertukar pikiran.