import { type Component, type ComponentProps } from 'svelte'; import type { Options } from '../../utils/options.js'; import DialogConfirm from './DialogConfirm.svelte'; import DialogSelect from './DialogSelect.svelte'; /** Props reçues par tout composant ouvert via `openDialog`. */ export type DialogProps = { resolve: (value: T) => void; }; type Resolved

= P extends DialogProps ? T : never; /** * Monte `component` dans `document.body`, ouvre son `

` et résout avec la valeur passée * à `resolve`, ou `undefined` si le dialogue est fermé autrement (Échap, backdrop, bouton X). * Le composant est démonté une fois la transition de fermeture jouée. */ export declare function openDialog

>(component: Component

, ...[props]: Partial> extends Omit ? [props?: Omit] : [props: Omit]): Promise | undefined>; export type ConfirmDialogOptions = Omit, 'resolve'>; /** Dialogue de confirmation: `true` si confirmé, `false` sinon (annulé, Échap, backdrop…). */ export declare function confirmDialog(options?: ConfirmDialogOptions): Promise; export type SelectDialogOptions = Omit, 'resolve' | 'options'> & { options: O; }; /** Valeurs d'une `Options` littérale: `'a' | 'b'` pour `['a', 'b']`, `{ a: … }` ou `[{ value: 'a' }]`. */ export type OptionValues = O extends string ? string : O extends readonly (infer I)[] ? I extends string ? I : I extends { value: infer V extends string; } ? V : never : keyof O & string; /** * Liste d'options: la valeur choisie, ou `undefined` (annulé, Échap, backdrop…). Le type de * la valeur s'infère d'une liste littérale; une `Options` quelconque retombe sur `string`. */ export declare function selectDialog(options: SelectDialogOptions): Promise | undefined>; export {};