@d34dman/flowdrop 0.0.42 → 0.0.44

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 +330 -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 +110 -36
  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 +102 -73
  51. package/dist/components/nodes/IdeaNode.svelte +53 -52
  52. package/dist/components/nodes/NotesNode.svelte +120 -88
  53. package/dist/components/nodes/SimpleNode.svelte +67 -47
  54. package/dist/components/nodes/SquareNode.svelte +86 -49
  55. package/dist/components/nodes/TerminalNode.svelte +122 -72
  56. package/dist/components/nodes/ToolNode.svelte +96 -65
  57. package/dist/components/nodes/WorkflowNode.svelte +91 -67
  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/workflowEditorHelper.js +23 -11
  73. package/dist/index.d.ts +5 -0
  74. package/dist/index.js +13 -0
  75. package/dist/services/autoSaveService.d.ts +112 -0
  76. package/dist/services/autoSaveService.js +223 -0
  77. package/dist/services/settingsService.d.ts +92 -0
  78. package/dist/services/settingsService.js +202 -0
  79. package/dist/services/toastService.d.ts +9 -0
  80. package/dist/services/toastService.js +30 -1
  81. package/dist/stores/settingsStore.d.ts +128 -0
  82. package/dist/stores/settingsStore.js +488 -0
  83. package/dist/stores/themeStore.d.ts +68 -0
  84. package/dist/stores/themeStore.js +215 -0
  85. package/dist/styles/base.css +298 -621
  86. package/dist/styles/toast.css +33 -0
  87. package/dist/styles/tokens.css +366 -0
  88. package/dist/types/index.d.ts +78 -0
  89. package/dist/types/index.js +2 -0
  90. package/dist/types/interrupt.d.ts +2 -0
  91. package/dist/types/interrupt.js +8 -2
  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 +3 -3
@@ -13,7 +13,7 @@
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 { getDataTypeColorToken, getCategoryColorToken, getPortBackgroundColor } from '../../utils/colors.js';
17
17
  import { connectedHandles } from '../../stores/workflowStore.js';
18
18
 
19
19
  interface Props {
@@ -159,12 +159,12 @@
159
159
  <!-- Node Header -->
160
160
  <div class="flowdrop-workflow-node__header">
161
161
  <div class="flowdrop-flex flowdrop-gap--3 flowdrop-items--center">
162
- <!-- Node Icon -->
162
+ <!-- Node Icon with Squircle Background -->
163
163
  <div
164
- class="flowdrop-workflow-node__icon"
165
- style="background-color: {getCategoryColorToken(props.data.metadata.category)}"
164
+ class="flowdrop-workflow-node__icon-wrapper"
165
+ style="--_icon-color: {getCategoryColorToken(props.data.metadata.category)}"
166
166
  >
167
- <Icon icon={getNodeIcon(props.data.metadata.icon, props.data.metadata.category)} />
167
+ <Icon icon={getNodeIcon(props.data.metadata.icon, props.data.metadata.category)} class="flowdrop-workflow-node__icon" />
168
168
  </div>
169
169
 
170
170
  <!-- Node Title - uses instanceTitle override if set -->
@@ -198,7 +198,7 @@
198
198
  class="flowdrop-workflow-node__handle"
199
199
  style="top: 50%; transform: translateY(-50%); margin-left: -32px; background-color: {getDataTypeColorToken(
200
200
  port.dataType
201
- )}; border-color: '#ffffff';"
201
+ )}; border-color: var(--fd-handle-border);"
202
202
  role="button"
203
203
  tabindex={0}
204
204
  aria-label="Connect to {port.name} input port"
@@ -210,7 +210,7 @@
210
210
  <span class="flowdrop-text--xs flowdrop-font--medium">{port.name}</span>
211
211
  <span
212
212
  class="flowdrop-badge flowdrop-badge--sm"
213
- style="background-color: {getDataTypeColorToken(port.dataType)}; color: #fff;"
213
+ style="background-color: {getPortBackgroundColor(port.dataType, 15)}; color: {getDataTypeColorToken(port.dataType)}; border: 1px solid {getPortBackgroundColor(port.dataType, 30)};"
214
214
  >
215
215
  {port.dataType}
216
216
  </span>
@@ -263,7 +263,7 @@
263
263
  </span>
264
264
  <span
