@vertisanpro/flowbite-react
Version:
Non-Official React components built for Flowbite and Tailwind CSS
17 lines (16 loc) • 1.38 kB
JavaScript
import { HiX } from '@vertisanpro/react-icons/hi';
import { twMerge } from '@vertisanpro/tailwind-merge';
import React from 'react';
import { mergeDeep } from '../../helpers/merge-deep';
import { getTheme } from '../../theme-store';
export const Alert = ({ additionalContent, children, className, color = 'info', icon: Icon, onDismiss, rounded = true, theme: customTheme = {}, withBorderAccent, ...props }) => {
const theme = mergeDeep(getTheme().alert, customTheme);
return (React.createElement("div", { className: twMerge(theme.base, theme.color[color], rounded && theme.rounded, withBorderAccent && theme.borderAccent, className), role: "alert", ...props },
React.createElement("div", { className: theme.wrapper, "data-testid": "flowbite-alert-wrapper" },
Icon && React.createElement(Icon, { className: theme.icon, "data-testid": "flowbite-alert-icon" }),
React.createElement("div", null, children),
typeof onDismiss === 'function' && (React.createElement("button", { "aria-label": "Dismiss", className: twMerge(theme.closeButton.base, theme.closeButton.color[color]), onClick: onDismiss, type: "button" },
React.createElement(HiX, { "aria-hidden": true, className: theme.closeButton.icon })))),
additionalContent && React.createElement("div", null, additionalContent)));
};
Alert.displayName = 'Alert';