"use client"; import * as React from "react"; import { Toggle as TogglePrimitive } from "@base-ui/react/toggle"; import { ToggleGroup as ToggleGroupPrimitive } from "@base-ui/react/toggle-group"; import { type VariantProps } from "class-variance-authority"; import { cn } from "../../lib/utils"; import { toggleVariants } from "./toggle"; const ToggleGroupContext = React.createContext< VariantProps & { spacing?: number; orientation?: "horizontal" | "vertical"; } >({ size: "default", variant: "default", spacing: 0, orientation: "horizontal", }); function getJoinedOutlineGroupClassName({ orientation, spacing, variant, }: { orientation: "horizontal" | "vertical"; spacing: number; variant?: VariantProps["variant"]; }): string { if (spacing !== 0 || variant !== "outline") { return ""; } if (orientation === "vertical") { return "[&>[data-slot]]:relative [&>[data-slot]:has(+[data-slot])]:border-b-0 [&>[data-slot][aria-pressed=true]+[data-slot]]:border-t-[color:color-mix(in_oklab,var(--border)_10%,transparent)] [&>[data-slot][data-pressed]+[data-slot]]:border-t-[color:color-mix(in_oklab,var(--border)_10%,transparent)] [&>[data-slot][data-state=on]+[data-slot]]:border-t-[color:color-mix(in_oklab,var(--border)_10%,transparent)]"; } return "[&>[data-slot]]:relative [&>[data-slot]:has(+[data-slot])]:border-r-0 [&>[data-slot][aria-pressed=true]+[data-slot]]:border-l-[color:color-mix(in_oklab,var(--border)_10%,transparent)] [&>[data-slot][data-pressed]+[data-slot]]:border-l-[color:color-mix(in_oklab,var(--border)_10%,transparent)] [&>[data-slot][data-state=on]+[data-slot]]:border-l-[color:color-mix(in_oklab,var(--border)_10%,transparent)]"; } function ToggleGroup({ className, variant, size, spacing = 0, orientation = "horizontal", children, ...props }: ToggleGroupPrimitive.Props & VariantProps & { spacing?: number; orientation?: "horizontal" | "vertical"; }) { const joinedOutlineGroupClassName = getJoinedOutlineGroupClassName({ orientation, spacing, variant, }); return ( {children} ); } function ToggleGroupItem({ className, children, variant = "default", size = "default", ...props }: TogglePrimitive.Props & VariantProps) { const context = React.useContext(ToggleGroupContext); return ( {children} ); } export { ToggleGroup, ToggleGroupItem };