@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
@@ -13,7 +13,11 @@
13
13
  import type { WorkflowNode, NodePort, Branch } from '../../types/index.js';
14
14
  import Icon from '@iconify/svelte';
15
15
  import { getNodeIcon } from '../../utils/icons.js';
16
- import { getDataTypeColorToken, getCategoryColorToken } from '../../utils/colors.js';
16
+ import {
17
+ getDataTypeColorToken,
18
+ getCategoryColorToken,
19
+ getPortBackgroundColor
20
+ } from '../../utils/colors.js';
17
21
  import { connectedHandles } from '../../stores/workflowStore.js';
18
22
 
19
23
  interface Props {
@@ -156,15 +160,18 @@
156
160
  aria-label="Gateway node: {displayTitle}"
157
161
  aria-describedby="node-description-{props.data.nodeId || 'unknown'}"
158
162
  >
159
- <!-- Node Header -->
163
+ <!-- Node Header: expands in multiples of 10 (title row 40px + gap 10px + description 20px per line) -->
160
164
  <div class="flowdrop-workflow-node__header">
161
- <div class="flowdrop-flex flowdrop-gap--3 flowdrop-items--center">
162
- <!-- Node Icon -->
165
+ <div class="flowdrop-workflow-node__header-title">
166
+ <!-- Node Icon with Squircle Background -->
163
167
  <div
164
- class="flowdrop-workflow-node__icon"
165
- style="background-color: {getCategoryColorToken(props.data.metadata.category)}"
168
+ class="flowdrop-workflow-node__icon-wrapper"
169
+ style="--_icon-color: {getCategoryColorToken(props.data.metadata.category)}"
166
170
  >
167
- <Icon icon={getNodeIcon(props.data.metadata.icon, props.data.metadata.category)} />
171
+ <Icon
172
+ icon={getNodeIcon(props.data.metadata.icon, props.data.metadata.category)}
173
+ class="flowdrop-workflow-node__icon"
174
+ />
168
175
  </div>
169
176
 
170
177
  <!-- Node Title - uses instanceTitle override if set -->
@@ -172,9 +179,9 @@
172
179
  {displayTitle}
173
180
  </h3>
174
181
  </div>
175
- <!-- Node Description - uses instanceDescription override if set -->
182
+ <!-- Node Description - line-height 20px so header grows in steps of 10 -->
176
183
  <p
177
- class="flowdrop-text--xs flowdrop-text--gray flowdrop-truncate flowdrop-mt--1"
184
+ class="flowdrop-workflow-node__header-desc"
178
185
  id="node-description-{props.data.nodeId || 'unknown'}"
179
186
  >
180
187
  {displayDescription}
@@ -184,33 +191,35 @@
184
191
  <!-- Input Ports Container (filtered based on hideUnconnectedHandles) -->
185
192
  {#if visibleInputPorts.length > 0}
186
193
  <div class="flowdrop-workflow-node__ports">
187
- <div class="flowdrop-workflow-node__ports-header">
188
- <h5 class="flowdrop-workflow-node__ports-title">Inputs</h5>
189
- </div>
190
194
  <div class="flowdrop-workflow-node__ports-list">
191
- {#each visibleInputPorts as port (port.id)}
195
+ {#each visibleInputPorts as port, inputIndex (port.id)}
192
196
  <div class="flowdrop-workflow-node__port">
193
- <!-- Input Handle -->
197
+ <!-- Input Handle: centered in row, at node edge (ports have no padding) -->
194
198
  <Handle
195
199
  type="target"
196
200
  position={Position.Left}
197
201
  id={`${props.data.nodeId}-input-${port.id}`}
198
202
  class="flowdrop-workflow-node__handle"
199
- style="top: 50%; transform: translateY(-50%); margin-left: -32px; background-color: {getDataTypeColorToken(
203
+ style="top: 50%; transform: translateY(-50%); left: calc(-1 * (var(--fd-handle-size) / 2)); --fd-handle-fill: {getDataTypeColorToken(
200
204
  port.dataType
201
- )}; border-color: '#ffffff';"
205
+ )}; --fd-handle-border-color: var(--fd-handle-border);"
202
206
  role="button"
203
207
  tabindex={0}
204
208
  aria-label="Connect to {port.name} input port"
205
209
  />
206
210
 
