windmill-components 1.550.0 → 1.555.0

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 (268) hide show
  1. package/package/aiStore.d.ts +13 -0
  2. package/package/aiStore.js +70 -0
  3. package/package/common.d.ts +2 -1
  4. package/package/components/AIProviderPicker.svelte +25 -8
  5. package/package/components/ArgEnum.svelte +3 -2
  6. package/package/components/ArgEnum.svelte.d.ts +1 -0
  7. package/package/components/ArgInput.svelte +235 -174
  8. package/package/components/ArgInput.svelte.d.ts +4 -1
  9. package/package/components/ArrayTypeNarrowing.svelte +38 -32
  10. package/package/components/AutoscalingEvents.svelte +21 -5
  11. package/package/components/AutoscalingEvents.svelte.d.ts +4 -18
  12. package/package/components/DateTimeInput.svelte +8 -6
  13. package/package/components/DeployButton.svelte +1 -1
  14. package/package/components/Dev.svelte +6 -4
  15. package/package/components/EditableSchemaForm.svelte +7 -6
  16. package/package/components/Editor.svelte +2 -1
  17. package/package/components/EditorSettings.svelte +5 -5
  18. package/package/components/EditorSettings.svelte.d.ts +4 -18
  19. package/package/components/FakeMonacoPlaceHolder.svelte +4 -2
  20. package/package/components/FakeMonacoPlaceHolder.svelte.d.ts +1 -0
  21. package/package/components/FieldHeader.svelte +5 -7
  22. package/package/components/FirstStepInputs.svelte +1 -1
  23. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  24. package/package/components/FlowPlugConnect.svelte +8 -2
  25. package/package/components/FlowPlugConnect.svelte.d.ts +1 -0
  26. package/package/components/FlowPreviewContent.svelte +113 -92
  27. package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
  28. package/package/components/FlowStatusViewer.svelte +3 -2
  29. package/package/components/FlowStatusViewerInner.svelte +1 -1
  30. package/package/components/FolderEditor.svelte +6 -7
  31. package/package/components/GroupEditor.svelte +148 -141
  32. package/package/components/GroupEditor.svelte.d.ts +5 -4
  33. package/package/components/InputTransformForm.svelte +88 -82
  34. package/package/components/InputTransformSchemaForm.svelte +5 -4
  35. package/package/components/InstanceSetting.svelte +17 -9
  36. package/package/components/JsonEditor.svelte +18 -9
  37. package/package/components/JsonEditor.svelte.d.ts +1 -1
  38. package/package/components/JsonInputs.svelte +1 -1
  39. package/package/components/ModulePreviewForm.svelte +23 -19
  40. package/package/components/NumberTypeNarrowing.svelte +32 -16
  41. package/package/components/ObjectStoreConfigSettings.svelte +27 -19
  42. package/package/components/Path.svelte +2 -8
  43. package/package/components/Path.svelte.d.ts +1 -1
  44. package/package/components/ResourceEditor.svelte +3 -10
  45. package/package/components/ResourcePicker.svelte +85 -72
  46. package/package/components/ResourcePicker.svelte.d.ts +2 -0
  47. package/package/components/RunChart.svelte +1 -1
  48. package/package/components/RunForm.svelte +11 -7
  49. package/package/components/S3ArrayHelperButton.svelte +12 -6
  50. package/package/components/S3ArrayHelperButton.svelte.d.ts +1 -0
  51. package/package/components/S3FilePicker.svelte +1 -1
  52. package/package/components/SchemaForm.svelte +18 -10
  53. package/package/components/SchemaForm.svelte.d.ts +7 -1
  54. package/package/components/SchemaFormWithArgPicker.svelte +1 -1
  55. package/package/components/ScriptBuilder.svelte +2 -2
  56. package/package/components/ScriptEditor.svelte +4 -3
  57. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  58. package/package/components/ShareModal.svelte +4 -4
  59. package/package/components/SimpleEditor.svelte +6 -2
  60. package/package/components/SimpleEditor.svelte.d.ts +3 -0
  61. package/package/components/StringTypeNarrowing.svelte +5 -1
  62. package/package/components/SuperadminSettingsInner.svelte +3 -3
  63. package/package/components/TemplateEditor.svelte +18 -9
  64. package/package/components/Toast.svelte +2 -7
  65. package/package/components/Toast.svelte.d.ts +4 -18
  66. package/package/components/Toggle.svelte +17 -7
  67. package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
  68. package/package/components/WorkerGroup.svelte +2 -14
  69. package/package/components/apps/components/buttons/AppButton.svelte +57 -39
  70. package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -2
  71. package/package/components/apps/components/display/dbtable/queries/insert.js +2 -1
  72. package/package/components/apps/components/display/dbtable/utils.d.ts +8 -8
  73. package/package/components/apps/components/display/table/utils.js +13 -3
  74. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -3
  75. package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -1
  76. package/package/components/apps/editor/AppEditorHeader.svelte +33 -271
  77. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +233 -0
  78. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +18 -0
  79. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +47 -0
  80. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +8 -0
  81. package/package/components/apps/editor/GridEditor.svelte +7 -2
  82. package/package/components/apps/editor/appDeploy.svelte.d.ts +1 -0
  83. package/package/components/apps/editor/appDeploy.svelte.js +6 -0
  84. package/package/components/apps/editor/appUtils.d.ts +1 -0
  85. package/package/components/apps/editor/appUtils.js +30 -1
  86. package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -1
  87. package/package/components/apps/editor/component/components.d.ts +3 -3
  88. package/package/components/apps/editor/component/components.js +1 -1
  89. package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
  90. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -4
  91. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  92. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  93. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  94. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +58 -8
  95. package/package/components/auditLogs/AuditLogsFilters.svelte +1 -1
  96. package/package/components/common/ResizeTransitionWrapper.svelte +39 -0
  97. package/package/components/common/ResizeTransitionWrapper.svelte.d.ts +12 -0
  98. package/package/components/common/badge/CountBadge.svelte +29 -0
  99. package/package/components/common/badge/CountBadge.svelte.d.ts +8 -0
  100. package/package/components/common/button/Button.svelte +1 -0
  101. package/package/components/common/button/ConnectionButton.svelte +6 -1
  102. package/package/components/common/button/ConnectionButton.svelte.d.ts +2 -0
  103. package/package/components/common/button/RefreshButton.svelte +8 -4
  104. package/package/components/common/button/RefreshButton.svelte.d.ts +3 -0
  105. package/package/components/common/calendarPicker/CalendarPicker.svelte +1 -1
  106. package/package/components/common/fileInput/FileInput.svelte +7 -6
  107. package/package/components/common/fileUpload/S3ArgInput.svelte +11 -9
  108. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +1 -0
  109. package/package/components/common/popup/PopupV2.svelte +6 -0
  110. package/package/components/common/toggleButton-v2/ToggleButton.svelte +17 -26
  111. package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +16 -30
  112. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
  113. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +3 -3
  114. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
  115. package/package/components/copilot/CodeCompletionStatus.svelte +2 -1
  116. package/package/components/copilot/CronGen.svelte +1 -1
  117. package/package/components/copilot/FlowInlineScriptAIButton.svelte +2 -2
  118. package/package/components/copilot/IteratorGen.svelte +30 -25
  119. package/package/components/copilot/IteratorGen.svelte.d.ts +8 -7
  120. package/package/components/copilot/MetadataGen.svelte +4 -3
  121. package/package/components/copilot/PredicateGen.svelte +15 -12
  122. package/package/components/copilot/PredicateGen.svelte.d.ts +5 -4
  123. package/package/components/copilot/RegexGen.svelte +1 -1
  124. package/package/components/copilot/ScriptFix.svelte +1 -1
  125. package/package/components/copilot/ScriptGen.svelte +2 -1
  126. package/package/components/copilot/StepGenQuick.svelte +15 -16
  127. package/package/components/copilot/StepGenQuick.svelte.d.ts +14 -13
  128. package/package/components/copilot/StepInputGen.svelte +50 -36
  129. package/package/components/copilot/StepInputGen.svelte.d.ts +13 -10
  130. package/package/components/copilot/StepInputsGen.svelte +18 -19
  131. package/package/components/copilot/StepInputsGen.svelte.d.ts +4 -18
  132. package/package/components/copilot/autocomplete/Autocompletor.js +1 -1
  133. package/package/components/copilot/autocomplete/request.js +1 -1
  134. package/package/components/copilot/chat/AIChat.svelte +2 -1
  135. package/package/components/copilot/chat/AIChatManager.svelte.js +2 -1
  136. package/package/components/copilot/chat/AiChatLayout.svelte +2 -1
  137. package/package/components/copilot/chat/ProviderModelSelector.svelte +10 -9
  138. package/package/components/copilot/chat/ProviderModelSelector.svelte.d.ts +2 -17
  139. package/package/components/copilot/chat/flow/FlowAIButton.svelte +1 -1
  140. package/package/components/copilot/chat/script/core.js +2 -1
  141. package/package/components/copilot/chat/shared.js +2 -1
  142. package/package/components/copilot/lib.js +2 -1
  143. package/package/components/details/DetailPageLayout.svelte +3 -2
  144. package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
  145. package/package/components/flows/CreateActionsFlow.svelte +1 -1
  146. package/package/components/flows/FlowChatInterface.svelte +404 -0
  147. package/package/components/flows/FlowChatInterface.svelte.d.ts +19 -0
  148. package/package/components/flows/FlowChatMessage.svelte +41 -0
  149. package/package/components/flows/FlowChatMessage.svelte.d.ts +9 -0
  150. package/package/components/flows/FlowConversationsSidebar.svelte +213 -0
  151. package/package/components/flows/FlowConversationsSidebar.svelte.d.ts +15 -0
  152. package/package/components/flows/FlowEditor.svelte.d.ts +1 -1
  153. package/package/components/flows/FlowModuleIcon.svelte +10 -10
  154. package/package/components/flows/common/FlowCard.svelte +10 -2
  155. package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
  156. package/package/components/flows/common/FlowCardHeader.svelte +2 -1
  157. package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
  158. package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -4
  159. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -1
  160. package/package/components/flows/content/FlowInput.svelte +381 -259
  161. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -1
  162. package/package/components/flows/content/FlowInputsQuick.svelte +55 -34
  163. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +2 -2
  164. package/package/components/flows/content/FlowModuleComponent.svelte +5 -10
  165. package/package/components/flows/flowInfers.d.ts +60 -0
  166. package/package/components/flows/flowInfers.js +72 -66
  167. package/package/components/flows/{flowStore.d.ts → flowStore.svelte.d.ts} +1 -0
  168. package/package/components/flows/header/FlowPreviewButtons.svelte +1 -1
  169. package/package/components/flows/map/FlowErrorHandlerItem.svelte +4 -2
  170. package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
  171. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  172. package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -2
  173. package/package/components/flows/map/FlowStickyNode.svelte +2 -2
  174. package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
  175. package/package/components/flows/map/InsertModuleButton.svelte +5 -2
  176. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +4 -3
  177. package/package/components/flows/map/InsertModuleInner.svelte +3 -1
  178. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +2 -2
  179. package/package/components/flows/map/VirtualItem.svelte +1 -2
  180. package/package/components/flows/pickers/PickHubScriptQuick.svelte +8 -3
  181. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
  182. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +15 -12
  183. package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -15
  184. package/package/components/graph/FlowGraphV2.svelte +2 -1
  185. package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
  186. package/package/components/graph/graphBuilder.svelte.d.ts +2 -0
  187. package/package/components/graph/graphBuilder.svelte.js +1 -0
  188. package/package/components/graph/renderers/edges/BaseEdge.svelte +1 -0
  189. package/package/components/graph/renderers/nodes/InputNode.svelte +13 -2
  190. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -27
  191. package/package/components/instanceSettings.js +17 -0
  192. package/package/components/progressBar/ProgressBar.svelte +1 -1
  193. package/package/components/raw_apps/FileEditorIcon.svelte +1 -1
  194. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +4 -18
  195. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +2 -8
  196. package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +4 -18
  197. package/package/components/raw_apps/RawAppEditor.svelte +6 -7
  198. package/package/components/raw_apps/RawAppEditorHeader.svelte +48 -301
  199. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +18 -19
  200. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +10 -16
  201. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +13 -13
  202. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +8 -11
  203. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -2
  204. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +0 -1
  205. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +7 -13
  206. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +8 -8
  207. package/package/components/raw_apps/RawAppPreview.svelte +3 -7
  208. package/package/components/raw_apps/RawAppPreview.svelte.d.ts +5 -19
  209. package/package/components/raw_apps/utils.d.ts +1 -1
  210. package/package/components/raw_apps/utils.js +3 -3
  211. package/package/components/runs/RunOption.svelte +2 -2
  212. package/package/components/runs/RunsFilter.svelte +15 -12
  213. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  214. package/package/components/schema/EditableSchemaDrawer.svelte +19 -18
  215. package/package/components/schema/FlowPropertyEditor.svelte +9 -2
  216. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  217. package/package/components/schema/PropertyEditor.svelte +22 -26
  218. package/package/components/schema/SchemaFormDND.svelte +3 -2
  219. package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
  220. package/package/components/select/DraggableTags.svelte +2 -2
  221. package/package/components/select/MultiSelect.svelte +14 -8
  222. package/package/components/select/Select.svelte +12 -5
  223. package/package/components/select/Select.svelte.d.ts +11 -0
  224. package/package/components/select/SelectDropdown.svelte +98 -46
  225. package/package/components/select/SelectDropdown.svelte.d.ts +10 -0
  226. package/package/components/select/utils.svelte.js +2 -0
  227. package/package/components/settings/CreateToken.svelte +76 -49
  228. package/package/components/settings/WorkspaceUserSettings.svelte +20 -17
  229. package/package/components/sidebar/CriticalAlertTable.svelte +2 -1
  230. package/package/components/sidebar/Linkify.svelte +14 -0
  231. package/package/components/sidebar/Linkify.svelte.d.ts +5 -0
  232. package/package/components/sidebar/WorkspaceMenu.svelte +8 -3
  233. package/package/components/table/tableUtils.js +1 -1
  234. package/package/components/text_input/TextInput.svelte +30 -0
  235. package/package/components/text_input/TextInput.svelte.d.ts +17 -0
  236. package/package/components/triggers/TriggersEditor.svelte +11 -1
  237. package/package/components/triggers/triggers.svelte.d.ts +1 -1
  238. package/package/components/triggers/triggers.svelte.js +8 -4
  239. package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +2 -2
  240. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +3 -0
  241. package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +49 -17
  242. package/package/components/tutorials/Tutorial.svelte +9 -0
  243. package/package/components/tutorials/Tutorial.svelte.d.ts +1 -0
  244. package/package/components/tutorials/app/AppTutorial.svelte +41 -57
  245. package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte +3 -5
  246. package/package/components/tutorials/app/ConnectionTutorial.svelte +2 -2
  247. package/package/components/tutorials/utils.js +2 -154
  248. package/package/components/vscode.js +16 -8
  249. package/package/components/workspaceSettings/AISettings.svelte +4 -3
  250. package/package/components/workspaceSettings/CreateWorkspace.svelte +2 -2
  251. package/package/components/workspaceSettings/DucklakeSettings.svelte +64 -7
  252. package/package/components/workspaceSettings/StorageSettings.svelte +24 -26
  253. package/package/editorUtils.d.ts +1 -1
  254. package/package/gen/core/OpenAPI.js +1 -1
  255. package/package/gen/schemas.gen.d.ts +82 -1
  256. package/package/gen/schemas.gen.js +82 -1
  257. package/package/gen/services.gen.d.ts +175 -1
  258. package/package/gen/services.gen.js +345 -2
  259. package/package/gen/types.gen.d.ts +1324 -549
  260. package/package/script_helpers.js +5 -5
  261. package/package/services/JobManager.js +4 -2
  262. package/package/stores.d.ts +4 -13
  263. package/package/stores.js +5 -68
  264. package/package/toast.js +2 -1
  265. package/package/utils.d.ts +1 -0
  266. package/package/utils.js +3 -0
  267. package/package.json +3 -3
  268. /package/package/components/flows/{flowStore.js → flowStore.svelte.js} +0 -0
