windmill-components 1.434.1 → 1.444.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 (285) hide show
  1. package/package/components/ArgInput.svelte +12 -16
  2. package/package/components/ArgInput.svelte.d.ts +1 -0
  3. package/package/components/AssignableTags.svelte +3 -1
  4. package/package/components/AssignableTags.svelte.d.ts +1 -0
  5. package/package/components/AuthSettings.svelte +248 -0
  6. package/package/components/AuthSettings.svelte.d.ts +19 -0
  7. package/package/components/AutoscalingConfigEditor.svelte +2 -2
  8. package/package/components/CronInput.svelte +2 -2
  9. package/package/components/DeployWorkspace.svelte +1 -1
  10. package/package/components/Description.svelte +9 -0
  11. package/package/components/Description.svelte.d.ts +18 -0
  12. package/package/components/Dev.svelte +18 -3
  13. package/package/components/DisplayResult.svelte +7 -4
  14. package/package/components/DisplayResult.svelte.d.ts +1 -0
  15. package/package/components/DropdownV2.svelte +2 -1
  16. package/package/components/DropdownV2.svelte.d.ts +1 -0
  17. package/package/components/EditableSchemaForm.svelte +2 -2
  18. package/package/components/Editor.svelte +9 -6
  19. package/package/components/Editor.svelte.d.ts +4 -2
  20. package/package/components/EditorBar.svelte +51 -6
  21. package/package/components/ErrorOrRecoveryHandler.svelte +4 -3
  22. package/package/components/ExecutionDuration.svelte +2 -1
  23. package/package/components/FieldHeader.svelte +9 -1
  24. package/package/components/FieldHeader.svelte.d.ts +1 -0
  25. package/package/components/FlowBuilder.svelte +16 -3
  26. package/package/components/FlowGraphViewer.svelte +2 -0
  27. package/package/components/FlowPreviewContent.svelte +6 -15
  28. package/package/components/FlowStatusViewerInner.svelte +14 -10
  29. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/InputTransformSchemaForm.svelte +1 -1
  32. package/package/components/InstanceSetting.svelte +774 -0
  33. package/package/components/InstanceSetting.svelte.d.ts +27 -0
  34. package/package/components/InstanceSettings.svelte +68 -1005
  35. package/package/components/InstanceSettings.svelte.d.ts +0 -4
  36. package/package/components/Label.svelte +16 -6
  37. package/package/components/Label.svelte.d.ts +3 -0
  38. package/package/components/Login.svelte +17 -9
  39. package/package/components/OAuthSetting.svelte +4 -3
  40. package/package/components/OauthExtraParams.svelte +1 -1
  41. package/package/components/OauthScopes.svelte +2 -2
  42. package/package/components/ObjectStoreConfigSettings.svelte +141 -128
  43. package/package/components/QueueMetricsDrawer.svelte +5 -5
  44. package/package/components/ResourceEditor.svelte +4 -0
  45. package/package/components/ResourceEditor.svelte.d.ts +1 -0
  46. package/package/components/ResourceEditorDrawer.svelte +15 -3
  47. package/package/components/ResourceEditorDrawer.svelte.d.ts +2 -2
  48. package/package/components/ResourcePicker.svelte +16 -5
  49. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  50. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  51. package/package/components/RunPageSchedules.svelte +15 -10
  52. package/package/components/SavedInputs.svelte +1 -1
  53. package/package/components/ScheduleEditorInner.svelte +58 -27
  54. package/package/components/SchemaForm.svelte +7 -5
  55. package/package/components/SchemaForm.svelte.d.ts +1 -0
  56. package/package/components/ScriptBuilder.svelte +58 -5
  57. package/package/components/ScriptEditor.svelte +78 -40
  58. package/package/components/ScriptEditor.svelte.d.ts +17 -2
  59. package/package/components/ScriptPicker.svelte +41 -34
  60. package/package/components/ScriptPicker.svelte.d.ts +1 -0
  61. package/package/components/ScriptVersionHistory.svelte +1 -1
  62. package/package/components/Section.svelte +38 -35
  63. package/package/components/Section.svelte.d.ts +2 -0
  64. package/package/components/ServiceLogsInner.svelte +1 -1
  65. package/package/components/SimpleEditor.svelte +2 -0
  66. package/package/components/Subsection.svelte +52 -0
  67. package/package/components/Subsection.svelte.d.ts +27 -0
  68. package/package/components/SuperadminSettings.svelte +23 -13
  69. package/package/components/TemplateEditor.svelte +4 -3
  70. package/package/components/TestConnection.svelte +5 -0
  71. package/package/components/TestJobLoader.svelte +2 -1
  72. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  73. package/package/components/Toggle.svelte +2 -4
  74. package/package/components/UserSettings.svelte +1 -1
  75. package/package/components/WorkerGroup.svelte +4 -4
  76. package/package/components/WorkerTagPicker.svelte +4 -2
  77. package/package/components/WorkerTagPicker.svelte.d.ts +1 -0
  78. package/package/components/WorkerTagSelect.svelte +2 -0
  79. package/package/components/WorkerTagSelect.svelte.d.ts +1 -0
  80. package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -1
  81. package/package/components/apps/components/display/dbtable/utils.js +26 -1
  82. package/package/components/apps/components/helpers/RunnableComponent.svelte +8 -2
  83. package/package/components/apps/components/inputs/AppDateInput.svelte +7 -1
  84. package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -1
  85. package/package/components/apps/editor/AppEditor.svelte +5 -34
  86. package/package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
  87. package/package/components/apps/editor/AppEditorBottomPanel.svelte +4 -7
  88. package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +1 -3
  89. package/package/components/apps/editor/AppEditorHeader.svelte +148 -58
  90. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  91. package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
  92. package/package/components/apps/editor/RunnableJobPanel.svelte +6 -2
  93. package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +1 -0
  94. package/package/components/apps/editor/appUtils.d.ts +1 -0
  95. package/package/components/apps/editor/appUtils.js +17 -0
  96. package/package/components/apps/editor/component/components.d.ts +82 -81
  97. package/package/components/apps/editor/component/components.js +4 -3
  98. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +1 -1
  99. package/package/components/apps/editor/componentsPanel/GroupList.svelte +12 -2
  100. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +1 -1
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
  102. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +53 -56
  103. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +1 -1
  104. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +3 -2
  105. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +1 -1
  106. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +16 -9
  107. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +1 -0
  108. package/package/components/apps/inputType.d.ts +2 -2
  109. package/package/components/apps/types.d.ts +2 -0
  110. package/package/components/common/alert/ConnectionIndicator.svelte +30 -0
  111. package/package/components/common/alert/ConnectionIndicator.svelte.d.ts +20 -0
  112. package/package/components/common/alert/Notification.svelte +15 -0
  113. package/package/components/common/alert/Notification.svelte.d.ts +17 -0
  114. package/package/components/common/button/AnimatedButton.svelte +1 -1
  115. package/package/components/common/button/RefreshButton.svelte +30 -0
  116. package/package/components/common/button/RefreshButton.svelte.d.ts +18 -0
  117. package/package/components/common/fileDownload/FileDownload.svelte +4 -3
  118. package/package/components/common/fileDownload/FileDownload.svelte.d.ts +1 -0
  119. package/package/components/common/fileUpload/FileUpload.svelte +3 -3
  120. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  121. package/package/components/common/layout/List.svelte +35 -0
  122. package/package/components/common/layout/List.svelte.d.ts +21 -0
  123. package/package/components/common/layout/ListElement.svelte +3 -0
  124. package/package/components/common/layout/ListElement.svelte.d.ts +27 -0
  125. package/package/components/common/menu/MenuV2.svelte +3 -2
  126. package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
  127. package/package/components/common/modal/Modal.svelte +6 -4
  128. package/package/components/common/modal/Modal.svelte.d.ts +1 -0
  129. package/package/components/common/modal/Modal2.svelte +101 -0
  130. package/package/components/common/modal/Modal2.svelte.d.ts +28 -0
  131. package/package/components/common/popup/Popup.svelte +5 -1
  132. package/package/components/common/popup/Popup.svelte.d.ts +2 -0
  133. package/package/components/common/toggleButton-v2/ToggleButton.svelte +1 -1
  134. package/package/components/copilot/FlowCopilotStatus.svelte +1 -1
  135. package/package/components/details/ClipboardPanel.svelte +12 -2
  136. package/package/components/details/ClipboardPanel.svelte.d.ts +2 -0
  137. package/package/components/details/CopyableCodeBlock.svelte +24 -0
  138. package/package/components/details/CopyableCodeBlock.svelte.d.ts +19 -0
  139. package/package/components/details/DetailPageLayout.svelte +3 -1
  140. package/package/components/details/EmailTriggerConfigSection.svelte +119 -0
  141. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +38 -0
  142. package/package/components/details/EmailTriggerPanel.svelte +27 -74
  143. package/package/components/details/EmailTriggerPanel.svelte.d.ts +7 -1
  144. package/package/components/flows/FlowEditor.svelte +1 -1
  145. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  146. package/package/components/flows/FlowHistoryInner.svelte +1 -1
  147. package/package/components/flows/content/BranchPredicateEditor.svelte +1 -1
  148. package/package/components/flows/content/FlowEditorPanel.svelte +30 -1
  149. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -0
  150. package/package/components/flows/content/FlowInput.svelte +2 -15
  151. package/package/components/flows/content/FlowInputs.svelte +1 -1
  152. package/package/components/flows/content/FlowInputsQuick.svelte +2 -2
  153. package/package/components/flows/content/FlowModuleComponent.svelte +9 -5
  154. package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
  155. package/package/components/flows/content/FlowModuleHeader.svelte +4 -1
  156. package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
  157. package/package/components/flows/content/FlowPathViewer.svelte +3 -1
  158. package/package/components/flows/content/FlowRetries.svelte +32 -5
  159. package/package/components/flows/content/FlowSettings.svelte +56 -48
  160. package/package/components/flows/flowStateUtils.d.ts +10 -1
  161. package/package/components/flows/flowStateUtils.js +23 -0
  162. package/package/components/flows/map/FlowModuleSchemaMap.svelte +9 -19
  163. package/package/components/flows/map/InsertModuleButton.svelte +3 -3
  164. package/package/components/flows/map/VirtualItem.svelte +29 -1
  165. package/package/components/flows/map/VirtualItem.svelte.d.ts +2 -0
  166. package/package/components/flows/pickers/TopLevelNode.svelte +2 -2
  167. package/package/components/flows/previousResults.js +8 -2
  168. package/package/components/flows/types.d.ts +1 -0
  169. package/package/components/graph/FlowGraphV2.svelte +5 -1
  170. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
  171. package/package/components/graph/renderers/nodes/InputNode.svelte +2 -0
  172. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +2 -0
  173. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +1 -1
  174. package/package/components/icons/CSharpIcon.svelte +14 -0
  175. package/package/components/icons/CSharpIcon.svelte.d.ts +25 -0
  176. package/package/components/icons/GitIcon.svelte +5 -2
  177. package/package/components/icons/XeroIcon.svelte +24 -0
  178. package/package/components/icons/XeroIcon.svelte.d.ts +17 -0
  179. package/package/components/icons/index.d.ts +3 -1
  180. package/package/components/icons/index.js +4 -2
  181. package/package/components/instanceSettings.d.ts +3 -1
  182. package/package/components/instanceSettings.js +77 -69
  183. package/package/components/meltComponents/Popover.svelte +82 -0
  184. package/package/components/meltComponents/Popover.svelte.d.ts +21 -0
  185. package/package/components/propertyPicker/PropPicker.svelte +5 -3
  186. package/package/components/runs/JobLoader.svelte +5 -2
  187. package/package/components/runs/JobPreview.svelte +5 -5
  188. package/package/components/runs/RunRow.svelte +3 -4
  189. package/package/components/runs/RunsFilter.svelte +4 -4
  190. package/package/components/schema/EditableSchemaDrawer.svelte +4 -4
  191. package/package/components/schema/PropertyEditor.svelte +1 -1
  192. package/package/components/schema/SchemaFormDND.svelte +2 -0
  193. package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
  194. package/package/components/scriptEditor/LogPanel.svelte +176 -164
  195. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  196. package/package/components/search/GlobalSearchModal.svelte +3 -3
  197. package/package/components/sidebar/CriticalAlertModal.svelte +155 -9
  198. package/package/components/sidebar/CriticalAlertModalInner.svelte +65 -212
  199. package/package/components/sidebar/CriticalAlertModalInner.svelte.d.ts +2 -4
  200. package/package/components/sidebar/CriticalAlertTable.svelte +142 -0
  201. package/package/components/sidebar/CriticalAlertTable.svelte.d.ts +25 -0
  202. package/package/components/sidebar/OperatorMenu.svelte +30 -8
  203. package/package/components/sidebar/SideBarNotification.svelte +3 -6
  204. package/package/components/sidebar/SidebarContent.svelte +5 -5
  205. package/package/components/sidebar/WorkspaceMenu.svelte +9 -5
  206. package/package/components/sidebar/WorkspaceMenu.svelte.d.ts +1 -0
  207. package/package/components/sidebar/changelogs.js +82 -17
  208. package/package/components/splitPanes/SplitPanesOrColumnOnMobile.svelte +21 -21
  209. package/package/components/table/AutoDataTable.svelte +1 -1
  210. package/package/components/table/Cell.svelte +5 -3
  211. package/package/components/table/Cell.svelte.d.ts +1 -0
  212. package/package/components/table/DataTable.svelte +65 -58
  213. package/package/components/table/DataTable.svelte.d.ts +2 -0
  214. package/package/components/table/Head.svelte +1 -1
  215. package/package/components/table/Row.svelte +3 -1
  216. package/package/components/table/Row.svelte.d.ts +1 -0
  217. package/package/components/toast.js +3 -1
  218. package/package/components/triggers/CaptureButton.svelte +77 -0
  219. package/package/components/triggers/CaptureButton.svelte.d.ts +16 -0
  220. package/package/components/triggers/CaptureIcon.svelte +17 -0
  221. package/package/components/triggers/CaptureIcon.svelte.d.ts +23 -0
  222. package/package/components/triggers/CaptureSection.svelte +76 -0
  223. package/package/components/triggers/CaptureSection.svelte.d.ts +42 -0
  224. package/package/components/triggers/CaptureTable.svelte +224 -0
  225. package/package/components/triggers/CaptureTable.svelte.d.ts +43 -0
  226. package/package/components/triggers/CaptureWrapper.svelte +237 -0
  227. package/package/components/triggers/CaptureWrapper.svelte.d.ts +35 -0
  228. package/package/components/triggers/KafkaTriggerEditor.svelte +2 -2
  229. package/package/components/triggers/KafkaTriggerEditor.svelte.d.ts +2 -2
  230. package/package/components/triggers/KafkaTriggerEditorInner.svelte +47 -119
  231. package/package/components/triggers/KafkaTriggerEditorInner.svelte.d.ts +2 -2
  232. package/package/components/triggers/KafkaTriggersConfigSection.svelte +215 -0
  233. package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +36 -0
  234. package/package/components/triggers/KafkaTriggersPanel.svelte +73 -45
  235. package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +6 -0
  236. package/package/components/triggers/RouteEditor.svelte +2 -2
  237. package/package/components/triggers/RouteEditor.svelte.d.ts +2 -2
  238. package/package/components/triggers/RouteEditorConfigSection.svelte +162 -0
  239. package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +43 -0
  240. package/package/components/triggers/RouteEditorInner.svelte +98 -163
  241. package/package/components/triggers/RouteEditorInner.svelte.d.ts +2 -2
  242. package/package/components/triggers/RoutesPanel.svelte +69 -54
  243. package/package/components/triggers/RoutesPanel.svelte.d.ts +5 -0
  244. package/package/components/triggers/ScheduledPollPanel.svelte +5 -9
  245. package/package/components/triggers/TriggersEditor.svelte +119 -89
  246. package/package/components/triggers/TriggersEditor.svelte.d.ts +7 -0
  247. package/package/components/triggers/TriggersEditorSection.svelte +109 -0
  248. package/package/components/triggers/TriggersEditorSection.svelte.d.ts +29 -0
  249. package/package/components/triggers/TriggersWrapper.svelte +60 -0
  250. package/package/components/triggers/TriggersWrapper.svelte.d.ts +21 -0
  251. package/package/components/triggers/WebhooksConfigSection.svelte +382 -0
  252. package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +39 -0
  253. package/package/components/triggers/WebhooksPanel.svelte +32 -331
  254. package/package/components/triggers/WebhooksPanel.svelte.d.ts +7 -1
  255. package/package/components/triggers/WebsocketEditorConfigSection.svelte +176 -0
  256. package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +37 -0
  257. package/package/components/triggers/WebsocketTriggerEditor.svelte +2 -2
  258. package/package/components/triggers/WebsocketTriggerEditor.svelte.d.ts +2 -2
  259. package/package/components/triggers/WebsocketTriggerEditorInner.svelte +29 -150
  260. package/package/components/triggers/WebsocketTriggerEditorInner.svelte.d.ts +2 -2
  261. package/package/components/triggers/WebsocketTriggersPanel.svelte +70 -45
  262. package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +6 -0
  263. package/package/components/triggers.d.ts +6 -2
  264. package/package/components/triggers.js +16 -0
  265. package/package/components/wizards/AgGridWizard.svelte +4 -4
  266. package/package/editorUtils.d.ts +2 -0
  267. package/package/editorUtils.js +6 -3
  268. package/package/gen/core/OpenAPI.js +1 -1
  269. package/package/gen/schemas.gen.d.ts +17 -8
  270. package/package/gen/schemas.gen.js +17 -8
  271. package/package/gen/services.gen.d.ts +55 -5
  272. package/package/gen/services.gen.js +108 -5
  273. package/package/gen/types.gen.d.ts +180 -13
  274. package/package/hubPaths.json +6 -3
  275. package/package/infer.js +9 -0
  276. package/package/script_helpers.d.ts +5 -0
  277. package/package/script_helpers.js +68 -8
  278. package/package/scripts.d.ts +1 -1
  279. package/package/scripts.js +5 -1
  280. package/package/stores.d.ts +1 -0
  281. package/package/utils.d.ts +3 -1
  282. package/package/utils.js +20 -4
  283. package/package.json +11 -8
  284. package/package/components/flows/content/CapturePayload.svelte +0 -114
  285. package/package/components/flows/content/CapturePayload.svelte.d.ts +0 -17