207
- <!-- Port Info -->
208
- <div class="flowdrop-flex--1 flowdrop-min-w--0">
211
+ <!-- Port Info: padding lives here so handle position is simple -->
212
+ <div class="flowdrop-workflow-node__port-content flowdrop-flex--1 flowdrop-min-w--0">
209
213
  <div class="flowdrop-flex flowdrop-gap--2">
210
214
  <span class="flowdrop-text--xs flowdrop-font--medium">{port.name}</span>
211
215
  <span
212
216
  class="flowdrop-badge flowdrop-badge--sm"
213
- style="background-color: {getDataTypeColorToken(port.dataType)}; color: #fff;"
217
+ style="background-color: {getPortBackgroundColor(
218
+ port.dataType,
219
+ 15
220
+ )}; color: {getDataTypeColorToken(
221
+ port.dataType
222
+ )}; border: 1px solid {getPortBackgroundColor(port.dataType, 30)};"
214
223
  >
215
224
  {port.dataType}
216
225
  </span>
@@ -235,18 +244,14 @@
235
244
  <!-- Branches Section (Output Ports) - filtered based on hideUnconnectedHandles -->
236
245
  {#if visibleBranches.length > 0}
237
246
  <div class="flowdrop-workflow-node__ports">
238
- <div class="flowdrop-workflow-node__ports-header">
239
- <h5 class="flowdrop-workflow-node__ports-title">
240
- <Icon icon="mdi:source-branch" />
241
- <span>Branches ({visibleBranches.length})</span>
242
- </h5>
243
- </div>
244
247
  <div class="flowdrop-workflow-node__ports-list">
245
- {#each visibleBranches as branch (branch.name)}
248
+ {#each visibleBranches as branch, branchIndex (branch.name)}
246
249
  {@const isActive = isBranchActive(branch.name)}
247
250
  <div class="flowdrop-workflow-node__port">
248
- <!-- Port Info -->
249
- <div class="flowdrop-flex--1 flowdrop-min-w--0 flowdrop-text--right">
251
+ <!-- Port Info: padding lives here so handle position is simple -->
252
+ <div
253
+ class="flowdrop-workflow-node__port-content flowdrop-flex--1 flowdrop-min-w--0 flowdrop-text--right"
254
+ >
250
255
  <div
251
256
  class="flowdrop-flex flowdrop-gap--2 flowdrop-justify--end flowdrop-items--center"
252
257
  >
@@ -263,22 +268,29 @@
263
268
  </span>
264
269
  <span
265
270
  class="flowdrop-badge flowdrop-badge--sm"
266
- style="background-color: {getDataTypeColorToken('trigger')}; color: #fff;"
271
+ style="background-color: {getPortBackgroundColor(
272
+ 'trigger',
273
+ 15
274
+ )}; color: {getDataTypeColorToken(
275
+ 'trigger'
276
+ )}; border: 1px solid {getPortBackgroundColor('trigger', 30)};"
267
277
  >
268
278
  trigger
269
279
  </span>
270
280
  </div>
271
281
  </div>
272
282
 
273
- <!-- Output Handle - Generated from branch name -->
283
+ <!-- Output Handle: centered in row, at node edge (ports have no padding) -->
274
284
  <Handle
275
285
  type="source"
276
286
  position={Position.Right}
277
287
  id={`${props.data.nodeId}-output-${branch.name}`}
278
288
  class={`flowdrop-workflow-node__handle ${isActive ? 'flowdrop-workflow-node__handle--active' : ''}`}
279
- style="top: 50%; transform: translateY(-50%); margin-right: -32px; background-color: {isActive
289
+ style="top: 50%; transform: translateY(-50%); right: calc(-1 * (var(--fd-handle-size) / 2)); --fd-handle-fill: {isActive
280
290
  ? getDataTypeColorToken('trigger')
281
- : getDataTypeColorToken('trigger')}; border-color: '#ffffff';"
291
+ : getDataTypeColorToken(
292
+ 'trigger'
293
+ )}; --fd-handle-border-color: var(--fd-handle-border);"
282
294
  role="button"
283
295
  tabindex={0}
284
296
  aria-label="Connect from {branch.name} branch"
@@ -311,89 +323,143 @@
311
323
  <style>
