@payfit/unity-components
Version:
51 lines (50 loc) • 2.57 kB
TypeScript
import { DisclosureGroupProps } from 'react-aria-components';
import { SpacingToken } from '../../utils/spacing.js';
import { ResponsiveValue } from '../../hooks/use-responsive-value.js';
export interface CollapsibleGroupProps extends Omit<DisclosureGroupProps, 'className' | 'style'> {
/**
* Space between each `Collapsible` item.
* Use a Unity spacing token, or a responsive spacing value when the group needs different density across breakpoints.
*/
gap?: SpacingToken | ResponsiveValue<SpacingToken>;
}
/**
* Groups related `Collapsible` items into one accessible accordion pattern.
* Use `CollapsibleGroup` when several sections belong to the same workflow and users need to scan section titles before opening the relevant details.
* @param {CollapsibleGroupProps} props - React Aria disclosure group props, plus the Unity `gap` spacing prop.
* @example
* ```tsx
* import {
* Collapsible,
* CollapsibleContent,
* CollapsibleGroup,
* CollapsibleTitle,
* } from '@payfit/unity-components'
*
* function Example() {
* return (
* <CollapsibleGroup defaultExpandedKeys={['balance']}>
* <Collapsible id="balance">
* <CollapsibleTitle>Estimated balance</CollapsibleTitle>
* <CollapsibleContent>12.5 days available</CollapsibleContent>
* </Collapsible>
* <Collapsible id="requests">
* <CollapsibleTitle>Pending requests</CollapsibleTitle>
* <CollapsibleContent>2 requests waiting for approval</CollapsibleContent>
* </Collapsible>
* </CollapsibleGroup>
* )
* }
* ```
* @remarks
* - Set `defaultExpandedKeys` for uncontrolled initial state.
* - Set `expandedKeys` with `onExpandedChange` when another part of the interface owns the open state.
* - Set `allowsMultipleExpanded` when users need to compare several sections at the same time.
* - Set `isDisabled` to make every child disclosure unavailable.
* @see {@link CollapsibleGroupProps} for all available props.
* @see Source code in {@link https://github.com/PayFit/hr-apps/tree/master/libs/shared/unity/components/src/components/collapsible-group GitHub}
* @see Design specs {@link https://www.figma.com/design/d03KzkEEEfAS6DfaP8HYeD/Accordion Figma}
* @see Developer docs in {@link https://unity-components.payfit.io/?path=/docs/component-reference-collapsiblegroup--docs unity-components.payfit.io}
*/
declare const CollapsibleGroup: import('react').ForwardRefExoticComponent<CollapsibleGroupProps & import('react').RefAttributes<HTMLDivElement>>;
export { CollapsibleGroup };