@flowdrop/flowdrop 1.0.0 → 1.1.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 (388) hide show
  1. package/README.md +50 -50
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/WorkflowAdapter.js +25 -25
  4. package/dist/adapters/agentspec/AgentSpecAdapter.d.ts +2 -2
  5. package/dist/adapters/agentspec/AgentSpecAdapter.js +133 -122
  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 +1 -1
  9. package/dist/adapters/agentspec/autoLayout.js +2 -2
  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 +22 -20
  18. package/dist/api/enhanced-client.d.ts +3 -3
  19. package/dist/api/enhanced-client.js +73 -72
  20. package/dist/components/App.svelte +1081 -961
  21. package/dist/components/App.svelte.d.ts +9 -6
  22. package/dist/components/CanvasBanner.stories.svelte +23 -20
  23. package/dist/components/CanvasBanner.stories.svelte.d.ts +1 -1
  24. package/dist/components/CanvasBanner.svelte +46 -46
  25. package/dist/components/ConfigForm.svelte +1164 -1065
  26. package/dist/components/ConfigForm.svelte.d.ts +2 -2
  27. package/dist/components/ConfigModal.svelte +180 -180
  28. package/dist/components/ConfigModal.svelte.d.ts +1 -1
  29. package/dist/components/ConfigPanel.stories.svelte +35 -35
  30. package/dist/components/ConfigPanel.stories.svelte.d.ts +1 -1
  31. package/dist/components/ConfigPanel.svelte +178 -167
  32. package/dist/components/ConfigPanel.svelte.d.ts +1 -1
  33. package/dist/components/ConnectionLine.svelte +25 -25
  34. package/dist/components/EdgeRefresher.svelte +26 -26
  35. package/dist/components/FlowDropEdge.stories.svelte +197 -0
  36. package/dist/components/FlowDropEdge.stories.svelte.d.ts +26 -0
  37. package/dist/components/FlowDropEdge.svelte +168 -0
  38. package/dist/components/FlowDropEdge.svelte.d.ts +4 -0
  39. package/dist/components/FlowDropZone.svelte +63 -60
  40. package/dist/components/FlowDropZone.svelte.d.ts +1 -1
  41. package/dist/components/LoadingSpinner.stories.svelte +19 -19
  42. package/dist/components/LoadingSpinner.stories.svelte.d.ts +1 -1
  43. package/dist/components/LoadingSpinner.svelte +21 -21
  44. package/dist/components/LoadingSpinner.svelte.d.ts +1 -1
  45. package/dist/components/Logo.stories.svelte +13 -13
  46. package/dist/components/Logo.stories.svelte.d.ts +1 -1
  47. package/dist/components/Logo.svelte +101 -95
  48. package/dist/components/LogsSidebar.svelte +553 -546
  49. package/dist/components/LogsSidebar.svelte.d.ts +1 -1
  50. package/dist/components/MarkdownDisplay.stories.svelte +29 -23
  51. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +1 -1
  52. package/dist/components/MarkdownDisplay.svelte +16 -14
  53. package/dist/components/Navbar.stories.svelte +43 -38
  54. package/dist/components/Navbar.stories.svelte.d.ts +1 -1
  55. package/dist/components/Navbar.svelte +760 -706
  56. package/dist/components/Navbar.svelte.d.ts +1 -1
  57. package/dist/components/NodeSidebar.svelte +900 -746
  58. package/dist/components/NodeSidebar.svelte.d.ts +3 -1
  59. package/dist/components/NodeStatusOverlay.stories.svelte +82 -70
  60. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +1 -1
  61. package/dist/components/NodeStatusOverlay.svelte +295 -280
  62. package/dist/components/NodeStatusOverlay.svelte.d.ts +3 -3
  63. package/dist/components/PipelineStatus.svelte +326 -300
  64. package/dist/components/PipelineStatus.svelte.d.ts +4 -4
  65. package/dist/components/PortCoordinateTracker.svelte +49 -47
  66. package/dist/components/PortCoordinateTracker.svelte.d.ts +1 -1
  67. package/dist/components/ReadOnlyDetails.svelte +156 -156
  68. package/dist/components/SchemaForm.stories.svelte +106 -98
  69. package/dist/components/SchemaForm.stories.svelte.d.ts +1 -1
  70. package/dist/components/SchemaForm.svelte +490 -463
  71. package/dist/components/SchemaForm.svelte.d.ts +2 -2
  72. package/dist/components/SettingsModal.svelte +226 -223
  73. package/dist/components/SettingsModal.svelte.d.ts +1 -1
  74. package/dist/components/SettingsPanel.svelte +637 -601
  75. package/dist/components/SettingsPanel.svelte.d.ts +1 -1
  76. package/dist/components/StatusIcon.stories.svelte +62 -49
  77. package/dist/components/StatusIcon.stories.svelte.d.ts +1 -1
  78. package/dist/components/StatusIcon.svelte +87 -87
  79. package/dist/components/StatusIcon.svelte.d.ts +2 -2
  80. package/dist/components/StatusLabel.stories.svelte +12 -12
  81. package/dist/components/StatusLabel.stories.svelte.d.ts +1 -1
  82. package/dist/components/StatusLabel.svelte +19 -19
  83. package/dist/components/ThemeToggle.stories.svelte +16 -16
  84. package/dist/components/ThemeToggle.stories.svelte.d.ts +1 -1
  85. package/dist/components/ThemeToggle.svelte +180 -169
  86. package/dist/components/ThemeToggle.svelte.d.ts +1 -1
  87. package/dist/components/UniversalNode.svelte +150 -138
  88. package/dist/components/UniversalNode.svelte.d.ts +3 -3
  89. package/dist/components/WorkflowEditor.svelte +1069 -1007
  90. package/dist/components/WorkflowEditor.svelte.d.ts +4 -4
  91. package/dist/components/form/FormArray.svelte +1034 -973
  92. package/dist/components/form/FormArray.svelte.d.ts +1 -1
  93. package/dist/components/form/FormAutocomplete.svelte +1021 -978
  94. package/dist/components/form/FormAutocomplete.svelte.d.ts +1 -1
  95. package/dist/components/form/FormCheckboxGroup.stories.svelte +23 -20
  96. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +1 -1
  97. package/dist/components/form/FormCheckboxGroup.svelte +136 -136
  98. package/dist/components/form/FormCodeEditor.svelte +452 -434
  99. package/dist/components/form/FormField.svelte +366 -355
  100. package/dist/components/form/FormField.svelte.d.ts +2 -2
  101. package/dist/components/form/FormFieldLight.svelte +400 -384
  102. package/dist/components/form/FormFieldLight.svelte.d.ts +1 -1
  103. package/dist/components/form/FormFieldWrapper.stories.svelte +42 -42
  104. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +1 -1
  105. package/dist/components/form/FormFieldWrapper.svelte +100 -93
  106. package/dist/components/form/FormFieldWrapper.svelte.d.ts +1 -1
  107. package/dist/components/form/FormFieldset.svelte +108 -108
  108. package/dist/components/form/FormFieldset.svelte.d.ts +2 -2
  109. package/dist/components/form/FormMarkdownEditor.svelte +758 -725
  110. package/dist/components/form/FormNumberField.stories.svelte +25 -25
  111. package/dist/components/form/FormNumberField.stories.svelte.d.ts +1 -1
  112. package/dist/components/form/FormNumberField.svelte +88 -88
  113. package/dist/components/form/FormRangeField.stories.svelte +20 -20
  114. package/dist/components/form/FormRangeField.stories.svelte.d.ts +1 -1
  115. package/dist/components/form/FormRangeField.svelte +234 -226
  116. package/dist/components/form/FormSelect.stories.svelte +38 -38
  117. package/dist/components/form/FormSelect.stories.svelte.d.ts +1 -1
  118. package/dist/components/form/FormSelect.svelte +101 -101
  119. package/dist/components/form/FormSelect.svelte.d.ts +1 -1
  120. package/dist/components/form/FormTemplateEditor.svelte +847 -798
  121. package/dist/components/form/FormTemplateEditor.svelte.d.ts +1 -1
  122. package/dist/components/form/FormTextField.stories.svelte +29 -23
  123. package/dist/components/form/FormTextField.stories.svelte.d.ts +1 -1
  124. package/dist/components/form/FormTextField.svelte +68 -68
  125. package/dist/components/form/FormTextarea.stories.svelte +28 -25
  126. package/dist/components/form/FormTextarea.stories.svelte.d.ts +1 -1
  127. package/dist/components/form/FormTextarea.svelte +74 -74
  128. package/dist/components/form/FormToggle.stories.svelte +23 -20
  129. package/dist/components/form/FormToggle.stories.svelte.d.ts +1 -1
  130. package/dist/components/form/FormToggle.svelte +98 -98
  131. package/dist/components/form/FormUISchemaRenderer.svelte +120 -113
  132. package/dist/components/form/FormUISchemaRenderer.svelte.d.ts +3 -3
  133. package/dist/components/form/index.d.ts +19 -19
  134. package/dist/components/form/index.js +18 -18
  135. package/dist/components/form/templateAutocomplete.d.ts +2 -2
  136. package/dist/components/form/templateAutocomplete.js +64 -55
  137. package/dist/components/form/types.d.ts +6 -6
  138. package/dist/components/form/types.js +9 -4
  139. package/dist/components/icons/AlertCircleIcon.svelte +11 -0
  140. package/dist/components/icons/AlertCircleIcon.svelte.d.ts +26 -0
  141. package/dist/components/icons/CogIcon.svelte +11 -0
  142. package/dist/components/icons/CogIcon.svelte.d.ts +26 -0
  143. package/dist/components/interrupt/ChoicePrompt.stories.svelte +54 -38
  144. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +1 -1
  145. package/dist/components/interrupt/ChoicePrompt.svelte +407 -383
  146. package/dist/components/interrupt/ChoicePrompt.svelte.d.ts +1 -1
  147. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +48 -48
  148. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +1 -1
  149. package/dist/components/interrupt/ConfirmationPrompt.svelte +280 -274
  150. package/dist/components/interrupt/ConfirmationPrompt.svelte.d.ts +1 -1
  151. package/dist/components/interrupt/FormPrompt.svelte +223 -218
  152. package/dist/components/interrupt/FormPrompt.svelte.d.ts +1 -1
  153. package/dist/components/interrupt/InterruptBubble.svelte +617 -583
  154. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +2 -2
  155. package/dist/components/interrupt/ReviewPrompt.stories.svelte +66 -56
  156. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +1 -1
  157. package/dist/components/interrupt/ReviewPrompt.svelte +861 -841
  158. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +1 -1
  159. package/dist/components/interrupt/TextInputPrompt.stories.svelte +38 -33
  160. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +1 -1
  161. package/dist/components/interrupt/TextInputPrompt.svelte +333 -328
  162. package/dist/components/interrupt/TextInputPrompt.svelte.d.ts +1 -1
  163. package/dist/components/interrupt/index.d.ts +5 -5
  164. package/dist/components/interrupt/index.js +5 -5
  165. package/dist/components/layouts/MainLayout.svelte +724 -691
  166. package/dist/components/layouts/MainLayout.svelte.d.ts +6 -6
  167. package/dist/components/nodes/GatewayNode.stories.svelte +100 -99
  168. package/dist/components/nodes/GatewayNode.svelte +605 -571
  169. package/dist/components/nodes/GatewayNode.svelte.d.ts +3 -3
  170. package/dist/components/nodes/IdeaNode.stories.svelte +44 -43
  171. package/dist/components/nodes/IdeaNode.svelte +451 -437
  172. package/dist/components/nodes/IdeaNode.svelte.d.ts +1 -1
  173. package/dist/components/nodes/NotesNode.stories.svelte +65 -64
  174. package/dist/components/nodes/NotesNode.svelte +380 -369
  175. package/dist/components/nodes/NotesNode.svelte.d.ts +1 -1
  176. package/dist/components/nodes/SimpleNode.stories.svelte +145 -144
  177. package/dist/components/nodes/SimpleNode.svelte +486 -424
  178. package/dist/components/nodes/SimpleNode.svelte.d.ts +1 -1
  179. package/dist/components/nodes/SquareNode.stories.svelte +73 -73
  180. package/dist/components/nodes/SquareNode.svelte +439 -380
  181. package/dist/components/nodes/SquareNode.svelte.d.ts +1 -1
  182. package/dist/components/nodes/TerminalNode.stories.svelte +13 -13
  183. package/dist/components/nodes/TerminalNode.svelte +709 -670
  184. package/dist/components/nodes/TerminalNode.svelte.d.ts +1 -1
  185. package/dist/components/nodes/ToolNode.stories.svelte +181 -180
  186. package/dist/components/nodes/ToolNode.svelte +505 -447
  187. package/dist/components/nodes/ToolNode.svelte.d.ts +1 -1
  188. package/dist/components/nodes/WorkflowNode.stories.svelte +70 -46
  189. package/dist/components/nodes/WorkflowNode.svelte +621 -551
  190. package/dist/components/nodes/WorkflowNode.svelte.d.ts +3 -3
  191. package/dist/components/playground/ChatPanel.svelte +945 -889
  192. package/dist/components/playground/ExecutionLogs.svelte +495 -472
  193. package/dist/components/playground/InputCollector.svelte +449 -428
  194. package/dist/components/playground/MessageBubble.stories.svelte +47 -47
  195. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +1 -1
  196. package/dist/components/playground/MessageBubble.svelte +626 -610
  197. package/dist/components/playground/MessageBubble.svelte.d.ts +1 -1
  198. package/dist/components/playground/Playground.svelte +1088 -1057
  199. package/dist/components/playground/Playground.svelte.d.ts +3 -3
  200. package/dist/components/playground/PlaygroundModal.svelte +208 -204
  201. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -3
  202. package/dist/components/playground/SessionManager.svelte +527 -521
  203. package/dist/components/playground/SessionManager.svelte.d.ts +1 -1
  204. package/dist/config/agentSpecEndpoints.d.ts +1 -1
  205. package/dist/config/agentSpecEndpoints.js +20 -20
  206. package/dist/config/constants.d.ts +8 -0
  207. package/dist/config/constants.js +10 -2
  208. package/dist/config/defaultCategories.d.ts +1 -1
  209. package/dist/config/defaultCategories.js +86 -86
  210. package/dist/config/defaultPortConfig.d.ts +1 -1
  211. package/dist/config/defaultPortConfig.js +144 -144
  212. package/dist/config/endpoints.d.ts +4 -4
  213. package/dist/config/endpoints.js +65 -65
  214. package/dist/config/runtimeConfig.d.ts +2 -2
  215. package/dist/config/runtimeConfig.js +8 -8
  216. package/dist/core/index.d.ts +63 -59
  217. package/dist/core/index.js +35 -33
  218. package/dist/display/index.d.ts +2 -2
  219. package/dist/display/index.js +2 -2
  220. package/dist/editor/index.d.ts +62 -62
  221. package/dist/editor/index.js +53 -53
  222. package/dist/form/code.d.ts +5 -5
  223. package/dist/form/code.js +14 -14
  224. package/dist/form/fieldRegistry.d.ts +3 -3
  225. package/dist/form/fieldRegistry.js +11 -9
  226. package/dist/form/full.d.ts +8 -8
  227. package/dist/form/full.js +9 -9
  228. package/dist/form/index.d.ts +18 -18
  229. package/dist/form/index.js +16 -16
  230. package/dist/form/markdown.d.ts +4 -4
  231. package/dist/form/markdown.js +8 -8
  232. package/dist/helpers/proximityConnect.d.ts +3 -3
  233. package/dist/helpers/proximityConnect.js +34 -32
  234. package/dist/helpers/workflowEditorHelper.d.ts +5 -5
  235. package/dist/helpers/workflowEditorHelper.js +108 -96
  236. package/dist/index.d.ts +6 -6
  237. package/dist/index.js +6 -6
  238. package/dist/mocks/app-environment.js +2 -2
  239. package/dist/mocks/app-forms.js +9 -9
  240. package/dist/mocks/app-navigation.js +11 -11
  241. package/dist/mocks/app-stores.js +8 -8
  242. package/dist/playground/index.d.ts +19 -19
  243. package/dist/playground/index.js +16 -16
  244. package/dist/playground/mount.d.ts +3 -3
  245. package/dist/playground/mount.js +24 -24
  246. package/dist/registry/builtinFormats.js +13 -13
  247. package/dist/registry/builtinNodes.d.ts +2 -2
  248. package/dist/registry/builtinNodes.js +77 -77
  249. package/dist/registry/index.d.ts +4 -4
  250. package/dist/registry/index.js +4 -4
  251. package/dist/registry/nodeComponentRegistry.d.ts +8 -8
  252. package/dist/registry/nodeComponentRegistry.js +11 -9
  253. package/dist/registry/plugin.d.ts +2 -2
  254. package/dist/registry/plugin.js +11 -11
  255. package/dist/registry/workflowFormatRegistry.d.ts +3 -3
  256. package/dist/registry/workflowFormatRegistry.js +2 -2
  257. package/dist/schema/index.d.ts +1 -1
  258. package/dist/schema/index.js +2 -2
  259. package/dist/schemas/v1/workflow.schema.json +22 -107
  260. package/dist/services/agentSpecExecutionService.d.ts +3 -3
  261. package/dist/services/agentSpecExecutionService.js +59 -55
  262. package/dist/services/api.d.ts +18 -4
  263. package/dist/services/api.js +46 -43
  264. package/dist/services/apiVariableService.d.ts +1 -1
  265. package/dist/services/apiVariableService.js +41 -34
  266. package/dist/services/autoSaveService.js +8 -8
  267. package/dist/services/categoriesApi.d.ts +2 -2
  268. package/dist/services/categoriesApi.js +8 -8
  269. package/dist/services/draftStorage.d.ts +1 -1
  270. package/dist/services/draftStorage.js +11 -11
  271. package/dist/services/dynamicSchemaService.d.ts +1 -1
  272. package/dist/services/dynamicSchemaService.js +41 -39
  273. package/dist/services/globalSave.d.ts +2 -2
  274. package/dist/services/globalSave.js +53 -42
  275. package/dist/services/historyService.d.ts +1 -1
  276. package/dist/services/historyService.js +8 -8
  277. package/dist/services/interruptService.d.ts +1 -1
  278. package/dist/services/interruptService.js +35 -29
  279. package/dist/services/nodeExecutionService.d.ts +1 -1
  280. package/dist/services/nodeExecutionService.js +45 -44
  281. package/dist/services/playgroundService.d.ts +1 -1
  282. package/dist/services/playgroundService.js +29 -29
  283. package/dist/services/portConfigApi.d.ts +2 -2
  284. package/dist/services/portConfigApi.js +8 -8
  285. package/dist/services/settingsService.d.ts +2 -2
  286. package/dist/services/settingsService.js +25 -19
  287. package/dist/services/toastService.d.ts +4 -4
  288. package/dist/services/toastService.js +33 -33
  289. package/dist/services/variableService.d.ts +1 -1
  290. package/dist/services/variableService.js +36 -36
  291. package/dist/services/workflowStorage.d.ts +2 -2
  292. package/dist/services/workflowStorage.js +13 -13
  293. package/dist/settings/index.d.ts +7 -7
  294. package/dist/settings/index.js +6 -6
  295. package/dist/skins/default.d.ts +2 -0
  296. package/dist/skins/default.js +1 -0
  297. package/dist/skins/index.d.ts +13 -0
  298. package/dist/skins/index.js +30 -0
  299. package/dist/skins/slate.d.ts +2 -0
  300. package/dist/skins/slate.js +78 -0
  301. package/dist/stores/categoriesStore.svelte.d.ts +1 -1
  302. package/dist/stores/categoriesStore.svelte.js +5 -5
  303. package/dist/stores/editorStateMachine.svelte.d.ts +2 -2
  304. package/dist/stores/editorStateMachine.svelte.js +65 -33
  305. package/dist/stores/historyStore.svelte.d.ts +4 -4
  306. package/dist/stores/historyStore.svelte.js +4 -4
  307. package/dist/stores/interruptStore.svelte.d.ts +3 -3
  308. package/dist/stores/interruptStore.svelte.js +21 -21
  309. package/dist/stores/playgroundStore.svelte.d.ts +2 -2
  310. package/dist/stores/playgroundStore.svelte.js +25 -18
  311. package/dist/stores/portCoordinateStore.svelte.d.ts +2 -2
  312. package/dist/stores/portCoordinateStore.svelte.js +15 -8
  313. package/dist/stores/settingsStore.svelte.d.ts +2 -2
  314. package/dist/stores/settingsStore.svelte.js +62 -57
  315. package/dist/stores/workflowStore.svelte.d.ts +3 -3
  316. package/dist/stores/workflowStore.svelte.js +50 -47
  317. package/dist/stories/CanvasDecorator.svelte +35 -32
  318. package/dist/stories/CanvasDecorator.svelte.d.ts +2 -2
  319. package/dist/stories/EdgeDecorator.svelte +125 -0
  320. package/dist/stories/EdgeDecorator.svelte.d.ts +17 -0
  321. package/dist/stories/NodeDecorator.svelte +59 -53
  322. package/dist/stories/NodeDecorator.svelte.d.ts +1 -1
  323. package/dist/stories/utils.d.ts +2 -2
  324. package/dist/stories/utils.js +105 -67
  325. package/dist/styles/base.css +599 -595
  326. package/dist/styles/toast.css +14 -14
  327. package/dist/styles/tokens.css +409 -378
  328. package/dist/svelte-app.d.ts +9 -9
  329. package/dist/svelte-app.js +39 -39
  330. package/dist/themes/default.d.ts +2 -0
  331. package/dist/themes/default.js +9 -0
  332. package/dist/themes/index.d.ts +13 -0
  333. package/dist/themes/index.js +44 -0
  334. package/dist/themes/minimal.d.ts +2 -0
  335. package/dist/themes/minimal.js +11 -0
  336. package/dist/types/agentspec.d.ts +18 -18
  337. package/dist/types/agentspec.js +2 -2
  338. package/dist/types/auth.d.ts +1 -1
  339. package/dist/types/auth.js +6 -6
  340. package/dist/types/config.d.ts +6 -6
  341. package/dist/types/events.d.ts +2 -2
  342. package/dist/types/events.js +2 -2
  343. package/dist/types/index.d.ts +32 -32
  344. package/dist/types/index.js +6 -6
  345. package/dist/types/interrupt.d.ts +6 -6
  346. package/dist/types/interrupt.js +21 -21
  347. package/dist/types/interruptState.d.ts +12 -12
  348. package/dist/types/interruptState.js +66 -66
  349. package/dist/types/playground.d.ts +7 -7
  350. package/dist/types/playground.js +14 -14
  351. package/dist/types/settings.d.ts +5 -3
  352. package/dist/types/settings.js +25 -18
  353. package/dist/types/skin.d.ts +31 -0
  354. package/dist/types/skin.js +1 -0
  355. package/dist/types/theme.d.ts +35 -0
  356. package/dist/types/theme.js +1 -0
  357. package/dist/types/uischema.d.ts +4 -4
  358. package/dist/types/uischema.js +3 -3
  359. package/dist/utils/colors.d.ts +1 -1
  360. package/dist/utils/colors.js +97 -95
  361. package/dist/utils/config.d.ts +2 -2
  362. package/dist/utils/config.js +48 -48
  363. package/dist/utils/connections.d.ts +2 -2
  364. package/dist/utils/connections.js +15 -15
  365. package/dist/utils/errors.js +3 -3
  366. package/dist/utils/fetchWithAuth.d.ts +1 -1
  367. package/dist/utils/fetchWithAuth.js +2 -2
  368. package/dist/utils/handleIds.d.ts +2 -2
  369. package/dist/utils/handleIds.js +8 -8
  370. package/dist/utils/handlePositioning.d.ts +1 -1
  371. package/dist/utils/handlePositioning.js +2 -2
  372. package/dist/utils/icons.d.ts +1 -1
  373. package/dist/utils/icons.js +74 -74
  374. package/dist/utils/logger.d.ts +1 -1
  375. package/dist/utils/logger.js +7 -7
  376. package/dist/utils/nodeStatus.d.ts +1 -1
  377. package/dist/utils/nodeStatus.js +48 -48
  378. package/dist/utils/nodeTypes.d.ts +1 -1
  379. package/dist/utils/nodeTypes.js +21 -20
  380. package/dist/utils/nodeWrapper.d.ts +7 -7
  381. package/dist/utils/nodeWrapper.js +21 -19
  382. package/dist/utils/performanceUtils.d.ts +1 -1
  383. package/dist/utils/performanceUtils.js +2 -1
  384. package/dist/utils/sanitize.js +1 -1
  385. package/dist/utils/uischema.d.ts +2 -2
  386. package/dist/utils/uischema.js +8 -8
  387. package/dist/utils/validation.js +20 -8
  388. package/package.json +296 -291
@@ -35,7 +35,7 @@
35
35
  /**
36
36
  * Initial idle state
37
37
  */
38
- export const initialState = { status: 'idle' };
38
+ export const initialState = { status: "idle" };
39
39
  /**
40
40
  * Transition function for the interrupt state machine
41
41
  *
@@ -58,21 +58,21 @@ export const initialState = { status: 'idle' };
58
58
  */
59
59
  export function transition(state, action) {
60
60
  switch (state.status) {
61
- case 'idle':
61
+ case "idle":
62
62
  return transitionFromIdle(state, action);
63
- case 'submitting':
63
+ case "submitting":
64
64
  return transitionFromSubmitting(state, action);
65
- case 'error':
65
+ case "error":
66
66
  return transitionFromError(state, action);
67
- case 'resolved':
67
+ case "resolved":
68
68
  return transitionFromResolved(state, action);
69
- case 'cancelled':
69
+ case "cancelled":
70
70
  return transitionFromCancelled(state, action);
71
71
  default:
72
72
  return {
73
73
  state,
74
74
  valid: false,
75
- error: `Unknown state: ${state.status}`
75
+ error: `Unknown state: ${state.status}`,
76
76
  };
77
77
  }
78
78
  }
@@ -81,31 +81,31 @@ export function transition(state, action) {
81
81
  */
82
82
  function transitionFromIdle(_state, action) {
83
83
  switch (action.type) {
84
- case 'SUBMIT':
84
+ case "SUBMIT":
85
85
  return {
86
86
  state: {
87
- status: 'submitting',
87
+ status: "submitting",
88
88
  pendingValue: action.value,
89
- isCancelAction: false
89
+ isCancelAction: false,
90
90
  },
91
- valid: true
91
+ valid: true,
92
92
  };
93
- case 'CANCEL':
93
+ case "CANCEL":
94
94
  return {
95
95
  state: {
96
- status: 'submitting',
96
+ status: "submitting",
97
97
  pendingValue: undefined,
98
- isCancelAction: true
98
+ isCancelAction: true,
99
99
  },
100
- valid: true
100
+ valid: true,
101
101
  };
102
- case 'RESET':
102
+ case "RESET":
103
103
  return { state: initialState, valid: true };
104
104
  default:
105
105
  return {
106
106
  state: _state,
107
107
  valid: false,
108
- error: `Cannot ${action.type} from idle state`
108
+ error: `Cannot ${action.type} from idle state`,
109
109
  };
110
110
  }
111
111
  }
@@ -114,49 +114,49 @@ function transitionFromIdle(_state, action) {
114
114
  */
115
115
  function transitionFromSubmitting(state, action) {
116
116
  switch (action.type) {
117
- case 'SUCCESS':
117
+ case "SUCCESS":
118
118
  if (state.isCancelAction) {
119
119
  return {
120
120
  state: {
121
- status: 'cancelled',
122
- cancelledAt: new Date().toISOString()
121
+ status: "cancelled",
122
+ cancelledAt: new Date().toISOString(),
123
123
  },
124
- valid: true
124
+ valid: true,
125
125
  };
126
126
  }
127
127
  return {
128
128
  state: {
129
- status: 'resolved',
129
+ status: "resolved",
130
130
  value: state.pendingValue,
131
- resolvedAt: new Date().toISOString()
131
+ resolvedAt: new Date().toISOString(),
132
132
  },
133
- valid: true
133
+ valid: true,
134
134
  };
135
- case 'FAILURE':
135
+ case "FAILURE":
136
136
  return {
137
137
  state: {
138
- status: 'error',
138
+ status: "error",
139
139
  error: action.error,
140
140
  failedValue: state.pendingValue,
141
- wasCancelAction: state.isCancelAction
141
+ wasCancelAction: state.isCancelAction,
142
142
  },
143
- valid: true
143
+ valid: true,
144
144
  };
145
- case 'RESET':
145
+ case "RESET":
146
146
  return { state: initialState, valid: true };
147
147
  // Prevent double-submit
148
- case 'SUBMIT':
149
- case 'CANCEL':
148
+ case "SUBMIT":
149
+ case "CANCEL":
150
150
  return {
151
151
  state,
152
152
  valid: false,
153
- error: 'Cannot submit/cancel while already submitting'
153
+ error: "Cannot submit/cancel while already submitting",
154
154
  };
155
155
  default:
156
156
  return {
157
157
  state,
158
158
  valid: false,
159
- error: `Cannot ${action.type} from submitting state`
159
+ error: `Cannot ${action.type} from submitting state`,
160
160
  };
161
161
  }
162
162
  }
@@ -165,41 +165,41 @@ function transitionFromSubmitting(state, action) {
165
165
  */
166
166
  function transitionFromError(state, action) {
167
167
  switch (action.type) {
168
- case 'RETRY':
168
+ case "RETRY":
169
169
  return {
170
170
  state: {
171
- status: 'submitting',
171
+ status: "submitting",
172
172
  pendingValue: state.failedValue,
173
- isCancelAction: state.wasCancelAction
173
+ isCancelAction: state.wasCancelAction,
174
174
  },
175
- valid: true
175
+ valid: true,
176
176
  };
177
- case 'SUBMIT':
177
+ case "SUBMIT":
178
178
  // Allow resubmitting with new value
179
179
  return {
180
180
  state: {
181
- status: 'submitting',
181
+ status: "submitting",
182
182
  pendingValue: action.value,
183
- isCancelAction: false
183
+ isCancelAction: false,
184
184
  },
185
- valid: true
185
+ valid: true,
186
186
  };
187
- case 'CANCEL':
187
+ case "CANCEL":
188
188
  return {
189
189
  state: {
190
- status: 'submitting',
190
+ status: "submitting",
191
191
  pendingValue: undefined,
192
- isCancelAction: true
192
+ isCancelAction: true,
193
193
  },
194
- valid: true
194
+ valid: true,
195
195
  };
196
- case 'RESET':
196
+ case "RESET":
197
197
  return { state: initialState, valid: true };
198
198
  default:
199
199
  return {
200
200
  state,
201
201
  valid: false,
202
- error: `Cannot ${action.type} from error state`
202
+ error: `Cannot ${action.type} from error state`,
203
203
  };
204
204
  }
205
205
  }
@@ -207,26 +207,26 @@ function transitionFromError(state, action) {
207
207
  * Transitions from resolved state (terminal - only reset allowed)
208
208
  */
209
209
  function transitionFromResolved(state, action) {
210
- if (action.type === 'RESET') {
210
+ if (action.type === "RESET") {
211
211
  return { state: initialState, valid: true };
212
212
  }
213
213
  return {
214
214
  state,
215
215
  valid: false,
216
- error: `Cannot ${action.type} from resolved state - interrupt already completed`
216
+ error: `Cannot ${action.type} from resolved state - interrupt already completed`,
217
217
  };
218
218
  }
219
219
  /**
220
220
  * Transitions from cancelled state (terminal - only reset allowed)
221
221
  */
222
222
  function transitionFromCancelled(state, action) {
223
- if (action.type === 'RESET') {
223
+ if (action.type === "RESET") {
224
224
  return { state: initialState, valid: true };
225
225
  }
226
226
  return {
227
227
  state,
228
228
  valid: false,
229
- error: `Cannot ${action.type} from cancelled state - interrupt already cancelled`
229
+ error: `Cannot ${action.type} from cancelled state - interrupt already cancelled`,
230
230
  };
231
231
  }
232
232
  // =========================================================================
@@ -239,7 +239,7 @@ function transitionFromCancelled(state, action) {
239
239
  * @returns True if the interrupt is finished
240
240
  */
241
241
  export function isTerminalState(state) {
242
- return state.status === 'resolved' || state.status === 'cancelled';
242
+ return state.status === "resolved" || state.status === "cancelled";
243
243
  }
244
244
  /**
245
245
  * Check if the interrupt is currently submitting
@@ -248,7 +248,7 @@ export function isTerminalState(state) {
248
248
  * @returns True if submitting
249
249
  */
250
250
  export function isSubmitting(state) {
251
- return state.status === 'submitting';
251
+ return state.status === "submitting";
252
252
  }
253
253
  /**
254
254
  * Check if the interrupt has an error
@@ -257,7 +257,7 @@ export function isSubmitting(state) {
257
257
  * @returns True if in error state
258
258
  */
259
259
  export function hasError(state) {
260
- return state.status === 'error';
260
+ return state.status === "error";
261
261
  }
262
262
  /**
263
263
  * Check if the interrupt can accept user input
@@ -266,7 +266,7 @@ export function hasError(state) {
266
266
  * @returns True if idle or error (can submit)
267
267
  */
268
268
  export function canSubmit(state) {
269
- return state.status === 'idle' || state.status === 'error';
269
+ return state.status === "idle" || state.status === "error";
270
270
  }
271
271
  /**
272
272
  * Get the error message if in error state
@@ -275,7 +275,7 @@ export function canSubmit(state) {
275
275
  * @returns Error message or undefined
276
276
  */
277
277
  export function getErrorMessage(state) {
278
- return state.status === 'error' ? state.error : undefined;
278
+ return state.status === "error" ? state.error : undefined;
279
279
  }
280
280
  /**
281
281
  * Get the resolved value if in resolved state
@@ -284,7 +284,7 @@ export function getErrorMessage(state) {
284
284
  * @returns Resolved value or undefined
285
285
  */
286
286
  export function getResolvedValue(state) {
287
- return state.status === 'resolved' ? state.value : undefined;
287
+ return state.status === "resolved" ? state.value : undefined;
288
288
  }
289
289
  /**
290
290
  * Map InterruptState status to legacy InterruptStatus for backward compatibility
@@ -294,15 +294,15 @@ export function getResolvedValue(state) {
294
294
  */
295
295
  export function toLegacyStatus(state) {
296
296
  switch (state.status) {
297
- case 'idle':
298
- case 'submitting':
299
- case 'error':
300
- return 'pending';
301
- case 'resolved':
302
- return 'resolved';
303
- case 'cancelled':
304
- return 'cancelled';
297
+ case "idle":
298
+ case "submitting":
299
+ case "error":
300
+ return "pending";
301
+ case "resolved":
302
+ return "resolved";
303
+ case "cancelled":
304
+ return "cancelled";
305
305
  default:
306
- return 'pending';
306
+ return "pending";
307
307
  }
308
308
  }
@@ -6,11 +6,11 @@
6
6
  *
7
7
  * @module types/playground
8
8
  */
9
- import type { ConfigProperty } from './index.js';
9
+ import type { ConfigProperty } from "./index.js";
10
10
  /**
11
11
  * Status of a playground session
12
12
  */
13
- export type PlaygroundSessionStatus = 'idle' | 'running' | 'awaiting_input' | 'completed' | 'failed';
13
+ export type PlaygroundSessionStatus = "idle" | "running" | "awaiting_input" | "completed" | "failed";
14
14
  /**
15
15
  * Statuses that stop polling by default (resource efficiency)
16
16
  */
@@ -43,15 +43,15 @@ export declare function defaultIsTerminalStatus(status: PlaygroundSessionStatus)
43
43
  * - `system`: System notifications
44
44
  * - `log`: Execution log entries
45
45
  */
46
- export type PlaygroundMessageRole = 'user' | 'assistant' | 'system' | 'log';
46
+ export type PlaygroundMessageRole = "user" | "assistant" | "system" | "log";
47
47
  /**
48
48
  * Log level for log-type messages
49
49
  */
50
- export type PlaygroundMessageLevel = 'info' | 'warning' | 'error' | 'debug';
50
+ export type PlaygroundMessageLevel = "info" | "warning" | "error" | "debug";
51
51
  /**
52
52
  * Status of a playground message
53
53
  */
54
- export type PlaygroundMessageStatus = 'pending' | 'processing' | 'completed' | 'failed';
54
+ export type PlaygroundMessageStatus = "pending" | "processing" | "completed" | "failed";
55
55
  /**
56
56
  * Playground session representing a test conversation
57
57
  *
@@ -217,7 +217,7 @@ export interface PlaygroundConfig {
217
217
  /** Show timestamps on messages (default: true) */
218
218
  showTimestamps?: boolean;
219
219
  /** Show log messages inline or in collapsible section (default: "collapsible") */
220
- logDisplayMode?: 'inline' | 'collapsible';
220
+ logDisplayMode?: "inline" | "collapsible";
221
221
  /** Enable markdown rendering in messages (default: true) */
222
222
  enableMarkdown?: boolean;
223
223
  /**
@@ -303,7 +303,7 @@ export declare function hasEnableRunFlag(metadata: PlaygroundMessageMetadata | u
303
303
  /**
304
304
  * Display mode for the Playground component
305
305
  */
306
- export type PlaygroundMode = 'embedded' | 'standalone' | 'modal';
306
+ export type PlaygroundMode = "embedded" | "standalone" | "modal";
307
307
  /**
308
308
  * Chat input detection patterns for identifying chat nodes in workflows
309
309
  */
@@ -10,19 +10,19 @@
10
10
  * Statuses that stop polling by default (resource efficiency)
11
11
  */
12
12
  export const DEFAULT_STOP_POLLING_STATUSES = [
13
- 'idle',
14
- 'completed',
15
- 'failed',
16
- 'awaiting_input'
13
+ "idle",
14
+ "completed",
15
+ "failed",
16
+ "awaiting_input",
17
17
  ];
18
18
  /**
19
19
  * Statuses that are considered terminal by default (clears isExecuting)
20
20
  */
21
21
  export const DEFAULT_TERMINAL_STATUSES = [
22
- 'idle',
23
- 'completed',
24
- 'failed',
25
- 'awaiting_input'
22
+ "idle",
23
+ "completed",
24
+ "failed",
25
+ "awaiting_input",
26
26
  ];
27
27
  /**
28
28
  * Default implementation for determining if polling should stop.
@@ -63,7 +63,7 @@ export function defaultIsTerminalStatus(status) {
63
63
  * };
64
64
  * ```
65
65
  */
66
- export const ENABLE_RUN_METADATA_KEY = 'enableRun';
66
+ export const ENABLE_RUN_METADATA_KEY = "enableRun";
67
67
  /**
68
68
  * Check if a message metadata contains the enableRun flag
69
69
  *
@@ -77,11 +77,11 @@ export function hasEnableRunFlag(metadata) {
77
77
  * Chat input detection patterns for identifying chat nodes in workflows
78
78
  */
79
79
  export const CHAT_INPUT_PATTERNS = [
80
- 'chat_input',
81
- 'text_input',
82
- 'user_input',
83
- 'message_input',
84
- 'prompt_input'
80
+ "chat_input",
81
+ "text_input",
82
+ "user_input",
83
+ "message_input",
84
+ "prompt_input",
85
85
  ];
86
86
  /**
87
87
  * Check if a node type is a chat input node
@@ -12,11 +12,11 @@
12
12
  * - 'dark': Force dark theme
13
13
  * - 'auto': Follow system preference
14
14
  */
15
- export type ThemePreference = 'light' | 'dark' | 'auto';
15
+ export type ThemePreference = "light" | "dark" | "auto";
16
16
  /**
17
17
  * Resolved theme (actual applied theme, never 'auto')
18
18
  */
19
- export type ResolvedTheme = 'light' | 'dark';
19
+ export type ResolvedTheme = "light" | "dark";
20
20
  /**
21
21
  * Theme-related settings
22
22
  */
@@ -55,6 +55,8 @@ export interface UISettings {
55
55
  sidebarCollapsed: boolean;
56
56
  /** Enable compact mode for denser UI */
57
57
  compactMode: boolean;
58
+ /** Active theme name — overridden by the theme prop when explicitly provided */
59
+ theme: "default" | "minimal";
58
60
  }
59
61
  /**
60
62
  * Application behavior and automation settings
@@ -171,7 +173,7 @@ export declare const SETTINGS_STORAGE_KEY = "flowdrop-settings";
171
173
  /**
172
174
  * API sync status
173
175
  */
174
- export type SyncStatus = 'idle' | 'syncing' | 'synced' | 'error';
176
+ export type SyncStatus = "idle" | "syncing" | "synced" | "error";
175
177
  /**
176
178
  * Settings store state including sync metadata
177
179
  */
@@ -9,26 +9,32 @@
9
9
  /**
10
10
  * All available settings categories
11
11
  */
12
- export const SETTINGS_CATEGORIES = ['theme', 'editor', 'ui', 'behavior', 'api'];
12
+ export const SETTINGS_CATEGORIES = [
13
+ "theme",
14
+ "editor",
15
+ "ui",
16
+ "behavior",
17
+ "api",
18
+ ];
13
19
  /**
14
20
  * Human-readable labels for settings categories
15
21
  */
16
22
  export const SETTINGS_CATEGORY_LABELS = {
17
- theme: 'Theme',
18
- editor: 'Editor',
19
- ui: 'UI',
20
- behavior: 'Behavior',
21
- api: 'API'
23
+ theme: "Theme",
24
+ editor: "Editor",
25
+ ui: "UI",
26
+ behavior: "Behavior",
27
+ api: "API",
22
28
  };
23
29
  /**
24
30
  * Icons for settings categories (Iconify icon names)
25
31
  */
26
32
  export const SETTINGS_CATEGORY_ICONS = {
27
- theme: 'mdi:palette',
28
- editor: 'mdi:grid',
29
- ui: 'mdi:view-dashboard',
30
- behavior: 'mdi:cog-play',
31
- api: 'mdi:api'
33
+ theme: "mdi:palette",
34
+ editor: "mdi:grid",
35
+ ui: "mdi:view-dashboard",
36
+ behavior: "mdi:cog-play",
37
+ api: "mdi:api",
32
38
  };
33
39
  // =========================================================================
34
40
  // Default Settings
@@ -37,7 +43,7 @@ export const SETTINGS_CATEGORY_ICONS = {
37
43
  * Default theme settings
38
44
  */
39
45
  export const DEFAULT_THEME_SETTINGS = {
40
- preference: 'dark'
46
+ preference: "dark",
41
47
  };
42
48
  /**
43
49
  * Default editor settings
@@ -50,7 +56,7 @@ export const DEFAULT_EDITOR_SETTINGS = {
50
56
  defaultZoom: 1,
51
57
  fitViewOnLoad: true,
52
58
  proximityConnect: false,
53
- proximityConnectDistance: 150
59
+ proximityConnectDistance: 150,
54
60
  };
55
61
  /**
56
62
  * Default UI settings
@@ -58,7 +64,8 @@ export const DEFAULT_EDITOR_SETTINGS = {
58
64
  export const DEFAULT_UI_SETTINGS = {
59
65
  sidebarWidth: 280,
60
66
  sidebarCollapsed: false,
61
- compactMode: false
67
+ compactMode: false,
68
+ theme: "default",
62
69
  };
63
70
  /**
64
71
  * Default behavior settings
@@ -67,7 +74,7 @@ export const DEFAULT_BEHAVIOR_SETTINGS = {
67
74
  autoSave: false,
68
75
  autoSaveInterval: 30000,
69
76
  undoHistoryLimit: 50,
70
- confirmDelete: false
77
+ confirmDelete: false,
71
78
  };
72
79
  /**
73
80
  * Default API settings
@@ -76,7 +83,7 @@ export const DEFAULT_API_SETTINGS = {
76
83
  timeout: 30000,
77
84
  retryEnabled: true,
78
85
  retryAttempts: 3,
79
- cacheEnabled: false
86
+ cacheEnabled: false,
80
87
  };
81
88
  /**
82
89
  * Complete default settings object
@@ -86,7 +93,7 @@ export const DEFAULT_SETTINGS = {
86
93
  editor: DEFAULT_EDITOR_SETTINGS,
87
94
  ui: DEFAULT_UI_SETTINGS,
88
95
  behavior: DEFAULT_BEHAVIOR_SETTINGS,
89
- api: DEFAULT_API_SETTINGS
96
+ api: DEFAULT_API_SETTINGS,
90
97
  };
91
98
  // =========================================================================
92
99
  // Settings Persistence Types
@@ -94,4 +101,4 @@ export const DEFAULT_SETTINGS = {
94
101
  /**
95
102
  * localStorage key for persisting settings
96
103
  */
97
- export const SETTINGS_STORAGE_KEY = 'flowdrop-settings';
104
+ export const SETTINGS_STORAGE_KEY = "flowdrop-settings";
@@ -0,0 +1,31 @@
1
+ export interface FlowDropSkinTokens {
2
+ /** Keys are --fd-* token names without the prefix, values are CSS values.
3
+ * e.g. { 'radius-md': '4px', 'primary': '#8b5cf6' }
4
+ *
5
+ * Display-control tokens (toggle visual variants via CSS):
6
+ * 'node-icon-display' — 'flex' | 'none' (squircle icon wrapper)
7
+ * 'node-circle-display' — 'flex' | 'none' (circle dot)
8
+ * 'sidebar-search-display' — 'flex' | 'none'
9
+ * 'sidebar-header-display' — 'flex' | 'none'
10
+ * 'sidebar-card-display' — 'block' | 'none' (accordion card list)
11
+ * 'sidebar-flat-display' — 'block' | 'none' (flat dot-name list)
12
+ *
13
+ * Port color token:
14
+ * 'port-skin-color' — when set, overrides all port handle colors (e.g. 'var(--fd-muted-foreground)')
15
+ * leave unset (default) to use per-type colors from getDataTypeColor()
16
+ */
17
+ [tokenName: string]: string;
18
+ }
19
+ export interface FlowDropSkin {
20
+ /** Optional base skin name. When set, its tokens are used as a base and merged
21
+ * with any inline tokens provided. Useful for extending a built-in skin:
22
+ * @example
23
+ * <App skin={{ name: 'minimal', tokens: { primary: '#e11d48' } }} />
24
+ */
25
+ name?: FlowDropSkinName | (string & {});
26
+ /** CSS token overrides injected as :root rules — active in light mode (and as base) */
27
+ tokens?: FlowDropSkinTokens;
28
+ /** CSS token overrides injected as [data-theme='dark'] rules — active in dark mode only */
29
+ darkTokens?: FlowDropSkinTokens;
30
+ }
31
+ export type FlowDropSkinName = "default" | "slate";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,35 @@
1
+ import type { FlowDropSkin } from "./skin.js";
2
+ /**
3
+ * Behavioral configuration bundled with a theme.
4
+ * These are initial-state flags, not CSS — they control runtime defaults.
5
+ */
6
+ export interface FlowDropThemeConfig {
7
+ sidebar?: {
8
+ /** Whether the sidebar starts open. Defaults to true. */
9
+ defaultOpen?: boolean;
10
+ /** Whether category <details> accordion sections start open in card mode. Defaults to false. */
11
+ categoriesDefaultOpen?: boolean;
12
+ };
13
+ }
14
+ /**
15
+ * A FlowDrop theme bundles a visual skin (CSS tokens) with UI config (behavioral defaults).
16
+ *
17
+ * Built-in themes: 'default' | 'minimal'
18
+ *
19
+ * @example
20
+ * // Use a built-in theme by name
21
+ * <App theme="minimal" />
22
+ *
23
+ * @example
24
+ * // Extend a built-in theme with custom token overrides
25
+ * <App theme={{ name: 'minimal', skin: { tokens: { primary: '#e11d48' } } }} />
26
+ */
27
+ export interface FlowDropTheme {
28
+ /** Optional built-in theme name used as a merge base */
29
+ name?: FlowDropThemeName | (string & {});
30
+ /** Visual skin — CSS token overrides */
31
+ skin?: FlowDropSkin;
32
+ /** Behavioral configuration defaults */
33
+ config?: FlowDropThemeConfig;
34
+ }
35
+ export type FlowDropThemeName = "default" | "minimal";
@@ -0,0 +1 @@
1
+ export {};
@@ -35,7 +35,7 @@
35
35
  * Supported UISchema element types.
36
36
  * Designed for future extension with HorizontalLayout, Categorization, etc.
37
37
  */
38
- export type UISchemaElementType = 'VerticalLayout' | 'Group' | 'Control';
38
+ export type UISchemaElementType = "VerticalLayout" | "Group" | "Control";
39
39
  /**
40
40
  * Base interface for all UISchema elements.
41
41
  */
@@ -53,7 +53,7 @@ export interface UISchemaElementBase {
53
53
  * ```
54
54
  */
55
55
  export interface UISchemaControl extends UISchemaElementBase {
56
- type: 'Control';
56
+ type: "Control";
57
57
  /**
58
58
  * JSON Pointer to the property in the data schema.
59
59
  * Must follow the format: #/properties/<fieldName>
@@ -81,7 +81,7 @@ export interface UISchemaControl extends UISchemaElementBase {
81
81
  * ```
82
82
  */
83
83
  export interface UISchemaVerticalLayout extends UISchemaElementBase {
84
- type: 'VerticalLayout';
84
+ type: "VerticalLayout";
85
85
  /** Child elements to render vertically */
86
86
  elements: UISchemaElement[];
87
87
  }
@@ -105,7 +105,7 @@ export interface UISchemaVerticalLayout extends UISchemaElementBase {
105
105
  * ```
106
106
  */
107
107
  export interface UISchemaGroup extends UISchemaElementBase {
108
- type: 'Group';
108
+ type: "Group";
109
109
  /** Display label for the fieldset legend / summary */
110
110
  label: string;
111
111
  /** Child elements within the group */