@flowdrop/flowdrop 2.0.0-beta.2 → 2.0.0-beta.4
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/CHANGELOG.md +59 -0
- package/MIGRATION-2.0.md +13 -0
- package/README.md +5 -5
- package/dist/components/App.svelte +36 -191
- package/dist/components/App.svelte.d.ts +2 -7
- package/dist/components/Button.stories.svelte +65 -0
- package/dist/components/Button.stories.svelte.d.ts +19 -0
- package/dist/components/Button.svelte +62 -0
- package/dist/components/Button.svelte.d.ts +24 -0
- package/dist/components/CanvasIconButton.svelte +76 -0
- package/dist/components/CanvasIconButton.svelte.d.ts +18 -0
- package/dist/components/ConfigForm.svelte +4 -23
- package/dist/components/ConfigPanel.svelte +4 -3
- package/dist/components/EditorStatusBar.stories.svelte +44 -0
- package/dist/components/EditorStatusBar.stories.svelte.d.ts +27 -0
- package/dist/components/EditorStatusBar.svelte +99 -0
- package/dist/components/EditorStatusBar.svelte.d.ts +15 -0
- package/dist/components/IconButton.svelte +80 -0
- package/dist/components/IconButton.svelte.d.ts +30 -0
- package/dist/components/Input.svelte +74 -0
- package/dist/components/Input.svelte.d.ts +17 -0
- package/dist/components/LogoWordmark.svelte +113 -0
- package/dist/components/LogoWordmark.svelte.d.ts +26 -0
- package/dist/components/Navbar.svelte +17 -63
- package/dist/components/Navbar.svelte.d.ts +3 -0
- package/dist/components/NodeSidebar.svelte +17 -122
- package/dist/components/NodeSwapPicker.svelte +10 -28
- package/dist/components/PortMappingRow.svelte +0 -2
- package/dist/components/SchemaForm.svelte +0 -12
- package/dist/components/Select.svelte +53 -0
- package/dist/components/Select.svelte.d.ts +15 -0
- package/dist/components/SettingsModal.svelte +0 -5
- package/dist/components/SettingsPanel.svelte +2 -6
- package/dist/components/Textarea.svelte +39 -0
- package/dist/components/Textarea.svelte.d.ts +12 -0
- package/dist/components/ThemeToggle.svelte +15 -94
- package/dist/components/UniversalNode.svelte +32 -1
- package/dist/components/WorkflowEditor.svelte +62 -51
- package/dist/components/WorkflowEditor.svelte.d.ts +18 -0
- package/dist/components/chat/AIChatPanel.svelte +1 -1
- package/dist/components/console/ConsoleAutocomplete.svelte +1 -1
- package/dist/components/console/ConsoleOutput.svelte +2 -2
- package/dist/components/form/FormArray.svelte +37 -173
- package/dist/components/form/FormAutocomplete.svelte +10 -6
- package/dist/components/form/FormCheckboxGroup.svelte +1 -5
- package/dist/components/form/FormCodeEditor.svelte +9 -7
- package/dist/components/form/FormField.svelte +5 -44
- package/dist/components/form/FormFieldLight.svelte +8 -47
- package/dist/components/form/FormFieldset.svelte +1 -1
- package/dist/components/form/FormMarkdownEditor.svelte +8 -5
- package/dist/components/form/FormNumberField.svelte +4 -36
- package/dist/components/form/FormRangeField.svelte +18 -27
- package/dist/components/form/FormSelect.svelte +13 -75
- package/dist/components/form/FormTemplateEditor.svelte +6 -4
- package/dist/components/form/FormTextField.svelte +3 -35
- package/dist/components/form/FormTextarea.svelte +4 -39
- package/dist/components/form/FormToggle.svelte +0 -4
- package/dist/components/form/resolveFieldType.d.ts +24 -0
- package/dist/components/form/resolveFieldType.js +55 -0
- package/dist/components/icons/CloseIcon.svelte +6 -0
- package/dist/components/icons/CloseIcon.svelte.d.ts +26 -0
- package/dist/components/icons/CommandLineIcon.svelte +15 -0
- package/dist/components/icons/CommandLineIcon.svelte.d.ts +26 -0
- package/dist/components/icons/MenuIcon.svelte +4 -0
- package/dist/components/icons/MenuIcon.svelte.d.ts +26 -0
- package/dist/components/icons/MenuOpenIcon.svelte +6 -0
- package/dist/components/icons/MenuOpenIcon.svelte.d.ts +26 -0
- package/dist/components/interrupt/ChoicePrompt.svelte +0 -10
- package/dist/components/interrupt/ConfirmationPrompt.svelte +0 -5
- package/dist/components/interrupt/InterruptBubble.svelte +0 -10
- package/dist/components/interrupt/ReviewPrompt.svelte +0 -20
- package/dist/components/interrupt/TextInputPrompt.svelte +0 -6
- package/dist/components/layouts/MainLayout.svelte +4 -5
- package/dist/components/nodes/AtomNode.svelte +46 -34
- package/dist/components/nodes/GatewayNode.svelte +91 -99
- package/dist/components/nodes/IdeaNode.svelte +62 -90
- package/dist/components/nodes/NodeConfigButton.svelte +86 -0
- package/dist/components/nodes/NodeConfigButton.svelte.d.ts +15 -0
- package/dist/components/nodes/NotesNode.svelte +70 -81
- package/dist/components/nodes/SimpleNode.svelte +28 -78
- package/dist/components/nodes/SquareNode.svelte +79 -109
- package/dist/components/nodes/TerminalNode.svelte +28 -86
- package/dist/components/nodes/ToolNode.svelte +82 -95
- package/dist/components/nodes/WorkflowNode.svelte +91 -100
- package/dist/components/playground/ChatInput.svelte +0 -1
- package/dist/components/playground/InputCollector.svelte +11 -48
- package/dist/components/playground/PlaygroundApp.svelte +1 -1
- package/dist/components/playground/PlaygroundStudio.svelte +0 -5
- package/dist/messages/index.d.ts +1 -1
- package/dist/messages/index.js +1 -1
- package/dist/openapi/v1/openapi.yaml +2 -2
- package/dist/playground/mount.d.ts +9 -5
- package/dist/playground/mount.js +9 -5
- package/dist/skins/drafter.d.ts +30 -0
- package/dist/skins/drafter.js +198 -0
- package/dist/skins/index.d.ts +2 -1
- package/dist/skins/index.js +4 -2
- package/dist/styles/base.css +285 -14
- package/dist/styles/tokens.css +60 -2
- package/dist/svelte-app.d.ts +6 -0
- package/dist/svelte-app.js +71 -109
- package/dist/themes/drafter.d.ts +2 -0
- package/dist/themes/drafter.js +15 -0
- package/dist/themes/index.d.ts +2 -1
- package/dist/themes/index.js +8 -2
- package/dist/types/events.d.ts +18 -0
- package/dist/types/events.js +2 -1
- package/dist/types/settings.d.ts +1 -1
- package/dist/types/settings.js +1 -1
- package/dist/types/skin.d.ts +1 -1
- package/dist/types/theme.d.ts +16 -2
- package/dist/utils/connections.js +14 -50
- package/package.json +1 -1
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
FlowDrop horizontal lockup: rocket mark + "FlowDrop" wordmark.
|
|
3
|
+
Theme-aware via the same --fd-logo-* variables as Logo.svelte, plus
|
|
4
|
+
--fd-logo-text for the wordmark glyphs.
|
|
5
|
+
-->
|
|
6
|
+
<div class="flowdrop-logo-wordmark">
|
|
7
|
+
<svg viewBox="0 0 2500 499.99999" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
|
8
|
+
<g transform="translate(472.2413,571.30469)">
|
|
9
|
+
<g transform="matrix(1.2053353,0,0,1.2053353,-1246.7763,-599.46548)">
|
|
10
|
+
<path
|
|
11
|
+
style="fill:var(--logo-line-fill);stroke-width:10;stroke-dasharray:none"
|
|
12
|
+
d="M 850,120 V 310 Z"
|
|
13
|
+
/>
|
|
14
|
+
<path
|
|
15
|
+
style="fill:var(--logo-line-fill);stroke:var(--logo-stroke);stroke-width:16.59289328;stroke-dasharray:none;stroke-opacity:1"
|
|
16
|
+
d="M 850,110 V 310"
|
|
17
|
+
/>
|
|
18
|
+
<path
|
|
19
|
+
style="fill:none;stroke:var(--logo-stroke);stroke-width:14.98546028;stroke-dasharray:none;stroke-opacity:1"
|
|
20
|
+
d="m 850,158.973 v 36.70355 8.15635 c 0,0 1.19184,39.5038 -36.01255,65.25076 -29.46481,20.39086 -52.3819,16.31269 -55.65576,65.25076 v 44.8599"
|
|
21
|
+
/>
|
|
22
|
+
<path
|
|
23
|
+
style="fill:none;stroke:var(--logo-stroke);stroke-width:15.05060005;stroke-dasharray:none;stroke-opacity:1"
|
|
24
|
+
d="m 850,158.973 v 37.02335 8.22741 c 0,0 -1.19184,39.84799 36.01255,65.81929 29.46481,20.56853 52.3819,16.45482 55.65576,65.81929 v 45.25076"
|
|
25
|
+
/>
|
|
26
|
+
<path
|
|
27
|
+
d="m 849.41763,64.456369 25.36824,31.087262 c 6.23336,6.364119 10.06921,15.063569 10.06921,24.656839 0,19.50109 -15.85132,35.30988 -35.42373,35.30988 -19.57241,0 -35.43242,-15.80879 -35.43242,-35.30988 0,-9.49405 3.75813,-18.11351 9.87536,-24.458879 z"
|
|
28
|
+
style="fill:var(--logo-drop);stroke:var(--logo-stroke);stroke-width:16.59289932;stroke-dasharray:none;paint-order:fill"
|
|
29
|
+
/>
|
|
30
|
+
<circle
|
|
31
|
+
style="fill:var(--logo-circle);stroke:var(--logo-stroke);stroke-width:16.59289932;stroke-dasharray:none"
|
|
32
|
+
cx="849.427"
|
|
33
|
+
cy="326.5929"
|
|
34
|
+
r="30"
|
|
35
|
+
/>
|
|
36
|
+
<ellipse
|
|
37
|
+
style="fill:var(--logo-left);stroke:var(--logo-stroke);stroke-width:16.59289932;stroke-dasharray:none"
|
|
38
|
+
cx="759.99994"
|
|
39
|
+
cy="369.44669"
|
|
40
|
+
rx="29.999952"
|
|
41
|
+
ry="30.000004"
|
|
42
|
+
/>
|
|
43
|
+
<ellipse
|
|
44
|
+
style="fill:var(--logo-right);stroke:var(--logo-stroke);stroke-width:16.59289932;stroke-dasharray:none"
|
|
45
|
+
cx="939.99963"
|
|
46
|
+
cy="369.44669"
|
|
47
|
+
rx="29.999952"
|
|
48
|
+
ry="30.000004"
|
|
49
|
+
/>
|
|
50
|
+
</g>
|
|
51
|
+
</g>
|
|
52
|
+
<g aria-label="FlowDrop" style="font-size:400.327px;fill:var(--logo-text);stroke-width:10.4252">
|
|
53
|
+
<path
|
|
54
|
+
d="M 710.85926,99.779646 V 116.59025 H 584.38877 v 92.65381 h 91.48097 v 16.81061 H 584.38877 V 358.97574 H 540.79848 V 99.779646 Z"
|
|
55
|
+
style="fill:var(--logo-text)"
|
|
56
|
+
/>
|
|
57
|
+
<path
|
|
58
|
+
d="M 788.07077,358.97574 H 748.19445 V 68.113156 L 776.53791,56.77577 h 11.53286 z"
|
|
59
|
+
style="fill:var(--logo-text)"
|
|
60
|
+
/>
|
|
61
|
+
<path
|
|
62
|
+
d="m 950.50815,363.27613 q -23.06571,0 -42.41746,-8.01436 -19.35174,-8.01436 -33.42574,-21.69741 -14.07399,-13.87853 -22.08835,-32.25291 -7.81889,-18.56986 -7.81889,-39.68085 0,-22.08835 7.81889,-41.4401 8.01436,-19.54722 22.08835,-34.01216 14.074,-14.46494 33.42574,-22.67477 19.35175,-8.4053 42.41746,-8.4053 22.87025,0 42.02652,7.62341 19.35173,7.62342 33.42573,20.91553 14.074,13.2921 21.8929,31.27554 8.0144,17.78797 8.0144,38.31255 0,22.67477 -8.0144,42.8084 -7.8189,19.93816 -21.8929,34.98952 -14.074,14.85588 -33.42573,23.65213 -19.15627,8.60078 -42.02652,8.60078 z m 7.62342,-14.66042 q 11.72833,0 21.50194,-6.05963 9.77361,-6.05964 16.8106,-16.22419 7.03699,-10.36003 10.94649,-23.84761 3.9094,-13.48758 3.9094,-28.53893 0,-21.69741 -3.714,-40.65821 -3.7139,-18.9608 -12.11925,-33.0348 -8.4053,-14.074 -21.89288,-22.08835 -13.48758,-8.20984 -32.83932,-8.20984 -9.96908,0 -19.35175,5.86417 -9.38266,5.66869 -16.61513,15.63777 -7.037,9.96908 -11.33739,23.45666 -4.30039,13.29211 -4.30039,28.34347 0,21.89288 4.49586,41.04915 4.69134,19.15627 13.48758,33.42574 8.99172,14.26947 21.69741,22.67477 12.90117,8.20983 29.32083,8.20983 z"
|
|
63
|
+
style="fill:var(--logo-text)"
|
|
64
|
+
/>
|
|
65
|
+
<path
|
|
66
|
+
d="m 1122.7191,158.81224 63.333,146.21318 62.7465,-146.21318 63.1375,146.21318 55.9051,-146.21318 h 19.1563 l -81.7074,202.31369 h -13.4876 l -55.905,-130.77088 -56.1005,130.77088 h -12.3148 l -87.5715,-202.31369 z"
|
|
67
|
+
style="fill:var(--logo-text)"
|
|
68
|
+
/>
|
|
69
|
+
<path
|
|
70
|
+
d="m 1424.9191,99.779646 h 86.3987 q 39.8763,0 68.6107,7.427944 28.7345,7.42794 47.8907,23.8476 21.8929,18.76533 32.8394,43.00388 11.1419,24.23855 11.1419,52.97296 0,27.3661 -9.9691,51.40918 -9.7736,24.04307 -28.9299,42.02651 -18.9608,17.78797 -47.1088,28.14799 -27.9525,10.36003 -64.1149,10.36003 h -96.7587 z m 43.5903,240.235294 h 46.3269 q 21.8929,0 41.2446,-7.23247 19.3518,-7.23247 33.6213,-21.50194 14.4649,-14.26947 22.6747,-34.98952 8.4053,-20.91552 8.4053,-48.28162 0,-24.04308 -7.8189,-43.98124 -7.8188,-20.13363 -21.8928,-34.59857 -14.074,-14.46494 -33.6213,-22.4793 -19.3517,-8.01436 -42.4174,-8.01436 h -46.5224 z"
|
|
71
|
+
style="fill:var(--logo-text)"
|
|
72
|
+
/>
|
|
73
|
+
<path
|
|
74
|
+
d="m 1758.7855,155.09827 h 6.0597 l 5.2777,40.85368 q 4.6914,-8.99172 11.7283,-16.41966 7.037,-7.42794 15.4424,-12.90116 8.6007,-5.47322 17.9834,-8.40531 9.5781,-3.12755 19.3517,-3.12755 8.7963,0 17.2016,2.34567 8.6008,2.34566 16.0287,7.42794 l -12.5102,33.42574 q -3.9095,-4.30039 -8.2098,-6.84153 -4.3004,-2.73661 -8.7963,-4.10491 -4.4959,-1.56378 -9.1872,-1.95472 -4.6913,-0.39095 -9.3827,-0.39095 -7.4279,0 -14.6604,2.15019 -7.037,2.1502 -13.4875,6.45059 -6.4506,4.10491 -11.9238,10.75097 -5.4733,6.45058 -9.5782,15.24682 v 139.37166 h -39.6808 V 166.04471 Z"
|
|
75
|
+
style="fill:var(--logo-text)"
|
|
76
|
+
/>
|
|
77
|
+
<path
|
|
78
|
+
d="m 1995.6979,363.27613 q -23.0658,0 -42.4175,-8.01436 -19.3518,-8.01436 -33.4257,-21.69741 -14.074,-13.87853 -22.0884,-32.25291 -7.8189,-18.56986 -7.8189,-39.68085 0,-22.08835 7.8189,-41.4401 8.0144,-19.54722 22.0884,-34.01216 14.0739,-14.46494 33.4257,-22.67477 19.3517,-8.4053 42.4175,-8.4053 22.8702,0 42.0265,7.62341 19.3517,7.62342 33.4257,20.91553 14.074,13.2921 21.8929,31.27554 8.0143,17.78797 8.0143,38.31255 0,22.67477 -8.0143,42.8084 -7.8189,19.93816 -21.8929,34.98952 -14.074,14.85588 -33.4257,23.65213 -19.1563,8.60078 -42.0265,8.60078 z m 7.6234,-14.66042 q 11.7283,0 21.5019,-6.05963 9.7736,-6.05964 16.8106,-16.22419 7.037,-10.36003 10.9465,-23.84761 3.9094,-13.48758 3.9094,-28.53893 0,-21.69741 -3.714,-40.65821 -3.7139,-18.9608 -12.1192,-33.0348 -8.4054,-14.074 -21.8929,-22.08835 -13.4876,-8.20984 -32.8394,-8.20984 -9.969,0 -19.3517,5.86417 -9.3827,5.66869 -16.6151,15.63777 -7.037,9.96908 -11.3374,23.45666 -4.3004,13.29211 -4.3004,28.34347 0,21.89288 4.4959,41.04915 4.6913,19.15627 13.4875,33.42574 8.9918,14.26947 21.6974,22.67477 12.9012,8.20983 29.3209,8.20983 z"
|
|
79
|
+
style="fill:var(--logo-text)"
|
|
80
|
+
/>
|
|
81
|
+
<path
|
|
82
|
+
d="m 2186.0877,155.09827 h 11.3374 v 44.9586 q 6.0596,-7.62342 13.2921,-15.63778 7.4279,-8.01435 16.2242,-14.46494 8.9917,-6.64605 19.7427,-10.75097 10.7509,-4.10491 23.4566,-4.10491 17.788,0 32.2529,7.42794 14.465,7.42794 24.6295,20.13363 10.3601,12.7057 15.8333,29.90725 5.6687,17.00607 5.6687,36.35782 0,24.82496 -6.8416,45.93596 -6.8415,20.91552 -19.5472,36.16235 -12.7057,15.24683 -30.8846,23.8476 -18.1789,8.40531 -40.6582,8.40531 -8.2098,0 -15.4423,-0.97736 -7.037,-0.78189 -13.4876,-2.54114 -6.2551,-1.75925 -12.3147,-4.49586 -5.8642,-2.73661 -11.9238,-6.64606 v 94.60853 h -39.8763 V 166.24018 Z m 11.3374,149.92715 q 0,8.99172 3.9094,17.00608 3.9095,7.81889 10.9465,13.87852 7.037,5.86417 16.8106,9.38267 9.7736,3.32302 21.5019,3.32302 11.1419,0 20.9155,-5.66869 9.9691,-5.66869 17.2016,-16.02872 7.4279,-10.55549 11.5328,-25.02043 4.3004,-14.46494 4.3004,-32.05744 0,-22.08835 -3.9094,-38.50802 -3.9095,-16.61513 -10.9465,-27.56157 -6.8415,-10.94644 -16.4196,-16.41966 -9.3827,-5.47322 -20.7201,-5.47322 -8.6007,0 -16.6151,2.73661 -7.8189,2.54113 -14.8559,7.03699 -7.037,4.49586 -13.0966,10.36003 -5.8642,5.86416 -10.5555,12.31475 z"
|
|
83
|
+
style="fill:var(--logo-text)"
|
|
84
|
+
/>
|
|
85
|
+
</g>
|
|
86
|
+
</svg>
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
<style>
|
|
90
|
+
.flowdrop-logo-wordmark {
|
|
91
|
+
--logo-stroke: var(--fd-logo-stroke, #000000);
|
|
92
|
+
--logo-text: var(--fd-logo-text, #000000);
|
|
93
|
+
--logo-line-fill: var(--fd-logo-line-fill, #000000);
|
|
94
|
+
--logo-drop: var(--fd-logo-drop, #009cde);
|
|
95
|
+
--logo-circle: var(--fd-logo-circle, #f46351);
|
|
96
|
+
--logo-left: var(--fd-logo-left, #ccbaf4);
|
|
97
|
+
--logo-right: var(--fd-logo-right, #ffc423);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
:global([data-theme='dark']) .flowdrop-logo-wordmark {
|
|
101
|
+
/* Stroke, wordmark, and the center line go white in dark; the brand-color
|
|
102
|
+
dots (drop/circle/left/right) keep their fills, same as light mode. */
|
|
103
|
+
--logo-stroke: var(--fd-logo-stroke, #ffffff);
|
|
104
|
+
--logo-text: var(--fd-logo-text, #ffffff);
|
|
105
|
+
--logo-line-fill: var(--fd-logo-line-fill, #ffffff);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.flowdrop-logo-wordmark :global(svg) {
|
|
109
|
+
display: block;
|
|
110
|
+
width: 100%;
|
|
111
|
+
height: 100%;
|
|
112
|
+
}
|
|
113
|
+
</style>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export default LogoWordmark;
|
|
2
|
+
type LogoWordmark = SvelteComponent<{
|
|
3
|
+
[x: string]: never;
|
|
4
|
+
}, {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
}, {}> & {
|
|
7
|
+
$$bindings?: string | undefined;
|
|
8
|
+
};
|
|
9
|
+
declare const LogoWordmark: $$__sveltets_2_IsomorphicComponent<{
|
|
10
|
+
[x: string]: never;
|
|
11
|
+
}, {
|
|
12
|
+
[evt: string]: CustomEvent<any>;
|
|
13
|
+
}, {}, {}, string>;
|
|
14
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
15
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
16
|
+
$$bindings?: Bindings;
|
|
17
|
+
} & Exports;
|
|
18
|
+
(internal: unknown, props: {
|
|
19
|
+
$$events?: Events;
|
|
20
|
+
$$slots?: Slots;
|
|
21
|
+
}): Exports & {
|
|
22
|
+
$set?: any;
|
|
23
|
+
$on?: any;
|
|
24
|
+
};
|
|
25
|
+
z_$$bindings?: Bindings;
|
|
26
|
+
}
|
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
<script lang="ts">
|
|
10
|
+
import type { Snippet } from 'svelte';
|
|
10
11
|
import Icon from '@iconify/svelte';
|
|
11
|
-
import
|
|
12
|
+
import LogoWordmark from './LogoWordmark.svelte';
|
|
12
13
|
import SettingsModal from './SettingsModal.svelte';
|
|
13
14
|
import type { SettingsCategory } from '../types/settings.js';
|
|
14
15
|
import type { NavbarAction } from '../types/navbar.js';
|
|
@@ -37,6 +38,8 @@
|
|
|
37
38
|
showSettingsSyncButton?: boolean;
|
|
38
39
|
/** Show the reset buttons in the settings modal */
|
|
39
40
|
showSettingsResetButton?: boolean;
|
|
41
|
+
/** Custom content rendered in the trailing (right) region, before the settings gear */
|
|
42
|
+
end?: Snippet;
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
let {
|
|
@@ -47,7 +50,8 @@
|
|
|
47
50
|
showSettings = true,
|
|
48
51
|
settingsCategories,
|
|
49
52
|
showSettingsSyncButton,
|
|
50
|
-
showSettingsResetButton
|
|
53
|
+
showSettingsResetButton,
|
|
54
|
+
end
|
|
51
55
|
}: Props = $props();
|
|
52
56
|
|
|
53
57
|
// Dropdown state
|
|
@@ -97,16 +101,10 @@
|
|
|
97
101
|
|
|
98
102
|
<div class="flowdrop-navbar">
|
|
99
103
|
<div class="flowdrop-navbar__start">
|
|
100
|
-
<!-- Logo
|
|
104
|
+
<!-- Logo (rocket + FlowDrop wordmark) -->
|
|
101
105
|
<div class="flowdrop-logo--container">
|
|
102
|
-
<div class="flowdrop-
|
|
103
|
-
<
|
|
104
|
-
<Logo />
|
|
105
|
-
</div>
|
|
106
|
-
<div>
|
|
107
|
-
<h1 class="flowdrop-text--logo flowdrop-font--bold">{nav.appName}</h1>
|
|
108
|
-
<p class="flowdrop-text--tagline flowdrop-text--gray">{nav.tagline}</p>
|
|
109
|
-
</div>
|
|
106
|
+
<div class="flowdrop-logo--header">
|
|
107
|
+
<LogoWordmark />
|
|
110
108
|
</div>
|
|
111
109
|
</div>
|
|
112
110
|
</div>
|
|
@@ -277,6 +275,7 @@
|
|
|
277
275
|
</div>
|
|
278
276
|
|
|
279
277
|
<div class="flowdrop-navbar__end">
|
|
278
|
+
{@render end?.()}
|
|
280
279
|
{#if showSettings}
|
|
281
280
|
<button
|
|
282
281
|
class="flowdrop-navbar__settings-btn"
|
|
@@ -331,10 +330,10 @@
|
|
|
331
330
|
}
|
|
332
331
|
|
|
333
332
|
.flowdrop-logo--header {
|
|
334
|
-
|
|
335
|
-
height:
|
|
336
|
-
|
|
337
|
-
padding: 2px;
|
|
333
|
+
/* Wordmark lockup is 5:1; keep it within the start column. */
|
|
334
|
+
height: 32px;
|
|
335
|
+
width: 160px;
|
|
336
|
+
padding: 2px 0;
|
|
338
337
|
}
|
|
339
338
|
|
|
340
339
|
.flowdrop-navbar__center {
|
|
@@ -525,7 +524,7 @@
|
|
|
525
524
|
transition: all var(--fd-transition-normal);
|
|
526
525
|
font-weight: 500;
|
|
527
526
|
font-size: var(--fd-text-sm);
|
|
528
|
-
height:
|
|
527
|
+
height: var(--fd-size-btn-min);
|
|
529
528
|
box-sizing: border-box;
|
|
530
529
|
background-color: var(--fd-background);
|
|
531
530
|
color: var(--fd-foreground);
|
|
@@ -541,7 +540,7 @@
|
|
|
541
540
|
position: relative;
|
|
542
541
|
display: flex;
|
|
543
542
|
align-items: center;
|
|
544
|
-
height:
|
|
543
|
+
height: var(--fd-size-btn-min);
|
|
545
544
|
}
|
|
546
545
|
|
|
547
546
|
.flowdrop-navbar__dropdown-trigger {
|
|
@@ -549,7 +548,7 @@
|
|
|
549
548
|
align-items: center;
|
|
550
549
|
justify-content: center;
|
|
551
550
|
width: 2rem;
|
|
552
|
-
height:
|
|
551
|
+
height: var(--fd-size-btn-min);
|
|
553
552
|
border: 1px solid var(--fd-border-strong);
|
|
554
553
|
border-left: none;
|
|
555
554
|
border-radius: 0 var(--fd-radius-md) var(--fd-radius-md) 0;
|
|
@@ -724,11 +723,6 @@
|
|
|
724
723
|
border-color: var(--fd-border-strong);
|
|
725
724
|
}
|
|
726
725
|
|
|
727
|
-
.flowdrop-navbar__settings-btn:focus {
|
|
728
|
-
outline: none;
|
|
729
|
-
box-shadow: 0 0 0 2px var(--fd-ring);
|
|
730
|
-
}
|
|
731
|
-
|
|
732
726
|
.flowdrop-navbar__settings-btn:active {
|
|
733
727
|
transform: scale(0.95);
|
|
734
728
|
}
|
|
@@ -753,38 +747,6 @@
|
|
|
753
747
|
background-color: var(--fd-success);
|
|
754
748
|
}
|
|
755
749
|
|
|
756
|
-
/* Utility classes */
|
|
757
|
-
.flowdrop-flex {
|
|
758
|
-
display: flex;
|
|
759
|
-
}
|
|
760
|
-
|
|
761
|
-
.flowdrop-gap--3 {
|
|
762
|
-
gap: 0.75rem;
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
.flowdrop-text--logo {
|
|
766
|
-
font-size: 1.125rem;
|
|
767
|
-
line-height: 0;
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
.flowdrop-text--tagline {
|
|
771
|
-
font-size: var(--fd-text-xs);
|
|
772
|
-
line-height: 0.5rem;
|
|
773
|
-
}
|
|
774
|
-
|
|
775
|
-
.flowdrop-text--xs {
|
|
776
|
-
font-size: var(--fd-text-xs);
|
|
777
|
-
line-height: 1rem;
|
|
778
|
-
}
|
|
779
|
-
|
|
780
|
-
.flowdrop-text--gray {
|
|
781
|
-
color: var(--fd-muted-foreground);
|
|
782
|
-
}
|
|
783
|
-
|
|
784
|
-
.flowdrop-font--bold {
|
|
785
|
-
font-weight: 700;
|
|
786
|
-
}
|
|
787
|
-
|
|
788
750
|
/* Responsive design */
|
|
789
751
|
@media (max-width: 768px) {
|
|
790
752
|
.flowdrop-navbar {
|
|
@@ -834,14 +796,6 @@
|
|
|
834
796
|
border-radius: var(--fd-radius-md) 0 0 var(--fd-radius-md);
|
|
835
797
|
}
|
|
836
798
|
|
|
837
|
-
.flowdrop-text--logo {
|
|
838
|
-
display: none;
|
|
839
|
-
}
|
|
840
|
-
|
|
841
|
-
.flowdrop-text--tagline {
|
|
842
|
-
display: none;
|
|
843
|
-
}
|
|
844
|
-
|
|
845
799
|
.flowdrop-navbar__title-text {
|
|
846
800
|
font-size: 0.875rem;
|
|
847
801
|
max-width: 300px;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
1
2
|
import type { SettingsCategory } from '../types/settings.js';
|
|
2
3
|
import type { NavbarAction } from '../types/navbar.js';
|
|
3
4
|
interface BreadcrumbItem {
|
|
@@ -22,6 +23,8 @@ interface Props {
|
|
|
22
23
|
showSettingsSyncButton?: boolean;
|
|
23
24
|
/** Show the reset buttons in the settings modal */
|
|
24
25
|
showSettingsResetButton?: boolean;
|
|
26
|
+
/** Custom content rendered in the trailing (right) region, before the settings gear */
|
|
27
|
+
end?: Snippet;
|
|
25
28
|
}
|
|
26
29
|
declare const Navbar: import("svelte").Component<Props, {}, "">;
|
|
27
30
|
type Navbar = ReturnType<typeof Navbar>;
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
<script lang="ts">
|
|
8
8
|
import type { NodeMetadata, NodeCategory, WorkflowFormat } from '../types/index.js';
|
|
9
9
|
import LoadingSpinner from './LoadingSpinner.svelte';
|
|
10
|
+
import Input from './Input.svelte';
|
|
10
11
|
import Icon from '@iconify/svelte';
|
|
11
12
|
import { getNodeIcon, getCategoryIcon } from '../utils/icons.js';
|
|
12
13
|
import { getCategoryColorToken } from '../utils/colors.js';
|
|
@@ -161,19 +162,17 @@
|
|
|
161
162
|
>
|
|
162
163
|
<!-- Search Section — visibility controlled by --fd-sidebar-search-display -->
|
|
163
164
|
<div class="flowdrop-sidebar__search">
|
|
164
|
-
<
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
</button>
|
|
176
|
-
</div>
|
|
165
|
+
<Input
|
|
166
|
+
type="text"
|
|
167
|
+
placeholder={m().layout.searchComponents}
|
|
168
|
+
aria-label={m().layout.searchComponents}
|
|
169
|
+
value={searchInput}
|
|
170
|
+
oninput={(e) => (searchInput = e.currentTarget.value)}
|
|
171
|
+
>
|
|
172
|
+
{#snippet leading()}
|
|
173
|
+
<Icon icon="mdi:magnify" />
|
|
174
|
+
{/snippet}
|
|
175
|
+
</Input>
|
|
177
176
|
</div>
|
|
178
177
|
|
|
179
178
|
<!-- Node Types List -->
|
|
@@ -408,7 +407,8 @@
|
|
|
408
407
|
/* Components Sidebar - Always Visible */
|
|
409
408
|
.flowdrop-sidebar {
|
|
410
409
|
height: calc(100vh - var(--fd-navbar-height)); /* Account for navbar height */
|
|
411
|
-
background-color: var(--fd-
|
|
410
|
+
background-color: var(--fd-panel-bg);
|
|
411
|
+
backdrop-filter: var(--fd-panel-backdrop-filter);
|
|
412
412
|
border-right: 1px solid var(--fd-border);
|
|
413
413
|
display: flex;
|
|
414
414
|
flex-direction: column;
|
|
@@ -460,7 +460,7 @@
|
|
|
460
460
|
|
|
461
461
|
.flowdrop-sidebar__search {
|
|
462
462
|
padding: 0.75rem 1rem;
|
|
463
|
-
background-color:
|
|
463
|
+
background-color: transparent;
|
|
464
464
|
border-bottom: 1px solid var(--fd-border);
|
|
465
465
|
display: var(--fd-sidebar-search-display, block);
|
|
466
466
|
}
|
|
@@ -485,7 +485,7 @@
|
|
|
485
485
|
|
|
486
486
|
.flowdrop-sidebar__content::-webkit-scrollbar-thumb {
|
|
487
487
|
background: var(--fd-scrollbar-thumb);
|
|
488
|
-
border-radius:
|
|
488
|
+
border-radius: var(--fd-scrollbar-radius);
|
|
489
489
|
min-height: 20px; /* Ensure thumb has minimum height for visibility */
|
|
490
490
|
}
|
|
491
491
|
|
|
@@ -593,114 +593,9 @@
|
|
|
593
593
|
margin-left: 0;
|
|
594
594
|
}
|
|
595
595
|
|
|
596
|
-
/*
|
|
597
|
-
.flowdrop-input {
|
|
598
|
-
padding: 0.625rem 0.75rem;
|
|
599
|
-
border: 1px solid var(--fd-border-strong);
|
|
600
|
-
border-radius: var(--fd-radius-md);
|
|
601
|
-
font-size: var(--fd-text-sm);
|
|
602
|
-
color: var(--fd-foreground);
|
|
603
|
-
background-color: var(--fd-background);
|
|
604
|
-
transition:
|
|
605
|
-
border-color var(--fd-transition-normal),
|
|
606
|
-
box-shadow var(--fd-transition-normal);
|
|
607
|
-
width: 100%;
|
|
608
|
-
height: 2.5rem;
|
|
609
|
-
box-sizing: border-box;
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
.flowdrop-input:focus {
|
|
613
|
-
outline: none;
|
|
614
|
-
border-color: var(--fd-ring);
|
|
615
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-ring) 20%, transparent);
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
.flowdrop-input::placeholder {
|
|
619
|
-
color: var(--fd-muted-foreground);
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
.flowdrop-btn {
|
|
623
|
-
padding: 0.625rem 0.75rem;
|
|
624
|
-
border-radius: var(--fd-radius-md);
|
|
625
|
-
font-size: var(--fd-text-sm);
|
|
626
|
-
font-weight: 500;
|
|
627
|
-
cursor: pointer;
|
|
628
|
-
transition: all var(--fd-transition-normal);
|
|
629
|
-
border: 1px solid var(--fd-border-strong);
|
|
630
|
-
display: flex;
|
|
631
|
-
align-items: center;
|
|
632
|
-
justify-content: center;
|
|
633
|
-
gap: 0.5rem;
|
|
634
|
-
background-color: var(--fd-muted);
|
|
635
|
-
color: var(--fd-foreground);
|
|
636
|
-
height: 2.5rem;
|
|
637
|
-
min-width: 2.5rem;
|
|
638
|
-
box-sizing: border-box;
|
|
639
|
-
}
|
|
640
|
-
|
|
641
|
-
.flowdrop-btn:hover {
|
|
642
|
-
background-color: var(--fd-subtle);
|
|
643
|
-
border-color: var(--fd-border-strong);
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
.flowdrop-btn:active {
|
|
647
|
-
background-color: var(--fd-border);
|
|
648
|
-
border-color: var(--fd-muted-foreground);
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
.flowdrop-btn:focus {
|
|
652
|
-
outline: none;
|
|
653
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-ring) 20%, transparent);
|
|
654
|
-
}
|
|
655
|
-
|
|
656
|
-
.flowdrop-btn:disabled {
|
|
657
|
-
background-color: var(--fd-muted-foreground);
|
|
658
|
-
border-color: var(--fd-muted-foreground);
|
|
659
|
-
cursor: not-allowed;
|
|
660
|
-
opacity: 0.6;
|
|
661
|
-
}
|
|
662
|
-
|
|
663
|
-
/* Join component styles - Seamless integration */
|
|
664
|
-
.flowdrop-join {
|
|
665
|
-
display: flex;
|
|
666
|
-
width: 100%;
|
|
667
|
-
border-radius: var(--fd-radius-md);
|
|
668
|
-
overflow: hidden;
|
|
669
|
-
border: 1px solid var(--fd-border-strong);
|
|
670
|
-
background-color: var(--fd-background);
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
.flowdrop-join__item {
|
|
674
|
-
border: none;
|
|
675
|
-
border-radius: 0;
|
|
676
|
-
background-color: transparent;
|
|
677
|
-
}
|
|
678
|
-
|
|
679
|
-
.flowdrop-join__item:first-child {
|
|
680
|
-
border-right: 1px solid var(--fd-border-strong);
|
|
681
|
-
flex: 1;
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
.flowdrop-join__item:last-child {
|
|
685
|
-
border-left: none;
|
|
686
|
-
background-color: var(--fd-muted);
|
|
687
|
-
color: var(--fd-foreground);
|
|
688
|
-
}
|
|
689
|
-
|
|
690
|
-
.flowdrop-join__item:last-child:hover {
|
|
691
|
-
background-color: var(--fd-subtle);
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
.flowdrop-join:focus-within {
|
|
695
|
-
border-color: var(--fd-ring);
|
|
696
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-ring) 20%, transparent);
|
|
697
|
-
}
|
|
596
|
+
/* Search field renders through the shared Input primitive (base.css). */
|
|
698
597
|
|
|
699
598
|
/* Utility classes */
|
|
700
|
-
.flowdrop-w--full {
|
|
701
|
-
width: 100%;
|
|
702
|
-
}
|
|
703
|
-
|
|
704
599
|
.flowdrop-flex--1 {
|
|
705
600
|
flex: 1;
|
|
706
601
|
}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
<script lang="ts">
|
|
9
9
|
import type { NodeMetadata, NodeCategory, WorkflowFormat, WorkflowNode } from '../types/index.js';
|
|
10
10
|
import Icon from '@iconify/svelte';
|
|
11
|
+
import Input from './Input.svelte';
|
|
11
12
|
import { getNodeIcon, getCategoryIcon } from '../utils/icons.js';
|
|
12
13
|
import { getCategoryColorToken } from '../utils/colors.js';
|
|
13
14
|
import { m } from '../messages/index.js';
|
|
@@ -115,12 +116,17 @@
|
|
|
115
116
|
|
|
116
117
|
<!-- Search (hidden in minimal via --fd-sidebar-search-display) -->
|
|
117
118
|
<div class="swap-picker__search">
|
|
118
|
-
<
|
|
119
|
+
<Input
|
|
119
120
|
type="text"
|
|
120
121
|
placeholder="Search node types..."
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
aria-label="Search node types"
|
|
123
|
+
value={searchInput}
|
|
124
|
+
oninput={(e) => (searchInput = e.currentTarget.value)}
|
|
125
|
+
>
|
|
126
|
+
{#snippet leading()}
|
|
127
|
+
<Icon icon="mdi:magnify" />
|
|
128
|
+
{/snippet}
|
|
129
|
+
</Input>
|
|
124
130
|
</div>
|
|
125
131
|
|
|
126
132
|
<!-- Node list -->
|
|
@@ -298,30 +304,6 @@
|
|
|
298
304
|
flex-shrink: 0;
|
|
299
305
|
}
|
|
300
306
|
|
|
301
|
-
.swap-picker__input {
|
|
302
|
-
width: 100%;
|
|
303
|
-
padding: 0.5rem 0.75rem;
|
|
304
|
-
border: 1px solid var(--fd-border-strong);
|
|
305
|
-
border-radius: var(--fd-radius-md);
|
|
306
|
-
font-size: var(--fd-text-sm);
|
|
307
|
-
color: var(--fd-foreground);
|
|
308
|
-
background-color: var(--fd-background);
|
|
309
|
-
box-sizing: border-box;
|
|
310
|
-
transition:
|
|
311
|
-
border-color var(--fd-transition-normal),
|
|
312
|
-
box-shadow var(--fd-transition-normal);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
.swap-picker__input:focus {
|
|
316
|
-
outline: none;
|
|
317
|
-
border-color: var(--fd-ring);
|
|
318
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--fd-ring) 20%, transparent);
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
.swap-picker__input::placeholder {
|
|
322
|
-
color: var(--fd-muted-foreground);
|
|
323
|
-
}
|
|
324
|
-
|
|
325
307
|
.swap-picker__list {
|
|
326
308
|
flex: 1;
|
|
327
309
|
overflow-y: auto;
|
|
@@ -473,11 +473,6 @@
|
|
|
473
473
|
color: var(--fd-foreground);
|
|
474
474
|
}
|
|
475
475
|
|
|
476
|
-
.schema-form__button--secondary:focus-visible {
|
|
477
|
-
outline: none;
|
|
478
|
-
box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.2);
|
|
479
|
-
}
|
|
480
|
-
|
|
481
476
|
.schema-form__button--primary {
|
|
482
477
|
background: linear-gradient(135deg, var(--fd-primary) 0%, var(--fd-primary-hover) 100%);
|
|
483
478
|
color: var(--fd-primary-foreground);
|
|
@@ -498,13 +493,6 @@
|
|
|
498
493
|
transform: translateY(0);
|
|
499
494
|
}
|
|
500
495
|
|
|
501
|
-
.schema-form__button--primary:focus-visible {
|
|
502
|
-
outline: none;
|
|
503
|
-
box-shadow:
|
|
504
|
-
0 0 0 3px rgba(59, 130, 246, 0.4),
|
|
505
|
-
0 4px 12px rgba(59, 130, 246, 0.35);
|
|
506
|
-
}
|
|
507
|
-
|
|
508
496
|
.schema-form__button-spinner {
|
|
509
497
|
width: 1rem;
|
|
510
498
|
height: 1rem;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
Select — typed wrapper over the shared `.flowdrop-input` system (base.css).
|
|
3
|
+
|
|
4
|
+
Renders the field shell (`.flowdrop-input .flowdrop-input--select`) plus a
|
|
5
|
+
built-in chevron overlay (`.flowdrop-select-wrap`), so selects match the exact
|
|
6
|
+
look of Input/Textarea. The native arrow is removed; the chevron tints to
|
|
7
|
+
--fd-primary on focus. Pass <option>/<optgroup> as children. Native attributes
|
|
8
|
+
(value, disabled, id, aria-*, onchange…) forward to the underlying <select>.
|
|
9
|
+
|
|
10
|
+
Internal for now; see Button.svelte / Input.svelte for the pattern.
|
|
11
|
+
-->
|
|
12
|
+
|
|
13
|
+
<script lang="ts">
|
|
14
|
+
import type { Snippet } from 'svelte';
|
|
15
|
+
import type { HTMLSelectAttributes } from 'svelte/elements';
|
|
16
|
+
|
|
17
|
+
// Omit native numeric `size` so our design-token size (matching Button) wins.
|
|
18
|
+
interface Props extends Omit<HTMLSelectAttributes, 'size'> {
|
|
19
|
+
/** Size — `md` is the base; `sm`/`lg` add a modifier */
|
|
20
|
+
size?: 'sm' | 'md' | 'lg';
|
|
21
|
+
/** Renders the error-border state */
|
|
22
|
+
invalid?: boolean;
|
|
23
|
+
/** Extra classes appended to the <select> */
|
|
24
|
+
class?: string;
|
|
25
|
+
/** The <option>/<optgroup> elements */
|
|
26
|
+
children: Snippet;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
let { size = 'md', invalid = false, class: className = '', children, ...rest }: Props = $props();
|
|
30
|
+
|
|
31
|
+
const selectClass = $derived(
|
|
32
|
+
[
|
|
33
|
+
'flowdrop-input',
|
|
34
|
+
'flowdrop-input--select',
|
|
35
|
+
size === 'md' ? '' : `flowdrop-input--${size}`,
|
|
36
|
+
invalid ? 'flowdrop-input--invalid' : '',
|
|
37
|
+
className
|
|
38
|
+
]
|
|
39
|
+
.filter(Boolean)
|
|
40
|
+
.join(' ')
|
|
41
|
+
);
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
<div class="flowdrop-select-wrap">
|
|
45
|
+
<select class={selectClass} {...rest}>
|
|
46
|
+
{@render children()}
|
|
47
|
+
</select>
|
|
48
|
+
<span class="flowdrop-select-wrap__icon" aria-hidden="true">
|
|
49
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
50
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M6 9l6 6 6-6" />
|
|
51
|
+
</svg>
|
|
52
|
+
</span>
|
|
53
|
+
</div>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { HTMLSelectAttributes } from 'svelte/elements';
|
|
3
|
+
interface Props extends Omit<HTMLSelectAttributes, 'size'> {
|
|
4
|
+
/** Size — `md` is the base; `sm`/`lg` add a modifier */
|
|
5
|
+
size?: 'sm' | 'md' | 'lg';
|
|
6
|
+
/** Renders the error-border state */
|
|
7
|
+
invalid?: boolean;
|
|
8
|
+
/** Extra classes appended to the <select> */
|
|
9
|
+
class?: string;
|
|
10
|
+
/** The <option>/<optgroup> elements */
|
|
11
|
+
children: Snippet;
|
|
12
|
+
}
|
|
13
|
+
declare const Select: import("svelte").Component<Props, {}, "">;
|
|
14
|
+
type Select = ReturnType<typeof Select>;
|
|
15
|
+
export default Select;
|