{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "canvasui",
  "homepage": "https://canvasui.dev",
  "items": [
    {
      "name": "ascii-object-react",
      "type": "registry:component",
      "title": "AsciiObject (React)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene as ASCII characters chosen by shape, so glyphs trace the object's edges. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/AsciiObject.tsx",
          "type": "registry:component",
          "target": "components/canvasui/AsciiObject.tsx"
        }
      ]
    },
    {
      "name": "ascii-object-vue",
      "type": "registry:component",
      "title": "AsciiObject (Vue)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene as ASCII characters chosen by shape, so glyphs trace the object's edges. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/AsciiObject.vue",
          "type": "registry:file",
          "target": "components/canvasui/AsciiObject.vue"
        }
      ]
    },
    {
      "name": "ascii-object-svelte",
      "type": "registry:component",
      "title": "AsciiObject (Svelte)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene as ASCII characters chosen by shape, so glyphs trace the object's edges. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "src/lib/components/canvasui/AsciiObject.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/AsciiObject.svelte"
        }
      ]
    },
    {
      "name": "ascii-object-solid",
      "type": "registry:component",
      "title": "AsciiObject (Solid)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene as ASCII characters chosen by shape, so glyphs trace the object's edges. Built on three.js.",
      "dependencies": [
        "solid-js",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/AsciiObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/AsciiObject.tsx"
        }
      ]
    },
    {
      "name": "ascii-object-preact",
      "type": "registry:component",
      "title": "AsciiObject (Preact)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene as ASCII characters chosen by shape, so glyphs trace the object's edges. Built on three.js.",
      "dependencies": [
        "preact",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/AsciiObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/AsciiObject.tsx"
        }
      ]
    },
    {
      "name": "ascii-object-vanilla",
      "type": "registry:component",
      "title": "AsciiObject (Vanilla)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene as ASCII characters chosen by shape, so glyphs trace the object's edges. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/AsciiObjectVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/AsciiObjectVanilla.ts"
        }
      ]
    },
    {
      "name": "asciify-react",
      "type": "registry:component",
      "title": "Asciify (React)",
      "description": "Redraws your page as live ascii characters in a soft radius around the cursor, with real glyph, shade block, and binary ramps. The HTML stays interactive in Chromium and Firefox.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Asciify.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Asciify.tsx"
        }
      ]
    },
    {
      "name": "asciify-vue",
      "type": "registry:component",
      "title": "Asciify (Vue)",
      "description": "Redraws your page as live ascii characters in a soft radius around the cursor, with real glyph, shade block, and binary ramps. The HTML stays interactive in Chromium and Firefox.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Asciify.vue",
          "type": "registry:file",
          "target": "components/canvasui/Asciify.vue"
        }
      ]
    },
    {
      "name": "asciify-svelte",
      "type": "registry:component",
      "title": "Asciify (Svelte)",
      "description": "Redraws your page as live ascii characters in a soft radius around the cursor, with real glyph, shade block, and binary ramps. The HTML stays interactive in Chromium and Firefox.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Asciify.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Asciify.svelte"
        }
      ]
    },
    {
      "name": "asciify-solid",
      "type": "registry:component",
      "title": "Asciify (Solid)",
      "description": "Redraws your page as live ascii characters in a soft radius around the cursor, with real glyph, shade block, and binary ramps. The HTML stays interactive in Chromium and Firefox.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Asciify.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Asciify.tsx"
        }
      ]
    },
    {
      "name": "asciify-preact",
      "type": "registry:component",
      "title": "Asciify (Preact)",
      "description": "Redraws your page as live ascii characters in a soft radius around the cursor, with real glyph, shade block, and binary ramps. The HTML stays interactive in Chromium and Firefox.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Asciify.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Asciify.tsx"
        }
      ]
    },
    {
      "name": "asciify-vanilla",
      "type": "registry:component",
      "title": "Asciify (Vanilla)",
      "description": "Redraws your page as live ascii characters in a soft radius around the cursor, with real glyph, shade block, and binary ramps. The HTML stays interactive in Chromium and Firefox.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/AsciifyVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/AsciifyVanilla.ts"
        }
      ]
    },
    {
      "name": "bend-react",
      "type": "registry:component",
      "title": "Bend (React)",
      "description": "Folds the top and bottom of your page over virtual edges as you scroll, like scrolling on the face of a cube. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Bend.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Bend.tsx"
        }
      ]
    },
    {
      "name": "bend-vue",
      "type": "registry:component",
      "title": "Bend (Vue)",
      "description": "Folds the top and bottom of your page over virtual edges as you scroll, like scrolling on the face of a cube. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Bend.vue",
          "type": "registry:file",
          "target": "components/canvasui/Bend.vue"
        }
      ]
    },
    {
      "name": "bend-svelte",
      "type": "registry:component",
      "title": "Bend (Svelte)",
      "description": "Folds the top and bottom of your page over virtual edges as you scroll, like scrolling on the face of a cube. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Bend.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Bend.svelte"
        }
      ]
    },
    {
      "name": "bend-solid",
      "type": "registry:component",
      "title": "Bend (Solid)",
      "description": "Folds the top and bottom of your page over virtual edges as you scroll, like scrolling on the face of a cube. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Bend.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Bend.tsx"
        }
      ]
    },
    {
      "name": "bend-preact",
      "type": "registry:component",
      "title": "Bend (Preact)",
      "description": "Folds the top and bottom of your page over virtual edges as you scroll, like scrolling on the face of a cube. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Bend.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Bend.tsx"
        }
      ]
    },
    {
      "name": "bend-vanilla",
      "type": "registry:component",
      "title": "Bend (Vanilla)",
      "description": "Folds the top and bottom of your page over virtual edges as you scroll, like scrolling on the face of a cube. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/BendVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/BendVanilla.ts"
        }
      ]
    },
    {
      "name": "grid-react",
      "type": "registry:component",
      "title": "Grid (React)",
      "description": "Splits your page into a grid of 3D tiles that ripple in waves around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Grid.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Grid.tsx"
        }
      ]
    },
    {
      "name": "grid-vue",
      "type": "registry:component",
      "title": "Grid (Vue)",
      "description": "Splits your page into a grid of 3D tiles that ripple in waves around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Grid.vue",
          "type": "registry:file",
          "target": "components/canvasui/Grid.vue"
        }
      ]
    },
    {
      "name": "grid-svelte",
      "type": "registry:component",
      "title": "Grid (Svelte)",
      "description": "Splits your page into a grid of 3D tiles that ripple in waves around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Grid.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Grid.svelte"
        }
      ]
    },
    {
      "name": "grid-solid",
      "type": "registry:component",
      "title": "Grid (Solid)",
      "description": "Splits your page into a grid of 3D tiles that ripple in waves around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Grid.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Grid.tsx"
        }
      ]
    },
    {
      "name": "grid-preact",
      "type": "registry:component",
      "title": "Grid (Preact)",
      "description": "Splits your page into a grid of 3D tiles that ripple in waves around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Grid.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Grid.tsx"
        }
      ]
    },
    {
      "name": "grid-vanilla",
      "type": "registry:component",
      "title": "Grid (Vanilla)",
      "description": "Splits your page into a grid of 3D tiles that ripple in waves around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/GridVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/GridVanilla.ts"
        }
      ]
    },
    {
      "name": "blaze-react",
      "type": "registry:component",
      "title": "Blaze (React)",
      "description": "Fire sparks, smoke, and heat distortion rising from the bottom of your page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Blaze.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Blaze.tsx"
        }
      ]
    },
    {
      "name": "blaze-vue",
      "type": "registry:component",
      "title": "Blaze (Vue)",
      "description": "Fire sparks, smoke, and heat distortion rising from the bottom of your page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Blaze.vue",
          "type": "registry:file",
          "target": "components/canvasui/Blaze.vue"
        }
      ]
    },
    {
      "name": "blaze-svelte",
      "type": "registry:component",
      "title": "Blaze (Svelte)",
      "description": "Fire sparks, smoke, and heat distortion rising from the bottom of your page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Blaze.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Blaze.svelte"
        }
      ]
    },
    {
      "name": "blaze-solid",
      "type": "registry:component",
      "title": "Blaze (Solid)",
      "description": "Fire sparks, smoke, and heat distortion rising from the bottom of your page. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Blaze.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Blaze.tsx"
        }
      ]
    },
    {
      "name": "blaze-preact",
      "type": "registry:component",
      "title": "Blaze (Preact)",
      "description": "Fire sparks, smoke, and heat distortion rising from the bottom of your page. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Blaze.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Blaze.tsx"
        }
      ]
    },
    {
      "name": "blaze-vanilla",
      "type": "registry:component",
      "title": "Blaze (Vanilla)",
      "description": "Fire sparks, smoke, and heat distortion rising from the bottom of your page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/BlazeVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/BlazeVanilla.ts"
        }
      ]
    },
    {
      "name": "bubble-react",
      "type": "registry:component",
      "title": "Bubble (React)",
      "description": "A glassy droplet that trails the cursor as blending metaballs and refracts the live page beneath it, with dispersion, frost, and an iridescent sheen. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Bubble.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Bubble.tsx"
        }
      ]
    },
    {
      "name": "bubble-vue",
      "type": "registry:component",
      "title": "Bubble (Vue)",
      "description": "A glassy droplet that trails the cursor as blending metaballs and refracts the live page beneath it, with dispersion, frost, and an iridescent sheen. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Bubble.vue",
          "type": "registry:file",
          "target": "components/canvasui/Bubble.vue"
        }
      ]
    },
    {
      "name": "bubble-svelte",
      "type": "registry:component",
      "title": "Bubble (Svelte)",
      "description": "A glassy droplet that trails the cursor as blending metaballs and refracts the live page beneath it, with dispersion, frost, and an iridescent sheen. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Bubble.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Bubble.svelte"
        }
      ]
    },
    {
      "name": "bubble-solid",
      "type": "registry:component",
      "title": "Bubble (Solid)",
      "description": "A glassy droplet that trails the cursor as blending metaballs and refracts the live page beneath it, with dispersion, frost, and an iridescent sheen. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Bubble.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Bubble.tsx"
        }
      ]
    },
    {
      "name": "bubble-preact",
      "type": "registry:component",
      "title": "Bubble (Preact)",
      "description": "A glassy droplet that trails the cursor as blending metaballs and refracts the live page beneath it, with dispersion, frost, and an iridescent sheen. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Bubble.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Bubble.tsx"
        }
      ]
    },
    {
      "name": "bubble-vanilla",
      "type": "registry:component",
      "title": "Bubble (Vanilla)",
      "description": "A glassy droplet that trails the cursor as blending metaballs and refracts the live page beneath it, with dispersion, frost, and an iridescent sheen. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/BubbleVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/BubbleVanilla.ts"
        }
      ]
    },
    {
      "name": "canvas-react",
      "type": "registry:component",
      "title": "Canvas (React)",
      "description": "Paints your page onto woven artist canvas, with fiber texture, paper tint, grain, a dotted halftone screen, and a soft intro crossfade. Text stays crisp and readable. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Canvas.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Canvas.tsx"
        }
      ]
    },
    {
      "name": "canvas-vue",
      "type": "registry:component",
      "title": "Canvas (Vue)",
      "description": "Paints your page onto woven artist canvas, with fiber texture, paper tint, grain, a dotted halftone screen, and a soft intro crossfade. Text stays crisp and readable. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Canvas.vue",
          "type": "registry:file",
          "target": "components/canvasui/Canvas.vue"
        }
      ]
    },
    {
      "name": "canvas-svelte",
      "type": "registry:component",
      "title": "Canvas (Svelte)",
      "description": "Paints your page onto woven artist canvas, with fiber texture, paper tint, grain, a dotted halftone screen, and a soft intro crossfade. Text stays crisp and readable. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Canvas.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Canvas.svelte"
        }
      ]
    },
    {
      "name": "canvas-solid",
      "type": "registry:component",
      "title": "Canvas (Solid)",
      "description": "Paints your page onto woven artist canvas, with fiber texture, paper tint, grain, a dotted halftone screen, and a soft intro crossfade. Text stays crisp and readable. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Canvas.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Canvas.tsx"
        }
      ]
    },
    {
      "name": "canvas-preact",
      "type": "registry:component",
      "title": "Canvas (Preact)",
      "description": "Paints your page onto woven artist canvas, with fiber texture, paper tint, grain, a dotted halftone screen, and a soft intro crossfade. Text stays crisp and readable. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Canvas.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Canvas.tsx"
        }
      ]
    },
    {
      "name": "canvas-vanilla",
      "type": "registry:component",
      "title": "Canvas (Vanilla)",
      "description": "Paints your page onto woven artist canvas, with fiber texture, paper tint, grain, a dotted halftone screen, and a soft intro crossfade. Text stays crisp and readable. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/CanvasVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/CanvasVanilla.ts"
        }
      ]
    },
    {
      "name": "cloth-react",
      "type": "registry:component",
      "title": "Cloth (React)",
      "description": "Hangs your live HTML on a piece of fabric rippling in the wind, with softly lit folds. Cursor strokes send waves across the cloth. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Cloth.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Cloth.tsx"
        }
      ]
    },
    {
      "name": "cloth-vue",
      "type": "registry:component",
      "title": "Cloth (Vue)",
      "description": "Hangs your live HTML on a piece of fabric rippling in the wind, with softly lit folds. Cursor strokes send waves across the cloth. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Cloth.vue",
          "type": "registry:file",
          "target": "components/canvasui/Cloth.vue"
        }
      ]
    },
    {
      "name": "cloth-svelte",
      "type": "registry:component",
      "title": "Cloth (Svelte)",
      "description": "Hangs your live HTML on a piece of fabric rippling in the wind, with softly lit folds. Cursor strokes send waves across the cloth. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Cloth.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Cloth.svelte"
        }
      ]
    },
    {
      "name": "cloth-solid",
      "type": "registry:component",
      "title": "Cloth (Solid)",
      "description": "Hangs your live HTML on a piece of fabric rippling in the wind, with softly lit folds. Cursor strokes send waves across the cloth. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Cloth.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Cloth.tsx"
        }
      ]
    },
    {
      "name": "cloth-preact",
      "type": "registry:component",
      "title": "Cloth (Preact)",
      "description": "Hangs your live HTML on a piece of fabric rippling in the wind, with softly lit folds. Cursor strokes send waves across the cloth. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Cloth.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Cloth.tsx"
        }
      ]
    },
    {
      "name": "cloth-vanilla",
      "type": "registry:component",
      "title": "Cloth (Vanilla)",
      "description": "Hangs your live HTML on a piece of fabric rippling in the wind, with softly lit folds. Cursor strokes send waves across the cloth. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ClothVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/ClothVanilla.ts"
        }
      ]
    },
    {
      "name": "clouds-react",
      "type": "registry:component",
      "title": "Clouds (React)",
      "description": "Procedural fog that drifts over your page and blurs what it covers. Cursor movement parts the clouds. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Clouds.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Clouds.tsx"
        }
      ]
    },
    {
      "name": "clouds-vue",
      "type": "registry:component",
      "title": "Clouds (Vue)",
      "description": "Procedural fog that drifts over your page and blurs what it covers. Cursor movement parts the clouds. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Clouds.vue",
          "type": "registry:file",
          "target": "components/canvasui/Clouds.vue"
        }
      ]
    },
    {
      "name": "clouds-svelte",
      "type": "registry:component",
      "title": "Clouds (Svelte)",
      "description": "Procedural fog that drifts over your page and blurs what it covers. Cursor movement parts the clouds. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Clouds.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Clouds.svelte"
        }
      ]
    },
    {
      "name": "clouds-solid",
      "type": "registry:component",
      "title": "Clouds (Solid)",
      "description": "Procedural fog that drifts over your page and blurs what it covers. Cursor movement parts the clouds. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Clouds.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Clouds.tsx"
        }
      ]
    },
    {
      "name": "clouds-preact",
      "type": "registry:component",
      "title": "Clouds (Preact)",
      "description": "Procedural fog that drifts over your page and blurs what it covers. Cursor movement parts the clouds. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Clouds.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Clouds.tsx"
        }
      ]
    },
    {
      "name": "clouds-vanilla",
      "type": "registry:component",
      "title": "Clouds (Vanilla)",
      "description": "Procedural fog that drifts over your page and blurs what it covers. Cursor movement parts the clouds. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/CloudsVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/CloudsVanilla.ts"
        }
      ]
    },
    {
      "name": "decrypt-reveal-react",
      "type": "registry:component",
      "title": "DecryptReveal (React)",
      "description": "Renders your page as real ASCII cipher text that decodes back into crisp UI around the cursor behind a flickering wavefront. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/DecryptReveal.tsx",
          "type": "registry:component",
          "target": "components/canvasui/DecryptReveal.tsx"
        }
      ]
    },
    {
      "name": "decrypt-reveal-vue",
      "type": "registry:component",
      "title": "DecryptReveal (Vue)",
      "description": "Renders your page as real ASCII cipher text that decodes back into crisp UI around the cursor behind a flickering wavefront. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/DecryptReveal.vue",
          "type": "registry:file",
          "target": "components/canvasui/DecryptReveal.vue"
        }
      ]
    },
    {
      "name": "decrypt-reveal-svelte",
      "type": "registry:component",
      "title": "DecryptReveal (Svelte)",
      "description": "Renders your page as real ASCII cipher text that decodes back into crisp UI around the cursor behind a flickering wavefront. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/DecryptReveal.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/DecryptReveal.svelte"
        }
      ]
    },
    {
      "name": "decrypt-reveal-solid",
      "type": "registry:component",
      "title": "DecryptReveal (Solid)",
      "description": "Renders your page as real ASCII cipher text that decodes back into crisp UI around the cursor behind a flickering wavefront. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/DecryptReveal.tsx",
          "type": "registry:file",
          "target": "components/canvasui/DecryptReveal.tsx"
        }
      ]
    },
    {
      "name": "decrypt-reveal-preact",
      "type": "registry:component",
      "title": "DecryptReveal (Preact)",
      "description": "Renders your page as real ASCII cipher text that decodes back into crisp UI around the cursor behind a flickering wavefront. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/DecryptReveal.tsx",
          "type": "registry:file",
          "target": "components/canvasui/DecryptReveal.tsx"
        }
      ]
    },
    {
      "name": "decrypt-reveal-vanilla",
      "type": "registry:component",
      "title": "DecryptReveal (Vanilla)",
      "description": "Renders your page as real ASCII cipher text that decodes back into crisp UI around the cursor behind a flickering wavefront. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/DecryptRevealVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/DecryptRevealVanilla.ts"
        }
      ]
    },
    {
      "name": "liquid-react",
      "type": "registry:component",
      "title": "Liquid (React)",
      "description": "A pointer-driven WebGL fluid simulation over your page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Liquid.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Liquid.tsx"
        }
      ]
    },
    {
      "name": "liquid-vue",
      "type": "registry:component",
      "title": "Liquid (Vue)",
      "description": "A pointer-driven WebGL fluid simulation over your page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Liquid.vue",
          "type": "registry:file",
          "target": "components/canvasui/Liquid.vue"
        }
      ]
    },
    {
      "name": "liquid-svelte",
      "type": "registry:component",
      "title": "Liquid (Svelte)",
      "description": "A pointer-driven WebGL fluid simulation over your page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Liquid.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Liquid.svelte"
        }
      ]
    },
    {
      "name": "liquid-solid",
      "type": "registry:component",
      "title": "Liquid (Solid)",
      "description": "A pointer-driven WebGL fluid simulation over your page. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Liquid.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Liquid.tsx"
        }
      ]
    },
    {
      "name": "liquid-preact",
      "type": "registry:component",
      "title": "Liquid (Preact)",
      "description": "A pointer-driven WebGL fluid simulation over your page. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Liquid.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Liquid.tsx"
        }
      ]
    },
    {
      "name": "liquid-vanilla",
      "type": "registry:component",
      "title": "Liquid (Vanilla)",
      "description": "A pointer-driven WebGL fluid simulation over your page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/LiquidVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/LiquidVanilla.ts"
        }
      ]
    },
    {
      "name": "magnify-react",
      "type": "registry:component",
      "title": "Magnify (React)",
      "description": "A sci-fi scanner lens that follows the cursor and magnifies the live page inside a configurable HUD reticle, with chromatic aberration haze and click ripples that bend the page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Magnify.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Magnify.tsx"
        }
      ]
    },
    {
      "name": "magnify-vue",
      "type": "registry:component",
      "title": "Magnify (Vue)",
      "description": "A sci-fi scanner lens that follows the cursor and magnifies the live page inside a configurable HUD reticle, with chromatic aberration haze and click ripples that bend the page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Magnify.vue",
          "type": "registry:file",
          "target": "components/canvasui/Magnify.vue"
        }
      ]
    },
    {
      "name": "magnify-svelte",
      "type": "registry:component",
      "title": "Magnify (Svelte)",
      "description": "A sci-fi scanner lens that follows the cursor and magnifies the live page inside a configurable HUD reticle, with chromatic aberration haze and click ripples that bend the page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Magnify.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Magnify.svelte"
        }
      ]
    },
    {
      "name": "magnify-solid",
      "type": "registry:component",
      "title": "Magnify (Solid)",
      "description": "A sci-fi scanner lens that follows the cursor and magnifies the live page inside a configurable HUD reticle, with chromatic aberration haze and click ripples that bend the page. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Magnify.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Magnify.tsx"
        }
      ]
    },
    {
      "name": "magnify-preact",
      "type": "registry:component",
      "title": "Magnify (Preact)",
      "description": "A sci-fi scanner lens that follows the cursor and magnifies the live page inside a configurable HUD reticle, with chromatic aberration haze and click ripples that bend the page. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Magnify.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Magnify.tsx"
        }
      ]
    },
    {
      "name": "magnify-vanilla",
      "type": "registry:component",
      "title": "Magnify (Vanilla)",
      "description": "A sci-fi scanner lens that follows the cursor and magnifies the live page inside a configurable HUD reticle, with chromatic aberration haze and click ripples that bend the page. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/MagnifyVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/MagnifyVanilla.ts"
        }
      ]
    },
    {
      "name": "dithered-object-react",
      "type": "registry:component",
      "title": "DitheredObject (React)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene through a 1-bit Bayer, halftone, or Floyd–Steinberg dither. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/DitheredObject.tsx",
          "type": "registry:component",
          "target": "components/canvasui/DitheredObject.tsx"
        }
      ]
    },
    {
      "name": "dithered-object-vue",
      "type": "registry:component",
      "title": "DitheredObject (Vue)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene through a 1-bit Bayer, halftone, or Floyd–Steinberg dither. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/DitheredObject.vue",
          "type": "registry:file",
          "target": "components/canvasui/DitheredObject.vue"
        }
      ]
    },
    {
      "name": "dithered-object-svelte",
      "type": "registry:component",
      "title": "DitheredObject (Svelte)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene through a 1-bit Bayer, halftone, or Floyd–Steinberg dither. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "src/lib/components/canvasui/DitheredObject.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/DitheredObject.svelte"
        }
      ]
    },
    {
      "name": "dithered-object-solid",
      "type": "registry:component",
      "title": "DitheredObject (Solid)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene through a 1-bit Bayer, halftone, or Floyd–Steinberg dither. Built on three.js.",
      "dependencies": [
        "solid-js",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/DitheredObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/DitheredObject.tsx"
        }
      ]
    },
    {
      "name": "dithered-object-preact",
      "type": "registry:component",
      "title": "DitheredObject (Preact)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene through a 1-bit Bayer, halftone, or Floyd–Steinberg dither. Built on three.js.",
      "dependencies": [
        "preact",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/DitheredObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/DitheredObject.tsx"
        }
      ]
    },
    {
      "name": "dithered-object-vanilla",
      "type": "registry:component",
      "title": "DitheredObject (Vanilla)",
      "description": "Renders any GLB/glTF model, SVG, or image in a floating studio scene through a 1-bit Bayer, halftone, or Floyd–Steinberg dither. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/DitheredObjectVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/DitheredObjectVanilla.ts"
        }
      ]
    },
    {
      "name": "displacement-react",
      "type": "registry:component",
      "title": "Displacement (React)",
      "description": "Warps your live HTML on a displacement grid that ripples away from the cursor, with chromatic fringing and film grain in the disturbed areas. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Displacement.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Displacement.tsx"
        }
      ]
    },
    {
      "name": "displacement-vue",
      "type": "registry:component",
      "title": "Displacement (Vue)",
      "description": "Warps your live HTML on a displacement grid that ripples away from the cursor, with chromatic fringing and film grain in the disturbed areas. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Displacement.vue",
          "type": "registry:file",
          "target": "components/canvasui/Displacement.vue"
        }
      ]
    },
    {
      "name": "displacement-svelte",
      "type": "registry:component",
      "title": "Displacement (Svelte)",
      "description": "Warps your live HTML on a displacement grid that ripples away from the cursor, with chromatic fringing and film grain in the disturbed areas. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Displacement.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Displacement.svelte"
        }
      ]
    },
    {
      "name": "displacement-solid",
      "type": "registry:component",
      "title": "Displacement (Solid)",
      "description": "Warps your live HTML on a displacement grid that ripples away from the cursor, with chromatic fringing and film grain in the disturbed areas. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Displacement.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Displacement.tsx"
        }
      ]
    },
    {
      "name": "displacement-preact",
      "type": "registry:component",
      "title": "Displacement (Preact)",
      "description": "Warps your live HTML on a displacement grid that ripples away from the cursor, with chromatic fringing and film grain in the disturbed areas. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Displacement.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Displacement.tsx"
        }
      ]
    },
    {
      "name": "displacement-vanilla",
      "type": "registry:component",
      "title": "Displacement (Vanilla)",
      "description": "Warps your live HTML on a displacement grid that ripples away from the cursor, with chromatic fringing and film grain in the disturbed areas. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/DisplacementVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/DisplacementVanilla.ts"
        }
      ]
    },
    {
      "name": "droplets-react",
      "type": "registry:component",
      "title": "Droplets (React)",
      "description": "Rain droplets that run down the screen and refract your page behind them. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Droplets.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Droplets.tsx"
        }
      ]
    },
    {
      "name": "droplets-vue",
      "type": "registry:component",
      "title": "Droplets (Vue)",
      "description": "Rain droplets that run down the screen and refract your page behind them. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Droplets.vue",
          "type": "registry:file",
          "target": "components/canvasui/Droplets.vue"
        }
      ]
    },
    {
      "name": "droplets-svelte",
      "type": "registry:component",
      "title": "Droplets (Svelte)",
      "description": "Rain droplets that run down the screen and refract your page behind them. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Droplets.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Droplets.svelte"
        }
      ]
    },
    {
      "name": "droplets-solid",
      "type": "registry:component",
      "title": "Droplets (Solid)",
      "description": "Rain droplets that run down the screen and refract your page behind them. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Droplets.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Droplets.tsx"
        }
      ]
    },
    {
      "name": "droplets-preact",
      "type": "registry:component",
      "title": "Droplets (Preact)",
      "description": "Rain droplets that run down the screen and refract your page behind them. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Droplets.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Droplets.tsx"
        }
      ]
    },
    {
      "name": "droplets-vanilla",
      "type": "registry:component",
      "title": "Droplets (Vanilla)",
      "description": "Rain droplets that run down the screen and refract your page behind them. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/DropletsVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/DropletsVanilla.ts"
        }
      ]
    },
    {
      "name": "flame-wrap-react",
      "type": "registry:component",
      "title": "FlameWrap (React)",
      "description": "Wraps any element in a perfectly aligned border of fire: flames rise from the top edge, the outline glows molten, sparks fly, and the content shimmers with heat. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/FlameWrap.tsx",
          "type": "registry:component",
          "target": "components/canvasui/FlameWrap.tsx"
        }
      ]
    },
    {
      "name": "flame-wrap-vue",
      "type": "registry:component",
      "title": "FlameWrap (Vue)",
      "description": "Wraps any element in a perfectly aligned border of fire: flames rise from the top edge, the outline glows molten, sparks fly, and the content shimmers with heat. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/FlameWrap.vue",
          "type": "registry:file",
          "target": "components/canvasui/FlameWrap.vue"
        }
      ]
    },
    {
      "name": "flame-wrap-svelte",
      "type": "registry:component",
      "title": "FlameWrap (Svelte)",
      "description": "Wraps any element in a perfectly aligned border of fire: flames rise from the top edge, the outline glows molten, sparks fly, and the content shimmers with heat. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/FlameWrap.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/FlameWrap.svelte"
        }
      ]
    },
    {
      "name": "flame-wrap-solid",
      "type": "registry:component",
      "title": "FlameWrap (Solid)",
      "description": "Wraps any element in a perfectly aligned border of fire: flames rise from the top edge, the outline glows molten, sparks fly, and the content shimmers with heat. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/FlameWrap.tsx",
          "type": "registry:file",
          "target": "components/canvasui/FlameWrap.tsx"
        }
      ]
    },
    {
      "name": "flame-wrap-preact",
      "type": "registry:component",
      "title": "FlameWrap (Preact)",
      "description": "Wraps any element in a perfectly aligned border of fire: flames rise from the top edge, the outline glows molten, sparks fly, and the content shimmers with heat. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/FlameWrap.tsx",
          "type": "registry:file",
          "target": "components/canvasui/FlameWrap.tsx"
        }
      ]
    },
    {
      "name": "flame-wrap-vanilla",
      "type": "registry:component",
      "title": "FlameWrap (Vanilla)",
      "description": "Wraps any element in a perfectly aligned border of fire: flames rise from the top edge, the outline glows molten, sparks fly, and the content shimmers with heat. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/FlameWrapVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/FlameWrapVanilla.ts"
        }
      ]
    },
    {
      "name": "force-field-react",
      "type": "registry:component",
      "title": "ForceField (React)",
      "description": "Projects an energy shield lattice over your live HTML. The cursor charges cells as it crosses them and every click detonates a shockwave ripple that refracts the page beneath, with bloom, grain, and a burning reveal dissolve. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ForceField.tsx",
          "type": "registry:component",
          "target": "components/canvasui/ForceField.tsx"
        }
      ]
    },
    {
      "name": "force-field-vue",
      "type": "registry:component",
      "title": "ForceField (Vue)",
      "description": "Projects an energy shield lattice over your live HTML. The cursor charges cells as it crosses them and every click detonates a shockwave ripple that refracts the page beneath, with bloom, grain, and a burning reveal dissolve. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ForceField.vue",
          "type": "registry:file",
          "target": "components/canvasui/ForceField.vue"
        }
      ]
    },
    {
      "name": "force-field-svelte",
      "type": "registry:component",
      "title": "ForceField (Svelte)",
      "description": "Projects an energy shield lattice over your live HTML. The cursor charges cells as it crosses them and every click detonates a shockwave ripple that refracts the page beneath, with bloom, grain, and a burning reveal dissolve. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/ForceField.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/ForceField.svelte"
        }
      ]
    },
    {
      "name": "force-field-solid",
      "type": "registry:component",
      "title": "ForceField (Solid)",
      "description": "Projects an energy shield lattice over your live HTML. The cursor charges cells as it crosses them and every click detonates a shockwave ripple that refracts the page beneath, with bloom, grain, and a burning reveal dissolve. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ForceField.tsx",
          "type": "registry:file",
          "target": "components/canvasui/ForceField.tsx"
        }
      ]
    },
    {
      "name": "force-field-preact",
      "type": "registry:component",
      "title": "ForceField (Preact)",
      "description": "Projects an energy shield lattice over your live HTML. The cursor charges cells as it crosses them and every click detonates a shockwave ripple that refracts the page beneath, with bloom, grain, and a burning reveal dissolve. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ForceField.tsx",
          "type": "registry:file",
          "target": "components/canvasui/ForceField.tsx"
        }
      ]
    },
    {
      "name": "force-field-vanilla",
      "type": "registry:component",
      "title": "ForceField (Vanilla)",
      "description": "Projects an energy shield lattice over your live HTML. The cursor charges cells as it crosses them and every click detonates a shockwave ripple that refracts the page beneath, with bloom, grain, and a burning reveal dissolve. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ForceFieldVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/ForceFieldVanilla.ts"
        }
      ]
    },
    {
      "name": "particle-object-react",
      "type": "registry:component",
      "title": "ParticleObject (React)",
      "description": "Rebuilds any GLB/glTF model, SVG, or image as a cloud of particles that the cursor pushes, swirls, and springs back into shape. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/ParticleObject.tsx",
          "type": "registry:component",
          "target": "components/canvasui/ParticleObject.tsx"
        }
      ]
    },
    {
      "name": "particle-object-vue",
      "type": "registry:component",
      "title": "ParticleObject (Vue)",
      "description": "Rebuilds any GLB/glTF model, SVG, or image as a cloud of particles that the cursor pushes, swirls, and springs back into shape. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/ParticleObject.vue",
          "type": "registry:file",
          "target": "components/canvasui/ParticleObject.vue"
        }
      ]
    },
    {
      "name": "particle-object-svelte",
      "type": "registry:component",
      "title": "ParticleObject (Svelte)",
      "description": "Rebuilds any GLB/glTF model, SVG, or image as a cloud of particles that the cursor pushes, swirls, and springs back into shape. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "src/lib/components/canvasui/ParticleObject.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/ParticleObject.svelte"
        }
      ]
    },
    {
      "name": "particle-object-solid",
      "type": "registry:component",
      "title": "ParticleObject (Solid)",
      "description": "Rebuilds any GLB/glTF model, SVG, or image as a cloud of particles that the cursor pushes, swirls, and springs back into shape. Built on three.js.",
      "dependencies": [
        "solid-js",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/ParticleObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/ParticleObject.tsx"
        }
      ]
    },
    {
      "name": "particle-object-preact",
      "type": "registry:component",
      "title": "ParticleObject (Preact)",
      "description": "Rebuilds any GLB/glTF model, SVG, or image as a cloud of particles that the cursor pushes, swirls, and springs back into shape. Built on three.js.",
      "dependencies": [
        "preact",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/ParticleObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/ParticleObject.tsx"
        }
      ]
    },
    {
      "name": "particle-object-vanilla",
      "type": "registry:component",
      "title": "ParticleObject (Vanilla)",
      "description": "Rebuilds any GLB/glTF model, SVG, or image as a cloud of particles that the cursor pushes, swirls, and springs back into shape. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/ParticleObjectVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/ParticleObjectVanilla.ts"
        }
      ]
    },
    {
      "name": "particle-reveal-react",
      "type": "registry:component",
      "title": "ParticleReveal (React)",
      "description": "Renders your page as fine grayscale dust that merges back into crisp UI around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleReveal.tsx",
          "type": "registry:component",
          "target": "components/canvasui/ParticleReveal.tsx"
        }
      ]
    },
    {
      "name": "particle-reveal-vue",
      "type": "registry:component",
      "title": "ParticleReveal (Vue)",
      "description": "Renders your page as fine grayscale dust that merges back into crisp UI around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleReveal.vue",
          "type": "registry:file",
          "target": "components/canvasui/ParticleReveal.vue"
        }
      ]
    },
    {
      "name": "particle-reveal-svelte",
      "type": "registry:component",
      "title": "ParticleReveal (Svelte)",
      "description": "Renders your page as fine grayscale dust that merges back into crisp UI around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/ParticleReveal.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/ParticleReveal.svelte"
        }
      ]
    },
    {
      "name": "particle-reveal-solid",
      "type": "registry:component",
      "title": "ParticleReveal (Solid)",
      "description": "Renders your page as fine grayscale dust that merges back into crisp UI around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleReveal.tsx",
          "type": "registry:file",
          "target": "components/canvasui/ParticleReveal.tsx"
        }
      ]
    },
    {
      "name": "particle-reveal-preact",
      "type": "registry:component",
      "title": "ParticleReveal (Preact)",
      "description": "Renders your page as fine grayscale dust that merges back into crisp UI around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleReveal.tsx",
          "type": "registry:file",
          "target": "components/canvasui/ParticleReveal.tsx"
        }
      ]
    },
    {
      "name": "particle-reveal-vanilla",
      "type": "registry:component",
      "title": "ParticleReveal (Vanilla)",
      "description": "Renders your page as fine grayscale dust that merges back into crisp UI around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleRevealVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/ParticleRevealVanilla.ts"
        }
      ]
    },
    {
      "name": "particle-scroll-react",
      "type": "registry:component",
      "title": "ParticleScroll (React)",
      "description": "Dissolves everything below a chosen line into drifting sand that reassembles as you scroll. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleScroll.tsx",
          "type": "registry:component",
          "target": "components/canvasui/ParticleScroll.tsx"
        }
      ]
    },
    {
      "name": "particle-scroll-vue",
      "type": "registry:component",
      "title": "ParticleScroll (Vue)",
      "description": "Dissolves everything below a chosen line into drifting sand that reassembles as you scroll. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleScroll.vue",
          "type": "registry:file",
          "target": "components/canvasui/ParticleScroll.vue"
        }
      ]
    },
    {
      "name": "particle-scroll-svelte",
      "type": "registry:component",
      "title": "ParticleScroll (Svelte)",
      "description": "Dissolves everything below a chosen line into drifting sand that reassembles as you scroll. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/ParticleScroll.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/ParticleScroll.svelte"
        }
      ]
    },
    {
      "name": "particle-scroll-solid",
      "type": "registry:component",
      "title": "ParticleScroll (Solid)",
      "description": "Dissolves everything below a chosen line into drifting sand that reassembles as you scroll. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleScroll.tsx",
          "type": "registry:file",
          "target": "components/canvasui/ParticleScroll.tsx"
        }
      ]
    },
    {
      "name": "particle-scroll-preact",
      "type": "registry:component",
      "title": "ParticleScroll (Preact)",
      "description": "Dissolves everything below a chosen line into drifting sand that reassembles as you scroll. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleScroll.tsx",
          "type": "registry:file",
          "target": "components/canvasui/ParticleScroll.tsx"
        }
      ]
    },
    {
      "name": "particle-scroll-vanilla",
      "type": "registry:component",
      "title": "ParticleScroll (Vanilla)",
      "description": "Dissolves everything below a chosen line into drifting sand that reassembles as you scroll. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ParticleScrollVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/ParticleScrollVanilla.ts"
        }
      ]
    },
    {
      "name": "peel-react",
      "type": "registry:component",
      "title": "Peel (React)",
      "description": "Peels your page back from a chosen edge as the cursor approaches, revealing a second layer underneath. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Peel.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Peel.tsx"
        }
      ]
    },
    {
      "name": "peel-vue",
      "type": "registry:component",
      "title": "Peel (Vue)",
      "description": "Peels your page back from a chosen edge as the cursor approaches, revealing a second layer underneath. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Peel.vue",
          "type": "registry:file",
          "target": "components/canvasui/Peel.vue"
        }
      ]
    },
    {
      "name": "peel-svelte",
      "type": "registry:component",
      "title": "Peel (Svelte)",
      "description": "Peels your page back from a chosen edge as the cursor approaches, revealing a second layer underneath. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Peel.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Peel.svelte"
        }
      ]
    },
    {
      "name": "peel-solid",
      "type": "registry:component",
      "title": "Peel (Solid)",
      "description": "Peels your page back from a chosen edge as the cursor approaches, revealing a second layer underneath. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Peel.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Peel.tsx"
        }
      ]
    },
    {
      "name": "peel-preact",
      "type": "registry:component",
      "title": "Peel (Preact)",
      "description": "Peels your page back from a chosen edge as the cursor approaches, revealing a second layer underneath. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Peel.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Peel.tsx"
        }
      ]
    },
    {
      "name": "peel-vanilla",
      "type": "registry:component",
      "title": "Peel (Vanilla)",
      "description": "Peels your page back from a chosen edge as the cursor approaches, revealing a second layer underneath. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/PeelVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/PeelVanilla.ts"
        }
      ]
    },
    {
      "name": "glitch-react",
      "type": "registry:component",
      "title": "Glitch (React)",
      "description": "Broadcast glitch bursts that tear the page into shifted slices with RGB splits, corrupted blocks, and analog noise, then settle back to a clean read. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Glitch.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Glitch.tsx"
        }
      ]
    },
    {
      "name": "glitch-vue",
      "type": "registry:component",
      "title": "Glitch (Vue)",
      "description": "Broadcast glitch bursts that tear the page into shifted slices with RGB splits, corrupted blocks, and analog noise, then settle back to a clean read. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Glitch.vue",
          "type": "registry:file",
          "target": "components/canvasui/Glitch.vue"
        }
      ]
    },
    {
      "name": "glitch-svelte",
      "type": "registry:component",
      "title": "Glitch (Svelte)",
      "description": "Broadcast glitch bursts that tear the page into shifted slices with RGB splits, corrupted blocks, and analog noise, then settle back to a clean read. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Glitch.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Glitch.svelte"
        }
      ]
    },
    {
      "name": "glitch-solid",
      "type": "registry:component",
      "title": "Glitch (Solid)",
      "description": "Broadcast glitch bursts that tear the page into shifted slices with RGB splits, corrupted blocks, and analog noise, then settle back to a clean read. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Glitch.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Glitch.tsx"
        }
      ]
    },
    {
      "name": "glitch-preact",
      "type": "registry:component",
      "title": "Glitch (Preact)",
      "description": "Broadcast glitch bursts that tear the page into shifted slices with RGB splits, corrupted blocks, and analog noise, then settle back to a clean read. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Glitch.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Glitch.tsx"
        }
      ]
    },
    {
      "name": "glitch-vanilla",
      "type": "registry:component",
      "title": "Glitch (Vanilla)",
      "description": "Broadcast glitch bursts that tear the page into shifted slices with RGB splits, corrupted blocks, and analog noise, then settle back to a clean read. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/GlitchVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/GlitchVanilla.ts"
        }
      ]
    },
    {
      "name": "glyph-rain-react",
      "type": "registry:component",
      "title": "GlyphRain (React)",
      "description": "Rains glowing glyph streams over your live HTML while every drop head casts a real pool of light onto the page beneath, with embossed relief shading. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/GlyphRain.tsx",
          "type": "registry:component",
          "target": "components/canvasui/GlyphRain.tsx"
        }
      ]
    },
    {
      "name": "glyph-rain-vue",
      "type": "registry:component",
      "title": "GlyphRain (Vue)",
      "description": "Rains glowing glyph streams over your live HTML while every drop head casts a real pool of light onto the page beneath, with embossed relief shading. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/GlyphRain.vue",
          "type": "registry:file",
          "target": "components/canvasui/GlyphRain.vue"
        }
      ]
    },
    {
      "name": "glyph-rain-svelte",
      "type": "registry:component",
      "title": "GlyphRain (Svelte)",
      "description": "Rains glowing glyph streams over your live HTML while every drop head casts a real pool of light onto the page beneath, with embossed relief shading. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/GlyphRain.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/GlyphRain.svelte"
        }
      ]
    },
    {
      "name": "glyph-rain-solid",
      "type": "registry:component",
      "title": "GlyphRain (Solid)",
      "description": "Rains glowing glyph streams over your live HTML while every drop head casts a real pool of light onto the page beneath, with embossed relief shading. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/GlyphRain.tsx",
          "type": "registry:file",
          "target": "components/canvasui/GlyphRain.tsx"
        }
      ]
    },
    {
      "name": "glyph-rain-preact",
      "type": "registry:component",
      "title": "GlyphRain (Preact)",
      "description": "Rains glowing glyph streams over your live HTML while every drop head casts a real pool of light onto the page beneath, with embossed relief shading. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/GlyphRain.tsx",
          "type": "registry:file",
          "target": "components/canvasui/GlyphRain.tsx"
        }
      ]
    },
    {
      "name": "glyph-rain-vanilla",
      "type": "registry:component",
      "title": "GlyphRain (Vanilla)",
      "description": "Rains glowing glyph streams over your live HTML while every drop head casts a real pool of light onto the page beneath, with embossed relief shading. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/GlyphRainVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/GlyphRainVanilla.ts"
        }
      ]
    },
    {
      "name": "frost-react",
      "type": "registry:component",
      "title": "Frost (React)",
      "description": "Covers your page in a frozen pane of ice with refraction and frost grain. Hovering melts a hole through the frost, which freezes back over. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Frost.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Frost.tsx"
        }
      ]
    },
    {
      "name": "frost-vue",
      "type": "registry:component",
      "title": "Frost (Vue)",
      "description": "Covers your page in a frozen pane of ice with refraction and frost grain. Hovering melts a hole through the frost, which freezes back over. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Frost.vue",
          "type": "registry:file",
          "target": "components/canvasui/Frost.vue"
        }
      ]
    },
    {
      "name": "frost-svelte",
      "type": "registry:component",
      "title": "Frost (Svelte)",
      "description": "Covers your page in a frozen pane of ice with refraction and frost grain. Hovering melts a hole through the frost, which freezes back over. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Frost.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Frost.svelte"
        }
      ]
    },
    {
      "name": "frost-solid",
      "type": "registry:component",
      "title": "Frost (Solid)",
      "description": "Covers your page in a frozen pane of ice with refraction and frost grain. Hovering melts a hole through the frost, which freezes back over. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Frost.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Frost.tsx"
        }
      ]
    },
    {
      "name": "frost-preact",
      "type": "registry:component",
      "title": "Frost (Preact)",
      "description": "Covers your page in a frozen pane of ice with refraction and frost grain. Hovering melts a hole through the frost, which freezes back over. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Frost.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Frost.tsx"
        }
      ]
    },
    {
      "name": "frost-vanilla",
      "type": "registry:component",
      "title": "Frost (Vanilla)",
      "description": "Covers your page in a frozen pane of ice with refraction and frost grain. Hovering melts a hole through the frost, which freezes back over. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/FrostVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/FrostVanilla.ts"
        }
      ]
    },
    {
      "name": "hex-float-react",
      "type": "registry:component",
      "title": "HexFloat (React)",
      "description": "Renders the live page onto a floor of shiny beveled hex tiles that lean back in perspective, bob gently, and rise toward the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/HexFloat.tsx",
          "type": "registry:component",
          "target": "components/canvasui/HexFloat.tsx"
        }
      ]
    },
    {
      "name": "hex-float-vue",
      "type": "registry:component",
      "title": "HexFloat (Vue)",
      "description": "Renders the live page onto a floor of shiny beveled hex tiles that lean back in perspective, bob gently, and rise toward the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/HexFloat.vue",
          "type": "registry:file",
          "target": "components/canvasui/HexFloat.vue"
        }
      ]
    },
    {
      "name": "hex-float-svelte",
      "type": "registry:component",
      "title": "HexFloat (Svelte)",
      "description": "Renders the live page onto a floor of shiny beveled hex tiles that lean back in perspective, bob gently, and rise toward the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/HexFloat.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/HexFloat.svelte"
        }
      ]
    },
    {
      "name": "hex-float-solid",
      "type": "registry:component",
      "title": "HexFloat (Solid)",
      "description": "Renders the live page onto a floor of shiny beveled hex tiles that lean back in perspective, bob gently, and rise toward the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/HexFloat.tsx",
          "type": "registry:file",
          "target": "components/canvasui/HexFloat.tsx"
        }
      ]
    },
    {
      "name": "hex-float-preact",
      "type": "registry:component",
      "title": "HexFloat (Preact)",
      "description": "Renders the live page onto a floor of shiny beveled hex tiles that lean back in perspective, bob gently, and rise toward the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/HexFloat.tsx",
          "type": "registry:file",
          "target": "components/canvasui/HexFloat.tsx"
        }
      ]
    },
    {
      "name": "hex-float-vanilla",
      "type": "registry:component",
      "title": "HexFloat (Vanilla)",
      "description": "Renders the live page onto a floor of shiny beveled hex tiles that lean back in perspective, bob gently, and rise toward the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/HexFloatVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/HexFloatVanilla.ts"
        }
      ]
    },
    {
      "name": "retro-dither-react",
      "type": "registry:component",
      "title": "RetroDither (React)",
      "description": "A retro dither lens that pixelates and quantizes your page around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/RetroDither.tsx",
          "type": "registry:component",
          "target": "components/canvasui/RetroDither.tsx"
        }
      ]
    },
    {
      "name": "retro-dither-vue",
      "type": "registry:component",
      "title": "RetroDither (Vue)",
      "description": "A retro dither lens that pixelates and quantizes your page around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/RetroDither.vue",
          "type": "registry:file",
          "target": "components/canvasui/RetroDither.vue"
        }
      ]
    },
    {
      "name": "retro-dither-svelte",
      "type": "registry:component",
      "title": "RetroDither (Svelte)",
      "description": "A retro dither lens that pixelates and quantizes your page around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/RetroDither.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/RetroDither.svelte"
        }
      ]
    },
    {
      "name": "retro-dither-solid",
      "type": "registry:component",
      "title": "RetroDither (Solid)",
      "description": "A retro dither lens that pixelates and quantizes your page around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/RetroDither.tsx",
          "type": "registry:file",
          "target": "components/canvasui/RetroDither.tsx"
        }
      ]
    },
    {
      "name": "retro-dither-preact",
      "type": "registry:component",
      "title": "RetroDither (Preact)",
      "description": "A retro dither lens that pixelates and quantizes your page around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/RetroDither.tsx",
          "type": "registry:file",
          "target": "components/canvasui/RetroDither.tsx"
        }
      ]
    },
    {
      "name": "retro-dither-vanilla",
      "type": "registry:component",
      "title": "RetroDither (Vanilla)",
      "description": "A retro dither lens that pixelates and quantizes your page around the cursor. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/RetroDitherVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/RetroDitherVanilla.ts"
        }
      ]
    },
    {
      "name": "ripple-react",
      "type": "registry:component",
      "title": "Ripple (React)",
      "description": "Water ripples that spread from every click and refract the live page like a pond surface, with dispersion and light glints on the crests. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Ripple.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Ripple.tsx"
        }
      ]
    },
    {
      "name": "ripple-vue",
      "type": "registry:component",
      "title": "Ripple (Vue)",
      "description": "Water ripples that spread from every click and refract the live page like a pond surface, with dispersion and light glints on the crests. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Ripple.vue",
          "type": "registry:file",
          "target": "components/canvasui/Ripple.vue"
        }
      ]
    },
    {
      "name": "ripple-svelte",
      "type": "registry:component",
      "title": "Ripple (Svelte)",
      "description": "Water ripples that spread from every click and refract the live page like a pond surface, with dispersion and light glints on the crests. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Ripple.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Ripple.svelte"
        }
      ]
    },
    {
      "name": "ripple-solid",
      "type": "registry:component",
      "title": "Ripple (Solid)",
      "description": "Water ripples that spread from every click and refract the live page like a pond surface, with dispersion and light glints on the crests. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Ripple.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Ripple.tsx"
        }
      ]
    },
    {
      "name": "ripple-preact",
      "type": "registry:component",
      "title": "Ripple (Preact)",
      "description": "Water ripples that spread from every click and refract the live page like a pond surface, with dispersion and light glints on the crests. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Ripple.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Ripple.tsx"
        }
      ]
    },
    {
      "name": "ripple-vanilla",
      "type": "registry:component",
      "title": "Ripple (Vanilla)",
      "description": "Water ripples that spread from every click and refract the live page like a pond surface, with dispersion and light glints on the crests. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/RippleVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/RippleVanilla.ts"
        }
      ]
    },
    {
      "name": "shatter-react",
      "type": "registry:component",
      "title": "Shatter (React)",
      "description": "Shatters your page into 3D glass shards that lift, tilt, and float around the cursor, refracting the content beneath them, with perspective and soft shadows. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Shatter.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Shatter.tsx"
        }
      ]
    },
    {
      "name": "shatter-vue",
      "type": "registry:component",
      "title": "Shatter (Vue)",
      "description": "Shatters your page into 3D glass shards that lift, tilt, and float around the cursor, refracting the content beneath them, with perspective and soft shadows. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Shatter.vue",
          "type": "registry:file",
          "target": "components/canvasui/Shatter.vue"
        }
      ]
    },
    {
      "name": "shatter-svelte",
      "type": "registry:component",
      "title": "Shatter (Svelte)",
      "description": "Shatters your page into 3D glass shards that lift, tilt, and float around the cursor, refracting the content beneath them, with perspective and soft shadows. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Shatter.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Shatter.svelte"
        }
      ]
    },
    {
      "name": "shatter-solid",
      "type": "registry:component",
      "title": "Shatter (Solid)",
      "description": "Shatters your page into 3D glass shards that lift, tilt, and float around the cursor, refracting the content beneath them, with perspective and soft shadows. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Shatter.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Shatter.tsx"
        }
      ]
    },
    {
      "name": "shatter-preact",
      "type": "registry:component",
      "title": "Shatter (Preact)",
      "description": "Shatters your page into 3D glass shards that lift, tilt, and float around the cursor, refracting the content beneath them, with perspective and soft shadows. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Shatter.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Shatter.tsx"
        }
      ]
    },
    {
      "name": "shatter-vanilla",
      "type": "registry:component",
      "title": "Shatter (Vanilla)",
      "description": "Shatters your page into 3D glass shards that lift, tilt, and float around the cursor, refracting the content beneath them, with perspective and soft shadows. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/ShatterVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/ShatterVanilla.ts"
        }
      ]
    },
    {
      "name": "vhs-react",
      "type": "registry:component",
      "title": "VHS (React)",
      "description": "Plays your page back like a worn VHS tape, with tape wave, head-switch noise, chroma bleed, and grain. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/VHS.tsx",
          "type": "registry:component",
          "target": "components/canvasui/VHS.tsx"
        }
      ]
    },
    {
      "name": "vhs-vue",
      "type": "registry:component",
      "title": "VHS (Vue)",
      "description": "Plays your page back like a worn VHS tape, with tape wave, head-switch noise, chroma bleed, and grain. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/VHS.vue",
          "type": "registry:file",
          "target": "components/canvasui/VHS.vue"
        }
      ]
    },
    {
      "name": "vhs-svelte",
      "type": "registry:component",
      "title": "VHS (Svelte)",
      "description": "Plays your page back like a worn VHS tape, with tape wave, head-switch noise, chroma bleed, and grain. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/VHS.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/VHS.svelte"
        }
      ]
    },
    {
      "name": "vhs-solid",
      "type": "registry:component",
      "title": "VHS (Solid)",
      "description": "Plays your page back like a worn VHS tape, with tape wave, head-switch noise, chroma bleed, and grain. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/VHS.tsx",
          "type": "registry:file",
          "target": "components/canvasui/VHS.tsx"
        }
      ]
    },
    {
      "name": "vhs-preact",
      "type": "registry:component",
      "title": "VHS (Preact)",
      "description": "Plays your page back like a worn VHS tape, with tape wave, head-switch noise, chroma bleed, and grain. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/VHS.tsx",
          "type": "registry:file",
          "target": "components/canvasui/VHS.tsx"
        }
      ]
    },
    {
      "name": "vhs-vanilla",
      "type": "registry:component",
      "title": "VHS (Vanilla)",
      "description": "Plays your page back like a worn VHS tape, with tape wave, head-switch noise, chroma bleed, and grain. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/VHSVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/VHSVanilla.ts"
        }
      ]
    },
    {
      "name": "laser-react",
      "type": "registry:component",
      "title": "Laser (React)",
      "description": "Hides everything below a glowing laser beam near the bottom of the viewport. Scrolling prints new content in from behind it. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Laser.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Laser.tsx"
        }
      ]
    },
    {
      "name": "laser-vue",
      "type": "registry:component",
      "title": "Laser (Vue)",
      "description": "Hides everything below a glowing laser beam near the bottom of the viewport. Scrolling prints new content in from behind it. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Laser.vue",
          "type": "registry:file",
          "target": "components/canvasui/Laser.vue"
        }
      ]
    },
    {
      "name": "laser-svelte",
      "type": "registry:component",
      "title": "Laser (Svelte)",
      "description": "Hides everything below a glowing laser beam near the bottom of the viewport. Scrolling prints new content in from behind it. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Laser.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Laser.svelte"
        }
      ]
    },
    {
      "name": "laser-solid",
      "type": "registry:component",
      "title": "Laser (Solid)",
      "description": "Hides everything below a glowing laser beam near the bottom of the viewport. Scrolling prints new content in from behind it. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Laser.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Laser.tsx"
        }
      ]
    },
    {
      "name": "laser-preact",
      "type": "registry:component",
      "title": "Laser (Preact)",
      "description": "Hides everything below a glowing laser beam near the bottom of the viewport. Scrolling prints new content in from behind it. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Laser.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Laser.tsx"
        }
      ]
    },
    {
      "name": "laser-vanilla",
      "type": "registry:component",
      "title": "Laser (Vanilla)",
      "description": "Hides everything below a glowing laser beam near the bottom of the viewport. Scrolling prints new content in from behind it. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/LaserVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/LaserVanilla.ts"
        }
      ]
    },
    {
      "name": "glass-react",
      "type": "registry:component",
      "title": "Glass (React)",
      "description": "A cursor-following glass lens that refracts your page like real glass, with a crystal ball zoom over target elements. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Glass.tsx",
          "type": "registry:component",
          "target": "components/canvasui/Glass.tsx"
        }
      ]
    },
    {
      "name": "glass-vue",
      "type": "registry:component",
      "title": "Glass (Vue)",
      "description": "A cursor-following glass lens that refracts your page like real glass, with a crystal ball zoom over target elements. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Glass.vue",
          "type": "registry:file",
          "target": "components/canvasui/Glass.vue"
        }
      ]
    },
    {
      "name": "glass-svelte",
      "type": "registry:component",
      "title": "Glass (Svelte)",
      "description": "A cursor-following glass lens that refracts your page like real glass, with a crystal ball zoom over target elements. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "src/lib/components/canvasui/Glass.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/Glass.svelte"
        }
      ]
    },
    {
      "name": "glass-solid",
      "type": "registry:component",
      "title": "Glass (Solid)",
      "description": "A cursor-following glass lens that refracts your page like real glass, with a crystal ball zoom over target elements. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "solid-js"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Glass.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Glass.tsx"
        }
      ]
    },
    {
      "name": "glass-preact",
      "type": "registry:component",
      "title": "Glass (Preact)",
      "description": "A cursor-following glass lens that refracts your page like real glass, with a crystal ball zoom over target elements. The HTML stays interactive. No dependencies.",
      "dependencies": [
        "preact"
      ],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/Glass.tsx",
          "type": "registry:file",
          "target": "components/canvasui/Glass.tsx"
        }
      ]
    },
    {
      "name": "glass-vanilla",
      "type": "registry:component",
      "title": "Glass (Vanilla)",
      "description": "A cursor-following glass lens that refracts your page like real glass, with a crystal ball zoom over target elements. The HTML stays interactive. No dependencies.",
      "dependencies": [],
      "devDependencies": [],
      "files": [
        {
          "path": "components/canvasui/GlassVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/GlassVanilla.ts"
        }
      ]
    },
    {
      "name": "glass-object-react",
      "type": "registry:component",
      "title": "GlassObject (React)",
      "description": "Turns any GLB/glTF model, SVG, or image into a floating liquid-glass object with real refraction, chromatic dispersion, frost, and tinted absorption, lit by a studio environment. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/GlassObject.tsx",
          "type": "registry:component",
          "target": "components/canvasui/GlassObject.tsx"
        }
      ]
    },
    {
      "name": "glass-object-vue",
      "type": "registry:component",
      "title": "GlassObject (Vue)",
      "description": "Turns any GLB/glTF model, SVG, or image into a floating liquid-glass object with real refraction, chromatic dispersion, frost, and tinted absorption, lit by a studio environment. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/GlassObject.vue",
          "type": "registry:file",
          "target": "components/canvasui/GlassObject.vue"
        }
      ]
    },
    {
      "name": "glass-object-svelte",
      "type": "registry:component",
      "title": "GlassObject (Svelte)",
      "description": "Turns any GLB/glTF model, SVG, or image into a floating liquid-glass object with real refraction, chromatic dispersion, frost, and tinted absorption, lit by a studio environment. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "src/lib/components/canvasui/GlassObject.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/GlassObject.svelte"
        }
      ]
    },
    {
      "name": "glass-object-solid",
      "type": "registry:component",
      "title": "GlassObject (Solid)",
      "description": "Turns any GLB/glTF model, SVG, or image into a floating liquid-glass object with real refraction, chromatic dispersion, frost, and tinted absorption, lit by a studio environment. Built on three.js.",
      "dependencies": [
        "solid-js",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/GlassObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/GlassObject.tsx"
        }
      ]
    },
    {
      "name": "glass-object-preact",
      "type": "registry:component",
      "title": "GlassObject (Preact)",
      "description": "Turns any GLB/glTF model, SVG, or image into a floating liquid-glass object with real refraction, chromatic dispersion, frost, and tinted absorption, lit by a studio environment. Built on three.js.",
      "dependencies": [
        "preact",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/GlassObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/GlassObject.tsx"
        }
      ]
    },
    {
      "name": "glass-object-vanilla",
      "type": "registry:component",
      "title": "GlassObject (Vanilla)",
      "description": "Turns any GLB/glTF model, SVG, or image into a floating liquid-glass object with real refraction, chromatic dispersion, frost, and tinted absorption, lit by a studio environment. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/GlassObjectVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/GlassObjectVanilla.ts"
        }
      ]
    },
    {
      "name": "liquid-object-react",
      "type": "registry:component",
      "title": "LiquidObject (React)",
      "description": "Renders any GLB/glTF model, SVG, or image in a studio environment, then drags it through an invisible GPU fluid that swirls under the cursor and splits the light into chromatic fringes. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/LiquidObject.tsx",
          "type": "registry:component",
          "target": "components/canvasui/LiquidObject.tsx"
        }
      ]
    },
    {
      "name": "liquid-object-vue",
      "type": "registry:component",
      "title": "LiquidObject (Vue)",
      "description": "Renders any GLB/glTF model, SVG, or image in a studio environment, then drags it through an invisible GPU fluid that swirls under the cursor and splits the light into chromatic fringes. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/LiquidObject.vue",
          "type": "registry:file",
          "target": "components/canvasui/LiquidObject.vue"
        }
      ]
    },
    {
      "name": "liquid-object-svelte",
      "type": "registry:component",
      "title": "LiquidObject (Svelte)",
      "description": "Renders any GLB/glTF model, SVG, or image in a studio environment, then drags it through an invisible GPU fluid that swirls under the cursor and splits the light into chromatic fringes. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "src/lib/components/canvasui/LiquidObject.svelte",
          "type": "registry:file",
          "target": "src/lib/components/canvasui/LiquidObject.svelte"
        }
      ]
    },
    {
      "name": "liquid-object-solid",
      "type": "registry:component",
      "title": "LiquidObject (Solid)",
      "description": "Renders any GLB/glTF model, SVG, or image in a studio environment, then drags it through an invisible GPU fluid that swirls under the cursor and splits the light into chromatic fringes. Built on three.js.",
      "dependencies": [
        "solid-js",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/LiquidObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/LiquidObject.tsx"
        }
      ]
    },
    {
      "name": "liquid-object-preact",
      "type": "registry:component",
      "title": "LiquidObject (Preact)",
      "description": "Renders any GLB/glTF model, SVG, or image in a studio environment, then drags it through an invisible GPU fluid that swirls under the cursor and splits the light into chromatic fringes. Built on three.js.",
      "dependencies": [
        "preact",
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/LiquidObject.tsx",
          "type": "registry:file",
          "target": "components/canvasui/LiquidObject.tsx"
        }
      ]
    },
    {
      "name": "liquid-object-vanilla",
      "type": "registry:component",
      "title": "LiquidObject (Vanilla)",
      "description": "Renders any GLB/glTF model, SVG, or image in a studio environment, then drags it through an invisible GPU fluid that swirls under the cursor and splits the light into chromatic fringes. Built on three.js.",
      "dependencies": [
        "three"
      ],
      "devDependencies": [
        "@types/three"
      ],
      "files": [
        {
          "path": "components/canvasui/LiquidObjectVanilla.ts",
          "type": "registry:file",
          "target": "components/canvasui/LiquidObjectVanilla.ts"
        }
      ]
    }
  ]
}