@flowdrop/flowdrop 2.0.0-beta.1 → 2.0.0-beta.3

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 (149) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/MIGRATION-2.0.md +173 -3
  3. package/dist/api/enhanced-client.js +6 -11
  4. package/dist/components/App.svelte +22 -45
  5. package/dist/components/App.svelte.d.ts +2 -7
  6. package/dist/components/CanvasIconButton.svelte +76 -0
  7. package/dist/components/CanvasIconButton.svelte.d.ts +18 -0
  8. package/dist/components/ConfigForm.svelte +6 -21
  9. package/dist/components/ConfigPanel.svelte +4 -3
  10. package/dist/components/LogoWordmark.svelte +113 -0
  11. package/dist/components/LogoWordmark.svelte.d.ts +26 -0
  12. package/dist/components/Navbar.svelte +8 -59
  13. package/dist/components/NodeSidebar.svelte +4 -11
  14. package/dist/components/NodeSwapPicker.svelte +0 -2
  15. package/dist/components/PipelineStatus.svelte +6 -1
  16. package/dist/components/PipelineStatus.svelte.d.ts +3 -0
  17. package/dist/components/PortMappingRow.svelte +0 -2
  18. package/dist/components/SchemaForm.svelte +4 -14
  19. package/dist/components/SettingsModal.svelte +0 -5
  20. package/dist/components/SettingsPanel.svelte +2 -6
  21. package/dist/components/ThemeToggle.svelte +0 -5
  22. package/dist/components/UniversalNode.svelte +32 -1
  23. package/dist/components/WorkflowEditor.svelte +66 -52
  24. package/dist/components/WorkflowEditor.svelte.d.ts +21 -0
  25. package/dist/components/chat/AIChatPanel.svelte +7 -2
  26. package/dist/components/console/ConsoleAutocomplete.svelte +1 -1
  27. package/dist/components/console/ConsoleOutput.svelte +2 -2
  28. package/dist/components/form/FormArray.svelte +0 -16
  29. package/dist/components/form/FormAutocomplete.svelte +18 -15
  30. package/dist/components/form/FormCheckboxGroup.svelte +0 -4
  31. package/dist/components/form/FormCodeEditor.svelte +9 -7
  32. package/dist/components/form/FormFieldLight.svelte +33 -4
  33. package/dist/components/form/FormFieldLight.svelte.d.ts +12 -0
  34. package/dist/components/form/FormMarkdownEditor.svelte +8 -5
  35. package/dist/components/form/FormNumberField.svelte +0 -4
  36. package/dist/components/form/FormRangeField.svelte +1 -20
  37. package/dist/components/form/FormSelect.svelte +10 -6
  38. package/dist/components/form/FormTemplateEditor.svelte +6 -4
  39. package/dist/components/form/FormTextField.svelte +10 -6
  40. package/dist/components/form/FormTextarea.svelte +10 -6
  41. package/dist/components/form/FormToggle.svelte +0 -4
  42. package/dist/components/form/FormUISchemaRenderer.svelte +3 -1
  43. package/dist/components/icons/CommandLineIcon.svelte +15 -0
  44. package/dist/components/icons/CommandLineIcon.svelte.d.ts +26 -0
  45. package/dist/components/icons/MenuIcon.svelte +4 -0
  46. package/dist/components/icons/MenuIcon.svelte.d.ts +26 -0
  47. package/dist/components/icons/MenuOpenIcon.svelte +6 -0
  48. package/dist/components/icons/MenuOpenIcon.svelte.d.ts +26 -0
  49. package/dist/components/interrupt/ChoicePrompt.svelte +0 -10
  50. package/dist/components/interrupt/ConfirmationPrompt.svelte +0 -5
  51. package/dist/components/interrupt/InterruptBubble.svelte +11 -12
  52. package/dist/components/interrupt/ReviewPrompt.svelte +0 -20
  53. package/dist/components/interrupt/TextInputPrompt.svelte +0 -6
  54. package/dist/components/layouts/MainLayout.svelte +4 -5
  55. package/dist/components/nodes/AtomNode.svelte +46 -34
  56. package/dist/components/nodes/GatewayNode.svelte +91 -99
  57. package/dist/components/nodes/IdeaNode.svelte +62 -90
  58. package/dist/components/nodes/NodeConfigButton.svelte +86 -0
  59. package/dist/components/nodes/NodeConfigButton.svelte.d.ts +15 -0
  60. package/dist/components/nodes/NotesNode.svelte +70 -81
  61. package/dist/components/nodes/SimpleNode.svelte +28 -78
  62. package/dist/components/nodes/SquareNode.svelte +79 -109
  63. package/dist/components/nodes/TerminalNode.svelte +28 -86
  64. package/dist/components/nodes/ToolNode.svelte +82 -95
  65. package/dist/components/nodes/WorkflowNode.svelte +91 -100
  66. package/dist/components/playground/ChatInput.svelte +0 -1
  67. package/dist/components/playground/InputCollector.svelte +0 -2
  68. package/dist/components/playground/PipelineKanbanView.svelte +4 -2
  69. package/dist/components/playground/PipelineKanbanView.svelte.d.ts +2 -0
  70. package/dist/components/playground/PipelinePanel.svelte +20 -3
  71. package/dist/components/playground/PipelinePanel.svelte.d.ts +2 -0
  72. package/dist/components/playground/PipelineTableView.svelte +4 -2
  73. package/dist/components/playground/PipelineTableView.svelte.d.ts +2 -0
  74. package/dist/components/playground/Playground.svelte +76 -25
  75. package/dist/components/playground/Playground.svelte.d.ts +3 -0
  76. package/dist/components/playground/PlaygroundApp.svelte +6 -1
  77. package/dist/components/playground/PlaygroundApp.svelte.d.ts +3 -0
  78. package/dist/components/playground/PlaygroundModal.svelte +5 -0
  79. package/dist/components/playground/PlaygroundModal.svelte.d.ts +3 -0
  80. package/dist/components/playground/PlaygroundStudio.svelte +7 -6
  81. package/dist/components/playground/PlaygroundStudio.svelte.d.ts +3 -0
  82. package/dist/components/playground/pipelineViewUtils.svelte.d.ts +2 -1
  83. package/dist/components/playground/pipelineViewUtils.svelte.js +2 -2
  84. package/dist/config/endpoints.d.ts +23 -0
  85. package/dist/config/endpoints.js +28 -0
  86. package/dist/core/index.d.ts +1 -2
  87. package/dist/core/index.js +2 -6
  88. package/dist/display/index.d.ts +6 -1
  89. package/dist/display/index.js +9 -1
  90. package/dist/editor/index.d.ts +1 -1
  91. package/dist/editor/index.js +1 -1
  92. package/dist/form/full.d.ts +2 -1
  93. package/dist/form/full.js +4 -1
  94. package/dist/form/index.d.ts +0 -1
  95. package/dist/form/index.js +3 -2
  96. package/dist/helpers/workflowEditorHelper.d.ts +4 -2
  97. package/dist/helpers/workflowEditorHelper.js +4 -3
  98. package/dist/playground/index.d.ts +2 -2
  99. package/dist/playground/index.js +2 -2
  100. package/dist/playground/mount.d.ts +19 -5
  101. package/dist/playground/mount.js +16 -8
  102. package/dist/registry/builtinNodeTypes.d.ts +53 -0
  103. package/dist/registry/builtinNodeTypes.js +67 -0
  104. package/dist/registry/builtinNodes.d.ts +2 -39
  105. package/dist/registry/builtinNodes.js +6 -53
  106. package/dist/services/agentSpecExecutionService.d.ts +0 -2
  107. package/dist/services/agentSpecExecutionService.js +0 -2
  108. package/dist/services/apiVariableService.js +12 -26
  109. package/dist/services/categoriesApi.js +3 -6
  110. package/dist/services/chatService.d.ts +4 -3
  111. package/dist/services/chatService.js +13 -18
  112. package/dist/services/interruptService.d.ts +7 -6
  113. package/dist/services/interruptService.js +19 -21
  114. package/dist/services/playgroundService.d.ts +9 -8
  115. package/dist/services/playgroundService.js +23 -25
  116. package/dist/services/portConfigApi.js +3 -6
  117. package/dist/services/settingsService.d.ts +9 -4
  118. package/dist/services/settingsService.js +23 -12
  119. package/dist/skins/drafter.d.ts +30 -0
  120. package/dist/skins/drafter.js +185 -0
  121. package/dist/skins/index.d.ts +2 -1
  122. package/dist/skins/index.js +4 -2
  123. package/dist/stores/apiContext.d.ts +11 -0
  124. package/dist/stores/apiContext.js +15 -0
  125. package/dist/stores/categoriesStore.svelte.js +0 -1
  126. package/dist/stores/playgroundStore.svelte.js +0 -2
  127. package/dist/styles/base.css +38 -9
  128. package/dist/styles/tokens.css +54 -2
  129. package/dist/svelte-app.d.ts +6 -0
  130. package/dist/svelte-app.js +4 -2
  131. package/dist/themes/drafter.d.ts +2 -0
  132. package/dist/themes/drafter.js +15 -0
  133. package/dist/themes/index.d.ts +2 -1
  134. package/dist/themes/index.js +8 -2
  135. package/dist/types/auth.d.ts +9 -51
  136. package/dist/types/auth.js +4 -54
  137. package/dist/types/events.d.ts +18 -0
  138. package/dist/types/events.js +2 -1
  139. package/dist/types/index.d.ts +4 -2
  140. package/dist/types/index.js +0 -1
  141. package/dist/types/settings.d.ts +1 -1
  142. package/dist/types/settings.js +1 -1
  143. package/dist/types/skin.d.ts +1 -1
  144. package/dist/types/theme.d.ts +16 -2
  145. package/dist/utils/edgeStyling.js +9 -5
  146. package/dist/utils/fetchWithAuth.d.ts +36 -15
  147. package/dist/utils/fetchWithAuth.js +53 -23
  148. package/dist/utils/nodeTypes.js +1 -1
  149. package/package.json +2 -1
