import type { MouseEventHandler } from 'react'; import { useCallback, useRef, useId } from 'react'; import { FormattedMessage } from 'react-intl'; export enum BannerVariant { Warning = 'warning', Filter = 'filter', } const stopPropagation: MouseEventHandler = (e) => { e.stopPropagation(); }; export const StatusBanner: React.FC<{ children: React.ReactNode; variant: BannerVariant; expanded?: boolean; onClick?: () => void; }> = ({ children, variant, expanded, onClick }) => { const descriptionId = useId(); const buttonRef = useRef(null); const forwardClick = useCallback((e) => { if ( buttonRef.current && e.target !== buttonRef.current && !buttonRef.current.contains(e.target as Node) ) { buttonRef.current.click(); buttonRef.current.focus(); } }, []); return ( // Element clicks are passed on to button // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions

{children}

); };