/** * @fileoverview ButtonGroup primitive — groups multiple buttons or inputs into a * visually connected strip with shared border radii and separator support. * Supports horizontal and vertical orientations. Part of the Saasflare base component layer. * @module packages/ui/components/ui/button-group * @layer core * * @component * @example * import { ButtonGroup, ButtonGroupText } from '@saasflare/ui'; * * Left * Right * */ import * as React from "react"; import { type VariantProps } from "class-variance-authority"; import { type SaasflareComponentProps } from "../../providers"; import { Separator } from "./separator"; /** * cva variant builder for {@link ButtonGroup} — the `orientation` axis lays the * children out horizontally or vertically and flattens the adjacent corners of * connected children. Exported for consumers composing custom group shells. */ declare const buttonGroupVariants: (props?: ({ orientation?: "horizontal" | "vertical" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; /** * Props for {@link ButtonGroup}. * * Extends the native div props with the `orientation` variant from * {@link buttonGroupVariants} and {@link SaasflareComponentProps}. */ interface ButtonGroupProps extends Omit, keyof SaasflareComponentProps>, VariantProps, SaasflareComponentProps { } /** * Groups multiple buttons or inputs into a visually connected strip with shared * border radii. The `radius` axis drives the corner rounding of the whole group; * connected edges between children have their adjacent corners flattened. * * @example * * * * */ declare function ButtonGroup({ className, orientation, surface, radius, animated, iconWeight, ...props }: ButtonGroupProps): import("react/jsx-runtime").JSX.Element; /** Props for {@link ButtonGroupText}. */ interface ButtonGroupTextProps extends Omit, keyof SaasflareComponentProps>, SaasflareComponentProps { /** Render as the child element via Radix Slot instead of a `div`. */ asChild?: boolean; } /** * A bordered, muted-surface text/label cell for use inside a {@link ButtonGroup} * (e.g. an inline prefix/suffix). Carries its own `surface` and `radius` axes so * it visually matches the connected controls around it. * * @example * * https:// * * */ declare function ButtonGroupText({ className, asChild, surface, radius, animated, iconWeight, ...props }: ButtonGroupTextProps): import("react/jsx-runtime").JSX.Element; /** * A divider between segments of a {@link ButtonGroup}. Defaults to a vertical * orientation to suit the default horizontal group layout. Forwards all props to * the underlying {@link Separator}. * * @example * * * * * */ declare function ButtonGroupSeparator({ className, orientation, ...props }: React.ComponentProps): import("react/jsx-runtime").JSX.Element; export { ButtonGroup, type ButtonGroupProps, ButtonGroupSeparator, ButtonGroupText, type ButtonGroupTextProps, buttonGroupVariants, };