windmill-components 1.444.1 → 1.447.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.
Files changed (229) hide show
  1. package/package/autosize.js +1 -1
  2. package/package/components/AppConnectInner.svelte +2 -1
  3. package/package/components/ArgInput.svelte +37 -24
  4. package/package/components/CapturesInputs.svelte +16 -0
  5. package/package/components/CapturesInputs.svelte.d.ts +21 -0
  6. package/package/components/Dev.svelte +7 -1
  7. package/package/components/EditableSchemaForm.svelte +369 -290
  8. package/package/components/EditableSchemaForm.svelte.d.ts +12 -2
  9. package/package/components/Editor.svelte +5 -7
  10. package/package/components/FirstStepInputs.svelte +111 -0
  11. package/package/components/FirstStepInputs.svelte.d.ts +17 -0
  12. package/package/components/FlowBuilder.svelte +28 -7
  13. package/package/components/FlowPreviewContent.svelte +72 -1
  14. package/package/components/FlowPreviewContent.svelte.d.ts +1 -0
  15. package/package/components/GfmMarkdown.svelte +93 -2
  16. package/package/components/HighlightCode.svelte +2 -0
  17. package/package/components/HistoricInputs.svelte +193 -0
  18. package/package/components/HistoricInputs.svelte.d.ts +20 -0
  19. package/package/components/InfiniteList.svelte +161 -0
  20. package/package/components/InfiniteList.svelte.d.ts +40 -0
  21. package/package/components/LightweightArgInput.svelte +19 -15
  22. package/package/components/MoveDrawer.svelte +2 -1
  23. package/package/components/Path.svelte +7 -1
  24. package/package/components/Path.svelte.d.ts +1 -1
  25. package/package/components/ResourcePicker.svelte +2 -1
  26. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  27. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  28. package/package/components/SaveInputsButton.svelte +53 -0
  29. package/package/components/SaveInputsButton.svelte.d.ts +24 -0
  30. package/package/components/SavedInputs.svelte +33 -61
  31. package/package/components/SavedInputsPicker.svelte +264 -0
  32. package/package/components/SavedInputsPicker.svelte.d.ts +20 -0
  33. package/package/components/ScheduleEditorInner.svelte +0 -1
  34. package/package/components/SchemaForm.svelte +22 -3
  35. package/package/components/ScriptBuilder.svelte +595 -562
  36. package/package/components/ScriptEditor.svelte +10 -3
  37. package/package/components/ScriptEditor.svelte.d.ts +5 -2
  38. package/package/components/ScriptSchema.svelte +1 -2
  39. package/package/components/Section.svelte +6 -4
  40. package/package/components/ShareModal.svelte.d.ts +2 -2
  41. package/package/components/SimpleEditor.svelte +39 -7
  42. package/package/components/SimpleEditor.svelte.d.ts +1 -4
  43. package/package/components/StringTypeNarrowing.svelte +3 -1
  44. package/package/components/TestConnection.svelte +5 -0
  45. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  46. package/package/components/WorkerGroup.svelte +2 -1
  47. package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -0
  48. package/package/components/apps/editor/component/components.d.ts +79 -79
  49. package/package/components/apps/editor/component/default-codes.d.ts +1 -1
  50. package/package/components/apps/editor/component/default-codes.js +10 -10
  51. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +2 -1
  52. package/package/components/apps/inputType.d.ts +2 -2
  53. package/package/components/common/button/Button.svelte +10 -52
  54. package/package/components/common/button/PulseButton.svelte +81 -0
  55. package/package/components/common/button/PulseButton.svelte.d.ts +34 -0
  56. package/package/components/common/button/RoundIconButton.svelte +11 -0
  57. package/package/components/common/button/RoundIconButton.svelte.d.ts +19 -0
  58. package/package/components/common/button/model.d.ts +1 -0
  59. package/package/components/common/button/model.js +47 -0
  60. package/package/components/common/fileUpload/FileUpload.svelte +3 -1
  61. package/package/components/common/fileUpload/FileUpload.svelte.d.ts +1 -0
  62. package/package/components/common/languageIcons/LanguageIcon.svelte +3 -0
  63. package/package/components/common/layout/List.svelte +10 -4
  64. package/package/components/common/layout/List.svelte.d.ts +1 -0
  65. package/package/components/common/tabs/Tab.svelte +14 -1
  66. package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
  67. package/package/components/copilot/ScriptGen.svelte +1 -1
  68. package/package/components/copilot/lib.js +1 -1
  69. package/package/components/copilot/prompts/edit.yaml +1 -1
  70. package/package/components/copilot/prompts/editPrompt.js +1 -1
  71. package/package/components/copilot/prompts/fix.yaml +1 -1
  72. package/package/components/copilot/prompts/fixPrompt.js +1 -1
  73. package/package/components/copilot/prompts/gen.yaml +1 -1
  74. package/package/components/copilot/prompts/genPrompt.js +1 -1
  75. package/package/components/custom_ui.d.ts +1 -0
  76. package/package/components/details/DetailPageDetailPanel.svelte +20 -19
  77. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +4 -1
  78. package/package/components/details/DetailPageLayout.svelte +4 -1
  79. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  80. package/package/components/details/DetailPageTriggerPanel.svelte +84 -63
  81. package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +3 -1
  82. package/package/components/details/EmailTriggerConfigSection.svelte +1 -1
  83. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +2 -1
  84. package/package/components/details/EmailTriggerPanel.svelte +2 -0
  85. package/package/components/details/EmailTriggerPanel.svelte.d.ts +2 -0
  86. package/package/components/flows/FlowEditor.svelte +8 -2
  87. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  88. package/package/components/flows/common/FlowCard.svelte +12 -6
  89. package/package/components/flows/content/DynamicInputHelpBox.svelte +1 -0
  90. package/package/components/flows/content/FlowEditorPanel.svelte +15 -9
  91. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
  92. package/package/components/flows/content/FlowInput.svelte +449 -98
  93. package/package/components/flows/content/FlowInput.svelte.d.ts +2 -0
  94. package/package/components/flows/content/FlowInputEditor.svelte +46 -0
  95. package/package/components/flows/content/FlowInputEditor.svelte.d.ts +25 -0
  96. package/package/components/flows/content/FlowInputsQuick.svelte +1 -1
  97. package/package/components/flows/content/FlowLoop.svelte +192 -194
  98. package/package/components/flows/content/FlowModuleComponent.svelte +372 -382
  99. package/package/components/flows/content/FlowModuleMock.svelte +6 -7
  100. package/package/components/flows/content/FlowPathViewer.svelte +2 -1
  101. package/package/components/flows/content/FlowSettings.svelte +25 -3
  102. package/package/components/flows/content/FlowWhileLoop.svelte +97 -99
  103. package/package/components/flows/flowStore.d.ts +13 -0
  104. package/package/components/flows/flowStore.js +41 -0
  105. package/package/components/flows/header/FlowPreviewButtons.svelte +10 -4
  106. package/package/components/flows/header/FlowPreviewButtons.svelte.d.ts +4 -2
  107. package/package/components/flows/header/FlowYamlEditor.svelte +3 -0
  108. package/package/components/flows/map/FlowModuleSchemaItem.svelte +8 -58
  109. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +67 -0
  110. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +24 -0
  111. package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
  112. package/package/components/flows/pickers/FlowScriptPicker.svelte +1 -1
  113. package/package/components/flows/previousResults.d.ts +1 -1
  114. package/package/components/flows/previousResults.js +7 -2
  115. package/package/components/flows/types.d.ts +7 -0
  116. package/package/components/flows/utils.d.ts +1 -0
  117. package/package/components/flows/utils.js +3 -0
  118. package/package/components/graph/graphBuilder.js +1 -1
  119. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +22 -8
  120. package/package/components/graph/renderers/triggers/TriggersBadge.svelte.d.ts +1 -1
  121. package/package/components/icons/NatsIcon.svelte +19 -0
  122. package/package/components/icons/NatsIcon.svelte.d.ts +18 -0
  123. package/package/components/icons/OracleDBIcon.svelte +15 -0
  124. package/package/components/icons/OracleDBIcon.svelte.d.ts +25 -0
  125. package/package/components/icons/index.d.ts +7 -1
  126. package/package/components/icons/index.js +8 -2
  127. package/package/components/meltComponents/ButtonDropDown.svelte +32 -0
  128. package/package/components/meltComponents/ButtonDropDown.svelte.d.ts +27 -0
  129. package/package/components/meltComponents/Popover.svelte +7 -4
  130. package/package/components/meltComponents/Popover.svelte.d.ts +1 -0
  131. package/package/components/runs/RunsFilter.svelte +2 -2
  132. package/package/components/schema/AddPropertyFormV2.svelte +46 -0
  133. package/package/components/schema/AddPropertyFormV2.svelte.d.ts +18 -0
  134. package/package/components/schema/AddPropertyV2.svelte +151 -0
  135. package/package/components/schema/AddPropertyV2.svelte.d.ts +25 -0
  136. package/package/components/schema/EditableSchemaDrawer.svelte +17 -8
  137. package/package/components/schema/EditableSchemaWrapper.svelte +58 -14
  138. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +0 -1
  139. package/package/components/schema/FlowPropertyEditor.svelte +8 -3
  140. package/package/components/schema/JobSchemaPicker.svelte +32 -0
  141. package/package/components/schema/JobSchemaPicker.svelte.d.ts +19 -0
  142. package/package/components/schema/PropertyEditor.svelte +9 -1
  143. package/package/components/schema/RunningJobSchemaPicker.svelte +67 -0
  144. package/package/components/schema/RunningJobSchemaPicker.svelte.d.ts +21 -0
  145. package/package/components/schema/SchemaFormDND.svelte +1 -1
  146. package/package/components/schema/SchemaPicker.svelte +92 -0
  147. package/package/components/schema/SchemaPicker.svelte.d.ts +23 -0
  148. package/package/components/schema/SchemaPickerRow.svelte +95 -0
  149. package/package/components/schema/SchemaPickerRow.svelte.d.ts +22 -0
  150. package/package/components/scriptEditor/LogPanel.svelte +1 -1
  151. package/package/components/settings/ChangeWorkspaceColor.svelte +103 -0
  152. package/package/components/settings/ChangeWorkspaceColor.svelte.d.ts +16 -0
  153. package/package/components/settings/ChangeWorkspaceId.svelte +1 -0
  154. package/package/components/settings/ChangeWorkspaceName.svelte +4 -0
  155. package/package/components/sidebar/MenuButton.svelte +5 -2
  156. package/package/components/sidebar/MenuButton.svelte.d.ts +1 -0
  157. package/package/components/sidebar/SidebarContent.svelte +8 -0
  158. package/package/components/sidebar/WorkspaceMenu.svelte +40 -21
  159. package/package/components/table/DataTable.svelte +43 -3
  160. package/package/components/table/DataTable.svelte.d.ts +2 -0
  161. package/package/components/table/Head.svelte +1 -1
  162. package/package/components/table/Row.svelte +11 -1
  163. package/package/components/table/Row.svelte.d.ts +3 -0
  164. package/package/components/table/index.d.ts +3 -0
  165. package/package/components/table/index.js +3 -0
  166. package/package/components/triggers/CaptureButton.svelte +38 -4
  167. package/package/components/triggers/CaptureButton.svelte.d.ts +3 -1
  168. package/package/components/triggers/CaptureIcon.svelte +7 -4
  169. package/package/components/triggers/CaptureIcon.svelte.d.ts +7 -13
  170. package/package/components/triggers/CaptureSection.svelte +50 -17
  171. package/package/components/triggers/CaptureSection.svelte.d.ts +5 -3
  172. package/package/components/triggers/CaptureTable.svelte +239 -186
  173. package/package/components/triggers/CaptureTable.svelte.d.ts +9 -11
  174. package/package/components/triggers/CaptureWrapper.svelte +126 -109
  175. package/package/components/triggers/CaptureWrapper.svelte.d.ts +3 -1
  176. package/package/components/triggers/KafkaTriggerEditorInner.svelte +1 -0
  177. package/package/components/triggers/KafkaTriggersConfigSection.svelte +16 -4
  178. package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +3 -1
  179. package/package/components/triggers/KafkaTriggersPanel.svelte +2 -0
  180. package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +2 -0
  181. package/package/components/triggers/NatsTriggerEditor.svelte +19 -0
  182. package/package/components/triggers/NatsTriggerEditor.svelte.d.ts +21 -0
  183. package/package/components/triggers/NatsTriggerEditorInner.svelte +239 -0
  184. package/package/components/triggers/NatsTriggerEditorInner.svelte.d.ts +21 -0
  185. package/package/components/triggers/NatsTriggersConfigSection.svelte +276 -0
  186. package/package/components/triggers/NatsTriggersConfigSection.svelte.d.ts +37 -0
  187. package/package/components/triggers/NatsTriggersPanel.svelte +126 -0
  188. package/package/components/triggers/NatsTriggersPanel.svelte.d.ts +26 -0
  189. package/package/components/triggers/RouteEditorConfigSection.svelte +12 -2
  190. package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +5 -1
  191. package/package/components/triggers/RouteEditorInner.svelte +5 -0
  192. package/package/components/triggers/RoutesPanel.svelte +4 -0
  193. package/package/components/triggers/RoutesPanel.svelte.d.ts +3 -0
  194. package/package/components/triggers/TriggersEditor.svelte +146 -97
  195. package/package/components/triggers/TriggersEditor.svelte.d.ts +2 -0
  196. package/package/components/triggers/TriggersEditorSection.svelte +19 -13
  197. package/package/components/triggers/TriggersEditorSection.svelte.d.ts +3 -0
  198. package/package/components/triggers/TriggersWrapper.svelte +7 -3
  199. package/package/components/triggers/TriggersWrapper.svelte.d.ts +2 -1
  200. package/package/components/triggers/WebhooksConfigSection.svelte +7 -6
  201. package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +2 -1
  202. package/package/components/triggers/WebhooksPanel.svelte +2 -0
  203. package/package/components/triggers/WebhooksPanel.svelte.d.ts +2 -0
  204. package/package/components/triggers/WebsocketEditorConfigSection.svelte +3 -1
  205. package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +2 -1
  206. package/package/components/triggers/WebsocketTriggersPanel.svelte +2 -0
  207. package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +2 -0
  208. package/package/components/triggers.d.ts +2 -1
  209. package/package/components/triggers.js +2 -0
  210. package/package/components/vscode.js +12 -8
  211. package/package/consts.d.ts +1 -0
  212. package/package/consts.js +18 -0
  213. package/package/gen/core/OpenAPI.js +1 -1
  214. package/package/gen/schemas.gen.d.ts +207 -13
  215. package/package/gen/schemas.gen.js +207 -13
  216. package/package/gen/services.gen.d.ts +118 -10
  217. package/package/gen/services.gen.js +237 -17
  218. package/package/gen/types.gen.d.ts +400 -40
  219. package/package/hubPaths.json +2 -1
  220. package/package/infer.js +11 -2
  221. package/package/monaco_workers/build_workers.js +39 -37
  222. package/package/monaco_workers/graphql.worker.bundle.js +18371 -36513
  223. package/package/script_helpers.d.ts +5 -2
  224. package/package/script_helpers.js +46 -8
  225. package/package/scripts.js +4 -0
  226. package/package/stores.d.ts +2 -1
  227. package/package/stores.js +2 -1
  228. package/package.json +14 -16
  229. package/package/monaco_workers/graphql.worker.bundle.d.ts +0 -0
