{
  "$schema": "https://ui.shadcn.com/schema/registry.json",
  "name": "goodtabs",
  "homepage": "https://ui.goodtabs.co",
  "items": [
    {
      "name": "browser-frame",
      "type": "registry:ui",
      "title": "Browser frame",
      "description": "A browser window around any content, with tabs and an address field.",
      "author": "goodtabs <hello@goodtabs.co>",
      "dependencies": [
        "lucide-react"
      ],
      "files": [
        {
          "path": "registry/goodtabs/browser-frame/browser-frame.tsx",
          "type": "registry:ui"
        }
      ],
      "categories": [
        "media-frames"
      ],
      "meta": {
        "tags": [
          "frame",
          "browser",
          "mockup",
          "screenshot",
          "window"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/browser-frame"
      }
    },
    {
      "name": "confirm-dialog",
      "type": "registry:ui",
      "title": "Confirm dialog",
      "description": "Asks one question before an action, with a pending state for async confirms.",
      "author": "goodtabs <hello@goodtabs.co>",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "alert-dialog",
        "button"
      ],
      "files": [
        {
          "path": "registry/goodtabs/confirm-dialog/confirm-dialog.tsx",
          "type": "registry:ui"
        }
      ],
      "categories": [
        "feedback-overlays"
      ],
      "meta": {
        "tags": [
          "dialog",
          "confirm",
          "alert",
          "destructive",
          "async"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/confirm-dialog"
      }
    },
    {
      "name": "copy-button",
      "type": "registry:ui",
      "title": "Copy button",
      "description": "Copies a value to the clipboard and confirms with a check mark.",
      "author": "goodtabs <hello@goodtabs.co>",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/goodtabs/copy-button/copy-button.tsx",
          "type": "registry:ui"
        }
      ],
      "categories": [
        "buttons-actions"
      ],
      "meta": {
        "tags": [
          "clipboard",
          "feedback",
          "icon button"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/copy-button"
      }
    },
    {
      "name": "hero",
      "type": "registry:block",
      "title": "Hero",
      "description": "A marketing hero with eyebrow, title, actions, a stats strip and a visual slot.",
      "author": "goodtabs <hello@goodtabs.co>",
      "registryDependencies": [
        "button"
      ],
      "files": [
        {
          "path": "registry/goodtabs/hero/hero.tsx",
          "type": "registry:component"
        }
      ],
      "categories": [
        "marketing-sections"
      ],
      "meta": {
        "tags": [
          "hero",
          "landing",
          "section",
          "marketing"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/hero"
      }
    },
    {
      "name": "navbar",
      "type": "registry:block",
      "title": "Navbar",
      "description": "A site header with logo, links and actions that folds into a sheet on small screens.",
      "author": "goodtabs <hello@goodtabs.co>",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "sheet",
        "button"
      ],
      "files": [
        {
          "path": "registry/goodtabs/navbar/navbar.tsx",
          "type": "registry:component"
        }
      ],
      "categories": [
        "navigation"
      ],
      "meta": {
        "tags": [
          "header",
          "navigation",
          "menu",
          "sheet",
          "responsive"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/navbar"
      }
    },
    {
      "name": "search-input",
      "type": "registry:ui",
      "title": "Search input",
      "description": "A search field with a leading icon, a clear button and a keyboard hint.",
      "author": "goodtabs <hello@goodtabs.co>",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "input"
      ],
      "files": [
        {
          "path": "registry/goodtabs/search-input/search-input.tsx",
          "type": "registry:ui"
        }
      ],
      "categories": [
        "inputs-forms"
      ],
      "meta": {
        "tags": [
          "search",
          "input",
          "filter",
          "keyboard"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/search-input"
      }
    },
    {
      "name": "segmented-tabs",
      "type": "registry:ui",
      "title": "Segmented tabs",
      "description": "Tabs on a pill track with one indicator that slides to the active tab.",
      "author": "goodtabs <hello@goodtabs.co>",
      "dependencies": [
        "radix-ui"
      ],
      "files": [
        {
          "path": "registry/goodtabs/segmented-tabs/segmented-tabs.tsx",
          "type": "registry:ui"
        }
      ],
      "categories": [
        "navigation"
      ],
      "meta": {
        "tags": [
          "tabs",
          "segmented control",
          "toggle",
          "filter"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/segmented-tabs"
      }
    },
    {
      "name": "simple-table",
      "type": "registry:ui",
      "title": "Simple table",
      "description": "A typed data table with column sorting, a sticky header and an empty state.",
      "author": "goodtabs <hello@goodtabs.co>",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "table"
      ],
      "files": [
        {
          "path": "registry/goodtabs/simple-table/simple-table.tsx",
          "type": "registry:ui"
        }
      ],
      "categories": [
        "data-display"
      ],
      "meta": {
        "tags": [
          "table",
          "data",
          "sort",
          "list",
          "sticky header"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/simple-table"
      }
    },
    {
      "name": "stat-card",
      "type": "registry:ui",
      "title": "Stat card",
      "description": "A number with its label, a change with a trend arrow, and a quiet footnote.",
      "author": "goodtabs <hello@goodtabs.co>",
      "dependencies": [
        "lucide-react"
      ],
      "registryDependencies": [
        "card"
      ],
      "files": [
        {
          "path": "registry/goodtabs/stat-card/stat-card.tsx",
          "type": "registry:ui"
        }
      ],
      "categories": [
        "data-display"
      ],
      "meta": {
        "tags": [
          "stat",
          "metric",
          "kpi",
          "dashboard",
          "card"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/stat-card"
      }
    },
    {
      "name": "toaster",
      "type": "registry:ui",
      "title": "Toaster",
      "description": "Sonner set up for the goodtabs look: bottom right, monochrome, with lucide icons.",
      "author": "goodtabs <hello@goodtabs.co>",
      "dependencies": [
        "sonner",
        "lucide-react"
      ],
      "registryDependencies": [
        "sonner"
      ],
      "files": [
        {
          "path": "registry/goodtabs/toaster/toaster.tsx",
          "type": "registry:ui"
        }
      ],
      "categories": [
        "feedback-overlays"
      ],
      "meta": {
        "tags": [
          "toast",
          "notification",
          "sonner",
          "feedback"
        ],
        "addedAt": "2026-10-29",
        "docs": "https://ui.goodtabs.co/components/toaster"
      }
    }
  ]
}