312
324
  .flowdrop-workflow-node {
313
325
  position: relative;
314
- background-color: #ffffff;
315
- border: 2px solid #e5e7eb;
316
- border-radius: 0.75rem;
317
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
318
- width: 18rem;
326
+ background-color: var(--fd-card);
327
+ border: 1.5px solid var(--fd-node-border);
328
+ border-radius: var(--fd-radius-xl);
329
+ box-shadow: var(--fd-shadow-md);
330
+ width: var(--fd-node-default-width);
319
331
  z-index: 10;
332
+ color: var(--fd-foreground);
333
+ transition: all var(--fd-transition-fast);
320
334
  }
321
335
 
322
336
  .flowdrop-workflow-node--gateway {
323
- min-width: 18rem;
337
+ min-width: var(--fd-node-default-width);
338
+ }
339
+
340
+ .flowdrop-workflow-node:hover {
341
+ box-shadow: var(--fd-shadow-lg);
342
+ border-color: var(--fd-node-border-hover);
324
343
  }
325
344
 
326
345
  .flowdrop-workflow-node--selected {
327
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
328
- border: 2px solid #3b82f6;
346
+ box-shadow:
347
+ 0 0 0 2px var(--fd-primary-muted),
348
+ var(--fd-shadow-lg);
349
+ border-color: var(--fd-primary);
350
+ }
351
+
352
+ .flowdrop-workflow-node--selected:hover {
353
+ box-shadow:
354
+ 0 0 0 2px var(--fd-primary-muted),
355
+ var(--fd-shadow-lg);
356
+ border-color: var(--fd-primary);
357
+ }
358
+
359
+ .flowdrop-workflow-node:focus-visible {
360
+ outline: 2px solid var(--fd-ring);
361
+ outline-offset: 2px;
329
362
  }
330
363
 
331
364
  .flowdrop-workflow-node__header {
332
- padding: 1rem;
333
- border-bottom: 1px solid #e5e7eb;
334
- background-color: #f9fafb;
335
- border-top-left-radius: 0.75rem;
336
- border-top-right-radius: 0.75rem;
365
+ box-sizing: border-box;
366
+ padding: var(--fd-node-header-gap) var(--fd-space-4);
367
+ border-bottom: 1px solid var(--fd-border-muted);
368
+ background: var(--fd-header);
369
+ border-top-left-radius: var(--fd-radius-xl);
370
+ border-top-right-radius: var(--fd-radius-xl);
371
+ display: flex;
372
+ flex-direction: column;
373
+ gap: var(--fd-node-header-gap);
374
+ min-height: calc(
375
+ var(--fd-node-header-gap) * 2 + var(--fd-node-header-title-height) +
376
+ var(--fd-node-header-desc-line)
377
+ );
337
378
  }
338
379
 
