{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "flag",
  "homepage": "https://flag.elcanotek.com/",
  "items": [
    {
      "name": "flag-theme",
      "type": "registry:style",
      "title": "Flag theme",
      "description": "Sets a Tier B app up for Flag: installs the runtime dependencies the Flag components share and the cn utility. The theme itself (shadcn variables mapped onto Flag tokens) is Flag's design-system/shadcn/theme.css, vendored with flag-sync next to the tokens and fonts.",
      "extends": "none",
      "dependencies": [
        "tw-animate-css@^1.4.0",
        "clsx@^2.1.1",
        "tailwind-merge@^3.7.0",
        "class-variance-authority@^0.7.1",
        "lucide-react@^1.49.0",
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "docs": "Next: vendor Flag's fonts/fonts.css, tokens/design-tokens.css, shadcn/theme.css and theme/theme-controller.js with scripts/flag-sync.sh, then import them in the app stylesheet after tailwindcss and tw-animate-css (fonts, tokens, theme, in that order). Fonts are Flag's Nebula Sans and Hack only; do not add font packages. Full steps: https://github.com/ElcanoTek/flag/blob/main/design-system/SHADCN.md"
    },
    {
      "name": "utils",
      "type": "registry:lib",
      "title": "cn utility",
      "description": "clsx + tailwind-merge, taught Flag's type scale.",
      "dependencies": [
        "clsx@^2.1.1",
        "tailwind-merge@^3.7.0"
      ],
      "files": [
        {
          "path": "registry/flag/lib/utils.ts",
          "type": "registry:lib"
        }
      ]
    },
    {
      "name": "use-flag-theme",
      "type": "registry:hook",
      "title": "useFlagTheme",
      "description": "The resolved Flag theme from html[data-theme], kept in sync with the theme controller.",
      "files": [
        {
          "path": "registry/flag/hooks/use-flag-theme.ts",
          "type": "registry:hook"
        }
      ]
    },
    {
      "name": "button",
      "type": "registry:ui",
      "title": "Button",
      "description": "Flag button: primary (action fill), secondary, outline, ghost, destructive, link; Flag focus ring, lift and press states.",
      "dependencies": [
        "radix-ui@^1.6.7",
        "class-variance-authority@^0.7.1"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/button.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "input",
      "type": "registry:ui",
      "title": "Input",
      "description": "Flag text input: 2.5rem, radius-md, overlay-soft fill, accent focus with the Flag focus ring.",
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/input.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "textarea",
      "type": "registry:ui",
      "title": "Textarea",
      "description": "Flag multi-line input.",
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/textarea.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "label",
      "type": "registry:ui",
      "title": "Label",
      "description": "Flag field label: caption size, secondary text.",
      "dependencies": [
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/label.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "select",
      "type": "registry:ui",
      "title": "Select",
      "description": "Flag select: input-matched trigger, popover-surface list, accent-tone active option.",
      "dependencies": [
        "radix-ui@^1.6.7",
        "lucide-react@^1.49.0"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/select.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "checkbox",
      "type": "registry:ui",
      "title": "Checkbox",
      "description": "Flag checkbox (ds-checkbox): secondary border, running tint when checked.",
      "dependencies": [
        "radix-ui@^1.6.7",
        "lucide-react@^1.49.0"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/checkbox.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "radio-group",
      "type": "registry:ui",
      "title": "Radio Group",
      "description": "Flag radio: secondary ring and dot with the selected halo.",
      "dependencies": [
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/radio-group.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "switch",
      "type": "registry:ui",
      "title": "Switch",
      "description": "Flag switch (connection picker): 30x18 and 38x22, measured tracks, picker focus ring.",
      "dependencies": [
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/switch.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "card",
      "type": "registry:ui",
      "title": "Card",
      "description": "Flag card: surface-1, border, radius-lg, section shadow.",
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/card.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "badge",
      "type": "registry:ui",
      "title": "Badge",
      "description": "Flag pill badge with the task status set (pending ... cancelled).",
      "dependencies": [
        "radix-ui@^1.6.7",
        "class-variance-authority@^0.7.1"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/badge.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "alert",
      "type": "registry:ui",
      "title": "Alert",
      "description": "Flag banner: neutral, info, success, warning, destructive state panels.",
      "dependencies": [
        "class-variance-authority@^0.7.1"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/alert.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "separator",
      "type": "registry:ui",
      "title": "Separator",
      "description": "1px Flag border rule.",
      "dependencies": [
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/separator.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "tabs",
      "type": "registry:ui",
      "title": "Tabs",
      "description": "Flag tabs: segmented control (default) and underlined page tabs (line).",
      "dependencies": [
        "radix-ui@^1.6.7",
        "class-variance-authority@^0.7.1"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/tabs.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dialog",
      "type": "registry:ui",
      "title": "Dialog",
      "description": "Flag modal: surface-1, strong border, radius-xl, blurred scrim, icon-action close.",
      "dependencies": [
        "radix-ui@^1.6.7",
        "lucide-react@^1.49.0"
      ],
      "registryDependencies": [
        "@flag/utils",
        "@flag/button"
      ],
      "files": [
        {
          "path": "registry/flag/ui/dialog.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "alert-dialog",
      "type": "registry:ui",
      "title": "Alert Dialog",
      "description": "Flag confirmation modal.",
      "dependencies": [
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils",
        "@flag/button"
      ],
      "files": [
        {
          "path": "registry/flag/ui/alert-dialog.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "sheet",
      "type": "registry:ui",
      "title": "Sheet",
      "description": "Flag edge panel on the modal surface.",
      "dependencies": [
        "radix-ui@^1.6.7",
        "lucide-react@^1.49.0"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/sheet.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "dropdown-menu",
      "type": "registry:ui",
      "title": "Dropdown Menu",
      "description": "Flag menu on the popover surface with active-row highlight.",
      "dependencies": [
        "radix-ui@^1.6.7",
        "lucide-react@^1.49.0"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/dropdown-menu.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "popover",
      "type": "registry:ui",
      "title": "Popover",
      "description": "Flag popover surface: surface-2, selected border, radius-lg, popover shadow.",
      "dependencies": [
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/popover.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "tooltip",
      "type": "registry:ui",
      "title": "Tooltip",
      "description": "Flag tooltip chip for icon-only controls.",
      "dependencies": [
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/tooltip.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "table",
      "type": "registry:ui",
      "title": "Table",
      "description": "Flag data table: bordered wrapper, uppercase muted head, tabular figures, opt-in row hover.",
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/table.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "skeleton",
      "type": "registry:ui",
      "title": "Skeleton",
      "description": "Flag loading placeholder that respects reduced motion.",
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/skeleton.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "avatar",
      "type": "registry:ui",
      "title": "Avatar",
      "description": "Round image or initials on surface-2.",
      "dependencies": [
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/avatar.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "scroll-area",
      "type": "registry:ui",
      "title": "Scroll Area",
      "description": "Themed scroll container with a Flag thumb and focus ring.",
      "dependencies": [
        "radix-ui@^1.6.7"
      ],
      "registryDependencies": [
        "@flag/utils"
      ],
      "files": [
        {
          "path": "registry/flag/ui/scroll-area.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "sonner",
      "type": "registry:ui",
      "title": "Sonner",
      "description": "Flag toasts (sonner) following html[data-theme], no next-themes.",
      "dependencies": [
        "sonner@^2.0.8",
        "lucide-react@^1.49.0"
      ],
      "registryDependencies": [
        "@flag/utils",
        "@flag/use-flag-theme"
      ],
      "files": [
        {
          "path": "registry/flag/ui/sonner.tsx",
          "type": "registry:ui"
        }
      ]
    },
    {
      "name": "command",
      "type": "registry:ui",
      "title": "Command",
      "description": "Flag command palette (cmdk) in the connection-picker list language.",
      "dependencies": [
        "cmdk@^1.1.1",
        "lucide-react@^1.49.0"
      ],
      "registryDependencies": [
        "@flag/utils",
        "@flag/dialog"
      ],
      "files": [
        {
          "path": "registry/flag/ui/command.tsx",
          "type": "registry:ui"
        }
      ]
    }
  ]
}
