UNPKG

@bernierllc/generic-workflow-ui

Version:

Generic, reusable workflow UI components with linear and graph visualization

47 lines (46 loc) 2.13 kB
"use strict"; /* Copyright (c) 2025 Bernier LLC */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GenericActionButtons = GenericActionButtons; const react_1 = __importDefault(require("react")); const tamagui_1 = require("tamagui"); const defaultConfig = { enabled: true, size: 'medium', variant: 'primary', showIcons: true, showLabels: true, showTooltips: true, buttonColors: {} }; function GenericActionButtons({ config: userConfig = {}, actions, disabled = false }) { const config = { ...defaultConfig, ...userConfig }; if (!config.enabled) { return react_1.default.createElement(react_1.default.Fragment, null); } const visibleActions = actions.filter((action) => action.visible); if (visibleActions.length === 0) { return react_1.default.createElement(react_1.default.Fragment, null); } const getButtonSize = () => { switch (config.size) { case 'small': return '$3'; case 'large': return '$5'; default: return '$4'; } }; const getButtonVariant = (action) => { return action.variant || config.variant; }; return (react_1.default.createElement(tamagui_1.XStack, { gap: "$2", padding: "$2", flexWrap: "wrap" }, visibleActions.map((action) => (react_1.default.createElement(tamagui_1.Button, { key: action.id, size: getButtonSize(), variant: getButtonVariant(action), disabled: disabled || action.disabled, onPress: action.onClick, backgroundColor: config.buttonColors?.[action.id] || action.color, cursor: disabled || action.disabled ? 'not-allowed' : 'pointer', opacity: disabled || action.disabled ? 0.5 : 1 }, config.showIcons && action.icon && (react_1.default.createElement(tamagui_1.Text, { marginRight: config.showLabels ? '$2' : 0 }, action.icon)), config.showLabels && react_1.default.createElement(tamagui_1.Text, null, action.label)))))); }