@morscherlab/mint-sdk 1.2.0-beta.8 → 1.2.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 (402) hide show
  1. package/README.md +60 -0
  2. package/dist/{ExperimentPopover-CfOdh5Rm.js → ExperimentPopover-CJdNlCZb.js} +24 -15
  3. package/dist/ExperimentPopover-CJdNlCZb.js.map +1 -0
  4. package/dist/{ExperimentSelectorModal-DvIagrxY.js → ExperimentSelectorModal-DCXmwKNS.js} +5 -5
  5. package/dist/ExperimentSelectorModal-DCXmwKNS.js.map +1 -0
  6. package/dist/{SettingsModal-W3TYfnP9.js → SettingsModal-BYR20I4c.js} +5 -5
  7. package/dist/SettingsModal-BYR20I4c.js.map +1 -0
  8. package/dist/{EmptyState-NBqf2_8z.js → Skeleton-BAF3CKY7.js} +111 -93
  9. package/dist/Skeleton-BAF3CKY7.js.map +1 -0
  10. package/dist/__tests__/components/DataStates.test.d.ts +1 -0
  11. package/dist/__tests__/components/ExperimentTimeline.test.d.ts +1 -0
  12. package/dist/__tests__/components/FileBrowserModal.test.d.ts +1 -0
  13. package/dist/__tests__/components/FilePicker.state.test.d.ts +1 -0
  14. package/dist/__tests__/components/FilePicker.test.d.ts +1 -0
  15. package/dist/__tests__/components/PlotlyChart.test.d.ts +1 -0
  16. package/dist/__tests__/components/iconButtonIconSizing.test.d.ts +1 -0
  17. package/dist/__tests__/composables/useFileBrowser.test.d.ts +1 -0
  18. package/dist/__tests__/composables/useListReorder.test.d.ts +1 -0
  19. package/dist/__tests__/composables/usePlatformFilePickerAdapter.test.d.ts +1 -0
  20. package/dist/__tests__/styles/cssTokens.test.d.ts +1 -0
  21. package/dist/apiErrors.d.ts +26 -0
  22. package/dist/components/ActionMenu.vue.d.ts +1 -1
  23. package/dist/components/AppPluginSwitcher.vue.d.ts +2 -0
  24. package/dist/components/AuditTrail.vue.d.ts +13 -0
  25. package/dist/components/BaseInput.vue.d.ts +1 -1
  26. package/dist/components/BaseSelect.vue.d.ts +1 -1
  27. package/dist/components/BaseTextarea.vue.d.ts +1 -1
  28. package/dist/components/BatchProgressList.vue.d.ts +17 -0
  29. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
  30. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +2 -2
  31. package/dist/components/ConcentrationInput.vue.d.ts +1 -1
  32. package/dist/components/DataFrame.vue.d.ts +14 -2
  33. package/dist/components/DatePicker.vue.d.ts +2 -2
  34. package/dist/components/DateTimePicker.vue.d.ts +3 -1
  35. package/dist/components/ExperimentDataViewer.vue.d.ts +26 -1
  36. package/dist/components/ExperimentPopover.vue.d.ts +1 -0
  37. package/dist/components/ExperimentTimeline.vue.d.ts +29 -1
  38. package/dist/components/FileBrowserModal.vue.d.ts +99 -0
  39. package/dist/components/FilePicker.vue.d.ts +32 -0
  40. package/dist/components/FileUploader.vue.d.ts +5 -2
  41. package/dist/components/FormulaInput.vue.d.ts +1 -1
  42. package/dist/components/GeneratedPlotlyResult.vue.d.ts +1 -3
  43. package/dist/components/LcmsSequenceTable.vue.d.ts +29 -1
  44. package/dist/components/MobileSupportGate.vue.d.ts +1 -1
  45. package/dist/components/MoleculeInput.vue.d.ts +1 -1
  46. package/dist/components/NumberInput.vue.d.ts +1 -1
  47. package/dist/components/PlotlyChart.vue.d.ts +59 -0
  48. package/dist/components/ProgressBar.vue.d.ts +1 -1
  49. package/dist/components/ProtocolStepEditor.vue.d.ts +1 -0
  50. package/dist/components/ReagentList.vue.d.ts +29 -1
  51. package/dist/components/ResourceCard.vue.d.ts +1 -1
  52. package/dist/components/SampleHierarchyTree.vue.d.ts +29 -1
  53. package/dist/components/SampleSelector.drag.d.ts +13 -0
  54. package/dist/components/SampleSelector.tree.d.ts +2 -0
  55. package/dist/components/SampleSelector.vue.d.ts +34 -1
  56. package/dist/components/ScheduleCalendar.vue.d.ts +20 -0
  57. package/dist/components/SecretInput.vue.d.ts +1 -1
  58. package/dist/components/SequenceInput.vue.d.ts +1 -1
  59. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -0
  60. package/dist/components/StatusIndicator.vue.d.ts +1 -1
  61. package/dist/components/TagsInput.vue.d.ts +1 -1
  62. package/dist/components/TimePicker.vue.d.ts +2 -1
  63. package/dist/components/TimeRangeInput.vue.d.ts +1 -1
  64. package/dist/components/UnitInput.vue.d.ts +1 -1
  65. package/dist/components/WellPlate.geometry.d.ts +15 -0
  66. package/dist/components/WellPlate.interaction.d.ts +13 -0
  67. package/dist/components/WellPlate.vue.d.ts +30 -1
  68. package/dist/components/fileBrowserPresentation.d.ts +10 -0
  69. package/dist/components/index.d.ts +4 -0
  70. package/dist/components/index.js +8 -8
  71. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -0
  72. package/dist/components/internal/DataStateInternal.vue.d.ts +43 -0
  73. package/dist/components/internal/FileBrowserDialogInternal.vue.d.ts +34 -0
  74. package/dist/components/internal/FileBrowserListingInternal.vue.d.ts +25 -0
  75. package/dist/components/internal/FileBrowserToolbarInternal.vue.d.ts +26 -0
  76. package/dist/components/internal/FilePickerPreviewInternal.vue.d.ts +18 -0
  77. package/dist/components/internal/FilePickerTreeInternal.vue.d.ts +31 -0
  78. package/dist/{components-B80gV0P6.js → components-DIum5hkx.js} +5415 -2753
  79. package/dist/components-DIum5hkx.js.map +1 -0
  80. package/dist/composables/controlSchemaTypes.d.ts +34 -0
  81. package/dist/composables/filePicker/localFiles.d.ts +3 -0
  82. package/dist/composables/filePicker/usePickerNavigation.d.ts +96 -0
  83. package/dist/composables/filePicker/usePickerSelection.d.ts +31 -0
  84. package/dist/composables/filePicker/validation.d.ts +5 -0
  85. package/dist/composables/index.d.ts +3 -0
  86. package/dist/composables/index.js +10 -10
  87. package/dist/composables/useApi.d.ts +14 -7
  88. package/dist/composables/useDropdownState.d.ts +18 -2
  89. package/dist/composables/useEventStream.d.ts +9 -0
  90. package/dist/composables/useFileBrowser.d.ts +55 -0
  91. package/dist/composables/useFilePicker.d.ts +189 -0
  92. package/dist/composables/useListReorder.d.ts +90 -0
  93. package/dist/composables/useMenuKeyboard.d.ts +2 -2
  94. package/dist/composables/usePlatformFilePickerAdapter.d.ts +11 -0
  95. package/dist/composables/usePluginConfig.d.ts +3 -1
  96. package/dist/composables/useRequestSyncState.d.ts +42 -2
  97. package/dist/composables/useScheduleDrag.d.ts +1 -0
  98. package/dist/{composables-C8mmD5ta.js → composables-mFXsTA4g.js} +307 -74
  99. package/dist/composables-mFXsTA4g.js.map +1 -0
  100. package/dist/{useApi-CDBq6z23.js → errors-BLuqMee5.js} +178 -16
  101. package/dist/errors-BLuqMee5.js.map +1 -0
  102. package/dist/{experiment-Y9Iz7KYi.js → experiment-CVDRAnqp.js} +3 -8
  103. package/dist/experiment-CVDRAnqp.js.map +1 -0
  104. package/dist/{experiment-utils-DV3DrvE_.js → experiment-utils-CV2Wza3z.js} +1 -1
  105. package/dist/experiment-utils-CV2Wza3z.js.map +1 -0
  106. package/dist/index.d.ts +1 -0
  107. package/dist/index.js +15 -15
  108. package/dist/install.js +2 -7
  109. package/dist/install.js.map +1 -1
  110. package/dist/permissions.d.ts +42 -1
  111. package/dist/permissions.js +20 -10
  112. package/dist/permissions.js.map +1 -1
  113. package/dist/stores/index.d.ts +1 -1
  114. package/dist/stores/index.js +3 -3
  115. package/dist/stores/settings.d.ts +31 -1
  116. package/dist/styles.css +15162 -32475
  117. package/dist/templates/index.js +2 -4
  118. package/dist/{templates-CK72aKO1.js → templates-CmGfmBRA.js} +291 -85
  119. package/dist/templates-CmGfmBRA.js.map +1 -0
  120. package/dist/types/fileBrowserTypes.d.ts +77 -0
  121. package/dist/types/filePicker.d.ts +77 -0
  122. package/dist/types/index.d.ts +2 -0
  123. package/dist/{useControlSchema-_OVhavKq.js → useControlSchema-DldpxNOP.js} +234 -1121
  124. package/dist/useControlSchema-DldpxNOP.js.map +1 -0
  125. package/dist/{useDropdownState-D5G4UvWd.js → useDropdownState-C7hRiVQf.js} +22 -6
  126. package/dist/useDropdownState-C7hRiVQf.js.map +1 -0
  127. package/dist/{useExperimentSelector-DSEckf_g.js → useExperimentSelector-CEcIaueJ.js} +4 -4
  128. package/dist/{useExperimentSelector-DSEckf_g.js.map → useExperimentSelector-CEcIaueJ.js.map} +1 -1
  129. package/dist/{useFormBuilder-Bd714C7y.js → useFormBuilder-z5L_dUIy.js} +2 -2
  130. package/dist/{useFormBuilder-Bd714C7y.js.map → useFormBuilder-z5L_dUIy.js.map} +1 -1
  131. package/dist/utils/color.d.ts +13 -0
  132. package/dist/utils/errors.d.ts +9 -0
  133. package/dist/{useProtocolTemplates-Dq5Pzwyd.js → validation-uwoJGEb6.js} +231 -158
  134. package/dist/validation-uwoJGEb6.js.map +1 -0
  135. package/package.json +1 -1
  136. package/src/__tests__/apiErrors.test.ts +81 -0
  137. package/src/__tests__/components/ActionMenu.test.ts +94 -0
  138. package/src/__tests__/components/DataFrame.test.ts +183 -11
  139. package/src/__tests__/components/DataStates.test.ts +176 -0
  140. package/src/__tests__/components/DatePicker.test.ts +76 -0
  141. package/src/__tests__/components/DateTimePicker.test.ts +36 -0
  142. package/src/__tests__/components/ExperimentPopover.test.ts +30 -0
  143. package/src/__tests__/components/ExperimentTimeline.test.ts +63 -0
  144. package/src/__tests__/components/FileBrowserModal.test.ts +460 -0
  145. package/src/__tests__/components/FilePicker.state.test.ts +287 -0
  146. package/src/__tests__/components/FilePicker.test.ts +487 -0
  147. package/src/__tests__/components/GeneratedPlotlyResult.test.ts +52 -5
  148. package/src/__tests__/components/GroupAssigner.test.ts +53 -0
  149. package/src/__tests__/components/LcmsSequenceTable.test.ts +22 -0
  150. package/src/__tests__/components/PlotlyChart.test.ts +305 -0
  151. package/src/__tests__/components/RackEditor.test.ts +35 -0
  152. package/src/__tests__/components/ReagentList.test.ts +64 -2
  153. package/src/__tests__/components/RetiredStyles.test.ts +31 -0
  154. package/src/__tests__/components/SampleSelector.drag.test.ts +51 -1
  155. package/src/__tests__/components/ScheduleCalendar.test.ts +63 -0
  156. package/src/__tests__/components/SegmentedControl.test.ts +107 -0
  157. package/src/__tests__/components/TimePicker.test.ts +61 -0
  158. package/src/__tests__/components/WellPlate.interaction.test.ts +59 -0
  159. package/src/__tests__/components/iconButtonIconSizing.test.ts +18 -0
  160. package/src/__tests__/composables/useApi.test.ts +92 -9
  161. package/src/__tests__/composables/useDropdownState.test.ts +58 -1
  162. package/src/__tests__/composables/useFileBrowser.test.ts +305 -0
  163. package/src/__tests__/composables/useGeneratedAnalysis.test.ts +7 -2
  164. package/src/__tests__/composables/useListReorder.test.ts +145 -0
  165. package/src/__tests__/composables/usePlatformFilePickerAdapter.test.ts +67 -0
  166. package/src/__tests__/composables/usePluginClient.test.ts +3 -0
  167. package/src/__tests__/composables/useRequestSyncState.test.ts +140 -0
  168. package/src/__tests__/stores/settings.test.ts +71 -1
  169. package/src/__tests__/styles/cssTokens.test.ts +131 -0
  170. package/src/__tests__/utils/permissions.test.ts +68 -0
  171. package/src/apiErrors.ts +85 -0
  172. package/src/components/ActionMenu.vue +45 -88
  173. package/src/components/AlertBox.vue +0 -4
  174. package/src/components/AppAvatarMenu.vue +2 -14
  175. package/src/components/AppLayout.vue +0 -4
  176. package/src/components/AppPluginSwitcher.story.vue +87 -0
  177. package/src/components/AppPluginSwitcher.vue +2 -5
  178. package/src/components/AppSidebar.vue +0 -4
  179. package/src/components/AppToastContainer.vue +6 -8
  180. package/src/components/AppTopBar.vue +0 -4
  181. package/src/components/ArtifactSaveDialog.vue +0 -4
  182. package/src/components/ArtifactSelectorModal.vue +0 -4
  183. package/src/components/AuditTrail.story.vue +18 -0
  184. package/src/components/AuditTrail.vue +27 -7
  185. package/src/components/AutoGroupModal.vue +0 -4
  186. package/src/components/Avatar.vue +0 -4
  187. package/src/components/BaseButton.vue +0 -4
  188. package/src/components/BaseCheckbox.vue +0 -4
  189. package/src/components/BaseInput.vue +0 -4
  190. package/src/components/BaseModal.vue +0 -4
  191. package/src/components/BasePill.vue +0 -4
  192. package/src/components/BaseRadioGroup.vue +0 -4
  193. package/src/components/BaseSelect.vue +0 -4
  194. package/src/components/BaseSlider.vue +0 -4
  195. package/src/components/BaseTabs.vue +0 -4
  196. package/src/components/BaseTextarea.vue +0 -4
  197. package/src/components/BaseToggle.vue +0 -4
  198. package/src/components/BatchProgressList.story.vue +18 -0
  199. package/src/components/BatchProgressList.vue +32 -4
  200. package/src/components/Breadcrumb.vue +0 -4
  201. package/src/components/Calendar.vue +0 -4
  202. package/src/components/ChartContainer.story.vue +1 -1
  203. package/src/components/ChartContainer.vue +0 -4
  204. package/src/components/ChemicalFormula.vue +0 -4
  205. package/src/components/CollapsibleCard.vue +0 -4
  206. package/src/components/ColorSlider.vue +0 -4
  207. package/src/components/ConcentrationInput.vue +0 -4
  208. package/src/components/ConfirmDialog.vue +0 -4
  209. package/src/components/DataFrame.story.vue +14 -0
  210. package/src/components/DataFrame.vue +97 -23
  211. package/src/components/DatePicker.vue +73 -27
  212. package/src/components/DateTimePicker.vue +45 -17
  213. package/src/components/Divider.vue +0 -4
  214. package/src/components/DoseCalculator.vue +0 -4
  215. package/src/components/DropdownButton.vue +2 -14
  216. package/src/components/EmptyState.vue +0 -4
  217. package/src/components/ExperimentCodeBadge.vue +0 -4
  218. package/src/components/ExperimentDataViewer.story.vue +3 -0
  219. package/src/components/ExperimentDataViewer.vue +33 -13
  220. package/src/components/ExperimentPopover.vue +12 -7
  221. package/src/components/ExperimentSelectorModal.vue +0 -4
  222. package/src/components/ExperimentTimeline.story.vue +18 -0
  223. package/src/components/ExperimentTimeline.vue +81 -75
  224. package/src/components/FileBrowserModal.story.vue +203 -0
  225. package/src/components/FileBrowserModal.vue +384 -0
  226. package/src/components/FilePicker.story.vue +44 -0
  227. package/src/components/FilePicker.vue +284 -0
  228. package/src/components/FileUploader.vue +32 -18
  229. package/src/components/FitPanel.vue +0 -4
  230. package/src/components/FormActions.story.vue +96 -0
  231. package/src/components/FormActions.vue +0 -4
  232. package/src/components/FormBuilder.vue +0 -4
  233. package/src/components/FormField.vue +0 -4
  234. package/src/components/FormulaInput.vue +0 -4
  235. package/src/components/GeneratedPathInput.story.vue +68 -0
  236. package/src/components/GeneratedPlotlyResult.story.vue +96 -0
  237. package/src/components/GeneratedPlotlyResult.vue +34 -69
  238. package/src/components/GeneratedPluginView.story.vue +145 -0
  239. package/src/components/GeneratedPluginView.vue +10 -10
  240. package/src/components/GeneratedResultRenderer.story.vue +117 -0
  241. package/src/components/GeneratedResultRenderer.vue +4 -9
  242. package/src/components/GroupAssigner.vue +67 -5
  243. package/src/components/IconButton.vue +0 -4
  244. package/src/components/InstrumentAlertLog.vue +0 -4
  245. package/src/components/InstrumentStateBadge.vue +0 -4
  246. package/src/components/InstrumentStatusCard.vue +0 -4
  247. package/src/components/JobsStatusTray.vue +0 -4
  248. package/src/components/LcmsSequenceTable.vue +81 -50
  249. package/src/components/LoadingSpinner.vue +0 -4
  250. package/src/components/MobileSupportGate.vue +0 -4
  251. package/src/components/MoleculeInput.vue +0 -4
  252. package/src/components/MultiSelect.vue +0 -4
  253. package/src/components/NumberInput.vue +0 -4
  254. package/src/components/PlateMapEditor.vue +3 -14
  255. package/src/components/PlotlyChart.story.vue +61 -0
  256. package/src/components/PlotlyChart.vue +233 -0
  257. package/src/components/PluginIcon.vue +0 -4
  258. package/src/components/ProgressBar.vue +0 -4
  259. package/src/components/ProtocolStepEditor.vue +2 -4
  260. package/src/components/RackEditor.vue +51 -70
  261. package/src/components/ReagentEditor.vue +0 -4
  262. package/src/components/ReagentList.story.vue +18 -0
  263. package/src/components/ReagentList.vue +127 -82
  264. package/src/components/ResourceCard.vue +0 -4
  265. package/src/components/RuntimeUpdateNotice.story.vue +49 -0
  266. package/src/components/RuntimeUpdateNotice.vue +4 -4
  267. package/src/components/SampleHierarchyTree.story.vue +18 -0
  268. package/src/components/SampleHierarchyTree.vue +32 -9
  269. package/src/components/SampleLegend.vue +2 -8
  270. package/src/components/SampleSelector.drag.ts +51 -0
  271. package/src/components/SampleSelector.story.vue +6 -0
  272. package/src/components/SampleSelector.tree.ts +2 -0
  273. package/src/components/SampleSelector.vue +49 -10
  274. package/src/components/SampleSelectorGroupNode.vue +19 -0
  275. package/src/components/ScheduleCalendar.story.vue +6 -0
  276. package/src/components/ScheduleCalendar.vue +82 -7
  277. package/src/components/ScientificNumber.vue +0 -4
  278. package/src/components/SectionCard.vue +0 -4
  279. package/src/components/SegmentedControl.vue +50 -7
  280. package/src/components/SequenceInput.vue +0 -4
  281. package/src/components/SequenceProgressBar.story.vue +110 -0
  282. package/src/components/SequenceProgressBar.vue +0 -4
  283. package/src/components/SettingsModal.vue +0 -4
  284. package/src/components/Skeleton.vue +0 -4
  285. package/src/components/SmartGroupFieldRecipe.vue +8 -6
  286. package/src/components/SmartGroupManual.vue +0 -4
  287. package/src/components/StatusIndicator.vue +0 -4
  288. package/src/components/StepWizard.vue +0 -4
  289. package/src/components/TagsInput.vue +4 -6
  290. package/src/components/ThemeToggle.vue +0 -4
  291. package/src/components/TimePicker.vue +36 -7
  292. package/src/components/TimeRangeInput.vue +0 -4
  293. package/src/components/Tooltip.story.vue +3 -3
  294. package/src/components/Tooltip.vue +0 -4
  295. package/src/components/UnitInput.vue +0 -4
  296. package/src/components/WellPlate.geometry.ts +60 -1
  297. package/src/components/WellPlate.interaction.ts +44 -0
  298. package/src/components/WellPlate.story.vue +8 -0
  299. package/src/components/WellPlate.vue +53 -7
  300. package/src/components/fileBrowserPresentation.ts +39 -0
  301. package/src/components/index.ts +5 -0
  302. package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -5
  303. package/src/components/internal/AppTopBarPillNavInternal.vue +0 -4
  304. package/src/components/internal/DataStateInternal.vue +74 -0
  305. package/src/components/internal/FileBrowserDialogInternal.vue +75 -0
  306. package/src/components/internal/FileBrowserListingInternal.vue +197 -0
  307. package/src/components/internal/FileBrowserToolbarInternal.vue +136 -0
  308. package/src/components/internal/FilePickerPreviewInternal.vue +100 -0
  309. package/src/components/internal/FilePickerTreeInternal.vue +238 -0
  310. package/src/components/internal/FormSectionRenderer.vue +0 -4
  311. package/src/components/internal/WellEditPopupInternal.vue +0 -4
  312. package/src/composables/controlSchemaTypes.ts +34 -0
  313. package/src/composables/filePicker/localFiles.ts +58 -0
  314. package/src/composables/filePicker/usePickerNavigation.ts +220 -0
  315. package/src/composables/filePicker/usePickerSelection.ts +259 -0
  316. package/src/composables/filePicker/validation.ts +41 -0
  317. package/src/composables/index.ts +17 -0
  318. package/src/composables/useApi.ts +57 -13
  319. package/src/composables/useDropdownState.ts +35 -5
  320. package/src/composables/useEventStream.ts +14 -2
  321. package/src/composables/useFileBrowser.ts +314 -0
  322. package/src/composables/useFileImport.ts +2 -7
  323. package/src/composables/useFilePicker.ts +366 -0
  324. package/src/composables/useGeneratedAnalysis.ts +18 -26
  325. package/src/composables/useListReorder.story.vue +143 -0
  326. package/src/composables/useListReorder.ts +242 -0
  327. package/src/composables/useMenuKeyboard.ts +2 -2
  328. package/src/composables/useOptimisticMutation.ts +1 -15
  329. package/src/composables/usePlatformFilePickerAdapter.ts +104 -0
  330. package/src/composables/usePluginClient.ts +3 -0
  331. package/src/composables/usePluginConfig.ts +3 -1
  332. package/src/composables/useRackEditor.ts +2 -11
  333. package/src/composables/useRequestSyncState.ts +98 -28
  334. package/src/composables/useResourceCrud.ts +1 -15
  335. package/src/composables/useScheduleDrag.ts +37 -0
  336. package/src/composables/useWellPainting.ts +5 -29
  337. package/src/composables/useWellPlateEditor.ts +1 -11
  338. package/src/index.ts +3 -0
  339. package/src/permissions.ts +48 -9
  340. package/src/stores/experiment.ts +2 -7
  341. package/src/stores/index.ts +9 -1
  342. package/src/stores/settings.ts +93 -1
  343. package/src/styles/components/audit-trail.css +5 -5
  344. package/src/styles/components/batch-progress-list.css +7 -0
  345. package/src/styles/components/color-slider.css +2 -2
  346. package/src/styles/components/data-state.css +30 -0
  347. package/src/styles/components/dataframe.css +29 -35
  348. package/src/styles/components/experiment-data-viewer.css +4 -4
  349. package/src/styles/components/experiment-timeline.css +3 -30
  350. package/src/styles/components/file-browser-modal.css +489 -0
  351. package/src/styles/components/file-picker.css +502 -0
  352. package/src/styles/components/form-builder.css +5 -5
  353. package/src/styles/components/icon-button.css +9 -0
  354. package/src/styles/components/lcms-sequence-table.css +16 -1
  355. package/src/styles/components/multi-select.css +1 -1
  356. package/src/styles/components/reagent-list.css +38 -31
  357. package/src/styles/components/sample-hierarchy-tree.css +5 -19
  358. package/src/styles/components/sample-selector.css +9 -2
  359. package/src/styles/components/schedule-calendar.css +8 -0
  360. package/src/styles/components/scientific-number.css +1 -1
  361. package/src/styles/components/well-plate.css +8 -0
  362. package/src/styles/index.css +11 -0
  363. package/src/styles/variables.css +29 -0
  364. package/src/templates/builderPresetControls.ts +1 -1
  365. package/src/templates/componentPlateHelpers.ts +3 -1
  366. package/src/templates/doseResponseAdapters.ts +2 -13
  367. package/src/templates/elisaAssayCollectionBuilder.ts +2 -2
  368. package/src/templates/plateMapBuilder.ts +2 -2
  369. package/src/templates/qpcrPlateBuilder.ts +1 -1
  370. package/src/templates/templateValidators.ts +1 -1
  371. package/src/templates/timeCourseBuilder.ts +2 -2
  372. package/src/templates/wellPlateScreenCollectionBuilder.ts +2 -2
  373. package/src/types/fileBrowserTypes.ts +85 -0
  374. package/src/types/filePicker.ts +72 -0
  375. package/src/types/index.ts +14 -0
  376. package/src/utils/color.ts +51 -0
  377. package/src/utils/errors.ts +29 -0
  378. package/dist/EmptyState-NBqf2_8z.js.map +0 -1
  379. package/dist/ExperimentPopover-CfOdh5Rm.js.map +0 -1
  380. package/dist/ExperimentSelectorModal-DvIagrxY.js.map +0 -1
  381. package/dist/SettingsModal-W3TYfnP9.js.map +0 -1
  382. package/dist/components-B80gV0P6.js.map +0 -1
  383. package/dist/composables/autoGroupConstants.d.ts +0 -1
  384. package/dist/composables/autoGroupGrouping.d.ts +0 -3
  385. package/dist/composables/useAutoGroupInputSources.d.ts +0 -32
  386. package/dist/composables-C8mmD5ta.js.map +0 -1
  387. package/dist/experiment-Y9Iz7KYi.js.map +0 -1
  388. package/dist/experiment-utils-DV3DrvE_.js.map +0 -1
  389. package/dist/templates/builderDefaults.d.ts +0 -1
  390. package/dist/templates/plateGeometry.d.ts +0 -4
  391. package/dist/templates-CK72aKO1.js.map +0 -1
  392. package/dist/useApi-CDBq6z23.js.map +0 -1
  393. package/dist/useControlSchema-_OVhavKq.js.map +0 -1
  394. package/dist/useDropdownState-D5G4UvWd.js.map +0 -1
  395. package/dist/useProtocolTemplates-Dq5Pzwyd.js.map +0 -1
  396. package/src/__tests__/composables/useAutoGroupInputSources.test.ts +0 -127
  397. package/src/composables/autoGroupConstants.ts +0 -4
  398. package/src/composables/autoGroupGrouping.ts +0 -148
  399. package/src/composables/useAutoGroupInputSources.ts +0 -147
  400. package/src/templates/builderDefaults.ts +0 -11
  401. package/src/templates/plateGeometry.ts +0 -62
  402. /package/dist/__tests__/{composables/useAutoGroupInputSources.test.d.ts → apiErrors.test.d.ts} +0 -0
