{"$schema":"https://ui.shadcn.com/schema/registry-item.json","name":"toggle-group","title":"Toggle Group","description":"Base UI-backed single or multiple pressed selection.","dependencies":["@base-ui/react@1.7.0","class-variance-authority@0.7.1"],"registryDependencies":["@siteplane/base","@siteplane/separator","@siteplane/toggle"],"files":[{"path":"packages/ui/src/components/toggle-group/toggle-group.tsx","content":"\"use client\";\n\nimport type { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { ToggleGroup as ToggleGroupPrimitive } from \"@base-ui/react/toggle-group\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { useResolvedControlSize } from \"../../system/provider/siteplane-ui-provider\";\nimport { cn, type WithStringClassName } from \"../../system/utils/cn\";\nimport { slotClass } from \"../../system/utils/slot-class\";\nimport { Separator } from \"../separator\";\nimport { KitSeparator } from \"../separator/separator-internal\";\nimport { type toggleVariants } from \"../toggle\";\nimport { KitToggle } from \"../toggle/toggle-internal\";\n\ntype ToggleGroupVisualProps = Pick<\n  VariantProps<typeof toggleVariants>,\n  \"size\" | \"variant\"\n>;\n\ntype ToggleGroupContextValue = ToggleGroupVisualProps & {\n  single?: boolean;\n};\n\nexport const ToggleGroupContext: React.Context<ToggleGroupContextValue> =\n  React.createContext<ToggleGroupContextValue>({\n    single: false,\n    variant: \"default\",\n  });\n\nexport function ToggleGroup({\n  className,\n  variant = \"default\",\n  size,\n  orientation = \"horizontal\",\n  multiple = false,\n  width = \"auto\",\n  wrap = false,\n  children,\n  ...props\n}: WithStringClassName<ToggleGroupPrimitive.Props> &\n  ToggleGroupVisualProps & {\n    width?: \"auto\" | \"full\";\n    wrap?: boolean;\n  }): React.ReactElement {\n  const single = !multiple;\n  const resolvedSize = useResolvedControlSize(size);\n\n  return (\n    <ToggleGroupPrimitive\n      className={cn(\n        slotClass(\"toggle-group\", props),\n        \"flex\",\n        width === \"full\" ? \"w-full\" : \"w-fit\",\n        wrap && \"flex-wrap\",\n        orientation === \"vertical\" && \"flex-col\",\n        variant === \"default\" && \"gap-0.5\",\n        className,\n      )}\n      data-size={resolvedSize}\n      data-slot=\"toggle-group\"\n      data-variant={variant}\n      multiple={multiple}\n      orientation={orientation}\n      {...props}\n    >\n      <ToggleGroupContext.Provider\n        value={{ single, size: resolvedSize, variant }}\n      >\n        {children}\n      </ToggleGroupContext.Provider>\n    </ToggleGroupPrimitive>\n  );\n}\n\nexport function ToggleGroupItem({\n  className,\n  children,\n  grow = false,\n  maxWidth,\n  padding = \"default\",\n  ...props\n}: WithStringClassName<TogglePrimitive.Props> & {\n  grow?: boolean;\n  maxWidth?: \"label\";\n  padding?: \"default\" | \"comfortable\";\n}): React.ReactElement {\n  const context = React.useContext(ToggleGroupContext);\n\n  return (\n    <KitToggle\n      className={cn(\n        grow && \"flex-1\",\n        maxWidth === \"label\" && \"max-w-40\",\n        className,\n      )}\n      data-size={context.size}\n      data-variant={context.variant}\n      padding={padding}\n      profile=\"group\"\n      size={context.size}\n      variant={context.variant}\n      {...props}\n    >\n      {maxWidth === \"label\" ? (\n        <span className=\"block min-w-0 max-w-full truncate\">{children}</span>\n      ) : (\n        children\n      )}\n    </KitToggle>\n  );\n}\n\nexport function ToggleGroupSeparator({\n  className,\n  orientation = \"vertical\",\n  ...props\n}: {\n  className?: string;\n} & React.ComponentProps<typeof Separator>): React.ReactElement {\n  return (\n    <KitSeparator\n      className={className}\n      orientation={orientation}\n      profile=\"toggle-group\"\n      {...props}\n    />\n  );\n}\n\nexport { ToggleGroupPrimitive };\n","type":"registry:ui","target":"~/src/siteplane/components/toggle-group/toggle-group.tsx"},{"path":"packages/ui/src/components/toggle-group/index.ts","content":"export * from \"./toggle-group\";\n","type":"registry:ui","target":"~/src/siteplane/components/toggle-group/index.ts"}],"type":"registry:ui","docs":"https://ui.siteplane.io/docs-markdown/components/toggle-group.md","categories":["Actions"],"meta":{"avoidWhen":["Avoid for switching content panels; use Tabs.","Avoid for a form choice that is submitted; use Radio Group or Checkbox Group."],"description":"Base UI-backed single or multiple pressed selection.","knownLimitations":["Unlike Radio Group, a single selected item can be cleared."],"providerNotes":[],"releaseStatus":"stable","searchTerms":["toggle-group","toggle group","toggle","group"],"useWhen":["Use for a set of related pressed-state buttons with single or multiple selection, such as text alignment or a view mode."]}}