UNPKG

@loke/design-system

Version:

A design system with individually importable components

3 lines (2 loc) 3.41 kB
"use client"; import{Button}from"@loke/design-system/button";import{cn}from"@loke/design-system/cn";import{XIcon}from"@loke/icons";import*as DialogPrimitive from"@loke/ui/dialog";import{forwardRef}from"react";import{jsx,jsxs}from"react/jsx-runtime";function Dialog({...props}){return jsx(DialogPrimitive.Root,{"data-slot":"dialog",...props})}var DialogTrigger=forwardRef((props,ref)=>jsx(DialogPrimitive.Trigger,{"data-slot":"dialog-trigger",ref,...props}));DialogTrigger.displayName=DialogPrimitive.Trigger.displayName;function DialogPortal({...props}){return jsx(DialogPrimitive.Portal,{"data-slot":"dialog-portal",...props})}var DialogOverlay=forwardRef(({className,...props},ref)=>jsx(DialogPrimitive.Overlay,{className:cn("data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 isolate z-50 bg-black/10 duration-100 data-closed:animate-out data-open:animate-in supports-backdrop-filter:backdrop-blur-xs",className),"data-slot":"dialog-overlay",ref,...props}));DialogOverlay.displayName=DialogPrimitive.Overlay.displayName;var DialogContent=forwardRef(({className,children,showCloseButton=!0,forceMount,...props},ref)=>jsxs(DialogPortal,{forceMount,children:[jsx(DialogOverlay,{forceMount}),jsxs(DialogPrimitive.Content,{className:cn("data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-sm outline-none ring-1 ring-foreground/10 duration-100 data-closed:animate-out data-open:animate-in sm:max-w-sm",className),"data-slot":"dialog-content",forceMount,ref,...props,children:[children,showCloseButton&&jsx(DialogPrimitive.Close,{asChild:!0,"data-slot":"dialog-close",children:jsxs(Button,{className:"absolute top-2 right-2",size:"icon-sm",variant:"ghost",children:[jsx(XIcon,{}),jsx("span",{className:"sr-only",children:"Close"})]})})]})]}));DialogContent.displayName=DialogPrimitive.Content.displayName;var DialogClose=forwardRef((props,ref)=>jsx(DialogPrimitive.Close,{"data-slot":"dialog-close",ref,...props}));DialogClose.displayName=DialogPrimitive.Close.displayName;function DialogHeader({className,...props}){return jsx("div",{className:cn("flex flex-col gap-2",className),"data-slot":"dialog-header",...props})}function DialogFooter({className,showCloseButton=!1,children,...props}){return jsxs("div",{className:cn("-mx-4 -mb-4 flex flex-col-reverse gap-2 rounded-b-xl border-t bg-muted/50 p-4 sm:flex-row sm:justify-end",className),"data-slot":"dialog-footer",...props,children:[children,showCloseButton&&jsx(DialogPrimitive.Close,{asChild:!0,children:jsx(Button,{variant:"outline",children:"Close"})})]})}var DialogTitle=forwardRef(({className,...props},ref)=>jsx(DialogPrimitive.Title,{className:cn("font-medium text-base leading-none",className),"data-slot":"dialog-title",ref,...props}));DialogTitle.displayName=DialogPrimitive.Title.displayName;var DialogDescription=forwardRef(({className,...props},ref)=>jsx(DialogPrimitive.Description,{className:cn("text-muted-foreground text-sm *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground",className),"data-slot":"dialog-description",ref,...props}));DialogDescription.displayName=DialogPrimitive.Description.displayName;export{DialogTrigger,DialogTitle,DialogPortal,DialogOverlay,DialogHeader,DialogFooter,DialogDescription,DialogContent,DialogClose,Dialog};