import type { FC } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCircleExclamation, faCircleCheck, faCircleInfo } from "@fortawesome/pro-duotone-svg-icons"; const AlertCircle: FC<{ className?: string }> = ({ className }) => ; const CheckCircle: FC<{ className?: string }> = ({ className }) => ; const InfoCircle: FC<{ className?: string }> = ({ className }) => ; import { Avatar } from "@/components/base/avatar/avatar"; import { Button } from "@/components/base/buttons/button"; import { CloseButton } from "@/components/base/buttons/close-button"; import { ProgressBar } from "@/components/base/progress-indicators/progress-indicators"; import { FeaturedIcon } from "@/components/foundations/featured-icon/featured-icon"; import { cx } from "@/utils/cx"; const iconMap = { default: InfoCircle, brand: InfoCircle, gray: InfoCircle, error: AlertCircle, warning: AlertCircle, success: CheckCircle, }; interface IconNotificationProps { title: string; description: string; confirmLabel?: string; dismissLabel?: string; hideDismissLabel?: boolean; icon?: FC<{ className?: string }>; color?: "default" | "brand" | "gray" | "error" | "warning" | "success"; progress?: number; onClose?: () => void; onConfirm?: () => void; } export const IconNotification = ({ title, description, confirmLabel, dismissLabel = "Dismiss", hideDismissLabel, icon, progress, onClose, onConfirm, color = "default", }: IconNotificationProps) => { const showProgress = typeof progress === "number"; return (

{title}

{description}

{showProgress && `${value}% uploaded...`} />}
{!hideDismissLabel && ( )} {confirmLabel && ( )}
); }; interface AvatarNotificationProps { name: string; content: string; avatar: string; date: string; confirmLabel: string; dismissLabel?: string; hideDismissLabel?: boolean; icon?: FC<{ className?: string }>; color?: "default" | "brand" | "gray" | "error" | "warning" | "success"; onClose?: () => void; onConfirm?: () => void; } export const AvatarNotification = ({ name, content, avatar, confirmLabel, dismissLabel = "Dismiss", hideDismissLabel, date, onClose, onConfirm, }: AvatarNotificationProps) => { return (

{name}

{date}

{content}

{!hideDismissLabel && ( )} {confirmLabel && ( )}
); }; interface ImageNotificationProps { title: string; description: string; confirmLabel: string; dismissLabel?: string; hideDismissLabel?: boolean; imageMobile: string; imageDesktop: string; onClose?: () => void; onConfirm?: () => void; } export const ImageNotification = ({ title, description, confirmLabel, dismissLabel = "Dismiss", hideDismissLabel, imageMobile, imageDesktop, onClose, onConfirm, }: ImageNotificationProps) => { return (

{title}

{description}

Image Desktop
{!hideDismissLabel && ( )} {confirmLabel && ( )}
); };