@morscherlab/mint-sdk 1.2.0-beta.2 → 1.2.0-beta.20

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 (493) hide show
  1. package/README.md +65 -5
  2. package/dist/{ExperimentPopover-tLwJ7XF4.js → ExperimentPopover-CJdNlCZb.js} +24 -15
  3. package/dist/ExperimentPopover-CJdNlCZb.js.map +1 -0
  4. package/dist/{ExperimentSelectorModal-DyPAUCLw.js → ExperimentSelectorModal-DCXmwKNS.js} +5 -5
  5. package/dist/ExperimentSelectorModal-DCXmwKNS.js.map +1 -0
  6. package/dist/{SettingsModal-BgKY93zh.js → SettingsModal-BYR20I4c.js} +5 -8
  7. package/dist/SettingsModal-BYR20I4c.js.map +1 -0
  8. package/dist/{EmptyState-p90quq8Z.js → Skeleton-BAF3CKY7.js} +111 -93
  9. package/dist/Skeleton-BAF3CKY7.js.map +1 -0
  10. package/dist/__tests__/components/DataStates.test.d.ts +1 -0
  11. package/dist/__tests__/components/ExperimentTimeline.test.d.ts +1 -0
  12. package/dist/__tests__/components/FileBrowserModal.test.d.ts +1 -0
  13. package/dist/__tests__/components/FilePicker.state.test.d.ts +1 -0
  14. package/dist/__tests__/components/FilePicker.test.d.ts +1 -0
  15. package/dist/__tests__/components/PlotlyChart.test.d.ts +1 -0
  16. package/dist/__tests__/components/PluginWorkspaceView.internal.test.d.ts +1 -0
  17. package/dist/__tests__/components/SecretInput.test.d.ts +1 -0
  18. package/dist/__tests__/components/WellEditPopupInternal.test.d.ts +1 -0
  19. package/dist/__tests__/components/iconButtonIconSizing.test.d.ts +1 -0
  20. package/dist/__tests__/composables/useFileBrowser.test.d.ts +1 -0
  21. package/dist/__tests__/composables/useListReorder.test.d.ts +1 -0
  22. package/dist/__tests__/composables/usePlatformFilePickerAdapter.test.d.ts +1 -0
  23. package/dist/__tests__/composables/usePluginConfig.test.d.ts +15 -0
  24. package/dist/__tests__/styles/cssTokens.test.d.ts +1 -0
  25. package/dist/apiErrors.d.ts +26 -0
  26. package/dist/components/ActionMenu.vue.d.ts +1 -1
  27. package/dist/components/AppAvatarMenu.vue.d.ts +4 -0
  28. package/dist/components/AppPluginSwitcher.vue.d.ts +2 -0
  29. package/dist/components/AppSidebar.vue.d.ts +1 -1
  30. package/dist/components/AuditTrail.vue.d.ts +13 -0
  31. package/dist/components/AutoGroupModal.vue.d.ts +1 -1
  32. package/dist/components/BaseInput.vue.d.ts +1 -1
  33. package/dist/components/BaseSelect.vue.d.ts +1 -1
  34. package/dist/components/BaseTextarea.vue.d.ts +1 -1
  35. package/dist/components/BatchProgressList.vue.d.ts +17 -0
  36. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +4 -4
  37. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +2 -2
  38. package/dist/components/ConcentrationInput.vue.d.ts +1 -1
  39. package/dist/components/DataFrame.vue.d.ts +14 -2
  40. package/dist/components/DatePicker.vue.d.ts +2 -2
  41. package/dist/components/DateTimePicker.vue.d.ts +3 -1
  42. package/dist/components/DropdownButton.vue.d.ts +2 -0
  43. package/dist/components/ExperimentDataViewer.vue.d.ts +26 -1
  44. package/dist/components/ExperimentPopover.vue.d.ts +1 -0
  45. package/dist/components/ExperimentTimeline.vue.d.ts +29 -1
  46. package/dist/components/FileBrowserModal.vue.d.ts +99 -0
  47. package/dist/components/FilePicker.vue.d.ts +32 -0
  48. package/dist/components/FileUploader.vue.d.ts +5 -2
  49. package/dist/components/FitPanel.vue.d.ts +1 -1
  50. package/dist/components/FormulaInput.vue.d.ts +1 -1
  51. package/dist/components/GeneratedPlotlyResult.vue.d.ts +1 -3
  52. package/dist/components/JobsStatusTray.vue.d.ts +9 -2
  53. package/dist/components/LcmsSequenceTable.vue.d.ts +29 -1
  54. package/dist/components/MobileSupportGate.vue.d.ts +1 -1
  55. package/dist/components/MoleculeInput.vue.d.ts +1 -1
  56. package/dist/components/NumberInput.vue.d.ts +1 -1
  57. package/dist/components/PlotlyChart.vue.d.ts +59 -0
  58. package/dist/components/PluginWorkspaceView.props.d.ts +29 -1
  59. package/dist/components/PluginWorkspaceView.vue.d.ts +5 -5
  60. package/dist/components/ProgressBar.vue.d.ts +1 -1
  61. package/dist/components/ProtocolStepEditor.vue.d.ts +1 -0
  62. package/dist/components/ReagentList.vue.d.ts +29 -1
  63. package/dist/components/ResourceCard.vue.d.ts +1 -1
  64. package/dist/components/SampleHierarchyTree.vue.d.ts +29 -1
  65. package/dist/components/SampleLegend.vue.d.ts +1 -1
  66. package/dist/components/SampleSelector.drag.d.ts +13 -0
  67. package/dist/components/SampleSelector.tree.d.ts +2 -0
  68. package/dist/components/SampleSelector.vue.d.ts +35 -2
  69. package/dist/components/ScheduleCalendar.vue.d.ts +20 -0
  70. package/dist/components/SecretInput.vue.d.ts +28 -0
  71. package/dist/components/SequenceInput.vue.d.ts +1 -1
  72. package/dist/components/SettingsModal.vue.d.ts +1 -1
  73. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -1
  74. package/dist/components/StatusIndicator.vue.d.ts +1 -1
  75. package/dist/components/TagsInput.vue.d.ts +1 -1
  76. package/dist/components/TimePicker.vue.d.ts +2 -1
  77. package/dist/components/TimeRangeInput.vue.d.ts +1 -1
  78. package/dist/components/UnitInput.vue.d.ts +1 -1
  79. package/dist/components/WellPlate.geometry.d.ts +15 -0
  80. package/dist/components/WellPlate.interaction.d.ts +13 -0
  81. package/dist/components/WellPlate.vue.d.ts +30 -1
  82. package/dist/components/fileBrowserPresentation.d.ts +10 -0
  83. package/dist/components/index.d.ts +13 -0
  84. package/dist/components/index.js +8 -8
  85. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -0
  86. package/dist/components/internal/DataStateInternal.vue.d.ts +43 -0
  87. package/dist/components/internal/FileBrowserDialogInternal.vue.d.ts +34 -0
  88. package/dist/components/internal/FileBrowserListingInternal.vue.d.ts +25 -0
  89. package/dist/components/internal/FileBrowserToolbarInternal.vue.d.ts +26 -0
  90. package/dist/components/internal/FilePickerPreviewInternal.vue.d.ts +18 -0
  91. package/dist/components/internal/FilePickerTreeInternal.vue.d.ts +31 -0
  92. package/dist/components/internal/WellEditPopupInternal.vue.d.ts +3 -1
  93. package/dist/components/internal/WorkspaceControlsInternal.vue.d.ts +23 -0
  94. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +70 -0
  95. package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +43 -0
  96. package/dist/{components-DkHddRMl.js → components-DIum5hkx.js} +5882 -3200
  97. package/dist/components-DIum5hkx.js.map +1 -0
  98. package/dist/composables/controlSchemaTypes.d.ts +34 -0
  99. package/dist/composables/filePicker/localFiles.d.ts +3 -0
  100. package/dist/composables/filePicker/usePickerNavigation.d.ts +96 -0
  101. package/dist/composables/filePicker/usePickerSelection.d.ts +31 -0
  102. package/dist/composables/filePicker/validation.d.ts +5 -0
  103. package/dist/composables/flattenWorkspaceBindings.d.ts +61 -0
  104. package/dist/composables/index.d.ts +11 -2
  105. package/dist/composables/index.js +10 -10
  106. package/dist/composables/pluginWorkspaceModel.d.ts +164 -0
  107. package/dist/composables/useApi.d.ts +14 -7
  108. package/dist/composables/useAsync.d.ts +5 -1
  109. package/dist/composables/useBioTemplateWorkspace.d.ts +4 -20
  110. package/dist/composables/useCommandHistory.d.ts +5 -1
  111. package/dist/composables/useDropdownState.d.ts +18 -2
  112. package/dist/composables/useEventStream.d.ts +9 -0
  113. package/dist/composables/useFileBrowser.d.ts +55 -0
  114. package/dist/composables/useFilePicker.d.ts +189 -0
  115. package/dist/composables/useFocusTrap.d.ts +21 -0
  116. package/dist/composables/useGeneratedAnalysis.d.ts +3 -1
  117. package/dist/composables/useJobsStatusTray.d.ts +25 -1
  118. package/dist/composables/useListReorder.d.ts +90 -0
  119. package/dist/composables/useMenuKeyboard.d.ts +29 -0
  120. package/dist/composables/useOptimisticMutation.d.ts +5 -1
  121. package/dist/composables/usePlatformFilePickerAdapter.d.ts +11 -0
  122. package/dist/composables/usePluginClient.d.ts +2 -0
  123. package/dist/composables/usePluginConfig.d.ts +27 -0
  124. package/dist/composables/usePluginWorkspace.d.ts +51 -0
  125. package/dist/composables/useRequestSyncState.d.ts +42 -2
  126. package/dist/composables/useResourceCrud.d.ts +5 -1
  127. package/dist/composables/useRovingFocus.d.ts +24 -0
  128. package/dist/composables/useScheduleDrag.d.ts +1 -0
  129. package/dist/composables/useWellPainting.d.ts +5 -1
  130. package/dist/composables/useWellPlateAdapter.d.ts +5 -1
  131. package/dist/composables/useWellPlateValidation.d.ts +5 -1
  132. package/dist/composables/workspaceRecipes.d.ts +188 -0
  133. package/dist/{composables-C_i90sGS.js → composables-mFXsTA4g.js} +502 -86
  134. package/dist/composables-mFXsTA4g.js.map +1 -0
  135. package/dist/{useApi-J6zFkHmn.js → errors-BLuqMee5.js} +179 -16
  136. package/dist/errors-BLuqMee5.js.map +1 -0
  137. package/dist/{experiment-Cq145oEW.js → experiment-CVDRAnqp.js} +3 -8
  138. package/dist/experiment-CVDRAnqp.js.map +1 -0
  139. package/dist/{experiment-utils-CLnzPPq5.js → experiment-utils-CV2Wza3z.js} +70 -51
  140. package/dist/experiment-utils-CV2Wza3z.js.map +1 -0
  141. package/dist/index.d.ts +2 -0
  142. package/dist/index.js +15 -15
  143. package/dist/install.js +2 -7
  144. package/dist/install.js.map +1 -1
  145. package/dist/permissions.d.ts +42 -1
  146. package/dist/permissions.js +20 -10
  147. package/dist/permissions.js.map +1 -1
  148. package/dist/stores/auth.d.ts +6 -0
  149. package/dist/stores/index.d.ts +1 -1
  150. package/dist/stores/index.js +3 -3
  151. package/dist/stores/settings.d.ts +31 -1
  152. package/dist/styles.css +15135 -32397
  153. package/dist/templates/builderReadUtils.d.ts +1 -1
  154. package/dist/templates/index.js +2 -4
  155. package/dist/{templates-DsP51i-S.js → templates-CmGfmBRA.js} +303 -106
  156. package/dist/templates-CmGfmBRA.js.map +1 -0
  157. package/dist/types/auth.d.ts +1 -0
  158. package/dist/types/fileBrowserTypes.d.ts +77 -0
  159. package/dist/types/filePicker.d.ts +77 -0
  160. package/dist/types/form-builder.d.ts +1 -1
  161. package/dist/types/index.d.ts +2 -0
  162. package/dist/{useControlSchema-BDx2Olha.js → useControlSchema-DldpxNOP.js} +499 -1162
  163. package/dist/useControlSchema-DldpxNOP.js.map +1 -0
  164. package/dist/{useDropdownState-DSb3BC3N.js → useDropdownState-C7hRiVQf.js} +22 -6
  165. package/dist/useDropdownState-C7hRiVQf.js.map +1 -0
  166. package/dist/{useExperimentSelector-CV4iNfMS.js → useExperimentSelector-CEcIaueJ.js} +4 -4
  167. package/dist/{useExperimentSelector-CV4iNfMS.js.map → useExperimentSelector-CEcIaueJ.js.map} +1 -1
  168. package/dist/{useFormBuilder-BLxG3BOX.js → useFormBuilder-z5L_dUIy.js} +2 -2
  169. package/dist/{useFormBuilder-BLxG3BOX.js.map → useFormBuilder-z5L_dUIy.js.map} +1 -1
  170. package/dist/utils/color.d.ts +13 -0
  171. package/dist/utils/errors.d.ts +9 -0
  172. package/dist/utils/pluginSecrets.d.ts +53 -0
  173. package/dist/utils/records.d.ts +4 -0
  174. package/dist/{useProtocolTemplates-CS_SQl6U.js → validation-uwoJGEb6.js} +811 -212
  175. package/dist/validation-uwoJGEb6.js.map +1 -0
  176. package/package.json +1 -1
  177. package/src/__tests__/apiErrors.test.ts +81 -0
  178. package/src/__tests__/components/ActionMenu.test.ts +94 -0
  179. package/src/__tests__/components/AppAvatarMenu.test.ts +123 -0
  180. package/src/__tests__/components/BaseTabs.test.ts +67 -0
  181. package/src/__tests__/components/DataFrame.test.ts +183 -11
  182. package/src/__tests__/components/DataStates.test.ts +176 -0
  183. package/src/__tests__/components/DatePicker.test.ts +76 -0
  184. package/src/__tests__/components/DateTimePicker.test.ts +36 -0
  185. package/src/__tests__/components/DropdownButton.test.ts +134 -0
  186. package/src/__tests__/components/ExperimentPopover.test.ts +30 -0
  187. package/src/__tests__/components/ExperimentTimeline.test.ts +63 -0
  188. package/src/__tests__/components/FileBrowserModal.test.ts +460 -0
  189. package/src/__tests__/components/FilePicker.state.test.ts +287 -0
  190. package/src/__tests__/components/FilePicker.test.ts +487 -0
  191. package/src/__tests__/components/GeneratedPlotlyResult.test.ts +52 -5
  192. package/src/__tests__/components/GroupAssigner.test.ts +53 -0
  193. package/src/__tests__/components/LcmsSequenceTable.test.ts +22 -0
  194. package/src/__tests__/components/PlotlyChart.test.ts +305 -0
  195. package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +230 -0
  196. package/src/__tests__/components/RackEditor.test.ts +35 -0
  197. package/src/__tests__/components/ReagentList.test.ts +64 -2
  198. package/src/__tests__/components/RetiredStyles.test.ts +31 -0
  199. package/src/__tests__/components/SampleSelector.drag.test.ts +51 -1
  200. package/src/__tests__/components/ScheduleCalendar.test.ts +63 -0
  201. package/src/__tests__/components/SecretInput.test.ts +87 -0
  202. package/src/__tests__/components/SegmentedControl.test.ts +107 -0
  203. package/src/__tests__/components/TimePicker.test.ts +61 -0
  204. package/src/__tests__/components/WellEditPopupInternal.test.ts +108 -0
  205. package/src/__tests__/components/WellPlate.interaction.test.ts +59 -0
  206. package/src/__tests__/components/iconButtonIconSizing.test.ts +18 -0
  207. package/src/__tests__/composables/useApi.test.ts +92 -9
  208. package/src/__tests__/composables/useAuth.test.ts +2 -0
  209. package/src/__tests__/composables/useDropdownState.test.ts +58 -1
  210. package/src/__tests__/composables/useFileBrowser.test.ts +305 -0
  211. package/src/__tests__/composables/useGeneratedAnalysis.test.ts +7 -2
  212. package/src/__tests__/composables/useListReorder.test.ts +145 -0
  213. package/src/__tests__/composables/usePlatformFilePickerAdapter.test.ts +67 -0
  214. package/src/__tests__/composables/usePluginClient.test.ts +143 -0
  215. package/src/__tests__/composables/usePluginConfig.test.ts +497 -0
  216. package/src/__tests__/composables/useRequestSyncState.test.ts +140 -0
  217. package/src/__tests__/docs/frontendDocsCatalog.test.ts +39 -7
  218. package/src/__tests__/stores/settings.test.ts +71 -1
  219. package/src/__tests__/styles/cssTokens.test.ts +131 -0
  220. package/src/__tests__/utils/permissions.test.ts +68 -0
  221. package/src/apiErrors.ts +85 -0
  222. package/src/components/ActionMenu.vue +45 -88
  223. package/src/components/AlertBox.vue +0 -4
  224. package/src/components/AppAvatarMenu.vue +26 -7
  225. package/src/components/AppLayout.vue +0 -4
  226. package/src/components/AppPluginSwitcher.story.vue +87 -0
  227. package/src/components/AppPluginSwitcher.vue +2 -5
  228. package/src/components/AppSidebar.vue +0 -4
  229. package/src/components/AppToastContainer.vue +6 -8
  230. package/src/components/AppTopBar.vue +0 -4
  231. package/src/components/ArtifactSaveDialog.vue +0 -4
  232. package/src/components/ArtifactSelectorModal.vue +0 -4
  233. package/src/components/AuditTrail.story.vue +18 -0
  234. package/src/components/AuditTrail.vue +27 -7
  235. package/src/components/AutoGroupModal.vue +0 -4
  236. package/src/components/Avatar.vue +0 -4
  237. package/src/components/BaseButton.vue +0 -4
  238. package/src/components/BaseCheckbox.vue +0 -4
  239. package/src/components/BaseInput.vue +0 -4
  240. package/src/components/BaseModal.vue +8 -60
  241. package/src/components/BasePill.vue +0 -4
  242. package/src/components/BaseRadioGroup.vue +0 -4
  243. package/src/components/BaseSelect.vue +0 -4
  244. package/src/components/BaseSlider.vue +0 -4
  245. package/src/components/BaseTabs.vue +26 -5
  246. package/src/components/BaseTextarea.vue +0 -4
  247. package/src/components/BaseToggle.vue +0 -4
  248. package/src/components/BatchProgressList.story.vue +18 -0
  249. package/src/components/BatchProgressList.vue +32 -4
  250. package/src/components/BioTemplateExperimentWorkspaceView.vue +10 -21
  251. package/src/components/BioTemplatePackWorkspaceView.vue +11 -15
  252. package/src/components/BioTemplatePresetWorkspaceView.vue +8 -13
  253. package/src/components/Breadcrumb.vue +0 -4
  254. package/src/components/Calendar.vue +0 -4
  255. package/src/components/ChartContainer.story.vue +1 -1
  256. package/src/components/ChartContainer.vue +0 -4
  257. package/src/components/ChemicalFormula.vue +0 -4
  258. package/src/components/CollapsibleCard.vue +0 -4
  259. package/src/components/ColorSlider.vue +0 -4
  260. package/src/components/ComponentBindingRenderer.vue +1 -3
  261. package/src/components/ConcentrationInput.vue +0 -4
  262. package/src/components/ConfirmDialog.vue +0 -4
  263. package/src/components/ControlWorkspaceView.vue +11 -22
  264. package/src/components/DataFrame.story.vue +14 -0
  265. package/src/components/DataFrame.vue +97 -23
  266. package/src/components/DatePicker.vue +73 -27
  267. package/src/components/DateTimePicker.vue +45 -17
  268. package/src/components/Divider.vue +0 -4
  269. package/src/components/DoseCalculator.vue +0 -4
  270. package/src/components/DoseDesignWorkspaceView.vue +6 -25
  271. package/src/components/DropdownButton.vue +24 -6
  272. package/src/components/EmptyState.vue +0 -4
  273. package/src/components/ExperimentCodeBadge.vue +0 -4
  274. package/src/components/ExperimentDataViewer.story.vue +3 -0
  275. package/src/components/ExperimentDataViewer.vue +33 -13
  276. package/src/components/ExperimentPopover.vue +12 -7
  277. package/src/components/ExperimentSelectorModal.vue +0 -4
  278. package/src/components/ExperimentTimeline.story.vue +18 -0
  279. package/src/components/ExperimentTimeline.vue +81 -75
  280. package/src/components/FileBrowserModal.story.vue +203 -0
  281. package/src/components/FileBrowserModal.vue +384 -0
  282. package/src/components/FilePicker.story.vue +44 -0
  283. package/src/components/FilePicker.vue +284 -0
  284. package/src/components/FileUploader.vue +32 -18
  285. package/src/components/FitPanel.vue +0 -4
  286. package/src/components/FormActions.story.vue +96 -0
  287. package/src/components/FormActions.vue +0 -4
  288. package/src/components/FormBuilder.vue +0 -4
  289. package/src/components/FormField.vue +0 -4
  290. package/src/components/FormulaInput.vue +0 -4
  291. package/src/components/GeneratedPathInput.story.vue +68 -0
  292. package/src/components/GeneratedPlotlyResult.story.vue +96 -0
  293. package/src/components/GeneratedPlotlyResult.vue +34 -69
  294. package/src/components/GeneratedPluginView.story.vue +145 -0
  295. package/src/components/GeneratedPluginView.vue +10 -10
  296. package/src/components/GeneratedResultRenderer.story.vue +117 -0
  297. package/src/components/GeneratedResultRenderer.vue +4 -9
  298. package/src/components/GroupAssigner.vue +67 -5
  299. package/src/components/IconButton.vue +0 -4
  300. package/src/components/InstrumentAlertLog.vue +0 -4
  301. package/src/components/InstrumentStateBadge.vue +0 -4
  302. package/src/components/InstrumentStatusCard.vue +0 -4
  303. package/src/components/JobsStatusTray.vue +16 -5
  304. package/src/components/LcmsSequenceTable.vue +81 -50
  305. package/src/components/LoadingSpinner.vue +0 -4
  306. package/src/components/MobileSupportGate.vue +0 -4
  307. package/src/components/MoleculeInput.vue +0 -4
  308. package/src/components/MultiSelect.vue +0 -4
  309. package/src/components/NumberInput.vue +0 -4
  310. package/src/components/PlateMapEditor.vue +3 -14
  311. package/src/components/PlotlyChart.story.vue +61 -0
  312. package/src/components/PlotlyChart.vue +233 -0
  313. package/src/components/PluginIcon.vue +0 -4
  314. package/src/components/PluginWorkspaceView.props.ts +38 -0
  315. package/src/components/PluginWorkspaceView.vue +53 -224
  316. package/src/components/ProgressBar.vue +0 -4
  317. package/src/components/ProtocolStepEditor.vue +2 -4
  318. package/src/components/RackEditor.vue +51 -70
  319. package/src/components/ReagentEditor.vue +0 -4
  320. package/src/components/ReagentList.story.vue +18 -0
  321. package/src/components/ReagentList.vue +127 -82
  322. package/src/components/ResourceCard.vue +0 -4
  323. package/src/components/RuntimeUpdateNotice.story.vue +49 -0
  324. package/src/components/RuntimeUpdateNotice.vue +4 -4
  325. package/src/components/SampleHierarchyTree.story.vue +18 -0
  326. package/src/components/SampleHierarchyTree.vue +32 -9
  327. package/src/components/SampleLegend.vue +2 -8
  328. package/src/components/SampleSelector.drag.ts +51 -0
  329. package/src/components/SampleSelector.story.vue +6 -0
  330. package/src/components/SampleSelector.tree.ts +2 -0
  331. package/src/components/SampleSelector.vue +49 -10
  332. package/src/components/SampleSelectorGroupNode.vue +19 -0
  333. package/src/components/ScheduleCalendar.story.vue +6 -0
  334. package/src/components/ScheduleCalendar.vue +82 -7
  335. package/src/components/ScientificNumber.vue +0 -4
  336. package/src/components/SecretInput.story.vue +79 -0
  337. package/src/components/SecretInput.vue +150 -0
  338. package/src/components/SectionCard.vue +0 -4
  339. package/src/components/SegmentedControl.vue +50 -7
  340. package/src/components/SequenceInput.vue +0 -4
  341. package/src/components/SequenceProgressBar.story.vue +110 -0
  342. package/src/components/SequenceProgressBar.vue +0 -4
  343. package/src/components/SettingsModal.vue +0 -4
  344. package/src/components/Skeleton.vue +0 -4
  345. package/src/components/SmartGroupFieldRecipe.vue +8 -6
  346. package/src/components/SmartGroupManual.vue +0 -4
  347. package/src/components/StatusIndicator.vue +0 -4
  348. package/src/components/StepWizard.vue +0 -4
  349. package/src/components/TagsInput.vue +4 -6
  350. package/src/components/ThemeToggle.vue +0 -4
  351. package/src/components/TimePicker.vue +36 -7
  352. package/src/components/TimeRangeInput.vue +0 -4
  353. package/src/components/Tooltip.story.vue +3 -3
  354. package/src/components/Tooltip.vue +0 -4
  355. package/src/components/UnitInput.vue +0 -4
  356. package/src/components/WellPlate.geometry.ts +60 -1
  357. package/src/components/WellPlate.interaction.ts +44 -0
  358. package/src/components/WellPlate.story.vue +8 -0
  359. package/src/components/WellPlate.vue +53 -7
  360. package/src/components/fileBrowserPresentation.ts +39 -0
  361. package/src/components/index.ts +14 -0
  362. package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -5
  363. package/src/components/internal/AppTopBarPillNavInternal.vue +0 -4
  364. package/src/components/internal/DataStateInternal.vue +74 -0
  365. package/src/components/internal/FileBrowserDialogInternal.vue +75 -0
  366. package/src/components/internal/FileBrowserListingInternal.vue +197 -0
  367. package/src/components/internal/FileBrowserToolbarInternal.vue +136 -0
  368. package/src/components/internal/FilePickerPreviewInternal.vue +100 -0
  369. package/src/components/internal/FilePickerTreeInternal.vue +238 -0
  370. package/src/components/internal/FormSectionRenderer.vue +0 -4
  371. package/src/components/internal/WellEditPopupInternal.vue +20 -5
  372. package/src/components/internal/WorkspaceControlsInternal.vue +20 -0
  373. package/src/components/internal/WorkspaceShellInternal.vue +125 -0
  374. package/src/components/internal/WorkspaceSidebarInternal.vue +82 -0
  375. package/src/composables/controlSchemaTypes.ts +34 -0
  376. package/src/composables/experimentDesignData.ts +1 -3
  377. package/src/composables/filePicker/localFiles.ts +58 -0
  378. package/src/composables/filePicker/usePickerNavigation.ts +220 -0
  379. package/src/composables/filePicker/usePickerSelection.ts +259 -0
  380. package/src/composables/filePicker/validation.ts +41 -0
  381. package/src/composables/flattenWorkspaceBindings.ts +104 -0
  382. package/src/composables/formBuilderRegistry.ts +5 -0
  383. package/src/composables/index.ts +50 -0
  384. package/src/composables/pluginWorkspaceModel.ts +182 -0
  385. package/src/composables/useApi.ts +57 -13
  386. package/src/composables/useAsync.ts +5 -1
  387. package/src/composables/useAuth.ts +3 -0
  388. package/src/composables/useBioTemplatePackWorkspace.ts +15 -9
  389. package/src/composables/useBioTemplatePresetWorkspace.ts +14 -15
  390. package/src/composables/useBioTemplateWorkspace.ts +18 -43
  391. package/src/composables/useCommandHistory.ts +5 -1
  392. package/src/composables/useDropdownState.ts +35 -5
  393. package/src/composables/useEventStream.ts +14 -2
  394. package/src/composables/useFileBrowser.ts +314 -0
  395. package/src/composables/useFileImport.ts +2 -7
  396. package/src/composables/useFilePicker.ts +366 -0
  397. package/src/composables/useFocusTrap.ts +91 -0
  398. package/src/composables/useGeneratedAnalysis.ts +32 -27
  399. package/src/composables/useJobsStatusTray.ts +184 -17
  400. package/src/composables/useListReorder.story.vue +143 -0
  401. package/src/composables/useListReorder.ts +242 -0
  402. package/src/composables/useMenuKeyboard.ts +90 -0
  403. package/src/composables/useOptimisticMutation.ts +6 -16
  404. package/src/composables/usePlatformFilePickerAdapter.ts +104 -0
  405. package/src/composables/usePluginClient.ts +50 -4
  406. package/src/composables/usePluginConfig.ts +252 -0
  407. package/src/composables/usePluginWorkspace.ts +208 -0
  408. package/src/composables/useRackEditor.ts +2 -11
  409. package/src/composables/useRequestSyncState.ts +98 -28
  410. package/src/composables/useResourceCrud.ts +6 -16
  411. package/src/composables/useRovingFocus.ts +66 -0
  412. package/src/composables/useScheduleDrag.ts +37 -0
  413. package/src/composables/useWellPainting.ts +10 -30
  414. package/src/composables/useWellPlateAdapter.ts +5 -1
  415. package/src/composables/useWellPlateEditor.ts +1 -11
  416. package/src/composables/useWellPlateValidation.ts +5 -1
  417. package/src/composables/workspaceRecipes.ts +267 -0
  418. package/src/index.ts +19 -0
  419. package/src/permissions.ts +48 -9
  420. package/src/stores/auth.ts +1 -0
  421. package/src/stores/experiment.ts +2 -7
  422. package/src/stores/index.ts +9 -1
  423. package/src/stores/settings.ts +93 -1
  424. package/src/styles/components/audit-trail.css +5 -5
  425. package/src/styles/components/batch-progress-list.css +7 -0
  426. package/src/styles/components/color-slider.css +2 -2
  427. package/src/styles/components/data-state.css +30 -0
  428. package/src/styles/components/dataframe.css +29 -35
  429. package/src/styles/components/experiment-data-viewer.css +4 -4
  430. package/src/styles/components/experiment-timeline.css +3 -30
  431. package/src/styles/components/file-browser-modal.css +489 -0
  432. package/src/styles/components/file-picker.css +502 -0
  433. package/src/styles/components/form-builder.css +5 -5
  434. package/src/styles/components/icon-button.css +9 -0
  435. package/src/styles/components/lcms-sequence-table.css +16 -1
  436. package/src/styles/components/multi-select.css +1 -1
  437. package/src/styles/components/reagent-list.css +38 -31
  438. package/src/styles/components/sample-hierarchy-tree.css +5 -19
  439. package/src/styles/components/sample-selector.css +9 -2
  440. package/src/styles/components/schedule-calendar.css +8 -0
  441. package/src/styles/components/scientific-number.css +1 -1
  442. package/src/styles/components/secret-input.css +60 -0
  443. package/src/styles/components/well-plate.css +8 -0
  444. package/src/styles/index.css +12 -0
  445. package/src/styles/variables.css +29 -0
  446. package/src/templates/builderPresetControls.ts +1 -1
  447. package/src/templates/builderReadUtils.ts +1 -3
  448. package/src/templates/componentPlateHelpers.ts +3 -1
  449. package/src/templates/componentTargetResolvers.ts +1 -3
  450. package/src/templates/controlSchemaTargets.ts +1 -3
  451. package/src/templates/doseResponseAdapters.ts +2 -13
  452. package/src/templates/elisaAssayCollectionBuilder.ts +2 -2
  453. package/src/templates/plateMapBuilder.ts +2 -2
  454. package/src/templates/qpcrPlateBuilder.ts +1 -1
  455. package/src/templates/templateValidators.ts +1 -1
  456. package/src/templates/timeCourseBuilder.ts +2 -2
  457. package/src/templates/wellPlateScreenCollectionBuilder.ts +2 -2
  458. package/src/types/auth.ts +1 -0
  459. package/src/types/fileBrowserTypes.ts +85 -0
  460. package/src/types/filePicker.ts +72 -0
  461. package/src/types/form-builder.ts +1 -0
  462. package/src/types/index.ts +14 -0
  463. package/src/utils/color.ts +51 -0
  464. package/src/utils/errors.ts +29 -0
  465. package/src/utils/formModelSync.ts +1 -3
  466. package/src/utils/pluginIcon.ts +1 -3
  467. package/src/utils/pluginSecrets.ts +102 -0
  468. package/src/utils/records.ts +9 -0
  469. package/dist/EmptyState-p90quq8Z.js.map +0 -1
  470. package/dist/ExperimentPopover-tLwJ7XF4.js.map +0 -1
  471. package/dist/ExperimentSelectorModal-DyPAUCLw.js.map +0 -1
  472. package/dist/SettingsModal-BgKY93zh.js.map +0 -1
  473. package/dist/components-DkHddRMl.js.map +0 -1
  474. package/dist/composables/autoGroupConstants.d.ts +0 -1
  475. package/dist/composables/autoGroupGrouping.d.ts +0 -3
  476. package/dist/composables/useAutoGroupInputSources.d.ts +0 -32
  477. package/dist/composables-C_i90sGS.js.map +0 -1
  478. package/dist/experiment-Cq145oEW.js.map +0 -1
  479. package/dist/experiment-utils-CLnzPPq5.js.map +0 -1
  480. package/dist/templates/builderDefaults.d.ts +0 -1
  481. package/dist/templates/plateGeometry.d.ts +0 -4
  482. package/dist/templates-DsP51i-S.js.map +0 -1
  483. package/dist/useApi-J6zFkHmn.js.map +0 -1
  484. package/dist/useControlSchema-BDx2Olha.js.map +0 -1
  485. package/dist/useDropdownState-DSb3BC3N.js.map +0 -1
  486. package/dist/useProtocolTemplates-CS_SQl6U.js.map +0 -1
  487. package/src/__tests__/composables/useAutoGroupInputSources.test.ts +0 -127
  488. package/src/composables/autoGroupConstants.ts +0 -4
  489. package/src/composables/autoGroupGrouping.ts +0 -148
  490. package/src/composables/useAutoGroupInputSources.ts +0 -147
  491. package/src/templates/builderDefaults.ts +0 -11
  492. package/src/templates/plateGeometry.ts +0 -62
  493. /package/dist/__tests__/{composables/useAutoGroupInputSources.test.d.ts → apiErrors.test.d.ts} +0 -0
