{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "rivelle",
  "homepage": "https://rivelle.dev",
  "items": [
    {
      "name": "utils",
      "type": "registry:lib",
      "title": "Class name utility",
      "description": "Merge conditional Tailwind CSS class names without conflicts.",
      "dependencies": ["clsx", "tailwind-merge"],
      "files": [
        { "path": "registry/nova/lib/utils.ts", "type": "registry:lib" }
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "A tactile action primitive with a restrained accent edge and an optional signature shape.",
      "dependencies": ["@radix-ui/react-slot", "class-variance-authority"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/button.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "A compact status and metadata label.",
      "dependencies": ["@radix-ui/react-slot", "class-variance-authority"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/badge.tsx", "type": "registry:ui" }]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "A refined input surface with an inset focus baseline and validation states.",
      "dependencies": ["class-variance-authority"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/input.tsx", "type": "registry:ui" }]
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "description": "A responsive multiline text field.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/textarea.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "description": "Composable content container with header, content and footer slots.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/card.tsx", "type": "registry:ui" }]
    },
    {
      "name": "separator",
      "type": "registry:ui",
      "title": "Separator",
      "description": "A semantic horizontal or vertical divider.",
      "dependencies": ["@radix-ui/react-separator"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/separator.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "description": "An accessible animated on/off control.",
      "dependencies": ["@radix-ui/react-switch"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/switch.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "label",
      "type": "registry:ui",
      "title": "Label",
      "description": "Accessible form control label.",
      "dependencies": ["@radix-ui/react-label"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/label.tsx", "type": "registry:ui" }]
    },
    {
      "name": "checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "description": "Animated checkbox for boolean and indeterminate values.",
      "dependencies": ["@radix-ui/react-checkbox", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/checkbox.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "radio-group",
      "type": "registry:ui",
      "title": "Radio Group",
      "description": "A set of mutually exclusive options.",
      "dependencies": ["@radix-ui/react-radio-group", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/radio-group.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "An accessible option picker with a floating content surface.",
      "dependencies": ["@radix-ui/react-select", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/select.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "Layered content organized into keyboard-accessible tabs.",
      "dependencies": ["@radix-ui/react-tabs"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/tabs.tsx", "type": "registry:ui" }]
    },
    {
      "name": "alert",
      "type": "registry:ui",
      "title": "Alert",
      "description": "A semantic callout for important information.",
      "dependencies": ["class-variance-authority"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/alert.tsx", "type": "registry:ui" }]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "A lightweight placeholder for loading content.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/skeleton.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "description": "An image avatar with a reliable fallback.",
      "dependencies": ["@radix-ui/react-avatar"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/avatar.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "Contextual text revealed on hover or keyboard focus.",
      "dependencies": ["@radix-ui/react-tooltip"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/tooltip.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "description": "A modal surface that focuses an important task.",
      "dependencies": ["@radix-ui/react-dialog", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/dialog.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "sheet",
      "type": "registry:ui",
      "title": "Sheet",
      "description": "A dialog that enters from an edge of the screen.",
      "dependencies": [
        "@radix-ui/react-dialog",
        "class-variance-authority",
        "lucide-react"
      ],
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/sheet.tsx", "type": "registry:ui" }]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:ui",
      "title": "Dropdown Menu",
      "description": "A compact menu for actions and choices.",
      "dependencies": ["@radix-ui/react-dropdown-menu", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/dropdown-menu.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "A non-modal floating surface anchored to a trigger.",
      "dependencies": ["@radix-ui/react-popover"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/popover.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "command",
      "type": "registry:ui",
      "title": "Command",
      "description": "A fast, composable command menu and search surface.",
      "dependencies": ["cmdk", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/command.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "accordion",
      "type": "registry:ui",
      "title": "Accordion",
      "description": "Vertically stacked disclosure sections with fluid motion.",
      "dependencies": ["@radix-ui/react-accordion", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/accordion.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "breadcrumb",
      "type": "registry:ui",
      "title": "Breadcrumb",
      "description": "Server-safe hierarchical navigation with composable separators.",
      "dependencies": ["@radix-ui/react-slot", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/breadcrumb.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "collapsible",
      "type": "registry:ui",
      "title": "Collapsible",
      "description": "An expandable content region controlled by a trigger.",
      "dependencies": ["@radix-ui/react-collapsible"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/collapsible.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "progress",
      "type": "registry:ui",
      "title": "Progress",
      "description": "An accessible progress indicator with a luminous active range.",
      "dependencies": ["@radix-ui/react-progress"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/progress.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "slider",
      "type": "registry:ui",
      "title": "Slider",
      "description": "A tactile single or multi-value range control.",
      "dependencies": ["@radix-ui/react-slider"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/slider.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "toggle",
      "type": "registry:ui",
      "title": "Toggle",
      "description": "A two-state button with default and outline treatments.",
      "dependencies": ["@radix-ui/react-toggle", "class-variance-authority"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/toggle.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "toggle-group",
      "type": "registry:ui",
      "title": "Toggle Group",
      "description": "A coordinated set of single or multiple selection toggles.",
      "dependencies": [
        "@radix-ui/react-toggle-group",
        "class-variance-authority"
      ],
      "registryDependencies": ["@rivelle/utils", "@rivelle/toggle"],
      "files": [
        { "path": "registry/nova/ui/toggle-group.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "hover-card",
      "type": "registry:ui",
      "title": "Hover Card",
      "description": "A rich preview revealed from a link or compact trigger.",
      "dependencies": ["@radix-ui/react-hover-card"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/hover-card.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "context-menu",
      "type": "registry:ui",
      "title": "Context Menu",
      "description": "A full-featured action menu opened with a secondary click.",
      "dependencies": ["@radix-ui/react-context-menu", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/context-menu.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "scroll-area",
      "type": "registry:ui",
      "title": "Scroll Area",
      "description": "A native-scrolling viewport with refined custom scrollbars.",
      "dependencies": ["@radix-ui/react-scroll-area"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/scroll-area.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "aspect-ratio",
      "type": "registry:ui",
      "title": "Aspect Ratio",
      "description": "A server-independent primitive for predictable media proportions.",
      "dependencies": ["@radix-ui/react-aspect-ratio"],
      "files": [
        { "path": "registry/nova/ui/aspect-ratio.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "alert-dialog",
      "type": "registry:ui",
      "title": "Alert Dialog",
      "description": "A focused confirmation surface for consequential actions.",
      "dependencies": ["@radix-ui/react-alert-dialog"],
      "registryDependencies": ["@rivelle/utils", "@rivelle/button"],
      "files": [
        { "path": "registry/nova/ui/alert-dialog.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "button-group",
      "type": "registry:ui",
      "title": "Button Group",
      "description": "A connected set of actions with shared geometry.",
      "registryDependencies": ["@rivelle/utils", "@rivelle/button"],
      "files": [
        { "path": "registry/nova/ui/button-group.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "input-group",
      "type": "registry:ui",
      "title": "Input Group",
      "description": "A compound field with inline or stacked addons.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/input-group.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "field",
      "type": "registry:ui",
      "title": "Field",
      "description": "Composable form layout, descriptions and validation messaging.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/field.tsx", "type": "registry:ui" }]
    },
    {
      "name": "table",
      "type": "registry:ui",
      "title": "Table",
      "description": "A responsive data table with refined hierarchy and row states.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/table.tsx", "type": "registry:ui" }]
    },
    {
      "name": "pagination",
      "type": "registry:ui",
      "title": "Pagination",
      "description": "Server-safe navigation for paged content.",
      "dependencies": ["lucide-react"],
      "registryDependencies": ["@rivelle/utils", "@rivelle/button"],
      "files": [
        { "path": "registry/nova/ui/pagination.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "empty",
      "type": "registry:ui",
      "title": "Empty",
      "description": "A composed empty state for first-run and no-result experiences.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/empty.tsx", "type": "registry:ui" }]
    },
    {
      "name": "spinner",
      "type": "registry:ui",
      "title": "Spinner",
      "description": "A compact accessible loading indicator.",
      "dependencies": ["lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/spinner.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "form",
      "type": "registry:ui",
      "title": "Form",
      "description": "Accessible react-hook-form bindings for labels, controls and validation messages.",
      "dependencies": [
        "@radix-ui/react-label",
        "@radix-ui/react-slot",
        "react-hook-form"
      ],
      "registryDependencies": ["@rivelle/utils", "@rivelle/label"],
      "files": [{ "path": "registry/nova/ui/form.tsx", "type": "registry:ui" }]
    },
    {
      "name": "combobox",
      "type": "registry:ui",
      "title": "Combobox",
      "description": "A searchable controlled option picker built from Command and Popover.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/button",
        "@rivelle/command",
        "@rivelle/popover"
      ],
      "files": [
        { "path": "registry/nova/ui/combobox.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "tag-input",
      "type": "registry:ui",
      "title": "Tag Input",
      "description": "An accessible token field for creating, validating and removing free-form values.",
      "dependencies": ["lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/tag-input.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "multi-select",
      "type": "registry:ui",
      "title": "Multi Select",
      "description": "A searchable multiple-value picker with limits, select-all and compact value summaries.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/button",
        "@rivelle/command",
        "@rivelle/popover"
      ],
      "files": [
        { "path": "registry/nova/ui/multi-select.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "calendar",
      "type": "registry:ui",
      "title": "Calendar",
      "description": "A polished single, multiple or range date selection surface.",
      "dependencies": ["lucide-react", "react-day-picker"],
      "registryDependencies": ["@rivelle/utils", "@rivelle/button"],
      "files": [
        { "path": "registry/nova/ui/calendar.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "date-picker",
      "type": "registry:ui",
      "title": "Date Picker",
      "description": "A controlled date field composed from Calendar and Popover.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/button",
        "@rivelle/calendar",
        "@rivelle/popover"
      ],
      "files": [
        { "path": "registry/nova/ui/date-picker.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "drawer",
      "type": "registry:ui",
      "title": "Drawer",
      "description": "A gesture-driven bottom sheet for focused mobile tasks.",
      "dependencies": ["vaul"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/drawer.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "navigation-menu",
      "type": "registry:ui",
      "title": "Navigation Menu",
      "description": "An accessible application or marketing navigation with rich panels.",
      "dependencies": ["@radix-ui/react-navigation-menu", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/ui/navigation-menu.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input-otp",
      "type": "registry:ui",
      "title": "Input OTP",
      "description": "An accessible one-time-code input with animated focus slots.",
      "dependencies": ["input-otp", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/input-otp.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "carousel",
      "type": "registry:ui",
      "title": "Carousel",
      "description": "An accessible touch-friendly carousel powered by Embla.",
      "dependencies": ["embla-carousel-react", "lucide-react"],
      "registryDependencies": ["@rivelle/utils", "@rivelle/button"],
      "files": [
        { "path": "registry/nova/ui/carousel.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "resizable",
      "type": "registry:ui",
      "title": "Resizable",
      "description": "Accessible resizable panel layouts with optional drag handles.",
      "dependencies": ["react-resizable-panels", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/resizable.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "menubar",
      "type": "registry:ui",
      "title": "Menubar",
      "description": "A desktop-style accessible menu bar with nested actions.",
      "dependencies": ["@radix-ui/react-menubar", "lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        { "path": "registry/nova/ui/menubar.tsx", "type": "registry:ui" }
      ]
    },
    {
      "name": "kbd",
      "type": "registry:ui",
      "title": "Kbd",
      "description": "Compact keyboard shortcut labels for commands and hints.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/kbd.tsx", "type": "registry:ui" }]
    },
    {
      "name": "item",
      "type": "registry:ui",
      "title": "Item",
      "description": "A flexible content row for lists, settings and resource pickers.",
      "dependencies": ["@radix-ui/react-slot", "class-variance-authority"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [{ "path": "registry/nova/ui/item.tsx", "type": "registry:ui" }]
    },
    {
      "name": "login-01",
      "type": "registry:block",
      "title": "Login",
      "description": "A polished split-screen sign-in experience.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/button",
        "@rivelle/input",
        "@rivelle/label"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/login-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "signup-01",
      "type": "registry:block",
      "title": "Sign Up",
      "description": "An onboarding form paired with a concise product pitch.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/button",
        "@rivelle/checkbox",
        "@rivelle/input",
        "@rivelle/label"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/signup-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "hero-01",
      "type": "registry:block",
      "title": "Hero",
      "description": "A product hero with navigation, calls to action and atmospheric depth.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/badge",
        "@rivelle/button"
      ],
      "files": [
        { "path": "registry/nova/blocks/hero-01.tsx", "type": "registry:block" }
      ]
    },
    {
      "name": "pricing-01",
      "type": "registry:block",
      "title": "Pricing",
      "description": "A responsive three-tier pricing section with a highlighted plan.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/badge",
        "@rivelle/button"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/pricing-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "sidebar-01",
      "type": "registry:block",
      "title": "Sidebar Navigation",
      "description": "A complete workspace sidebar with search, usage and account controls.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/avatar",
        "@rivelle/badge",
        "@rivelle/button",
        "@rivelle/input"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/sidebar-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "dashboard-shell-01",
      "type": "registry:block",
      "title": "Dashboard Shell",
      "description": "A responsive application shell with navigation, metrics and recent projects.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/avatar",
        "@rivelle/badge",
        "@rivelle/button",
        "@rivelle/card",
        "@rivelle/input",
        "@rivelle/progress"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/dashboard-shell-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "settings-01",
      "type": "registry:block",
      "title": "Settings Form",
      "description": "An account settings form with profile and notification controls.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/avatar",
        "@rivelle/button",
        "@rivelle/input",
        "@rivelle/label",
        "@rivelle/separator",
        "@rivelle/switch",
        "@rivelle/textarea"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/settings-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "empty-project-01",
      "type": "registry:block",
      "title": "Empty Project State",
      "description": "A polished first-run state for creating or importing a project.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/button",
        "@rivelle/empty"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/empty-project-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "site-header-01",
      "type": "registry:block",
      "title": "Site Header",
      "description": "A responsive product header with desktop navigation, mobile menu and profile actions.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/avatar",
        "@rivelle/button",
        "@rivelle/dropdown-menu",
        "@rivelle/sheet"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/site-header-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "profile-card-01",
      "type": "registry:block",
      "title": "Profile Card",
      "description": "A polished professional profile with availability, location and social actions.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/avatar",
        "@rivelle/badge",
        "@rivelle/button"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/profile-card-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "feature-section-01",
      "type": "registry:block",
      "title": "Feature Section",
      "description": "A product feature section with a narrative introduction and three responsive cards.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/badge",
        "@rivelle/button"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/feature-section-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "testimonial-section-01",
      "type": "registry:block",
      "title": "Testimonial Section",
      "description": "A high-contrast social proof section with customer quotes and identities.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/avatar",
        "@rivelle/badge"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/testimonial-section-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "contact-form-01",
      "type": "registry:block",
      "title": "Contact Form",
      "description": "A complete contact section with supporting details and a responsive inquiry form.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/badge",
        "@rivelle/button",
        "@rivelle/input",
        "@rivelle/label",
        "@rivelle/textarea"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/contact-form-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "footer-01",
      "type": "registry:block",
      "title": "Site Footer",
      "description": "A responsive multi-column footer with newsletter, navigation and legal links.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/button",
        "@rivelle/input"
      ],
      "files": [
        {
          "path": "registry/nova/blocks/footer-01.tsx",
          "type": "registry:block"
        }
      ]
    },
    {
      "name": "saas-landing-01",
      "type": "registry:page",
      "title": "SaaS Landing",
      "description": "A complete software landing page with product hero, dashboard preview, features, proof, pricing, contact and footer.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/avatar",
        "@rivelle/badge",
        "@rivelle/button",
        "@rivelle/card",
        "@rivelle/progress",
        "@rivelle/site-header-01",
        "@rivelle/feature-section-01",
        "@rivelle/testimonial-section-01",
        "@rivelle/pricing-01",
        "@rivelle/contact-form-01",
        "@rivelle/footer-01"
      ],
      "files": [
        {
          "path": "registry/nova/templates/saas-landing-01.tsx",
          "type": "registry:page",
          "target": "@templates/saas-landing-01.tsx"
        }
      ]
    },
    {
      "name": "creative-portfolio-01",
      "type": "registry:page",
      "title": "Creative Portfolio",
      "description": "A bold studio portfolio with selected work, profile, process, inquiry form and footer.",
      "dependencies": ["lucide-react"],
      "registryDependencies": [
        "@rivelle/utils",
        "@rivelle/badge",
        "@rivelle/button",
        "@rivelle/site-header-01",
        "@rivelle/profile-card-01",
        "@rivelle/contact-form-01",
        "@rivelle/footer-01"
      ],
      "files": [
        {
          "path": "registry/nova/templates/creative-portfolio-01.tsx",
          "type": "registry:page",
          "target": "@templates/creative-portfolio-01.tsx"
        }
      ]
    },
    {
      "name": "gradient-mesh",
      "type": "registry:ui",
      "title": "Cursor Gradient",
      "description": "An animated color mesh with a luminous pointer-following field.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/gradient-mesh.tsx",
          "type": "registry:ui",
          "target": "@effects/gradient-mesh.tsx"
        }
      ]
    },
    {
      "name": "text-scramble",
      "type": "registry:ui",
      "title": "Text Scramble",
      "description": "An accessible decoding text effect that respects reduced motion.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/text-scramble.tsx",
          "type": "registry:ui",
          "target": "@effects/text-scramble.tsx"
        }
      ]
    },
    {
      "name": "magnetic-button",
      "type": "registry:ui",
      "title": "Magnetic Button",
      "description": "A tactile action that leans toward the pointer and snaps back.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/magnetic-button.tsx",
          "type": "registry:ui",
          "target": "@effects/magnetic-button.tsx"
        }
      ]
    },
    {
      "name": "perspective-grid",
      "type": "registry:ui",
      "title": "Perspective Grid",
      "description": "A pointer-reactive perspective horizon grid without canvas or WebGL.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/perspective-grid.tsx",
          "type": "registry:ui",
          "target": "@effects/perspective-grid.tsx"
        }
      ]
    },
    {
      "name": "ripple-grid",
      "type": "registry:ui",
      "title": "Ripple Grid",
      "description": "A field of cells that contracts and illuminates around the pointer.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/ripple-grid.tsx",
          "type": "registry:ui",
          "target": "@effects/ripple-grid.tsx"
        }
      ]
    },
    {
      "name": "shimmer-button",
      "type": "registry:ui",
      "title": "Shimmer Button",
      "description": "A luminous action with looping shimmer and pointer-following glow.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/shimmer-button.tsx",
          "type": "registry:ui",
          "target": "@effects/shimmer-button.tsx"
        }
      ]
    },
    {
      "name": "tilt-card",
      "type": "registry:ui",
      "title": "Tilt Card",
      "description": "A pointer-driven 3D surface with perspective depth and glare.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/tilt-card.tsx",
          "type": "registry:ui",
          "target": "@effects/tilt-card.tsx"
        }
      ]
    },
    {
      "name": "compare-slider",
      "type": "registry:ui",
      "title": "Compare Slider",
      "description": "A before-and-after stage with drag, hover and keyboard interaction.",
      "dependencies": ["lucide-react"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/compare-slider.tsx",
          "type": "registry:ui",
          "target": "@effects/compare-slider.tsx"
        }
      ]
    },
    {
      "name": "direction-reveal",
      "type": "registry:ui",
      "title": "Direction Reveal",
      "description": "A reveal overlay that enters and exits from the pointer direction.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/direction-reveal.tsx",
          "type": "registry:ui",
          "target": "@effects/direction-reveal.tsx"
        }
      ]
    },
    {
      "name": "cursor-lens",
      "type": "registry:ui",
      "title": "Cursor Lens",
      "description": "A circular pointer magnifier for arbitrary React content.",
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/cursor-lens.tsx",
          "type": "registry:ui",
          "target": "@effects/cursor-lens.tsx"
        }
      ]
    },
    {
      "name": "draggable-stack",
      "type": "registry:ui",
      "title": "Draggable Stack",
      "description": "A spring-driven stack with threshold-based card promotion.",
      "dependencies": ["motion"],
      "registryDependencies": ["@rivelle/utils"],
      "files": [
        {
          "path": "registry/nova/effects/draggable-stack.tsx",
          "type": "registry:ui",
          "target": "@effects/draggable-stack.tsx"
        }
      ]
    },
    {
      "name": "sonner",
      "type": "registry:ui",
      "title": "Toast / Sonner",
      "description": "Polished toast notifications for transient feedback.",
      "dependencies": ["sonner", "lucide-react"],
      "files": [
        { "path": "registry/nova/ui/sonner.tsx", "type": "registry:ui" }
      ]
    }
  ]
}
