{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "rising-glow", "type": "registry:ui", "title": "Rising Glow", "description": "Text wrapper with animated rising particles and soft glow effect.", "dependencies": [ "motion" ], "files": [ { "path": "registry/ruixenui/rising-glow.tsx", "content": "\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { motion } from \"motion/react\";\nimport { cn } from \"@/lib/utils\";\n\ntype RisingGlowProps = {\n width?: number | string;\n height?: number | string;\n particleCount?: number;\n particleColor?: string;\n className?: string;\n};\n\nexport const RisingGlow: React.FC = ({\n width = \"100%\",\n height = 120,\n particleCount = 20,\n particleColor = \"#00f7ff\",\n className,\n}) => {\n const [particles, setParticles] = useState<\n { left: number; size: number; delay: number }[]\n >([]);\n\n useEffect(() => {\n const arr = Array.from({ length: particleCount }, () => ({\n left: Math.random() * 100,\n size: Math.random() * 6 + 4,\n delay: Math.random() * 2,\n }));\n setParticles(arr);\n }, [particleCount]);\n\n return (\n \n {particles.map((p, i) => (\n \n ))}\n \n );\n};\n", "type": "registry:ui", "target": "components/ruixen/rising-glow.tsx" } ] }