@@ -0,0 +1,113 @@
1
+ <!--
2
+ FlowDrop horizontal lockup: rocket mark + "FlowDrop" wordmark.
3
+ Theme-aware via the same --fd-logo-* variables as Logo.svelte, plus
4
+ --fd-logo-text for the wordmark glyphs.
5
+ -->
6
+ <div class="flowdrop-logo-wordmark">
7
+ <svg viewBox="0 0 2500 499.99999" version="1.1" xmlns="http://www.w3.org/2000/svg">
8
+ <g transform="translate(472.2413,571.30469)">
9
+ <g transform="matrix(1.2053353,0,0,1.2053353,-1246.7763,-599.46548)">
10
+ <path
11
+ style="fill:var(--logo-line-fill);stroke-width:10;stroke-dasharray:none"
12
+ d="M 850,120 V 310 Z"
13
+ />
14
+ <path
15
+ style="fill:var(--logo-line-fill);stroke:var(--logo-stroke);stroke-width:16.59289328;stroke-dasharray:none;stroke-opacity:1"
16
+ d="M 850,110 V 310"
17
+ />
18
+ <path
19
+ style="fill:none;stroke:var(--logo-stroke);stroke-width:14.98546028;stroke-dasharray:none;stroke-opacity:1"
20
+ d="m 850,158.973 v 36.70355 8.15635 c 0,0 1.19184,39.5038 -36.01255,65.25076 -29.46481,20.39086 -52.3819,16.31269 -55.65576,65.25076 v 44.8599"
21
+ />
22
+ <path
23
+ style="fill:none;stroke:var(--logo-stroke);stroke-width:15.05060005;stroke-dasharray:none;stroke-opacity:1"
24
+ d="m 850,158.973 v 37.02335 8.22741 c 0,0 -1.19184,39.84799 36.01255,65.81929 29.46481,20.56853 52.3819,16.45482 55.65576,65.81929 v 45.25076"
25
+ />
26
+ <path
27
+ d="m 849.41763,64.456369 25.36824,31.087262 c 6.23336,6.364119 10.06921,15.063569 10.06921,24.656839 0,19.50109 -15.85132,35.30988 -35.42373,35.30988 -19.57241,0 -35.43242,-15.80879 -35.43242,-35.30988 0,-9.49405 3.75813,-18.11351 9.87536,-24.458879 z"
28
+ style="fill:var(--logo-drop);stroke:var(--logo-stroke);stroke-width:16.59289932;stroke-dasharray:none;paint-order:fill"
29
+ />
30
+ <circle
31
+ style="fill:var(--logo-circle);stroke:var(--logo-stroke);stroke-width:16.59289932;stroke-dasharray:none"
32
+ cx="849.427"
33
+ cy="326.5929"
34
+ r="30"
35
+ />
36
+ <ellipse
37
+ style="fill:var(--logo-left);stroke:var(--logo-stroke);stroke-width:16.59289932;stroke-dasharray:none"
38
+ cx="759.99994"
39
+ cy="369.44669"
40
+ rx="29.999952"
41
+ ry="30.000004"
42
+ />
43
+ <ellipse
44
+ style="fill:var(--logo-right);stroke:var(--logo-stroke);stroke-width:16.59289932;stroke-dasharray:none"
45
+ cx="939.99963"
46
+ cy="369.44669"
47
+ rx="29.999952"
48
+ ry="30.000004"
49
+ />
50
+ </g>
51
+ </g>
52
+ <g aria-label="FlowDrop" style="font-size:400.327px;fill:var(--logo-text);stroke-width:10.4252">
53
+ <path
54
+ d="M 710.85926,99.779646 V 116.59025 H 584.38877 v 92.65381 h 91.48097 v 16.81061 H 584.38877 V 358.97574 H 540.79848 V 99.779646 Z"
55
+ style="fill:var(--logo-text)"
56
+ />
57
+ <path
58
+ d="M 788.07077,358.97574 H 748.19445 V 68.113156 L 776.53791,56.77577 h 11.53286 z"
59
+ style="fill:var(--logo-text)"
60
+ />
61
+ <path
62
+ d="m 950.50815,363.27613 q -23.06571,0 -42.41746,-8.01436 -19.35174,-8.01436 -33.42574,-21.69741 -14.07399,-13.87853 -22.08835,-32.25291 -7.81889,-18.56986 -7.81889,-39.68085 0,-22.08835 7.81889,-41.4401 8.01436,-19.54722 22.08835,-34.01216 14.074,-14.46494 33.42574,-22.67477 19.35175,-8.4053 42.41746,-8.4053 22.87025,0 42.02652,7.62341 19.35173,7.62342 33.42573,20.91553 14.074,13.2921 21.8929,31.27554 8.0144,17.78797 8.0144,38.31255 0,22.67477 -8.0144,42.8084 -7.8189,19.93816 -21.8929,34.98952 -14.074,14.85588 -33.42573,23.65213 -19.15627,8.60078 -42.02652,8.60078 z m 7.62342,-14.66042 q 11.72833,0 21.50194,-6.05963 9.77361,-6.05964 16.8106,-16.22419 7.03699,-10.36003 10.94649,-23.84761 3.9094,-13.48758 3.9094,-28.53893 0,-21.69741 -3.714,-40.65821 -3.7139,-18.9608 -12.11925,-33.0348 -8.4053,-14.074 -21.89288,-22.08835 -13.48758,-8.20984 -32.83932,-8.20984 -9.96908,0 -19.35175,5.86417 -9.38266,5.66869 -16.61513,15.63777 -7.037,9.96908 -11.33739,23.45666 -4.30039,13.29211 -4.30039,28.34347 0,21.89288 4.49586,41.04915 4.69134,19.15627 13.48758,33.42574 8.99172,14.26947 21.69741,22.67477 12.90117,8.20983 29.32083,8.20983 z"
63
+ style="fill:var(--logo-text)"
64
+ />
65
+ <path
66
+ d="m 1122.7191,158.81224 63.333,146.21318 62.7465,-146.21318 63.1375,146.21318 55.9051,-146.21318 h 19.1563 l -81.7074,202.31369 h -13.4876 l -55.905,-130.77088 -56.1005,130.77088 h -12.3148 l -87.5715,-202.31369 z"
67
+ style="fill:var(--logo-text)"
68
+ />
69
+ <path
70
+ d="m 1424.9191,99.779646 h 86.3987 q 39.8763,0 68.6107,7.427944 28.7345,7.42794 47.8907,23.8476 21.8929,18.76533 32.8394,43.00388 11.1419,24.23855 11.1419,52.97296 0,27.3661 -9.9691,51.40918 -9.7736,24.04307 -28.9299,42.02651 -18.9608,17.78797 -47.1088,28.14799 -27.9525,10.36003 -64.1149,10.36003 h -96.7587 z m 43.5903,240.235294 h 46.3269 q 21.8929,0 41.2446,-7.23247 19.3518,-7.23247 33.6213,-21.50194 14.4649,-14.26947 22.6747,-34.98952 8.4053,-20.91552 8.4053,-48.28162 0,-24.04308 -7.8189,-43.98124 -7.8188,-20.13363 -21.8928,-34.59857 -14.074,-14.46494 -33.6213,-22.4793 -19.3517,-8.01436 -42.4174,-8.01436 h -46.5224 z"
71
+ style="fill:var(--logo-text)"
72
+ />
73
+ <path
74
+ d="m 1758.7855,155.09827 h 6.0597 l 5.2777,40.85368 q 4.6914,-8.99172 11.7283,-16.41966 7.037,-7.42794 15.4424,-12.90116 8.6007,-5.47322 17.9834,-8.40531 9.5781,-3.12755 19.3517,-3.12755 8.7963,0 17.2016,2.34567 8.6008,2.34566 16.0287,7.42794 l -12.5102,33.42574 q -3.9095,-4.30039 -8.2098,-6.84153 -4.3004,-2.73661 -8.7963,-4.10491 -4.4959,-1.56378 -9.1872,-1.95472 -4.6913,-0.39095 -9.3827,-0.39095 -7.4279,0 -14.6604,2.15019 -7.037,2.1502 -13.4875,6.45059 -6.4506,4.10491 -11.9238,10.75097 -5.4733,6.45058 -9.5782,15.24682 v 139.37166 h -39.6808 V 166.04471 Z"
75
+ style="fill:var(--logo-text)"
76
+ />
77
+ <path
78
+ d="m 1995.6979,363.27613 q -23.0658,0 -42.4175,-8.01436 -19.3518,-8.01436 -33.4257,-21.69741 -14.074,-13.87853 -22.0884,-32.25291 -7.8189,-18.56986 -7.8189,-39.68085 0,-22.08835 7.8189,-41.4401 8.0144,-19.54722 22.0884,-34.01216 14.0739,-14.46494 33.4257,-22.67477 19.3517,-8.4053 42.4175,-8.4053 22.8702,0 42.0265,7.62341 19.3517,7.62342 33.4257,20.91553 14.074,13.2921 21.8929,31.27554 8.0143,17.78797 8.0143,38.31255 0,22.67477 -8.0143,42.8084 -7.8189,19.93816 -21.8929,34.98952 -14.074,14.85588 -33.4257,23.65213 -19.1563,8.60078 -42.0265,8.60078 z m 7.6234,-14.66042 q 11.7283,0 21.5019,-6.05963 9.7736,-6.05964 16.8106,-16.22419 7.037,-10.36003 10.9465,-23.84761 3.9094,-13.48758 3.9094,-28.53893 0,-21.69741 -3.714,-40.65821 -3.7139,-18.9608 -12.1192,-33.0348 -8.4054,-14.074 -21.8929,-22.08835 -13.4876,-8.20984 -32.8394,-8.20984 -9.969,0 -19.3517,5.86417 -9.3827,5.66869 -16.6151,15.63777 -7.037,9.96908 -11.3374,23.45666 -4.3004,13.29211 -4.3004,28.34347 0,21.89288 4.4959,41.04915 4.6913,19.15627 13.4875,33.42574 8.9918,14.26947 21.6974,22.67477 12.9012,8.20983 29.3209,8.20983 z"
79
+ style="fill:var(--logo-text)"
80
+ />
81
+ <path
82
+ d="m 2186.0877,155.09827 h 11.3374 v 44.9586 q 6.0596,-7.62342 13.2921,-15.63778 7.4279,-8.01435 16.2242,-14.46494 8.9917,-6.64605 19.7427,-10.75097 10.7509,-4.10491 23.4566,-4.10491 17.788,0 32.2529,7.42794 14.465,7.42794 24.6295,20.13363 10.3601,12.7057 15.8333,29.90725 5.6687,17.00607 5.6687,36.35782 0,24.82496 -6.8416,45.93596 -6.8415,20.91552 -19.5472,36.16235 -12.7057,15.24683 -30.8846,23.8476 -18.1789,8.40531 -40.6582,8.40531 -8.2098,0 -15.4423,-0.97736 -7.037,-0.78189 -13.4876,-2.54114 -6.2551,-1.75925 -12.3147,-4.49586 -5.8642,-2.73661 -11.9238,-6.64606 v 94.60853 h -39.8763 V 166.24018 Z m 11.3374,149.92715 q 0,8.99172 3.9094,17.00608 3.9095,7.81889 10.9465,13.87852 7.037,5.86417 16.8106,9.38267 9.7736,3.32302 21.5019,3.32302 11.1419,0 20.9155,-5.66869 9.9691,-5.66869 17.2016,-16.02872 7.4279,-10.55549 11.5328,-25.02043 4.3004,-14.46494 4.3004,-32.05744 0,-22.08835 -3.9094,-38.50802 -3.9095,-16.61513 -10.9465,-27.56157 -6.8415,-10.94644 -16.4196,-16.41966 -9.3827,-5.47322 -20.7201,-5.47322 -8.6007,0 -16.6151,2.73661 -7.8189,2.54113 -14.8559,7.03699 -7.037,4.49586 -13.0966,10.36003 -5.8642,5.86416 -10.5555,12.31475 z"
83
+ style="fill:var(--logo-text)"
84
+ />
85
+ </g>
86
+ </svg>
87
+ </div>
88
+
89
+ <style>
90
+ .flowdrop-logo-wordmark {
91
+ --logo-stroke: var(--fd-logo-stroke, #000000);
92
+ --logo-text: var(--fd-logo-text, #000000);
93
+ --logo-line-fill: var(--fd-logo-line-fill, #000000);
94
+ --logo-drop: var(--fd-logo-drop, #009cde);
95
+ --logo-circle: var(--fd-logo-circle, #f46351);
96
+ --logo-left: var(--fd-logo-left, #ccbaf4);
97
+ --logo-right: var(--fd-logo-right, #ffc423);
98
+ }
99
+
100
+ :global([data-theme='dark']) .flowdrop-logo-wordmark {
101
+ /* Stroke, wordmark, and the center line go white in dark; the brand-color
102
+ dots (drop/circle/left/right) keep their fills, same as light mode. */
103
+ --logo-stroke: var(--fd-logo-stroke, #ffffff);
104
+ --logo-text: var(--fd-logo-text, #ffffff);
105
+ --logo-line-fill: var(--fd-logo-line-fill, #ffffff);
106
+ }
107
+
108
+ .flowdrop-logo-wordmark :global(svg) {
109
+ display: block;
110
+ width: 100%;
111
+ height: 100%;
112
+ }
113
+ </style>
@@ -0,0 +1,26 @@
1
+ export default LogoWordmark;
2
+ type LogoWordmark = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const LogoWordmark: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ 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> {
15
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
16
+ $$bindings?: Bindings;
17
+ } & Exports;
18
+ (internal: unknown, props: {
19
+ $$events?: Events;
20
+ $$slots?: Slots;
21
+ }): Exports & {
22
+ $set?: any;
23
+ $on?: any;
24
+ };
25
+ z_$$bindings?: Bindings;
26
+ }
@@ -8,7 +8,7 @@
8
8
 
9
9
  <script lang="ts">
10
10
  import Icon from '@iconify/svelte';
11
- import Logo from './Logo.svelte';
11
+ import LogoWordmark from './LogoWordmark.svelte';
12
12
  import SettingsModal from './SettingsModal.svelte';
13
13
  import type { SettingsCategory } from '../types/settings.js';
14
14
  import type { NavbarAction } from '../types/navbar.js';
@@ -97,16 +97,10 @@
97
97
 
98
98
  <div class="flowdrop-navbar">
99
99
  <div class="flowdrop-navbar__start">
100
- <!-- Logo and Title -->
100
+ <!-- Logo (rocket + FlowDrop wordmark) -->
101
101
  <div class="flowdrop-logo--container">
102
- <div class="flowdrop-flex flowdrop-gap--3">
103
- <div class="flowdrop-logo--header">
104
- <Logo />
105
- </div>
106
- <div>
107
- <h1 class="flowdrop-text--logo flowdrop-font--bold">{nav.appName}</h1>
108
- <p class="flowdrop-text--tagline flowdrop-text--gray">{nav.tagline}</p>
109
- </div>
102
+ <div class="flowdrop-logo--header">
103
+ <LogoWordmark />
110
104
  </div>
111
105
  </div>
112
106
  </div>
@@ -331,10 +325,10 @@
331
325
  }
332
326
 
333
327
  .flowdrop-logo--header {
334
- width: 40px;
335
- height: 40px;
336
- font-size: 1.25rem;
337
- padding: 2px;
328
+ /* Wordmark lockup is 5:1; keep it within the start column. */
329
+ height: 32px;
330
+ width: 160px;
331
+ padding: 2px 0;
338
332
  }
339
333
 
340
334
  .flowdrop-navbar__center {
@@ -724,11 +718,6 @@
724
718
  border-color: var(--fd-border-strong);
725
719
  }
726
720
 
727
- .flowdrop-navbar__settings-btn:focus {
728
- outline: none;
729
- box-shadow: 0 0 0 2px var(--fd-ring);
730
- }
731
-
732
721
  .flowdrop-navbar__settings-btn:active {
733
722
  transform: scale(0.95);
734
723
  }
@@ -753,38 +742,6 @@
753
742
  background-color: var(--fd-success);
754
743
  }
755
744
 
756
- /* Utility classes */
757
- .flowdrop-flex {
758
- display: flex;
759
- }
760
-
761
- .flowdrop-gap--3 {
762
- gap: 0.75rem;
763
- }
764
-
765
- .flowdrop-text--logo {
766
- font-size: 1.125rem;
767
- line-height: 0;
768
- }
769
-
770
- .flowdrop-text--tagline {
771
- font-size: var(--fd-text-xs);
772
- line-height: 0.5rem;
773
- }
774
-
775
- .flowdrop-text--xs {
776
- font-size: var(--fd-text-xs);
777
- line-height: 1rem;
778
- }
779
-
780
- .flowdrop-text--gray {
781
- color: var(--fd-muted-foreground);
782
- }
783
-
784
- .flowdrop-font--bold {
785
- font-weight: 700;
786
- }
787
-
788
745
  /* Responsive design */
789
746
  @media (max-width: 768px) {
790
747
  .flowdrop-navbar {
@@ -834,14 +791,6 @@
834
791
  border-radius: var(--fd-radius-md) 0 0 var(--fd-radius-md);
835
792
  }
836
793
 
837
- .flowdrop-text--logo {
838
- display: none;
839
- }
840
-
841
- .flowdrop-text--tagline {
842
- display: none;
843
- }
844
-
845
794
  .flowdrop-navbar__title-text {
846
795
  font-size: 0.875rem;
847
796
  max-width: 300px;
@@ -408,7 +408,8 @@
408
408
  /* Components Sidebar - Always Visible */
409
409
  .flowdrop-sidebar {
410
410
  height: calc(100vh - var(--fd-navbar-height)); /* Account for navbar height */
411
- background-color: var(--fd-background);
411
+ background-color: var(--fd-panel-bg);
412
+ backdrop-filter: var(--fd-panel-backdrop-filter);
412
413
  border-right: 1px solid var(--fd-border);
413
414
  display: flex;
414
415
  flex-direction: column;
@@ -460,7 +461,7 @@
460
461
 
461
462
  .flowdrop-sidebar__search {
462
463
  padding: 0.75rem 1rem;
463
- background-color: var(--fd-background);
464
+ background-color: transparent;
464
465
  border-bottom: 1px solid var(--fd-border);
465
466
  display: var(--fd-sidebar-search-display, block);
466
467
  }
@@ -485,7 +486,7 @@
485
486
 
486
487
  .flowdrop-sidebar__content::-webkit-scrollbar-thumb {
487
488
  background: var(--fd-scrollbar-thumb);
488
- border-radius: 4px;
489
+ border-radius: var(--fd-scrollbar-radius);
489
490
  min-height: 20px; /* Ensure thumb has minimum height for visibility */
490
491
  }
491
492
 
@@ -610,9 +611,7 @@
610
611
  }
611
612
 
612
613
  .flowdrop-input:focus {
613
- outline: none;
614
614
  border-color: var(--fd-ring);
615
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-ring) 20%, transparent);
616
615
  }
617
616
 
618
617
  .flowdrop-input::placeholder {
@@ -648,11 +647,6 @@
648
647
  border-color: var(--fd-muted-foreground);
649
648
  }
650
649
 
651
- .flowdrop-btn:focus {
652
- outline: none;
653
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-ring) 20%, transparent);
654
- }
655
-
656
650
  .flowdrop-btn:disabled {
657
651
  background-color: var(--fd-muted-foreground);
658
652
  border-color: var(--fd-muted-foreground);
@@ -693,7 +687,6 @@
693
687
 
694
688
  .flowdrop-join:focus-within {
695
689
  border-color: var(--fd-ring);
696
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-ring) 20%, transparent);
697
690
  }
698
691
 
699
692
  /* Utility classes */
@@ -313,9 +313,7 @@
313
313
  }
314
314
 
315
315
  .swap-picker__input:focus {
316
- outline: none;
317
316
  border-color: var(--fd-ring);
318
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-ring) 20%, transparent);
319
317
  }
320
318
 
321
319
  .swap-picker__input::placeholder {
@@ -12,6 +12,7 @@
12
12
  import { createEndpointConfig } from '../config/endpoints.js';
13
13
  import type { Workflow } from '../types/index.js';
14
14
  import type { EndpointConfig } from '../config/endpoints.js';
15
+ import type { AuthProvider } from '../types/auth.js';
15
16
  import { logger } from '../utils/logger.js';
16
17
  import { m } from '../messages/index.js';
17
18
 
@@ -21,6 +22,8 @@
21
22
  apiClient?: EnhancedFlowDropApiClient;
22
23
  baseUrl?: string;
23
24
  endpointConfig?: EndpointConfig;
25
+ /** Auth provider used when this component builds its own API client from endpointConfig/baseUrl. */
26
+ authProvider?: AuthProvider;
24
27
  runLabel?: string;
25
28
  /** When true, suppresses breadcrumb and layout events (used inside playground panel) */
26
29
  isEmbedded?: boolean;
@@ -43,6 +46,7 @@
43
46
  apiClient,
44
47
  baseUrl,
45
48
  endpointConfig,
49
+ authProvider,
46
50
  onActionsReady,
47
51
  runLabel,
48
52
  isEmbedded = false,
@@ -59,7 +63,8 @@
59
63
  const client =
60
64
  apiClient ||
61
65
  new EnhancedFlowDropApiClient(
62
- endpointConfig ?? createEndpointConfig(baseUrl || '/api/flowdrop')
66
+ endpointConfig ?? createEndpointConfig(baseUrl || '/api/flowdrop'),
67
+ authProvider
63
68
  );
64
69
 
65
70
  // Pipeline status — drives breadcrumb label and the 5s poll while running
@@ -1,12 +1,15 @@
1
1
  import { EnhancedFlowDropApiClient } from '../api/enhanced-client.js';
2
2
  import type { Workflow } from '../types/index.js';
3
3
  import type { EndpointConfig } from '../config/endpoints.js';
4
+ import type { AuthProvider } from '../types/auth.js';
4
5
  interface Props {
5
6
  pipelineId: string;
6
7
  workflow: Workflow;
7
8
  apiClient?: EnhancedFlowDropApiClient;
8
9
  baseUrl?: string;
9
10
  endpointConfig?: EndpointConfig;
11
+ /** Auth provider used when this component builds its own API client from endpointConfig/baseUrl. */
12
+ authProvider?: AuthProvider;
10
13
  runLabel?: string;
11
14
  /** When true, suppresses breadcrumb and layout events (used inside playground panel) */
12
15
  isEmbedded?: boolean;
@@ -136,9 +136,7 @@
136
136
  }
137
137
 
138
138
  .port-mapping-row__select:focus {
139
- outline: none;
140
139
  border-color: var(--fd-ring);
141
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-ring) 20%, transparent);
142
140
  }
