import type { ReactNode } from 'react'; import React from 'react'; import classNames from 'classnames'; import { Toast as CoreToast } from '@shoptet/ui-core-web'; import type { Level } from '../../types'; import { H2 } from '../Typography/H2/H2'; export interface SystemMessageProps { level: Level; /** * The title of the system message. */ title?: string; /** * The description or content of the system message. */ description?: React.ReactNode; /** * Slot for additional controls or actions related to the system message. */ controls?: React.ReactNode; /** * Function to render the description content. */ renderDescription?: (children: Exclude) => React.ReactNode; } export const SystemMessage: React.FC = ({ level, title, description, controls, renderDescription, ...rest }) => { rest satisfies Record; const safeRenderDescription = typeof renderDescription === 'function' ? renderDescription : (children: Exclude) =>

{children}

; const renderedDescription = description && safeRenderDescription(description); return (
{title && ( {({ props: { id } }) => (

{title}

)}
)} {renderedDescription && ( {renderedDescription} )}
{controls}
); };