'use client' import { useState, useCallback } from 'react' interface ConfirmOptions { title?: string message: string confirmText?: string cancelText?: string variant?: 'default' | 'danger' } interface PromptOptions { title?: string message: string defaultValue?: string placeholder?: string confirmText?: string cancelText?: string } export function useConfirm() { const [isOpen, setIsOpen] = useState(false) const [options, setOptions] = useState({ message: '' }) const [resolveCallback, setResolveCallback] = useState<((value: boolean) => void) | null>(null) const confirm = useCallback((opts: ConfirmOptions): Promise => { return new Promise((resolve) => { setOptions(opts) setIsOpen(true) setResolveCallback(() => resolve) }) }, []) const handleConfirm = useCallback(() => { setIsOpen(false) if (resolveCallback) { resolveCallback(true) setResolveCallback(null) } }, [resolveCallback]) const handleCancel = useCallback(() => { setIsOpen(false) if (resolveCallback) { resolveCallback(false) setResolveCallback(null) } }, [resolveCallback]) return { isOpen, options, confirm, handleConfirm, handleCancel, } } export function usePrompt() { const [isOpen, setIsOpen] = useState(false) const [options, setOptions] = useState({ message: '' }) const [resolveCallback, setResolveCallback] = useState<((value: string | null) => void) | null>(null) const prompt = useCallback((opts: PromptOptions): Promise => { return new Promise((resolve) => { setOptions(opts) setIsOpen(true) setResolveCallback(() => resolve) }) }, []) const handleConfirm = useCallback((value: string) => { setIsOpen(false) if (resolveCallback) { resolveCallback(value) setResolveCallback(null) } }, [resolveCallback]) const handleCancel = useCallback(() => { setIsOpen(false) if (resolveCallback) { resolveCallback(null) setResolveCallback(null) } }, [resolveCallback]) return { isOpen, options, prompt, handleConfirm, handleCancel, } }