@@ -1,8 +1,24 @@
1
1
  import { Ref } from 'vue';
2
2
  export type RequestSyncSuccessKind = 'load' | 'save' | 'run';
3
+ /**
4
+ * The unit of work `run()` drives.
5
+ *
6
+ * It receives an `AbortSignal` that fires when the run is superseded by a
7
+ * newer `run()` or by `cancel()`. Zero-argument operations stay valid and
8
+ * simply ignore it.
9
+ */
10
+ export type RequestSyncOperation<T> = (signal: AbortSignal) => Promise<T>;
3
11
  export interface RequestSyncRunOptions {
4
12
  success?: RequestSyncSuccessKind;
5
13
  errorMessage?: string;
14
+ /**
15
+ * Abort the previously started run when this one starts. Default `true`;
16
+ * pass `false` to let overlapping runs finish their own work (the stale
17
+ * guard on shared state still applies either way).
18
+ */
19
+ abortPrevious?: boolean;
20
+ /** Caller-owned signal; aborting it aborts this run's signal too. */
21
+ signal?: AbortSignal;
6
22
  }
7
23
  export interface UseRequestSyncStateReturn {
8
24
  /** Whether a request is in progress. */
@@ -27,8 +43,32 @@ export interface UseRequestSyncStateReturn {
27
43
  markSaved: (date?: Date) => void;
28
44
  /** Mark the operation as successfully run. */
29
45
  markRun: (date?: Date) => void;
30
- /** Run a request with shared loading/error handling and optional sync marking. */
31
- run: <T>(operation: () => Promise<T>, options?: RequestSyncRunOptions) => Promise<T>;
46
+ /**
47
+ * Run a request with shared loading/error handling and optional sync marking.
48
+ *
49
+ * ## Stale-response semantics
50
+ *
51
+ * Every call takes a monotonically increasing token. Starting a run
52
+ * supersedes any run started before it, and a superseded run writes **no**
53
+ * shared state when it finally settles: it does not clear `loading`, does not
54
+ * set `error`, and does not move `lastLoadedAt` / `lastSavedAt` / `lastRunAt`.
55
+ * Only the newest run owns those.
56
+ *
57
+ * The caller's own promise is untouched by the guard — a superseded run still
58
+ * resolves with its value or rejects with its own error, exactly as the
59
+ * operation did. The guard never invents a rejection, so a caller awaiting
60
+ * `run()` never sees a "superseded" error it did not cause.
61
+ *
62
+ * The operation additionally receives an `AbortSignal` that fires when its
63
+ * run is superseded or `cancel()` is called, so an operation that forwards
64
+ * the signal (`fetch(url, { signal })`) stops work instead of racing.
65
+ */
66
+ run: <T>(operation: RequestSyncOperation<T>, options?: RequestSyncRunOptions) => Promise<T>;
67
+ /**
68
+ * Abort the in-flight run and drop `loading`. The aborted run's completion
69
+ * is treated as stale and writes no state.
70
+ */
71
+ cancel: () => void;
32
72
  }
33
73
  /** Shared loading/error/timestamp state for generated plugin request helpers. */
34
74
  export declare function useRequestSyncState(defaultErrorMessage?: string): UseRequestSyncStateReturn;
@@ -28,7 +28,11 @@ export interface UseResourceCrudReturn<TItem, TCreate, TUpdate, TKey extends Res
28
28
  removeLocal: (keyOrItem: TKey | TItem) => void;
29
29
  clearError: () => void;
30
30
  }
