'use client' import classNames from 'classnames' import { createRef, FC, HTMLAttributes, ReactNode, useCallback, useState } from 'react' import type { TMessageboxSkin } from 'shared-types' import { PktIcon } from '..' export type { TMessageboxSkin } export interface IPktMessagebox extends Omit, 'title'> { skin?: TMessageboxSkin title?: ReactNode compact?: boolean closable?: boolean onClose?: () => void } export const PktMessagebox: FC = ({ children, className, skin, title, compact, closable, onClose, ...props }: IPktMessagebox) => { const [closed, setClosed] = useState(false) const classes = { 'pkt-messagebox': true, 'pkt-messagebox--compact': compact, [`pkt-messagebox--${skin}`]: skin, 'pkt-messagebox--closable': closable, 'pkt-hide': closed, } const componentRootRef = createRef() const close = useCallback(() => { setClosed(true) if (onClose) { onClose() } }, [setClosed, onClose]) return (
{closable && (
)} {title &&
{title}
}
{children}
) } PktMessagebox.displayName = 'PktMessagebox'