@d34dman/flowdrop 0.0.43 → 0.0.45

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 (97) hide show
  1. package/README.md +8 -8
  2. package/dist/api/enhanced-client.d.ts +3 -1
  3. package/dist/api/enhanced-client.js +35 -5
  4. package/dist/components/App.svelte +68 -34
  5. package/dist/components/ConfigForm.svelte +169 -142
  6. package/dist/components/ConfigForm.svelte.d.ts +4 -2
  7. package/dist/components/ConfigPanel.svelte +42 -15
  8. package/dist/components/LogsSidebar.svelte +20 -19
  9. package/dist/components/Navbar.svelte +150 -80
  10. package/dist/components/Navbar.svelte.d.ts +8 -0
  11. package/dist/components/NodeSidebar.svelte +334 -217
  12. package/dist/components/PipelineStatus.svelte +6 -1
  13. package/dist/components/ReadOnlyDetails.svelte +14 -14
  14. package/dist/components/SchemaForm.svelte +49 -30
  15. package/dist/components/SchemaForm.svelte.d.ts +11 -1
  16. package/dist/components/SettingsModal.svelte +279 -0
  17. package/dist/components/SettingsModal.svelte.d.ts +23 -0
  18. package/dist/components/SettingsPanel.svelte +615 -0
  19. package/dist/components/SettingsPanel.svelte.d.ts +21 -0
  20. package/dist/components/ThemeToggle.svelte +186 -0
  21. package/dist/components/ThemeToggle.svelte.d.ts +14 -0
  22. package/dist/components/WorkflowEditor.svelte +114 -38
  23. package/dist/components/form/FormArray.svelte +81 -81
  24. package/dist/components/form/FormAutocomplete.svelte +1014 -0
  25. package/dist/components/form/FormAutocomplete.svelte.d.ts +25 -0
  26. package/dist/components/form/FormCheckboxGroup.svelte +16 -16
  27. package/dist/components/form/FormCodeEditor.svelte +26 -26
  28. package/dist/components/form/FormField.svelte +52 -21
  29. package/dist/components/form/FormFieldLight.svelte +19 -19
  30. package/dist/components/form/FormFieldWrapper.svelte +4 -4
  31. package/dist/components/form/FormMarkdownEditor.svelte +124 -57
  32. package/dist/components/form/FormNumberField.svelte +13 -13
  33. package/dist/components/form/FormRangeField.svelte +16 -16
  34. package/dist/components/form/FormSelect.svelte +15 -15
  35. package/dist/components/form/FormTemplateEditor.svelte +34 -34
  36. package/dist/components/form/FormTextField.svelte +13 -13
  37. package/dist/components/form/FormTextarea.svelte +13 -13
  38. package/dist/components/form/FormToggle.svelte +8 -8
  39. package/dist/components/form/index.d.ts +1 -0
  40. package/dist/components/form/index.js +1 -0
  41. package/dist/components/form/types.d.ts +133 -8
  42. package/dist/components/form/types.js +50 -1
  43. package/dist/components/interrupt/ChoicePrompt.svelte +45 -38
  44. package/dist/components/interrupt/ConfirmationPrompt.svelte +35 -35
  45. package/dist/components/interrupt/FormPrompt.svelte +27 -20
  46. package/dist/components/interrupt/InterruptBubble.svelte +50 -50
  47. package/dist/components/interrupt/TextInputPrompt.svelte +39 -32
  48. package/dist/components/layouts/MainLayout.svelte +233 -34
  49. package/dist/components/layouts/MainLayout.svelte.d.ts +12 -0
  50. package/dist/components/nodes/GatewayNode.svelte +175 -125
  51. package/dist/components/nodes/IdeaNode.svelte +70 -84
  52. package/dist/components/nodes/NotesNode.svelte +124 -88
  53. package/dist/components/nodes/SimpleNode.svelte +91 -69
  54. package/dist/components/nodes/SquareNode.svelte +102 -75
  55. package/dist/components/nodes/TerminalNode.svelte +127 -113
  56. package/dist/components/nodes/ToolNode.svelte +125 -76
  57. package/dist/components/nodes/WorkflowNode.svelte +164 -108
  58. package/dist/components/playground/ChatPanel.svelte +76 -76
  59. package/dist/components/playground/ExecutionLogs.svelte +71 -69
  60. package/dist/components/playground/InputCollector.svelte +59 -59
  61. package/dist/components/playground/MessageBubble.svelte +111 -112
  62. package/dist/components/playground/Playground.svelte +184 -138
  63. package/dist/components/playground/PlaygroundModal.svelte +18 -19
  64. package/dist/components/playground/SessionManager.svelte +68 -67
  65. package/dist/config/defaultPortConfig.js +22 -22
  66. package/dist/core/index.d.ts +2 -0
  67. package/dist/core/index.js +1 -0
  68. package/dist/form/fieldRegistry.d.ts +17 -1
  69. package/dist/form/fieldRegistry.js +18 -2
  70. package/dist/form/index.d.ts +20 -2
  71. package/dist/form/index.js +19 -1
  72. package/dist/helpers/nodeLayoutHelper.d.ts +14 -0
  73. package/dist/helpers/nodeLayoutHelper.js +19 -0
  74. package/dist/helpers/workflowEditorHelper.js +23 -11
  75. package/dist/index.d.ts +5 -0
  76. package/dist/index.js +13 -0
  77. package/dist/services/autoSaveService.d.ts +112 -0
  78. package/dist/services/autoSaveService.js +223 -0
  79. package/dist/services/settingsService.d.ts +92 -0
  80. package/dist/services/settingsService.js +202 -0
  81. package/dist/services/toastService.d.ts +9 -0
  82. package/dist/services/toastService.js +30 -1
  83. package/dist/stores/settingsStore.d.ts +128 -0
  84. package/dist/stores/settingsStore.js +488 -0
  85. package/dist/stores/themeStore.d.ts +68 -0
  86. package/dist/stores/themeStore.js +215 -0
  87. package/dist/styles/base.css +338 -621
  88. package/dist/styles/toast.css +33 -0
  89. package/dist/styles/tokens.css +402 -0
  90. package/dist/types/index.d.ts +78 -0
  91. package/dist/types/index.js +2 -0
  92. package/dist/types/playground.d.ts +12 -0
  93. package/dist/types/settings.d.ts +185 -0
  94. package/dist/types/settings.js +101 -0
  95. package/dist/utils/colors.d.ts +100 -7
  96. package/dist/utils/colors.js +228 -67
  97. package/package.json +2 -2
