{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "short-slide-right",
  "title": "Short Slide Right",
  "description": "The whole phrase glides in from the left as one compact move while words reveal in sequence through opacity.",
  "dependencies": ["remotion"],
  "files": [
    {
      "path": "registry/remocn/short-slide-right/index.tsx",
      "content": "\"use client\";\n\nimport { Easing, interpolate, useCurrentFrame } from \"remotion\";\n\nexport interface ShortSlideRightProps {\n  text: string;\n  distance?: number;\n  staggerDelay?: number;\n  fontSize?: number;\n  color?: string;\n  fontWeight?: number;\n  speed?: number;\n  className?: string;\n}\n\nexport function ShortSlideRight({\n  text,\n  distance = 24,\n  staggerDelay = 3,\n  fontSize = 72,\n  color = \"#171717\",\n  fontWeight = 600,\n  speed = 1,\n  className,\n}: ShortSlideRightProps) {\n  const frame = useCurrentFrame() * speed;\n\n  const words = text.split(\" \");\n\n  const enterDur = 16;\n  const travelDur = 8;\n  const wordOpacityDur = 6;\n  const easing = Easing.bezier(0.2, 0.8, 0.2, 1);\n\n  const x = interpolate(frame, [0, travelDur], [-distance, 0], {\n    extrapolateLeft: \"clamp\",\n    extrapolateRight: \"clamp\",\n    easing,\n  });\n\n  const blurVal = interpolate(frame, [0, enterDur], [1.2, 0], {\n    extrapolateLeft: \"clamp\",\n    extrapolateRight: \"clamp\",\n    easing,\n  });\n\n  return (\n    <div\n      style={{\n        position: \"absolute\",\n        inset: 0,\n        display: \"flex\",\n        alignItems: \"center\",\n        justifyContent: \"center\",\n        background: \"transparent\",\n      }}\n    >\n      <span\n        className={className}\n        style={{\n          fontSize,\n          fontWeight,\n          color,\n          letterSpacing: \"-0.03em\",\n          fontFamily:\n            \"var(--font-geist-sans), -apple-system, BlinkMacSystemFont, sans-serif\",\n          display: \"inline-block\",\n          translate: `${x}px`,\n          filter: `blur(${blurVal}px)`,\n        }}\n      >\n        {words.map((word, i) => {\n          const opacity = interpolate(\n            frame - i * staggerDelay,\n            [0, wordOpacityDur],\n            [0, 1],\n            {\n              extrapolateLeft: \"clamp\",\n              extrapolateRight: \"clamp\",\n              easing,\n            },\n          );\n          return (\n            <span\n              key={i}\n              style={{\n                display: \"inline-block\",\n                marginRight: \"0.25em\",\n                opacity,\n              }}\n            >\n              {word}\n            </span>\n          );\n        })}\n      </span>\n    </div>\n  );\n}\n",
      "type": "registry:component",
      "target": "components/remocn/short-slide-right.tsx"
    }
  ],
  "type": "registry:component"
}
