From 1e22168246baa750f0a5aa7d8f0616b5e4eb9322 Mon Sep 17 00:00:00 2001 From: JiHo Jeon Date: Wed, 8 Jul 2026 10:45:19 +0900 Subject: [PATCH 1/3] =?UTF-8?q?chore:=20shadcn=20Dialog=C2=B7=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=ED=8F=BC=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#13)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 워크스페이스 생성 폼에 사용할 dialog / input / textarea / label 추가 --- src/shared/ui/dialog.tsx | 145 +++++++++++++++++++++++++++++++++++++ src/shared/ui/input.tsx | 19 +++++ src/shared/ui/label.tsx | 21 ++++++ src/shared/ui/textarea.tsx | 18 +++++ 4 files changed, 203 insertions(+) create mode 100644 src/shared/ui/dialog.tsx create mode 100644 src/shared/ui/input.tsx create mode 100644 src/shared/ui/label.tsx create mode 100644 src/shared/ui/textarea.tsx diff --git a/src/shared/ui/dialog.tsx b/src/shared/ui/dialog.tsx new file mode 100644 index 0000000..89fdda6 --- /dev/null +++ b/src/shared/ui/dialog.tsx @@ -0,0 +1,145 @@ +'use client'; + +import * as React from 'react'; +import { Dialog as DialogPrimitive } from 'radix-ui'; + +import { cn } from '@/shared/lib/utils'; +import { Button } from '@/shared/ui/button'; +import { XIcon } from 'lucide-react'; + +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 && ( + + + + )} + + + ); +} + +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, +}; diff --git a/src/shared/ui/input.tsx b/src/shared/ui/input.tsx new file mode 100644 index 0000000..4bfaadd --- /dev/null +++ b/src/shared/ui/input.tsx @@ -0,0 +1,19 @@ +import * as React from 'react'; + +import { cn } from '@/shared/lib/utils'; + +function Input({ className, type, ...props }: React.ComponentProps<'input'>) { + return ( + + ); +} + +export { Input }; diff --git a/src/shared/ui/label.tsx b/src/shared/ui/label.tsx new file mode 100644 index 0000000..9a4e3ba --- /dev/null +++ b/src/shared/ui/label.tsx @@ -0,0 +1,21 @@ +'use client'; + +import * as React from 'react'; +import { Label as LabelPrimitive } from 'radix-ui'; + +import { cn } from '@/shared/lib/utils'; + +function Label({ className, ...props }: React.ComponentProps) { + return ( + + ); +} + +export { Label }; diff --git a/src/shared/ui/textarea.tsx b/src/shared/ui/textarea.tsx new file mode 100644 index 0000000..274140e --- /dev/null +++ b/src/shared/ui/textarea.tsx @@ -0,0 +1,18 @@ +import * as React from 'react'; + +import { cn } from '@/shared/lib/utils'; + +function Textarea({ className, ...props }: React.ComponentProps<'textarea'>) { + return ( +