mirror of
https://github.com/aljazceru/mutiny-web.git
synced 2025-12-25 01:54:18 +01:00
31 lines
1.6 KiB
TypeScript
31 lines
1.6 KiB
TypeScript
import { Dialog } from "@kobalte/core";
|
|
import { ParentComponent } from "solid-js";
|
|
import { Button, SmallHeader } from "./layout";
|
|
|
|
const OVERLAY = "fixed inset-0 z-50 bg-black/50 backdrop-blur-sm"
|
|
const DIALOG_POSITIONER = "fixed inset-0 z-50 flex items-center justify-center"
|
|
const DIALOG_CONTENT = "w-[80vw] max-w-[400px] p-4 bg-gray/50 backdrop-blur-md shadow-xl rounded-xl border border-white/10"
|
|
|
|
export const ConfirmDialog: ParentComponent<{ isOpen: boolean; loading: boolean; onCancel: () => void, onConfirm: () => void }> = (props) => {
|
|
return (
|
|
<Dialog.Root isOpen={props.isOpen} onOpenChange={props.onCancel}>
|
|
<Dialog.Portal>
|
|
<Dialog.Overlay class={OVERLAY} />
|
|
<div class={DIALOG_POSITIONER}>
|
|
<Dialog.Content class={DIALOG_CONTENT}>
|
|
<div class="flex justify-between mb-2">
|
|
<Dialog.Title><SmallHeader>Are you sure?</SmallHeader></Dialog.Title>
|
|
</div>
|
|
<Dialog.Description class="flex flex-col gap-4">
|
|
{props.children}
|
|
<div class="flex gap-4 w-full justify-end">
|
|
<Button onClick={props.onCancel}>Cancel</Button>
|
|
<Button intent="red" onClick={props.onConfirm} loading={props.loading} disabled={props.loading}>Confirm</Button>
|
|
</div>
|
|
</Dialog.Description>
|
|
</Dialog.Content>
|
|
</div>
|
|
</Dialog.Portal>
|
|
</Dialog.Root >
|
|
)
|
|
} |