{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "threecn",
  "homepage": "https://threecn.dev",
  "items": [
    {
      "name": "scene-container",
      "type": "registry:ui",
      "title": "SceneContainer",
      "description": "Base R3F canvas wrapper with theme-aware environment and camera setup.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "particle-field",
      "type": "registry:ui",
      "title": "ParticleField",
      "description": "A drifting cloud of particles colored with your shadcn --primary and --muted-foreground tokens.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/particle-field.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "product-viewer",
      "type": "registry:ui",
      "title": "ProductViewer",
      "description": "An orbitable, polished product volume with an emissive --primary tint; hover slows the spin.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/product-viewer.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "floating-card-3d",
      "type": "registry:ui",
      "title": "FloatingCard3D",
      "description": "A parallax-tilting 3D card with a --background surface, --border edges, and an HTML overlay.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/floating-card-3d.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "text-3d",
      "type": "registry:ui",
      "title": "Text3D",
      "description": "Extruded, floating 3D text rendered with drei <Text3D>, colored with --primary.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/text-3d.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "product-showcase",
      "type": "registry:ui",
      "title": "ProductShowcase",
      "description": "A product on a circular pedestal with soft contact shadows, studio lighting and slow auto-rotate.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/product-showcase.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "globe",
      "type": "registry:ui",
      "title": "Globe",
      "description": "A dotted globe rotating slowly with orbit rings, colored with your --primary token.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/globe.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "wave-terrain",
      "type": "registry:ui",
      "title": "WaveTerrain",
      "description": "An undulating wireframe terrain in perspective, drawn with --primary.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/wave-terrain.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "crystal",
      "type": "registry:ui",
      "title": "Crystal",
      "description": "A faceted glass gem with real refraction and a glowing core, tinted with --primary.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/crystal.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "halo",
      "type": "registry:ui",
      "title": "Halo",
      "description": "A glowing energy core wrapped by tilted orbit rings carrying satellites.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/halo.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "dna-helix",
      "type": "registry:ui",
      "title": "DnaHelix",
      "description": "A rotating double helix of spheres joined by rungs, colored with --primary and --accent.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/dna-helix.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "vortex",
      "type": "registry:ui",
      "title": "Vortex",
      "description": "A spiral galaxy of points fading from --primary at the core to --muted-foreground at the rim.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/vortex.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "aurora-ribbons",
      "type": "registry:ui",
      "title": "AuroraRibbons",
      "description": "Silky aurora ribbons drifting in slow sine waves, shaded with a --primary → --accent gradient.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/aurora-ribbons.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "network-graph",
      "type": "registry:ui",
      "title": "NetworkGraph",
      "description": "A living plexus of drifting nodes that link up when close, fading from --primary to --muted-foreground.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/network-graph.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "metaballs",
      "type": "registry:ui",
      "title": "Metaballs",
      "description": "Liquid metaballs that merge and split as they orbit each other, tinted with --primary.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/metaballs.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "cube-wave",
      "type": "registry:ui",
      "title": "CubeWave",
      "description": "A grid of instanced cubes riding a radial wave, blending --accent troughs into --primary crests.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/cube-wave.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "iso-city",
      "type": "registry:ui",
      "title": "IsoCity",
      "description": "A procedural isometric skyline rotating under fog, with a few towers pulsing in --primary.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/iso-city.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "warp-tunnel",
      "type": "registry:ui",
      "title": "WarpTunnel",
      "description": "Hyperspace star streaks racing past the camera, from --foreground heads to --primary tails.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/warp-tunnel.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "phyllotaxis",
      "type": "registry:ui",
      "title": "Phyllotaxis",
      "description": "A sunflower-style bloom of instanced petals placed by the golden angle, breathing from --primary at the core to --accent at the rim.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/phyllotaxis.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "strange-attractor",
      "type": "registry:ui",
      "title": "StrangeAttractor",
      "description": "The Aizawa attractor integrated live into one glowing orbit that never repeats, colored --primary to --accent with a sweeping head.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/strange-attractor.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "curl-flow",
      "type": "registry:ui",
      "title": "CurlFlow",
      "description": "Particles advected through a divergence-free curl-noise field into silky filaments, tinted --accent to --primary by height.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/curl-flow.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "cloth",
      "type": "registry:ui",
      "title": "Cloth",
      "description": "A real spring-mass cloth (Verlet) hanging from its top edge and rippling under procedural wind, with the theme woven --primary to --accent.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/cloth.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "boids",
      "type": "registry:ui",
      "title": "Boids",
      "description": "A living flock steering by separation, alignment and cohesion; each agent tints --accent when slow to --primary at full speed.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/boids.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "voronoi-shatter",
      "type": "registry:ui",
      "title": "VoronoiShatter",
      "description": "A sphere fractured into Voronoi shards that drift apart and snap back together, each facet shading --accent to --primary by height.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/voronoi-shatter.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "tesseract",
      "type": "registry:ui",
      "title": "Tesseract",
      "description": "A 4D hypercube in double rotation projected into 3D — the inner cell endlessly swells through the outer, struts shading --accent to --primary by 4D depth.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/tesseract.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "pendulum-wave",
      "type": "registry:ui",
      "title": "PendulumWave",
      "description": "A row of pendulums with stepped periods drifting into snakes, arches and chaos before snapping back in phase, bobs tinted --accent to --primary across the swing.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/pendulum-wave.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "pitch-momentum",
      "type": "registry:ui",
      "title": "PitchMomentum",
      "description": "A soccer pitch of dots where two rival particle mountains surge and clash as momentum swings, crests whitening where the fronts collide.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/pitch-momentum.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "world-cup",
      "type": "registry:ui",
      "title": "WorldCup",
      "description": "The World Cup trophy modeled procedurally: two sculpted figures with raised arms lift a continent-embossed globe above a green-banded base, turning under studio light amid a drift of confetti.",
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei"
      ],
      "files": [
        {
          "path": "components/threecn/world-cup.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/threecn/scene-container.tsx",
          "type": "registry:ui"
        },
        {
          "path": "components/hooks/use-shadcn-theme.ts",
          "type": "registry:hook"
        }
      ]
    }
  ]
}
