/**
* @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, };