@@ -0,0 +1,23 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ payloadData: Record<string, any>;
5
+ date: string | undefined;
6
+ selected?: boolean | undefined;
7
+ };
8
+ events: {
9
+ select: CustomEvent<any>;
10
+ } & {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {
14
+ start: {};
15
+ extra: {};
16
+ };
17
+ };
18
+ export type SchemaPickerProps = typeof __propDef.props;
19
+ export type SchemaPickerEvents = typeof __propDef.events;
20
+ export type SchemaPickerSlots = typeof __propDef.slots;
21
+ export default class SchemaPicker extends SvelteComponent<SchemaPickerProps, SchemaPickerEvents, SchemaPickerSlots> {
22
+ }
23
+ export {};
@@ -0,0 +1,95 @@
1
+ <script>import CustomPopover from '../CustomPopover.svelte';
2
+ import { copyToClipboard } from '../../utils';
3
+ import ObjectViewer from '../propertyPicker/ObjectViewer.svelte';
4
+ import { twMerge } from 'tailwind-merge';
5
+ import Cell from '../table/Cell.svelte';
6
+ export let payloadData;
7
+ export let date;
8
+ export let selected = false;
9
+ export let hovering = false;
10
+ function formatDate(dateString) {
11
+ if (!dateString)
12
+ return '';
13
+ const date = new Date(dateString);
14
+ return new Intl.DateTimeFormat('en-US', {
15
+ year: 'numeric',
16
+ month: 'short',
17
+ day: 'numeric',
18
+ hour: '2-digit',
19
+ minute: '2-digit'
20
+ }).format(date);
21
+ }
22
+ function formatDateShort(dateString) {
23
+ if (!dateString)
24
+ return '';
25
+ const date = new Date(dateString);
26
+ const now = new Date();
27
+ // If date is today, only show time
28
+ if (date.toDateString() === now.toDateString()) {
29
+ return new Intl.DateTimeFormat('en-US', {
30
+ hour: '2-digit',
31
+ minute: '2-digit'
32
+ }).format(date);
33
+ }
34
+ // If date is this year, show only month and day
35
+ if (date.getFullYear() === now.getFullYear()) {
36
+ return new Intl.DateTimeFormat('en-US', {
37
+ month: 'short',
38
+ day: 'numeric'
39
+ }).format(date);
40
+ }
41
+ // If date is from another year, only show the date with year
42
+ return new Intl.DateTimeFormat('en-US', {
43
+ year: 'numeric',
44
+ month: 'short',
45
+ day: 'numeric'
46
+ }).format(date);
47
+ }
48
+ </script>
49
+
50
+ <Cell>
51
+ <slot name="start" />
52
+ </Cell>
53
+
54
+ <Cell
55
+ wrap
56
+ class="text-2xs font-normal text-left p-2 rounded-md overflow-auto text-ellipsis scrollbar-none"
57
+ title={formatDate(date)}
58
+ >
59
+ {formatDateShort(date)}
60
+ </Cell>
61
+
62
+ <Cell class="items-center flex flex-row gap-2">
63
+ <CustomPopover class="w-full overflow-auto flex items-center justify-center">
64
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
65
+ <!-- svelte-ignore a11y-no-static-element-interactions -->
66
+ <div
67
+ class={twMerge(
68
+ 'text-xs border w-full font-normal text-left p-1 rounded-md whitespace-nowrap overflow-hidden text-ellipsis',
69
+ hovering && 'border-surface'
70
+ )}
71
+ on:click={() => {
72
+ if (selected) {
73
+ copyToClipboard(JSON.stringify(payloadData))
74
+ }
75
+ }}
76
+ >
77
+ {JSON.stringify(payloadData)}
78
+ </div>
79
+ <svelte:fragment slot="overlay">
80
+ <ObjectViewer json={payloadData} />
81
+ </svelte:fragment>
82
+ </CustomPopover>
83
+
84
+ <slot name="extra" />
85
+ </Cell>
86
+
87
+ <style>
88
+ .scrollbar-none {
89
+ -ms-overflow-style: none; /* IE and Edge */
90
+ scrollbar-width: none; /* Firefox */
91
+ }
92
+
93
+ .scrollbar-none::-webkit-scrollbar {
94
+ display: none; /* Chrome, Safari and Opera */
95
+ }</style>
@@ -0,0 +1,22 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ payloadData: Record<string, any>;
5
+ date: string | undefined;
6
+ selected?: boolean | undefined;
7
+ hovering?: boolean | undefined;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {
13
+ start: {};
14
+ extra: {};
15
+ };
16
+ };
17
+ export type SchemaPickerRowProps = typeof __propDef.props;
18
+ export type SchemaPickerRowEvents = typeof __propDef.events;
19
+ export type SchemaPickerRowSlots = typeof __propDef.slots;
20
+ export default class SchemaPickerRow extends SvelteComponent<SchemaPickerRowProps, SchemaPickerRowEvents, SchemaPickerRowSlots> {
21
+ }
22
+ export {};
@@ -70,7 +70,7 @@ let forceJson = false;
70
70
  <Tab value="logs" size="xs">Logs & Result</Tab>
