{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "chip",
  "title": "Chip",
  "description": "Category filter pill.",
  "registryDependencies": [
    "@pestoui/style",
    "@pestoui/utils"
  ],
  "files": [
    {
      "path": "pestoui/components/chip.tsx",
      "content": "import { cn } from \"@/lib/utils\"\n\n/* Filter pill — the \"All agents / Support / Research\" category selector.\n\n   Motion: a chip is clicked constantly, so the press is the whole story — a\n   small spring scale that settles in well under a fifth of a second, sitting on\n   top of a selection colour that resolves fast enough to read as instant. The\n   two are split onto separate timings for that reason: one shared duration\n   would either make the colour lag or cut the spring off mid-settle. No hover\n   scale — in a scrolling row of these it reads as noise and fights the press. */\nexport function Chip({\n  active = false,\n  className,\n  ...props\n}: React.ComponentProps<\"button\"> & { active?: boolean }) {\n  return (\n    <button\n      type=\"button\"\n      aria-pressed={active}\n      className={cn(\n        \"inline-flex h-10 shrink-0 items-center justify-center rounded-full px-5 text-body font-medium whitespace-nowrap [transition-property:color,background-color,border-color,box-shadow,scale] [transition-duration:var(--duration-fast),var(--duration-fast),var(--duration-fast),var(--duration-fast),var(--duration-spring-press)] [transition-timing-function:var(--ease-out-expo),var(--ease-out-expo),var(--ease-out-expo),var(--ease-out-expo),var(--ease-spring-press)] outline-none select-none focus-visible:ring-3 focus-visible:ring-ring/50 active:not-disabled:scale-97\",\n        active\n          ? \"bg-primary text-primary-foreground\"\n          : \"border border-border bg-card text-foreground hover:bg-accent\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n",
      "type": "registry:component"
    }
  ],
  "type": "registry:component"
}