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 (
{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 (
{!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 (
{!hideDismissLabel && (
)}
{confirmLabel && (
)}
);
};