/**
 * @file Collapsible.tsx
 * @input Uses React, StyleX, useCollapsible hook, CollapsibleGroupPresentationContext, getIcon, theme tokens
 * @output Exports Collapsible component and CollapsibleProps
 * @position Collapsible content primitive — trigger toggles visibility of children
 *
 * Collapsible is a standalone primitive that makes any content collapsible.
 * It renders a trigger area (always visible) and a content area that toggles.
 * Handles state management, accessibility (aria-expanded + aria-controls linking
 * the trigger to its content region), and chevron indicator.
 *
 * Works standalone or coordinated by CollapsibleGroup via the `value` prop.
 * When the surrounding CollapsibleGroup sets `hasDividers`, each Collapsible
 * draws its own row chrome (borderBlockStart suppressed on :first-child, plus
 * density padding) from CollapsibleGroupPresentationContext — StyleX has no
 * child selectors, so the group cannot draw it from outside. The presentation
 * context is reset around children so nested collapsibles stay chrome-free.
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /packages/core/src/Collapsible/index.ts (exports)
 * - /packages/core/src/Collapsible/Collapsible.doc.mjs
 * - /apps/storybook/stories/Collapsible.stories.tsx
 * - /packages/cli/assets/templates/blocks/components/Collapsible/ (showcase blocks)
 */
import { type ReactNode } from 'react';
import type { BaseProps } from '../BaseProps';
export interface CollapsibleProps extends BaseProps {
    /** Ref forwarded to the root element */
    ref?: React.Ref<HTMLDivElement>;
    /**
     * Content shown in the trigger area (always visible).
     * Rendered inside a button with aria-expanded and a chevron indicator.
     */
    trigger: ReactNode;
    /**
     * Content that collapses/expands when the trigger is clicked.
     */
    children?: ReactNode;
    /**
     * Default open state for uncontrolled usage.
     * @default true
     */
    defaultIsOpen?: boolean;
    /**
     * Controlled open state. When provided, the component is fully controlled.
     */
    isOpen?: boolean;
    /**
     * Whether the collapsible is disabled. A disabled item can't be toggled —
     * its trigger is non-interactive and dimmed. Following the system-wide
     * disabled convention, the trigger uses `aria-disabled` (not the native
     * `disabled` attribute) and drops out of the tab order, staying perceivable
     * to assistive tech. The content stays in whatever open state it was;
     * disabling doesn't collapse an already-open item.
     * @default false
     */
    isDisabled?: boolean;
    /**
     * Callback when the open state changes.
     */
    onOpenChange?: (isOpen: boolean) => void;
    /**
     * Unique identifier for this collapsible within an CollapsibleGroup.
     * Required when using inside a group for coordination.
     */
    value?: string;
    /**
     * Test ID for the collapsible element.
     */
    'data-testid'?: string;
}
/**
 * A primitive that makes any content collapsible.
 *
 * Renders a trigger area (always visible) with a chevron indicator,
 * and a content area that toggles visibility on click.
 * Handles its own state by default, or defers to CollapsibleGroup
 * when a `value` prop is provided and a group is present.
 *
 * Use inside Card for elevated collapsible sections.
 * Wrap multiple instances in CollapsibleGroup for accordion behavior.
 *
 * @example
 * ```
 * <Collapsible trigger="Details">
 *   <Text type="body">Collapsible content</Text>
 * </Collapsible>
 * <Card>
 *   <Collapsible trigger="Settings">
 *     <SettingsForm />
 *   </Collapsible>
 * </Card>
 * <CollapsibleGroup type="single" defaultValue="general">
 *   <VStack gap={2}>
 *     <Card>
 *       <Collapsible trigger="General" value="general">
 *         <GeneralSettings />
 *       </Collapsible>
 *     </Card>
 *     <Card>
 *       <Collapsible trigger="Advanced" value="advanced">
 *         <AdvancedSettings />
 *       </Collapsible>
 *     </Card>
 *   </VStack>
 * </CollapsibleGroup>
 * ```
 */
export declare function Collapsible({ trigger, children, defaultIsOpen, isOpen: controlledIsOpen, isDisabled, onOpenChange, value, ref, xstyle, className, style, ...props }: CollapsibleProps): import("react").JSX.Element;
export declare namespace Collapsible {
    var displayName: string;
}
//# sourceMappingURL=Collapsible.d.ts.map