import { createContext, useCallback, useContext, useState, type ReactNode } from "react"; interface NewIssueDefaults { status?: string; priority?: string; projectId?: string; } interface DialogContextValue { newIssueOpen: boolean; newIssueDefaults: NewIssueDefaults; openNewIssue: (defaults?: NewIssueDefaults) => void; closeNewIssue: () => void; } const DialogContext = createContext(null); export function DialogProvider({ children }: { children: ReactNode }) { const [newIssueOpen, setNewIssueOpen] = useState(false); const [newIssueDefaults, setNewIssueDefaults] = useState({}); const openNewIssue = useCallback((defaults: NewIssueDefaults = {}) => { setNewIssueDefaults(defaults); setNewIssueOpen(true); }, []); const closeNewIssue = useCallback(() => { setNewIssueOpen(false); setNewIssueDefaults({}); }, []); return ( {children} ); } export function useDialog() { const ctx = useContext(DialogContext); if (!ctx) { throw new Error("useDialog must be used within DialogProvider"); } return ctx; }