import { ModalLayout, ModalSize, ModalTab, ModalVariant } from '../types'; export interface Props { modelValue: boolean; title?: string; subtitle?: string; size?: ModalSize; variant?: ModalVariant; closable?: boolean; closeOnOverlay?: boolean; closeOnEscape?: boolean; /** * Shell layout. 'tabs' renders a tab strip between header and body; * 'rail' renders a sidebar rail + pane as the shell's middle row. * Both are shell regions — never part of the scrolling body content. */ layout?: ModalLayout; /** Sections for the tab strip / rail. The strip renders only with 2+ tabs. */ tabs?: ModalTab[]; /** Id of the selected tab. Two-way bindable via update:activeTab. */ activeTab?: string; } declare const _default: typeof __VLS_export; export default _default; declare const __VLS_export: __VLS_WithSlots any; close: () => any; "update:activeTab": (id: string) => any; }, string, import('vue').PublicProps, Readonly & Readonly<{ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined; onClose?: (() => any) | undefined; "onUpdate:activeTab"?: ((id: string) => any) | undefined; }>, { size: ModalSize; variant: ModalVariant; tabs: ModalTab[]; closable: boolean; closeOnOverlay: boolean; closeOnEscape: boolean; layout: ModalLayout; }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>, { header?: (props: {}) => any; } & { 'rail-footer'?: (props: {}) => any; } & { 'pane-header'?: (props: { tab: ModalTab | undefined; }) => any; } & { default?: (props: {}) => any; } & { default?: (props: {}) => any; } & { footer?: (props: {}) => any; }>; type __VLS_WithSlots = T & { new (): { $slots: S; }; };