{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "switch",
  "title": "TIS Switch",
  "author": "TIS Experience Engineering",
  "description": "Switch React com estado e input de formulário por Base UI, usando o contrato visual Toggle do DS TIS.",
  "dependencies": [
    "@base-ui/react@1.6.0",
    "clsx@2.1.1",
    "tailwind-merge@3.6.0",
    "ds-tis@github:tis-experience/ds-tis#dd4c906943847cb7664a72a0c7637a378b39adcc"
  ],
  "files": [
    {
      "path": "registry/tis/switch.tsx",
      "content": "import * as React from \"react\"\nimport { Switch as SwitchPrimitive } from \"@base-ui/react/switch\"\n\nimport { cn } from \"./tis-utils\"\n\ntype SwitchSize = \"sm\" | \"md\" | \"lg\"\n\ntype SwitchProps = Omit<SwitchPrimitive.Root.Props, \"className\"> & {\n  className?: string\n  size?: SwitchSize\n}\n\nfunction Switch({ className, size = \"md\", ...props }: SwitchProps) {\n  return (\n    <SwitchPrimitive.Root\n      data-slot=\"switch\"\n      className={cn(\n        \"ds-toggle\",\n        size !== \"md\" && `ds-toggle--${size}`,\n        className,\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction SwitchLabel({ className, ...props }: React.ComponentProps<\"label\">) {\n  return <label data-slot=\"switch-label\" className={cn(\"ds-toggle-label\", className)} {...props} />\n}\n\nfunction SwitchContent({ className, ...props }: React.ComponentProps<\"span\">) {\n  return <span data-slot=\"switch-content\" className={cn(\"ds-toggle__content\", className)} {...props} />\n}\n\nfunction SwitchTitle({ className, ...props }: React.ComponentProps<\"span\">) {\n  return <span data-slot=\"switch-title\" className={cn(\"ds-toggle__label\", className)} {...props} />\n}\n\nfunction SwitchDescription({ className, ...props }: React.ComponentProps<\"span\">) {\n  return <span data-slot=\"switch-description\" className={cn(\"ds-toggle__description\", className)} {...props} />\n}\n\nfunction SwitchHelper({ className, ...props }: React.ComponentProps<\"span\">) {\n  return <span data-slot=\"switch-helper\" className={cn(\"ds-toggle__helper\", className)} {...props} />\n}\n\nexport {\n  Switch,\n  SwitchContent,\n  SwitchDescription,\n  SwitchHelper,\n  SwitchLabel,\n  SwitchTitle,\n  type SwitchProps,\n  type SwitchSize,\n}\n",
      "type": "registry:ui",
      "target": "@ui/switch.tsx"
    },
    {
      "path": "registry/tis/tis-utils.ts",
      "content": "import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n",
      "type": "registry:lib",
      "target": "@ui/tis-utils.ts"
    }
  ],
  "css": {
    "@import \"ds-tis/css\"": {},
    ".ds-toggle[data-checked]": {
      "background-color": "var(--ds-toggle-track-fill-on-default)",
      "border-width": "0",
      "--track-border-width": "var(--ds-space-none)"
    },
    ".ds-toggle[data-checked]::after": {
      "background-color": "var(--ds-toggle-thumb-fill-on-default)",
      "inset-inline-start": "calc(var(--toggle-width) - var(--toggle-thumb-size) - var(--thumb-gap))"
    },
    ".ds-toggle:hover:not([data-disabled])": {
      "background-color": "var(--ds-toggle-track-fill-off-hover)",
      "border-color": "var(--ds-toggle-track-border-color-off-hover)"
    },
    ".ds-toggle:hover:not([data-disabled])::after": {
      "background-color": "var(--ds-toggle-thumb-fill-off-hover)"
    },
    ".ds-toggle[data-checked]:hover:not([data-disabled])": {
      "background-color": "var(--ds-toggle-track-fill-on-hover)"
    },
    ".ds-toggle[data-checked]:hover:not([data-disabled])::after": {
      "background-color": "var(--ds-toggle-thumb-fill-on-hover)"
    },
    ".ds-toggle[data-disabled]": {
      "background-color": "var(--ds-toggle-track-fill-off-disabled)",
      "border-color": "var(--ds-toggle-track-border-color-off-disabled)",
      "cursor": "not-allowed"
    },
    ".ds-toggle[data-disabled]::after": {
      "background-color": "var(--ds-toggle-thumb-fill-off-disabled)"
    },
    ".ds-toggle[data-checked][data-disabled]": {
      "background-color": "var(--ds-toggle-track-fill-on-disabled)",
      "border-width": "0"
    },
    ".ds-toggle[data-checked][data-disabled]::after": {
      "background-color": "var(--ds-toggle-thumb-fill-on-disabled)"
    },
    ".ds-toggle-label:has(.ds-toggle[data-disabled])": {
      "cursor": "not-allowed",
      "color": "var(--ds-form-field-label-color-disabled)"
    },
    ".ds-toggle-label:has(.ds-toggle[data-disabled]) .ds-toggle__label": {
      "color": "var(--ds-form-field-label-color-disabled)"
    }
  },
  "meta": {
    "provider": "Base UI",
    "providerRole": "output-provider",
    "status": "beta",
    "wave": "forms"
  },
  "docs": "Switch mapeia o componente Toggle do DS e gera input real para forms. Mantenha @import \"ds-tis/css\" como o primeiro import do CSS global.",
  "type": "registry:ui"
}