{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "Toggle",
  "dependencies": [
    "@base-ui/react",
    "cn",
    "rescript-base-ui"
  ],
  "files": [
    {
      "path": "registry/base/ui/Toggle.res",
      "content": "@@directive(\"'use client'\")\n\n@module(\"cn\")\nexternal cn: (string, option<string>) => string = \"cn\"\n\nmodule Variant = {\n  @unboxed\n  type t =\n    | @as(\"default\") Default\n    | @as(\"outline\") Outline\n}\n\nmodule Size = {\n  @unboxed\n  type t =\n    | @as(\"default\") Default\n    | @as(\"sm\") Sm\n    | @as(\"lg\") Lg\n}\n\nlet toggleVariantClass = (~variant: Variant.t) =>\n  switch variant {\n  | Outline => \"border-input hover:bg-muted border bg-transparent\"\n  | Default => \"bg-transparent\"\n  }\n\nlet toggleSizeClass = (~size: Size.t) =>\n  switch size {\n  | Sm => \"h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5\"\n  | Lg => \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\"\n  | Default => \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2\"\n  }\n\nlet toggleVariants = (~variant=Variant.Default, ~size=Size.Default) => {\n  let base = \"hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-muted gap-1 rounded-lg text-sm font-medium transition-all [&_svg:not([class*='size-'])]:size-4 group/toggle hover:bg-muted inline-flex items-center justify-center whitespace-nowrap outline-none focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\"\n  `${base} ${toggleVariantClass(~variant)} ${toggleSizeClass(~size)}`\n}\n\ntype props<'value> = {...BaseUi.Toggle.props<'value>, variant?: Variant.t, size?: Size.t}\n\nlet toBaseUiProps: props<'value> => BaseUi.Toggle.props<\n  'value,\n> = %raw(`({className, variant, size, ...props}) => props`)\n\n@react.componentWithProps(props)\nlet make = (props: props<'value>) => {\n  let dataSlot = props.dataSlot->Option.getOr(\"toggle\")\n  let variant = props.variant->Option.getOr(Variant.Default)\n  let size = props.size->Option.getOr(Size.Default)\n  <BaseUi.Toggle\n    {...toBaseUiProps(props)}\n    dataSlot\n    className={cn(toggleVariants(~variant, ~size), props.className)}\n  />\n}\n",
      "type": "registry:file",
      "target": "@ui/Toggle.res"
    }
  ],
  "type": "registry:ui"
}