{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "hirael",
  "homepage": "https://hirael.com",
  "items": [
    {
      "name": "multi-select",
      "type": "registry:component",
      "title": "Multi Select",
      "description": "Chip-based multi-select with command-palette dropdown, search, select-all and async loader. Compound and single-prop APIs.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "command",
        "popover"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/multi-select.tsx",
          "type": "registry:component",
          "target": "components/multi-select.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/multi-select"
        }
      }
    },
    {
      "name": "number-range",
      "type": "registry:component",
      "title": "Number Range",
      "description": "Two-thumb slider paired with synced number inputs. Min/max/step, currency or unit formatting, keyboard-first.",
      "categories": [
        "inputs"
      ],
      "dependencies": [],
      "registryDependencies": [
        "input",
        "slider"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/number-range.tsx",
          "type": "registry:component",
          "target": "components/number-range.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/number-range"
        }
      }
    },
    {
      "name": "year-picker",
      "type": "registry:component",
      "title": "Year Picker",
      "description": "Decade-grid year picker with keyboard nav, min/max bounds, single or range mode.",
      "categories": [
        "pickers"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "popover"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/year-picker.tsx",
          "type": "registry:component",
          "target": "components/year-picker.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/pickers/year-picker"
        }
      }
    },
    {
      "name": "tag-input",
      "type": "registry:component",
      "title": "Tag Input",
      "description": "Chip input with paste-to-split, dedupe, validation hook, max tags. Compound and single-prop APIs.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/tag-input.tsx",
          "type": "registry:component",
          "target": "components/tag-input.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/tag-input"
        }
      }
    },
    {
      "name": "combobox",
      "type": "registry:component",
      "title": "Combobox",
      "description": "Searchable select on Base UI: single or multiple selection, chips, grouped options, an input addon slot and a clear button.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "@base-ui/react",
        "lucide-react"
      ],
      "registryDependencies": [
        "input-group"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/combobox.tsx",
          "type": "registry:component",
          "target": "components/combobox.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/combobox"
        }
      }
    },
    {
      "name": "lazy-select",
      "type": "registry:component",
      "title": "Lazy Select",
      "description": "Autocomplete single-select that defers loading until open and pages through results on scroll. Debounced server-side search with a pluggable lazy paginator hook.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "command",
        "popover"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/lazy-select.tsx",
          "type": "registry:component",
          "target": "components/lazy-select.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/lazy-select"
        }
      }
    },
    {
      "name": "password-input",
      "type": "registry:component",
      "title": "Password Input",
      "description": "Show/hide toggle with an optional pluggable strength meter. Compound and single-prop APIs.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "input-group"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/password-input.tsx",
          "type": "registry:component",
          "target": "components/password-input.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/password-input"
        }
      }
    },
    {
      "name": "currency-input",
      "type": "registry:component",
      "title": "Currency Input",
      "description": "Locale-aware grouping with currency-symbol prefix and configurable decimal precision.",
      "categories": [
        "inputs"
      ],
      "dependencies": [],
      "registryDependencies": [
        "input-group"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/currency-input.tsx",
          "type": "registry:component",
          "target": "components/currency-input.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/currency-input"
        }
      }
    },
    {
      "name": "phone-input",
      "type": "registry:component",
      "title": "Phone Input",
      "description": "Country dial-code dropdown with E.164 output. Compound and single-prop APIs.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "command",
        "input-group",
        "popover"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/phone-input.tsx",
          "type": "registry:component",
          "target": "components/phone-input.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/phone-input"
        }
      }
    },
    {
      "name": "file-dropzone",
      "type": "registry:component",
      "title": "File Dropzone",
      "description": "Drag-drop + click upload zone with previews, accept and max-size validation. Compound and single-prop APIs.",
      "categories": [
        "files"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/file-dropzone.tsx",
          "type": "registry:component",
          "target": "components/file-dropzone.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/files/file-dropzone"
        }
      }
    },
    {
      "name": "stat-card",
      "type": "registry:component",
      "title": "Stat Card",
      "description": "Compact metric card with label, value, and an up/down/flat trend chip. Compound and single-prop APIs.",
      "categories": [
        "data"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/stat-card.tsx",
          "type": "registry:component",
          "target": "components/stat-card.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/stat-card"
        }
      }
    },
    {
      "name": "rating",
      "type": "registry:component",
      "title": "Rating",
      "description": "Star rating with hover preview, half-star precision, read-only mode and sm / md / lg sizes.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/rating.tsx",
          "type": "registry:component",
          "target": "components/rating.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/rating"
        }
      }
    },
    {
      "name": "timeline",
      "type": "registry:component",
      "title": "Timeline",
      "description": "Vertical event timeline with default or icon dots, tone variants and labelled time / title / description parts.",
      "categories": [
        "data"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/timeline.tsx",
          "type": "registry:component",
          "target": "components/timeline.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/timeline"
        }
      }
    },
    {
      "name": "kbd",
      "type": "registry:component",
      "title": "Kbd",
      "description": "3D tactile keycap with hover lift and pressed states. Compound API with KbdGroup for chords and KbdDisplay for inline keys.",
      "categories": [
        "display"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/kbd.tsx",
          "type": "registry:component",
          "target": "components/kbd.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/kbd"
        }
      }
    },
    {
      "name": "callout",
      "type": "registry:component",
      "title": "Callout",
      "description": "MDX-style admonition with info / success / warning / error / neutral variants and optional icon override. Ships --info / --success / --warning theme tokens.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "class-variance-authority",
        "lucide-react"
      ],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/callout.tsx",
          "type": "registry:component",
          "target": "components/callout.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/callout"
        }
      }
    },
    {
      "name": "scroll-progress",
      "type": "registry:component",
      "title": "Scroll Progress",
      "description": "Fixed reading progress bar. Tracks document scroll by default or a scoped container ref.",
      "categories": [
        "display"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/scroll-progress.tsx",
          "type": "registry:component",
          "target": "components/scroll-progress.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/scroll-progress"
        }
      }
    },
    {
      "name": "hero-01",
      "type": "registry:block",
      "title": "Hero 1",
      "description": "Full-bleed hero card over an animated light-beam shader, with a glass pill nav, a trust badge, a serif headline, dual CTA and a three-stat footer.",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react",
        "shaders"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-01/hero-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-01.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/blocks/hero-01/hero-01-backdrop.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-01-backdrop.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-01"
        }
      }
    },
    {
      "name": "hero-02",
      "type": "registry:block",
      "title": "Hero 2",
      "description": "Centered hero over animated grayscale gradient bars, with a live pill, a serif headline with an underlined accent, dual CTA and a wordmark strip.",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react",
        "shaders"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-02/hero-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-02.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/blocks/hero-02/hero-02-backdrop.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-02-backdrop.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-02"
        }
      }
    },
    {
      "name": "hero-03",
      "type": "registry:block",
      "title": "Hero 3",
      "description": "Editorial centered hero on a faded grid, with a serif headline, sub-copy, dual CTA and a logo cloud of customer wordmarks.",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-03/hero-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-03"
        }
      }
    },
    {
      "name": "hero-04",
      "type": "registry:block",
      "title": "Hero 4",
      "description": "Full-bleed image-banner hero with a dark scrim, a slim nav, a serif headline and dual CTA aligned to the bottom.",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-04/hero-04.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-04.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-04"
        }
      }
    },
    {
      "name": "hero-05",
      "type": "registry:block",
      "title": "Hero 5",
      "description": "Full-bleed hero card over an animated aurora shader, with a glass pill nav, a glass content panel, a serif headline, dual CTA and an avatar social-proof row.",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react",
        "shaders"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-05/hero-05.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-05.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/blocks/hero-05/hero-05-backdrop.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-05-backdrop.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-05"
        }
      }
    },
    {
      "name": "feature-01",
      "type": "registry:block",
      "title": "Feature 1",
      "description": "Three alternating feature rows, each pairing a stylized Tailwind-only mock UI with a copy column (eyebrow, headline, paragraph, 3-item checklist).",
      "categories": [
        "blocks",
        "feature"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/feature-01/feature-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/feature-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/features/feature-01"
        }
      }
    },
    {
      "name": "feature-02",
      "type": "registry:block",
      "title": "Feature 2",
      "description": "Section header above a 3-column, 2-row grid of bordered feature cards with lucide icons, headlines and short blurbs.",
      "categories": [
        "blocks",
        "feature"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/feature-02/feature-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/feature-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/features/feature-02"
        }
      }
    },
    {
      "name": "pricing-01",
      "type": "registry:block",
      "title": "Pricing 1",
      "description": "Three-tier card row with a featured middle plan. Each card lists price, blurb, feature checklist and a primary or outline CTA.",
      "categories": [
        "blocks",
        "pricing"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "card",
        "separator"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/pricing-01/pricing-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/pricing-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/pricing/pricing-01"
        }
      }
    },
    {
      "name": "pricing-02",
      "type": "registry:block",
      "title": "Pricing 2",
      "description": "Compare-by-feature pricing table with sticky tier header (tier name, price, CTA) and ~8 feature rows below.",
      "categories": [
        "blocks",
        "pricing"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "table"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/pricing-02/pricing-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/pricing-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/pricing/pricing-02"
        }
      }
    },
    {
      "name": "pricing-03",
      "type": "registry:block",
      "title": "Pricing 3",
      "description": "Three-tier card row with a monthly/yearly billing toggle that tweens the price, a featured plan, per-plan icon, feature checklist and CTA.",
      "categories": [
        "blocks",
        "pricing"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "https://hirael.com/r/animated-number.json",
        "badge",
        "button",
        "card"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/pricing-03/pricing-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/pricing-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/pricing/pricing-03"
        }
      }
    },
    {
      "name": "testimonial-01",
      "type": "registry:block",
      "title": "Testimonial 1",
      "description": "Centered single quote with stylized open-mark, author block (avatar, name, role, company) and a muted wordmark row below.",
      "categories": [
        "blocks",
        "testimonial"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/testimonial-01/testimonial-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/testimonial-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/testimonials/testimonial-01"
        }
      }
    },
    {
      "name": "testimonial-02",
      "type": "registry:block",
      "title": "Testimonial 2",
      "description": "Masonry quote grid (CSS columns) with ~6 bordered quote cards of varying length and author rows.",
      "categories": [
        "blocks",
        "testimonial"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/testimonial-02/testimonial-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/testimonial-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/testimonials/testimonial-02"
        }
      }
    },
    {
      "name": "cta-01",
      "type": "registry:block",
      "title": "CTA 1",
      "description": "Framed CTA card with corner marks, headline + sub-copy on the left, dual buttons stacked on the right.",
      "categories": [
        "blocks",
        "cta"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/cta-01/cta-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/cta-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cta/cta-01"
        }
      }
    },
    {
      "name": "cta-02",
      "type": "registry:block",
      "title": "CTA 2",
      "description": "Full-bleed centered CTA with framing top/bottom rules, highlight underlay on the key word, and an inline install command.",
      "categories": [
        "blocks",
        "cta"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/cta-02/cta-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/cta-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cta/cta-02"
        }
      }
    },
    {
      "name": "cta-03",
      "type": "registry:block",
      "title": "CTA 3",
      "description": "Full-bleed CTA card with an animated dithered shader backdrop, a live status pill, a serif headline and a pill action button.",
      "categories": [
        "blocks",
        "cta"
      ],
      "dependencies": [
        "lucide-react",
        "shaders"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/cta-03/cta-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/cta-03.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/blocks/cta-03/cta-03-backdrop.tsx",
          "type": "registry:block",
          "target": "components/blocks/cta-03-backdrop.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cta/cta-03"
        }
      }
    },
    {
      "name": "faq-01",
      "type": "registry:block",
      "title": "FAQ 1",
      "description": "Two-column FAQ: sticky heading + contact card on the left, numbered accordion on the right.",
      "categories": [
        "blocks",
        "faq"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://hirael.com/r/accordion.json",
        "button",
        "card"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/faq-01/faq-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/faq-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/faqs/faq-01"
        }
      }
    },
    {
      "name": "faq-02",
      "type": "registry:block",
      "title": "FAQ 2",
      "description": "Centered heading with two-column accordion grid below. Each row tagged with a Qn index.",
      "categories": [
        "blocks",
        "faq"
      ],
      "dependencies": [],
      "registryDependencies": [
        "https://hirael.com/r/accordion.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/faq-02/faq-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/faq-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/faqs/faq-02"
        }
      }
    },
    {
      "name": "faq-03",
      "type": "registry:block",
      "title": "FAQ 3",
      "description": "Searchable FAQ with category tabs, a live-filtered accordion, an empty state for missed queries and a support CTA strip.",
      "categories": [
        "blocks",
        "faq"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://hirael.com/r/accordion.json",
        "button",
        "empty",
        "input-group",
        "tabs"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/faq-03/faq-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/faq-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/faqs/faq-03"
        }
      }
    },
    {
      "name": "faq-04",
      "type": "registry:block",
      "title": "FAQ 4",
      "description": "Framed single-column FAQ with side rules, a centered display header, five topic groups each pairing a heading with its own accordion, and a support footer line.",
      "categories": [
        "blocks",
        "faq"
      ],
      "dependencies": [],
      "registryDependencies": [
        "https://hirael.com/r/accordion.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/faq-04/faq-04.tsx",
          "type": "registry:block",
          "target": "components/blocks/faq-04.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/faqs/faq-04"
        }
      }
    },
    {
      "name": "login-01",
      "type": "registry:block",
      "title": "Login 1",
      "description": "Centered login card with monogram, email + password (using the password-input component), remember-me, divider and GitHub / Google providers.",
      "categories": [
        "blocks",
        "login"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "checkbox",
        "field",
        "input",
        "https://hirael.com/r/password-input.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/login-01/login-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/login-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/auth/login-01"
        }
      }
    },
    {
      "name": "login-02",
      "type": "registry:block",
      "title": "Login 2",
      "description": "Two-pane login: form on the left, dark testimonial panel with quote and metrics on the right. Uses the strength-meter variant of password-input.",
      "categories": [
        "blocks",
        "login"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "field",
        "input",
        "https://hirael.com/r/password-input.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/login-02/login-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/login-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/auth/login-02"
        }
      }
    },
    {
      "name": "signup-01",
      "type": "registry:block",
      "title": "Signup 1",
      "description": "Centered signup card with monogram, name + email, strength-meter password-input, terms checkbox, divider and GitHub / Google providers. Validates inline on submit.",
      "categories": [
        "blocks",
        "login"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "checkbox",
        "field",
        "input",
        "https://hirael.com/r/password-input.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/signup-01/signup-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/signup-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/auth/signup-01"
        }
      }
    },
    {
      "name": "forgot-password-01",
      "type": "registry:block",
      "title": "Forgot Password 1",
      "description": "Centered reset-request card: email with inline validation and a pending submit, swapping to a check-your-inbox state that echoes the address with resend and back-to-sign-in links.",
      "categories": [
        "blocks",
        "login"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "field",
        "input"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/forgot-password-01/forgot-password-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/forgot-password-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/auth/forgot-password-01"
        }
      }
    },
    {
      "name": "otp-verify-01",
      "type": "registry:block",
      "title": "OTP Verify 1",
      "description": "Centered verification card with a six-box code input built in the block: auto-advance, backspace, paste distribution and arrow-key focus, plus a 30s resend countdown and a pending → success verify flow.",
      "categories": [
        "blocks",
        "login"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "field",
        "input"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/otp-verify-01/otp-verify-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/otp-verify-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/auth/otp-verify-01"
        }
      }
    },
    {
      "name": "header-01",
      "type": "registry:block",
      "title": "Header 1",
      "description": "Sticky top nav with brand monogram, centered anchor links, dual auth CTAs and a slide-down mobile menu.",
      "categories": [
        "blocks",
        "header"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "drawer",
        "dropdown-menu"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/header-01/header-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/header-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/header/header-01"
        }
      }
    },
    {
      "name": "header-02",
      "type": "registry:block",
      "title": "Header 2",
      "description": "Floating nav that runs full width at the top of the page and shrinks into a blurred pill once you scroll past 100px, with a spring-animated width change. Links share a sliding hover highlight; on mobile a toggle opens an animated dropdown menu. Ships composable parts and a scroll-container prop for embedded layouts.",
      "categories": [
        "blocks",
        "header"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/header-02/header-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/header-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/header/header-02"
        }
      }
    },
    {
      "name": "footer-01",
      "type": "registry:block",
      "title": "Footer 1",
      "description": "Brand + tagline column alongside Product / Company / Resources link columns, with a copyright row and social icons below a thin rule.",
      "categories": [
        "blocks",
        "footer"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/footer-01/footer-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/footer-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/footer/footer-01"
        }
      }
    },
    {
      "name": "not-found-01",
      "type": "registry:block",
      "title": "Not Found 1",
      "description": "Centered 404 with mono eyebrow, display headline, paired CTAs and a 'try one of these' suggested-routes list.",
      "categories": [
        "blocks",
        "not-found"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/not-found-01/not-found-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/not-found-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/not-found/not-found-01"
        }
      }
    },
    {
      "name": "month-picker",
      "type": "registry:component",
      "title": "Month Picker",
      "description": "4×3 month grid with year stepper, keyboard nav, min/max bounds, single or range mode.",
      "categories": [
        "pickers"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "popover"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/month-picker.tsx",
          "type": "registry:component",
          "target": "components/month-picker.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/pickers/month-picker"
        }
      }
    },
    {
      "name": "time-picker",
      "type": "registry:component",
      "title": "Time Picker",
      "description": "Hour, minute and optional second scroll columns with 12/24h modes, step intervals and keyboard nav.",
      "categories": [
        "pickers"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "popover",
        "tabs"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/time-picker.tsx",
          "type": "registry:component",
          "target": "components/time-picker.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/pickers/time-picker"
        }
      }
    },
    {
      "name": "color-picker",
      "type": "registry:component",
      "title": "Color Picker",
      "description": "SV gradient + hue slider with HEX / RGB / HSL tabs, eyedropper (where supported) and recent swatches.",
      "categories": [
        "pickers"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "input",
        "popover",
        "tabs"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/color-picker.tsx",
          "type": "registry:component",
          "target": "components/color-picker.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/pickers/color-picker"
        }
      }
    },
    {
      "name": "avatar-stack",
      "type": "registry:component",
      "title": "Avatar Stack",
      "description": "Overlapping avatar group with size (sm/md/lg) and spacing (tight/normal/loose) variants, image or fallback support, numeric overflow chip, and asChild on items/overflow so each avatar can render as a link or button.",
      "categories": [
        "data"
      ],
      "dependencies": [
        "@radix-ui/react-slot",
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/avatar-stack.tsx",
          "type": "registry:component",
          "target": "components/avatar-stack.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/avatar-stack"
        }
      }
    },
    {
      "name": "announcement-bar",
      "type": "registry:component",
      "title": "Announcement Bar",
      "description": "Top-of-page banner with default / primary / muted tones, optional dismiss button and localStorage persistence.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "class-variance-authority",
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/announcement-bar.tsx",
          "type": "registry:component",
          "target": "components/announcement-bar.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/announcement-bar"
        }
      }
    },
    {
      "name": "logo-cloud-01",
      "type": "registry:block",
      "title": "Logo Cloud 1",
      "description": "Centered eyebrow + headline above a 5-column bordered wordmark grid, with stat strip and case-study link below.",
      "categories": [
        "blocks",
        "logo-cloud"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/logo-cloud-01/logo-cloud-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/logo-cloud-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/logo-cloud/logo-cloud-01"
        }
      }
    },
    {
      "name": "contact-01",
      "type": "registry:block",
      "title": "Contact 1",
      "description": "Production contact form with controlled state, inline validation, character counter, topic select, consent checkbox and a pending/sent state machine. Channel list and remote-location card alongside.",
      "categories": [
        "blocks",
        "contact"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "checkbox",
        "field",
        "input",
        "select",
        "separator",
        "textarea"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/contact-01/contact-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/contact-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/contact/contact-01"
        }
      }
    },
    {
      "name": "blog-01",
      "type": "registry:block",
      "title": "Blog 1",
      "description": "Editorial blog index with a featured post on top and a 4-column grid of post cards underneath. Built on Card and Badge.",
      "categories": [
        "blocks",
        "blog"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "separator"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/blog-01/blog-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/blog-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/blog/blog-01"
        }
      }
    },
    {
      "name": "ecommerce-01",
      "type": "registry:block",
      "title": "E-commerce 1",
      "description": "Product grid with category filter pills, sale and new badges, wishlist toggles, star ratings, compare-at pricing and per-card add buttons.",
      "categories": [
        "blocks",
        "ecommerce"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "https://hirael.com/r/rating.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/ecommerce-01/ecommerce-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/ecommerce-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/ecommerce/ecommerce-01"
        }
      }
    },
    {
      "name": "ecommerce-02",
      "type": "registry:block",
      "title": "E-commerce 2",
      "description": "Shopping cart with quantity steppers, removable line items, promo-code validation, a free-shipping threshold, live totals and an empty-cart state.",
      "categories": [
        "blocks",
        "ecommerce"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "card",
        "empty",
        "input-group",
        "separator"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/ecommerce-02/ecommerce-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/ecommerce-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/ecommerce/ecommerce-02"
        }
      }
    },
    {
      "name": "dashboard-01",
      "type": "registry:block",
      "title": "Dashboard 1",
      "description": "Operations dashboard with a Tabs date-range switcher (1d / 7d / 30d / 90d), a 4-up metric strip, a weekly bar chart and a recent-activity feed. Every metric declares which direction is good news, so falling churn reads green; each chart bucket is a focusable control, so the numbers reach the keyboard as well as the mouse.",
      "categories": [
        "blocks",
        "dashboard"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "card",
        "separator",
        "tabs",
        "tooltip"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/dashboard-01/dashboard-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/dashboard-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/dashboard/dashboard-01"
        }
      }
    },
    {
      "name": "dashboard-02",
      "type": "registry:block",
      "title": "Dashboard 2",
      "description": "Analytics dashboard with a date-range select, four sparkline KPI tiles, a layered two-series area chart and top-pages and channel-share side cards. Deltas carry their own unit (percent vs percentage points) and the direction that counts as good, and the area chart ships a screen-reader data table of the same numbers.",
      "categories": [
        "blocks",
        "dashboard"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "select",
        "separator"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/dashboard-02/dashboard-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/dashboard-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/dashboard/dashboard-02"
        }
      }
    },
    {
      "name": "dashboard-03",
      "type": "registry:block",
      "title": "Dashboard 3",
      "description": "Revenue dashboard with a month stepper, a plan-mix donut and legend, an invoice status list and a paginated transactions list. Amounts are numbers formatted through Intl, and every colour comes from a lookup keyed by plan or status, so no Tailwind class is stored in the data.",
      "categories": [
        "blocks",
        "dashboard"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "separator"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/dashboard-03/dashboard-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/dashboard-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/dashboard/dashboard-03"
        }
      }
    },
    {
      "name": "dashboard-04",
      "type": "registry:block",
      "title": "Dashboard 4",
      "description": "Commerce operations dashboard in a card-in-card style: four inset stat tiles, a Today band pairing an hourly two-series revenue chart with ad-budget and peak-hours cards, and a week-in-review band driven by a range select. The budget bar is a real progressbar, both charts ship a screen-reader data table, and each panel only shows an action when it has one.",
      "categories": [
        "blocks",
        "dashboard"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "select"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/dashboard-04/dashboard-04.tsx",
          "type": "registry:block",
          "target": "components/blocks/dashboard-04.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/dashboard/dashboard-04"
        }
      }
    },
    {
      "name": "dashboard-05",
      "type": "registry:block",
      "title": "Dashboard 5",
      "description": "Observability dashboard composed as one bordered lattice: greeting strip with range select, four sparkline KPI cells, cache and duration chart cells, an AI-insight callout, a P50/P95/P99 latency distribution measured against a stated target, and an active-deployments list. The deployment taking traffic gets --accent-cool, the reserved live tone, and its pulse respects prefers-reduced-motion.",
      "categories": [
        "blocks",
        "dashboard"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "select"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/dashboard-05/dashboard-05.tsx",
          "type": "registry:block",
          "target": "components/blocks/dashboard-05.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/dashboard/dashboard-05"
        }
      }
    },
    {
      "name": "integrations-01",
      "type": "registry:block",
      "title": "Integrations 1",
      "description": "Two-column integrations section with copy and feature list on the left, orbit diagram (central hub + 7 logo spokes connected by dashed rays) on the right.",
      "categories": [
        "blocks",
        "integrations"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/integrations-01/integrations-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/integrations-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/integrations/integrations-01"
        }
      }
    },
    {
      "name": "image-gallery-01",
      "type": "registry:block",
      "title": "Image Gallery 1",
      "description": "Studio-style masonry gallery with Tabs-driven category filter, real photo tiles via next/image, varied aspect ratios, hover zoom + arrow chip and an Empty fallback for empty filters.",
      "categories": [
        "blocks",
        "image-gallery"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "empty",
        "tabs"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/image-gallery-01/image-gallery-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/image-gallery-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/image-gallery/image-gallery-01"
        }
      }
    },
    {
      "name": "app-shell-01",
      "type": "registry:block",
      "title": "App Shell 1",
      "description": "Drop-in admin shell built on the shadcn Sidebar primitive: collapsible icon rail with nav badges and an account menu in the footer, sticky topbar with breadcrumb and a ⌘K search that really focuses, plus an accounts table that filters live and sorts by any column with aria-sort.",
      "categories": [
        "blocks",
        "app-shell"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "dropdown-menu",
        "empty",
        "input-group",
        "https://hirael.com/r/kbd.json",
        "separator",
        "sidebar",
        "table"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/app-shell-01/app-shell-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/app-shell-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/app-shell/app-shell-01"
        }
      }
    },
    {
      "name": "app-shell-02",
      "type": "registry:block",
      "title": "App Shell 2",
      "description": "Sidebar-free admin shell with a sticky top bar over a working settings screen: vertical tabs with roving keyboard focus, a header search that filters every section and counts matches per tab, and rows that actually do their thing — inline edit, copy to clipboard, or a switch — with a live save status.",
      "categories": [
        "blocks",
        "app-shell"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "https://hirael.com/r/copy-button.json",
        "dropdown-menu",
        "empty",
        "https://hirael.com/r/inline-edit.json",
        "input-group",
        "separator",
        "switch",
        "tabs"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/app-shell-02/app-shell-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/app-shell-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/app-shell/app-shell-02"
        }
      }
    },
    {
      "name": "app-shell-03",
      "type": "registry:block",
      "title": "App Shell 3",
      "description": "Split-pane inbox shell: icon rail with unread indicator, a searchable conversation listbox you can walk with the arrow keys, and a reading pane where star, archive and delete all work, with undo. Collapses to one pane on phones with a back button, and the composer sends on ⌘+Enter so Enter still makes a new line.",
      "categories": [
        "blocks",
        "app-shell"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "empty",
        "input-group",
        "separator",
        "tabs",
        "textarea",
        "tooltip"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/app-shell-03/app-shell-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/app-shell-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/app-shell/app-shell-03"
        }
      }
    },
    {
      "name": "app-shell-04",
      "type": "registry:block",
      "title": "App Shell 4",
      "description": "Starter shell on the shadcn Sidebar primitive (inset variant): a workspace switcher that switches, a ⌘K field that filters the nav, icon-collapsible items with tooltips, an inset header with an account menu and notification count, and a welcome heading over dashed placeholder slots.",
      "categories": [
        "blocks",
        "app-shell"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "dropdown-menu",
        "input-group",
        "https://hirael.com/r/kbd.json",
        "separator",
        "sidebar"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/app-shell-04/app-shell-04.tsx",
          "type": "registry:block",
          "target": "components/blocks/app-shell-04.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/app-shell/app-shell-04"
        }
      }
    },
    {
      "name": "spinner",
      "type": "registry:component",
      "title": "Spinner",
      "description": "Loading indicator with circle, dots and bars variants, sm / md / lg sizes. Inherits the current text color and ships an accessible status label.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "class-variance-authority"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/spinner.tsx",
          "type": "registry:component",
          "target": "components/spinner.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/spinner"
        }
      }
    },
    {
      "name": "copy-button",
      "type": "registry:component",
      "title": "Copy Button",
      "description": "Click-to-copy button with copied feedback, icon-only or labelled, ghost / outline variants and a non-secure-context clipboard fallback.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/copy-button.tsx",
          "type": "registry:component",
          "target": "components/copy-button.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/copy-button"
        }
      }
    },
    {
      "name": "icon-stack",
      "type": "registry:component",
      "title": "Icon Stack",
      "description": "Isometric stack of plates with an icon skewed onto the front face, for feature headers and empty states. Layer count is a prop, and the plates take their color from the surrounding text.",
      "categories": [
        "display"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/icon-stack.tsx",
          "type": "registry:component",
          "target": "components/icon-stack.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/icon-stack"
        }
      }
    },
    {
      "name": "marquee",
      "type": "registry:component",
      "title": "Marquee",
      "description": "Infinite scrolling row or column for logos and testimonials, with pause-on-hover, reverse and vertical modes. Keyframes ship inline, zero config.",
      "categories": [
        "display"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/marquee.tsx",
          "type": "registry:component",
          "target": "components/marquee.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/marquee"
        }
      }
    },
    {
      "name": "tree-view",
      "type": "registry:component",
      "title": "Tree View",
      "description": "Collapsible nested tree for file explorers and hierarchical data, with auto folder/file icons, depth indentation, selection and keyboard focus.",
      "categories": [
        "data"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "collapsible"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/tree-view.tsx",
          "type": "registry:component",
          "target": "components/tree-view.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/tree-view"
        }
      }
    },
    {
      "name": "animated-number",
      "type": "registry:component",
      "title": "Animated Number",
      "description": "Count-up number that tweens to its target with easing, Intl formatting (currency, compact, percent), prefix/suffix and reduced-motion support.",
      "categories": [
        "data"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/animated-number.tsx",
          "type": "registry:component",
          "target": "components/animated-number.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/animated-number"
        }
      }
    },
    {
      "name": "stepper",
      "type": "registry:component",
      "title": "Stepper",
      "description": "Multi-step progress indicator with horizontal and vertical orientation, completed / active / inactive states, clickable steps and a compound API.",
      "categories": [
        "navigation"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/stepper.tsx",
          "type": "registry:component",
          "target": "components/stepper.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/navigation/stepper"
        }
      }
    },
    {
      "name": "sortable",
      "type": "registry:component",
      "title": "Sortable",
      "description": "Drag-to-reorder list with pointer and keyboard sorting, handle or whole-item dragging, and live-region announcements. No dnd-kit.",
      "categories": [
        "data"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/sortable.tsx",
          "type": "registry:component",
          "target": "components/sortable.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/sortable"
        }
      }
    },
    {
      "name": "date-picker",
      "type": "registry:component",
      "title": "Date Picker",
      "description": "Single-date picker with month grid, keyboard nav, min/max bounds and disabled dates. Includes an inline DateCalendar, no date library.",
      "categories": [
        "pickers"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://hirael.com/r/calendar-utils.json",
        "popover"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/date-picker.tsx",
          "type": "registry:component",
          "target": "components/date-picker.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/pickers/date-picker"
        }
      }
    },
    {
      "name": "date-range-picker",
      "type": "registry:component",
      "title": "Date Range Picker",
      "description": "Dual-month range picker with hover preview, presets, min/max bounds and keyboard nav. Includes an inline DateRangeCalendar, no date library.",
      "categories": [
        "pickers"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://hirael.com/r/calendar-utils.json",
        "popover",
        "separator"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/date-range-picker.tsx",
          "type": "registry:component",
          "target": "components/date-range-picker.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/pickers/date-range-picker"
        }
      }
    },
    {
      "name": "mention-input",
      "type": "registry:component",
      "title": "Mention Input",
      "description": "@-mention textarea with caret-anchored autocomplete, highlighted mention chips, async search and multiple trigger characters.",
      "categories": [
        "inputs"
      ],
      "dependencies": [],
      "registryDependencies": [
        "https://hirael.com/r/spinner.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/mention-input.tsx",
          "type": "registry:component",
          "target": "components/mention-input.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/mention-input"
        }
      }
    },
    {
      "name": "rich-text-editor",
      "type": "registry:component",
      "title": "Rich Text Editor",
      "description": "Tiptap editor with a formatting toolbar (headings, lists, links, highlight, alignment) and a hover bubble to edit or unlink links inline. Outputs HTML, controlled or uncontrolled, with composable parts.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "@tiptap/core",
        "@tiptap/extension-highlight",
        "@tiptap/extension-placeholder",
        "@tiptap/extension-text-align",
        "@tiptap/pm",
        "@tiptap/react",
        "@tiptap/starter-kit",
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "input",
        "popover",
        "separator",
        "skeleton",
        "toggle",
        "tooltip"
      ],
      "docs": "Pulls in Tiptap's editor engine (seven @tiptap/* packages), so expect a heavier bundle than the other input components.",
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/rich-text-editor.tsx",
          "type": "registry:component",
          "target": "components/rich-text-editor.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/rich-text-editor"
        }
      }
    },
    {
      "name": "inline-edit",
      "type": "registry:component",
      "title": "Inline Edit",
      "description": "Click-to-edit text with preview, validation, async submit and confirm/cancel controls. Input and textarea modes.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "input",
        "https://hirael.com/r/spinner.json",
        "textarea"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/inline-edit.tsx",
          "type": "registry:component",
          "target": "components/inline-edit.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/inline-edit"
        }
      }
    },
    {
      "name": "signature-pad",
      "type": "registry:component",
      "title": "Signature Pad",
      "description": "Canvas signature capture with velocity-based ink, per-stroke undo, theme-aware re-inking and PNG/JPEG export via ref.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/signature-pad.tsx",
          "type": "registry:component",
          "target": "components/signature-pad.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/signature-pad"
        }
      }
    },
    {
      "name": "image-cropper",
      "type": "registry:component",
      "title": "Image Cropper",
      "description": "Pan-and-zoom image cropper with rect or round mask, fixed aspect frame, pinch / wheel / keyboard control and canvas export via ref.",
      "categories": [
        "files"
      ],
      "dependencies": [],
      "registryDependencies": [
        "slider"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/image-cropper.tsx",
          "type": "registry:component",
          "target": "components/image-cropper.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/files/image-cropper"
        }
      }
    },
    {
      "name": "image-compare",
      "type": "registry:component",
      "title": "Image Compare",
      "description": "Before/after comparison slider with a draggable, keyboard-accessible divider, horizontal or vertical orientation and hover-follow mode.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/image-compare.tsx",
          "type": "registry:component",
          "target": "components/image-compare.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/image-compare"
        }
      }
    },
    {
      "name": "lightbox",
      "type": "registry:component",
      "title": "Lightbox",
      "description": "Fullscreen image lightbox on Radix Dialog with gallery navigation, zoom and pan, swipe gestures, captions and a thumbnail strip.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "@radix-ui/react-dialog",
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/lightbox.tsx",
          "type": "registry:component",
          "target": "components/lightbox.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/lightbox"
        }
      }
    },
    {
      "name": "countdown-timer",
      "type": "registry:component",
      "title": "Countdown Timer",
      "description": "Count-down-to-date timer with boxed / inline / minimal variants, a useCountdown hook, digit animation and completion content.",
      "categories": [
        "data"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/countdown-timer.tsx",
          "type": "registry:component",
          "target": "components/countdown-timer.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/countdown-timer"
        }
      }
    },
    {
      "name": "qr-code",
      "type": "registry:component",
      "title": "QR Code",
      "description": "Dependency-free QR code generator rendering crisp SVG, with L/M/Q/H error correction, quiet-zone control and currentColor theming.",
      "categories": [
        "display"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/qr-code.tsx",
          "type": "registry:component",
          "target": "components/qr-code.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/qr-code"
        }
      }
    },
    {
      "name": "calendar-heatmap",
      "type": "registry:component",
      "title": "Calendar Heatmap",
      "description": "GitHub-style contribution heatmap with month and weekday labels, tooltips, configurable intensity scale and a legend.",
      "categories": [
        "data"
      ],
      "dependencies": [],
      "registryDependencies": [
        "tooltip"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/calendar-heatmap.tsx",
          "type": "registry:component",
          "target": "components/calendar-heatmap.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/calendar-heatmap"
        }
      }
    },
    {
      "name": "code-block",
      "type": "registry:component",
      "title": "Code Block",
      "description": "Code display with built-in dependency-free syntax highlighting via theme tokens, line numbers, line highlights, diff gutters, copy button and collapsible max-height.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "https://hirael.com/r/copy-button.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/code-block.tsx",
          "type": "registry:component",
          "target": "components/code-block.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/code-block"
        }
      }
    },
    {
      "name": "masonry",
      "type": "registry:component",
      "title": "Masonry",
      "description": "True masonry layout that balances children into the shortest column by measured height, order-preserving, responsive, dependency-free.",
      "categories": [
        "display"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/masonry.tsx",
          "type": "registry:component",
          "target": "components/masonry.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/masonry"
        }
      }
    },
    {
      "name": "audio-player",
      "type": "registry:component",
      "title": "Audio Player",
      "description": "Composable audio player with play/pause, scrub-safe seek with buffered tint, skip, time readouts, volume and playback rate.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "slider"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/audio-player.tsx",
          "type": "registry:component",
          "target": "components/audio-player.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/audio-player"
        }
      }
    },
    {
      "name": "media-input",
      "type": "registry:component",
      "title": "Media Input",
      "description": "Local media file picker that previews via an object URL; empty-state prompt, replace and clear, size validation. Nothing leaves the browser.",
      "categories": [
        "files"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/media-input.tsx",
          "type": "registry:component",
          "target": "components/media-input.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/files/media-input"
        }
      }
    },
    {
      "name": "tour",
      "type": "registry:component",
      "title": "Tour",
      "description": "Onboarding spotlight that dims the page around a target element and walks users through steps with a positioned coach-mark card.",
      "categories": [
        "navigation"
      ],
      "dependencies": [],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/tour.tsx",
          "type": "registry:component",
          "target": "components/tour.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/navigation/tour"
        }
      }
    },
    {
      "name": "activity-feed",
      "type": "registry:block",
      "title": "Activity Feed",
      "description": "Avatar-led event feed with a connecting rail, actor and action lines, timestamps, quoted bodies and date dividers. Ships composable parts.",
      "categories": [
        "blocks",
        "widgets"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/activity-feed/activity-feed.tsx",
          "type": "registry:block",
          "target": "components/blocks/activity-feed.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/widgets/activity-feed"
        }
      }
    },
    {
      "name": "audit-log",
      "type": "registry:block",
      "title": "Audit Log",
      "description": "Compliance-style event log with expandable rows that reveal actor, action, status and request metadata. Composable disclosure parts.",
      "categories": [
        "blocks",
        "saas"
      ],
      "dependencies": [
        "class-variance-authority",
        "lucide-react"
      ],
      "registryDependencies": [
        "collapsible"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/audit-log/audit-log.tsx",
          "type": "registry:block",
          "target": "components/blocks/audit-log.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/saas/audit-log"
        }
      }
    },
    {
      "name": "blur-reveal",
      "type": "registry:component",
      "title": "Blur Reveal",
      "description": "Reveals content with a blur, fade and lift as it scrolls into view. Configurable delay, duration and threshold; respects reduced-motion.",
      "categories": [
        "animation"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/blur-reveal.tsx",
          "type": "registry:component",
          "target": "components/blur-reveal.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/animation/blur-reveal"
        }
      }
    },
    {
      "name": "text-reveal",
      "type": "registry:component",
      "title": "Text Reveal",
      "description": "Staggered text entrance that masks and slides each word, character or line into place on scroll. Respects reduced-motion.",
      "categories": [
        "animation"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/text-reveal.tsx",
          "type": "registry:component",
          "target": "components/text-reveal.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/animation/text-reveal"
        }
      }
    },
    {
      "name": "scroll-reveal",
      "type": "registry:component",
      "title": "Scroll Reveal",
      "description": "Fades and slides content in from any direction as it enters the viewport. Configurable distance, delay and replay; respects reduced-motion.",
      "categories": [
        "animation"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/scroll-reveal.tsx",
          "type": "registry:component",
          "target": "components/scroll-reveal.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/animation/scroll-reveal"
        }
      }
    },
    {
      "name": "spotlight-card",
      "type": "registry:component",
      "title": "Spotlight Card",
      "description": "Card surface with a soft spotlight that tracks the cursor and fades in on hover. Built on design tokens, no hard-coded colors.",
      "categories": [
        "animation"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/spotlight-card.tsx",
          "type": "registry:component",
          "target": "components/spotlight-card.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/animation/spotlight-card"
        }
      }
    },
    {
      "name": "magnetic-button",
      "type": "registry:component",
      "title": "Magnetic Button",
      "description": "Button that pulls toward the cursor and springs back on leave. Adjustable strength, asChild to wrap a link, respects reduced-motion.",
      "categories": [
        "animation"
      ],
      "dependencies": [
        "@radix-ui/react-slot",
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/magnetic-button.tsx",
          "type": "registry:component",
          "target": "components/magnetic-button.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/animation/magnetic-button"
        }
      }
    },
    {
      "name": "cursor-glow",
      "type": "registry:component",
      "title": "Cursor Glow",
      "description": "Ambient glow layer that follows the pointer across its container and fades when it leaves. Drop it behind heroes, grids or feature panels.",
      "categories": [
        "animation"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/cursor-glow.tsx",
          "type": "registry:component",
          "target": "components/cursor-glow.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/animation/cursor-glow"
        }
      }
    },
    {
      "name": "sparkles",
      "type": "registry:component",
      "title": "Sparkles",
      "description": "Canvas particle field that drifts and twinkles behind any container. Density scales with size, colors resolve from tokens, and it pauses offscreen and under reduced-motion. No dependencies.",
      "categories": [
        "animation"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/sparkles.tsx",
          "type": "registry:component",
          "target": "components/sparkles.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/animation/sparkles"
        }
      }
    },
    {
      "name": "tilt-card",
      "type": "registry:component",
      "title": "Tilt Card",
      "description": "3D pointer tilt with optional cursor-following glare and configurable max angle, scale and perspective. Respects reduced-motion.",
      "categories": [
        "animation"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/tilt-card.tsx",
          "type": "registry:component",
          "target": "components/tilt-card.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/animation/tilt-card"
        }
      }
    },
    {
      "name": "morphing-dialog",
      "type": "registry:component",
      "title": "Morphing Dialog",
      "description": "A trigger card that morphs into a centered dialog via shared-layout animation, with focus trapping, scroll lock, Esc to close and reduced-motion support.",
      "categories": [
        "animation"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/morphing-dialog.tsx",
          "type": "registry:component",
          "target": "components/morphing-dialog.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/animation/morphing-dialog"
        }
      }
    },
    {
      "name": "dock",
      "type": "registry:component",
      "title": "Dock",
      "description": "macOS-style dock with cursor magnification: icons scale and spring as the pointer passes, with hover and focus labels. Built on motion.",
      "categories": [
        "navigation"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/dock.tsx",
          "type": "registry:component",
          "target": "components/dock.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/navigation/dock"
        }
      }
    },
    {
      "name": "floating-action-button",
      "type": "registry:component",
      "title": "Floating Action Button",
      "description": "Expanding speed-dial FAB: a primary trigger that rotates open to stagger a stack of secondary actions on any side. Compound API.",
      "categories": [
        "navigation"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/floating-action-button.tsx",
          "type": "registry:component",
          "target": "components/floating-action-button.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/navigation/floating-action-button"
        }
      }
    },
    {
      "name": "floating-toolbar",
      "type": "registry:component",
      "title": "Floating Toolbar",
      "description": "Floating pill toolbar for text selection and canvas actions, with toggle buttons, separators and labels. Position it anywhere.",
      "categories": [
        "navigation"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/floating-toolbar.tsx",
          "type": "registry:component",
          "target": "components/floating-toolbar.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/navigation/floating-toolbar"
        }
      }
    },
    {
      "name": "split-view",
      "type": "registry:component",
      "title": "Split View",
      "description": "Two-pane master/detail layout with a draggable divider, keyboard resize, min/max bounds and horizontal or vertical orientation. RTL-aware.",
      "categories": [
        "navigation"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/split-view.tsx",
          "type": "registry:component",
          "target": "components/split-view.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/navigation/split-view"
        }
      }
    },
    {
      "name": "resizable-panels",
      "type": "registry:component",
      "title": "Resizable Panels",
      "description": "Composable resizable panel groups with draggable, keyboard-accessible handles, per-panel minimums and nestable horizontal or vertical groups. RTL-aware.",
      "categories": [
        "navigation"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/resizable-panels.tsx",
          "type": "registry:component",
          "target": "components/resizable-panels.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/navigation/resizable-panels"
        }
      }
    },
    {
      "name": "inspector-panel",
      "type": "registry:block",
      "title": "Inspector Panel",
      "description": "Design-tool inspector with a header, collapsible sections and label/control rows. Composable parts for property panels and sidebars.",
      "categories": [
        "blocks",
        "widgets"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "collapsible"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/inspector-panel/inspector-panel.tsx",
          "type": "registry:block",
          "target": "components/blocks/inspector-panel.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/widgets/inspector-panel"
        }
      }
    },
    {
      "name": "tenant-switcher",
      "type": "registry:block",
      "title": "Tenant Switcher",
      "description": "Workspace, organization or project switcher for multi-tenant apps. Logo or initials, plan or role caption, grouped and searchable list, and a create action. Ships composable parts.",
      "categories": [
        "blocks",
        "widgets"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "command",
        "popover"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/tenant-switcher/tenant-switcher.tsx",
          "type": "registry:block",
          "target": "components/blocks/tenant-switcher.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/widgets/tenant-switcher"
        }
      }
    },
    {
      "name": "kpi-grid",
      "type": "registry:block",
      "title": "KPI Grid",
      "description": "Hairline-joined grid of KPI tiles with label, value, an up/down/flat delta chip and a dependency-free sparkline. Ships composable parts.",
      "categories": [
        "blocks",
        "widgets"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/kpi-grid/kpi-grid.tsx",
          "type": "registry:block",
          "target": "components/blocks/kpi-grid.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/widgets/kpi-grid"
        }
      }
    },
    {
      "name": "quick-actions",
      "type": "registry:block",
      "title": "Quick Actions",
      "description": "Grid of dashboard shortcut tiles with icon, label and description. Each tile is a button or, via asChild, a link. Ships composable parts.",
      "categories": [
        "blocks",
        "widgets"
      ],
      "dependencies": [
        "@radix-ui/react-slot",
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/quick-actions/quick-actions.tsx",
          "type": "registry:block",
          "target": "components/blocks/quick-actions.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/widgets/quick-actions"
        }
      }
    },
    {
      "name": "notifications",
      "type": "registry:block",
      "title": "Notifications",
      "description": "Notification panel with header, list, per-item media, title, description, time and an accent-cool unread marker. Ships composable parts.",
      "categories": [
        "blocks",
        "widgets"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/notifications/notifications.tsx",
          "type": "registry:block",
          "target": "components/blocks/notifications.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/widgets/notifications"
        }
      }
    },
    {
      "name": "billing-card",
      "type": "registry:block",
      "title": "Billing Card",
      "description": "Current-plan summary with price, a usage meter, billing detail rows and footer actions. Composable parts for billing settings.",
      "categories": [
        "blocks",
        "saas"
      ],
      "dependencies": [],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/billing-card/billing-card.tsx",
          "type": "registry:block",
          "target": "components/blocks/billing-card.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/saas/billing-card"
        }
      }
    },
    {
      "name": "subscription-plans",
      "type": "registry:block",
      "title": "Subscription Plans",
      "description": "In-app plan selector with featured and current states, a badge, feature checklist and per-plan action. Ships composable parts.",
      "categories": [
        "blocks",
        "saas"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/subscription-plans/subscription-plans.tsx",
          "type": "registry:block",
          "target": "components/blocks/subscription-plans.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/saas/subscription-plans"
        }
      }
    },
    {
      "name": "api-keys",
      "type": "registry:block",
      "title": "API Keys",
      "description": "API key manager with reveal/hide, copy-to-clipboard, key metadata and a create action. Ships composable parts.",
      "categories": [
        "blocks",
        "saas"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/api-keys/api-keys.tsx",
          "type": "registry:block",
          "target": "components/blocks/api-keys.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/saas/api-keys"
        }
      }
    },
    {
      "name": "usage-dashboard",
      "type": "registry:block",
      "title": "Usage Dashboard",
      "description": "Metered usage panel with per-resource progress bars that tint amber near the limit and red over it. Ships composable parts.",
      "categories": [
        "blocks",
        "saas"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/usage-dashboard/usage-dashboard.tsx",
          "type": "registry:block",
          "target": "components/blocks/usage-dashboard.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/saas/usage-dashboard"
        }
      }
    },
    {
      "name": "creative-studio",
      "type": "registry:block",
      "title": "Creative Studio",
      "description": "Dark, cinematic creative-studio landing page: a full-viewport hero with an animated backdrop and pull-up wordmark, a scroll-revealed about section, and a staggered feature-card grid. Framer Motion throughout, with a self-contained warm-cream palette.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/creative-studio/creative-studio.tsx",
          "type": "registry:block",
          "target": "components/templates/creative-studio/creative-studio.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/creative-studio/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/creative-studio/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/creative-studio/about.tsx",
          "type": "registry:block",
          "target": "components/templates/creative-studio/about.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/creative-studio/features.tsx",
          "type": "registry:block",
          "target": "components/templates/creative-studio/features.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/creative-studio/footer.tsx",
          "type": "registry:block",
          "target": "components/templates/creative-studio/footer.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/creative-studio/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/creative-studio/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/creative-studio/fonts.ts",
          "type": "registry:block",
          "target": "components/templates/creative-studio/fonts.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/creative-studio"
        }
      }
    },
    {
      "name": "agency-landing",
      "type": "registry:block",
      "title": "Agency Landing",
      "description": "Bright, shader-lit agency landing page: a full-viewport hero with an animated WebGL backdrop and pill navigation, an editorial about section, a featured-work grid of autoplaying video cards, and a dark closing footer with a call to action. Built on the shaders package, with a self-contained light palette.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "lucide-react",
        "shaders"
      ],
      "registryDependencies": [
        "badge",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/agency-landing/agency-landing.tsx",
          "type": "registry:block",
          "target": "components/templates/agency-landing/agency-landing.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/agency-landing/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/agency-landing/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/agency-landing/about.tsx",
          "type": "registry:block",
          "target": "components/templates/agency-landing/about.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/agency-landing/case-studies.tsx",
          "type": "registry:block",
          "target": "components/templates/agency-landing/case-studies.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/agency-landing/footer.tsx",
          "type": "registry:block",
          "target": "components/templates/agency-landing/footer.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/agency-landing/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/agency-landing/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/agency-landing/shader-background.tsx",
          "type": "registry:block",
          "target": "components/templates/agency-landing/shader-background.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/agency-landing"
        }
      }
    },
    {
      "name": "mindloop",
      "type": "registry:block",
      "title": "Mindloop",
      "description": "Dark, monochrome newsletter landing page: a full-screen video hero with an inline subscribe form, an answer-engine section, scroll-revealed mission copy, a four-up feature grid and a streaming-video call to action. Framer Motion throughout, with a self-contained pure-black palette and liquid-glass accents.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button",
        "field"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/mindloop.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/mindloop.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/navbar.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/navbar.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/search.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/search.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/mission.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/mission.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/solution.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/solution.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/cta.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/cta.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/footer.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/footer.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/styles.tsx",
          "type": "registry:block",
          "target": "components/templates/mindloop/styles.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/mindloop/fonts.ts",
          "type": "registry:block",
          "target": "components/templates/mindloop/fonts.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/mindloop"
        }
      }
    },
    {
      "name": "portfolio",
      "type": "registry:block",
      "title": "Portfolio",
      "description": "Dark, single-page personal portfolio: a counter loading screen, an HLS video hero with a floating nav and a cycling role line, a bento work grid, a journal list, a scroll-pinned parallax gallery with lightbox, count-up stats and a video contact footer. Self-contained dark palette, driven by GSAP and Framer Motion.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "gsap",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/portfolio.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/portfolio.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/loading-screen.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/loading-screen.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/selected-works.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/selected-works.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/journal.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/journal.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/explorations.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/explorations.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/stats.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/stats.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/contact.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/contact.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/background-video.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/background-video.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/portfolio/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/fonts.ts",
          "type": "registry:block",
          "target": "components/templates/portfolio/fonts.ts"
        },
        {
          "path": "registry/hirael/bases/radix/templates/portfolio/styles.ts",
          "type": "registry:block",
          "target": "components/templates/portfolio/styles.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/portfolio"
        }
      }
    },
    {
      "name": "usd-halo",
      "type": "registry:block",
      "title": "USD Halo",
      "description": "Premium fintech landing page for a stablecoin: a full-bleed video hero with a custom halo wordmark and an infinite brand marquee, a meet-the-product card grid, a backers marquee, and a use-modes split with an autoplaying video panel, closing on a dark anchor footer. Self-contained light palette.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/usd-halo/usd-halo.tsx",
          "type": "registry:block",
          "target": "components/templates/usd-halo/usd-halo.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/usd-halo/navbar.tsx",
          "type": "registry:block",
          "target": "components/templates/usd-halo/navbar.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/usd-halo/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/usd-halo/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/usd-halo/info.tsx",
          "type": "registry:block",
          "target": "components/templates/usd-halo/info.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/usd-halo/backed-by.tsx",
          "type": "registry:block",
          "target": "components/templates/usd-halo/backed-by.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/usd-halo/use-cases.tsx",
          "type": "registry:block",
          "target": "components/templates/usd-halo/use-cases.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/usd-halo/footer.tsx",
          "type": "registry:block",
          "target": "components/templates/usd-halo/footer.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/usd-halo/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/usd-halo/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/usd-halo/fonts.ts",
          "type": "registry:block",
          "target": "components/templates/usd-halo/fonts.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/usd-halo"
        }
      }
    },
    {
      "name": "rivr",
      "type": "registry:block",
      "title": "Rivr",
      "description": "DeFi staking landing page for a fluid-asset protocol: a video hero on a rounded card with glass stat cards and a carved documentation corner, a metrics band, a bento feature grid, a video call to action and a light footer. Self-contained light palette, Helvetica system type, Framer Motion throughout.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/rivr/rivr.tsx",
          "type": "registry:block",
          "target": "components/templates/rivr/rivr.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/rivr/navbar.tsx",
          "type": "registry:block",
          "target": "components/templates/rivr/navbar.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/rivr/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/rivr/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/rivr/metrics.tsx",
          "type": "registry:block",
          "target": "components/templates/rivr/metrics.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/rivr/features.tsx",
          "type": "registry:block",
          "target": "components/templates/rivr/features.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/rivr/cta.tsx",
          "type": "registry:block",
          "target": "components/templates/rivr/cta.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/rivr/footer.tsx",
          "type": "registry:block",
          "target": "components/templates/rivr/footer.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/rivr/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/rivr/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/rivr/styles.tsx",
          "type": "registry:block",
          "target": "components/templates/rivr/styles.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/rivr"
        }
      }
    },
    {
      "name": "velorah",
      "type": "registry:block",
      "title": "Velorah",
      "description": "Dark, premium landing page for an electric RV brand: a full-screen video hero with liquid-glass navigation, a centered tagline, a split feature card with switchable tabs, an HLS streaming statement with a stats row, a video preorder call to action and a multi-column footer. Self-contained pure-black palette, Inter + Instrument Serif type.",
      "categories": [
        "templates"
      ],
      "dependencies": [],
      "registryDependencies": [
        "button",
        "toggle-group"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/velorah/velorah.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/velorah.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/navbar.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/navbar.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/tagline.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/tagline.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/feature.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/feature.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/statement.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/statement.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/cta.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/cta.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/footer.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/footer.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/styles.tsx",
          "type": "registry:block",
          "target": "components/templates/velorah/styles.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/velorah/fonts.ts",
          "type": "registry:block",
          "target": "components/templates/velorah/fonts.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/velorah"
        }
      }
    },
    {
      "name": "asme",
      "type": "registry:block",
      "title": "Asme",
      "description": "Dark, liquid-glass marketing landing page: a full-viewport hero with a cross-fading background video, a frosted glass pill nav and an inline email form, then scroll-revealed about, featured-video, philosophy and services sections, closing on a multi-column footer. Framer Motion throughout, with a self-contained pure-black palette and Instrument Serif accents.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "field"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/asme/asme.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/asme.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/navbar.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/navbar.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/about.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/about.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/featured-video.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/featured-video.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/philosophy.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/philosophy.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/services.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/services.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/footer.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/footer.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/styles.tsx",
          "type": "registry:block",
          "target": "components/templates/asme/styles.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/asme/fonts.ts",
          "type": "registry:block",
          "target": "components/templates/asme/fonts.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/asme"
        }
      }
    },
    {
      "name": "nexacore",
      "type": "registry:block",
      "title": "NexaCore",
      "description": "Light enterprise-infrastructure landing page: a floating pill navbar that shrinks on scroll, a full-screen video hero, a dark service-card grid that unfolds on hover, a chaos-versus-control split around a circular streaming video, and a four-pillar delivery staircase. Self-contained navy-and-lavender palette with multi-stop brand gradients, driven by lucide-react.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/nexacore.tsx",
          "type": "registry:block",
          "target": "components/templates/nexacore/nexacore.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/navbar.tsx",
          "type": "registry:block",
          "target": "components/templates/nexacore/navbar.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/nexacore/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/trusted.tsx",
          "type": "registry:block",
          "target": "components/templates/nexacore/trusted.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/service-card.tsx",
          "type": "registry:block",
          "target": "components/templates/nexacore/service-card.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/freedom.tsx",
          "type": "registry:block",
          "target": "components/templates/nexacore/freedom.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/precision.tsx",
          "type": "registry:block",
          "target": "components/templates/nexacore/precision.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/nexacore/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/styles.tsx",
          "type": "registry:block",
          "target": "components/templates/nexacore/styles.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/nexacore/fonts.ts",
          "type": "registry:block",
          "target": "components/templates/nexacore/fonts.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/nexacore"
        }
      }
    },
    {
      "name": "aurael",
      "type": "registry:block",
      "title": "Aurael",
      "description": "Bilingual (EN/AR) landing page for a home-solar brand, built around a day/night control that re-themes the whole page: a full-height photographic hero that cross-fades between morning and night, then hairline-ruled bands with a sticky meta rail for how it works, cases, about, careers, resources and customers. Self-contained morning/night palettes, Inter + Manrope with Cairo for Arabic, and RTL that follows the surrounding document.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/aurael/aurael.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/aurael.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/how-it-works.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/how-it-works.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/cases.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/cases.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/about.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/about.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/careers.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/careers.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/resources.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/resources.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/customers.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/customers.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/footer.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/footer.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/styles.tsx",
          "type": "registry:block",
          "target": "components/templates/aurael/styles.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/aurael/fonts.ts",
          "type": "registry:block",
          "target": "components/templates/aurael/fonts.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/aurael"
        }
      }
    },
    {
      "name": "novael",
      "type": "registry:block",
      "title": "Novael",
      "description": "Bilingual (EN/AR) landing page for a technology services firm: a fixed scroll-spy navbar over a headline that sits on a photographic band, an overlapping intro card and count-up stats, a marquee of past employers, a teal service slab, a project grid whose captions expand on hover, and a contact section that doubles as the footer. Self-contained dark palette, Inter + Manrope with Cairo for Arabic, and RTL that follows the surrounding document.",
      "categories": [
        "templates"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://hirael.com/r/marquee.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/templates/novael/novael.tsx",
          "type": "registry:block",
          "target": "components/templates/novael/novael.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/novael/navbar.tsx",
          "type": "registry:block",
          "target": "components/templates/novael/navbar.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/novael/hero.tsx",
          "type": "registry:block",
          "target": "components/templates/novael/hero.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/novael/team.tsx",
          "type": "registry:block",
          "target": "components/templates/novael/team.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/novael/services.tsx",
          "type": "registry:block",
          "target": "components/templates/novael/services.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/novael/works.tsx",
          "type": "registry:block",
          "target": "components/templates/novael/works.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/novael/contact.tsx",
          "type": "registry:block",
          "target": "components/templates/novael/contact.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/novael/primitives.tsx",
          "type": "registry:block",
          "target": "components/templates/novael/primitives.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/novael/styles.tsx",
          "type": "registry:block",
          "target": "components/templates/novael/styles.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/templates/novael/fonts.ts",
          "type": "registry:block",
          "target": "components/templates/novael/fonts.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/templates/novael"
        }
      }
    },
    {
      "name": "hero-06",
      "type": "registry:block",
      "title": "Hero 6",
      "description": "Centered personal hero: a live \"available for work\" badge, a serif headline with a primary-tinted emphasis span, a sub-line, a three-stat row with hairline dividers, dual rounded CTAs, and a tooltip-backed core-stack icon row framed by gradient rules. Rotated geometric border accents fade in behind it (and stay still under reduced motion).",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "tooltip"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-06/hero-06.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-06.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-06"
        }
      }
    },
    {
      "name": "hero-07",
      "type": "registry:block",
      "title": "Hero 7",
      "description": "Centered hero with a word-by-word blur-in serif headline, a glass beta badge with a live dot, dual rounded CTAs, and animated beam line-art SVGs that trace the top, bottom, and both sides of the section. Respects reduced-motion.",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-07/hero-07.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-07.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-07"
        }
      }
    },
    {
      "name": "hero-08",
      "type": "registry:block",
      "title": "Hero 8",
      "description": "Centered hero on a framed, token-lit panel: a pill badge eyebrow, a serif headline with an italic emphasis span, sub-copy, dual CTA buttons, and a faux app-window preview below. Headline, sub-copy, and CTAs fade and rise in with staggered motion that respects reduced-motion.",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-08/hero-08.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-08.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-08"
        }
      }
    },
    {
      "name": "testimonial-03",
      "type": "registry:block",
      "title": "Testimonial 3",
      "description": "Centered statement quote with a serif display heading, an inline quote glyph in the corner, gradient hairline dividers, and a highlighted phrase, closed by a small mono attribution line.",
      "categories": [
        "blocks",
        "testimonial"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/testimonial-03/testimonial-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/testimonial-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/testimonials/testimonial-03"
        }
      }
    },
    {
      "name": "testimonial-04",
      "type": "registry:block",
      "title": "Testimonial 4",
      "description": "Three-column quote grid under a centered pill badge and word-by-word headline. Each card opens with a quote icon inside a ring lit by an orbiting glow, then the quote in serif marks and an author line. Cards rise in with staggered motion.",
      "categories": [
        "blocks",
        "testimonial"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "badge"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/testimonial-04/testimonial-04.tsx",
          "type": "registry:block",
          "target": "components/blocks/testimonial-04.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/testimonials/testimonial-04"
        }
      }
    },
    {
      "name": "cta-04",
      "type": "registry:block",
      "title": "CTA 4",
      "description": "Centered \"get in touch\" CTA with a mono eyebrow, serif headline, mail button, a direct-contact line, and a row of outline social icon buttons, capped by a soft radial glow dome with a starfield speckle.",
      "categories": [
        "blocks",
        "cta"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/cta-04/cta-04.tsx",
          "type": "registry:block",
          "target": "components/blocks/cta-04.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cta/cta-04"
        }
      }
    },
    {
      "name": "cta-05",
      "type": "registry:block",
      "title": "CTA 5",
      "description": "Contact CTA panel with a scroll-reactive radial glow, an eyebrow badge, a word-by-word reveal headline, and two contact actions (email and call) each pairing a button with its detail line.",
      "categories": [
        "blocks",
        "cta"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/cta-05/cta-05.tsx",
          "type": "registry:block",
          "target": "components/blocks/cta-05.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cta/cta-05"
        }
      }
    },
    {
      "name": "cta-06",
      "type": "registry:block",
      "title": "CTA 6",
      "description": "Framed CTA banner over a tokenized gradient surface: an eyebrow label, a serif headline with an italic emphasis, short sub-copy, and a primary action button with a motion reveal.",
      "categories": [
        "blocks",
        "cta"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/cta-06/cta-06.tsx",
          "type": "registry:block",
          "target": "components/blocks/cta-06.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cta/cta-06"
        }
      }
    },
    {
      "name": "footer-02",
      "type": "registry:block",
      "title": "Footer 2",
      "description": "Rounded-top footer with a brand block beside a multi-column link grid. Each column caps at five links and shows a \"View all\" arrow when there are more. A soft radial tint sits behind the top edge, and a bottom meta row carries the copyright and secondary links.",
      "categories": [
        "blocks",
        "footer"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/footer-02/footer-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/footer-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/footer/footer-02"
        }
      }
    },
    {
      "name": "footer-03",
      "type": "registry:block",
      "title": "Footer 3",
      "description": "Boxed link-column footer: a two-column brand block with wordmark, blurb, and ghost social buttons, two link columns, and a divided copyright row. Sits in a soft outlined panel.",
      "categories": [
        "blocks",
        "footer"
      ],
      "dependencies": [],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/footer-03/footer-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/footer-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/footer/footer-03"
        }
      }
    },
    {
      "name": "footer-04",
      "type": "registry:block",
      "title": "Footer 4",
      "description": "Four-column footer lit by slow light rays falling from the top edge: brand mark and blurb, a contact column with WhatsApp and email links, a location column, and a subscribe form whose placeholder cycles through prompts. Columns and links rise in with staggered motion; a divided copyright row closes it. Rays hold still under reduced-motion.",
      "categories": [
        "blocks",
        "footer"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button",
        "input",
        "separator"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/footer-04/footer-04.tsx",
          "type": "registry:block",
          "target": "components/blocks/footer-04.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/blocks/footer-04/footer-04-beams.tsx",
          "type": "registry:block",
          "target": "components/blocks/footer-04-beams.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/footer/footer-04"
        }
      }
    },
    {
      "name": "faq-05",
      "type": "registry:block",
      "title": "FAQ 5",
      "description": "Two-column FAQ block: a mono eyebrow, serif headline and short intro sit on the start side; a single-open accordion of five questions sits on the end side, split by a vertical divider that collapses to a stacked layout on mobile.",
      "categories": [
        "blocks",
        "faq"
      ],
      "dependencies": [],
      "registryDependencies": [
        "https://hirael.com/r/accordion.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/faq-05/faq-05.tsx",
          "type": "registry:block",
          "target": "components/blocks/faq-05.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/faqs/faq-05"
        }
      }
    },
    {
      "name": "faq-06",
      "type": "registry:block",
      "title": "FAQ 6",
      "description": "Centered FAQ with a pill badge, a word-by-word headline reveal and a short intro above a multi-open accordion where each question is its own bordered card that rises in with a staggered delay and tints slightly when open. Ships composable parts.",
      "categories": [
        "blocks",
        "faq"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "https://hirael.com/r/accordion.json",
        "badge"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/faq-06/faq-06.tsx",
          "type": "registry:block",
          "target": "components/blocks/faq-06.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/faqs/faq-06"
        }
      }
    },
    {
      "name": "contact-02",
      "type": "registry:block",
      "title": "Contact 2",
      "description": "Bordered contact section with a serif header, a three-column info grid (email, location, social) using muted-fill labels and divider rules, and a \"Find us online\" footer of pill-shaped social links.",
      "categories": [
        "blocks",
        "contact"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "separator"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/contact-02/contact-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/contact-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/contact/contact-02"
        }
      }
    },
    {
      "name": "contact-03",
      "type": "registry:block",
      "title": "Contact 3",
      "description": "Centered contact panel whose bottom glow widens as the section scrolls into view, with a pill badge, a word-by-word headline reveal, two short paragraphs, and a two-column CTA grid: an email button with the address beneath it and an outline call button that opens a WhatsApp chat. Ships composable parts.",
      "categories": [
        "blocks",
        "contact"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/contact-03/contact-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/contact-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/contact/contact-03"
        }
      }
    },
    {
      "name": "login-03",
      "type": "registry:block",
      "title": "Login 3",
      "description": "Split-screen sign-in: a decorative animated-paths aside with a brand mark and a short quote, paired with a clean GitHub-only sign-in pane. A back-to-home link, mobile-collapsing layout, and token-based radial glows behind the form.",
      "categories": [
        "blocks",
        "login"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/login-03/login-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/login-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/auth/login-03"
        }
      }
    },
    {
      "name": "toc",
      "type": "registry:component",
      "title": "Table of Contents",
      "description": "On-this-page navigation that tracks the active heading as you scroll and highlights it with a moving border marker. Takes a flat or nested items list, or composes from parts. Smooth scroll respects reduced-motion.",
      "categories": [
        "navigation"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/toc.tsx",
          "type": "registry:component",
          "target": "components/toc.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/navigation/toc"
        }
      }
    },
    {
      "name": "app-shell-05",
      "type": "registry:block",
      "title": "App Shell 5",
      "description": "Inset sidebar app shell: a collapsible icon sidebar with a brand header, grouped Workspace and Tools nav (with a Beta badge), and an account menu in the footer, paired with a sticky header carrying the sidebar toggle and a breadcrumb. The inset holds a stat row and a placeholder for page content.",
      "categories": [
        "blocks",
        "app-shell"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "avatar",
        "badge",
        "breadcrumb",
        "dropdown-menu",
        "separator",
        "sidebar"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/app-shell-05/app-shell-05.tsx",
          "type": "registry:block",
          "target": "components/blocks/app-shell-05.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/app-shell/app-shell-05"
        }
      }
    },
    {
      "name": "dashboard-06",
      "type": "registry:block",
      "title": "Dashboard 6",
      "description": "Pipeline overview dashboard: four stat cards for success, failure, skipped, and live activity, a clickable latest-runs bar chart with a run breakdown panel, and a recent-runs list. The active-now stat uses --accent-cool for live state; every other color is a design token, so it works in light and dark.",
      "categories": [
        "blocks",
        "dashboard"
      ],
      "dependencies": [
        "lucide-react",
        "recharts"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "card",
        "chart",
        "empty"
      ],
      "docs": "Charts run on recharts via the shadcn chart primitive. Give ChartContainer's parent an explicit height, and update chartConfig's keys when you swap in real data.",
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/dashboard-06/dashboard-06.tsx",
          "type": "registry:block",
          "target": "components/blocks/dashboard-06.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/dashboard/dashboard-06"
        }
      }
    },
    {
      "name": "confirm",
      "type": "registry:component",
      "title": "Confirm",
      "description": "Imperative confirmation dialog: a root provider plus a useConfirm hook that resolves a promise on confirm or cancel. Default or destructive tone, an optional icon, and an async confirm action with a pending spinner.",
      "categories": [
        "display"
      ],
      "dependencies": [],
      "registryDependencies": [
        "alert-dialog",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/confirm.tsx",
          "type": "registry:component",
          "target": "components/confirm.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/confirm"
        }
      }
    },
    {
      "name": "unsaved-guard",
      "type": "registry:component",
      "title": "Unsaved Guard",
      "description": "Unsaved-changes guard: a root provider plus a useUnsavedGuard hook. Warns before reload, tab close and in-app link navigation, and returns a guard(proceed) to wrap programmatic navigation in a confirm dialog.",
      "categories": [
        "display"
      ],
      "dependencies": [],
      "registryDependencies": [
        "https://hirael.com/r/confirm.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/unsaved-guard.tsx",
          "type": "registry:component",
          "target": "components/unsaved-guard.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/unsaved-guard"
        }
      }
    },
    {
      "name": "data-table",
      "type": "registry:component",
      "title": "Data Table",
      "description": "TanStack-powered data table: faceted, text, range and date filters, sortable columns, column visibility, row selection and pagination, with page, sort and filters kept in the URL. One useDataTable hook drives it: pass pageCount to query server-side, or omit it to sort, filter and page a local array in memory. Ships as a folder of composable parts.",
      "categories": [
        "data"
      ],
      "dependencies": [
        "@tanstack/react-table",
        "lucide-react",
        "nuqs",
        "react-day-picker",
        "zod"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "calendar",
        "command",
        "dropdown-menu",
        "field",
        "input",
        "popover",
        "select",
        "separator",
        "skeleton",
        "slider",
        "table"
      ],
      "docs": "Needs a NuqsAdapter wrapping your app (nuqs) or the URL-synced page/sort/filter state won't work. Built for @tanstack/react-table v9; the table's features, row models and column meta typing live in data-table-features.ts. Component files keep a \"use no memo\" pragma, required under the React Compiler because column/row getter reads would otherwise be memoized stale, so don't remove it.",
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table.tsx",
          "type": "registry:component",
          "target": "components/data-table/data-table.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-toolbar.tsx",
          "type": "registry:component",
          "target": "components/data-table/data-table-toolbar.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-column-header.tsx",
          "type": "registry:component",
          "target": "components/data-table/data-table-column-header.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-pagination.tsx",
          "type": "registry:component",
          "target": "components/data-table/data-table-pagination.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-view-options.tsx",
          "type": "registry:component",
          "target": "components/data-table/data-table-view-options.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-faceted-filter.tsx",
          "type": "registry:component",
          "target": "components/data-table/data-table-faceted-filter.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-slider-filter.tsx",
          "type": "registry:component",
          "target": "components/data-table/data-table-slider-filter.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-date-filter.tsx",
          "type": "registry:component",
          "target": "components/data-table/data-table-date-filter.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-skeleton.tsx",
          "type": "registry:component",
          "target": "components/data-table/data-table-skeleton.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/use-data-table.ts",
          "type": "registry:hook",
          "target": "components/data-table/use-data-table.ts"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-features.ts",
          "type": "registry:lib",
          "target": "components/data-table/data-table-features.ts"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-parsers.ts",
          "type": "registry:lib",
          "target": "components/data-table/data-table-parsers.ts"
        },
        {
          "path": "registry/hirael/bases/radix/components/data-table/data-table-utils.ts",
          "type": "registry:lib",
          "target": "components/data-table/data-table-utils.ts"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/data-table"
        }
      }
    },
    {
      "name": "process-01",
      "type": "registry:block",
      "title": "Process 1",
      "description": "How-it-works section with a three-step row: each step pairs an icon badge, a Step NN label, a title and a short body, joined by a hairline connector on desktop.",
      "categories": [
        "blocks",
        "process"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/process-01/process-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/process-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/process/process-01"
        }
      }
    },
    {
      "name": "feature-03",
      "type": "registry:block",
      "title": "Feature 3",
      "description": "Bento feature grid: a large lead tile with a faux file-tree preview beside five smaller token-lit tiles, each with an icon, title and short blurb.",
      "categories": [
        "blocks",
        "feature"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/feature-03/feature-03.tsx",
          "type": "registry:block",
          "target": "components/blocks/feature-03.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/features/feature-03"
        }
      }
    },
    {
      "name": "feature-04",
      "type": "registry:block",
      "title": "Feature 4",
      "description": "Services grid: a pill badge, word-by-word animated title and intro over a three-column set of cards, each with a large thin icon, title, blurb and a three-point bullet list, lit by two pulsing warm radial glows. Cards rise in with staggered motion that respects reduced-motion.",
      "categories": [
        "blocks",
        "feature"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "badge"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/feature-04/feature-04.tsx",
          "type": "registry:block",
          "target": "components/blocks/feature-04.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/features/feature-04"
        }
      }
    },
    {
      "name": "feature-05",
      "type": "registry:block",
      "title": "Feature 5",
      "description": "Values section: a centered animated header over a two-column, offset grid of six glass cards, each backed by a canvas dot grid that shimmers dot by dot in the brand warm tone. Pauses off-screen and renders a single static frame under reduced-motion.",
      "categories": [
        "blocks",
        "feature"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "badge"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/feature-05/feature-05.tsx",
          "type": "registry:block",
          "target": "components/blocks/feature-05.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/features/feature-05"
        }
      }
    },
    {
      "name": "feature-06",
      "type": "registry:block",
      "title": "Feature 6",
      "description": "About section: a centered animated header over two equal story cards, each decorated with a fading SVG grid pattern and a token-lit gradient, with a heading and two paragraphs that rise in after the card. Reduced-motion renders everything in place.",
      "categories": [
        "blocks",
        "feature"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "badge"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/feature-06/feature-06.tsx",
          "type": "registry:block",
          "target": "components/blocks/feature-06.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/features/feature-06"
        }
      }
    },
    {
      "name": "comparison-01",
      "type": "registry:block",
      "title": "Comparison 1",
      "description": "Two-column us-and-them panel: a featured column of checked points beside a muted column of the usual trade-offs, split by a divider that stacks on mobile.",
      "categories": [
        "blocks",
        "comparison"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/comparison-01/comparison-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/comparison-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/comparison/comparison-01"
        }
      }
    },
    {
      "name": "newsletter-01",
      "type": "registry:block",
      "title": "Newsletter 1",
      "description": "Centered subscribe panel with an inline email form, inline validation and a success state that swaps in a confirmation once a valid address is entered.",
      "categories": [
        "blocks",
        "newsletter"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "field",
        "input"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/newsletter-01/newsletter-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/newsletter-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/newsletter/newsletter-01"
        }
      }
    },
    {
      "name": "careers-01",
      "type": "registry:block",
      "title": "Careers 1",
      "description": "Open-roles list with department filter pills and rows that show title, department, location and type, each linking out with a hover arrow.",
      "categories": [
        "blocks",
        "careers"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "toggle-group"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/careers-01/careers-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/careers-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/careers/careers-01"
        }
      }
    },
    {
      "name": "hero-09",
      "type": "registry:block",
      "title": "Hero 9",
      "description": "Full-viewport product hero on a rounded card that zooms out as the page scrolls: an inline nav with brand and actions, a serif headline, sub-copy, dual CTAs, a step-type strip, a drifting WebGL gradient mixed from the theme tokens, a bouncing scroll cue and a carved stat corner. Reduced-motion aware.",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-09/hero-09.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-09.tsx"
        },
        {
          "path": "registry/hirael/bases/radix/blocks/hero-09/hero-09-backdrop.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-09-backdrop.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-09"
        }
      }
    },
    {
      "name": "feature-07",
      "type": "registry:block",
      "title": "Feature 7",
      "description": "Problem-framing trio: a badge and serif headline with a muted second half above three cards, each an orb icon in concentric rings with a soft radial glow, a title and a short description. Cards fade up in sequence, stilled under reduced motion.",
      "categories": [
        "blocks",
        "feature"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "badge"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/feature-07/feature-07.tsx",
          "type": "registry:block",
          "target": "components/blocks/feature-07.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/features/feature-07"
        }
      }
    },
    {
      "name": "feature-08",
      "type": "registry:block",
      "title": "Feature 8",
      "description": "Six-card feature grid on hairline rails: each card carries an icon tile, a title and a description, corner crosshair marks, and a radial spotlight that follows the pointer on hover. Warm-tinted top glow per card.",
      "categories": [
        "blocks",
        "feature"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/feature-08/feature-08.tsx",
          "type": "registry:block",
          "target": "components/blocks/feature-08.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/features/feature-08"
        }
      }
    },
    {
      "name": "feature-09",
      "type": "registry:block",
      "title": "Feature 9",
      "description": "Catalog bento on a hairline grid: a wide opening cell, four single cells and a full-width closing cell, each with a large faded icon that warms on hover, a title, a clamped description and a crosshair frame that clips at the cell edge.",
      "categories": [
        "blocks",
        "feature"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/feature-09/feature-09.tsx",
          "type": "registry:block",
          "target": "components/blocks/feature-09.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/features/feature-09"
        }
      }
    },
    {
      "name": "pricing-04",
      "type": "registry:block",
      "title": "Pricing 4",
      "description": "Three-tier pricing row with an uppercase plan label, a large price, a tagline, a full-width CTA and a check-marked quota list per tier; the featured tier gets a warm border, a top radial glow and a most-popular badge.",
      "categories": [
        "blocks",
        "pricing"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/pricing-04/pricing-04.tsx",
          "type": "registry:block",
          "target": "components/blocks/pricing-04.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/pricing/pricing-04"
        }
      }
    },
    {
      "name": "faq-07",
      "type": "registry:block",
      "title": "FAQ 7",
      "description": "Split FAQ: a serif heading and lead on the start side, a single-open accordion of five questions on the end side, divided by a hairline rule and framed by section borders.",
      "categories": [
        "blocks",
        "faq"
      ],
      "dependencies": [],
      "registryDependencies": [
        "https://hirael.com/r/accordion.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/faq-07/faq-07.tsx",
          "type": "registry:block",
          "target": "components/blocks/faq-07.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/faqs/faq-07"
        }
      }
    },
    {
      "name": "cta-07",
      "type": "registry:block",
      "title": "CTA 7",
      "description": "Closing CTA panel wrapped in a scroll-reactive warm rim glow that widens as the section moves through the viewport, with an eyebrow badge, a two-tone serif headline, sub-copy and dual CTAs. Static glow under reduced motion.",
      "categories": [
        "blocks",
        "cta"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/cta-07/cta-07.tsx",
          "type": "registry:block",
          "target": "components/blocks/cta-07.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cta/cta-07"
        }
      }
    },
    {
      "name": "hero-10",
      "type": "registry:block",
      "title": "Hero 10",
      "description": "Bordered hero card over a blurred full-bleed image: a rocket badge, a large centered headline, sub-copy and dual CTAs that rise into place on load. Reduced-motion aware.",
      "categories": [
        "blocks",
        "hero"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/hero-10/hero-10.tsx",
          "type": "registry:block",
          "target": "components/blocks/hero-10.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/hero/hero-10"
        }
      }
    },
    {
      "name": "footer-06",
      "type": "registry:block",
      "title": "Footer 6",
      "description": "Two-part footer: a bordered CTA panel over a rotated, blurred image with a headline, sub-copy and a wide sign-up button, above a brand block with social icons, two link columns and a hairline copyright row.",
      "categories": [
        "blocks",
        "footer"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/footer-06/footer-06.tsx",
          "type": "registry:block",
          "target": "components/blocks/footer-06.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/footer/footer-06"
        }
      }
    },
    {
      "name": "footer-05",
      "type": "registry:block",
      "title": "Footer 5",
      "description": "Floating card footer inset from the page edge: a brand block with mark and tagline, three link columns, and a hairline-divided legal row with copyright and a sign-off line.",
      "categories": [
        "blocks",
        "footer"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/footer-05/footer-05.tsx",
          "type": "registry:block",
          "target": "components/blocks/footer-05.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/footer/footer-05"
        }
      }
    },
    {
      "name": "status-01",
      "type": "registry:block",
      "title": "Status 1",
      "description": "Service status page: an operational banner with a green check, a 90-day uptime grid of tooltip-backed day bars per service with a status legend, and a dated incident history where each update carries a tone-colored badge, a timestamp and a note.",
      "categories": [
        "blocks",
        "not-found"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "tooltip"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/status-01/status-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/status-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/not-found/status-01"
        }
      }
    },
    {
      "name": "metric-card",
      "type": "registry:component",
      "title": "Metric Card",
      "description": "Compact metric card with a value and unit, a tone-aware sparkline and an up / down trend line. Compound API.",
      "categories": [
        "data"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/metric-card.tsx",
          "type": "registry:component",
          "target": "components/metric-card.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/metric-card"
        }
      }
    },
    {
      "name": "yaml-editor",
      "type": "registry:component",
      "title": "YAML Editor",
      "description": "Editable code field with dependency-free YAML syntax highlighting, a line-number gutter and tab-to-indent. Controlled or uncontrolled.",
      "categories": [
        "inputs"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/yaml-editor.tsx",
          "type": "registry:component",
          "target": "components/yaml-editor.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/yaml-editor"
        }
      }
    },
    {
      "name": "server-card",
      "type": "registry:block",
      "title": "Server Card",
      "description": "Fleet of host cards, each with a status pill, region, CPU / memory / disk specs and threshold-tinted usage meters. Ships composable parts.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/server-card/server-card.tsx",
          "type": "registry:block",
          "target": "components/blocks/server-card.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/server-card"
        }
      }
    },
    {
      "name": "vm-table",
      "type": "registry:block",
      "title": "VM Table",
      "description": "Virtual-machine instance table with live status dots, size, region, IP and uptime. Self-contained parts, no table primitive required.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/vm-table/vm-table.tsx",
          "type": "registry:block",
          "target": "components/blocks/vm-table.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/vm-table"
        }
      }
    },
    {
      "name": "k8s-pod-table",
      "type": "registry:block",
      "title": "K8s Pod Table",
      "description": "Kubernetes pod table with phase pills (Running, Pending, CrashLoopBackOff), ready and restart counts that flag unhealthy pods.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/k8s-pod-table/k8s-pod-table.tsx",
          "type": "registry:block",
          "target": "components/blocks/k8s-pod-table.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/k8s-pod-table"
        }
      }
    },
    {
      "name": "resource-status",
      "type": "registry:block",
      "title": "Resource Status",
      "description": "Statuspage-style panel: an overall banner over a list of resources, each with an operational / degraded / outage / maintenance state and uptime.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/resource-status/resource-status.tsx",
          "type": "registry:block",
          "target": "components/blocks/resource-status.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/resource-status"
        }
      }
    },
    {
      "name": "cluster-map",
      "type": "registry:block",
      "title": "Cluster Map",
      "description": "Grid heatmap of cluster nodes, each cell tinted by health and load with a hover label, plus a legend. Ships composable parts.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/cluster-map/cluster-map.tsx",
          "type": "registry:block",
          "target": "components/blocks/cluster-map.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/cluster-map"
        }
      }
    },
    {
      "name": "network-topology",
      "type": "registry:block",
      "title": "Network Topology",
      "description": "Coordinate-placed topology diagram: nodes with status and icons over an SVG edge layer, with animated active links. Ships composable parts.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/network-topology/network-topology.tsx",
          "type": "registry:block",
          "target": "components/blocks/network-topology.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/network-topology"
        }
      }
    },
    {
      "name": "storage-browser",
      "type": "registry:block",
      "title": "Storage Browser",
      "description": "Object-storage file browser with a clickable path breadcrumb, folder and file rows, sizes and modified dates. Ships composable parts.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/storage-browser/storage-browser.tsx",
          "type": "registry:block",
          "target": "components/blocks/storage-browser.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/storage-browser"
        }
      }
    },
    {
      "name": "log-viewer",
      "type": "registry:block",
      "title": "Log Viewer",
      "description": "Streaming log panel with severity-colored lines, timestamps, sources and tail-follow that unpins when you scroll up. Ships composable parts.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/log-viewer/log-viewer.tsx",
          "type": "registry:block",
          "target": "components/blocks/log-viewer.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/log-viewer"
        }
      }
    },
    {
      "name": "terminal",
      "type": "registry:block",
      "title": "Terminal",
      "description": "Terminal surface with a title bar, output lines and an interactive prompt input with command-history recall. Ships composable parts.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/terminal/terminal.tsx",
          "type": "registry:block",
          "target": "components/blocks/terminal.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/terminal"
        }
      }
    },
    {
      "name": "deployment-history",
      "type": "registry:block",
      "title": "Deployment History",
      "description": "Deployment feed on a connecting rail: version, environment and status (deployed, failed, building, rolled back) with commit and author meta.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/deployment-history/deployment-history.tsx",
          "type": "registry:block",
          "target": "components/blocks/deployment-history.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/deployment-history"
        }
      }
    },
    {
      "name": "kanban",
      "type": "registry:component",
      "title": "Kanban",
      "description": "Board of columns and cards with pointer and keyboard drag-and-drop across columns, drop placeholder, empty-column hint and live-region announcements. No dnd-kit.",
      "categories": [
        "data"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/kanban.tsx",
          "type": "registry:component",
          "target": "components/kanban.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/kanban"
        }
      }
    },
    {
      "name": "sparkline",
      "type": "registry:component",
      "title": "Sparkline",
      "description": "Tiny inline SVG chart in line, area or bar form with optional curve, last-point dot, reference line and hover tooltip. Tints with currentColor, no chart library.",
      "categories": [
        "data"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/sparkline.tsx",
          "type": "registry:component",
          "target": "components/sparkline.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/data/sparkline"
        }
      }
    },
    {
      "name": "json-viewer",
      "type": "registry:component",
      "title": "JSON Viewer",
      "description": "Collapsible JSON tree with typed value colors, item counts on closed nodes, long-string truncation, expand or collapse all, copy, and arrow-key navigation.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://hirael.com/r/copy-button.json"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/json-viewer.tsx",
          "type": "registry:component",
          "target": "components/json-viewer.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/json-viewer"
        }
      }
    },
    {
      "name": "diff-viewer",
      "type": "registry:component",
      "title": "Diff Viewer",
      "description": "Line diff of two texts computed in-component with an LCS algorithm. Unified or split layout, +N / -N stats, context lines with expandable gaps. No deps.",
      "categories": [
        "display"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "toggle-group"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/diff-viewer.tsx",
          "type": "registry:component",
          "target": "components/diff-viewer.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/display/diff-viewer"
        }
      }
    },
    {
      "name": "cron-editor",
      "type": "registry:component",
      "title": "Cron Editor",
      "description": "Visual cron builder kept in sync with the raw expression. Presets, per-field modes, validation, a plain-English preview, and the next run times.",
      "categories": [
        "inputs"
      ],
      "dependencies": [],
      "registryDependencies": [
        "button",
        "field",
        "input",
        "native-select"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/cron-editor.tsx",
          "type": "registry:component",
          "target": "components/cron-editor.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/cron-editor"
        }
      }
    },
    {
      "name": "country-select",
      "type": "registry:component",
      "title": "Country Select",
      "description": "Searchable country picker with flag emoji, pinned countries, optional dial codes, and single or multiple selection. Search by name or ISO code.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "command",
        "popover"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/country-select.tsx",
          "type": "registry:component",
          "target": "components/country-select.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/country-select"
        }
      }
    },
    {
      "name": "credit-card-input",
      "type": "registry:component",
      "title": "Credit Card Input",
      "description": "Card number, expiry, and CVC in one row with brand detection, per-brand grouping, Luhn and expiry validation, and auto-advance between fields.",
      "categories": [
        "inputs"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "input"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/credit-card-input.tsx",
          "type": "registry:component",
          "target": "components/credit-card-input.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/inputs/credit-card-input"
        }
      }
    },
    {
      "name": "emoji-picker",
      "type": "registry:component",
      "title": "Emoji Picker",
      "description": "Self-contained emoji grid with 560+ emoji in 8 categories, keyword search, recents, skin tones, and arrow-key navigation. No dependencies.",
      "categories": [
        "pickers"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "input"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/emoji-picker.tsx",
          "type": "registry:component",
          "target": "components/emoji-picker.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/pickers/emoji-picker"
        }
      }
    },
    {
      "name": "avatar-upload",
      "type": "registry:component",
      "title": "Avatar Upload",
      "description": "Click or drop an image, crop it to a circle or square with zoom, and preview the result. Initials fallback, size and type limits, remove control.",
      "categories": [
        "files"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "dialog",
        "https://hirael.com/r/image-cropper.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/avatar-upload.tsx",
          "type": "registry:component",
          "target": "components/avatar-upload.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/components/files/avatar-upload"
        }
      }
    },
    {
      "name": "settings-01",
      "type": "registry:block",
      "title": "Settings 1",
      "description": "Account settings page with a sticky section nav, card sections with label/control rows that stack on mobile, dirty-aware Save/Cancel footers, and a Danger zone with an alert-dialog confirm. Ships composable parts.",
      "categories": [
        "blocks",
        "saas"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "alert-dialog",
        "avatar",
        "badge",
        "button",
        "field",
        "input",
        "input-group",
        "select",
        "textarea"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/settings-01/settings-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/settings-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/saas/settings-01"
        }
      }
    },
    {
      "name": "settings-02",
      "type": "registry:block",
      "title": "Settings 2",
      "description": "Security and notifications settings in tabs: change password with strength meter, two-factor toggle, revocable session list, and grouped notification switches under a Pause all master. Ships composable parts.",
      "categories": [
        "blocks",
        "saas"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "field",
        "https://hirael.com/r/password-input.json",
        "switch",
        "tabs"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/settings-02/settings-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/settings-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/saas/settings-02"
        }
      }
    },
    {
      "name": "members-01",
      "type": "registry:block",
      "title": "Members 1",
      "description": "Team members management: live search, inline role select, status badges, row actions menu, a pending-invites list with resend/revoke, and an invite dialog that validates emails as tags. Ships composable parts.",
      "categories": [
        "blocks",
        "saas"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "avatar",
        "badge",
        "button",
        "dialog",
        "dropdown-menu",
        "field",
        "input-group",
        "select",
        "table",
        "https://hirael.com/r/tag-input.json"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/members-01/members-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/members-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/saas/members-01"
        }
      }
    },
    {
      "name": "onboarding-01",
      "type": "registry:block",
      "title": "Onboarding 1",
      "description": "Four-step setup wizard on the Stepper: controlled or uncontrolled step, per-step validation gating Continue, Skip, Back, a Finish that fires onComplete, and a fade between steps. Ships composable parts.",
      "categories": [
        "blocks",
        "saas"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "card",
        "field",
        "input",
        "input-group",
        "progress",
        "radio-group",
        "select",
        "https://hirael.com/r/stepper.json",
        "switch"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/onboarding-01/onboarding-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/onboarding-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/saas/onboarding-01"
        }
      }
    },
    {
      "name": "two-factor-setup-01",
      "type": "registry:block",
      "title": "Two-Factor Setup 1",
      "description": "Three-step 2FA enrollment card: scan a real otpauth QR or copy the key, confirm a six-digit code, then save recovery codes with copy, download and a checkbox-gated finish. Ships composable parts.",
      "categories": [
        "blocks",
        "login"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "checkbox",
        "https://hirael.com/r/copy-button.json",
        "field",
        "input-otp",
        "https://hirael.com/r/qr-code.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/two-factor-setup-01/two-factor-setup-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/two-factor-setup-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/auth/two-factor-setup-01"
        }
      }
    },
    {
      "name": "coming-soon-01",
      "type": "registry:block",
      "title": "Coming Soon 1",
      "description": "Full-viewport launch page with a live countdown, an email notify form that shows an inline success state, and a GitHub link in the footer. Ships composable parts.",
      "categories": [
        "blocks",
        "not-found"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "https://hirael.com/r/countdown-timer.json",
        "field",
        "input"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/coming-soon-01/coming-soon-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/coming-soon-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/not-found/coming-soon-01"
        }
      }
    },
    {
      "name": "coming-soon-02",
      "type": "registry:block",
      "title": "Coming Soon 2",
      "description": "Full-viewport launch teaser: a pill badge, a word-by-word serif headline, sub-copy and a disabled pill CTA above a glowing horizon of sparkles with a rounded planet edge. Motion respects reduced-motion.",
      "categories": [
        "blocks",
        "not-found"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "https://hirael.com/r/sparkles.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/coming-soon-02/coming-soon-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/coming-soon-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/not-found/coming-soon-02"
        }
      }
    },
    {
      "name": "maintenance-01",
      "type": "registry:block",
      "title": "Maintenance 1",
      "description": "Scheduled maintenance page with a pulsing status dot, window card showing start, expected return and elapsed progress, paired CTAs and a timestamped updates list. Ships composable parts.",
      "categories": [
        "blocks",
        "not-found"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/maintenance-01/maintenance-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/maintenance-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/not-found/maintenance-01"
        }
      }
    },
    {
      "name": "maintenance-02",
      "type": "registry:block",
      "title": "Maintenance 2",
      "description": "Full-viewport offline page with a blurred primary glow and a sparkle field behind a pill badge, a word-by-word serif headline, a short status message and a spinner line. Message area is a live region.",
      "categories": [
        "blocks",
        "not-found"
      ],
      "dependencies": [
        "lucide-react",
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "https://hirael.com/r/sparkles.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/maintenance-02/maintenance-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/maintenance-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/not-found/maintenance-02"
        }
      }
    },
    {
      "name": "error-01",
      "type": "registry:block",
      "title": "Error 1",
      "description": "500 page with a retry action, home link, collapsible technical details (request id, timestamp, copy button) and a system status line. Ships composable parts.",
      "categories": [
        "blocks",
        "not-found"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "collapsible",
        "https://hirael.com/r/copy-button.json"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/error-01/error-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/error-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/not-found/error-01"
        }
      }
    },
    {
      "name": "team-01",
      "type": "registry:block",
      "title": "Team 1",
      "description": "Team section with serif headline, a bordered grid of members with initials placeholders, roles, bios, GitHub links, and a hiring footer. Ships composable parts.",
      "categories": [
        "blocks",
        "team"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/team-01/team-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/team-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/team/team-01"
        }
      }
    },
    {
      "name": "team-02",
      "type": "registry:block",
      "title": "Team 2",
      "description": "Single-profile experience section: a four-up metric strip, a bio card with a grid-pattern backdrop, and a competencies card that ends in three pause-on-hover marquee rows of skill chips with edge fades. Every element rises in on scroll and respects reduced-motion.",
      "categories": [
        "blocks",
        "team"
      ],
      "dependencies": [
        "motion"
      ],
      "registryDependencies": [
        "badge",
        "https://hirael.com/r/marquee.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/team-02/team-02.tsx",
          "type": "registry:block",
          "target": "components/blocks/team-02.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/team/team-02"
        }
      }
    },
    {
      "name": "stats-01",
      "type": "registry:block",
      "title": "Stats 1",
      "description": "Metrics band with four large numbers that count up on scroll, labels, optional deltas, and a two-column header on large screens. Ships composable parts.",
      "categories": [
        "blocks",
        "stats"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "https://hirael.com/r/animated-number.json"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/stats-01/stats-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/stats-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/stats/stats-01"
        }
      }
    },
    {
      "name": "cookie-consent",
      "type": "registry:block",
      "title": "Cookie Consent",
      "description": "Floating consent banner with per-category switches, accept, reject, and save actions, and a choice persisted in localStorage. Ships composable parts.",
      "categories": [
        "blocks",
        "widgets"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "field",
        "switch"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/cookie-consent/cookie-consent.tsx",
          "type": "registry:block",
          "target": "components/blocks/cookie-consent.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/widgets/cookie-consent"
        }
      }
    },
    {
      "name": "changelog-01",
      "type": "registry:block",
      "title": "Changelog 1",
      "description": "Release notes with a sticky date rail, version badges, New / Improved / Fixed tags, a subscribe button, and a filter that narrows entries. Ships composable parts.",
      "categories": [
        "blocks",
        "changelog"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "toggle-group"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/changelog-01/changelog-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/changelog-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/changelog/changelog-01"
        }
      }
    },
    {
      "name": "env-editor",
      "type": "registry:block",
      "title": "Env Editor",
      "description": "Environment variables editor with masked secrets, copy, per-environment chips, .env import, key validation, and unsaved-change tracking. Ships composable parts.",
      "categories": [
        "blocks",
        "cloud"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "https://hirael.com/r/copy-button.json",
        "dialog",
        "field",
        "input",
        "input-group",
        "textarea"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/env-editor/env-editor.tsx",
          "type": "registry:block",
          "target": "components/blocks/env-editor.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/cloud/env-editor"
        }
      }
    },
    {
      "name": "prompt-input",
      "type": "registry:block",
      "title": "Prompt Input",
      "description": "Chat composer with an auto-growing textarea, Enter to send, attachments, a model picker, and a Stop button while streaming. Ships composable parts.",
      "categories": [
        "blocks",
        "ai"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "dropdown-menu",
        "textarea"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/prompt-input/prompt-input.tsx",
          "type": "registry:block",
          "target": "components/blocks/prompt-input.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/ai/prompt-input"
        }
      }
    },
    {
      "name": "message-thread",
      "type": "registry:block",
      "title": "Message Thread",
      "description": "Message list that follows streaming output, with tool calls, reasoning, sources, hover actions, typing dots, and a streaming cursor. Ships composable parts.",
      "categories": [
        "blocks",
        "ai"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button",
        "collapsible",
        "https://hirael.com/r/copy-button.json"
      ],
      "cssVars": {
        "light": {
          "success": "oklch(0.527 0.154 150.069)",
          "warning": "oklch(0.555 0.163 48.998)",
          "info": "oklch(0.55 0.2 260)"
        },
        "dark": {
          "success": "oklch(0.696 0.17 162.48)",
          "warning": "oklch(0.769 0.188 70.08)",
          "info": "oklch(0.62 0.19 260)"
        }
      },
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/message-thread/message-thread.tsx",
          "type": "registry:block",
          "target": "components/blocks/message-thread.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/ai/message-thread"
        }
      }
    },
    {
      "name": "ai-chat-01",
      "type": "registry:block",
      "title": "AI Chat 1",
      "description": "Full chat screen: grouped history sidebar that collapses to a sheet, top bar with model badge, streaming thread, and pinned composer. Ships composable parts.",
      "categories": [
        "blocks",
        "ai"
      ],
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "badge",
        "button",
        "dropdown-menu",
        "input-group",
        "sheet",
        "textarea"
      ],
      "files": [
        {
          "path": "registry/hirael/bases/radix/blocks/ai-chat-01/ai-chat-01.tsx",
          "type": "registry:block",
          "target": "components/blocks/ai-chat-01.tsx"
        }
      ],
      "meta": {
        "links": {
          "docs": "https://hirael.com/blocks/ai/ai-chat-01"
        }
      }
    },
    {
      "name": "accordion",
      "type": "registry:ui",
      "title": "Accordion",
      "description": "Radix-powered accordion primitive used by the FAQ blocks. Plus icon rotates to an X on open.",
      "categories": [
        "primitives"
      ],
      "dependencies": [
        "lucide-react",
        "radix-ui"
      ],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/ui/accordion.tsx",
          "type": "registry:ui",
          "target": "components/ui/accordion.tsx"
        }
      ]
    },
    {
      "name": "calendar-utils",
      "type": "registry:component",
      "title": "Calendar Utils",
      "description": "Dependency-free date helpers (month grids, day math, keyboard-grid navigation) shared by date-picker and date-range-picker.",
      "categories": [
        "primitives"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "files": [
        {
          "path": "registry/hirael/bases/radix/components/calendar-utils.ts",
          "type": "registry:component",
          "target": "components/calendar-utils.ts"
        }
      ]
    },
    {
      "name": "theme-emerald",
      "type": "registry:theme",
      "title": "Emerald theme",
      "description": "Emerald accent preset for the hirael palette. Sets --primary, --primary-foreground and --ring for light and dark.",
      "categories": [
        "themes"
      ],
      "dependencies": [],
      "registryDependencies": [],
      "cssVars": {
        "light": {
          "primary": "oklch(0.52 0.14 155)",
          "primary-foreground": "oklch(0.98 0.01 155)",
          "ring": "oklch(0.58 0.14 155)"
        },
        "dark": {
          "primary": "oklch(0.72 0.16 155)",
          "primary-foreground": "oklch(0.14 0.02 155)",
          "ring": "oklch(0.68 0.16 155)"
        }
      }
    }
  ]
}
