@d34dman/flowdrop 0.0.60 → 0.0.62

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 (207) hide show
  1. package/README.md +6 -0
  2. package/dist/adapters/WorkflowAdapter.d.ts +1 -1
  3. package/dist/adapters/agentspec/AgentSpecAdapter.js +3 -1
  4. package/dist/api/client.d.ts +4 -0
  5. package/dist/api/client.js +6 -1
  6. package/dist/api/enhanced-client.js +7 -6
  7. package/dist/components/App.svelte +143 -219
  8. package/dist/components/CanvasBanner.stories.svelte +25 -0
  9. package/dist/components/CanvasBanner.stories.svelte.d.ts +27 -0
  10. package/dist/components/CanvasBanner.svelte +2 -2
  11. package/dist/components/ConfigForm.svelte +37 -36
  12. package/dist/components/ConfigPanel.stories.svelte +38 -0
  13. package/dist/components/ConfigPanel.stories.svelte.d.ts +27 -0
  14. package/dist/components/ConfigPanel.svelte +2 -2
  15. package/dist/components/ConnectionLine.svelte +2 -2
  16. package/dist/components/FlowDropZone.svelte +18 -2
  17. package/dist/components/FlowDropZone.svelte.d.ts +2 -0
  18. package/dist/components/LoadingSpinner.stories.svelte +30 -0
  19. package/dist/components/LoadingSpinner.stories.svelte.d.ts +27 -0
  20. package/dist/components/Logo.stories.svelte +22 -0
  21. package/dist/components/Logo.stories.svelte.d.ts +27 -0
  22. package/dist/components/Logo.svelte +33 -13
  23. package/dist/components/Logo.svelte.d.ts +1 -1
  24. package/dist/components/MarkdownDisplay.stories.svelte +21 -0
  25. package/dist/components/MarkdownDisplay.stories.svelte.d.ts +27 -0
  26. package/dist/components/MarkdownDisplay.svelte +4 -3
  27. package/dist/components/Navbar.stories.svelte +41 -0
  28. package/dist/components/Navbar.stories.svelte.d.ts +27 -0
  29. package/dist/components/Navbar.svelte +4 -4
  30. package/dist/components/NodeSidebar.svelte +12 -12
  31. package/dist/components/NodeStatusOverlay.stories.svelte +74 -0
  32. package/dist/components/NodeStatusOverlay.stories.svelte.d.ts +27 -0
  33. package/dist/components/PipelineStatus.svelte +11 -4
  34. package/dist/components/PortCoordinateTracker.svelte +1 -1
  35. package/dist/components/SchemaForm.stories.svelte +101 -0
  36. package/dist/components/SchemaForm.stories.svelte.d.ts +27 -0
  37. package/dist/components/SchemaForm.svelte +17 -12
  38. package/dist/components/SettingsModal.svelte +3 -3
  39. package/dist/components/SettingsPanel.svelte +23 -22
  40. package/dist/components/StatusIcon.stories.svelte +60 -0
  41. package/dist/components/StatusIcon.stories.svelte.d.ts +27 -0
  42. package/dist/components/StatusIcon.svelte +7 -0
  43. package/dist/components/StatusLabel.stories.svelte +17 -0
  44. package/dist/components/StatusLabel.stories.svelte.d.ts +27 -0
  45. package/dist/components/ThemeToggle.stories.svelte +25 -0
  46. package/dist/components/ThemeToggle.stories.svelte.d.ts +27 -0
  47. package/dist/components/ThemeToggle.svelte +8 -8
  48. package/dist/components/UniversalNode.svelte +1 -1
  49. package/dist/components/WorkflowEditor.svelte +298 -294
  50. package/dist/components/form/FormAutocomplete.svelte +20 -19
  51. package/dist/components/form/FormCheckboxGroup.stories.svelte +28 -0
  52. package/dist/components/form/FormCheckboxGroup.stories.svelte.d.ts +27 -0
  53. package/dist/components/form/FormField.svelte +3 -3
  54. package/dist/components/form/FormFieldLight.svelte +2 -2
  55. package/dist/components/form/FormFieldWrapper.stories.svelte +31 -0
  56. package/dist/components/form/FormFieldWrapper.stories.svelte.d.ts +27 -0
  57. package/dist/components/form/FormFieldset.svelte +7 -7
  58. package/dist/components/form/FormNumberField.stories.svelte +33 -0
  59. package/dist/components/form/FormNumberField.stories.svelte.d.ts +27 -0
  60. package/dist/components/form/FormRangeField.stories.svelte +31 -0
  61. package/dist/components/form/FormRangeField.stories.svelte.d.ts +27 -0
  62. package/dist/components/form/FormSelect.stories.svelte +50 -0
  63. package/dist/components/form/FormSelect.stories.svelte.d.ts +27 -0
  64. package/dist/components/form/FormTemplateEditor.svelte +2 -1
  65. package/dist/components/form/FormTextField.stories.svelte +30 -0
  66. package/dist/components/form/FormTextField.stories.svelte.d.ts +27 -0
  67. package/dist/components/form/FormTextarea.stories.svelte +31 -0
  68. package/dist/components/form/FormTextarea.stories.svelte.d.ts +27 -0
  69. package/dist/components/form/FormToggle.stories.svelte +30 -0
  70. package/dist/components/form/FormToggle.stories.svelte.d.ts +27 -0
  71. package/dist/components/form/FormUISchemaRenderer.svelte +1 -1
  72. package/dist/components/form/types.d.ts +15 -47
  73. package/dist/components/interrupt/ChoicePrompt.stories.svelte +43 -0
  74. package/dist/components/interrupt/ChoicePrompt.stories.svelte.d.ts +27 -0
  75. package/dist/components/interrupt/ChoicePrompt.svelte +24 -24
  76. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte +49 -0
  77. package/dist/components/interrupt/ConfirmationPrompt.stories.svelte.d.ts +27 -0
  78. package/dist/components/interrupt/ConfirmationPrompt.svelte +19 -19
  79. package/dist/components/interrupt/FormPrompt.svelte +15 -15
  80. package/dist/components/interrupt/InterruptBubble.svelte +202 -236
  81. package/dist/components/interrupt/InterruptBubble.svelte.d.ts +1 -1
  82. package/dist/components/interrupt/ReviewPrompt.stories.svelte +46 -0
  83. package/dist/components/interrupt/ReviewPrompt.stories.svelte.d.ts +27 -0
  84. package/dist/components/interrupt/ReviewPrompt.svelte +842 -0
  85. package/dist/components/interrupt/ReviewPrompt.svelte.d.ts +23 -0
  86. package/dist/components/interrupt/TextInputPrompt.stories.svelte +34 -0
  87. package/dist/components/interrupt/TextInputPrompt.stories.svelte.d.ts +27 -0
  88. package/dist/components/interrupt/TextInputPrompt.svelte +21 -21
  89. package/dist/components/nodes/GatewayNode.stories.svelte +76 -0
  90. package/dist/components/nodes/GatewayNode.stories.svelte.d.ts +26 -0
  91. package/dist/components/nodes/GatewayNode.svelte +19 -17
  92. package/dist/components/nodes/IdeaNode.stories.svelte +48 -0
  93. package/dist/components/nodes/IdeaNode.stories.svelte.d.ts +26 -0
  94. package/dist/components/nodes/IdeaNode.svelte +10 -26
  95. package/dist/components/nodes/NotesNode.stories.svelte +69 -0
  96. package/dist/components/nodes/NotesNode.stories.svelte.d.ts +26 -0
  97. package/dist/components/nodes/NotesNode.svelte +8 -8
  98. package/dist/components/nodes/SimpleNode.stories.svelte +101 -0
  99. package/dist/components/nodes/SimpleNode.stories.svelte.d.ts +26 -0
  100. package/dist/components/nodes/SimpleNode.svelte +16 -24
  101. package/dist/components/nodes/SquareNode.stories.svelte +56 -0
  102. package/dist/components/nodes/SquareNode.stories.svelte.d.ts +26 -0
  103. package/dist/components/nodes/SquareNode.svelte +13 -21
  104. package/dist/components/nodes/TerminalNode.stories.svelte +25 -0
  105. package/dist/components/nodes/TerminalNode.stories.svelte.d.ts +26 -0
  106. package/dist/components/nodes/TerminalNode.svelte +6 -6
  107. package/dist/components/nodes/ToolNode.stories.svelte +71 -0
  108. package/dist/components/nodes/ToolNode.stories.svelte.d.ts +26 -0
  109. package/dist/components/nodes/ToolNode.svelte +7 -15
  110. package/dist/components/nodes/WorkflowNode.stories.svelte +50 -0
  111. package/dist/components/nodes/WorkflowNode.stories.svelte.d.ts +26 -0
  112. package/dist/components/nodes/WorkflowNode.svelte +13 -13
  113. package/dist/components/playground/ChatPanel.svelte +48 -48
  114. package/dist/components/playground/ExecutionLogs.svelte +23 -23
  115. package/dist/components/playground/InputCollector.svelte +24 -24
  116. package/dist/components/playground/MessageBubble.stories.svelte +49 -0
  117. package/dist/components/playground/MessageBubble.stories.svelte.d.ts +27 -0
  118. package/dist/components/playground/MessageBubble.svelte +49 -46
  119. package/dist/components/playground/Playground.svelte +203 -172
  120. package/dist/components/playground/PlaygroundModal.svelte +5 -5
  121. package/dist/components/playground/SessionManager.svelte +26 -26
  122. package/dist/config/constants.d.ts +22 -0
  123. package/dist/config/constants.js +22 -0
  124. package/dist/config/endpoints.d.ts +19 -0
  125. package/dist/config/runtimeConfig.js +2 -1
  126. package/dist/core/index.d.ts +5 -2
  127. package/dist/core/index.js +9 -1
  128. package/dist/editor/index.d.ts +13 -9
  129. package/dist/editor/index.js +15 -11
  130. package/dist/form/code.d.ts +2 -1
  131. package/dist/form/code.js +1 -3
  132. package/dist/form/markdown.d.ts +2 -1
  133. package/dist/form/markdown.js +1 -3
  134. package/dist/helpers/workflowEditorHelper.js +13 -9
  135. package/dist/mocks/app-forms.js +1 -0
  136. package/dist/mocks/app-navigation.js +3 -1
  137. package/dist/mocks/app-stores.d.ts +4 -4
  138. package/dist/playground/index.d.ts +5 -4
  139. package/dist/playground/index.js +15 -11
  140. package/dist/playground/mount.d.ts +20 -1
  141. package/dist/playground/mount.js +24 -6
  142. package/dist/services/agentSpecExecutionService.js +2 -1
  143. package/dist/services/api.js +10 -18
  144. package/dist/services/apiVariableService.js +2 -1
  145. package/dist/services/autoSaveService.d.ts +3 -3
  146. package/dist/services/autoSaveService.js +21 -17
  147. package/dist/services/categoriesApi.js +13 -5
  148. package/dist/services/draftStorage.js +5 -4
  149. package/dist/services/dynamicSchemaService.js +4 -4
  150. package/dist/services/globalSave.d.ts +60 -11
  151. package/dist/services/globalSave.js +160 -83
  152. package/dist/services/historyService.d.ts +2 -1
  153. package/dist/services/historyService.js +7 -3
  154. package/dist/services/interruptService.js +9 -8
  155. package/dist/services/nodeExecutionService.js +14 -6
  156. package/dist/services/playgroundService.d.ts +3 -2
  157. package/dist/services/playgroundService.js +8 -7
  158. package/dist/services/portConfigApi.js +11 -7
  159. package/dist/services/toastService.d.ts +1 -1
  160. package/dist/services/toastService.js +6 -5
  161. package/dist/services/variableService.js +3 -2
  162. package/dist/settings/index.d.ts +1 -1
  163. package/dist/settings/index.js +1 -1
  164. package/dist/stores/{categoriesStore.d.ts → categoriesStore.svelte.d.ts} +3 -3
  165. package/dist/stores/{categoriesStore.js → categoriesStore.svelte.js} +15 -18
  166. package/dist/stores/editorStateMachine.svelte.d.ts +42 -0
  167. package/dist/stores/editorStateMachine.svelte.js +132 -0
  168. package/dist/stores/{historyStore.d.ts → historyStore.svelte.d.ts} +18 -15
  169. package/dist/stores/{historyStore.js → historyStore.svelte.js} +40 -21
  170. package/dist/stores/{interruptStore.d.ts → interruptStore.svelte.d.ts} +16 -15
  171. package/dist/stores/{interruptStore.js → interruptStore.svelte.js} +85 -94
  172. package/dist/stores/{playgroundStore.d.ts → playgroundStore.svelte.d.ts} +52 -34
  173. package/dist/stores/{playgroundStore.js → playgroundStore.svelte.js} +193 -100
  174. package/dist/stores/{portCoordinateStore.d.ts → portCoordinateStore.svelte.d.ts} +10 -4
  175. package/dist/stores/{portCoordinateStore.js → portCoordinateStore.svelte.js} +38 -35
  176. package/dist/stores/{settingsStore.d.ts → settingsStore.svelte.d.ts} +45 -28
  177. package/dist/stores/{settingsStore.js → settingsStore.svelte.js} +169 -128
  178. package/dist/stores/{workflowStore.d.ts → workflowStore.svelte.d.ts} +101 -65
  179. package/dist/stores/{workflowStore.js → workflowStore.svelte.js} +285 -239
  180. package/dist/stories/CanvasDecorator.svelte +50 -0
  181. package/dist/stories/CanvasDecorator.svelte.d.ts +8 -0
  182. package/dist/stories/NodeDecorator.svelte +74 -0
  183. package/dist/stories/NodeDecorator.svelte.d.ts +8 -0
  184. package/dist/stories/utils.d.ts +93 -0
  185. package/dist/stories/utils.js +122 -0
  186. package/dist/styles/base.css +114 -61
  187. package/dist/styles/toast.css +2 -2
  188. package/dist/styles/tokens.css +250 -185
  189. package/dist/svelte-app.d.ts +0 -6
  190. package/dist/svelte-app.js +13 -31
  191. package/dist/types/index.d.ts +2 -0
  192. package/dist/types/interrupt.d.ts +89 -5
  193. package/dist/types/interrupt.js +13 -1
  194. package/dist/types/playground.d.ts +42 -1
  195. package/dist/types/playground.js +38 -0
  196. package/dist/types/settings.js +1 -1
  197. package/dist/utils/colors.js +4 -4
  198. package/dist/utils/connections.js +33 -8
  199. package/dist/utils/icons.js +1 -1
  200. package/dist/utils/logger.d.ts +47 -0
  201. package/dist/utils/logger.js +72 -0
  202. package/dist/utils/nodeWrapper.js +1 -1
  203. package/dist/utils/sanitize.d.ts +19 -0
  204. package/dist/utils/sanitize.js +31 -0
  205. package/dist/utils/validation.d.ts +29 -0
  206. package/dist/utils/validation.js +39 -0
  207. package/package.json +243 -232
