bits-ui
Version:
The headless components for Svelte.
574 lines (573 loc) • 41.6 kB
TypeScript
import { type CreateMenubarMenuProps, type CreateMenubarSubmenuProps, type CreateMenubarProps as MenubarProps } from "@melt-ui/svelte";
import type { Writable } from "svelte/store";
import type { FloatingProps } from "../floating/_types.js";
type GetReturn = Omit<ReturnType<typeof setCtx>, "updateOption">;
type GetMenuReturn = Omit<ReturnType<typeof setMenuCtx>, "updateOption">;
type GetSubmenuReturn = Omit<ReturnType<typeof setSubMenuCtx>, "updateOption">;
export declare function setCtx(props: MenubarProps): {
updateOption: <K extends string, V extends import("svelte/store").StoresValues<Writable<unknown>>>(key: K, value: V | undefined) => void;
getAttrs: (part: "label" | "radio-group" | "separator" | "content" | "item" | "trigger" | "group" | "arrow" | "checkbox-indicator" | "checkbox-item" | "radio-item" | "sub-content" | "sub-trigger") => Record<string, string> | undefined;
getMenubarAttrs: (part: string) => Record<string, string> | undefined;
ids: import("@melt-ui/svelte/internal/helpers").ToWritableStores<{
menubar: string;
}>;
elements: {
menubar: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("@melt-ui/svelte/internal/helpers").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => {
destroy?: undefined;
} | {
destroy: typeof import("@melt-ui/svelte/internal/helpers").noop;
}, ([$menubarId]: [string]) => {
role: string;
"data-melt-menubar": string;
"data-orientation": string;
id: string;
}, string>;
};
builders: {
createMenu: (props?: CreateMenubarMenuProps) => {
ids: import("@melt-ui/svelte/internal/helpers").ToWritableStores<{
menu: string;
trigger: string;
}>;
elements: {
menu: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("svelte/store").Readable<boolean>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string | HTMLElement | null | undefined>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<import("@melt-ui/svelte/dist/builders/menubar/events.js").MenubarEvents["menu"]>, ([$isVisible, $portal, $menuId, $triggerId, $menubarId]: [boolean, string | HTMLElement | null | undefined, string, string, string]) => {
readonly role: "menu";
readonly hidden: true | undefined;
readonly style: string;
readonly id: string;
readonly "aria-labelledby": string;
readonly "data-state": "open" | "closed";
readonly "data-melt-scope": string;
readonly "data-portal": "" | undefined;
readonly tabindex: -1;
}, string>;
trigger: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("@melt-ui/svelte/internal/helpers").WithGet<import("svelte/store").Writable<boolean>>, import("@melt-ui/svelte/internal/helpers").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/internal/helpers").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<import("@melt-ui/svelte/dist/builders/menubar/events.js").MenubarEvents["trigger"]>, ([$rootOpen, $menuId, $triggerId]: [boolean, string, string]) => {
readonly "aria-controls": string;
readonly "aria-expanded": boolean;
readonly "data-state": "open" | "closed";
readonly id: string;
readonly "aria-haspopup": "menu";
readonly "data-orientation": "horizontal";
readonly role: "menuitem";
}, string>;
overlay: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("svelte/store").Readable<boolean>], <Node_1 extends any>(node: HTMLElement) => {
destroy(): void;
}, ([$isVisible]: [boolean]) => {
readonly hidden: true | undefined;
readonly tabindex: -1;
readonly style: string;
readonly "aria-hidden": "true";
readonly "data-state": "open" | "closed";
}, string>;
item: import("@melt-ui/svelte/internal/helpers").MeltElement<import("svelte/store").Stores | undefined, (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"click" | "focusin" | "focusout" | "keydown" | "pointerdown" | "pointerleave" | "pointermove">, () => {
role: string;
tabindex: number;
"data-orientation": string;
}, string>;
group: import("@melt-ui/svelte/internal/helpers").MeltElement<import("svelte/store").Stores | undefined, import("svelte/action").Action<any, any, Record<never, any>>, () => (groupId: string) => {
role: string;
"aria-labelledby": string;
}, string>;
groupLabel: import("@melt-ui/svelte/internal/helpers").MeltElement<import("svelte/store").Stores | undefined, import("svelte/action").Action<any, any, Record<never, any>>, () => (groupId: string) => {
id: string;
}, string>;
arrow: import("@melt-ui/svelte/internal/helpers").MeltElement<import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<number | undefined>>, import("svelte/action").Action<any, any, Record<never, any>>, ($arrowSize: number | undefined) => {
"data-arrow": boolean;
style: string;
}, string>;
separator: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<import("@melt-ui/svelte/internal/types").Orientation>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<boolean>>], import("svelte/action").Action<any, any, Record<never, any>>, ([$orientation, $decorative]: [import("@melt-ui/svelte/internal/types").Orientation, boolean]) => {
role: string;
"aria-orientation": "vertical" | undefined;
"aria-hidden": boolean;
"data-orientation": import("@melt-ui/svelte/internal/types").Orientation;
}, "separator">;
};
builders: {
createCheckboxItem: (props?: import("@melt-ui/svelte/dist/builders/menu/types.js")._CheckboxItemProps | undefined) => {
elements: {
checkboxItem: import("@melt-ui/svelte/internal/helpers").MeltElement<[{
update: (updater: import("svelte/store").Updater<boolean | "indeterminate">, sideEffect?: ((newValue: boolean | "indeterminate") => void) | undefined) => void;
set: (this: void, value: boolean | "indeterminate") => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean | "indeterminate">, invalidate?: import("svelte/store").Invalidator<boolean | "indeterminate"> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean | "indeterminate";
destroy?: (() => void) | undefined;
}, import("svelte/store").Writable<boolean>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"click" | "focusin" | "focusout" | "keydown" | "pointerdown" | "pointerleave" | "pointermove">, ([$checked, $disabled]: [boolean | "indeterminate", boolean]) => {
readonly role: "menuitemcheckbox";
readonly tabindex: -1;
readonly "data-orientation": "vertical";
readonly "aria-checked": "true" | "mixed" | "false";
readonly "data-disabled": true | undefined;
readonly "data-state": "indeterminate" | "checked" | "unchecked";
}, string>;
};
states: {
checked: {
update: (updater: import("svelte/store").Updater<boolean | "indeterminate">, sideEffect?: ((newValue: boolean | "indeterminate") => void) | undefined) => void;
set: (this: void, value: boolean | "indeterminate") => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean | "indeterminate">, invalidate?: import("svelte/store").Invalidator<boolean | "indeterminate"> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean | "indeterminate";
destroy?: (() => void) | undefined;
};
};
helpers: {
isChecked: import("svelte/store").Readable<boolean>;
isIndeterminate: import("svelte/store").Readable<boolean>;
};
options: {
disabled: import("svelte/store").Writable<boolean>;
};
};
createSubmenu: (args?: import("@melt-ui/svelte/dist/builders/menu/types.js")._CreateSubmenuProps | undefined) => {
ids: import("@melt-ui/svelte/internal/helpers").ToWritableStores<{
menu: string;
trigger: string;
}>;
elements: {
subTrigger: import("@melt-ui/svelte/internal/helpers").MeltElement<[{
update: (updater: import("svelte/store").Updater<boolean>, sideEffect?: ((newValue: boolean) => void) | undefined) => void;
set: (this: void, value: boolean) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean>, invalidate?: import("svelte/store").Invalidator<boolean> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean;
destroy?: (() => void) | undefined;
}, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<boolean>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"click" | "focusin" | "focusout" | "keydown" | "pointerleave" | "pointermove">, ([$subOpen, $disabled, $subMenuId, $subTriggerId]: [boolean, boolean, string, string]) => {
readonly role: "menuitem";
readonly id: string;
readonly tabindex: -1;
readonly "aria-controls": string;
readonly "aria-expanded": boolean;
readonly "data-state": "open" | "closed";
readonly "data-disabled": true | undefined;
readonly "aria-haspopop": "menu";
}, string>;
subMenu: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("svelte/store").Readable<boolean>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"focusout" | "keydown" | "pointermove">, ([$subIsVisible, $subMenuId, $subTriggerId]: [boolean, string, string]) => {
readonly role: "menu";
readonly hidden: true | undefined;
readonly style: string;
readonly id: string;
readonly "aria-labelledby": string;
readonly "data-state": "open" | "closed";
readonly "data-id": string;
readonly tabindex: -1;
}, string>;
subArrow: import("@melt-ui/svelte/internal/helpers").MeltElement<import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<number>>, import("svelte/action").Action<any, any, Record<never, any>>, ($arrowSize: number) => {
"data-arrow": boolean;
style: string;
}, string>;
};
states: {
subOpen: {
update: (updater: import("svelte/store").Updater<boolean>, sideEffect?: ((newValue: boolean) => void) | undefined) => void;
set: (this: void, value: boolean) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean>, invalidate?: import("svelte/store").Invalidator<boolean> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean;
destroy?: (() => void) | undefined;
};
};
options: import("@melt-ui/svelte/internal/helpers").ToWritableStores<Omit<{
open?: import("svelte/store").Writable<boolean> | undefined;
ids?: Partial<{
menu: string;
trigger: string;
}> | undefined;
onOpenChange?: import("@melt-ui/svelte/internal/helpers").ChangeFn<boolean> | undefined;
positioning: import("@melt-ui/svelte/internal/actions").FloatingConfig | {
placement: "right-start";
gutter: number;
};
arrowSize: number;
disabled: boolean;
preventScroll: true;
closeOnEscape: true;
closeOnOutsideClick: true;
portal: undefined;
loop: false;
dir: "ltr";
defaultOpen: false;
typeahead: true;
closeOnItemClick: true;
onOutsideClick: undefined;
}, "ids">>;
};
createMenuRadioGroup: (args?: import("@melt-ui/svelte/dist/builders/menu/types.js")._CreateRadioGroupProps) => {
elements: {
radioGroup: import("@melt-ui/svelte/internal/helpers").MeltElement<import("svelte/store").Stores | undefined, import("svelte/action").Action<any, any, Record<never, any>>, () => {
role: string;
}, string>;
radioItem: import("@melt-ui/svelte/internal/helpers").MeltElement<[{
update: (updater: import("svelte/store").Updater<string | null>, sideEffect?: ((newValue: string | null) => void) | undefined) => void;
set: (this: void, value: string | null) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<string | null>, invalidate?: import("svelte/store").Invalidator<string | null> | undefined): import("svelte/store").Unsubscriber;
get: () => string | null;
destroy?: (() => void) | undefined;
}], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"click" | "focusin" | "focusout" | "keydown" | "pointerdown" | "pointerleave" | "pointermove">, ([$value]: [string | null]) => (itemProps: import("@melt-ui/svelte/dist/builders/menu/types.js")._RadioItemProps) => {
disabled: boolean;
role: string;
"data-state": string;
"aria-checked": boolean;
"data-disabled": boolean | undefined;
"data-value": string;
"data-orientation": string;
tabindex: number;
}, string>;
};
states: {
value: {
update: (updater: import("svelte/store").Updater<string | null>, sideEffect?: ((newValue: string | null) => void) | undefined) => void;
set: (this: void, value: string | null) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<string | null>, invalidate?: import("svelte/store").Invalidator<string | null> | undefined): import("svelte/store").Unsubscriber;
get: () => string | null;
destroy?: (() => void) | undefined;
};
};
helpers: {
isChecked: import("svelte/store").Readable<(itemValue: string) => boolean>;
};
};
};
states: {
open: import("@melt-ui/svelte/internal/helpers").WithGet<import("svelte/store").Writable<boolean>>;
};
options: import("@melt-ui/svelte/internal/helpers").ToWritableStores<{
dir: import("@melt-ui/svelte/internal/types").TextDirection;
open?: import("svelte/store").Writable<boolean> | undefined;
forceVisible: boolean;
portal: string | HTMLElement | null | undefined;
ids?: Partial<{
menu: string;
trigger: string;
}> | undefined;
defaultOpen: boolean;
onOpenChange?: import("@melt-ui/svelte/internal/helpers").ChangeFn<boolean> | undefined;
positioning: import("@melt-ui/svelte/internal/actions").FloatingConfig | {
placement: "bottom-start";
};
arrowSize: number;
loop: boolean;
closeOnOutsideClick: boolean;
closeOnEscape: boolean;
onOutsideClick: ((event: import("@melt-ui/svelte/internal/actions").InteractOutsideEvent) => void) | undefined;
typeahead: boolean;
closeOnItemClick: boolean;
closeFocus: import("@melt-ui/svelte/index.js").FocusProp | undefined;
disableFocusFirstItem: boolean;
}>;
};
};
options: import("@melt-ui/svelte/internal/helpers").ToWritableStores<Omit<{
loop: boolean;
closeOnEscape: boolean;
preventScroll: boolean;
ids?: Partial<{
menubar: string;
}> | undefined;
}, "ids">>;
};
export declare function getCtx(): GetReturn;
export declare function setMenuCtx(props: CreateMenubarMenuProps): {
updateOption: <K extends string, V extends import("svelte/store").StoresValues<Writable<unknown>>>(key: K, value: V | undefined) => void;
getAttrs: (part: "label" | "radio-group" | "separator" | "content" | "item" | "trigger" | "group" | "arrow" | "checkbox-indicator" | "checkbox-item" | "radio-item" | "sub-content" | "sub-trigger") => Record<string, string> | undefined;
ids: import("@melt-ui/svelte/internal/helpers").ToWritableStores<{
menu: string;
trigger: string;
}>;
elements: {
menu: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("svelte/store").Readable<boolean>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string | HTMLElement | null | undefined>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<import("@melt-ui/svelte/dist/builders/menubar/events.js").MenubarEvents["menu"]>, ([$isVisible, $portal, $menuId, $triggerId, $menubarId]: [boolean, string | HTMLElement | null | undefined, string, string, string]) => {
readonly role: "menu";
readonly hidden: true | undefined;
readonly style: string;
readonly id: string;
readonly "aria-labelledby": string;
readonly "data-state": "open" | "closed";
readonly "data-melt-scope": string;
readonly "data-portal": "" | undefined;
readonly tabindex: -1;
}, string>;
trigger: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("@melt-ui/svelte/internal/helpers").WithGet<import("svelte/store").Writable<boolean>>, import("@melt-ui/svelte/internal/helpers").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/internal/helpers").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<import("@melt-ui/svelte/dist/builders/menubar/events.js").MenubarEvents["trigger"]>, ([$rootOpen, $menuId, $triggerId]: [boolean, string, string]) => {
readonly "aria-controls": string;
readonly "aria-expanded": boolean;
readonly "data-state": "open" | "closed";
readonly id: string;
readonly "aria-haspopup": "menu";
readonly "data-orientation": "horizontal";
readonly role: "menuitem";
}, string>;
overlay: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("svelte/store").Readable<boolean>], <Node_1 extends any>(node: HTMLElement) => {
destroy(): void;
}, ([$isVisible]: [boolean]) => {
readonly hidden: true | undefined;
readonly tabindex: -1;
readonly style: string;
readonly "aria-hidden": "true";
readonly "data-state": "open" | "closed";
}, string>;
item: import("@melt-ui/svelte/internal/helpers").MeltElement<import("svelte/store").Stores | undefined, (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"click" | "focusin" | "focusout" | "keydown" | "pointerdown" | "pointerleave" | "pointermove">, () => {
role: string;
tabindex: number;
"data-orientation": string;
}, string>;
group: import("@melt-ui/svelte/internal/helpers").MeltElement<import("svelte/store").Stores | undefined, import("svelte/action").Action<any, any, Record<never, any>>, () => (groupId: string) => {
role: string;
"aria-labelledby": string;
}, string>;
groupLabel: import("@melt-ui/svelte/internal/helpers").MeltElement<import("svelte/store").Stores | undefined, import("svelte/action").Action<any, any, Record<never, any>>, () => (groupId: string) => {
id: string;
}, string>;
arrow: import("@melt-ui/svelte/internal/helpers").MeltElement<import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<number | undefined>>, import("svelte/action").Action<any, any, Record<never, any>>, ($arrowSize: number | undefined) => {
"data-arrow": boolean;
style: string;
}, string>;
separator: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<import("@melt-ui/svelte/internal/types").Orientation>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<boolean>>], import("svelte/action").Action<any, any, Record<never, any>>, ([$orientation, $decorative]: [import("@melt-ui/svelte/internal/types").Orientation, boolean]) => {
role: string;
"aria-orientation": "vertical" | undefined;
"aria-hidden": boolean;
"data-orientation": import("@melt-ui/svelte/internal/types").Orientation;
}, "separator">;
};
builders: {
createCheckboxItem: (props?: import("@melt-ui/svelte/dist/builders/menu/types.js")._CheckboxItemProps | undefined) => {
elements: {
checkboxItem: import("@melt-ui/svelte/internal/helpers").MeltElement<[{
update: (updater: import("svelte/store").Updater<boolean | "indeterminate">, sideEffect?: ((newValue: boolean | "indeterminate") => void) | undefined) => void;
set: (this: void, value: boolean | "indeterminate") => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean | "indeterminate">, invalidate?: import("svelte/store").Invalidator<boolean | "indeterminate"> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean | "indeterminate";
destroy?: (() => void) | undefined;
}, import("svelte/store").Writable<boolean>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"click" | "focusin" | "focusout" | "keydown" | "pointerdown" | "pointerleave" | "pointermove">, ([$checked, $disabled]: [boolean | "indeterminate", boolean]) => {
readonly role: "menuitemcheckbox";
readonly tabindex: -1;
readonly "data-orientation": "vertical";
readonly "aria-checked": "true" | "mixed" | "false";
readonly "data-disabled": true | undefined;
readonly "data-state": "indeterminate" | "checked" | "unchecked";
}, string>;
};
states: {
checked: {
update: (updater: import("svelte/store").Updater<boolean | "indeterminate">, sideEffect?: ((newValue: boolean | "indeterminate") => void) | undefined) => void;
set: (this: void, value: boolean | "indeterminate") => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean | "indeterminate">, invalidate?: import("svelte/store").Invalidator<boolean | "indeterminate"> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean | "indeterminate";
destroy?: (() => void) | undefined;
};
};
helpers: {
isChecked: import("svelte/store").Readable<boolean>;
isIndeterminate: import("svelte/store").Readable<boolean>;
};
options: {
disabled: import("svelte/store").Writable<boolean>;
};
};
createSubmenu: (args?: import("@melt-ui/svelte/dist/builders/menu/types.js")._CreateSubmenuProps | undefined) => {
ids: import("@melt-ui/svelte/internal/helpers").ToWritableStores<{
menu: string;
trigger: string;
}>;
elements: {
subTrigger: import("@melt-ui/svelte/internal/helpers").MeltElement<[{
update: (updater: import("svelte/store").Updater<boolean>, sideEffect?: ((newValue: boolean) => void) | undefined) => void;
set: (this: void, value: boolean) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean>, invalidate?: import("svelte/store").Invalidator<boolean> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean;
destroy?: (() => void) | undefined;
}, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<boolean>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"click" | "focusin" | "focusout" | "keydown" | "pointerleave" | "pointermove">, ([$subOpen, $disabled, $subMenuId, $subTriggerId]: [boolean, boolean, string, string]) => {
readonly role: "menuitem";
readonly id: string;
readonly tabindex: -1;
readonly "aria-controls": string;
readonly "aria-expanded": boolean;
readonly "data-state": "open" | "closed";
readonly "data-disabled": true | undefined;
readonly "aria-haspopop": "menu";
}, string>;
subMenu: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("svelte/store").Readable<boolean>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"focusout" | "keydown" | "pointermove">, ([$subIsVisible, $subMenuId, $subTriggerId]: [boolean, string, string]) => {
readonly role: "menu";
readonly hidden: true | undefined;
readonly style: string;
readonly id: string;
readonly "aria-labelledby": string;
readonly "data-state": "open" | "closed";
readonly "data-id": string;
readonly tabindex: -1;
}, string>;
subArrow: import("@melt-ui/svelte/internal/helpers").MeltElement<import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<number>>, import("svelte/action").Action<any, any, Record<never, any>>, ($arrowSize: number) => {
"data-arrow": boolean;
style: string;
}, string>;
};
states: {
subOpen: {
update: (updater: import("svelte/store").Updater<boolean>, sideEffect?: ((newValue: boolean) => void) | undefined) => void;
set: (this: void, value: boolean) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean>, invalidate?: import("svelte/store").Invalidator<boolean> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean;
destroy?: (() => void) | undefined;
};
};
options: import("@melt-ui/svelte/internal/helpers").ToWritableStores<Omit<{
open?: import("svelte/store").Writable<boolean> | undefined;
ids?: Partial<{
menu: string;
trigger: string;
}> | undefined;
onOpenChange?: import("@melt-ui/svelte/internal/helpers").ChangeFn<boolean> | undefined;
positioning: import("@melt-ui/svelte/internal/actions").FloatingConfig | {
placement: "right-start";
gutter: number;
};
arrowSize: number;
disabled: boolean;
preventScroll: true;
closeOnEscape: true;
closeOnOutsideClick: true;
portal: undefined;
loop: false;
dir: "ltr";
defaultOpen: false;
typeahead: true;
closeOnItemClick: true;
onOutsideClick: undefined;
}, "ids">>;
};
createMenuRadioGroup: (args?: import("@melt-ui/svelte/dist/builders/menu/types.js")._CreateRadioGroupProps) => {
elements: {
radioGroup: import("@melt-ui/svelte/internal/helpers").MeltElement<import("svelte/store").Stores | undefined, import("svelte/action").Action<any, any, Record<never, any>>, () => {
role: string;
}, string>;
radioItem: import("@melt-ui/svelte/internal/helpers").MeltElement<[{
update: (updater: import("svelte/store").Updater<string | null>, sideEffect?: ((newValue: string | null) => void) | undefined) => void;
set: (this: void, value: string | null) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<string | null>, invalidate?: import("svelte/store").Invalidator<string | null> | undefined): import("svelte/store").Unsubscriber;
get: () => string | null;
destroy?: (() => void) | undefined;
}], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"click" | "focusin" | "focusout" | "keydown" | "pointerdown" | "pointerleave" | "pointermove">, ([$value]: [string | null]) => (itemProps: import("@melt-ui/svelte/dist/builders/menu/types.js")._RadioItemProps) => {
disabled: boolean;
role: string;
"data-state": string;
"aria-checked": boolean;
"data-disabled": boolean | undefined;
"data-value": string;
"data-orientation": string;
tabindex: number;
}, string>;
};
states: {
value: {
update: (updater: import("svelte/store").Updater<string | null>, sideEffect?: ((newValue: string | null) => void) | undefined) => void;
set: (this: void, value: string | null) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<string | null>, invalidate?: import("svelte/store").Invalidator<string | null> | undefined): import("svelte/store").Unsubscriber;
get: () => string | null;
destroy?: (() => void) | undefined;
};
};
helpers: {
isChecked: import("svelte/store").Readable<(itemValue: string) => boolean>;
};
};
};
states: {
open: import("@melt-ui/svelte/internal/helpers").WithGet<import("svelte/store").Writable<boolean>>;
};
options: import("@melt-ui/svelte/internal/helpers").ToWritableStores<{
dir: import("@melt-ui/svelte/internal/types").TextDirection;
open?: import("svelte/store").Writable<boolean> | undefined;
forceVisible: boolean;
portal: string | HTMLElement | null | undefined;
ids?: Partial<{
menu: string;
trigger: string;
}> | undefined;
defaultOpen: boolean;
onOpenChange?: import("@melt-ui/svelte/internal/helpers").ChangeFn<boolean> | undefined;
positioning: import("@melt-ui/svelte/internal/actions").FloatingConfig | {
placement: "bottom-start";
};
arrowSize: number;
loop: boolean;
closeOnOutsideClick: boolean;
closeOnEscape: boolean;
onOutsideClick: ((event: import("@melt-ui/svelte/internal/actions").InteractOutsideEvent) => void) | undefined;
typeahead: boolean;
closeOnItemClick: boolean;
closeFocus: import("@melt-ui/svelte/index.js").FocusProp | undefined;
disableFocusFirstItem: boolean;
}>;
};
export declare function getMenuCtx(): GetMenuReturn;
export declare function setSubMenuCtx(props: CreateMenubarSubmenuProps): {
updateOption: <K extends string, V extends import("svelte/store").StoresValues<Writable<unknown>>>(key: K, value: V | undefined) => void;
getAttrs: (part: "label" | "radio-group" | "separator" | "content" | "item" | "trigger" | "group" | "arrow" | "checkbox-indicator" | "checkbox-item" | "radio-item" | "sub-content" | "sub-trigger") => Record<string, string> | undefined;
ids: import("@melt-ui/svelte/internal/helpers").ToWritableStores<{
menu: string;
trigger: string;
}>;
elements: {
subTrigger: import("@melt-ui/svelte/internal/helpers").MeltElement<[{
update: (updater: import("svelte/store").Updater<boolean>, sideEffect?: ((newValue: boolean) => void) | undefined) => void;
set: (this: void, value: boolean) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean>, invalidate?: import("svelte/store").Invalidator<boolean> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean;
destroy?: (() => void) | undefined;
}, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<boolean>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"click" | "focusin" | "focusout" | "keydown" | "pointerleave" | "pointermove">, ([$subOpen, $disabled, $subMenuId, $subTriggerId]: [boolean, boolean, string, string]) => {
readonly role: "menuitem";
readonly id: string;
readonly tabindex: -1;
readonly "aria-controls": string;
readonly "aria-expanded": boolean;
readonly "data-state": "open" | "closed";
readonly "data-disabled": true | undefined;
readonly "aria-haspopop": "menu";
}, string>;
subMenu: import("@melt-ui/svelte/internal/helpers").MeltElement<[import("svelte/store").Readable<boolean>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>, import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<string>>], (node: HTMLElement) => import("@melt-ui/svelte/internal/types").MeltActionReturn<"focusout" | "keydown" | "pointermove">, ([$subIsVisible, $subMenuId, $subTriggerId]: [boolean, string, string]) => {
readonly role: "menu";
readonly hidden: true | undefined;
readonly style: string;
readonly id: string;
readonly "aria-labelledby": string;
readonly "data-state": "open" | "closed";
readonly "data-id": string;
readonly tabindex: -1;
}, string>;
subArrow: import("@melt-ui/svelte/internal/helpers").MeltElement<import("@melt-ui/svelte/dist/internal/helpers/withGet.js").WithGet<import("svelte/store").Writable<number>>, import("svelte/action").Action<any, any, Record<never, any>>, ($arrowSize: number) => {
"data-arrow": boolean;
style: string;
}, string>;
};
states: {
subOpen: {
update: (updater: import("svelte/store").Updater<boolean>, sideEffect?: ((newValue: boolean) => void) | undefined) => void;
set: (this: void, value: boolean) => void;
subscribe(this: void, run: import("svelte/store").Subscriber<boolean>, invalidate?: import("svelte/store").Invalidator<boolean> | undefined): import("svelte/store").Unsubscriber;
get: () => boolean;
destroy?: (() => void) | undefined;
};
};
options: import("@melt-ui/svelte/internal/helpers").ToWritableStores<Omit<{
open?: import("svelte/store").Writable<boolean> | undefined;
ids?: Partial<{
menu: string;
trigger: string;
}> | undefined;
onOpenChange?: import("@melt-ui/svelte/internal/helpers").ChangeFn<boolean> | undefined;
positioning: import("@melt-ui/svelte/internal/actions").FloatingConfig | {
placement: "right-start";
gutter: number;
};
arrowSize: number;
disabled: boolean;
preventScroll: true;
closeOnEscape: true;
closeOnOutsideClick: true;
portal: undefined;
loop: false;
dir: "ltr";
defaultOpen: false;
typeahead: true;
closeOnItemClick: true;
onOutsideClick: undefined;
}, "ids">>;
};
export declare function getSubMenuCtx(): GetSubmenuReturn;
export declare function updatePositioning(props: FloatingProps): void;
export declare function updateSubPositioning(props: FloatingProps): void;
export {};