@morscherlab/mint-sdk 1.1.25 → 1.2.0-beta.10

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 (403) hide show
  1. package/README.md +44 -12
  2. package/dist/{ExperimentPopover-tLwJ7XF4.js → ExperimentPopover-oL0fg_A0.js} +6 -4
  3. package/dist/ExperimentPopover-oL0fg_A0.js.map +1 -0
  4. package/dist/{ExperimentSelectorModal-B6P2msT4.js → ExperimentSelectorModal-BeEOomw_.js} +5 -5
  5. package/dist/ExperimentSelectorModal-BeEOomw_.js.map +1 -0
  6. package/dist/{SettingsModal-BW3Ar-uy.js → SettingsModal-Dphh3RrI.js} +5 -8
  7. package/dist/SettingsModal-Dphh3RrI.js.map +1 -0
  8. package/dist/{EmptyState-p90quq8Z.js → Skeleton-DxtwJ5gt.js} +111 -93
  9. package/dist/Skeleton-DxtwJ5gt.js.map +1 -0
  10. package/dist/__tests__/components/ExperimentTimeline.test.d.ts +1 -0
  11. package/dist/__tests__/components/PluginWorkspaceView.internal.test.d.ts +1 -0
  12. package/dist/__tests__/components/SecretInput.test.d.ts +1 -0
  13. package/dist/__tests__/components/WellEditPopupInternal.test.d.ts +1 -0
  14. package/dist/__tests__/composables/useEventStream.test.d.ts +1 -0
  15. package/dist/__tests__/composables/useListReorder.test.d.ts +1 -0
  16. package/dist/__tests__/styles/cssTokens.test.d.ts +1 -0
  17. package/dist/components/ActionMenu.vue.d.ts +1 -1
  18. package/dist/components/AppAvatarMenu.vue.d.ts +4 -0
  19. package/dist/components/AppPluginSwitcher.vue.d.ts +2 -0
  20. package/dist/components/AppSidebar.vue.d.ts +1 -1
  21. package/dist/components/AuditTrail.vue.d.ts +13 -0
  22. package/dist/components/BatchProgressList.vue.d.ts +17 -0
  23. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +1 -1
  24. package/dist/components/DataFrame.vue.d.ts +14 -2
  25. package/dist/components/DatePicker.vue.d.ts +1 -1
  26. package/dist/components/DateTimePicker.vue.d.ts +2 -0
  27. package/dist/components/DropdownButton.vue.d.ts +2 -0
  28. package/dist/components/ExperimentDataViewer.vue.d.ts +26 -1
  29. package/dist/components/ExperimentPopover.vue.d.ts +1 -0
  30. package/dist/components/ExperimentTimeline.vue.d.ts +29 -1
  31. package/dist/components/FitPanel.vue.d.ts +1 -1
  32. package/dist/components/LcmsSequenceTable.vue.d.ts +29 -1
  33. package/dist/components/PluginWorkspaceView.props.d.ts +29 -1
  34. package/dist/components/PluginWorkspaceView.vue.d.ts +5 -5
  35. package/dist/components/ProgressBar.vue.d.ts +1 -1
  36. package/dist/components/ProtocolStepEditor.vue.d.ts +1 -0
  37. package/dist/components/ReagentList.vue.d.ts +29 -1
  38. package/dist/components/SampleHierarchyTree.vue.d.ts +29 -1
  39. package/dist/components/SampleSelector.drag.d.ts +13 -0
  40. package/dist/components/SampleSelector.tree.d.ts +2 -0
  41. package/dist/components/SampleSelector.vue.d.ts +34 -1
  42. package/dist/components/ScheduleCalendar.vue.d.ts +20 -0
  43. package/dist/components/SecretInput.vue.d.ts +28 -0
  44. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -1
  45. package/dist/components/TimePicker.vue.d.ts +1 -0
  46. package/dist/components/WellPlate.geometry.d.ts +15 -0
  47. package/dist/components/WellPlate.interaction.d.ts +13 -0
  48. package/dist/components/WellPlate.vue.d.ts +29 -0
  49. package/dist/components/index.d.ts +9 -0
  50. package/dist/components/index.js +8 -8
  51. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -0
  52. package/dist/components/internal/DataStateInternal.vue.d.ts +43 -0
  53. package/dist/components/internal/WellEditPopupInternal.vue.d.ts +3 -1
  54. package/dist/components/internal/WorkspaceControlsInternal.vue.d.ts +23 -0
  55. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +70 -0
  56. package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +43 -0
  57. package/dist/{components-DQt0tcpY.js → components-CgAUzF8F.js} +2491 -2235
  58. package/dist/components-CgAUzF8F.js.map +1 -0
  59. package/dist/composables/controlSchemaTypes.d.ts +34 -0
  60. package/dist/composables/flattenWorkspaceBindings.d.ts +61 -0
  61. package/dist/composables/index.d.ts +8 -2
  62. package/dist/composables/index.js +10 -10
  63. package/dist/composables/pluginWorkspaceModel.d.ts +164 -0
  64. package/dist/composables/useAsync.d.ts +5 -1
  65. package/dist/composables/useBioTemplateWorkspace.d.ts +4 -20
  66. package/dist/composables/useCommandHistory.d.ts +5 -1
  67. package/dist/composables/useDropdownState.d.ts +18 -2
  68. package/dist/composables/useEventStream.d.ts +52 -0
  69. package/dist/composables/useFocusTrap.d.ts +21 -0
  70. package/dist/composables/useJobsStatusTray.d.ts +1 -1
  71. package/dist/composables/useListReorder.d.ts +90 -0
  72. package/dist/composables/useMenuKeyboard.d.ts +29 -0
  73. package/dist/composables/useOptimisticMutation.d.ts +5 -1
  74. package/dist/composables/usePluginClient.d.ts +4 -17
  75. package/dist/composables/usePluginConfig.d.ts +3 -1
  76. package/dist/composables/usePluginWorkspace.d.ts +51 -0
  77. package/dist/composables/useRequestSyncState.d.ts +42 -2
  78. package/dist/composables/useResourceCrud.d.ts +5 -1
  79. package/dist/composables/useRovingFocus.d.ts +24 -0
  80. package/dist/composables/useScheduleDrag.d.ts +1 -0
  81. package/dist/composables/useWellPainting.d.ts +5 -1
  82. package/dist/composables/useWellPlateAdapter.d.ts +5 -1
  83. package/dist/composables/useWellPlateValidation.d.ts +5 -1
  84. package/dist/composables/workspaceRecipes.d.ts +188 -0
  85. package/dist/{composables-CkXDe7nm.js → composables-B_pia3hO.js} +105 -254
  86. package/dist/composables-B_pia3hO.js.map +1 -0
  87. package/dist/{useApi-CDBq6z23.js → errors-_W0-LbA6.js} +102 -3
  88. package/dist/errors-_W0-LbA6.js.map +1 -0
  89. package/dist/{experiment-Y9Iz7KYi.js → experiment-Cwl9AYxw.js} +3 -8
  90. package/dist/experiment-Cwl9AYxw.js.map +1 -0
  91. package/dist/{experiment-utils-CLnzPPq5.js → experiment-utils-DV3DrvE_.js} +70 -51
  92. package/dist/experiment-utils-DV3DrvE_.js.map +1 -0
  93. package/dist/index.d.ts +1 -0
  94. package/dist/index.js +15 -15
  95. package/dist/install.js +2 -7
  96. package/dist/install.js.map +1 -1
  97. package/dist/permissions.d.ts +42 -1
  98. package/dist/permissions.js +20 -10
  99. package/dist/permissions.js.map +1 -1
  100. package/dist/stores/index.d.ts +1 -1
  101. package/dist/stores/index.js +3 -3
  102. package/dist/stores/settings.d.ts +31 -1
  103. package/dist/styles.css +11247 -29501
  104. package/dist/templates/builderReadUtils.d.ts +1 -1
  105. package/dist/templates/index.js +2 -4
  106. package/dist/{templates-CovvRZ-9.js → templates-Qq113pyZ.js} +303 -106
  107. package/dist/templates-Qq113pyZ.js.map +1 -0
  108. package/dist/types/form-builder.d.ts +1 -1
  109. package/dist/{useControlSchema-BhoJzWzx.js → useControlSchema-aMZlb4Sc.js} +684 -1216
  110. package/dist/useControlSchema-aMZlb4Sc.js.map +1 -0
  111. package/dist/{useDropdownState-DSb3BC3N.js → useDropdownState-DitCtrTT.js} +22 -6
  112. package/dist/useDropdownState-DitCtrTT.js.map +1 -0
  113. package/dist/{useExperimentSelector-D0pjj9WH.js → useExperimentSelector-I8HC8hUu.js} +4 -4
  114. package/dist/{useExperimentSelector-D0pjj9WH.js.map → useExperimentSelector-I8HC8hUu.js.map} +1 -1
  115. package/dist/{useFormBuilder-DiEcDis2.js → useFormBuilder-TCxNnqeb.js} +2 -2
  116. package/dist/{useFormBuilder-DiEcDis2.js.map → useFormBuilder-TCxNnqeb.js.map} +1 -1
  117. package/dist/{useProtocolTemplates-DHwSveE6.js → useProtocolTemplates-BmX_iVBR.js} +660 -197
  118. package/dist/useProtocolTemplates-BmX_iVBR.js.map +1 -0
  119. package/dist/utils/color.d.ts +13 -0
  120. package/dist/utils/errors.d.ts +9 -0
  121. package/dist/utils/pluginSecrets.d.ts +53 -0
  122. package/dist/utils/records.d.ts +4 -0
  123. package/package.json +1 -1
  124. package/src/__tests__/components/ActionMenu.test.ts +94 -0
  125. package/src/__tests__/components/AppAvatarMenu.test.ts +123 -0
  126. package/src/__tests__/components/BaseTabs.test.ts +67 -0
  127. package/src/__tests__/components/DataFrame.test.ts +183 -11
  128. package/src/__tests__/components/DataStates.test.ts +176 -0
  129. package/src/__tests__/components/DatePicker.test.ts +76 -0
  130. package/src/__tests__/components/DateTimePicker.test.ts +36 -0
  131. package/src/__tests__/components/DropdownButton.test.ts +134 -0
  132. package/src/__tests__/components/ExperimentTimeline.test.ts +63 -0
  133. package/src/__tests__/components/GeneratedPluginView.test.ts +0 -5
  134. package/src/__tests__/components/GroupAssigner.test.ts +53 -0
  135. package/src/__tests__/components/JobsStatusTray.test.ts +20 -18
  136. package/src/__tests__/components/LcmsSequenceTable.test.ts +22 -0
  137. package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +230 -0
  138. package/src/__tests__/components/RackEditor.test.ts +35 -0
  139. package/src/__tests__/components/ReagentList.test.ts +64 -2
  140. package/src/__tests__/components/RetiredStyles.test.ts +31 -0
  141. package/src/__tests__/components/SampleSelector.drag.test.ts +51 -1
  142. package/src/__tests__/components/ScheduleCalendar.test.ts +63 -0
  143. package/src/__tests__/components/SecretInput.test.ts +87 -0
  144. package/src/__tests__/components/SegmentedControl.test.ts +88 -0
  145. package/src/__tests__/components/TimePicker.test.ts +61 -0
  146. package/src/__tests__/components/WellEditPopupInternal.test.ts +108 -0
  147. package/src/__tests__/components/WellPlate.interaction.test.ts +59 -0
  148. package/src/__tests__/composables/useAuth.test.ts +25 -0
  149. package/src/__tests__/composables/useDropdownState.test.ts +58 -1
  150. package/src/__tests__/composables/useEventStream.test.ts +140 -0
  151. package/src/__tests__/composables/useGeneratedAnalysis.test.ts +103 -0
  152. package/src/__tests__/composables/useJobsStatusTray.test.ts +25 -161
  153. package/src/__tests__/composables/useListReorder.test.ts +145 -0
  154. package/src/__tests__/composables/usePluginClient.test.ts +148 -13
  155. package/src/__tests__/composables/useRequestSyncState.test.ts +140 -0
  156. package/src/__tests__/docs/frontendDocsCatalog.test.ts +55 -2
  157. package/src/__tests__/stores/settings.test.ts +71 -1
  158. package/src/__tests__/styles/cssTokens.test.ts +131 -0
  159. package/src/__tests__/utils/permissions.test.ts +68 -0
  160. package/src/components/ActionMenu.vue +45 -88
  161. package/src/components/AlertBox.vue +0 -4
  162. package/src/components/AppAvatarMenu.vue +26 -7
  163. package/src/components/AppLayout.vue +0 -4
  164. package/src/components/AppPluginSwitcher.story.vue +87 -0
  165. package/src/components/AppPluginSwitcher.vue +2 -5
  166. package/src/components/AppSidebar.vue +0 -4
  167. package/src/components/AppToastContainer.vue +6 -8
  168. package/src/components/AppTopBar.vue +0 -4
  169. package/src/components/ArtifactSaveDialog.vue +0 -4
  170. package/src/components/ArtifactSelectorModal.vue +0 -4
  171. package/src/components/AuditTrail.story.vue +18 -0
  172. package/src/components/AuditTrail.vue +27 -7
  173. package/src/components/AutoGroupModal.vue +0 -4
  174. package/src/components/Avatar.vue +0 -4
  175. package/src/components/BaseButton.vue +0 -4
  176. package/src/components/BaseCheckbox.vue +0 -4
  177. package/src/components/BaseInput.vue +0 -4
  178. package/src/components/BaseModal.vue +8 -60
  179. package/src/components/BasePill.vue +0 -4
  180. package/src/components/BaseRadioGroup.vue +0 -4
  181. package/src/components/BaseSelect.vue +0 -4
  182. package/src/components/BaseSlider.vue +0 -4
  183. package/src/components/BaseTabs.vue +26 -5
  184. package/src/components/BaseTextarea.vue +0 -4
  185. package/src/components/BaseToggle.vue +0 -4
  186. package/src/components/BatchProgressList.story.vue +18 -0
  187. package/src/components/BatchProgressList.vue +32 -4
  188. package/src/components/BioTemplateExperimentWorkspaceView.vue +10 -21
  189. package/src/components/BioTemplatePackWorkspaceView.vue +11 -15
  190. package/src/components/BioTemplatePresetWorkspaceView.vue +8 -13
  191. package/src/components/Breadcrumb.vue +0 -4
  192. package/src/components/Calendar.vue +0 -4
  193. package/src/components/ChartContainer.story.vue +1 -1
  194. package/src/components/ChartContainer.vue +0 -4
  195. package/src/components/ChemicalFormula.vue +0 -4
  196. package/src/components/CollapsibleCard.vue +0 -4
  197. package/src/components/ColorSlider.vue +0 -4
  198. package/src/components/ComponentBindingRenderer.vue +1 -3
  199. package/src/components/ConcentrationInput.vue +0 -4
  200. package/src/components/ConfirmDialog.vue +0 -4
  201. package/src/components/ControlWorkspaceView.vue +11 -22
  202. package/src/components/DataFrame.story.vue +14 -0
  203. package/src/components/DataFrame.vue +97 -23
  204. package/src/components/DatePicker.vue +73 -27
  205. package/src/components/DateTimePicker.vue +45 -17
  206. package/src/components/Divider.vue +0 -4
  207. package/src/components/DoseCalculator.vue +0 -4
  208. package/src/components/DoseDesignWorkspaceView.vue +6 -25
  209. package/src/components/DropdownButton.vue +24 -6
  210. package/src/components/EmptyState.vue +0 -4
  211. package/src/components/ExperimentCodeBadge.vue +0 -4
  212. package/src/components/ExperimentDataViewer.story.vue +3 -0
  213. package/src/components/ExperimentDataViewer.vue +33 -13
  214. package/src/components/ExperimentPopover.vue +2 -5
  215. package/src/components/ExperimentSelectorModal.vue +0 -4
  216. package/src/components/ExperimentTimeline.story.vue +18 -0
  217. package/src/components/ExperimentTimeline.vue +81 -75
  218. package/src/components/FileUploader.vue +0 -4
  219. package/src/components/FitPanel.vue +0 -4
  220. package/src/components/FormActions.story.vue +96 -0
  221. package/src/components/FormActions.vue +0 -4
  222. package/src/components/FormBuilder.vue +0 -4
  223. package/src/components/FormField.vue +0 -4
  224. package/src/components/FormulaInput.vue +0 -4
  225. package/src/components/GeneratedPathInput.story.vue +68 -0
  226. package/src/components/GeneratedPlotlyResult.story.vue +96 -0
  227. package/src/components/GeneratedPlotlyResult.vue +3 -3
  228. package/src/components/GeneratedPluginView.story.vue +145 -0
  229. package/src/components/GeneratedPluginView.vue +10 -10
  230. package/src/components/GeneratedResultRenderer.story.vue +117 -0
  231. package/src/components/GeneratedResultRenderer.vue +4 -4
  232. package/src/components/GroupAssigner.vue +67 -5
  233. package/src/components/IconButton.vue +0 -4
  234. package/src/components/InstrumentAlertLog.vue +0 -4
  235. package/src/components/InstrumentStateBadge.vue +0 -4
  236. package/src/components/InstrumentStatusCard.vue +0 -4
  237. package/src/components/JobsStatusTray.story.vue +6 -10
  238. package/src/components/JobsStatusTray.vue +0 -4
  239. package/src/components/LcmsSequenceTable.vue +81 -50
  240. package/src/components/LoadingSpinner.vue +0 -4
  241. package/src/components/MobileSupportGate.vue +0 -4
  242. package/src/components/MoleculeInput.vue +0 -4
  243. package/src/components/MultiSelect.vue +0 -4
  244. package/src/components/NumberInput.vue +0 -4
  245. package/src/components/PlateMapEditor.vue +3 -14
  246. package/src/components/PluginIcon.vue +0 -4
  247. package/src/components/PluginWorkspaceView.props.ts +38 -0
  248. package/src/components/PluginWorkspaceView.vue +53 -224
  249. package/src/components/ProgressBar.vue +0 -4
  250. package/src/components/ProtocolStepEditor.vue +2 -4
  251. package/src/components/RackEditor.vue +51 -70
  252. package/src/components/ReagentEditor.vue +0 -4
  253. package/src/components/ReagentList.story.vue +18 -0
  254. package/src/components/ReagentList.vue +127 -82
  255. package/src/components/ResourceCard.vue +0 -4
  256. package/src/components/RuntimeUpdateNotice.story.vue +49 -0
  257. package/src/components/RuntimeUpdateNotice.vue +4 -4
  258. package/src/components/SampleHierarchyTree.story.vue +18 -0
  259. package/src/components/SampleHierarchyTree.vue +32 -9
  260. package/src/components/SampleLegend.vue +2 -8
  261. package/src/components/SampleSelector.drag.ts +51 -0
  262. package/src/components/SampleSelector.story.vue +6 -0
  263. package/src/components/SampleSelector.tree.ts +2 -0
  264. package/src/components/SampleSelector.vue +49 -10
  265. package/src/components/SampleSelectorGroupNode.vue +19 -0
  266. package/src/components/ScheduleCalendar.story.vue +6 -0
  267. package/src/components/ScheduleCalendar.vue +82 -7
  268. package/src/components/ScientificNumber.vue +0 -4
  269. package/src/components/SecretInput.story.vue +79 -0
  270. package/src/components/SecretInput.vue +150 -0
  271. package/src/components/SectionCard.vue +0 -4
  272. package/src/components/SegmentedControl.vue +48 -5
  273. package/src/components/SequenceInput.vue +0 -4
  274. package/src/components/SequenceProgressBar.story.vue +110 -0
  275. package/src/components/SequenceProgressBar.vue +0 -4
  276. package/src/components/SettingsModal.vue +0 -4
  277. package/src/components/Skeleton.vue +0 -4
  278. package/src/components/SmartGroupFieldRecipe.vue +8 -6
  279. package/src/components/SmartGroupManual.vue +0 -4
  280. package/src/components/StatusIndicator.vue +0 -4
  281. package/src/components/StepWizard.vue +0 -4
  282. package/src/components/TagsInput.vue +4 -6
  283. package/src/components/ThemeToggle.vue +0 -4
  284. package/src/components/TimePicker.vue +36 -7
  285. package/src/components/TimeRangeInput.vue +0 -4
  286. package/src/components/Tooltip.story.vue +3 -3
  287. package/src/components/Tooltip.vue +0 -4
  288. package/src/components/UnitInput.vue +0 -4
  289. package/src/components/WellPlate.geometry.ts +60 -1
  290. package/src/components/WellPlate.interaction.ts +44 -0
  291. package/src/components/WellPlate.story.vue +8 -0
  292. package/src/components/WellPlate.vue +53 -7
  293. package/src/components/index.ts +9 -0
  294. package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -5
  295. package/src/components/internal/AppTopBarPillNavInternal.vue +0 -4
  296. package/src/components/internal/DataStateInternal.vue +74 -0
  297. package/src/components/internal/FormSectionRenderer.vue +0 -4
  298. package/src/components/internal/WellEditPopupInternal.vue +20 -5
  299. package/src/components/internal/WorkspaceControlsInternal.vue +20 -0
  300. package/src/components/internal/WorkspaceShellInternal.vue +125 -0
  301. package/src/components/internal/WorkspaceSidebarInternal.vue +82 -0
  302. package/src/composables/controlSchemaTypes.ts +34 -0
  303. package/src/composables/experimentDesignData.ts +1 -3
  304. package/src/composables/flattenWorkspaceBindings.ts +104 -0
  305. package/src/composables/formBuilderRegistry.ts +5 -0
  306. package/src/composables/index.ts +41 -5
  307. package/src/composables/pluginWorkspaceModel.ts +182 -0
  308. package/src/composables/useAsync.ts +5 -1
  309. package/src/composables/useBioTemplatePackWorkspace.ts +15 -9
  310. package/src/composables/useBioTemplatePresetWorkspace.ts +14 -15
  311. package/src/composables/useBioTemplateWorkspace.ts +18 -43
  312. package/src/composables/useCommandHistory.ts +5 -1
  313. package/src/composables/useDropdownState.ts +35 -5
  314. package/src/composables/useEventStream.ts +326 -0
  315. package/src/composables/useFileImport.ts +2 -7
  316. package/src/composables/useFocusTrap.ts +91 -0
  317. package/src/composables/useGeneratedAnalysis.ts +46 -103
  318. package/src/composables/useJobsStatusTray.ts +1 -1
  319. package/src/composables/useListReorder.story.vue +143 -0
  320. package/src/composables/useListReorder.ts +242 -0
  321. package/src/composables/useMenuKeyboard.ts +90 -0
  322. package/src/composables/useOptimisticMutation.ts +6 -16
  323. package/src/composables/usePluginClient.ts +91 -252
  324. package/src/composables/usePluginConfig.ts +3 -1
  325. package/src/composables/usePluginWorkspace.ts +208 -0
  326. package/src/composables/useRackEditor.ts +2 -11
  327. package/src/composables/useRequestSyncState.ts +98 -28
  328. package/src/composables/useResourceCrud.ts +6 -16
  329. package/src/composables/useRovingFocus.ts +66 -0
  330. package/src/composables/useScheduleDrag.ts +37 -0
  331. package/src/composables/useWellPainting.ts +10 -30
  332. package/src/composables/useWellPlateAdapter.ts +5 -1
  333. package/src/composables/useWellPlateEditor.ts +1 -11
  334. package/src/composables/useWellPlateValidation.ts +5 -1
  335. package/src/composables/workspaceRecipes.ts +267 -0
  336. package/src/index.ts +16 -0
  337. package/src/permissions.ts +48 -9
  338. package/src/stores/experiment.ts +2 -7
  339. package/src/stores/index.ts +9 -1
  340. package/src/stores/settings.ts +93 -1
  341. package/src/styles/components/audit-trail.css +5 -5
  342. package/src/styles/components/batch-progress-list.css +7 -0
  343. package/src/styles/components/color-slider.css +2 -2
  344. package/src/styles/components/data-state.css +30 -0
  345. package/src/styles/components/dataframe.css +29 -35
  346. package/src/styles/components/experiment-data-viewer.css +4 -4
  347. package/src/styles/components/experiment-timeline.css +3 -30
  348. package/src/styles/components/form-builder.css +5 -5
  349. package/src/styles/components/lcms-sequence-table.css +16 -1
  350. package/src/styles/components/multi-select.css +1 -1
  351. package/src/styles/components/reagent-list.css +38 -31
  352. package/src/styles/components/sample-hierarchy-tree.css +5 -19
  353. package/src/styles/components/sample-selector.css +9 -2
  354. package/src/styles/components/schedule-calendar.css +8 -0
  355. package/src/styles/components/scientific-number.css +1 -1
  356. package/src/styles/components/secret-input.css +60 -0
  357. package/src/styles/components/well-plate.css +8 -0
  358. package/src/styles/index.css +9 -0
  359. package/src/styles/variables.css +29 -0
  360. package/src/templates/builderPresetControls.ts +1 -1
  361. package/src/templates/builderReadUtils.ts +1 -3
  362. package/src/templates/componentPlateHelpers.ts +3 -1
  363. package/src/templates/componentTargetResolvers.ts +1 -3
  364. package/src/templates/controlSchemaTargets.ts +1 -3
  365. package/src/templates/doseResponseAdapters.ts +2 -13
  366. package/src/templates/elisaAssayCollectionBuilder.ts +2 -2
  367. package/src/templates/plateMapBuilder.ts +2 -2
  368. package/src/templates/qpcrPlateBuilder.ts +1 -1
  369. package/src/templates/templateValidators.ts +1 -1
  370. package/src/templates/timeCourseBuilder.ts +2 -2
  371. package/src/templates/wellPlateScreenCollectionBuilder.ts +2 -2
  372. package/src/types/form-builder.ts +1 -0
  373. package/src/utils/color.ts +51 -0
  374. package/src/utils/errors.ts +29 -0
  375. package/src/utils/formModelSync.ts +1 -3
  376. package/src/utils/pluginIcon.ts +1 -3
  377. package/src/utils/pluginSecrets.ts +102 -0
  378. package/src/utils/records.ts +9 -0
  379. package/dist/EmptyState-p90quq8Z.js.map +0 -1
  380. package/dist/ExperimentPopover-tLwJ7XF4.js.map +0 -1
  381. package/dist/ExperimentSelectorModal-B6P2msT4.js.map +0 -1
  382. package/dist/SettingsModal-BW3Ar-uy.js.map +0 -1
  383. package/dist/components-DQt0tcpY.js.map +0 -1
  384. package/dist/composables/autoGroupConstants.d.ts +0 -1
  385. package/dist/composables/autoGroupGrouping.d.ts +0 -3
  386. package/dist/composables/useAutoGroupInputSources.d.ts +0 -32
  387. package/dist/composables-CkXDe7nm.js.map +0 -1
  388. package/dist/experiment-Y9Iz7KYi.js.map +0 -1
  389. package/dist/experiment-utils-CLnzPPq5.js.map +0 -1
  390. package/dist/templates/builderDefaults.d.ts +0 -1
  391. package/dist/templates/plateGeometry.d.ts +0 -4
  392. package/dist/templates-CovvRZ-9.js.map +0 -1
  393. package/dist/useApi-CDBq6z23.js.map +0 -1
  394. package/dist/useControlSchema-BhoJzWzx.js.map +0 -1
  395. package/dist/useDropdownState-DSb3BC3N.js.map +0 -1
  396. package/dist/useProtocolTemplates-DHwSveE6.js.map +0 -1
  397. package/src/__tests__/composables/useAutoGroupInputSources.test.ts +0 -127
  398. package/src/composables/autoGroupConstants.ts +0 -4
  399. package/src/composables/autoGroupGrouping.ts +0 -148
  400. package/src/composables/useAutoGroupInputSources.ts +0 -147
  401. package/src/templates/builderDefaults.ts +0 -11
  402. package/src/templates/plateGeometry.ts +0 -62
  403. /package/dist/__tests__/{composables/useAutoGroupInputSources.test.d.ts → components/DataStates.test.d.ts} +0 -0
