Dialog
A popup that opens on top of the entire page.
Example.html
<primitives:dialog.root>
<primitives:dialog.trigger asChild="{true}">
<ui:button>Open Dialog</ui:button>
</primitives:dialog.trigger>
<ui:portal>
<primitives:dialog.backdrop class="{ui:cn(value: '
fixed inset-0 bg-black/50
transition-all ease-out duration-150 transition-discrete
starting:data-[state=open]:opacity-0 starting:data-[state=open]:backdrop-blur-none
data-[state=closed]:opacity-0 data-[state=closed]:backdrop-blur-none
data-[state=open]:opacity-100 data-[state=open]:backdrop-blur-xs
')}" />
<primitives:dialog.positioner class="fixed inset-0 grid place-items-center p-6">
<primitives:dialog.content class="{ui:cn(value: '
bg-popover text-popover-foreground rounded-lg shadow-lg w-full max-w-md border p-4
transition-all ease-out duration-175 transition-discrete
starting:data-[state=open]:opacity-0 starting:data-[state=open]:scale-90 starting:data-[state=open]:blur-[4px]
data-[state=closed]:opacity-0 data-[state=closed]:scale-90 data-[state=closed]:blur-[4px]
data-[state=open]:opacity-100 data-[state=open]:scale-100 data-[state=open]:blur-0
')}">
<div class="space-y-2 text-center sm:text-left">
<primitives:dialog.closeTrigger class="float-end size-4 -translate-y-0.5 translate-x-0.25 grid leading-none place-items-center ring-offset-background focus-visible:ring-ring rounded-xs opacity-70 transition-opacity hover:opacity-100 focus-visible:ring-2 focus-visible:ring-offset-2 focus:outline-hidden">
<span class="sr-only">Close</span>
<span aria-hidden="true">✕</span>
</primitives:dialog.closeTrigger>
<primitives:dialog.title class="text-lg leading-none font-semibold">
Dialog Title
</primitives:dialog.title>
<primitives:dialog.description class="text-muted-foreground text-sm">
This is a simple dialog example.
</primitives:dialog.description>
<div class="flex justify-end gap-2">
<primitives:dialog.closeTrigger asChild="{true}">
<ui:button>Close</ui:button>
</primitives:dialog.closeTrigger>
</div>
</div>
</primitives:dialog.content>
</primitives:dialog.positioner>
</ui:portal>
</primitives:dialog.root>
<vite:asset entry="EXT:fluid_primitives/Resources/Public/JavaScript/dist/primitives/dialog.entry.js" />
Anatomy
<primitives:dialog.root>
<primitives:dialog.trigger />
<primitives:dialog.backdrop />
<primitives:dialog.positioner>
<primitives:dialog.content>
<primitives:dialog.title />
<primitives:dialog.description />
</primitives:dialog.content>
</primitives:dialog.positioner>
</primitives:dialog.root>