/** * Create an action button with consistent styling and behavior * * @param {object} config - Button configuration * @param {string} config.action - Action identifier (data-action attribute) * @param {string} config.title - Tooltip text * @param {string} config.icon - SVG icon HTML * @param {string} config.styleClass - Additional CSS classes (optional) * @param {Function} config.onClick - Click handler (optional) * @param {boolean} config.feedback - Show success animation on click (default: false) * @param {string} config.ariaLabel - Accessibility label (defaults to title) * @returns {HTMLButtonElement} Configured button element * * @example * const copyBtn = createButton({ * action: "copy", * title: "Copy to clipboard", * icon: ICONS.copy, * styleClass: "dv-btn-accent", * feedback: true, * onClick: () => exportDiagram(element, "copy") * }); */ export function createButton(config: { action: string; title: string; icon: string; styleClass: string; onClick: Function; feedback: boolean; ariaLabel: string; }): HTMLButtonElement; /** * Create multiple buttons at once * * @param {Array} configs - Array of button configurations * @returns {Array} Array of button elements * * @example * const buttons = createButtons([ * { action: "copy", title: "Copy", icon: ICONS.copy, feedback: true }, * { action: "download", title: "Download", icon: ICONS.dl, feedback: true }, * { action: "fullscreen", title: "Fullscreen", icon: ICONS.fs } * ]); */ export function createButtons(configs: Array): Array; /** * Create a button group container with buttons * * @param {Array} buttonConfigs - Array of button configurations * @param {string} className - Additional CSS class for the group (optional) * @returns {HTMLDivElement} Button group container * * @example * const btnGroup = createButtonGroup([ * { action: "copy", title: "Copy", icon: ICONS.copy }, * { action: "download", title: "Download", icon: ICONS.dl } * ], "my-custom-group"); */ export function createButtonGroup(buttonConfigs: Array, className?: string): HTMLDivElement; /** * Create a menu item button (for floating menu) * * @param {object} config - Menu item configuration * @param {string} config.id - Element ID * @param {string} config.icon - SVG icon HTML * @param {string} config.label - Button label text * @param {string} config.shortcut - Keyboard shortcut (optional) * @param {Function} config.onClick - Click handler (optional) * @param {string} config.className - Additional CSS classes (optional) * @returns {HTMLButtonElement} Menu item button * * @example * const shareBtn = createMenuItem({ * id: "dv-share", * icon: ICONS.share, * label: "Share Link", * shortcut: "L", * onClick: () => shareLink(index) * }); */ export function createMenuItem(config: { id: string; icon: string; label: string; shortcut: string; onClick: Function; className: string; }): HTMLButtonElement; //# sourceMappingURL=button-factory.d.ts.map