265
265
  class="flowdrop-badge flowdrop-badge--sm"
266
- style="background-color: {getDataTypeColorToken('trigger')}; color: #fff;"
266
+ style="background-color: {getPortBackgroundColor('trigger', 15)}; color: {getDataTypeColorToken('trigger')}; border: 1px solid {getPortBackgroundColor('trigger', 30)};"
267
267
  >
268
268
  trigger
269
269
  </span>
@@ -278,7 +278,7 @@
278
278
  class={`flowdrop-workflow-node__handle ${isActive ? 'flowdrop-workflow-node__handle--active' : ''}`}
279
279
  style="top: 50%; transform: translateY(-50%); margin-right: -32px; background-color: {isActive
280
280
  ? getDataTypeColorToken('trigger')
281
- : getDataTypeColorToken('trigger')}; border-color: '#ffffff';"
281
+ : getDataTypeColorToken('trigger')}; border-color: var(--fd-handle-border);"
282
282
  role="button"
283
283
  tabindex={0}
284
284
  aria-label="Connect from {branch.name} branch"
@@ -311,89 +311,118 @@
311
311
  <style>
312
312
  .flowdrop-workflow-node {
313
313
  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);
314
+ background-color: var(--fd-card);
315
+ border: 1.5px solid var(--fd-node-border);
316
+ border-radius: var(--fd-radius-xl);
317
+ box-shadow: var(--fd-shadow-md);
318
318
  width: 18rem;
319
319
  z-index: 10;
320
+ color: var(--fd-foreground);
321
+ transition: all var(--fd-transition-fast);
320
322
  }
321
323
 
322
324
  .flowdrop-workflow-node--gateway {
323
325
  min-width: 18rem;
324
326
  }
325
327
 
328
+ .flowdrop-workflow-node:hover {
329
+ box-shadow: var(--fd-shadow-lg);
330
+ border-color: var(--fd-node-border-hover);
331
+ }
332
+
326
333
  .flowdrop-workflow-node--selected {
327
- box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
328
- border: 2px solid #3b82f6;
334
+ box-shadow: 0 0 0 2px var(--fd-primary-muted), var(--fd-shadow-lg);
335
+ border-color: var(--fd-primary);
336
+ }
337
+
338
+ .flowdrop-workflow-node--selected:hover {
339
+ box-shadow: 0 0 0 2px var(--fd-primary-muted), var(--fd-shadow-lg);
340
+ border-color: var(--fd-primary);
341
+ }
342
+
343
+ .flowdrop-workflow-node:focus-visible {
344
+ outline: 2px solid var(--fd-ring);
345
+ outline-offset: 2px;
329
346
  }
330
347
 
331
348
  .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;
349
+ padding: var(--fd-space-4);
350
+ border-bottom: 1px solid var(--fd-border-muted);
351
+ background: var(--fd-header);
352
+ border-top-left-radius: var(--fd-radius-xl);
353
+ border-top-right-radius: var(--fd-radius-xl);
337
354
  }
338
355
 
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;
356
+ /* Squircle icon wrapper - Apple-style rounded square background */
357
+ .flowdrop-workflow-node__icon-wrapper {
346
358
  display: flex;
347
359
  align-items: center;
348
360
  justify-content: center;
349
- box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
361
+ width: 2.25rem;
362
+ height: 2.25rem;
363
+ border-radius: 0.5rem;
364
+ background: color-mix(in srgb, var(--_icon-color) 15%, transparent);
365
+ flex-shrink: 0;
366
+ transition: all var(--fd-transition-normal);
367
+ }
368
+
369
+ .flowdrop-workflow-node:hover .flowdrop-workflow-node__icon-wrapper {
370
+ background: color-mix(in srgb, var(--_icon-color) 22%, transparent);
371
+ transform: scale(1.05);
372
+ }
373
+
374
+ .flowdrop-workflow-node__icon-wrapper :global(.flowdrop-workflow-node__icon) {
375
+ width: 1.25rem;
376
+ height: 1.25rem;
377
+ color: var(--fd-node-icon);
350
378
  }
351
379
 
352
380
  .flowdrop-workflow-node__header h3 {
353
381
  margin: 0;
354
382
  line-height: 1;
383
+ color: var(--fd-foreground);
355
384
  }
356
385
 
