Confirm Dialog

A confirm dialog is a modal window that asks users to confirm or cancel a critical action.

Usage

'use client'

import { Button } from '@workspace/ui/components/Button'
import { confirm } from '@workspace/ui/components/ConfirmDialog'
import { toast } from '@workspace/ui/components/Sonner'

export function ConfirmDialogDemo() {
    const handleDeleteUsers = () => {
        confirm({
            title: 'Delete Users',
            description: 'Are you sure you want to delete these users?',
            action: {
                label: 'Delete',
                onClick: () => {
                    toast.success({
                        title: 'Users Deleted',
                        description: 'Users deleted successfully',
                    })
                },
            },
        })
    }

    return (
        <Button variant="outline" onClick={handleDeleteUsers}>
            Delete Users
        </Button>
    )
}

Examples

Basic

'use client'

import { Button } from '@workspace/ui/components/Button'
import { confirm } from '@workspace/ui/components/ConfirmDialog'
import { toast } from '@workspace/ui/components/Sonner'

export function ConfirmDialogDemo() {
    const handleDeleteUsers = () => {
        confirm({
            title: 'Delete Users',
            description: 'Are you sure you want to delete these users?',
            action: {
                label: 'Delete',
                onClick: () => {
                    toast.success({
                        title: 'Users Deleted',
                        description: 'Users deleted successfully',
                    })
                },
            },
        })
    }

    return (
        <Button variant="outline" onClick={handleDeleteUsers}>
            Delete Users
        </Button>
    )
}

Destructive

'use client'

import { Button } from '@workspace/ui/components/Button'
import { confirm } from '@workspace/ui/components/ConfirmDialog'
import { toast } from '@workspace/ui/components/Sonner'

export function ConfirmDialogDestructive() {
    const handleClick = () => {
        confirm({
            variant: 'destructive',
            title: 'Archive Project',
            description: 'You can restore an archived project later from settings.',
            action: {
                label: 'Archive',
                onClick: () => {
                    toast.success({
                        title: 'Project Archived',
                        description: 'Project archived successfully',
                    })
                },
            },
        })
    }

    return (
        <Button variant="outline" onClick={handleClick}>
            Archive Project
        </Button>
    )
}