143
141
 
144
142
  .port-mapping-row__select--dropped {
@@ -59,9 +59,11 @@
59
59
  import type { ConfigSchema, AuthProvider } from '../types/index.js';
60
60
  import type { UISchemaElement } from '../types/uischema.js';
61
61
  import { provideInstance } from '../stores/getInstance.svelte.js';
62
- import { FormField } from './form/index.js';
62
+ // Registry-based light field factory — heavy editors (CodeMirror) are resolved
63
+ // at runtime via fd.fields, so importing SchemaForm never statically pulls them.
64
+ import FormField from './form/FormFieldLight.svelte';
63
65
  import FormUISchemaRenderer from './form/FormUISchemaRenderer.svelte';
64
- import type { FieldSchema } from './form/index.js';
66
+ import type { FieldSchema } from './form/types.js';
65
67
  import { m } from '../messages/index.js';
66
68
  import { mergeWithDefaults, cascadeClearAutocompleteDependents } from '../utils/formMerge.js';
67
69
 
@@ -471,11 +473,6 @@
471
473
  color: var(--fd-foreground);
472
474
  }
473
475
 
474
- .schema-form__button--secondary:focus-visible {
475
- outline: none;
476
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);
477
- }
478
-
479
476
  .schema-form__button--primary {
480
477
  background: linear-gradient(135deg, var(--fd-primary) 0%, var(--fd-primary-hover) 100%);
481
478
  color: var(--fd-primary-foreground);
@@ -496,13 +493,6 @@
496
493
  transform: translateY(0);
497
494
  }
