Initial commit

This commit is contained in:
kikootwo
2026-01-28 11:41:24 -05:00
commit a3ba192fbd
257 changed files with 89482 additions and 0 deletions
+70
View File
@@ -0,0 +1,70 @@
/**
* Component: Alert Modal
* Documentation: documentation/frontend/components.md
*/
'use client';
import React from 'react';
import { Modal } from './Modal';
import { Button } from './Button';
interface AlertModalProps {
isOpen: boolean;
onClose: () => void;
title: string;
message: string;
buttonText?: string;
variant?: 'info' | 'warning' | 'success' | 'danger';
}
export function AlertModal({
isOpen,
onClose,
title,
message,
buttonText = 'OK',
variant = 'info',
}: AlertModalProps) {
const iconMap = {
info: (
<svg className="w-6 h-6 text-blue-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
),
warning: (
<svg className="w-6 h-6 text-yellow-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
</svg>
),
success: (
<svg className="w-6 h-6 text-green-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
),
danger: (
<svg className="w-6 h-6 text-red-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
),
};
return (
<Modal isOpen={isOpen} onClose={onClose} title={title} size="sm" showCloseButton={false}>
<div className="space-y-6">
<div className="flex gap-4">
<div className="flex-shrink-0">
{iconMap[variant]}
</div>
<p className="text-gray-600 dark:text-gray-400 flex-1">{message}</p>
</div>
<div className="flex justify-end">
<Button onClick={onClose} variant="primary">
{buttonText}
</Button>
</div>
</div>
</Modal>
);
}