@automa8e/ui 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +2 -0
- package/dist/_virtual/index.js +6 -0
- package/dist/_virtual/index.js.map +1 -0
- package/dist/_virtual/index2.js +5 -0
- package/dist/_virtual/index2.js.map +1 -0
- package/dist/_virtual/use-sync-external-store-shim.development.js +5 -0
- package/dist/_virtual/use-sync-external-store-shim.development.js.map +1 -0
- package/dist/_virtual/use-sync-external-store-shim.production.js +5 -0
- package/dist/_virtual/use-sync-external-store-shim.production.js.map +1 -0
- package/dist/automa8e-ui.css +226 -0
- package/dist/components/automation/metric-card.d.ts +19 -0
- package/dist/components/automation/metric-card.d.ts.map +1 -0
- package/dist/components/automation/metric-card.js +59 -0
- package/dist/components/automation/metric-card.js.map +1 -0
- package/dist/components/automation/status-badge.d.ts +27 -0
- package/dist/components/automation/status-badge.d.ts.map +1 -0
- package/dist/components/automation/status-badge.js +112 -0
- package/dist/components/automation/status-badge.js.map +1 -0
- package/dist/components/automation/task-card.d.ts +14 -0
- package/dist/components/automation/task-card.d.ts.map +1 -0
- package/dist/components/automation/task-card.js +114 -0
- package/dist/components/automation/task-card.js.map +1 -0
- package/dist/components/automation/workflow-node.d.ts +20 -0
- package/dist/components/automation/workflow-node.d.ts.map +1 -0
- package/dist/components/automation/workflow-node.js +132 -0
- package/dist/components/automation/workflow-node.js.map +1 -0
- package/dist/components/layout/app-shell.d.ts +21 -0
- package/dist/components/layout/app-shell.d.ts.map +1 -0
- package/dist/components/layout/app-shell.js +35 -0
- package/dist/components/layout/app-shell.js.map +1 -0
- package/dist/components/layout/header.d.ts +16 -0
- package/dist/components/layout/header.d.ts.map +1 -0
- package/dist/components/layout/header.js +30 -0
- package/dist/components/layout/header.js.map +1 -0
- package/dist/components/layout/page-header.d.ts +16 -0
- package/dist/components/layout/page-header.d.ts.map +1 -0
- package/dist/components/layout/page-header.js +29 -0
- package/dist/components/layout/page-header.js.map +1 -0
- package/dist/components/layout/sidebar.d.ts +35 -0
- package/dist/components/layout/sidebar.d.ts.map +1 -0
- package/dist/components/layout/sidebar.js +103 -0
- package/dist/components/layout/sidebar.js.map +1 -0
- package/dist/components/ui/accordion.d.ts +8 -0
- package/dist/components/ui/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion.js +51 -0
- package/dist/components/ui/accordion.js.map +1 -0
- package/dist/components/ui/alert.d.ts +18 -0
- package/dist/components/ui/alert.d.ts.map +1 -0
- package/dist/components/ui/alert.js +89 -0
- package/dist/components/ui/alert.js.map +1 -0
- package/dist/components/ui/avatar.d.ts +20 -0
- package/dist/components/ui/avatar.d.ts.map +1 -0
- package/dist/components/ui/avatar.js +72 -0
- package/dist/components/ui/avatar.js.map +1 -0
- package/dist/components/ui/badge.d.ts +13 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/badge.js +54 -0
- package/dist/components/ui/badge.js.map +1 -0
- package/dist/components/ui/button.d.ts +15 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/button.js +96 -0
- package/dist/components/ui/button.js.map +1 -0
- package/dist/components/ui/card.d.ts +16 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/card.js +96 -0
- package/dist/components/ui/card.js.map +1 -0
- package/dist/components/ui/checkbox.d.ts +9 -0
- package/dist/components/ui/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox.js +29 -0
- package/dist/components/ui/checkbox.js.map +1 -0
- package/dist/components/ui/dialog.d.ts +28 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog.js +105 -0
- package/dist/components/ui/dialog.js.map +1 -0
- package/dist/components/ui/dropdown-menu.d.ts +29 -0
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu.js +160 -0
- package/dist/components/ui/dropdown-menu.js.map +1 -0
- package/dist/components/ui/input.d.ts +14 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/input.js +60 -0
- package/dist/components/ui/input.js.map +1 -0
- package/dist/components/ui/label.d.ts +13 -0
- package/dist/components/ui/label.d.ts.map +1 -0
- package/dist/components/ui/label.js +26 -0
- package/dist/components/ui/label.js.map +1 -0
- package/dist/components/ui/popover.d.ts +8 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/popover.js +29 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/progress.d.ts +17 -0
- package/dist/components/ui/progress.d.ts.map +1 -0
- package/dist/components/ui/progress.js +80 -0
- package/dist/components/ui/progress.js.map +1 -0
- package/dist/components/ui/scroll-area.d.ts +6 -0
- package/dist/components/ui/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area.js +39 -0
- package/dist/components/ui/scroll-area.js.map +1 -0
- package/dist/components/ui/select.d.ts +16 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/select.js +131 -0
- package/dist/components/ui/select.js.map +1 -0
- package/dist/components/ui/separator.d.ts +9 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/separator.js +50 -0
- package/dist/components/ui/separator.js.map +1 -0
- package/dist/components/ui/skeleton.d.ts +10 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton.js +30 -0
- package/dist/components/ui/skeleton.js.map +1 -0
- package/dist/components/ui/spinner.d.ts +14 -0
- package/dist/components/ui/spinner.d.ts.map +1 -0
- package/dist/components/ui/spinner.js +44 -0
- package/dist/components/ui/spinner.js.map +1 -0
- package/dist/components/ui/switch.d.ts +8 -0
- package/dist/components/ui/switch.d.ts.map +1 -0
- package/dist/components/ui/switch.js +43 -0
- package/dist/components/ui/switch.js.map +1 -0
- package/dist/components/ui/table.d.ts +11 -0
- package/dist/components/ui/table.d.ts.map +1 -0
- package/dist/components/ui/table.js +95 -0
- package/dist/components/ui/table.js.map +1 -0
- package/dist/components/ui/tabs.d.ts +20 -0
- package/dist/components/ui/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs.js +92 -0
- package/dist/components/ui/tabs.js.map +1 -0
- package/dist/components/ui/textarea.d.ts +12 -0
- package/dist/components/ui/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea.js +41 -0
- package/dist/components/ui/textarea.js.map +1 -0
- package/dist/components/ui/toast.d.ts +16 -0
- package/dist/components/ui/toast.d.ts.map +1 -0
- package/dist/components/ui/toast.js +113 -0
- package/dist/components/ui/toast.js.map +1 -0
- package/dist/components/ui/tooltip.d.ts +8 -0
- package/dist/components/ui/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip.js +28 -0
- package/dist/components/ui/tooltip.js.map +1 -0
- package/dist/hooks/use-debounce.d.ts +15 -0
- package/dist/hooks/use-debounce.d.ts.map +1 -0
- package/dist/hooks/use-debounce.js +15 -0
- package/dist/hooks/use-debounce.js.map +1 -0
- package/dist/hooks/use-local-storage.d.ts +9 -0
- package/dist/hooks/use-local-storage.d.ts.map +1 -0
- package/dist/hooks/use-local-storage.js +49 -0
- package/dist/hooks/use-local-storage.js.map +1 -0
- package/dist/hooks/use-media-query.d.ts +9 -0
- package/dist/hooks/use-media-query.d.ts.map +1 -0
- package/dist/hooks/use-media-query.js +20 -0
- package/dist/hooks/use-media-query.js.map +1 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +153 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/colors.d.ts +73 -0
- package/dist/lib/colors.d.ts.map +1 -0
- package/dist/lib/colors.js +64 -0
- package/dist/lib/colors.js.map +1 -0
- package/dist/lib/utils.d.ts +7 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +729 -0
- package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -0
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +630 -0
- package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -0
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +325 -0
- package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +1 -0
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +177 -0
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -0
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +152 -0
- package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -0
- package/dist/node_modules/@radix-ui/number/dist/index.js +7 -0
- package/dist/node_modules/@radix-ui/number/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/primitive/dist/index.js +12 -0
- package/dist/node_modules/@radix-ui/primitive/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-accordion/dist/index.js +319 -0
- package/dist/node_modules/@radix-ui/react-accordion/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-arrow/dist/index.js +26 -0
- package/dist/node_modules/@radix-ui/react-arrow/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-avatar/dist/index.js +124 -0
- package/dist/node_modules/@radix-ui/react-avatar/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.js +66 -0
- package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.js +40 -0
- package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js +280 -0
- package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js +152 -0
- package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-collection/dist/index.js +71 -0
- package/dist/node_modules/@radix-ui/react-collection/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
- package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +40 -0
- package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-context/dist/index.js +82 -0
- package/dist/node_modules/@radix-ui/react-context/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/dist/index.js +342 -0
- package/dist/node_modules/@radix-ui/react-dialog/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
- package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-direction/dist/index.js +11 -0
- package/dist/node_modules/@radix-ui/react-direction/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +217 -0
- package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.js +299 -0
- package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +30 -0
- package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +209 -0
- package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-id/dist/index.js +15 -0
- package/dist/node_modules/@radix-ui/react-id/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-label/dist/index.js +27 -0
- package/dist/node_modules/@radix-ui/react-label/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js +40 -0
- package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-menu/dist/index.js +881 -0
- package/dist/node_modules/@radix-ui/react-menu/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
- package/dist/node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-popover/dist/index.js +314 -0
- package/dist/node_modules/@radix-ui/react-popover/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
- package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-popper/dist/index.js +294 -0
- package/dist/node_modules/@radix-ui/react-popper/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-portal/dist/index.js +19 -0
- package/dist/node_modules/@radix-ui/react-portal/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-presence/dist/index.js +130 -0
- package/dist/node_modules/@radix-ui/react-presence/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-primitive/dist/index.js +44 -0
- package/dist/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
- package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-progress/dist/index.js +97 -0
- package/dist/node_modules/@radix-ui/react-progress/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context/dist/index.js +66 -0
- package/dist/node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive/dist/index.js +40 -0
- package/dist/node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js +228 -0
- package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-scroll-area/dist/index.js +728 -0
- package/dist/node_modules/@radix-ui/react-scroll-area/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-select/dist/index.js +1200 -0
- package/dist/node_modules/@radix-ui/react-select/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
- package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-separator/dist/index.js +31 -0
- package/dist/node_modules/@radix-ui/react-separator/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js +40 -0
- package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-slot/dist/index.js +107 -0
- package/dist/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-switch/dist/index.js +156 -0
- package/dist/node_modules/@radix-ui/react-switch/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-tabs/dist/index.js +195 -0
- package/dist/node_modules/@radix-ui/react-tabs/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-toast/dist/index.js +645 -0
- package/dist/node_modules/@radix-ui/react-toast/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-tooltip/dist/index.js +501 -0
- package/dist/node_modules/@radix-ui/react-tooltip/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.js +16 -0
- package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +15 -0
- package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +72 -0
- package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +18 -0
- package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.js +16 -0
- package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +7 -0
- package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js +15 -0
- package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-use-size/dist/index.js +40 -0
- package/dist/node_modules/@radix-ui/react-use-size/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js +37 -0
- package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js.map +1 -0
- package/dist/node_modules/aria-hidden/dist/es2015/index.js +123 -0
- package/dist/node_modules/aria-hidden/dist/es2015/index.js.map +1 -0
- package/dist/node_modules/class-variance-authority/dist/index.js +46 -0
- package/dist/node_modules/class-variance-authority/dist/index.js.map +1 -0
- package/dist/node_modules/clsx/dist/clsx.js +17 -0
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/node_modules/get-nonce/dist/es2015/index.js +10 -0
- package/dist/node_modules/get-nonce/dist/es2015/index.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/Icon.js +43 -0
- package/dist/node_modules/lucide-react/dist/esm/Icon.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js +25 -0
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js +21 -0
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/ban.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/ban.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/check.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/check.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-minus.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-minus.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/circle.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/clock.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/clock.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/flag.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/flag.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-branch.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/git-branch.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/info.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/info.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.js +12 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/pause.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/pause.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/play.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/play.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/send.js +21 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/send.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tag.js +21 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tag.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/timer.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trending-down.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trending-down.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trending-up.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trending-up.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.js +22 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/x.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/x.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/zap.js +20 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/zap.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js +15 -0
- package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js.map +1 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js +12 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js.map +1 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +181 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js.map +1 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js +39 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js.map +1 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +20 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js.map +1 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +103 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js.map +1 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js +6 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js.map +1 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js +8 -0
- package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js.map +1 -0
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js +48 -0
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js.map +1 -0
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +11 -0
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js.map +1 -0
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +38 -0
- package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js.map +1 -0
- package/dist/node_modules/react-style-singleton/dist/es2015/component.js +14 -0
- package/dist/node_modules/react-style-singleton/dist/es2015/component.js.map +1 -0
- package/dist/node_modules/react-style-singleton/dist/es2015/hook.js +17 -0
- package/dist/node_modules/react-style-singleton/dist/es2015/hook.js.map +1 -0
- package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js +49 -0
- package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js.map +1 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +2467 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/dist/node_modules/tslib/tslib.es6.js +40 -0
- package/dist/node_modules/tslib/tslib.es6.js.map +1 -0
- package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js +12 -0
- package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js.map +1 -0
- package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +36 -0
- package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js.map +1 -0
- package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js +30 -0
- package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js.map +1 -0
- package/dist/node_modules/use-sidecar/dist/es2015/exports.js +22 -0
- package/dist/node_modules/use-sidecar/dist/es2015/exports.js.map +1 -0
- package/dist/node_modules/use-sidecar/dist/es2015/medium.js +89 -0
- package/dist/node_modules/use-sidecar/dist/es2015/medium.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +78 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +63 -0
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +1 -0
- package/dist/node_modules/use-sync-external-store/shim/index.js +18 -0
- package/dist/node_modules/use-sync-external-store/shim/index.js.map +1 -0
- package/dist/types/automation.d.ts +59 -0
- package/dist/types/automation.d.ts.map +1 -0
- package/dist/types/common.d.ts +38 -0
- package/dist/types/common.d.ts.map +1 -0
- package/package.json +119 -0
- package/registry/registry.json +218 -0
- package/src/components/automation/metric-card.tsx +113 -0
- package/src/components/automation/status-badge.tsx +136 -0
- package/src/components/automation/task-card.tsx +164 -0
- package/src/components/automation/workflow-node.tsx +186 -0
- package/src/components/layout/app-shell.tsx +58 -0
- package/src/components/layout/header.tsx +39 -0
- package/src/components/layout/page-header.tsx +42 -0
- package/src/components/layout/sidebar.tsx +190 -0
- package/src/components/ui/accordion.tsx +57 -0
- package/src/components/ui/alert.tsx +93 -0
- package/src/components/ui/avatar.tsx +94 -0
- package/src/components/ui/badge.tsx +69 -0
- package/src/components/ui/button.tsx +106 -0
- package/src/components/ui/card.tsx +96 -0
- package/src/components/ui/checkbox.tsx +40 -0
- package/src/components/ui/dialog.tsx +129 -0
- package/src/components/ui/dropdown-menu.tsx +194 -0
- package/src/components/ui/input.tsx +80 -0
- package/src/components/ui/label.tsx +37 -0
- package/src/components/ui/popover.tsx +29 -0
- package/src/components/ui/progress.tsx +92 -0
- package/src/components/ui/scroll-area.tsx +43 -0
- package/src/components/ui/select.tsx +157 -0
- package/src/components/ui/separator.tsx +56 -0
- package/src/components/ui/skeleton.tsx +41 -0
- package/src/components/ui/spinner.tsx +50 -0
- package/src/components/ui/switch.tsx +46 -0
- package/src/components/ui/table.tsx +117 -0
- package/src/components/ui/tabs.tsx +107 -0
- package/src/components/ui/textarea.tsx +50 -0
- package/src/components/ui/toast.tsx +139 -0
- package/src/components/ui/tooltip.tsx +28 -0
- package/src/hooks/use-debounce.ts +28 -0
- package/src/hooks/use-local-storage.ts +63 -0
- package/src/hooks/use-media-query.ts +29 -0
- package/src/index.ts +197 -0
- package/src/lib/colors.ts +102 -0
- package/src/lib/utils.ts +10 -0
- package/src/styles/globals.css +230 -0
- package/src/types/automation.ts +74 -0
- package/src/types/common.ts +48 -0
- package/tailwind/preset.cjs +98 -0
- package/tailwind/preset.css +5 -0
- package/tailwind/preset.ts +159 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Daniel Evans
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-sync-external-store-shim.development.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-sync-external-store-shim.production.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=IBM+Plex+Mono:wght@300;400;500;600&family=Syne:wght@400;500;600;700;800&display=swap');
|
|
2
|
+
|
|
3
|
+
/* ── Google Fonts ─────────────────────────────────────────────── */
|
|
4
|
+
/* ── Design tokens ────────────────────────────────────────────── */
|
|
5
|
+
:root {
|
|
6
|
+
/* ── Light mode (default, shadcn convention) ── */
|
|
7
|
+
--radius: 0.5rem;
|
|
8
|
+
|
|
9
|
+
--background: oklch(0.99 0 0);
|
|
10
|
+
--foreground: oklch(0.18 0.02 255);
|
|
11
|
+
--card: oklch(1.00 0 0);
|
|
12
|
+
--card-foreground: oklch(0.18 0.02 255);
|
|
13
|
+
--popover: oklch(1.00 0 0);
|
|
14
|
+
--popover-foreground: oklch(0.18 0.02 255);
|
|
15
|
+
--primary: oklch(0.70 0.18 52);
|
|
16
|
+
--primary-foreground: oklch(0.99 0 0);
|
|
17
|
+
--secondary: oklch(0.94 0.01 255);
|
|
18
|
+
--secondary-foreground: oklch(0.22 0.02 255);
|
|
19
|
+
--muted: oklch(0.94 0.01 255);
|
|
20
|
+
--muted-foreground: oklch(0.52 0.01 255);
|
|
21
|
+
--accent: oklch(0.94 0.01 255);
|
|
22
|
+
--accent-foreground: oklch(0.22 0.02 255);
|
|
23
|
+
--destructive: oklch(0.58 0.22 25);
|
|
24
|
+
--destructive-foreground: oklch(0.99 0 0);
|
|
25
|
+
--success: oklch(0.60 0.18 145);
|
|
26
|
+
--success-foreground: oklch(0.99 0 0);
|
|
27
|
+
--warning: oklch(0.82 0.16 84);
|
|
28
|
+
--warning-foreground: oklch(0.18 0.02 255);
|
|
29
|
+
--info: oklch(0.65 0.16 220);
|
|
30
|
+
--info-foreground: oklch(0.99 0 0);
|
|
31
|
+
--border: oklch(0.88 0.01 255);
|
|
32
|
+
--input: oklch(0.88 0.01 255);
|
|
33
|
+
--ring: oklch(0.70 0.18 52);
|
|
34
|
+
|
|
35
|
+
/* sidebar */
|
|
36
|
+
--sidebar: oklch(0.96 0.005 255);
|
|
37
|
+
--sidebar-foreground: oklch(0.18 0.02 255);
|
|
38
|
+
--sidebar-primary: oklch(0.70 0.18 52);
|
|
39
|
+
--sidebar-primary-foreground: oklch(0.99 0 0);
|
|
40
|
+
--sidebar-accent: oklch(0.92 0.01 255);
|
|
41
|
+
--sidebar-accent-foreground: oklch(0.22 0.02 255);
|
|
42
|
+
--sidebar-border: oklch(0.88 0.01 255);
|
|
43
|
+
--sidebar-ring: oklch(0.70 0.18 52);
|
|
44
|
+
|
|
45
|
+
/* workflow status */
|
|
46
|
+
--workflow-running: oklch(0.70 0.18 52);
|
|
47
|
+
--workflow-completed: oklch(0.60 0.18 145);
|
|
48
|
+
--workflow-failed: oklch(0.58 0.22 25);
|
|
49
|
+
--workflow-pending: oklch(0.52 0.01 255);
|
|
50
|
+
--workflow-paused: oklch(0.82 0.16 84);
|
|
51
|
+
--workflow-cancelled: oklch(0.38 0.01 255);
|
|
52
|
+
|
|
53
|
+
/* charts */
|
|
54
|
+
--chart-1: oklch(0.70 0.18 52);
|
|
55
|
+
--chart-2: oklch(0.65 0.16 220);
|
|
56
|
+
--chart-3: oklch(0.60 0.18 145);
|
|
57
|
+
--chart-4: oklch(0.82 0.16 84);
|
|
58
|
+
--chart-5: oklch(0.58 0.22 25);
|
|
59
|
+
}
|
|
60
|
+
.dark {
|
|
61
|
+
/* ── Dark mode (automa8e default brand experience) ── */
|
|
62
|
+
--background: oklch(0.14 0.02 255);
|
|
63
|
+
--foreground: oklch(0.92 0.01 255);
|
|
64
|
+
--card: oklch(0.17 0.02 255);
|
|
65
|
+
--card-foreground: oklch(0.92 0.01 255);
|
|
66
|
+
--popover: oklch(0.17 0.02 255);
|
|
67
|
+
--popover-foreground: oklch(0.92 0.01 255);
|
|
68
|
+
--primary: oklch(0.72 0.18 52);
|
|
69
|
+
--primary-foreground: oklch(0.14 0.02 255);
|
|
70
|
+
--secondary: oklch(0.24 0.02 255);
|
|
71
|
+
--secondary-foreground: oklch(0.92 0.01 255);
|
|
72
|
+
--muted: oklch(0.22 0.02 255);
|
|
73
|
+
--muted-foreground: oklch(0.54 0.01 255);
|
|
74
|
+
--accent: oklch(0.24 0.02 255);
|
|
75
|
+
--accent-foreground: oklch(0.92 0.01 255);
|
|
76
|
+
--destructive: oklch(0.60 0.22 25);
|
|
77
|
+
--destructive-foreground: oklch(0.92 0.01 255);
|
|
78
|
+
--success: oklch(0.62 0.18 145);
|
|
79
|
+
--success-foreground: oklch(0.92 0.01 255);
|
|
80
|
+
--warning: oklch(0.82 0.16 84);
|
|
81
|
+
--warning-foreground: oklch(0.14 0.02 255);
|
|
82
|
+
--info: oklch(0.67 0.16 220);
|
|
83
|
+
--info-foreground: oklch(0.92 0.01 255);
|
|
84
|
+
--border: oklch(0.26 0.02 255);
|
|
85
|
+
--input: oklch(0.26 0.02 255);
|
|
86
|
+
--ring: oklch(0.72 0.18 52);
|
|
87
|
+
|
|
88
|
+
--sidebar: oklch(0.17 0.02 255);
|
|
89
|
+
--sidebar-foreground: oklch(0.92 0.01 255);
|
|
90
|
+
--sidebar-primary: oklch(0.72 0.18 52);
|
|
91
|
+
--sidebar-primary-foreground: oklch(0.14 0.02 255);
|
|
92
|
+
--sidebar-accent: oklch(0.22 0.02 255);
|
|
93
|
+
--sidebar-accent-foreground: oklch(0.92 0.01 255);
|
|
94
|
+
--sidebar-border: oklch(0.26 0.02 255);
|
|
95
|
+
--sidebar-ring: oklch(0.72 0.18 52);
|
|
96
|
+
|
|
97
|
+
--workflow-running: oklch(0.72 0.18 52);
|
|
98
|
+
--workflow-completed: oklch(0.62 0.18 145);
|
|
99
|
+
--workflow-failed: oklch(0.60 0.22 25);
|
|
100
|
+
--workflow-pending: oklch(0.54 0.01 255);
|
|
101
|
+
--workflow-paused: oklch(0.82 0.16 84);
|
|
102
|
+
--workflow-cancelled: oklch(0.38 0.01 255);
|
|
103
|
+
|
|
104
|
+
--chart-1: oklch(0.72 0.18 52);
|
|
105
|
+
--chart-2: oklch(0.67 0.16 220);
|
|
106
|
+
--chart-3: oklch(0.62 0.18 145);
|
|
107
|
+
--chart-4: oklch(0.82 0.16 84);
|
|
108
|
+
--chart-5: oklch(0.60 0.22 25);
|
|
109
|
+
}
|
|
110
|
+
/* ── Tailwind v4 theme mapping ────────────────────────────────── */
|
|
111
|
+
@theme inline {
|
|
112
|
+
/* radius */
|
|
113
|
+
--radius: 0.5rem;
|
|
114
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
115
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
116
|
+
--radius-lg: var(--radius);
|
|
117
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
118
|
+
|
|
119
|
+
/* color tokens */
|
|
120
|
+
--color-background: var(--background);
|
|
121
|
+
--color-foreground: var(--foreground);
|
|
122
|
+
--color-card: var(--card);
|
|
123
|
+
--color-card-foreground: var(--card-foreground);
|
|
124
|
+
--color-popover: var(--popover);
|
|
125
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
126
|
+
--color-primary: var(--primary);
|
|
127
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
128
|
+
--color-secondary: var(--secondary);
|
|
129
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
130
|
+
--color-muted: var(--muted);
|
|
131
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
132
|
+
--color-accent: var(--accent);
|
|
133
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
134
|
+
--color-destructive: var(--destructive);
|
|
135
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
136
|
+
--color-success: var(--success);
|
|
137
|
+
--color-success-foreground: var(--success-foreground);
|
|
138
|
+
--color-warning: var(--warning);
|
|
139
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
140
|
+
--color-info: var(--info);
|
|
141
|
+
--color-info-foreground: var(--info-foreground);
|
|
142
|
+
--color-border: var(--border);
|
|
143
|
+
--color-input: var(--input);
|
|
144
|
+
--color-ring: var(--ring);
|
|
145
|
+
--color-sidebar: var(--sidebar);
|
|
146
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
147
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
148
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
149
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
150
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
151
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
152
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
153
|
+
--color-workflow-running: var(--workflow-running);
|
|
154
|
+
--color-workflow-completed: var(--workflow-completed);
|
|
155
|
+
--color-workflow-failed: var(--workflow-failed);
|
|
156
|
+
--color-workflow-pending: var(--workflow-pending);
|
|
157
|
+
--color-workflow-paused: var(--workflow-paused);
|
|
158
|
+
--color-workflow-cancelled: var(--workflow-cancelled);
|
|
159
|
+
--color-chart-1: var(--chart-1);
|
|
160
|
+
--color-chart-2: var(--chart-2);
|
|
161
|
+
--color-chart-3: var(--chart-3);
|
|
162
|
+
--color-chart-4: var(--chart-4);
|
|
163
|
+
--color-chart-5: var(--chart-5);
|
|
164
|
+
|
|
165
|
+
/* brand palette — static hex values, not theme-switchable */
|
|
166
|
+
--color-brand-primary-blue: #3278A0;
|
|
167
|
+
--color-brand-header-blue: #44799E;
|
|
168
|
+
--color-brand-deep-blue: #4B506D;
|
|
169
|
+
--color-brand-baby-blue: #0F67B1;
|
|
170
|
+
--color-brand-soft-blue: #E7F5FD;
|
|
171
|
+
--color-brand-powder-blue: #ECF2FA;
|
|
172
|
+
--color-brand-primary-orange: #FC6501;
|
|
173
|
+
--color-brand-deep-orange: #D84132;
|
|
174
|
+
--color-brand-success-green: #1E791C;
|
|
175
|
+
--color-brand-red-danger: #ff0000;
|
|
176
|
+
--color-brand-primary-gray: #939598;
|
|
177
|
+
--color-brand-dark-gray: #222222;
|
|
178
|
+
--color-brand-item-border: #DFE0EB;
|
|
179
|
+
--color-brand-line-gray: #C7C8CA;
|
|
180
|
+
--color-brand-mark-gray: #E0E6EE;
|
|
181
|
+
|
|
182
|
+
/* typography */
|
|
183
|
+
--font-sans: "DM Sans", sans-serif;
|
|
184
|
+
--font-mono: "IBM Plex Mono", monospace;
|
|
185
|
+
--font-display: "Syne", sans-serif;
|
|
186
|
+
}
|
|
187
|
+
/* ── Keyframes ────────────────────────────────────────────────── */
|
|
188
|
+
@keyframes accordion-down {
|
|
189
|
+
from { height: 0 }
|
|
190
|
+
to { height: var(--radix-accordion-content-height) }
|
|
191
|
+
}
|
|
192
|
+
@keyframes accordion-up {
|
|
193
|
+
from { height: var(--radix-accordion-content-height) }
|
|
194
|
+
to { height: 0 }
|
|
195
|
+
}
|
|
196
|
+
@keyframes fade-in {
|
|
197
|
+
from { opacity: 0; transform: translateY(4px) }
|
|
198
|
+
to { opacity: 1; transform: translateY(0) }
|
|
199
|
+
}
|
|
200
|
+
@keyframes slide-in-right {
|
|
201
|
+
from { transform: translateX(100%); opacity: 0 }
|
|
202
|
+
to { transform: translateX(0); opacity: 1 }
|
|
203
|
+
}
|
|
204
|
+
@keyframes workflow-pulse {
|
|
205
|
+
0%, 100% { opacity: 1; box-shadow: 0 0 8px color-mix(in oklch, var(--workflow-running) 50%, transparent) }
|
|
206
|
+
50% { opacity: 0.6; box-shadow: 0 0 20px color-mix(in oklch, var(--workflow-running) 80%, transparent) }
|
|
207
|
+
}
|
|
208
|
+
@keyframes shimmer {
|
|
209
|
+
0% { background-position: -200% 0 }
|
|
210
|
+
100% { background-position: 200% 0 }
|
|
211
|
+
}
|
|
212
|
+
@keyframes spin-slow {
|
|
213
|
+
from { transform: rotate(0deg) }
|
|
214
|
+
to { transform: rotate(360deg) }
|
|
215
|
+
}
|
|
216
|
+
/* ── Base layer ───────────────────────────────────────────────── */
|
|
217
|
+
@layer base {
|
|
218
|
+
* { border-color: var(--color-border); }
|
|
219
|
+
body {
|
|
220
|
+
background-color: var(--color-background);
|
|
221
|
+
color: var(--color-foreground);
|
|
222
|
+
font-family: var(--font-sans);
|
|
223
|
+
-webkit-font-smoothing: antialiased;
|
|
224
|
+
-moz-osx-font-smoothing: grayscale;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Metric } from '../../types/automation';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface MetricCardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
metric: Metric;
|
|
5
|
+
/** Icon to show in the card header */
|
|
6
|
+
icon?: React.ReactNode;
|
|
7
|
+
/** Loading skeleton state */
|
|
8
|
+
loading?: boolean;
|
|
9
|
+
/** Compact/minimal display */
|
|
10
|
+
compact?: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare function MetricCard({ className, metric, icon, loading, compact, ...props }: MetricCardProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
/** Grid wrapper for a set of MetricCards */
|
|
14
|
+
export interface MetricGridProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
15
|
+
cols?: 2 | 3 | 4 | 5;
|
|
16
|
+
}
|
|
17
|
+
declare function MetricGrid({ className, cols, children, ...props }: MetricGridProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export { MetricCard, MetricGrid };
|
|
19
|
+
//# sourceMappingURL=metric-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-card.d.ts","sourceRoot":"","sources":["../../../src/components/automation/metric-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,oBAAoB,CAAA;AAEhE,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC3E,MAAM,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAeD,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAe,EAAE,OAAe,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CA6D3G;AAED,4CAA4C;AAC5C,MAAM,WAAW,eAAgB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC3E,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CACrB;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,IAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,2CAa/E;AAED,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../lib/utils.js";
|
|
3
|
+
import { Card, CardContent } from "../ui/card.js";
|
|
4
|
+
import Minus from "../../node_modules/lucide-react/dist/esm/icons/minus.js";
|
|
5
|
+
import TrendingDown from "../../node_modules/lucide-react/dist/esm/icons/trending-down.js";
|
|
6
|
+
import TrendingUp from "../../node_modules/lucide-react/dist/esm/icons/trending-up.js";
|
|
7
|
+
const TREND_CONFIG = {
|
|
8
|
+
up: { icon: TrendingUp, color: "text-success", label: "up" },
|
|
9
|
+
down: { icon: TrendingDown, color: "text-destructive", label: "down" },
|
|
10
|
+
flat: { icon: Minus, color: "text-muted-foreground", label: "unchanged" }
|
|
11
|
+
};
|
|
12
|
+
function MetricCard({ className, metric, icon, loading = false, compact = false, ...props }) {
|
|
13
|
+
const trend = metric.trend ? TREND_CONFIG[metric.trend] : null;
|
|
14
|
+
const TrendIcon = trend == null ? void 0 : trend.icon;
|
|
15
|
+
if (loading) {
|
|
16
|
+
return /* @__PURE__ */ jsx(Card, { className: cn("overflow-hidden", className), ...props, children: /* @__PURE__ */ jsx(CardContent, { className: "p-5", children: /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
17
|
+
/* @__PURE__ */ jsx("div", { className: "h-4 w-24 rounded bg-muted animate-[shimmer_2s_linear_infinite] [background:linear-gradient(90deg,hsl(var(--muted))_25%,hsl(var(--muted-foreground)/0.1)_50%,hsl(var(--muted))_75%)] [background-size:200%_100%]" }),
|
|
18
|
+
/* @__PURE__ */ jsx("div", { className: "h-8 w-32 rounded bg-muted animate-[shimmer_2s_linear_infinite] [background:linear-gradient(90deg,hsl(var(--muted))_25%,hsl(var(--muted-foreground)/0.1)_50%,hsl(var(--muted))_75%)] [background-size:200%_100%]" }),
|
|
19
|
+
/* @__PURE__ */ jsx("div", { className: "h-3 w-20 rounded bg-muted animate-[shimmer_2s_linear_infinite] [background:linear-gradient(90deg,hsl(var(--muted))_25%,hsl(var(--muted-foreground)/0.1)_50%,hsl(var(--muted))_75%)] [background-size:200%_100%]" })
|
|
20
|
+
] }) }) });
|
|
21
|
+
}
|
|
22
|
+
return /* @__PURE__ */ jsx(Card, { className: cn("overflow-hidden", className), ...props, children: /* @__PURE__ */ jsxs(CardContent, { className: cn(compact ? "p-4" : "p-5"), children: [
|
|
23
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4", children: [
|
|
24
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
25
|
+
/* @__PURE__ */ jsx("p", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider truncate", children: metric.label }),
|
|
26
|
+
/* @__PURE__ */ jsxs("div", { className: cn("flex items-baseline gap-1.5 mt-1.5", compact ? "mt-1" : "mt-2"), children: [
|
|
27
|
+
/* @__PURE__ */ jsx("span", { className: cn("font-bold text-foreground tabular-nums", compact ? "text-xl" : "text-2xl"), children: metric.value }),
|
|
28
|
+
metric.unit && /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground font-medium", children: metric.unit })
|
|
29
|
+
] })
|
|
30
|
+
] }),
|
|
31
|
+
icon && /* @__PURE__ */ jsx("div", { className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary", children: icon })
|
|
32
|
+
] }),
|
|
33
|
+
(trend || metric.description) && !compact && /* @__PURE__ */ jsxs("div", { className: "mt-3 flex items-center gap-2", children: [
|
|
34
|
+
trend && TrendIcon && /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1 text-xs font-medium", trend.color), children: [
|
|
35
|
+
/* @__PURE__ */ jsx(TrendIcon, { className: "h-3.5 w-3.5" }),
|
|
36
|
+
metric.trendPercent !== void 0 && /* @__PURE__ */ jsxs("span", { children: [
|
|
37
|
+
metric.trendPercent > 0 ? "+" : "",
|
|
38
|
+
metric.trendPercent,
|
|
39
|
+
"%"
|
|
40
|
+
] })
|
|
41
|
+
] }),
|
|
42
|
+
metric.description && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: metric.description })
|
|
43
|
+
] })
|
|
44
|
+
] }) });
|
|
45
|
+
}
|
|
46
|
+
function MetricGrid({ className, cols = 4, children, ...props }) {
|
|
47
|
+
const colsClass = {
|
|
48
|
+
2: "grid-cols-1 sm:grid-cols-2",
|
|
49
|
+
3: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",
|
|
50
|
+
4: "grid-cols-1 sm:grid-cols-2 lg:grid-cols-4",
|
|
51
|
+
5: "grid-cols-2 sm:grid-cols-3 lg:grid-cols-5"
|
|
52
|
+
}[cols];
|
|
53
|
+
return /* @__PURE__ */ jsx("div", { className: cn("grid gap-4", colsClass, className), ...props, children });
|
|
54
|
+
}
|
|
55
|
+
export {
|
|
56
|
+
MetricCard,
|
|
57
|
+
MetricGrid
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=metric-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-card.js","sources":["../../../src/components/automation/metric-card.tsx"],"sourcesContent":["import * as React from 'react'\nimport { TrendingDown, TrendingUp, Minus } from 'lucide-react'\nimport { cn } from '@/lib/utils'\nimport { Card, CardContent } from '@/components/ui/card'\nimport type { Metric, TrendDirection } from '@/types/automation'\n\nexport interface MetricCardProps extends React.HTMLAttributes<HTMLDivElement> {\n metric: Metric\n /** Icon to show in the card header */\n icon?: React.ReactNode\n /** Loading skeleton state */\n loading?: boolean\n /** Compact/minimal display */\n compact?: boolean\n}\n\nconst TREND_CONFIG: Record<\n TrendDirection,\n {\n icon: React.ComponentType<{ className?: string }>\n color: string\n label: string\n }\n> = {\n up: { icon: TrendingUp, color: 'text-success', label: 'up' },\n down: { icon: TrendingDown, color: 'text-destructive', label: 'down' },\n flat: { icon: Minus, color: 'text-muted-foreground', label: 'unchanged' },\n}\n\nfunction MetricCard({ className, metric, icon, loading = false, compact = false, ...props }: MetricCardProps) {\n const trend = metric.trend ? TREND_CONFIG[metric.trend] : null\n const TrendIcon = trend?.icon\n\n if (loading) {\n return (\n <Card className={cn('overflow-hidden', className)} {...props}>\n <CardContent className=\"p-5\">\n <div className=\"space-y-3\">\n <div className=\"h-4 w-24 rounded bg-muted animate-[shimmer_2s_linear_infinite] [background:linear-gradient(90deg,hsl(var(--muted))_25%,hsl(var(--muted-foreground)/0.1)_50%,hsl(var(--muted))_75%)] [background-size:200%_100%]\" />\n <div className=\"h-8 w-32 rounded bg-muted animate-[shimmer_2s_linear_infinite] [background:linear-gradient(90deg,hsl(var(--muted))_25%,hsl(var(--muted-foreground)/0.1)_50%,hsl(var(--muted))_75%)] [background-size:200%_100%]\" />\n <div className=\"h-3 w-20 rounded bg-muted animate-[shimmer_2s_linear_infinite] [background:linear-gradient(90deg,hsl(var(--muted))_25%,hsl(var(--muted-foreground)/0.1)_50%,hsl(var(--muted))_75%)] [background-size:200%_100%]\" />\n </div>\n </CardContent>\n </Card>\n )\n }\n\n return (\n <Card className={cn('overflow-hidden', className)} {...props}>\n <CardContent className={cn(compact ? 'p-4' : 'p-5')}>\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-xs font-medium text-muted-foreground uppercase tracking-wider truncate\">\n {metric.label}\n </p>\n <div className={cn('flex items-baseline gap-1.5 mt-1.5', compact ? 'mt-1' : 'mt-2')}>\n <span className={cn('font-bold text-foreground tabular-nums', compact ? 'text-xl' : 'text-2xl')}>\n {metric.value}\n </span>\n {metric.unit && (\n <span className=\"text-sm text-muted-foreground font-medium\">{metric.unit}</span>\n )}\n </div>\n </div>\n\n {icon && (\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary/10 text-primary\">\n {icon}\n </div>\n )}\n </div>\n\n {(trend || metric.description) && !compact && (\n <div className=\"mt-3 flex items-center gap-2\">\n {trend && TrendIcon && (\n <div className={cn('flex items-center gap-1 text-xs font-medium', trend.color)}>\n <TrendIcon className=\"h-3.5 w-3.5\" />\n {metric.trendPercent !== undefined && (\n <span>{metric.trendPercent > 0 ? '+' : ''}{metric.trendPercent}%</span>\n )}\n </div>\n )}\n {metric.description && (\n <p className=\"text-xs text-muted-foreground\">{metric.description}</p>\n )}\n </div>\n )}\n </CardContent>\n </Card>\n )\n}\n\n/** Grid wrapper for a set of MetricCards */\nexport interface MetricGridProps extends React.HTMLAttributes<HTMLDivElement> {\n cols?: 2 | 3 | 4 | 5\n}\n\nfunction MetricGrid({ className, cols = 4, children, ...props }: MetricGridProps) {\n const colsClass = {\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-4',\n 5: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-5',\n }[cols]\n\n return (\n <div className={cn('grid gap-4', colsClass, className)} {...props}>\n {children}\n </div>\n )\n}\n\nexport { MetricCard, MetricGrid }\n"],"names":[],"mappings":";;;;;;AAgBA,MAAM,eAOF;AAAA,EACF,IAAI,EAAE,MAAM,YAAY,OAAO,gBAAgB,OAAO,KAAA;AAAA,EACtD,MAAM,EAAE,MAAM,cAAc,OAAO,oBAAoB,OAAO,OAAA;AAAA,EAC9D,MAAM,EAAE,MAAM,OAAO,OAAO,yBAAyB,OAAO,YAAA;AAC9D;AAEA,SAAS,WAAW,EAAE,WAAW,QAAQ,MAAM,UAAU,OAAO,UAAU,OAAO,GAAG,SAA0B;AAC5G,QAAM,QAAQ,OAAO,QAAQ,aAAa,OAAO,KAAK,IAAI;AAC1D,QAAM,YAAY,+BAAO;AAEzB,MAAI,SAAS;AACX,+BACG,MAAA,EAAK,WAAW,GAAG,mBAAmB,SAAS,GAAI,GAAG,OACrD,UAAA,oBAAC,eAAY,WAAU,OACrB,UAAA,qBAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,MAAA,oBAAC,OAAA,EAAI,WAAU,kNAAA,CAAkN;AAAA,MACjO,oBAAC,OAAA,EAAI,WAAU,kNAAA,CAAkN;AAAA,MACjO,oBAAC,OAAA,EAAI,WAAU,kNAAA,CAAkN;AAAA,IAAA,EAAA,CACnO,GACF,GACF;AAAA,EAEJ;AAEA,6BACG,MAAA,EAAK,WAAW,GAAG,mBAAmB,SAAS,GAAI,GAAG,OACrD,UAAA,qBAAC,eAAY,WAAW,GAAG,UAAU,QAAQ,KAAK,GAChD,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,0CACb,UAAA;AAAA,MAAA,qBAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,QAAA,oBAAC,KAAA,EAAE,WAAU,+EACV,UAAA,OAAO,OACV;AAAA,QACA,qBAAC,SAAI,WAAW,GAAG,sCAAsC,UAAU,SAAS,MAAM,GAChF,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAW,GAAG,0CAA0C,UAAU,YAAY,UAAU,GAC3F,UAAA,OAAO,MAAA,CACV;AAAA,UACC,OAAO,QACN,oBAAC,UAAK,WAAU,6CAA6C,iBAAO,KAAA,CAAK;AAAA,QAAA,EAAA,CAE7E;AAAA,MAAA,GACF;AAAA,MAEC,QACC,oBAAC,OAAA,EAAI,WAAU,6FACZ,UAAA,KAAA,CACH;AAAA,IAAA,GAEJ;AAAA,KAEE,SAAS,OAAO,gBAAgB,CAAC,WACjC,qBAAC,OAAA,EAAI,WAAU,gCACZ,UAAA;AAAA,MAAA,SAAS,kCACP,OAAA,EAAI,WAAW,GAAG,+CAA+C,MAAM,KAAK,GAC3E,UAAA;AAAA,QAAA,oBAAC,WAAA,EAAU,WAAU,cAAA,CAAc;AAAA,QAClC,OAAO,iBAAiB,UACvB,qBAAC,QAAA,EAAM,UAAA;AAAA,UAAA,OAAO,eAAe,IAAI,MAAM;AAAA,UAAI,OAAO;AAAA,UAAa;AAAA,QAAA,EAAA,CAAC;AAAA,MAAA,GAEpE;AAAA,MAED,OAAO,eACN,oBAAC,OAAE,WAAU,iCAAiC,iBAAO,YAAA,CAAY;AAAA,IAAA,EAAA,CAErE;AAAA,EAAA,EAAA,CAEJ,EAAA,CACF;AAEJ;AAOA,SAAS,WAAW,EAAE,WAAW,OAAO,GAAG,UAAU,GAAG,SAA0B;AAChF,QAAM,YAAY;AAAA,IAChB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EAAA,EACH,IAAI;AAEN,SACE,oBAAC,OAAA,EAAI,WAAW,GAAG,cAAc,WAAW,SAAS,GAAI,GAAG,OACzD,SAAA,CACH;AAEJ;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { VariantProps } from 'class-variance-authority';
|
|
2
|
+
import { WorkflowStatus } from '../../types/automation';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
declare const statusBadgeVariants: (props?: ({
|
|
5
|
+
size?: "xs" | "sm" | "md" | "lg" | null | undefined;
|
|
6
|
+
} & import('class-variance-authority/types').ClassProp) | undefined) => string;
|
|
7
|
+
declare const STATUS_CONFIG: Record<WorkflowStatus, {
|
|
8
|
+
label: string;
|
|
9
|
+
icon: React.ComponentType<{
|
|
10
|
+
className?: string;
|
|
11
|
+
}>;
|
|
12
|
+
className: string;
|
|
13
|
+
pulse?: boolean;
|
|
14
|
+
}>;
|
|
15
|
+
export interface StatusBadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof statusBadgeVariants> {
|
|
16
|
+
/** The workflow status to display */
|
|
17
|
+
status: WorkflowStatus;
|
|
18
|
+
/** Override the default label */
|
|
19
|
+
label?: string;
|
|
20
|
+
/** Hide the icon */
|
|
21
|
+
hideIcon?: boolean;
|
|
22
|
+
/** Show animated pulse dot for running state */
|
|
23
|
+
showPulse?: boolean;
|
|
24
|
+
}
|
|
25
|
+
declare function StatusBadge({ className, size, status, label, hideIcon, showPulse, ...props }: StatusBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export { StatusBadge, STATUS_CONFIG };
|
|
27
|
+
//# sourceMappingURL=status-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-badge.d.ts","sourceRoot":"","sources":["../../../src/components/automation/status-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAYjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,QAAA,MAAM,mBAAmB;;8EAexB,CAAA;AAED,QAAA,MAAM,aAAa,EAAE,MAAM,CACzB,cAAc,EACd;IACE,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CA2CF,CAAA;AAED,MAAM,WAAW,gBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,mBAAmB,CAAC;IAC1C,qCAAqC;IACrC,MAAM,EAAE,cAAc,CAAA;IACtB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,gDAAgD;IAChD,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,IAAI,EACJ,MAAM,EACN,KAAK,EACL,QAAgB,EAChB,SAAgB,EAChB,GAAG,KAAK,EACT,EAAE,gBAAgB,2CA4BlB;AAED,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAA"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from "../../node_modules/class-variance-authority/dist/index.js";
|
|
3
|
+
import { cn } from "../../lib/utils.js";
|
|
4
|
+
import Calendar from "../../node_modules/lucide-react/dist/esm/icons/calendar.js";
|
|
5
|
+
import CircleMinus from "../../node_modules/lucide-react/dist/esm/icons/circle-minus.js";
|
|
6
|
+
import Ban from "../../node_modules/lucide-react/dist/esm/icons/ban.js";
|
|
7
|
+
import Pause from "../../node_modules/lucide-react/dist/esm/icons/pause.js";
|
|
8
|
+
import Clock from "../../node_modules/lucide-react/dist/esm/icons/clock.js";
|
|
9
|
+
import CircleX from "../../node_modules/lucide-react/dist/esm/icons/circle-x.js";
|
|
10
|
+
import CircleCheck from "../../node_modules/lucide-react/dist/esm/icons/circle-check.js";
|
|
11
|
+
import LoaderCircle from "../../node_modules/lucide-react/dist/esm/icons/loader-circle.js";
|
|
12
|
+
const statusBadgeVariants = cva(
|
|
13
|
+
"inline-flex items-center gap-1.5 rounded-full border font-medium transition-colors",
|
|
14
|
+
{
|
|
15
|
+
variants: {
|
|
16
|
+
size: {
|
|
17
|
+
xs: "px-1.5 py-0 text-[10px]",
|
|
18
|
+
sm: "px-2 py-0.5 text-xs",
|
|
19
|
+
md: "px-2.5 py-1 text-xs",
|
|
20
|
+
lg: "px-3 py-1.5 text-sm"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
defaultVariants: {
|
|
24
|
+
size: "sm"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
const STATUS_CONFIG = {
|
|
29
|
+
running: {
|
|
30
|
+
label: "Running",
|
|
31
|
+
icon: LoaderCircle,
|
|
32
|
+
className: "bg-workflow-running/15 border-workflow-running/40 text-workflow-running",
|
|
33
|
+
pulse: true
|
|
34
|
+
},
|
|
35
|
+
completed: {
|
|
36
|
+
label: "Completed",
|
|
37
|
+
icon: CircleCheck,
|
|
38
|
+
className: "bg-workflow-completed/15 border-workflow-completed/40 text-workflow-completed"
|
|
39
|
+
},
|
|
40
|
+
failed: {
|
|
41
|
+
label: "Failed",
|
|
42
|
+
icon: CircleX,
|
|
43
|
+
className: "bg-workflow-failed/15 border-workflow-failed/40 text-workflow-failed"
|
|
44
|
+
},
|
|
45
|
+
pending: {
|
|
46
|
+
label: "Pending",
|
|
47
|
+
icon: Clock,
|
|
48
|
+
className: "bg-workflow-pending/15 border-workflow-pending/40 text-workflow-pending"
|
|
49
|
+
},
|
|
50
|
+
paused: {
|
|
51
|
+
label: "Paused",
|
|
52
|
+
icon: Pause,
|
|
53
|
+
className: "bg-workflow-paused/15 border-workflow-paused/40 text-workflow-paused"
|
|
54
|
+
},
|
|
55
|
+
cancelled: {
|
|
56
|
+
label: "Cancelled",
|
|
57
|
+
icon: Ban,
|
|
58
|
+
className: "bg-workflow-cancelled/15 border-workflow-cancelled/40 text-workflow-cancelled"
|
|
59
|
+
},
|
|
60
|
+
idle: {
|
|
61
|
+
label: "Idle",
|
|
62
|
+
icon: CircleMinus,
|
|
63
|
+
className: "bg-muted border-border text-muted-foreground"
|
|
64
|
+
},
|
|
65
|
+
scheduled: {
|
|
66
|
+
label: "Scheduled",
|
|
67
|
+
icon: Calendar,
|
|
68
|
+
className: "bg-info/15 border-info/40 text-info"
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
function StatusBadge({
|
|
72
|
+
className,
|
|
73
|
+
size,
|
|
74
|
+
status,
|
|
75
|
+
label,
|
|
76
|
+
hideIcon = false,
|
|
77
|
+
showPulse = true,
|
|
78
|
+
...props
|
|
79
|
+
}) {
|
|
80
|
+
const config = STATUS_CONFIG[status];
|
|
81
|
+
const Icon = config.icon;
|
|
82
|
+
const displayLabel = label ?? config.label;
|
|
83
|
+
const isRunning = status === "running";
|
|
84
|
+
return /* @__PURE__ */ jsxs(
|
|
85
|
+
"div",
|
|
86
|
+
{
|
|
87
|
+
className: cn(statusBadgeVariants({ size }), config.className, className),
|
|
88
|
+
...props,
|
|
89
|
+
children: [
|
|
90
|
+
showPulse && isRunning ? /* @__PURE__ */ jsxs("span", { className: "relative flex h-2 w-2", children: [
|
|
91
|
+
/* @__PURE__ */ jsx("span", { className: "absolute inline-flex h-full w-full animate-workflow-pulse rounded-full bg-workflow-running opacity-75" }),
|
|
92
|
+
/* @__PURE__ */ jsx("span", { className: "relative inline-flex h-2 w-2 rounded-full bg-workflow-running" })
|
|
93
|
+
] }) : !hideIcon ? /* @__PURE__ */ jsx(
|
|
94
|
+
Icon,
|
|
95
|
+
{
|
|
96
|
+
className: cn(
|
|
97
|
+
"shrink-0",
|
|
98
|
+
size === "xs" ? "h-2.5 w-2.5" : size === "sm" ? "h-3 w-3" : "h-3.5 w-3.5",
|
|
99
|
+
isRunning && "animate-spin"
|
|
100
|
+
)
|
|
101
|
+
}
|
|
102
|
+
) : null,
|
|
103
|
+
displayLabel
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
export {
|
|
109
|
+
STATUS_CONFIG,
|
|
110
|
+
StatusBadge
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=status-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-badge.js","sources":["../../../src/components/automation/status-badge.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport {\n CheckCircle2,\n XCircle,\n Clock,\n Pause,\n Ban,\n Loader2,\n Calendar,\n MinusCircle,\n} from 'lucide-react'\nimport { cn } from '@/lib/utils'\nimport type { WorkflowStatus } from '@/types/automation'\n\nconst statusBadgeVariants = cva(\n 'inline-flex items-center gap-1.5 rounded-full border font-medium transition-colors',\n {\n variants: {\n size: {\n xs: 'px-1.5 py-0 text-[10px]',\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-1 text-xs',\n lg: 'px-3 py-1.5 text-sm',\n },\n },\n defaultVariants: {\n size: 'sm',\n },\n }\n)\n\nconst STATUS_CONFIG: Record<\n WorkflowStatus,\n {\n label: string\n icon: React.ComponentType<{ className?: string }>\n className: string\n pulse?: boolean\n }\n> = {\n running: {\n label: 'Running',\n icon: Loader2,\n className: 'bg-workflow-running/15 border-workflow-running/40 text-workflow-running',\n pulse: true,\n },\n completed: {\n label: 'Completed',\n icon: CheckCircle2,\n className: 'bg-workflow-completed/15 border-workflow-completed/40 text-workflow-completed',\n },\n failed: {\n label: 'Failed',\n icon: XCircle,\n className: 'bg-workflow-failed/15 border-workflow-failed/40 text-workflow-failed',\n },\n pending: {\n label: 'Pending',\n icon: Clock,\n className: 'bg-workflow-pending/15 border-workflow-pending/40 text-workflow-pending',\n },\n paused: {\n label: 'Paused',\n icon: Pause,\n className: 'bg-workflow-paused/15 border-workflow-paused/40 text-workflow-paused',\n },\n cancelled: {\n label: 'Cancelled',\n icon: Ban,\n className: 'bg-workflow-cancelled/15 border-workflow-cancelled/40 text-workflow-cancelled',\n },\n idle: {\n label: 'Idle',\n icon: MinusCircle,\n className: 'bg-muted border-border text-muted-foreground',\n },\n scheduled: {\n label: 'Scheduled',\n icon: Calendar,\n className: 'bg-info/15 border-info/40 text-info',\n },\n}\n\nexport interface StatusBadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof statusBadgeVariants> {\n /** The workflow status to display */\n status: WorkflowStatus\n /** Override the default label */\n label?: string\n /** Hide the icon */\n hideIcon?: boolean\n /** Show animated pulse dot for running state */\n showPulse?: boolean\n}\n\nfunction StatusBadge({\n className,\n size,\n status,\n label,\n hideIcon = false,\n showPulse = true,\n ...props\n}: StatusBadgeProps) {\n const config = STATUS_CONFIG[status]\n const Icon = config.icon\n const displayLabel = label ?? config.label\n const isRunning = status === 'running'\n\n return (\n <div\n className={cn(statusBadgeVariants({ size }), config.className, className)}\n {...props}\n >\n {showPulse && isRunning ? (\n <span className=\"relative flex h-2 w-2\">\n <span className=\"absolute inline-flex h-full w-full animate-workflow-pulse rounded-full bg-workflow-running opacity-75\" />\n <span className=\"relative inline-flex h-2 w-2 rounded-full bg-workflow-running\" />\n </span>\n ) : !hideIcon ? (\n <Icon\n className={cn(\n 'shrink-0',\n size === 'xs' ? 'h-2.5 w-2.5' : size === 'sm' ? 'h-3 w-3' : 'h-3.5 w-3.5',\n isRunning && 'animate-spin'\n )}\n />\n ) : null}\n {displayLabel}\n </div>\n )\n}\n\nexport { StatusBadge, STATUS_CONFIG }\n"],"names":["Loader2","CheckCircle2","XCircle","MinusCircle"],"mappings":";;;;;;;;;;;AAeA,MAAM,sBAAsB;AAAA,EAC1B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;AAEA,MAAM,gBAQF;AAAA,EACF,SAAS;AAAA,IACP,OAAO;AAAA,IACP,MAAMA;AAAAA,IACN,WAAW;AAAA,IACX,OAAO;AAAA,EAAA;AAAA,EAET,WAAW;AAAA,IACT,OAAO;AAAA,IACP,MAAMC;AAAAA,IACN,WAAW;AAAA,EAAA;AAAA,EAEb,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,MAAMC;AAAAA,IACN,WAAW;AAAA,EAAA;AAAA,EAEb,SAAS;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,EAAA;AAAA,EAEb,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,EAAA;AAAA,EAEb,WAAW;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,EAAA;AAAA,EAEb,MAAM;AAAA,IACJ,OAAO;AAAA,IACP,MAAMC;AAAAA,IACN,WAAW;AAAA,EAAA;AAAA,EAEb,WAAW;AAAA,IACT,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,EAAA;AAEf;AAeA,SAAS,YAAY;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,GAAG;AACL,GAAqB;AACnB,QAAM,SAAS,cAAc,MAAM;AACnC,QAAM,OAAO,OAAO;AACpB,QAAM,eAAe,SAAS,OAAO;AACrC,QAAM,YAAY,WAAW;AAE7B,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAG,oBAAoB,EAAE,MAAM,GAAG,OAAO,WAAW,SAAS;AAAA,MACvE,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA,aAAa,YACZ,qBAAC,QAAA,EAAK,WAAU,yBACd,UAAA;AAAA,UAAA,oBAAC,QAAA,EAAK,WAAU,wGAAA,CAAwG;AAAA,UACxH,oBAAC,QAAA,EAAK,WAAU,gEAAA,CAAgE;AAAA,QAAA,GAClF,IACE,CAAC,WACH;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,SAAS,OAAO,gBAAgB,SAAS,OAAO,YAAY;AAAA,cAC5D,aAAa;AAAA,YAAA;AAAA,UACf;AAAA,QAAA,IAEA;AAAA,QACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Task } from '../../types/automation';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export interface TaskCardProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onSelect'> {
|
|
4
|
+
task: Task;
|
|
5
|
+
/** Show/hide priority indicator */
|
|
6
|
+
showPriority?: boolean;
|
|
7
|
+
/** Called when card is clicked */
|
|
8
|
+
onSelect?: (task: Task) => void;
|
|
9
|
+
/** Compact single-line mode */
|
|
10
|
+
compact?: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare function TaskCard({ className, task, showPriority, onSelect, compact, ...props }: TaskCardProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export { TaskCard };
|
|
14
|
+
//# sourceMappingURL=task-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-card.d.ts","sourceRoot":"","sources":["../../../src/components/automation/task-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,KAAK,EAAE,IAAI,EAAgB,MAAM,oBAAoB,CAAA;AAmB5D,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC3F,IAAI,EAAE,IAAI,CAAA;IACV,mCAAmC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC/B,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,iBAAS,QAAQ,CAAC,EAChB,SAAS,EACT,IAAI,EACJ,YAAmB,EACnB,QAAQ,EACR,OAAe,EACf,GAAG,KAAK,EACT,EAAE,aAAa,2CAsHf;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|