498
495
 
499
- .schema-form__button--primary:focus-visible {
500
- outline: none;
501
- box-shadow:
502
- 0 0 0 3px rgba(59, 130, 246, 0.4),
503
- 0 4px 12px rgba(59, 130, 246, 0.35);
504
- }
505
-
506
496
  .schema-form__button-spinner {
507
497
  width: 1rem;
508
498
  height: 1rem;
@@ -259,11 +259,6 @@
259
259
  color: var(--fd-foreground);
260
260
  }
261
261
 
262
- .flowdrop-settings-modal__close:focus {
263
- outline: none;
264
- box-shadow: 0 0 0 2px var(--fd-ring);
265
- }
266
-
267
262
  /* Content */
268
263
  .flowdrop-settings-modal__content {
269
264
  flex: 1;
@@ -198,7 +198,8 @@
198
198
  description: 'Visual style and layout of the editor',
199
199
  oneOf: [
200
200
  { const: 'default', title: 'Default' },
201
- { const: 'minimal', title: 'Minimal' }
201
+ { const: 'minimal', title: 'Minimal' },
202
+ { const: 'drafter', title: 'Drafter' }
202
203
  ],
203
204
  default: 'default'
204
205
  }
@@ -538,11 +539,6 @@
538
539
  color: var(--fd-primary-foreground);
539
540
  }
540
541
 
541
- .flowdrop-settings-panel__tab:focus {
542
- outline: none;
543
- box-shadow: 0 0 0 2px var(--fd-ring);
544
- }
545
-
546
542
  :global(.flowdrop-settings-panel__tab-icon) {
547
543
  font-size: var(--fd-text-base);
548
544
  }
@@ -135,11 +135,6 @@
135
135
  border-color: var(--fd-border-strong);
136
136
  }
137
137
 
138
- .flowdrop-theme-toggle:focus {
139
- outline: none;
140
- box-shadow: 0 0 0 2px var(--fd-ring);
141
- }
142
-
143
138
  .flowdrop-theme-toggle:active {
144
139
  transform: scale(0.98);
145
140
  }
@@ -17,6 +17,9 @@
17
17
 
18
18
  const fd = getInstance();
19
19
 
20
+ // Element ref used only to reach xyflow's node wrapper (our ancestor).
21
+ let universalNodeEl: HTMLDivElement;
22
+
20
23
  let {
21
24
  data,
22
25
  selected = false
@@ -61,6 +64,34 @@
61
64
  shouldShowNodeStatus(executionInfo) && resolvedComponentName !== 'note'
62
65
  );
63
66
 
67
+ // Keyboard activation lives on xyflow's node wrapper — the single focusable,
68
+ // arrow-movable element SvelteFlow manages. Because the wrapper is our
69
+ // ancestor, its keydown events never bubble down into our markup, so we bind
70
+ // directly to it. Enter/Space opens the node's config, mirroring the
71
+ // double-click (and single-click for square/atom) mouse paths. Node selection
72
+ // and arrow-key movement remain SvelteFlow's job.
73
+ $effect(() => {
74
+ const wrapper = universalNodeEl?.closest<HTMLElement>('.svelte-flow__node');
75
+ if (!wrapper) return;
76
+
77
+ function onWrapperKeydown(event: KeyboardEvent): void {
78
+ // Only when the node itself is focused — not an inner field (e.g. an
79
+ // editable note) — so we don't hijack typing.
80
+ if (event.target !== wrapper) return;
81
+ if (event.key === 'Enter' || event.key === ' ') {
82
+ event.preventDefault();
83
+ data.onConfigOpen?.({
84
+ id: data.nodeId ?? 'unknown',
85
+ type: resolvedComponentName,
86
+ data
87
+ });
88
+ }
89
+ }
90
+
91
+ wrapper.addEventListener('keydown', onWrapperKeydown);
92
+ return () => wrapper.removeEventListener('keydown', onWrapperKeydown);
93
+ });
94
+
64
95
  /**
65
96
  * Get the node component for the given type from the registry.
66
97
  *
@@ -129,7 +160,7 @@
129
160
  }
130
161
  </script>
131
162
 
132
- <div class="universal-node">
163
+ <div class="universal-node" bind:this={universalNodeEl}>
133
164
  <!-- Render the node component dynamically (Svelte 5 dynamic component syntax) -->
134
165
  {#if nodeComponent}
135
166
  <!-- Svelte 5 dynamic component limitation; reactivity maintained via $derived -->