{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "text-shimmer",
  "dependencies": ["motion"],
  "files": [
    {
      "path": "registry/components/loading-ui/text-shimmer.tsx",
      "content": "\"use client\";\n\nimport React, { useMemo, type JSX } from \"react\";\nimport { motion } from \"motion/react\";\nimport { cn } from \"@/lib/utils\";\n\nexport type TextShimmerProps = {\n  children: string;\n  as?: React.ElementType;\n  className?: string;\n  duration?: number;\n  spread?: number;\n  baseColor?: string;\n  shimmerColor?: string;\n  style?: React.CSSProperties;\n};\n\nfunction TextShimmerComponent({\n  children,\n  as: Component = \"p\",\n  className,\n  duration = 2,\n  spread = 2,\n  baseColor,\n  shimmerColor,\n  style,\n}: TextShimmerProps) {\n  const MotionComponent = motion.create(\n    Component as keyof JSX.IntrinsicElements,\n  );\n\n  const dynamicSpread = useMemo(() => {\n    return children.length * spread;\n  }, [children, spread]);\n\n  return (\n    <MotionComponent\n      className={cn(\n        \"relative inline-block bg-size-[250%_100%,auto] bg-clip-text\",\n        \"[-webkit-text-fill-color:transparent]\",\n        \"[background-repeat:no-repeat,padding-box] [--bg:linear-gradient(90deg,#0000_calc(50%-var(--spread)),var(--base-gradient-color),#0000_calc(50%+var(--spread)))]\",\n        className,\n      )}\n      initial={{ backgroundPosition: \"100% center\" }}\n      animate={{ backgroundPosition: \"0% center\" }}\n      transition={{\n        repeat: Infinity,\n        duration,\n        ease: \"linear\",\n      }}\n      style={\n        {\n          ...style,\n          \"--spread\": `${dynamicSpread}px`,\n          \"--base-color\":\n            baseColor ?? \"color-mix(in oklab, currentColor 55%, transparent)\",\n          \"--base-gradient-color\": shimmerColor ?? \"currentColor\",\n          backgroundImage: `var(--bg), linear-gradient(var(--base-color), var(--base-color))`,\n        } as React.CSSProperties\n      }\n    >\n      {children}\n    </MotionComponent>\n  );\n}\n\nexport const TextShimmer = React.memo(TextShimmerComponent);\n",
      "type": "registry:component",
      "target": ""
    }
  ],
  "type": "registry:component"
}