@@ -0,0 +1,47 @@
1
+ <script lang="ts">import { Alert } from '../../common';
2
+ import Path from '../../Path.svelte';
3
+ let { summary, appPath, pathError = $bindable(), newEditedPath = $bindable() } = $props();
4
+ let path = $state(undefined);
5
+ let dirtyPath = $state(false);
6
+ </script>
7
+
8
+ <Alert bgClass="mb-4" title="Require path" type="info">
9
+ Choose a path to save the initial draft of the app.
10
+ </Alert>
11
+ <h3>Summary</h3>
12
+ <div class="w-full pt-2">
13
+ <!-- svelte-ignore a11y_autofocus -->
14
+ <input
15
+ autofocus
16
+ type="text"
17
+ placeholder="App summary"
18
+ class="text-sm w-full font-semibold"
19
+ onkeydown={(e) => {
20
+ e.stopPropagation()
21
+ }}
22
+ bind:value={$summary}
23
+ onkeyup={() => {
24
+ if ($appPath == '' && $summary?.length > 0 && !dirtyPath) {
25
+ path?.setName(
26
+ $summary
27
+ .toLowerCase()
28
+ .replace(/[^a-z0-9_]/g, '_')
29
+ .replace(/-+/g, '_')
30
+ .replace(/^-|-$/g, '')
31
+ )
32
+ }
33
+ }}
34
+ />
35
+ </div>
36
+ <div class="py-2"></div>
37
+ <Path
38
+ autofocus={false}
39
+ bind:this={path}
40
+ bind:error={pathError}
41
+ bind:path={newEditedPath}
42
+ bind:dirty={dirtyPath}
43
+ initialPath=""
44
+ namePlaceholder="app"
45
+ kind="app"
46
+ />
47
+ <div class="py-4"></div>
@@ -0,0 +1,8 @@
1
+ declare const AppEditorHeaderDeployInitialDraft: import("svelte").Component<{
2
+ summary: any;
3
+ appPath: any;
4
+ pathError?: any;
5
+ newEditedPath?: any;
6
+ }, {}, "pathError" | "newEditedPath">;
7
+ type AppEditorHeaderDeployInitialDraft = ReturnType<typeof AppEditorHeaderDeployInitialDraft>;
8
+ export default AppEditorHeaderDeployInitialDraft;
@@ -74,7 +74,6 @@ export function moveComponentBetweenSubgrids(componentId, subgrid, position) {
74
74
  }
