{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "spark-ui",
  "homepage": "https://spark-ui-olive.vercel.app",
  "author": "Spark UI (https://spark-ui-olive.vercel.app)",
  "items": [
    {
      "name": "pagination",
      "type": "registry:component",
      "title": "Pagination",
      "description": "A beautiful pagination component with multiple variants, colors, and smooth animations.",
      "files": [
        {
          "path": "registry/spark-ui/pagination/index.ts",
          "type": "registry:component"
        },
        {
          "path": "registry/spark-ui/pagination/pagination.tsx",
          "type": "registry:component"
        },
        {
          "path": "registry/spark-ui/pagination/types.ts",
          "type": "registry:component"
        },
        {
          "path": "registry/spark-ui/pagination/use-pagination-state.ts",
          "type": "registry:hook"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "registryDependencies": [],
      "category": "navigation"
    },
    {
      "name": "accordion",
      "type": "registry:component",
      "title": "Accordion",
      "description": "A vertically stacked set of interactive headings that reveal content.",
      "files": [
        {
          "path": "registry/spark-ui/accordion.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-accordion",
        "lucide-react"
      ],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "tactile-highlight",
      "type": "registry:component",
      "title": "Tactile Highlight",
      "description": "A fluid text highlight component that reacts to viewport visibility and user interaction.",
      "files": [
        {
          "path": "registry/spark-ui/tactile-highlight.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "registryDependencies": [],
      "category": "typography"
    },
    {
      "name": "spotify-card",
      "type": "registry:component",
      "title": "Spotify Card",
      "description": "A premium Spotify card with real-time metadata and morphing animations.",
      "files": [
        {
          "path": "registry/spark-ui/spotify/spotify-card.tsx",
          "type": "registry:component"
        },
        {
          "path": "registry/spark-ui/spotify/metadata-route.ts",
          "type": "registry:component",
          "target": "app/api/spotify/metadata/route.ts"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react",
        "cheerio",
        "got"
      ],
      "registryDependencies": [],
      "category": "media"
    },
    {
      "name": "shimmer-text",
      "type": "registry:component",
      "title": "Shimmer Text",
      "description": "A premium text component with an elegant shimmer animation effect.",
      "files": [
        {
          "path": "registry/spark-ui/shimmer-text.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "registryDependencies": [],
      "category": "typography"
    },
    {
      "name": "basic-number-ticker",
      "type": "registry:component",
      "title": "Basic Number Ticker",
      "description": "An animated number ticker component with customizable start, target, transitions, and callbacks.",
      "files": [
        {
          "path": "registry/spark-ui/basic-number-ticker.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "registryDependencies": [],
      "category": "typography"
    },
    {
      "name": "input",
      "type": "registry:component",
      "title": "Input",
      "description": "A standard form input styled to match shadcn/ui.",
      "files": [
        {
          "path": "registry/spark-ui/input.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [],
      "registryDependencies": [],
      "category": "form"
    },
    {
      "name": "qr-code",
      "type": "registry:component",
      "title": "QR Code",
      "description": "A beautiful QR code component with dot styling, gradient support, and extensive color customization.",
      "files": [
        {
          "path": "registry/spark-ui/qr-code.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "qrcode"
      ],
      "registryDependencies": [],
      "category": "media"
    },
    {
      "name": "animated-gradient",
      "type": "registry:component",
      "title": "Animated Gradient",
      "description": "WebGL-powered animated mist, lava, and plasma backgrounds with smooth silk-like flowing streams.",
      "files": [
        {
          "path": "registry/spark-ui/animated-gradient.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [],
      "registryDependencies": [],
      "category": "media"
    },
    {
      "name": "ghost-ether",
      "type": "registry:component",
      "title": "Ghost Ether",
      "description": "WebGL-powered interactive fluid simulation with dynamic FBM mist and wandering spirit force trails using three.",
      "files": [
        {
          "path": "registry/spark-ui/ghost-ether.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "three",
        "@types/three"
      ],
      "registryDependencies": [],
      "category": "media"
    },
    {
      "name": "logo-carousel",
      "type": "registry:component",
      "title": "Logo Carousel",
      "description": "A beautiful, high-performance scrolling logo carousel component with pausing, custom directions, speed, and fade effects.",
      "files": [
        {
          "path": "registry/spark-ui/logo-carousel.tsx",
          "type": "registry:component"
        },
        {
          "path": "public/logos/cursor.svg",
          "type": "registry:file",
          "target": "public/logos/cursor.svg"
        },
        {
          "path": "public/logos/descript.svg",
          "type": "registry:file",
          "target": "public/logos/descript.svg"
        },
        {
          "path": "public/logos/discord.svg",
          "type": "registry:file",
          "target": "public/logos/discord.svg"
        },
        {
          "path": "public/logos/duolingo.svg",
          "type": "registry:file",
          "target": "public/logos/duolingo.svg"
        },
        {
          "path": "public/logos/framer.svg",
          "type": "registry:file",
          "target": "public/logos/framer.svg"
        },
        {
          "path": "public/logos/google.svg",
          "type": "registry:file",
          "target": "public/logos/google.svg"
        },
        {
          "path": "public/logos/linear.svg",
          "type": "registry:file",
          "target": "public/logos/linear.svg"
        },
        {
          "path": "public/logos/netflix.svg",
          "type": "registry:file",
          "target": "public/logos/netflix.svg"
        },
        {
          "path": "public/logos/notion.svg",
          "type": "registry:file",
          "target": "public/logos/notion.svg"
        },
        {
          "path": "public/logos/openai.svg",
          "type": "registry:file",
          "target": "public/logos/openai.svg"
        },
        {
          "path": "public/logos/opensea.svg",
          "type": "registry:file",
          "target": "public/logos/opensea.svg"
        },
        {
          "path": "public/logos/phantom.svg",
          "type": "registry:file",
          "target": "public/logos/phantom.svg"
        },
        {
          "path": "public/logos/ramp.svg",
          "type": "registry:file",
          "target": "public/logos/ramp.svg"
        },
        {
          "path": "public/logos/shopify.svg",
          "type": "registry:file",
          "target": "public/logos/shopify.svg"
        },
        {
          "path": "public/logos/tesla.svg",
          "type": "registry:file",
          "target": "public/logos/tesla.svg"
        },
        {
          "path": "public/logos/vercel.svg",
          "type": "registry:file",
          "target": "public/logos/vercel.svg"
        }
      ],
      "dependencies": [],
      "registryDependencies": [],
      "category": "media"
    },
    {
      "name": "logo-carousel-right",
      "type": "registry:component",
      "title": "Logo Carousel Right",
      "description": "Right scrolling Logo Carousel demo.",
      "files": [
        {
          "path": "registry/demos/logo-carousel-demo-right.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [],
      "registryDependencies": [],
      "category": "media"
    },
    {
      "name": "image-trail",
      "type": "registry:component",
      "title": "Image Trail",
      "description": "A framed mouse-tracking image trail with momentum, captions, and customizable styling.",
      "files": [
        {
          "path": "registry/spark-ui/image-trail.tsx",
          "type": "registry:component"
        },
        {
          "path": "public/images/trail-1.jpg",
          "type": "registry:file",
          "target": "public/images/trail-1.jpg"
        },
        {
          "path": "public/images/trail-2.jpg",
          "type": "registry:file",
          "target": "public/images/trail-2.jpg"
        },
        {
          "path": "public/images/trail-3.jpg",
          "type": "registry:file",
          "target": "public/images/trail-3.jpg"
        },
        {
          "path": "public/images/trail-4.jpg",
          "type": "registry:file",
          "target": "public/images/trail-4.jpg"
        },
        {
          "path": "public/images/trail-5.jpg",
          "type": "registry:file",
          "target": "public/images/trail-5.jpg"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "registryDependencies": [],
      "category": "media"
    },
    {
      "name": "badge",
      "type": "registry:component",
      "title": "Badge",
      "description": "A small status label with default, secondary, destructive, and outline variants.",
      "files": [
        {
          "path": "registry/spark-ui/badge.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "category": "typography"
    },
    {
      "name": "card",
      "type": "registry:component",
      "title": "Card",
      "description": "A container with header, title, description, content, and footer sections.",
      "files": [
        {
          "path": "registry/spark-ui/card.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "empty",
      "type": "registry:component",
      "title": "Empty",
      "description": "An empty state with media, title, description, and content slots.",
      "files": [
        {
          "path": "registry/spark-ui/empty.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "alert",
      "type": "registry:component",
      "title": "Alert",
      "description": "A callout for important information with default and destructive variants.",
      "files": [
        {
          "path": "registry/spark-ui/alert.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "alert-dialog",
      "type": "registry:component",
      "title": "Alert Dialog",
      "description": "A modal dialog that interrupts the user for a confirmation.",
      "files": [
        {
          "path": "registry/spark-ui/alert-dialog.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-alert-dialog"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "layout"
    },
    {
      "name": "breadcrumb",
      "type": "registry:component",
      "title": "Breadcrumb",
      "description": "A navigation trail showing the current page's location in the hierarchy.",
      "files": [
        {
          "path": "registry/spark-ui/breadcrumb.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-slot",
        "lucide-react"
      ],
      "registryDependencies": [],
      "category": "navigation"
    },
    {
      "name": "button",
      "type": "registry:component",
      "title": "Button",
      "description": "A button with default, secondary, outline, ghost, destructive, link, and spark variants.",
      "files": [
        {
          "path": "registry/spark-ui/button.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-slot",
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "category": "button"
    },
    {
      "name": "checkbox",
      "type": "registry:component",
      "title": "Checkbox",
      "description": "A control that toggles between checked and unchecked.",
      "files": [
        {
          "path": "registry/spark-ui/checkbox.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-checkbox",
        "lucide-react"
      ],
      "registryDependencies": [],
      "category": "form"
    },
    {
      "name": "dialog",
      "type": "registry:component",
      "title": "Dialog",
      "description": "A modal window overlaid on the page with an optional close button.",
      "files": [
        {
          "path": "registry/spark-ui/dialog.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-dialog",
        "lucide-react"
      ],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "dropdown-menu",
      "type": "registry:component",
      "title": "Dropdown Menu",
      "description": "A menu of actions opened from a trigger element.",
      "files": [
        {
          "path": "registry/spark-ui/dropdown-menu.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-dropdown-menu",
        "lucide-react"
      ],
      "registryDependencies": [],
      "category": "navigation"
    },
    {
      "name": "hover-card",
      "type": "registry:component",
      "title": "Hover Card",
      "description": "A card preview shown when hovering a trigger element.",
      "files": [
        {
          "path": "registry/spark-ui/hover-card.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-hover-card"
      ],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "popover",
      "type": "registry:component",
      "title": "Popover",
      "description": "A floating panel anchored to a trigger element.",
      "files": [
        {
          "path": "registry/spark-ui/popover.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-popover"
      ],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "progress",
      "type": "registry:component",
      "title": "Progress",
      "description": "A bar indicating the completion progress of a task.",
      "files": [
        {
          "path": "registry/spark-ui/progress.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-progress"
      ],
      "registryDependencies": [],
      "category": "form"
    },
    {
      "name": "separator",
      "type": "registry:component",
      "title": "Separator",
      "description": "A horizontal or vertical line separating content.",
      "files": [
        {
          "path": "registry/spark-ui/separator.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-separator"
      ],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "sheet",
      "type": "registry:component",
      "title": "Sheet",
      "description": "A slide-over panel that extends from any edge of the screen.",
      "files": [
        {
          "path": "registry/spark-ui/sheet.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-dialog",
        "class-variance-authority",
        "lucide-react"
      ],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "skeleton",
      "type": "registry:component",
      "title": "Skeleton",
      "description": "A pulsing placeholder shown while content loads.",
      "files": [
        {
          "path": "registry/spark-ui/skeleton.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "switch",
      "type": "registry:component",
      "title": "Switch",
      "description": "A toggle control that switches between on and off.",
      "files": [
        {
          "path": "registry/spark-ui/switch.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-switch"
      ],
      "registryDependencies": [],
      "category": "form"
    },
    {
      "name": "table",
      "type": "registry:component",
      "title": "Table",
      "description": "A responsive table with header, body, footer, and caption sections.",
      "files": [
        {
          "path": "registry/spark-ui/table.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "textarea",
      "type": "registry:component",
      "title": "Textarea",
      "description": "A multi-line text input field.",
      "files": [
        {
          "path": "registry/spark-ui/textarea.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [],
      "registryDependencies": [],
      "category": "form"
    },
    {
      "name": "toggle",
      "type": "registry:component",
      "title": "Toggle",
      "description": "A two-state button that can be toggled on or off.",
      "files": [
        {
          "path": "registry/spark-ui/toggle.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-toggle",
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "category": "button"
    },
    {
      "name": "kanban",
      "type": "registry:component",
      "title": "Kanban",
      "description": "A composable drag-and-drop task board styled to match shadcn/ui.",
      "files": [
        {
          "path": "registry/spark-ui/kanban.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [],
      "registryDependencies": [],
      "category": "layout"
    },
    {
      "name": "tooltip",
      "type": "registry:component",
      "title": "Tooltip",
      "description": "A short label shown when hovering or focusing an element.",
      "files": [
        {
          "path": "registry/spark-ui/tooltip.tsx",
          "type": "registry:component"
        }
      ],
      "dependencies": [
        "@radix-ui/react-tooltip"
      ],
      "registryDependencies": [],
      "category": "layout"
    }
  ]
}