@@ -5,6 +5,15 @@ interface Props {
5
5
  title?: string;
6
6
  maxHeight?: string;
7
7
  autoScroll?: boolean;
8
+ /** Replace the item list with a loading placeholder. */
9
+ loading?: boolean;
10
+ /**
11
+ * Error message. When set, the item list is replaced by an error state.
12
+ * `null`/`undefined` renders normally.
13
+ */
14
+ error?: string | null;
15
+ /** Empty-state headline shown when there are no batch items. */
16
+ emptyMessage?: string;
8
17
  }
9
18
  declare function __VLS_template(): {
10
19
  attrs: Partial<{}>;
@@ -12,6 +21,11 @@ declare function __VLS_template(): {
12
21
  summary?(_: {
13
22
  summary: BatchSummary;
14
23
  }): any;
24
+ error?(_: {
25
+ error: string;
26
+ }): any;
27
+ loading?(_: {}): any;
28
+ empty?(_: {}): any;
15
29
  item?(_: {
16
30
  item: BatchItem;
17
31
  }): any;
@@ -29,6 +43,9 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
29
43
  onCancel?: ((id: string) => any) | undefined;
30
44
  onRetry?: ((id: string) => any) | undefined;
31
45
  }>, {
46
+ error: string | null;
47
+ loading: boolean;
48
+ emptyMessage: string;
32
49
  showSummary: boolean;
33
50
  autoScroll: boolean;
34
51
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
@@ -92,11 +92,11 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
92
92
  onLoad?: (() => any) | undefined;
93
93
  onSave?: (() => any) | undefined;
94
94
  }>, {
95
- error: string | null;
96
95
  status: TemplateWorkspaceStatus;
96
+ message: string;
97
+ error: string | null;
97
98
  readonly: boolean;
98
99
  loading: boolean;
99
- message: string;
100
100
  kind: WorkspaceKind;
101
101
  actions: TemplateWorkspaceActions;
102
102
  currentExperimentId: number;
@@ -69,10 +69,10 @@ declare function __VLS_template(): {
69
69
  };
70
70
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
71
71
  declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
72
- label: string;
73
72
  status: PackWorkspaceStatus;
74
- readonly: boolean;
75
73
  message: string;
74
+ label: string;
75
+ readonly: boolean;
76
76
  actions: PackWorkspaceActions;
77
77
  dense: boolean;
78
78
  workspace: UseBioTemplatePackWorkspaceReturn;
@@ -16,8 +16,8 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
16
16
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
17
17
  "onUpdate:modelValue"?: ((value: ConcentrationValue | undefined) => any) | undefined;
18
18
  }>, {
19
- disabled: boolean;
20
19
  error: boolean;
20
+ disabled: boolean;
21
21
  size: "sm" | "md" | "lg";
22
22
  placeholder: string;
23
23
  showConversion: boolean;
@@ -27,7 +27,11 @@ interface Props {
27
27
  striped?: boolean;
28
28
  /** Show table borders */
29
29
  bordered?: boolean;
30
- /** Table size */
30
+ /**
31
+ * Table size. Left unset, it follows the platform's `tableDensity` setting
32
+ * (compact → `sm`, normal → `md`, comfortable → `lg`) and falls back to
33
+ * `md` when no settings store is installed.
34
+ */
31
35
  size?: 'sm' | 'md' | 'lg';
32
36
  /** Make header sticky on scroll */
33
37
  stickyHeader?: boolean;
@@ -35,6 +39,11 @@ interface Props {
35
39
  maxHeight?: string | number;
36
40
  /** Show loading overlay */
37
41
  loading?: boolean;
42
+ /**
43
+ * Error message. When set, the table body is replaced by an error state
44
+ * instead of the empty state. `null`/`undefined` renders normally.
45
+ */
46
+ error?: string | null;
38
47
  /** Empty state message */
39
48
  emptyText?: string;
40
49
  /** Enable column sorting */
@@ -74,6 +83,9 @@ declare function __VLS_template(): {
74
83
  column: DataFrameColumn<Record<string, unknown>>;
75
84
  index: number;
76
85
  }) => any>> & {
86
+ error?(_: {
87
+ error: string;
88
+ }): any;
77
89
  empty?(_: {}): any;
78
90
  loading?(_: {}): any;
79
91
  footer?(_: {}): any;
@@ -99,7 +111,7 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
99
111
  "onCell-click"?: ((value: unknown, column: DataFrameColumn<Record<string, unknown>>, row: Record<string, unknown>) => any) | undefined;
100
112
  "onDelete-row"?: ((row: Record<string, unknown>, index: number) => any) | undefined;
101
113
  }>, {
102
- size: "sm" | "md" | "lg";
114
+ error: string | null;
103
115
  loading: boolean;
104
116
  striped: boolean;
105
117
  bordered: boolean;
@@ -13,13 +13,13 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
13
13
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
14
14
  "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
15
15
  }>, {
16
- disabled: boolean;
17
16
  error: boolean;
17
+ disabled: boolean;
18
18
  size: "sm" | "md" | "lg";
19
19
  clearable: boolean;
20
20
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
21
21
  containerRef: HTMLDivElement;
22
- inputRef: HTMLDivElement;
22
+ triggerRef: HTMLInputElement;
23
23
  dropdownRef: HTMLDivElement;
24
24
  }, HTMLDivElement>;
25
25
  export default _default;
@@ -16,8 +16,8 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
16
16
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
17
17
  "onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
18
18
  }>, {
19
- disabled: boolean;
20
19
  error: boolean;
20
+ disabled: boolean;
21
21
  size: "sm" | "md" | "lg";
22
22
  placeholder: string;
23
23
  locale: string;
@@ -26,5 +26,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
26
26
  timeFormat: "12h" | "24h";
27
27
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
28
28
  rootRef: HTMLDivElement;
29
+ triggerRef: HTMLInputElement;
30
+ dropdownRef: HTMLDivElement;
29
31
  }, HTMLDivElement>;
30
32
  export default _default;
@@ -10,11 +10,29 @@ interface Props {
10
10
  pluginRoutePrefix?: string;
11
11
  experimentId?: number;
12
12
  loading?: boolean;
13
+ /**
14
+ * Error message. When set (or when the auto-fetch fails), the content area
15
+ * renders an error state instead of the data views.
16
+ */
17
+ error?: string | null;
13
18
  downloadJsonUrl?: string;
14
19
  downloadCsvUrl?: string;
15
20
  autoFetch?: boolean;
16
21
  }
17
- declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
22
+ declare function __VLS_template(): {
23
+ attrs: Partial<{}>;
24
+ slots: {
25
+ error?(_: {
26
+ error: string;
27
+ }): any;
28
+ loading?(_: {}): any;
29
+ empty?(_: {}): any;
30
+ };
31
+ refs: {};
32
+ rootEl: HTMLDivElement;
33
+ };
34
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
35
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
18
36
  "open-plugin": () => any;
19
37
  "download-json": () => any;
20
38
  "download-csv": () => any;
@@ -23,9 +41,16 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
23
41
  "onDownload-json"?: (() => any) | undefined;
24
42
  "onDownload-csv"?: (() => any) | undefined;
25
43
  }>, {
44
+ error: string | null;
26
45
  title: string;
27
46
  loading: boolean;
28
47
  defaultView: "summary" | "tree" | "table";
29
48
  autoFetch: boolean;
30
49
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
50
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
31
51
  export default _default;
52
+ type __VLS_WithTemplateSlots<T, S> = T & {
53
+ new (): {
54
+ $slots: S;
55
+ };
56
+ };
@@ -33,5 +33,6 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
33
33
  confirmSave: boolean;
34
34
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
35
35
  popoverRef: HTMLDivElement;
36
+ triggerRef: HTMLButtonElement;
36
37
  }, HTMLDivElement>;
37
38
  export default _default;
@@ -10,8 +10,28 @@ interface Props {
10
10
  size?: 'sm' | 'md' | 'lg';
11
11
  colorByStatus?: boolean;
12
12
  colorByType?: boolean;
13
+ /** Replace the timeline with a loading placeholder. */
14
+ loading?: boolean;
15
+ /**
16
+ * Error message. When set, the timeline is replaced by an error state.
17
+ * `null`/`undefined` renders normally.
18
+ */
19
+ error?: string | null;
13
20
  }
14
- declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
21
+ declare function __VLS_template(): {
22
+ attrs: Partial<{}>;
23
+ slots: {
24
+ error?(_: {
25
+ error: string;
26
+ }): any;
27
+ loading?(_: {}): any;
28
+ empty?(_: {}): any;
29
+ };
30
+ refs: {};
31
+ rootEl: HTMLDivElement;
32
+ };
33
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
34
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
15
35
  "update:modelValue": (steps: ProtocolStep[]) => any;
16
36
  "step-click": (step: ProtocolStep) => any;
17
37
  "step-expand": (stepId: string | undefined) => any;
@@ -30,8 +50,10 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
30
50
  "onStep-reorder"?: ((stepId: string, newOrder: number) => any) | undefined;
31
51
  "onStep-status-change"?: ((stepId: string, status: ProtocolStepStatus) => any) | undefined;
32
52
  }>, {
53
+ error: string | null;
33
54
  size: "sm" | "md" | "lg";
34
55
  modelValue: ProtocolStep[];
56
+ loading: boolean;
35
57
  orientation: "horizontal" | "vertical";
36
58
  collapsible: boolean;
37
59
  editable: boolean;
@@ -41,4 +63,10 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
41
63
  colorByStatus: boolean;
42
64
  colorByType: boolean;
43
65
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
66
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
44
67
  export default _default;
68
+ type __VLS_WithTemplateSlots<T, S> = T & {
69
+ new (): {
70
+ $slots: S;
71
+ };
72
+ };
@@ -0,0 +1,99 @@
1
+ import { ModalSize } from '../types';
2
+ import { FileBrowserSortKey, FileEntry, FilePathCrumb, FileSelection, ServerMount } from '../types/fileBrowserTypes';
3
+ interface Props {
4
+ modelValue: boolean;
5
+ /** Mounts in the location strip; nested `children` follow their parent. */
6
+ mounts?: ServerMount[];
7
+ /** Mount the listing belongs to. */
8
+ mountId?: string;
9
+ /** Mount-relative path of the directory being shown. */
10
+ path?: string;
11
+ /** Parent path, or null at a mount root. */
12
+ parent?: string | null;
13
+ entries?: FileEntry[];
14
+ breadcrumbs?: FilePathCrumb[];
15
+ /** Controlled selection, mirroring DataFrame's selectedKeys contract. */
16
+ selected?: FileSelection[];
17
+ /** Extensions the caller cares about, shown as a chip in the toolbar. */
18
+ typeRules?: string[];
19
+ search?: string;
20
+ sort?: FileBrowserSortKey;
21
+ /** Directory size before any search filter. */
22
+ totalCount?: number | null;
23
+ /** How many entries satisfy the type rules. */
24
+ matchCount?: number | null;
25
+ /** True when the server capped the listing. */
26
+ truncated?: boolean;
27
+ loading?: boolean;
28
+ error?: string | null;
29
+ title?: string;
30
+ /** Free-form context line, e.g. the experiment this data is for. */
31
+ subtitle?: string;
32
+ /** Monospace prefix on the context line, e.g. an experiment code. */
33
+ contextCode?: string;
34
+ /** Dim entries that fail the type rules instead of showing them plainly. */
35
+ dimNonMatching?: boolean;
36
+ /** Offer the hand-off to the system file picker for local, never-uploaded files. */
37
+ showLocalPicker?: boolean;
38
+ confirmLabel?: string;
39
+ size?: ModalSize;
40
+ }
41
+ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
42
+ "update:modelValue": (value: boolean) => any;
43
+ cancel: () => any;
44
+ refresh: () => any;
45
+ navigate: (location: {
46
+ mount_id: string;
47
+ path: string;
48
+ }) => any;
49
+ "update:sort": (value: FileBrowserSortKey) => any;
50
+ confirm: (selection: FileSelection[]) => any;
51
+ selectFolder: (location: {
52
+ mount_id: string;
53
+ path: string;
54
+ }) => any;
55
+ "update:search": (value: string) => any;
56
+ "update:selected": (selection: FileSelection[]) => any;
57
+ chooseLocal: () => any;
58
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
59
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
60
+ onCancel?: (() => any) | undefined;
61
+ onRefresh?: (() => any) | undefined;
62
+ onNavigate?: ((location: {
63
+ mount_id: string;
64
+ path: string;
65
+ }) => any) | undefined;
66
+ "onUpdate:sort"?: ((value: FileBrowserSortKey) => any) | undefined;
67
+ onConfirm?: ((selection: FileSelection[]) => any) | undefined;
68
+ onSelectFolder?: ((location: {
69
+ mount_id: string;
70
+ path: string;
71
+ }) => any) | undefined;
72
+ "onUpdate:search"?: ((value: string) => any) | undefined;
73
+ "onUpdate:selected"?: ((selection: FileSelection[]) => any) | undefined;
74
+ onChooseLocal?: (() => any) | undefined;
75
+ }>, {
76
+ error: string | null;
77
+ sort: FileBrowserSortKey;
78
+ entries: FileEntry[];
79
+ selected: FileSelection[];
80
+ size: ModalSize;
81
+ search: string;
82
+ path: string;
83
+ title: string;
84
+ loading: boolean;
85
+ subtitle: string;
86
+ confirmLabel: string;
87
+ mountId: string;
88
+ parent: string | null;
89
+ breadcrumbs: FilePathCrumb[];
90
+ typeRules: string[];
91
+ dimNonMatching: boolean;
92
+ totalCount: number | null;
93
+ matchCount: number | null;
94
+ truncated: boolean;
95
+ mounts: ServerMount[];
96
+ contextCode: string;
97
+ showLocalPicker: boolean;
98
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
99
+ export default _default;
@@ -0,0 +1,32 @@
1
+ import { PickerAdapter, PickerCapabilities, PickerNode, PickerSelection, PickerSelectionMode, PickerSource } from '../types/filePicker';
2
+ interface Props {
3
+ open: boolean;
4
+ adapter: PickerAdapter;
5
+ selectionMode?: PickerSelectionMode;
6
+ sources?: PickerSource[];
7
+ capabilities?: PickerCapabilities;
8
+ initialPath?: string;
9
+ initialSelection?: PickerSelection | null;
10
+ title?: string;
11
+ /** Host-owned visibility/selection filter; backend must still enforce access. */
12
+ systemFilter?: (node: PickerNode, source: PickerSource) => boolean;
13
+ }
14
+ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
15
+ select: (selection: PickerSelection) => any;
16
+ cancel: () => any;
17
+ "update:open": (open: boolean) => any;
18
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
19
+ onSelect?: ((selection: PickerSelection) => any) | undefined;
20
+ onCancel?: (() => any) | undefined;
21
+ "onUpdate:open"?: ((open: boolean) => any) | undefined;
22
+ }>, {
23
+ title: string;
24
+ selectionMode: PickerSelectionMode;
25
+ sources: PickerSource[];
26
+ capabilities: PickerCapabilities;
27
+ initialPath: string;
28
+ initialSelection: PickerSelection | null;
29
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
30
+ searchArea: HTMLDivElement;
31
+ }, any>;
32
+ export default _default;
@@ -4,7 +4,9 @@ interface Props {
4
4
  maxSize?: number;
5
5
  disabled?: boolean;
6
6
  size?: 'sm' | 'md' | 'lg';
7
- mode?: 'file' | 'folder';
7
+ mode?: 'file' | 'folder' | 'file+folder';
8
+ /** Hide the selection list when a parent presents the files itself. */
9
+ showFiles?: boolean;
8
10
  }
9
11
  declare function __VLS_template(): {
10
12
  attrs: Partial<{}>;
@@ -29,7 +31,8 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
29
31
  disabled: boolean;
30
32
  multiple: boolean;
31
33
  size: "sm" | "md" | "lg";
32
- mode: "file" | "folder";
34
+ mode: "file" | "folder" | "file+folder";
35
+ showFiles: boolean;
33
36
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
34
37
  inputRef: HTMLInputElement;
35
38
  }, HTMLDivElement>;
@@ -14,8 +14,8 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
14
14
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
15
15
  onMw?: ((mw: number | null) => any) | undefined;
16
16
  }>, {
17
- disabled: boolean;
18
17
  error: boolean;
18
+ disabled: boolean;
19
19
  size: "sm" | "md" | "lg";
20
20
  placeholder: string;
21
21
  modelValue: string;
@@ -5,7 +5,5 @@ type __VLS_Props = {
5
5
  data: string;
6
6
  };
7
7
  };
8
- declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
9
- chartElement: HTMLDivElement;
10
- }, HTMLDivElement>;
8
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
11
9
  export default _default;
@@ -6,8 +6,28 @@ interface Props {
6
6
  maxRows?: number;
7
7
  showMoreLabel?: boolean;
8
8
  emptyMessage?: string;
9
+ /** Replace the table with a loading placeholder. */
10
+ loading?: boolean;
11
+ /**
12
+ * Error message. When set, the table is replaced by an error state.
13
+ * `null`/`undefined` renders normally.
14
+ */
15
+ error?: string | null;
9
16
  }
10
- declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
17
+ declare function __VLS_template(): {
18
+ attrs: Partial<{}>;
19
+ slots: {
20
+ error?(_: {
21
+ error: string;
22
+ }): any;
23
+ loading?(_: {}): any;
24
+ empty?(_: {}): any;
25
+ };
26
+ refs: {};
27
+ rootEl: HTMLDivElement;
28
+ };
29
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
30
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
11
31
  remove: (index: number) => any;
12
32
  reorder: (fromIndex: number, toIndex: number) => any;
13
33
  duplicate: (index: number) => any;
@@ -16,6 +36,8 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
16
36
  onReorder?: ((fromIndex: number, toIndex: number) => any) | undefined;
17
37
  onDuplicate?: ((index: number) => any) | undefined;
18
38
  }>, {
39
+ error: string | null;
40
+ loading: boolean;
19
41
  items: LcmsSequenceItem[];
20
42
  columns: LcmsSequenceTableColumn[];
21
43
  emptyMessage: string;
@@ -23,4 +45,10 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
23
45
  maxRows: number;
24
46
  showMoreLabel: boolean;
25
47
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
48
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
26
49
  export default _default;
50
+ type __VLS_WithTemplateSlots<T, S> = T & {
51
+ new (): {
52
+ $slots: S;
53
+ };
54
+ };
@@ -7,8 +7,8 @@ export interface MobileSupportGateProps {
7
7
  desktopLabel?: string;
8
8
  }
9
9
  declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<MobileSupportGateProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<MobileSupportGateProps> & Readonly<{}>, {
10
- title: string;
11
10
  message: string;
11
+ title: string;
12
12
  supported: boolean;
13
13
  mediaQuery: string;
14
14
  appName: string;
@@ -15,8 +15,8 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
15
15
  onError?: ((message: string) => any) | undefined;
16
16
  "onUpdate:modelValue"?: ((data: MoleculeData | undefined) => any) | undefined;
17
17
  }>, {
18
- disabled: boolean;
19
18
  error: boolean;
19
+ disabled: boolean;
20
20
  placeholder: string;
21
21
  readonly: boolean;
22
22
  height: number;
@@ -14,8 +14,8 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
14
14
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
15
15
  "onUpdate:modelValue"?: ((value: number | undefined) => any) | undefined;
16
16
  }>, {
17
- disabled: boolean;
18
17
  error: boolean;
18
+ disabled: boolean;
19
19
  size: "sm" | "md" | "lg";
20
20
  step: number;
21
21
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Render native Plotly data with MINT loading, empty, theme, and error states.
3
+ *
4
+ * Plotly is loaded only when the component is mounted, so importing the SDK does
5
+ * not add Plotly to the application's initial bundle.
6
+ *
7
+ * @example
8
+ * ```vue
9
+ * <PlotlyChart
10
+ * title="QC overview"
11
+ * :data="traces"
12
+ * :layout="{ xaxis: { title: { text: 'Sample' } } }"
13
+ * :config="{ toImageButtonOptions: { filename: 'qc-overview' } }"
14
+ * />
15
+ * ```
16
+ */
17
+ import type * as PlotlyType from 'plotly.js';
18
+ interface Props {
19
+ data: PlotlyType.Data[];
20
+ layout?: Partial<PlotlyType.Layout>;
21
+ config?: Partial<PlotlyType.Config>;
22
+ title?: string;
23
+ description?: string;
24
+ loading?: boolean;
25
+ empty?: boolean;
26
+ emptyMessage?: string;
27
+ ariaLabel?: string;
28
+ }
29
+ declare function __VLS_template(): {
30
+ attrs: Partial<{}>;
31
+ slots: {
32
+ toolbar?(_: {}): any;
33
+ empty?(_: {}): any;
34
+ error?(_: {}): any;
35
+ legend?(_: {}): any;
36
+ };
37
+ refs: {
38
+ chartElement: HTMLDivElement;
39
+ };
40
+ rootEl: HTMLDivElement;
41
+ };
42
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
43
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
44
+ empty: boolean;
45
+ loading: boolean;
46
+ ariaLabel: string;
47
+ layout: Partial<PlotlyType.Layout>;
48
+ emptyMessage: string;
49
+ config: Partial<PlotlyType.Config>;
50
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
51
+ chartElement: HTMLDivElement;
52
+ }, HTMLDivElement>;
53
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
54
+ export default _default;
55
+ type __VLS_WithTemplateSlots<T, S> = T & {
56
+ new (): {
57
+ $slots: S;
58
+ };
59
+ };
@@ -11,10 +11,10 @@ interface Props {
11
11
  ariaLabel?: string;
12
12
  }
13
13
  declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
14
+ value: number;
14
15
  label: string;
15
16
  size: "sm" | "md" | "lg";
16
17
  color: "primary" | "success" | "warning" | "error" | "info";
17
- value: number;
18
18
  variant: "rail" | "segmented";
19
19
  showValue: boolean;
20
20
  indeterminate: boolean;
@@ -22,5 +22,6 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
22
22
  showPreview: boolean;
23
23
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
24
24
  templateDropdownRef: HTMLDivElement;
25
+ templateTriggerRef: HTMLButtonElement;
25
26
  }, HTMLDivElement>;
