import { Children } from 'react'; import Icon from '../Icon'; import ScreenReaderText from '../ScreenReaderText'; import { AbstractNotificationBannerProps, AbstractNotificationBannerButtonsProps } from './types'; import clsx from 'clsx'; const Buttons = ({ children }: AbstractNotificationBannerButtonsProps) => { return (
{children}
); }; const AbstractNotificationBanner = ({ children, className, hasColourIcon, hasInverseIcon, icon, isDismissable, isHidden, title = 'Information', ...props }: AbstractNotificationBannerProps) => { const content: React.ReactElement[] = []; let buttons; Children.forEach(children, (child) => { const thisChild = child as React.ReactElement; if (thisChild && thisChild.type === Buttons) { buttons = thisChild; } else { content.push(thisChild); } }); return (

{title}

{icon && }
{content}
{isDismissable && } {buttons}
); }; AbstractNotificationBanner.displayName = 'AbstractNotificationBanner'; AbstractNotificationBanner.Buttons = Buttons; Buttons.displayName = 'Buttons'; export default AbstractNotificationBanner;