import { type Accessor, type Setter, createContext, useContext, } from "solid-js"; import type { DialogIntlTranslations } from "./dialog.intl"; export interface DialogContextValue { translations: Accessor; isOpen: Accessor; modal: Accessor; preventScroll: Accessor; contentId: Accessor; titleId: Accessor; descriptionId: Accessor; triggerRef: Accessor; overlayRef: Accessor; setOverlayRef: Setter; contentRef: Accessor; setContentRef: Setter; overlayPresent: Accessor; contentPresent: Accessor; close: () => void; toggle: () => void; setTriggerRef: Setter; generateId: (part: string) => string; registerContentId: (id: string) => () => void; registerTitleId: (id: string) => () => void; registerDescriptionId: (id: string) => () => void; } export const DialogContext = createContext(); export function useDialogContext() { const context = useContext(DialogContext); if (context === undefined) { throw new Error( "[kobalte]: `useDialogContext` must be used within a `Dialog` component", ); } return context; }