agentic-ui

Dialog

Modal overlay dialog. Use the high-level wrapper for quick usage, or compose individual styled parts with a raw base-ui Root for full control.

High-level wrapper

import { Button } from "@brijbyte/agentic-ui/button";
import { Dialog } from "@brijbyte/agentic-ui/dialog";
import { Input } from "@brijbyte/agentic-ui/input";

import "@brijbyte/agentic-ui/button.css";
import "@brijbyte/agentic-ui/dialog.css";
import "@brijbyte/agentic-ui/input.css";

export default function HighLevelDemo() {
  return (
    <>
      <Dialog
        trigger={<Button>Confirm dialog</Button>}
        title="Confirm action"
        description="Are you sure you want to delete this resource? This action cannot be undone."
        footerStart={
          <Button variant="soft" tone="destructive" size="sm">
            Delete
          </Button>
        }
        footer={
          <Button variant="ghost" size="sm">
            Cancel
          </Button>
        }
      />

      <Dialog
        trigger={<Button variant="outline">API Settings</Button>}
        title="API Settings"
        description="Configure your API endpoint and credentials."
        footer={
          <>
            <Button variant="ghost" size="sm">
              Cancel
            </Button>
            <Button size="sm">Save changes</Button>
          </>
        }
      >
        <div style={{ display: "flex", flexDirection: "column", gap: "var(--space-3)" }}>
          <Input defaultValue="https://api.example.com/v1" />
          <Input type="password" placeholder="sk-…" />
        </div>
      </Dialog>
    </>
  );
}

Composed: base-ui Root + styled parts

import { Dialog as BaseDialog } from "@base-ui/react/dialog";
import { Button } from "@brijbyte/agentic-ui/button";
import { DialogBackdrop, DialogViewport, DialogPopup, DialogTitle, DialogDescription, DialogClose } from "@brijbyte/agentic-ui/dialog";
import "@brijbyte/agentic-ui/button.css";
import "@brijbyte/agentic-ui/dialog.css";

export default function ComposedDemo() {
  return (
    <BaseDialog.Root>
      <BaseDialog.Trigger render={<Button variant="outline">Composed dialog</Button>} />
      <BaseDialog.Portal>
        <DialogBackdrop />
        <DialogViewport>
          <DialogPopup>
            <DialogTitle>Composed with base-ui Root</DialogTitle>
            <DialogDescription>Raw base-ui Root combined with styled parts from agentic-ui.</DialogDescription>
            <DialogClose aria-label="Close">✕</DialogClose>
          </DialogPopup>
        </DialogViewport>
      </BaseDialog.Portal>
    </BaseDialog.Root>
  );
}