357
386
  .flowdrop-workflow-node__ports {
358
- padding: 0.75rem 1rem;
387
+ padding: var(--fd-space-3) var(--fd-space-4);
359
388
  }
360
389
 
361
390
  .flowdrop-workflow-node__ports-header {
362
- margin-bottom: 0.5rem;
391
+ margin-bottom: var(--fd-space-2);
363
392
  display: flex;
364
393
  align-items: center;
365
- gap: 0.25rem;
394
+ gap: var(--fd-space-1);
366
395
  }
367
396
 
368
397
  .flowdrop-workflow-node__ports-title {
369
398
  margin: 0;
370
- font-size: 0.75rem;
399
+ font-size: var(--fd-text-xs);
371
400
  font-weight: 600;
372
- color: #374151;
401
+ color: var(--fd-foreground);
373
402
  text-transform: uppercase;
374
403
  letter-spacing: 0.05em;
375
404
  display: flex;
376
405
  align-items: center;
377
- gap: 0.5rem;
406
+ gap: var(--fd-space-2);
378
407
  }
379
408
 
380
409
  .flowdrop-workflow-node__ports-list {
381
410
  display: flex;
382
411
  flex-direction: column;
383
- gap: 0.5rem;
412
+ gap: var(--fd-space-2);
384
413
  }
385
414
 
386
415
  .flowdrop-workflow-node__port {
387
416
  display: flex;
388
417
  align-items: center;
389
- gap: 0.5rem;
390
- padding: 0.25rem 0;
418
+ gap: var(--fd-space-2);
419
+ padding: var(--fd-space-1) 0;
391
420
  position: relative;
392
421
  }
393
422
 
394
423
  .flowdrop-badge {
395
- padding: 0.125rem 0.375rem;
396
- border-radius: 0.25rem;
424
+ padding: 0.125rem var(--fd-space-1);
425
+ border-radius: var(--fd-radius-sm);
397
426
  font-size: 0.625rem;
398
427
  font-weight: 500;
399
428
  text-transform: uppercase;
@@ -401,51 +430,51 @@
401
430
  }
402
431
 
403
432
  .flowdrop-badge--error {
404
- background-color: #ef4444;
405
- color: #ffffff;
433
+ background-color: var(--fd-error);
434
+ color: var(--fd-error-foreground);
406
435
  }
407
436
 
408
437
  .flowdrop-badge--sm {
409
438
  font-size: 0.625rem;
410
- padding: 0.125rem 0.25rem;
439
+ padding: 0.125rem var(--fd-space-1);
411
440
  }
412
441
 
413
442
  .workflow-node__no-branches {
414
443
  display: flex;
415
444
  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;
445
+ gap: var(--fd-space-2);
446
+ padding: var(--fd-space-3);
447
+ background: var(--fd-warning-muted);
448
+ border: 1px solid var(--fd-warning);
449
+ border-radius: var(--fd-radius-lg);
450
+ color: var(--fd-warning-foreground);
451
+ font-size: var(--fd-text-sm);
423
452
  }
424
453
 
425
454
  /* Handle styles */
426
455
  :global(.flowdrop-workflow-node__handle) {
427
456
  width: 0.75rem;
428
457
  height: 0.75rem;
429
- background-color: #6b7280;
430
- border: 2px solid #ffffff;
458
+ background-color: var(--fd-muted-foreground);
459
+ border: 2px solid var(--fd-handle-border);
431
460
  border-radius: 50%;
432
- transition: all 0.2s ease-in-out;
461
+ transition: all var(--fd-transition-normal);
433
462
  cursor: pointer;
434
463
  }
435
464
 
436
465
  :global(.flowdrop-workflow-node__handle:hover) {
437
- background-color: #3b82f6;
466
+ background-color: var(--fd-primary);
438
467
  transform: scale(1.2);
439
468
  }
440
469
 
441
470
  :global(.flowdrop-workflow-node__handle:focus) {
442
- outline: 2px solid #3b82f6;
471
+ outline: 2px solid var(--fd-ring);
443
472
  outline-offset: 2px;
444
473
  }
445
474
 
446
475
  :global(.flowdrop-workflow-node__handle--active) {
447
476
  transform: scale(1.15);
448
- box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.2);
477
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-success) 20%, transparent);
449
478
  }
450
479
 
451
480
  /* Utility classes */
