@morscherlab/mint-sdk 1.2.0-beta.1 → 1.2.0-beta.11

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 (408) hide show
  1. package/README.md +35 -5
  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-DyPAUCLw.js → ExperimentSelectorModal-BeEOomw_.js} +5 -5
  5. package/dist/ExperimentSelectorModal-BeEOomw_.js.map +1 -0
  6. package/dist/{SettingsModal-BgKY93zh.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/useListReorder.test.d.ts +1 -0
  15. package/dist/__tests__/composables/usePluginConfig.test.d.ts +15 -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/AutoGroupModal.vue.d.ts +1 -1
  23. package/dist/components/BatchProgressList.vue.d.ts +17 -0
  24. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
  25. package/dist/components/DataFrame.vue.d.ts +14 -2
  26. package/dist/components/DatePicker.vue.d.ts +1 -1
  27. package/dist/components/DateTimePicker.vue.d.ts +2 -0
  28. package/dist/components/DropdownButton.vue.d.ts +2 -0
  29. package/dist/components/ExperimentDataViewer.vue.d.ts +26 -1
  30. package/dist/components/ExperimentPopover.vue.d.ts +1 -0
  31. package/dist/components/ExperimentTimeline.vue.d.ts +29 -1
  32. package/dist/components/FitPanel.vue.d.ts +1 -1
  33. package/dist/components/JobsStatusTray.vue.d.ts +9 -2
  34. package/dist/components/LcmsSequenceTable.vue.d.ts +29 -1
  35. package/dist/components/PluginWorkspaceView.props.d.ts +29 -1
  36. package/dist/components/PluginWorkspaceView.vue.d.ts +5 -5
  37. package/dist/components/ProgressBar.vue.d.ts +1 -1
  38. package/dist/components/ProtocolStepEditor.vue.d.ts +1 -0
  39. package/dist/components/ReagentList.vue.d.ts +29 -1
  40. package/dist/components/SampleHierarchyTree.vue.d.ts +29 -1
  41. package/dist/components/SampleLegend.vue.d.ts +1 -1
  42. package/dist/components/SampleSelector.drag.d.ts +13 -0
  43. package/dist/components/SampleSelector.tree.d.ts +2 -0
  44. package/dist/components/SampleSelector.vue.d.ts +35 -2
  45. package/dist/components/ScheduleCalendar.vue.d.ts +20 -0
  46. package/dist/components/SecretInput.vue.d.ts +28 -0
  47. package/dist/components/SettingsModal.vue.d.ts +1 -1
  48. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -1
  49. package/dist/components/TimePicker.vue.d.ts +1 -0
  50. package/dist/components/WellPlate.geometry.d.ts +15 -0
  51. package/dist/components/WellPlate.interaction.d.ts +13 -0
  52. package/dist/components/WellPlate.vue.d.ts +29 -0
  53. package/dist/components/index.d.ts +9 -0
  54. package/dist/components/index.js +8 -8
  55. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -0
  56. package/dist/components/internal/DataStateInternal.vue.d.ts +43 -0
  57. package/dist/components/internal/WellEditPopupInternal.vue.d.ts +3 -1
  58. package/dist/components/internal/WorkspaceControlsInternal.vue.d.ts +23 -0
  59. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +70 -0
  60. package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +43 -0
  61. package/dist/{components-DkHddRMl.js → components-CgAUzF8F.js} +2497 -2235
  62. package/dist/components-CgAUzF8F.js.map +1 -0
  63. package/dist/composables/controlSchemaTypes.d.ts +34 -0
  64. package/dist/composables/flattenWorkspaceBindings.d.ts +61 -0
  65. package/dist/composables/index.d.ts +9 -2
  66. package/dist/composables/index.js +10 -10
  67. package/dist/composables/pluginWorkspaceModel.d.ts +164 -0
  68. package/dist/composables/useAsync.d.ts +5 -1
  69. package/dist/composables/useBioTemplateWorkspace.d.ts +4 -20
  70. package/dist/composables/useCommandHistory.d.ts +5 -1
  71. package/dist/composables/useDropdownState.d.ts +18 -2
  72. package/dist/composables/useEventStream.d.ts +9 -0
  73. package/dist/composables/useFocusTrap.d.ts +21 -0
  74. package/dist/composables/useGeneratedAnalysis.d.ts +3 -1
  75. package/dist/composables/useJobsStatusTray.d.ts +25 -1
  76. package/dist/composables/useListReorder.d.ts +90 -0
  77. package/dist/composables/useMenuKeyboard.d.ts +29 -0
  78. package/dist/composables/useOptimisticMutation.d.ts +5 -1
  79. package/dist/composables/usePluginClient.d.ts +2 -0
  80. package/dist/composables/usePluginConfig.d.ts +27 -0
  81. package/dist/composables/usePluginWorkspace.d.ts +51 -0
  82. package/dist/composables/useRequestSyncState.d.ts +42 -2
  83. package/dist/composables/useResourceCrud.d.ts +5 -1
  84. package/dist/composables/useRovingFocus.d.ts +24 -0
  85. package/dist/composables/useScheduleDrag.d.ts +1 -0
  86. package/dist/composables/useWellPainting.d.ts +5 -1
  87. package/dist/composables/useWellPlateAdapter.d.ts +5 -1
  88. package/dist/composables/useWellPlateValidation.d.ts +5 -1
  89. package/dist/composables/workspaceRecipes.d.ts +188 -0
  90. package/dist/{composables-C_i90sGS.js → composables-B_pia3hO.js} +209 -82
  91. package/dist/composables-B_pia3hO.js.map +1 -0
  92. package/dist/{useApi-J6zFkHmn.js → errors-_W0-LbA6.js} +103 -3
  93. package/dist/errors-_W0-LbA6.js.map +1 -0
  94. package/dist/{experiment-Cq145oEW.js → experiment-Cwl9AYxw.js} +3 -8
  95. package/dist/experiment-Cwl9AYxw.js.map +1 -0
  96. package/dist/{experiment-utils-CLnzPPq5.js → experiment-utils-DV3DrvE_.js} +70 -51
  97. package/dist/experiment-utils-DV3DrvE_.js.map +1 -0
  98. package/dist/index.d.ts +1 -0
  99. package/dist/index.js +15 -15
  100. package/dist/install.js +2 -7
  101. package/dist/install.js.map +1 -1
  102. package/dist/permissions.d.ts +42 -1
  103. package/dist/permissions.js +20 -10
  104. package/dist/permissions.js.map +1 -1
  105. package/dist/stores/auth.d.ts +6 -0
  106. package/dist/stores/index.d.ts +1 -1
  107. package/dist/stores/index.js +3 -3
  108. package/dist/stores/settings.d.ts +31 -1
  109. package/dist/styles.css +11247 -29501
  110. package/dist/templates/builderReadUtils.d.ts +1 -1
  111. package/dist/templates/index.js +2 -4
  112. package/dist/{templates-DsP51i-S.js → templates-Qq113pyZ.js} +303 -106
  113. package/dist/templates-Qq113pyZ.js.map +1 -0
  114. package/dist/types/auth.d.ts +1 -0
  115. package/dist/types/form-builder.d.ts +1 -1
  116. package/dist/{useControlSchema-BDx2Olha.js → useControlSchema-aMZlb4Sc.js} +462 -1130
  117. package/dist/useControlSchema-aMZlb4Sc.js.map +1 -0
  118. package/dist/{useDropdownState-DSb3BC3N.js → useDropdownState-DitCtrTT.js} +22 -6
  119. package/dist/useDropdownState-DitCtrTT.js.map +1 -0
  120. package/dist/{useExperimentSelector-CV4iNfMS.js → useExperimentSelector-I8HC8hUu.js} +4 -4
  121. package/dist/{useExperimentSelector-CV4iNfMS.js.map → useExperimentSelector-I8HC8hUu.js.map} +1 -1
  122. package/dist/{useFormBuilder-BLxG3BOX.js → useFormBuilder-TCxNnqeb.js} +2 -2
  123. package/dist/{useFormBuilder-BLxG3BOX.js.map → useFormBuilder-TCxNnqeb.js.map} +1 -1
  124. package/dist/{useProtocolTemplates-CS_SQl6U.js → useProtocolTemplates-BmX_iVBR.js} +766 -212
  125. package/dist/useProtocolTemplates-BmX_iVBR.js.map +1 -0
  126. package/dist/utils/color.d.ts +13 -0
  127. package/dist/utils/errors.d.ts +9 -0
  128. package/dist/utils/pluginSecrets.d.ts +53 -0
  129. package/dist/utils/records.d.ts +4 -0
  130. package/package.json +1 -1
  131. package/src/__tests__/components/ActionMenu.test.ts +94 -0
  132. package/src/__tests__/components/AppAvatarMenu.test.ts +123 -0
  133. package/src/__tests__/components/BaseTabs.test.ts +67 -0
  134. package/src/__tests__/components/DataFrame.test.ts +183 -11
  135. package/src/__tests__/components/DataStates.test.ts +176 -0
  136. package/src/__tests__/components/DatePicker.test.ts +76 -0
  137. package/src/__tests__/components/DateTimePicker.test.ts +36 -0
  138. package/src/__tests__/components/DropdownButton.test.ts +134 -0
  139. package/src/__tests__/components/ExperimentTimeline.test.ts +63 -0
  140. package/src/__tests__/components/GroupAssigner.test.ts +53 -0
  141. package/src/__tests__/components/LcmsSequenceTable.test.ts +22 -0
  142. package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +230 -0
  143. package/src/__tests__/components/RackEditor.test.ts +35 -0
  144. package/src/__tests__/components/ReagentList.test.ts +64 -2
  145. package/src/__tests__/components/RetiredStyles.test.ts +31 -0
  146. package/src/__tests__/components/SampleSelector.drag.test.ts +51 -1
  147. package/src/__tests__/components/ScheduleCalendar.test.ts +63 -0
  148. package/src/__tests__/components/SecretInput.test.ts +87 -0
  149. package/src/__tests__/components/SegmentedControl.test.ts +88 -0
  150. package/src/__tests__/components/TimePicker.test.ts +61 -0
  151. package/src/__tests__/components/WellEditPopupInternal.test.ts +108 -0
  152. package/src/__tests__/components/WellPlate.interaction.test.ts +59 -0
  153. package/src/__tests__/composables/useAuth.test.ts +2 -0
  154. package/src/__tests__/composables/useDropdownState.test.ts +58 -1
  155. package/src/__tests__/composables/useListReorder.test.ts +145 -0
  156. package/src/__tests__/composables/usePluginClient.test.ts +140 -0
  157. package/src/__tests__/composables/usePluginConfig.test.ts +497 -0
  158. package/src/__tests__/composables/useRequestSyncState.test.ts +140 -0
  159. package/src/__tests__/docs/frontendDocsCatalog.test.ts +39 -7
  160. package/src/__tests__/stores/settings.test.ts +71 -1
  161. package/src/__tests__/styles/cssTokens.test.ts +131 -0
  162. package/src/__tests__/utils/permissions.test.ts +68 -0
  163. package/src/components/ActionMenu.vue +45 -88
  164. package/src/components/AlertBox.vue +0 -4
  165. package/src/components/AppAvatarMenu.vue +26 -7
  166. package/src/components/AppLayout.vue +0 -4
  167. package/src/components/AppPluginSwitcher.story.vue +87 -0
  168. package/src/components/AppPluginSwitcher.vue +2 -5
  169. package/src/components/AppSidebar.vue +0 -4
  170. package/src/components/AppToastContainer.vue +6 -8
  171. package/src/components/AppTopBar.vue +0 -4
  172. package/src/components/ArtifactSaveDialog.vue +0 -4
  173. package/src/components/ArtifactSelectorModal.vue +0 -4
  174. package/src/components/AuditTrail.story.vue +18 -0
  175. package/src/components/AuditTrail.vue +27 -7
  176. package/src/components/AutoGroupModal.vue +0 -4
  177. package/src/components/Avatar.vue +0 -4
  178. package/src/components/BaseButton.vue +0 -4
  179. package/src/components/BaseCheckbox.vue +0 -4
  180. package/src/components/BaseInput.vue +0 -4
  181. package/src/components/BaseModal.vue +8 -60
  182. package/src/components/BasePill.vue +0 -4
  183. package/src/components/BaseRadioGroup.vue +0 -4
  184. package/src/components/BaseSelect.vue +0 -4
  185. package/src/components/BaseSlider.vue +0 -4
  186. package/src/components/BaseTabs.vue +26 -5
  187. package/src/components/BaseTextarea.vue +0 -4
  188. package/src/components/BaseToggle.vue +0 -4
  189. package/src/components/BatchProgressList.story.vue +18 -0
  190. package/src/components/BatchProgressList.vue +32 -4
  191. package/src/components/BioTemplateExperimentWorkspaceView.vue +10 -21
  192. package/src/components/BioTemplatePackWorkspaceView.vue +11 -15
  193. package/src/components/BioTemplatePresetWorkspaceView.vue +8 -13
  194. package/src/components/Breadcrumb.vue +0 -4
  195. package/src/components/Calendar.vue +0 -4
  196. package/src/components/ChartContainer.story.vue +1 -1
  197. package/src/components/ChartContainer.vue +0 -4
  198. package/src/components/ChemicalFormula.vue +0 -4
  199. package/src/components/CollapsibleCard.vue +0 -4
  200. package/src/components/ColorSlider.vue +0 -4
  201. package/src/components/ComponentBindingRenderer.vue +1 -3
  202. package/src/components/ConcentrationInput.vue +0 -4
  203. package/src/components/ConfirmDialog.vue +0 -4
  204. package/src/components/ControlWorkspaceView.vue +11 -22
  205. package/src/components/DataFrame.story.vue +14 -0
  206. package/src/components/DataFrame.vue +97 -23
  207. package/src/components/DatePicker.vue +73 -27
  208. package/src/components/DateTimePicker.vue +45 -17
  209. package/src/components/Divider.vue +0 -4
  210. package/src/components/DoseCalculator.vue +0 -4
  211. package/src/components/DoseDesignWorkspaceView.vue +6 -25
  212. package/src/components/DropdownButton.vue +24 -6
  213. package/src/components/EmptyState.vue +0 -4
  214. package/src/components/ExperimentCodeBadge.vue +0 -4
  215. package/src/components/ExperimentDataViewer.story.vue +3 -0
  216. package/src/components/ExperimentDataViewer.vue +33 -13
  217. package/src/components/ExperimentPopover.vue +2 -5
  218. package/src/components/ExperimentSelectorModal.vue +0 -4
  219. package/src/components/ExperimentTimeline.story.vue +18 -0
  220. package/src/components/ExperimentTimeline.vue +81 -75
  221. package/src/components/FileUploader.vue +0 -4
  222. package/src/components/FitPanel.vue +0 -4
  223. package/src/components/FormActions.story.vue +96 -0
  224. package/src/components/FormActions.vue +0 -4
  225. package/src/components/FormBuilder.vue +0 -4
  226. package/src/components/FormField.vue +0 -4
  227. package/src/components/FormulaInput.vue +0 -4
  228. package/src/components/GeneratedPathInput.story.vue +68 -0
  229. package/src/components/GeneratedPlotlyResult.story.vue +96 -0
  230. package/src/components/GeneratedPlotlyResult.vue +3 -3
  231. package/src/components/GeneratedPluginView.story.vue +145 -0
  232. package/src/components/GeneratedPluginView.vue +10 -10
  233. package/src/components/GeneratedResultRenderer.story.vue +117 -0
  234. package/src/components/GeneratedResultRenderer.vue +4 -4
  235. package/src/components/GroupAssigner.vue +67 -5
  236. package/src/components/IconButton.vue +0 -4
  237. package/src/components/InstrumentAlertLog.vue +0 -4
  238. package/src/components/InstrumentStateBadge.vue +0 -4
  239. package/src/components/InstrumentStatusCard.vue +0 -4
  240. package/src/components/JobsStatusTray.vue +16 -5
  241. package/src/components/LcmsSequenceTable.vue +81 -50
  242. package/src/components/LoadingSpinner.vue +0 -4
  243. package/src/components/MobileSupportGate.vue +0 -4
  244. package/src/components/MoleculeInput.vue +0 -4
  245. package/src/components/MultiSelect.vue +0 -4
  246. package/src/components/NumberInput.vue +0 -4
  247. package/src/components/PlateMapEditor.vue +3 -14
  248. package/src/components/PluginIcon.vue +0 -4
  249. package/src/components/PluginWorkspaceView.props.ts +38 -0
  250. package/src/components/PluginWorkspaceView.vue +53 -224
  251. package/src/components/ProgressBar.vue +0 -4
  252. package/src/components/ProtocolStepEditor.vue +2 -4
  253. package/src/components/RackEditor.vue +51 -70
  254. package/src/components/ReagentEditor.vue +0 -4
  255. package/src/components/ReagentList.story.vue +18 -0
  256. package/src/components/ReagentList.vue +127 -82
  257. package/src/components/ResourceCard.vue +0 -4
  258. package/src/components/RuntimeUpdateNotice.story.vue +49 -0
  259. package/src/components/RuntimeUpdateNotice.vue +4 -4
  260. package/src/components/SampleHierarchyTree.story.vue +18 -0
  261. package/src/components/SampleHierarchyTree.vue +32 -9
  262. package/src/components/SampleLegend.vue +2 -8
  263. package/src/components/SampleSelector.drag.ts +51 -0
  264. package/src/components/SampleSelector.story.vue +6 -0
  265. package/src/components/SampleSelector.tree.ts +2 -0
  266. package/src/components/SampleSelector.vue +49 -10
  267. package/src/components/SampleSelectorGroupNode.vue +19 -0
  268. package/src/components/ScheduleCalendar.story.vue +6 -0
  269. package/src/components/ScheduleCalendar.vue +82 -7
  270. package/src/components/ScientificNumber.vue +0 -4
  271. package/src/components/SecretInput.story.vue +79 -0
  272. package/src/components/SecretInput.vue +150 -0
  273. package/src/components/SectionCard.vue +0 -4
  274. package/src/components/SegmentedControl.vue +48 -5
  275. package/src/components/SequenceInput.vue +0 -4
  276. package/src/components/SequenceProgressBar.story.vue +110 -0
  277. package/src/components/SequenceProgressBar.vue +0 -4
  278. package/src/components/SettingsModal.vue +0 -4
  279. package/src/components/Skeleton.vue +0 -4
  280. package/src/components/SmartGroupFieldRecipe.vue +8 -6
  281. package/src/components/SmartGroupManual.vue +0 -4
  282. package/src/components/StatusIndicator.vue +0 -4
  283. package/src/components/StepWizard.vue +0 -4
  284. package/src/components/TagsInput.vue +4 -6
  285. package/src/components/ThemeToggle.vue +0 -4
  286. package/src/components/TimePicker.vue +36 -7
  287. package/src/components/TimeRangeInput.vue +0 -4
  288. package/src/components/Tooltip.story.vue +3 -3
  289. package/src/components/Tooltip.vue +0 -4
  290. package/src/components/UnitInput.vue +0 -4
  291. package/src/components/WellPlate.geometry.ts +60 -1
  292. package/src/components/WellPlate.interaction.ts +44 -0
  293. package/src/components/WellPlate.story.vue +8 -0
  294. package/src/components/WellPlate.vue +53 -7
  295. package/src/components/index.ts +9 -0
  296. package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -5
  297. package/src/components/internal/AppTopBarPillNavInternal.vue +0 -4
  298. package/src/components/internal/DataStateInternal.vue +74 -0
  299. package/src/components/internal/FormSectionRenderer.vue +0 -4
  300. package/src/components/internal/WellEditPopupInternal.vue +20 -5
  301. package/src/components/internal/WorkspaceControlsInternal.vue +20 -0
  302. package/src/components/internal/WorkspaceShellInternal.vue +125 -0
  303. package/src/components/internal/WorkspaceSidebarInternal.vue +82 -0
  304. package/src/composables/controlSchemaTypes.ts +34 -0
  305. package/src/composables/experimentDesignData.ts +1 -3
  306. package/src/composables/flattenWorkspaceBindings.ts +104 -0
  307. package/src/composables/formBuilderRegistry.ts +5 -0
  308. package/src/composables/index.ts +43 -0
  309. package/src/composables/pluginWorkspaceModel.ts +182 -0
  310. package/src/composables/useAsync.ts +5 -1
  311. package/src/composables/useAuth.ts +3 -0
  312. package/src/composables/useBioTemplatePackWorkspace.ts +15 -9
  313. package/src/composables/useBioTemplatePresetWorkspace.ts +14 -15
  314. package/src/composables/useBioTemplateWorkspace.ts +18 -43
  315. package/src/composables/useCommandHistory.ts +5 -1
  316. package/src/composables/useDropdownState.ts +35 -5
  317. package/src/composables/useEventStream.ts +14 -2
  318. package/src/composables/useFileImport.ts +2 -7
  319. package/src/composables/useFocusTrap.ts +91 -0
  320. package/src/composables/useGeneratedAnalysis.ts +22 -10
  321. package/src/composables/useJobsStatusTray.ts +184 -17
  322. package/src/composables/useListReorder.story.vue +143 -0
  323. package/src/composables/useListReorder.ts +242 -0
  324. package/src/composables/useMenuKeyboard.ts +90 -0
  325. package/src/composables/useOptimisticMutation.ts +6 -16
  326. package/src/composables/usePluginClient.ts +47 -4
  327. package/src/composables/usePluginConfig.ts +252 -0
  328. package/src/composables/usePluginWorkspace.ts +208 -0
  329. package/src/composables/useRackEditor.ts +2 -11
  330. package/src/composables/useRequestSyncState.ts +98 -28
  331. package/src/composables/useResourceCrud.ts +6 -16
  332. package/src/composables/useRovingFocus.ts +66 -0
  333. package/src/composables/useScheduleDrag.ts +37 -0
  334. package/src/composables/useWellPainting.ts +10 -30
  335. package/src/composables/useWellPlateAdapter.ts +5 -1
  336. package/src/composables/useWellPlateEditor.ts +1 -11
  337. package/src/composables/useWellPlateValidation.ts +5 -1
  338. package/src/composables/workspaceRecipes.ts +267 -0
  339. package/src/index.ts +16 -0
  340. package/src/permissions.ts +48 -9
  341. package/src/stores/auth.ts +1 -0
  342. package/src/stores/experiment.ts +2 -7
  343. package/src/stores/index.ts +9 -1
  344. package/src/stores/settings.ts +93 -1
  345. package/src/styles/components/audit-trail.css +5 -5
  346. package/src/styles/components/batch-progress-list.css +7 -0
  347. package/src/styles/components/color-slider.css +2 -2
  348. package/src/styles/components/data-state.css +30 -0
  349. package/src/styles/components/dataframe.css +29 -35
  350. package/src/styles/components/experiment-data-viewer.css +4 -4
  351. package/src/styles/components/experiment-timeline.css +3 -30
  352. package/src/styles/components/form-builder.css +5 -5
  353. package/src/styles/components/lcms-sequence-table.css +16 -1
  354. package/src/styles/components/multi-select.css +1 -1
  355. package/src/styles/components/reagent-list.css +38 -31
  356. package/src/styles/components/sample-hierarchy-tree.css +5 -19
  357. package/src/styles/components/sample-selector.css +9 -2
  358. package/src/styles/components/schedule-calendar.css +8 -0
  359. package/src/styles/components/scientific-number.css +1 -1
  360. package/src/styles/components/secret-input.css +60 -0
  361. package/src/styles/components/well-plate.css +8 -0
  362. package/src/styles/index.css +9 -0
  363. package/src/styles/variables.css +29 -0
  364. package/src/templates/builderPresetControls.ts +1 -1
  365. package/src/templates/builderReadUtils.ts +1 -3
  366. package/src/templates/componentPlateHelpers.ts +3 -1
  367. package/src/templates/componentTargetResolvers.ts +1 -3
  368. package/src/templates/controlSchemaTargets.ts +1 -3
  369. package/src/templates/doseResponseAdapters.ts +2 -13
  370. package/src/templates/elisaAssayCollectionBuilder.ts +2 -2
  371. package/src/templates/plateMapBuilder.ts +2 -2
  372. package/src/templates/qpcrPlateBuilder.ts +1 -1
  373. package/src/templates/templateValidators.ts +1 -1
  374. package/src/templates/timeCourseBuilder.ts +2 -2
  375. package/src/templates/wellPlateScreenCollectionBuilder.ts +2 -2
  376. package/src/types/auth.ts +1 -0
  377. package/src/types/form-builder.ts +1 -0
  378. package/src/utils/color.ts +51 -0
  379. package/src/utils/errors.ts +29 -0
  380. package/src/utils/formModelSync.ts +1 -3
  381. package/src/utils/pluginIcon.ts +1 -3
  382. package/src/utils/pluginSecrets.ts +102 -0
  383. package/src/utils/records.ts +9 -0
  384. package/dist/EmptyState-p90quq8Z.js.map +0 -1
  385. package/dist/ExperimentPopover-tLwJ7XF4.js.map +0 -1
  386. package/dist/ExperimentSelectorModal-DyPAUCLw.js.map +0 -1
  387. package/dist/SettingsModal-BgKY93zh.js.map +0 -1
  388. package/dist/components-DkHddRMl.js.map +0 -1
  389. package/dist/composables/autoGroupConstants.d.ts +0 -1
  390. package/dist/composables/autoGroupGrouping.d.ts +0 -3
  391. package/dist/composables/useAutoGroupInputSources.d.ts +0 -32
  392. package/dist/composables-C_i90sGS.js.map +0 -1
  393. package/dist/experiment-Cq145oEW.js.map +0 -1
  394. package/dist/experiment-utils-CLnzPPq5.js.map +0 -1
  395. package/dist/templates/builderDefaults.d.ts +0 -1
  396. package/dist/templates/plateGeometry.d.ts +0 -4
  397. package/dist/templates-DsP51i-S.js.map +0 -1
  398. package/dist/useApi-J6zFkHmn.js.map +0 -1
  399. package/dist/useControlSchema-BDx2Olha.js.map +0 -1
  400. package/dist/useDropdownState-DSb3BC3N.js.map +0 -1
  401. package/dist/useProtocolTemplates-CS_SQl6U.js.map +0 -1
  402. package/src/__tests__/composables/useAutoGroupInputSources.test.ts +0 -127
  403. package/src/composables/autoGroupConstants.ts +0 -4
  404. package/src/composables/autoGroupGrouping.ts +0 -148
  405. package/src/composables/useAutoGroupInputSources.ts +0 -147
  406. package/src/templates/builderDefaults.ts +0 -11
  407. package/src/templates/plateGeometry.ts +0 -62
  408. /package/dist/__tests__/{composables/useAutoGroupInputSources.test.d.ts → components/DataStates.test.d.ts} +0 -0
@@ -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
+ };
@@ -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;
@@ -1,7 +1,14 @@
1
- import { PluginJobCenterSource } from '../composables/useJobsStatusTray';
2
- import { JobState } from '../types/jobs';
1
+ import { JobsStatusTrayAdapter, PluginJobCenterSource } from '../composables/useJobsStatusTray';
2
+ import { UsePluginEventStreamReturn } from '../composables/usePluginClient';
3
+ import { JobState, JobStateInput, JobStreamData } from '../types/jobs';
3
4
  interface Props {
4
5
  source?: PluginJobCenterSource;
6
+ /** @deprecated Pass a source instead. */
7
+ jobs?: readonly JobStateInput[];
8
+ /** @deprecated Pass source actions instead. */
9
+ adapter?: JobsStatusTrayAdapter;
10
+ /** @deprecated Event streams belong to the source runtime. */
11
+ eventStream?: UsePluginEventStreamReturn<JobStreamData>;
5
12
  loadOnMount?: boolean;
6
13
  title?: string;
7
14
  teleportTo?: string | HTMLElement | false;
@@ -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
+ };
@@ -24,8 +24,8 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
24
24
  size: "sm" | "md" | "lg";
