"use client"; import * as React from "react"; import { XIcon } from "lucide-react"; import { Dialog as DialogPrimitive } from "radix-ui"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; /** * Dialog — Shadcn 風 Modal(Radix Dialog 封裝) * * 來源:local-tool/frontend/src/components/ui/dialog.tsx(100% 沿用) * * 元件樹: * Dialog * ├── DialogTrigger * └── DialogContent(內含 DialogPortal + DialogOverlay + 預設 Close X) * ├── DialogHeader * │ ├── DialogTitle * │ └── DialogDescription * └── DialogFooter(可選 showCloseButton) * * 動畫依賴 tw-animate-css(`data-[state=open]:animate-in` 等 utility)。 */ function Dialog({ ...props }: React.ComponentProps) { return ; } function DialogTrigger({ ...props }: React.ComponentProps) { return ; } function DialogPortal({ ...props }: React.ComponentProps) { return ; } function DialogClose({ ...props }: React.ComponentProps) { return ; } function DialogOverlay({ className, ...props }: React.ComponentProps) { return ( ); } function DialogContent({ className, children, showCloseButton = true, ...props }: React.ComponentProps & { showCloseButton?: boolean; }) { return ( {children} {showCloseButton && ( Close )} ); } function DialogHeader({ className, ...props }: React.ComponentProps<"div">) { return (
); } function DialogFooter({ className, showCloseButton = false, children, ...props }: React.ComponentProps<"div"> & { showCloseButton?: boolean; }) { return (
{children} {showCloseButton && ( )}
); } function DialogTitle({ className, ...props }: React.ComponentProps) { return ( ); } function DialogDescription({ className, ...props }: React.ComponentProps) { return ( ); } export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };