@flowdrop/flowdrop 1.4.0 → 1.6.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 (441) hide show
  1. package/README.md +94 -51
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +27 -47
  4. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
  5. package/dist/adapters/agentspec/AgentSpecAdapter.js +122 -133
  6. package/dist/adapters/agentspec/agentAdapter.d.ts +2 -2
  7. package/dist/adapters/agentspec/agentAdapter.js +10 -10
  8. package/dist/adapters/agentspec/autoLayout.d.ts +52 -6
  9. package/dist/adapters/agentspec/autoLayout.js +118 -23
  10. package/dist/adapters/agentspec/componentTypeDefaults.d.ts +1 -1
  11. package/dist/adapters/agentspec/componentTypeDefaults.js +120 -120
  12. package/dist/adapters/agentspec/defaultNodeTypes.d.ts +2 -2
  13. package/dist/adapters/agentspec/defaultNodeTypes.js +307 -307
  14. package/dist/adapters/agentspec/index.d.ts +10 -10
  15. package/dist/adapters/agentspec/index.js +6 -6
  16. package/dist/adapters/agentspec/validator.d.ts +2 -2
  17. package/dist/adapters/agentspec/validator.js +20 -22
  18. package/dist/api/enhanced-client.d.ts +3 -3
  19. package/dist/api/enhanced-client.js +72 -73
  20. package/dist/chat/commandClassifier.d.ts +19 -0
  21. package/dist/chat/commandClassifier.js +30 -0
  22. package/dist/chat/index.d.ts +27 -0
  23. package/dist/chat/index.js +32 -0
  24. package/dist/chat/responseParser.d.ts +21 -0
  25. package/dist/chat/responseParser.js +91 -0
  26. package/dist/commands/batch.d.ts +18 -0
  27. package/dist/commands/batch.js +54 -0
  28. package/dist/commands/executor.d.ts +37 -0
  29. package/dist/commands/executor.js +1133 -0
  30. package/dist/commands/index.d.ts +14 -0
  31. package/dist/commands/index.js +17 -0
  32. package/dist/commands/parser.d.ts +16 -0
  33. package/dist/commands/parser.js +295 -0
  34. package/dist/commands/positioner.d.ts +19 -0
  35. package/dist/commands/positioner.js +33 -0
  36. package/dist/commands/storeIntegration.svelte.d.ts +16 -0
  37. package/dist/commands/storeIntegration.svelte.js +67 -0
  38. package/dist/commands/types.d.ts +343 -0
  39. package/dist/commands/types.js +45 -0
  40. package/dist/components/App.svelte +522 -237
  41. package/dist/components/App.svelte.d.ts +11 -8
  42. package/dist/components/CanvasBanner.stories.svelte +10 -16
  43. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  44. package/dist/components/CanvasBanner.svelte +2 -2
  45. package/dist/components/CanvasBanner.svelte.d.ts +1 -1
  46. package/dist/components/CanvasController.svelte +37 -0
  47. package/dist/components/CanvasController.svelte.d.ts +32 -0
  48. package/dist/components/ConfigForm.svelte +118 -256
  49. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  50. package/dist/components/ConfigMappingRow.svelte +128 -0
  51. package/dist/components/ConfigMappingRow.svelte.d.ts +8 -0
  52. package/dist/components/ConfigModal.svelte +3 -3
  53. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  54. package/dist/components/ConfigPanel.stories.svelte +19 -19
  55. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  56. package/dist/components/ConfigPanel.svelte +57 -19
  57. package/dist/components/ConfigPanel.svelte.d.ts +3 -1
  58. package/dist/components/ConnectionLine.svelte +4 -4
  59. package/dist/components/EdgeRefresher.svelte +1 -1
  60. package/dist/components/FlowDropEdge.stories.svelte +110 -110
  61. package/dist/components/FlowDropEdge.svelte +11 -19
  62. package/dist/components/FlowDropEdge.svelte.d.ts +1 -1
  63. package/dist/components/FlowDropZone.svelte +6 -9
  64. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  65. package/dist/components/LoadingSpinner.stories.svelte +13 -13
  66. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  67. package/dist/components/LoadingSpinner.svelte +3 -3
  68. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  69. package/dist/components/Logo.stories.svelte +4 -4
  70. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  71. package/dist/components/Logo.svelte +3 -9
  72. package/dist/components/LogsSidebar.svelte +46 -53
  73. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  74. package/dist/components/MarkdownDisplay.stories.svelte +10 -14
  75. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  76. package/dist/components/MarkdownDisplay.svelte +4 -6
  77. package/dist/components/Navbar.stories.svelte +19 -19
  78. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  79. package/dist/components/Navbar.svelte +28 -49
  80. package/dist/components/Navbar.svelte.d.ts +2 -2
  81. package/dist/components/NodeSidebar.svelte +55 -135
  82. package/dist/components/NodeSidebar.svelte.d.ts +1 -1
  83. package/dist/components/NodeStatusOverlay.stories.svelte +19 -31
  84. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  85. package/dist/components/NodeStatusOverlay.svelte +40 -55
  86. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  87. package/dist/components/NodeSwapPicker.svelte +493 -0
  88. package/dist/components/NodeSwapPicker.svelte.d.ts +16 -0
  89. package/dist/components/PipelineStatus.svelte +63 -89
  90. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  91. package/dist/components/PortCoordinateTracker.svelte +5 -7
  92. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  93. package/dist/components/PortMappingRow.svelte +205 -0
  94. package/dist/components/PortMappingRow.svelte.d.ts +12 -0
  95. package/dist/components/ReadOnlyDetails.svelte +1 -1
  96. package/dist/components/SchemaForm.stories.svelte +53 -53
  97. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  98. package/dist/components/SchemaForm.svelte +24 -51
  99. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  100. package/dist/components/SettingsModal.svelte +6 -9
  101. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  102. package/dist/components/SettingsPanel.svelte +138 -158
  103. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  104. package/dist/components/StatusIcon.stories.svelte +16 -29
  105. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  106. package/dist/components/StatusIcon.svelte +19 -19
  107. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  108. package/dist/components/StatusLabel.stories.svelte +8 -8
  109. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  110. package/dist/components/SwapMappingEditor.svelte +529 -0
  111. package/dist/components/SwapMappingEditor.svelte.d.ts +12 -0
  112. package/dist/components/ThemeToggle.stories.svelte +10 -10
  113. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  114. package/dist/components/ThemeToggle.svelte +22 -33
  115. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  116. package/dist/components/UniversalNode.svelte +29 -41
  117. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  118. package/dist/components/WorkflowEditor.svelte +210 -170
  119. package/dist/components/WorkflowEditor.svelte.d.ts +12 -4
  120. package/dist/components/chat/AIChatPanel.svelte +797 -0
  121. package/dist/components/chat/AIChatPanel.svelte.d.ts +13 -0
  122. package/dist/components/chat/CommandPreview.svelte +234 -0
  123. package/dist/components/chat/CommandPreview.svelte.d.ts +9 -0
  124. package/dist/components/console/CommandConsole.stories.svelte +111 -0
  125. package/dist/components/console/CommandConsole.stories.svelte.d.ts +27 -0
  126. package/dist/components/console/CommandConsole.svelte +263 -0
  127. package/dist/components/console/CommandConsole.svelte.d.ts +11 -0
  128. package/dist/components/console/ConsoleAutocomplete.svelte +142 -0
  129. package/dist/components/console/ConsoleAutocomplete.svelte.d.ts +21 -0
  130. package/dist/components/console/ConsoleInput.svelte +771 -0
  131. package/dist/components/console/ConsoleInput.svelte.d.ts +16 -0
  132. package/dist/components/console/ConsoleOutput.svelte +116 -0
  133. package/dist/components/console/ConsoleOutput.svelte.d.ts +11 -0
  134. package/dist/components/console/formatters.d.ts +26 -0
  135. package/dist/components/console/formatters.js +116 -0
  136. package/dist/components/form/FormArray.svelte +75 -132
  137. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  138. package/dist/components/form/FormAutocomplete.svelte +65 -108
  139. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  140. package/dist/components/form/FormCheckboxGroup.stories.svelte +13 -16
  141. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  142. package/dist/components/form/FormCheckboxGroup.svelte +2 -2
  143. package/dist/components/form/FormCodeEditor.svelte +42 -56
  144. package/dist/components/form/FormField.svelte +79 -90
  145. package/dist/components/form/FormField.svelte.d.ts +2 -2
  146. package/dist/components/form/FormFieldLight.svelte +72 -88
  147. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  148. package/dist/components/form/FormFieldWrapper.stories.svelte +14 -14
  149. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  150. package/dist/components/form/FormFieldWrapper.svelte +2 -9
  151. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  152. package/dist/components/form/FormFieldset.svelte +3 -3
  153. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  154. package/dist/components/form/FormMarkdownEditor.svelte +123 -156
  155. package/dist/components/form/FormNumberField.stories.svelte +18 -18
  156. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  157. package/dist/components/form/FormNumberField.svelte +6 -6
  158. package/dist/components/form/FormRangeField.stories.svelte +13 -13
  159. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  160. package/dist/components/form/FormRangeField.svelte +4 -12
  161. package/dist/components/form/FormSelect.stories.svelte +21 -21
  162. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  163. package/dist/components/form/FormSelect.svelte +5 -5
  164. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  165. package/dist/components/form/FormTemplateEditor.svelte +126 -175
  166. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  167. package/dist/components/form/FormTextField.stories.svelte +17 -23
  168. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  169. package/dist/components/form/FormTextField.svelte +4 -4
  170. package/dist/components/form/FormTextarea.stories.svelte +18 -21
  171. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  172. package/dist/components/form/FormTextarea.svelte +4 -4
  173. package/dist/components/form/FormToggle.stories.svelte +13 -16
  174. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  175. package/dist/components/form/FormToggle.svelte +3 -3
  176. package/dist/components/form/FormUISchemaRenderer.svelte +12 -19
  177. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  178. package/dist/components/form/index.d.ts +19 -19
  179. package/dist/components/form/index.js +18 -18
  180. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  181. package/dist/components/form/templateAutocomplete.js +55 -64
  182. package/dist/components/form/types.d.ts +6 -6
  183. package/dist/components/form/types.js +4 -9
  184. package/dist/components/icons/AlertCircleIcon.svelte +1 -6
  185. package/dist/components/icons/CogIcon.svelte +1 -6
  186. package/dist/components/interrupt/ChoicePrompt.stories.svelte +27 -27
  187. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  188. package/dist/components/interrupt/ChoicePrompt.svelte +17 -41
  189. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  190. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +17 -17
  191. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  192. package/dist/components/interrupt/ConfirmationPrompt.svelte +10 -16
  193. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  194. package/dist/components/interrupt/FormPrompt.svelte +10 -15
  195. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  196. package/dist/components/interrupt/InterruptBubble.svelte +87 -121
  197. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  198. package/dist/components/interrupt/ReviewPrompt.stories.svelte +37 -37
  199. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  200. package/dist/components/interrupt/ReviewPrompt.svelte +55 -75
  201. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  202. package/dist/components/interrupt/TextInputPrompt.stories.svelte +16 -17
  203. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  204. package/dist/components/interrupt/TextInputPrompt.svelte +13 -18
  205. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  206. package/dist/components/interrupt/index.d.ts +6 -5
  207. package/dist/components/interrupt/index.js +6 -5
  208. package/dist/components/layouts/MainLayout.svelte +46 -84
  209. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  210. package/dist/components/nodes/GatewayNode.stories.svelte +64 -65
  211. package/dist/components/nodes/GatewayNode.svelte +37 -70
  212. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  213. package/dist/components/nodes/IdeaNode.stories.svelte +25 -26
  214. package/dist/components/nodes/IdeaNode.svelte +22 -36
  215. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  216. package/dist/components/nodes/NotesNode.stories.svelte +37 -38
  217. package/dist/components/nodes/NotesNode.svelte +28 -39
  218. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  219. package/dist/components/nodes/SimpleNode.stories.svelte +137 -138
  220. package/dist/components/nodes/SimpleNode.svelte +44 -74
  221. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  222. package/dist/components/nodes/SquareNode.stories.svelte +75 -75
  223. package/dist/components/nodes/SquareNode.svelte +42 -68
  224. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  225. package/dist/components/nodes/TerminalNode.stories.svelte +10 -10
  226. package/dist/components/nodes/TerminalNode.svelte +74 -112
  227. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  228. package/dist/components/nodes/ToolNode.stories.svelte +115 -116
  229. package/dist/components/nodes/ToolNode.svelte +31 -64
  230. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  231. package/dist/components/nodes/WorkflowNode.stories.svelte +84 -89
  232. package/dist/components/nodes/WorkflowNode.svelte +50 -103
  233. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  234. package/dist/components/playground/ChatPanel.svelte +47 -103
  235. package/dist/components/playground/ExecutionLogs.svelte +45 -68
  236. package/dist/components/playground/InputCollector.svelte +32 -51
  237. package/dist/components/playground/MessageBubble.stories.svelte +25 -25
  238. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  239. package/dist/components/playground/MessageBubble.svelte +54 -70
  240. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  241. package/dist/components/playground/Playground.svelte +60 -91
  242. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  243. package/dist/components/playground/PlaygroundModal.svelte +8 -12
  244. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  245. package/dist/components/playground/SessionManager.svelte +34 -40
  246. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  247. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  248. package/dist/config/agentSpecEndpoints.js +20 -20
  249. package/dist/config/constants.js +2 -2
  250. package/dist/config/defaultCategories.d.ts +1 -1
  251. package/dist/config/defaultCategories.js +86 -86
  252. package/dist/config/defaultPortConfig.d.ts +1 -1
  253. package/dist/config/defaultPortConfig.js +144 -144
  254. package/dist/config/endpoints.d.ts +12 -4
  255. package/dist/config/endpoints.js +70 -65
  256. package/dist/config/runtimeConfig.d.ts +2 -2
  257. package/dist/config/runtimeConfig.js +8 -8
  258. package/dist/core/index.d.ts +68 -63
  259. package/dist/core/index.js +44 -35
  260. package/dist/display/index.d.ts +2 -2
  261. package/dist/display/index.js +2 -2
  262. package/dist/editor/index.d.ts +64 -62
  263. package/dist/editor/index.js +57 -55
  264. package/dist/form/code.d.ts +5 -5
  265. package/dist/form/code.js +14 -14
  266. package/dist/form/fieldRegistry.d.ts +3 -3
  267. package/dist/form/fieldRegistry.js +9 -11
  268. package/dist/form/full.d.ts +8 -8
  269. package/dist/form/full.js +9 -9
  270. package/dist/form/index.d.ts +18 -18
  271. package/dist/form/index.js +16 -16
  272. package/dist/form/markdown.d.ts +4 -4
  273. package/dist/form/markdown.js +8 -8
  274. package/dist/helpers/proximityConnect.d.ts +3 -3
  275. package/dist/helpers/proximityConnect.js +40 -35
  276. package/dist/helpers/workflowEditorHelper.d.ts +8 -58
  277. package/dist/helpers/workflowEditorHelper.js +73 -292
  278. package/dist/index.d.ts +6 -6
  279. package/dist/index.js +6 -6
  280. package/dist/mocks/app-environment.js +2 -2
  281. package/dist/mocks/app-forms.js +1 -1
  282. package/dist/mocks/app-navigation.js +2 -2
  283. package/dist/mocks/app-stores.js +3 -3
  284. package/dist/playground/index.d.ts +19 -19
  285. package/dist/playground/index.js +16 -16
  286. package/dist/playground/mount.d.ts +3 -3
  287. package/dist/playground/mount.js +24 -24
  288. package/dist/registry/builtinFormats.js +13 -13
  289. package/dist/registry/builtinNodes.d.ts +2 -2
  290. package/dist/registry/builtinNodes.js +77 -77
  291. package/dist/registry/index.d.ts +4 -4
  292. package/dist/registry/index.js +4 -4
  293. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  294. package/dist/registry/nodeComponentRegistry.js +9 -11
  295. package/dist/registry/plugin.d.ts +2 -2
  296. package/dist/registry/plugin.js +11 -11
  297. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  298. package/dist/registry/workflowFormatRegistry.js +2 -2
  299. package/dist/schema/index.d.ts +1 -1
  300. package/dist/schema/index.js +2 -2
  301. package/dist/schemas/v1/workflow.schema.json +107 -22
  302. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  303. package/dist/services/agentSpecExecutionService.js +55 -56
  304. package/dist/services/api.d.ts +2 -2
  305. package/dist/services/api.js +37 -37
  306. package/dist/services/apiVariableService.d.ts +1 -1
  307. package/dist/services/apiVariableService.js +34 -41
  308. package/dist/services/autoSaveService.js +8 -8
  309. package/dist/services/categoriesApi.d.ts +2 -2
  310. package/dist/services/categoriesApi.js +8 -8
  311. package/dist/services/chatService.d.ts +65 -0
  312. package/dist/services/chatService.js +131 -0
  313. package/dist/services/draftStorage.d.ts +1 -1
  314. package/dist/services/draftStorage.js +11 -11
  315. package/dist/services/dynamicSchemaService.d.ts +1 -1
  316. package/dist/services/dynamicSchemaService.js +39 -41
  317. package/dist/services/globalSave.d.ts +2 -2
  318. package/dist/services/globalSave.js +38 -41
  319. package/dist/services/historyService.d.ts +7 -5
  320. package/dist/services/historyService.js +29 -14
  321. package/dist/services/interruptService.d.ts +1 -1
  322. package/dist/services/interruptService.js +29 -35
  323. package/dist/services/nodeExecutionService.d.ts +1 -1
  324. package/dist/services/nodeExecutionService.js +44 -45
  325. package/dist/services/playgroundService.d.ts +1 -1
  326. package/dist/services/playgroundService.js +29 -29
  327. package/dist/services/portConfigApi.d.ts +2 -2
  328. package/dist/services/portConfigApi.js +8 -8
  329. package/dist/services/settingsService.d.ts +2 -2
  330. package/dist/services/settingsService.js +19 -25
  331. package/dist/services/toastService.d.ts +4 -4
  332. package/dist/services/toastService.js +33 -33
  333. package/dist/services/variableService.d.ts +1 -1
  334. package/dist/services/variableService.js +36 -36
  335. package/dist/services/workflowStorage.d.ts +2 -2
  336. package/dist/services/workflowStorage.js +13 -13
  337. package/dist/settings/index.d.ts +7 -7
  338. package/dist/settings/index.js +6 -6
  339. package/dist/skins/default.d.ts +1 -1
  340. package/dist/skins/default.js +1 -1
  341. package/dist/skins/index.d.ts +3 -3
  342. package/dist/skins/index.js +7 -7
  343. package/dist/skins/slate.d.ts +1 -1
  344. package/dist/skins/slate.js +69 -69
  345. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  346. package/dist/stores/categoriesStore.svelte.js +5 -5
  347. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  348. package/dist/stores/editorStateMachine.svelte.js +34 -34
  349. package/dist/stores/historyStore.svelte.d.ts +4 -4
  350. package/dist/stores/historyStore.svelte.js +4 -4
  351. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  352. package/dist/stores/interruptStore.svelte.js +27 -22
  353. package/dist/stores/playgroundStore.svelte.d.ts +3 -3
  354. package/dist/stores/playgroundStore.svelte.js +29 -23
  355. package/dist/stores/portCoordinateStore.svelte.d.ts +6 -2
  356. package/dist/stores/portCoordinateStore.svelte.js +30 -39
  357. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  358. package/dist/stores/settingsStore.svelte.js +57 -62
  359. package/dist/stores/workflowStore.svelte.d.ts +34 -5
  360. package/dist/stores/workflowStore.svelte.js +127 -108
  361. package/dist/stories/CanvasDecorator.svelte +7 -10
  362. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  363. package/dist/stories/EdgeDecorator.svelte +28 -31
  364. package/dist/stories/EdgeDecorator.svelte.d.ts +1 -1
  365. package/dist/stories/NodeDecorator.svelte +14 -20
  366. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  367. package/dist/stories/utils.d.ts +2 -2
  368. package/dist/stories/utils.js +89 -93
  369. package/dist/styles/base.css +16 -50
  370. package/dist/styles/tokens.css +10 -28
  371. package/dist/svelte-app.d.ts +10 -10
  372. package/dist/svelte-app.js +39 -39
  373. package/dist/themes/default.d.ts +1 -1
  374. package/dist/themes/default.js +4 -4
  375. package/dist/themes/index.d.ts +3 -3
  376. package/dist/themes/index.js +11 -11
  377. package/dist/themes/minimal.d.ts +1 -1
  378. package/dist/themes/minimal.js +5 -5
  379. package/dist/types/agentspec.d.ts +18 -18
  380. package/dist/types/agentspec.js +2 -2
  381. package/dist/types/auth.d.ts +1 -1
  382. package/dist/types/auth.js +6 -6
  383. package/dist/types/chat.d.ts +63 -0
  384. package/dist/types/chat.js +9 -0
  385. package/dist/types/config.d.ts +6 -6
  386. package/dist/types/events.d.ts +28 -2
  387. package/dist/types/events.js +2 -1
  388. package/dist/types/index.d.ts +40 -32
  389. package/dist/types/index.js +6 -6
  390. package/dist/types/interrupt.d.ts +6 -6
  391. package/dist/types/interrupt.js +21 -21
  392. package/dist/types/interruptState.d.ts +12 -12
  393. package/dist/types/interruptState.js +66 -66
  394. package/dist/types/playground.d.ts +7 -7
  395. package/dist/types/playground.js +14 -14
  396. package/dist/types/settings.d.ts +12 -4
  397. package/dist/types/settings.js +21 -23
  398. package/dist/types/skin.d.ts +1 -1
  399. package/dist/types/theme.d.ts +2 -2
  400. package/dist/types/uischema.d.ts +4 -4
  401. package/dist/types/uischema.js +3 -3
  402. package/dist/utils/colors.d.ts +1 -1
  403. package/dist/utils/colors.js +95 -97
  404. package/dist/utils/config.d.ts +2 -2
  405. package/dist/utils/config.js +48 -48
  406. package/dist/utils/connections.d.ts +2 -2
  407. package/dist/utils/connections.js +15 -15
  408. package/dist/utils/edgeStyling.d.ts +42 -0
  409. package/dist/utils/edgeStyling.js +173 -0
  410. package/dist/utils/errors.js +3 -3
  411. package/dist/utils/fetchWithAuth.d.ts +1 -1
  412. package/dist/utils/fetchWithAuth.js +2 -2
  413. package/dist/utils/handleIds.d.ts +2 -2
  414. package/dist/utils/handleIds.js +8 -8
  415. package/dist/utils/handlePositioning.d.ts +1 -1
  416. package/dist/utils/handlePositioning.js +2 -2
  417. package/dist/utils/icons.d.ts +1 -1
  418. package/dist/utils/icons.js +74 -74
  419. package/dist/utils/logger.d.ts +1 -1
  420. package/dist/utils/logger.js +7 -7
  421. package/dist/utils/nodeIds.d.ts +31 -0
  422. package/dist/utils/nodeIds.js +42 -0
  423. package/dist/utils/nodeStatus.d.ts +1 -1
  424. package/dist/utils/nodeStatus.js +48 -48
  425. package/dist/utils/nodeSwap.d.ts +221 -0
  426. package/dist/utils/nodeSwap.js +680 -0
  427. package/dist/utils/nodeTypes.d.ts +1 -1
  428. package/dist/utils/nodeTypes.js +20 -21
  429. package/dist/utils/nodeWrapper.d.ts +7 -7
  430. package/dist/utils/nodeWrapper.js +19 -21
  431. package/dist/utils/performanceUtils.d.ts +1 -1
  432. package/dist/utils/performanceUtils.js +1 -2
  433. package/dist/utils/portUtils.d.ts +2 -2
  434. package/dist/utils/portUtils.js +1 -1
  435. package/dist/utils/sanitize.js +1 -1
  436. package/dist/utils/uischema.d.ts +2 -2
  437. package/dist/utils/uischema.js +8 -8
  438. package/dist/utils/validation.js +8 -8
  439. package/package.json +12 -11
  440. package/dist/helpers/nodeLayoutHelper.d.ts +0 -14
  441. package/dist/helpers/nodeLayoutHelper.js +0 -19
