@d34dman/flowdrop 0.0.43 → 0.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +330 -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 +110 -36
- 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 +102 -73
- package/dist/components/nodes/IdeaNode.svelte +53 -52
- package/dist/components/nodes/NotesNode.svelte +120 -88
- package/dist/components/nodes/SimpleNode.svelte +67 -47
- package/dist/components/nodes/SquareNode.svelte +86 -49
- package/dist/components/nodes/TerminalNode.svelte +122 -72
- package/dist/components/nodes/ToolNode.svelte +96 -65
- package/dist/components/nodes/WorkflowNode.svelte +91 -67
- 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/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 +298 -621
- package/dist/styles/toast.css +33 -0
- package/dist/styles/tokens.css +366 -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 +3 -3
|
@@ -510,95 +510,99 @@
|
|
|
510
510
|
class:playground--embedded={mode === 'embedded'}
|
|
511
511
|
class:playground--standalone={mode === 'standalone'}
|
|
512
512
|
class:playground--modal={mode === 'modal'}
|
|
513
|
+
class:playground--no-sidebar={config.showSidebar === false}
|
|
513
514
|
>
|
|
514
515
|
<div class="playground__container">
|
|
515
|
-
<!-- Sidebar -->
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
<div class="playground__sidebar-
|
|
520
|
-
<
|
|
521
|
-
|
|
516
|
+
<!-- Sidebar (conditionally rendered based on config.showSidebar) -->
|
|
517
|
+
{#if config.showSidebar !== false}
|
|
518
|
+
<aside class="playground__sidebar">
|
|
519
|
+
<!-- Sidebar Header -->
|
|
520
|
+
<div class="playground__sidebar-header">
|
|
521
|
+
<div class="playground__sidebar-title">
|
|
522
|
+
<span>Playground</span>
|
|
523
|
+
</div>
|
|
524
|
+
{#if (mode === 'embedded' || mode === 'modal') && onClose}
|
|
525
|
+
<button
|
|
526
|
+
type="button"
|
|
527
|
+
class="playground__sidebar-close"
|
|
528
|
+
onclick={onClose}
|
|
529
|
+
title="Close playground"
|
|
530
|
+
>
|
|
531
|
+
{#if mode === 'modal'}
|
|
532
|
+
<Icon icon="mdi:close" />
|
|
533
|
+
{:else}
|
|
534
|
+
<Icon icon="mdi:dock-right" />
|
|
535
|
+
{/if}
|
|
536
|
+
</button>
|
|
537
|
+
{/if}
|
|
522
538
|
</div>
|
|
523
|
-
{#if (mode === 'embedded' || mode === 'modal') && onClose}
|
|
524
|
-
<button
|
|
525
|
-
type="button"
|
|
526
|
-
class="playground__sidebar-close"
|
|
527
|
-
onclick={onClose}
|
|
528
|
-
title="Close playground"
|
|
529
|
-
>
|
|
530
|
-
{#if mode === 'modal'}
|
|
531
|
-
<Icon icon="mdi:close" />
|
|
532
|
-
{:else}
|
|
533
|
-
<Icon icon="mdi:dock-right" />
|
|
534
|
-
{/if}
|
|
535
|
-
</button>
|
|
536
|
-
{/if}
|
|
537
|
-
</div>
|
|
538
539
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
<div class="playground__section-header">
|
|
542
|
-
<div class="playground__section-title">
|
|
543
|
-
<Icon icon="mdi:chat-outline" />
|
|
544
|
-
<span>Chat</span>
|
|
545
|
-
</div>
|
|
540
|
+
<!-- New Session Section -->
|
|
541
|
+
<div class="playground__section">
|
|
546
542
|
<button
|
|
547
543
|
type="button"
|
|
548
|
-
class="
|
|
544
|
+
class="playground__new-session-btn"
|
|
549
545
|
onclick={handleCreateSession}
|
|
550
546
|
disabled={$isLoading}
|
|
551
|
-
title="
|
|
547
|
+
title="Start a new session"
|
|
552
548
|
>
|
|
553
549
|
<Icon icon="mdi:plus" />
|
|
550
|
+
<span>New Session</span>
|
|
554
551
|
</button>
|
|
555
|
-
</div>
|
|
556
552
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
class="playground__session"
|
|
567
|
-
class:playground__session--active={$currentSession?.id === session.id}
|
|
568
|
-
role="button"
|
|
569
|
-
tabindex="0"
|
|
570
|
-
onclick={() => handleSelectSession(session.id)}
|
|
571
|
-
onkeydown={(e) => e.key === 'Enter' && handleSelectSession(session.id)}
|
|
572
|
-
>
|
|
573
|
-
<span class="playground__session-name" title={session.name}>
|
|
574
|
-
{session.name}
|
|
575
|
-
</span>
|
|
576
|
-
<button
|
|
577
|
-
type="button"
|
|
578
|
-
class="playground__session-menu"
|
|
579
|
-
class:playground__session-menu--delete={pendingDeleteId === session.id}
|
|
580
|
-
onclick={(e) => handleDeleteClick(e, session.id)}
|
|
581
|
-
title={pendingDeleteId === session.id
|
|
582
|
-
? 'Click to confirm delete'
|
|
583
|
-
: 'Delete session'}
|
|
584
|
-
>
|
|
585
|
-
{#if pendingDeleteId === session.id}
|
|
586
|
-
<Icon icon="mdi:check" />
|
|
587
|
-
{:else}
|
|
588
|
-
<Icon icon="mdi:dots-horizontal" />
|
|
589
|
-
{/if}
|
|
590
|
-
</button>
|
|
553
|
+
<!-- Sessions List - click a session to load it -->
|
|
554
|
+
<div class="playground__sessions-wrap">
|
|
555
|
+
{#if $sessions.length > 0}
|
|
556
|
+
<p class="playground__sessions-hint">Click a session to load it</p>
|
|
557
|
+
{/if}
|
|
558
|
+
<div class="playground__sessions">
|
|
559
|
+
{#if $sessions.length === 0 && !$isLoading}
|
|
560
|
+
<div class="playground__sessions-empty">
|
|
561
|
+
<span>No sessions yet</span>
|
|
591
562
|
</div>
|
|
592
|
-
{
|
|
593
|
-
|
|
563
|
+
{:else}
|
|
564
|
+
{#each $sessions as session (session.id)}
|
|
565
|
+
<div
|
|
566
|
+
class="playground__session"
|
|
567
|
+
class:playground__session--active={$currentSession?.id === session.id}
|
|
568
|
+
role="button"
|
|
569
|
+
tabindex="0"
|
|
570
|
+
title="Click to load this session"
|
|
571
|
+
aria-label="Load session: {session.name}"
|
|
572
|
+
onclick={() => handleSelectSession(session.id)}
|
|
573
|
+
onkeydown={(e) => e.key === 'Enter' && handleSelectSession(session.id)}
|
|
574
|
+
>
|
|
575
|
+
<span class="playground__session-name" title={session.name}>
|
|
576
|
+
{session.name}
|
|
577
|
+
</span>
|
|
578
|
+
<button
|
|
579
|
+
type="button"
|
|
580
|
+
class="playground__session-menu"
|
|
581
|
+
class:playground__session-menu--delete={pendingDeleteId === session.id}
|
|
582
|
+
onclick={(e) => handleDeleteClick(e, session.id)}
|
|
583
|
+
title={pendingDeleteId === session.id
|
|
584
|
+
? 'Click to confirm delete'
|
|
585
|
+
: 'Delete session'}
|
|
586
|
+
>
|
|
587
|
+
{#if pendingDeleteId === session.id}
|
|
588
|
+
<Icon icon="mdi:check" />
|
|
589
|
+
{:else}
|
|
590
|
+
<Icon icon="mdi:dots-horizontal" />
|
|
591
|
+
{/if}
|
|
592
|
+
</button>
|
|
593
|
+
</div>
|
|
594
|
+
{/each}
|
|
595
|
+
{/if}
|
|
596
|
+
</div>
|
|
597
|
+
</div>
|
|
594
598
|
</div>
|
|
595
|
-
</
|
|
596
|
-
|
|
599
|
+
</aside>
|
|
600
|
+
{/if}
|
|
597
601
|
|
|
598
602
|
<!-- Main Content -->
|
|
599
603
|
<main class="playground__main">
|
|
600
|
-
<!-- Session Header -->
|
|
601
|
-
{#if $currentSession}
|
|
604
|
+
<!-- Session Header (conditionally rendered based on config.showSessionHeader) -->
|
|
605
|
+
{#if $currentSession && config.showSessionHeader !== false}
|
|
602
606
|
<header class="playground__header">
|
|
603
607
|
<h2 class="playground__header-title">{$currentSession.name}</h2>
|
|
604
608
|
<button
|
|
@@ -659,18 +663,24 @@
|
|
|
659
663
|
flex-direction: column;
|
|
660
664
|
height: 100%;
|
|
661
665
|
overflow: hidden; /* Prevent playground-level scrolling */
|
|
662
|
-
background-color:
|
|
666
|
+
background-color: var(--fd-muted);
|
|
663
667
|
font-family:
|
|
664
668
|
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
665
669
|
}
|
|
666
670
|
|
|
667
671
|
.playground--embedded {
|
|
668
|
-
border-left: 1px solid
|
|
672
|
+
border-left: 1px solid var(--fd-border);
|
|
669
673
|
box-shadow: -4px 0 20px rgba(0, 0, 0, 0.08);
|
|
670
674
|
}
|
|
671
675
|
|
|
672
676
|
.playground--standalone {
|
|
673
677
|
height: 100vh;
|
|
678
|
+
background: var(--fd-layout-background, var(--fd-muted));
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
/* Dark mode override for standalone */
|
|
682
|
+
:global([data-theme='dark']) .playground--standalone {
|
|
683
|
+
background: linear-gradient(135deg, #141418 0%, #1a1a2e 50%, #16162a 100%);
|
|
674
684
|
}
|
|
675
685
|
|
|
676
686
|
.playground--modal {
|
|
@@ -678,6 +688,11 @@
|
|
|
678
688
|
width: 100%;
|
|
679
689
|
}
|
|
680
690
|
|
|
691
|
+
/* No sidebar mode - minimal chat widget experience */
|
|
692
|
+
.playground--no-sidebar .playground__main {
|
|
693
|
+
border-left: none;
|
|
694
|
+
}
|
|
695
|
+
|
|
681
696
|
/* Container */
|
|
682
697
|
.playground__container {
|
|
683
698
|
display: flex;
|
|
@@ -688,18 +703,22 @@
|
|
|
688
703
|
/* Sidebar */
|
|
689
704
|
.playground__sidebar {
|
|
690
705
|
width: 220px;
|
|
691
|
-
background-color:
|
|
692
|
-
border-right: 1px solid
|
|
706
|
+
background-color: var(--fd-background);
|
|
707
|
+
border-right: 1px solid var(--fd-border);
|
|
693
708
|
display: flex;
|
|
694
709
|
flex-direction: column;
|
|
695
710
|
}
|
|
696
711
|
|
|
712
|
+
/* Fixed height so sidebar and main session header align on same horizontal line */
|
|
697
713
|
.playground__sidebar-header {
|
|
698
714
|
display: flex;
|
|
699
715
|
align-items: center;
|
|
700
716
|
justify-content: space-between;
|
|
701
|
-
|
|
702
|
-
|
|
717
|
+
height: 3.25rem;
|
|
718
|
+
padding: 0 1rem;
|
|
719
|
+
border-bottom: 1px solid var(--fd-border);
|
|
720
|
+
box-sizing: border-box;
|
|
721
|
+
flex-shrink: 0;
|
|
703
722
|
}
|
|
704
723
|
|
|
705
724
|
.playground__sidebar-title {
|
|
@@ -708,7 +727,8 @@
|
|
|
708
727
|
gap: 0.5rem;
|
|
709
728
|
font-size: 0.9375rem;
|
|
710
729
|
font-weight: 600;
|
|
711
|
-
|
|
730
|
+
line-height: 1.25;
|
|
731
|
+
color: var(--fd-foreground);
|
|
712
732
|
}
|
|
713
733
|
|
|
714
734
|
.playground__sidebar-close {
|
|
@@ -720,14 +740,14 @@
|
|
|
720
740
|
border: none;
|
|
721
741
|
border-radius: 0.375rem;
|
|
722
742
|
background: transparent;
|
|
723
|
-
color:
|
|
743
|
+
color: var(--fd-muted-foreground);
|
|
724
744
|
cursor: pointer;
|
|
725
745
|
transition: all 0.15s ease;
|
|
726
746
|
}
|
|
727
747
|
|
|
728
748
|
.playground__sidebar-close:hover {
|
|
729
|
-
background-color:
|
|
730
|
-
color:
|
|
749
|
+
background-color: var(--fd-muted);
|
|
750
|
+
color: var(--fd-foreground);
|
|
731
751
|
}
|
|
732
752
|
|
|
733
753
|
/* Section */
|
|
@@ -736,96 +756,118 @@
|
|
|
736
756
|
display: flex;
|
|
737
757
|
flex-direction: column;
|
|
738
758
|
min-height: 0;
|
|
759
|
+
padding: 0.75rem 0.5rem 0;
|
|
739
760
|
}
|
|
740
761
|
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
align-items: center;
|
|
744
|
-
justify-content: space-between;
|
|
745
|
-
padding: 0.75rem 1rem;
|
|
746
|
-
}
|
|
747
|
-
|
|
748
|
-
.playground__section-title {
|
|
762
|
+
/* New Session – neutral full-width button with icon */
|
|
763
|
+
.playground__new-session-btn {
|
|
749
764
|
display: flex;
|
|
750
765
|
align-items: center;
|
|
766
|
+
justify-content: center;
|
|
751
767
|
gap: 0.5rem;
|
|
752
|
-
|
|
768
|
+
width: 100%;
|
|
769
|
+
padding: 0.625rem 1rem;
|
|
770
|
+
border: 1px solid var(--fd-border);
|
|
771
|
+
border-radius: var(--fd-radius-md);
|
|
772
|
+
background-color: var(--fd-background);
|
|
773
|
+
color: var(--fd-foreground);
|
|
774
|
+
font-size: 0.875rem;
|
|
753
775
|
font-weight: 500;
|
|
754
|
-
|
|
776
|
+
cursor: pointer;
|
|
777
|
+
transition: background-color 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
|
|
778
|
+
box-sizing: border-box;
|
|
755
779
|
}
|
|
756
780
|
|
|
757
|
-
.
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
width: 1.5rem;
|
|
762
|
-
height: 1.5rem;
|
|
763
|
-
border: none;
|
|
764
|
-
border-radius: 0.375rem;
|
|
765
|
-
background: transparent;
|
|
766
|
-
color: #6b7280;
|
|
767
|
-
cursor: pointer;
|
|
768
|
-
transition: all 0.15s ease;
|
|
781
|
+
.playground__new-session-btn:hover:not(:disabled) {
|
|
782
|
+
background-color: var(--fd-muted);
|
|
783
|
+
border-color: var(--fd-border);
|
|
784
|
+
transform: translateY(-1px);
|
|
769
785
|
}
|
|
770
786
|
|
|
771
|
-
.
|
|
772
|
-
|
|
773
|
-
|
|
787
|
+
.playground__new-session-btn:focus {
|
|
788
|
+
outline: none;
|
|
789
|
+
box-shadow: 0 0 0 2px var(--fd-ring);
|
|
774
790
|
}
|
|
775
791
|
|
|
776
|
-
.
|
|
792
|
+
.playground__new-session-btn:disabled {
|
|
777
793
|
opacity: 0.5;
|
|
778
794
|
cursor: not-allowed;
|
|
795
|
+
transform: none;
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
.playground__new-session-btn :global(svg) {
|
|
799
|
+
width: 1.125rem;
|
|
800
|
+
height: 1.125rem;
|
|
779
801
|
}
|
|
780
802
|
|
|
781
803
|
/* Sessions */
|
|
804
|
+
.playground__sessions-wrap {
|
|
805
|
+
flex: 1;
|
|
806
|
+
display: flex;
|
|
807
|
+
flex-direction: column;
|
|
808
|
+
min-height: 0;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
.playground__sessions-hint {
|
|
812
|
+
font-size: 0.6875rem;
|
|
813
|
+
color: var(--fd-muted-foreground);
|
|
814
|
+
margin: 0.75rem 0 0.375rem 0.75rem;
|
|
815
|
+
line-height: 1.3;
|
|
816
|
+
}
|
|
817
|
+
|
|
782
818
|
.playground__sessions {
|
|
783
819
|
flex: 1;
|
|
784
820
|
overflow-y: auto;
|
|
785
821
|
padding: 0 0.5rem 1rem;
|
|
822
|
+
min-height: 0;
|
|
786
823
|
}
|
|
787
824
|
|
|
788
825
|
.playground__sessions-empty {
|
|
789
826
|
padding: 1rem;
|
|
790
827
|
text-align: center;
|
|
791
828
|
font-size: 0.8125rem;
|
|
792
|
-
color:
|
|
829
|
+
color: var(--fd-muted-foreground);
|
|
793
830
|
}
|
|
794
831
|
|
|
832
|
+
/* Session row - clickable to load session; clear hover/active affordance */
|
|
795
833
|
.playground__session {
|
|
796
834
|
display: flex;
|
|
797
835
|
align-items: center;
|
|
798
836
|
justify-content: space-between;
|
|
799
837
|
padding: 0.625rem 0.75rem;
|
|
800
838
|
margin-bottom: 0.25rem;
|
|
801
|
-
border-radius:
|
|
839
|
+
border-radius: var(--fd-radius-md);
|
|
840
|
+
border-left: 3px solid transparent;
|
|
802
841
|
cursor: pointer;
|
|
803
|
-
transition:
|
|
842
|
+
transition: background-color 0.15s ease, border-left-color 0.15s ease;
|
|
804
843
|
}
|
|
805
844
|
|
|
806
845
|
.playground__session:hover {
|
|
807
|
-
background-color:
|
|
846
|
+
background-color: var(--fd-muted);
|
|
847
|
+
border-left-color: var(--fd-border);
|
|
808
848
|
}
|
|
809
849
|
|
|
810
850
|
.playground__session--active {
|
|
811
|
-
background-color:
|
|
851
|
+
background-color: var(--fd-primary-muted);
|
|
852
|
+
border-left-color: var(--fd-primary);
|
|
812
853
|
}
|
|
813
854
|
|
|
814
855
|
.playground__session--active:hover {
|
|
815
|
-
background-color:
|
|
856
|
+
background-color: var(--fd-primary-muted);
|
|
857
|
+
border-left-color: var(--fd-primary);
|
|
816
858
|
}
|
|
817
859
|
|
|
818
860
|
.playground__session-name {
|
|
819
861
|
flex: 1;
|
|
820
862
|
font-size: 0.875rem;
|
|
821
|
-
color:
|
|
863
|
+
color: var(--fd-foreground);
|
|
822
864
|
white-space: nowrap;
|
|
823
865
|
overflow: hidden;
|
|
824
866
|
text-overflow: ellipsis;
|
|
825
867
|
}
|
|
826
868
|
|
|
827
869
|
.playground__session--active .playground__session-name {
|
|
828
|
-
color:
|
|
870
|
+
color: var(--fd-primary);
|
|
829
871
|
font-weight: 500;
|
|
830
872
|
}
|
|
831
873
|
|
|
@@ -838,7 +880,7 @@
|
|
|
838
880
|
border: none;
|
|
839
881
|
border-radius: 0.25rem;
|
|
840
882
|
background: transparent;
|
|
841
|
-
color:
|
|
883
|
+
color: var(--fd-muted-foreground);
|
|
842
884
|
cursor: pointer;
|
|
843
885
|
opacity: 0;
|
|
844
886
|
transition: all 0.15s ease;
|
|
@@ -849,19 +891,19 @@
|
|
|
849
891
|
}
|
|
850
892
|
|
|
851
893
|
.playground__session-menu:hover {
|
|
852
|
-
background-color:
|
|
853
|
-
color:
|
|
894
|
+
background-color: var(--fd-error-muted);
|
|
895
|
+
color: var(--fd-error);
|
|
854
896
|
}
|
|
855
897
|
|
|
856
898
|
.playground__session-menu--delete {
|
|
857
899
|
opacity: 1;
|
|
858
|
-
background-color:
|
|
859
|
-
color:
|
|
900
|
+
background-color: var(--fd-success-muted);
|
|
901
|
+
color: var(--fd-success);
|
|
860
902
|
}
|
|
861
903
|
|
|
862
904
|
.playground__session-menu--delete:hover {
|
|
863
|
-
background-color:
|
|
864
|
-
color:
|
|
905
|
+
background-color: var(--fd-success-muted);
|
|
906
|
+
color: var(--fd-success-hover);
|
|
865
907
|
}
|
|
866
908
|
|
|
867
909
|
/* Main Content */
|
|
@@ -872,23 +914,27 @@
|
|
|
872
914
|
min-width: 0;
|
|
873
915
|
min-height: 0; /* Allow proper flex shrinking */
|
|
874
916
|
overflow: hidden; /* Prevent scrolling - ChatPanel handles it */
|
|
875
|
-
background-color:
|
|
917
|
+
background-color: var(--fd-background);
|
|
876
918
|
}
|
|
877
919
|
|
|
878
|
-
/* Header */
|
|
920
|
+
/* Header - exact same height as playground__sidebar-header for alignment */
|
|
879
921
|
.playground__header {
|
|
880
922
|
display: flex;
|
|
881
923
|
align-items: center;
|
|
882
924
|
justify-content: space-between;
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
925
|
+
height: 3.25rem;
|
|
926
|
+
padding: 0 1.25rem;
|
|
927
|
+
border-bottom: 1px solid var(--fd-border);
|
|
928
|
+
background-color: var(--fd-background);
|
|
929
|
+
box-sizing: border-box;
|
|
930
|
+
flex-shrink: 0;
|
|
886
931
|
}
|
|
887
932
|
|
|
888
933
|
.playground__header-title {
|
|
889
934
|
font-size: 0.9375rem;
|
|
890
935
|
font-weight: 600;
|
|
891
|
-
|
|
936
|
+
line-height: 1.25;
|
|
937
|
+
color: var(--fd-foreground);
|
|
892
938
|
margin: 0;
|
|
893
939
|
}
|
|
894
940
|
|
|
@@ -901,14 +947,14 @@
|
|
|
901
947
|
border: none;
|
|
902
948
|
border-radius: 0.375rem;
|
|
903
949
|
background: transparent;
|
|
904
|
-
color:
|
|
950
|
+
color: var(--fd-muted-foreground);
|
|
905
951
|
cursor: pointer;
|
|
906
952
|
transition: all 0.15s ease;
|
|
907
953
|
}
|
|
908
954
|
|
|
909
955
|
.playground__header-close:hover {
|
|
910
|
-
background-color:
|
|
911
|
-
color:
|
|
956
|
+
background-color: var(--fd-muted);
|
|
957
|
+
color: var(--fd-foreground);
|
|
912
958
|
}
|
|
913
959
|
|
|
914
960
|
/* Error */
|
|
@@ -917,9 +963,9 @@
|
|
|
917
963
|
align-items: center;
|
|
918
964
|
gap: 0.5rem;
|
|
919
965
|
padding: 0.75rem 1rem;
|
|
920
|
-
background-color:
|
|
921
|
-
border-bottom: 1px solid
|
|
922
|
-
color:
|
|
966
|
+
background-color: var(--fd-error-muted);
|
|
967
|
+
border-bottom: 1px solid var(--fd-error);
|
|
968
|
+
color: var(--fd-error);
|
|
923
969
|
font-size: 0.875rem;
|
|
924
970
|
}
|
|
925
971
|
|
|
@@ -933,13 +979,13 @@
|
|
|
933
979
|
border: none;
|
|
934
980
|
border-radius: 0.25rem;
|
|
935
981
|
background: transparent;
|
|
936
|
-
color:
|
|
982
|
+
color: var(--fd-error);
|
|
937
983
|
cursor: pointer;
|
|
938
984
|
transition: background-color 0.15s ease;
|
|
939
985
|
}
|
|
940
986
|
|
|
941
987
|
.playground__error-dismiss:hover {
|
|
942
|
-
background-color:
|
|
988
|
+
background-color: var(--fd-error-muted);
|
|
943
989
|
}
|
|
944
990
|
|
|
945
991
|
/* Content */
|
|
@@ -958,7 +1004,7 @@
|
|
|
958
1004
|
justify-content: center;
|
|
959
1005
|
flex: 1;
|
|
960
1006
|
gap: 1rem;
|
|
961
|
-
color:
|
|
1007
|
+
color: var(--fd-muted-foreground);
|
|
962
1008
|
}
|
|
963
1009
|
|
|
964
1010
|
:global(.playground__loading-icon) {
|
|
@@ -115,20 +115,19 @@
|
|
|
115
115
|
left: 0;
|
|
116
116
|
right: 0;
|
|
117
117
|
bottom: 0;
|
|
118
|
-
background-color:
|
|
118
|
+
background-color: var(--fd-backdrop);
|
|
119
|
+
backdrop-filter: var(--fd-backdrop-blur);
|
|
119
120
|
display: flex;
|
|
120
121
|
align-items: center;
|
|
121
122
|
justify-content: center;
|
|
122
123
|
z-index: 1100;
|
|
123
|
-
padding:
|
|
124
|
+
padding: var(--fd-space-4);
|
|
124
125
|
}
|
|
125
126
|
|
|
126
127
|
.playground-modal {
|
|
127
|
-
background:
|
|
128
|
-
border-radius:
|
|
129
|
-
box-shadow:
|
|
130
|
-
0 20px 25px -5px rgba(0, 0, 0, 0.1),
|
|
131
|
-
0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
|
128
|
+
background: var(--fd-background);
|
|
129
|
+
border-radius: var(--fd-radius-xl);
|
|
130
|
+
box-shadow: var(--fd-shadow-xl);
|
|
132
131
|
width: 100%;
|
|
133
132
|
max-width: 90vw;
|
|
134
133
|
min-width: 800px;
|
|
@@ -142,19 +141,19 @@
|
|
|
142
141
|
display: flex;
|
|
143
142
|
align-items: center;
|
|
144
143
|
justify-content: space-between;
|
|
145
|
-
padding:
|
|
146
|
-
border-bottom: 1px solid
|
|
147
|
-
background-color:
|
|
144
|
+
padding: var(--fd-space-4) var(--fd-space-5);
|
|
145
|
+
border-bottom: 1px solid var(--fd-border);
|
|
146
|
+
background-color: var(--fd-muted);
|
|
148
147
|
flex-shrink: 0;
|
|
149
148
|
}
|
|
150
149
|
|
|
151
150
|
.playground-modal__title {
|
|
152
151
|
display: flex;
|
|
153
152
|
align-items: center;
|
|
154
|
-
gap:
|
|
155
|
-
font-size:
|
|
153
|
+
gap: var(--fd-space-2);
|
|
154
|
+
font-size: var(--fd-text-base);
|
|
156
155
|
font-weight: 600;
|
|
157
|
-
color:
|
|
156
|
+
color: var(--fd-foreground);
|
|
158
157
|
margin: 0;
|
|
159
158
|
}
|
|
160
159
|
|
|
@@ -166,15 +165,15 @@
|
|
|
166
165
|
height: 2rem;
|
|
167
166
|
border: none;
|
|
168
167
|
background: transparent;
|
|
169
|
-
border-radius:
|
|
170
|
-
color:
|
|
168
|
+
border-radius: var(--fd-radius-md);
|
|
169
|
+
color: var(--fd-muted-foreground);
|
|
171
170
|
cursor: pointer;
|
|
172
|
-
transition: all
|
|
171
|
+
transition: all var(--fd-transition-normal);
|
|
173
172
|
}
|
|
174
173
|
|
|
175
174
|
.playground-modal__close-btn:hover {
|
|
176
|
-
background-color:
|
|
177
|
-
color:
|
|
175
|
+
background-color: var(--fd-secondary);
|
|
176
|
+
color: var(--fd-foreground);
|
|
178
177
|
}
|
|
179
178
|
|
|
180
179
|
.playground-modal__content {
|
|
@@ -208,7 +207,7 @@
|
|
|
208
207
|
}
|
|
209
208
|
|
|
210
209
|
.playground-modal__header {
|
|
211
|
-
padding:
|
|
210
|
+
padding: var(--fd-space-3) var(--fd-space-4);
|
|
212
211
|
}
|
|
213
212
|
}
|
|
214
213
|
|