import { useCallback, type FC, type SetStateAction } from 'react'; import { useIntl } from 'react-intl'; import { Heading, type HeadingProps, Icon } from '../../atoms'; import styles from './heading-button.module.scss'; export type HeadingButtonProps = Pick & { /** * Set additional classnames to the button. */ className?: string; /** * Accordion state. */ expanded: boolean; /** * Callback function to set accordion state on click. */ setExpanded: (value: SetStateAction) => void; /** * Accordion title. */ title: string; }; /** * HeadingButton component * * Render a button as accordion title to toggle body. */ export const HeadingButton: FC = ({ className = '', expanded, level, setExpanded, title, }) => { const intl = useIntl(); const btnClass = `${styles.wrapper} ${className}`; const iconState = expanded ? 'minus' : 'plus'; const titlePrefix = expanded ? intl.formatMessage({ defaultMessage: 'Collapse', description: 'HeadingButton: title prefix (expanded state)', id: 'UX9Bu8', }) : intl.formatMessage({ defaultMessage: 'Expand', description: 'HeadingButton: title prefix (collapsed state)', id: 'bcyOgC', }); const toggleExpand = useCallback( () => setExpanded((prev) => !prev), [setExpanded] ); return ( ); };