@flowdrop/flowdrop 1.0.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 (403) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +252 -0
  3. package/dist/adapters/WorkflowAdapter.d.ts +167 -0
  4. package/dist/adapters/WorkflowAdapter.js +368 -0
  5. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +96 -0
  6. package/dist/adapters/agentspec/AgentSpecAdapter.js +626 -0
  7. package/dist/adapters/agentspec/agentAdapter.d.ts +59 -0
  8. package/dist/adapters/agentspec/agentAdapter.js +91 -0
  9. package/dist/adapters/agentspec/autoLayout.d.ts +34 -0
  10. package/dist/adapters/agentspec/autoLayout.js +127 -0
  11. package/dist/adapters/agentspec/componentTypeDefaults.d.ts +73 -0
  12. package/dist/adapters/agentspec/componentTypeDefaults.js +238 -0
  13. package/dist/adapters/agentspec/defaultNodeTypes.d.ts +53 -0
  14. package/dist/adapters/agentspec/defaultNodeTypes.js +561 -0
  15. package/dist/adapters/agentspec/index.d.ts +37 -0
  16. package/dist/adapters/agentspec/index.js +39 -0
  17. package/dist/adapters/agentspec/validator.d.ts +34 -0
  18. package/dist/adapters/agentspec/validator.js +169 -0
  19. package/dist/api/enhanced-client.d.ts +183 -0
  20. package/dist/api/enhanced-client.js +430 -0
  21. package/dist/components/App.svelte +981 -0
  22. package/dist/components/App.svelte.d.ts +54 -0
  23. package/dist/components/CanvasBanner.stories.svelte +29 -0
  24. package/dist/components/CanvasBanner.stories.svelte.d.ts +27 -0
  25. package/dist/components/CanvasBanner.svelte +57 -0
  26. package/dist/components/CanvasBanner.svelte.d.ts +8 -0
  27. package/dist/components/ConfigForm.svelte +1138 -0
  28. package/dist/components/ConfigForm.svelte.d.ts +44 -0
  29. package/dist/components/ConfigModal.svelte +188 -0
  30. package/dist/components/ConfigModal.svelte.d.ts +13 -0
  31. package/dist/components/ConfigPanel.stories.svelte +47 -0
  32. package/dist/components/ConfigPanel.stories.svelte.d.ts +27 -0
  33. package/dist/components/ConfigPanel.svelte +182 -0
  34. package/dist/components/ConfigPanel.svelte.d.ts +32 -0
  35. package/dist/components/ConnectionLine.svelte +32 -0
  36. package/dist/components/ConnectionLine.svelte.d.ts +3 -0
  37. package/dist/components/EdgeRefresher.svelte +41 -0
  38. package/dist/components/EdgeRefresher.svelte.d.ts +9 -0
  39. package/dist/components/FlowDropZone.svelte +83 -0
  40. package/dist/components/FlowDropZone.svelte.d.ts +13 -0
  41. package/dist/components/LoadingSpinner.stories.svelte +30 -0
  42. package/dist/components/LoadingSpinner.stories.svelte.d.ts +27 -0
  43. package/dist/components/LoadingSpinner.svelte +36 -0
  44. package/dist/components/LoadingSpinner.svelte.d.ts +8 -0
  45. package/dist/components/Logo.stories.svelte +22 -0
  46. package/dist/components/Logo.stories.svelte.d.ts +27 -0
  47. package/dist/components/Logo.svelte +102 -0
  48. package/dist/components/Logo.svelte.d.ts +26 -0
  49. package/dist/components/LogsSidebar.svelte +563 -0
  50. package/dist/components/LogsSidebar.svelte.d.ts +17 -0
  51. package/dist/components/MarkdownDisplay.stories.svelte +36 -0
  52. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +27 -0
  53. package/dist/components/MarkdownDisplay.svelte +29 -0
  54. package/dist/components/MarkdownDisplay.svelte.d.ts +7 -0
  55. package/dist/components/Navbar.stories.svelte +53 -0
  56. package/dist/components/Navbar.stories.svelte.d.ts +27 -0
  57. package/dist/components/Navbar.svelte +726 -0
  58. package/dist/components/Navbar.svelte.d.ts +29 -0
  59. package/dist/components/NodeSidebar.svelte +762 -0
  60. package/dist/components/NodeSidebar.svelte.d.ts +9 -0
  61. package/dist/components/NodeStatusOverlay.stories.svelte +85 -0
  62. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +27 -0
  63. package/dist/components/NodeStatusOverlay.svelte +327 -0
  64. package/dist/components/NodeStatusOverlay.svelte.d.ts +11 -0
  65. package/dist/components/PipelineStatus.svelte +314 -0
  66. package/dist/components/PipelineStatus.svelte.d.ts +20 -0
  67. package/dist/components/PortCoordinateTracker.svelte +58 -0
  68. package/dist/components/PortCoordinateTracker.svelte.d.ts +12 -0
  69. package/dist/components/ReadOnlyDetails.svelte +170 -0
  70. package/dist/components/ReadOnlyDetails.svelte.d.ts +25 -0
  71. package/dist/components/SchemaForm.stories.svelte +116 -0
  72. package/dist/components/SchemaForm.stories.svelte.d.ts +27 -0
  73. package/dist/components/SchemaForm.svelte +536 -0
  74. package/dist/components/SchemaForm.svelte.d.ts +83 -0
  75. package/dist/components/SettingsModal.svelte +279 -0
  76. package/dist/components/SettingsModal.svelte.d.ts +23 -0
  77. package/dist/components/SettingsPanel.svelte +638 -0
  78. package/dist/components/SettingsPanel.svelte.d.ts +21 -0
  79. package/dist/components/StatusIcon.stories.svelte +60 -0
  80. package/dist/components/StatusIcon.stories.svelte.d.ts +27 -0
  81. package/dist/components/StatusIcon.svelte +119 -0
  82. package/dist/components/StatusIcon.svelte.d.ts +10 -0
  83. package/dist/components/StatusLabel.stories.svelte +17 -0
  84. package/dist/components/StatusLabel.stories.svelte.d.ts +27 -0
  85. package/dist/components/StatusLabel.svelte +33 -0
  86. package/dist/components/StatusLabel.svelte.d.ts +7 -0
  87. package/dist/components/ThemeToggle.stories.svelte +25 -0
  88. package/dist/components/ThemeToggle.stories.svelte.d.ts +27 -0
  89. package/dist/components/ThemeToggle.svelte +185 -0
  90. package/dist/components/ThemeToggle.svelte.d.ts +14 -0
  91. package/dist/components/UniversalNode.svelte +155 -0
  92. package/dist/components/UniversalNode.svelte.d.ts +15 -0
  93. package/dist/components/WorkflowEditor.svelte +1035 -0
  94. package/dist/components/WorkflowEditor.svelte.d.ts +23 -0
  95. package/dist/components/form/FormArray.svelte +1049 -0
  96. package/dist/components/form/FormArray.svelte.d.ts +22 -0
  97. package/dist/components/form/FormAutocomplete.svelte +1009 -0
  98. package/dist/components/form/FormAutocomplete.svelte.d.ts +25 -0
  99. package/dist/components/form/FormCheckboxGroup.stories.svelte +28 -0
  100. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +27 -0
  101. package/dist/components/form/FormCheckboxGroup.svelte +155 -0
  102. package/dist/components/form/FormCheckboxGroup.svelte.d.ts +17 -0
  103. package/dist/components/form/FormCodeEditor.svelte +458 -0
  104. package/dist/components/form/FormCodeEditor.svelte.d.ts +25 -0
  105. package/dist/components/form/FormField.svelte +417 -0
  106. package/dist/components/form/FormField.svelte.d.ts +29 -0
  107. package/dist/components/form/FormFieldLight.svelte +425 -0
  108. package/dist/components/form/FormFieldLight.svelte.d.ts +18 -0
  109. package/dist/components/form/FormFieldWrapper.stories.svelte +53 -0
  110. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +27 -0
  111. package/dist/components/form/FormFieldWrapper.svelte +125 -0
  112. package/dist/components/form/FormFieldWrapper.svelte.d.ts +18 -0
  113. package/dist/components/form/FormFieldset.svelte +142 -0
  114. package/dist/components/form/FormFieldset.svelte.d.ts +11 -0
  115. package/dist/components/form/FormMarkdownEditor.svelte +752 -0
  116. package/dist/components/form/FormMarkdownEditor.svelte.d.ts +33 -0
  117. package/dist/components/form/FormNumberField.stories.svelte +36 -0
  118. package/dist/components/form/FormNumberField.stories.svelte.d.ts +27 -0
  119. package/dist/components/form/FormNumberField.svelte +112 -0
  120. package/dist/components/form/FormNumberField.svelte.d.ts +25 -0
  121. package/dist/components/form/FormRangeField.stories.svelte +31 -0
  122. package/dist/components/form/FormRangeField.stories.svelte.d.ts +27 -0
  123. package/dist/components/form/FormRangeField.svelte +246 -0
  124. package/dist/components/form/FormRangeField.svelte.d.ts +23 -0
  125. package/dist/components/form/FormSelect.stories.svelte +50 -0
  126. package/dist/components/form/FormSelect.stories.svelte.d.ts +27 -0
  127. package/dist/components/form/FormSelect.svelte +129 -0
  128. package/dist/components/form/FormSelect.svelte.d.ts +20 -0
  129. package/dist/components/form/FormTemplateEditor.svelte +825 -0
  130. package/dist/components/form/FormTemplateEditor.svelte.d.ts +41 -0
  131. package/dist/components/form/FormTextField.stories.svelte +30 -0
  132. package/dist/components/form/FormTextField.stories.svelte.d.ts +27 -0
  133. package/dist/components/form/FormTextField.svelte +91 -0
  134. package/dist/components/form/FormTextField.svelte.d.ts +19 -0
  135. package/dist/components/form/FormTextarea.stories.svelte +34 -0
  136. package/dist/components/form/FormTextarea.stories.svelte.d.ts +27 -0
  137. package/dist/components/form/FormTextarea.svelte +97 -0
  138. package/dist/components/form/FormTextarea.svelte.d.ts +21 -0
  139. package/dist/components/form/FormToggle.stories.svelte +30 -0
  140. package/dist/components/form/FormToggle.stories.svelte.d.ts +27 -0
  141. package/dist/components/form/FormToggle.svelte +126 -0
  142. package/dist/components/form/FormToggle.svelte.d.ts +19 -0
  143. package/dist/components/form/FormUISchemaRenderer.svelte +136 -0
  144. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +32 -0
  145. package/dist/components/form/index.d.ts +50 -0
  146. package/dist/components/form/index.js +54 -0
  147. package/dist/components/form/templateAutocomplete.d.ts +29 -0
  148. package/dist/components/form/templateAutocomplete.js +254 -0
  149. package/dist/components/form/types.d.ts +485 -0
  150. package/dist/components/form/types.js +73 -0
  151. package/dist/components/interrupt/ChoicePrompt.stories.svelte +52 -0
  152. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +27 -0
  153. package/dist/components/interrupt/ChoicePrompt.svelte +401 -0
  154. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +23 -0
  155. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +71 -0
  156. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +27 -0
  157. package/dist/components/interrupt/ConfirmationPrompt.svelte +292 -0
  158. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +25 -0
  159. package/dist/components/interrupt/FormPrompt.svelte +236 -0
  160. package/dist/components/interrupt/FormPrompt.svelte.d.ts +23 -0
  161. package/dist/components/interrupt/InterruptBubble.svelte +601 -0
  162. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +16 -0
  163. package/dist/components/interrupt/ReviewPrompt.stories.svelte +67 -0
  164. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +27 -0
  165. package/dist/components/interrupt/ReviewPrompt.svelte +861 -0
  166. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +23 -0
  167. package/dist/components/interrupt/TextInputPrompt.stories.svelte +47 -0
  168. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +27 -0
  169. package/dist/components/interrupt/TextInputPrompt.svelte +346 -0
  170. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +23 -0
  171. package/dist/components/interrupt/index.d.ts +13 -0
  172. package/dist/components/interrupt/index.js +15 -0
  173. package/dist/components/layouts/MainLayout.svelte +718 -0
  174. package/dist/components/layouts/MainLayout.svelte.d.ts +62 -0
  175. package/dist/components/nodes/GatewayNode.stories.svelte +108 -0
  176. package/dist/components/nodes/GatewayNode.stories.svelte.d.ts +26 -0
  177. package/dist/components/nodes/GatewayNode.svelte +591 -0
  178. package/dist/components/nodes/GatewayNode.svelte.d.ts +15 -0
  179. package/dist/components/nodes/IdeaNode.stories.svelte +52 -0
  180. package/dist/components/nodes/IdeaNode.stories.svelte.d.ts +26 -0
  181. package/dist/components/nodes/IdeaNode.svelte +455 -0
  182. package/dist/components/nodes/IdeaNode.svelte.d.ts +24 -0
  183. package/dist/components/nodes/NotesNode.stories.svelte +76 -0
  184. package/dist/components/nodes/NotesNode.stories.svelte.d.ts +26 -0
  185. package/dist/components/nodes/NotesNode.svelte +378 -0
  186. package/dist/components/nodes/NotesNode.svelte.d.ts +24 -0
  187. package/dist/components/nodes/SimpleNode.stories.svelte +159 -0
  188. package/dist/components/nodes/SimpleNode.stories.svelte.d.ts +26 -0
  189. package/dist/components/nodes/SimpleNode.svelte +451 -0
  190. package/dist/components/nodes/SimpleNode.svelte.d.ts +25 -0
  191. package/dist/components/nodes/SquareNode.stories.svelte +82 -0
  192. package/dist/components/nodes/SquareNode.stories.svelte.d.ts +26 -0
  193. package/dist/components/nodes/SquareNode.svelte +407 -0
  194. package/dist/components/nodes/SquareNode.svelte.d.ts +25 -0
  195. package/dist/components/nodes/TerminalNode.stories.svelte +25 -0
  196. package/dist/components/nodes/TerminalNode.stories.svelte.d.ts +26 -0
  197. package/dist/components/nodes/TerminalNode.svelte +690 -0
  198. package/dist/components/nodes/TerminalNode.svelte.d.ts +25 -0
  199. package/dist/components/nodes/ToolNode.stories.svelte +189 -0
  200. package/dist/components/nodes/ToolNode.stories.svelte.d.ts +26 -0
  201. package/dist/components/nodes/ToolNode.svelte +471 -0
  202. package/dist/components/nodes/ToolNode.svelte.d.ts +36 -0
  203. package/dist/components/nodes/WorkflowNode.stories.svelte +55 -0
  204. package/dist/components/nodes/WorkflowNode.stories.svelte.d.ts +26 -0
  205. package/dist/components/nodes/WorkflowNode.svelte +571 -0
  206. package/dist/components/nodes/WorkflowNode.svelte.d.ts +15 -0
  207. package/dist/components/playground/ChatPanel.svelte +905 -0
  208. package/dist/components/playground/ChatPanel.svelte.d.ts +46 -0
  209. package/dist/components/playground/ExecutionLogs.svelte +488 -0
  210. package/dist/components/playground/ExecutionLogs.svelte.d.ts +14 -0
  211. package/dist/components/playground/InputCollector.svelte +444 -0
  212. package/dist/components/playground/InputCollector.svelte.d.ts +16 -0
  213. package/dist/components/playground/MessageBubble.stories.svelte +62 -0
  214. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +27 -0
  215. package/dist/components/playground/MessageBubble.svelte +633 -0
  216. package/dist/components/playground/MessageBubble.svelte.d.ts +24 -0
  217. package/dist/components/playground/Playground.svelte +1075 -0
  218. package/dist/components/playground/Playground.svelte.d.ts +25 -0
  219. package/dist/components/playground/PlaygroundModal.svelte +220 -0
  220. package/dist/components/playground/PlaygroundModal.svelte.d.ts +25 -0
  221. package/dist/components/playground/SessionManager.svelte +538 -0
  222. package/dist/components/playground/SessionManager.svelte.d.ts +20 -0
  223. package/dist/config/agentSpecEndpoints.d.ts +70 -0
  224. package/dist/config/agentSpecEndpoints.js +65 -0
  225. package/dist/config/constants.d.ts +43 -0
  226. package/dist/config/constants.js +31 -0
  227. package/dist/config/defaultCategories.d.ts +7 -0
  228. package/dist/config/defaultCategories.js +126 -0
  229. package/dist/config/defaultPortConfig.d.ts +6 -0
  230. package/dist/config/defaultPortConfig.js +201 -0
  231. package/dist/config/endpoints.d.ts +160 -0
  232. package/dist/config/endpoints.js +146 -0
  233. package/dist/config/runtimeConfig.d.ts +47 -0
  234. package/dist/config/runtimeConfig.js +80 -0
  235. package/dist/core/index.d.ts +75 -0
  236. package/dist/core/index.js +92 -0
  237. package/dist/display/index.d.ts +29 -0
  238. package/dist/display/index.js +36 -0
  239. package/dist/editor/index.d.ts +95 -0
  240. package/dist/editor/index.js +138 -0
  241. package/dist/form/code.d.ts +101 -0
  242. package/dist/form/code.js +168 -0
  243. package/dist/form/fieldRegistry.d.ts +169 -0
  244. package/dist/form/fieldRegistry.js +152 -0
  245. package/dist/form/full.d.ts +56 -0
  246. package/dist/form/full.js +80 -0
  247. package/dist/form/index.d.ts +77 -0
  248. package/dist/form/index.js +91 -0
  249. package/dist/form/markdown.d.ts +69 -0
  250. package/dist/form/markdown.js +103 -0
  251. package/dist/helpers/nodeLayoutHelper.d.ts +14 -0
  252. package/dist/helpers/nodeLayoutHelper.js +19 -0
  253. package/dist/helpers/proximityConnect.d.ts +94 -0
  254. package/dist/helpers/proximityConnect.js +314 -0
  255. package/dist/helpers/workflowEditorHelper.d.ts +183 -0
  256. package/dist/helpers/workflowEditorHelper.js +595 -0
  257. package/dist/index.d.ts +37 -0
  258. package/dist/index.js +64 -0
  259. package/dist/mocks/app-environment.d.ts +8 -0
  260. package/dist/mocks/app-environment.js +16 -0
  261. package/dist/mocks/app-forms.d.ts +2 -0
  262. package/dist/mocks/app-forms.js +22 -0
  263. package/dist/mocks/app-navigation.d.ts +5 -0
  264. package/dist/mocks/app-navigation.js +36 -0
  265. package/dist/mocks/app-stores.d.ts +14 -0
  266. package/dist/mocks/app-stores.js +26 -0
  267. package/dist/playground/index.d.ts +131 -0
  268. package/dist/playground/index.js +172 -0
  269. package/dist/playground/mount.d.ts +203 -0
  270. package/dist/playground/mount.js +235 -0
  271. package/dist/registry/BaseRegistry.d.ts +92 -0
  272. package/dist/registry/BaseRegistry.js +124 -0
  273. package/dist/registry/builtinFormats.d.ts +23 -0
  274. package/dist/registry/builtinFormats.js +70 -0
  275. package/dist/registry/builtinNodes.d.ts +77 -0
  276. package/dist/registry/builtinNodes.js +211 -0
  277. package/dist/registry/index.d.ts +8 -0
  278. package/dist/registry/index.js +12 -0
  279. package/dist/registry/nodeComponentRegistry.d.ts +276 -0
  280. package/dist/registry/nodeComponentRegistry.js +262 -0
  281. package/dist/registry/plugin.d.ts +215 -0
  282. package/dist/registry/plugin.js +249 -0
  283. package/dist/registry/workflowFormatRegistry.d.ts +122 -0
  284. package/dist/registry/workflowFormatRegistry.js +96 -0
  285. package/dist/schema/index.d.ts +23 -0
  286. package/dist/schema/index.js +23 -0
  287. package/dist/schemas/v1/workflow.schema.json +1078 -0
  288. package/dist/services/agentSpecExecutionService.d.ts +106 -0
  289. package/dist/services/agentSpecExecutionService.js +334 -0
  290. package/dist/services/api.d.ts +115 -0
  291. package/dist/services/api.js +214 -0
  292. package/dist/services/apiVariableService.d.ts +114 -0
  293. package/dist/services/apiVariableService.js +338 -0
  294. package/dist/services/autoSaveService.d.ts +112 -0
  295. package/dist/services/autoSaveService.js +227 -0
  296. package/dist/services/categoriesApi.d.ts +14 -0
  297. package/dist/services/categoriesApi.js +49 -0
  298. package/dist/services/draftStorage.d.ts +171 -0
  299. package/dist/services/draftStorage.js +299 -0
  300. package/dist/services/dynamicSchemaService.d.ts +108 -0
  301. package/dist/services/dynamicSchemaService.js +444 -0
  302. package/dist/services/globalSave.d.ts +69 -0
  303. package/dist/services/globalSave.js +248 -0
  304. package/dist/services/historyService.d.ts +208 -0
  305. package/dist/services/historyService.js +321 -0
  306. package/dist/services/interruptService.d.ts +133 -0
  307. package/dist/services/interruptService.js +280 -0
  308. package/dist/services/nodeExecutionService.d.ts +63 -0
  309. package/dist/services/nodeExecutionService.js +266 -0
  310. package/dist/services/playgroundService.d.ts +130 -0
  311. package/dist/services/playgroundService.js +321 -0
  312. package/dist/services/portConfigApi.d.ts +14 -0
  313. package/dist/services/portConfigApi.js +54 -0
  314. package/dist/services/settingsService.d.ts +92 -0
  315. package/dist/services/settingsService.js +196 -0
  316. package/dist/services/toastService.d.ts +156 -0
  317. package/dist/services/toastService.js +265 -0
  318. package/dist/services/variableService.d.ts +141 -0
  319. package/dist/services/variableService.js +463 -0
  320. package/dist/services/workflowStorage.d.ts +37 -0
  321. package/dist/services/workflowStorage.js +116 -0
  322. package/dist/settings/index.d.ts +25 -0
  323. package/dist/settings/index.js +33 -0
  324. package/dist/stores/categoriesStore.svelte.d.ts +32 -0
  325. package/dist/stores/categoriesStore.svelte.js +77 -0
  326. package/dist/stores/editorStateMachine.svelte.d.ts +42 -0
  327. package/dist/stores/editorStateMachine.svelte.js +132 -0
  328. package/dist/stores/historyStore.svelte.d.ts +136 -0
  329. package/dist/stores/historyStore.svelte.js +207 -0
  330. package/dist/stores/interruptStore.svelte.d.ts +179 -0
  331. package/dist/stores/interruptStore.svelte.js +346 -0
  332. package/dist/stores/playgroundStore.svelte.d.ts +230 -0
  333. package/dist/stores/playgroundStore.svelte.js +515 -0
  334. package/dist/stores/portCoordinateStore.svelte.d.ts +66 -0
  335. package/dist/stores/portCoordinateStore.svelte.js +186 -0
  336. package/dist/stores/settingsStore.svelte.d.ts +158 -0
  337. package/dist/stores/settingsStore.svelte.js +544 -0
  338. package/dist/stores/workflowStore.svelte.d.ts +260 -0
  339. package/dist/stores/workflowStore.svelte.js +649 -0
  340. package/dist/stories/CanvasDecorator.svelte +49 -0
  341. package/dist/stories/CanvasDecorator.svelte.d.ts +8 -0
  342. package/dist/stories/NodeDecorator.svelte +73 -0
  343. package/dist/stories/NodeDecorator.svelte.d.ts +8 -0
  344. package/dist/stories/utils.d.ts +93 -0
  345. package/dist/stories/utils.js +122 -0
  346. package/dist/styles/base.css +1300 -0
  347. package/dist/styles/toast.css +35 -0
  348. package/dist/styles/tokens.css +475 -0
  349. package/dist/svelte-app.d.ts +150 -0
  350. package/dist/svelte-app.js +295 -0
  351. package/dist/types/agentspec.d.ts +318 -0
  352. package/dist/types/agentspec.js +48 -0
  353. package/dist/types/auth.d.ts +263 -0
  354. package/dist/types/auth.js +229 -0
  355. package/dist/types/config.d.ts +151 -0
  356. package/dist/types/config.js +7 -0
  357. package/dist/types/events.d.ts +190 -0
  358. package/dist/types/events.js +30 -0
  359. package/dist/types/index.d.ts +1234 -0
  360. package/dist/types/index.js +27 -0
  361. package/dist/types/interrupt.d.ts +390 -0
  362. package/dist/types/interrupt.js +145 -0
  363. package/dist/types/interruptState.d.ts +211 -0
  364. package/dist/types/interruptState.js +308 -0
  365. package/dist/types/playground.d.ts +351 -0
  366. package/dist/types/playground.js +95 -0
  367. package/dist/types/settings.d.ts +189 -0
  368. package/dist/types/settings.js +97 -0
  369. package/dist/types/uischema.d.ts +144 -0
  370. package/dist/types/uischema.js +51 -0
  371. package/dist/utils/colors.d.ts +288 -0
  372. package/dist/utils/colors.js +548 -0
  373. package/dist/utils/config.d.ts +37 -0
  374. package/dist/utils/config.js +226 -0
  375. package/dist/utils/connections.d.ts +125 -0
  376. package/dist/utils/connections.js +414 -0
  377. package/dist/utils/errors.d.ts +28 -0
  378. package/dist/utils/errors.js +44 -0
  379. package/dist/utils/fetchWithAuth.d.ts +25 -0
  380. package/dist/utils/fetchWithAuth.js +34 -0
  381. package/dist/utils/handleIds.d.ts +35 -0
  382. package/dist/utils/handleIds.js +58 -0
  383. package/dist/utils/handlePositioning.d.ts +31 -0
  384. package/dist/utils/handlePositioning.js +35 -0
  385. package/dist/utils/icons.d.ts +106 -0
  386. package/dist/utils/icons.js +157 -0
  387. package/dist/utils/logger.d.ts +47 -0
  388. package/dist/utils/logger.js +72 -0
  389. package/dist/utils/nodeStatus.d.ts +53 -0
  390. package/dist/utils/nodeStatus.js +183 -0
  391. package/dist/utils/nodeTypes.d.ts +117 -0
  392. package/dist/utils/nodeTypes.js +244 -0
  393. package/dist/utils/nodeWrapper.d.ts +39 -0
  394. package/dist/utils/nodeWrapper.js +62 -0
  395. package/dist/utils/performanceUtils.d.ts +30 -0
  396. package/dist/utils/performanceUtils.js +108 -0
  397. package/dist/utils/sanitize.d.ts +19 -0
  398. package/dist/utils/sanitize.js +31 -0
  399. package/dist/utils/uischema.d.ts +52 -0
  400. package/dist/utils/uischema.js +88 -0
  401. package/dist/utils/validation.d.ts +29 -0
  402. package/dist/utils/validation.js +39 -0
  403. package/package.json +292 -0
