{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "button", "title": "Button", "description": "TDDS-styled button with Treasury color variants (primary, secondary, warning, outline)", "dependencies": [ "class-variance-authority", "radix-ui" ], "registryDependencies": [ "utils" ], "files": [ { "path": "registry/ui/button.tsx", "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"rounded-[5px] cursor-pointer focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:aria-invalid:border-destructive/50 border border-transparent bg-clip-padding text-sm font-medium focus-visible:ring-[3px] aria-invalid:ring-[3px] [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap transition-all disabled:pointer-events-none disabled:bg-treasury-base-light disabled:text-treasury-base-dark [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none group/button select-none\",\n {\n variants: {\n variant: {\n primary: \"bg-treasury-primary text-treasury-paper hover:bg-treasury-primary-dark active:bg-treasury-primary-darkest\",\n secondary: \"bg-treasury-secondary text-treasury-paper hover:bg-treasury-secondary-dark active:bg-treasury-secondary-darkest\",\n \"primary-light\": \"bg-treasury-primary-light text-treasury-paper hover:bg-treasury-primary active:bg-treasury-primary-dark\",\n warning: \"bg-treasury-warning text-treasury-paper hover:bg-treasury-warning-dark active:bg-treasury-ink\",\n base: \"bg-treasury-base-dark text-treasury-paper hover:bg-treasury-base-darkest active:bg-treasury-ink\",\n paper: \"bg-treasury-paper text-treasury-ink hover:bg-treasury-base-light active:bg-treasury-base disabled:bg-treasury-base-darkest disabled:text-treasury-ink\",\n \"primary-outline\": \"bg-transparent text-treasury-primary border-treasury-primary hover:text-treasury-primary-dark hover:border-treasury-primary-dark active:text-treasury-primary-darkest active:border-treasury-primary-darkest disabled:bg-transparent disabled:text-treasury-base-light disabled:border-treasury-base-light\",\n \"paper-outline\": \"bg-transparent text-treasury-paper border-treasury-paper hover:bg-treasury-paper hover:text-treasury-ink hover:border-treasury-paper active:bg-transparent active:text-treasury-base active:border-treasury-base disabled:bg-transparent disabled:text-treasury-base disabled:border-treasury-base\",\n \"ghost\": \"bg-transparent text-treasury-ink hover:bg-treasury-base-light active:bg-treasury-base disabled:bg-treasury-base-darkest disabled:text-treasury-ink\",\n },\n size: {\n default: \"h-10 gap-1.5 px-6\",\n lg: \"h-12 gap-2 px-8 text-base\",\n icon: \"size-10\",\n \"icon-xs\": \"size-6\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-12\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"primary\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n \n )\n}\n\nexport { Button, buttonVariants }\n", "type": "registry:ui" } ], "type": "registry:ui" }