{ "name": "spinner-sequential-pulse", "type": "registry:ui", "registryDependencies": [], "dependencies": [ "motion" ], "devDependencies": [], "tailwind": {}, "cssVars": { "light": {}, "dark": {} }, "files": [ { "path": "spinner-sequential-pulse.tsx", "content": "'use client';\n\nimport React from 'react';\nimport { motion } from 'motion/react';\nimport { cn } from '@/lib/utils';\n\nexport type SpinnerSequentialPulseProps = {\n /** Outer box size (px) */\n size?: number;\n /** Number of dots around the ring */\n count?: number;\n /** Dot diameter (px) */\n dotSize?: number;\n /** Dot color */\n color?: string;\n /** Track (ring) visibility */\n showTrack?: boolean;\n /** Track color */\n trackColor?: string;\n /** Track thickness (px) */\n trackWidth?: number;\n /** Show faint spokes from center to each dot */\n showSpokes?: boolean;\n /** Base cycle duration (seconds) */\n speed?: number;\n className?: string;\n};\n\nexport function SpinnerSequentialPulse({\n size = 120,\n count = 12,\n dotSize = 8,\n color = '#fff',\n showTrack = true,\n trackColor = 'rgba(255,255,255,0.1)',\n trackWidth = 2,\n showSpokes = true,\n speed = 1.2,\n className,\n}: SpinnerSequentialPulseProps) {\n const dots = Array.from({ length: count });\n const radius = size / 2 - dotSize * 1.25; // leave room for the dot\n const center = size / 2;\n\n return (\n