import { useTheme } from 'next-themes'; import { useReducedMotion } from '../../hooks/useReducedMotion'; interface FilmGrainOverlayProps { opacity?: number; animated?: boolean; } /** * Film grain overlay for anodized metal/industrial feel * Uses SVG noise filter for subtle texture * Dark mode only — grain reads as dirt on light surfaces */ export function FilmGrainOverlay({ opacity = 0.03, animated = false }: FilmGrainOverlayProps) { const prefersReducedMotion = useReducedMotion(); const { resolvedTheme } = useTheme(); const shouldAnimate = animated && !prefersReducedMotion; if (resolvedTheme !== 'dark') return null; return ( ); }