339
- .flowdrop-workflow-node__icon {
340
- width: 2rem;
341
- height: 2rem;
342
- border-radius: 0.5rem;
343
- color: #ffffff;
344
- font-size: 0.875rem;
345
- font-weight: 500;
380
+ .flowdrop-workflow-node__header-title {
346
381
  display: flex;
347
382
  align-items: center;
348
- justify-content: center;
349
- box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
383
+ gap: var(--fd-space-3);
384
+ min-height: var(--fd-node-header-title-height);
385
+ flex-shrink: 0;
350
386
  }
351
387
 
352
- .flowdrop-workflow-node__header h3 {
388
+ .flowdrop-workflow-node__header-desc {
353
389
  margin: 0;
354
- line-height: 1;
355
- }
356
-
357
- .flowdrop-workflow-node__ports {
358
- padding: 0.75rem 1rem;
390
+ font-size: var(--fd-text-xs);
391
+ color: var(--fd-muted-foreground);
392
+ line-height: var(--fd-node-header-desc-line);
393
+ min-height: var(--fd-node-header-desc-line);
394
+ overflow: hidden;
395
+ text-overflow: ellipsis;
396
+ display: -webkit-box;
397
+ -webkit-line-clamp: 3;
398
+ line-clamp: 3;
399
+ -webkit-box-orient: vertical;
359
400
  }
360
401
 
361
- .flowdrop-workflow-node__ports-header {
362
- margin-bottom: 0.5rem;
402
+ /* Squircle icon wrapper - Apple-style rounded square background */
403
+ .flowdrop-workflow-node__icon-wrapper {
363
404
  display: flex;
364
405
  align-items: center;
365
- gap: 0.25rem;
406
+ justify-content: center;
407
+ width: 2.25rem;
408
+ height: 2.25rem;
409
+ border-radius: 0.5rem;
410
+ background: color-mix(in srgb, var(--_icon-color) var(--fd-node-icon-bg-opacity), transparent);
411
+ flex-shrink: 0;
412
+ transition: all var(--fd-transition-normal);
413
+ }
414
+
415
+ .flowdrop-workflow-node:hover .flowdrop-workflow-node__icon-wrapper {
416
+ background: color-mix(
417
+ in srgb,
418
+ var(--_icon-color) var(--fd-node-icon-bg-opacity-hover),
419
+ transparent
420
+ );
421
+ transform: scale(1.05);
366
422
  }
367
423
 
368
- .flowdrop-workflow-node__ports-title {
424
+ .flowdrop-workflow-node__icon-wrapper :global(.flowdrop-workflow-node__icon) {
425
+ width: 1.25rem;
426
+ height: 1.25rem;
427
+ color: var(--fd-node-icon);
428
+ }
429
+
430
+ .flowdrop-workflow-node__header-title h3 {
369
431
  margin: 0;
370
- font-size: 0.75rem;
371
- font-weight: 600;
372
- color: #374151;
373
- text-transform: uppercase;
374
- letter-spacing: 0.05em;
375
- display: flex;
376
- align-items: center;
377
- gap: 0.5rem;
432
+ line-height: 1;
433
+ color: var(--fd-foreground);
434
+ }
435
+
436
+ .flowdrop-workflow-node__ports {
437
+ padding: 0;
378
438
  }
379
439
 
380
440
  .flowdrop-workflow-node__ports-list {
381
441
  display: flex;
382
442
  flex-direction: column;
383
- gap: 0.5rem;
443
+ gap: var(--fd-node-header-gap);
444
+ padding: var(--fd-node-header-gap) 0;
384
445
  }
385
446
 
386
447
  .flowdrop-workflow-node__port {
387
448
  display: flex;
388
449
  align-items: center;
389
- gap: 0.5rem;
390
- padding: 0.25rem 0;
450
+ gap: 0;
451
+ min-height: var(--fd-node-port-row-height);
452
+ padding: var(--fd-space-1) 0;
391
453
  position: relative;
392
454
  }
393
455
 
456
+ .flowdrop-workflow-node__port-content {
457
+ padding: 0 var(--fd-space-4);
458
+ }
459
+
394
460
  .flowdrop-badge {
395
- padding: 0.125rem 0.375rem;
396
- border-radius: 0.25rem;
461
+ padding: 0.125rem var(--fd-space-1);
462
+ border-radius: var(--fd-radius-sm);
397
463
  font-size: 0.625rem;
398
464
  font-weight: 500;
399
465
  text-transform: uppercase;
@@ -401,51 +467,35 @@
401
467
  }
402
468
 
403
469
  .flowdrop-badge--error {
404
- background-color: #ef4444;
405
- color: #ffffff;
470
+ background-color: var(--fd-error);
471
+ color: var(--fd-error-foreground);
406
472
  }
407
473
 
408
474
  .flowdrop-badge--sm {
409
475
  font-size: 0.625rem;
410
- padding: 0.125rem 0.25rem;
476
+ padding: 0.125rem var(--fd-space-1);
411
477
  }
412
478
 
413
479
  .workflow-node__no-branches {
414
480
  display: flex;
415
481
  align-items: center;
416
- gap: 0.5rem;
417
- padding: 0.75rem;
418
- background: #fef3c7;
419
- border: 1px solid #f59e0b;
420
- border-radius: 0.5rem;
421
- color: #92400e;
422
- font-size: 0.875rem;
423
- }
424
-
425
- /* Handle styles */
426
- :global(.flowdrop-workflow-node__handle) {
427
- width: 0.75rem;
428
- height: 0.75rem;
429
- background-color: #6b7280;
430
- border: 2px solid #ffffff;
431
- border-radius: 50%;
432
- transition: all 0.2s ease-in-out;
433
- cursor: pointer;
482
+ gap: var(--fd-space-2);
483
+ padding: var(--fd-space-3);
484
+ background: var(--fd-warning-muted);
485
+ border: 1px solid var(--fd-warning);
486
+ border-radius: var(--fd-radius-lg);
487
+ color: var(--fd-warning-foreground);
488
+ font-size: var(--fd-text-sm);
434
489
  }
435
490
 
491
+ /* Handle overrides: hover scale, active state (base 20px/12px from base.css) */
436
492
  :global(.flowdrop-workflow-node__handle:hover) {
437
- background-color: #3b82f6;
438
- transform: scale(1.2);
439
- }
440
-
441
- :global(.flowdrop-workflow-node__handle:focus) {
442
- outline: 2px solid #3b82f6;
443
- outline-offset: 2px;
493
+ transform: translateY(-50%) scale(1.2);
444
494
  }
445
495
 
446
- :global(.flowdrop-workflow-node__handle--active) {
496
+ :global(.flowdrop-workflow-node__handle--active::before) {
447
497
  transform: scale(1.15);
448
- box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.2);
498
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-success) 20%, transparent);
449
499
  }
450
500
 
451
501
  /* Utility classes */
@@ -458,11 +508,11 @@
458
508
  }
459
509
 
460
510
  .flowdrop-gap--2 {
461
- gap: 0.5rem;
511
+ gap: var(--fd-space-2);
462
512
  }
463
513
 
464
514
  .flowdrop-gap--3 {
465
- gap: 0.75rem;
515
+ gap: var(--fd-space-3);
466
516
  }
467
517
 
468
518
  .flowdrop-items--center {
@@ -478,21 +528,21 @@
478
528
  }
479
529
 
480
530
  .flowdrop-text--xs {
481
- font-size: 0.75rem;
531
+ font-size: var(--fd-text-xs);
482
532
  line-height: 1rem;
483
533
  }
484
534
 
485
535
  .flowdrop-text--sm {
486
- font-size: 0.875rem;
536
+ font-size: var(--fd-text-sm);
487
537
  line-height: 1.25rem;
488
538
  }
489
539
 
490
540
  .flowdrop-text--gray {
491
- color: #6b7280;
541
+ color: var(--fd-muted-foreground);
492
542
  }
493
543
 
494
544
  .flowdrop-text--active {
495
- color: #10b981;
545
+ color: var(--fd-success);
496
546
  font-weight: 600;
497
547
  }
498
548
 
@@ -507,7 +557,7 @@
507
557
  }
