Instalación
npx logic2b@next add dialogUso
import {
Dialog,
DialogContent,
DialogDescription,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog"
<Dialog>
<DialogTrigger>Abrir</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>¿Confirmas la acción?</DialogTitle>
<DialogDescription>
Esta acción no se puede deshacer.
</DialogDescription>
</DialogHeader>
</DialogContent>
</Dialog>
Ejemplos
Compartir enlace
Controlado
Gestiona el estado abierto desde tu aplicación para confirmar una acción destructiva.
Accesibilidad
- Está construido sobre Dialog de Radix: el foco queda contenido dentro del diálogo y vuelve al disparador al cerrarlo.
DialogTitleaporta el nombre accesible. Combínalo conDialogDescription; Radix conecta ambos mediantearia-labelledbyyaria-describedby.- Tanto
Escapecomo un clic en la capa exterior cierran el diálogo. El botón de cierre incluye una etiqueta solo visible para lectores de pantalla.
Playground interactivo
Edita las propiedades del componente y revisa el JSX exacto antes de copiarlo. La vista previa se carga solo cuando esta sección entra en pantalla.
JSX generado
<Dialog>
<DialogTrigger
className="rounded-md border px-4 py-2 text-sm font-medium"
>Edit project</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Edit project</DialogTitle>
<DialogDescription>Update the project details, then save your changes.</DialogDescription>
</DialogHeader>
<label
className="grid gap-2 text-sm"
>
<span>Project name</span>
<input
type="text"
defaultValue="logic2b ui"
className="h-9 rounded-md border px-3"
/>
</label>
<DialogFooter>
<DialogClose
className="rounded-md border px-4 py-2 text-sm font-medium"
>Save changes</DialogClose>
</DialogFooter>
</DialogContent>
</Dialog>Referencia de API
Generada a partir de las exportaciones públicas de TypeScript en src/ui/dialog.tsx. Las descripciones técnicas conservan el texto canónico del código fuente.
Dialog
ComponenteProps: React.ComponentProps<typeof DialogPrimitive.Root>DialogClose
ComponenteProps: React.ComponentProps<typeof DialogPrimitive.Close>DialogContent
ComponenteProps: React.ComponentProps<typeof DialogPrimitive.Content> & { showCloseButton?: boolean }| Propiedad | Tipo | Obligatoria | Valor predeterminado | Descripción |
|---|---|---|---|---|
showCloseButton | boolean | No | true | — |
DialogDescription
ComponenteProps: React.ComponentProps<typeof DialogPrimitive.Description>DialogFooter
ComponenteProps: React.ComponentProps<"div">DialogHeader
ComponenteProps: React.ComponentProps<"div">DialogOverlay
ComponenteProps: React.ComponentProps<typeof DialogPrimitive.Overlay>DialogPortal
ComponenteProps: React.ComponentProps<typeof DialogPrimitive.Portal>DialogTitle
ComponenteProps: React.ComponentProps<typeof DialogPrimitive.Title>DialogTrigger
ComponenteProps: React.ComponentProps<typeof DialogPrimitive.Trigger>Contrato de accesibilidad
Comportamiento legible por máquinas y responsabilidades de quien integra dialog. Los detalles normativos conservan el texto canónico del registro.
- Soporte
- Gestionado por la primitiva
- Patrón
- modal dialog
- Radix Dialog
| Teclas | Comportamiento |
|---|---|
| Escape | Close the open surface and restore focus. |
| Tab Shift+Tab | Cycle focus inside the modal surface. |
Semántica incorporada
- Content is a dialog, traps focus and restores it to the trigger on close.
- Title and description wire aria-labelledby and aria-describedby.
Responsabilidades de integración
- Always render DialogTitle; add DialogDescription when explanatory copy exists.