@@ -0,0 +1,33 @@
1
+ /**
2
+ * FlowDrop Toast Theme
3
+ *
4
+ * Themes svelte-5-french-toast to match FlowDrop design tokens.
5
+ * Apply containerClassName="flowdrop-toaster" and default toastOptions.className="flowdrop-toast-bar"
6
+ * so these selectors apply. Icon colors are set via toastOptions.iconTheme using CSS variables.
7
+ *
8
+ * Uses !important so our token-based styles win over the library's default styles,
9
+ * which are injected when the Toaster mounts (after this stylesheet).
10
+ */
11
+
12
+ /* Toaster container: use design token for offset from viewport edges */
13
+ .flowdrop-toaster.flowdrop-toaster {
14
+ --default-offset: var(--fd-space-4, 16px);
15
+ }
16
+
17
+ /*
18
+ * Toast bar: card surface, border, radius, shadow, typography and spacing from design tokens.
19
+ * Plain descendant selector (no :global - that's Svelte-only and invalid in plain CSS).
20
+ */
21
+ .flowdrop-toaster.flowdrop-toaster .flowdrop-toast-bar {
22
+ background: var(--fd-card) !important;
23
+ color: var(--fd-card-foreground) !important;
24
+ border: 1px solid var(--fd-border) !important;
25
+ border-radius: var(--fd-radius-lg) !important;
26
+ box-shadow: var(--fd-shadow-md) !important;
27
+ padding: var(--fd-space-2) var(--fd-space-3) !important;
28
+ max-width: 350px;
29
+ font-size: var(--fd-text-sm);
30
+ line-height: 1.3;
31
+ transition: background var(--fd-transition-fast), border-color var(--fd-transition-fast),
32
+ box-shadow var(--fd-transition-fast);
33
+ }
@@ -0,0 +1,402 @@
1
+ /**
2
+ * FlowDrop Design Tokens
3
+ *
4
+ * A semantic-first token system with three tiers:
5
+ * 1. Internal palette (--_*) - Raw color values, not documented for users
6
+ * 2. Semantic tokens (--fd-*) - The public API for theming
7
+ * 3. Component tokens - Built using semantic tokens
8
+ *
9
+ * Users customize FlowDrop by overriding --fd-* tokens.
10
+ *
11
+ * @example Quick theming
12
+ * :root {
13
+ * --fd-primary: #8b5cf6;
14
+ * --fd-primary-hover: #7c3aed;
15
+ * --fd-radius-md: 0.5rem;
16
+ * }
17
+ */
18
+
19
+ :root {
20
+ /* =========================================================================
21
+ INTERNAL PALETTE (Private - not documented for users)
22
+ Prefix: --_ indicates internal/private tokens
23
+ ========================================================================= */
24
+
25
+ /* Grays - Tinted scale with subtle blue undertone for modern feel, 9 steps */
26
+ --_gray-1: #fafafc;
27
+ --_gray-2: #f5f5f8;
28
+ --_gray-3: #eaeaef;
29
+ --_gray-4: #dcdce4;
30
+ --_gray-5: #a3a3ad;
31
+ --_gray-6: #71717b;
32
+ --_gray-7: #52525c;
33
+ --_gray-8: #27272b;
34
+ --_gray-9: #18181c;
35
+
36
+ /* Blue - Primary/interactive color */
37
+ --_blue-1: #eff6ff;
38
+ --_blue-2: #3b82f6;
39
+ --_blue-3: #1d4ed8;
40
+
41
+ /* Green - Success states */
42
+ --_green-1: #f0fdf4;
43
+ --_green-2: #22c55e;
44
+ --_green-3: #15803d;
45
+
46
+ /* Red - Error/destructive states */
47
+ --_red-1: #fef2f2;
48
+ --_red-2: #ef4444;
49
+ --_red-3: #b91c1c;
50
+
51
+ /* Amber - Warning states */
52
+ --_amber-1: #fffbeb;
53
+ --_amber-2: #f59e0b;
54
+ --_amber-3: #b45309;
55
+
56
+ /* Violet - Selection/accent */
57
+ --_violet-1: #f5f3ff;
58
+ --_violet-2: #8b5cf6;
59
+ --_violet-3: #6d28d9;
60
+
61
+ /* =========================================================================
62
+ SEMANTIC TOKENS (Public API)
63
+ These are the tokens users override for theming
64
+ ========================================================================= */
65
+
66
+ /* ----- SURFACES (Backgrounds) ----- */
67
+ --fd-background: #ffffff;
68
+ --fd-foreground: var(--_gray-9);
69
+ --fd-muted: #f8f8fb;
70
+ --fd-muted-foreground: var(--_gray-6);
71
+ --fd-subtle: #f0f0f5;
72
+ --fd-card: #ffffff;
73
+ --fd-card-foreground: var(--_gray-9);
74
+
75
+ /* ----- HEADER (Distinct header styling) ----- */
76
+ --fd-header: #f5f7fa;
77
+ --fd-header-foreground: var(--_gray-8);
78
+ --fd-header-gradient: linear-gradient(180deg, #f8f9fc 0%, #f4f5f8 100%);
79
+
80
+ /* ----- SURFACE TINT (Subtle accent for surfaces) ----- */
81
+ --fd-surface-tint: rgba(99, 102, 241, 0.02);
82
+
83
+ /* ----- BORDERS ----- */
84
+ --fd-border: var(--_gray-4);
85
+ --fd-border-muted: var(--_gray-3);
86
+ --fd-border-strong: var(--_gray-5);
87
+ --fd-ring: var(--_blue-2);
88
+
89
+ /* ----- NODE BORDERS (Higher contrast for visibility when zoomed out) ----- */
90
+ --fd-node-border: var(--_gray-5);
91
+ --fd-node-border-hover: var(--_gray-6);
92
+
93
+ /* ----- PRIMARY (Interactive/Brand) ----- */
94
+ --fd-primary: var(--_blue-2);
95
+ --fd-primary-hover: var(--_blue-3);
96
+ --fd-primary-foreground: #ffffff;
97
+ --fd-primary-muted: var(--_blue-1);
98
+
99
+ /* ----- SECONDARY ----- */
100
+ --fd-secondary: var(--_gray-2);
101
+ --fd-secondary-hover: var(--_gray-3);
102
+ --fd-secondary-foreground: var(--_gray-9);
103
+
104
+ /* ----- ACCENT ----- */
105
+ --fd-accent: var(--_violet-2);
106
+ --fd-accent-hover: var(--_violet-3);
107
+ --fd-accent-foreground: #ffffff;
108
+ --fd-accent-muted: var(--_violet-1);
109
+
110
+ /* ----- STATUS: SUCCESS ----- */
111
+ --fd-success: var(--_green-2);
112
+ --fd-success-hover: var(--_green-3);
113
+ --fd-success-foreground: #ffffff;
114
+ --fd-success-muted: var(--_green-1);
115
+
116
+ /* ----- STATUS: WARNING ----- */
117
+ --fd-warning: var(--_amber-2);
118
+ --fd-warning-hover: var(--_amber-3);
119
+ --fd-warning-foreground: var(--_gray-9);
120
+ --fd-warning-muted: var(--_amber-1);
121
+
122
+ /* ----- STATUS: ERROR/DESTRUCTIVE ----- */
123
+ --fd-error: var(--_red-2);
124
+ --fd-error-hover: var(--_red-3);
125
+ --fd-error-foreground: #ffffff;
126
+ --fd-error-muted: var(--_red-1);
127
+
128
+ /* ----- STATUS: INFO ----- */
129
+ --fd-info: var(--_blue-2);
130
+ --fd-info-foreground: #ffffff;
131
+ --fd-info-muted: var(--_blue-1);
132
+
133
+ /* ----- SPACING SCALE ----- */
134
+ --fd-space-0: 0;
135
+ --fd-space-1: 0.25rem;
136
+ /* 4px */
137
+ --fd-space-2: 0.5rem;
138
+ /* 8px */
139
+ --fd-space-3: 0.75rem;
140
+ /* 12px */
141
+ --fd-space-4: 1rem;
142
+ /* 16px */
143
+ --fd-space-5: 1.25rem;
144
+ /* 20px */
145
+ --fd-space-6: 1.5rem;
146
+ /* 24px */
147
+ --fd-space-8: 2rem;
148
+ /* 32px */
149
+ --fd-space-10: 2.5rem;
150
+ /* 40px */
151
+ --fd-space-12: 3rem;
152
+ /* 48px */
153
+ --fd-space-16: 4rem;
154
+ /* 64px */
155
+
156
+ /* ----- BORDER RADIUS ----- */
157
+ --fd-radius-none: 0;
158
+ --fd-radius-sm: 0.25rem;
159
+ /* 4px */
160
+ --fd-radius-md: 0.375rem;
161
+ /* 6px */
162
+ --fd-radius-lg: 0.5rem;
163
+ /* 8px */
164
+ --fd-radius-xl: 0.75rem;
165
+ /* 12px */
166
+ --fd-radius-2xl: 1rem;
167
+ /* 16px */
168
+ --fd-radius-full: 9999px;
169
+
170
+ /* ----- SHADOWS (Refined layered shadows for modern depth) ----- */
171
+ --fd-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.04), 0 1px 3px rgb(0 0 0 / 0.06);
172
+ --fd-shadow-md: 0 4px 8px rgb(0 0 0 / 0.06), 0 2px 4px rgb(0 0 0 / 0.04);
173
+ --fd-shadow-lg: 0 10px 20px rgb(0 0 0 / 0.08), 0 4px 8px rgb(0 0 0 / 0.04);
174
+ --fd-shadow-xl: 0 20px 30px rgb(0 0 0 / 0.1), 0 8px 16px rgb(0 0 0 / 0.06);
175
+
176
+ /* ----- FONT SIZES ----- */
177
+ --fd-text-xs: 0.75rem;
178
+ /* 12px */
179
+ --fd-text-sm: 0.875rem;
180
+ /* 14px */
181
+ --fd-text-base: 1rem;
182
+ /* 16px */
183
+ --fd-text-lg: 1.125rem;
184
+ /* 18px */
185
+ --fd-text-xl: 1.25rem;
186
+ /* 20px */
187
+ --fd-text-2xl: 1.5rem;
188
+ /* 24px */
189
+
190
+ /* ----- TRANSITIONS ----- */
191
+ --fd-transition-fast: 150ms ease;
192
+ --fd-transition-normal: 200ms ease;
193
+ --fd-transition-slow: 300ms ease;
194
+
195
+ /* =========================================================================
196
+ COMPONENT TOKENS
197
+ These provide fine-grained control while defaulting to semantic tokens
198
+ ========================================================================= */
199
+
200
+ /* ----- LAYOUT ----- */
201
+ --fd-sidebar-width: 320px;
202
+ --fd-navbar-height: 60px;
203
+ --fd-toolbar-height: 40px;
204
+
205
+ /* ----- NODE COLORS (for workflow editor) ----- */
206
+ --fd-node-emerald: #10b981;
207
+ --fd-node-blue: #2563eb;
208
+ --fd-node-amber: #f59e0b;
209
+ --fd-node-orange: #f97316;
210
+ --fd-node-red: #ef4444;
211
+ --fd-node-pink: #ec4899;
212
+ --fd-node-indigo: #6366f1;
213
+ --fd-node-teal: #14b8a6;
214
+ --fd-node-cyan: #06b6d4;
215
+ --fd-node-lime: #84cc16;
216
+ --fd-node-slate: #64748b;
217
+ --fd-node-purple: #9333ea;
218
+
219
+ /** Icon on node squircle: dark in light theme, white in dark theme */
220
+ --fd-node-icon: var(--_gray-9);
221
+ /** Opacity of the icon squircle background (color-mix percentage). Light mode: 15% / 22% hover; dark mode uses higher values. */
222
+ --fd-node-icon-bg-opacity: 20%;
223
+ --fd-node-icon-bg-opacity-hover: 50%;
224
+
225
+ /* ----- EDGE TOKENS ----- */
226
+ --fd-edge-trigger: var(--_gray-9);
227
+ --fd-edge-trigger-hover: var(--_gray-9);
228
+ --fd-edge-trigger-selected: var(--_violet-2);
229
+ --fd-edge-trigger-width: 2px;
230
+ --fd-edge-trigger-width-hover: 3px;
231
+
232
+ --fd-edge-tool: var(--_amber-2);
233
+ --fd-edge-tool-hover: var(--_amber-3);
234
+ --fd-edge-tool-selected: var(--_violet-2);
235
+
236
+ --fd-edge-data: var(--_gray-5);
237
+ --fd-edge-data-hover: var(--_gray-6);
238
+ --fd-edge-data-selected: var(--_violet-2);
239
+
240
+ --fd-edge-loopback: var(--_gray-6);
241
+ --fd-edge-loopback-hover: var(--_gray-7);
242
+ --fd-edge-loopback-selected: var(--_violet-2);
243
+ --fd-edge-loopback-width: 1.5px;
244
+ --fd-edge-loopback-width-hover: 2.5px;
245
+ --fd-edge-loopback-dasharray: 5 5;
246
+ --fd-edge-loopback-opacity: 0.85;
247
+
248
+ /* ----- SCROLLBAR COLORS ----- */
249
+ --fd-scrollbar-thumb: var(--_gray-4);
250
+ --fd-scrollbar-thumb-hover: var(--_gray-5);
251
+ --fd-scrollbar-track: var(--_gray-2);
252
+
253
+ /* ----- BACKDROP/OVERLAY ----- */
254
+ --fd-backdrop: rgba(255, 255, 255, 0.8);
255
+ --fd-backdrop-blur: blur(8px);
256
+
257
+ /* ----- HANDLE (Node connection points) ----- */
258
+ /* White ring around handles for contrast against node backgrounds */
259
+ --fd-handle-border: #ffffff;
260
+ /* Outer size = connection/hit area (px); visual = visible circle (px) */
261
+ --fd-handle-size: 20px;
262
+ --fd-handle-visual-size: 12px;
263
+
264
+ /* ----- NODE LAYOUT (Dimensions and port alignment; multiples of 10 for grid) ----- */
265
+ --fd-node-grid-step: 10;
266
+ --fd-node-default-width: 290px;
267
+ --fd-node-header-height: 60px;
268
+ --fd-node-header-title-height: 40px;
269
+ --fd-node-header-desc-line: 20px;
270
+ --fd-node-header-gap: 10px;
271
+ --fd-node-port-row-height: 20px;
272
+ --fd-node-terminal-size: 80px;
273
+ --fd-node-square-size: 80px;
274
+ --fd-node-simple-height: 80px;
275
+ --fd-node-tool-min-height: 80px;
276
+
277
+ /* ----- LAYOUT BACKGROUND (Main content area gradient) ----- */
278
+ --fd-layout-background: linear-gradient(135deg, #f9fafb 0%, #e0e7ff 50%, #c7d2fe 100%);
279
+ }
280
+
281
+ /* =========================================================================
282
+ DARK MODE
283
+ Users enable with: <html data-theme="dark">
284
+ Designed for softer contrast and reduced eye strain
285
+ ========================================================================= */
286
+
287
+ [data-theme="dark"] {
288
+ /* ----- SURFACES (Backgrounds) - Softer contrast ----- */
289
+ --fd-background: #1a1a1e;
290
+ --fd-foreground: var(--_gray-2);
291
+ --fd-muted: #242428;
292
+ --fd-muted-foreground: var(--_gray-4);
293
+ --fd-subtle: #2a2a30;
294
+ --fd-card: #222226;
295
+ --fd-card-foreground: var(--_gray-2);
296
+
297
+ /* ----- HEADER (Distinct header styling for dark mode) ----- */
298
+ --fd-header: #1f1f24;
299
+ --fd-header-foreground: var(--_gray-3);
300
+ --fd-header-gradient: linear-gradient(180deg, #222228 0%, #1e1e24 100%);
301
+
302
+ /* ----- SURFACE TINT (Subtle accent for surfaces) ----- */
303
+ --fd-surface-tint: rgba(99, 102, 241, 0.03);
304
+
305
+ /* ----- HANDLE (Node connection points) ----- */
306
+ /* White ring around handles provides contrast on dark node backgrounds */
307
+ --fd-handle-border: rgba(255, 255, 255, 0.9);
308
+
309
+ /* ----- BORDERS - Subtle in dark mode for softer contrast ----- */
310
+ --fd-border: #3a3a40;
311
+ --fd-border-muted: #2e2e33;
312
+ --fd-border-strong: #4a4a52;
313
+
314
+ /* ----- NODE BORDERS (Higher contrast for visibility when zoomed out) ----- */
315
+ --fd-node-border: #4a4a52;
316
+ --fd-node-border-hover: #5a5a62;
317
+
318
+ /* ----- NODE COLORS (port type labels/badges - lighter for readability on dark surfaces) ----- */
319
+ --fd-node-emerald: #34d399;
320
+ --fd-node-blue: #60a5fa;
321
+ --fd-node-amber: #fbbf24;
322
+ --fd-node-orange: #fb923c;
323
+ --fd-node-red: #f87171;
324
+ --fd-node-pink: #f472b6;
325
+ --fd-node-indigo: #818cf8;
326
+ --fd-node-teal: #2dd4bf;
327
+ --fd-node-cyan: #22d3ee;
328
+ --fd-node-lime: #a3e635;
329
+ --fd-node-slate: #94a3b8;
330
+ --fd-node-purple: #c084fc;
331
+
332
+ /** Icon on node squircle: white in dark theme */
333
+ --fd-node-icon: #ffffff;
334
+ /** Icon squircle background opacity: higher in dark mode for visibility on dark surfaces */
335
+ --fd-node-icon-bg-opacity: 50%;
336
+ --fd-node-icon-bg-opacity-hover: 80%;
337
+
338
+ /* ----- PRIMARY (Interactive/Brand) ----- */
339
+ --fd-primary: #60a5fa;
340
+ --fd-primary-hover: #93c5fd;
341
+ --fd-primary-foreground: var(--_gray-9);
342
+ --fd-primary-muted: rgba(59, 130, 246, 0.12);
343
+
344
+ /* ----- SECONDARY ----- */
345
+ --fd-secondary: #2d2d32;
346
+ --fd-secondary-hover: #3a3a3f;
347
+ --fd-secondary-foreground: var(--_gray-2);
348
+
349
+ /* ----- ACCENT ----- */
350
+ --fd-accent: #a78bfa;
351
+ --fd-accent-hover: #c4b5fd;
352
+ --fd-accent-foreground: var(--_gray-9);
353
+ --fd-accent-muted: rgba(139, 92, 246, 0.12);
354
+
355
+ /* ----- STATUS: SUCCESS ----- */
356
+ --fd-success: #4ade80;
357
+ --fd-success-hover: #86efac;
358
+ --fd-success-foreground: var(--_gray-9);
359
+ --fd-success-muted: rgba(34, 197, 94, 0.12);
360
+
361
+ /* ----- STATUS: WARNING ----- */
362
+ --fd-warning: #fbbf24;
363
+ --fd-warning-hover: #fcd34d;
364
+ --fd-warning-foreground: var(--_gray-9);
365
+ --fd-warning-muted: rgba(245, 158, 11, 0.12);
366
+
367
+ /* ----- STATUS: ERROR/DESTRUCTIVE ----- */
368
+ --fd-error: #f87171;
369
+ --fd-error-hover: #fca5a5;
370
+ --fd-error-foreground: var(--_gray-9);
371
+ --fd-error-muted: rgba(239, 68, 68, 0.12);
372
+
373
+ /* ----- STATUS: INFO ----- */
374
+ --fd-info: #60a5fa;
375
+ --fd-info-foreground: var(--_gray-9);
376
+ --fd-info-muted: rgba(59, 130, 246, 0.12);
377
+
378
+ /* ----- SHADOWS (softer for dark mode) ----- */
379
+ --fd-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.2);
380
+ --fd-shadow-md: 0 4px 6px rgb(0 0 0 / 0.25);
381
+ --fd-shadow-lg: 0 10px 15px rgb(0 0 0 / 0.3);
382
+ --fd-shadow-xl: 0 20px 25px rgb(0 0 0 / 0.4);
383
+
384
+ /* ----- SCROLLBAR COLORS ----- */
385
+ --fd-scrollbar-thumb: var(--_gray-5);
386
+ --fd-scrollbar-thumb-hover: var(--_gray-4);
387
+ --fd-scrollbar-track: #242428;
388
+
389
+ /* ----- BACKDROP/OVERLAY ----- */
390
+ --fd-backdrop: rgba(26, 26, 30, 0.85);
391
+
392
+ /* ----- EDGE TOKENS (adjusted for dark mode visibility) ----- */
393
+ --fd-edge-trigger: var(--_gray-3);
394
+ --fd-edge-trigger-hover: var(--_gray-2);
395
+ --fd-edge-data: var(--_gray-5);
396
+ --fd-edge-data-hover: var(--_gray-4);
397
+ --fd-edge-loopback: var(--_gray-5);
398
+ --fd-edge-loopback-hover: var(--_gray-4);
399
+
400
+ /* ----- LAYOUT BACKGROUND (darker gradient for dark mode) ----- */
401
+ --fd-layout-background: linear-gradient(135deg, #141418 0%, #1a1a2e 50%, #16162a 100%);
402
+ }
@@ -151,6 +151,80 @@ export type NodeType = BuiltinNodeType | (string & Record<never, never>);
151
151
  * HTTP method types for dynamic schema endpoints
152
152
  */
153
153
  export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH';
154
+ /**
155
+ * Autocomplete configuration for form fields
156
+ *
157
+ * Defines how autocomplete suggestions are fetched from a callback URL.
158
+ * Supports both "on-type" (debounced search) and "on-focus" (load all options) modes.
159
+ *
160
+ * @example
161
+ * ```typescript
162
+ * const autocompleteConfig: AutocompleteConfig = {
163
+ * url: "/api/users/search",
164
+ * queryParam: "q",
165
+ * minChars: 2,
166
+ * debounceMs: 300,
167
+ * fetchOnFocus: true,
168
+ * labelField: "name",
169
+ * valueField: "id",
170
+ * allowFreeText: false
171
+ * };
172
+ * ```
173
+ */
174
+ export interface AutocompleteConfig {
175
+ /**
176
+ * The callback URL to fetch autocomplete suggestions from.
177
+ * Can be relative (resolved against API base URL) or absolute.
178
+ */
179
+ url: string;
180
+ /**
181
+ * Query parameter name to pass the search term.
182
+ * @default "q"
183
+ */
184
+ queryParam?: string;
185
+ /**
186
+ * Minimum number of characters before fetching suggestions.
187
+ * Set to 0 to fetch immediately on focus (when fetchOnFocus is true).
188
+ * @default 0
189
+ */
190
+ minChars?: number;
191
+ /**
192
+ * Debounce delay in milliseconds before fetching suggestions.
193
+ * Prevents excessive API calls while typing.
194
+ * @default 300
195
+ */
196
+ debounceMs?: number;
197
+ /**
198
+ * Whether to fetch all options when the field is focused.
199
+ * When true, an empty query is sent on focus to load initial options.
200
+ * @default false
201
+ */
202
+ fetchOnFocus?: boolean;
203
+ /**
204
+ * The field name in the response objects to use as the display label.
205
+ * @default "label"
206
+ */
207
+ labelField?: string;
208
+ /**
209
+ * The field name in the response objects to use as the stored value.
210
+ * @default "value"
211
+ */
212
+ valueField?: string;
213
+ /**
214
+ * Whether to allow values that are not in the suggestions list.
215
+ * When true, users can enter and submit any text.
216
+ * When false, only values from suggestions are accepted.
217
+ * @default false
218
+ */
219
+ allowFreeText?: boolean;
220
+ /**
221
+ * Whether to allow multiple selections.
222
+ * When true, users can select multiple values displayed as tags.
223
+ * When false, only a single value can be selected.
224
+ * @default false
225
+ */
226
+ multiple?: boolean;
227
+ }
154
228
  /**
155
229
  * Dynamic schema endpoint configuration
156
230
  * Used when the config schema needs to be fetched at runtime from a REST endpoint
@@ -807,3 +881,7 @@ export interface WorkflowEvents {
807
881
  error: string;
808
882
  };
809
883
  }
884
+ export type { AuthProvider, StaticAuthConfig, CallbackAuthConfig } from './auth.js';
885
+ export { StaticAuthProvider, CallbackAuthProvider, NoAuthProvider } from './auth.js';
886
+ export type { FlowDropSettings, ThemeSettings, EditorSettings, UISettings, BehaviorSettings, ApiSettings, ThemePreference, ResolvedTheme, SettingsCategory, PartialSettings, SyncStatus, SettingsStoreState, SettingsChangeEvent, SettingsChangeCallback } from './settings.js';
887
+ export { DEFAULT_SETTINGS, DEFAULT_THEME_SETTINGS, DEFAULT_EDITOR_SETTINGS, DEFAULT_UI_SETTINGS, DEFAULT_BEHAVIOR_SETTINGS, DEFAULT_API_SETTINGS, SETTINGS_CATEGORIES, SETTINGS_CATEGORY_LABELS, SETTINGS_CATEGORY_ICONS, SETTINGS_STORAGE_KEY } from './settings.js';
@@ -18,3 +18,5 @@ export function dynamicPortToNodePort(port, portType) {
18
18
  description: port.description
19
19
  };
20
20
  }
21
+ export { StaticAuthProvider, CallbackAuthProvider, NoAuthProvider } from './auth.js';
22
+ export { DEFAULT_SETTINGS, DEFAULT_THEME_SETTINGS, DEFAULT_EDITOR_SETTINGS, DEFAULT_UI_SETTINGS, DEFAULT_BEHAVIOR_SETTINGS, DEFAULT_API_SETTINGS, SETTINGS_CATEGORIES, SETTINGS_CATEGORY_LABELS, SETTINGS_CATEGORY_ICONS, SETTINGS_STORAGE_KEY } from './settings.js';
@@ -219,6 +219,18 @@ export interface PlaygroundConfig {
219
219
  * Note: Only runs once per session - subsequent runs require clicking the Run button.
220
220
  */
221
221
  autoRun?: boolean;
222
+ /**
223
+ * Whether to show the sidebar with session list (default: true)
224
+ * When false, the sidebar is hidden, creating a minimal chat widget experience.
225
+ * Use with initialSessionId to load a pre-created session directly.
226
+ */
227
+ showSidebar?: boolean;
228
+ /**
229
+ * Whether to show the session header bar (default: true)
230
+ * When false, the header with session name and close button is hidden.
231
+ * Typically used together with showSidebar: false for minimal UI.
232
+ */
233
+ showSessionHeader?: boolean;
222
234
  }
223
235
  /**
224
236
  * Metadata field to control Run button state from backend.