@@ -458,11 +487,11 @@
458
487
  }
459
488
 
460
489
  .flowdrop-gap--2 {
461
- gap: 0.5rem;
490
+ gap: var(--fd-space-2);
462
491
  }
463
492
 
464
493
  .flowdrop-gap--3 {
465
- gap: 0.75rem;
494
+ gap: var(--fd-space-3);
466
495
  }
467
496
 
468
497
  .flowdrop-items--center {
@@ -478,21 +507,21 @@
478
507
  }
479
508
 
480
509
  .flowdrop-text--xs {
481
- font-size: 0.75rem;
510
+ font-size: var(--fd-text-xs);
482
511
  line-height: 1rem;
483
512
  }
484
513
 
485
514
  .flowdrop-text--sm {
486
- font-size: 0.875rem;
515
+ font-size: var(--fd-text-sm);
487
516
  line-height: 1.25rem;
488
517
  }
489
518
 
490
519
  .flowdrop-text--gray {
491
- color: #6b7280;
520
+ color: var(--fd-muted-foreground);
492
521
  }
493
522
 
494
523
  .flowdrop-text--active {
495
- color: #10b981;
524
+ color: var(--fd-success);
496
525
  font-weight: 600;
497
526
  }
498
527
 
@@ -507,7 +536,7 @@
507
536
  }
508
537
 
509
538
  .flowdrop-mt--1 {
510
- margin-top: 0.25rem;
539
+ margin-top: var(--fd-space-1);
511
540
  }
512
541
 
513
542
  .flowdrop-text--right {
@@ -516,23 +545,23 @@
516
545
 
517
546
  .flowdrop-workflow-node__config-btn {
518
547
  position: absolute;
519
- top: 0.5rem;
520
- right: 0.5rem;
548
+ top: var(--fd-space-2);
549
+ right: var(--fd-space-2);
521
550
  width: 1.5rem;
522
551
  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;
552
+ background-color: var(--fd-backdrop);
553
+ border: 1px solid var(--fd-border);
554
+ border-radius: var(--fd-radius-sm);
555
+ color: var(--fd-muted-foreground);
527
556
  cursor: pointer;
528
557
  display: flex;
529
558
  align-items: center;
530
559
  justify-content: center;
531
560
  opacity: 0;
532
- transition: all 0.2s ease-in-out;
561
+ transition: all var(--fd-transition-normal);
533
562
  backdrop-filter: blur(4px);
534
563
  z-index: 15;
535
- font-size: 0.875rem;
564
+ font-size: var(--fd-text-sm);
536
565
  }
537
566
 
538
567
  .flowdrop-workflow-node:hover .flowdrop-workflow-node__config-btn {
@@ -540,8 +569,8 @@
540
569
  }
541
570
 
542
571
  .flowdrop-workflow-node__config-btn:hover {
543
- background-color: #f9fafb;
544
- border-color: #d1d5db;
545
- color: #374151;
572
+ background-color: var(--fd-muted);
573
+ border-color: var(--fd-border-strong);
574
+ color: var(--fd-foreground);
546
575
  }
547
576
  </style>
@@ -238,33 +238,30 @@
238
238
  position: relative;
239
239
  width: 18rem;
240
240
  cursor: pointer;
241
- transition: all 0.2s ease-in-out;
241
+ transition: all var(--fd-transition-normal);
242
242
  z-index: 10;
243
+ color: var(--fd-foreground);
243
244
  }
244
245
 
245
246
  .flowdrop-idea-node__card {
246
- background-color: #ffffff;
247
- border-radius: 0.75rem;
248
- border: 1px solid #e5e7eb;
249
- box-shadow:
250
- 0 4px 6px -1px rgba(0, 0, 0, 0.1),
251
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
247
+ background-color: var(--fd-background);
248
+ border-radius: var(--fd-radius-xl);
249
+ border: 1px solid var(--fd-border);
250
+ box-shadow: var(--fd-shadow-md);
252
251
  overflow: hidden;
253
- transition: all 0.2s ease-in-out;
252
+ transition: all var(--fd-transition-normal);
254
253
  }
255
254
 
256
255
  .flowdrop-idea-node:hover .flowdrop-idea-node__card {
257
- box-shadow:
258
- 0 10px 15px -3px rgba(0, 0, 0, 0.1),
259
- 0 4px 6px -2px rgba(0, 0, 0, 0.05);
256
+ box-shadow: var(--fd-shadow-lg);
260
257
  transform: translateY(-1px);
261
258
  }
