import { useState, useEffect } from "react"; interface UseStarfieldAnimationOptions { enableTwinkling?: boolean; enableFloating?: boolean; enableRotation?: boolean; enableScaling?: boolean; twinklingSpeed?: number; floatingSpeed?: number; rotationSpeed?: number; scalingSpeed?: number; floatingRange?: number; rotationRange?: number; scalingRange?: number; } interface PositionConfig { align: "left" | "right"; } export const useStarfieldAnimation = ( options: UseStarfieldAnimationOptions = {}, ) => { const { enableTwinkling = true, twinklingSpeed = 1000 } = options; const [twinkleOpacity, setTwinkleOpacity] = useState(1); useEffect(() => { if (!enableTwinkling) return; const twinklingTimer = setInterval(() => { setTwinkleOpacity((prev) => (prev === 1 ? 0.2 : 1)); }, twinklingSpeed); return () => clearInterval(twinklingTimer); }, [enableTwinkling, twinklingSpeed]); const getStarfieldTransform = ( buttonVariant: "expanded" | "minimized", positionConfig: PositionConfig, ): string => { if (buttonVariant === "expanded") { return "rotate(0deg)"; } return positionConfig.align === "right" ? "rotate(90deg)" : "rotate(-90deg)"; }; const getIconStyle = () => ({ opacity: twinkleOpacity, transition: "transform 0.8s ease-in-out, opacity 1s ease-in-out", }); return { getStarfieldTransform, getIconStyle, twinkleOpacity, floatingOffset: 0, rotationAngle: 0, scaleFactor: 1, }; };