From 9f7af2e945c2d9f7ce73c9a0287d1d346f6cc5de Mon Sep 17 00:00:00 2001 From: joonhoekim <26rote@gmail.com> Date: Fri, 24 Oct 2025 19:45:29 +0900 Subject: (김준회) 돌체: 리비전 R00 입력가능하도록 변경, dialog 외부클릭 종료기능 제거하고 투명도조절기능 추가 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/ui/dialog.tsx | 98 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 77 insertions(+), 21 deletions(-) (limited to 'components/ui/dialog.tsx') diff --git a/components/ui/dialog.tsx b/components/ui/dialog.tsx index 1647513e..975f3a39 100644 --- a/components/ui/dialog.tsx +++ b/components/ui/dialog.tsx @@ -2,10 +2,11 @@ import * as React from "react" import * as DialogPrimitive from "@radix-ui/react-dialog" -import { X } from "lucide-react" +import { X, Minus, Plus } from "lucide-react" import { cn } from "@/lib/utils" + const Dialog = DialogPrimitive.Root const DialogTrigger = DialogPrimitive.Trigger @@ -31,26 +32,81 @@ DialogOverlay.displayName = DialogPrimitive.Overlay.displayName const DialogContent = React.forwardRef< React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( - - - - {children} - - - Close - - - -)) + React.ComponentPropsWithoutRef & { + opacityControl?: boolean + } +>(({ className, children, opacityControl = true, ...props }, ref) => { + const [opacity, setOpacity] = React.useState(1) + + const increaseOpacity = () => setOpacity(prev => Math.min(1, prev + 0.1)) + const decreaseOpacity = () => setOpacity(prev => Math.max(0.1, prev - 0.1)) + + return ( + + + e.preventDefault()} // 바깥 클릭으로 닫히는 기능 제거 + {...props} + > +
+ {/* 고정 헤더 영역 */} +
+ {/* 왼쪽: 빈 공간 */} +
+ {/* 드래그 기능 제거됨 */} +
+ + {/* 중앙: 투명도 조절 */} +
+ {opacityControl && ( +
+ + + {Math.round(opacity * 100)}% + + +
+ )} +
+ + {/* 오른쪽: 닫기 버튼 */} +
+ + + Close + +
+
+ + {/* 스크롤 가능한 컨텐츠 영역 */} +
+ {children} +
+
+
+
+ ) +}) DialogContent.displayName = DialogPrimitive.Content.displayName const DialogHeader = ({ -- cgit v1.2.3