@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.
- package/README.md +8 -8
- package/dist/api/enhanced-client.d.ts +3 -1
- package/dist/api/enhanced-client.js +35 -5
- package/dist/components/App.svelte +68 -34
- package/dist/components/ConfigForm.svelte +169 -142
- package/dist/components/ConfigForm.svelte.d.ts +4 -2
- package/dist/components/ConfigPanel.svelte +42 -15
- package/dist/components/LogsSidebar.svelte +20 -19
- package/dist/components/Navbar.svelte +150 -80
- package/dist/components/Navbar.svelte.d.ts +8 -0
- package/dist/components/NodeSidebar.svelte +334 -217
- package/dist/components/PipelineStatus.svelte +6 -1
- package/dist/components/ReadOnlyDetails.svelte +14 -14
- package/dist/components/SchemaForm.svelte +49 -30
- package/dist/components/SchemaForm.svelte.d.ts +11 -1
- package/dist/components/SettingsModal.svelte +279 -0
- package/dist/components/SettingsModal.svelte.d.ts +23 -0
- package/dist/components/SettingsPanel.svelte +615 -0
- package/dist/components/SettingsPanel.svelte.d.ts +21 -0
- package/dist/components/ThemeToggle.svelte +186 -0
- package/dist/components/ThemeToggle.svelte.d.ts +14 -0
- package/dist/components/WorkflowEditor.svelte +114 -38
- package/dist/components/form/FormArray.svelte +81 -81
- package/dist/components/form/FormAutocomplete.svelte +1014 -0
- package/dist/components/form/FormAutocomplete.svelte.d.ts +25 -0
- package/dist/components/form/FormCheckboxGroup.svelte +16 -16
- package/dist/components/form/FormCodeEditor.svelte +26 -26
- package/dist/components/form/FormField.svelte +52 -21
- package/dist/components/form/FormFieldLight.svelte +19 -19
- package/dist/components/form/FormFieldWrapper.svelte +4 -4
- package/dist/components/form/FormMarkdownEditor.svelte +124 -57
- package/dist/components/form/FormNumberField.svelte +13 -13
- package/dist/components/form/FormRangeField.svelte +16 -16
- package/dist/components/form/FormSelect.svelte +15 -15
- package/dist/components/form/FormTemplateEditor.svelte +34 -34
- package/dist/components/form/FormTextField.svelte +13 -13
- package/dist/components/form/FormTextarea.svelte +13 -13
- package/dist/components/form/FormToggle.svelte +8 -8
- package/dist/components/form/index.d.ts +1 -0
- package/dist/components/form/index.js +1 -0
- package/dist/components/form/types.d.ts +133 -8
- package/dist/components/form/types.js +50 -1
- package/dist/components/interrupt/ChoicePrompt.svelte +45 -38
- package/dist/components/interrupt/ConfirmationPrompt.svelte +35 -35
- package/dist/components/interrupt/FormPrompt.svelte +27 -20
- package/dist/components/interrupt/InterruptBubble.svelte +50 -50
- package/dist/components/interrupt/TextInputPrompt.svelte +39 -32
- package/dist/components/layouts/MainLayout.svelte +233 -34
- package/dist/components/layouts/MainLayout.svelte.d.ts +12 -0
- package/dist/components/nodes/GatewayNode.svelte +175 -125
- package/dist/components/nodes/IdeaNode.svelte +70 -84
- package/dist/components/nodes/NotesNode.svelte +124 -88
- package/dist/components/nodes/SimpleNode.svelte +91 -69
- package/dist/components/nodes/SquareNode.svelte +102 -75
- package/dist/components/nodes/TerminalNode.svelte +127 -113
- package/dist/components/nodes/ToolNode.svelte +125 -76
- package/dist/components/nodes/WorkflowNode.svelte +164 -108
- package/dist/components/playground/ChatPanel.svelte +76 -76
- package/dist/components/playground/ExecutionLogs.svelte +71 -69
- package/dist/components/playground/InputCollector.svelte +59 -59
- package/dist/components/playground/MessageBubble.svelte +111 -112
- package/dist/components/playground/Playground.svelte +184 -138
- package/dist/components/playground/PlaygroundModal.svelte +18 -19
- package/dist/components/playground/SessionManager.svelte +68 -67
- package/dist/config/defaultPortConfig.js +22 -22
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +1 -0
- package/dist/form/fieldRegistry.d.ts +17 -1
- package/dist/form/fieldRegistry.js +18 -2
- package/dist/form/index.d.ts +20 -2
- package/dist/form/index.js +19 -1
- package/dist/helpers/nodeLayoutHelper.d.ts +14 -0
- package/dist/helpers/nodeLayoutHelper.js +19 -0
- package/dist/helpers/workflowEditorHelper.js +23 -11
- package/dist/index.d.ts +5 -0
- package/dist/index.js +13 -0
- package/dist/services/autoSaveService.d.ts +112 -0
- package/dist/services/autoSaveService.js +223 -0
- package/dist/services/settingsService.d.ts +92 -0
- package/dist/services/settingsService.js +202 -0
- package/dist/services/toastService.d.ts +9 -0
- package/dist/services/toastService.js +30 -1
- package/dist/stores/settingsStore.d.ts +128 -0
- package/dist/stores/settingsStore.js +488 -0
- package/dist/stores/themeStore.d.ts +68 -0
- package/dist/stores/themeStore.js +215 -0
- package/dist/styles/base.css +338 -621
- package/dist/styles/toast.css +33 -0
- package/dist/styles/tokens.css +402 -0
- package/dist/types/index.d.ts +78 -0
- package/dist/types/index.js +2 -0
- package/dist/types/playground.d.ts +12 -0
- package/dist/types/settings.d.ts +185 -0
- package/dist/types/settings.js +101 -0
- package/dist/utils/colors.d.ts +100 -7
- package/dist/utils/colors.js +228 -67
- 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 {
|
|
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-
|
|
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="
|
|
168
|
+
class="flowdrop-workflow-node__icon-wrapper"
|
|
169
|
+
style="--_icon-color: {getCategoryColorToken(props.data.metadata.category)}"
|
|
166
170
|
>
|
|
167
|
-
<Icon
|
|
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 -
|
|
182
|
+
<!-- Node Description - line-height 20px so header grows in steps of 10 -->
|
|
176
183
|
<p
|
|
177
|
-
class="flowdrop-
|
|
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%);
|
|
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:
|
|
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: {
|
|
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
|
|
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: {
|
|
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
|
|
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%);
|
|
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(
|
|
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:
|
|
315
|
-
border:
|
|
316
|
-
border-radius:
|
|
317
|
-
box-shadow:
|
|
318
|
-
width:
|
|
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:
|
|
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:
|
|
328
|
-
|
|
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
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
border-top-
|
|
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-
|
|
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
|
-
|
|
349
|
-
|
|
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
|
|
388
|
+
.flowdrop-workflow-node__header-desc {
|
|
353
389
|
margin: 0;
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
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
|
-
|
|
362
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
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:
|
|
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
|
|
390
|
-
|
|
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
|
|
396
|
-
border-radius:
|
|
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:
|
|
405
|
-
color:
|
|
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
|
|
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:
|
|
417
|
-
padding:
|
|
418
|
-
background:
|
|
419
|
-
border: 1px solid
|
|
420
|
-
border-radius:
|
|
421
|
-
color:
|
|
422
|
-
font-size:
|
|
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
|
-
|
|
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
|
|
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:
|
|
511
|
+
gap: var(--fd-space-2);
|
|
462
512
|
}
|
|
463
513
|
|
|
464
514
|
.flowdrop-gap--3 {
|
|
465
|
-
gap:
|
|
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:
|
|
531
|
+
font-size: var(--fd-text-xs);
|
|
482
532
|
line-height: 1rem;
|
|
483
533
|
}
|
|
484
534
|
|
|
485
535
|
.flowdrop-text--sm {
|
|
486
|
-
font-size:
|
|
536
|
+
font-size: var(--fd-text-sm);
|
|
487
537
|
line-height: 1.25rem;
|
|
488
538
|
}
|
|
489
539
|
|
|
490
540
|
.flowdrop-text--gray {
|
|
491
|
-
color:
|
|
541
|
+
color: var(--fd-muted-foreground);
|
|
492
542
|
}
|
|
493
543
|
|
|
494
544
|
.flowdrop-text--active {
|
|
495
|
-
color:
|
|
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:
|
|
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:
|
|
520
|
-
right:
|
|
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:
|
|
524
|
-
border: 1px solid
|
|
525
|
-
border-radius:
|
|
526
|
-
color:
|
|
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
|
|
582
|
+
transition: all var(--fd-transition-normal);
|
|
533
583
|
backdrop-filter: blur(4px);
|
|
534
584
|
z-index: 15;
|
|
535
|
-
font-size:
|
|
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:
|
|
544
|
-
border-color:
|
|
545
|
-
color:
|
|
593
|
+
background-color: var(--fd-muted);
|
|
594
|
+
border-color: var(--fd-border-strong);
|
|
595
|
+
color: var(--fd-foreground);
|
|
546
596
|
}
|
|
547
597
|
</style>
|