import { FC, ReactNode, useState } from 'react'; import HeadingButton, { type HeadingButtonProps, } from '../buttons/heading-button'; import styles from './widget.module.scss'; export type WidgetProps = Pick< HeadingButtonProps, 'expanded' | 'level' | 'title' > & { /** * The widget body. */ children: ReactNode; /** * Set additional classnames to the widget wrapper. */ className?: string; /** * Determine if the widget body should have borders. Default: false. */ withBorders?: boolean; }; /** * Widget component * * Render an expandable widget. */ const Widget: FC = ({ children, className = '', expanded = true, level, title, withBorders = false, }) => { const [isExpanded, setIsExpanded] = useState(expanded); const stateClass = isExpanded ? 'widget--expanded' : 'widget--collapsed'; const bordersClass = withBorders ? 'widget--has-borders' : 'widget--no-borders'; return (
{children}
); }; export default Widget;