@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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Port Coordinate Store
2
+ * Port Coordinate Store (Svelte 5 Runes)
3
3
  *
4
4
  * General-purpose store that maintains absolute canvas-space coordinates
5
5
  * for all port handles in the workflow. Built from SvelteFlow's internal
@@ -12,10 +12,10 @@
12
12
  * which SvelteFlow already maintains for all node types. This avoids replicating
13
13
  * CSS positioning logic and stays automatically accurate.
14
14
  */
15
- import { writable, get } from 'svelte/store';
15
+ import { SvelteMap } from 'svelte/reactivity';
16
16
  import { ProximityConnectHelper } from '../helpers/proximityConnect.js';
17
- /** Store holding all port absolute coordinates, keyed by handleId */
18
- export const portCoordinateStore = writable(new Map());
17
+ /** Reactive state holding all port absolute coordinates, keyed by handleId */
18
+ let coordinates = $state(new SvelteMap());
19
19
  /**
20
20
  * Parse a handle ID to extract nodeId, direction, and portId.
21
21
  * Handle ID format: ${nodeId}-${direction}-${portId}
@@ -37,7 +37,7 @@ function parseHandleId(handleId) {
37
37
  }
38
38
  /**
39
39
  * Build a dataType lookup map from a node's ports.
40
- * Maps portId dataType for quick lookup when processing handle bounds.
40
+ * Maps portId -> dataType for quick lookup when processing handle bounds.
41
41
  */
