"use client" import * as React from "react" import * as DialogPrimitive from "@radix-ui/react-dialog" import { X, Minus, Plus } from "lucide-react" import { cn } from "@/lib/utils" const Dialog = DialogPrimitive.Root const DialogTrigger = DialogPrimitive.Trigger const DialogPortal = DialogPrimitive.Portal const DialogClose = DialogPrimitive.Close const DialogOverlay = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )) DialogOverlay.displayName = DialogPrimitive.Overlay.displayName const DialogContent = React.forwardRef< React.ElementRef, 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 = ({ className, ...props }: React.HTMLAttributes) => (
) DialogHeader.displayName = "DialogHeader" const DialogFooter = ({ className, ...props }: React.HTMLAttributes) => (
) DialogFooter.displayName = "DialogFooter" const DialogTitle = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )) DialogTitle.displayName = DialogPrimitive.Title.displayName const DialogDescription = React.forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => ( )) DialogDescription.displayName = DialogPrimitive.Description.displayName export { Dialog, DialogPortal, DialogOverlay, DialogTrigger, DialogClose, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, }