@@ -6,8 +6,8 @@
6
6
  -->
7
7
 
8
8
  <script lang="ts">
9
- import Icon from "@iconify/svelte";
10
- import type { WorkflowNode as WorkflowNodeType } from "../types/index.js";
9
+ import Icon from '@iconify/svelte';
10
+ import type { WorkflowNode as WorkflowNodeType } from '../types/index.js';
11
11
 
12
12
  interface LogEntry {
13
13
  timestamp: string;
@@ -37,10 +37,10 @@
37
37
  }, 100);
38
38
 
39
39
  // Prevent body scroll
40
- document.body.style.overflow = "hidden";
40
+ document.body.style.overflow = 'hidden';
41
41
  } else {
42
42
  // Restore body scroll
43
- document.body.style.overflow = "";
43
+ document.body.style.overflow = '';
44
44
  }
45
45
  });
46
46
 
@@ -55,7 +55,7 @@
55
55
  * Handle keyboard shortcuts
56
56
  */
57
57
  function handleKeydown(event: KeyboardEvent): void {
58
- if (event.key === "Escape") {
58
+ if (event.key === 'Escape') {
59
59
  handleClose();
60
60
  }
61
61
  }
@@ -66,16 +66,16 @@
66
66
  */
67
67
  function getLogLevelColor(level: string): string {
68
68
  switch (level) {
69
- case "error":
70
- return "var(--fd-error)";
71
- case "warning":
72
- return "var(--fd-warning)";
73
- case "success":
74
- return "var(--fd-success)";
75
- case "info":
76
- return "var(--fd-info)";
69
+ case 'error':
70
+ return 'var(--fd-error)';
71
+ case 'warning':
72
+ return 'var(--fd-warning)';
73
+ case 'success':
74
+ return 'var(--fd-success)';
75
+ case 'info':
76
+ return 'var(--fd-info)';
77
77
  default:
78
- return "var(--fd-muted-foreground)";
78
+ return 'var(--fd-muted-foreground)';
79
79
  }
80
80
  }
81
81
 
@@ -84,16 +84,16 @@
84
84
  */
85
85
  function getLogLevelIcon(level: string): string {
86
86
  switch (level) {
87
- case "error":
88
- return "mdi:alert-circle";
89
- case "warning":
90
- return "mdi:alert";
91
- case "success":
92
- return "mdi:check-circle";
93
- case "info":
94
- return "mdi:information";
87
+ case 'error':
88
+ return 'mdi:alert-circle';
89
+ case 'warning':
90
+ return 'mdi:alert';
91
+ case 'success':
92
+ return 'mdi:check-circle';
93
+ case 'info':
94
+ return 'mdi:information';
95
95
  default:
96
- return "mdi:circle";
96
+ return 'mdi:circle';
97
97
  }
98
98
  }
99
99
 
@@ -102,19 +102,19 @@
102
102
  */
103
103
  function formatTimestamp(timestamp: string): string {
104
104
  const date = new Date(timestamp);
105
- return date.toLocaleTimeString("en-US", {
105
+ return date.toLocaleTimeString('en-US', {
106
106
  hour12: false,
107
- hour: "2-digit",
108
- minute: "2-digit",
109
- second: "2-digit",
110
- fractionalSecondDigits: 3,
107
+ hour: '2-digit',
108
+ minute: '2-digit',
109
+ second: '2-digit',
110
+ fractionalSecondDigits: 3
111
111
  });
112
112
  }
113
113
 
114
114
  /**
115
115
  * Filter logs by selected node
116
116
  */
117
- let filteredLogs = $derived(() => {
117
+ let filteredLogs = $derived.by(() => {
118
118
  if (props.selectedNode) {
119
119
  return props.logs.filter((log) => log.nodeId === props.selectedNode?.id);
120
120
  }
@@ -132,18 +132,18 @@
132
132
  * Export logs
133
133
  */
134
134
  function exportLogs(): void {
135
- const logText = filteredLogs()
135
+ const logText = filteredLogs
136
136
  .map(
137
137
  (log) =>
138
- `[${formatTimestamp(log.timestamp)}] ${log.level.toUpperCase()}: ${log.message}${log.nodeId ? ` (Node: ${log.nodeId})` : ""}`,
138
+ `[${formatTimestamp(log.timestamp)}] ${log.level.toUpperCase()}: ${log.message}${log.nodeId ? ` (Node: ${log.nodeId})` : ''}`
139
139
  )
140
- .join("\n");
140
+ .join('\n');
141
141
 
142
- const blob = new Blob([logText], { type: "text/plain" });
142
+ const blob = new Blob([logText], { type: 'text/plain' });
143
143
  const url = URL.createObjectURL(blob);
144
- const link = document.createElement("a");
144
+ const link = document.createElement('a');
145
145
  link.href = url;
146
- link.download = `pipeline-logs-${new Date().toISOString().split("T")[0]}.txt`;
146
+ link.download = `pipeline-logs-${new Date().toISOString().split('T')[0]}.txt`;
147
147
  link.click();
148
148
  URL.revokeObjectURL(url);
149
149
  }
@@ -198,15 +198,15 @@
198
198
  <!-- Content -->
199
199
  <div class="logs-sidebar__content">
200
200
  <!-- Logs List -->
201
- {#if filteredLogs().length > 0}
201
+ {#if filteredLogs.length > 0}
202
202
  <div class="logs-sidebar__logs" bind:this={logsContainer}>
203
- {#each filteredLogs() as log, index (index)}
203
+ {#each filteredLogs as log, index (index)}
204
204
  <div
205
205
  class="logs-sidebar__log-entry"
206
- class:logs-sidebar__log-entry--error={log.level === "error"}
207
- class:logs-sidebar__log-entry--warning={log.level === "warning"}
208
- class:logs-sidebar__log-entry--success={log.level === "success"}
209
- class:logs-sidebar__log-entry--info={log.level === "info"}
206
+ class:logs-sidebar__log-entry--error={log.level === 'error'}
207
+ class:logs-sidebar__log-entry--warning={log.level === 'warning'}
208
+ class:logs-sidebar__log-entry--success={log.level === 'success'}
209
+ class:logs-sidebar__log-entry--info={log.level === 'info'}
210
210
  >
211
211
  <div class="logs-sidebar__log-header">
212
212
  <div class="logs-sidebar__log-level">
@@ -214,9 +214,7 @@
214
214
  icon={getLogLevelIcon(log.level)}
215
215
  style="color: {getLogLevelColor(log.level)}"
216
216
  />
217
- <span class="logs-sidebar__log-level-text"
218
- >{log.level.toUpperCase()}</span
219
- >
217
+ <span class="logs-sidebar__log-level-text">{log.level.toUpperCase()}</span>
220
218
  </div>
221
219
  <div class="logs-sidebar__log-timestamp">
222
220
  {formatTimestamp(log.timestamp)}
@@ -236,10 +234,7 @@
236
234
  </div>
237
235
  {:else}
238
236
  <div class="logs-sidebar__empty">
239
- <Icon
240
- icon="mdi:file-document-outline"
241
- class="logs-sidebar__empty-icon"
242
- />
237
+ <Icon icon="mdi:file-document-outline" class="logs-sidebar__empty-icon" />
243
238
  <p class="logs-sidebar__empty-text">
244
239
  {#if props.selectedNode}
245
240
  No logs available for this node
@@ -276,7 +271,7 @@
276
271
 
277
272
  {#if props.logs.length > 0}
278
273
  <p class="logs-sidebar__info-text">
279
- {filteredLogs().length} of {props.logs.length} log entries
274
+ {filteredLogs.length} of {props.logs.length} log entries
280
275
  </p>
281
276
  {/if}
282
277
  </div>
@@ -288,9 +283,7 @@
288
283
  top: var(--fd-navbar-height); /* Start below navbar */
289
284
  right: 0;
290
285
  width: 400px;
291
- height: calc(
292
- 100vh - var(--fd-navbar-height)
293
- ); /* Account for navbar height */
286
+ height: calc(100vh - var(--fd-navbar-height)); /* Account for navbar height */
294
287
  background-color: #ffffff;
295
288
  border-left: 1px solid #e5e7eb;
296
289
  box-shadow: -4px 0 20px rgba(0, 0, 0, 0.15);
@@ -445,7 +438,7 @@
445
438
  .logs-sidebar__log-timestamp {
446
439
  font-size: 0.75rem;
447
440
  color: #6b7280;
448
- font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace;
441
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
449
442
  }
450
443
 
451
444
  .logs-sidebar__log-message {
@@ -1,4 +1,4 @@
1
- import type { WorkflowNode as WorkflowNodeType } from "../types/index.js";
1
+ import type { WorkflowNode as WorkflowNodeType } from '../types/index.js';
2
2
  interface LogEntry {
3
3
  timestamp: string;
4
4
  level: string;
@@ -1,27 +1,23 @@
1
1
  <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
- import MarkdownDisplay from "./MarkdownDisplay.svelte";
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import MarkdownDisplay from './MarkdownDisplay.svelte';
4
4
 
5
5
  const { Story } = defineMeta({
6
- title: "Display/MarkdownDisplay",
6
+ title: 'Display/MarkdownDisplay',
7
7
  component: MarkdownDisplay,
8
- tags: ["autodocs"],
8
+ tags: ['autodocs'],
9
9
  argTypes: {
10
- content: { control: "text" },
11
- },
10
+ content: { control: 'text' }
11
+ }
12
12
  });
13
13
  </script>
14
14
 
15
- <Story
16
- name="Simple"
17
- args={{ content: "Hello **world**! This is *italic* and `inline code`." }}
18
- />
15
+ <Story name="Simple" args={{ content: 'Hello **world**! This is *italic* and `inline code`.' }} />
19
16
 
20
17
  <Story
21
18
  name="Headings"
22
19
  args={{
23
- content:
24
- "# Heading 1\n## Heading 2\n### Heading 3\n\nParagraph text below headings.",
20
+ content: '# Heading 1\n## Heading 2\n### Heading 3\n\nParagraph text below headings.'
25
21
  }}
26
22
  />
27
23
 
@@ -29,7 +25,7 @@
29
25
  name="Code Block"
30
26
  args={{
31
27
  content:
32
- 'Here is a code example:\n\n```javascript\nconst greeting = "Hello";\nconsole.log(greeting);\n```\n\nAnd some text after.',
28
+ 'Here is a code example:\n\n```javascript\nconst greeting = "Hello";\nconsole.log(greeting);\n```\n\nAnd some text after.'
33
29
  }}
34
30
  />
35
31
 
@@ -37,6 +33,6 @@
37
33
  name="Full Document"
38
34
  args={{
39
35
  content:
40
- "# Workflow Guide\n\n## Getting Started\n\nFollow these steps:\n\n1. Create a new workflow\n2. Add nodes from the sidebar\n3. Connect nodes with edges\n\n> **Tip:** Use keyboard shortcuts for faster editing.\n\n### Supported Node Types\n\n| Type | Description |\n|------|-------------|\n| Start | Entry point |\n| End | Exit point |\n| Tool | Processing step |\n\nFor more info, visit [the docs](https://example.com).",
36
+ '# Workflow Guide\n\n## Getting Started\n\nFollow these steps:\n\n1. Create a new workflow\n2. Add nodes from the sidebar\n3. Connect nodes with edges\n\n> **Tip:** Use keyboard shortcuts for faster editing.\n\n### Supported Node Types\n\n| Type | Description |\n|------|-------------|\n| Start | Entry point |\n| End | Exit point |\n| Tool | Processing step |\n\nFor more info, visit [the docs](https://example.com).'
41
37
  }}
42
38
  />
@@ -11,7 +11,7 @@ declare const MarkdownDisplay: $$__sveltets_2_IsomorphicComponent<{
11
11
  }, {
12
12
  [evt: string]: CustomEvent<any>;
13
13
  }, {}, {}, string>;
14
- import MarkdownDisplay from "./MarkdownDisplay.svelte";
14
+ import MarkdownDisplay from './MarkdownDisplay.svelte';
15
15
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
16
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
17
  $$bindings?: Bindings;
@@ -5,8 +5,8 @@
5
5
  -->
6
6
 
7
7
  <script lang="ts">
8
- import { marked } from "marked";
9
- import { sanitizeHtml } from "../utils/sanitize.js";
8
+ import { marked } from 'marked';
9
+ import { sanitizeHtml } from '../utils/sanitize.js';
10
10
 
11
11
  interface Props {
12
12
  content: string;
@@ -16,12 +16,10 @@
16
16
  let props: Props = $props();
17
17
 
18
18
  // Parse markdown content and sanitize to prevent XSS
19
- let renderedContent = $derived(
20
- sanitizeHtml(marked.parse(props.content || "") as string),
21
- );
19
+ let renderedContent = $derived(sanitizeHtml(marked.parse(props.content || '') as string));
22
20
 
23
21
  // Default class name if none provided
24
- let displayClass = $derived(props.className || "markdown-display");
22
+ let displayClass = $derived(props.className || 'markdown-display');
25
23
  </script>
26
24
 
27
25
  <div class={displayClass}>
@@ -1,40 +1,40 @@
1
1
  <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
- import Navbar from "./Navbar.svelte";
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Navbar from './Navbar.svelte';
4
4
 
5
5
  const { Story } = defineMeta({
6
- title: "Editor/Navbar",
6
+ title: 'Editor/Navbar',
7
7
  component: Navbar,
8
- tags: ["autodocs"],
8
+ tags: ['autodocs'],
9
9
  parameters: {
10
- layout: "fullscreen",
11
- },
10
+ layout: 'fullscreen'
11
+ }
12
12
  });
13
13
  </script>
14
14
 
15
15
  <Story
16
16
  name="Default"
17
17
  args={{
18
- title: "My Workflow",
18
+ title: 'My Workflow',
19
19
  showStatus: true,
20
- showSettings: true,
20
+ showSettings: true
21
21
  }}
22
22
  />
23
23
 
24
24
  <Story
25
25
  name="With Actions"
26
26
  args={{
27
- title: "Workflow Editor",
27
+ title: 'Workflow Editor',
28
28
  primaryActions: [
29
29
  {
30
- label: "Save",
31
- href: "#",
32
- icon: "mdi:content-save",
33
- variant: "primary",
30
+ label: 'Save',
31
+ href: '#',
32
+ icon: 'mdi:content-save',
33
+ variant: 'primary'
34
34
  },
35
- { label: "Export", href: "#", icon: "mdi:download", variant: "outline" },
35
+ { label: 'Export', href: '#', icon: 'mdi:download', variant: 'outline' }
36
36
  ],
37
- showStatus: true,
37
+ showStatus: true
38
38
  }}
39
39
  />
40
40
 
@@ -42,10 +42,10 @@
42
42
  name="With Breadcrumbs"
43
43
  args={{
44
44
  breadcrumbs: [
45
- { label: "Workflows", href: "#", icon: "mdi:folder" },
46
- { label: "My Workflow", href: "#" },
45
+ { label: 'Workflows', href: '#', icon: 'mdi:folder' },
46
+ { label: 'My Workflow', href: '#' }
47
47
  ],
48
- showSettings: true,
48
+ showSettings: true
49
49
  }}
50
50
  />
51
51
 
@@ -53,6 +53,6 @@
53
53
  name="Minimal"
54
54
  args={{
55
55
  showStatus: false,
56
- showSettings: false,
56
+ showSettings: false
57
57
  }}
58
58
  />
@@ -11,7 +11,7 @@ declare const Navbar: $$__sveltets_2_IsomorphicComponent<{
11
11
  }, {
12
12
  [evt: string]: CustomEvent<any>;
13
13
  }, {}, {}, string>;
14
- import Navbar from "./Navbar.svelte";
14
+ import Navbar from './Navbar.svelte';
15
15
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
16
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
17
  $$bindings?: Bindings;
@@ -7,16 +7,16 @@
7
7
  -->
8
8
 
9
9
  <script lang="ts">
10
- import Icon from "@iconify/svelte";
11
- import Logo from "./Logo.svelte";
12
- import SettingsModal from "./SettingsModal.svelte";
13
- import type { SettingsCategory } from "../types/settings.js";
10
+ import Icon from '@iconify/svelte';
11
+ import Logo from './Logo.svelte';
12
+ import SettingsModal from './SettingsModal.svelte';
13
+ import type { SettingsCategory } from '../types/settings.js';
14
14
 
15
15
  interface NavbarAction {
16
16
  label: string;
17
17
  href: string;
18
18
  icon?: string;
19
- variant?: "primary" | "secondary" | "outline";
19
+ variant?: 'primary' | 'secondary' | 'outline';
20
20
  onclick?: (event: Event) => void;
21
21
  /** If true, opens link in new tab with proper security attributes */
22
22
  external?: boolean;
@@ -55,7 +55,7 @@
55
55
  showSettings = true,
56
56
  settingsCategories,
57
57
  showSettingsSyncButton,
58
- showSettingsResetButton,
58
+ showSettingsResetButton
59
59
  }: Props = $props();
60
60
 
61
61
  // Dropdown state
@@ -67,16 +67,16 @@
67
67
  // Close dropdown when clicking outside
68
68
  function handleClickOutside(event: MouseEvent) {
69
69
  const target = event.target as HTMLElement;
70
- if (!target.closest(".flowdrop-navbar__dropdown")) {
70
+ if (!target.closest('.flowdrop-navbar__dropdown')) {
71
71
  isDropdownOpen = false;
72
72
  }
73
73
  }
74
74
 
75
75
  // Add event listener for click outside with proper cleanup
76
76
  $effect(() => {
77
- document.addEventListener("click", handleClickOutside);
77
+ document.addEventListener('click', handleClickOutside);
78
78
  return () => {
79
- document.removeEventListener("click", handleClickOutside);
79
+ document.removeEventListener('click', handleClickOutside);
80
80
  };
81
81
  });
82
82
  </script>
@@ -91,9 +91,7 @@
91
91
  </div>
92
92
  <div>
93
93
  <h1 class="flowdrop-text--logo flowdrop-font--bold">FlowDrop</h1>
94
- <p class="flowdrop-text--tagline flowdrop-text--gray">
95
- Visual Workflow Manager
96
- </p>
94
+ <p class="flowdrop-text--tagline flowdrop-text--gray">Visual Workflow Manager</p>
97
95
  </div>
98
96
  </div>
99
97
  </div>
@@ -119,40 +117,24 @@
119
117
  {#each breadcrumbs as breadcrumb, index (index)}
120
118
  <li class="flowdrop-navbar__breadcrumb-item">
121
119
  {#if breadcrumb.href && index < breadcrumbs.length - 1}
122
- <a
123
- href={breadcrumb.href}
124
- class="flowdrop-navbar__breadcrumb-link"
125
- >
120
+ <a href={breadcrumb.href} class="flowdrop-navbar__breadcrumb-link">
126
121
  {#if breadcrumb.icon}
127
- <Icon
128
- icon={breadcrumb.icon}
129
- class="flowdrop-navbar__breadcrumb-icon"
130
- />
122
+ <Icon icon={breadcrumb.icon} class="flowdrop-navbar__breadcrumb-icon" />
131
123
  {/if}
132
- <span class="flowdrop-navbar__breadcrumb-text"
133
- >{breadcrumb.label}</span
134
- >
124
+ <span class="flowdrop-navbar__breadcrumb-text">{breadcrumb.label}</span>
135
125
  </a>
136
126
  {:else}
137
127
  <span class="flowdrop-navbar__breadcrumb-current">
138
128
  {#if breadcrumb.icon}
139
- <Icon
140
- icon={breadcrumb.icon}
141
- class="flowdrop-navbar__breadcrumb-icon"
142
- />
129
+ <Icon icon={breadcrumb.icon} class="flowdrop-navbar__breadcrumb-icon" />
143
130
  {/if}
144
- <span class="flowdrop-navbar__breadcrumb-text"
145
- >{breadcrumb.label}</span
146
- >
131
+ <span class="flowdrop-navbar__breadcrumb-text">{breadcrumb.label}</span>
147
132
  </span>
148
133
  {/if}
149
134
  </li>
150
135
  {#if index < breadcrumbs.length - 1}
151
136
  <li class="flowdrop-navbar__breadcrumb-separator">
152
- <Icon
153
- icon="mdi:chevron-right"
154
- class="flowdrop-navbar__breadcrumb-chevron"
155
- />
137
+ <Icon icon="mdi:chevron-right" class="flowdrop-navbar__breadcrumb-chevron" />
156
138
  </li>
157
139
  {/if}
158
140
  {/each}
@@ -176,11 +158,10 @@
176
158
  {#each primaryActions as action (action.label)}
177
159
  <a
178
160
  href={action.href}
179
- class="flowdrop-navbar__action flowdrop-navbar__action--{action.variant ||
180
- 'primary'}"
161
+ class="flowdrop-navbar__action flowdrop-navbar__action--{action.variant || 'primary'}"
181
162
  onclick={action.onclick}
182
- target={action.external ? "_blank" : undefined}
183
- rel={action.external ? "noopener noreferrer" : undefined}
163
+ target={action.external ? '_blank' : undefined}
164
+ rel={action.external ? 'noopener noreferrer' : undefined}
184
165
  >
185
166
  {#if action.icon}
186
167
  <span class="flowdrop-navbar__action-icon">
@@ -201,17 +182,15 @@
201
182
  class="flowdrop-navbar__primary-action flowdrop-navbar__action--{primaryAction.variant ||
202
183
  'primary'}"
203
184
  onclick={primaryAction.onclick}
204
- target={primaryAction.external ? "_blank" : undefined}
205
- rel={primaryAction.external ? "noopener noreferrer" : undefined}
185
+ target={primaryAction.external ? '_blank' : undefined}
186
+ rel={primaryAction.external ? 'noopener noreferrer' : undefined}
206
187
  >
207
188
  {#if primaryAction.icon}
208
189
  <span class="flowdrop-navbar__action-icon">
209
190
  <Icon icon={primaryAction.icon} class="w-4 h-4" />
210
191
  </span>
211
192
  {/if}
212
- <span class="flowdrop-navbar__action-label"
213
- >{primaryAction.label}</span
214
- >
193
+ <span class="flowdrop-navbar__action-label">{primaryAction.label}</span>
215
194
  </a>
216
195
  {/if}
217
196
 
@@ -237,8 +216,8 @@
237
216
  action.onclick?.(e);
238
217
  isDropdownOpen = false;
239
218
  }}
240
- target={action.external ? "_blank" : undefined}
241
- rel={action.external ? "noopener noreferrer" : undefined}
219
+ target={action.external ? '_blank' : undefined}
220
+ rel={action.external ? 'noopener noreferrer' : undefined}
242
221
  >
243
222
  {#if action.icon}
244
223
  <Icon icon={action.icon} class="w-4 h-4" />
@@ -276,11 +255,11 @@
276
255
  {@const settingsModalProps = {
277
256
  ...(settingsCategories !== undefined && { categories: settingsCategories }),
278
257
  ...(showSettingsSyncButton !== undefined && {
279
- showSyncButton: showSettingsSyncButton,
258
+ showSyncButton: showSettingsSyncButton
280
259
  }),
281
260
  ...(showSettingsResetButton !== undefined && {
282
- showResetButton: showSettingsResetButton,
283
- }),
261
+ showResetButton: showSettingsResetButton
262
+ })
284
263
  }}
285
264
  <SettingsModal bind:open={isSettingsOpen} {...settingsModalProps} />
286
265
  {/if}
@@ -546,7 +525,7 @@
546
525
  color: var(--fd-foreground);
547
526
  }
548
527
 
549
- .flowdrop-navbar__dropdown-trigger[aria-expanded="true"] {
528
+ .flowdrop-navbar__dropdown-trigger[aria-expanded='true'] {
550
529
  background-color: var(--fd-subtle);
551
530
  color: var(--fd-foreground);
552
531
  }
@@ -1,9 +1,9 @@
1
- import type { SettingsCategory } from "../types/settings.js";
1
+ import type { SettingsCategory } from '../types/settings.js';
2
2
  interface NavbarAction {
3
3
  label: string;
4
4
  href: string;
5
5
  icon?: string;
6
- variant?: "primary" | "secondary" | "outline";
6
+ variant?: 'primary' | 'secondary' | 'outline';
7
7
  onclick?: (event: Event) => void;
8
8
  /** If true, opens link in new tab with proper security attributes */
9
9
  external?: boolean;