/** * @fileoverview InputGroup primitive — composes an input with inline addons, buttons, * and prefix/suffix elements into a single visual unit. Supports focus, error, and * disabled states with consistent border and ring styling. Part of the Saasflare base component layer. * @module packages/ui/components/ui/input-group * @layer core * * @component * @example * import { InputGroup, InputGroupInput, InputGroupAddon } from '@saasflare/ui'; * * $ * * */ import * as React from "react"; import { type VariantProps } from "class-variance-authority"; import { type SaasflareComponentProps } from "../../providers"; import { Button } from "./button"; /** Props for {@link InputGroup}. Extends the Saasflare theme contract (surface/radius/animated). */ interface InputGroupProps extends Omit, keyof SaasflareComponentProps>, SaasflareComponentProps { } /** * InputGroup — bordered container that visually unifies an input with inline * addons, buttons, and prefix/suffix text. Owns the focus ring, error styling, * and the theme axes (surface/radius/animated) for the whole group. * * @component * @example * * $ * * */ declare function InputGroup({ className, surface, radius, animated, iconWeight, ...props }: InputGroupProps): import("react/jsx-runtime").JSX.Element; declare const inputGroupAddonVariants: (props?: ({ align?: "inline-end" | "inline-start" | "block-end" | "block-start" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; /** * InputGroupAddon — non-interactive slot for icons, text, buttons, or kbd hints * placed inline or block-aligned around the control. Clicking the addon focuses * the sibling input (unless the click lands on a nested button), while still * running any consumer-supplied `onClick`. * * @component * @example */ declare function InputGroupAddon({ className, align, onClick, ...props }: React.ComponentProps<"div"> & VariantProps): import("react/jsx-runtime").JSX.Element; declare const inputGroupButtonVariants: (props?: ({ size?: "xs" | "sm" | "icon-xs" | "icon-sm" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; /** * InputGroupButton — compact {@link Button} sized to sit flush inside an * InputGroup. Defaults to a ghost variant and the `xs` group sizing. Inherits * Button's theme axes; the group-local `size` vocabulary drives only the inline * geometry via `inputGroupButtonVariants`. * * @component * @example */ declare function InputGroupButton({ className, type, variant, size, ...props }: Omit, "size"> & VariantProps): import("react/jsx-runtime").JSX.Element; /** * InputGroupText — muted inline text/label slot (e.g. units, prefixes) rendered * as a `` inside an InputGroup. * * @component * @example https:// */ declare function InputGroupText({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element; /** * InputGroupInput — thin wrapper over {@link Input} stripped of its own border, * radius, and ring so it blends seamlessly into the surrounding InputGroup. The * theme axes (surface/radius/animated) are inherited from {@link Input}. * * @component * @example */ declare function InputGroupInput({ className, ...props }: React.ComponentProps<"input">): import("react/jsx-runtime").JSX.Element; /** * InputGroupTextarea — thin wrapper over {@link Textarea} stripped of its own * border, radius, ring, and resize handle so it blends into the InputGroup. The * theme axes (surface/radius/animated) are inherited from {@link Textarea}. * * @component * @example */ declare function InputGroupTextarea({ className, ...props }: React.ComponentProps<"textarea">): import("react/jsx-runtime").JSX.Element; export { InputGroup, type InputGroupProps, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea, };