31
- /** Common list/create/update/delete state wrapper for generated plugin clients. */
31
+ /**
32
+ * Common list/create/update/delete state wrapper for generated plugin clients.
33
+ *
34
+ * @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `useGeneratedPluginClient()` instead.
35
+ */
32
36
  export declare function useResourceCrud<TItem, TCreate = Partial<TItem>, TUpdate = Partial<TItem>, TKey extends ResourceKey = ResourceKey>(options: UseResourceCrudOptions<TItem, TCreate, TUpdate, TKey>): UseResourceCrudReturn<TItem, TCreate, TUpdate, TKey>;
33
37
  export interface PluginResourceClientOptions<TClient, TItem, TCreate = Partial<TItem>, TUpdate = Partial<TItem>, TKey extends ResourceKey = ResourceKey> {
34
38
  client: TClient;
@@ -0,0 +1,24 @@
1
+ export interface UseRovingFocusOptions {
2
+ /** Selectable item ids, in DOM order. Already excludes items skipped entirely (e.g. disabled tabs). */
3
+ ids: () => string[];
4
+ /** The id that is currently active/selected. */
5
+ activeId: () => string | undefined;
6
+ /** Activates an id (e.g. emit `update:modelValue`). The composable focuses the matching element afterward. */
7
+ activate: (id: string) => void;
8
+ /** Returns the focusable element for an id, queried lazily so it reflects the post-activation DOM. */
9
+ getElement: (id: string) => HTMLElement | null | undefined;
10
+ /** Arrow-key axis: `'horizontal'` (Left/Right, default) or `'vertical'` (Up/Down). */
11
+ orientation?: 'horizontal' | 'vertical';
12
+ }
13
+ export interface UseRovingFocusReturn {
14
+ /** Bind to each item's `@keydown`. */
15
+ handleKeydown: (event: KeyboardEvent) => void;
16
+ }
17
+ /**
18
+ * WAI-ARIA roving-tabindex navigation with automatic activation (the tabs pattern):
19
+ * Left/Right (or Up/Down when `orientation` is `'vertical'`) move to the adjacent item
20
+ * and activate it immediately, wrapping past the ends; Home/End jump to the first/last
21
+ * item. Only the active item should carry `tabindex="0"`; give every other item
22
+ * `tabindex="-1"`. Used by BaseTabs.
23
+ */
24
+ export declare function useRovingFocus(options: UseRovingFocusOptions): UseRovingFocusReturn;
@@ -75,4 +75,5 @@ export declare function useScheduleDrag(options: UseScheduleDragOptions): {
75
75
  startCreate: (date: Date, y: number, dayIndex: number) => void;
76
76
  startMove: (event: ScheduleEvent, y: number, dayIndex: number) => void;
77
77
  startResize: (event: ScheduleEvent, edge: "top" | "bottom", y: number, dayIndex: number) => void;
78
+ nudgeEvent: (event: ScheduleEvent, direction: -1 | 1, mode?: "move" | "resize") => boolean;
78
79
  };
@@ -28,7 +28,11 @@ export interface UseWellPaintingReturn<TMode extends string = string, TPayload =
28
28
  onWellMouseUp: () => void;
29
29
  cancel: () => void;
30
30
  }
