{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "shadcn-3d-viewer",
  "homepage": "https://github.com/michidk/shadcn-3d-viewer",
  "items": [
    {
      "name": "model-viewer",
      "type": "registry:ui",
      "title": "3D Model Viewer",
      "description": "Complete viewer preset with all composable controls and inspector.",
      "dependencies": [
        "@react-three/drei",
        "@react-three/fiber",
        "lucide-react",
        "three",
        "three-stdlib",
        "@base-ui/react",
        "class-variance-authority"
      ],
      "devDependencies": ["@types/three"],
      "registryDependencies": ["alert", "button", "tooltip", "dropdown-menu"],
      "files": [
        {
          "path": "src/components/ui/model-viewer/controls.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/core.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/index.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/inspector-hierarchy.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/inspector.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/lazy.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-inspection.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-inspector.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-resources.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-camera.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-colors.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-context.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-core-parts.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-inspector.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-lifecycle.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-orientation.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-parts.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-root.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-scene.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-skeleton.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-toolbar.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-types.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer.css",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/outside-sky.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-camera.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-model.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-renderer.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-controlled-state.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-expanded-viewer-focus.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-model-viewer-runtime.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-capture.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-feedback.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-fullscreen.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-interactions.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-preferences.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-session.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-visibility.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/view-cube.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/view-helper.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-loader-spinner.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-loader.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-popups.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-ui.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "model-viewer-core",
      "type": "registry:ui",
      "title": "3D Viewer Core",
      "description": "Renderer, state, loading and error UI, keyboard orientation, and fullscreen. No toolbar or inspector UI.",
      "dependencies": [
        "@react-three/drei",
        "@react-three/fiber",
        "lucide-react",
        "three",
        "three-stdlib",
        "@base-ui/react",
        "class-variance-authority"
      ],
      "devDependencies": ["@types/three"],
      "registryDependencies": ["alert", "button", "tooltip", "dropdown-menu"],
      "files": [
        {
          "path": "src/components/ui/model-viewer/core.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-inspection.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-resources.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-camera.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-colors.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-context.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-core-parts.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-lifecycle.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-orientation.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-root.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-scene.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-skeleton.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-types.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer.css",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/outside-sky.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-camera.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-model.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-renderer.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-controlled-state.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-expanded-viewer-focus.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-model-viewer-runtime.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-capture.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-feedback.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-fullscreen.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-interactions.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-preferences.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-session.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-visibility.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/view-cube.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/view-helper.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-loader-spinner.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-loader.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-popups.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-ui.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "model-viewer-controls",
      "type": "registry:ui",
      "title": "3D Viewer Controls",
      "description": "Composable toolbar menus, camera and animation controls, with the viewer core.",
      "dependencies": [
        "@react-three/drei",
        "@react-three/fiber",
        "lucide-react",
        "three",
        "three-stdlib",
        "@base-ui/react",
        "class-variance-authority"
      ],
      "devDependencies": ["@types/three"],
      "registryDependencies": ["alert", "button", "tooltip", "dropdown-menu"],
      "files": [
        {
          "path": "src/components/ui/model-viewer/controls.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/core.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-inspection.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-resources.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-camera.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-colors.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-context.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-core-parts.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-lifecycle.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-orientation.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-parts.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-root.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-scene.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-skeleton.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-toolbar.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-types.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer.css",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/outside-sky.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-camera.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-model.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-renderer.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-controlled-state.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-expanded-viewer-focus.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-model-viewer-runtime.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-capture.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-feedback.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-fullscreen.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-interactions.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-preferences.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-session.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-visibility.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/view-cube.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/view-helper.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-loader-spinner.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-loader.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-popups.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-ui.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "model-viewer-inspector",
      "type": "registry:ui",
      "title": "3D Viewer Inspector",
      "description": "Searchable scene inspector with the viewer core. No default toolbar.",
      "dependencies": [
        "@react-three/drei",
        "@react-three/fiber",
        "lucide-react",
        "three",
        "three-stdlib",
        "@base-ui/react",
        "class-variance-authority"
      ],
      "devDependencies": ["@types/three"],
      "registryDependencies": ["alert", "button", "tooltip", "dropdown-menu"],
      "files": [
        {
          "path": "src/components/ui/model-viewer/core.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/inspector-hierarchy.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/inspector.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-inspection.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-inspector.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-resources.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-camera.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-colors.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-context.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-core-parts.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-inspector.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-lifecycle.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-orientation.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-root.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-scene.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-skeleton.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer-types.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/model-viewer.css",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/outside-sky.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-camera.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-model.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/scene-renderer.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-controlled-state.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-expanded-viewer-focus.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-model-viewer-runtime.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-capture.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-feedback.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-fullscreen.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-interactions.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-preferences.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-session.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/use-viewer-visibility.ts",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/view-cube.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/view-helper.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-loader-spinner.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-loader.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-popups.tsx",
          "type": "registry:ui"
        },
        {
          "path": "src/components/ui/model-viewer/viewer-ui.tsx",
          "type": "registry:ui"
        }
      ]
    }
  ]
}