@@ -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
+ };
@@ -30,9 +30,9 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
30
30
  }>, {
31
31
  disabled: boolean;
32
32
  progress: number;
33
+ state: FitState;
33
34
  results: FitResultSummary[];
34
35
  indeterminate: boolean;
35
- state: FitState;
36
36
  cancelLabel: string;
37
37
  progressLabel: string;
38
38
  runLabel: string;
@@ -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
+ };
@@ -1,4 +1,4 @@
1
- import { AccountMenuItem, PageSelectorItemInput, PillNavItemInput, PluginSwitcherInfo, SidebarToolSection, TopBarSettingsConfig, TopBarVariant } from '../types';
1
+ import { AccountMenuItem, ExperimentSummary, PageSelectorItem, PageSelectorItemInput, PillNavItem, PillNavItemInput, PillNavOption, PluginSwitcherInfo, PluginSwitcherPlugin, SidebarToolSection, TopBarSettingsConfig, TopBarVariant } from '../types';
2
2
  import { FormEnhancements, FormSchema } from '../types/form-builder';
3
3
  import { ControlComponentBinding, ControlComponentBindingsById, ControlComponentBindingsConfig, ControlComponentPropsByIdMap, ControlComponentPropsMap, ControlModel, ControlModelBinding, ControlSchema, ControlWorkspaceOptions } from '../composables/useControlSchema';
