{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "spectrumui",
  "homepage": "https://ui.spectrumhq.in",
  "items": [
    {
      "name": "agent-plan",
      "type": "registry:block",
      "title": "Agent Plan",
      "description": "An editable plan checklist the agent proposes before running.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/agent-plan.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/agent-plan.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "agent",
        "plan"
      ]
    },
    {
      "name": "agent-steps",
      "type": "registry:block",
      "title": "Agent Steps",
      "description": "A timeline of tool calls with status, arguments, results, and parallel sub-steps.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/agent-steps.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/agent-steps.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "agent",
        "steps"
      ]
    },
    {
      "name": "approval-card",
      "type": "registry:block",
      "title": "Approval Card",
      "description": "A human-in-the-loop approval for an action an agent wants to take.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/approval-card.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/approval-card.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "approval",
        "card"
      ]
    },
    {
      "name": "chat-empty-state",
      "type": "registry:block",
      "title": "Chat Empty State",
      "description": "A first-run greeting with staggered suggestion chips.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/chat-empty-state.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/chat-empty-state.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "chat",
        "empty",
        "state"
      ]
    },
    {
      "name": "citation-sources",
      "type": "registry:block",
      "title": "Citation Sources",
      "description": "Inline citation markers with hover previews or a footnote list.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/citation-sources.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/citation-sources.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "citation",
        "sources"
      ]
    },
    {
      "name": "code-block",
      "type": "registry:block",
      "title": "Code Block",
      "description": "An AI code block with a file header, copy, and line collapse.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/code-block.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/code-block.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "code",
        "block"
      ]
    },
    {
      "name": "conversation-list",
      "type": "registry:block",
      "title": "Conversation List",
      "description": "A date-grouped conversation sidebar with pinning.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/conversation-list.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/conversation-list.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "conversation",
        "list"
      ]
    },
    {
      "name": "diff-view",
      "type": "registry:block",
      "title": "Diff View",
      "description": "Proposed file changes with per-file accept and reject.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/diff-view.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/diff-view.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "diff",
        "view"
      ]
    },
    {
      "name": "disclose-image",
      "type": "registry:component",
      "title": "Disclose Image",
      "description": "An image reveal component with animated sliding door panels.",
      "files": [
        {
          "path": "components/spectrumui/discloseimage.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/discloseimage.tsx"
        }
      ]
    },
    {
      "name": "error-state",
      "type": "registry:block",
      "title": "Error State",
      "description": "A failed-generation state with a preserved prompt and retry.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/error-state.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/error-state.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "error",
        "state"
      ]
    },
    {
      "name": "github-profile-card",
      "type": "registry:component",
      "title": "GitHub Profile Card",
      "description": "A GitHub profile card with account stats, a contribution graph, and social links.",
      "files": [
        {
          "path": "components/spectrumui/github-profile-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/github-profile-card.tsx"
        },
        {
          "path": "components/icon.tsx",
          "type": "registry:component",
          "target": "components/icon.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "avatar",
        "button",
        "card",
        "input"
      ]
    },
    {
      "name": "alert-1",
      "type": "registry:component",
      "title": "Alert demo",
      "description": "component for the alert-demo",
      "files": [
        {
          "path": "app/registry/alertdemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/alertdemo.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "alert"
      ]
    },
    {
      "name": "alert-2",
      "type": "registry:component",
      "title": "Alert 2",
      "description": "component for the alert-2",
      "files": [
        {
          "path": "app/registry/alerttwo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/alerttwo.tsx"
        }
      ],
      "registryDependencies": [
        "alert",
        "button"
      ]
    },
    {
      "name": "alert-3",
      "type": "registry:component",
      "title": "Alert 3",
      "description": "component for the alert-3",
      "files": [
        {
          "path": "app/registry/alertthree.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/alertthree.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ]
    },
    {
      "name": "alert-4",
      "type": "registry:component",
      "title": "Alert 4",
      "description": "component for the alert-4",
      "files": [
        {
          "path": "app/registry/alertfour.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/alertfour.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "alert"
      ]
    },
    {
      "name": "animated-card",
      "type": "registry:component",
      "title": "Animated Card",
      "description": "component for the Animated Card",
      "files": [
        {
          "path": "app/registry/animatedcard/animatedcard.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/animatedcard.tsx"
        },
        {
          "path": "app/registry/animatedcard/animatedcarddemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/animatedcarddemo.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Card",
      "docsUrl": "https://ui.spectrumhq.in/docs/animatedcard"
    },
    {
      "name": "animated-SVG-chart",
      "type": "registry:component",
      "title": "Animated SVG Chart",
      "description": "component for the Animated SVG Chart",
      "files": [
        {
          "path": "app/registry/animatedchart/animateddemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/animatedemo.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ]
    },
    {
      "name": "animated-testimonials",
      "type": "registry:component",
      "title": "Animated Testimonials",
      "description": "component for the Animated Testimonials",
      "files": [
        {
          "path": "app/registry/demousages.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/animated_testimonials.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "registryDependencies": [
        "button"
      ]
    },
    {
      "name": "autosize-textarea-dependecies",
      "type": "registry:component",
      "title": "Autosize Textarea Dependencies",
      "description": "component for the Autosize Textarea Dependencies",
      "files": [
        {
          "path": "app/registry/spectrumui/autosize-textarea.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/autosize-textarea.tsx"
        }
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/autosize-textarea"
    },
    {
      "name": "autosize-textarea-demo",
      "type": "registry:component",
      "title": "Autosize Textarea Demo",
      "description": "component for the Autosize Textarea",
      "files": [
        {
          "path": "app/registry/autosize-textarea/autosize-textarea-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/autosize-textarea-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/autosize-textarea-dependecies"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/autosize-textarea"
    },
    {
      "name": "autosize-textarea-max-height",
      "type": "registry:component",
      "title": "Autosize Textarea Max Height",
      "description": "component for the Autosize Textarea Max Height",
      "files": [
        {
          "path": "app/registry/autosize-textarea/usage/autosize-textarea-with-max-height.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/autosize-textarea-with-max-height.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/autosize-textarea-dependecies"
      ]
    },
    {
      "name": "autosize-textarea-ref",
      "type": "registry:component",
      "title": "Autosize Textarea Ref",
      "description": "component for the Autosize Textarea Ref",
      "files": [
        {
          "path": "app/registry/autosize-textarea/usage/autosize-textarea-with-ref.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/autosize-textarea-with-ref.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/autosize-textarea-dependecies"
      ]
    },
    {
      "name": "autosize-textarea-form",
      "type": "registry:component",
      "title": "Autosize Textarea Form",
      "description": "component for the Autosize Textarea Form",
      "files": [
        {
          "path": "app/registry/autosize-textarea/usage/autosize-textarea-form.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/autosize-textarea-form.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/autosize-textarea-dependecies"
      ]
    },
    {
      "name": "autosize-textarea-customize",
      "type": "registry:component",
      "title": "Autosize Textarea Customize",
      "description": "component for the Autosize Textarea Customize",
      "files": [
        {
          "path": "app/registry/autosize-textarea/usage/autosize-textarea-customize.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/autosize-textarea-customize.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/autosize-textarea-dependecies"
      ]
    },
    {
      "name": "datetime-picker-demo",
      "type": "registry:component",
      "title": "Datetime Picker Demo",
      "description": "component for the Datetime Picker Demo",
      "files": [
        {
          "path": "app/registry/datetime-picker/datetime-picker-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/autosize-textarea-customize.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/datetime-picker"
    },
    {
      "name": "datetime-picker-hour-cycle",
      "type": "registry:component",
      "title": "Datetime Picker Hour",
      "description": "component for the Datetime Picker Hour",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-hour-cycle.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/datetime-picker-form.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-and-time-input",
      "type": "registry:component",
      "title": "Datetime Picker and Time Input",
      "description": "component for the Datetime Picker and Time Input",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/date-picker-and-time-input.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/date-picker-and-time-input.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-year-range",
      "type": "registry:component",
      "title": "Datetime Year Range",
      "description": "component for the Datetime Year Range",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-year-range.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/datetime-picker-year-range.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-locale",
      "type": "registry:component",
      "title": "Datetime Picker Locale",
      "description": "component for the Datetime Picker Locale",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-locale.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/datetime-picker-locale.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-calendar-settings",
      "type": "registry:component",
      "title": "Datetime Picker Calendar Settings",
      "description": "component for the Datetime Picker Calendar Settings",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-calendar-settings.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/datetime-picker-calendar-settings.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-display-format",
      "type": "registry:component",
      "title": "Datetime Picker Display Format",
      "description": "component for the Datetime Picker Display Format",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-display-format.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/datetime-picker-display-format.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-placeholder",
      "type": "registry:component",
      "title": "Datetime Picker Placeholder",
      "description": "component for the Datetime Picker Placeholder",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-placeholder.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/date-picker-placeholder.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-granularity",
      "type": "registry:component",
      "title": "Datetime Picker Granularity",
      "description": "component for the Datetime Picker Granularity",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-granularity.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/date-picker-granularity.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-disabled",
      "type": "registry:component",
      "title": "Datetime Picker Disabled",
      "description": "component for the Datetime Picker Disabled",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-disabled.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/date-picker-disabled.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-ref",
      "type": "registry:component",
      "title": "Datetime Picker Ref",
      "description": "component for the Datetime Picker Ref",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-ref.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/date-picker-ref.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "datetime-picker-form",
      "type": "registry:component",
      "title": "Datetime Picker Form",
      "description": "component for the Datetime Picker Form",
      "files": [
        {
          "path": "app/registry/datetime-picker/usage/datetime-picker-form.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/date-picker-form.tsx"
        }
      ],
      "registryDependencies": [
        "datetime-picker"
      ]
    },
    {
      "name": "dual-range-slider-dependecies",
      "type": "registry:component",
      "title": "Dual Range Slider Dependencies",
      "description": "component for the Dual Range Slider Dependencies",
      "files": [
        {
          "path": "app/registry/spectrumui/dual-range-slider-dependecies.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/dual-range-slider-dependecies.tsx"
        }
      ],
      "dependencies": [
        "@radix-ui/react-slider"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/dual-range-slider"
    },
    {
      "name": "dual-range-slider-demo",
      "type": "registry:component",
      "title": "Dual Range Slider Demo",
      "description": "component for the Dual Range Slider Demo",
      "files": [
        {
          "path": "app/registry/dual-range-slider/dual-range-slider-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/dual-range-slider-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/dual-range-slider-dependecies"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/dual-range-slider"
    },
    {
      "name": "dual-range-slider-custom-label",
      "type": "registry:component",
      "title": "Dual Range Slider Custom Label",
      "description": "component for the Dual Range Slider Custom Label",
      "files": [
        {
          "path": "app/registry/dual-range-slider/usage/dual-range-slider-custom-label.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/dual-range-slider-custom-label.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/dual-range-slider-dependecies"
      ]
    },
    {
      "name": "dual-range-slider-label-position",
      "type": "registry:component",
      "title": "Dual Range Slider Label Position",
      "description": "component for the Dual Range Slider Label Position",
      "files": [
        {
          "path": "app/registry/dual-range-slider/usage/dual-range-slider-label-position.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/dual-range-slider-label-position.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/dual-range-slider-dependecies"
      ]
    },
    {
      "name": "dual-range-slider-single",
      "type": "registry:component",
      "title": "Dual Range Slider Single",
      "description": "component for the Dual Range Slider Single",
      "files": [
        {
          "path": "app/registry/dual-range-slider/usage/dual-range-slider-single.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/dual-range-slider-single.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/dual-range-slider-dependecies"
      ]
    },
    {
      "name": "event-badge-3d",
      "type": "registry:component",
      "title": "Event Badge 3D",
      "description": "component for the Event Badge 3D",
      "files": [
        {
          "path": "app/registry/badge/badgedemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/event_badge-3d.tsx"
        }
      ],
      "dependencies": [
        "three",
        "@react-three/fiber",
        "@react-three/drei",
        "@react-three/rapier",
        "meshline"
      ]
    },
    {
      "name": "event-calendar",
      "type": "registry:component",
      "title": "Event Calendar",
      "description": "component for the Event Calendar",
      "files": [
        {
          "path": "app/registry/eventcalendar/demoevent.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/event-calendar"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react",
        "date-fns"
      ],
      "registryDependencies": [
        "button",
        "dialog",
        "input",
        "label"
      ]
    },
    {
      "name": "feedback-demo",
      "type": "registry:component",
      "title": "Feedback Demo",
      "description": "component for the Feedback Demo",
      "files": [
        {
          "path": "app/registry/feedback/feedbackdemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/feedback-demo.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react",
        "tailwind-merge"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/feedback"
    },
    {
      "name": "floating-label-input",
      "type": "registry:component",
      "title": "Floating Label Input",
      "description": "component for the Floating Label Input",
      "files": [
        {
          "path": "app/registry/spectrumui/floating-label-input.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/floating-label-input.tsx"
        }
      ],
      "registryDependencies": [
        "input",
        "label"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/floating-label-input"
    },
    {
      "name": "floating-label-input-demo",
      "type": "registry:component",
      "title": "Floating Label Input Demo",
      "description": "component for the Floating Label Input Demo",
      "files": [
        {
          "path": "app/registry/floating-label-input/floating-label-input-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/floating-label-input-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/floating-label-input"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/floating-label-input"
    },
    {
      "name": "floating-label-customize",
      "type": "registry:component",
      "title": "Floating Label Customize",
      "description": "component for the Floating Label Customize",
      "files": [
        {
          "path": "app/registry/floating-label-input/usage/floating-label-customize.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/floating-label-customize.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/floating-label-input"
      ]
    },
    {
      "name": "floating-label-form",
      "type": "registry:component",
      "title": "Floating Label Form",
      "description": "component for the Floating Label Form",
      "files": [
        {
          "path": "app/registry/floating-label-input/usage/floating-label-input-form.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/floating-label-input-form.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/floating-label-input"
      ]
    },
    {
      "name": "footers-demo",
      "type": "registry:component",
      "title": "Footers Demo",
      "description": "component for the Footers Demo",
      "files": [
        {
          "path": "app/registry/footer/footerdemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/footer-demo.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "input",
        "label",
        "switch",
        "textarea",
        "tooltip"
      ]
    },
    {
      "name": "animated-wave-footer",
      "type": "registry:component",
      "title": "Animated Wave Footer",
      "description": "component for the Animated Wave Footer",
      "files": [
        {
          "path": "app/registry/footer/usage/animatefooter.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/animate-footer.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "input",
        "label"
      ]
    },
    {
      "name": "inline-edit",
      "type": "registry:block",
      "title": "Inline Edit",
      "description": "A selection-anchored AI edit: suggestion toolbar, word diff, accept or reject.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/inline-edit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/inline-edit.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "inline",
        "edit"
      ]
    },
    {
      "name": "insight-cards",
      "type": "registry:block",
      "title": "Insight Cards",
      "description": "Metric cards with spark bars, trend deltas, and an AI note.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/insight-cards.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/insight-cards.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "insight",
        "cards"
      ]
    },
    {
      "name": "loading-state",
      "type": "registry:block",
      "title": "Loading State",
      "description": "A pixel-grid loader with a shimmering label and live elapsed timer.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/loading-state.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/loading-state.tsx"
        }
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "loading",
        "spinner",
        "elapsed",
        "shimmer"
      ]
    },
    {
      "name": "memory-chips",
      "type": "registry:block",
      "title": "Memory Chips",
      "description": "What the assistant remembers, as removable chips.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/memory-chips.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/memory-chips.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "memory",
        "chips"
      ]
    },
    {
      "name": "message-actions",
      "type": "registry:block",
      "title": "Message Actions",
      "description": "Per-message controls — copy, regenerate, and thumb feedback.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/message-actions.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/message-actions.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "message",
        "actions"
      ]
    },
    {
      "name": "model-selector",
      "type": "registry:block",
      "title": "Model Selector",
      "description": "A model picker as a radio list or segmented control, with badges and disabled states.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/model-selector.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/model-selector.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "model",
        "selector"
      ]
    },
    {
      "name": "prompt-composer",
      "type": "registry:block",
      "title": "Prompt Composer",
      "description": "A prompt input with attachments, a model picker, and a stop state.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/prompt-composer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/prompt-composer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "prompt",
        "composer"
      ]
    },
    {
      "name": "quota-banner",
      "type": "registry:block",
      "title": "Quota Banner",
      "description": "A message-quota banner with a live reset countdown.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/quota-banner.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/quota-banner.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "quota",
        "banner"
      ]
    },
    {
      "name": "reasoning-trace",
      "type": "registry:block",
      "title": "Reasoning Trace",
      "description": "An expandable chain-of-thought trace with a live thinking timer.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/reasoning-trace.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/reasoning-trace.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "thinking",
        "chain-of-thought",
        "reasoning",
        "trace"
      ]
    },
    {
      "name": "stackedcircular-footer",
      "type": "registry:component",
      "title": "Stacked Circular Footer",
      "description": "component for the Stacked Circular Footer",
      "files": [
        {
          "path": "app/registry/footer/usage/stackedfooter.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/stacked-footer.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "icon",
        "button",
        "input",
        "label"
      ]
    },
    {
      "name": "floatingparticle-footer",
      "type": "registry:component",
      "title": "Floating Particle Footer",
      "description": "component for the Floating Particle Footer",
      "files": [
        {
          "path": "app/registry/footer/usage/particlefooter.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/floatingparticle-footer.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "input",
        "label"
      ]
    },
    {
      "name": "footer",
      "type": "registry:component",
      "title": "Footer",
      "description": "component for the Footer",
      "files": [
        {
          "path": "app/registry/footer/usage/footer.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/footer.tsx"
        }
      ],
      "registryDependencies": [
        "button",
        "@spectrumui/icon-dependencies"
      ]
    },
    {
      "name": "icon-dependencies",
      "type": "registry:component",
      "title": "Icon Dependencies",
      "description": "Shared icon set used by the footer and profile components.",
      "files": [
        {
          "path": "components/icon.tsx",
          "type": "registry:component",
          "target": "components/icon.tsx"
        }
      ]
    },
    {
      "name": "http-status-code",
      "type": "registry:component",
      "title": "HTTP Status Code",
      "description": "component for the HTTP Status Code",
      "files": [
        {
          "path": "app/registry/statuscode/demostatus.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/http-status-code.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "card",
        "input",
        "button"
      ]
    },
    {
      "name": "image-preview-dependencies",
      "type": "registry:component",
      "title": "Image Preview Dependencies",
      "description": "component for the Image Preview Dependencies",
      "files": [
        {
          "path": "app/registry/imagepreview/image-preview-dependecies.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/image-preview-dependecies.tsx"
        }
      ],
      "dependencies": [
        "lucide-react",
        "@radix-ui/react-dialog"
      ],
      "category": "Media",
      "docsUrl": "https://ui.spectrumhq.in/docs/imagepreview"
    },
    {
      "name": "image-preview",
      "type": "registry:component",
      "title": "Image Preview",
      "description": "component for the Image Preview",
      "files": [
        {
          "path": "app/registry/imagepreview/usages/useone.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/image-preview.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/image-preview-dependencies"
      ],
      "category": "Media",
      "docsUrl": "https://ui.spectrumhq.in/docs/imagepreview"
    },
    {
      "name": "infinite-scroll-dependecies",
      "type": "registry:component",
      "title": "Infinite Scroll Dependencies",
      "description": "component for the Infinite Scroll Dependencies",
      "files": [
        {
          "path": "app/registry/spectrumui/infinite-scroll-dependecies.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/infinite-scroll-dependecies.tsx"
        }
      ],
      "category": "Data",
      "docsUrl": "https://ui.spectrumhq.in/docs/infinite-scroll"
    },
    {
      "name": "infinite-scroll-demo",
      "type": "registry:component",
      "title": "Infinite Scroll Demo",
      "description": "component for the Infinite Scroll Demo",
      "files": [
        {
          "path": "app/registry/infinite-scroll/infinite-scroll-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/infinite-scroll.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/infinite-scroll-dependecies"
      ],
      "category": "Data",
      "docsUrl": "https://ui.spectrumhq.in/docs/infinite-scroll"
    },
    {
      "name": "loading-button-dependencies",
      "type": "registry:component",
      "title": "Loading Button Dependencies",
      "description": "component for the Loading Button Dependencies",
      "files": [
        {
          "path": "app/registry/spectrumui/loading-button-dependencies.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/loading-button-dependencies.tsx"
        }
      ],
      "dependencies": [
        "@radix-ui/react-slot",
        "class-variance-authority",
        "lucide-react"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/loading-button"
    },
    {
      "name": "loading-button-demo",
      "type": "registry:component",
      "title": "Loading Button Demo",
      "description": "component for the Loading Button Demo",
      "files": [
        {
          "path": "app/registry/loading-button/loading-button-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/loading-button-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/loading-button-dependencies"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/loading-button"
    },
    {
      "name": "loading-button-usage",
      "type": "registry:component",
      "title": "Loading Button Usage",
      "description": "component for the Loading Button Usage",
      "files": [
        {
          "path": "app/registry/loading-button/loading-button-usage.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/loading-button-usage.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/loading-button-dependencies"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/loading-button"
    },
    {
      "name": "loading-button-as-child",
      "type": "registry:component",
      "title": "Loading Button As Child",
      "description": "component for the Loading Button As Child",
      "files": [
        {
          "path": "app/registry/loading-button/loading-button-as-child.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/loading-button-as-child.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/loading-button-dependencies"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/loading-button"
    },
    {
      "name": "multiple-selector-dependencies",
      "type": "registry:component",
      "title": "Multiple Selector Dependencies",
      "description": "component for the Multiple Selector Dependencies",
      "files": [
        {
          "path": "app/registry/spectrumui/multiple-selector-dependencies.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-dependencies.tsx"
        }
      ],
      "dependencies": [
        "cmdk",
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "command"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/multiple-selector"
    },
    {
      "name": "inline-code",
      "type": "registry:component",
      "title": "Inline Code",
      "description": "component for the Inline Code",
      "files": [
        {
          "path": "app/registry/spectrumui/inline-code.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/inline-code.tsx"
        }
      ]
    },
    {
      "name": "input-model",
      "type": "registry:component",
      "title": "Input Model",
      "description": "component for the Input Model Demo",
      "files": [
        {
          "path": "app/registry/input-model/inputmodel.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/inputmodel.tsx"
        }
      ],
      "registryDependencies": [
        "input",
        "label",
        "select",
        "button",
        "tab",
        "avatar",
        "badge"
      ]
    },
    {
      "name": "multiple-selector-demo",
      "type": "registry:component",
      "title": "Multiple Selector Demo",
      "description": "component for the Multiple Selector Demo",
      "files": [
        {
          "path": "app/registry/multiple-selector/multiple-selector-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/multiple-selector"
    },
    {
      "name": "multiple-selector-with-disable-options",
      "type": "registry:component",
      "title": "Multiple Selector With Disable Options",
      "description": "component for the Multiple Selector With Disable Options",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-with-disable-options.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-with-disable-options.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-selector-disabled",
      "type": "registry:component",
      "title": "Multiple Selector Disabled",
      "description": "component for the Multiple Selector Disabled",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-disabled.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-disabled.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-selector-no-default-select",
      "type": "registry:component",
      "title": "Multiple Selector No Default Select",
      "description": "component for the Multiple Selector No Default Select",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-no-default-select.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-no-default-select.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-selector-controlled",
      "type": "registry:component",
      "title": "Multiple Selector Controlled",
      "description": "component for the Multiple Selector Controlled",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-controlled.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-controlled.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-selector-hide-clear-all",
      "type": "registry:component",
      "title": "Multiple Selector Hide Clear All",
      "description": "component for the Multiple Selector Hide Clear All",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-hide-clear-all.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-hide-clear-all.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-selector-creatable",
      "type": "registry:component",
      "title": "Multiple Selector Creatable",
      "description": "component for the Multiple Selector Creatable",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-creatable.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-creatable.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-selector-with-async-search",
      "type": "registry:component",
      "title": "Multiple Selector With Async Search",
      "description": "component for the Multiple Selector With Async Search",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-with-async-search.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-with-async-search.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies",
        "@spectrumui/inline-code"
      ]
    },
    {
      "name": "multiple-selector-with-async-search-and-onfocus",
      "type": "registry:component",
      "title": "Multiple Selector With Async Search And OnFocus",
      "description": "component for the Multiple Selector With Async Search And OnFocus",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-with-async-search-and-onfocus.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-with-async-search-and-onfocus.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies",
        "@spectrumui/inline-code"
      ]
    },
    {
      "name": "multiple-selector-with-async-search-and-creatable",
      "type": "registry:component",
      "title": "Multiple Selector With Async Search And Creatable",
      "description": "component for the Multiple Selector With Async Search And Creatable",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-with-async-search-and-creatable.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-with-async-search-and-creatable.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies",
        "@spectrumui/inline-code"
      ]
    },
    {
      "name": "multiple-selector-with-async-search-and-creatable-and-group",
      "type": "registry:component",
      "title": "Multiple Selector With Async Search And Creatable And Group",
      "description": "component for the Multiple Selector With Async Search And Creatable And Group",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-with-async-search-and-creatable-and-group.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-with-async-search-and-creatable-and-group.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies",
        "@spectrumui/inline-code"
      ]
    },
    {
      "name": "heading-with-anchor",
      "type": "registry:component",
      "title": "Heading With Anchor",
      "description": "component for the Heading With Anchor",
      "files": [
        {
          "path": "app/registry/spectrumui/heading-with-anchor.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/heading-with-anchor.tsx"
        }
      ],
      "dependencies": [
        "@radix-ui/react-slot",
        "class-variance-authority"
      ]
    },
    {
      "name": "multiple-selector-with-sync-search",
      "type": "registry:component",
      "title": "Multiple Selector With Sync Search And Creatable And Group",
      "description": "component for the Multiple Selector With Sync Search And Creatable And Group",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-with-sync-search.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-with-sync-search.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies",
        "@spectrumui/heading-with-anchor"
      ]
    },
    {
      "name": "multiple-selector-manually-controlled",
      "type": "registry:component",
      "title": "Multiple Selector Manually Controlled",
      "description": "component for the Multiple Selector Manually Controlled",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-manually-controlled.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-manually-controlled.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies",
        "@spectrumui/loading-button-dependencies"
      ]
    },
    {
      "name": "multiple-selector-with-group",
      "type": "registry:component",
      "title": "Multiple Selector With Group",
      "description": "component for the Multiple Selector With Group",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-with-group.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-with-group.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "status-tracker",
      "type": "registry:block",
      "title": "Status Tracker",
      "description": "A staged progress tracker for long-running AI jobs.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/status-tracker.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/status-tracker.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "status",
        "tracker"
      ]
    },
    {
      "name": "streaming-text",
      "type": "registry:block",
      "title": "Streaming Text",
      "description": "A streamed answer with inline citations, sources, and follow-ups.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/streaming-text.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/streaming-text.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "streaming",
        "text"
      ]
    },
    {
      "name": "suggestion-banner",
      "type": "registry:block",
      "title": "Suggestion Banner",
      "description": "An inline AI suggestion with apply and dismiss.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/suggestion-banner.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/suggestion-banner.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "suggestion",
        "banner"
      ]
    },
    {
      "name": "task-rows",
      "type": "registry:block",
      "title": "Task Rows",
      "description": "Live agent task rows with status badges and expandable notes.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/task-rows.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/task-rows.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "task",
        "rows"
      ]
    },
    {
      "name": "thinking-dots",
      "type": "registry:block",
      "title": "Thinking Dots",
      "description": "A minimal typing indicator — bouncing dots or a sliding bar.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/thinking-dots.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/thinking-dots.tsx"
        }
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "thinking",
        "dots"
      ]
    },
    {
      "name": "tool-chips",
      "type": "registry:block",
      "title": "Tool Chips",
      "description": "Compact tool-call chips that expand into their arguments and result.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/tool-chips.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/tool-chips.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "tool",
        "chips"
      ]
    },
    {
      "name": "usage-meter",
      "type": "registry:block",
      "title": "Usage Meter",
      "description": "A context-window meter with token counts and estimated cost.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/usage-meter.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/usage-meter.tsx"
        },
        {
          "path": "components/spectrumui/blocks/ai-assistants/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/ai-assistants/types.ts"
        }
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "usage",
        "meter"
      ]
    },
    {
      "name": "use-toast",
      "type": "registry:component",
      "title": "Use Toast",
      "description": "component for the Use Toast",
      "files": [
        {
          "path": "app/registry/spectrumui/use-toast.ts",
          "type": "registry:component",
          "target": "components/spectrumui/use-toast.ts"
        }
      ]
    },
    {
      "name": "multiple-selector-max-selected",
      "type": "registry:component",
      "title": "Multiple Selector Max Selected",
      "description": "component for the Multiple Selector Max Selected",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-max-selected.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-max-selected.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies",
        "@spectrumui/use-toast"
      ]
    },
    {
      "name": "multiple-selector-max-text-length",
      "type": "registry:component",
      "title": "Multiple Selector Max Text Length",
      "description": "component for the Multiple Selector Max Text Length",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-max-text-length.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-max-text-length.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-selector-no-placeholder-when-selected",
      "type": "registry:component",
      "title": "Multiple Selector No Placeholder When Selected",
      "description": "component for the Multiple Selector No Placeholder When Selected",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-no-placeholder-when-selected.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-no-placeholder-when-selected.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-selector-fixed-option",
      "type": "registry:component",
      "title": "Multiple Selector Fixed Option",
      "description": "component for the Multiple Selector Fixed Option",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-fixed-option.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-fixed-option.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-selector-ref",
      "type": "registry:component",
      "title": "Multiple Selector Ref",
      "description": "component for the Multiple Selector Ref",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-ref.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-ref.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies",
        "@spectrumui/use-toast",
        "@spectrumui/loading-button-dependencies"
      ]
    },
    {
      "name": "multiple-selector-commandprops",
      "type": "registry:component",
      "title": "Multiple Selector Command Props",
      "description": "component for the Multiple Selector Command Props",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-commandprops.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-commandprops.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/multiple-selector-dependencies",
        "@spectrumui/inline-code"
      ]
    },
    {
      "name": "multiple-selector-with-form",
      "type": "registry:component",
      "title": "Multiple Selector With Form",
      "description": "component for the Multiple Selector With Form",
      "files": [
        {
          "path": "app/registry/multiple-selector/usage/multiple-selector-with-form.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multiple-selector-with-form.tsx"
        }
      ],
      "dependencies": [
        "react-hook-form",
        "zod",
        "@hookform/resolvers"
      ],
      "registryDependencies": [
        "form",
        "@spectrumui/use-toast",
        "@spectrumui/loading-button-dependencies",
        "@spectrumui/multiple-selector-dependencies"
      ]
    },
    {
      "name": "multiple-step-form-demo",
      "type": "registry:component",
      "title": "Multiple Step Form Demo",
      "description": "component for the Multiple Step Form Demo",
      "files": [
        {
          "path": "app/registry/multistepform/multistepdemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/multistepformdemo.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react",
        "sonner"
      ],
      "registryDependencies": [
        "button",
        "card",
        "input",
        "label",
        "radio-group",
        "textarea",
        "select"
      ]
    },
    {
      "name": "navbar-demo",
      "type": "registry:component",
      "title": "Navbar Demo",
      "description": "component for the Navbar Demo",
      "files": [
        {
          "path": "app/registry/navbar/navbardemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/navbar.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "scroll-area",
        "sheet"
      ]
    },
    {
      "name": "circular-navbar",
      "type": "registry:component",
      "title": "Circular Navbar",
      "description": "component for the Circular Navbar",
      "files": [
        {
          "path": "app/registry/navbar/usage/circular.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/circularnavbar.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "avatar",
        "button"
      ]
    },
    {
      "name": "tab-navbar",
      "type": "registry:component",
      "title": "Tab Navbar",
      "description": "component for the Tab Navbar",
      "files": [
        {
          "path": "app/registry/navbar/usage/tabnavbar.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/tabnavbar.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "avatar",
        "input",
        "label",
        "navigation-menu"
      ]
    },
    {
      "name": "floating-navbar",
      "type": "registry:component",
      "title": "Floating Navbar",
      "description": "component for the Floating Navbar",
      "files": [
        {
          "path": "app/registry/navbar/usage/floatingnavbar.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/floatingnavbar.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "dropdown-menu"
      ]
    },
    {
      "name": "sidebar-navbar",
      "type": "registry:component",
      "title": "Sidebar Navbar",
      "description": "component for the Sidebar Navbar",
      "files": [
        {
          "path": "app/registry/navbar/usage/sidenav.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/sidebarnavbar.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "collapsible",
        "scroll-area"
      ]
    },
    {
      "name": "login-card",
      "type": "registry:component",
      "title": "Login Card",
      "description": "component for the Login Card",
      "files": [
        {
          "path": "app/registry/login-card/logincard.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/logincard.tsx"
        }
      ],
      "dependencies": [
        "lucide-react",
        "next-themes",
        "framer-motion"
      ]
    },
    {
      "name": "kanbanboard",
      "type": "registry:component",
      "title": "Kanban Board",
      "description": "component for the Kanban Board",
      "files": [
        {
          "path": "app/registry/kanban/kanbanboard.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/kanbanboard.tsx"
        }
      ],
      "dependencies": [
        "lucide-react",
        "next-themes",
        "framer-motion"
      ],
      "registryDependencies": [
        "card",
        "button",
        "select",
        "input",
        "label",
        "textarea"
      ]
    },
    {
      "name": "profile-dropdown",
      "type": "registry:component",
      "title": "Profile Dropdown",
      "description": "component for the Profile Dropdown",
      "files": [
        {
          "path": "app/registry/profile/profiledemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/profiledropdown.tsx"
        }
      ],
      "dependencies": [
        "lucide-react",
        "next-themes",
        "framer-motion"
      ]
    },
    {
      "name": "product-card",
      "type": "registry:component",
      "title": "Product Card",
      "description": "component for the Product Card",
      "files": [
        {
          "path": "app/registry/product-card/product-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/product-card.tsx"
        }
      ],
      "dependencies": [
        "lucide-react",
        "next-themes"
      ],
      "registryDependencies": [
        "button",
        "select",
        "card"
      ]
    },
    {
      "name": "progress-with-value-dependencies",
      "type": "registry:component",
      "title": "Progress With Value Dependencies",
      "description": "component for the Progress With Value Dependencies",
      "files": [
        {
          "path": "app/registry/spectrumui/progress-with-value-dependencies.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/progress-with-value-dependencies.tsx"
        }
      ],
      "dependencies": [
        "@radix-ui/react-progress"
      ]
    },
    {
      "name": "progress-with-value",
      "type": "registry:component",
      "title": "Progress With Value",
      "description": "component for the Progress With Value",
      "files": [
        {
          "path": "app/registry/progress-with-value/progress-with-value-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/progresswithvalue.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/progress-with-value-dependencies"
      ]
    },
    {
      "name": "value-position",
      "type": "registry:component",
      "title": "Progress With Value Position",
      "description": "component for the Progress With Value Position",
      "files": [
        {
          "path": "app/registry/progress-with-value/usage/progress-with-value-position.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/progress-with-value-position.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/progress-with-value-dependencies"
      ]
    },
    {
      "name": "custom-label",
      "type": "registry:component",
      "title": "Progress With Value Custom Label",
      "description": "component for the Progress With Value Custom Label",
      "files": [
        {
          "path": "app/registry/progress-with-value/usage/progress-with-value-label.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/progress-with-value-label.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/progress-with-value-dependencies"
      ]
    },
    {
      "name": "responsive-modal-dependencies",
      "type": "registry:component",
      "title": "Responsive Modal Dependencies",
      "description": "component for the Responsive Modal Dependencies",
      "files": [
        {
          "path": "app/registry/spectrumui/responsive-modal-dependencies.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/responsive-modal-dependencies.tsx"
        }
      ],
      "dependencies": [
        "@radix-ui/react-dialog",
        "class-variance-authority",
        "lucide-react"
      ]
    },
    {
      "name": "responsive-modal",
      "type": "registry:component",
      "title": "Responsive Modal",
      "description": "component for the Responsive Modal",
      "files": [
        {
          "path": "app/registry/responsive-modal/responsive-modal-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/responsive-modal-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/responsive-modal-dependencies",
        "button"
      ]
    },
    {
      "name": "responsive-modal-side",
      "type": "registry:component",
      "title": "Responsive Modal Side",
      "description": "component for the Responsive Modal Side",
      "files": [
        {
          "path": "app/registry/responsive-modal/usage/responsive-modal-side.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/responsive-modal-side.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/responsive-modal-dependencies",
        "button"
      ]
    },
    {
      "name": "accordion",
      "type": "registry:component",
      "title": "Accordion",
      "description": "component for the Accordion",
      "files": [
        {
          "path": "app/registry/accordion/accordion-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/accordion-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/accordion-dependencies"
      ],
      "category": "Disclosure",
      "docsUrl": "https://ui.spectrumhq.in/docs/accordion"
    },
    {
      "name": "accordion-dependencies",
      "type": "registry:component",
      "title": "Accordion Dependencies",
      "description": "component for the Accordion Dependencies",
      "files": [
        {
          "path": "app/registry/spectrumui/accordion.tsx",
          "type": "registry:component",
          "target": "components/ui/accordion.tsx"
        }
      ],
      "dependencies": [
        "@radix-ui/react-accordion",
        "lucide-react"
      ],
      "category": "Disclosure",
      "docsUrl": "https://ui.spectrumhq.in/docs/accordion"
    },
    {
      "name": "accordion-card",
      "type": "registry:component",
      "title": "Accordion Card",
      "description": "component for the Accordion Card",
      "files": [
        {
          "path": "app/registry/accordion/usage/accordion-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/accordion-card.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/accordion-dependencies"
      ]
    },
    {
      "name": "accordion-filled",
      "type": "registry:component",
      "title": "Accordion Filled",
      "description": "component for the Accordion Filled",
      "files": [
        {
          "path": "app/registry/accordion/usage/accordion-filled.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/accordion-filled.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/accordion-dependencies"
      ]
    },
    {
      "name": "accordion-ghost",
      "type": "registry:component",
      "title": "Accordion Ghost",
      "description": "component for the Accordion Ghost",
      "files": [
        {
          "path": "app/registry/accordion/usage/accordion-ghost.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/accordion-ghost.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/accordion-dependencies"
      ]
    },
    {
      "name": "accordion-generative",
      "type": "registry:component",
      "title": "Accordion Generative",
      "description": "component for the Accordion Generative",
      "files": [
        {
          "path": "app/registry/accordion/usage/accordion-generative.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/accordion-generative.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/accordion-dependencies"
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:component",
      "title": "Skeleton",
      "description": "component for the Skeleton",
      "files": [
        {
          "path": "app/registry/skeleton/skeleton-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/skeleton-demo.tsx"
        }
      ],
      "registryDependencies": [
        "skeleton"
      ]
    },
    {
      "name": "skeleton-card",
      "type": "registry:component",
      "title": "Skeleton Card",
      "description": "component for the Skeleton Card",
      "files": [
        {
          "path": "app/registry/skeleton/usage/skeleton-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/skeleton-card.tsx"
        }
      ],
      "registryDependencies": [
        "skeleton"
      ]
    },
    {
      "name": "spinner-dependencies",
      "type": "registry:component",
      "title": "Skeleton Card",
      "description": "component for the Skeleton Card",
      "files": [
        {
          "path": "app/registry/spectrumui/spinner-dependencies.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/spinner-dependencies.tsx"
        }
      ],
      "dependencies": [
        "class-variance-authority",
        "lucide-react"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/spinner"
    },
    {
      "name": "spinner-demo",
      "type": "registry:component",
      "title": "Spinner Demo",
      "description": "component for the Spinner Demo",
      "files": [
        {
          "path": "app/registry/spinner/spinner-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/spinner-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/spinner-dependencies"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/spinner"
    },
    {
      "name": "spinner-size",
      "type": "registry:component",
      "title": "Spinner Size",
      "description": "component for the Spinner Size",
      "files": [
        {
          "path": "app/registry/spinner/usage/spinner-size.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/spinner-size.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/spinner-dependencies"
      ]
    },
    {
      "name": "spinner-with-text",
      "type": "registry:component",
      "title": "Spinner With Text",
      "description": "component for the Spinner With Text",
      "files": [
        {
          "path": "app/registry/spinner/usage/spinner-with-text.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/spinner-with-text.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/spinner-dependencies"
      ]
    },
    {
      "name": "spinner-toggle",
      "type": "registry:component",
      "title": "Spinner Toggle",
      "description": "component for the Spinner Toggle",
      "files": [
        {
          "path": "app/registry/spinner/usage/spinner-toggle.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/spinner-toggle.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/spinner-dependencies"
      ]
    },
    {
      "name": "status-badge",
      "type": "registry:component",
      "title": "Status Badge",
      "description": "component for the Status Badge",
      "files": [
        {
          "path": "app/registry/status-badge/statusdemo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/statusdemo.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/status-badge"
    },
    {
      "name": "testimonials",
      "type": "registry:component",
      "title": "Testimonials",
      "description": "component for the Testimonials",
      "files": [
        {
          "path": "app/registry/testimonials/testimonials.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/testimonials.tsx"
        }
      ],
      "dependencies": [
        "lucide-react",
        "framer-motion"
      ],
      "registryDependencies": [
        "card"
      ]
    },
    {
      "name": "holographic",
      "type": "registry:component",
      "title": "Holographic Scan Reveal",
      "description": "component for the Holographic Scan Reveal",
      "files": [
        {
          "path": "app/registry/animatedtext/components/hologram-text.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/hologram-text.tsx"
        }
      ],
      "dependencies": [
        "next-themes",
        "framer-motion"
      ]
    },
    {
      "name": "orbital-letters",
      "type": "registry:component",
      "title": "Orbital Letters",
      "description": "component for the Orbital Letters",
      "files": [
        {
          "path": "app/registry/animatedtext/components/orbital-text.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/orbital-text.tsx"
        },
        {
          "path": "app/registry/animatedtext/components/orbital-char.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/orbital-char.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ]
    },
    {
      "name": "ink",
      "type": "registry:component",
      "title": "Fluid Ink Morph",
      "description": "component for the Fluid Ink Morph",
      "files": [
        {
          "path": "app/registry/animatedtext/components/ink-morph.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/ink-morph.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ]
    },
    {
      "name": "animated-drawer",
      "type": "registry:component",
      "title": "Animated Drawer",
      "description": "component for the Animated Drawer",
      "files": [
        {
          "path": "app/registry/animateddrawer/demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/animateddrawer.tsx"
        }
      ],
      "dependencies": [
        "lucide-react",
        "motion",
        "vaul",
        "react-use-measure"
      ],
      "category": "Overlay",
      "docsUrl": "https://ui.spectrumhq.in/docs/animateddrawer",
      "new": true
    },
    {
      "name": "command-palette",
      "type": "registry:component",
      "title": "Command Palette",
      "description": "A fully customizable, smooth-animated Command Palette (Cmd+K) component",
      "files": [
        {
          "path": "app/registry/command-palette/command-palette.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/command-palette.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react",
        "next-themes"
      ]
    },
    {
      "name": "command-palette-demo",
      "type": "registry:component",
      "title": "Command Palette Demo",
      "description": "Demo usage for the Command Palette component",
      "files": [
        {
          "path": "app/registry/command-palette/command-palette-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/command-palette-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/command-palette",
        "button"
      ]
    },
    {
      "name": "scratch-card",
      "type": "registry:component",
      "title": "Scratch Card",
      "description": "A scratch-to-reveal coupon card with an HTML5 canvas foil, dust particles on scratch, and a reveal callback at a configurable threshold",
      "files": [
        {
          "path": "app/registry/scratch-card/scratch-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/scratch-card.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Media",
      "docsUrl": "https://ui.spectrumhq.in/docs/scratch-card",
      "new": true
    },
    {
      "name": "scratch-card-demo",
      "type": "registry:component",
      "title": "Scratch Card Demo",
      "description": "Demo usage for the Scratch Card component",
      "files": [
        {
          "path": "app/registry/scratch-card/scratch-card-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/scratch-card-demo.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/scratch-card"
      ],
      "category": "Media",
      "docsUrl": "https://ui.spectrumhq.in/docs/scratch-card",
      "new": true
    },
    {
      "name": "dock",
      "type": "registry:component",
      "title": "Dock",
      "description": "A premium macOS-Style Animated Dock Menu component",
      "files": [
        {
          "path": "app/registry/spectrumui/dock.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/dock.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ]
    },
    {
      "name": "dock-demo",
      "type": "registry:component",
      "title": "Dock Demo",
      "description": "Demo usage for the macOS-Style Animated Dock Menu component",
      "files": [
        {
          "path": "app/registry/dock/dock-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/dock-demo.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/dock"
      ]
    },
    {
      "name": "dock-glass",
      "type": "registry:component",
      "title": "Dock Glass",
      "description": "Glassmorphism variant demo for the macOS-Style Animated Dock Menu component",
      "files": [
        {
          "path": "app/registry/dock/usage/dock-glass.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/dock-glass.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/dock"
      ]
    },
    {
      "name": "bento-grid",
      "type": "registry:component",
      "title": "Bento Grid",
      "description": "A premium interactive Bento Grid component",
      "files": [
        {
          "path": "app/registry/bento-grid/bento-grid.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/bento-grid.tsx"
        },
        {
          "path": "app/registry/bento-grid/bento-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/bento-card.tsx"
        },
        {
          "path": "app/registry/bento-grid/spotlight.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/spotlight.tsx"
        },
        {
          "path": "app/registry/bento-grid/border-beam.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/border-beam.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ]
    },
    {
      "name": "like-button",
      "type": "registry:component",
      "title": "Like Button",
      "description": "A heart like button micro-interaction with a spring pop, ring pulse, radial particle burst, and a rolling odometer count",
      "files": [
        {
          "path": "app/registry/like-button/like-button.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/like-button.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/like-button",
      "new": true
    },
    {
      "name": "like-button-demo",
      "type": "registry:component",
      "title": "Like Button Demo",
      "description": "Demo usage for the Like Button component",
      "files": [
        {
          "path": "app/registry/like-button/like-button-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/like-button-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/like-button"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/like-button",
      "new": true
    },
    {
      "name": "tilt-card",
      "type": "registry:component",
      "title": "3D Tilt Card",
      "description": "A 3D perspective tilt card that rotates toward the pointer with spring smoothing, parallax translateZ depth layers, and a pointer-following glare highlight",
      "files": [
        {
          "path": "app/registry/tilt-card/tilt-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/tilt-card.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Card",
      "docsUrl": "https://ui.spectrumhq.in/docs/tilt-card",
      "new": true
    },
    {
      "name": "tilt-card-demo",
      "type": "registry:component",
      "title": "3D Tilt Card Demo",
      "description": "Demo usage for the 3D Tilt Card component",
      "files": [
        {
          "path": "app/registry/tilt-card/tilt-card-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/tilt-card-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/tilt-card"
      ],
      "category": "Card",
      "docsUrl": "https://ui.spectrumhq.in/docs/tilt-card",
      "new": true
    },
    {
      "name": "hold-to-confirm",
      "type": "registry:component",
      "title": "Hold to Confirm",
      "description": "A press-and-hold confirmation button for destructive actions with a filling progress ring, spring-back on early release, and a success check morph on completion",
      "files": [
        {
          "path": "app/registry/hold-to-confirm/hold-to-confirm.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/hold-to-confirm.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/hold-to-confirm",
      "new": true
    },
    {
      "name": "hold-to-confirm-demo",
      "type": "registry:component",
      "title": "Hold to Confirm Demo",
      "description": "Demo usage for the Hold to Confirm component",
      "files": [
        {
          "path": "app/registry/hold-to-confirm/hold-to-confirm-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/hold-to-confirm-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/hold-to-confirm"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/hold-to-confirm",
      "new": true
    },
    {
      "name": "reaction-bar",
      "type": "registry:component",
      "title": "Reaction Bar",
      "description": "A Slack-style emoji reaction row with popping chips, direction-aware rolling counts, and a staggered emoji-picker popover",
      "files": [
        {
          "path": "app/registry/reaction-bar/reaction-bar.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/reaction-bar.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/reaction-bar",
      "new": true
    },
    {
      "name": "reaction-bar-demo",
      "type": "registry:component",
      "title": "Reaction Bar Demo",
      "description": "Demo usage for the Reaction Bar component",
      "files": [
        {
          "path": "app/registry/reaction-bar/reaction-bar-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/reaction-bar-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/reaction-bar"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/reaction-bar",
      "new": true
    },
    {
      "name": "star-rating",
      "type": "registry:component",
      "title": "Star Rating",
      "description": "An animated star rating input with hover-preview wave, pop and sparkle burst on commit, rolling value label, and fractional read-only display",
      "files": [
        {
          "path": "app/registry/star-rating/star-rating.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/star-rating.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Rating",
      "docsUrl": "https://ui.spectrumhq.in/docs/star-rating",
      "new": true
    },
    {
      "name": "star-rating-demo",
      "type": "registry:component",
      "title": "Star Rating Demo",
      "description": "Demo usage for the Star Rating component",
      "files": [
        {
          "path": "app/registry/star-rating/star-rating-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/star-rating-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/star-rating"
      ],
      "category": "Rating",
      "docsUrl": "https://ui.spectrumhq.in/docs/star-rating",
      "new": true
    },
    {
      "name": "quantity-stepper",
      "type": "registry:component",
      "title": "Quantity Stepper",
      "description": "An animated quantity input for carts and forms with rolling digits, hold-to-repeat acceleration, and a boundary shake",
      "files": [
        {
          "path": "app/registry/quantity-stepper/quantity-stepper.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/quantity-stepper.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/quantity-stepper"
    },
    {
      "name": "quantity-stepper-demo",
      "type": "registry:component",
      "title": "Quantity Stepper Demo",
      "description": "Demo usage for the Quantity Stepper component",
      "files": [
        {
          "path": "app/registry/quantity-stepper/quantity-stepper-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/quantity-stepper-demo.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/quantity-stepper"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/quantity-stepper"
    },
    {
      "name": "follow-button",
      "type": "registry:component",
      "title": "Follow Button",
      "description": "A morphing follow/unfollow button with a spring width morph, animated check draw, and a hover-revealed unfollow state",
      "files": [
        {
          "path": "app/registry/follow-button/follow-button.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/follow-button.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/follow-button",
      "new": true
    },
    {
      "name": "follow-button-demo",
      "type": "registry:component",
      "title": "Follow Button Demo",
      "description": "Demo usage for the Follow Button component",
      "files": [
        {
          "path": "app/registry/follow-button/follow-button-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/follow-button-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/follow-button"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/follow-button",
      "new": true
    },
    {
      "name": "notification-bell",
      "type": "registry:component",
      "title": "Notification Bell",
      "description": "A bell icon button with a ring-shake swing, springy unread badge with rolling odometer count, and a pinging dot mode",
      "files": [
        {
          "path": "app/registry/notification-bell/notification-bell.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/notification-bell.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/notification-bell",
      "new": true
    },
    {
      "name": "notification-bell-demo",
      "type": "registry:component",
      "title": "Notification Bell Demo",
      "description": "Demo usage for the Notification Bell component",
      "files": [
        {
          "path": "app/registry/notification-bell/notification-bell-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/notification-bell-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/notification-bell"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/notification-bell",
      "new": true
    },
    {
      "name": "face-rating",
      "type": "registry:component",
      "title": "Face Rating",
      "description": "A five-level feedback rating where one large SVG face morphs its mouth, eyes and color between moods as you hover and click, with a joy bounce on commit",
      "files": [
        {
          "path": "app/registry/face-rating/face-rating.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/face-rating.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ]
    },
    {
      "name": "face-rating-demo",
      "type": "registry:component",
      "title": "Face Rating Demo",
      "description": "Demo usage for the Face Rating component",
      "files": [
        {
          "path": "app/registry/face-rating/face-rating-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/face-rating-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/face-rating"
      ]
    },
    {
      "name": "undo-pill",
      "type": "registry:component",
      "title": "Undo Pill",
      "description": "An inline undo pill with a draining countdown ring that pauses on hover and fires undo or expire callbacks",
      "files": [
        {
          "path": "app/registry/undo-pill/undo-pill.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/undo-pill.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/undo-pill",
      "new": true
    },
    {
      "name": "undo-pill-demo",
      "type": "registry:component",
      "title": "Undo Pill Demo",
      "description": "Demo usage for the Undo Pill component",
      "files": [
        {
          "path": "app/registry/undo-pill/undo-pill-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/undo-pill-demo.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/undo-pill"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/undo-pill",
      "new": true
    },
    {
      "name": "password-strength",
      "type": "registry:component",
      "title": "Password Strength",
      "description": "A password input with an animated four-segment strength meter, crossfading strength label, requirements checklist with drawing check marks, and a visibility toggle",
      "files": [
        {
          "path": "app/registry/password-strength/password-strength.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/password-strength.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/password-strength",
      "new": true
    },
    {
      "name": "password-strength-demo",
      "type": "registry:component",
      "title": "Password Strength Demo",
      "description": "Demo usage for the Password Strength component",
      "files": [
        {
          "path": "app/registry/password-strength/password-strength-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/password-strength-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/password-strength"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/password-strength",
      "new": true
    },
    {
      "name": "swipe-to-delete",
      "type": "registry:component",
      "title": "Swipe to Delete",
      "description": "An iOS-style swipeable list-item wrapper that reveals a delete action on drag, pops the icon at the commit threshold, and collapses the row before firing onDelete",
      "files": [
        {
          "path": "app/registry/swipe-to-delete/swipe-to-delete.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/swipe-to-delete.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/swipe-to-delete",
      "new": true
    },
    {
      "name": "swipe-to-delete-demo",
      "type": "registry:component",
      "title": "Swipe to Delete Demo",
      "description": "Demo usage for the Swipe to Delete component",
      "files": [
        {
          "path": "app/registry/swipe-to-delete/swipe-to-delete-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/swipe-to-delete-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/swipe-to-delete"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/swipe-to-delete",
      "new": true
    },
    {
      "name": "task-checkbox",
      "type": "registry:component",
      "title": "Task Checkbox",
      "description": "A satisfying todo checkbox row with spring fill, drawn-in check, confetti burst and animated strikethrough",
      "files": [
        {
          "path": "app/registry/task-checkbox/task-checkbox.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/task-checkbox.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/task-checkbox",
      "new": true
    },
    {
      "name": "task-checkbox-demo",
      "type": "registry:component",
      "title": "Task Checkbox Demo",
      "description": "Demo usage for the Task Checkbox component",
      "files": [
        {
          "path": "app/registry/task-checkbox/task-checkbox-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/task-checkbox-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/task-checkbox"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/task-checkbox",
      "new": true
    },
    {
      "name": "morph-button",
      "type": "registry:component",
      "title": "Morph Button",
      "description": "A multi-state async action button that morphs between idle, loading, success and error with an arc spinner, drawn-in check, tight error shake and auto-reset",
      "files": [
        {
          "path": "app/registry/morph-button/morph-button.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/morph-button.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/morph-button"
    },
    {
      "name": "morph-button-demo",
      "type": "registry:component",
      "title": "Morph Button Demo",
      "description": "Demo usage for the Morph Button component",
      "files": [
        {
          "path": "app/registry/morph-button/morph-button-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/morph-button-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/morph-button"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/morph-button"
    },
    {
      "name": "animated-switch",
      "type": "registry:component",
      "title": "Animated Switch",
      "description": "An iOS-quality animated toggle switch with a press-to-stretch knob, drag-to-toggle with flick support, and optional crossfading knob icons",
      "files": [
        {
          "path": "app/registry/animated-switch/animated-switch.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/animated-switch.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Control",
      "docsUrl": "https://ui.spectrumhq.in/docs/animated-switch"
    },
    {
      "name": "animated-switch-demo",
      "type": "registry:component",
      "title": "Animated Switch Demo",
      "description": "Demo usage for the Animated Switch component",
      "files": [
        {
          "path": "app/registry/animated-switch/animated-switch-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/animated-switch-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/animated-switch"
      ],
      "category": "Control",
      "docsUrl": "https://ui.spectrumhq.in/docs/animated-switch"
    },
    {
      "name": "avatar-stack",
      "type": "registry:component",
      "title": "Avatar Stack",
      "description": "An overlapping avatar stack that fans apart on hover, springs name tooltips over each face and expands hidden members from a +N pill with a stagger",
      "files": [
        {
          "path": "app/registry/avatar-stack/avatar-stack.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/avatar-stack.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Profile",
      "docsUrl": "https://ui.spectrumhq.in/docs/avatar-stack",
      "new": true
    },
    {
      "name": "avatar-stack-demo",
      "type": "registry:component",
      "title": "Avatar Stack Demo",
      "description": "Demo usage for the Avatar Stack component",
      "files": [
        {
          "path": "app/registry/avatar-stack/avatar-stack-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/avatar-stack-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/avatar-stack"
      ],
      "category": "Profile",
      "docsUrl": "https://ui.spectrumhq.in/docs/avatar-stack",
      "new": true
    },
    {
      "name": "kbd-key",
      "type": "registry:component",
      "title": "Kbd Key",
      "description": "A 3D keycap that physically depresses when the real key is pressed, with combo shortcuts that pulse and fire when every key is held at once",
      "files": [
        {
          "path": "app/registry/kbd-key/kbd-key.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/kbd-key.tsx"
        }
      ],
      "dependencies": [
        "framer-motion"
      ],
      "category": "Input",
      "docsUrl": "https://ui.spectrumhq.in/docs/kbd-key"
    },
    {
      "name": "kbd-key-demo",
      "type": "registry:component",
      "title": "Kbd Key Demo",
      "description": "Demo usage for the Kbd Key component",
      "files": [
        {
          "path": "app/registry/kbd-key/kbd-key-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/kbd-key-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/kbd-key"
      ],
      "category": "Input",
      "docsUrl": "https://ui.spectrumhq.in/docs/kbd-key"
    },
    {
      "name": "share-button",
      "type": "registry:component",
      "title": "Share Button",
      "description": "A share trigger that fans out into copy-link and custom share actions with staggered springs, tooltips and full keyboard support",
      "files": [
        {
          "path": "app/registry/share-button/share-button.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/share-button.tsx"
        }
      ],
      "dependencies": [
        "framer-motion",
        "lucide-react"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/share-button"
    },
    {
      "name": "share-button-demo",
      "type": "registry:component",
      "title": "Share Button Demo",
      "description": "Demo usage for the Share Button component",
      "files": [
        {
          "path": "app/registry/share-button/share-button-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/share-button-demo.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/share-button"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/share-button"
    },
    {
      "name": "voice-input",
      "type": "registry:block",
      "title": "Voice Input",
      "description": "A voice recorder pill with animated level bars and a live timer.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/voice-input.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/voice-input.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "voice",
        "input"
      ]
    },
    {
      "name": "web-search",
      "type": "registry:block",
      "title": "Web Search",
      "description": "Agent search results with a live reading indicator.",
      "files": [
        {
          "path": "components/spectrumui/blocks/ai-assistants/web-search.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/ai-assistants/web-search.tsx"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "AI Assistants",
      "tags": [
        "ai",
        "web",
        "search"
      ]
    },
    {
      "name": "chart-kit",
      "type": "registry:component",
      "title": "Chart Kit",
      "description": "Shared data, fills, tooltip, and axis chrome for Spectrum Charts.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts"
    },
    {
      "name": "bar-chart",
      "type": "registry:component",
      "title": "Bar Chart",
      "description": "Vertical and horizontal bars with hatch, duotone, gradient, stripe, stack, and glow fills.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/bar-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/bar-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#bar"
    },
    {
      "name": "line-chart",
      "type": "registry:component",
      "title": "Line Chart",
      "description": "Multi-series lines with solid, dashed, bump, step, gradient, and glow strokes.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/line-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/line-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#line"
    },
    {
      "name": "area-chart",
      "type": "registry:component",
      "title": "Area Chart",
      "description": "Filled areas with gradient, hatch, dotted, stacked, and dashed-stroke variants.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/area-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/area-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#area"
    },
    {
      "name": "pie-chart",
      "type": "registry:component",
      "title": "Pie Chart",
      "description": "Pie and donut charts with padded sectors, labels, and optional sector glow.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/pie-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/pie-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#pie"
    },
    {
      "name": "radar-chart",
      "type": "registry:component",
      "title": "Radar Chart",
      "description": "Radar plots with filled or outline series, circle grids, and glow.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/radar-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/radar-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#radar"
    },
    {
      "name": "radial-chart",
      "type": "registry:component",
      "title": "Radial Chart",
      "description": "Full and semi-circle radial bars for share and progress.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/radial-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/radial-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#radial"
    },
    {
      "name": "composed-chart",
      "type": "registry:component",
      "title": "Composed Chart",
      "description": "Bars, lines, and areas on one plot — mix fills, dashes, and glow per series.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/composed-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/composed-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#composed"
    },
    {
      "name": "chart-data",
      "type": "registry:component",
      "title": "Connecting Real Data",
      "description": "Wiring any chart to a real source: fetch in an effect, SWR or React Query, server components, and streaming — with every outcome mapped onto a status.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/market-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/market-chart.tsx"
        },
        {
          "path": "app/registry/charts/chart-data.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-data.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "data-fetching",
        "swr",
        "react-query",
        "websocket",
        "server-component"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#data"
    },
    {
      "name": "chart-states",
      "type": "registry:component",
      "title": "Chart States",
      "description": "Loading skeletons, empty states and error states for every chart — one wrapper, six skeleton shapes, and a frame height that never shifts between them.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/cohort-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/cohort-chart.tsx"
        },
        {
          "path": "app/registry/charts/chart-states.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-states.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "loading",
        "skeleton",
        "empty-state",
        "error-state",
        "a11y"
      ]
    },
    {
      "name": "market-chart",
      "type": "registry:component",
      "title": "Market Chart",
      "description": "A trading-desk chart in pure SVG: OHLC candles, a volume pane, a snapping crosshair with axis-pinned price and time, a range selector that morphs the series, and a live tape.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/market-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/market-chart.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "svg",
        "candlestick",
        "trading",
        "stock",
        "crypto",
        "ohlc",
        "animated"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#market"
    },
    {
      "name": "indicator-chart",
      "type": "registry:component",
      "title": "Indicator Chart",
      "description": "Price, RSI and MACD stacked on one time axis with a single crosshair that reports all three panes at once.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/indicator-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/indicator-chart.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "svg",
        "rsi",
        "macd",
        "indicators",
        "trading",
        "technical-analysis"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#indicators"
    },
    {
      "name": "depth-chart",
      "type": "registry:component",
      "title": "Depth Chart",
      "description": "Cumulative bid and ask liquidity either side of the mid, with a crosshair that reports the size resting up to any price.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/depth-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/depth-chart.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "svg",
        "depth",
        "order-book",
        "liquidity",
        "dex",
        "trading"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#depth"
    },
    {
      "name": "order-book",
      "type": "registry:component",
      "title": "Order Book",
      "description": "A trading ladder with cumulative depth bars, a spread row, and flashing updates in live mode.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/order-book.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/order-book.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "order-book",
        "ladder",
        "trading",
        "bid-ask",
        "live"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#order-book"
    },
    {
      "name": "portfolio-chart",
      "type": "registry:component",
      "title": "Portfolio Chart",
      "description": "Account value against cost basis with drawdown from the running peak shaded underneath.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/portfolio-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/portfolio-chart.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "svg",
        "portfolio",
        "pnl",
        "drawdown",
        "cost-basis"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#portfolio"
    },
    {
      "name": "market-heatmap",
      "type": "registry:component",
      "title": "Market Heatmap",
      "description": "A squarified treemap sized by market cap and coloured on a diverging change ramp — the market map.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/market-heatmap.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/market-heatmap.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "svg",
        "heatmap",
        "treemap",
        "market-map",
        "sectors"
      ]
    },
    {
      "name": "calendar-heatmap",
      "type": "registry:component",
      "title": "Calendar Heatmap",
      "description": "A year of daily values as week columns — the contributions grid, with five quantised intensity steps, streak stats, and month rails.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/calendar-heatmap.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/calendar-heatmap.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "svg",
        "calendar",
        "heatmap",
        "activity",
        "contributions"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#calendar"
    },
    {
      "name": "cohort-chart",
      "type": "registry:component",
      "title": "Cohort Retention",
      "description": "The retention triangle: cohorts down, periods across, intensity by share retained, with a row and column crosshair and a period average.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/cohort-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/cohort-chart.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "svg",
        "cohort",
        "retention",
        "analytics",
        "grid"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#cohort"
    },
    {
      "name": "stat-cards",
      "type": "registry:component",
      "title": "Stat Cards",
      "description": "KPI cards with a big value, the delta written as a sentence, and a scrubbable sparkline or progress bar beside it — the row every dashboard opens with.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/stat-cards.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/stat-cards.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "svg",
        "kpi",
        "stat-card",
        "sparkline",
        "dashboard"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#stat-cards"
    },
    {
      "name": "histogram-chart",
      "type": "registry:component",
      "title": "Histogram",
      "description": "A distribution of raw samples binned on nice edges, with p50 / p95 / p99 pinned onto the plot — the chart that shows the tail your average hides.",
      "files": [
        {
          "path": "app/registry/charts/chart-engine.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-engine.tsx"
        },
        {
          "path": "app/registry/charts/histogram-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/histogram-chart.tsx"
        }
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "svg",
        "histogram",
        "distribution",
        "latency",
        "percentile"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#histogram"
    },
    {
      "name": "candlestick-chart",
      "type": "registry:component",
      "title": "Candlestick Chart",
      "description": "OHLC candles with optional volume and hollow-up bodies — for stocks, SOL, and any market pair.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/candlestick-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/candlestick-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts",
        "candlestick",
        "trading"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#candlestick"
    },
    {
      "name": "price-chart",
      "type": "registry:component",
      "title": "Price Chart",
      "description": "Ticker chrome with last price and signed delta. Use it for tokens, equities, or protocol TVL.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/price-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/price-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts",
        "price",
        "token"
      ],
      "docsUrl": "https://ui.spectrumhq.in/blocks/charts#price"
    },
    {
      "name": "sparkline-chart",
      "type": "registry:component",
      "title": "Sparkline",
      "description": "Compact inline price marks for watchlists, token tables, and portfolio rows.",
      "files": [
        {
          "path": "app/registry/charts/chart-kit.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/chart-kit.tsx"
        },
        {
          "path": "app/registry/charts/sparkline-chart.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/charts/sparkline-chart.tsx"
        }
      ],
      "dependencies": [
        "recharts",
        "framer-motion"
      ],
      "category": "Chart",
      "tags": [
        "chart",
        "recharts",
        "sparkline",
        "watchlist"
      ]
    },
    {
      "name": "offset-tiers",
      "type": "registry:block",
      "title": "Offset Tiers",
      "description": "Staggered serif panels on a dot grid, with one entry price and expert CTAs.",
      "files": [
        {
          "path": "components/spectrumui/blocks/pricing/offset-tiers.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/pricing/offset-tiers.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/types.ts"
        },
        {
          "path": "components/spectrumui/blocks/pricing/reveal.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/reveal.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "Pricing",
      "tags": [
        "pricing",
        "tiers",
        "serif"
      ]
    },
    {
      "name": "gradient-tiers",
      "type": "registry:block",
      "title": "Gradient Tiers",
      "description": "Pastel gradient card headers with icons and color-coded inheritance labels.",
      "files": [
        {
          "path": "components/spectrumui/blocks/pricing/gradient-tiers.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/pricing/gradient-tiers.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/types.ts"
        },
        {
          "path": "components/spectrumui/blocks/pricing/reveal.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/reveal.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "Pricing",
      "tags": [
        "pricing",
        "tiers",
        "gradient"
      ]
    },
    {
      "name": "dark-matrix",
      "type": "registry:block",
      "title": "Dark Matrix",
      "description": "A dark comparison table with dashed rows, mint checks, and per-plan CTA pills.",
      "files": [
        {
          "path": "components/spectrumui/blocks/pricing/dark-matrix.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/pricing/dark-matrix.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/types.ts"
        },
        {
          "path": "components/spectrumui/blocks/pricing/reveal.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/reveal.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "Pricing",
      "tags": [
        "pricing",
        "comparison",
        "dark"
      ]
    },
    {
      "name": "blueprint-tiers",
      "type": "registry:block",
      "title": "Blueprint Tiers",
      "description": "A Swiss-style pricing table with crop marks, mono labels, and a royal-blue accent.",
      "files": [
        {
          "path": "components/spectrumui/blocks/pricing/blueprint-tiers.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/pricing/blueprint-tiers.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/price-figure.tsx",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/price-figure.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/types.ts"
        },
        {
          "path": "components/spectrumui/blocks/pricing/reveal.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/reveal.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "Pricing",
      "tags": [
        "pricing",
        "table",
        "technical"
      ]
    },
    {
      "name": "serif-tiers",
      "type": "registry:block",
      "title": "Serif Tiers",
      "description": "Cream serif cards with a black featured card lit by a crimson glow.",
      "files": [
        {
          "path": "components/spectrumui/blocks/pricing/serif-tiers.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/pricing/serif-tiers.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/price-figure.tsx",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/price-figure.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/types.ts"
        },
        {
          "path": "components/spectrumui/blocks/pricing/reveal.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/reveal.ts"
        }
      ],
      "category": "Pricing",
      "tags": [
        "pricing",
        "tiers",
        "serif"
      ]
    },
    {
      "name": "banner-tiers",
      "type": "registry:block",
      "title": "Banner Tiers",
      "description": "A brutalist plan table whose featured column wears a blue banner on top.",
      "files": [
        {
          "path": "components/spectrumui/blocks/pricing/banner-tiers.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/pricing/banner-tiers.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/price-figure.tsx",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/price-figure.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/types.ts"
        },
        {
          "path": "components/spectrumui/blocks/pricing/reveal.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/reveal.ts"
        }
      ],
      "dependencies": [
        "lucide-react"
      ],
      "category": "Pricing",
      "tags": [
        "pricing",
        "tiers",
        "brutalist"
      ]
    },
    {
      "name": "receipt-tiers",
      "type": "registry:block",
      "title": "Receipt Tiers",
      "description": "Plans printed as thermal receipts with torn edges, dotted leaders, and a rubber stamp.",
      "files": [
        {
          "path": "components/spectrumui/blocks/pricing/receipt-tiers.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/pricing/receipt-tiers.tsx"
        },
        {
          "path": "components/spectrumui/blocks/pricing/types.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/types.ts"
        },
        {
          "path": "components/spectrumui/blocks/pricing/reveal.ts",
          "type": "registry:file",
          "target": "components/spectrumui/blocks/pricing/reveal.ts"
        }
      ],
      "category": "Pricing",
      "tags": [
        "pricing",
        "receipt",
        "mono"
      ]
    },
    {
      "name": "use-typewriter",
      "type": "registry:hook",
      "title": "useTypewriter",
      "description": "A typewriter hook that types, holds and deletes phrases on a loop, plus a prefers-reduced-motion hook.",
      "files": [
        {
          "path": "app/registry/use-typewriter/use-typewriter.ts",
          "type": "registry:hook",
          "target": "components/spectrumui/use-typewriter.ts"
        }
      ]
    },
    {
      "name": "command-search",
      "type": "registry:component",
      "title": "Command Search",
      "description": "A command palette that types queries and live-filters grouped results, with keyboard navigation.",
      "files": [
        {
          "path": "app/registry/command-search/command-search.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/command-search.tsx"
        }
      ],
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/use-typewriter"
      ],
      "category": "Input",
      "docsUrl": "https://ui.spectrumhq.in/docs/command-search",
      "new": true
    },
    {
      "name": "command-search-demo",
      "type": "registry:component",
      "title": "Command Search Demo",
      "description": "Demo usage for the Command Search component",
      "files": [
        {
          "path": "app/registry/command-search/command-search-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/command-search-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/command-search"
      ],
      "category": "Input",
      "docsUrl": "https://ui.spectrumhq.in/docs/command-search",
      "new": true
    },
    {
      "name": "recent-activity",
      "type": "registry:component",
      "title": "Recent Activity",
      "description": "An activity feed card that lists agent runs with duration and recency chips.",
      "files": [
        {
          "path": "app/registry/recent-activity/recent-activity.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/recent-activity.tsx"
        }
      ],
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "category": "Data",
      "docsUrl": "https://ui.spectrumhq.in/docs/recent-activity",
      "new": true
    },
    {
      "name": "recent-activity-demo",
      "type": "registry:component",
      "title": "Recent Activity Demo",
      "description": "Demo usage for the Recent Activity component",
      "files": [
        {
          "path": "app/registry/recent-activity/recent-activity-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/recent-activity-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/recent-activity"
      ],
      "category": "Data",
      "docsUrl": "https://ui.spectrumhq.in/docs/recent-activity",
      "new": true
    },
    {
      "name": "account-access-card",
      "type": "registry:component",
      "title": "Account Access Card",
      "description": "A credentials card that auto-fills email and password on a loop, with a danger zone.",
      "files": [
        {
          "path": "app/registry/account-access-card/account-access-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/account-access-card.tsx"
        }
      ],
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/use-typewriter"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/account-access-card",
      "new": true
    },
    {
      "name": "account-access-card-demo",
      "type": "registry:component",
      "title": "Account Access Card Demo",
      "description": "Demo usage for the Account Access Card component",
      "files": [
        {
          "path": "app/registry/account-access-card/account-access-card-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/account-access-card-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/account-access-card"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/account-access-card",
      "new": true
    },
    {
      "name": "ai-chat-card",
      "type": "registry:component",
      "title": "AI Chat Card",
      "description": "An AI chat card that types prompts into its composer, with send, attach and reset actions.",
      "files": [
        {
          "path": "app/registry/ai-chat-card/ai-chat-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/ai-chat-card.tsx"
        }
      ],
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/use-typewriter"
      ],
      "category": "Card",
      "docsUrl": "https://ui.spectrumhq.in/docs/ai-chat-card",
      "new": true
    },
    {
      "name": "ai-chat-card-demo",
      "type": "registry:component",
      "title": "AI Chat Card Demo",
      "description": "Demo usage for the AI Chat Card component",
      "files": [
        {
          "path": "app/registry/ai-chat-card/ai-chat-card-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/ai-chat-card-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/ai-chat-card"
      ],
      "category": "Card",
      "docsUrl": "https://ui.spectrumhq.in/docs/ai-chat-card",
      "new": true
    },
    {
      "name": "nav-list-card",
      "type": "registry:component",
      "title": "Nav List Card",
      "description": "A compact navigation card that lists links with icons, with a spring slide on hover.",
      "files": [
        {
          "path": "app/registry/nav-list-card/nav-list-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/nav-list-card.tsx"
        }
      ],
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "category": "Navigation",
      "docsUrl": "https://ui.spectrumhq.in/docs/nav-list-card",
      "new": true
    },
    {
      "name": "nav-list-card-demo",
      "type": "registry:component",
      "title": "Nav List Card Demo",
      "description": "Demo usage for the Nav List Card component",
      "files": [
        {
          "path": "app/registry/nav-list-card/nav-list-card-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/nav-list-card-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/nav-list-card"
      ],
      "category": "Navigation",
      "docsUrl": "https://ui.spectrumhq.in/docs/nav-list-card",
      "new": true
    },
    {
      "name": "transfer-funds-card",
      "type": "registry:component",
      "title": "Transfer Funds Card",
      "description": "A money transfer form card with account pickers, a summary and a confirm action.",
      "files": [
        {
          "path": "app/registry/transfer-funds-card/transfer-funds-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/transfer-funds-card.tsx"
        }
      ],
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/transfer-funds-card",
      "new": true
    },
    {
      "name": "transfer-funds-card-demo",
      "type": "registry:component",
      "title": "Transfer Funds Card Demo",
      "description": "Demo usage for the Transfer Funds Card component",
      "files": [
        {
          "path": "app/registry/transfer-funds-card/transfer-funds-card-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/transfer-funds-card-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/transfer-funds-card"
      ],
      "category": "Form",
      "docsUrl": "https://ui.spectrumhq.in/docs/transfer-funds-card",
      "new": true
    },
    {
      "name": "faq-tabs-card",
      "type": "registry:component",
      "title": "FAQ Tabs Card",
      "description": "A tabbed FAQ card with animated accordion answers and a support footer.",
      "files": [
        {
          "path": "app/registry/faq-tabs-card/faq-tabs-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/faq-tabs-card.tsx"
        }
      ],
      "dependencies": [
        "motion",
        "lucide-react"
      ],
      "category": "Disclosure",
      "docsUrl": "https://ui.spectrumhq.in/docs/faq-tabs-card",
      "new": true
    },
    {
      "name": "faq-tabs-card-demo",
      "type": "registry:component",
      "title": "FAQ Tabs Card Demo",
      "description": "Demo usage for the FAQ Tabs Card component",
      "files": [
        {
          "path": "app/registry/faq-tabs-card/faq-tabs-card-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/faq-tabs-card-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/faq-tabs-card"
      ],
      "category": "Disclosure",
      "docsUrl": "https://ui.spectrumhq.in/docs/faq-tabs-card",
      "new": true
    },
    {
      "name": "tree-nav",
      "type": "registry:component",
      "title": "Tree Nav",
      "description": "A nav list with a tree rail and a spring marker that follows hover and settles on the active link.",
      "files": [
        {
          "path": "app/registry/tree-nav/tree-nav.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/tree-nav.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "@spectrumui/use-typewriter"
      ],
      "category": "Navigation",
      "docsUrl": "https://ui.spectrumhq.in/docs/tree-nav",
      "new": true
    },
    {
      "name": "tree-nav-demo",
      "type": "registry:component",
      "title": "Tree Nav Demo",
      "description": "Demo usage for the Tree Nav component",
      "files": [
        {
          "path": "app/registry/tree-nav/tree-nav-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/tree-nav-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/tree-nav"
      ],
      "category": "Navigation",
      "docsUrl": "https://ui.spectrumhq.in/docs/tree-nav",
      "new": true
    },
    {
      "name": "use-surface-theme",
      "type": "registry:hook",
      "title": "useSurfaceTheme",
      "description": "Resolves auto to dark or light from a .dark class on <html>, then the OS preference, updating live.",
      "files": [
        {
          "path": "components/spectrumui/use-surface-theme.ts",
          "type": "registry:hook",
          "target": "components/spectrumui/use-surface-theme.ts"
        }
      ]
    },
    {
      "name": "metal-button",
      "type": "registry:component",
      "title": "Metal Button",
      "description": "A pill button framed by a real-time WebGL liquid-metal ring, in chromatic, silver and gold presets.",
      "files": [
        {
          "path": "components/spectrumui/metal-button.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/metal-button.tsx"
        }
      ],
      "dependencies": [
        "metal-fx"
      ],
      "registryDependencies": [
        "@spectrumui/use-surface-theme"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/metal-button",
      "new": true
    },
    {
      "name": "metal-button-demo",
      "type": "registry:component",
      "title": "Metal Button Demo",
      "description": "Demo usage for the Metal Button component",
      "files": [
        {
          "path": "app/registry/metal-button/metal-button-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/metal-button-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/metal-button"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/metal-button",
      "new": true
    },
    {
      "name": "metal-prompt-bar",
      "type": "registry:component",
      "title": "Metal Prompt Bar",
      "description": "An AI prompt bar with a live liquid-metal send button that reflects onto the chips beside it.",
      "files": [
        {
          "path": "components/spectrumui/metal-prompt-bar.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/metal-prompt-bar.tsx"
        }
      ],
      "dependencies": [
        "metal-fx",
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/use-surface-theme"
      ],
      "category": "Input",
      "docsUrl": "https://ui.spectrumhq.in/docs/metal-prompt-bar",
      "new": true
    },
    {
      "name": "metal-prompt-bar-demo",
      "type": "registry:component",
      "title": "Metal Prompt Bar Demo",
      "description": "Demo usage for the Metal Prompt Bar component",
      "files": [
        {
          "path": "app/registry/metal-prompt-bar/metal-prompt-bar-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/metal-prompt-bar-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/metal-prompt-bar"
      ],
      "category": "Input",
      "docsUrl": "https://ui.spectrumhq.in/docs/metal-prompt-bar",
      "new": true
    },
    {
      "name": "beam-card",
      "type": "registry:component",
      "title": "Beam Card",
      "description": "A card wrapped in an animated border beam, traveling or breathing, in four color palettes.",
      "files": [
        {
          "path": "components/spectrumui/beam-card.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/beam-card.tsx"
        }
      ],
      "dependencies": [
        "border-beam"
      ],
      "registryDependencies": [
        "@spectrumui/use-surface-theme"
      ],
      "category": "Card",
      "docsUrl": "https://ui.spectrumhq.in/docs/beam-card",
      "new": true
    },
    {
      "name": "beam-card-demo",
      "type": "registry:component",
      "title": "Beam Card Demo",
      "description": "Demo usage for the Beam Card component",
      "files": [
        {
          "path": "app/registry/beam-card/beam-card-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/beam-card-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/beam-card"
      ],
      "category": "Card",
      "docsUrl": "https://ui.spectrumhq.in/docs/beam-card",
      "new": true
    },
    {
      "name": "beam-search",
      "type": "registry:component",
      "title": "Beam Search Bar",
      "description": "A search bar whose bottom edge lights up with a traveling beam while it has focus.",
      "files": [
        {
          "path": "components/spectrumui/beam-search.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/beam-search.tsx"
        }
      ],
      "dependencies": [
        "border-beam",
        "lucide-react"
      ],
      "registryDependencies": [
        "@spectrumui/use-surface-theme"
      ],
      "category": "Input",
      "docsUrl": "https://ui.spectrumhq.in/docs/beam-search",
      "new": true
    },
    {
      "name": "beam-search-demo",
      "type": "registry:component",
      "title": "Beam Search Bar Demo",
      "description": "Demo usage for the Beam Search Bar component",
      "files": [
        {
          "path": "app/registry/beam-search/beam-search-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/beam-search-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/beam-search"
      ],
      "category": "Input",
      "docsUrl": "https://ui.spectrumhq.in/docs/beam-search",
      "new": true
    },
    {
      "name": "dynamic-island",
      "type": "registry:component",
      "title": "Dynamic Island",
      "description": "An iOS-style island pill that morphs between live activity views with a bouncy resize.",
      "files": [
        {
          "path": "components/motion/dynamic-island.tsx",
          "type": "registry:component",
          "target": "components/motion/dynamic-island.tsx"
        },
        {
          "path": "lib/ease.ts",
          "type": "registry:lib",
          "target": "lib/ease.ts"
        }
      ],
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ]
    },
    {
      "name": "dynamic-island-demo",
      "type": "registry:component",
      "title": "Dynamic Island Demo",
      "description": "Demo usage for the Dynamic Island component",
      "files": [
        {
          "path": "app/registry/dynamic-island/dynamic-island-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/dynamic-island-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/dynamic-island"
      ]
    },
    {
      "name": "expandable-action-bar",
      "type": "registry:component",
      "title": "Expandable Action Bar",
      "description": "Compact icon actions that expand into labeled controls on hover or focus with shared layout motion.",
      "files": [
        {
          "path": "components/motion/expandable-action-bar.tsx",
          "type": "registry:component",
          "target": "components/motion/expandable-action-bar.tsx"
        },
        {
          "path": "lib/hooks/use-dismiss.ts",
          "type": "registry:hook",
          "target": "lib/hooks/use-dismiss.ts"
        },
        {
          "path": "lib/hooks/use-hover-gesture.ts",
          "type": "registry:hook",
          "target": "lib/hooks/use-hover-gesture.ts"
        },
        {
          "path": "lib/hooks/use-tap-gesture.ts",
          "type": "registry:hook",
          "target": "lib/hooks/use-tap-gesture.ts"
        },
        {
          "path": "lib/touch.ts",
          "type": "registry:lib",
          "target": "lib/touch.ts"
        }
      ],
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/expandable-action-bar",
      "new": true
    },
    {
      "name": "expandable-action-bar-demo",
      "type": "registry:component",
      "title": "Expandable Action Bar Demo",
      "description": "Demo usage for the Expandable Action Bar component",
      "files": [
        {
          "path": "app/registry/expandable-action-bar/expandable-action-bar-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/expandable-action-bar-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/expandable-action-bar"
      ],
      "category": "Action",
      "docsUrl": "https://ui.spectrumhq.in/docs/expandable-action-bar",
      "new": true
    },
    {
      "name": "toast-stack",
      "type": "registry:component",
      "title": "Toast Stack",
      "description": "Stacked toasts with status morphs, swipe to dismiss, actions and layout-aware motion.",
      "files": [
        {
          "path": "components/motion/animated-toast-stack.tsx",
          "type": "registry:component",
          "target": "components/motion/animated-toast-stack.tsx"
        },
        {
          "path": "lib/ease.ts",
          "type": "registry:lib",
          "target": "lib/ease.ts"
        }
      ],
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge",
        "lucide-react"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/toast-stack",
      "new": true
    },
    {
      "name": "toast-stack-demo",
      "type": "registry:component",
      "title": "Toast Stack Demo",
      "description": "Demo usage for the Toast Stack component",
      "files": [
        {
          "path": "app/registry/toast-stack/toast-stack-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/toast-stack-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/toast-stack"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/toast-stack",
      "new": true
    },
    {
      "name": "number-ticker",
      "type": "registry:component",
      "title": "Number Ticker",
      "description": "A rolling digit ticker that counts to a value with per-digit stagger, padding and blur.",
      "files": [
        {
          "path": "components/motion/number-ticker.tsx",
          "type": "registry:component",
          "target": "components/motion/number-ticker.tsx"
        },
        {
          "path": "lib/ease.ts",
          "type": "registry:lib",
          "target": "lib/ease.ts"
        }
      ],
      "dependencies": [
        "motion",
        "clsx",
        "tailwind-merge"
      ],
      "category": "Data",
      "docsUrl": "https://ui.spectrumhq.in/docs/number-ticker",
      "new": true
    },
    {
      "name": "number-ticker-demo",
      "type": "registry:component",
      "title": "Number Ticker Demo",
      "description": "Demo usage for the Number Ticker component",
      "files": [
        {
          "path": "app/registry/number-ticker/number-ticker-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/number-ticker-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/number-ticker"
      ],
      "category": "Data",
      "docsUrl": "https://ui.spectrumhq.in/docs/number-ticker",
      "new": true
    },
    {
      "name": "text-states",
      "type": "registry:component",
      "title": "Text States",
      "description": "A status label that swaps its text in place, exiting up with blur and entering from below.",
      "files": [
        {
          "path": "components/spectrumui/text-states.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/text-states.tsx"
        }
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/text-states",
      "new": true
    },
    {
      "name": "text-states-demo",
      "type": "registry:component",
      "title": "Text States Demo",
      "description": "Demo usage for the Text States component",
      "files": [
        {
          "path": "app/registry/text-states/text-states-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/text-states-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/text-states"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/text-states",
      "new": true
    },
    {
      "name": "skeleton-reveal",
      "type": "registry:component",
      "title": "Skeleton Reveal",
      "description": "A skeleton that pulses while loading, then cross-fades and un-blurs into the real content.",
      "files": [
        {
          "path": "components/spectrumui/skeleton-reveal.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/skeleton-reveal.tsx"
        }
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/skeleton-reveal",
      "new": true
    },
    {
      "name": "skeleton-reveal-demo",
      "type": "registry:component",
      "title": "Skeleton Reveal Demo",
      "description": "Demo usage for the Skeleton Reveal component",
      "files": [
        {
          "path": "app/registry/skeleton-reveal/skeleton-reveal-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/skeleton-reveal-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/skeleton-reveal"
      ],
      "category": "Feedback",
      "docsUrl": "https://ui.spectrumhq.in/docs/skeleton-reveal",
      "new": true
    },
    {
      "name": "data-table",
      "type": "registry:component",
      "title": "Data Table",
      "description": "A typed data table with sorting, search and row selection, where rows glide into their new order.",
      "files": [
        {
          "path": "app/registry/data-table/data-table.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/data-table.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "category": "Data",
      "docsUrl": "https://ui.spectrumhq.in/docs/data-table",
      "new": true
    },
    {
      "name": "data-table-demo",
      "type": "registry:component",
      "title": "Data Table Demo",
      "description": "Demo usage for the Data Table component",
      "files": [
        {
          "path": "app/registry/data-table/data-table-demo.tsx",
          "type": "registry:component",
          "target": "components/spectrumui/data-table-demo.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Data",
      "docsUrl": "https://ui.spectrumhq.in/docs/data-table",
      "new": true
    },
    {
      "name": "payments-table",
      "type": "registry:block",
      "title": "Payments Table",
      "description": "Transactions with people avatars, status pills, filters, row selection and a bulk export bar.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/payments-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/payments-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "payments",
        "billing",
        "transactions"
      ]
    },
    {
      "name": "team-members-table",
      "type": "registry:block",
      "title": "Team Members Table",
      "description": "Workspace member management with roles, two-factor status, last activity and a remove action.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/team-members-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/team-members-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "members",
        "settings",
        "roles"
      ]
    },
    {
      "name": "invoices-table",
      "type": "registry:block",
      "title": "Invoices Table",
      "description": "Billing history with mono invoice numbers, status pills and a per-row PDF download.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/invoices-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/invoices-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "invoices",
        "billing"
      ]
    },
    {
      "name": "orders-table",
      "type": "registry:block",
      "title": "Orders Table",
      "description": "E-commerce orders with fulfillment pills, customer avatars and an expandable line-item panel.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/orders-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/orders-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "orders",
        "commerce"
      ]
    },
    {
      "name": "customers-table",
      "type": "registry:block",
      "title": "Customers Table",
      "description": "Accounts ranked by MRR with plan badges, churn-risk indicators and owner avatars.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/customers-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/customers-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "customers",
        "mrr",
        "revenue"
      ]
    },
    {
      "name": "api-keys-table",
      "type": "registry:block",
      "title": "API Keys Table",
      "description": "Key management with masked secrets in mono, scope chips, usage counts and a revoke action.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/api-keys-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/api-keys-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "api-keys",
        "developer",
        "settings"
      ]
    },
    {
      "name": "audit-log-table",
      "type": "registry:block",
      "title": "Audit Log Table",
      "description": "A dense, pinned-header event log with actors, mono action names, IPs and severity levels.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/audit-log-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/audit-log-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "audit-log",
        "enterprise",
        "security"
      ]
    },
    {
      "name": "deployments-table",
      "type": "registry:block",
      "title": "Deployments Table",
      "description": "CI deploys with commit messages, mono shas, environment badges, build status and author avatars.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/deployments-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/deployments-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "deployments",
        "ci",
        "developer"
      ]
    },
    {
      "name": "feature-flags-table",
      "type": "registry:block",
      "title": "Feature Flags Table",
      "description": "Flag management with env chips, rollout meters and a live spring-animated switch per row.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/feature-flags-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/feature-flags-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "feature-flags",
        "developer"
      ]
    },
    {
      "name": "tickets-table",
      "type": "registry:block",
      "title": "Support Tickets Table",
      "description": "A support queue with priority icons, SLA countdowns, assignee avatars and status pills.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/tickets-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/tickets-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "tickets",
        "support",
        "queue"
      ]
    },
    {
      "name": "top-pages-table",
      "type": "registry:block",
      "title": "Top Pages Table",
      "description": "An analytics table with mono paths, share-of-traffic bars and signed week-over-week deltas.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/top-pages-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/top-pages-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "analytics",
        "pages"
      ]
    },
    {
      "name": "market-table",
      "type": "registry:block",
      "title": "Market Watchlist Table",
      "description": "A price watchlist with ticker tiles, signed 24h changes and seven-day inline sparklines.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/market-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/market-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "finance",
        "watchlist",
        "sparkline"
      ]
    },
    {
      "name": "inventory-table",
      "type": "registry:block",
      "title": "Inventory Table",
      "description": "Stock management with SKU tiles, capacity meters that change color at thresholds and status labels.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/inventory-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/inventory-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "inventory",
        "stock",
        "commerce"
      ]
    },
    {
      "name": "leaderboard-table",
      "type": "registry:block",
      "title": "Leaderboard Table",
      "description": "Rankings with medal chips for the top three, player avatars, streaks and weekly movement.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/leaderboard-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/leaderboard-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "leaderboard",
        "ranking"
      ]
    },
    {
      "name": "files-table",
      "type": "registry:block",
      "title": "Files Table",
      "description": "A shared-drive browser with type-glyph tiles, sizes, collaborator stacks and modified dates.",
      "files": [
        {
          "path": "components/spectrumui/blocks/tables/files-table.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/tables/files-table.tsx"
        }
      ],
      "registryDependencies": [
        "@spectrumui/data-table"
      ],
      "category": "Tables",
      "tags": [
        "files",
        "drive",
        "browser"
      ]
    },
    {
      "name": "mega-sitemap-footer",
      "type": "registry:block",
      "title": "Mega Sitemap Footer",
      "description": "A five-column sitemap with region and language selectors and mobile accordions.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/mega-sitemap-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/mega-sitemap-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "sitemap",
        "enterprise",
        "navigation",
        "accordion"
      ]
    },
    {
      "name": "trust-center-footer",
      "type": "registry:block",
      "title": "Trust Center Footer",
      "description": "Compliance marks that expand to scope, over a logo row and link columns.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/trust-center-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/trust-center-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "registryDependencies": [
        "button",
        "tooltip"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "compliance",
        "soc2",
        "iso27001",
        "trust",
        "enterprise"
      ]
    },
    {
      "name": "region-picker-footer",
      "type": "registry:block",
      "title": "Region Picker Footer",
      "description": "A region popover with locale, currency, data residency and live local time.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/region-picker-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/region-picker-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "registryDependencies": [
        "popover"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "region",
        "locale",
        "i18n",
        "data-residency"
      ]
    },
    {
      "name": "service-status-footer",
      "type": "registry:block",
      "title": "Service Status Footer",
      "description": "Thirty days of per-service uptime bars with a rolling incident ticker.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/service-status-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/service-status-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "status",
        "uptime",
        "sparkline",
        "incident"
      ]
    },
    {
      "name": "sales-cta-footer",
      "type": "registry:block",
      "title": "Sales CTA Footer",
      "description": "A seat slider that prices a tier live, beside the link grid.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/sales-cta-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/sales-cta-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "pricing",
        "slider",
        "sales",
        "enterprise"
      ]
    },
    {
      "name": "link-search-footer",
      "type": "registry:block",
      "title": "Link Search Footer",
      "description": "Type-to-filter across every footer link, with arrow-key navigation.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/link-search-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/link-search-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "registryDependencies": [
        "input"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "search",
        "combobox",
        "navigation"
      ]
    },
    {
      "name": "careers-footer",
      "type": "registry:block",
      "title": "Careers Footer",
      "description": "A rolling three-role window with department filters, over link columns.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/careers-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/careers-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "careers",
        "jobs",
        "ticker",
        "filter"
      ]
    },
    {
      "name": "policy-footer",
      "type": "registry:block",
      "title": "Policy Footer",
      "description": "Cookie-category switches with a save state, over a layered legal row.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/policy-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/policy-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "registryDependencies": [
        "button",
        "switch"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "legal",
        "cookies",
        "consent",
        "privacy"
      ]
    },
    {
      "name": "ask-docs-footer",
      "type": "registry:block",
      "title": "Ask Docs Footer",
      "description": "A docs question box that streams a cited answer, over link columns.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/ask-docs-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/ask-docs-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "registryDependencies": [
        "input"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "ai",
        "search",
        "streaming",
        "citations"
      ]
    },
    {
      "name": "wordmark-spotlight-footer",
      "type": "registry:block",
      "title": "Wordmark Spotlight Footer",
      "description": "A full-bleed wordmark lit by a spotlight that follows the pointer.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/wordmark-spotlight-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/wordmark-spotlight-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "wordmark",
        "spotlight",
        "big-footer",
        "brand"
      ]
    },
    {
      "name": "token-stream-footer",
      "type": "registry:block",
      "title": "Token Stream Footer",
      "description": "A one-line manifesto that types itself in, over a metric row.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/token-stream-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/token-stream-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "ai",
        "streaming",
        "typewriter",
        "scroll"
      ]
    },
    {
      "name": "neural-grid-footer",
      "type": "registry:block",
      "title": "Neural Grid Footer",
      "description": "An SVG node lattice that lights up under the pointer.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/neural-grid-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/neural-grid-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "ai",
        "svg",
        "lattice",
        "pointer"
      ]
    },
    {
      "name": "release-feed-footer",
      "type": "registry:block",
      "title": "Release Feed Footer",
      "description": "A changelog list with version, kind and date on hairline rows.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/release-feed-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/release-feed-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "changelog",
        "releases",
        "timeline"
      ]
    },
    {
      "name": "newsletter-footer",
      "type": "registry:block",
      "title": "Newsletter Footer",
      "description": "A newsletter panel with a value checklist, reader stack and inline validation.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/newsletter-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/newsletter-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "dependencies": [
        "@hookform/resolvers",
        "react-hook-form",
        "zod"
      ],
      "registryDependencies": [
        "avatar",
        "button",
        "form",
        "input"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "newsletter",
        "email",
        "form",
        "validation"
      ]
    },
    {
      "name": "contact-card-footer",
      "type": "registry:block",
      "title": "Contact Card Footer",
      "description": "Copyable email, phone and address rows with opening hours and local time.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/contact-card-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/contact-card-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "contact",
        "copy",
        "clipboard",
        "local-time"
      ]
    },
    {
      "name": "social-proof-footer",
      "type": "registry:block",
      "title": "Logo Wall Footer",
      "description": "A customer logo wall — marquee or plotted grid — over stats and link columns.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/social-proof-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/social-proof-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "logos",
        "logo wall",
        "marquee",
        "social proof"
      ]
    },
    {
      "name": "minimal-footer",
      "type": "registry:block",
      "title": "Minimal Footer",
      "description": "A single-line footer with hover-expanding link clusters, status and socials.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/minimal-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/minimal-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "registryDependencies": [
        "popover"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "minimal",
        "compact",
        "popover"
      ]
    },
    {
      "name": "waitlist-footer",
      "type": "registry:block",
      "title": "Waitlist Footer",
      "description": "Waitlist capture with an avatar stack and a live position counter.",
      "files": [
        {
          "path": "components/spectrumui/blocks/footers/waitlist-footer.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/waitlist-footer.tsx"
        },
        {
          "path": "components/spectrumui/blocks/footers/footer-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/footers/footer-kit.tsx"
        }
      ],
      "registryDependencies": [
        "button",
        "input"
      ],
      "category": "Footers",
      "tags": [
        "footer",
        "waitlist",
        "email",
        "launch",
        "avatars"
      ]
    },
    {
      "name": "project-empty",
      "type": "registry:block",
      "title": "First Project",
      "description": "First-run project screen with selectable templates and a setup checklist.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/project-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/project-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "onboarding",
        "first run",
        "templates",
        "projects"
      ]
    },
    {
      "name": "invite-empty",
      "type": "registry:block",
      "title": "Invite Teammates",
      "description": "A one-seat team with an avatar rail, live invite field and copyable join link.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/invite-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/invite-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button",
        "input"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "team",
        "invite",
        "seats",
        "onboarding"
      ]
    },
    {
      "name": "integration-empty",
      "type": "registry:block",
      "title": "Connect a Source",
      "description": "A connector grid where tiles run a real connect sequence and settle into connected.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/integration-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/integration-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "integrations",
        "connectors",
        "data sources",
        "onboarding"
      ]
    },
    {
      "name": "upload-empty",
      "type": "registry:block",
      "title": "Drop Files",
      "description": "A drop zone with real drag handling and per-file upload meters.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/upload-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/upload-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "upload",
        "drag and drop",
        "files",
        "dropzone"
      ]
    },
    {
      "name": "api-key-empty",
      "type": "registry:block",
      "title": "No API Keys",
      "description": "Key creation that reveals the secret once, masked, with a copy that confirms itself.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/api-key-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/api-key-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "api keys",
        "secrets",
        "developer",
        "security"
      ]
    },
    {
      "name": "webhook-empty",
      "type": "registry:block",
      "title": "Waiting for Events",
      "description": "A live endpoint waiting for its first delivery, with a test event that lands.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/webhook-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/webhook-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "webhooks",
        "events",
        "developer",
        "logs"
      ]
    },
    {
      "name": "search-empty",
      "type": "registry:block",
      "title": "No Search Results",
      "description": "A no-results state that echoes the query and resolves when a suggestion is taken.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/search-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/search-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "search",
        "no results",
        "suggestions",
        "did you mean"
      ]
    },
    {
      "name": "filter-empty",
      "type": "registry:block",
      "title": "No Matching Filters",
      "description": "Filter chips you can drop one at a time, with the match count coming back as you do.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/filter-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/filter-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "filters",
        "no results",
        "table",
        "faceted search"
      ]
    },
    {
      "name": "table-empty",
      "type": "registry:block",
      "title": "Empty Table",
      "description": "A table that keeps its header and column widths, with rows that spring in.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/table-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/table-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "table",
        "no rows",
        "data",
        "loading"
      ]
    },
    {
      "name": "chart-empty",
      "type": "registry:block",
      "title": "No Chart Data",
      "description": "Ghost axes with a sample series that springs up on request.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/chart-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/chart-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "charts",
        "analytics",
        "no data",
        "sample data"
      ]
    },
    {
      "name": "activity-empty",
      "type": "registry:block",
      "title": "No Activity Yet",
      "description": "An audit timeline with a dashed rail above its one real event.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/activity-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/activity-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "activity",
        "audit log",
        "timeline",
        "history"
      ]
    },
    {
      "name": "inbox-empty",
      "type": "registry:block",
      "title": "Inbox Zero",
      "description": "A cleared inbox where the last three cards sweep out and the stats land.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/inbox-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/inbox-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "inbox",
        "inbox zero",
        "messages",
        "all caught up"
      ]
    },
    {
      "name": "notification-empty",
      "type": "registry:block",
      "title": "No Notifications",
      "description": "An empty notification tray with working channel switches and a quiet-hours state.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/notification-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/notification-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button",
        "switch"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "notifications",
        "quiet hours",
        "settings",
        "preferences"
      ]
    },
    {
      "name": "trash-empty",
      "type": "registry:block",
      "title": "Trash Is Empty",
      "description": "An empty trash that explains the retention window instead of celebrating.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/trash-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/trash-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "trash",
        "deleted",
        "retention",
        "recovery"
      ]
    },
    {
      "name": "schedule-empty",
      "type": "registry:block",
      "title": "Nothing Scheduled",
      "description": "A day rail with a now marker where any hour opens an inline composer.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/schedule-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/schedule-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button",
        "input"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "calendar",
        "schedule",
        "agenda",
        "events"
      ]
    },
    {
      "name": "saved-empty",
      "type": "registry:block",
      "title": "Nothing Saved",
      "description": "An empty saved list that teaches the gesture on three real rows.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/saved-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/saved-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "bookmarks",
        "saved",
        "favorites",
        "onboarding"
      ]
    },
    {
      "name": "cart-empty",
      "type": "registry:block",
      "title": "Empty Cart",
      "description": "An empty bag with three recently viewed products that add for real.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/cart-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/cart-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "cart",
        "ecommerce",
        "checkout",
        "recently viewed"
      ]
    },
    {
      "name": "board-empty",
      "type": "registry:block",
      "title": "Empty Board Column",
      "description": "A kanban column that accepts real drags from its neighbours and composes cards inline.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/board-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/board-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button",
        "input"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "kanban",
        "board",
        "drag and drop",
        "tasks"
      ]
    },
    {
      "name": "offline-empty",
      "type": "registry:block",
      "title": "Offline",
      "description": "An offline panel that counts down, retries itself and recovers on screen.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/offline-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/offline-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "offline",
        "connection",
        "retry",
        "error"
      ]
    },
    {
      "name": "error-empty",
      "type": "registry:block",
      "title": "Failed to Load",
      "description": "A load failure with a copyable request id and a details panel that opens to fit.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/error-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/error-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "error",
        "retry",
        "failed to load",
        "diagnostics"
      ]
    },
    {
      "name": "not-found-empty",
      "type": "registry:block",
      "title": "Page Not Found",
      "description": "A 404 that prints the path it tried and filters real destinations as you type.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/not-found-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/not-found-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button",
        "input"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "404",
        "not found",
        "navigation",
        "search"
      ]
    },
    {
      "name": "access-empty",
      "type": "registry:block",
      "title": "No Access",
      "description": "A permission wall that names the owner and turns request into requested.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/access-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/access-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "permissions",
        "access",
        "403",
        "request access"
      ]
    },
    {
      "name": "quota-empty",
      "type": "registry:block",
      "title": "Limit Reached",
      "description": "A quota wall with a full meter, seven days of history and a reset clock.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/quota-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/quota-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "quota",
        "rate limit",
        "usage",
        "upgrade"
      ]
    },
    {
      "name": "locked-empty",
      "type": "registry:block",
      "title": "Locked Feature",
      "description": "A paywall over a blurred preview of the feature it is selling.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/locked-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/locked-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "paywall",
        "upgrade",
        "locked",
        "plan"
      ]
    },
    {
      "name": "maintenance-empty",
      "type": "registry:block",
      "title": "Scheduled Maintenance",
      "description": "A maintenance window with a ticking ETA, a stage rail and a notify-me field.",
      "files": [
        {
          "path": "components/spectrumui/blocks/empty-states/maintenance-empty.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/maintenance-empty.tsx"
        },
        {
          "path": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx",
          "type": "registry:block",
          "target": "components/spectrumui/blocks/empty-states/empty-state-kit.tsx"
        }
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button",
        "input"
      ],
      "category": "Empty States",
      "tags": [
        "empty state",
        "maintenance",
        "status",
        "downtime",
        "incident"
      ]
    }
  ]
}