@@ -3174,7 +3174,8 @@ See date-fns format for more information. By default, it is 'dd.MM.yyyy HH:mm'
3174
3174
  mysql: 'MySQL',
3175
3175
  ms_sql_server: 'MS SQL Server',
3176
3176
  snowflake: 'Snowflake',
3177
- bigquery: 'BigQuery'
3177
+ bigquery: 'BigQuery',
3178
+ snowflake_oauth: 'Snowflake OAuth'
3178
3179
  },
3179
3180
  configuration: {
3180
3181
  postgresql: {
@@ -3406,7 +3407,7 @@ See date-fns format for more information. By default, it is 'dd.MM.yyyy HH:mm'
3406
3407
  value: 'sm',
3407
3408
  fieldType: 'select',
3408
3409
  selectOptions: [
3409
- { value: 'xs', label: 'Extra Small' },
3410
+ { value: 'xs', label: 'Extra small' },
3410
3411
  { value: 'sm', label: 'Small' }
3411
3412
  ]
3412
3413
  },
@@ -3576,7 +3577,7 @@ See date-fns format for more information. By default, it is 'dd.MM.yyyy HH:mm'
3576
3577
  }
3577
3578
  },
3578
3579
  recomputeallcomponent: {
3579
- name: 'Recompute all',
3580
+ name: 'Recompute All',
3580
3581
  icon: RefreshCw,
3581
3582
  documentationLink: `${documentationBaseUrl}/recompute_all`,
3582
3583
  dims: '4:1-6:1',
@@ -250,7 +250,7 @@ let ccDrawer;
250
250
  </div>
251
251
  </div>
252
252
  </ListItem>
253
- <ListItem title={'Custom Components'} tooltip={'Create components in React or vanilla JS'}>
253
+ <ListItem title={'Custom Components'} tooltip={'Create components in React or Vanilla JS'}>
254
254
  <div class="flex flex-wrap gap-3 py-2">
255
255
  {#if customComponents}
256
256
  {#each customComponents as cc (cc.path)}
@@ -33,8 +33,18 @@ async function addGroup(nameField) {
33
33
  name: 'app_group'
34
34
  });
35
35
  let subgrids = getSubgrids(item);
36
+ let i = groups.length;
37
+ let prefix = `f/app_groups/group_`;
38
+ while (true) {
39
+ if (groups.find((g) => g.path.startsWith(prefix + i))) {
40
+ i++;
41
+ }
42
+ else {
43
+ break;
44
+ }
45
+ }
36
46
  const group = {
37
- path: 'f/app_groups/group_' + groups.length,
47
+ path: prefix + i,
38
48
  value: {
39
49
  value: { item, subgrids },
40
50
  name: nameField
@@ -45,7 +55,7 @@ async function addGroup(nameField) {
45
55
  sendUserToast('Group created: ' + message);
46
56
  }
47
57
  catch (e) {
48
- sendUserToast('Group creation failed. You need write privilege on folder app_groups: ' + e.body ?? e, true);
58
+ sendUserToast('Group creation failed. You need write privilege on folder app_groups: ' + (e.body ?? e), true);
49
59
  }
50
60
  getGroups();
51
61
  nameField = '';
@@ -94,7 +94,7 @@ let hasState = false;
94
94
  {/each}
95
95
  </div>
96
96
  <div>
97
- <span class="text-xs font-semibold text-secondary p-2">Background runnables</span>
97
+ <span class="text-xs font-semibold text-secondary p-2">Background Runnables</span>
98
98
  <BackgroundScriptsOutput />
99
99
  </div>
100
100
  </div>
@@ -35,7 +35,7 @@ export function openDrawer() {
35
35
  />
36
36
  {/if}
37
37
  <svelte:fragment slot="actions">
38
- <Button size="xs" startIcon={{ icon: Save }} disabled>Automatically Synced</Button>
38
+ <Button size="xs" startIcon={{ icon: Save }} disabled>Automatically synced</Button>
39
39
  </svelte:fragment>
40
40
  </DrawerContent>
41
41
  </Drawer>
@@ -1,5 +1,4 @@
1
1
  <script>import { getContext } from 'svelte';
2
- import SplitPanesWrapper from '../../../splitPanes/SplitPanesWrapper.svelte';
3
2
  import { Pane, Splitpanes } from 'svelte-splitpanes';
4
3
  import InlineScriptsPanelList from './InlineScriptsPanelList.svelte';
5
4
  import InlineScriptEditor from './InlineScriptEditor.svelte';
@@ -87,60 +86,58 @@ async function createScriptFromInlineScript(id, runnable) {
87
86
  export let width = undefined;
88
87
  </script>
89
88
 
90
- <SplitPanesWrapper>
91
- <Splitpanes
92
- class={twMerge('!overflow-visible')}
93
- style={width !== undefined ? `width:${width}px;` : ''}
94
- >
95
- <Pane size={25}>
96
- <InlineScriptsPanelList on:hidePanel />
97
- </Pane>
98
- <Pane size={75}>
99
- {#if !$selectedComponentInEditor}
100
- <div class="text-sm text-secondary text-center py-8 px-2">
101
- Select a script on the left panel
102
- </div>
103
- {:else if gridItem}
104
- {#key gridItem?.id}
105
- <InlineScriptsPanelWithTable
89
+ <Splitpanes
90
+ class={twMerge('!overflow-visible')}
91
+ style={width !== undefined ? `width:${width}px;` : 'width: 100%;'}
92
+ >
93
+ <Pane size={25}>
94
+ <InlineScriptsPanelList on:hidePanel />
95
+ </Pane>
96
+ <Pane size={75}>
97
+ {#if !$selectedComponentInEditor}
98
+ <div class="text-sm text-secondary text-center py-8 px-2">
99
+ Select a script on the left panel
100
+ </div>
101
+ {:else if gridItem}
102
+ {#key gridItem?.id}
103
+ <InlineScriptsPanelWithTable
104
+ on:createScriptFromInlineScript={(e) => {
105
+ createScriptFromInlineScript(gridItem?.id ?? 'unknown', e.detail)
106
+ }}
107
+ bind:gridItem
108
+ />
109
+ {/key}
110
+ {:else if unusedInlineScript > -1 && $app.unusedInlineScripts?.[unusedInlineScript]}
111
+ {#key unusedInlineScript}
112
+ <InlineScriptEditor
113
+ on:createScriptFromInlineScript={() =>
114
+ sendUserToast('Cannot save to workspace unused scripts', true)}
115
+ id={`unused-${unusedInlineScript}`}
116
+ bind:name={$app.unusedInlineScripts[unusedInlineScript].name}
117
+ bind:inlineScript={$app.unusedInlineScripts[unusedInlineScript].inlineScript}
118
+ on:delete={() => {
119
+ // remove the script from the array at the index
120
+ $app.unusedInlineScripts.splice(unusedInlineScript, 1)
121
+ $app.unusedInlineScripts = [...$app.unusedInlineScripts]
122
+ }}
123
+ />
124
+ {/key}
125
+ {:else if hiddenInlineScript > -1}
126
+ {#key hiddenInlineScript}
127
+ {#if $app.hiddenInlineScripts?.[hiddenInlineScript]}
128
+ <InlineScriptHiddenRunnable
106
129
  on:createScriptFromInlineScript={(e) => {
107
- createScriptFromInlineScript(gridItem?.id ?? 'unknown', e.detail)
130
+ createScriptFromInlineScript(BG_PREFIX + hiddenInlineScript, e.detail)
108
131
  }}
109
- bind:gridItem
110
- />
111
- {/key}
112
- {:else if unusedInlineScript > -1 && $app.unusedInlineScripts?.[unusedInlineScript]}
113
- {#key unusedInlineScript}
114
- <InlineScriptEditor
115
- on:createScriptFromInlineScript={() =>
116
- sendUserToast('Cannot save to workspace unused scripts', true)}
117
- id={`unused-${unusedInlineScript}`}
118
- bind:name={$app.unusedInlineScripts[unusedInlineScript].name}
119
- bind:inlineScript={$app.unusedInlineScripts[unusedInlineScript].inlineScript}
120
- on:delete={() => {
121
- // remove the script from the array at the index
122
- $app.unusedInlineScripts.splice(unusedInlineScript, 1)
123
- $app.unusedInlineScripts = [...$app.unusedInlineScripts]
124
- }}
125
- />
126
- {/key}
127
- {:else if hiddenInlineScript > -1}
128
- {#key hiddenInlineScript}
129
- {#if $app.hiddenInlineScripts?.[hiddenInlineScript]}
130
- <InlineScriptHiddenRunnable
131
- on:createScriptFromInlineScript={(e) => {
132
- createScriptFromInlineScript(BG_PREFIX + hiddenInlineScript, e.detail)
133
- }}
134
- transformer={$selectedComponentInEditor?.endsWith('_transformer')}
135
- on:delete={() => deleteBackgroundScript(hiddenInlineScript)}
136
- id={BG_PREFIX + hiddenInlineScript}
137
- bind:runnable={$app.hiddenInlineScripts[hiddenInlineScript]}
138
- />{/if}{/key}
139
- {:else}
140
- <div class="text-sm text-tertiary text-center py-8 px-2">
141
- No script found at id {$selectedComponentInEditor}
142
- </div>
143
- {/if}
144
- </Pane>
145
- </Splitpanes>
146
- </SplitPanesWrapper>
132
+ transformer={$selectedComponentInEditor?.endsWith('_transformer')}
133
+ on:delete={() => deleteBackgroundScript(hiddenInlineScript)}
134
+ id={BG_PREFIX + hiddenInlineScript}
135
+ bind:runnable={$app.hiddenInlineScripts[hiddenInlineScript]}
136
+ />{/if}{/key}
137
+ {:else}
138
+ <div class="text-sm text-tertiary text-center py-8 px-2">
139
+ No script found at id {$selectedComponentInEditor}
140
+ </div>
141
+ {/if}
142
+ </Pane>
143
+ </Splitpanes>
@@ -171,7 +171,7 @@ const dispatch = createEventDispatcher();
171
171
  <div>
172
172
  <div class="w-full flex justify-between items-center mb-1">
173
173
  <div class="text-xs text-secondary font-semibold truncate">
174
- Background runnables
174
+ Background Runnables
175
175
  <Tooltip
176
176
  documentationLink="https://www.windmill.dev/docs/apps/app-runnable-panel#background-runnables"
177
177
  >
@@ -120,8 +120,9 @@ let focus = false;
120
120
  </div>
121
121
  {/if}
122
122
  <button
123
- class="border bg-surface absolute top-0.5 right-2 p-0.5"
124
- on:click={() => (fullscreen = true)}><Maximize2 size={12} /></button
123
+ title="Open in drawer"
124
+ class="border bg-surface absolute hover:text-primary top-0 right-2 p-0.5 text-secondary"
125
+ on:click={() => (fullscreen = true)}><Maximize2 size={10} /></button
125
126
  >
126
127
  {#if focus}
127
128
  <div class="relative w-full">
@@ -67,7 +67,7 @@ $: componentInput && onchange?.();
67
67
  <IconSelectInput bind:value={componentInput.value} />
68
68
  {:else if fieldType === 'tab-select'}
69
69
  <TabSelectInput bind:componentInput />
70
- {:else if fieldType === 'resource' && subFieldType && ['mysql', 'postgres', 'ms_sql_server', 'snowflake', 'bigquery'].includes(subFieldType)}
70
+ {:else if fieldType === 'resource' && subFieldType && ['mysql', 'postgres', 'ms_sql_server', 'snowflake', 'snowflake_oauth', 'bigquery'].includes(subFieldType)}
71
71
  <ResourcePicker
72
72
  initialValue={componentInput.value?.split('$res:')?.[1] || ''}
73
73
  on:change={(e) => {
@@ -11,10 +11,15 @@ import { loadSchema } from '../../../../../infer';
11
11
  export let defaultUserInput = false;
12
12
  export let hideCreateScript = false;
13
13
  export let onlyFlow = false;
14
- let tab = onlyFlow ? 'workspaceflows' : 'inlinescripts';
14
+ export let rawApps = false;
15
+ const { app, workspace } = getContext('AppViewerContext');
16
+ let tab = onlyFlow
17
+ ? 'workspaceflows'
18
+ : $app?.unusedInlineScripts?.length > 0
19
+ ? 'inlinescripts'
20
+ : 'workspacescripts';
15
21
  let filter = '';
16
22
  let picker;
17
- const { app, workspace } = getContext('AppViewerContext');
18
23
  const dispatch = createEventDispatcher();
19
24
  async function loadSchemaFromTriggerable(path, runType) {
20
25
  const schema = await loadSchema(workspace, path, runType);
@@ -107,15 +112,17 @@ function createScript() {
107
112
  <div class="max-w-6xl">
108
113
  <Tabs bind:selected={tab}>
109
114
  {#if !onlyFlow}
110
- <Tab size="sm" value="inlinescripts">
111
- <div class="flex gap-2 items-center my-1">
112
- <Building size={18} strokeWidth={1.5} />
113
- Detached Inline Scripts
114
- </div>
115
- </Tab>
115
+ {#if !rawApps}
116
+ <Tab size="sm" value="inlinescripts">
117
+ <div class="flex gap-2 items-center my-1">
118
+ <Building size={18} strokeWidth={1.5} />
119
+ Detached Inline Scripts
120
+ </div>
121
+ </Tab>
122
+ {/if}
116
123
  <Tab size="sm" value="workspacescripts">
117
124
  <div class="flex gap-2 items-center my-1">
118
- <Building size={18} strokeWidth={1.5}/>
125
+ <Building size={18} strokeWidth={1.5} />
119
126
  Workspace Scripts
120
127
  </div>
121
128
  </Tab>
@@ -5,6 +5,7 @@ declare const __propDef: {
5
5
  defaultUserInput?: boolean | undefined;
6
6
  hideCreateScript?: boolean | undefined;
7
7
  onlyFlow?: boolean | undefined;
8
+ rawApps?: boolean | undefined;
8
9
  };
9
10
  events: {
10
11
  pick: CustomEvent<{
@@ -1,7 +1,7 @@
1
1
  import type { ReadFileAs } from '../common/fileInput/model';
2
2
  import type { DecisionTreeNode, TypedComponent } from './editor/component';
3
3
  import type { InlineScript } from './types';
4
- export type InputType = 'integer' | 'text' | 'textarea' | 'template' | 'number' | 'boolean' | 'select' | 'icon-select' | 'color' | 'date' | 'time' | 'datetime' | 'object' | 'array' | 'any' | 'labeledresource' | 'labeledselect' | 'tab-select' | 'schema' | 'ag-grid' | 'table-column' | 'plotly' | 'chartjs' | 'DecisionTreeNode' | 'ag-chart' | 'resource' | 'db-explorer' | 'db-table' | 's3' | 'number-tuple' | 'postgres' | 'mysql' | 'ms_sql_server' | 'snowflake' | 'bigquery' | 'app-path';
4
+ export type InputType = 'integer' | 'text' | 'textarea' | 'template' | 'number' | 'boolean' | 'select' | 'icon-select' | 'color' | 'date' | 'time' | 'datetime' | 'object' | 'array' | 'any' | 'labeledresource' | 'labeledselect' | 'tab-select' | 'schema' | 'ag-grid' | 'table-column' | 'plotly' | 'chartjs' | 'DecisionTreeNode' | 'ag-chart' | 'resource' | 'db-explorer' | 'db-table' | 's3' | 'number-tuple' | 'postgres' | 'mysql' | 'ms_sql_server' | 'snowflake' | 'snowflake_oauth' | 'bigquery' | 'app-path';
5
5
  export type InputConnection = {
6
6
  componentType?: TypedComponent['type'];
7
7
  componentId: string;
@@ -109,7 +109,7 @@ export type StaticOptions = {
109
109
  label: string;
110
110
  }[];
111
111
  };
112
- export type AppInput = AppInputSpec<'text', string> | AppInputSpec<'textarea', string> | AppInputSpec<'template', string> | AppInputSpec<'number', number> | AppInputSpec<'boolean', boolean> | AppInputSpec<'date', string> | AppInputSpec<'time', string> | AppInputSpec<'datetime', string> | AppInputSpec<'any', any> | AppInputSpec<'object', Record<string | number, any>> | AppInputSpec<'object', string> | (AppInputSpec<'select', string, 'db-table'> & StaticOptions) | AppInputSpec<'icon-select', string> | AppInputSpec<'color', string> | AppInputSpec<'array', string[], 'text'> | AppInputSpec<'array', string[], 'textarea'> | AppInputSpec<'array', number[], 'number'> | AppInputSpec<'array', boolean[], 'boolean'> | AppInputSpec<'array', string[], 'date'> | AppInputSpec<'array', string[], 'time'> | AppInputSpec<'array', string[], 'datetime'> | AppInputSpec<'array', object[], 'object'> | (AppInputSpec<'array', string[], 'select'> & StaticOptions) | AppInputSpec<'array', object[], 'labeledresource'> | AppInputSpec<'array', (object | string)[], 'labeledselect'> | AppInputSpec<'labeledselect', object> | AppInputSpec<'labeledresource', object> | AppInputSpec<'array', object[], 'tab-select'> | AppInputSpec<'schema', object> | AppInputSpec<'array', object[], 'ag-grid'> | AppInputSpec<'array', object[], 'db-explorer'> | AppInputSpec<'array', object[], 'table-column'> | AppInputSpec<'array', object[], 'plotly'> | AppInputSpec<'array', object[], 'chartjs'> | AppInputSpec<'array', DecisionTreeNode, 'DecisionTreeNode'> | AppInputSpec<'array', object[], 'ag-chart'> | AppInputSpec<'resource', string> | AppInputSpec<'resource', string, 's3'> | AppInputSpec<'resource', string, 'postgres'> | AppInputSpec<'resource', string, 'mysql'> | AppInputSpec<'resource', string, 'ms_sql_server'> | AppInputSpec<'resource', string, 'snowflake'> | AppInputSpec<'resource', string, 'bigquery'> | AppInputSpec<'array', object[], 'number-tuple'> | AppInputSpec<'app-path', string>;
112
+ export type AppInput = AppInputSpec<'text', string> | AppInputSpec<'textarea', string> | AppInputSpec<'template', string> | AppInputSpec<'number', number> | AppInputSpec<'boolean', boolean> | AppInputSpec<'date', string> | AppInputSpec<'time', string> | AppInputSpec<'datetime', string> | AppInputSpec<'any', any> | AppInputSpec<'object', Record<string | number, any>> | AppInputSpec<'object', string> | (AppInputSpec<'select', string, 'db-table'> & StaticOptions) | AppInputSpec<'icon-select', string> | AppInputSpec<'color', string> | AppInputSpec<'array', string[], 'text'> | AppInputSpec<'array', string[], 'textarea'> | AppInputSpec<'array', number[], 'number'> | AppInputSpec<'array', boolean[], 'boolean'> | AppInputSpec<'array', string[], 'date'> | AppInputSpec<'array', string[], 'time'> | AppInputSpec<'array', string[], 'datetime'> | AppInputSpec<'array', object[], 'object'> | (AppInputSpec<'array', string[], 'select'> & StaticOptions) | AppInputSpec<'array', object[], 'labeledresource'> | AppInputSpec<'array', (object | string)[], 'labeledselect'> | AppInputSpec<'labeledselect', object> | AppInputSpec<'labeledresource', object> | AppInputSpec<'array', object[], 'tab-select'> | AppInputSpec<'schema', object> | AppInputSpec<'array', object[], 'ag-grid'> | AppInputSpec<'array', object[], 'db-explorer'> | AppInputSpec<'array', object[], 'table-column'> | AppInputSpec<'array', object[], 'plotly'> | AppInputSpec<'array', object[], 'chartjs'> | AppInputSpec<'array', DecisionTreeNode, 'DecisionTreeNode'> | AppInputSpec<'array', object[], 'ag-chart'> | AppInputSpec<'resource', string> | AppInputSpec<'resource', string, 's3'> | AppInputSpec<'resource', string, 'postgres'> | AppInputSpec<'resource', string, 'mysql'> | AppInputSpec<'resource', string, 'ms_sql_server'> | AppInputSpec<'resource', string, 'snowflake'> | AppInputSpec<'resource', string, 'snowflake_oauth'> | AppInputSpec<'resource', string, 'bigquery'> | AppInputSpec<'array', object[], 'number-tuple'> | AppInputSpec<'app-path', string>;
113
113
  export type RowAppInput = Extract<AppInput, {
114
114
  type: 'row';
115
115
  }>;
@@ -73,6 +73,7 @@ export type InlineScript = {
73
73
  id: string;
74
74
  key: string;
75
75
  }[];
76
+ id?: number;
76
77
  };
77
78
  export type AppCssItemName = 'viewer' | 'grid' | AppComponent['type'];
78
79
  export type HiddenRunnable = {
@@ -109,6 +110,7 @@ export type App = {
109
110
  theme: AppTheme | undefined;
110
111
  hideLegacyTopBar?: boolean | undefined;
111
112
  mobileViewOnSmallerScreens?: boolean | undefined;
113
+ version?: number;
112
114
  };
113
115
  export type ConnectingInput = {
114
116
  opened: boolean;
@@ -0,0 +1,30 @@
1
+ <script context="module">export {};
2
+ </script>
3
+
4
+ <script>import Popover from '../../Popover.svelte';
5
+ import { Circle } from 'lucide-svelte';
6
+ export let connectionInfo = undefined;
7
+ </script>
8
+
9
+ {#if connectionInfo}
10
+ <div class="center-center">
11
+ {#if connectionInfo.connected}
12
+ <Popover notClickable>
13
+ <span class="h-4 w-4 center-center">
14
+ <Circle class="text-green-600 relative inline-flex fill-current" size={12} />
15
+ </span>
16
+
17
+ <div slot="text"> {connectionInfo.message ?? ''} </div>
18
+ </Popover>
19
+ {:else}
20
+ <Popover notClickable>
21
+ <span class="h-4 w-4 center-center">
22
+ <Circle class="text-red-600 animate-ping absolute inline-flex fill-current" size={12} />
23
+ <Circle class="text-red-600 relative inline-flex fill-current" size={12} />
24
+ </span>
25
+
26
+ <div slot="text"> {connectionInfo.message ?? ''} </div>
27
+ </Popover>
28
+ {/if}
29
+ </div>
30
+ {/if}
@@ -0,0 +1,20 @@
1
+ import { SvelteComponent } from "svelte";
2
+ export type ConnectionInfo = {
3
+ connected: boolean;
4
+ message?: string;
5
+ };
6
+ declare const __propDef: {
7
+ props: {
8
+ connectionInfo?: ConnectionInfo | undefined;
9
+ };
10
+ events: {
11
+ [evt: string]: CustomEvent<any>;
12
+ };
13
+ slots: {};
14
+ };
15
+ export type ConnectionIndicatorProps = typeof __propDef.props;
16
+ export type ConnectionIndicatorEvents = typeof __propDef.events;
17
+ export type ConnectionIndicatorSlots = typeof __propDef.slots;
18
+ export default class ConnectionIndicator extends SvelteComponent<ConnectionIndicatorProps, ConnectionIndicatorEvents, ConnectionIndicatorSlots> {
19
+ }
20
+ export {};
@@ -0,0 +1,15 @@
1
+ <script>export let notificationCount = 0;
2
+ export let notificationLimit = undefined;
3
+ </script>
4
+
5
+ {#if notificationCount > 0}
6
+ <div
7
+ class="bg-red-500 text-white text-[0.6rem] rounded-md w-5 h-5 flex items-center justify-center"
8
+ >
9
+ {#if notificationLimit && notificationCount > notificationLimit}
10
+ {`${notificationLimit}+`}
11
+ {:else}
12
+ {notificationCount}
13
+ {/if}
14
+ </div>
15
+ {/if}
@@ -0,0 +1,17 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ notificationCount?: number | undefined;
5
+ notificationLimit?: number | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {};
11
+ };
12
+ export type NotificationProps = typeof __propDef.props;
13
+ export type NotificationEvents = typeof __propDef.events;
14
+ export type NotificationSlots = typeof __propDef.slots;
15
+ export default class Notification extends SvelteComponent<NotificationProps, NotificationEvents, NotificationSlots> {
16
+ }
17
+ export {};
@@ -39,7 +39,7 @@ $: gradientString = `from 0deg, ${gradientColors[darkMode ? 'dark' : 'light'].jo
39
39
  background: inherit;
40
40
  z-index: 1;
41
41
  overflow: hidden;
42
- padding: var(--margin-width, 2px);
42
+ padding: var(--margin-width, 1px);
43
43
  }
44
44
 
45
45
  /* Circular gradient */
@@ -0,0 +1,30 @@
1
+ <script>import { Button } from '..';
2
+ import { RefreshCw } from 'lucide-svelte';
3
+ import Popover from '../../Popover.svelte';
4
+ export let loading;
5
+ let buttonHover = false;
6
+ </script>
7
+
8
+ <Popover>
9
+ <Button
10
+ on:mouseenter={() => (buttonHover = true)}
11
+ on:mouseleave={() => (buttonHover = false)}
12
+ color="light"
13
+ size="xs2"
14
+ variant="border"
15
+ on:click
16
+ >
17
+ <RefreshCw class={loading ? 'animate-spin ' : ''} size="14" />
18
+ </Button>
19
+ <svelte:fragment slot="text">
20
+ {#if loading}
21
+ {#if buttonHover}
22
+ Stop Refreshing
23
+ {:else}
24
+ Refreshing...
25
+ {/if}
26
+ {:else}
27
+ Refresh
28
+ {/if}
29
+ </svelte:fragment>
30
+ </Popover>
@@ -0,0 +1,18 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ loading: boolean;
5
+ };
6
+ events: {
7
+ click: CustomEvent<any>;
8
+ } & {
9
+ [evt: string]: CustomEvent<any>;
10
+ };
11
+ slots: {};
12
+ };
13
+ export type RefreshButtonProps = typeof __propDef.props;
14
+ export type RefreshButtonEvents = typeof __propDef.events;
15
+ export type RefreshButtonSlots = typeof __propDef.slots;
16
+ export default class RefreshButton extends SvelteComponent<RefreshButtonProps, RefreshButtonEvents, RefreshButtonSlots> {
17
+ }
18
+ export {};
@@ -3,6 +3,7 @@ import { Download } from 'lucide-svelte';
3
3
  import { base } from '../../../base';
4
4
  export let s3object;
5
5
  export let workspaceId = undefined;
6
+ export let appPath = undefined;
6
7
  </script>
7
8
 
8
9
  <a
@@ -10,9 +11,9 @@ export let workspaceId = undefined;
10
11
  border border-dashed border-gray-400 hover:border-blue-500
11
12
  focus-within:border-blue-500 hover:bg-blue-50 dark:hover:bg-frost-900 focus-within:bg-blue-50
12
13
  duration-200 rounded-lg p-1 gap-2"
13
- href={`${base}/api/w/${workspaceId ?? $workspaceStore}/job_helpers/download_s3_file?file_key=${
14
- s3object?.s3
15
- }${s3object?.storage ? `&storage=${s3object.storage}` : ''}`}
14
+ href={`${base}/api/w/${workspaceId ?? $workspaceStore}${
15
+ appPath ? `/apps_u/download_s3_file/${appPath}` : '/job_helpers/download_s3_file'
16
+ }?file_key=${s3object?.s3}${s3object?.storage ? `&storage=${s3object.storage}` : ''}`}
16
17
  download={s3object?.s3.split('/').pop() ?? 'unnamed_download.file'}
17
18
  >
18
19
  <Download />
@@ -3,6 +3,7 @@ declare const __propDef: {
3
3
  props: {
4
4
  s3object: any;
5
5
  workspaceId?: string | undefined;
6
+ appPath?: string | undefined;
6
7
  };
7
8
  events: {
8
9
  [evt: string]: CustomEvent<any>;
@@ -248,7 +248,7 @@ onDestroy(() => {
248
248
  icon: RefreshCcw
249
249
  }}
250
250
  >
251
- Retry Upload
251
+ Retry upload
252
252
  </Button>
253
253
  <Button
254
254
  size="xs2"
@@ -287,7 +287,7 @@ onDestroy(() => {
287
287
  icon: Ban
288
288
  }}
289
289
  >
290
- Cancel Upload
290
+ Cancel upload
291
291
  </Button>
292
292
  {/if}
293
293
 
@@ -362,7 +362,7 @@ onDestroy(() => {
362
362
  icon: Ban
363
363
  }}
364
364
  >
365
- Cancel All Uploads
365
+ Cancel all uploads
366
366
  </Button>
367
367
  {/if}
368
368
  <Button
@@ -15,6 +15,7 @@ import DenoIcon from '../../icons/DenoIcon.svelte';
15
15
  import PHPIcon from '../../icons/PHPIcon.svelte';
16
16
  import RustIcon from '../../icons/RustIcon.svelte';
17
17
  import AnsibleIcon from '../../icons/AnsibleIcon.svelte';
18
+ import CSharpIcon from '../../icons/CSharpIcon.svelte';
18
19
  export let lang;
19
20
  export let width = 30;
20
21
  export let height = 30;
@@ -36,7 +37,8 @@ const languageLabel = {
36
37
  bun: 'TypeScript',
37
38
  php: 'PHP',
38
39
  rust: 'Rust',
39
- ansible: 'Ansible Playbook'
40
+ ansible: 'Ansible Playbook',
41
+ csharp: 'C#'
40
42
  };
41
43
  const langToComponent = {
42
44
  go: GoIcon,
@@ -60,7 +62,8 @@ const langToComponent = {
60
62
  graphql: GraphqlIcon,
61
63
  php: PHPIcon,
62
64
  rust: RustIcon,
63
- ansible: AnsibleIcon
65
+ ansible: AnsibleIcon,
66
+ csharp: CSharpIcon
64
67
  };
65
68
  let subIconScale = width === 30 ? 0.6 : 0.8;
66
69
  </script>
@@ -0,0 +1,35 @@
1
+ <script>export let horizontal = false;
2
+ export let gap = 'sm';
3
+ export let justify = 'start';
4
+ export let wFull = true;
5
+ const gapMap = {
6
+ none: '',
7
+ sm: 'gap-2',
8
+ md: 'gap-4',
9
+ lg: 'gap-8'
10
+ };
11
+ const justifyMap = {
12
+ start: 'justify-start',
13
+ center: 'justify-center',
14
+ end: 'justify-end',
15
+ between: 'justify-between'
16
+ };
17
+ </script>
18
+
19
+ {#if horizontal}
20
+ <div
21
+ class="flex flex-row h-full {wFull ? 'w-full' : ''} {gapMap[gap]} items-center {justifyMap[
22
+ justify
23
+ ]}"
24
+ >
25
+ <slot />
26
+ </div>
27
+ {:else}
28
+ <div
29
+ class="flex flex-col h-full {wFull ? 'w-full' : ''} {gapMap[gap]} items-center {justifyMap[
30
+ justify
31
+ ]}"
32
+ >
33
+ <slot />
34
+ </div>
35
+ {/if}
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ horizontal?: boolean | undefined;
5
+ gap?: "none" | "sm" | "md" | "lg" | undefined;
6
+ justify?: "center" | "start" | "end" | "between" | undefined;
7
+ wFull?: boolean | undefined;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {
13
+ default: {};
14
+ };
15
+ };
16
+ export type ListProps = typeof __propDef.props;
17
+ export type ListEvents = typeof __propDef.events;
18
+ export type ListSlots = typeof __propDef.slots;
19
+ export default class List extends SvelteComponent<ListProps, ListEvents, ListSlots> {
20
+ }
21
+ export {};
@@ -0,0 +1,3 @@
1
+ <div class="w-full flex-grow bg-blue-300">
2
+ <slot />
3
+ </div>