diff --git a/src/components/modal/ConfirmationModal.tsx b/src/components/modal/ConfirmationModal.tsx index 3ed33650..9cf17008 100644 --- a/src/components/modal/ConfirmationModal.tsx +++ b/src/components/modal/ConfirmationModal.tsx @@ -31,6 +31,68 @@ export interface ConfirmationModalProps { iconPosition?: IconPosition; } +const iconConfig = { + info: { + icon: 'material-symbols:info-outline-rounded', + iconClassName: 'text-info-content', + bgClassName: 'bg-info', + outerRingClassName: 'bg-info/20', + borderClassName: 'border-info', + }, + success: { + icon: 'heroicons:check', + iconClassName: 'text-white', + bgClassName: 'bg-[#00D390]', + outerRingClassName: 'bg-[#00D3901F]', + borderClassName: 'border-[#CCF7EB]', + }, + error: { + icon: 'solar:danger-triangle-linear', + iconClassName: 'text-error-content', + bgClassName: 'bg-[#f03338]', + outerRingClassName: 'bg-[#f3cdcd]', + borderClassName: 'border-[#fff0ef]', + }, +} as const; + +const ConfirmationModalIcon = ({ + type, + size = 24, +}: { + type: 'info' | 'success' | 'error'; + size?: number; +}) => { + const config = iconConfig[type]; + + return ( +
+
+
+
+ +
+
+
+
+ ); +}; + const ConfirmationModal = ({ ref, type = 'info', @@ -41,7 +103,7 @@ const ConfirmationModal = ({ secondaryButton, className, children, - iconSize = 64, + iconSize = 32, iconPosition = 'center', }: ConfirmationModalProps) => { const [isPrimaryButtonLoading, setIsPrimaryButtonLoading] = useState(false); @@ -65,42 +127,8 @@ const ConfirmationModal = ({
{iconPosition === 'center' ? ( <> -
- {type === 'info' && ( - - )} - - {type === 'success' && ( - - )} - - {type === 'error' && ( - - )} +
+

@@ -120,42 +148,8 @@ const ConfirmationModal = ({ 'flex-row-reverse': iconPosition === 'right', })} > -

- {type === 'info' && ( - - )} - - {type === 'success' && ( - - )} - - {type === 'error' && ( - - )} +
+
@@ -176,7 +170,7 @@ const ConfirmationModal = ({ {secondaryButton && secondaryButton.text && (