import type { ReactElement } from 'react';
/**
* Standard, natively-handled roles. All but `'reload'` map straight onto a
* muda `PredefinedMenuItem` on macOS (no JS involved) or a native
* window/process action on Windows — see `crates/native/src/menu.rs`'s
* `predefined_localized` / `windows_role_item`. `'reload'` has no native
* counterpart, so it's JS sugar for `action: ` instead (see
* the module doc comment).
*/
export type AppMenuItemRole = 'quit' | 'close' | 'minimize' | 'zoom' | 'undo' | 'redo' | 'cut' | 'copy' | 'paste' | 'selectAll' | 'reload';
/** A built-in `` / `` / `` element, or your own function. */
export type AppMenuAction = ReactElement | (() => void | Promise);
export interface AppMenuEntry {
label: string;
shortcut?: string;
disabled?: boolean;
/** A custom function, or one of the client-behaviour `` elements (`Reload`/`Navigate`/`Run`). */
action?: AppMenuAction;
/** A nested submenu (in place of an action). */
items?: AppMenuItemSpec[];
}
export type AppMenuItemSpec = AppMenuEntry | {
role: AppMenuItemRole;
} | {
separator: true;
};
/** Standard submenu roles for a top-level `AppMenu` entry. */
export type AppMenuRole = 'editMenu' | 'windowMenu';
/** One top-level menu (e.g. "File") — a custom submenu, or a standard role submenu. */
export type AppMenu = {
label: string;
items: AppMenuItemSpec[];
} | {
role: AppMenuRole;
};
export declare function useAppMenu(menus: AppMenu[]): void;
//# sourceMappingURL=app-menu.d.ts.map