{ "name": "text-roll", "type": "registry:ui", "registryDependencies": [], "dependencies": [ "motion" ], "devDependencies": [], "tailwind": {}, "cssVars": { "light": {}, "dark": {} }, "files": [ { "path": "text-roll.tsx", "content": "'use client';\nimport {\n motion,\n VariantLabels,\n Target,\n TargetAndTransition,\n Transition,\n} from 'motion/react';\n\nexport type TextRollProps = {\n children: string;\n duration?: number;\n getEnterDelay?: (index: number) => number;\n getExitDelay?: (index: number) => number;\n className?: string;\n transition?: Transition;\n variants?: {\n enter: {\n initial: Target | VariantLabels | boolean;\n animate: TargetAndTransition | VariantLabels;\n };\n exit: {\n initial: Target | VariantLabels | boolean;\n animate: TargetAndTransition | VariantLabels;\n };\n };\n onAnimationComplete?: () => void;\n};\n\nexport function TextRoll({\n children,\n duration = 0.5,\n getEnterDelay = (i) => i * 0.1,\n getExitDelay = (i) => i * 0.1 + 0.2,\n className,\n transition = { ease: 'easeIn' },\n variants,\n onAnimationComplete,\n}: TextRollProps) {\n const defaultVariants = {\n enter: {\n initial: { rotateX: 0 },\n animate: { rotateX: 90 },\n },\n exit: {\n initial: { rotateX: 90 },\n animate: { rotateX: 0 },\n },\n } as const;\n\n const letters = children.split('');\n\n return (\n \n {letters.map((letter, i) => {\n return (\n \n );\n })}\n {children}\n \n );\n}\n", "type": "registry:ui" } ] }