@@ -0,0 +1,548 @@
1
+ /**
2
+ * Centralized color management for FlowDrop
3
+ * Ensures consistent category colors across sidebar and canvas
4
+ * Uses BEM syntax for CSS classes
5
+ */
6
+ import { getPortCompatibilityChecker } from './connections.js';
7
+ import { getCategoryColor as getCategoryColorFromStore } from '../stores/categoriesStore.svelte.js';
8
+ import { logger } from './logger.js';
9
+ /**
10
+ * Category color mapping to design tokens (CSS variables)
11
+ * Uses --fd-node-* tokens from tokens.css
12
+ * These serve as static defaults; the categories store provides dynamic overrides.
13
+ */
14
+ export const CATEGORY_COLOR_TOKENS = {
15
+ triggers: 'var(--fd-node-cyan)',
16
+ inputs: 'var(--fd-node-emerald)',
17
+ outputs: 'var(--fd-node-blue)',
18
+ prompts: 'var(--fd-node-amber)',
19
+ models: 'var(--fd-node-indigo)',
20
+ processing: 'var(--fd-node-teal)',
21
+ logic: 'var(--fd-node-purple)',
22
+ data: 'var(--fd-node-orange)',
23
+ helpers: 'var(--fd-node-slate)',
24
+ tools: 'var(--fd-node-amber)',
25
+ 'vector stores': 'var(--fd-node-emerald)',
26
+ embeddings: 'var(--fd-node-indigo)',
27
+ memories: 'var(--fd-node-blue)',
28
+ agents: 'var(--fd-node-teal)',
29
+ ai: 'var(--fd-node-purple)',
30
+ interrupts: 'var(--fd-node-red)',
31
+ bundles: 'var(--fd-node-slate)'
32
+ };
33
+ /**
34
+ * Default data type colors for fallback when port configuration is not available
35
+ * Uses --fd-node-* tokens from tokens.css
36
+ */
37
+ const DEFAULT_DATA_TYPE_COLORS = {
38
+ string: 'var(--fd-node-emerald)',
39
+ text: 'var(--fd-node-emerald)',
40
+ number: 'var(--fd-node-blue)',
41
+ integer: 'var(--fd-node-blue)',
42
+ float: 'var(--fd-node-blue)',
43
+ boolean: 'var(--fd-node-purple)',
44
+ array: 'var(--fd-node-amber)',
45
+ list: 'var(--fd-node-amber)',
46
+ object: 'var(--fd-node-orange)',
47
+ json: 'var(--fd-node-orange)',
48
+ mixed: 'var(--fd-node-orange)',
49
+ file: 'var(--fd-node-red)',
50
+ document: 'var(--fd-node-red)',
51
+ image: 'var(--fd-node-pink)',
52
+ picture: 'var(--fd-node-pink)',
53
+ audio: 'var(--fd-node-indigo)',
54
+ sound: 'var(--fd-node-indigo)',
55
+ video: 'var(--fd-node-teal)',
56
+ movie: 'var(--fd-node-teal)',
57
+ url: 'var(--fd-node-cyan)',
58
+ email: 'var(--fd-node-cyan)',
59
+ date: 'var(--fd-node-lime)',
60
+ datetime: 'var(--fd-node-lime)',
61
+ time: 'var(--fd-node-lime)',
62
+ tool: 'var(--fd-node-amber)',
63
+ trigger: 'var(--fd-edge-trigger)',
64
+ branch: 'var(--fd-node-purple)'
65
+ };
66
+ /**
67
+ * Get the design token for a category color.
68
+ * Checks the categories store first (which includes API overrides),
69
+ * then falls back to the static CATEGORY_COLOR_TOKENS map, then to slate.
70
+ */
71
+ export function getCategoryColorToken(category) {
72
+ return getCategoryColorFromStore(category);
73
+ }
74
+ /**
75
+ * Get the reference color token for a data type (configurable version)
76
+ */
77
+ export function getDataTypeColorToken(dataType) {
78
+ try {
79
+ const checker = getPortCompatibilityChecker();
80
+ const config = checker.getDataTypeConfig(dataType);
81
+ if (config?.color) {
82
+ return config.color;
83
+ }
84
+ }
85
+ catch {
86
+ // Fallback to static color mapping if port checker not initialized
87
+ }
88
+ return DEFAULT_DATA_TYPE_COLORS[dataType.toLowerCase()] || 'var(--fd-node-slate)';
89
+ }
90
+ /**
91
+ * Get data type configuration from port config
92
+ */
93
+ export function getDataTypeConfig(dataType) {
94
+ try {
95
+ const checker = getPortCompatibilityChecker();
96
+ return checker.getDataTypeConfig(dataType);
97
+ }
98
+ catch (error) {
99
+ logger.warn('Port compatibility checker not initialized:', error);
100
+ return undefined;
101
+ }
102
+ }
103
+ /**
104
+ * Get all available data types from port configuration
105
+ */
106
+ export function getAvailableDataTypes() {
107
+ try {
108
+ const checker = getPortCompatibilityChecker();
109
+ return checker.getEnabledDataTypes();
110
+ }
111
+ catch (error) {
112
+ logger.warn('Port compatibility checker not initialized:', error);
113
+ return [];
114
+ }
115
+ }
116
+ /**
117
+ * Default colors for fallback cases
118
+ */
119
+ export const DEFAULT_COLORS = {
120
+ background: 'flowdrop-color--base-light',
121
+ accent: 'flowdrop-color--neutral',
122
+ text: 'flowdrop-color--base-text',
123
+ border: 'flowdrop-color--base-border'
124
+ };
125
+ /**
126
+ * Get category colors
127
+ * @param category - The node category
128
+ * @returns The color configuration for the category
129
+ */
130
+ export function getCategoryColors(category) {
131
+ return getCategoryColorFromStore(category);
132
+ }
133
+ /**
134
+ * Get category background color
135
+ * @param category - The node category
136
+ * @returns The background color class
137
+ */
138
+ export function getCategoryBackground(category) {
139
+ return getCategoryColors(category);
140
+ }
141
+ /**
142
+ * Get category accent color
143
+ * @param category - The node category
144
+ * @returns The accent color class
145
+ */
146
+ export function getCategoryAccent(category) {
147
+ return getCategoryColors(category);
148
+ }
149
+ /**
150
+ * Get category text color
151
+ * @param category - The node category
152
+ * @returns The text color class
153
+ */
154
+ export function getCategoryText(category) {
155
+ return getCategoryColors(category);
156
+ }
157
+ /**
158
+ * Get category border color
159
+ * @param category - The node category
160
+ * @returns The border color class
161
+ */
162
+ export function getCategoryBorder(category) {
163
+ return getCategoryColors(category);
164
+ }
165
+ /**
166
+ * Get node colors based on category and state
167
+ * @param category - The node category
168
+ * @param isError - Whether the node is in error state
169
+ * @param isProcessing - Whether the node is processing
170
+ * @param isSelected - Whether the node is selected
171
+ * @returns The color configuration object
172
+ */
173
+ export function getNodeColors(category, isError = false, isProcessing = false, isSelected = false) {
174
+ const baseColor = getCategoryColors(category);
175
+ if (isError) {
176
+ return {
177
+ background: 'var(--fd-error-muted)',
178
+ accent: 'var(--fd-error)',
179
+ text: 'var(--fd-error-hover)',
180
+ border: 'var(--fd-error)'
181
+ };
182
+ }
183
+ if (isProcessing) {
184
+ return {
185
+ background: 'var(--fd-info-muted)',
186
+ accent: 'var(--fd-info)',
187
+ text: 'var(--fd-primary-hover)',
188
+ border: 'var(--fd-primary)'
189
+ };
190
+ }
191
+ if (isSelected) {
192
+ return {
193
+ background: 'var(--fd-accent-muted)',
194
+ accent: 'var(--fd-accent)',
195
+ text: 'var(--fd-accent-hover)',
196
+ border: 'var(--fd-accent)'
197
+ };
198
+ }
199
+ return {
200
+ background: baseColor,
201
+ accent: baseColor,
202
+ text: 'var(--fd-foreground)',
203
+ border: baseColor
204
+ };
205
+ }
206
+ /**
207
+ * Get node background color
208
+ * @param category - The node category
209
+ * @param isError - Whether the node is in error state
210
+ * @param isProcessing - Whether the node is processing
211
+ * @param isSelected - Whether the node is selected
212
+ * @returns The background color
213
+ */
214
+ export function getNodeBackground(category, isError = false, isProcessing = false, isSelected = false) {
215
+ return getNodeColors(category, isError, isProcessing, isSelected).background;
216
+ }
217
+ /**
218
+ * Get node accent color
219
+ * @param category - The node category
220
+ * @param isError - Whether the node is in error state
221
+ * @param isProcessing - Whether the node is processing
222
+ * @param isSelected - Whether the node is selected
223
+ * @returns The accent color
224
+ */
225
+ export function getNodeAccent(category, isError = false, isProcessing = false, isSelected = false) {
226
+ return getNodeColors(category, isError, isProcessing, isSelected).accent;
227
+ }
228
+ /**
229
+ * Get node text color
230
+ * @param category - The node category
231
+ * @param isError - Whether the node is in error state
232
+ * @param isProcessing - Whether the node is processing
233
+ * @param isSelected - Whether the node is selected
234
+ * @returns The text color
235
+ */
236
+ export function getNodeText(category, isError = false, isProcessing = false, isSelected = false) {
237
+ return getNodeColors(category, isError, isProcessing, isSelected).text;
238
+ }
239
+ /**
240
+ * Get node border color
241
+ * @param category - The node category
242
+ * @param isError - Whether the node is in error state
243
+ * @param isProcessing - Whether the node is processing
244
+ * @param isSelected - Whether the node is selected
245
+ * @returns The border color
246
+ */
247
+ export function getNodeBorder(category, isError = false, isProcessing = false, isSelected = false) {
248
+ return getNodeColors(category, isError, isProcessing, isSelected).border;
249
+ }
250
+ /**
251
+ * Get data type color
252
+ * @param dataType - The data type
253
+ * @returns The color for the data type
254
+ */
255
+ export function getDataTypeColor(dataType) {
256
+ return getDataTypeColorToken(dataType);
257
+ }
258
+ /**
259
+ * Parse typed array notation and get display information
260
+ * @param dataType - The data type (e.g., "string[]", "number", "object[]")
261
+ * @returns Object with display information
262
+ */
263
+ export function parseDataTypeDisplay(dataType) {
264
+ // Check if it's a typed array (ends with [])
265
+ const isArray = dataType.endsWith('[]');
266
+ if (isArray) {
267
+ const elementType = dataType.slice(0, -2); // Remove []
268
+ const config = getDataTypeConfig(dataType);
269
+ return {
270
+ baseType: dataType,
271
+ isArray: true,
272
+ displayName: config?.name || `${elementType}[]`,
273
+ elementType: elementType
274
+ };
275
+ }
276
+ else {
277
+ const config = getDataTypeConfig(dataType);
278
+ return {
279
+ baseType: dataType,
280
+ isArray: false,
281
+ displayName: config?.name || dataType
282
+ };
283
+ }
284
+ }
285
+ /**
286
+ * Get formatted display text for a data type
287
+ * @param dataType - The data type
288
+ * @returns Formatted display text
289
+ */
290
+ export function getDataTypeDisplayText(dataType) {
291
+ const parsed = parseDataTypeDisplay(dataType);
292
+ return parsed.displayName;
293
+ }
294
+ /**
295
+ * Check if a data type represents an array
296
+ * @param dataType - The data type
297
+ * @returns True if it's an array type
298
+ */
299
+ export function isArrayDataType(dataType) {
300
+ return dataType.endsWith('[]') || dataType === 'array' || dataType === 'list';
301
+ }
302
+ /**
303
+ * Get the element type from an array data type
304
+ * @param arrayDataType - The array data type (e.g., "string[]")
305
+ * @returns The element type (e.g., "string") or null if not an array
306
+ */
307
+ export function getArrayElementType(arrayDataType) {
308
+ if (arrayDataType.endsWith('[]')) {
309
+ return arrayDataType.slice(0, -2);
310
+ }
311
+ return null;
312
+ }
313
+ /**
314
+ * Parse a hex color string to RGB components
315
+ * @param hex - Hex color string (e.g., "#f59e0b" or "f59e0b")
316
+ * @returns Object with r, g, b values (0-255) or null if invalid
317
+ */
318
+ export function hexToRgb(hex) {
319
+ const cleanHex = hex.replace(/^#/, '');
320
+ if (!/^[0-9A-Fa-f]{6}$/.test(cleanHex)) {
321
+ return null;
322
+ }
323
+ const r = parseInt(cleanHex.substring(0, 2), 16);
324
+ const g = parseInt(cleanHex.substring(2, 4), 16);
325
+ const b = parseInt(cleanHex.substring(4, 6), 16);
326
+ return { r, g, b };
327
+ }
328
+ /**
329
+ * Calculate the relative luminance of a color
330
+ * Based on WCAG 2.1 guidelines for contrast calculations
331
+ * @param r - Red component (0-255)
332
+ * @param g - Green component (0-255)
333
+ * @param b - Blue component (0-255)
334
+ * @returns Relative luminance value (0-1)
335
+ */
336
+ export function getRelativeLuminance(r, g, b) {
337
+ const toLinear = (value) => {
338
+ const srgb = value / 255;
339
+ return srgb <= 0.03928 ? srgb / 12.92 : Math.pow((srgb + 0.055) / 1.055, 2.4);
340
+ };
341
+ return 0.2126 * toLinear(r) + 0.7152 * toLinear(g) + 0.0722 * toLinear(b);
342
+ }
343
+ /**
344
+ * Determine if a background color is considered "light" (needs dark text)
345
+ * @param hex - Hex color string
346
+ * @returns True if the color is light and needs dark text for contrast
347
+ */
348
+ export function isLightColor(hex) {
349
+ const rgb = hexToRgb(hex);
350
+ if (!rgb) {
351
+ return false; // Default to dark background assumption
352
+ }
353
+ const luminance = getRelativeLuminance(rgb.r, rgb.g, rgb.b);
354
+ // WCAG recommends contrast ratio of 4.5:1 for normal text
355
+ // Luminance > 0.179 generally requires dark text for good contrast
356
+ return luminance > 0.179;
357
+ }
358
+ /**
359
+ * Get the appropriate contrast text color (black or white) for a background
360
+ * @param backgroundColor - Hex color string of the background
361
+ * @returns CSS color value for text that provides good contrast
362
+ */
363
+ export function getContrastTextColor(backgroundColor) {
364
+ return isLightColor(backgroundColor) ? '#18181b' : '#ffffff';
365
+ }
366
+ /**
367
+ * Mapping of CSS variable tokens to their resolved hex values
368
+ * Used for contrast calculations when working with design tokens
369
+ */
370
+ const TOKEN_TO_HEX = {
371
+ 'var(--fd-node-cyan)': '#06b6d4',
372
+ 'var(--fd-node-emerald)': '#10b981',
373
+ 'var(--fd-node-blue)': '#3b82f6',
374
+ 'var(--fd-node-amber)': '#f59e0b',
375
+ 'var(--fd-node-indigo)': '#6366f1',
376
+ 'var(--fd-node-teal)': '#14b8a6',
377
+ 'var(--fd-node-purple)': '#8b5cf6',
378
+ 'var(--fd-node-orange)': '#f97316',
379
+ 'var(--fd-node-slate)': '#64748b',
380
+ 'var(--fd-node-red)': '#ef4444',
381
+ 'var(--fd-node-pink)': '#ec4899',
382
+ 'var(--fd-node-lime)': '#84cc16'
383
+ };
384
+ /**
385
+ * Resolve a CSS variable token to its hex value
386
+ * @param token - CSS variable token (e.g., "var(--fd-node-amber)")
387
+ * @returns Hex color value or the original value if not a known token
388
+ */
389
+ export function resolveColorToken(token) {
390
+ return TOKEN_TO_HEX[token] || token;
391
+ }
392
+ /**
393
+ * Get the appropriate contrast text color for a data type badge
394
+ * @param dataType - The data type (e.g., "array", "string", "number")
395
+ * @returns CSS color value for text that provides good contrast on the data type's background
396
+ */
397
+ export function getContrastTextColorForDataType(dataType) {
398
+ const colorToken = getDataTypeColorToken(dataType);
399
+ const hexColor = resolveColorToken(colorToken);
400
+ return getContrastTextColor(hexColor);
401
+ }
402
+ /**
403
+ * Get the appropriate contrast text color for a category badge
404
+ * @param category - The node category
405
+ * @returns CSS color value for text that provides good contrast on the category's background
406
+ */
407
+ export function getContrastTextColorForCategory(category) {
408
+ const colorToken = getCategoryColorToken(category);
409
+ const hexColor = resolveColorToken(colorToken);
410
+ return getContrastTextColor(hexColor);
411
+ }
412
+ /**
413
+ * Get a semi-transparent tinted background color for ports
414
+ * Creates a cohesive look with the icon wrapper styling
415
+ * @param dataType - The data type
416
+ * @param opacity - Opacity percentage (default 25%)
417
+ * @returns CSS color-mix expression for the tinted background
418
+ */
419
+ export function getPortBackgroundColor(dataType, opacity = 25) {
420
+ const colorToken = getDataTypeColorToken(dataType);
421
+ return `color-mix(in srgb, ${colorToken} ${opacity}%, transparent)`;
422
+ }
423
+ /**
424
+ * Get the border color for ports (solid data type color)
425
+ * @param dataType - The data type
426
+ * @returns CSS color value for the port border
427
+ */
428
+ export function getPortBorderColor(dataType) {
429
+ return getDataTypeColorToken(dataType);
430
+ }
431
+ /**
432
+ * Convert RGB components to hex color string
433
+ * @param r - Red component (0-255)
434
+ * @param g - Green component (0-255)
435
+ * @param b - Blue component (0-255)
436
+ * @returns Hex color string with # prefix
437
+ */
438
+ export function rgbToHex(r, g, b) {
439
+ const toHex = (value) => {
440
+ const clamped = Math.max(0, Math.min(255, Math.round(value)));
441
+ return clamped.toString(16).padStart(2, '0');
442
+ };
443
+ return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
444
+ }
445
+ /**
446
+ * Generate a light tint of a color (similar to Tailwind's -50 shade)
447
+ * Creates a very light background-friendly version of the color for light mode
448
+ * @param hex - Base hex color string
449
+ * @returns Light tint hex color string
450
+ */
451
+ export function getLightTint(hex) {
452
+ const rgb = hexToRgb(hex);
453
+ if (!rgb) {
454
+ return '#fffbeb'; // Fallback to amber-50
455
+ }
456
+ // Mix with white at 95% to create a very light tint
457
+ const mixRatio = 0.95;
458
+ const r = rgb.r + (255 - rgb.r) * mixRatio;
459
+ const g = rgb.g + (255 - rgb.g) * mixRatio;
460
+ const b = rgb.b + (255 - rgb.b) * mixRatio;
461
+ return rgbToHex(r, g, b);
462
+ }
463
+ /**
464
+ * Generate a dark tint of a color for dark mode backgrounds
465
+ * Creates a subtle, muted version of the color that works well on dark backgrounds
466
+ * @param hex - Base hex color string
467
+ * @param opacity - Optional opacity for the color overlay (default 0.15)
468
+ * @returns Dark tint hex color string
469
+ */
470
+ export function getDarkTint(hex, opacity = 0.15) {
471
+ const rgb = hexToRgb(hex);
472
+ if (!rgb) {
473
+ return '#2a2518'; // Fallback dark amber tint
474
+ }
475
+ // Mix with dark background (#1a1a1e) to create a subtle dark tint
476
+ const darkBg = { r: 26, g: 26, b: 30 };
477
+ const r = darkBg.r + (rgb.r - darkBg.r) * opacity;
478
+ const g = darkBg.g + (rgb.g - darkBg.g) * opacity;
479
+ const b = darkBg.b + (rgb.b - darkBg.b) * opacity;
480
+ return rgbToHex(r, g, b);
481
+ }
482
+ /**
483
+ * Generate a border tint of a color (similar to Tailwind's -300 shade)
484
+ * Creates a medium-light version suitable for borders in light mode
485
+ * @param hex - Base hex color string
486
+ * @returns Border tint hex color string
487
+ */
488
+ export function getBorderTint(hex) {
489
+ const rgb = hexToRgb(hex);
490
+ if (!rgb) {
491
+ return '#fcd34d'; // Fallback to amber-300
492
+ }
493
+ // Mix with white at 60% to create a medium-light tint
494
+ const mixRatio = 0.6;
495
+ const r = rgb.r + (255 - rgb.r) * mixRatio;
496
+ const g = rgb.g + (255 - rgb.g) * mixRatio;
497
+ const b = rgb.b + (255 - rgb.b) * mixRatio;
498
+ return rgbToHex(r, g, b);
499
+ }
500
+ /**
501
+ * Generate a dark border tint of a color for dark mode
502
+ * Creates a medium-dark version suitable for borders in dark mode
503
+ * @param hex - Base hex color string
504
+ * @returns Dark border tint hex color string
505
+ */
506
+ export function getDarkBorderTint(hex) {
507
+ const rgb = hexToRgb(hex);
508
+ if (!rgb) {
509
+ return '#5c4a1e'; // Fallback dark amber border
510
+ }
511
+ // Mix with dark background to create a muted but visible border
512
+ const darkBg = { r: 26, g: 26, b: 30 };
513
+ const mixRatio = 0.35;
514
+ const r = darkBg.r + (rgb.r - darkBg.r) * mixRatio;
515
+ const g = darkBg.g + (rgb.g - darkBg.g) * mixRatio;
516
+ const b = darkBg.b + (rgb.b - darkBg.b) * mixRatio;
517
+ return rgbToHex(r, g, b);
518
+ }
519
+ /**
520
+ * Generate color variants for theming a component
521
+ * Returns variants for both light and dark modes
522
+ * @param baseColor - Base hex color string
523
+ * @returns Object with base, light, border, darkLight, and darkBorder color variants
524
+ */
525
+ export function getColorVariants(baseColor) {
526
+ return {
527
+ base: baseColor,
528
+ light: getLightTint(baseColor),
529
+ border: getBorderTint(baseColor),
530
+ darkLight: getDarkTint(baseColor),
531
+ darkBorder: getDarkBorderTint(baseColor)
532
+ };
533
+ }
534
+ /**
535
+ * Get theme-aware color variants
536
+ * Returns the appropriate light or dark variants based on the theme
537
+ * @param baseColor - Base hex color string
538
+ * @param isDarkMode - Whether dark mode is active
539
+ * @returns Object with base, background, and border colors appropriate for the theme
540
+ */
541
+ export function getThemeAwareColorVariants(baseColor, isDarkMode) {
542
+ const variants = getColorVariants(baseColor);
543
+ return {
544
+ base: variants.base,
545
+ background: isDarkMode ? variants.darkLight : variants.light,
546
+ border: isDarkMode ? variants.darkBorder : variants.border
547
+ };
548
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Configuration utilities for FlowDrop Editor
3
+ */
4
+ import type { WorkflowEditorConfig, EditorFeatures, UIConfig, APIConfig, ExecutionConfig, StorageConfig } from '../types/config.js';
5
+ import type { EndpointConfig } from '../config/endpoints.js';
6
+ /**
7
+ * Create default editor features configuration
8
+ */
9
+ export declare function createDefaultFeatures(): EditorFeatures;
10
+ /**
11
+ * Create default UI configuration
12
+ */
13
+ export declare function createDefaultUIConfig(): UIConfig;
14
+ /**
15
+ * Create default API configuration
16
+ */
17
+ export declare function createDefaultAPIConfig(): APIConfig;
18
+ /**
19
+ * Create default execution configuration
20
+ */
21
+ export declare function createDefaultExecutionConfig(): ExecutionConfig;
22
+ /**
23
+ * Create default storage configuration
24
+ */
25
+ export declare function createDefaultStorageConfig(): StorageConfig;
26
+ /**
27
+ * Create default workflow editor configuration
28
+ */
29
+ export declare function createDefaultConfig(endpointConfig?: EndpointConfig): WorkflowEditorConfig;
30
+ /**
31
+ * Merge configuration with defaults
32
+ */
33
+ export declare function mergeConfig(userConfig: Partial<WorkflowEditorConfig>, defaultConfig: WorkflowEditorConfig): WorkflowEditorConfig;
34
+ /**
35
+ * Validate configuration
36
+ */
37
+ export declare function validateConfig(config: WorkflowEditorConfig): string[];