"use client" import { useEffect, useRef } from "react" function makeStars(count: number, minOp: number, maxOp: number, minSize: number, maxSize: number, dark: boolean): string { return Array.from({ length: count }, () => { const x = (Math.random() * 100).toFixed(2) const y = (Math.random() * 100).toFixed(2) const op = (Math.random() * (maxOp - minOp) + minOp).toFixed(2) const size = (minSize + Math.random() * (maxSize - minSize)).toFixed(1) const color = dark ? `rgba(255,255,255,${op})` : `rgba(80,70,60,${(parseFloat(op) * 0.35).toFixed(2)})` return `${x}vw ${y}vh 0 ${size}px ${color}` }).join(",") } export default function StarField() { const dimRef = useRef(null) const brightRef = useRef(null) useEffect(() => { const generate = () => { const dark = document.documentElement.classList.contains("dark") if (dimRef.current) dimRef.current.style.boxShadow = makeStars(280, 0.25, 0.6, 1, 1.2, dark) if (brightRef.current) brightRef.current.style.boxShadow = makeStars(40, 0.6, 1.0, 1.5, 2.5, dark) } generate() const observer = new MutationObserver(generate) observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] }) return () => observer.disconnect() }, []) const base: React.CSSProperties = { position: "absolute", width: 1, height: 1, top: 0, left: 0, borderRadius: "50%", } return (
{/* Dim star layer */}
{/* Bright star layer — subtle pulse */}
) }