Dialog
solid-ui/dialogFreeComponent
A dialog component
Live preview
live · rendered by the registry
Rendered by solid-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://www.solid-ui.com/r/dialog.jsonSource
1import type { Component, ComponentProps, JSX, ValidComponent } from "solid-js"2import { splitProps } from "solid-js"34import * as DialogPrimitive from "@kobalte/core/dialog"5import type { PolymorphicProps } from "@kobalte/core/polymorphic"67import { cn } from "~/lib/utils"89const Dialog = DialogPrimitive.Root10const DialogTrigger = DialogPrimitive.Trigger1112const DialogPortal: Component<DialogPrimitive.DialogPortalProps> = (props) => {13 const [, rest] = splitProps(props, ["children"])14 return (15 <DialogPrimitive.Portal {...rest}>16 <div class="fixed inset-0 z-50 flex items-start justify-center sm:items-center">17 {props.children}18 </div>19 </DialogPrimitive.Portal>20 )21}2223type DialogOverlayProps<T extends ValidComponent = "div"> =24 DialogPrimitive.DialogOverlayProps<T> & { class?: string | undefined }2526const DialogOverlay = <T extends ValidComponent = "div">(27 props: PolymorphicProps<T, DialogOverlayProps<T>>28) => {29 const [, rest] = splitProps(props as DialogOverlayProps, ["class"])30 return (31 <DialogPrimitive.Overlay32 class={cn(33 "fixed inset-0 z-50 bg-background/80 data-[expanded]:animate-in data-[closed]:animate-out data-[closed]:fade-out-0 data-[expanded]:fade-in-0",34 props.class35 )}36 {...rest}37 />38 )39}4041type DialogContentProps<T extends ValidComponent = "div"> =42 DialogPrimitive.DialogContentProps<T> & {43 class?: string | undefined44 children?: JSX.Element45 }4647const DialogContent = <T extends ValidComponent = "div">(48 props: PolymorphicProps<T, DialogContentProps<T>>49) => {50 const [, rest] = splitProps(props as DialogContentProps, ["class", "children"])51 return (52 <DialogPortal>53 <DialogOverlay />54 <DialogPrimitive.Content55 class={cn(56 "fixed left-1/2 top-1/2 z-50 grid max-h-screen w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 overflow-y-auto border bg-background p-6 shadow-lg duration-200 data-[expanded]:animate-in data-[closed]:animate-out data-[closed]:fade-out-0 data-[expanded]:fade-in-0 data-[closed]:zoom-out-95 data-[expanded]:zoom-in-95 data-[closed]:slide-out-to-left-1/2 data-[closed]:slide-out-to-top-[48%] data-[expanded]:slide-in-from-left-1/2 data-[expanded]:slide-in-from-top-[48%] sm:rounded-lg",57 props.class58 )}59 {...rest}60 >61 {props.children}62// … truncated
What it pulls in
npm packages
Files it writes
More from solid-ui
All 55 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | solid-ui | Components | Free | 2 deps | |
| Alertalert | solid-ui | Components | Free | 3 deps | |
| Alert Dialogalert-dialog | solid-ui | Components | Free | 2 deps | |
| Aspect Ratioaspect-ratio | solid-ui | Components | Free | 1 dep | |
| Avataravatar | solid-ui | Components | Free | 2 deps | |
| Badgebadge | solid-ui | Components | Free | 2 deps | |
| Badge Deltabadge-delta | solid-ui | Components | Free | 2 deps | |
| Bar Listbar-list | solid-ui | Components | Free | 1 dep |
