{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "toggle-group",
  "type": "registry:ui",
  "dependencies": [
    "@kobalte/core"
  ],
  "registryDependencies": [
    "@gc-solid/toggle"
  ],
  "files": [
    {
      "path": "ui/toggle-group.tsx",
      "content": "import type { JSX, ValidComponent } from \"solid-js\"\nimport { createContext, mergeProps, splitProps, useContext } from \"solid-js\"\n\nimport type { PolymorphicProps } from \"@kobalte/core/polymorphic\"\nimport * as ToggleGroupPrimitive from \"@kobalte/core/toggle-group\"\nimport type { VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { toggleVariants } from \"@/components/ui/toggle\"\n\ntype ToggleGroupContextValue = VariantProps<typeof toggleVariants> & {\n  spacing?: number\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue>({\n  size: \"default\",\n  variant: \"default\",\n  spacing: 0\n})\n\ntype ToggleGroupRootProps<T extends ValidComponent = \"div\"> =\n  ToggleGroupPrimitive.ToggleGroupRootProps<T> &\n    VariantProps<typeof toggleVariants> & {\n      class?: string | undefined\n      children?: JSX.Element\n      spacing?: number\n    }\n\nconst ToggleGroup = <T extends ValidComponent = \"div\">(\n  rawProps: PolymorphicProps<T, ToggleGroupRootProps<T>>\n) => {\n  const props = mergeProps({ spacing: 0 }, rawProps)\n  const [local, others] = splitProps(props as ToggleGroupRootProps, [\n    \"class\",\n    \"children\",\n    \"size\",\n    \"variant\",\n    \"spacing\"\n  ])\n\n  return (\n    <ToggleGroupPrimitive.Root\n      class={cn(\n        \"group/toggle-group flex w-fit items-center gap-[--spacing(var(--gap))] rounded-md data-[spacing=default]:data-[variant=outline]:shadow-xs\",\n        local.class\n      )}\n      data-size={local.size}\n      data-slot=\"toggle-group\"\n      data-spacing={local.spacing}\n      data-variant={local.variant}\n      style={{ \"--gap\": local.spacing }}\n      {...others}\n    >\n      <ToggleGroupContext.Provider\n        value={{\n          get size() {\n            return local.size\n          },\n          get variant() {\n            return local.variant\n          },\n          get spacing() {\n            return local.spacing\n          }\n        }}\n      >\n        {local.children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive.Root>\n  )\n}\n\ntype ToggleGroupItemProps<T extends ValidComponent = \"button\"> =\n  ToggleGroupPrimitive.ToggleGroupItemProps<T> &\n    VariantProps<typeof toggleVariants> & {\n      class?: string | undefined\n      children?: JSX.Element\n    }\n\nconst ToggleGroupItem = <T extends ValidComponent = \"button\">(\n  props: PolymorphicProps<T, ToggleGroupItemProps<T>>\n) => {\n  const [local, others] = splitProps(props as ToggleGroupItemProps, [\n    \"class\",\n    \"children\",\n    \"size\",\n    \"variant\"\n  ])\n  const context = useContext(ToggleGroupContext)\n  return (\n    <ToggleGroupPrimitive.Item\n      class={cn(\n        toggleVariants({\n          size: context.size || local.size,\n          variant: context.variant || local.variant\n        }),\n        \"w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10\",\n        \"data-[spacing=0]:data-[variant=outline]:border-l-0 data-[spacing=0]:rounded-none data-[spacing=0]:shadow-none data-[spacing=0]:last:rounded-r-md data-[spacing=0]:data-[variant=outline]:first:border-l data-[spacing=0]:first:rounded-l-md\",\n        local.class\n      )}\n      data-size={context.size || local.size}\n      data-slot=\"toggle-group-item\"\n      data-spacing={context.spacing}\n      data-variant={context.variant || local.variant}\n      {...others}\n    >\n      {local.children}\n    </ToggleGroupPrimitive.Item>\n  )\n}\n\nexport { ToggleGroup, ToggleGroupItem }\n",
      "type": "registry:ui"
    }
  ]
}