/**
 * @file InputGroup.tsx
 * @input Uses React, StyleX, theme tokens, InputGroupContext, Field
 * @output Exports InputGroup component with group label/description ARIA wiring
 * @position Groups input with prefix/suffix addons; consumed by index.ts
 *
 * Children (TextInput, NumberInput, TimeInput, DateInput, Typeahead,
 * Selector, MultiSelector) consume the InputGroup context
 * to remove their own border/radius so the group container provides
 * the unified border treatment.
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /packages/core/src/InputGroup/InputGroup.doc.mjs
 * - /packages/core/src/InputGroup/InputGroup.test.tsx
 * - /packages/core/src/InputGroup/index.ts
 * - /apps/storybook/stories/InputGroup.stories.tsx
 * - /packages/cli/assets/templates/blocks/components/InputGroup/
 */
import { type ReactNode } from 'react';
import { type InputStatus } from '../Field';
import type { BaseProps } from '../BaseProps';
export type InputGroupSize = 'sm' | 'md' | 'lg';
export interface InputGroupProps extends Omit<BaseProps<HTMLDivElement>, 'children'> {
    /** Ref forwarded to the group container element */
    ref?: React.Ref<HTMLDivElement>;
    /**
     * Input and addon children.
     */
    children: ReactNode;
    /**
     * Label text for the group (required for accessibility).
     */
    label: string;
    /**
     * Whether to visually hide the label.
     * @default false
     */
    isLabelHidden?: boolean;
    /**
     * Description text displayed between the label and input group.
     */
    description?: string;
    /**
     * Whether the group is disabled.
     * @default false
     */
    isDisabled?: boolean;
    /**
     * Whether the field is optional.
     * @default false
     */
    isOptional?: boolean;
    /**
     * Whether the field is required.
     * @default false
     */
    isRequired?: boolean;
    /**
     * Default size for inputs in the group.
     * @default 'md'
     */
    size?: InputGroupSize;
    /**
     * Status indicator applied to the group border.
     */
    status?: InputStatus;
    /**
     * Tooltip text at the end of the label.
     */
    labelTooltip?: string;
    /**
     * Test ID for testing frameworks.
     */
    'data-testid'?: string;
}
/**
 * Groups an input with prefix/suffix addons in a visually connected
 * container with shared border and focus ring.
 *
 * @example
 * ```
 * <InputGroup label="Price">
 *   <InputGroupText>$</InputGroupText>
 *   <TextInput label="Price" isLabelHidden value={price} onChange={setPrice} />
 * </InputGroup>
 * ```
 */
export declare function InputGroup({ children, label, isLabelHidden, description, isDisabled, isOptional, isRequired, size: sizeProp, status, labelTooltip, xstyle, className, style, ref, 'data-testid': testId, ...rest }: InputGroupProps): import("react").JSX.Element;
export declare namespace InputGroup {
    var displayName: string;
}
//# sourceMappingURL=InputGroup.d.ts.map