31
- /** Pointer painting/rectangle selection state for WellPlate-based editors. */
31
+ /**
32
+ * Pointer painting/rectangle selection state for WellPlate-based editors.
33
+ *
34
+ * @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `useWellPlateEditor()` instead.
35
+ */
32
36
  export declare function useWellPainting<TMode extends string = string, TPayload = unknown>(options: UseWellPaintingOptions<TMode, TPayload>): UseWellPaintingReturn<TMode, TPayload>;
33
37
  export declare function wellIdToCoordinate(wellId: string): WellCoordinate | null;
34
38
  export declare function coordinateToWellId(coord: WellCoordinate): string;
@@ -19,7 +19,11 @@ export interface WellPlateAdapterOptions<TEntry> {
19
19
  export interface UseWellPlateAdapterReturn {
20
20
  wells: ComputedRef<Record<string, Partial<Well>>>;
21
21
  }
22
- /** Convert domain rows into WellPlate's wells prop without hand-written adapters. */
22
+ /**
23
+ * Convert domain rows into WellPlate's wells prop without hand-written adapters.
24
+ *
25
+ * @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `useWellPlateEditor()` instead.
26
+ */
23
27
  export declare function useWellPlateAdapter<TEntry>(options: WellPlateAdapterOptions<TEntry>): UseWellPlateAdapterReturn;
24
28
  export declare function createWellPlateWells<TEntry>(entries: readonly TEntry[], options: Omit<WellPlateAdapterOptions<TEntry>, 'entries'>): Record<string, Partial<Well>>;
25
29
  export interface AxisConditionEntry {
@@ -22,6 +22,10 @@ export interface UseWellPlateValidationReturn<TType extends string = string> {
22
22
  warningCount: ComputedRef<number>;
23
23
  errorCount: ComputedRef<number>;
24
24
  }
25
- /** Rule-driven validation state for WellPlate layout/design screens. */
25
+ /**
26
+ * Rule-driven validation state for WellPlate layout/design screens.
27
+ *
28
+ * @deprecated Unused by the MINT platform and scheduled for removal in MINT 1.3; use `useWellPlateEditor()` instead.
29
+ */
26
30
  export declare function useWellPlateValidation<TContext, TType extends string = string>(options: UseWellPlateValidationOptions<TContext, TType>): UseWellPlateValidationReturn<TType>;
27
31
  export declare function runWellPlateValidation<TContext, TType extends string = string>(context: TContext, rules: readonly WellPlateValidationRule<TContext, TType>[]): WellPlateValidationWarning<TType>[];
@@ -0,0 +1,188 @@
1
+ import { TopBarVariant } from '../types';
2
+ import { FormEnhancements } from '../types/form-builder';
3
+ import { ControlModel, ControlModelBinding, ControlSchema, ControlWorkspaceOptions, UseControlWorkspaceReturn } from './useControlSchema';
4
+ /**
5
+ * Merges `initialValues`/external `modelValue`/`values` on top of a base
6
+ * `ControlWorkspaceOptions.initialValues`, matching the layering FormBuilder expects: base
7
+ * defaults, then caller-supplied initial values, then live external values win last. Shared by
8
+ * {@link controlWorkspaceProps} and {@link bioTemplatePresetWorkspaceProps} so both "generate a
9
+ * workspace from options, initialValues, and v-model" views merge options identically.
10
+ */
11
+ export declare function resolveControlOptionsWithExternalValues<TOptions extends ControlWorkspaceOptions>(base: TOptions, initialValues: Record<string, unknown> | undefined, externalValues: Record<string, unknown> | undefined): TOptions;
12
+ export interface ControlWorkspaceModelProps {
13
+ model?: ControlModel | ControlModelBinding;
14
+ controls?: ControlSchema;
15
+ controlOptions?: ControlWorkspaceOptions;
16
+ initialValues?: Record<string, unknown>;
17
+ modelValue?: Record<string, unknown>;
18
+ values?: Record<string, unknown>;
19
+ }
20
+ export interface ResolvedControlWorkspaceModel {
21
+ /** `modelValue` if provided, else `values` — the single external v-model source of truth. */
22
+ externalValues: Record<string, unknown> | undefined;
23
+ /** `model` resolved through `resolveControlModel()`, or undefined for a raw `controls` schema. */
24
+ resolvedModel: ControlModelBinding | undefined;
25
+ /** `controls` if provided, else the resolved model's controls, else `{}`. */
26
+ resolvedControls: ControlSchema;
27
+ /** `controlOptions` merged over the resolved model's own options, with initialValues/external values layered on top. */
28
+ resolvedControlOptions: ControlWorkspaceOptions;
29
+ }
30
+ /**
31
+ * Resolves ControlWorkspaceView's `model`/`controls`/`controlOptions`/`initialValues`/
32
+ * `modelValue`/`values` props into the schema + options pair `useControlWorkspace()` needs.
33
+ * Pure and framework-free so callers wrap each field in their own `computed()`.
34
+ *
35
+ * @example Recommended
36
+ * ```ts
37
+ * const resolved = computed(() => controlWorkspaceProps(props))
38
+ * const resolvedControls = computed(() => resolved.value.resolvedControls)
39
+ * ```
40
+ */
41
+ export declare function controlWorkspaceProps(props: ControlWorkspaceModelProps): ResolvedControlWorkspaceModel;
42
+ export interface DoseDesignWorkspacePassthroughProps {
43
+ workspace?: UseControlWorkspaceReturn<ControlSchema>;
44
+ controlOptions?: ControlWorkspaceOptions;
45
+ initialValues?: Record<string, unknown>;
46
+ modelValue?: Record<string, unknown>;
47
+ values?: Record<string, unknown>;
48
+ title?: string;
49
+ subtitle?: string;
50
+ topBarVariant?: TopBarVariant;
51
+ sidebarWidth?: string;
52
+ sidebarVariant?: 'default' | 'analysis';
53
+ responsiveSidebar?: boolean;
54
+ sidebarPosition?: 'left' | 'right';
55
+ sidebarTitle?: string;
56
+ sidebarSubtitle?: string;
57
+ sidebarBadge?: string | number;
58
+ floating?: boolean;
59
+ dense?: boolean;
60
+ showSettings?: boolean;
61
+ showFormActions?: boolean;
62
+ formEnhancements?: FormEnhancements<Record<string, unknown>>;
63
+ formLoading?: boolean;
64
+ formDisabled?: boolean;
65
+ formReadonly?: boolean;
66
+ formSize?: 'sm' | 'md' | 'lg';
67
+ }
68
+ /**
69
+ * Maps DoseDesignWorkspaceView's props straight through to the identically-named
70
+ * ControlWorkspaceView props it wraps — the ~25-key pass-through list that used to be spelled
71
+ * out attribute-by-attribute in the template. `model` is the caller's already-resolved dose
72
+ * design model, not the raw (possibly absent) `props.model`.
73
+ *
74
+ * @example Recommended
75
+ * ```vue
76
+ * <ControlWorkspaceView v-bind="doseDesignWorkspaceProps(props, resolvedModel)" />
77
+ * ```
78
+ */
79
+ export declare function doseDesignWorkspaceProps(props: DoseDesignWorkspacePassthroughProps, model: ControlModel | ControlModelBinding): {
80
+ model: ControlModel | ControlModelBinding;
81
+ workspace: UseControlWorkspaceReturn<ControlSchema> | undefined;
82
+ controlOptions: ControlWorkspaceOptions | undefined;
83
+ initialValues: Record<string, unknown> | undefined;
84
+ modelValue: Record<string, unknown> | undefined;
85
+ values: Record<string, unknown> | undefined;
86
+ title: string | undefined;
87
+ subtitle: string | undefined;
88
+ topBarVariant: TopBarVariant | undefined;
89
+ sidebarWidth: string | undefined;
90
+ sidebarVariant: "default" | "analysis" | undefined;
91
+ responsiveSidebar: boolean | undefined;
92
+ sidebarPosition: "left" | "right" | undefined;
93
+ sidebarTitle: string | undefined;
94
+ sidebarSubtitle: string | undefined;
95
+ sidebarBadge: string | number | undefined;
96
+ floating: boolean | undefined;
97
+ dense: boolean | undefined;
98
+ showSettings: boolean | undefined;
99
+ showFormActions: boolean | undefined;
100
+ formEnhancements: FormEnhancements<Record<string, unknown>> | undefined;
101
+ formLoading: boolean | undefined;
102
+ formDisabled: boolean | undefined;
103
+ formReadonly: boolean | undefined;
104
+ formSize: "sm" | "md" | "lg" | undefined;
105
+ };
106
+ export interface BioTemplateExperimentWorkspaceStatusProps {
107
+ status?: {
108
+ loading?: boolean;
109
+ saving?: boolean;
110
+ error?: string | null;
111
+ hasExperiment?: boolean;
112
+ currentExperimentId?: number;
113
+ lastLoadedAt?: Date | null;
114
+ lastSavedAt?: Date | null;
115
+ };
116
+ loading?: boolean;
117
+ error?: string | null;
118
+ hasExperiment?: boolean;
119
+ currentExperimentId?: number;
120
+ lastLoadedAt?: Date | null;
121
+ lastSavedAt?: Date | null;
122
+ }
123
+ export interface ResolvedBioTemplateExperimentStatus {
124
+ loading: boolean;
125
+ error: string | null | undefined;
126
+ hasExperiment: boolean;
127
+ currentExperimentId: number | undefined;
128
+ lastLoadedAt: Date | null | undefined;
129
+ lastSavedAt: Date | null | undefined;
130
+ }
131
+ /**
132
+ * Merges BioTemplateExperimentWorkspaceView's grouped `status` prop over its individual
133
+ * `loading`/`error`/`hasExperiment`/... props: `status` wins whenever the corresponding field
134
+ * on it is set, otherwise the flat prop (or its default) is used. Centralizes the six
135
+ * independent fallback rules generated plugin pages rely on when they pass a request/experiment
136
+ * `status` object instead of wiring each field by hand.
137
+ */
138
+ export declare function bioTemplateExperimentWorkspaceProps(props: BioTemplateExperimentWorkspaceStatusProps): ResolvedBioTemplateExperimentStatus;
139
+ export interface BioTemplatePackWorkspacePassthroughProps {
140
+ message?: string;
141
+ dense?: boolean;
142
+ readonly?: boolean;
143
+ showStatus?: boolean;
144
+ showTemplateSummary?: boolean;
145
+ loadLabel?: string;
146
+ resetLabel?: string;
147
+ saveLabel?: string;
148
+ }
149
+ /**
150
+ * Assembles the prop object BioTemplatePackWorkspaceView binds onto the
151
+ * BioTemplateExperimentWorkspaceView it wraps: its own display props passed straight through,
152
+ * plus the pack-derived `target`/`label`/`status`/`actions` computed by the caller.
153
+ */
154
+ export declare function bioTemplatePackWorkspaceProps<TTarget, TStatus, TActions>(props: BioTemplatePackWorkspacePassthroughProps, derived: {
155
+ target: TTarget;
156
+ label: string;
157
+ status: TStatus;
158
+ actions: TActions;
159
+ }): {
160
+ target: TTarget;
161
+ kind: "collection";
162
+ label: string;
163
+ message: string | undefined;
164
+ status: TStatus;
165
+ actions: TActions;
166
+ dense: boolean | undefined;
167
+ readonly: boolean | undefined;
168
+ showStatus: boolean | undefined;
169
+ showTemplateSummary: boolean | undefined;
170
+ loadLabel: string | undefined;
171
+ resetLabel: string | undefined;
172
+ saveLabel: string | undefined;
173
+ };
174
+ export interface BioTemplatePresetWorkspaceOptionsProps<TOptions extends ControlWorkspaceOptions> {
175
+ workspaceOptions?: TOptions;
176
+ initialValues?: Record<string, unknown>;
177
+ modelValue?: Record<string, unknown>;
178
+ values?: Record<string, unknown>;
179
+ }
180
+ /**
181
+ * Resolves BioTemplatePresetWorkspaceView's `workspaceOptions`/`initialValues`/`modelValue`/
182
+ * `values` props into the single options object `useBioTemplatePresetWorkspace()` needs,
183
+ * reusing the same base/initialValues/external-values layering as {@link controlWorkspaceProps}.
184
+ */
185
+ export declare function bioTemplatePresetWorkspaceProps<TOptions extends ControlWorkspaceOptions>(props: BioTemplatePresetWorkspaceOptionsProps<TOptions>): {
186
+ externalValues: Record<string, unknown> | undefined;
187
+ resolvedWorkspaceOptions: TOptions;
188
+ };