71
71
  <Tab value="history" size="xs">History</Tab>
72
72
  {#if showCaptures}
73
- <Tab value="captures" size="xs">Captures</Tab>
73
+ <Tab value="captures" size="xs">Trigger captures</Tab>
74
74
  {/if}
75
75
 
76
76
  <svelte:fragment slot="content">
@@ -0,0 +1,103 @@
1
+ <script>import { workspaceStore, usersWorkspaceStore } from '../../stores';
2
+ import Button from '../common/button/Button.svelte';
3
+ import { sendUserToast } from '../../toast';
4
+ import { WorkspaceService } from '../../gen';
5
+ import Modal from '../common/modal/Modal.svelte';
6
+ import { Pen } from 'lucide-svelte';
7
+ import Toggle from '../Toggle.svelte';
8
+ let colorEnabled = false;
9
+ let workspaceColor = undefined;
10
+ let savedWorkspaceColor = undefined;
11
+ let lastWorkspace = undefined;
12
+ export let open = false;
13
+ $: $usersWorkspaceStore && $workspaceStore !== lastWorkspace && onWorkspaceChange();
14
+ function onWorkspaceChange() {
15
+ lastWorkspace = $workspaceStore;
16
+ savedWorkspaceColor = $usersWorkspaceStore?.workspaces.find((w) => w.id === $workspaceStore)?.color;
17
+ workspaceColor = savedWorkspaceColor;
18
+ }
19
+ $: colorEnabled = !!workspaceColor;
20
+ $: if (colorEnabled && !workspaceColor)
21
+ generateRandomColor();
22
+ function generateRandomColor() {
23
+ const randomColor = '#' +
24
+ Math.floor(Math.random() * 16777215)
25
+ .toString(16)
26
+ .padStart(6, '0');
27
+ workspaceColor = randomColor;
28
+ }
29
+ async function changeWorkspaceColor() {
30
+ const colorToSave = colorEnabled && workspaceColor ? workspaceColor : undefined;
31
+ open = false;
32
+ await WorkspaceService.changeWorkspaceColor({
33
+ workspace: $workspaceStore,
34
+ requestBody: {
35
+ color: colorToSave
36
+ }
37
+ });
38
+ usersWorkspaceStore.set(await WorkspaceService.listUserWorkspaces());
39
+ savedWorkspaceColor = colorToSave;
40
+ sendUserToast(`Workspace color updated.`);
41
+ }
42
+ </script>
43
+
44
+ <div>
45
+ <p class="font-semibold text-sm">Workspace color</p>
46
+ <div class="flex flex-row gap-0.5 items-center">
47
+ {#if savedWorkspaceColor}
48
+ <div
49
+ class="w-5 h-5 rounded-full border border-gray-300 dark:border-gray-600"
50
+ style="background-color: {savedWorkspaceColor}"
51
+ />
52
+ {:else}
53
+ <span class="text-xs text-secondary">No color set</span>
54
+ {/if}
55
+ <Button
56
+ on:click={() => {
57
+ open = true
58
+ }}
59
+ size="xs"
60
+ spacingSize="xs2"
61
+ color="light"
62
+ iconOnly
63
+ startIcon={{
64
+ icon: Pen
65
+ }}
66
+ />
67
+ </div>
68
+ <p class="italic text-xs">
69
+ Color to identify the current workspace in the list of workspaces
70
+ </p>
71
+ </div>
72
+
73
+ <Modal bind:open title="Change Workspace Color">
74
+ <div class="flex flex-col gap-4">
75
+ <label class="block">
76
+ <span class="text-secondary text-sm">Workspace color</span>
77
+ <div class="flex items-center gap-2">
78
+ <Toggle bind:checked={colorEnabled} options={{ right: 'Enable' }} />
79
+ {#if colorEnabled}
80
+ <input class="w-10" type="color" bind:value={workspaceColor} disabled={!colorEnabled} />
81
+ {/if}
82
+ <input
83
+ type="text"
84
+ class="w-24 text-sm"
85
+ bind:value={workspaceColor}
86
+ disabled={!colorEnabled}
87
+ />
88
+ <Button on:click={generateRandomColor} size="xs" disabled={!colorEnabled}>Random</Button>
89
+ </div>
90
+ </label>
91
+ </div>
92
+
93
+ <svelte:fragment slot="actions">
94
+ <Button
95
+ size="sm"
96
+ on:click={() => {
97
+ changeWorkspaceColor()
98
+ }}
99
+ >
100
+ Save
101
+ </Button>
102
+ </svelte:fragment>
103
+ </Modal>
@@ -0,0 +1,16 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ open?: boolean | undefined;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type ChangeWorkspaceColorProps = typeof __propDef.props;
12
+ export type ChangeWorkspaceColorEvents = typeof __propDef.events;
13
+ export type ChangeWorkspaceColorSlots = typeof __propDef.slots;
14
+ export default class ChangeWorkspaceColor extends SvelteComponent<ChangeWorkspaceColorProps, ChangeWorkspaceColorEvents, ChangeWorkspaceColorSlots> {
15
+ }
16
+ export {};
@@ -61,6 +61,7 @@ export let open = false;
61
61
  />
62
62
  {/if}
63
63
  </div>
64
+ <p class="italic text-xs">Slug to uniquely identify your workspace</p>
64
65
  </div>
65
66
 
66
67
  <Modal bind:open title="Change workspace ID">
@@ -42,6 +42,10 @@ export let open = false;
42
42
  }}
43
43
  />
44
44
  </div>
45
+
46
+ <p class="italic text-xs">
47
+ Displayable name
48
+ </p>
45
49
  </div>
46
50
 
47
51
  <Modal bind:open title="Change workspace name">
@@ -10,6 +10,7 @@ export let lightMode = false;
10
10
  export let stopPropagationOnClick = false;
11
11
  export let shortcut = '';
12
12
  export let notificationsCount = 0;
13
+ export let color = null;
13
14
  let dispatch = createEventDispatcher();
14
15
  </script>
15
16
 
@@ -24,10 +25,12 @@ let dispatch = createEventDispatcher();
24
25
  'group flex items-center px-2 py-2 font-light rounded-md h-8 gap-3 w-full',
25
26
  lightMode
26
27
  ? 'text-primary hover:bg-surface-hover '
27
- : ' hover:bg-[#2A3648] text-primary-inverse dark:text-primary',
28
+ : 'hover:bg-[#2A3648] text-primary-inverse dark:text-primary',
29
+ color ? 'border-4' : '',
28
30
  'transition-all',
29
31
  $$props.class
30
32
  )}
