Dialog
blode-ui/dialogFreeComponent
A modal window that overlays the main content and requires user interaction.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/mblode/blode-ui/main/public/r/dialog.jsonSource
1"use client";23import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";4import { XIcon } from "blode-icons-react";5import * as React from "react";67import { cn } from "@/lib/utils";8import { Button } from "@/components/ui/button";910const Dialog = ({ ...props }: DialogPrimitive.Root.Props) => (11 <DialogPrimitive.Root data-slot="dialog" {...props} />12);1314const DialogTrigger = ({15 asChild,16 children,17 ...props18}: DialogPrimitive.Trigger.Props & {19 asChild?: boolean;20}) => {21 if (asChild && React.isValidElement(children)) {22 return <DialogPrimitive.Trigger data-slot="dialog-trigger" render={children} {...props} />;23 }2425 return (26 <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props}>27 {children}28 </DialogPrimitive.Trigger>29 );30};3132const DialogPortal = ({ ...props }: DialogPrimitive.Portal.Props) => (33 <DialogPrimitive.Portal data-slot="dialog-portal" {...props} />34);3536const DialogClose = ({37 asChild,38 children,39 ...props40}: DialogPrimitive.Close.Props & {41 asChild?: boolean;42}) => {43 if (asChild && React.isValidElement(children)) {44 return <DialogPrimitive.Close data-slot="dialog-close" render={children} {...props} />;45 }4647 return (48 <DialogPrimitive.Close data-slot="dialog-close" {...props}>49 {children}50 </DialogPrimitive.Close>51 );52};5354const DialogOverlay = ({ className, ...props }: DialogPrimitive.Backdrop.Props) => (55 <DialogPrimitive.Backdrop56 className={cn(57 "data-closed:fade-out-0 data-open:fade-in-0 fixed inset-0 z-50 bg-overlay backdrop-blur-[10px] data-closed:animate-out data-open:animate-in data-closed:duration-300 data-open:duration-500 motion-reduce:transition-none",58 className,59 )}60 data-slot="dialog-overlay"61 {...props}62 />63);6465const DialogContent = ({66 className,67 children,68 showCloseButton = true,69 ...props70}: DialogPrimitive.Popup.Props & {71 showCloseButton?: boolean;72}) => (73 <DialogPortal data-slot="dialog-portal">74 <DialogOverlay />75 <DialogPrimitive.Popup76 className={cn(77 "data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg outline-none duration-200 data-closed:animate-out data-open:animate-in motion-reduce:transition-none sm:max-w-lg",78 className,79 )}80 data-slot="dialog-content"81 {...props}82 >83 {children}84// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from blode/ui
All 85 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | blode/ui | Components | Free | 2 deps | |
| Alertalert | blode/ui | Components | Free | no deps | |
| Alert Dialogalert-dialog | blode/ui | Components | Free | 1 dep | |
| Ask User Questionsask-user-questions | blode/ui | Components | Free | 1 dep | |
| Aspect Ratioaspect-ratio | blode/ui | Components | Free | 1 dep | |
| Attachmentattachment | blode/ui | Components | Free | 1 dep | |
| Autocompleteautocomplete | blode/ui | Components | Free | 1 dep | |
| Avataravatar | blode/ui | Components | Free | 1 dep |
