
import { Styles } from "../../../tasty/styles/types.js";
import { BaseProps, BasePropsWithoutChildren, OuterStyleProps } from "../../../tasty/types.js";
import "../../../tasty/index.js";
import { CubeItemButtonProps } from "../../actions/ItemButton/ItemButton.js";
import "../../actions/ItemButton/index.js";
import * as react from "react";
import { Key, ReactNode } from "react";

//#region src/components/content/Disclosure/Disclosure.d.ts
interface DisclosureStateContext {
  isExpanded: boolean;
  toggle: () => void;
  expand: () => void;
  collapse: () => void;
}
interface CubeDisclosureProps extends BasePropsWithoutChildren, OuterStyleProps {
  /** Controls expanded state in controlled mode */
  isExpanded?: boolean;
  /** Initial expanded state in uncontrolled mode */
  defaultExpanded?: boolean;
  /** Callback fired when expanded state changes */
  onExpandedChange?: (isExpanded: boolean) => void;
  /** Disables trigger interactions and force-closes the content */
  isDisabled?: boolean;
  /** Render-prop alternative to achieve custom trigger markup */
  children?: ReactNode | ((state: DisclosureStateContext) => ReactNode);
  /** Visual shape variant */
  shape?: 'default' | 'card' | 'sharp';
  /** Duration for DisplayTransition animation in milliseconds */
  transitionDuration?: number;
}
interface CubeDisclosureTriggerProps extends Omit<CubeItemButtonProps, 'onPress' | 'isDisabled'> {
  /** Children content for the trigger */
  children?: ReactNode;
}
interface CubeDisclosureContentProps extends BaseProps {
  /** Children content for the panel */
  children?: ReactNode;
}
interface CubeDisclosureGroupProps extends BaseProps, OuterStyleProps {
  /** Allow more than one disclosure to be open */
  allowsMultipleExpanded?: boolean;
  /** Controlled expanded keys */
  expandedKeys?: Iterable<Key>;
  /** Uncontrolled default expanded keys */
  defaultExpandedKeys?: Iterable<Key>;
  /** Change handler providing the full expanded keys Set */
  onExpandedChange?: (keys: Set<Key>) => void;
  /** Disable all disclosures within group and force-close their content */
  isDisabled?: boolean;
  /** Props forwarded to all ItemButton triggers in the group */
  triggerProps?: Partial<CubeItemButtonProps>;
  /** Optional panel styles applied to all Content panels in the group */
  contentStyles?: Styles;
  children: ReactNode;
}
interface CubeDisclosureItemProps extends Omit<BasePropsWithoutChildren, 'id'>, OuterStyleProps {
  /** Unique identifier for the disclosure item in a group */
  id?: Key;
  /** Children content */
  children?: ReactNode;
  /** Disables trigger interactions and force-closes the content */
  isDisabled?: boolean;
  /** Controls expanded state in controlled mode */
  isExpanded?: boolean;
  /** Initial expanded state in uncontrolled mode */
  defaultExpanded?: boolean;
  /** Callback fired when expanded state changes */
  onExpandedChange?: (isExpanded: boolean) => void;
  /** Visual shape variant */
  shape?: 'default' | 'card' | 'sharp';
}
declare const _Disclosure: react.ForwardRefExoticComponent<CubeDisclosureProps & react.RefAttributes<HTMLDivElement>> & {
  Trigger: react.ForwardRefExoticComponent<Omit<CubeDisclosureTriggerProps, "ref"> & react.RefAttributes<HTMLButtonElement>>;
  Content: react.ForwardRefExoticComponent<CubeDisclosureContentProps & react.RefAttributes<HTMLDivElement>>;
  Group: react.ForwardRefExoticComponent<CubeDisclosureGroupProps & react.RefAttributes<HTMLDivElement>>;
  Item: react.ForwardRefExoticComponent<CubeDisclosureItemProps & react.RefAttributes<HTMLDivElement>>;
};
//#endregion
export { CubeDisclosureContentProps, CubeDisclosureGroupProps, CubeDisclosureItemProps, CubeDisclosureProps, CubeDisclosureTriggerProps, DisclosureStateContext, _Disclosure };
//# sourceMappingURL=Disclosure.d.ts.map