{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "remocn",
  "homepage": "https://remocn.dev",
  "items": [
    {
      "name": "soft-blur-in",
      "title": "Soft Blur In",
      "description": "Per-character fade-in with a gentle blur and upward motion. Apple's signature hero-title reveal.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/soft-blur-in/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/soft-blur-in.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "per-character-rise",
      "title": "Per Character Rise",
      "description": "Letters slide up from below with no blur — crisp, deliberate, kinetic.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/per-character-rise/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/per-character-rise.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "bottom-up-letters",
      "title": "Bottom-Up Letters",
      "description": "Letters rise from below in a pronounced staircase, one symbol at a time, with zero blur.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/bottom-up-letters/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/bottom-up-letters.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "top-down-letters",
      "title": "Top-Down Letters",
      "description": "Letters descend from above in a pronounced staircase, one symbol at a time, with zero blur.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/top-down-letters/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/top-down-letters.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "spring-scale-in",
      "title": "Spring Scale In",
      "description": "Words pop in with a soft overshoot scale, like a physical spring settling into place.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/spring-scale-in/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/spring-scale-in.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "micro-scale-fade",
      "title": "Micro Scale Fade",
      "description": "A calm, tiny scale pop used as subtle premium polish for labels and headings.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/micro-scale-fade/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/micro-scale-fade.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "scale-down-fade",
      "title": "Scale Down Fade",
      "description": "Subtle premium settle-in with a restrained scale-down fade on exit.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/scale-down-fade/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/scale-down-fade.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "blur-out-up",
      "title": "Blur Out Up",
      "description": "Words arrive clean and depart upward with increasing blur for airy exits.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/blur-out-up/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/blur-out-up.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "focus-blur-resolve",
      "title": "Focus Blur Resolve",
      "description": "A premium focus pull from heavy blur to crisp text, then a soft blur-out exit.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/focus-blur-resolve/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/focus-blur-resolve.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "line-by-line-slide",
      "title": "Line-by-Line Slide",
      "description": "Each line enters from the left with a staggered slide and exits to the right for a flowing paragraph reveal.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/line-by-line-slide/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/line-by-line-slide.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "per-word-crossfade",
      "title": "Per-Word Crossfade",
      "description": "Words gently fade into place one after another, with a short vertical drift for a calm keynote rhythm.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/per-word-crossfade/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/per-word-crossfade.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "fade-through",
      "title": "Fade Through",
      "description": "A Material-style content transition: old fades out, new fades in with a soft delay.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/fade-through/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/fade-through.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shared-axis-y",
      "title": "Shared Axis Y",
      "description": "Per-word hard-cut transition with staircase timing for sharp editorial swaps.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/shared-axis-y/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shared-axis-y.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shared-axis-z",
      "title": "Shared Axis Z",
      "description": "Scale-based shared-axis transition for focus shifts and context depth.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/shared-axis-z/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shared-axis-z.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "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",
          "type": "registry:component",
          "target": "components/remocn/short-slide-right.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "kinetic-center-build",
      "title": "Kinetic Center Build",
      "description": "A word appears in the center; each new word enters from the right and pushes the line until the full phrase locks centered.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/kinetic-center-build/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/kinetic-center-build.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "short-slide-down",
      "title": "Short Slide Down",
      "description": "Each new word drops in from above into its own line and pushes the stack downward until a centered three-line composition locks in place.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/short-slide-down/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/short-slide-down.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "typewriter",
      "title": "Typewriter",
      "description": "Character-by-character text reveal with a deterministic blinking cursor.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui", "@remocn/caret"],
      "files": [
        {
          "path": "registry/remocn/typewriter/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/typewriter.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "inline-highlight",
      "title": "Inline Highlight",
      "description": "Animates one word inside a sentence from a base color to a brand color.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/inline-highlight/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/inline-highlight.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "strikethrough-replace",
      "title": "Strikethrough Replace",
      "description": "Draws a strike line across old text then reveals new text in its place.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/strikethrough-replace/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/strikethrough-replace.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "staggered-fade-up",
      "title": "Staggered Fade Up",
      "description": "Words fade in and slide up one after another with a configurable delay.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/staggered-fade-up/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/staggered-fade-up.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "mask-reveal-up",
      "title": "Mask Reveal Up",
      "description": "Lines reveal upward with a soft masked feel and compact stagger.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/mask-reveal-up/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/mask-reveal-up.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "tracking-in",
      "title": "Tracking In",
      "description": "Letter-spacing collapses and blur clears with a springy motion.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/tracking-in/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/tracking-in.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shimmer-sweep",
      "title": "Shimmer Sweep",
      "description": "Light shine sweeps across muted text via background-clip:text.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/shimmer-sweep/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shimmer-sweep.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "marker-highlight",
      "title": "Marker Highlight",
      "description": "Colored marker block draws behind a phrase as the text color shifts.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/marker-highlight/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/marker-highlight.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "slot-machine-roll",
      "title": "Slot Machine Roll",
      "description": "Vertical reel scrolls characters from one value to another.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/slot-machine-roll/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/slot-machine-roll.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "matrix-decode",
      "title": "Matrix Decode",
      "description": "Random scramble resolves left-to-right into the target text.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/matrix-decode/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/matrix-decode.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "rgb-glitch-text",
      "title": "RGB Glitch Text",
      "description": "Three RGB-offset text copies jitter for a brief glitch window.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/rgb-glitch-text/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/rgb-glitch-text.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "infinite-marquee",
      "title": "Infinite Marquee",
      "description": "Seamlessly looping horizontal text strip with optional stroke style.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/infinite-marquee/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/infinite-marquee.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "mesh-gradient-bg",
      "title": "Mesh Gradient Background",
      "description": "Living gradient with amorphous color blobs slowly drifting across the frame.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/mesh-gradient-bg/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/mesh-gradient-bg.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-mesh-gradient",
      "title": "Shader Mesh Gradient",
      "description": "WebGL mesh gradient backdrop driven per-frame for deterministic Remotion renders.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-mesh-gradient/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-mesh-gradient.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-grain-gradient",
      "title": "Shader Grain Gradient",
      "description": "Grainy multi-stop gradient that drifts slowly with film-grain texture over the blend.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-grain-gradient/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-grain-gradient.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-warp",
      "title": "Shader Warp",
      "description": "Domain-warped color field that folds and stretches like liquid.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-warp/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-warp.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-swirl",
      "title": "Shader Swirl",
      "description": "Concentric bands swirling around a center point.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-swirl/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-swirl.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-water",
      "title": "Shader Water",
      "description": "Caustic water-surface ripples with subtle refraction.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-water/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-water.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-spiral",
      "title": "Shader Spiral",
      "description": "Rotating spiral arms radiating from the center.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-spiral/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-spiral.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-liquid-metal",
      "title": "Shader Liquid Metal",
      "description": "Molten metallic surface with flowing specular highlights.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-liquid-metal/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-liquid-metal.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-color-panels",
      "title": "Shader Color Panels",
      "description": "Overlapping translucent color panels sliding past each other.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-color-panels/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-color-panels.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-neuro-noise",
      "title": "Shader Neuro Noise",
      "description": "Organic neural-web noise field that slowly morphs.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-neuro-noise/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-neuro-noise.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-perlin-noise",
      "title": "Shader Perlin Noise",
      "description": "Classic Perlin noise clouds drifting across the frame.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-perlin-noise/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-perlin-noise.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-simplex-noise",
      "title": "Shader Simplex Noise",
      "description": "Simplex noise flow field, smoother than Perlin.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-simplex-noise/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-simplex-noise.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-voronoi",
      "title": "Shader Voronoi",
      "description": "Animated Voronoi cells shifting and re-tessellating.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-voronoi/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-voronoi.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-dot-orbit",
      "title": "Shader Dot Orbit",
      "description": "Dots orbiting on concentric paths across the frame.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-dot-orbit/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-dot-orbit.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-dithering",
      "title": "Shader Dithering",
      "description": "Ordered-dither shading over an animated gradient field.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-dithering/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-dithering.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-god-rays",
      "title": "Shader God Rays",
      "description": "Volumetric light rays radiating from an off-screen source.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-god-rays/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-god-rays.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-smoke-ring",
      "title": "Shader Smoke Ring",
      "description": "Soft smoke ring curling and dissipating in place.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-smoke-ring/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-smoke-ring.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-metaballs",
      "title": "Shader Metaballs",
      "description": "Organic blobs merging and splitting like lava.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-metaballs/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-metaballs.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "shader-pulsing-border",
      "title": "Shader Pulsing Border",
      "description": "Glowing border frame that pulses around the edges.",
      "dependencies": ["@paper-design/shaders-react"],
      "files": [
        {
          "path": "registry/remocn/shader-pulsing-border/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/shader-pulsing-border.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "dynamic-grid",
      "title": "Dynamic Grid",
      "description": "Subtle moving grid background with configurable cell size and direction.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/dynamic-grid/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/dynamic-grid.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "simulated-cursor",
      "title": "Simulated Cursor",
      "description": "Animated mouse cursor moving between waypoints with click ripple feedback.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/simulated-cursor/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/simulated-cursor.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "swirl-dissolve",
      "title": "Swirl Dissolve",
      "description": "A swirl shader transition that unwinds open and winds shut to reveal the next scene.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "registryDependencies": ["@remocn/shader-swirl"],
      "files": [
        {
          "path": "registry/remocn/swirl-dissolve/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/swirl-dissolve.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "dither-dissolve",
      "title": "Dither Dissolve",
      "description": "A dithering shader transition that dissolves one scene into the next.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "registryDependencies": ["@remocn/shader-dithering"],
      "files": [
        {
          "path": "registry/remocn/dither-dissolve/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/dither-dissolve.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "perlin-dissolve",
      "title": "Perlin Dissolve",
      "description": "A perlin-noise shader transition that sweeps its noise threshold to dissolve one scene into the next.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "registryDependencies": ["@remocn/shader-perlin-noise"],
      "files": [
        {
          "path": "registry/remocn/perlin-dissolve/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/perlin-dissolve.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "smoke-dissolve",
      "title": "Smoke Dissolve",
      "description": "A smoke-ring shader transition that expands the ring outward to reveal the next scene.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "registryDependencies": ["@remocn/shader-smoke-ring"],
      "files": [
        {
          "path": "registry/remocn/smoke-dissolve/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/smoke-dissolve.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "wave-wipe",
      "title": "Wave Wipe",
      "description": "A grain-gradient wave that sweeps up across the frame, covering the outgoing scene and revealing the next one from below.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "registryDependencies": ["@remocn/shader-grain-gradient"],
      "files": [
        {
          "path": "registry/remocn/wave-wipe/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/wave-wipe.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "ripple-zoom",
      "title": "Ripple Zoom",
      "description": "A grain-gradient ripple transition that flies the camera through the center of the rings while the next scene approaches from the depth.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "registryDependencies": ["@remocn/shader-grain-gradient"],
      "files": [
        {
          "path": "registry/remocn/ripple-zoom/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/ripple-zoom.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "grain-dissolve",
      "title": "Grain Dissolve",
      "description": "A grain-gradient shader transition that disintegrates the outgoing scene into soft grainy shapes and condenses the next scene out of the noise.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "registryDependencies": ["@remocn/shader-grain-gradient"],
      "files": [
        {
          "path": "registry/remocn/grain-dissolve/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/grain-dissolve.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "warp-dissolve",
      "title": "Warp Dissolve",
      "description": "A domain-warp shader transition that melts the outgoing scene into a folding color field and straightens back out into the next.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "registryDependencies": ["@remocn/shader-warp"],
      "files": [
        {
          "path": "registry/remocn/warp-dissolve/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/warp-dissolve.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "whip-pan",
      "title": "Whip Pan",
      "description": "A whip-pan transition that flies both scenes through the frame in one move with velocity-based motion blur.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "files": [
        {
          "path": "registry/remocn/whip-pan/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/whip-pan.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "push-through",
      "title": "Push Through",
      "description": "A dolly transition that blows the outgoing scene past the camera while the next one approaches from the depth.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "files": [
        {
          "path": "registry/remocn/push-through/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/push-through.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "focus-pull",
      "title": "Focus Pull",
      "description": "A rack-focus transition that defocuses the outgoing scene into a bright blur and resolves the next one into focus.",
      "dependencies": ["remotion", "@remotion/transitions"],
      "files": [
        {
          "path": "registry/remocn/focus-pull/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/focus-pull.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "chat-to-preview-layout",
      "title": "Chat to Preview Layout",
      "description": "Two-column layout where chat shrinks and preview expands.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/chat-to-preview-layout/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/chat-to-preview-layout.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "animated-line-chart",
      "title": "Animated Line Chart",
      "description": "Line chart whose SVG path draws on from left to right with a leading dot.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/animated-line-chart/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/animated-line-chart.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "animated-bar-chart",
      "title": "Animated Bar Chart",
      "description": "Bars spring up from the baseline in a staggered cascade.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/animated-bar-chart/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/animated-bar-chart.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "terminal-simulator",
      "title": "Terminal Simulator",
      "description": "Terminal window that types out commands and rolls old lines off the top.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/terminal-simulator/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/terminal-simulator.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "terminal-cursor-zoom",
      "title": "Terminal Cursor Zoom",
      "description": "Camera locked to the typing cursor, dollying across a terminal as a command types at high zoom.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/terminal-simulator"],
      "files": [
        {
          "path": "registry/remocn/terminal-cursor-zoom/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/terminal-cursor-zoom.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "progress-steps",
      "title": "Progress Steps",
      "description": "Multi-step pipeline with sequentially activating nodes and filling lines.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/progress-steps/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/progress-steps.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "data-flow-pipes",
      "title": "Data Flow Pipes",
      "description": "Glowing data packets travel along SVG bezier pipes between system nodes, leaving fading trails.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/data-flow-pipes/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/data-flow-pipes.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "glass-code-block",
      "title": "Glass Code Block",
      "description": "A premium frosted-glass code editor window with a regex tokenizer and line-by-line stagger reveal.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/glass-code-block/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/glass-code-block.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "glass-code-walk",
      "title": "Glass Code Walk",
      "description": "A camera that scans a glass code block top to bottom as it types, then pulls back to a centered hold.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/glass-code-block"],
      "files": [
        {
          "path": "registry/remocn/glass-code-walk/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/glass-code-walk.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "spotlight-card",
      "title": "Spotlight Card",
      "description": "A card with a moonlight-cool radial spotlight that follows a synthetic cursor and lights up its microborder.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/spotlight-card/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/spotlight-card.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "perspective-marquee",
      "title": "Perspective Marquee",
      "description": "A 3D-tilted infinite marquee with depth-of-field blur on items rolling toward the horizon.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/perspective-marquee/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/perspective-marquee.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "ecosystem-constellation",
      "title": "Ecosystem Constellation",
      "description": "A central logo orbited by integration satellites with pulsing data lines.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/ecosystem-constellation/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/ecosystem-constellation.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "live-code-compilation",
      "title": "Live Code Compilation",
      "description": "Split-screen where typed code on the left snaps a live UI preview on the right, HMR-style.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/live-code-compilation/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/live-code-compilation.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "infinite-bento-pan",
      "title": "Infinite Bento Pan",
      "description": "A camera diagonally drifts across an oversized bento grid behind a soft vignette.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/infinite-bento-pan/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/infinite-bento-pan.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "github-sponsors",
      "title": "GitHub Sponsors",
      "description": "Self-drawing Sponsors heart that docks to a header, every sponsor avatar blur-staggering into a grid, then a thank-you headline and a CTA. Single seek-safe timeline, 270 frames at 30fps.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "registryDependencies": ["@remocn/soft-blur-in", "@remocn/blur-out-up"],
      "files": [
        {
          "path": "registry/remocn/github-sponsors/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/github-sponsors.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "github-stars",
      "title": "GitHub Stars",
      "description": "Inertial fly-through of a repo's stargazers with a synced count-up odometer that locks on the total. Horizontal 16:9 or vertical 9:16.",
      "dependencies": ["remotion", "date-fns", "@remotion/google-fonts"],
      "registryDependencies": ["@remocn/number-wheel"],
      "files": [
        {
          "path": "registry/remocn/github-stars/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/github-stars.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "number-wheel",
      "title": "Number Wheel",
      "description": "Mechanical odometer that rolls an integer up or down to its target, direction inferred from the values.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "files": [
        {
          "path": "registry/remocn/number-wheel/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/number-wheel.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "rolling-number",
      "title": "Rolling Number",
      "description": "Odometer where every place rolls at its own speed, new places rising into view, settling exactly on the target value.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "files": [
        {
          "path": "registry/remocn/rolling-number/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/rolling-number.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "x-follow-card",
      "title": "X Follow Card",
      "description": "Animated X profile follow card — spring bounce-in, staggered blur-in, a synthetic cursor that clicks Follow and flips it to Following. Light/dark, horizontal or vertical.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "registryDependencies": ["@remocn/cursor"],
      "files": [
        {
          "path": "registry/remocn/x-follow-card/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/x-follow-card.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "x-followers-overview",
      "title": "X Followers Overview",
      "description": "X follow notifications cycle through as 3D flipping text — '<name> followed you · 7h' — then the total follower count pops in with a confetti burst. Hardcoded sample list (X API ready). Light/dark, horizontal or vertical.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "registryDependencies": ["@remocn/confetti"],
      "files": [
        {
          "path": "registry/remocn/x-followers-overview/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/x-followers-overview.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "claude-chat",
      "title": "Claude Chat",
      "description": "Animated Claude chat input — types a prompt character-by-character and the waveform button morphs into a terracotta send button the moment text appears. Warm light/dark themes.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "registryDependencies": ["@remocn/caret", "@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn/claude-chat/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/claude-chat.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "chat-gpt",
      "title": "ChatGPT",
      "description": "Animated ChatGPT composer — types a prompt into the pill input, the blue voice button morphs into a send button, and the suggestion chips fade out. Light/dark themes.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "registryDependencies": ["@remocn/caret", "@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn/chat-gpt/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/chat-gpt.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "v0",
      "title": "v0",
      "description": "Animated Vercel v0 composer — types a prompt into the dark textarea and the mic button morphs into a send button. Dark/light themes.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "registryDependencies": ["@remocn/caret", "@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn/v0/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/v0.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "claude-code",
      "title": "Claude Code",
      "description": "Animated Claude Code CLI welcome screen — terminal window with a dashed welcome box, recent activity and what's new panels, and a prompt line that types a command with a block cursor. Dark/light themes.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "registryDependencies": ["@remocn/caret", "@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn/claude-code/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/claude-code.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "opencode",
      "title": "OpenCode",
      "description": "Animated OpenCode TUI welcome screen — two-tone wordmark, an input box with a blue accent bar that types a query, a model status line, and command hints. Dark/light themes.",
      "dependencies": ["remotion", "@remotion/google-fonts"],
      "registryDependencies": ["@remocn/caret", "@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn/opencode/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/opencode.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "confetti",
      "title": "Confetti",
      "description": "Deterministic confetti burst for Remotion — seeded particles with gravity, spin, and flutter so every render is identical. Fire it on any frame as a celebratory overlay.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/confetti/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/confetti.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "backdrop",
      "title": "Backdrop",
      "description": "Configurable full-frame background (color / gradient / image / live component) with Screen Studio-style padding and a rounded, shadowed content frame.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/backdrop/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/backdrop.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "logo-enter",
      "title": "Logo Enter",
      "description": "A stacked group of round brand chips that spring in one-by-one, then hold. Swap the logos to feature any set of marks. Horizontal or vertical stacking.",
      "dependencies": ["remotion"],
      "files": [
        {
          "path": "registry/remocn/logo-enter/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/logo-enter.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "remocn-ui",
      "title": "remocn UI Core",
      "description": "Shared timeline-fold hook, theme context, and color math for remocn UI primitives.",
      "dependencies": ["remotion", "culori"],
      "files": [
        {
          "path": "registry/remocn-ui/core/timeline.ts",
          "type": "registry:lib",
          "target": "lib/remocn-ui/timeline.ts"
        },
        {
          "path": "registry/remocn-ui/core/theme.ts",
          "type": "registry:lib",
          "target": "lib/remocn-ui/theme.ts"
        },
        {
          "path": "registry/remocn-ui/core/color.ts",
          "type": "registry:lib",
          "target": "lib/remocn-ui/color.ts"
        },
        {
          "path": "registry/remocn-ui/core/motion.ts",
          "type": "registry:lib",
          "target": "lib/remocn-ui/motion.ts"
        },
        {
          "path": "registry/remocn-ui/core/types.ts",
          "type": "registry:lib",
          "target": "lib/remocn-ui/types.ts"
        },
        {
          "path": "registry/remocn-ui/core/index.ts",
          "type": "registry:lib",
          "target": "lib/remocn-ui/index.ts"
        }
      ],
      "type": "registry:lib"
    },
    {
      "name": "spinner",
      "title": "UI Spinner",
      "description": "A deterministic spinning arc that loops on the Remotion frame — a pure motion atom with no state.",
      "dependencies": ["remotion"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/remocn-ui/spinner/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/spinner.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "caret",
      "title": "UI Caret",
      "description": "A blinking text caret — a controlled vertical bar, or a pure motion atom that blinks deterministically from useCurrentFrame.",
      "dependencies": ["remotion"],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/remocn-ui/caret/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/caret.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "button",
      "title": "UI Button",
      "description": "A button whose idle/hover/press/loading/success state is a pure function of the timeline; the loading state composes the Spinner motion atom.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui", "@remocn/spinner"],
      "files": [
        {
          "path": "registry/remocn-ui/button/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/button.tsx"
        },
        {
          "path": "registry/remocn-ui/button/use-button-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-button-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "accordion",
      "title": "UI Accordion",
      "description": "A disclosure whose opened/closed state is a pure function of the timeline; the panel reveal, chevron, and background are keyframed presets.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/accordion/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/accordion.tsx"
        },
        {
          "path": "registry/remocn-ui/accordion/use-accordion-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-accordion-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "alert-dialog",
      "title": "UI Alert Dialog",
      "description": "A modal alert dialog whose opened/closed state is a pure function of the timeline; the backdrop dim and popup zoom are keyframed presets. Self-contained — pair it with the Button as a trigger (see the example).",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/alert-dialog/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/alert-dialog.tsx"
        },
        {
          "path": "registry/remocn-ui/alert-dialog/use-alert-dialog-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-alert-dialog-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "dialog",
      "title": "UI Dialog",
      "description": "A modal dialog whose opened/closed state is a pure function of the timeline; the backdrop dim and popup zoom are keyframed presets, with a close button and a primary action. Self-contained — pair it with the Button as a trigger (see the example).",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/dialog/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/dialog.tsx"
        },
        {
          "path": "registry/remocn-ui/dialog/use-dialog-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-dialog-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "sheet",
      "title": "UI Sheet",
      "description": "A side panel whose opened/closed state is a pure function of the timeline; the backdrop dim and right-edge slide-in are keyframed presets, with a close button and a primary action. Self-contained — pair it with the Button as a trigger (see the example).",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/sheet/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/sheet.tsx"
        },
        {
          "path": "registry/remocn-ui/sheet/use-sheet-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-sheet-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "drawer",
      "title": "UI Drawer",
      "description": "A bottom panel whose opened/closed state is a pure function of the timeline; the backdrop dim and bottom-edge slide-up are keyframed presets, with a drag handle and a primary action. Self-contained — pair it with the Button as a trigger (see the example).",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/drawer/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/drawer.tsx"
        },
        {
          "path": "registry/remocn-ui/drawer/use-drawer-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-drawer-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "checkbox",
      "title": "UI Checkbox",
      "description": "A checkbox whose checked/unchecked state is a pure function of the timeline; the box fill, border, and checkmark draw are keyframed presets.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/checkbox/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/checkbox.tsx"
        },
        {
          "path": "registry/remocn-ui/checkbox/use-checkbox-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-checkbox-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "radio",
      "title": "UI Radio",
      "description": "A radio whose checked/unchecked state is a pure function of the timeline; the ring border and inner dot pop are keyframed presets.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/radio/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/radio.tsx"
        },
        {
          "path": "registry/remocn-ui/radio/use-radio-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-radio-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "switch",
      "title": "UI Switch",
      "description": "A switch whose checked/unchecked state is a pure function of the timeline; the track fill and sliding thumb are keyframed presets.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/switch/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/switch.tsx"
        },
        {
          "path": "registry/remocn-ui/switch/use-switch-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-switch-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "input",
      "title": "UI Input",
      "description": "A text input whose idle/hover/active/typing/invalid state is a pure function of the timeline; the focus ring, border, caret, and value reveal are keyframed presets.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui", "@remocn/caret"],
      "files": [
        {
          "path": "registry/remocn-ui/input/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/input.tsx"
        },
        {
          "path": "registry/remocn-ui/input/use-input-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-input-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "blur-in",
      "title": "UI Blur In",
      "description": "A wrapper that reveals a single child with blur + opacity + a directional offset; a pure state atom, theme-independent — its context is a motion config (blur/distance/axis), not a theme.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/blur-in/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/blur-in.tsx"
        },
        {
          "path": "registry/remocn-ui/blur-in/use-blur-in-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-blur-in-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "field",
      "title": "UI Field",
      "description": "A static layout family for composing labeled form controls, modeled on shadcn's Field: FieldGroup ▸ Field ▸ FieldLabel / FieldControl / FieldDescription. Reads no frame and holds no state — colors come from the resolved theme. FieldControl is a relative fixed-height slot for the absolute remocn-ui controls (Input, Button).",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/field/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/field.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "select-item",
      "title": "UI Select Item",
      "description": "A select option row whose idle/hover/press/selected state is a pure function of the timeline; the row background, label color, and check icon are keyframed presets. Composed inside the Select panel.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/select-item/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/select-item.tsx"
        },
        {
          "path": "registry/remocn-ui/select-item/use-select-item-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-select-item-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "select",
      "title": "UI Select",
      "description": "A select whose opened/closed state is a pure function of the timeline; the trigger reuses the Button primitive and the reveal panel composes SelectItem rows. The panel fade, scale, lift, and chevron are keyframed presets.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/button",
        "@remocn/select-item"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/select/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/select.tsx"
        },
        {
          "path": "registry/remocn-ui/select/use-select-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-select-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "dropdown-menu-item",
      "title": "UI Dropdown Menu Item",
      "description": "A dropdown menu action row whose idle/hover/press state is a pure function of the timeline; the row background and label color are keyframed presets. Composed inside the DropdownMenu panel.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/dropdown-menu-item/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/dropdown-menu-item.tsx"
        },
        {
          "path": "registry/remocn-ui/dropdown-menu-item/use-dropdown-menu-item-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-dropdown-menu-item-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "tabs",
      "title": "UI Tabs",
      "description": "A tabs widget whose active-tab state is a pure function of the timeline; the sliding indicator, label colors, and panel crossfade are keyframed/derived presets.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/tabs/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/tabs.tsx"
        },
        {
          "path": "registry/remocn-ui/tabs/use-tabs-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-tabs-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "dropdown-menu",
      "title": "UI Dropdown Menu",
      "description": "A dropdown menu whose opened/closed state is a pure function of the timeline; the trigger reuses the Button primitive and the reveal panel composes DropdownMenuItem rows. The panel fade, scale, lift, and chevron are keyframed presets.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/button",
        "@remocn/dropdown-menu-item"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/dropdown-menu/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/dropdown-menu.tsx"
        },
        {
          "path": "registry/remocn-ui/dropdown-menu/use-dropdown-menu-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-dropdown-menu-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "cursor",
      "title": "UI Cursor",
      "description": "An animated cursor that moves between waypoints, clicks (ripple), and drags. The Cursor renderer is a pure function of a numeric CursorStyle channel; useCursorPath reads the frame and eases the path, ripple, and press phases.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/cursor/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/cursor.tsx"
        },
        {
          "path": "registry/remocn-ui/cursor/use-cursor-path.ts",
          "type": "registry:component",
          "target": "components/remocn/use-cursor-path.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "toast",
      "title": "UI Toast",
      "description": "A toast notification whose hidden/visible state is a pure function of the timeline. The Toast renderer is a pure function of a ToastStyle (opacity, translateY, scale); useToastTransition eases both the slide-in enter and the auto-dismiss exit. Variants default/success/error change the leading icon and its color.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/toast/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/toast.tsx"
        },
        {
          "path": "registry/remocn-ui/toast/use-toast-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-toast-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "command-menu-item",
      "title": "UI Command Menu Item",
      "description": "A command-palette row whose idle/hover/press/selected state is a pure function of the timeline. Leading icon + label + trailing shortcut kbd. Exports an inline CommandMenuItemRow (reused by CommandMenu) and a standalone CommandMenuItem atom; the row background, label color, and icon color are keyframed presets.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/command-menu-item/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/command-menu-item.tsx"
        },
        {
          "path": "registry/remocn-ui/command-menu-item/use-command-menu-item-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-command-menu-item-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "command-menu",
      "title": "UI Command Menu",
      "description": "A ⌘K command palette whose opened/closed state is a pure function of the timeline; the panel zoom + backdrop dim are dialog-like keyframed presets. The search row reveals the typed query, the list is filtered by a pure case-insensitive substring on the visible query prefix, and rows reuse the CommandMenuItem row.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/command-menu-item"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/command-menu/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/command-menu.tsx"
        },
        {
          "path": "registry/remocn-ui/command-menu/use-command-menu-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-command-menu-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "tooltip",
      "title": "UI Tooltip",
      "description": "A tooltip whose hidden/visible state is a pure function of the timeline. The Tooltip renderer is a pure function of a TooltipStyle (opacity, scale, translate); useTooltipTransition eases both the show and the hide. The static `side` prop sets the enter translate axis and the arrow placement.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/tooltip/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/tooltip.tsx"
        },
        {
          "path": "registry/remocn-ui/tooltip/use-tooltip-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-tooltip-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "progress",
      "title": "UI Progress",
      "description": "A progress bar whose fill is a pure function of a numeric value channel (value-channel deviation). The Progress renderer takes a clamped 0–100 value; useProgressTransition reads the frame and eases the fill between value steps. Muted track + primary indicator, optional floored percentage label.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/progress/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/progress.tsx"
        },
        {
          "path": "registry/remocn-ui/progress/use-progress-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-progress-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "skeleton-block",
      "title": "UI Skeleton Block",
      "description": "A shimmer placeholder block — a motion atom (spinner pattern). A directional highlight gradient sweeps across deterministically from useCurrentFrame() and loops seamlessly. Configurable width/height/radius/speed and base/highlight colors.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/skeleton-block/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/skeleton-block.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "skeleton",
      "title": "UI Skeleton",
      "description": "A skeleton→content crossfade whose loading/loaded state is a pure function of the timeline. The Skeleton renderer is pure (reads no frame); only the composed SkeletonBlock shimmer reads it. SkeletonStyle opacities sum to 1 so the box never dims; real children sit in normal flow and the placeholder (a lines/card layout or a custom node) is an absolute overlay.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui", "@remocn/skeleton-block"],
      "files": [
        {
          "path": "registry/remocn-ui/skeleton/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/skeleton.tsx"
        },
        {
          "path": "registry/remocn-ui/skeleton/use-skeleton-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-skeleton-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "slider",
      "title": "UI Slider",
      "description": "A slider whose fill is a numeric value channel plus a thumb idle/hover/press channel (dual-channel value-channel deviation). The Slider renderer is pure (clamped 0–100 value, thumb scale, grab-ring opacity); useSliderTransition reads the frame and eases both channels — value as a numeric lerp, the thumb visual from its state presets. Muted track + primary range + bordered thumb with a derived grab ring.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/slider/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/slider.tsx"
        },
        {
          "path": "registry/remocn-ui/slider/use-slider-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-slider-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "combobox",
      "title": "UI Combobox",
      "description": "A combobox whose opened/closed state is a pure function of the timeline; the panel fade/scale/lift are keyframed presets like select. The trigger reuses the Input presets (typed query + caret reveal via an injected inputStyle), the list is filtered by a pure case-insensitive substring on the visible query prefix, and rows reuse the SelectItem row.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/input",
        "@remocn/select-item"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/combobox/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/combobox.tsx"
        },
        {
          "path": "registry/remocn-ui/combobox/use-combobox-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-combobox-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "popover",
      "title": "UI Popover",
      "description": "A popover/hover-card whose opened/closed state is a pure function of the timeline. The Popover renderer is a pure function of a PopoverStyle (opacity, scale, translate); usePopoverTransition eases both the open and the close. The static `side` prop sets the enter translate axis; renders title + description and/or arbitrary children in a popover card.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/popover/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/popover.tsx"
        },
        {
          "path": "registry/remocn-ui/popover/use-popover-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-popover-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "context-menu",
      "title": "UI Context Menu",
      "description": "A right-click context menu whose opened/closed state is a pure function of the timeline; the panel scales from its top-left corner (the click point) with a fade + lift. No trigger — the caller positions it. Rows reuse the DropdownMenuItem row; items are plain string labels.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/dropdown-menu-item"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/context-menu/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/context-menu.tsx"
        },
        {
          "path": "registry/remocn-ui/context-menu/use-context-menu-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-context-menu-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "toggle-group",
      "title": "UI Toggle Group",
      "description": "A segmented control whose active value is a pure function of the timeline; a raised thumb SLIDES between segments (position + width derived from a float indicator offset, no jumps) and the labels crossfade color via mixOklch. The tabs precedent without content panels.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/toggle-group/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/toggle-group.tsx"
        },
        {
          "path": "registry/remocn-ui/toggle-group/use-toggle-group-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-toggle-group-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "stepper",
      "title": "UI Stepper",
      "description": "A horizontal onboarding stepper whose progress is a pure function of a continuous step index (value-channel deviation). Every circle (fill, number, stroke-dash check) and connector (primary fill fraction) derives purely from the float position; useStepperTransition reads the frame and eases position between step indices.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/stepper/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/stepper.tsx"
        },
        {
          "path": "registry/remocn-ui/stepper/use-stepper-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-stepper-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "resizable",
      "title": "UI Resizable",
      "description": "Two panels split by a draggable handle, where the split ratio is a numeric channel plus a handle idle/hover/press channel (dual-channel value-channel deviation). The Resizable renderer is pure (clamped 0–1 ratio, handle scale, grab-ring opacity); useResizableTransition reads the frame and eases both channels — ratio as a numeric lerp, the handle visual from its state presets. Horizontal and vertical splits; 1px divider + centered grip pill with a derived grab ring.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/resizable/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/resizable.tsx"
        },
        {
          "path": "registry/remocn-ui/resizable/use-resizable-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-resizable-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "signup-flow",
      "title": "UI Signup Flow",
      "description": "A signup card composition: a real shadcn-style card (header, labeled Full Name / Email / Password / Confirm fields, primary + Google-outline buttons, sign-in footer) whose cursor fills each field top-to-bottom, then clicks Create account (hover → press → loading → success) as a success toast slides in. A pure orchestrator — every channel comes from a composed primitive's transition hook.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/cursor",
        "@remocn/input",
        "@remocn/button",
        "@remocn/toast",
        "@remocn/field",
        "@remocn/blur-in"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/signup-flow/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/signup-flow.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "ai-prompt-flow",
      "title": "UI AI Prompt Flow",
      "description": "An AI prompt composition: a prompt types into the field, the Generate button runs hover → press → loading, a skeleton shimmer reveals, then crossfades into the generated answer, and a ready toast slides in. A pure orchestrator — the shimmer is owned by the skeleton-block motion atom; every other channel comes from a composed primitive's hook.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/input",
        "@remocn/button",
        "@remocn/skeleton",
        "@remocn/skeleton-block",
        "@remocn/toast"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/ai-prompt-flow/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/ai-prompt-flow.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "checkout-flow",
      "title": "UI Checkout Flow",
      "description": "A cursor-driven checkout card: the card and its fields blur-in, then the pointer flips a billing-cycle toggle, types a card number, ticks the terms checkbox, and presses Pay through to success, ending in a toast. A pure orchestrator — every channel comes from a composed primitive's transition hook.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/toggle-group",
        "@remocn/input",
        "@remocn/checkbox",
        "@remocn/button",
        "@remocn/field",
        "@remocn/blur-in",
        "@remocn/cursor",
        "@remocn/toast"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/checkout-flow/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/checkout-flow.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "onboarding-stepper-flow",
      "title": "UI Onboarding Stepper Flow",
      "description": "A multi-step onboarding composition: a horizontal stepper advances through panels of input, radio, and switch fields, finishing on a Finish button that runs to success. Panel crossfade derives linearly from the stepper's exposed position channel; every other channel comes from a composed primitive's hook.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/stepper",
        "@remocn/input",
        "@remocn/radio",
        "@remocn/switch",
        "@remocn/button"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/onboarding-stepper-flow/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/onboarding-stepper-flow.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "settings-toggle-flow",
      "title": "UI Settings Toggle Flow",
      "description": "A two-column settings card: the card and its controls blur-in, then the cursor flips a switch, opens a select, drags a labeled slider, and clicks Save, ending in a saved toast. A pure orchestrator — every channel comes from a composed primitive's transition hook.",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/switch",
        "@remocn/select",
        "@remocn/slider",
        "@remocn/button",
        "@remocn/blur-in",
        "@remocn/cursor",
        "@remocn/toast"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/settings-toggle-flow/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/settings-toggle-flow.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "message-bubble",
      "title": "UI Message Bubble",
      "description": "A chat message bubble whose hidden/visible state is a pure function of the timeline. The renderer is a pure function of a MessageBubbleStyle (opacity, translateY, scale); useMessageBubbleTransition eases the rise-in enter. The incoming/outgoing variant resolves bubble color and alignment from the theme, and an optional reaction badge pops in on its own channel.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/message-bubble/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/message-bubble.tsx"
        },
        {
          "path": "registry/remocn-ui/message-bubble/use-message-bubble-transition.ts",
          "type": "registry:component",
          "target": "components/remocn/use-message-bubble-transition.ts"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "typing-indicator",
      "title": "UI Typing Indicator",
      "description": "A continuous typing animation: N dots bounce with a staggered sine wave. A motion atom — it reads the frame and takes color, size, gap, and speed props, defaulting to currentColor so it inherits the bubble it sits in.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui"],
      "files": [
        {
          "path": "registry/remocn-ui/typing-indicator/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/typing-indicator.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "chat-flow",
      "title": "UI Chat Flow",
      "description": "A messaging composition: an outgoing message types into the composer, the send button presses, and the bubble rises in; the other side shows a typing indicator that swaps into the reply, and reactions pop in. A pure orchestrator — every channel comes from a composed primitive's hook (Input, MessageBubble, TypingIndicator).",
      "dependencies": ["remotion"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/caret",
        "@remocn/message-bubble",
        "@remocn/typing-indicator"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/chat-flow/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/chat-flow.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "telegram-chat-flow",
      "title": "UI Telegram Chat Flow",
      "description": "A Telegram-styled messaging composition: tailed bubbles (white incoming, blue outgoing) with in-bubble timestamps and delivery checks, a header that flips to 'typing…' while the other side replies, reaction chips, and a Telegram composer that types the outgoing message before sending. Self-contained — it owns its timeline and only composes the caret primitive.",
      "dependencies": ["remotion"],
      "registryDependencies": ["@remocn/remocn-ui", "@remocn/caret"],
      "files": [
        {
          "path": "registry/remocn-ui/telegram-chat-flow/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/telegram-chat-flow.tsx"
        }
      ],
      "type": "registry:component"
    },
    {
      "name": "imessage-chat-flow",
      "title": "UI iMessage Chat Flow",
      "description": "An iMessage-styled messaging composition: gray incoming and blue outgoing bubbles with tails, an in-thread typing bubble with dots, a Delivered label, and tapback-style reaction badges. The composer types the outgoing message before sending. Chrome icons come from lucide-react; self-contained otherwise, composing the caret and typing-indicator primitives.",
      "dependencies": ["remotion", "lucide-react"],
      "registryDependencies": [
        "@remocn/remocn-ui",
        "@remocn/caret",
        "@remocn/typing-indicator"
      ],
      "files": [
        {
          "path": "registry/remocn-ui/imessage-chat-flow/index.tsx",
          "type": "registry:component",
          "target": "components/remocn/imessage-chat-flow.tsx"
        }
      ],
      "type": "registry:component"
    }
  ]
}
