@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.
Files changed (451) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -0
  3. package/dist/_virtual/index.js +6 -0
  4. package/dist/_virtual/index.js.map +1 -0
  5. package/dist/_virtual/index2.js +5 -0
  6. package/dist/_virtual/index2.js.map +1 -0
  7. package/dist/_virtual/use-sync-external-store-shim.development.js +5 -0
  8. package/dist/_virtual/use-sync-external-store-shim.development.js.map +1 -0
  9. package/dist/_virtual/use-sync-external-store-shim.production.js +5 -0
  10. package/dist/_virtual/use-sync-external-store-shim.production.js.map +1 -0
  11. package/dist/automa8e-ui.css +226 -0
  12. package/dist/components/automation/metric-card.d.ts +19 -0
  13. package/dist/components/automation/metric-card.d.ts.map +1 -0
  14. package/dist/components/automation/metric-card.js +59 -0
  15. package/dist/components/automation/metric-card.js.map +1 -0
  16. package/dist/components/automation/status-badge.d.ts +27 -0
  17. package/dist/components/automation/status-badge.d.ts.map +1 -0
  18. package/dist/components/automation/status-badge.js +112 -0
  19. package/dist/components/automation/status-badge.js.map +1 -0
  20. package/dist/components/automation/task-card.d.ts +14 -0
  21. package/dist/components/automation/task-card.d.ts.map +1 -0
  22. package/dist/components/automation/task-card.js +114 -0
  23. package/dist/components/automation/task-card.js.map +1 -0
  24. package/dist/components/automation/workflow-node.d.ts +20 -0
  25. package/dist/components/automation/workflow-node.d.ts.map +1 -0
  26. package/dist/components/automation/workflow-node.js +132 -0
  27. package/dist/components/automation/workflow-node.js.map +1 -0
  28. package/dist/components/layout/app-shell.d.ts +21 -0
  29. package/dist/components/layout/app-shell.d.ts.map +1 -0
  30. package/dist/components/layout/app-shell.js +35 -0
  31. package/dist/components/layout/app-shell.js.map +1 -0
  32. package/dist/components/layout/header.d.ts +16 -0
  33. package/dist/components/layout/header.d.ts.map +1 -0
  34. package/dist/components/layout/header.js +30 -0
  35. package/dist/components/layout/header.js.map +1 -0
  36. package/dist/components/layout/page-header.d.ts +16 -0
  37. package/dist/components/layout/page-header.d.ts.map +1 -0
  38. package/dist/components/layout/page-header.js +29 -0
  39. package/dist/components/layout/page-header.js.map +1 -0
  40. package/dist/components/layout/sidebar.d.ts +35 -0
  41. package/dist/components/layout/sidebar.d.ts.map +1 -0
  42. package/dist/components/layout/sidebar.js +103 -0
  43. package/dist/components/layout/sidebar.js.map +1 -0
  44. package/dist/components/ui/accordion.d.ts +8 -0
  45. package/dist/components/ui/accordion.d.ts.map +1 -0
  46. package/dist/components/ui/accordion.js +51 -0
  47. package/dist/components/ui/accordion.js.map +1 -0
  48. package/dist/components/ui/alert.d.ts +18 -0
  49. package/dist/components/ui/alert.d.ts.map +1 -0
  50. package/dist/components/ui/alert.js +89 -0
  51. package/dist/components/ui/alert.js.map +1 -0
  52. package/dist/components/ui/avatar.d.ts +20 -0
  53. package/dist/components/ui/avatar.d.ts.map +1 -0
  54. package/dist/components/ui/avatar.js +72 -0
  55. package/dist/components/ui/avatar.js.map +1 -0
  56. package/dist/components/ui/badge.d.ts +13 -0
  57. package/dist/components/ui/badge.d.ts.map +1 -0
  58. package/dist/components/ui/badge.js +54 -0
  59. package/dist/components/ui/badge.js.map +1 -0
  60. package/dist/components/ui/button.d.ts +15 -0
  61. package/dist/components/ui/button.d.ts.map +1 -0
  62. package/dist/components/ui/button.js +96 -0
  63. package/dist/components/ui/button.js.map +1 -0
  64. package/dist/components/ui/card.d.ts +16 -0
  65. package/dist/components/ui/card.d.ts.map +1 -0
  66. package/dist/components/ui/card.js +96 -0
  67. package/dist/components/ui/card.js.map +1 -0
  68. package/dist/components/ui/checkbox.d.ts +9 -0
  69. package/dist/components/ui/checkbox.d.ts.map +1 -0
  70. package/dist/components/ui/checkbox.js +29 -0
  71. package/dist/components/ui/checkbox.js.map +1 -0
  72. package/dist/components/ui/dialog.d.ts +28 -0
  73. package/dist/components/ui/dialog.d.ts.map +1 -0
  74. package/dist/components/ui/dialog.js +105 -0
  75. package/dist/components/ui/dialog.js.map +1 -0
  76. package/dist/components/ui/dropdown-menu.d.ts +29 -0
  77. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  78. package/dist/components/ui/dropdown-menu.js +160 -0
  79. package/dist/components/ui/dropdown-menu.js.map +1 -0
  80. package/dist/components/ui/input.d.ts +14 -0
  81. package/dist/components/ui/input.d.ts.map +1 -0
  82. package/dist/components/ui/input.js +60 -0
  83. package/dist/components/ui/input.js.map +1 -0
  84. package/dist/components/ui/label.d.ts +13 -0
  85. package/dist/components/ui/label.d.ts.map +1 -0
  86. package/dist/components/ui/label.js +26 -0
  87. package/dist/components/ui/label.js.map +1 -0
  88. package/dist/components/ui/popover.d.ts +8 -0
  89. package/dist/components/ui/popover.d.ts.map +1 -0
  90. package/dist/components/ui/popover.js +29 -0
  91. package/dist/components/ui/popover.js.map +1 -0
  92. package/dist/components/ui/progress.d.ts +17 -0
  93. package/dist/components/ui/progress.d.ts.map +1 -0
  94. package/dist/components/ui/progress.js +80 -0
  95. package/dist/components/ui/progress.js.map +1 -0
  96. package/dist/components/ui/scroll-area.d.ts +6 -0
  97. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  98. package/dist/components/ui/scroll-area.js +39 -0
  99. package/dist/components/ui/scroll-area.js.map +1 -0
  100. package/dist/components/ui/select.d.ts +16 -0
  101. package/dist/components/ui/select.d.ts.map +1 -0
  102. package/dist/components/ui/select.js +131 -0
  103. package/dist/components/ui/select.js.map +1 -0
  104. package/dist/components/ui/separator.d.ts +9 -0
  105. package/dist/components/ui/separator.d.ts.map +1 -0
  106. package/dist/components/ui/separator.js +50 -0
  107. package/dist/components/ui/separator.js.map +1 -0
  108. package/dist/components/ui/skeleton.d.ts +10 -0
  109. package/dist/components/ui/skeleton.d.ts.map +1 -0
  110. package/dist/components/ui/skeleton.js +30 -0
  111. package/dist/components/ui/skeleton.js.map +1 -0
  112. package/dist/components/ui/spinner.d.ts +14 -0
  113. package/dist/components/ui/spinner.d.ts.map +1 -0
  114. package/dist/components/ui/spinner.js +44 -0
  115. package/dist/components/ui/spinner.js.map +1 -0
  116. package/dist/components/ui/switch.d.ts +8 -0
  117. package/dist/components/ui/switch.d.ts.map +1 -0
  118. package/dist/components/ui/switch.js +43 -0
  119. package/dist/components/ui/switch.js.map +1 -0
  120. package/dist/components/ui/table.d.ts +11 -0
  121. package/dist/components/ui/table.d.ts.map +1 -0
  122. package/dist/components/ui/table.js +95 -0
  123. package/dist/components/ui/table.js.map +1 -0
  124. package/dist/components/ui/tabs.d.ts +20 -0
  125. package/dist/components/ui/tabs.d.ts.map +1 -0
  126. package/dist/components/ui/tabs.js +92 -0
  127. package/dist/components/ui/tabs.js.map +1 -0
  128. package/dist/components/ui/textarea.d.ts +12 -0
  129. package/dist/components/ui/textarea.d.ts.map +1 -0
  130. package/dist/components/ui/textarea.js +41 -0
  131. package/dist/components/ui/textarea.js.map +1 -0
  132. package/dist/components/ui/toast.d.ts +16 -0
  133. package/dist/components/ui/toast.d.ts.map +1 -0
  134. package/dist/components/ui/toast.js +113 -0
  135. package/dist/components/ui/toast.js.map +1 -0
  136. package/dist/components/ui/tooltip.d.ts +8 -0
  137. package/dist/components/ui/tooltip.d.ts.map +1 -0
  138. package/dist/components/ui/tooltip.js +28 -0
  139. package/dist/components/ui/tooltip.js.map +1 -0
  140. package/dist/hooks/use-debounce.d.ts +15 -0
  141. package/dist/hooks/use-debounce.d.ts.map +1 -0
  142. package/dist/hooks/use-debounce.js +15 -0
  143. package/dist/hooks/use-debounce.js.map +1 -0
  144. package/dist/hooks/use-local-storage.d.ts +9 -0
  145. package/dist/hooks/use-local-storage.d.ts.map +1 -0
  146. package/dist/hooks/use-local-storage.js +49 -0
  147. package/dist/hooks/use-local-storage.js.map +1 -0
  148. package/dist/hooks/use-media-query.d.ts +9 -0
  149. package/dist/hooks/use-media-query.d.ts.map +1 -0
  150. package/dist/hooks/use-media-query.js +20 -0
  151. package/dist/hooks/use-media-query.js.map +1 -0
  152. package/dist/index.d.ts +66 -0
  153. package/dist/index.d.ts.map +1 -0
  154. package/dist/index.js +153 -0
  155. package/dist/index.js.map +1 -0
  156. package/dist/lib/colors.d.ts +73 -0
  157. package/dist/lib/colors.d.ts.map +1 -0
  158. package/dist/lib/colors.js +64 -0
  159. package/dist/lib/colors.js.map +1 -0
  160. package/dist/lib/utils.d.ts +7 -0
  161. package/dist/lib/utils.d.ts.map +1 -0
  162. package/dist/lib/utils.js +9 -0
  163. package/dist/lib/utils.js.map +1 -0
  164. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +729 -0
  165. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js.map +1 -0
  166. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +630 -0
  167. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js.map +1 -0
  168. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +325 -0
  169. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js.map +1 -0
  170. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +177 -0
  171. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js.map +1 -0
  172. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +152 -0
  173. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js.map +1 -0
  174. package/dist/node_modules/@radix-ui/number/dist/index.js +7 -0
  175. package/dist/node_modules/@radix-ui/number/dist/index.js.map +1 -0
  176. package/dist/node_modules/@radix-ui/primitive/dist/index.js +12 -0
  177. package/dist/node_modules/@radix-ui/primitive/dist/index.js.map +1 -0
  178. package/dist/node_modules/@radix-ui/react-accordion/dist/index.js +319 -0
  179. package/dist/node_modules/@radix-ui/react-accordion/dist/index.js.map +1 -0
  180. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js +26 -0
  181. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js.map +1 -0
  182. package/dist/node_modules/@radix-ui/react-avatar/dist/index.js +124 -0
  183. package/dist/node_modules/@radix-ui/react-avatar/dist/index.js.map +1 -0
  184. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.js +66 -0
  185. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-context/dist/index.js.map +1 -0
  186. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.js +40 -0
  187. package/dist/node_modules/@radix-ui/react-avatar/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
  188. package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js +280 -0
  189. package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js.map +1 -0
  190. package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js +152 -0
  191. package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js.map +1 -0
  192. package/dist/node_modules/@radix-ui/react-collection/dist/index.js +71 -0
  193. package/dist/node_modules/@radix-ui/react-collection/dist/index.js.map +1 -0
  194. package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
  195. package/dist/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
  196. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +40 -0
  197. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +1 -0
  198. package/dist/node_modules/@radix-ui/react-context/dist/index.js +82 -0
  199. package/dist/node_modules/@radix-ui/react-context/dist/index.js.map +1 -0
  200. package/dist/node_modules/@radix-ui/react-dialog/dist/index.js +342 -0
  201. package/dist/node_modules/@radix-ui/react-dialog/dist/index.js.map +1 -0
  202. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
  203. package/dist/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
  204. package/dist/node_modules/@radix-ui/react-direction/dist/index.js +11 -0
  205. package/dist/node_modules/@radix-ui/react-direction/dist/index.js.map +1 -0
  206. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +217 -0
  207. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js.map +1 -0
  208. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.js +299 -0
  209. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.js.map +1 -0
  210. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +30 -0
  211. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js.map +1 -0
  212. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +209 -0
  213. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js.map +1 -0
  214. package/dist/node_modules/@radix-ui/react-id/dist/index.js +15 -0
  215. package/dist/node_modules/@radix-ui/react-id/dist/index.js.map +1 -0
  216. package/dist/node_modules/@radix-ui/react-label/dist/index.js +27 -0
  217. package/dist/node_modules/@radix-ui/react-label/dist/index.js.map +1 -0
  218. package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js +40 -0
  219. package/dist/node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
  220. package/dist/node_modules/@radix-ui/react-menu/dist/index.js +881 -0
  221. package/dist/node_modules/@radix-ui/react-menu/dist/index.js.map +1 -0
  222. package/dist/node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
  223. package/dist/node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
  224. package/dist/node_modules/@radix-ui/react-popover/dist/index.js +314 -0
  225. package/dist/node_modules/@radix-ui/react-popover/dist/index.js.map +1 -0
  226. package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
  227. package/dist/node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
  228. package/dist/node_modules/@radix-ui/react-popper/dist/index.js +294 -0
  229. package/dist/node_modules/@radix-ui/react-popper/dist/index.js.map +1 -0
  230. package/dist/node_modules/@radix-ui/react-portal/dist/index.js +19 -0
  231. package/dist/node_modules/@radix-ui/react-portal/dist/index.js.map +1 -0
  232. package/dist/node_modules/@radix-ui/react-presence/dist/index.js +130 -0
  233. package/dist/node_modules/@radix-ui/react-presence/dist/index.js.map +1 -0
  234. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js +44 -0
  235. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
  236. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
  237. package/dist/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
  238. package/dist/node_modules/@radix-ui/react-progress/dist/index.js +97 -0
  239. package/dist/node_modules/@radix-ui/react-progress/dist/index.js.map +1 -0
  240. package/dist/node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context/dist/index.js +66 -0
  241. package/dist/node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context/dist/index.js.map +1 -0
  242. package/dist/node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive/dist/index.js +40 -0
  243. package/dist/node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
  244. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js +228 -0
  245. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js.map +1 -0
  246. package/dist/node_modules/@radix-ui/react-scroll-area/dist/index.js +728 -0
  247. package/dist/node_modules/@radix-ui/react-scroll-area/dist/index.js.map +1 -0
  248. package/dist/node_modules/@radix-ui/react-select/dist/index.js +1200 -0
  249. package/dist/node_modules/@radix-ui/react-select/dist/index.js.map +1 -0
  250. package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.js +90 -0
  251. package/dist/node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
  252. package/dist/node_modules/@radix-ui/react-separator/dist/index.js +31 -0
  253. package/dist/node_modules/@radix-ui/react-separator/dist/index.js.map +1 -0
  254. package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js +40 -0
  255. package/dist/node_modules/@radix-ui/react-separator/node_modules/@radix-ui/react-primitive/dist/index.js.map +1 -0
  256. package/dist/node_modules/@radix-ui/react-slot/dist/index.js +107 -0
  257. package/dist/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
  258. package/dist/node_modules/@radix-ui/react-switch/dist/index.js +156 -0
  259. package/dist/node_modules/@radix-ui/react-switch/dist/index.js.map +1 -0
  260. package/dist/node_modules/@radix-ui/react-tabs/dist/index.js +195 -0
  261. package/dist/node_modules/@radix-ui/react-tabs/dist/index.js.map +1 -0
  262. package/dist/node_modules/@radix-ui/react-toast/dist/index.js +645 -0
  263. package/dist/node_modules/@radix-ui/react-toast/dist/index.js.map +1 -0
  264. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.js +501 -0
  265. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.js.map +1 -0
  266. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.js +16 -0
  267. package/dist/node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
  268. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +15 -0
  269. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js.map +1 -0
  270. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +72 -0
  271. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js.map +1 -0
  272. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +18 -0
  273. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js.map +1 -0
  274. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.js +16 -0
  275. package/dist/node_modules/@radix-ui/react-use-is-hydrated/dist/index.js.map +1 -0
  276. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +7 -0
  277. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js.map +1 -0
  278. package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js +15 -0
  279. package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js.map +1 -0
  280. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js +40 -0
  281. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js.map +1 -0
  282. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js +37 -0
  283. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js.map +1 -0
  284. package/dist/node_modules/aria-hidden/dist/es2015/index.js +123 -0
  285. package/dist/node_modules/aria-hidden/dist/es2015/index.js.map +1 -0
  286. package/dist/node_modules/class-variance-authority/dist/index.js +46 -0
  287. package/dist/node_modules/class-variance-authority/dist/index.js.map +1 -0
  288. package/dist/node_modules/clsx/dist/clsx.js +17 -0
  289. package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
  290. package/dist/node_modules/get-nonce/dist/es2015/index.js +10 -0
  291. package/dist/node_modules/get-nonce/dist/es2015/index.js.map +1 -0
  292. package/dist/node_modules/lucide-react/dist/esm/Icon.js +43 -0
  293. package/dist/node_modules/lucide-react/dist/esm/Icon.js.map +1 -0
  294. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js +25 -0
  295. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js.map +1 -0
  296. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js +21 -0
  297. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js.map +1 -0
  298. package/dist/node_modules/lucide-react/dist/esm/icons/ban.js +15 -0
  299. package/dist/node_modules/lucide-react/dist/esm/icons/ban.js.map +1 -0
  300. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.js +17 -0
  301. package/dist/node_modules/lucide-react/dist/esm/icons/calendar.js.map +1 -0
  302. package/dist/node_modules/lucide-react/dist/esm/icons/check.js +12 -0
  303. package/dist/node_modules/lucide-react/dist/esm/icons/check.js.map +1 -0
  304. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js +14 -0
  305. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js.map +1 -0
  306. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.js +14 -0
  307. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.js.map +1 -0
  308. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js +14 -0
  309. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js.map +1 -0
  310. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js +12 -0
  311. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js.map +1 -0
  312. package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js +16 -0
  313. package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js.map +1 -0
  314. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.js +15 -0
  315. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.js.map +1 -0
  316. package/dist/node_modules/lucide-react/dist/esm/icons/circle-minus.js +15 -0
  317. package/dist/node_modules/lucide-react/dist/esm/icons/circle-minus.js.map +1 -0
  318. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.js +16 -0
  319. package/dist/node_modules/lucide-react/dist/esm/icons/circle-x.js.map +1 -0
  320. package/dist/node_modules/lucide-react/dist/esm/icons/circle.js +14 -0
  321. package/dist/node_modules/lucide-react/dist/esm/icons/circle.js.map +1 -0
  322. package/dist/node_modules/lucide-react/dist/esm/icons/clock.js +15 -0
  323. package/dist/node_modules/lucide-react/dist/esm/icons/clock.js.map +1 -0
  324. package/dist/node_modules/lucide-react/dist/esm/icons/flag.js +15 -0
  325. package/dist/node_modules/lucide-react/dist/esm/icons/flag.js.map +1 -0
  326. package/dist/node_modules/lucide-react/dist/esm/icons/git-branch.js +17 -0
  327. package/dist/node_modules/lucide-react/dist/esm/icons/git-branch.js.map +1 -0
  328. package/dist/node_modules/lucide-react/dist/esm/icons/info.js +16 -0
  329. package/dist/node_modules/lucide-react/dist/esm/icons/info.js.map +1 -0
  330. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js +14 -0
  331. package/dist/node_modules/lucide-react/dist/esm/icons/loader-circle.js.map +1 -0
  332. package/dist/node_modules/lucide-react/dist/esm/icons/minus.js +12 -0
  333. package/dist/node_modules/lucide-react/dist/esm/icons/minus.js.map +1 -0
  334. package/dist/node_modules/lucide-react/dist/esm/icons/pause.js +15 -0
  335. package/dist/node_modules/lucide-react/dist/esm/icons/pause.js.map +1 -0
  336. package/dist/node_modules/lucide-react/dist/esm/icons/play.js +14 -0
  337. package/dist/node_modules/lucide-react/dist/esm/icons/play.js.map +1 -0
  338. package/dist/node_modules/lucide-react/dist/esm/icons/send.js +21 -0
  339. package/dist/node_modules/lucide-react/dist/esm/icons/send.js.map +1 -0
  340. package/dist/node_modules/lucide-react/dist/esm/icons/tag.js +21 -0
  341. package/dist/node_modules/lucide-react/dist/esm/icons/tag.js.map +1 -0
  342. package/dist/node_modules/lucide-react/dist/esm/icons/timer.js +16 -0
  343. package/dist/node_modules/lucide-react/dist/esm/icons/timer.js.map +1 -0
  344. package/dist/node_modules/lucide-react/dist/esm/icons/trending-down.js +15 -0
  345. package/dist/node_modules/lucide-react/dist/esm/icons/trending-down.js.map +1 -0
  346. package/dist/node_modules/lucide-react/dist/esm/icons/trending-up.js +15 -0
  347. package/dist/node_modules/lucide-react/dist/esm/icons/trending-up.js.map +1 -0
  348. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.js +22 -0
  349. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.js.map +1 -0
  350. package/dist/node_modules/lucide-react/dist/esm/icons/x.js +15 -0
  351. package/dist/node_modules/lucide-react/dist/esm/icons/x.js.map +1 -0
  352. package/dist/node_modules/lucide-react/dist/esm/icons/zap.js +20 -0
  353. package/dist/node_modules/lucide-react/dist/esm/icons/zap.js.map +1 -0
  354. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js +15 -0
  355. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js.map +1 -0
  356. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js +12 -0
  357. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js.map +1 -0
  358. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +181 -0
  359. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js.map +1 -0
  360. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js +39 -0
  361. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js.map +1 -0
  362. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +20 -0
  363. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js.map +1 -0
  364. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +103 -0
  365. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js.map +1 -0
  366. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js +6 -0
  367. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js.map +1 -0
  368. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js +8 -0
  369. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js.map +1 -0
  370. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js +48 -0
  371. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js.map +1 -0
  372. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +11 -0
  373. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js.map +1 -0
  374. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +38 -0
  375. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js.map +1 -0
  376. package/dist/node_modules/react-style-singleton/dist/es2015/component.js +14 -0
  377. package/dist/node_modules/react-style-singleton/dist/es2015/component.js.map +1 -0
  378. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js +17 -0
  379. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js.map +1 -0
  380. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js +49 -0
  381. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js.map +1 -0
  382. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +2467 -0
  383. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
  384. package/dist/node_modules/tslib/tslib.es6.js +40 -0
  385. package/dist/node_modules/tslib/tslib.es6.js.map +1 -0
  386. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js +12 -0
  387. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js.map +1 -0
  388. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +36 -0
  389. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js.map +1 -0
  390. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js +30 -0
  391. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js.map +1 -0
  392. package/dist/node_modules/use-sidecar/dist/es2015/exports.js +22 -0
  393. package/dist/node_modules/use-sidecar/dist/es2015/exports.js.map +1 -0
  394. package/dist/node_modules/use-sidecar/dist/es2015/medium.js +89 -0
  395. package/dist/node_modules/use-sidecar/dist/es2015/medium.js.map +1 -0
  396. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +78 -0
  397. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -0
  398. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +63 -0
  399. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +1 -0
  400. package/dist/node_modules/use-sync-external-store/shim/index.js +18 -0
  401. package/dist/node_modules/use-sync-external-store/shim/index.js.map +1 -0
  402. package/dist/types/automation.d.ts +59 -0
  403. package/dist/types/automation.d.ts.map +1 -0
  404. package/dist/types/common.d.ts +38 -0
  405. package/dist/types/common.d.ts.map +1 -0
  406. package/package.json +119 -0
  407. package/registry/registry.json +218 -0
  408. package/src/components/automation/metric-card.tsx +113 -0
  409. package/src/components/automation/status-badge.tsx +136 -0
  410. package/src/components/automation/task-card.tsx +164 -0
  411. package/src/components/automation/workflow-node.tsx +186 -0
  412. package/src/components/layout/app-shell.tsx +58 -0
  413. package/src/components/layout/header.tsx +39 -0
  414. package/src/components/layout/page-header.tsx +42 -0
  415. package/src/components/layout/sidebar.tsx +190 -0
  416. package/src/components/ui/accordion.tsx +57 -0
  417. package/src/components/ui/alert.tsx +93 -0
  418. package/src/components/ui/avatar.tsx +94 -0
  419. package/src/components/ui/badge.tsx +69 -0
  420. package/src/components/ui/button.tsx +106 -0
  421. package/src/components/ui/card.tsx +96 -0
  422. package/src/components/ui/checkbox.tsx +40 -0
  423. package/src/components/ui/dialog.tsx +129 -0
  424. package/src/components/ui/dropdown-menu.tsx +194 -0
  425. package/src/components/ui/input.tsx +80 -0
  426. package/src/components/ui/label.tsx +37 -0
  427. package/src/components/ui/popover.tsx +29 -0
  428. package/src/components/ui/progress.tsx +92 -0
  429. package/src/components/ui/scroll-area.tsx +43 -0
  430. package/src/components/ui/select.tsx +157 -0
  431. package/src/components/ui/separator.tsx +56 -0
  432. package/src/components/ui/skeleton.tsx +41 -0
  433. package/src/components/ui/spinner.tsx +50 -0
  434. package/src/components/ui/switch.tsx +46 -0
  435. package/src/components/ui/table.tsx +117 -0
  436. package/src/components/ui/tabs.tsx +107 -0
  437. package/src/components/ui/textarea.tsx +50 -0
  438. package/src/components/ui/toast.tsx +139 -0
  439. package/src/components/ui/tooltip.tsx +28 -0
  440. package/src/hooks/use-debounce.ts +28 -0
  441. package/src/hooks/use-local-storage.ts +63 -0
  442. package/src/hooks/use-media-query.ts +29 -0
  443. package/src/index.ts +197 -0
  444. package/src/lib/colors.ts +102 -0
  445. package/src/lib/utils.ts +10 -0
  446. package/src/styles/globals.css +230 -0
  447. package/src/types/automation.ts +74 -0
  448. package/src/types/common.ts +48 -0
  449. package/tailwind/preset.cjs +98 -0
  450. package/tailwind/preset.css +5 -0
  451. 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,2 @@
1
+ # automa8e-fe-component-library
2
+ Automa8e FE Standardized Component Library
@@ -0,0 +1,6 @@
1
+ import { __require as requireShim } from "../node_modules/use-sync-external-store/shim/index.js";
2
+ var shimExports = requireShim();
3
+ export {
4
+ shimExports as s
5
+ };
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,5 @@
1
+ var shim = { exports: {} };
2
+ export {
3
+ shim as __module
4
+ };
5
+ //# sourceMappingURL=index2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index2.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,5 @@
1
+ var useSyncExternalStoreShim_development = {};
2
+ export {
3
+ useSyncExternalStoreShim_development as __exports
4
+ };
5
+ //# sourceMappingURL=use-sync-external-store-shim.development.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-sync-external-store-shim.development.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,5 @@
1
+ var useSyncExternalStoreShim_production = {};
2
+ export {
3
+ useSyncExternalStoreShim_production as __exports
4
+ };
5
+ //# sourceMappingURL=use-sync-external-store-shim.production.js.map
@@ -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"}