@@ -34,12 +34,13 @@
34
34
  SETTINGS_CATEGORY_ICONS
35
35
  } from '../types/settings.js';
36
36
  import {
37
- settingsStore,
37
+ getSettings,
38
38
  updateSettings,
39
39
  resetSettings,
40
40
  syncSettingsToApi,
41
- syncStatusStore
42
- } from '../stores/settingsStore.js';
41
+ getSyncStatus
42
+ } from '../stores/settingsStore.svelte.js';
43
+ import { logger } from '../utils/logger.js';
43
44
 
44
45
  /**
45
46
  * Props interface for SettingsPanel component
@@ -76,7 +77,7 @@
76
77
  /**
77
78
  * Whether sync is in progress
78
79
  */
79
- let isSyncing = $derived($syncStatusStore.status === 'syncing');
80
+ let isSyncing = $derived(getSyncStatus().status === 'syncing');
80
81
 
81
82
  /**
82
83
  * JSON Schema definitions for each settings category
@@ -254,7 +255,7 @@
254
255
  * Get current values for a category from the store
255
256
  */
256
257
  function getCategoryValues(category: SettingsCategory): Record<string, unknown> {
257
- const settings = $settingsStore;
258
+ const settings = getSettings();
258
259
  const categorySettings = settings[category];
259
260
  // Convert to Record<string, unknown> for SchemaForm compatibility
260
261
  return Object.fromEntries(Object.entries(categorySettings));
@@ -280,7 +281,7 @@
280
281
  try {
281
282
  await syncSettingsToApi();
282
283
  } catch (error) {
283
- console.error('Failed to sync settings:', error);
284
+ logger.error('Failed to sync settings:', error);
284
285
  }
285
286
  }