42
42
  function buildPortDataTypeLookup(node) {
43
43
  const lookup = new Map();
@@ -64,7 +64,7 @@ function computeNodePortCoordinates(node, internalNode) {
64
64
  return [];
65
65
  const posAbs = internalNode.internals.positionAbsolute;
66
66
  const dataTypeLookup = buildPortDataTypeLookup(node);
67
- const coordinates = [];
67
+ const result = [];
68
68
  const allHandles = [...(handleBounds.source ?? []), ...(handleBounds.target ?? [])];
69
69
  for (const handle of allHandles) {
70
70
  if (!handle.id)
@@ -76,7 +76,7 @@ function computeNodePortCoordinates(node, internalNode) {
76
76
  const dataType = dataTypeLookup.get(lookupKey);
77
77
  if (!dataType)
78
78
  continue;
79
- coordinates.push({
79
+ result.push({
80
80
  x: posAbs.x + handle.x + handle.width / 2,
81
81
  y: posAbs.y + handle.y + handle.height / 2,
82
82
  handleId: handle.id,
@@ -85,7 +85,7 @@ function computeNodePortCoordinates(node, internalNode) {
85
85
  dataType
86
86
  });
87
87
  }
88
- return coordinates;
88
+ return result;
89
89
  }
90
90
  /**
91
91
  * Rebuild coordinates for ALL nodes from SvelteFlow internals.
@@ -95,7 +95,7 @@ function computeNodePortCoordinates(node, internalNode) {
95
95
  * @param getInternalNode - SvelteFlow's getInternalNode function
96
96
  */
97
97
  export function rebuildAllPortCoordinates(nodes, getInternalNode) {
98
- const map = new Map();
98
+ const map = new SvelteMap();
99
99
  for (const node of nodes) {
100
100
  const internalNode = getInternalNode(node.id);
101
101
  if (!internalNode)
@@ -105,7 +105,7 @@ export function rebuildAllPortCoordinates(nodes, getInternalNode) {
105
105
  map.set(coord.handleId, coord);
106
106
  }
107
107
  }
108
- portCoordinateStore.set(map);
108
+ coordinates = map;
109
109
  }
110
110
  /**
111
111
  * Update coordinates for a single node (efficient for drag updates).
@@ -118,21 +118,17 @@ export function updateNodePortCoordinates(node, getInternalNode) {
118
118
  const internalNode = getInternalNode(node.id);
119
119
  if (!internalNode)
120
120
  return;
121
- portCoordinateStore.update((map) => {
122
- // Remove old entries for this node
123
- for (const [key, coord] of map) {
124
- if (coord.nodeId === node.id) {
125
- map.delete(key);
126
- }
121
+ // Remove old entries for this node
122
+ for (const [key, coord] of coordinates) {
123
+ if (coord.nodeId === node.id) {
124
+ coordinates.delete(key);
127
125
  }
128
- // Add new entries
129
- const coords = computeNodePortCoordinates(node, internalNode);
130
- for (const coord of coords) {
131
- map.set(coord.handleId, coord);
132
- }
133
- // Return new reference for reactivity
134
- return new Map(map);
135
- });
126
+ }
127
+ // Add new entries
128
+ const coords = computeNodePortCoordinates(node, internalNode);
129
+ for (const coord of coords) {
130
+ coordinates.set(coord.handleId, coord);
131
+ }
136
132
  }
137
133
  /**
138
134
  * Remove all coordinates for a node (on node delete).
@@ -140,14 +136,11 @@ export function updateNodePortCoordinates(node, getInternalNode) {
140
136
  * @param nodeId - ID of the node to remove
141
137
  */
142
138
  export function removeNodePortCoordinates(nodeId) {
143
- portCoordinateStore.update((map) => {
144
- for (const [key, coord] of map) {
145
- if (coord.nodeId === nodeId) {
146
- map.delete(key);
147
- }
139
+ for (const [key, coord] of coordinates) {
140
+ if (coord.nodeId === nodeId) {
141
+ coordinates.delete(key);
148
142
  }
149
- return new Map(map);
150
- });
143
+ }
151
144
  }
152
145
  /**
153
146
  * Get coordinates for a specific handle.
@@ -156,7 +149,7 @@ export function removeNodePortCoordinates(nodeId) {
156
149
  * @returns The port coordinate or undefined if not found
157
150
  */
158
151
  export function getPortCoordinate(handleId) {
159
- return get(portCoordinateStore).get(handleId);
152
+ return coordinates.get(handleId);
160
153
  }
161
154
  /**
162
155
  * Get all coordinates for a specific node.
@@ -166,7 +159,7 @@ export function getPortCoordinate(handleId) {
166
159
  */
167
160
  export function getNodePortCoordinates(nodeId) {
168
161
  const result = [];
169
- for (const coord of get(portCoordinateStore).values()) {
162
+ for (const coord of coordinates.values()) {
170
163
  if (coord.nodeId === nodeId) {
171
164
  result.push(coord);
172
165
  }
@@ -174,10 +167,20 @@ export function getNodePortCoordinates(nodeId) {
174
167
  return result;
175
168
  }
176
169
  /**
177
- * Get the current snapshot of all port coordinates (non-reactive).
170
+ * Get the current snapshot of all port coordinates.
171
+ * Returns the reactive SvelteMap directly.
178
172
  *
179
173
  * @returns Current port coordinate map
180
174
  */
181
175
  export function getPortCoordinateSnapshot() {
182
- return get(portCoordinateStore);
176
+ return coordinates;
177
+ }
178
+ /**
179
+ * Get the reactive port coordinates state.
180
+ * Useful for components that need to reactively read the coordinates.
181
+ *
182
+ * @returns The reactive port coordinate map
183
+ */
184
+ export function getPortCoordinates() {
185
+ return coordinates;
183
186
  }
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Settings Store for FlowDrop
2
+ * Settings Store for FlowDrop (Svelte 5 Runes)
3
3
  *
4
4
  * Provides unified state management for all user-configurable settings with:
5
5
  * - Hybrid persistence (localStorage primary, optional API sync)
6
- * - Category-specific derived stores for performance
6
+ * - Category-specific getter functions for performance
7
7
  * - Deep merge support for partial updates
8
8
  * - Integrated theme system with system preference detection
9
9
  *
@@ -12,47 +12,58 @@
12
12
  import type { FlowDropSettings, ThemeSettings, EditorSettings, UISettings, BehaviorSettings, ApiSettings, PartialSettings, SyncStatus, ResolvedTheme, ThemePreference, SettingsChangeCallback, SettingsCategory } from '../types/settings.js';
13
13
  export type { ThemePreference, ResolvedTheme } from '../types/settings.js';
14
14
  /**
15
- * Main settings store (read-only access to current settings)
15
+ * Get current settings (replaces settingsStore derived store)
16
16
  */
17
- export declare const settingsStore: import("svelte/store").Readable<FlowDropSettings>;
17
+ export declare function getSettings(): FlowDropSettings;
18
18
  /**
19
- * Sync status store for UI indicators
19
+ * Get sync status (replaces syncStatusStore derived store)
20
20
  */
21
- export declare const syncStatusStore: import("svelte/store").Readable<{
21
+ export declare function getSyncStatus(): {
22
22
  status: SyncStatus;
23
- lastSyncedAt: number;
24
- error: string;
25
- }>;
23
+ lastSyncedAt: number | null;
24
+ error: string | null;
25
+ };
26
26
  /**
27
- * Theme settings store
27
+ * Get theme settings (replaces themeSettings derived store)
28
28
  */
29
- export declare const themeSettings: import("svelte/store").Readable<ThemeSettings>;
29
+ export declare function getThemeSettings(): ThemeSettings;
30
30
  /**
31
- * Editor settings store
31
+ * Get editor settings (replaces editorSettings derived store)
32
32
  */
33
- export declare const editorSettings: import("svelte/store").Readable<EditorSettings>;
33
+ export declare function getEditorSettings(): EditorSettings;
34
34
  /**
35
- * UI settings store
35
+ * Get UI settings (replaces uiSettings derived store)
36
36
  */
37
- export declare const uiSettings: import("svelte/store").Readable<UISettings>;
37
+ export declare function getUiSettings(): UISettings;
38
38
  /**
39
- * Behavior settings store
39
+ * Get behavior settings (replaces behaviorSettings derived store)
40
40
  */
41
- export declare const behaviorSettings: import("svelte/store").Readable<BehaviorSettings>;
41
+ export declare function getBehaviorSettings(): BehaviorSettings;
42
42
  /**
43
- * API settings store
43
+ * Get API settings (replaces apiSettings derived store)
44
44
  */
45
- export declare const apiSettings: import("svelte/store").Readable<ApiSettings>;
45
+ export declare function getApiSettings(): ApiSettings;
46
46
  /**
47
- * Theme preference store
48
- * Derived from themeSettings for convenient access
47
+ * Get theme preference (replaces theme derived store)
49
48
  */
50
- export declare const theme: import("svelte/store").Readable<ThemePreference>;
49
+ export declare function getTheme(): ThemePreference;
51
50
  /**
52
- * Resolved theme - the actual theme applied ('light' or 'dark')
51
+ * Get resolved theme - the actual theme applied ('light' or 'dark')
53
52
  * When preference is 'auto', resolves based on system preference
53
+ * (replaces resolvedTheme derived store)
54
+ */
55
+ export declare function getResolvedTheme(): ResolvedTheme;
56
+ /**
57
+ * Get system theme state (for internal use)
58
+ */
59
+ export declare function getSystemThemeState(): ResolvedTheme;
60
+ /**
61
+ * Initialize the system theme change listener.
62
+ * Sets up a media query listener for the system color scheme preference.
63
+ *
64
+ * @returns Cleanup function that removes the listener
54
65
  */
55
- export declare const resolvedTheme: import("svelte/store").Readable<ResolvedTheme>;
66
+ export declare function initThemeListener(): () => void;
56
67
  /**
57
68
  * Update settings with partial values
58
69
  *
@@ -65,10 +76,6 @@ export declare function updateSettings(partial: PartialSettings): void;
65
76
  * @param categories - Optional categories to reset (all if not specified)
66
77
  */
67
78
  export declare function resetSettings(categories?: SettingsCategory[]): void;
68
- /**
69
- * Get current settings synchronously
70
- */
71
- export declare function getSettings(): FlowDropSettings;
72
79
  /**
73
80
  * Set the theme preference
74
81
  *
@@ -84,6 +91,12 @@ export declare function toggleTheme(): void;
84
91
  * Cycle through theme options: light -> dark -> auto -> light
85
92
  */
86
93
  export declare function cycleTheme(): void;
94
+ /**
95
+ * Clean up the theme subscription created by initializeTheme().
96
+ * Call this when tearing down the settings system (e.g., in tests or
97
+ * component cleanup) to prevent memory leaks.
98
+ */
99
+ export declare function cleanupThemeSubscription(): void;
87
100
  /**
88
101
  * Initialize the theme system
89
102
  * Should be called once on app startup
@@ -91,6 +104,10 @@ export declare function cycleTheme(): void;
91
104
  * This function:
92
105
  * 1. Applies the current resolved theme to the document
93
106
  * 2. Sets up reactivity to apply theme changes
107
+ *
108
+ * Note: In Svelte 5, we use $effect for reactivity. Since $effect can only
109
+ * be used in component context or $effect.root, we use $effect.root here
110
+ * to create a standalone reactive scope.
94
111
  */
95
112
  export declare function initializeTheme(): void;
96
113
  /**