33
+ style={color ? `border-color: ${color}; padding: 0 calc(0.5rem - 4px);` : ''}
31
34
  title={label}
32
35
  >
33
36
  {#if icon}
@@ -48,7 +51,7 @@ let dispatch = createEventDispatcher();
48
51
  <span
49
52
  class={twMerge(
50
53
  'whitespace-pre truncate',
51
- lightMode ? 'text-primary' : 'text-primary-inverse dark:text-primary',
54
+ lightMode ? 'text-primary' : 'text-primary-inverse dark:text-primary',
52
55
  'transition-all',
53
56
  $$props.class
54
57
  )}
@@ -10,6 +10,7 @@ declare const __propDef: {
10
10
  stopPropagationOnClick?: boolean | undefined;
11
11
  shortcut?: string | undefined;
12
12
  notificationsCount?: number | undefined;
13
+ color?: string | null | undefined;
13
14
  };
14
15
  events: {
15
16
  click: CustomEvent<any>;
@@ -19,6 +19,7 @@ import { changelogs } from './changelogs';
19
19
  import { page } from '$app/stores';
20
20
  import SideBarNotification from './SideBarNotification.svelte';
21
21
  import KafkaIcon from '../icons/KafkaIcon.svelte';
22
+ import NatsIcon from '../icons/NatsIcon.svelte';
22
23
  export let numUnacknowledgedCriticalAlerts = 0;
23
24
  $: mainMenuLinks = [
24
25
  { label: 'Home', href: `${base}/`, icon: Home },
@@ -67,6 +68,13 @@ const defaultExtraTriggerLinks = [
67
68
  icon: KafkaIcon,
68
69
  disabled: $userStore?.operator || !$enterpriseLicense,
69
70
  kind: 'kafka'
71
+ },
72
+ {
73
+ label: 'NATS' + ($enterpriseLicense ? '' : ' (EE)'),
74
+ href: '/nats_triggers',
75
+ icon: NatsIcon,
76
+ disabled: $userStore?.operator || !$enterpriseLicense,
77
+ kind: 'nats'
70
78
  }
71
79
  ];
72
80
  $: extraTriggerLinks = defaultExtraTriggerLinks.filter((link) => {
@@ -11,6 +11,7 @@ import MenuButton from './MenuButton.svelte';
11
11
  import { MenuItem } from '@rgossiaux/svelte-headlessui';
12
12
  import { isCloudHosted } from '../../cloud';
13
13
  import { initAllAiWorkspace } from '../copilot/lib';
14
+ import { twMerge } from 'tailwind-merge';
14
15
  export let isCollapsed = false;
15
16
  // When used outside of the side bar, where links to workspace settings and such don't make as much sense.
16
17
  export let strictWorkspaceSelect = false;
@@ -43,7 +44,13 @@ async function toggleSwitchWorkspace(id) {
43
44
 
44
45
  <Menu>
45
46
  <div slot="trigger">
46
- <MenuButton class="!text-xs" icon={Building} label={$workspaceStore ?? ''} {isCollapsed} />
47
+ <MenuButton
48
+ class="!text-xs"
49
+ icon={Building}
50
+ label={$workspaceStore ?? ''}
51
+ {isCollapsed}
52
+ color={$userWorkspaces.find((w) => w.id === $workspaceStore)?.color}
53
+ />
47
54
  </div>
48
55
 
49
56
  <div class="divide-y" role="none">
@@ -51,17 +58,29 @@ async function toggleSwitchWorkspace(id) {
51
58
  {#each $userWorkspaces as workspace}
52
59
  <MenuItem>
53
60
  <button
54
- class="text-xs min-w-0 w-full overflow-hidden flex flex-col py-1.5
55
- {$workspaceStore === workspace.id
56
- ? 'cursor-default bg-surface-selected'
57
- : 'cursor-pointer hover:bg-surface-hover'}"
61
+ class={twMerge(
62
+ 'text-xs min-w-0 w-full overflow-hidden flex flex-col py-1.5',
63
+ $workspaceStore === workspace.id
64
+ ? 'cursor-default bg-surface-selected'
65
+ : 'cursor-pointer hover:bg-surface-hover'
66
+ )}
58
67
  on:click={async () => {
59
68
  await toggleSwitchWorkspace(workspace.id)
60
69
  }}
61
70
  >
62
- <div class="text-primary pl-4 truncate text-left text-[1.2em]">{workspace.name}</div>
63
- <div class="text-tertiary font-mono pl-4 text-2xs whitespace-nowrap truncate text-left">
64
- {workspace.id}
71
+ <div class="flex items-center justify-between min-w-0 w-full">
72
+ <div>
73
+ <div class="text-primary pl-4 truncate text-left text-[1.2em]">{workspace.name}</div>
74
+ <div class="text-tertiary font-mono pl-4 text-2xs whitespace-nowrap truncate text-left">
75
+ {workspace.id}
76
+ </div>
77
+ </div>
78
+ {#if workspace.color}
79
+ <div
80
+ class="w-5 h-5 mr-2 rounded border border-gray-300 dark:border-gray-600"
81
+ style="background-color: {workspace.color}"
82
+ ></div>
83
+ {/if}
65
84
  </div>
66
85
  </button>
67
86
  </MenuItem>
@@ -81,19 +100,19 @@ async function toggleSwitchWorkspace(id) {
81
100
  </div>
82
101
  {/if}
83
102
  {#if !strictWorkspaceSelect}
84
- <div class="py-1" role="none">
85
- <a
86
- href="{base}/user/workspaces"
87
- on:click={() => {
88
- localStorage.removeItem('workspace')
89
- }}
90
- class="text-primary block px-4 py-2 text-xs hover:bg-surface-hover hover:text-primary"
91
- role="menuitem"
92
- tabindex="-1"
93
- >
94
- All workspaces
95
- </a>
96
- </div>
103
+ <div class="py-1" role="none">
104
+ <a
105
+ href="{base}/user/workspaces"
106
+ on:click={() => {
107
+ localStorage.removeItem('workspace')
108
+ }}
109
+ class="text-primary block px-4 py-2 text-xs hover:bg-surface-hover hover:text-primary"
110
+ role="menuitem"
111
+ tabindex="-1"
112
+ >
113
+ All workspaces
114
+ </a>
115
+ </div>
97
116
  {/if}
98
117
  {#if ($userStore?.is_admin || $superadmin) && !strictWorkspaceSelect}
99
118
  <div class="py-1" role="none">
@@ -19,22 +19,62 @@ export let noBorder = false;
19
19
  export let rowCount = undefined;
20
20
  export let hasMore = true;
21
21
  export let contentHeight = 0;
22
+ export let tableFixed = false;
23
+ export let infiniteScroll = undefined;
22
24
  let footerHeight = 0;
23
25
  let tableHeight = 0;
24
26
  const dispatch = createEventDispatcher();
27
+ let tableContainer;
28
+ let isLoading = false;
25
29
  setContext('datatable', {
26
30
  size
27
31
  });
28
32
  $: contentHeight = tableHeight - footerHeight;
33
+ function checkScrollStatus() {
34
+ if (!infiniteScroll || isLoading)
35
+ return;
36
+ const hasScrollbar = tableContainer.scrollHeight > tableContainer.clientHeight;
37
+ if (!hasScrollbar && hasMore) {
38
+ isLoading = true;
39
+ dispatch('loadMore');
40
+ setTimeout(() => {
41
+ isLoading = false;
42
+ }, 200);
43
+ }
44
+ }
45
+ function handleScroll() {
46
+ if (!infiniteScroll || isLoading) {
47
+ if (isLoading) {
48
+ const checkAgain = () => {
49
+ if (!isLoading) {
50
+ handleScroll();
51
+ }
52
+ };
53
+ setTimeout(checkAgain, 200);
54
+ }
55
+ return;
56
+ }
57
+ const { scrollTop, scrollHeight, clientHeight } = tableContainer;
58
+ if (scrollHeight - (scrollTop + clientHeight) < 50) {
59
+ isLoading = true;
60
+ dispatch('loadMore');
61
+ setTimeout(() => {
62
+ isLoading = false;
63
+ }, 1000);
64
+ }
65
+ }
66
+ $: if (tableContainer && hasMore && !isLoading) {
67
+ checkScrollStatus();
68
+ }
29
69
  </script>
30
70
 
31
71
  <div
32
72
  class={twMerge('h-full', rounded ? 'rounded-md' : '', noBorder ? 'border-0' : 'border')}
33
73
  bind:clientHeight={tableHeight}
34
74
  >
35
- <List justify="between" gap="none">
36
- <div class="w-full overflow-auto min-h-0 grow">
37
- <table class={twMerge('min-w-full divide-y')}>
75
+ <List justify="between" gap="none" hFull={true}>
76
+ <div class="w-full overflow-auto h-fit" bind:this={tableContainer} on:scroll={handleScroll}>
77
+ <table class={tableFixed ? 'table-fixed w-full' : 'min-w-full'}>
38
78
  <slot />
39
79
  </table>
40
80
  </div>
@@ -17,6 +17,8 @@ declare const __propDef: {
17
17
  rowCount?: number | undefined;
18
18
  hasMore?: boolean | undefined;
19
19
  contentHeight?: number | undefined;
20
+ tableFixed?: boolean | undefined;
21
+ infiniteScroll?: boolean | undefined;
20
22
  };
21
23
  events: {
22
24
  previous: CustomEvent<any>;
@@ -1,4 +1,4 @@
1
- <thead class="bg-surface-secondary sticky top-0 z-10">
1
+ <thead class="bg-surface-secondary sticky top-0 z-10 border-b">
2
2
  <slot />
3
3
  <div class="absolute top-2 right-2">
4
4
  <slot name="headerAction" />
@@ -4,6 +4,7 @@ export let hoverable = false;
4
4
  export let selected = false;
5
5
  export let dividable = false;
6
6
  export let disabled = false;
7
+ export let hovering = false;
7
8
  const dispatch = createEventDispatcher();
8
9
  </script>
9
10
 
@@ -13,11 +14,20 @@ const dispatch = createEventDispatcher();
13
14
  selected ? 'bg-blue-50 dark:bg-blue-900/50' : '',
14
15
  'transition-all',
15
16
  dividable ? 'divide-x' : '',
16
- disabled ? 'opacity-60' : ''
17
+ disabled ? 'opacity-60' : '',
18
+ $$props.class
17
19
  )}
18
20
  on:click={() => {
19
21
  dispatch('click')
20
22
  }}
23
+ on:mouseenter={() => {
24
+ hovering = true
25
+ dispatch('hover', true)
26
+ }}
27
+ on:mouseleave={() => {
28
+ hovering = false
29
+ dispatch('hover', false)
30
+ }}
21
31
  >
22
32
  <slot />
23
33
  </tr>
@@ -1,13 +1,16 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
+ [x: string]: any;
4
5
  hoverable?: boolean | undefined;
5
6
  selected?: boolean | undefined;
6
7
  dividable?: boolean | undefined;
7
8
  disabled?: boolean | undefined;
9
+ hovering?: boolean | undefined;
8
10
  };
9
11
  events: {
10
12
  click: CustomEvent<any>;
13
+ hover: CustomEvent<any>;
11
14
  } & {
12
15
  [evt: string]: CustomEvent<any>;
13
16
  };
@@ -0,0 +1,3 @@
1
+ export { default as Row } from './Row.svelte';
2
+ export { default as Cell } from './Cell.svelte';
3
+ export { default as DataTable } from './DataTable.svelte';
@@ -0,0 +1,3 @@
1
+ export { default as Row } from './Row.svelte';
2
+ export { default as Cell } from './Cell.svelte';
3
+ export { default as DataTable } from './DataTable.svelte';
@@ -1,12 +1,14 @@
1
1
  <script>import Popover from '../meltComponents/Popover.svelte';
2
2
  import { Button } from '../common';
3
- import { Webhook, Route, Unplug, Mail } from 'lucide-svelte';
3
+ import { Webhook, Route, Unplug, Mail, Plus } from 'lucide-svelte';
4
4
  import KafkaIcon from '../icons/KafkaIcon.svelte';
5
5
  import { enterpriseLicense } from '../../stores';
6
6
  import {} from '../../gen';
7
7
  import { createEventDispatcher } from 'svelte';
8
8
  import { captureTriggerKindToTriggerKind } from '../triggers';
9
9
  import CaptureIcon from './CaptureIcon.svelte';
10
+ import NatsIcon from '../icons/NatsIcon.svelte';
11
+ export let small = false;
10
12
  let isOpen = false;
11
13
  const dispatch = createEventDispatcher();
12
14
  function handleClick(kind) {
@@ -20,9 +22,31 @@ function handleClick(kind) {
20
22
 
21
23
  <Popover closeButton={false} bind:open={isOpen}>
22
24
  <svelte:fragment slot="trigger">
23
- <Button color="dark" btnClasses="rounded-l-none" wrapperClasses="h-full" nonCaptureEvent>
24
- <CaptureIcon />
25
- </Button>
25
+ {#if small}
26
+ <Button
27
+ color="light"
28
+ size="xs"
29
+ variant="border"
30
+ wrapperClasses="h-full"
31
+ nonCaptureEvent
32
+ title="Test trigger"
33
+ >
34
+ <div class="flex flex-row items-center gap-1">
35
+ <CaptureIcon variant="redDot" />
36
+ <Plus size={10} class="text-red" />
37
+ </div>
38
+ </Button>
39
+ {:else}
40
+ <Button
41
+ color="dark"
42
+ btnClasses="rounded-l-none"
43
+ wrapperClasses="h-full"
44
+ nonCaptureEvent
45
+ title="Test trigger"
46
+ >
47
+ <CaptureIcon variant="redDot" />
48
+ </Button>
49
+ {/if}
26
50
  </svelte:fragment>
27
51
  <svelte:fragment slot="content">
28
52
  <div class="flex flex-col bg-surface">
@@ -72,6 +96,16 @@ function handleClick(kind) {
72
96
  <p class="text-xs text-secondary">Kafka</p>
73
97
  </div>
74
98
  </button>
99
+ <button
100
+ disabled={!$enterpriseLicense}
101
+ class="hover:bg-surface-hover p-2 transition-colors duration-150"
102
+ on:click={() => handleClick('nats')}
103
+ >
104
+ <div class="flex flex-row items-center gap-2">
105
+ <NatsIcon size={16} />
106
+ <p class="text-xs text-secondary">Nats</p>
107
+ </div>
108
+ </button>
75
109
  </div>
76
110
  </svelte:fragment>
77
111
  </Popover>
@@ -1,6 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
- props: Record<string, never>;
3
+ props: {
4
+ small?: boolean | undefined;
5
+ };
4
6
  events: {
5
7
  openTriggers: CustomEvent<any>;
6
8
  } & {