262
259
 
263
260
  .flowdrop-idea-node--selected .flowdrop-idea-node__card {
264
- border-color: #3b82f6;
261
+ border-color: var(--fd-primary);
265
262
  box-shadow:
266
- 0 10px 15px -3px rgba(0, 0, 0, 0.1),
267
- 0 0 0 3px rgba(59, 130, 246, 0.3);
263
+ var(--fd-shadow-lg),
264
+ 0 0 0 3px color-mix(in srgb, var(--fd-primary) 30%, transparent);
268
265
  }
269
266
 
270
267
  .flowdrop-idea-node--processing .flowdrop-idea-node__card {
@@ -272,15 +269,15 @@
272
269
  }
273
270
 
274
271
  .flowdrop-idea-node--error .flowdrop-idea-node__card {
275
- border-color: #ef4444 !important;
276
- background-color: #fef2f2 !important;
272
+ border-color: var(--fd-error) !important;
273
+ background-color: var(--fd-error-muted) !important;
277
274
  }
278
275
 
279
276
  /* Accent bar at top of card */
280
277
  .flowdrop-idea-node__accent-bar {
281
278
  height: 4px;
282
- background-color: var(--idea-accent-color, #6366f1);
283
- transition: background-color 0.2s ease-in-out;
279
+ background-color: var(--idea-accent-color, var(--fd-accent));
280
+ transition: background-color var(--fd-transition-normal);
284
281
  }
285
282
 
286
283
  /* Header section */
@@ -288,7 +285,7 @@
288
285
  display: flex;
289
286
  align-items: center;
290
287
  gap: 0.625rem;
291
- padding: 0.75rem 1rem 0.5rem;
288
+ padding: var(--fd-space-3) var(--fd-space-4) var(--fd-space-2);
292
289
  }
293
290
 
