'use client' import { useEffect, useRef, useState, type CSSProperties, type ReactNode, } from 'react' import { createStarfield, type StarfieldInstance, type StarfieldOptions, } from '../core/createStarfield' export type StarfieldProps = StarfieldOptions & { children?: ReactNode className?: string style?: CSSProperties /** Accessible label for the canvas. */ ariaLabel?: string } export function Starfield({ children, className, style, ariaLabel = 'Starfield background', ...options }: StarfieldProps) { const canvasRef = useRef(null) const instanceRef = useRef(null) const [initialOptions] = useState(options) useEffect(() => { const canvas = canvasRef.current if (!canvas) return instanceRef.current = createStarfield(canvas, initialOptions) return () => { instanceRef.current?.destroy() instanceRef.current = null } }, [initialOptions]) useEffect(() => { instanceRef.current?.setOptions(options) }) return (
{children != null ? (
{children}
) : null}
) } export default Starfield