25
25
  modelValue: string;
26
26
  colorPalette: string[];
27
- orientation: "vertical" | "horizontal";
28
27
  samples: SampleType[];
28
+ orientation: "vertical" | "horizontal";
29
29
  editable: boolean;
30
30
  showCounts: boolean;
31
31
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
@@ -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;
51
+ samples: string[];
25
52
  experimentId: number;
26
53
  groups: SampleGroup[];
27
- samples: string[];
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;
@@ -57,9 +57,9 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
57
57
  }>, {
58
58
  size: "md" | "lg" | "xl";
59
59
  title: string;
60
+ showAppearance: boolean;
60
61
  tabs: SettingsTabInput[];
61
62
  layout: SettingsModalLayout;
62
- showAppearance: boolean;
63
63
  model: ControlModel | ControlModelBinding;
64
64
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
65
65
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
@@ -24,8 +24,8 @@ declare const _default: import('vue').DefineComponent<SmartGroupFieldRecipeProps
24
24
  "onDownload-prefilled"?: (() => any) | undefined;
25
25
  }>, {
26
26
  loading: boolean;
27
- fields: SmartGroupField[];
28
27
  samples: SmartGroupSampleRecord[];
28
+ fields: SmartGroupField[];
29
29
  palette: string[];
30
30
  experimentLabel: string;
31
31
  headerCount: number;
@@ -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
  };