294
291
  .flowdrop-idea-node__icon-wrapper {
@@ -297,21 +294,25 @@
297
294
  justify-content: center;
298
295
  width: 2rem;
299
296
  height: 2rem;
300
- background-color: color-mix(in srgb, var(--idea-accent-color, #6366f1) 15%, transparent);
301
- border-radius: 0.5rem;
297
+ background-color: color-mix(
298
+ in srgb,
299
+ var(--idea-accent-color, var(--fd-accent)) 15%,
300
+ transparent
301
+ );
302
+ border-radius: var(--fd-radius-lg);
302
303
  flex-shrink: 0;
303
304
  }
304
305
 
305
306
  :global(.flowdrop-idea-node__icon) {
306
307
  width: 1.25rem;
307
308
  height: 1.25rem;
308
- color: var(--idea-accent-color, #6366f1);
309
+ color: var(--fd-node-icon);
309
310
  }
310
311
 
311
312
  .flowdrop-idea-node__title {
312
313
  font-size: 0.9375rem;
313
314
  font-weight: 600;
314
- color: #1f2937;
315
+ color: var(--fd-foreground);
315
316
  margin: 0;
316
317
  line-height: 1.3;
317
318
  overflow: hidden;
@@ -321,12 +322,12 @@
321
322
 
322
323
  /* Body section */
323
324
  .flowdrop-idea-node__body {
324
- padding: 0 1rem 0.875rem;
325
+ padding: 0 var(--fd-space-4) var(--fd-space-3);
325
326
  }
326
327
 
327
328
  .flowdrop-idea-node__description {
328
329
  font-size: 0.8125rem;
329
- color: #6b7280;
330
+ color: var(--fd-muted-foreground);
330
331
  margin: 0;
331
332
  line-height: 1.5;
332
333
  display: -webkit-box;
@@ -340,18 +341,18 @@
340
341
  .flowdrop-idea-node__processing {
341
342
  display: flex;
342
343
  align-items: center;
343
- gap: 0.5rem;
344
- padding: 0.5rem 1rem;
345
- font-size: 0.75rem;
346
- color: #6b7280;
347
- border-top: 1px solid #f3f4f6;
344
+ gap: var(--fd-space-2);
345
+ padding: var(--fd-space-2) var(--fd-space-4);
346
+ font-size: var(--fd-text-xs);
347
+ color: var(--fd-muted-foreground);
348
+ border-top: 1px solid var(--fd-border-muted);
348
349
  }
349
350
 
350
351
  .flowdrop-idea-node__spinner {
351
352
  width: 0.875rem;
352
353
  height: 0.875rem;
353
- border: 2px solid #e5e7eb;
354
- border-top-color: var(--idea-accent-color, #6366f1);
354
+ border: 2px solid var(--fd-border);
355
+ border-top-color: var(--idea-accent-color, var(--fd-accent));
355
356
  border-radius: 50%;
356
357
  animation: idea-spin 1s linear infinite;
357
358
  }
@@ -360,12 +361,12 @@
360
361
  .flowdrop-idea-node__error {
361
362
  display: flex;
362
363
  align-items: center;
363
- gap: 0.5rem;
364
- padding: 0.5rem 1rem;
365
- font-size: 0.75rem;
366
- color: #ef4444;
367
- border-top: 1px solid #fecaca;
368
- background-color: #fef2f2;
364
+ gap: var(--fd-space-2);
365
+ padding: var(--fd-space-2) var(--fd-space-4);
366
+ font-size: var(--fd-text-xs);
367
+ color: var(--fd-error);
368
+ border-top: 1px solid color-mix(in srgb, var(--fd-error) 30%, transparent);
369
+ background-color: var(--fd-error-muted);
369
370
  }
370
371
 
371
372
  :global(.flowdrop-idea-node__error-icon) {
@@ -386,19 +387,19 @@
386
387
  right: 0.625rem;
387
388
  width: 1.5rem;
388
389
  height: 1.5rem;
389
- background-color: rgba(255, 255, 255, 0.95);
390
- border: 1px solid #e5e7eb;
391
- border-radius: 0.375rem;
392
- color: #6b7280;
390
+ background-color: var(--fd-backdrop);
391
+ border: 1px solid var(--fd-border);
392
+ border-radius: var(--fd-radius-md);
393
+ color: var(--fd-muted-foreground);
393
394
  cursor: pointer;
394
395
  display: flex;
395
396
  align-items: center;
396
397
  justify-content: center;
397
398
  opacity: 0;
398
- transition: all 0.2s ease-in-out;
399
- backdrop-filter: blur(4px);
399
+ transition: all var(--fd-transition-normal);
400
+ backdrop-filter: var(--fd-backdrop-blur);
400
401
  z-index: 15;
401
- font-size: 0.875rem;
402
+ font-size: var(--fd-text-sm);
402
403
  }
403
404
 
404
405
  .flowdrop-idea-node:hover .flowdrop-idea-node__config-btn {
@@ -406,9 +407,9 @@
406
407
  }
407
408
 
408
409
  .flowdrop-idea-node__config-btn:hover {
409
- background-color: #f9fafb;
410
- border-color: #d1d5db;
411
- color: #374151;
410
+ background-color: var(--fd-muted);
411
+ border-color: var(--fd-border-strong);
412
+ color: var(--fd-foreground);
412
413
  transform: scale(1.05);
413
414
  }
414
415
 
@@ -418,7 +419,7 @@
418
419
  height: 16px !important;
419
420
  border-radius: 50% !important;
420
421
  border: 2px solid #ffffff !important;
421
- transition: all 0.2s ease-in-out !important;
422
+ transition: all var(--fd-transition-normal) !important;
422
423
  cursor: pointer !important;
423
424
  z-index: 20 !important;
424
425
  pointer-events: auto !important;
@@ -456,7 +457,7 @@
456
457
  }
457
458
 
458
459
  :global(.flowdrop-idea-node .svelte-flow__handle:focus) {
459
- outline: 2px solid #3b82f6 !important;
460
+ outline: 2px solid var(--fd-ring) !important;
460
461
  outline-offset: 2px !important;
461
462
  }
462
463
 
@@ -475,11 +476,11 @@
475
476
  }
476
477
 
477
478
  .flowdrop-idea-node__title {
478
- font-size: 0.875rem;
479
+ font-size: var(--fd-text-sm);
479
480
  }
480
481
 
481
482
  .flowdrop-idea-node__description {
482
- font-size: 0.75rem;
483
+ font-size: var(--fd-text-xs);
483
484
  }
484
485
  }
485
486
  </style>