Glass Dialog
washiveil/glass-dialogFreeComponent
Modal dialog as a glass veil — blurred translucent panel over a soft scrim, built on Radix Dialog.
Install it
npx shadcn@latest add https://washiveil.alexchih.com/r/glass-dialog.jsonSource
1'use client'23import * as React from 'react'4import { Dialog as DialogPrimitive } from 'radix-ui'5import { X } from 'lucide-react'67import { cn } from '@/lib/utils'89const GlassDialog = DialogPrimitive.Root1011const GlassDialogTrigger = DialogPrimitive.Trigger1213const GlassDialogPortal = DialogPrimitive.Portal1415const GlassDialogClose = DialogPrimitive.Close1617const GlassDialogOverlay = React.forwardRef<18 React.ComponentRef<typeof DialogPrimitive.Overlay>,19 React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>20>(({ className, ...props }, ref) => (21 <DialogPrimitive.Overlay22 ref={ref}23 className={cn(24 'fixed inset-0 z-50 bg-deep/20 backdrop-blur-sm dark:bg-black/40 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',25 className,26 )}27 {...props}28 />29))30GlassDialogOverlay.displayName = DialogPrimitive.Overlay.displayName3132const GlassDialogContent = React.forwardRef<33 React.ComponentRef<typeof DialogPrimitive.Content>,34 React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>35>(({ className, children, ...props }, ref) => (36 <GlassDialogPortal>37 <GlassDialogOverlay />38 <DialogPrimitive.Content39 ref={ref}40 className={cn(41 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-3xl border border-glass-edge bg-glass-stronger p-6 backdrop-blur-2xl backdrop-saturate-150 shadow-[0_16px_48px_rgba(28,25,20,0.12)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',42 className,43 )}44 {...props}45 >46 {children}47 <DialogPrimitive.Close className="absolute right-4 top-4 grid size-6 place-items-center rounded-full text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none">48 <X className="size-4" />49 <span className="sr-only">Close</span>50 </DialogPrimitive.Close>51 </DialogPrimitive.Content>52 </GlassDialogPortal>53))54// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from washiveil
All 58 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Ambient Fieldambient-field | washiveil | Components | Free | no deps | |
| Chipchip | washiveil | Components | Free | 1 dep | |
| Code Badgecode-badge | washiveil | Components | Free | no deps | |
| Glass Accordionglass-accordion | washiveil | Components | Free | 2 deps | |
| Glass Alertglass-alert | washiveil | Components | Free | 1 dep | |
| Glass Alert Dialogglass-alert-dialog | washiveil | Components | Free | 1 dep | |
| Glass Aspect Ratioglass-aspect-ratio | washiveil | Components | Free | 1 dep | |
| Glass Avatarglass-avatar | washiveil | Components | Free | 1 dep |