508
558
 
509
559
  .flowdrop-mt--1 {
510
- margin-top: 0.25rem;
560
+ margin-top: var(--fd-space-1);
511
561
  }
512
562
 
513
563
  .flowdrop-text--right {
@@ -516,23 +566,23 @@
516
566
 
517
567
  .flowdrop-workflow-node__config-btn {
518
568
  position: absolute;
519
- top: 0.5rem;
520
- right: 0.5rem;
569
+ top: var(--fd-space-2);
570
+ right: var(--fd-space-2);
521
571
  width: 1.5rem;
522
572
  height: 1.5rem;
523
- background-color: rgba(255, 255, 255, 0.9);
524
- border: 1px solid #e5e7eb;
525
- border-radius: 0.25rem;
526
- color: #6b7280;
573
+ background-color: var(--fd-backdrop);
574
+ border: 1px solid var(--fd-border);
575
+ border-radius: var(--fd-radius-sm);
576
+ color: var(--fd-muted-foreground);
527
577
  cursor: pointer;
528
578
  display: flex;
529
579
  align-items: center;
530
580
  justify-content: center;
531
581
  opacity: 0;
532
- transition: all 0.2s ease-in-out;
582
+ transition: all var(--fd-transition-normal);
533
583
  backdrop-filter: blur(4px);
534
584
  z-index: 15;
535
- font-size: 0.875rem;
585
+ font-size: var(--fd-text-sm);
536
586
  }
537
587
 
538
588
  .flowdrop-workflow-node:hover .flowdrop-workflow-node__config-btn {
@@ -540,8 +590,8 @@
540
590
  }
541
591
 
542
592
  .flowdrop-workflow-node__config-btn:hover {
543
- background-color: #f9fafb;
544
- border-color: #d1d5db;
545
- color: #374151;
593
+ background-color: var(--fd-muted);
594
+ border-color: var(--fd-border-strong);
595
+ color: var(--fd-foreground);
546
596
  }
547
597
  </style>