4
4
  export type PluginWorkspaceSidebarVariant = 'default' | 'analysis';
@@ -134,6 +134,34 @@ export interface PluginWorkspaceViewProps {
134
134
  /** Accessible label used when the mobile sidebar is open. */
135
135
  sidebarCloseLabel?: string;
136
136
  }
137
+ /**
138
+ * Event map for PluginWorkspaceView, shared with the {@link usePluginWorkspace} composable
139
+ * so its internal pieces can emit through the exact same typed contract as the public component.
140
+ */
141
+ export interface PluginWorkspaceViewEmits {
142
+ 'update:activeView': [value: string];
143
+ 'page-selector-select': [page: PageSelectorItem];
144
+ 'pill-select': [item: PillNavItem];
145
+ 'pill-option-select': [option: PillNavOption, item: PillNavItem];
146
+ 'plugin-switcher-select': [plugin: PluginSwitcherPlugin];
147
+ 'plugin-switcher-install': [];
148
+ 'account-menu-select': [item: AccountMenuItem];
149
+ 'sign-out': [];
150
+ 'notifications-click': [];
151
+ 'settings-values-change': [data: Record<string, unknown>];
152
+ 'admin-click': [];
153
+ 'experiment-select': [experiment: ExperimentSummary];
154
+ 'experiment-detach': [];
155
+ 'update:modelValue': [values: Record<string, unknown>];
156
+ 'update:values': [values: Record<string, unknown>];
157
+ 'update:sidebarCollapsed': [value: boolean];
158
+ 'update:toggle': [sectionId: string, value: boolean];
159
+ 'section-action': [sectionId: string, actionId: string];
160
+ 'form-submit': [sectionId: string, values: Record<string, unknown>];
161
+ 'form-cancel': [sectionId: string];
162
+ }
163
+ /** Typed `emit` function shape produced by `defineEmits<PluginWorkspaceViewEmits>()`. */
164
+ export type PluginWorkspaceViewEmit = <K extends keyof PluginWorkspaceViewEmits>(event: K, ...args: PluginWorkspaceViewEmits[K]) => void;
137
165
  export interface PluginWorkspaceSlotProps {
138
166
  activeView: string;
139
167
  setActiveView: (viewId: string) => void;
@@ -1,4 +1,4 @@
1
- import { AccountMenuItem, ExperimentSummary, PageSelectorItem, PillNavItem, PluginSwitcherPlugin, PillNavOption } from '../types';
1
+ import { AccountMenuItem, PillNavItem, PluginSwitcherPlugin, PillNavOption } from '../types';
2
2
  import { PluginWorkspaceForwardedSlotProps, PluginWorkspaceSlotProps, PluginWorkspaceViewProps } from './PluginWorkspaceView.props';
3
3
  declare function __VLS_template(): {
4
4
  attrs: Partial<{}>;
@@ -48,7 +48,7 @@ declare const __VLS_component: import('vue').DefineComponent<PluginWorkspaceView
48
48
  "sign-out": () => any;
49
49
  "update:values": (values: Record<string, unknown>) => any;
50
50
  "admin-click": () => any;
51
- "page-selector-select": (page: PageSelectorItem) => any;
51
+ "page-selector-select": (page: import('..').PageSelectorItem) => any;
52
52
  "pill-select": (item: PillNavItem) => any;
53
53
  "pill-option-select": (option: PillNavOption, item: PillNavItem) => any;
54
54
  "plugin-switcher-select": (plugin: PluginSwitcherPlugin) => any;
@@ -61,7 +61,7 @@ declare const __VLS_component: import('vue').DefineComponent<PluginWorkspaceView
61
61
  "form-submit": (sectionId: string, values: Record<string, unknown>) => any;
62
62
  "form-cancel": (sectionId: string) => any;
63
63
  "update:activeView": (value: string) => any;
64
- "experiment-select": (experiment: ExperimentSummary) => any;
64
+ "experiment-select": (experiment: import('..').ExperimentSummary) => any;
65
65
  "experiment-detach": () => any;
66
66
  "update:sidebarCollapsed": (value: boolean) => any;
67
67
  }, string, import('vue').PublicProps, Readonly<PluginWorkspaceViewProps> & Readonly<{
@@ -69,7 +69,7 @@ declare const __VLS_component: import('vue').DefineComponent<PluginWorkspaceView
69
69
  "onSign-out"?: (() => any) | undefined;
70
70
  "onUpdate:values"?: ((values: Record<string, unknown>) => any) | undefined;
71
71
  "onAdmin-click"?: (() => any) | undefined;
72
- "onPage-selector-select"?: ((page: PageSelectorItem) => any) | undefined;
72
+ "onPage-selector-select"?: ((page: import('..').PageSelectorItem) => any) | undefined;
73
73
  "onPill-select"?: ((item: PillNavItem) => any) | undefined;
74
74
  "onPill-option-select"?: ((option: PillNavOption, item: PillNavItem) => any) | undefined;
75
75
  "onPlugin-switcher-select"?: ((plugin: PluginSwitcherPlugin) => any) | undefined;
@@ -82,7 +82,7 @@ declare const __VLS_component: import('vue').DefineComponent<PluginWorkspaceView
82
82
  "onForm-submit"?: ((sectionId: string, values: Record<string, unknown>) => any) | undefined;
83
83
  "onForm-cancel"?: ((sectionId: string) => any) | undefined;
84
84
  "onUpdate:activeView"?: ((value: string) => any) | undefined;
85
- "onExperiment-select"?: ((experiment: ExperimentSummary) => any) | undefined;
85
+ "onExperiment-select"?: ((experiment: import('..').ExperimentSummary) => any) | undefined;
86
86
  "onExperiment-detach"?: (() => any) | undefined;
87
87
  "onUpdate:sidebarCollapsed"?: ((value: boolean) => any) | undefined;
88
88
  }>, {
@@ -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
+ };
@@ -7,8 +7,28 @@ interface Props {
7
7
  showCounts?: boolean;
8
8
  maxDepth?: number;
9
9
  size?: 'sm' | 'md' | 'lg';
10
+ /** Replace the tree with a loading placeholder. */
11
+ loading?: boolean;
12
+ /**
13
+ * Error message. When set, the tree 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
  collapse: (nodeId: string) => any;
13
33
  "node-click": (node: TreeNode) => any;
14
34
  expand: (nodeId: string) => any;
@@ -17,10 +37,18 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
17
37
  "onNode-click"?: ((node: TreeNode) => any) | undefined;
18
38
  onExpand?: ((nodeId: string) => any) | undefined;
19
39
  }>, {
40
+ error: string | null;
20
41
  size: "sm" | "md" | "lg";
42
+ loading: boolean;
21
43
  showCounts: boolean;
22
44
  defaultExpandedIds: string[];
23
45
  expandAll: boolean;
24
46
  showIcons: 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
+ };
@@ -4,6 +4,19 @@ interface MutableSampleGroups {
4
4
  value: SampleGroup[];
5
5
  }
6
6
  export declare function useSampleSelectorDrag(groups: MutableSampleGroups): {
7
+ announcement: import('vue').Ref<string, string>;
8
+ announcerStyle: Readonly<{
9
+ position: "absolute";
10
+ width: "1px";
11
+ height: "1px";
12
+ padding: "0";
13
+ margin: "-1px";
14
+ overflow: "hidden";
15
+ clip: "rect(0, 0, 0, 0)";
16
+ whiteSpace: "nowrap";
17
+ border: "0";
18
+ }>;
19
+ handleGroupReorderKeydown: (name: string, kind: GroupDragKind, event: KeyboardEvent) => void;
7
20
  draggingSample: import('vue').Ref<string | null, string | null>;
8
21
  dragOverGroup: import('vue').Ref<string | null, string | null>;
9
22
  draggingGroup: import('vue').Ref<string | null, string | null>;
@@ -32,6 +32,8 @@ export interface SampleGroupTreeContext {
32
32
  onGroupDragOver: (name: string, kind: GroupDragKind, event: DragEvent) => void;
33
33
  onGroupDragLeave: (event: DragEvent) => void;
34
34
  onGroupDrop: (name: string, kind: GroupDragKind, event: DragEvent) => void;
35
+ /** Alt+ArrowUp / Alt+ArrowDown reorder a group among its siblings. */
36
+ onGroupReorderKeydown: (name: string, kind: GroupDragKind, event: KeyboardEvent) => void;
35
37
  }
36
38
  /** Every concrete group name beneath a node, in tree order. */
37
39
  export declare function collectLeafGroupNames(node: SampleGroupNode): string[];
@@ -9,9 +9,33 @@ interface Props {
9
9
  experimentId?: number;
10
10
  designData?: Record<string, unknown>;
11
11
  autoloadExperimentData?: boolean;
12
+ /** Replace the selector body with a loading placeholder. */
13
+ loading?: boolean;
14
+ /**
15
+ * Error message. When set, the selector body is replaced by an error state.
16
+ * `null`/`undefined` renders normally.
17
+ */
18
+ error?: string | null;
19
+ /** Empty-state headline shown when there are no samples to select from. */
20
+ emptyMessage?: string;
12
21
  }
13
22
  declare function handleSmartGroupApply(result: AutoGroupResult): void;
14
- declare const _default: import('vue').DefineComponent<Props, {
23
+ declare function __VLS_template(): {
24
+ attrs: Partial<{}>;
25
+ slots: {
26
+ error?(_: {
27
+ error: string;
28
+ }): any;
29
+ loading?(_: {}): any;
30
+ empty?(_: {}): any;
31
+ };
32
+ refs: {
33
+ colorPickerInput: HTMLInputElement;
34
+ };
35
+ rootEl: HTMLDivElement;
36
+ };
37
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
38
+ declare const __VLS_component: import('vue').DefineComponent<Props, {
15
39
  handleSmartGroupApply: typeof handleSmartGroupApply;
16
40
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
17
41
  "update:modelValue": (samples: string[]) => any;
@@ -22,9 +46,12 @@ declare const _default: import('vue').DefineComponent<Props, {
22
46
  "onUpdate:groups"?: ((groups: SampleGroup[]) => any) | undefined;
23
47
  onSmartGroup?: ((result: AutoGroupResult) => any) | undefined;
24
48
  }>, {
49
+ error: string | null;
50
+ loading: boolean;
25
51
  samples: string[];
26
52
  experimentId: number;
27
53
  groups: SampleGroup[];
54
+ emptyMessage: string;
28
55
  designData: Record<string, unknown>;
29
56
  enableGrouping: boolean;
30
57
  enableSmartGroup: boolean;
@@ -32,4 +59,10 @@ declare const _default: import('vue').DefineComponent<Props, {
32
59
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
33
60
  colorPickerInput: HTMLInputElement;
34
61
  }, HTMLDivElement>;
62
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
35
63
  export default _default;
64
+ type __VLS_WithTemplateSlots<T, S> = T & {
65
+ new (): {
66
+ $slots: S;
67
+ };
68
+ };
@@ -14,10 +14,28 @@ interface Props {
14
14
  showNavigation?: boolean;
15
15
  statusColors?: Record<string, string>;
16
16
  locale?: string;
17
+ /** Replace the calendar grid with a loading placeholder. */
18
+ loading?: boolean;
19
+ /**
20
+ * Error message. When set, the calendar grid is replaced by an error state.
21
+ * `null`/`undefined` renders normally.
22
+ */
23
+ error?: string | null;
24
+ /**
25
+ * Opt-in empty-state headline. An empty grid is meaningful on a calendar, so
26
+ * the empty state only replaces it when this message is supplied and there
27
+ * are no events.
28
+ */
29
+ emptyMessage?: string;
17
30
  }
18
31
  declare function __VLS_template(): {
19
32
  attrs: Partial<{}>;
20
33
  slots: {
34
+ error?(_: {
35
+ error: string;
36
+ }): any;
37
+ loading?(_: {}): any;
38
+ empty?(_: {}): any;
21
39
  'day-header'?(_: {
22
40
  date: Date;
23
41
  isToday: boolean;
@@ -86,8 +104,10 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
86
104
  minute: number;
87
105
  }) => any) | undefined;
88
106
  }>, {
107
+ error: string | null;
89
108
  readonly: boolean;
90
109
  view: ScheduleView;
110
+ loading: boolean;
91
111
  locale: string;
92
112
  weekStartsOn: 0 | 1;
93
113
  showNavigation: boolean;
@@ -0,0 +1,28 @@
1
+ import { PluginSecretRef } from '../utils/pluginSecrets';
2
+ type SecretValue = PluginSecretRef | string | null;
3
+ interface Props {
4
+ /** The `$secret` marker from the settings response, a typed string, or `null`. */
5
+ modelValue?: SecretValue;
6
+ placeholder?: string;
7
+ disabled?: boolean;
8
+ error?: boolean;
9
+ size?: 'sm' | 'md' | 'lg';
10
+ /** Label on the control that starts entering a replacement value. */
11
+ changeLabel?: string;
12
+ /** Label on the control that clears a stored secret. */
13
+ clearLabel?: string;
14
+ }
15
+ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
16
+ "update:modelValue": (value: SecretValue) => any;
17
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
18
+ "onUpdate:modelValue"?: ((value: SecretValue) => any) | undefined;
19
+ }>, {
20
+ disabled: boolean;
21
+ error: boolean;
22
+ size: "sm" | "md" | "lg";
23
+ placeholder: string;
24
+ modelValue: SecretValue;
25
+ changeLabel: string;
26
+ clearLabel: string;
27
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
28
+ export default _default;
@@ -23,8 +23,8 @@ declare const _default: import('vue').DefineComponent<SmartGroupFieldRecipeProps
23
23
  "onDownload-template"?: (() => any) | undefined;
24
24
  "onDownload-prefilled"?: (() => any) | undefined;
25
25
  }>, {
26
- samples: SmartGroupSampleRecord[];
27
26
  loading: boolean;
27
+ samples: SmartGroupSampleRecord[];
28
28
  fields: SmartGroupField[];
29
29
  palette: string[];
30
30
  experimentLabel: string;
@@ -34,6 +34,7 @@ declare const _default: import('vue').DefineComponent<SmartGroupFieldRecipeProps
34
34
  canDownloadTemplate: boolean;
35
35
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
36
36
  csvMenuRoot: HTMLDivElement;
37
+ csvMenuTrigger: HTMLButtonElement;
37
38
  fileInput: HTMLInputElement;
38
39
  }, HTMLDivElement>;
39
40
  export default _default;
@@ -24,6 +24,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
24
24
  format: "12h" | "24h";
25
25
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
26
26
  rootRef: HTMLDivElement;
27
+ triggerRef: HTMLInputElement;
27
28
  listRef: HTMLUListElement;
28
29
  }, HTMLDivElement>;
29
30
  export default _default;
@@ -17,7 +17,22 @@ export interface WellPlateSizeConfig {
17
17
  }
18
18
  export declare const PLATE_CONFIGS: Record<WellPlateFormat, WellPlateConfig>;
19
19
  export declare const WELL_PLATE_SIZE_CONFIGS: Record<WellPlateSize, WellPlateSizeConfig>;
20
+ /**
21
+ * Spreadsheet-style row label for a zero-based row index: A…Z, then AA, AB, …
22
+ *
23
+ * This is the single row-label generator for the SDK — plate grids, rack
24
+ * grids, well-id parsing and the template builders all go through it.
25
+ */
26
+ export declare function rowLabel(index: number): string;
27
+ /** Inverse of {@link rowLabel}: 'A' → 0, 'Z' → 25, 'AA' → 26. */
28
+ export declare function rowIndex(label: string): number;
20
29
  export declare function createPlateRowLabels(config: WellPlateConfig): string[];
30
+ /** Every well id of a plate, row-major (A1, A2, … B1, …). */
31
+ export declare function wellIdsForFormat(format: number): string[];
32
+ /** Throw unless `wellId` names a well that exists on a `format`-well plate. */
33
+ export declare function assertWellInFormat(wellId: string, format: number): void;
34
+ /** Coerce an unknown value to a supported plate format, else `fallback`. */
35
+ export declare function readPlateFormat(value: unknown, fallback: WellPlateFormat): WellPlateFormat;
21
36
  export declare function createPlateColumnLabels(config: WellPlateConfig): number[];
22
37
  export declare function createWellGrid(config: WellPlateConfig, rowLabels: string[], wells: Record<string, Partial<Well>>): Well[][];
23
38
  export declare function getRectangleWellIds(start: WellPlateCoordinate, end: WellPlateCoordinate, rowLabels: string[]): Set<string>;
@@ -67,5 +67,18 @@ export declare function useWellPlateInteraction(options: WellPlateInteractionOpt
67
67
  handleDragLeave: () => void;
68
68
  handleDrop: (well: Well, event: DragEvent) => void;
69
69
  handleDragEnd: () => void;
70
+ handleWellMoveKeydown: (well: Well, event: KeyboardEvent) => void;
70
71
  handleKeyDown: (event: KeyboardEvent) => void;
72
+ moveAnnouncement: import('vue').Ref<string, string>;
73
+ moveAnnouncerStyle: Readonly<{
74
+ position: "absolute";
75
+ width: "1px";
76
+ height: "1px";
77
+ padding: "0";
78
+ margin: "-1px";
79
+ overflow: "hidden";
80
+ clip: "rect(0, 0, 0, 0)";
81
+ whiteSpace: "nowrap";
82
+ border: "0";
83
+ }>;
71
84
  };
@@ -25,6 +25,19 @@ interface Props {
25
25
  rowConditions?: RowCondition[];
26
26
  allowSampleDrop?: boolean;
27
27
  sampleDropParser?: WellSampleDropParser;
28
+ /** Replace the plate grid with a loading placeholder. */
29
+ loading?: boolean;
30
+ /**
31
+ * Error message. When set, the plate grid is replaced by an error state.
32
+ * `null`/`undefined` renders normally.
33
+ */
34
+ error?: string | null;
35
+ /**
36
+ * Opt-in empty-state headline. A blank plate is meaningful, so the empty
37
+ * state only replaces the grid when this message is supplied and no wells
38
+ * carry data.
39
+ */
40
+ emptyMessage?: string;
28
41
  }
29
42
  interface WellEditorSlotProps {
30
43
  wellId: string;
@@ -43,8 +56,24 @@ declare function __VLS_template(): {
43
56
  attrs: Partial<{}>;
44
57
  slots: Readonly<{
45
58
  'well-editor'?: (props: WellEditorSlotProps) => unknown;
59
+ /** Replaces the default loading placeholder. */
60
+ loading?: () => unknown;
61
+ /** Replaces the default error placeholder. */
62
+ error?: (props: {
63
+ error: string;
64
+ }) => unknown;
65
+ /** Replaces the default empty placeholder. */
66
+ empty?: () => unknown;
46
67
  }> & {
47
68
  'well-editor'?: (props: WellEditorSlotProps) => unknown;
69
+ /** Replaces the default loading placeholder. */
70
+ loading?: () => unknown;
71
+ /** Replaces the default error placeholder. */
72
+ error?: (props: {
73
+ error: string;
74
+ }) => unknown;
75
+ /** Replaces the default empty placeholder. */
76
+ empty?: () => unknown;
48
77
  };
49
78
  refs: {
50
79
  plateRef: HTMLDivElement;
@@ -6,12 +6,14 @@ export { default as BaseCheckbox } from './BaseCheckbox.vue';
6
6
  export { default as BaseToggle } from './BaseToggle.vue';
7
7
  export { default as BaseRadioGroup } from './BaseRadioGroup.vue';
8
8
  export { default as BaseSlider } from './BaseSlider.vue';
9
+ /** Range slider with a gradient color track and color-coded value badge for threshold visualization. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `BaseSlider` instead. */
9
10
  export { default as ColorSlider } from './ColorSlider.vue';
10
11
  export { default as BaseTabs } from './BaseTabs.vue';
11
12
  export { default as BaseModal } from './BaseModal.vue';
12
13
  export { default as SegmentedControl } from './SegmentedControl.vue';
13
14
  export { default as MultiSelect } from './MultiSelect.vue';
14
15
  export { default as BasePill } from './BasePill.vue';
16
+ /** Button that opens a dropdown menu for selecting one option from a list. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `ActionMenu` instead. */
15
17
  export { default as DropdownButton } from './DropdownButton.vue';
16
18
  export { default as Calendar } from './Calendar.vue';
17
19
  export { default as DataFrame } from './DataFrame.vue';
@@ -19,6 +21,7 @@ export { default as FormField } from './FormField.vue';
19
21
  export { default as DatePicker } from './DatePicker.vue';
20
22
  export { default as TimePicker } from './TimePicker.vue';
21
23
  export { default as TagsInput } from './TagsInput.vue';
24
+ export { default as SecretInput } from './SecretInput.vue';
22
25
  export { default as NumberInput } from './NumberInput.vue';
23
26
  export { default as FileUploader } from './FileUploader.vue';
24
27
  export { default as AlertBox } from './AlertBox.vue';
@@ -78,11 +81,15 @@ export { default as ReagentList } from './ReagentList.vue';
78
81
  export { default as SampleHierarchyTree } from './SampleHierarchyTree.vue';
79
82
  export { default as ProtocolStepEditor } from './ProtocolStepEditor.vue';
80
83
  export { default as ScientificNumber } from './ScientificNumber.vue';
84
+ /** Renders a chemical formula string (H₂O, C₆H₁₂O₆, Ca(OH)₂) with typographically correct subscripts and superscripts for charges. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; no platform replacement is planned. */
81
85
  export { default as ChemicalFormula } from './ChemicalFormula.vue';
82
86
  export { default as SequenceProgressBar } from './SequenceProgressBar.vue';
87
+ /** Filterable instrument alert/event list keyed by each alert's required stable event_key. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; instrument UI moves to the mld-ms plugins. */
83
88
  export { default as InstrumentAlertLog } from './InstrumentAlertLog.vue';
84
89
  export { default as InstrumentStateBadge } from './InstrumentStateBadge.vue';
90
+ /** Compact card for live instrument monitor status, sample, method, sequence progress, and ETA. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; instrument UI moves to the mld-ms plugins. */
85
91
  export { default as InstrumentStatusCard } from './InstrumentStatusCard.vue';
92
+ /** Table for Xcalibur-compatible LCMS sequence rows with optional reorder/remove/duplicate controls. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; instrument UI moves to the mld-ms plugins. */
86
93
  export { default as LcmsSequenceTable } from './LcmsSequenceTable.vue';
87
94
  export { default as FormulaInput } from './FormulaInput.vue';
88
95
  export { default as SequenceInput } from './SequenceInput.vue';
@@ -96,8 +103,10 @@ export { default as FormActions } from './FormActions.vue';
96
103
  export { default as ExperimentDataViewer } from './ExperimentDataViewer.vue';
97
104
  export { default as ExperimentCodeBadge } from './ExperimentCodeBadge.vue';
98
105
  export { default as DateTimePicker } from './DateTimePicker.vue';
106
+ /** Paired start/end time pickers that validate range order and display computed duration. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `TimePicker` instead. */
99
107
  export { default as TimeRangeInput } from './TimeRangeInput.vue';
100
108
  export { default as ScheduleCalendar } from './ScheduleCalendar.vue';
109
+ /** Card displaying a lab resource with availability status, specs, tags, and a book action. @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; no platform replacement is planned. */
101
110
  export { default as ResourceCard } from './ResourceCard.vue';
102
111
  export { default as SectionCard } from './SectionCard.vue';
103
112
  export { default as ExperimentSelectorModal } from './ExperimentSelectorModal.vue';