75
75
  </script>
76
76
 
77
- <input />
78
77
  <div class="w-full z-[1000] overflow-visible h-full">
79
78
  <div class={$app.hideLegacyTopBar ? 'hidden' : ''}>
80
79
  <div
@@ -113,7 +112,13 @@ export function moveComponentBetweenSubgrids(componentId, subgrid, position) {
113
112
  <div class="flex text-2xs gap-8 items-center">
114
113
  <div class="py-2 pr-2 text-secondary flex gap-1 items-center">
115
114
  Hide bar on view
116
- <Toggle size="xs" bind:checked={$app.norefreshbar} />
115
+ <Toggle
116
+ size="xs"
117
+ bind:checked={
118
+ () => $app.norefreshbar ?? false,
119
+ (v) => ($app.norefreshbar !== undefined || v) && ($app.norefreshbar = v)
120
+ }
121
+ />
117
122
  </div>
118
123
  <div>
119
124
  {policy.on_behalf_of ? `Author ${policy.on_behalf_of_email}` : ''}
@@ -0,0 +1 @@
1
+ export declare function computeSecretUrl(secretUrl: string): string;
@@ -0,0 +1,6 @@
1
+ import { base } from "../../../base";
2
+ import { workspaceStore } from "../../../stores";
3
+ import { get } from "svelte/store";
4
+ export function computeSecretUrl(secretUrl) {
5
+ return `${window.location.origin}${base}/public/${get(workspaceStore)}/${secretUrl}`;
6
+ }
@@ -124,4 +124,5 @@ export type GridShadow = {
124
124
  };
125
125
  export declare function areShadowsTheSame(shadow1: GridShadow | undefined, shadow2: GridShadow | undefined): boolean;
126
126
  export declare function animateTo(start: number, end: number, onUpdate: (newValue: number) => void): void;
127
+ export declare function emptyApp(): App;
127
128
  export {};
@@ -1,4 +1,4 @@
1
- import { ccomponents, components, getRecommendedDimensionsByComponent } from './component';
1
+ import { ccomponents, components, getRecommendedDimensionsByComponent, presets, processDimension } from './component';
2
2
  import { gridColumns } from '../gridUtils';
3
3
  import { allItems, processSubcomponents } from '../utils';
4
4
  import { get } from 'svelte/store';
@@ -7,6 +7,7 @@ import { sendUserToast } from '../../../toast';
7
7
  import { getNextId } from '../../flows/idUtils';
8
8
  import { enterpriseLicense } from '../../../stores';
9
9
  import gridHelp from '../svelte-grid/utils/helper';
10
+ import { DEFAULT_THEME } from './componentsPanel/themeUtils';
10
11
  export function allItemsWithLocation(grid, subgrids) {
11
12
  const gridItems = grid.map((x, i) => ({
12
13
  location: {
@@ -968,3 +969,31 @@ export function animateTo(start, end, onUpdate) {
968
969
  function easeInOut(t) {
969
970
  return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
970
971
  }
972
+ export function emptyApp() {
973
+ let value = {
974
+ grid: [],
975
+ fullscreen: false,
976
+ unusedInlineScripts: [],
977
+ hiddenInlineScripts: [],
978
+ theme: {
979
+ type: 'path',
980
+ path: DEFAULT_THEME
981
+ }
982
+ };
983
+ const preset = presets['topbarcomponent'];
984
+ const id = insertNewGridItem(value, appComponentFromType(preset.targetComponent, preset.configuration, undefined, {
985
+ customCss: {
986
+ container: {
987
+ class: '!p-0',
988
+ style: ''
989
+ }
990
+ }
991
+ }), undefined, undefined, 'topbar', { x: 0, y: 0 }, {
992
+ 3: processDimension(preset.dims, 3),
993
+ 12: processDimension(preset.dims, 12)
994
+ }, true, true);
995
+ setUpTopBarComponentContent(id, value);
996
+ value.hideLegacyTopBar = true;
997
+ value.mobileViewOnSmallerScreens = false;
998
+ return value;
999
+ }
@@ -1,5 +1,6 @@
1
1
  <script lang="ts">import { getContext } from 'svelte';
2
2
  import { handleEscape, handlePaste, handleArrowUp, handleCut, handleCopy, down, right, left } from './componentCallbacks.svelte';
3
+ import { isCurrentlyInTutorial } from '../../../../stores';
3
4
  const { history, movingcomponents, jobsDrawerOpen, runnableJobEditorPanel } = getContext('AppEditorContext');
4
5
  const { app, selectedComponent, focusedGrid, componentControl } = getContext('AppViewerContext');
5
6
  const ctx = {
@@ -17,7 +18,8 @@ function keydown(event) {
17
18
  let classes = event.target?.['className'];
18
19
  if ((typeof classes === 'string' && classes.includes('inputarea')) ||
19
20
  ['INPUT', 'TEXTAREA'].includes(document.activeElement?.tagName) ||
20
- $runnableJobEditorPanel.focused) {
21
+ $runnableJobEditorPanel.focused ||
22
+ isCurrentlyInTutorial.val) {
21
23
  return;
22
24
  }
23
25
  switch (event.key) {
@@ -879,7 +879,7 @@ export declare const components: {
879
879
  readonly tooltip: "The message of the toast to display";
880
880
  readonly fieldType: "text";
881
881
  readonly type: "static";
882
- readonly value: "An error occured";
882
+ readonly value: "An error occurred";
883
883
  readonly placeholder: "Hello there";
884
884
  readonly onDemandOnly: true;
885
885
  };
@@ -1210,7 +1210,7 @@ export declare const components: {
1210
1210
  readonly tooltip: "The message of the toast to display";
1211
1211
  readonly fieldType: "text";
1212
1212
  readonly type: "static";
1213
- readonly value: "An error occured";
1213
+ readonly value: "An error occurred";
1214
1214
  readonly placeholder: "Hello there";
1215
1215
  readonly onDemandOnly: true;
1216
1216
  };
@@ -1448,7 +1448,7 @@ export declare const components: {
1448
1448
  readonly tooltip: "The message of the toast to display";
1449
1449
  readonly fieldType: "text";
1450
1450
  readonly type: "static";
1451
- readonly value: "An error occured";
1451
+ readonly value: "An error occurred";
1452
1452
  readonly placeholder: "Hello there";
1453
1453
  readonly onDemandOnly: true;
1454
1454
  };
@@ -199,7 +199,7 @@ const onErrorClick = {
199
199
  tooltip: 'The message of the toast to display',
200
200
  fieldType: 'text',
201
201
  type: 'static',
202
- value: 'An error occured',
202
+ value: 'An error occurred',
203
203
  placeholder: 'Hello there',
204
204
  onDemandOnly: true
205
205
  },
@@ -35,7 +35,7 @@ $effect(() => {
35
35
 
36
36
  {#if render && object != undefined && Object.keys(object).length > 0}
37
37
  {#if $hasResult[componentId] || $search == ''}
38
- <div class="pl-2 !cursor-pointer" data-connection-button>
38
+ <div class="pl-2 !cursor-pointer component-output-viewer-{componentId}" data-connection-button>
39
39
  <ObjectViewer
40
40
  json={filtered}
41
41
  on:select
@@ -8,12 +8,12 @@ import { emptySchema } from '../../../../utils';
8
8
  import { defaultScriptLanguages, getScriptByPath, processLangs } from '../../../../scripts';
9
9
  import { Building, GitFork, Globe2 } from 'lucide-svelte';
10
10
  import { createEventDispatcher } from 'svelte';
11
- import { fly } from 'svelte/transition';
12
11
  import { defaultCode } from '../component';
13
12
  import WorkspaceScriptList from '../settingsPanel/mainInput/WorkspaceScriptList.svelte';
14
13
  import RunnableSelector from '../settingsPanel/mainInput/RunnableSelector.svelte';
15
- import { defaultScripts } from '../../../../stores';
14
+ import { defaultScripts, isCurrentlyInTutorial } from '../../../../stores';
16
15
  import DefaultScripts from '../../../DefaultScripts.svelte';
16
+ import { twMerge } from 'tailwind-merge';
17
17
  let { componentType = undefined, showScriptPicker = false, rawApps = false, unusedInlineScripts } = $props();
18
18
  let tab = $state('workspacescripts');
19
19
  let filter = $state('');
@@ -92,8 +92,10 @@ let langs = $derived(processLangs(undefined, $defaultScripts?.order ?? Object.ke
92
92
  </Drawer>
93
93
 
94
94
  <div
95
- class="flex flex-col px-4 gap-2 text-sm"
96
- in:fly={{ duration: 50 }}
95
+ class={twMerge(
96
+ 'flex flex-col px-4 gap-2 text-sm',
97
+ isCurrentlyInTutorial.val ? 'h-full overflow-y-clip' : ''
98
+ )}
97
99
  id="app-editor-empty-runnable"
98
100
  >
99
101
  <div class="mt-2 flex justify-between gap-4" id="app-editor-runnable-header">
@@ -30,6 +30,6 @@ declare const InlineScriptEditor: $$__sveltets_2_IsomorphicComponent<Props, {
30
30
  delete: CustomEvent<any>;
31
31
  } & {
32
32
  [evt: string]: CustomEvent<any>;
33
- }, {}, {}, "name" | "fields" | "editor" | "inlineScript">;
33
+ }, {}, {}, "name" | "fields" | "inlineScript" | "editor">;
34
34
  type InlineScriptEditor = InstanceType<typeof InlineScriptEditor>;
35
35
  export default InlineScriptEditor;
@@ -26,6 +26,6 @@ declare const InlineScriptEditorDrawer: $$__sveltets_2_IsomorphicComponent<Props
26
26
  [evt: string]: CustomEvent<any>;
27
27
  }, {}, {
28
28
  openDrawer: () => void;
29
- }, "isOpen" | "inlineScript">;
29
+ }, "inlineScript" | "isOpen">;
30
30
  type InlineScriptEditorDrawer = InstanceType<typeof InlineScriptEditorDrawer>;
31
31
  export default InlineScriptEditorDrawer;
@@ -26,6 +26,6 @@ declare const InlineScriptRunnableByPath: $$__sveltets_2_IsomorphicComponent<Pro
26
26
  fork: CustomEvent<any>;
27
27
  } & {
28
28
  [evt: string]: CustomEvent<any>;
29
- }, {}, {}, "fields" | "runnable">;
29
+ }, {}, {}, "runnable" | "fields">;
30
30
  type InlineScriptRunnableByPath = InstanceType<typeof InlineScriptRunnableByPath>;
31
31
  export default InlineScriptRunnableByPath;
@@ -77,7 +77,7 @@ function openConnection() {
77
77
  </script>
78
78
 
79
79
  {#if !(resourceOnly && (fieldType !== 'object' || !format?.startsWith('resource-')))}
80
- <div class={classNames('flex gap-1', 'flex-col')}>
80
+ <div class={classNames('flex gap-1 flex-col group')}>
81
81
  <div class="flex justify-between items-end">
82
82
  <div class="flex flex-row gap-4 items-center">
83
83
  <div class="flex items-center">
@@ -108,8 +108,15 @@ function openConnection() {
108
108
 
109
109
  <div class={classNames('flex gap-x-2 gap-y-1 justify-end items-center')}>
110
110
  {#if componentInput?.type && allowTypeChange !== false}
111
+ <ConnectionButton
112
+ {closeConnection}
113
+ {openConnection}
114
+ isOpen={!!$connectingInput.opened}
115
+ btnWrapperClasses={'h-6 w-8 opacity-0 group-hover:opacity-100 transition-opacity'}
116
+ id="schema-plug-{key}"
117
+ />
111
118
  <ToggleButtonGroup
112
- class="h-7"
119
+ class="h-6"
113
120
  bind:selected={componentInput.type}
114
121
  on:selected={(e) => {
115
122
  if (
@@ -131,38 +138,81 @@ function openConnection() {
131
138
  }}
132
139
  >
133
140
  {#snippet children({ item })}
134
- <ToggleButton value="static" icon={Pen} iconOnly tooltip="Static" {item} />
141
+ <ToggleButton
142
+ small
143
+ light
144
+ value="static"
145
+ icon={Pen}
146
+ iconOnly
147
+ tooltip="Static"
148
+ {item}
149
+ />
135
150
  {#if userInputEnabled}
136
- <ToggleButton value="user" icon={User} iconOnly tooltip="User Input" {item} />
151
+ <ToggleButton
152
+ small
153
+ light
154
+ value="user"
155
+ icon={User}
156
+ iconOnly
157
+ tooltip="User Input"
158
+ {item}
159
+ />
137
160
  {/if}
138
161
  {#if fileUpload}
139
- <ToggleButton value="upload" icon={Upload} iconOnly tooltip="Upload" {item} />
162
+ <ToggleButton
163
+ small
164
+ light
165
+ value="upload"
166
+ icon={Upload}
167
+ iconOnly
168
+ tooltip="Upload"
169
+ {item}
170
+ />
140
171
  {/if}
141
172
  {#if fileUploadS3}
142
173
  <ToggleButton
143
174
  value="uploadS3"
144
175
  icon={UploadCloud}
145
176
  iconOnly
177
+ light
178
+ small
146
179
  tooltip="Upload S3"
147
180
  {item}
148
181
  />
149
182
  {/if}
150
183
  {#if componentInput?.type === 'connected'}
151
- <ToggleButton value="connected" icon={Plug2} iconOnly tooltip="Connect" {item} />
184
+ <ToggleButton
185
+ light
186
+ value="connected"
187
+ icon={Plug2}
188
+ iconOnly
189
+ small
190
+ tooltip="Connect"
191
+ {item}
192
+ />
152
193
  {/if}
153
194
  {#if componentInput?.type === 'eval'}
154
195
  <ToggleButton
155
196
  value="eval"
156
197
  icon={FunctionSquare}
157
198
  iconOnly
199
+ light
200
+ small
158
201
  tooltip="Eval Legacy"
159
202
  {item}
160
203
  />
161
204
  {/if}
162
- <ToggleButton value="evalv2" icon={FunctionSquare} iconOnly tooltip="Eval" {item} />
205
+ <ToggleButton
206
+ value="evalv2"
207
+ light
208
+ icon={FunctionSquare}
209
+ iconOnly
210
+ small
211
+ tooltip="Eval"
212
+ {item}
213
+ />
163
214
  {/snippet}
164
215
  </ToggleButtonGroup>
165
- <ConnectionButton {closeConnection} {openConnection} isOpen={!!$connectingInput.opened} />
166
216
  {/if}
167
217
  </div>
168
218
  </div>
@@ -353,7 +353,7 @@ $effect(() => {
353
353
 
354
354
  <Select
355
355
  bind:value={operation}
356
- items={['all', ...Object.keys(operations)].map((r) => ({ value: r, label: r }))}
356
+ items={['all', ...Object.values(operations)].map((r) => ({ value: r, label: r }))}
357
357
  inputClass="dark:!bg-gray-700"
358
358
  RightIcon={ChevronDown}
359
359
  />
@@ -0,0 +1,39 @@
1
+ <script lang="ts">import { twMerge } from 'tailwind-merge';
2
+ let { children, innerClass, class: className = '', horizontal, vertical, outerDivProps } = $props();
3
+ let innerContainer = $state(null);
4
+ let outerContainer = $state(null);
5
+ let width = $state(null);
6
+ let height = $state(null);
7
+ let style = $derived.by(() => {
8
+ let s = 'transition: width 0.2s, height 0.2s; overflow: clip;';
9
+ if (width !== null)
10
+ s += `width: ${width}px;`;
11
+ if (height !== null)
12
+ s += `height: ${height}px;`;
13
+ return s;
14
+ });
15
+ $effect(() => {
16
+ if (!innerContainer || !outerContainer)
17
+ return;
18
+ let observer = new ResizeObserver((entries) => {
19
+ for (const entry of entries) {
20
+ if (horizontal)
21
+ width = entry.contentRect.width;
22
+ if (vertical)
23
+ height = entry.contentRect.height;
24
+ }
25
+ });
26
+ observer.observe(innerContainer);
27
+ return () => {
28
+ if (innerContainer)
29
+ observer.unobserve(innerContainer);
30
+ observer.disconnect();
31
+ };
32
+ });
33
+ </script>
34
+
35
+ <div bind:this={outerContainer} {...outerDivProps} class={className} {style}>
36
+ <div class={twMerge('absolute', innerClass)} bind:this={innerContainer}>
37
+ {@render children()}
38
+ </div>
39
+ </div>
@@ -0,0 +1,12 @@
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ type Props = {
3
+ children: import('svelte').Snippet;
4
+ innerClass?: string;
5
+ class?: string;
6
+ horizontal?: boolean;
7
+ vertical?: boolean;
8
+ outerDivProps?: HTMLAttributes<HTMLDivElement>;
9
+ };
10
+ declare const ResizeTransitionWrapper: import("svelte").Component<Props, {}, "">;
11
+ type ResizeTransitionWrapper = ReturnType<typeof ResizeTransitionWrapper>;
12
+ export default ResizeTransitionWrapper;
@@ -0,0 +1,29 @@
1
+ <script lang="ts">import { Loader2 } from 'lucide-svelte';
2
+ import { twMerge } from 'tailwind-merge';
3
+ let { count, small = true, alwaysVisible = false } = $props();
4
+ </script>
5
+
6
+ {#if count === undefined || count > 0 || alwaysVisible}
7
+ <div
8
+ class={twMerge(
9
+ // Base styles that apply in all cases
10
+ 'absolute z-10 rounded-full overflow-hidden',
11
+ 'flex center-center text-primary-inverse font-mono',
12
+ 'bg-tertiary/50 group-hover:bg-primary transition-all duration-[100ms]',
13
+ alwaysVisible || count === undefined ? 'bg-primary' : '',
14
+
15
+ // Size variants based on small prop
16
+ small ? '-right-[3px] -top-[3px] h-3 w-3 text-[8px]' : '-right-1.5 -top-1.5 h-4 w-4 text-xs',
17
+
18
+ // Special case for always visible
19
+ alwaysVisible && small ? 'h-3 w-3 text-[8px] -right-0.5 -top-0.5' : '',
20
+ alwaysVisible && !small ? 'h-4 w-4 text-xs -right-1 -top-1' : ''
21
+ )}
22
+ >
23
+ {#if count === undefined}
24
+ <Loader2 class="animate-spin text-2xs" />
25
+ {:else}
26
+ <p>{count}</p>
27
+ {/if}
28
+ </div>
29
+ {/if}
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ count: number | undefined;
3
+ small?: boolean;
4
+ alwaysVisible?: boolean;
5
+ }
6
+ declare const CountBadge: import("svelte").Component<Props, {}, "">;
7
+ type CountBadge = ReturnType<typeof CountBadge>;
8
+ export default CountBadge;
@@ -227,6 +227,7 @@ $effect(() => {
227
227
  on:open={() => dispatch('dropdownOpen', true)}
228
228
  on:close={() => dispatch('dropdownOpen', false)}
229
229
  bind:open={dropdownOpen}
230
+ enableFlyTransition
230
231
  >
231
232
  {#snippet buttonReplacement()}
232
233
  <div
@@ -3,9 +3,12 @@ import { pointerDownOutside } from '../../../utils';
3
3
  import AnimatedButton from './AnimatedButton.svelte';
4
4
  import Button from './Button.svelte';
5
5
  import { getContext } from 'svelte';
6
+ import { twMerge } from 'tailwind-merge';
6
7
  export let isOpen = false;
7
8
  export let openConnection;
8
9
  export let closeConnection;
10
+ export let btnWrapperClasses = '';
11
+ export let id = undefined;
9
12
  let selected = false;
10
13
  const { panzoomActive } = getContext('AppViewerContext');
11
14
  async function getConnectionButtonElements() {
@@ -67,7 +70,9 @@ $: !isOpen && (selected = false);
67
70
  color="light"
68
71
  title="Connect"
69
72
  on:click={() => handleConnect(true)}
70
- id="schema-plug"
73
+ {id}
74
+ wrapperClasses={twMerge(btnWrapperClasses, selected ? 'opacity-100' : '')}
75
+ btnClasses="p-0"
71
76
  >
72
77
  <Plug size={14} />
73
78
  </Button>
@@ -15,6 +15,8 @@ declare const ConnectionButton: $$__sveltets_2_IsomorphicComponent<{
15
15
  isOpen?: boolean;
16
16
  openConnection: () => void;
17
17
  closeConnection: () => void;
18
+ btnWrapperClasses?: string;
19
+ id?: string | undefined;
18
20
  }, {
19
21
  [evt: string]: CustomEvent<any>;
20
22
  }, {}, {}, string>;
@@ -1,7 +1,8 @@
1
- <script lang="ts">import { Button } from '..';
1
+ <script lang="ts">import { Button, ButtonType } from '..';
2
2
  import { RefreshCw } from 'lucide-svelte';
3
3
  import Popover from '../../Popover.svelte';
4
- let { loading } = $props();
4
+ import { twMerge } from 'tailwind-merge';
5
+ let { loading, size = 'xs2', light = false } = $props();
5
6
  let buttonHover = $state(false);
6
7
  </script>
7
8
 
@@ -10,11 +11,14 @@ let buttonHover = $state(false);
10
11
  on:mouseenter={() => (buttonHover = true)}
11
12
  on:mouseleave={() => (buttonHover = false)}
12
13
  color="light"
13
- size="xs2"
14
+ {size}
14
15
  variant="border"
15
16
  on:click
16
17
  >
17
- <RefreshCw class={loading ? 'animate-spin ' : ''} size="14" />
18
+ <RefreshCw
19
+ class={twMerge(loading ? 'animate-spin ' : '', light ? 'text-secondary' : '')}
20
+ size="14"
21
+ />
18
22
  </Button>
19
23
  {#snippet text()}
20
24
  {#if loading}
@@ -1,5 +1,8 @@
1
+ import { ButtonType } from '..';
1
2
  interface Props {
2
3
  loading: boolean;
4
+ size?: ButtonType.Size;
5
+ light?: boolean;
3
6
  }
4
7
  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> {
5
8
  new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
@@ -22,7 +22,7 @@ export let placement = 'top-end';
22
22
  <button
23
23
  title="Open calendar picker"
24
24
  class={twMerge(
25
- 'absolute bottom-1 right-2 top-1 py-1 min-w-min !px-2 items-center text-primary bg-surface border rounded center-center hover:bg-surface-hover transition-all cursor-pointer',
25
+ 'absolute bottom-1 right-2 top-1 py-1 min-w-min !px-2.5 items-center text-primary bg-surface-secondary rounded center-center hover:bg-surface-hover transition-all cursor-pointer',
26
26
  $$props.class
27
27
  )}
28
28
  aria-label="Open calendar picker"
@@ -10,7 +10,7 @@ export let accept = '*';
10
10
  export let multiple = false;
11
11
  export let convertTo = undefined;
12
12
  export let hideIcon = false;
13
- export let iconSize = 36;
13
+ export let iconSize = 24;
14
14
  export let returnFileNames = false;
15
15
  export let submittedText = undefined;
16
16
  export let defaultFile = undefined;
@@ -164,10 +164,11 @@ export function clearFiles() {
164
164
 
165
165
  <button
166
166
  class={twMerge(
167
- `relative center-center flex-col text-center font-medium text-tertiary
168
- border border-dashed border-gray-400 hover:border-blue-500
167
+ `relative center-center flex flex-col gap-x-2 gap-y-1 justify-center items-center flex-wrap text-center font-normal text-hint text-xs rounded-md
168
+ bg-surface-secondary
169
+ border border-dashed border-nord-400 dark:border-nord-300 hover:border-nord-900 dark:hover:border-nord-900
169
170
  focus-within:border-blue-300 hover:bg-blue-50 dark:hover:bg-frost-900
170
- duration-200 rounded-component p-1`,
171
+ duration-200 px-1 py-8`,
171
172
  c
172
173
  )}
173
174
  on:dragover={handleDragOver}
@@ -186,7 +187,7 @@ export function clearFiles() {
186
187
  {disabled}
187
188
  >
188
189
  {#if !hideIcon && !files}
189
- <FileUp size={iconSize} class="mb-2" />
190
+ <FileUp size={iconSize} />
190
191
  {/if}
191
192
  {#if files}
192
193
  <div class="w-full max-h-full overflow-auto px-6">
@@ -235,7 +236,7 @@ export function clearFiles() {
235
236
  />
236
237
  {#if defaultFile && (!Array.isArray(defaultFile) || defaultFile.length > 0)}
237
238
  <div class="w-full border-dashed border-t-2 text-2xs pt-1 text-tertiary mt-2">
238
- Default file: <span class="text-blue-500">{defaultFile}</span>
239
+ Default file: <span class="text-nord-900">{defaultFile}</span>
239
240
  </div>
240
241
  {/if}
241
242
  </button>