feat(client): add client's page + CRUD operations modals

This commit is contained in:
2026-03-13 05:09:55 +08:00
parent 3948505a30
commit bbf7dfad2e
13 changed files with 588 additions and 14 deletions

View File

@@ -1,5 +1,7 @@
import React, { useEffect } from "react";
import { X } from "lucide-react";
import { Card } from "./ui/card";
import { Button } from "./ui/button";
interface ModalProps {
isOpen: boolean;
@@ -37,21 +39,23 @@ export const Modal: React.FC<ModalProps> = ({
className="fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm p-4"
onClick={onClose}
>
<div
className={`bg-white dark:bg-slate-900 rounded-2xl shadow-xl w-full ${maxWidth} overflow-hidden`}
<Card
className={`w-full ${maxWidth} bg-white dark:bg-slate-900 text-slate-900 dark:text-slate-100 border-0 shadow-xl overflow-hidden rounded-2xl`}
onClick={(e) => e.stopPropagation()}
>
<div className="flex items-center justify-between p-4 border-b border-slate-200 dark:border-slate-800 shrink-0">
<h2 className="text-lg font-semibold text-slate-800 dark:text-slate-100">
{title}
</h2>
<button
<Button
type="button"
variant="ghost"
size="icon"
onClick={onClose}
className="p-1.5 rounded-md text-slate-400 hover:text-slate-600 dark:hover:text-slate-200 hover:bg-slate-100 dark:hover:bg-slate-800 transition-colors"
className="h-8 w-8 rounded-md text-slate-400 hover:text-slate-600 dark:hover:text-slate-200 hover:bg-slate-100 dark:hover:bg-slate-800 transition-colors"
>
<X className="w-5 h-5" />
</button>
</Button>
</div>
<div className="flex-1 overflow-y-auto p-5">{children}</div>
@@ -61,7 +65,7 @@ export const Modal: React.FC<ModalProps> = ({
{footer}
</div>
)}
</div>
</Card>
</div>
);
};