@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
|
@@ -49,10 +49,12 @@
|
|
|
49
49
|
workflowId?: string;
|
|
50
50
|
/** Whether to also save the workflow when saving config */
|
|
51
51
|
saveWorkflowWhenSavingConfig?: boolean;
|
|
52
|
+
/** Callback when any field value changes (fired on blur for immediate sync) */
|
|
53
|
+
onChange?: (config: Record<string, unknown>, uiExtensions?: NodeUIExtensions) => void;
|
|
52
54
|
/** Callback when form is saved (includes both config and extensions if enabled) */
|
|
53
|
-
onSave
|
|
55
|
+
onSave?: (config: Record<string, unknown>, uiExtensions?: NodeUIExtensions) => void;
|
|
54
56
|
/** Callback when form is cancelled */
|
|
55
|
-
onCancel
|
|
57
|
+
onCancel?: () => void;
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
let {
|
|
@@ -62,6 +64,7 @@
|
|
|
62
64
|
showUIExtensions = true,
|
|
63
65
|
workflowId,
|
|
64
66
|
saveWorkflowWhenSavingConfig = false,
|
|
67
|
+
onChange,
|
|
65
68
|
onSave,
|
|
66
69
|
onCancel
|
|
67
70
|
}: Props = $props();
|
|
@@ -276,6 +279,18 @@
|
|
|
276
279
|
configValues[key] = value;
|
|
277
280
|
}
|
|
278
281
|
|
|
282
|
+
/**
|
|
283
|
+
* Handle form field blur - sync changes to workflow immediately
|
|
284
|
+
* Uses focusout which bubbles from child elements
|
|
285
|
+
* This enables auto-save behavior without requiring explicit Save button clicks
|
|
286
|
+
*/
|
|
287
|
+
function handleFormBlur(): void {
|
|
288
|
+
if (onChange) {
|
|
289
|
+
const extensions = showUIExtensions && node ? uiExtensionValues : undefined;
|
|
290
|
+
onChange({ ...configValues }, extensions);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
279
294
|
/**
|
|
280
295
|
* Handle form submission
|
|
281
296
|
* Collects both config values and UI extension values
|
|
@@ -327,10 +342,12 @@
|
|
|
327
342
|
}
|
|
328
343
|
|
|
329
344
|
// Pass UI extensions only if enabled
|
|
330
|
-
if (
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
345
|
+
if (onSave) {
|
|
346
|
+
if (showUIExtensions && node) {
|
|
347
|
+
onSave(updatedConfig, uiExtensionValues);
|
|
348
|
+
} else {
|
|
349
|
+
onSave(updatedConfig);
|
|
350
|
+
}
|
|
334
351
|
}
|
|
335
352
|
|
|
336
353
|
// Save workflow if the option is enabled
|
|
@@ -424,9 +441,9 @@
|
|
|
424
441
|
{:else if configSchema}
|
|
425
442
|
<form
|
|
426
443
|
class="config-form"
|
|
444
|
+
onfocusout={handleFormBlur}
|
|
427
445
|
onsubmit={(e) => {
|
|
428
446
|
e.preventDefault();
|
|
429
|
-
handleSave();
|
|
430
447
|
}}
|
|
431
448
|
>
|
|
432
449
|
<!-- Dynamic Schema Refresh Button -->
|
|
@@ -514,31 +531,35 @@
|
|
|
514
531
|
</div>
|
|
515
532
|
{/if}
|
|
516
533
|
|
|
517
|
-
<!-- Footer Actions -->
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
534
|
+
<!-- Footer Actions - Only shown when onSave is provided and onChange is not -->
|
|
535
|
+
<!-- With onChange (on-blur sync), changes are saved automatically, so no Save button needed -->
|
|
536
|
+
{#if onSave && !onChange}
|
|
537
|
+
<div class="config-form__footer">
|
|
538
|
+
<button
|
|
539
|
+
type="button"
|
|
540
|
+
class="config-form__button config-form__button--secondary"
|
|
541
|
+
onclick={onCancel}
|
|
542
|
+
disabled={isSavingWorkflow}
|
|
543
|
+
>
|
|
544
|
+
<Icon icon="heroicons:x-mark" class="config-form__button-icon" />
|
|
545
|
+
<span>Cancel</span>
|
|
546
|
+
</button>
|
|
547
|
+
<button
|
|
548
|
+
type="submit"
|
|
549
|
+
class="config-form__button config-form__button--primary"
|
|
550
|
+
onclick={handleSave}
|
|
551
|
+
disabled={isSavingWorkflow}
|
|
552
|
+
>
|
|
553
|
+
{#if isSavingWorkflow}
|
|
554
|
+
<span class="config-form__button-spinner"></span>
|
|
555
|
+
<span>Saving...</span>
|
|
556
|
+
{:else}
|
|
557
|
+
<Icon icon="heroicons:check" class="config-form__button-icon" />
|
|
558
|
+
<span>Save Changes</span>
|
|
559
|
+
{/if}
|
|
560
|
+
</button>
|
|
561
|
+
</div>
|
|
562
|
+
{/if}
|
|
542
563
|
</form>
|
|
543
564
|
{:else if !dynamicSchemaLoading && !showExternalEditLink}
|
|
544
565
|
<div class="config-form__empty">
|
|
@@ -570,26 +591,27 @@
|
|
|
570
591
|
.config-form {
|
|
571
592
|
display: flex;
|
|
572
593
|
flex-direction: column;
|
|
573
|
-
gap:
|
|
594
|
+
gap: var(--fd-space-6);
|
|
574
595
|
}
|
|
575
596
|
|
|
576
597
|
.config-form__fields {
|
|
577
598
|
display: flex;
|
|
578
599
|
flex-direction: column;
|
|
579
|
-
gap:
|
|
600
|
+
gap: var(--fd-space-5);
|
|
580
601
|
}
|
|
581
602
|
|
|
582
603
|
/* ============================================
|
|
583
604
|
FOOTER ACTIONS
|
|
605
|
+
Only shown when onSave is provided (legacy mode without onChange)
|
|
584
606
|
============================================ */
|
|
585
607
|
|
|
586
608
|
.config-form__footer {
|
|
587
609
|
display: flex;
|
|
588
|
-
gap:
|
|
610
|
+
gap: var(--fd-space-3);
|
|
589
611
|
justify-content: flex-end;
|
|
590
|
-
padding-top:
|
|
591
|
-
border-top: 1px solid var(--
|
|
592
|
-
margin-top:
|
|
612
|
+
padding-top: var(--fd-space-4);
|
|
613
|
+
border-top: 1px solid var(--fd-border-muted);
|
|
614
|
+
margin-top: var(--fd-space-2);
|
|
593
615
|
}
|
|
594
616
|
|
|
595
617
|
/* Button Spinner */
|
|
@@ -602,18 +624,23 @@
|
|
|
602
624
|
animation: config-form-spin 0.6s linear infinite;
|
|
603
625
|
}
|
|
604
626
|
|
|
627
|
+
/* ============================================
|
|
628
|
+
SHARED BUTTON STYLES
|
|
629
|
+
Used by error actions, external config buttons, and footer
|
|
630
|
+
============================================ */
|
|
631
|
+
|
|
605
632
|
.config-form__button {
|
|
606
633
|
display: inline-flex;
|
|
607
634
|
align-items: center;
|
|
608
635
|
justify-content: center;
|
|
609
|
-
gap:
|
|
610
|
-
padding: 0.625rem
|
|
611
|
-
border-radius:
|
|
612
|
-
font-size:
|
|
636
|
+
gap: var(--fd-space-2);
|
|
637
|
+
padding: 0.625rem var(--fd-space-4);
|
|
638
|
+
border-radius: var(--fd-radius-lg);
|
|
639
|
+
font-size: var(--fd-text-sm);
|
|
613
640
|
font-weight: 600;
|
|
614
641
|
font-family: inherit;
|
|
615
642
|
cursor: pointer;
|
|
616
|
-
transition: all
|
|
643
|
+
transition: all var(--fd-transition-normal);
|
|
617
644
|
border: 1px solid transparent;
|
|
618
645
|
min-height: 2.5rem;
|
|
619
646
|
}
|
|
@@ -625,16 +652,16 @@
|
|
|
625
652
|
}
|
|
626
653
|
|
|
627
654
|
.config-form__button--secondary {
|
|
628
|
-
background-color:
|
|
629
|
-
border-color: var(--
|
|
630
|
-
color: var(--
|
|
631
|
-
box-shadow:
|
|
655
|
+
background-color: var(--fd-background);
|
|
656
|
+
border-color: var(--fd-border);
|
|
657
|
+
color: var(--fd-foreground);
|
|
658
|
+
box-shadow: var(--fd-shadow-sm);
|
|
632
659
|
}
|
|
633
660
|
|
|
634
661
|
.config-form__button--secondary:hover {
|
|
635
|
-
background-color: var(--
|
|
636
|
-
border-color: var(--
|
|
637
|
-
color: var(--
|
|
662
|
+
background-color: var(--fd-muted);
|
|
663
|
+
border-color: var(--fd-border-strong);
|
|
664
|
+
color: var(--fd-foreground);
|
|
638
665
|
}
|
|
639
666
|
|
|
640
667
|
.config-form__button--secondary:focus-visible {
|
|
@@ -645,10 +672,10 @@
|
|
|
645
672
|
.config-form__button--primary {
|
|
646
673
|
background: linear-gradient(
|
|
647
674
|
135deg,
|
|
648
|
-
var(--
|
|
649
|
-
var(--
|
|
675
|
+
var(--fd-primary) 0%,
|
|
676
|
+
var(--fd-primary-hover) 100%
|
|
650
677
|
);
|
|
651
|
-
color:
|
|
678
|
+
color: var(--fd-primary-foreground);
|
|
652
679
|
box-shadow:
|
|
653
680
|
0 1px 3px rgba(59, 130, 246, 0.3),
|
|
654
681
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
@@ -657,8 +684,8 @@
|
|
|
657
684
|
.config-form__button--primary:hover {
|
|
658
685
|
background: linear-gradient(
|
|
659
686
|
135deg,
|
|
660
|
-
var(--
|
|
661
|
-
var(--
|
|
687
|
+
var(--fd-primary-hover) 0%,
|
|
688
|
+
var(--fd-primary-hover) 100%
|
|
662
689
|
);
|
|
663
690
|
box-shadow:
|
|
664
691
|
0 4px 12px rgba(59, 130, 246, 0.35),
|
|
@@ -682,36 +709,36 @@
|
|
|
682
709
|
============================================ */
|
|
683
710
|
|
|
684
711
|
.config-form__extensions {
|
|
685
|
-
background-color: var(--
|
|
686
|
-
border: 1px solid var(--
|
|
687
|
-
border-radius:
|
|
712
|
+
background-color: var(--fd-muted);
|
|
713
|
+
border: 1px solid var(--fd-border);
|
|
714
|
+
border-radius: var(--fd-radius-lg);
|
|
688
715
|
overflow: hidden;
|
|
689
|
-
margin-top:
|
|
716
|
+
margin-top: var(--fd-space-2);
|
|
690
717
|
}
|
|
691
718
|
|
|
692
719
|
.config-form__extensions-header {
|
|
693
720
|
display: flex;
|
|
694
721
|
align-items: center;
|
|
695
|
-
gap:
|
|
696
|
-
padding:
|
|
697
|
-
background-color: var(--
|
|
698
|
-
border-bottom: 1px solid var(--
|
|
722
|
+
gap: var(--fd-space-2);
|
|
723
|
+
padding: var(--fd-space-3) var(--fd-space-4);
|
|
724
|
+
background-color: var(--fd-subtle);
|
|
725
|
+
border-bottom: 1px solid var(--fd-border);
|
|
699
726
|
font-size: 0.8125rem;
|
|
700
727
|
font-weight: 600;
|
|
701
|
-
color: var(--
|
|
728
|
+
color: var(--fd-foreground);
|
|
702
729
|
}
|
|
703
730
|
|
|
704
731
|
.config-form__extensions-header :global(svg) {
|
|
705
732
|
width: 1rem;
|
|
706
733
|
height: 1rem;
|
|
707
|
-
color: var(--
|
|
734
|
+
color: var(--fd-muted-foreground);
|
|
708
735
|
}
|
|
709
736
|
|
|
710
737
|
.config-form__extensions-content {
|
|
711
|
-
padding:
|
|
738
|
+
padding: var(--fd-space-4);
|
|
712
739
|
display: flex;
|
|
713
740
|
flex-direction: column;
|
|
714
|
-
gap:
|
|
741
|
+
gap: var(--fd-space-4);
|
|
715
742
|
}
|
|
716
743
|
|
|
717
744
|
/* ============================================
|
|
@@ -719,22 +746,22 @@
|
|
|
719
746
|
============================================ */
|
|
720
747
|
|
|
721
748
|
.config-form__debug {
|
|
722
|
-
background-color: var(--
|
|
723
|
-
border: 1px solid var(--
|
|
724
|
-
border-radius:
|
|
749
|
+
background-color: var(--fd-warning-muted);
|
|
750
|
+
border: 1px solid var(--fd-warning);
|
|
751
|
+
border-radius: var(--fd-radius-lg);
|
|
725
752
|
overflow: hidden;
|
|
726
753
|
}
|
|
727
754
|
|
|
728
755
|
.config-form__debug-header {
|
|
729
756
|
display: flex;
|
|
730
757
|
align-items: center;
|
|
731
|
-
gap:
|
|
732
|
-
padding:
|
|
733
|
-
background-color: var(--
|
|
734
|
-
border-bottom: 1px solid var(--
|
|
758
|
+
gap: var(--fd-space-2);
|
|
759
|
+
padding: var(--fd-space-3) var(--fd-space-4);
|
|
760
|
+
background-color: var(--fd-warning-muted);
|
|
761
|
+
border-bottom: 1px solid var(--fd-warning);
|
|
735
762
|
font-size: 0.8125rem;
|
|
736
763
|
font-weight: 600;
|
|
737
|
-
color: var(--
|
|
764
|
+
color: var(--fd-warning-hover);
|
|
738
765
|
}
|
|
739
766
|
|
|
740
767
|
.config-form__debug-header :global(svg) {
|
|
@@ -744,12 +771,12 @@
|
|
|
744
771
|
|
|
745
772
|
.config-form__debug-content {
|
|
746
773
|
margin: 0;
|
|
747
|
-
padding:
|
|
748
|
-
font-size:
|
|
774
|
+
padding: var(--fd-space-4);
|
|
775
|
+
font-size: var(--fd-text-xs);
|
|
749
776
|
font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
|
|
750
|
-
color: var(--
|
|
777
|
+
color: var(--fd-foreground);
|
|
751
778
|
overflow-x: auto;
|
|
752
|
-
background-color:
|
|
779
|
+
background-color: var(--fd-background);
|
|
753
780
|
line-height: 1.5;
|
|
754
781
|
}
|
|
755
782
|
|
|
@@ -762,15 +789,15 @@
|
|
|
762
789
|
flex-direction: column;
|
|
763
790
|
align-items: center;
|
|
764
791
|
justify-content: center;
|
|
765
|
-
padding:
|
|
792
|
+
padding: var(--fd-space-12) var(--fd-space-6);
|
|
766
793
|
text-align: center;
|
|
767
794
|
}
|
|
768
795
|
|
|
769
796
|
.config-form__empty-icon {
|
|
770
797
|
width: 3rem;
|
|
771
798
|
height: 3rem;
|
|
772
|
-
margin-bottom:
|
|
773
|
-
color: var(--
|
|
799
|
+
margin-bottom: var(--fd-space-4);
|
|
800
|
+
color: var(--fd-border);
|
|
774
801
|
}
|
|
775
802
|
|
|
776
803
|
.config-form__empty-icon :global(svg) {
|
|
@@ -780,14 +807,14 @@
|
|
|
780
807
|
|
|
781
808
|
.config-form__empty-text {
|
|
782
809
|
margin: 0;
|
|
783
|
-
font-size:
|
|
784
|
-
color: var(--
|
|
810
|
+
font-size: var(--fd-text-sm);
|
|
811
|
+
color: var(--fd-muted-foreground);
|
|
785
812
|
font-style: italic;
|
|
786
813
|
line-height: 1.5;
|
|
787
814
|
}
|
|
788
815
|
|
|
789
816
|
.config-form__empty-button {
|
|
790
|
-
margin-top:
|
|
817
|
+
margin-top: var(--fd-space-4);
|
|
791
818
|
}
|
|
792
819
|
|
|
793
820
|
/* ============================================
|
|
@@ -795,42 +822,42 @@
|
|
|
795
822
|
============================================ */
|
|
796
823
|
|
|
797
824
|
.config-form__admin-edit {
|
|
798
|
-
background: linear-gradient(135deg,
|
|
799
|
-
border: 1px solid var(--
|
|
825
|
+
background: linear-gradient(135deg, var(--fd-info-muted) 0%, var(--fd-primary-muted) 100%);
|
|
826
|
+
border: 1px solid var(--fd-primary);
|
|
800
827
|
border-radius: 0.625rem;
|
|
801
828
|
overflow: hidden;
|
|
802
|
-
margin-bottom:
|
|
829
|
+
margin-bottom: var(--fd-space-4);
|
|
803
830
|
}
|
|
804
831
|
|
|
805
832
|
.config-form__admin-edit-header {
|
|
806
833
|
display: flex;
|
|
807
834
|
align-items: center;
|
|
808
|
-
gap:
|
|
809
|
-
padding:
|
|
810
|
-
background: linear-gradient(135deg,
|
|
811
|
-
border-bottom: 1px solid var(--
|
|
835
|
+
gap: var(--fd-space-2);
|
|
836
|
+
padding: var(--fd-space-3) var(--fd-space-4);
|
|
837
|
+
background: linear-gradient(135deg, var(--fd-primary-muted) 0%, var(--fd-primary-muted) 100%);
|
|
838
|
+
border-bottom: 1px solid var(--fd-primary);
|
|
812
839
|
font-size: 0.8125rem;
|
|
813
840
|
font-weight: 600;
|
|
814
|
-
color: var(--
|
|
841
|
+
color: var(--fd-primary-hover);
|
|
815
842
|
}
|
|
816
843
|
|
|
817
844
|
.config-form__admin-edit-header :global(svg) {
|
|
818
845
|
width: 1rem;
|
|
819
846
|
height: 1rem;
|
|
820
|
-
color: var(--
|
|
847
|
+
color: var(--fd-primary);
|
|
821
848
|
}
|
|
822
849
|
|
|
823
850
|
.config-form__admin-edit-content {
|
|
824
|
-
padding:
|
|
851
|
+
padding: var(--fd-space-4);
|
|
825
852
|
display: flex;
|
|
826
853
|
flex-direction: column;
|
|
827
|
-
gap:
|
|
854
|
+
gap: var(--fd-space-3);
|
|
828
855
|
}
|
|
829
856
|
|
|
830
857
|
.config-form__admin-edit-description {
|
|
831
858
|
margin: 0;
|
|
832
859
|
font-size: 0.8125rem;
|
|
833
|
-
color: var(--
|
|
860
|
+
color: var(--fd-primary-hover);
|
|
834
861
|
line-height: 1.5;
|
|
835
862
|
}
|
|
836
863
|
|
|
@@ -843,15 +870,15 @@
|
|
|
843
870
|
flex-direction: column;
|
|
844
871
|
align-items: center;
|
|
845
872
|
justify-content: center;
|
|
846
|
-
padding:
|
|
847
|
-
gap:
|
|
873
|
+
padding: var(--fd-space-12) var(--fd-space-6);
|
|
874
|
+
gap: var(--fd-space-4);
|
|
848
875
|
}
|
|
849
876
|
|
|
850
877
|
.config-form__loading-spinner {
|
|
851
878
|
width: 2.5rem;
|
|
852
879
|
height: 2.5rem;
|
|
853
|
-
border: 3px solid var(--
|
|
854
|
-
border-top-color: var(--
|
|
880
|
+
border: 3px solid var(--fd-primary-muted);
|
|
881
|
+
border-top-color: var(--fd-primary);
|
|
855
882
|
border-radius: 50%;
|
|
856
883
|
animation: config-form-spin 0.8s linear infinite;
|
|
857
884
|
}
|
|
@@ -864,8 +891,8 @@
|
|
|
864
891
|
|
|
865
892
|
.config-form__loading-text {
|
|
866
893
|
margin: 0;
|
|
867
|
-
font-size:
|
|
868
|
-
color: var(--
|
|
894
|
+
font-size: var(--fd-text-sm);
|
|
895
|
+
color: var(--fd-muted-foreground);
|
|
869
896
|
}
|
|
870
897
|
|
|
871
898
|
/* ============================================
|
|
@@ -873,47 +900,47 @@
|
|
|
873
900
|
============================================ */
|
|
874
901
|
|
|
875
902
|
.config-form__error {
|
|
876
|
-
background-color: var(--
|
|
877
|
-
border: 1px solid var(--
|
|
878
|
-
border-radius:
|
|
903
|
+
background-color: var(--fd-error-muted);
|
|
904
|
+
border: 1px solid var(--fd-error);
|
|
905
|
+
border-radius: var(--fd-radius-lg);
|
|
879
906
|
overflow: hidden;
|
|
880
907
|
}
|
|
881
908
|
|
|
882
909
|
.config-form__error-header {
|
|
883
910
|
display: flex;
|
|
884
911
|
align-items: center;
|
|
885
|
-
gap:
|
|
886
|
-
padding:
|
|
887
|
-
background-color: var(--
|
|
888
|
-
border-bottom: 1px solid var(--
|
|
912
|
+
gap: var(--fd-space-2);
|
|
913
|
+
padding: var(--fd-space-3) var(--fd-space-4);
|
|
914
|
+
background-color: var(--fd-error-muted);
|
|
915
|
+
border-bottom: 1px solid var(--fd-error);
|
|
889
916
|
font-size: 0.8125rem;
|
|
890
917
|
font-weight: 600;
|
|
891
|
-
color: var(--
|
|
918
|
+
color: var(--fd-error-hover);
|
|
892
919
|
}
|
|
893
920
|
|
|
894
921
|
.config-form__error-header :global(svg) {
|
|
895
922
|
width: 1rem;
|
|
896
923
|
height: 1rem;
|
|
897
|
-
color: var(--
|
|
924
|
+
color: var(--fd-error);
|
|
898
925
|
}
|
|
899
926
|
|
|
900
927
|
.config-form__error-content {
|
|
901
|
-
padding:
|
|
928
|
+
padding: var(--fd-space-4);
|
|
902
929
|
display: flex;
|
|
903
930
|
flex-direction: column;
|
|
904
|
-
gap:
|
|
931
|
+
gap: var(--fd-space-3);
|
|
905
932
|
}
|
|
906
933
|
|
|
907
934
|
.config-form__error-message {
|
|
908
935
|
margin: 0;
|
|
909
936
|
font-size: 0.8125rem;
|
|
910
|
-
color: var(--
|
|
937
|
+
color: var(--fd-error);
|
|
911
938
|
line-height: 1.5;
|
|
912
939
|
}
|
|
913
940
|
|
|
914
941
|
.config-form__error-actions {
|
|
915
942
|
display: flex;
|
|
916
|
-
gap:
|
|
943
|
+
gap: var(--fd-space-2);
|
|
917
944
|
flex-wrap: wrap;
|
|
918
945
|
}
|
|
919
946
|
|
|
@@ -923,37 +950,37 @@
|
|
|
923
950
|
|
|
924
951
|
.config-form__schema-actions {
|
|
925
952
|
display: flex;
|
|
926
|
-
gap:
|
|
927
|
-
margin-bottom:
|
|
928
|
-
padding-bottom:
|
|
929
|
-
border-bottom: 1px solid var(--
|
|
953
|
+
gap: var(--fd-space-2);
|
|
954
|
+
margin-bottom: var(--fd-space-4);
|
|
955
|
+
padding-bottom: var(--fd-space-3);
|
|
956
|
+
border-bottom: 1px solid var(--fd-border-muted);
|
|
930
957
|
}
|
|
931
958
|
|
|
932
959
|
.config-form__schema-refresh,
|
|
933
960
|
.config-form__schema-external {
|
|
934
961
|
display: inline-flex;
|
|
935
962
|
align-items: center;
|
|
936
|
-
gap:
|
|
937
|
-
padding:
|
|
938
|
-
font-size:
|
|
963
|
+
gap: var(--fd-space-1);
|
|
964
|
+
padding: var(--fd-space-1) var(--fd-space-2);
|
|
965
|
+
font-size: var(--fd-text-xs);
|
|
939
966
|
font-weight: 500;
|
|
940
967
|
font-family: inherit;
|
|
941
|
-
border-radius:
|
|
968
|
+
border-radius: var(--fd-radius-md);
|
|
942
969
|
cursor: pointer;
|
|
943
|
-
transition: all
|
|
970
|
+
transition: all var(--fd-transition-fast);
|
|
944
971
|
border: 1px solid transparent;
|
|
945
972
|
}
|
|
946
973
|
|
|
947
974
|
.config-form__schema-refresh {
|
|
948
|
-
background-color: var(--
|
|
949
|
-
border-color: var(--
|
|
950
|
-
color: var(--
|
|
975
|
+
background-color: var(--fd-muted);
|
|
976
|
+
border-color: var(--fd-border);
|
|
977
|
+
color: var(--fd-muted-foreground);
|
|
951
978
|
}
|
|
952
979
|
|
|
953
980
|
.config-form__schema-refresh:hover {
|
|
954
|
-
background-color: var(--
|
|
955
|
-
border-color: var(--
|
|
956
|
-
color: var(--
|
|
981
|
+
background-color: var(--fd-subtle);
|
|
982
|
+
border-color: var(--fd-border-strong);
|
|
983
|
+
color: var(--fd-foreground);
|
|
957
984
|
}
|
|
958
985
|
|
|
959
986
|
.config-form__schema-refresh :global(svg),
|
|
@@ -963,15 +990,15 @@
|
|
|
963
990
|
}
|
|
964
991
|
|
|
965
992
|
.config-form__schema-external {
|
|
966
|
-
background-color: var(--
|
|
967
|
-
border-color: var(--
|
|
968
|
-
color: var(--
|
|
993
|
+
background-color: var(--fd-primary-muted);
|
|
994
|
+
border-color: var(--fd-primary);
|
|
995
|
+
color: var(--fd-primary-hover);
|
|
969
996
|
}
|
|
970
997
|
|
|
971
998
|
.config-form__schema-external:hover {
|
|
972
|
-
background-color: var(--
|
|
973
|
-
border-color: var(--
|
|
974
|
-
color: var(--
|
|
999
|
+
background-color: var(--fd-primary-muted);
|
|
1000
|
+
border-color: var(--fd-primary-hover);
|
|
1001
|
+
color: var(--fd-primary-hover);
|
|
975
1002
|
}
|
|
976
1003
|
|
|
977
1004
|
/* ============================================
|
|
@@ -981,10 +1008,10 @@
|
|
|
981
1008
|
.config-form__button--external {
|
|
982
1009
|
background: linear-gradient(
|
|
983
1010
|
135deg,
|
|
984
|
-
var(--
|
|
985
|
-
var(--
|
|
1011
|
+
var(--fd-accent) 0%,
|
|
1012
|
+
var(--fd-primary) 100%
|
|
986
1013
|
);
|
|
987
|
-
color:
|
|
1014
|
+
color: var(--fd-accent-foreground);
|
|
988
1015
|
box-shadow:
|
|
989
1016
|
0 1px 3px rgba(99, 102, 241, 0.3),
|
|
990
1017
|
inset 0 1px 0 rgba(255, 255, 255, 0.1);
|
|
@@ -993,8 +1020,8 @@
|
|
|
993
1020
|
.config-form__button--external:hover {
|
|
994
1021
|
background: linear-gradient(
|
|
995
1022
|
135deg,
|
|
996
|
-
var(--
|
|
997
|
-
var(--
|
|
1023
|
+
var(--fd-accent-hover) 0%,
|
|
1024
|
+
var(--fd-primary-hover) 100%
|
|
998
1025
|
);
|
|
999
1026
|
box-shadow:
|
|
1000
1027
|
0 4px 12px rgba(99, 102, 241, 0.35),
|
|
@@ -12,10 +12,12 @@ interface Props {
|
|
|
12
12
|
workflowId?: string;
|
|
13
13
|
/** Whether to also save the workflow when saving config */
|
|
14
14
|
saveWorkflowWhenSavingConfig?: boolean;
|
|
15
|
+
/** Callback when any field value changes (fired on blur for immediate sync) */
|
|
16
|
+
onChange?: (config: Record<string, unknown>, uiExtensions?: NodeUIExtensions) => void;
|
|
15
17
|
/** Callback when form is saved (includes both config and extensions if enabled) */
|
|
16
|
-
onSave
|
|
18
|
+
onSave?: (config: Record<string, unknown>, uiExtensions?: NodeUIExtensions) => void;
|
|
17
19
|
/** Callback when form is cancelled */
|
|
18
|
-
onCancel
|
|
20
|
+
onCancel?: () => void;
|
|
19
21
|
}
|
|
20
22
|
declare const ConfigForm: import("svelte").Component<Props, {}, "">;
|
|
21
23
|
type ConfigForm = ReturnType<typeof ConfigForm>;
|