26
27
  export default _default;
@@ -7,8 +7,28 @@ interface Props {
7
7
  columns?: ReagentColumn[];
8
8
  sortable?: boolean;
9
9
  searchable?: boolean;
10
+ /** Replace the table with a loading placeholder. */
11
+ loading?: boolean;
12
+ /**
13
+ * Error message. When set, the table is replaced by an error state.
14
+ * `null`/`undefined` renders normally.
15
+ */
16
+ error?: string | null;
10
17
  }
11
- declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
18
+ declare function __VLS_template(): {
19
+ attrs: Partial<{}>;
20
+ slots: {
21
+ error?(_: {
22
+ error: string;
23
+ }): any;
24
+ loading?(_: {}): any;
25
+ empty?(_: {}): any;
26
+ };
27
+ refs: {};
28
+ rootEl: HTMLDivElement;
29
+ };
30
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
31
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
12
32
  add: () => any;
13
33
  "update:modelValue": (reagents: Reagent[]) => any;
14
34
  remove: (reagentId: string) => any;
@@ -21,12 +41,20 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
21
41
  onEdit?: ((reagent: Reagent) => any) | undefined;
22
42
  onReorder?: ((reagentId: string, fromIndex: number, toIndex: number) => any) | undefined;
23
43
  }>, {
44
+ error: string | null;
24
45
  readonly: boolean;
25
46
  modelValue: Reagent[];
47
+ loading: boolean;
26
48
  columns: ReagentColumn[];
27
49
  sortable: boolean;
28
50
  searchable: boolean;
29
51
  showStockLevel: boolean;
30
52
  lowStockThreshold: number;
31
53
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
54
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
32
55
  export default _default;
56
+ type __VLS_WithTemplateSlots<T, S> = T & {
57
+ new (): {
58
+ $slots: S;
59
+ };
60
+ };
@@ -34,8 +34,8 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
34
34
  onClick?: (() => any) | undefined;
35
35
  onBook?: (() => any) | undefined;
36
36
  }>, {
37
- compact: boolean;
38
37
  status: ResourceStatus;
38
+ compact: boolean;
39
39
  size: "sm" | "md" | "lg";
40
40
  tags: string[];
41
41
  specs: ResourceSpec[];