286
287
 
@@ -433,15 +434,15 @@
433
434
  </div>
434
435
 
435
436
  <!-- Sync Status Indicator -->
436
- {#if $syncStatusStore.error}
437
+ {#if getSyncStatus().error}
437
438
  <div class="flowdrop-settings-panel__error">
438
439
  <Icon icon="mdi:alert-circle" />
439
- <span>{$syncStatusStore.error}</span>
440
+ <span>{getSyncStatus().error}</span>
440
441
  </div>
441
- {:else if $syncStatusStore.status === 'synced' && $syncStatusStore.lastSyncedAt}
442
+ {:else if getSyncStatus().status === 'synced' && getSyncStatus().lastSyncedAt}
442
443
  <div class="flowdrop-settings-panel__synced">
443
444
  <Icon icon="mdi:check-circle" />
444
- <span>Synced {new Date($syncStatusStore.lastSyncedAt).toLocaleTimeString()}</span>
445
+ <span>Synced {new Date(getSyncStatus().lastSyncedAt!).toLocaleTimeString()}</span>
445
446
  </div>
446
447
  {/if}
447
448
  </div>
@@ -458,8 +459,8 @@
458
459
  /* Tabs */
459
460
  .flowdrop-settings-panel__tabs {
460
461
  display: flex;
461
- gap: var(--fd-space-1);
462
- padding: var(--fd-space-3);
462
+ gap: var(--fd-space-3xs);
463
+ padding: var(--fd-space-md);
463
464
  border-bottom: 1px solid var(--fd-border);
464
465
  overflow-x: auto;
465
466
  }
@@ -467,8 +468,8 @@
467
468
  .flowdrop-settings-panel__tab {
468
469
  display: flex;
469
470
  align-items: center;
470
- gap: var(--fd-space-2);
471
- padding: var(--fd-space-2) var(--fd-space-3);
471
+ gap: var(--fd-space-xs);
472
+ padding: var(--fd-space-xs) var(--fd-space-md);
472
473
  border: none;
473
474
  border-radius: var(--fd-radius-md);
474
475
  background-color: transparent;
@@ -508,7 +509,7 @@
508
509
  .flowdrop-settings-panel__content {
509
510
  flex: 1;
510
511
  overflow-y: auto;
511
- padding: var(--fd-space-4);
512
+ padding: var(--fd-space-xl);
512
513
  }
513
514
 
514
515
  .flowdrop-settings-panel__panel {
@@ -524,15 +525,15 @@
524
525
  display: flex;
525
526
  justify-content: space-between;
526
527
  align-items: center;
527
- padding: var(--fd-space-3) var(--fd-space-4);
528
+ padding: var(--fd-space-md) var(--fd-space-xl);
528
529
  border-top: 1px solid var(--fd-border);
529
- gap: var(--fd-space-3);
530
+ gap: var(--fd-space-md);
530
531
  }
531
532
 
532
533
  .flowdrop-settings-panel__footer-start,
533
534
  .flowdrop-settings-panel__footer-end {
534
535
  display: flex;
535
- gap: var(--fd-space-2);
536
+ gap: var(--fd-space-xs);
536
537
  align-items: center;
537
538
  }
538
539
 
@@ -540,8 +541,8 @@
540
541
  .flowdrop-settings-panel__btn {
541
542
  display: inline-flex;
542
543
  align-items: center;
543
- gap: var(--fd-space-2);
544
- padding: var(--fd-space-2) var(--fd-space-3);
544
+ gap: var(--fd-space-xs);
545
+ padding: var(--fd-space-xs) var(--fd-space-md);
545
546
  border-radius: var(--fd-radius-md);
546
547
  font-size: var(--fd-text-sm);
547
548
  font-weight: 500;
@@ -601,8 +602,8 @@
601
602
  .flowdrop-settings-panel__synced {
602
603
  display: flex;
603
604
  align-items: center;
604
- gap: var(--fd-space-2);
605
- padding: var(--fd-space-2) var(--fd-space-4);
605
+ gap: var(--fd-space-xs);
606
+ padding: var(--fd-space-xs) var(--fd-space-xl);
606
607
  font-size: var(--fd-text-xs);
607
608
  }
608
609
 
@@ -0,0 +1,60 @@
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import StatusIcon from "./StatusIcon.svelte";
4
+
5
+ const { Story } = defineMeta({
6
+ title: "Display/StatusIcon",
7
+ component: StatusIcon,
8
+ tags: ["autodocs"],
9
+ argTypes: {
10
+ status: {
11
+ control: { type: "select" },
12
+ options: ["idle", "pending", "running", "completed", "failed", "cancelled", "skipped"],
13
+ },
14
+ size: {
15
+ control: { type: "select" },
16
+ options: ["sm", "md", "lg", "xl"],
17
+ },
18
+ showBackground: { control: "boolean" },
19
+ },
20
+ });
21
+ </script>
22
+
23
+ <Story name="Idle" args={{ status: "idle" }} />
24
+
25
+ <Story name="Running" args={{ status: "running" }} />
26
+
27
+ <Story name="Completed" args={{ status: "completed" }} />
28
+
29
+ <Story name="Failed" args={{ status: "failed" }} />
30
+
31
+ <Story name="With Background" args={{ status: "completed", showBackground: true }} />
32
+
33
+ <Story name="All Statuses">
34
+ <div style="display: flex; flex-direction: column; gap: 1.5rem;">
35
+ <div>
36
+ <div style="margin-bottom: 0.5rem; font-weight: 600;">Icon Only</div>
37
+ <div style="display: flex; gap: 1rem; align-items: center;">
38
+ <StatusIcon status="idle" />
39
+ <StatusIcon status="pending" />
40
+ <StatusIcon status="running" />
41
+ <StatusIcon status="completed" />
42
+ <StatusIcon status="failed" />
43
+ <StatusIcon status="cancelled" />
44
+ <StatusIcon status="skipped" />
45
+ </div>
46
+ </div>
47
+ <div>
48
+ <div style="margin-bottom: 0.5rem; font-weight: 600;">With Background</div>
49
+ <div style="display: flex; gap: 1rem; align-items: center;">
50
+ <StatusIcon status="idle" showBackground />
51
+ <StatusIcon status="pending" showBackground />
52
+ <StatusIcon status="running" showBackground />
53
+ <StatusIcon status="completed" showBackground />
54
+ <StatusIcon status="failed" showBackground />
55
+ <StatusIcon status="cancelled" showBackground />
56
+ <StatusIcon status="skipped" showBackground />
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </Story>
@@ -0,0 +1,27 @@
1
+ export default StatusIcon;
2
+ type StatusIcon = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const StatusIcon: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import StatusIcon from "./StatusIcon.svelte";
15
+ 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> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -84,11 +84,18 @@
84
84
  width: var(--background-size);
85
85
  height: var(--background-size);
86
86
  background-color: var(--status-color);
87
+ color: #fff;
87
88
  border-radius: var(--background-radius);
88
89
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
89
90
  position: relative;
90
91
  }
91
92
 
93
+ .status-icon--with-background :global(.status-icon__icon) {
94
+ width: var(--icon-size);
95
+ height: var(--icon-size);
96
+ font-size: var(--icon-size);
97
+ }
98
+
92
99
  .status-icon--icon-only {
93
100
  width: var(--icon-size);
94
101
  height: var(--icon-size);
@@ -0,0 +1,17 @@
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import StatusLabel from "./StatusLabel.svelte";
4
+
5
+ const { Story } = defineMeta({
6
+ title: "Display/StatusLabel",
7
+ component: StatusLabel,
8
+ tags: ["autodocs"],
9
+ argTypes: {
10
+ label: { control: "text" },
11
+ },
12
+ });
13
+ </script>
14
+
15
+ <Story name="Default" args={{ label: "Ready" }} />
16
+
17
+ <Story name="Long Text" args={{ label: "Processing workflow execution..." }} />
@@ -0,0 +1,27 @@
1
+ export default StatusLabel;
2
+ type StatusLabel = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const StatusLabel: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import StatusLabel from "./StatusLabel.svelte";
15
+ 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> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -0,0 +1,25 @@
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import ThemeToggle from "./ThemeToggle.svelte";
4
+
5
+ const { Story } = defineMeta({
6
+ title: "Display/ThemeToggle",
7
+ component: ThemeToggle,
8
+ tags: ["autodocs"],
9
+ argTypes: {
10
+ size: {
11
+ control: { type: "select" },
12
+ options: ["sm", "md", "lg"],
13
+ },
14
+ showLabel: { control: "boolean" },
15
+ },
16
+ });
17
+ </script>
18
+
19
+ <Story name="Default" />
20
+
21
+ <Story name="Small" args={{ size: "sm" }} />
22
+
23
+ <Story name="Large" args={{ size: "lg" }} />
24
+
25
+ <Story name="With Label" args={{ showLabel: true }} />
@@ -0,0 +1,27 @@
1
+ export default ThemeToggle;
2
+ type ThemeToggle = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const ThemeToggle: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import ThemeToggle from "./ThemeToggle.svelte";
15
+ 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> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -7,7 +7,7 @@
7
7
 
8
8
  <script lang="ts">
9
9
  import Icon from '@iconify/svelte';
10
- import { theme, resolvedTheme, cycleTheme } from '../stores/settingsStore.js';
10
+ import { getTheme, getResolvedTheme, cycleTheme } from '../stores/settingsStore.svelte.js';
11
11
  import type { ThemePreference } from '../types/settings.js';
12
12
 
13
13
  /**
@@ -30,7 +30,7 @@
30
30
  * - dark: moon icon
31
31
  * - auto: computer/system icon
32
32
  */
33
- const themeIcon = $derived(getThemeIcon($theme));
33
+ const themeIcon = $derived(getThemeIcon(getTheme()));
34
34
 
35
35
  /**
36
36
  * Get icon name based on theme preference
@@ -49,7 +49,7 @@
49
49
  /**
50
50
  * Get accessible label for the current theme
51
51
  */
52
- const themeLabel = $derived(getThemeLabel($theme));
52
+ const themeLabel = $derived(getThemeLabel(getTheme()));
53
53
 
54
54
  /**
55
55
  * Get label text based on theme preference
@@ -68,7 +68,7 @@
68
68
  /**
69
69
  * Get tooltip text describing current state and next action
70
70
  */
71
- const tooltipText = $derived(getTooltipText($theme, $resolvedTheme));
71
+ const tooltipText = $derived(getTooltipText(getTheme(), getResolvedTheme()));
72
72
 
73
73
  /**
74
74
  * Get tooltip text based on theme preference
@@ -120,7 +120,7 @@
120
120
  display: inline-flex;
121
121
  align-items: center;
122
122
  justify-content: center;
123
- gap: var(--fd-space-2);
123
+ gap: var(--fd-space-xs);
124
124
  border: 1px solid var(--fd-border);
125
125
  border-radius: var(--fd-radius-md);
126
126
  background-color: var(--fd-background);
@@ -146,7 +146,7 @@
146
146
 
147
147
  /* Size variants */
148
148
  .flowdrop-theme-toggle--sm {
149
- padding: var(--fd-space-1) var(--fd-space-2);
149
+ padding: var(--fd-space-3xs) var(--fd-space-xs);
150
150
  font-size: var(--fd-text-xs);
151
151
  }
152
152
 
@@ -155,7 +155,7 @@
155
155
  }
156
156
 
157
157
  .flowdrop-theme-toggle--md {
158
- padding: var(--fd-space-2) var(--fd-space-3);
158
+ padding: var(--fd-space-xs) var(--fd-space-md);
159
159
  font-size: var(--fd-text-sm);
160
160
  }
161
161
 
@@ -164,7 +164,7 @@
164
164
  }
165
165
 
166
166
  .flowdrop-theme-toggle--lg {
167
- padding: var(--fd-space-3) var(--fd-space-4);
167
+ padding: var(--fd-space-md) var(--fd-space-xl);
168
168
  font-size: var(--fd-text-base);
169
169
  }
170
170
 
@@ -130,7 +130,7 @@
130
130
  <div class="universal-node">
131
131
  <!-- Render the node component dynamically (Svelte 5 dynamic component syntax) -->
132
132
  {#if nodeComponent}
133
- <!-- svelte-ignore binding_property_non_reactive -->
133
+ <!-- svelte-ignore binding_property_non_reactive — Svelte 5 dynamic component limitation; reactivity maintained via $derived -->
134
134
  {@const NodeComponent = nodeComponent}
135
135
  <NodeComponent {data} {selected} />
136
136
  {/if}