@morscherlab/mint-sdk 1.3.11 → 1.4.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1056) hide show
  1. package/README.md +152 -177
  2. package/dist/AlertBox-B2Bgr3ei.js +276 -0
  3. package/dist/AlertBox-B2Bgr3ei.js.map +1 -0
  4. package/dist/AppSidebar-mvm--GxN.js +3565 -0
  5. package/dist/AppSidebar-mvm--GxN.js.map +1 -0
  6. package/dist/ConfirmDialog-nbJj51is.js +102 -0
  7. package/dist/ConfirmDialog-nbJj51is.js.map +1 -0
  8. package/dist/ExperimentPopover-5T1fAq2L.js +337 -0
  9. package/dist/ExperimentPopover-5T1fAq2L.js.map +1 -0
  10. package/dist/ExperimentSelectorModal-65peG4Up.js +544 -0
  11. package/dist/ExperimentSelectorModal-65peG4Up.js.map +1 -0
  12. package/dist/SegmentedControl-BtnnjWzs.js +129 -0
  13. package/dist/SegmentedControl-BtnnjWzs.js.map +1 -0
  14. package/dist/SettingsModal-DO3IZ7qz.js +666 -0
  15. package/dist/SettingsModal-DO3IZ7qz.js.map +1 -0
  16. package/dist/analysisArtifactTypes-Cy3D0Ipg.js.map +1 -1
  17. package/dist/auth-SliLnFre.js +65 -0
  18. package/dist/auth-SliLnFre.js.map +1 -0
  19. package/dist/components/ActionMenu.vue.d.ts +1 -1
  20. package/dist/components/AdductText.vue.d.ts +1 -1
  21. package/dist/components/AlertBox.vue.d.ts +3 -3
  22. package/dist/components/AppContainer.vue.d.ts +1 -1
  23. package/dist/components/AppSidebar.vue.d.ts +15 -95
  24. package/dist/components/AppTopBar.vue.d.ts +16 -70
  25. package/dist/components/ArtifactSaveDialog.vue.d.ts +13 -5
  26. package/dist/components/ArtifactSelectorModal.vue.d.ts +4 -4
  27. package/dist/components/AuditTrail.vue.d.ts +2 -2
  28. package/dist/components/BaseButton.vue.d.ts +11 -4
  29. package/dist/components/BaseCheckbox.vue.d.ts +9 -3
  30. package/dist/components/BaseInput.vue.d.ts +13 -9
  31. package/dist/components/BaseModal.vue.d.ts +4 -4
  32. package/dist/components/BasePill.vue.d.ts +15 -8
  33. package/dist/components/BaseRadioGroup.vue.d.ts +2 -2
  34. package/dist/components/BaseSelect.vue.d.ts +51 -19
  35. package/dist/components/BaseTabs.vue.d.ts +6 -5
  36. package/dist/components/BatchProgressList.vue.d.ts +2 -2
  37. package/dist/components/ChartContainer.vue.d.ts +4 -2
  38. package/dist/components/ChemicalFormula.vue.d.ts +2 -2
  39. package/dist/components/CollapsibleCard.vue.d.ts +3 -3
  40. package/dist/components/ComponentBindingRenderer.vue.d.ts +2 -3
  41. package/dist/components/ConcentrationInput.vue.d.ts +2 -2
  42. package/dist/components/ConfirmDialog.vue.d.ts +8 -7
  43. package/dist/components/DataFrame.vue.d.ts +32 -74
  44. package/dist/components/DatePicker.vue.d.ts +24 -2
  45. package/dist/components/DoseCalculator.vue.d.ts +1 -1
  46. package/dist/components/DoseCalculatorVolumeField.vue.d.ts +1 -1
  47. package/dist/components/EmptyState.vue.d.ts +3 -2
  48. package/dist/components/ExperimentPopover.vue.d.ts +18 -0
  49. package/dist/components/ExperimentSelectorModal.vue.d.ts +3 -7
  50. package/dist/components/FilePicker.vue.d.ts +1 -1
  51. package/dist/components/FileUploader.vue.d.ts +2 -2
  52. package/dist/components/FormBuilder.vue.d.ts +17 -74
  53. package/dist/components/FormulaInput.vue.d.ts +2 -2
  54. package/dist/components/GeneratedPluginView.vue.d.ts +1 -1
  55. package/dist/components/GeneratedResultRenderer.vue.d.ts +5 -1
  56. package/dist/components/{StatusIndicator.vue.d.ts → InstrumentStatusPanels.vue.d.ts} +8 -9
  57. package/dist/components/JobsStatusTray.vue.d.ts +2 -9
  58. package/dist/components/LoadingSpinner.vue.d.ts +3 -3
  59. package/dist/components/MoleculeInput.vue.d.ts +2 -2
  60. package/dist/components/NumberInput.vue.d.ts +19 -5
  61. package/dist/components/PlateEditor.vue.d.ts +11 -61
  62. package/dist/components/PlotlyChart.vue.d.ts +2 -2
  63. package/dist/components/PluginIcon.vue.d.ts +5 -1
  64. package/dist/components/PluginWorkspaceView.controls.d.ts +2 -9
  65. package/dist/components/PluginWorkspaceView.navigation.d.ts +1 -7
  66. package/dist/components/PluginWorkspaceView.props.d.ts +18 -137
  67. package/dist/components/PluginWorkspaceView.shell.d.ts +2 -10
  68. package/dist/components/PluginWorkspaceView.vue.d.ts +14 -84
  69. package/dist/components/PresenceAvatars.vue.d.ts +31 -0
  70. package/dist/components/ProgressBar.vue.d.ts +3 -2
  71. package/dist/components/ProtocolStep.presentation.d.ts +0 -1
  72. package/dist/components/SampleHierarchyTree.vue.d.ts +3 -3
  73. package/dist/components/SampleSelector.vue.d.ts +8 -8
  74. package/dist/components/ScheduleCalendar.vue.d.ts +1 -1
  75. package/dist/components/ScientificNumber.vue.d.ts +1 -1
  76. package/dist/components/SecretInput.vue.d.ts +2 -2
  77. package/dist/components/SegmentedControl.vue.d.ts +2 -2
  78. package/dist/components/SequenceInput.vue.d.ts +2 -2
  79. package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
  80. package/dist/components/SettingsModal.vue.d.ts +12 -20
  81. package/dist/components/SmartGroup.types.d.ts +0 -1
  82. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -1
  83. package/dist/components/StaleFormBanner.vue.d.ts +20 -0
  84. package/dist/components/StepWizard.vue.d.ts +3 -0
  85. package/dist/components/TagsInput.vue.d.ts +4 -3
  86. package/dist/components/TimeRangeInput.vue.d.ts +2 -2
  87. package/dist/components/VersionConflictDialog.vue.d.ts +24 -0
  88. package/dist/components/WellPlate.geometry.d.ts +0 -6
  89. package/dist/components/WellPlate.rendering.d.ts +0 -2
  90. package/dist/components/WellPlate.vue.d.ts +7 -52
  91. package/dist/components/index.d.ts +0 -90
  92. package/dist/components/{AutoGroupModal.adapter.d.ts → internal/AutoGroupModalInternal.adapter.d.ts} +6 -6
  93. package/dist/components/{AutoGroupModal.vue.d.ts → internal/AutoGroupModalInternal.vue.d.ts} +6 -6
  94. package/dist/components/{BaseToggle.vue.d.ts → internal/CheckboxSwitchInternal.vue.d.ts} +2 -2
  95. package/dist/components/{MultiSelect.vue.d.ts → internal/DatePickerDateInternal.vue.d.ts} +11 -9
  96. package/dist/components/{DateTimePicker.vue.d.ts → internal/DatePickerDateTimeInternal.vue.d.ts} +2 -2
  97. package/dist/components/{TimePicker.vue.d.ts → internal/DatePickerTimeInternal.vue.d.ts} +4 -4
  98. package/dist/components/internal/FilePickerListInternal.vue.d.ts +2 -2
  99. package/dist/components/internal/FormSchemaInternal.vue.d.ts +95 -0
  100. package/dist/components/{UnitInput.vue.d.ts → internal/NumberUnitInputInternal.vue.d.ts} +6 -14
  101. package/dist/components/internal/PlateEditorBindingInternal.vue.d.ts +3 -2
  102. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +5 -10
  103. package/dist/components/internal/SelectMultipleInternal.vue.d.ts +27 -0
  104. package/dist/components/{SearchableSelect.vue.d.ts → internal/SelectSearchableInternal.vue.d.ts} +5 -2
  105. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +1 -15
  106. package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +4 -4
  107. package/dist/{composables → components/internal}/autoGroup/classKey.d.ts +1 -1
  108. package/dist/{composables → components/internal}/autoGroup/classify.d.ts +1 -1
  109. package/dist/{composables → components/internal}/autoGroup/columns.d.ts +1 -1
  110. package/dist/{composables → components/internal}/autoGroup/compose.d.ts +1 -1
  111. package/dist/{composables → components/internal}/autoGroup/cooccurrence.d.ts +1 -1
  112. package/dist/{composables → components/internal}/autoGroup/csv-shim.d.ts +1 -1
  113. package/dist/{composables → components/internal}/autoGroup/fingerprint.d.ts +1 -1
  114. package/dist/{composables → components/internal}/autoGroup/template.d.ts +1 -1
  115. package/dist/{composables → components/internal}/autoGroup/tokenLength.d.ts +1 -1
  116. package/dist/components/internal/generatedJobsApi.d.ts +1 -1
  117. package/dist/{composables → components/internal}/useAutoGroup.d.ts +9 -18
  118. package/dist/composables/componentSpecs.d.ts +41 -0
  119. package/dist/composables/controlComponentBindings.d.ts +6 -0
  120. package/dist/composables/controlSchemaAdapters.d.ts +28 -2
  121. package/dist/composables/controlSchemaDoseDesign.d.ts +1 -1
  122. package/dist/composables/controlSchemaModel.d.ts +1 -1
  123. package/dist/composables/controlSchemaTypes.d.ts +35 -23
  124. package/dist/composables/{usePluginClient.d.ts → createClient.d.ts} +22 -49
  125. package/dist/composables/{useEventStream.d.ts → eventStream.d.ts} +2 -2
  126. package/dist/composables/experiment-utils.d.ts +1 -6
  127. package/dist/composables/index.d.ts +7 -59
  128. package/dist/composables/platformContextHelpers.d.ts +0 -11
  129. package/dist/composables/pluginEndpointBuilder.d.ts +2 -2
  130. package/dist/composables/pluginIdentity.d.ts +24 -0
  131. package/dist/composables/pluginWorkspaceModel.d.ts +16 -99
  132. package/dist/composables/useApi.d.ts +1 -3
  133. package/dist/composables/useAppExperiment.d.ts +9 -1
  134. package/dist/composables/{useAnalysisArtifacts.d.ts → useArtifacts.d.ts} +6 -6
  135. package/dist/composables/useCalendarGrid.d.ts +1 -1
  136. package/dist/composables/useExperiment.d.ts +30 -0
  137. package/dist/composables/useExperimentSelector.d.ts +6 -2
  138. package/dist/composables/useFilePicker.d.ts +2 -2
  139. package/dist/composables/useJobCenter.d.ts +63 -0
  140. package/dist/composables/{useGeneratedAnalysis.d.ts → useJobsEndpoint.d.ts} +22 -23
  141. package/dist/composables/useMenuKeyboard.d.ts +1 -1
  142. package/dist/composables/usePlatform.d.ts +64 -0
  143. package/dist/composables/usePluginWorkspace.d.ts +6 -11
  144. package/dist/composables/usePresence.d.ts +41 -0
  145. package/dist/composables/useRackEditor.d.ts +2 -2
  146. package/dist/composables/useRealtime.d.ts +71 -0
  147. package/dist/composables/{useRequestSyncState.d.ts → useRequest.d.ts} +12 -17
  148. package/dist/composables/useToast.d.ts +7 -5
  149. package/dist/composables/useVersionedSave.d.ts +76 -0
  150. package/dist/controlSchemaModel-B8CTXagP.js +95 -0
  151. package/dist/controlSchemaModel-B8CTXagP.js.map +1 -0
  152. package/dist/data-CgILxDLW.js +3865 -0
  153. package/dist/data-CgILxDLW.js.map +1 -0
  154. package/dist/data.d.ts +32 -0
  155. package/dist/data.js +10 -0
  156. package/dist/deprecatedRootExports.d.ts +191 -0
  157. package/dist/experiment-43OJtH7R.js +673 -0
  158. package/dist/experiment-43OJtH7R.js.map +1 -0
  159. package/dist/experimentStatus-Cqp6qNrR.js +60 -0
  160. package/dist/experimentStatus-Cqp6qNrR.js.map +1 -0
  161. package/dist/host.d.ts +10 -0
  162. package/dist/host.js +26 -0
  163. package/dist/host.js.map +1 -0
  164. package/dist/index.d.ts +1 -12
  165. package/dist/index.js +65 -277
  166. package/dist/index.js.map +1 -1
  167. package/dist/install-CsPFJSx3.js +669 -0
  168. package/dist/install-CsPFJSx3.js.map +1 -0
  169. package/dist/install.d.ts +2 -1
  170. package/dist/install.js +1 -21
  171. package/dist/instrument.d.ts +0 -6
  172. package/dist/lab-MHzp-_J8.js +7494 -0
  173. package/dist/lab-MHzp-_J8.js.map +1 -0
  174. package/dist/lab.d.ts +42 -0
  175. package/dist/lab.js +5 -0
  176. package/dist/permissions.d.ts +0 -4
  177. package/dist/permissions.js +1 -20
  178. package/dist/permissions.js.map +1 -1
  179. package/dist/records-B6gpM_3e.js +3268 -0
  180. package/dist/records-B6gpM_3e.js.map +1 -0
  181. package/dist/runtime-8bs8EogX.js +1491 -0
  182. package/dist/runtime-8bs8EogX.js.map +1 -0
  183. package/dist/runtime.d.ts +25 -0
  184. package/dist/runtime.js +8 -0
  185. package/dist/shell-CywENwBT.js +197 -0
  186. package/dist/shell-CywENwBT.js.map +1 -0
  187. package/dist/shell.d.ts +16 -0
  188. package/dist/shell.js +8 -0
  189. package/dist/stores/auth.d.ts +13 -35
  190. package/dist/stores/experiment.d.ts +4 -0
  191. package/dist/stores/index.js +2 -2
  192. package/dist/styles.css +12161 -15036
  193. package/dist/types/analysisArtifactTypes.d.ts +1 -1
  194. package/dist/types/auth.d.ts +0 -8
  195. package/dist/types/componentLabTypes.d.ts +98 -34
  196. package/dist/types/componentWorkflowTypes.d.ts +2 -27
  197. package/dist/types/components.d.ts +145 -74
  198. package/dist/types/form-builder.d.ts +4 -0
  199. package/dist/types/generated/platformContext.d.ts +53 -0
  200. package/dist/types/generated-ui.d.ts +6 -2
  201. package/dist/types/index.d.ts +4 -5
  202. package/dist/types/instrument.d.ts +41 -0
  203. package/dist/types/platform.d.ts +20 -58
  204. package/dist/useDebouncedWatch-BPwyl6eS.js +73 -0
  205. package/dist/useDebouncedWatch-BPwyl6eS.js.map +1 -0
  206. package/dist/{experiment-utils-DTANyVKV.js → useDropdownState-8yWMu-7_.js} +127 -144
  207. package/dist/useDropdownState-8yWMu-7_.js.map +1 -0
  208. package/dist/useExpansionSet-CvoNMZJi.js +68 -0
  209. package/dist/useExpansionSet-CvoNMZJi.js.map +1 -0
  210. package/dist/useExperimentSamples-DHnxKFAF.js +366 -0
  211. package/dist/useExperimentSamples-DHnxKFAF.js.map +1 -0
  212. package/dist/useListReorder-BitdUhxn.js +5294 -0
  213. package/dist/useListReorder-BitdUhxn.js.map +1 -0
  214. package/dist/useRackEditor-DiwCt77M.js +5930 -0
  215. package/dist/useRackEditor-DiwCt77M.js.map +1 -0
  216. package/dist/useRealtime-C3iy9QkU.js +699 -0
  217. package/dist/useRealtime-C3iy9QkU.js.map +1 -0
  218. package/dist/useRequest-D506eHi8.js +244 -0
  219. package/dist/useRequest-D506eHi8.js.map +1 -0
  220. package/dist/utils/color.d.ts +0 -5
  221. package/dist/{composables/useDoseCalculator.d.ts → utils/dose.d.ts} +10 -13
  222. package/dist/utils/experimentStatus.d.ts +9 -0
  223. package/dist/{composables/useChemicalFormula.d.ts → utils/formula.d.ts} +3 -6
  224. package/dist/utils/integrationHost.d.ts +18 -0
  225. package/dist/utils/plotlyTemplate.d.ts +2 -0
  226. package/dist/utils/pluginSecrets.d.ts +12 -12
  227. package/dist/utils/presenceAvatars.d.ts +30 -0
  228. package/dist/utils/records.d.ts +0 -2
  229. package/dist/{composables/useTimeUtils.d.ts → utils/time.d.ts} +7 -18
  230. package/package.json +20 -17
  231. package/src/__tests__/components/ActionMenu.test.ts +0 -13
  232. package/src/__tests__/components/AlertBox.test.ts +1 -1
  233. package/src/__tests__/components/AppSidebar.test.ts +119 -167
  234. package/src/__tests__/components/AppToastContainer.test.ts +2 -2
  235. package/src/__tests__/components/AppTopBar.test.ts +230 -176
  236. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  237. package/src/__tests__/components/ArtifactSaveDialog.test.ts +83 -3
  238. package/src/__tests__/components/ArtifactSelectorModal.test.ts +6 -4
  239. package/src/__tests__/components/AuditTrail.test.ts +1 -1
  240. package/src/__tests__/components/AutoGroupModal.adapter.test.ts +1 -1
  241. package/src/__tests__/components/AutoGroupModal.anatomy.test.ts +2 -2
  242. package/src/__tests__/components/AutoGroupModal.wiring.test.ts +2 -2
  243. package/src/__tests__/components/BaseButton.test.ts +51 -0
  244. package/src/__tests__/components/{BaseToggle.test.ts → BaseCheckbox.switch.test.ts} +8 -6
  245. package/src/__tests__/components/BaseInput.test.ts +13 -34
  246. package/src/__tests__/components/BaseModal.test.ts +6 -6
  247. package/src/__tests__/components/BasePill.test.ts +33 -39
  248. package/src/__tests__/components/BaseSelect.multiple.test.ts +118 -0
  249. package/src/__tests__/components/{SearchableSelect.test.ts → BaseSelect.searchable.test.ts} +19 -9
  250. package/src/__tests__/components/BaseSelect.test.ts +11 -0
  251. package/src/__tests__/components/BaseTabs.test.ts +13 -13
  252. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  253. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  254. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  255. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  256. package/src/__tests__/components/CollapsibleCard.test.ts +1 -1
  257. package/src/__tests__/components/ComponentBindingRenderer.test.ts +25 -73
  258. package/src/__tests__/components/ConcentrationInput.test.ts +3 -3
  259. package/src/__tests__/components/ConfirmDialog.test.ts +23 -0
  260. package/src/__tests__/components/DataFrame.test.ts +140 -142
  261. package/src/__tests__/components/DataStates.test.ts +6 -22
  262. package/src/__tests__/components/{DateTimePicker.test.ts → DatePicker.datetime.test.ts} +15 -7
  263. package/src/__tests__/components/DatePicker.test.ts +21 -0
  264. package/src/__tests__/components/{TimePicker.test.ts → DatePicker.time.test.ts} +20 -19
  265. package/src/__tests__/components/DoseCalculator.test.ts +12 -7
  266. package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +6 -6
  267. package/src/__tests__/components/EmptyState.test.ts +1 -1
  268. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  269. package/src/__tests__/components/ExperimentSelectorModal.test.ts +134 -28
  270. package/src/__tests__/components/FormBuilder.test.ts +49 -167
  271. package/src/__tests__/components/FormSchemaInternal.test.ts +91 -0
  272. package/src/__tests__/components/GeneratedPathInput.test.ts +18 -13
  273. package/src/__tests__/components/GeneratedPluginView.test.ts +60 -25
  274. package/src/__tests__/components/GeneratedResultRenderer.test.ts +6 -4
  275. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  276. package/src/__tests__/components/InstrumentStatusPanels.test.ts +79 -0
  277. package/src/__tests__/components/JobsStatusTray.test.ts +4 -4
  278. package/src/__tests__/components/NumberInput.test.ts +28 -0
  279. package/src/__tests__/components/{UnitInput.test.ts → NumberInput.units.test.ts} +6 -6
  280. package/src/__tests__/components/PlateEditor.test.ts +108 -108
  281. package/src/__tests__/components/PlateEditorBindingInternal.test.ts +13 -13
  282. package/src/__tests__/components/PlotlyChart.test.ts +1 -1
  283. package/src/__tests__/components/PluginIcon.test.ts +9 -4
  284. package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +16 -29
  285. package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +28 -34
  286. package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +4 -19
  287. package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +1 -6
  288. package/src/__tests__/components/PluginWorkspaceView.test.ts +183 -155
  289. package/src/__tests__/components/PresenceAvatars.test.ts +90 -0
  290. package/src/__tests__/components/ProtocolStep.presentation.test.ts +1 -3
  291. package/src/__tests__/components/ProtocolStepEditor.test.ts +10 -11
  292. package/src/__tests__/components/ProtocolStepParameterField.test.ts +8 -7
  293. package/src/__tests__/components/ResourcePickerListInternal.test.ts +2 -22
  294. package/src/__tests__/components/RetiredStyles.test.ts +0 -18
  295. package/src/__tests__/components/SampleSelector.test.ts +30 -25
  296. package/src/__tests__/components/SecretInput.test.ts +14 -19
  297. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  298. package/src/__tests__/components/SettingsModal.test.ts +76 -84
  299. package/src/__tests__/components/StaleFormBanner.test.ts +48 -0
  300. package/src/__tests__/components/StepWizard.test.ts +11 -0
  301. package/src/__tests__/components/ThemeToggle.test.ts +1 -1
  302. package/src/__tests__/components/WellPlate.decoration.test.ts +20 -11
  303. package/src/__tests__/components/WellPlate.interaction.test.ts +6 -7
  304. package/src/__tests__/components/WellPlate.keyboard.test.ts +2 -2
  305. package/src/__tests__/components/deprecationTags.test.ts +90 -0
  306. package/src/__tests__/composables/analysisArtifactTarget.test.ts +1 -12
  307. package/src/__tests__/composables/autoGroup/classKey.test.ts +1 -1
  308. package/src/__tests__/composables/autoGroup/classify.test.ts +1 -1
  309. package/src/__tests__/composables/autoGroup/columns.test.ts +1 -1
  310. package/src/__tests__/composables/autoGroup/compose.test.ts +1 -1
  311. package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +1 -1
  312. package/src/__tests__/composables/autoGroup/fieldEdits.test.ts +1 -1
  313. package/src/__tests__/composables/autoGroup/fingerprint.test.ts +1 -1
  314. package/src/__tests__/composables/autoGroup/golden.test.ts +1 -1
  315. package/src/__tests__/composables/autoGroup/groupByOrder.test.ts +1 -1
  316. package/src/__tests__/composables/autoGroup/groupTree.test.ts +1 -1
  317. package/src/__tests__/composables/autoGroup/integration.test.ts +1 -1
  318. package/src/__tests__/composables/autoGroup/template.test.ts +1 -1
  319. package/src/__tests__/composables/autoGroup/tokenLength.test.ts +1 -1
  320. package/src/__tests__/composables/autoGroup/tokenize.test.ts +1 -1
  321. package/src/__tests__/composables/{usePluginClient.test.ts → createClient.test.ts} +84 -222
  322. package/src/__tests__/composables/{useEventStream.test.ts → eventStream.test.ts} +6 -6
  323. package/src/__tests__/composables/experiment-utils.test.ts +13 -14
  324. package/src/__tests__/composables/useApi.test.ts +32 -21
  325. package/src/__tests__/composables/useAppExperiment.test.ts +46 -3
  326. package/src/__tests__/composables/{useAnalysisArtifacts.test.ts → useArtifacts.test.ts} +19 -27
  327. package/src/__tests__/composables/useAutoGroup.test.ts +3 -13
  328. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  329. package/src/__tests__/composables/useControlSchema.test.ts +41 -99
  330. package/src/__tests__/composables/useExperiment.test.ts +63 -0
  331. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  332. package/src/__tests__/composables/useFileBrowser.test.ts +4 -6
  333. package/src/__tests__/composables/{useJobsStatusTray.test.ts → useJobCenter.test.ts} +31 -31
  334. package/src/__tests__/composables/{useGeneratedAnalysis.test.ts → useJobsEndpoint.test.ts} +213 -139
  335. package/src/__tests__/composables/usePlatform.test.ts +102 -0
  336. package/src/__tests__/composables/usePresence.test.ts +164 -0
  337. package/src/__tests__/composables/useRackEditor.test.ts +2 -2
  338. package/src/__tests__/composables/useRealtime.test.ts +196 -0
  339. package/src/__tests__/composables/{useRequestSyncState.test.ts → useRequest.test.ts} +32 -47
  340. package/src/__tests__/composables/useVersionedSave.test.ts +194 -0
  341. package/src/__tests__/docs/extractDocsComponents.test.ts +36 -0
  342. package/src/__tests__/docs/extractDocsParsing.test.ts +2 -2
  343. package/src/__tests__/docs/extractDocsTheme.test.ts +1 -46
  344. package/src/__tests__/docs/frontendDocsCatalog.test.ts +164 -84
  345. package/src/__tests__/styles/baseControlsRules.test.ts +7 -3
  346. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  347. package/src/__tests__/styles/cssTokens.test.ts +2 -2
  348. package/src/__tests__/styles/darkModeRules.test.ts +0 -6
  349. package/src/__tests__/styles/menusShellRefresh.test.ts +14 -10
  350. package/src/__tests__/{composables/useChemicalFormula.test.ts → utils/formula.test.ts} +3 -5
  351. package/src/__tests__/utils/permissions.test.ts +1 -36
  352. package/src/__tests__/utils/plotlyTemplate.test.ts +20 -5
  353. package/src/__tests__/{composables/useTimeUtils.test.ts → utils/time.test.ts} +18 -8
  354. package/src/components/ActionMenu.vue +7 -13
  355. package/src/components/AdductText.story.vue +7 -0
  356. package/src/components/AdductText.vue +1 -1
  357. package/src/components/AlertBox.story.vue +27 -27
  358. package/src/components/AlertBox.vue +22 -20
  359. package/src/components/AppLayout.story.vue +33 -44
  360. package/src/components/AppLayout.vue +1 -1
  361. package/src/components/AppSidebar.story.vue +40 -101
  362. package/src/components/AppSidebar.vue +66 -147
  363. package/src/components/AppToastContainer.story.vue +1 -1
  364. package/src/components/AppTopBar.story.vue +97 -111
  365. package/src/components/AppTopBar.vue +170 -290
  366. package/src/components/ArtifactSaveDialog.story.vue +32 -9
  367. package/src/components/ArtifactSaveDialog.vue +125 -38
  368. package/src/components/ArtifactSelectorModal.story.vue +4 -4
  369. package/src/components/ArtifactSelectorModal.vue +10 -10
  370. package/src/components/AuditTrail.story.vue +6 -5
  371. package/src/components/AuditTrail.vue +5 -24
  372. package/src/components/Avatar.story.vue +2 -3
  373. package/src/components/Avatar.vue +11 -16
  374. package/src/components/BaseButton.story.vue +25 -0
  375. package/src/components/BaseButton.vue +39 -10
  376. package/src/components/BaseCheckbox.story.vue +2 -2
  377. package/src/components/{BaseToggle.story.vue → BaseCheckbox.switch.story.vue} +22 -19
  378. package/src/components/BaseCheckbox.vue +39 -7
  379. package/src/components/BaseInput.story.vue +3 -15
  380. package/src/components/{BaseTextarea.story.vue → BaseInput.textarea.story.vue} +14 -10
  381. package/src/components/BaseInput.vue +53 -26
  382. package/src/components/BaseModal.story.vue +11 -11
  383. package/src/components/BaseModal.vue +8 -8
  384. package/src/components/BasePill.story.vue +48 -28
  385. package/src/components/BasePill.vue +22 -11
  386. package/src/components/BaseRadioGroup.story.vue +4 -4
  387. package/src/components/BaseRadioGroup.vue +3 -3
  388. package/src/components/{MultiSelect.story.vue → BaseSelect.multiple.story.vue} +33 -16
  389. package/src/components/{SearchableSelect.story.vue → BaseSelect.searchable.story.vue} +4 -4
  390. package/src/components/BaseSelect.story.vue +2 -2
  391. package/src/components/BaseSelect.vue +118 -22
  392. package/src/components/BaseTabs.story.vue +20 -20
  393. package/src/components/BaseTabs.vue +17 -9
  394. package/src/components/BatchProgressList.vue +38 -28
  395. package/src/components/ChartContainer.story.vue +9 -13
  396. package/src/components/ChartContainer.vue +10 -8
  397. package/src/components/ChemicalFormula.vue +1 -2
  398. package/src/components/CollapsibleCard.vue +5 -4
  399. package/src/components/ComponentBindingRenderer.story.vue +0 -29
  400. package/src/components/ComponentBindingRenderer.vue +15 -39
  401. package/src/components/ConcentrationInput.story.vue +2 -2
  402. package/src/components/ConcentrationInput.vue +9 -9
  403. package/src/components/ConfirmDialog.story.vue +22 -22
  404. package/src/components/ConfirmDialog.vue +15 -14
  405. package/src/components/DataFrame.story.vue +28 -40
  406. package/src/components/DataFrame.vue +112 -128
  407. package/src/components/{DateTimePicker.story.vue → DatePicker.datetime.story.vue} +19 -14
  408. package/src/components/DatePicker.story.vue +2 -2
  409. package/src/components/{TimePicker.story.vue → DatePicker.time.story.vue} +15 -12
  410. package/src/components/DatePicker.vue +82 -220
  411. package/src/components/DoseCalculator.vue +13 -19
  412. package/src/components/DoseCalculatorVolumeField.vue +6 -6
  413. package/src/components/EmptyState.story.vue +17 -17
  414. package/src/components/EmptyState.vue +6 -5
  415. package/src/components/ExperimentPopover.story.vue +165 -53
  416. package/src/components/ExperimentPopover.vue +172 -190
  417. package/src/components/ExperimentSelectorModal.story.vue +43 -39
  418. package/src/components/ExperimentSelectorModal.vue +134 -122
  419. package/src/components/FilePicker.vue +1 -1
  420. package/src/components/FormBuilder.story.vue +9 -4
  421. package/src/components/FormBuilder.vue +46 -253
  422. package/src/components/FormField.story.vue +9 -50
  423. package/src/components/FormulaInput.story.vue +2 -2
  424. package/src/components/FormulaInput.vue +5 -6
  425. package/src/components/GeneratedPathInput.vue +8 -9
  426. package/src/components/GeneratedPluginView.story.vue +1 -1
  427. package/src/components/GeneratedPluginView.vue +29 -22
  428. package/src/components/GeneratedResultRenderer.vue +16 -17
  429. package/src/components/InstrumentStateBadge.vue +1 -1
  430. package/src/components/InstrumentStatusPanels.story.vue +64 -0
  431. package/src/components/InstrumentStatusPanels.vue +133 -0
  432. package/src/components/JobsStatusTray.story.vue +2 -2
  433. package/src/components/JobsStatusTray.vue +5 -20
  434. package/src/components/LoadingSpinner.story.vue +11 -11
  435. package/src/components/LoadingSpinner.vue +7 -5
  436. package/src/components/MoleculeInput.story.vue +2 -2
  437. package/src/components/MoleculeInput.vue +3 -3
  438. package/src/components/NumberInput.story.vue +55 -15
  439. package/src/components/NumberInput.vue +83 -24
  440. package/src/components/PlateEditor.story.vue +51 -43
  441. package/src/components/PlateEditor.vue +97 -128
  442. package/src/components/PlotlyChart.story.vue +1 -1
  443. package/src/components/PlotlyChart.vue +6 -4
  444. package/src/components/PluginIcon.story.vue +6 -11
  445. package/src/components/PluginIcon.vue +7 -2
  446. package/src/components/PluginWorkspaceView.controls.ts +9 -29
  447. package/src/components/PluginWorkspaceView.navigation.ts +2 -23
  448. package/src/components/PluginWorkspaceView.props.ts +17 -151
  449. package/src/components/PluginWorkspaceView.shell.ts +13 -24
  450. package/src/components/PluginWorkspaceView.story.vue +65 -63
  451. package/src/components/PluginWorkspaceView.vue +21 -78
  452. package/src/components/PresenceAvatars.story.vue +75 -0
  453. package/src/components/PresenceAvatars.vue +114 -0
  454. package/src/components/ProgressBar.story.vue +7 -7
  455. package/src/components/ProgressBar.vue +4 -3
  456. package/src/components/ProtocolStep.presentation.ts +0 -11
  457. package/src/components/ProtocolStepEditor.vue +6 -5
  458. package/src/components/ProtocolStepParameterField.vue +15 -12
  459. package/src/components/RuntimeUpdateNotice.vue +1 -1
  460. package/src/components/SampleSelector.colors.ts +1 -1
  461. package/src/components/SampleSelector.story.vue +1 -1
  462. package/src/components/SampleSelector.vue +33 -43
  463. package/src/components/SampleSelectorGroupNode.vue +1 -1
  464. package/src/components/ScheduleCalendar.vue +4 -4
  465. package/src/components/SecretInput.story.vue +1 -1
  466. package/src/components/SecretInput.vue +16 -25
  467. package/src/components/SectionCard.story.vue +2 -2
  468. package/src/components/SegmentedControl.story.vue +7 -7
  469. package/src/components/SegmentedControl.vue +5 -3
  470. package/src/components/SequenceInput.story.vue +2 -2
  471. package/src/components/SequenceInput.vue +3 -3
  472. package/src/components/SequenceProgressBar.story.vue +9 -0
  473. package/src/components/SequenceProgressBar.vue +6 -1
  474. package/src/components/SettingsModal.schema.ts +1 -1
  475. package/src/components/SettingsModal.story.vue +13 -14
  476. package/src/components/SettingsModal.vue +31 -49
  477. package/src/components/SmartGroup.types.ts +4 -6
  478. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  479. package/src/components/SmartGroupFieldRecipe.vue +7 -5
  480. package/src/components/SmartGroupManual.story.vue +1 -1
  481. package/src/components/StaleFormBanner.story.vue +90 -0
  482. package/src/components/StaleFormBanner.vue +83 -0
  483. package/src/components/StepWizard.story.vue +33 -0
  484. package/src/components/StepWizard.vue +8 -1
  485. package/src/components/TagsInput.story.vue +7 -7
  486. package/src/components/TagsInput.vue +7 -6
  487. package/src/components/ThemeToggle.vue +5 -30
  488. package/src/components/TimeRangeInput.story.vue +1 -1
  489. package/src/components/TimeRangeInput.vue +10 -8
  490. package/src/components/VersionConflictDialog.story.vue +60 -0
  491. package/src/components/VersionConflictDialog.vue +79 -0
  492. package/src/components/WellPlate.geometry.ts +0 -38
  493. package/src/components/WellPlate.rendering.ts +0 -13
  494. package/src/components/WellPlate.story.vue +64 -51
  495. package/src/components/WellPlate.vue +68 -87
  496. package/src/components/index.ts +3 -105
  497. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  498. package/src/components/{AutoGroupModal.adapter.ts → internal/AutoGroupModalInternal.adapter.ts} +8 -8
  499. package/src/components/{AutoGroupModal.vue → internal/AutoGroupModalInternal.vue} +23 -23
  500. package/src/components/{BaseToggle.vue → internal/CheckboxSwitchInternal.vue} +8 -8
  501. package/src/components/internal/DataStateInternal.vue +1 -1
  502. package/src/components/internal/DatePickerDateInternal.vue +219 -0
  503. package/src/components/{DateTimePicker.vue → internal/DatePickerDateTimeInternal.vue} +12 -22
  504. package/src/components/{TimePicker.vue → internal/DatePickerTimeInternal.vue} +12 -15
  505. package/src/components/internal/FilePickerListInternal.vue +8 -14
  506. package/src/components/{FormActions.vue → internal/FormActionsInternal.vue} +2 -2
  507. package/src/components/internal/FormFieldRendererInternal.vue +1 -1
  508. package/src/components/internal/FormSchemaInternal.vue +253 -0
  509. package/src/components/{UnitInput.vue → internal/NumberUnitInputInternal.vue} +28 -28
  510. package/src/components/internal/PlateEditorBindingInternal.vue +8 -7
  511. package/src/components/internal/ResourcePickerListInternal.vue +48 -88
  512. package/src/components/internal/SelectMultipleInternal.vue +242 -0
  513. package/src/components/{SearchableSelect.vue → internal/SelectSearchableInternal.vue} +26 -11
  514. package/src/components/internal/WellEditPopupInternal.vue +4 -9
  515. package/src/components/internal/WorkspaceShellInternal.vue +3 -36
  516. package/src/components/internal/WorkspaceSidebarInternal.vue +4 -25
  517. package/src/{composables → components/internal}/autoGroup/classKey.ts +1 -1
  518. package/src/{composables → components/internal}/autoGroup/classify.ts +1 -1
  519. package/src/{composables → components/internal}/autoGroup/columns.ts +1 -1
  520. package/src/{composables → components/internal}/autoGroup/compose.ts +3 -3
  521. package/src/{composables → components/internal}/autoGroup/cooccurrence.ts +1 -1
  522. package/src/{composables → components/internal}/autoGroup/csv-shim.ts +1 -1
  523. package/src/{composables → components/internal}/autoGroup/fingerprint.ts +1 -1
  524. package/src/{composables → components/internal}/autoGroup/index.ts +1 -2
  525. package/src/{composables → components/internal}/autoGroup/template.ts +1 -1
  526. package/src/{composables → components/internal}/autoGroup/tokenLength.ts +1 -1
  527. package/src/components/internal/generatedJobsApi.ts +1 -1
  528. package/src/{composables → components/internal}/useAutoGroup.ts +3 -57
  529. package/src/composables/componentSpecs.ts +62 -0
  530. package/src/composables/controlComponentBindings.ts +7 -0
  531. package/src/composables/controlSchemaAdapters.ts +45 -7
  532. package/src/composables/controlSchemaDoseDesign.ts +16 -5
  533. package/src/composables/controlSchemaModel.ts +1 -1
  534. package/src/composables/controlSchemaTypes.ts +31 -22
  535. package/src/composables/{usePluginClient.ts → createClient.ts} +54 -190
  536. package/src/composables/{useEventStream.ts → eventStream.ts} +3 -3
  537. package/src/composables/experiment-utils.ts +1 -39
  538. package/src/composables/formBuilderRegistry.ts +6 -12
  539. package/src/composables/index.ts +17 -480
  540. package/src/composables/platformContextHelpers.ts +0 -57
  541. package/src/composables/pluginEndpointBuilder.ts +8 -10
  542. package/src/composables/pluginIdentity.ts +31 -0
  543. package/src/composables/pluginWorkspaceModel.ts +16 -107
  544. package/src/composables/useApi.ts +18 -30
  545. package/src/composables/useAppExperiment.ts +26 -5
  546. package/src/composables/{useAnalysisArtifacts.ts → useArtifacts.ts} +18 -19
  547. package/src/composables/useCalendarGrid.ts +4 -3
  548. package/src/composables/useControlSchema.ts +5 -9
  549. package/src/composables/useControlWorkspace.ts +4 -7
  550. package/src/composables/useExperiment.ts +49 -0
  551. package/src/composables/useExperimentData.ts +4 -4
  552. package/src/composables/useExperimentSelector.ts +82 -36
  553. package/src/composables/useFileBrowser.ts +5 -13
  554. package/src/composables/useFilePicker.ts +2 -2
  555. package/src/composables/useFormBuilder.ts +3 -4
  556. package/src/composables/useJobCenter.ts +324 -0
  557. package/src/composables/{useGeneratedAnalysis.ts → useJobsEndpoint.ts} +53 -67
  558. package/src/composables/useMenuKeyboard.ts +1 -1
  559. package/src/composables/usePlatform.ts +95 -0
  560. package/src/composables/usePlatformFilePickerAdapter.ts +2 -1
  561. package/src/composables/usePluginWorkspace.ts +62 -107
  562. package/src/composables/usePresence.ts +110 -0
  563. package/src/composables/useRackEditor.ts +3 -3
  564. package/src/composables/useRealtime.ts +194 -0
  565. package/src/composables/{useRequestSyncState.ts → useRequest.ts} +25 -48
  566. package/src/composables/useScheduleCalendarLayout.ts +1 -1
  567. package/src/composables/useToast.ts +14 -11
  568. package/src/composables/useVersionedSave.ts +165 -0
  569. package/src/data.ts +130 -0
  570. package/src/deprecatedRootExports.ts +226 -0
  571. package/src/generated/schema.ts +1 -0
  572. package/src/host.ts +27 -0
  573. package/src/index.ts +2 -71
  574. package/src/install.ts +15 -2
  575. package/src/instrument.ts +1 -6
  576. package/src/lab.ts +128 -0
  577. package/src/permissions.ts +0 -27
  578. package/src/runtime.ts +145 -0
  579. package/src/shell.ts +103 -0
  580. package/src/stores/auth.ts +26 -162
  581. package/src/stores/experiment.ts +27 -1
  582. package/src/styles/components/action-menu.css +0 -5
  583. package/src/styles/components/adduct-text.css +13 -5
  584. package/src/styles/components/alert-box.css +39 -40
  585. package/src/styles/components/app-layout.css +6 -5
  586. package/src/styles/components/app-page-selector.css +3 -1
  587. package/src/styles/components/app-pill-nav.css +11 -12
  588. package/src/styles/components/app-sidebar.css +9 -18
  589. package/src/styles/components/app-top-bar.css +64 -103
  590. package/src/styles/components/artifact-save-dialog.css +153 -2
  591. package/src/styles/components/audit-trail.css +16 -19
  592. package/src/styles/components/avatar.css +6 -4
  593. package/src/styles/components/batch-progress-list.css +38 -36
  594. package/src/styles/components/button.css +40 -59
  595. package/src/styles/components/calendar.css +12 -12
  596. package/src/styles/components/chart-container.css +34 -23
  597. package/src/styles/components/checkbox.css +3 -13
  598. package/src/styles/components/collapsible-card.css +28 -30
  599. package/src/styles/components/confirm-dialog.css +31 -16
  600. package/src/styles/components/dataframe.css +12 -4
  601. package/src/styles/components/date-picker.css +80 -92
  602. package/src/styles/components/datetime-picker.css +31 -43
  603. package/src/styles/components/divider.css +20 -20
  604. package/src/styles/components/dose-calculator.css +3 -3
  605. package/src/styles/components/empty-state.css +23 -18
  606. package/src/styles/components/experiment-code-badge.css +2 -0
  607. package/src/styles/components/experiment-popover.css +174 -329
  608. package/src/styles/components/experiment-selector-modal.css +75 -56
  609. package/src/styles/components/file-picker.css +4 -4
  610. package/src/styles/components/file-uploader.css +38 -49
  611. package/src/styles/components/form-builder.css +3 -3
  612. package/src/styles/components/formula-input.css +1 -1
  613. package/src/styles/components/icon-button.css +19 -25
  614. package/src/styles/components/input.css +5 -4
  615. package/src/styles/components/instrument-monitor.css +13 -15
  616. package/src/styles/components/jobs-status-tray.css +31 -25
  617. package/src/styles/components/loading-spinner.css +9 -12
  618. package/src/styles/components/modal.css +2 -4
  619. package/src/styles/components/molecule-input.css +2 -2
  620. package/src/styles/components/multi-select.css +65 -112
  621. package/src/styles/components/number-input.css +26 -19
  622. package/src/styles/components/pill.css +43 -37
  623. package/src/styles/components/plate-editor.css +0 -1
  624. package/src/styles/components/plugin-icon.css +34 -22
  625. package/src/styles/components/popover.css +2 -2
  626. package/src/styles/components/presence-avatars.css +194 -0
  627. package/src/styles/components/progress-bar.css +2 -0
  628. package/src/styles/components/protocol-step-editor.css +1 -3
  629. package/src/styles/components/resource-card.css +2 -2
  630. package/src/styles/components/resource-picker-list.css +6 -57
  631. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  632. package/src/styles/components/sample-selector.css +95 -79
  633. package/src/styles/components/schedule-calendar.css +8 -8
  634. package/src/styles/components/searchable-select.css +15 -12
  635. package/src/styles/components/section-card.css +28 -47
  636. package/src/styles/components/segmented-control.css +18 -15
  637. package/src/styles/components/select.css +3 -3
  638. package/src/styles/components/sequence-input.css +2 -2
  639. package/src/styles/components/sequence-progress-bar.css +17 -8
  640. package/src/styles/components/smart-group.css +19 -24
  641. package/src/styles/components/step-wizard.css +52 -16
  642. package/src/styles/components/tabs.css +2 -2
  643. package/src/styles/components/textarea.css +4 -4
  644. package/src/styles/components/time-picker.css +36 -21
  645. package/src/styles/components/toast.css +12 -10
  646. package/src/styles/components/toggle.css +3 -13
  647. package/src/styles/components/tooltip.css +10 -9
  648. package/src/styles/components/unit-input.css +8 -7
  649. package/src/styles/components/version-conflict.css +122 -0
  650. package/src/styles/components/well-plate.css +8 -8
  651. package/src/styles/index.css +2 -11
  652. package/src/styles/variables.css +107 -602
  653. package/src/types/analysisArtifactTypes.ts +1 -1
  654. package/src/types/auth.ts +0 -10
  655. package/src/types/componentLabTypes.ts +103 -53
  656. package/src/types/componentWorkflowTypes.ts +4 -33
  657. package/src/types/components.ts +148 -114
  658. package/src/types/form-builder.ts +4 -0
  659. package/src/types/generated/platformContext.ts +60 -0
  660. package/src/types/generated-ui.ts +6 -2
  661. package/src/types/index.ts +15 -53
  662. package/src/types/instrument.ts +27 -0
  663. package/src/types/platform.ts +25 -89
  664. package/src/utils/color.ts +1 -12
  665. package/src/utils/dose.ts +335 -0
  666. package/src/utils/experimentStatus.ts +43 -0
  667. package/src/utils/formula.ts +292 -0
  668. package/src/utils/integrationHost.ts +27 -0
  669. package/src/utils/plotlyTemplate.ts +6 -0
  670. package/src/utils/pluginSecrets.ts +23 -23
  671. package/src/utils/presenceAvatars.ts +53 -0
  672. package/src/utils/records.ts +0 -5
  673. package/src/{composables/useTimeUtils.ts → utils/time.ts} +21 -21
  674. package/dist/ResourcePickerListInternal-CFAw4vTZ.js +0 -605
  675. package/dist/ResourcePickerListInternal-CFAw4vTZ.js.map +0 -1
  676. package/dist/__tests__/composables/useBioTemplatePackWorkspace.test.d.ts +0 -1
  677. package/dist/__tests__/composables/useBioTemplatePresetWorkspace.test.d.ts +0 -1
  678. package/dist/__tests__/composables/useBioTemplateWorkspace.test.d.ts +0 -1
  679. package/dist/__tests__/composables/useChemicalFormula.test.d.ts +0 -1
  680. package/dist/__tests__/composables/useEventStream.test.d.ts +0 -1
  681. package/dist/__tests__/composables/useExperimentSave.test.d.ts +0 -1
  682. package/dist/__tests__/composables/useGeneratedAnalysis.test.d.ts +0 -1
  683. package/dist/__tests__/composables/useGroupAssignment.test.d.ts +0 -1
  684. package/dist/__tests__/composables/useJobsStatusTray.test.d.ts +0 -1
  685. package/dist/__tests__/composables/useMobileSupportGate.test.d.ts +0 -1
  686. package/dist/__tests__/composables/usePlatformContext.test.d.ts +0 -1
  687. package/dist/__tests__/composables/usePluginClient.test.d.ts +0 -1
  688. package/dist/__tests__/composables/usePresenceHeartbeat.test.d.ts +0 -1
  689. package/dist/__tests__/composables/useRequestSyncState.test.d.ts +0 -1
  690. package/dist/__tests__/composables/useRuntimeAlignment.test.d.ts +0 -1
  691. package/dist/__tests__/composables/useTemplateCollection.test.d.ts +0 -1
  692. package/dist/__tests__/composables/useTimeUtils.test.d.ts +0 -1
  693. package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +0 -1
  694. package/dist/__tests__/templates/templates.test.d.ts +0 -1
  695. package/dist/__tests__/templates/templatesDeprecation.test.d.ts +0 -1
  696. package/dist/__tests__/utils/lcms.test.d.ts +0 -1
  697. package/dist/__tests__/utils/rack.test.d.ts +0 -1
  698. package/dist/components/AppAvatarMenu.vue.d.ts +0 -47
  699. package/dist/components/AppTopBar.navigation.d.ts +0 -10
  700. package/dist/components/BaseTextarea.vue.d.ts +0 -31
  701. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +0 -112
  702. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +0 -86
  703. package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +0 -80
  704. package/dist/components/BioTemplateRenderer.vue.d.ts +0 -30
  705. package/dist/components/ControlWorkspaceView.vue.d.ts +0 -138
  706. package/dist/components/DoseDesignWorkspaceView.vue.d.ts +0 -140
  707. package/dist/components/ExperimentDataViewer.vue.d.ts +0 -54
  708. package/dist/components/ExperimentTimeline.vue.d.ts +0 -70
  709. package/dist/components/FitPanel.vue.d.ts +0 -56
  710. package/dist/components/GroupAssigner.vue.d.ts +0 -26
  711. package/dist/components/IconButton.vue.d.ts +0 -30
  712. package/dist/components/MobileSupportGate.vue.d.ts +0 -32
  713. package/dist/components/ReagentEditor.vue.d.ts +0 -31
  714. package/dist/components/ReagentList.presentation.d.ts +0 -17
  715. package/dist/components/ReagentList.vue.d.ts +0 -58
  716. package/dist/components/SampleLegend.vue.d.ts +0 -33
  717. package/dist/components/SmartGroupModal.vue.d.ts +0 -29
  718. package/dist/components/index.js +0 -5
  719. package/dist/components-BOA5e7kb.js +0 -23137
  720. package/dist/components-BOA5e7kb.js.map +0 -1
  721. package/dist/composables/flattenWorkspaceBindings.d.ts +0 -61
  722. package/dist/composables/index.js +0 -7
  723. package/dist/composables/useBioTemplateComponents.d.ts +0 -34
  724. package/dist/composables/useBioTemplateControls.d.ts +0 -10
  725. package/dist/composables/useBioTemplatePackWorkspace.d.ts +0 -56
  726. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +0 -79
  727. package/dist/composables/useBioTemplateWorkspace.d.ts +0 -39
  728. package/dist/composables/useExperimentSave.d.ts +0 -69
  729. package/dist/composables/useGroupAssignment.d.ts +0 -35
  730. package/dist/composables/useJobsStatusTray.d.ts +0 -87
  731. package/dist/composables/useMobileSupportGate.d.ts +0 -14
  732. package/dist/composables/usePlatformContext.d.ts +0 -218
  733. package/dist/composables/usePresenceHeartbeat.d.ts +0 -49
  734. package/dist/composables/useRuntimeAlignment.d.ts +0 -44
  735. package/dist/composables/useTemplateCollection.d.ts +0 -62
  736. package/dist/composables/workspaceRecipes.d.ts +0 -189
  737. package/dist/composables-izSQH8Ky.js +0 -591
  738. package/dist/composables-izSQH8Ky.js.map +0 -1
  739. package/dist/experiment-D49y_Kro.js +0 -459
  740. package/dist/experiment-D49y_Kro.js.map +0 -1
  741. package/dist/experiment-utils-DTANyVKV.js.map +0 -1
  742. package/dist/install.js.map +0 -1
  743. package/dist/lcms.d.ts +0 -38
  744. package/dist/settings-BG6v13Zq.js +0 -341
  745. package/dist/settings-BG6v13Zq.js.map +0 -1
  746. package/dist/tailwind.preset.d.ts +0 -63
  747. package/dist/tailwind.preset.js +0 -71
  748. package/dist/tailwind.preset.js.map +0 -1
  749. package/dist/templates/adapters.d.ts +0 -19
  750. package/dist/templates/assayLookups.d.ts +0 -3
  751. package/dist/templates/assayMatrixAdapters.d.ts +0 -13
  752. package/dist/templates/assayMatrixBuilder.d.ts +0 -3
  753. package/dist/templates/assayNormalizers.d.ts +0 -4
  754. package/dist/templates/builderIdUtils.d.ts +0 -4
  755. package/dist/templates/builderPresetControls.d.ts +0 -11
  756. package/dist/templates/builderReadUtils.d.ts +0 -8
  757. package/dist/templates/builders.d.ts +0 -26
  758. package/dist/templates/calibrationCurveAdapters.d.ts +0 -7
  759. package/dist/templates/calibrationCurveBuilder.d.ts +0 -3
  760. package/dist/templates/calibrationNormalizers.d.ts +0 -5
  761. package/dist/templates/catalog.d.ts +0 -192
  762. package/dist/templates/componentBindingCatalog.d.ts +0 -25
  763. package/dist/templates/componentBindingHelpers.d.ts +0 -17
  764. package/dist/templates/componentBindings.d.ts +0 -97
  765. package/dist/templates/componentDoseResponseProps.d.ts +0 -3
  766. package/dist/templates/componentGenericProps.d.ts +0 -8
  767. package/dist/templates/componentPlateHelpers.d.ts +0 -11
  768. package/dist/templates/componentPlateMapProps.d.ts +0 -3
  769. package/dist/templates/componentPropsFactory.d.ts +0 -3
  770. package/dist/templates/componentQpcrPlateProps.d.ts +0 -3
  771. package/dist/templates/componentTargetResolvers.d.ts +0 -5
  772. package/dist/templates/componentTemplateProps.d.ts +0 -3
  773. package/dist/templates/controlSchemaClone.d.ts +0 -4
  774. package/dist/templates/controlSchemaConstants.d.ts +0 -10
  775. package/dist/templates/controlSchemaMerge.d.ts +0 -3
  776. package/dist/templates/controlSchemaTargets.d.ts +0 -17
  777. package/dist/templates/controlSchemaTypes.d.ts +0 -4
  778. package/dist/templates/controlSchemas.d.ts +0 -34
  779. package/dist/templates/defaultBioTemplateBuilder.d.ts +0 -3
  780. package/dist/templates/doseResponseAdapters.d.ts +0 -6
  781. package/dist/templates/doseResponseBuilder.d.ts +0 -3
  782. package/dist/templates/elisaAssayCollectionBuilder.d.ts +0 -3
  783. package/dist/templates/flowCytometryAssayCollectionBuilder.d.ts +0 -3
  784. package/dist/templates/flowCytometryPanelBuilder.d.ts +0 -3
  785. package/dist/templates/flowNormalizers.d.ts +0 -8
  786. package/dist/templates/flowPanelAdapters.d.ts +0 -7
  787. package/dist/templates/index.d.ts +0 -15
  788. package/dist/templates/index.js +0 -2
  789. package/dist/templates/instrumentRunAdapterHelpers.d.ts +0 -8
  790. package/dist/templates/instrumentRunAdapters.d.ts +0 -19
  791. package/dist/templates/instrumentRunBuilder.d.ts +0 -3
  792. package/dist/templates/lcmsBatchCollectionBuilder.d.ts +0 -3
  793. package/dist/templates/lookup.d.ts +0 -4
  794. package/dist/templates/packs.d.ts +0 -21
  795. package/dist/templates/plateMapAdapters.d.ts +0 -5
  796. package/dist/templates/plateMapBuilder.d.ts +0 -3
  797. package/dist/templates/presetControlSchemas.d.ts +0 -534
  798. package/dist/templates/presets.d.ts +0 -106
  799. package/dist/templates/protocolAdapters.d.ts +0 -9
  800. package/dist/templates/protocolNormalizers.d.ts +0 -6
  801. package/dist/templates/protocolStepsBuilder.d.ts +0 -3
  802. package/dist/templates/qpcrAdapters.d.ts +0 -9
  803. package/dist/templates/qpcrExpressionCollectionBuilder.d.ts +0 -3
  804. package/dist/templates/qpcrPlateBuilder.d.ts +0 -3
  805. package/dist/templates/reagentAdapters.d.ts +0 -9
  806. package/dist/templates/reagentListBuilder.d.ts +0 -3
  807. package/dist/templates/runNormalizers.d.ts +0 -10
  808. package/dist/templates/sampleNormalizers.d.ts +0 -4
  809. package/dist/templates/samplePrepAdapters.d.ts +0 -7
  810. package/dist/templates/samplePrepBuilder.d.ts +0 -3
  811. package/dist/templates/sampleSheetAdapters.d.ts +0 -9
  812. package/dist/templates/sampleSheetBuilder.d.ts +0 -3
  813. package/dist/templates/targetedMetabolomicsCollectionBuilder.d.ts +0 -3
  814. package/dist/templates/targetedMetabolomicsHelpers.d.ts +0 -5
  815. package/dist/templates/templateAdapterTypes.d.ts +0 -48
  816. package/dist/templates/templateControlSchemas.d.ts +0 -400
  817. package/dist/templates/templateCreateOptions.d.ts +0 -165
  818. package/dist/templates/templateEnvelopes.d.ts +0 -17
  819. package/dist/templates/templatePackCollectionBuilder.d.ts +0 -3
  820. package/dist/templates/templatePresetCollectionBuilder.d.ts +0 -20
  821. package/dist/templates/templateQpcrTypes.d.ts +0 -42
  822. package/dist/templates/templateValidators.d.ts +0 -25
  823. package/dist/templates/timeCourseAdapters.d.ts +0 -9
  824. package/dist/templates/timeCourseBuilder.d.ts +0 -3
  825. package/dist/templates/types.d.ts +0 -304
  826. package/dist/templates/wellPlateScreenCollectionBuilder.d.ts +0 -3
  827. package/dist/templates/westernBlotAssayCollectionBuilder.d.ts +0 -3
  828. package/dist/templates-B2DB0MCM.js +0 -12304
  829. package/dist/templates-B2DB0MCM.js.map +0 -1
  830. package/dist/utils/rack.d.ts +0 -63
  831. package/dist/validation-C_eH_vIg.js +0 -7999
  832. package/dist/validation-C_eH_vIg.js.map +0 -1
  833. package/src/__tests__/components/AppAvatarMenu.test.ts +0 -186
  834. package/src/__tests__/components/AppTopBar.navigation.test.ts +0 -68
  835. package/src/__tests__/components/AppTopBarPresence.test.ts +0 -47
  836. package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +0 -159
  837. package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +0 -192
  838. package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +0 -307
  839. package/src/__tests__/components/BioTemplateRenderer.test.ts +0 -96
  840. package/src/__tests__/components/ControlWorkspaceView.test.ts +0 -1100
  841. package/src/__tests__/components/DoseDesignWorkspaceView.test.ts +0 -183
  842. package/src/__tests__/components/ExperimentTimeline.test.ts +0 -108
  843. package/src/__tests__/components/FitPanel.test.ts +0 -96
  844. package/src/__tests__/components/GroupAssigner.test.ts +0 -101
  845. package/src/__tests__/components/MobileSupportGate.test.ts +0 -120
  846. package/src/__tests__/components/MultiSelect.test.ts +0 -54
  847. package/src/__tests__/components/ReagentList.presentation.test.ts +0 -73
  848. package/src/__tests__/components/ReagentList.test.ts +0 -167
  849. package/src/__tests__/components/SampleLegend.test.ts +0 -18
  850. package/src/__tests__/components/SmartGroupModal.test.ts +0 -69
  851. package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +0 -58
  852. package/src/__tests__/components/iconButtonIconSizing.test.ts +0 -18
  853. package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +0 -125
  854. package/src/__tests__/composables/useBioTemplatePresetWorkspace.test.ts +0 -199
  855. package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +0 -104
  856. package/src/__tests__/composables/useExperimentSave.test.ts +0 -542
  857. package/src/__tests__/composables/useGroupAssignment.test.ts +0 -73
  858. package/src/__tests__/composables/useMobileSupportGate.test.ts +0 -74
  859. package/src/__tests__/composables/usePlatformContext.test.ts +0 -148
  860. package/src/__tests__/composables/usePresenceHeartbeat.test.ts +0 -164
  861. package/src/__tests__/composables/useRuntimeAlignment.test.ts +0 -145
  862. package/src/__tests__/composables/useTemplateCollection.test.ts +0 -147
  863. package/src/__tests__/docs/extractDocsTemplates.test.ts +0 -53
  864. package/src/__tests__/fixtures/templates/dose-response.json +0 -81
  865. package/src/__tests__/fixtures/templates/plate-map.json +0 -54
  866. package/src/__tests__/fixtures/templates/qpcr-plate.json +0 -96
  867. package/src/__tests__/fixtures/templates/sample-sheet.json +0 -71
  868. package/src/__tests__/templates/templates.test.ts +0 -1235
  869. package/src/__tests__/templates/templatesDeprecation.test.ts +0 -78
  870. package/src/__tests__/utils/lcms.test.ts +0 -73
  871. package/src/__tests__/utils/rack.test.ts +0 -120
  872. package/src/components/AppAvatarMenu.story.vue +0 -155
  873. package/src/components/AppAvatarMenu.vue +0 -154
  874. package/src/components/AppTopBar.navigation.ts +0 -60
  875. package/src/components/AutoGroupModal.story.vue +0 -458
  876. package/src/components/BaseTextarea.vue +0 -58
  877. package/src/components/BioTemplateExperimentWorkspaceView.story.vue +0 -123
  878. package/src/components/BioTemplateExperimentWorkspaceView.vue +0 -339
  879. package/src/components/BioTemplatePackWorkspaceView.story.vue +0 -107
  880. package/src/components/BioTemplatePackWorkspaceView.vue +0 -180
  881. package/src/components/BioTemplatePresetWorkspaceView.story.vue +0 -163
  882. package/src/components/BioTemplatePresetWorkspaceView.vue +0 -403
  883. package/src/components/BioTemplateRenderer.story.vue +0 -57
  884. package/src/components/BioTemplateRenderer.vue +0 -64
  885. package/src/components/ControlWorkspaceView.story.vue +0 -347
  886. package/src/components/ControlWorkspaceView.vue +0 -370
  887. package/src/components/DoseDesignWorkspaceView.story.vue +0 -77
  888. package/src/components/DoseDesignWorkspaceView.vue +0 -243
  889. package/src/components/ExperimentDataViewer.story.vue +0 -177
  890. package/src/components/ExperimentDataViewer.vue +0 -313
  891. package/src/components/ExperimentTimeline.story.vue +0 -208
  892. package/src/components/ExperimentTimeline.vue +0 -383
  893. package/src/components/FitPanel.story.vue +0 -191
  894. package/src/components/FitPanel.vue +0 -168
  895. package/src/components/FormActions.story.vue +0 -96
  896. package/src/components/GroupAssigner.story.vue +0 -83
  897. package/src/components/GroupAssigner.vue +0 -319
  898. package/src/components/IconButton.story.vue +0 -140
  899. package/src/components/IconButton.vue +0 -69
  900. package/src/components/MobileSupportGate.story.vue +0 -52
  901. package/src/components/MobileSupportGate.vue +0 -111
  902. package/src/components/MultiSelect.vue +0 -119
  903. package/src/components/ReagentEditor.story.vue +0 -153
  904. package/src/components/ReagentEditor.vue +0 -414
  905. package/src/components/ReagentList.presentation.ts +0 -106
  906. package/src/components/ReagentList.story.vue +0 -155
  907. package/src/components/ReagentList.vue +0 -438
  908. package/src/components/SampleLegend.story.vue +0 -91
  909. package/src/components/SampleLegend.vue +0 -121
  910. package/src/components/SmartGroupModal.story.vue +0 -61
  911. package/src/components/SmartGroupModal.vue +0 -61
  912. package/src/components/StatusIndicator.story.vue +0 -99
  913. package/src/components/StatusIndicator.vue +0 -36
  914. package/src/components/UnitInput.story.vue +0 -194
  915. package/src/composables/flattenWorkspaceBindings.ts +0 -104
  916. package/src/composables/useBioTemplateComponents.ts +0 -117
  917. package/src/composables/useBioTemplateControls.ts +0 -45
  918. package/src/composables/useBioTemplatePackWorkspace.ts +0 -201
  919. package/src/composables/useBioTemplatePresetWorkspace.ts +0 -329
  920. package/src/composables/useBioTemplateWorkspace.ts +0 -120
  921. package/src/composables/useChemicalFormula.ts +0 -301
  922. package/src/composables/useDoseCalculator.ts +0 -370
  923. package/src/composables/useExperimentSave.ts +0 -348
  924. package/src/composables/useGroupAssignment.ts +0 -152
  925. package/src/composables/useJobsStatusTray.ts +0 -493
  926. package/src/composables/useMobileSupportGate.ts +0 -80
  927. package/src/composables/usePlatformContext.ts +0 -299
  928. package/src/composables/usePresenceHeartbeat.ts +0 -201
  929. package/src/composables/useRuntimeAlignment.ts +0 -184
  930. package/src/composables/useTemplateCollection.ts +0 -233
  931. package/src/composables/workspaceRecipes.ts +0 -268
  932. package/src/lcms.ts +0 -119
  933. package/src/styles/components/app-avatar-menu.css +0 -121
  934. package/src/styles/components/experiment-data-viewer.css +0 -138
  935. package/src/styles/components/experiment-timeline.css +0 -572
  936. package/src/styles/components/fit-panel.css +0 -153
  937. package/src/styles/components/group-assigner.css +0 -198
  938. package/src/styles/components/mobile-support-gate.css +0 -117
  939. package/src/styles/components/reagent-editor.css +0 -501
  940. package/src/styles/components/reagent-list.css +0 -408
  941. package/src/styles/components/sample-legend.css +0 -212
  942. package/src/styles/components/status-indicator.css +0 -66
  943. package/src/styles/components/theme-toggle.css +0 -6
  944. package/src/tailwind.preset.ts +0 -66
  945. package/src/templates/adapters.ts +0 -141
  946. package/src/templates/assayLookups.ts +0 -33
  947. package/src/templates/assayMatrixAdapters.ts +0 -85
  948. package/src/templates/assayMatrixBuilder.ts +0 -60
  949. package/src/templates/assayNormalizers.ts +0 -34
  950. package/src/templates/builderIdUtils.ts +0 -20
  951. package/src/templates/builderPresetControls.ts +0 -166
  952. package/src/templates/builderReadUtils.ts +0 -55
  953. package/src/templates/builders.ts +0 -122
  954. package/src/templates/calibrationCurveAdapters.ts +0 -62
  955. package/src/templates/calibrationCurveBuilder.ts +0 -100
  956. package/src/templates/calibrationNormalizers.ts +0 -60
  957. package/src/templates/catalog.ts +0 -249
  958. package/src/templates/componentBindingCatalog.ts +0 -90
  959. package/src/templates/componentBindingHelpers.ts +0 -93
  960. package/src/templates/componentBindings.ts +0 -279
  961. package/src/templates/componentDoseResponseProps.ts +0 -41
  962. package/src/templates/componentGenericProps.ts +0 -77
  963. package/src/templates/componentPlateHelpers.ts +0 -52
  964. package/src/templates/componentPlateMapProps.ts +0 -34
  965. package/src/templates/componentPropsFactory.ts +0 -21
  966. package/src/templates/componentQpcrPlateProps.ts +0 -27
  967. package/src/templates/componentTargetResolvers.ts +0 -67
  968. package/src/templates/componentTemplateProps.ts +0 -78
  969. package/src/templates/controlSchemaClone.ts +0 -32
  970. package/src/templates/controlSchemaConstants.ts +0 -11
  971. package/src/templates/controlSchemaMerge.ts +0 -40
  972. package/src/templates/controlSchemaTargets.ts +0 -85
  973. package/src/templates/controlSchemaTypes.ts +0 -20
  974. package/src/templates/controlSchemas.ts +0 -113
  975. package/src/templates/defaultBioTemplateBuilder.ts +0 -125
  976. package/src/templates/doseResponseAdapters.ts +0 -36
  977. package/src/templates/doseResponseBuilder.ts +0 -45
  978. package/src/templates/elisaAssayCollectionBuilder.ts +0 -63
  979. package/src/templates/flowCytometryAssayCollectionBuilder.ts +0 -42
  980. package/src/templates/flowCytometryPanelBuilder.ts +0 -54
  981. package/src/templates/flowNormalizers.ts +0 -58
  982. package/src/templates/flowPanelAdapters.ts +0 -61
  983. package/src/templates/index.ts +0 -330
  984. package/src/templates/instrumentRunAdapterHelpers.ts +0 -94
  985. package/src/templates/instrumentRunAdapters.ts +0 -174
  986. package/src/templates/instrumentRunBuilder.ts +0 -98
  987. package/src/templates/lcmsBatchCollectionBuilder.ts +0 -39
  988. package/src/templates/lookup.ts +0 -18
  989. package/src/templates/packs.ts +0 -166
  990. package/src/templates/plateMapAdapters.ts +0 -38
  991. package/src/templates/plateMapBuilder.ts +0 -44
  992. package/src/templates/presetControlSchemas.ts +0 -258
  993. package/src/templates/presets.ts +0 -183
  994. package/src/templates/protocolAdapters.ts +0 -73
  995. package/src/templates/protocolNormalizers.ts +0 -37
  996. package/src/templates/protocolStepsBuilder.ts +0 -37
  997. package/src/templates/qpcrAdapters.ts +0 -108
  998. package/src/templates/qpcrExpressionCollectionBuilder.ts +0 -34
  999. package/src/templates/qpcrPlateBuilder.ts +0 -97
  1000. package/src/templates/reagentAdapters.ts +0 -81
  1001. package/src/templates/reagentListBuilder.ts +0 -31
  1002. package/src/templates/runNormalizers.ts +0 -63
  1003. package/src/templates/sampleNormalizers.ts +0 -58
  1004. package/src/templates/samplePrepAdapters.ts +0 -66
  1005. package/src/templates/samplePrepBuilder.ts +0 -52
  1006. package/src/templates/sampleSheetAdapters.ts +0 -79
  1007. package/src/templates/sampleSheetBuilder.ts +0 -24
  1008. package/src/templates/targetedMetabolomicsCollectionBuilder.ts +0 -80
  1009. package/src/templates/targetedMetabolomicsHelpers.ts +0 -102
  1010. package/src/templates/templateAdapterTypes.ts +0 -58
  1011. package/src/templates/templateControlSchemas.ts +0 -320
  1012. package/src/templates/templateCreateOptions.ts +0 -208
  1013. package/src/templates/templateEnvelopes.ts +0 -145
  1014. package/src/templates/templatePackCollectionBuilder.ts +0 -24
  1015. package/src/templates/templatePresetCollectionBuilder.ts +0 -141
  1016. package/src/templates/templateQpcrTypes.ts +0 -48
  1017. package/src/templates/templateValidators.ts +0 -426
  1018. package/src/templates/timeCourseAdapters.ts +0 -77
  1019. package/src/templates/timeCourseBuilder.ts +0 -65
  1020. package/src/templates/types.ts +0 -493
  1021. package/src/templates/wellPlateScreenCollectionBuilder.ts +0 -37
  1022. package/src/templates/westernBlotAssayCollectionBuilder.ts +0 -69
  1023. package/src/utils/rack.ts +0 -225
  1024. /package/dist/__tests__/components/{AppAvatarMenu.test.d.ts → BaseButton.test.d.ts} +0 -0
  1025. /package/dist/__tests__/components/{AppTopBar.navigation.test.d.ts → BaseCheckbox.switch.test.d.ts} +0 -0
  1026. /package/dist/__tests__/components/{AppTopBarPresence.test.d.ts → BaseSelect.multiple.test.d.ts} +0 -0
  1027. /package/dist/__tests__/components/{BaseToggle.test.d.ts → BaseSelect.searchable.test.d.ts} +0 -0
  1028. /package/dist/__tests__/components/{BioTemplateExperimentWorkspaceView.test.d.ts → ConfirmDialog.test.d.ts} +0 -0
  1029. /package/dist/__tests__/components/{BioTemplatePackWorkspaceView.test.d.ts → DatePicker.datetime.test.d.ts} +0 -0
  1030. /package/dist/__tests__/components/{BioTemplatePresetWorkspaceView.test.d.ts → DatePicker.time.test.d.ts} +0 -0
  1031. /package/dist/__tests__/components/{BioTemplateRenderer.test.d.ts → FormSchemaInternal.test.d.ts} +0 -0
  1032. /package/dist/__tests__/components/{ControlWorkspaceView.test.d.ts → InstrumentStatusPanels.test.d.ts} +0 -0
  1033. /package/dist/__tests__/components/{DateTimePicker.test.d.ts → NumberInput.units.test.d.ts} +0 -0
  1034. /package/dist/__tests__/components/{DoseDesignWorkspaceView.test.d.ts → PresenceAvatars.test.d.ts} +0 -0
  1035. /package/dist/__tests__/components/{ExperimentTimeline.test.d.ts → StaleFormBanner.test.d.ts} +0 -0
  1036. /package/dist/__tests__/components/{FitPanel.test.d.ts → deprecationTags.test.d.ts} +0 -0
  1037. /package/dist/__tests__/{components/GroupAssigner.test.d.ts → composables/createClient.test.d.ts} +0 -0
  1038. /package/dist/__tests__/{components/MobileSupportGate.test.d.ts → composables/eventStream.test.d.ts} +0 -0
  1039. /package/dist/__tests__/{components/MultiSelect.test.d.ts → composables/useArtifacts.test.d.ts} +0 -0
  1040. /package/dist/__tests__/{components/ReagentList.presentation.test.d.ts → composables/useExperiment.test.d.ts} +0 -0
  1041. /package/dist/__tests__/{components/ReagentList.test.d.ts → composables/useJobCenter.test.d.ts} +0 -0
  1042. /package/dist/__tests__/{components/SampleLegend.test.d.ts → composables/useJobsEndpoint.test.d.ts} +0 -0
  1043. /package/dist/__tests__/{components/SearchableSelect.test.d.ts → composables/usePlatform.test.d.ts} +0 -0
  1044. /package/dist/__tests__/{components/SmartGroupModal.test.d.ts → composables/usePresence.test.d.ts} +0 -0
  1045. /package/dist/__tests__/{components/TimePicker.test.d.ts → composables/useRealtime.test.d.ts} +0 -0
  1046. /package/dist/__tests__/{components/UnitInput.test.d.ts → composables/useRequest.test.d.ts} +0 -0
  1047. /package/dist/__tests__/{components/WellPlate.sampleTypeIndicator.test.d.ts → composables/useVersionedSave.test.d.ts} +0 -0
  1048. /package/dist/__tests__/{components/iconButtonIconSizing.test.d.ts → utils/formula.test.d.ts} +0 -0
  1049. /package/dist/__tests__/{composables/useAnalysisArtifacts.test.d.ts → utils/time.test.d.ts} +0 -0
  1050. /package/dist/components/{FormActions.vue.d.ts → internal/FormActionsInternal.vue.d.ts} +0 -0
  1051. /package/dist/{composables → components/internal}/autoGroup/colors.d.ts +0 -0
  1052. /package/dist/{composables → components/internal}/autoGroup/index.d.ts +0 -0
  1053. /package/dist/{composables → components/internal}/autoGroup/tokenize.d.ts +0 -0
  1054. /package/src/{composables → components/internal}/autoGroup/colors.ts +0 -0
  1055. /package/src/{composables → components/internal}/autoGroup/tokenize.ts +0 -0
  1056. /package/src/{composables → components/internal}/autoGroup/vocab.json +0 -0
@@ -13,14 +13,14 @@
13
13
  *
14
14
  * @example
15
15
  * ```vue
16
- * <PlateEditor v-model:active-rack-id="activeId" :model-value="racks" slots fill-series @well-edit="save" />
16
+ * <PlateEditor v-model:active-rack="activeId" :spec="definePlateEditor({ slots: true, fillSeries: true })" :model-value="racks" @well-edit="save" />
17
17
  * ```
18
18
  */
19
19
  import { computed, onBeforeUnmount, onMounted, ref, watch, type ComponentPublicInstance } from 'vue'
20
20
  import { Download, Move, Plus, Redo2, Trash2, Undo2, Upload, X } from 'lucide-vue-next'
21
21
  import type {
22
22
  ActionMenuItem,
23
- PlateEditorClearConfirm,
23
+ PlateEditorSpec,
24
24
  Rack,
25
25
  SampleType,
26
26
  SlotPosition,
@@ -30,7 +30,6 @@ import type {
30
30
  WellLegendItem,
31
31
  WellPlateFormat,
32
32
  WellPlateSelectionMode,
33
- WellPlateSize,
34
33
  WellSampleDropData,
35
34
  WellSampleDropParser,
36
35
  } from '../types'
@@ -40,90 +39,61 @@ import { useRovingFocus } from '../composables/useRovingFocus'
40
39
  import { PLATE_CONFIGS, WELL_PLATE_SIZE_CONFIGS } from './WellPlate.geometry'
41
40
  import { parseDroppedSampleJson } from './WellPlate.sampleDrop'
42
41
  import { DEFAULT_WELL_LEGEND_ITEMS } from './WellPlate.legend'
42
+ import { applySpecDefaults, defineWellPlate } from '../composables/componentSpecs'
43
43
  import { sampleTypeMarker } from '../utils/sampleTypeMarker'
44
44
  import WellPlate from './WellPlate.vue'
45
45
  import WellEditPopupInternal from './internal/WellEditPopupInternal.vue'
46
46
  import ActionMenu from './ActionMenu.vue'
47
+ import BaseButton from './BaseButton.vue'
47
48
  import SegmentedControl from './SegmentedControl.vue'
48
- import IconButton from './IconButton.vue'
49
49
  import ConfirmDialog from './ConfirmDialog.vue'
50
- import BaseTextarea from './BaseTextarea.vue'
50
+ import BaseInput from './BaseInput.vue'
51
51
 
52
52
  interface Props {
53
+ /** Structure built with definePlateEditor(). Optional: every option has a default. */
54
+ spec?: PlateEditorSpec
53
55
  /** The plates. Never mutated; changes arrive as emitted intents. */
54
56
  modelValue: Rack[]
55
- activeRackId?: string
56
- /** Formats offered by the format control; one entry hides it. */
57
- formats?: WellPlateFormat[]
58
- /** R/G/B/Y slot buttons: `true` for all four, a list for a subset. */
59
- slots?: boolean | SlotPosition[]
60
- /** Reorder plate tabs by drag or Alt+←/→. */
61
- reorder?: boolean
62
- /** Show the Drag toggle that moves / swaps wells (`well-move`). */
63
- wellDrag?: boolean
64
- /** Groups for the selection bar; a well's `group` holds the group id and colors it. */
65
- groups?: SampleType[] | false
66
- /** Fields of the single-well inspector; `false` turns the inspector off. */
67
- wellFields?: WellEditField[] | false
68
- /** Accept dropped samples: `true` reads JSON payloads, a parser may return `null` to reject. */
69
- sampleDrop?: boolean | WellSampleDropParser
70
- /** Show an Import button: a chosen file emits `import`, pasted text `import-text` (see `importMode`). */
71
- import?: boolean
72
- /** What `import` offers: a file picker, a paste dialog whose text `import-text` emits unparsed, or both. */
73
- importMode?: 'file' | 'paste' | 'both'
74
- /** The file picker's `accept` filter for `import`, e.g. `'.csv'`. */
75
- importAccept?: string
76
- /** Export formats offered in the Import / Export menu; each emits `export`. */
77
- export?: string[] | false
78
- /** Clear-plate button: ask first, clear with an Undo button, or hide it. */
79
- clear?: 'confirm' | 'undo' | false
80
- /** Text and variant of the `clear="confirm"` dialog; unset fields keep the defaults. */
81
- clearConfirm?: PlateEditorClearConfirm
82
- /** Show Undo / Redo (also shown when `clear` is `'undo'`); they only emit intents. */
83
- history?: boolean
57
+ /** Id of the active plate. Bind with `v-model:active-rack`; unbound, the tabs keep their own choice. */
58
+ activeRack?: string
84
59
  canUndo?: boolean
85
60
  canRedo?: boolean
86
- /** Show the Fill Series button. */
87
- fillSeries?: boolean
88
- /** On a full plate: disable Fill Series, or keep it enabled and still emit `fill-series` (e.g. to show a toast). */
89
- fillSeriesWhenFull?: 'disable' | 'emit'
90
- maxRacks?: number
91
- minRacks?: number
92
61
  /** No editing controls; well clicks still emit `well-click`. */
93
62
  readonly?: boolean
94
- size?: WellPlateSize
95
63
  /** Footer text while nothing is selected; replaces the built-in selection hint. */
96
64
  hint?: string
97
65
  }
98
66
 
99
67
  const props = withDefaults(defineProps<Props>(), {
100
- activeRackId: undefined,
101
- formats: () => [54, 96],
68
+ spec: () => ({}),
69
+ activeRack: undefined,
70
+ canUndo: false,
71
+ canRedo: false,
72
+ readonly: false,
73
+ })
74
+
75
+ const config = computed(() => applySpecDefaults({
76
+ formats: [54, 96],
102
77
  slots: false,
103
78
  reorder: true,
104
79
  wellDrag: false,
105
80
  groups: false,
106
- wellFields: () => ['label', 'sampleType', 'injectionVolume', 'injectionCount', 'customMethod'],
81
+ wellFields: ['label', 'sampleType', 'injectionVolume', 'injectionCount', 'customMethod'],
107
82
  sampleDrop: false,
108
83
  import: false,
109
84
  importMode: 'file',
110
- importAccept: undefined,
111
85
  export: false,
112
86
  clear: 'confirm',
113
- clearConfirm: undefined,
114
87
  history: false,
115
- canUndo: false,
116
- canRedo: false,
117
88
  fillSeries: false,
118
89
  fillSeriesWhenFull: 'disable',
119
90
  maxRacks: 10,
120
91
  minRacks: 1,
121
- readonly: false,
122
92
  size: 'xs',
123
- })
93
+ }, props.spec))
124
94
 
125
95
  const emit = defineEmits<{
126
- 'update:activeRackId': [rackId: string]
96
+ 'update:activeRack': [rackId: string]
127
97
  'rack-add': []
128
98
  'rack-remove': [rackId: string]
129
99
  'rack-reorder': [rackIds: string[]]
@@ -172,17 +142,17 @@ defineSlots<{
172
142
  'toolbar-extra'?: () => unknown
173
143
  }>()
174
144
 
175
- // --- Active plate: a bound activeRackId wins; unbound, the tabs keep their own choice ---
145
+ // --- Active plate: a bound activeRack wins; unbound, the tabs keep their own choice ---
176
146
  const localActiveId = ref<string>()
177
147
 
178
148
  const activeRack = computed<Rack | undefined>(() => {
179
- const id = props.activeRackId ?? localActiveId.value
149
+ const id = props.activeRack ?? localActiveId.value
180
150
  return props.modelValue.find(rack => rack.id === id) ?? props.modelValue[0]
181
151
  })
182
152
 
183
153
  function selectRack(rackId: string) {
184
154
  localActiveId.value = rackId
185
- emit('update:activeRackId', rackId)
155
+ emit('update:activeRack', rackId)
186
156
  }
187
157
 
188
158
  function filledCount(rack: Rack): number {
@@ -207,7 +177,7 @@ const reorder = useListReorder<Rack>({
207
177
  items: () => props.modelValue,
208
178
  getId: rack => rack.id,
209
179
  getLabel: rack => rack.name,
210
- disabled: () => !props.reorder || props.readonly,
180
+ disabled: () => !config.value.reorder || props.readonly,
211
181
  getElement: id => tabRefs.get(id),
212
182
  itemNoun: 'Plate',
213
183
  onReorder: ({ fromIndex, toIndex }) => {
@@ -220,14 +190,14 @@ function handleTabKeydown(event: KeyboardEvent, rack: Rack, index: number) {
220
190
  else handleTabArrows(event)
221
191
  }
222
192
 
223
- const canReorder = computed(() => props.reorder && !props.readonly)
224
- const canAdd = computed(() => !props.readonly && props.modelValue.length < props.maxRacks)
225
- const canRemove = computed(() => !props.readonly && props.modelValue.length > props.minRacks)
193
+ const canReorder = computed(() => config.value.reorder && !props.readonly)
194
+ const canAdd = computed(() => !props.readonly && props.modelValue.length < config.value.maxRacks)
195
+ const canRemove = computed(() => !props.readonly && props.modelValue.length > config.value.minRacks)
226
196
 
227
197
  // --- Toolbar ---
228
- const formatOptions = computed(() => props.formats.map(format => ({ value: format, label: String(format) })))
198
+ const formatOptions = computed(() => config.value.formats.map(format => ({ value: format, label: String(format) })))
229
199
  const slotOptions = computed<readonly SlotPosition[]>(() =>
230
- props.slots === true ? SLOT_ORDER : props.slots || [],
200
+ config.value.slots === true ? SLOT_ORDER : config.value.slots || [],
231
201
  )
232
202
  const dragMode = ref(false)
233
203
  const confirmOpen = ref(false)
@@ -249,7 +219,7 @@ function toggleDrag() {
249
219
  function requestClear() {
250
220
  const rack = activeRack.value
251
221
  if (!rack) return
252
- if (props.clear === 'confirm') confirmOpen.value = true
222
+ if (config.value.clear === 'confirm') confirmOpen.value = true
253
223
  else emit('clear', rack.id)
254
224
  }
255
225
 
@@ -266,12 +236,12 @@ function handleFile(event: Event) {
266
236
  input.value = ''
267
237
  }
268
238
 
269
- const importFile = computed(() => props.import && props.importMode !== 'paste')
270
- const importPaste = computed(() => props.import && props.importMode !== 'file')
271
- const exportFormats = computed(() => props.export || [])
239
+ const importFile = computed(() => config.value.import && config.value.importMode !== 'paste')
240
+ const importPaste = computed(() => config.value.import && config.value.importMode !== 'file')
241
+ const exportFormats = computed(() => config.value.export || [])
272
242
  const ioLabel = computed(() => {
273
243
  if (!exportFormats.value.length) return 'Import'
274
- return props.import ? 'Import / Export' : 'Export'
244
+ return config.value.import ? 'Import / Export' : 'Export'
275
245
  })
276
246
  const ioItems = computed<ActionMenuItem[]>(() => [
277
247
  ...(importFile.value ? [{ id: 'import', label: 'Import file…' }] : []),
@@ -296,7 +266,7 @@ function handleIo(item: ActionMenuItem) {
296
266
  else emit('export', item.id.slice('export:'.length))
297
267
  }
298
268
 
299
- const showHistory = computed(() => !props.readonly && (props.history || props.clear === 'undo'))
269
+ const showHistory = computed(() => !props.readonly && (config.value.history || config.value.clear === 'undo'))
300
270
 
301
271
  // Scoped to the editor, and text fields keep their own undo.
302
272
  function handleRootKeydown(event: KeyboardEvent) {
@@ -318,7 +288,7 @@ watch(() => [props.canUndo, props.canRedo], () => {
318
288
  })
319
289
 
320
290
  // --- Plate ---
321
- const groupList = computed(() => props.groups || [])
291
+ const groupList = computed(() => config.value.groups || [])
322
292
  const groupColor = (group: SampleType, index: number) =>
323
293
  group.color ?? SAMPLE_GROUP_TOKENS[index % SAMPLE_GROUP_TOKENS.length]
324
294
 
@@ -326,8 +296,8 @@ const sampleColors = computed<Record<string, string>>(() =>
326
296
  Object.fromEntries(groupList.value.map((group, index) => [group.id, groupColor(group, index)])),
327
297
  )
328
298
  const legendItems = computed<WellLegendItem[] | undefined>(() =>
329
- props.groups
330
- ? props.groups.map((group, index) => ({ type: group.id, label: group.name, color: groupColor(group, index) }))
299
+ config.value.groups
300
+ ? config.value.groups.map((group, index) => ({ type: group.id, label: group.name, color: groupColor(group, index) }))
331
301
  : undefined,
332
302
  )
333
303
 
@@ -353,7 +323,7 @@ onBeforeUnmount(() => resizeObserver?.disconnect())
353
323
  // ponytail: plate width from the size table (table border-spacing counted per column); 'fill' counts as 0.
354
324
  const plateWidth = computed(() => {
355
325
  const { cols } = PLATE_CONFIGS[activeRack.value?.format ?? 96]
356
- const size = WELL_PLATE_SIZE_CONFIGS[props.size]
326
+ const size = WELL_PLATE_SIZE_CONFIGS[config.value.size]
357
327
  const px = (value: string) => (value.endsWith('px') ? parseFloat(value) : 0)
358
328
  return px(size.headerWidth) + cols * px(size.cellWidth) + (cols + 2) * px(size.gap)
359
329
  })
@@ -366,30 +336,46 @@ const railItems = computed(() => {
366
336
  const items = legendItems.value ?? DEFAULT_WELL_LEGEND_ITEMS
367
337
  return items.map(item => ({
368
338
  ...item,
369
- count: wells.filter(well => (props.groups ? well.group : well.sampleType) === item.type).length,
370
- swatch: props.groups ? { backgroundColor: item.color } : sampleTypeMarker(item.type, item.color).style,
371
- glyph: props.groups ? '' : sampleTypeMarker(item.type, item.color).glyph,
339
+ count: wells.filter(well => (config.value.groups ? well.group : well.sampleType) === item.type).length,
340
+ swatch: config.value.groups ? { backgroundColor: item.color } : sampleTypeMarker(item.type, item.color).style,
341
+ glyph: config.value.groups ? '' : sampleTypeMarker(item.type, item.color).glyph,
372
342
  }))
373
343
  })
374
344
 
375
- const inspectorOn = computed(() => Boolean(props.wellFields) && !props.readonly && !dragMode.value)
345
+ const inspectorOn = computed(() => Boolean(config.value.wellFields) && !props.readonly && !dragMode.value)
376
346
 
377
347
  const selectionMode = computed<WellPlateSelectionMode>(() => {
378
348
  if (props.readonly) return 'none'
379
349
  if (dragMode.value) return 'drag'
380
350
  // Without groups the selection only feeds the inspector; with neither, nothing acts on it.
381
- if (!props.groups && !inspectorOn.value) return 'none'
351
+ if (!config.value.groups && !inspectorOn.value) return 'none'
382
352
  // A Ctrl/Cmd-click toggles a well in every mode. Beside the rail a plain click selects
383
353
  // one well and the inspector opens there; in the popover mode it opens the popover.
384
354
  // Groups add the rectangle drag, except where a plain click edits.
385
- return props.groups && (railOn.value || !inspectorOn.value) ? 'rectangle' : 'multiple'
355
+ return config.value.groups && (railOn.value || !inspectorOn.value) ? 'rectangle' : 'multiple'
386
356
  })
387
357
 
388
358
  const dropParser = computed<WellSampleDropParser | undefined>(() => {
389
- if (typeof props.sampleDrop === 'function') return props.sampleDrop
390
- return props.sampleDrop ? event => (event.dataTransfer ? parseDroppedSampleJson(event.dataTransfer) : null) : undefined
359
+ if (typeof config.value.sampleDrop === 'function') return config.value.sampleDrop
360
+ return config.value.sampleDrop ? event => (event.dataTransfer ? parseDroppedSampleJson(event.dataTransfer) : null) : undefined
391
361
  })
392
362
 
363
+ const plateSpec = computed(() => defineWellPlate({
364
+ format: activeRack.value?.format,
365
+ selectionMode: selectionMode.value,
366
+ editable: inspectorOn.value && !railOn.value,
367
+ editFields: config.value.wellFields || undefined,
368
+ defaultInjectionVolume: activeRack.value?.injectionVolume,
369
+ size: config.value.size,
370
+ sampleColors: sampleColors.value,
371
+ legendItems: legendItems.value,
372
+ allowSampleDrop: Boolean(config.value.sampleDrop) && !props.readonly,
373
+ sampleDropParser: dropParser.value,
374
+ showWellLabels: config.value.size !== 'xs',
375
+ showBadges: true,
376
+ showLegend: !railOn.value,
377
+ }))
378
+
393
379
  const selection = ref<string[]>([])
394
380
  function setSelection(wellIds: string[]) {
395
381
  selection.value = wellIds
@@ -404,7 +390,7 @@ watch(
404
390
 
405
391
  // Without groups a selection beside the rail is the inspected well; it closes with the rail
406
392
  // instead of reopening, and stealing focus, when the rail comes back.
407
- watch(railOn, () => { if (!props.groups && selection.value.length) setSelection([]) })
393
+ watch(railOn, () => { if (!config.value.groups && selection.value.length) setSelection([]) })
408
394
 
409
395
  function handleSelection(wellIds: string[]) {
410
396
  if (selectionMode.value === 'none' || dragMode.value) return
@@ -414,7 +400,7 @@ function handleSelection(wellIds: string[]) {
414
400
  function handleWellEdit(wellId: string, data: WellEditData) {
415
401
  const rack = activeRack.value
416
402
  if (!rack) return
417
- const fields = props.wellFields || []
403
+ const fields = config.value.wellFields || []
418
404
  // An unnamed sample is an empty well, unless its group still names it; blanks and QCs stand alone.
419
405
  const grouped = groupList.value.some(group => group.id === rack.wells[wellId]?.group)
420
406
  const sample = !data.sampleType || data.sampleType === 'sample'
@@ -449,7 +435,7 @@ function assign(groupId: string | undefined) {
449
435
  const hint = computed(() => {
450
436
  if (dragMode.value) return 'Drag a filled well onto another to move or swap it.'
451
437
  if (props.hint) return props.hint
452
- if (!props.groups) return ''
438
+ if (!config.value.groups) return ''
453
439
  if (railOn.value) {
454
440
  return inspectorOn.value
455
441
  ? 'Click a well to edit it on the right. Drag across wells, Ctrl-click to add one or Shift-click for a range.'
@@ -518,27 +504,22 @@ const hint = computed(() => {
518
504
  </span>
519
505
  </div>
520
506
 
521
- <IconButton
507
+ <BaseButton
522
508
  v-if="canAdd"
523
509
  class="mint-plate-editor__add"
524
510
  variant="ghost"
525
511
  size="sm"
512
+ :icon="Plus"
526
513
  label="Add plate"
527
514
  @click="emit('rack-add')"
528
- >
529
- <Plus :size="16" aria-hidden="true" />
530
- </IconButton>
515
+ />
531
516
 
532
517
  <div class="mint-plate-editor__tabbar-end">
533
518
  <template v-if="showHistory">
534
- <IconButton variant="ghost" size="sm" label="Undo" title="Undo (Ctrl+Z)" data-history="undo" :disabled="!canUndo" @click="emit('undo')">
535
- <Undo2 :size="16" aria-hidden="true" />
536
- </IconButton>
537
- <IconButton variant="ghost" size="sm" label="Redo" title="Redo (Ctrl+Shift+Z)" data-history="redo" :disabled="!canRedo" @click="emit('redo')">
538
- <Redo2 :size="16" aria-hidden="true" />
539
- </IconButton>
519
+ <BaseButton variant="ghost" size="sm" :icon="Undo2" label="Undo" title="Undo (Ctrl+Z)" data-history="undo" :disabled="!canUndo" @click="emit('undo')" />
520
+ <BaseButton variant="ghost" size="sm" :icon="Redo2" label="Redo" title="Redo (Ctrl+Shift+Z)" data-history="redo" :disabled="!canRedo" @click="emit('redo')" />
540
521
  </template>
541
- <template v-if="!readonly && ($props.import || exportFormats.length)">
522
+ <template v-if="!readonly && (config.import || exportFormats.length)">
542
523
  <span v-if="showHistory" class="mint-plate-editor__divider" aria-hidden="true" />
543
524
  <ActionMenu v-if="exportFormats.length || ioItems.length > 1" :label="ioLabel" :items="ioItems" @select="handleIo">
544
525
  <template #trigger="{ open, toggle, keydown }">
@@ -557,7 +538,7 @@ const hint = computed(() => {
557
538
  <Upload :size="14" aria-hidden="true" />
558
539
  Import
559
540
  </button>
560
- <input v-if="importFile" ref="fileInput" type="file" class="mint-plate-editor__file" :accept="importAccept" tabindex="-1" aria-hidden="true" @change="handleFile">
541
+ <input v-if="importFile" ref="fileInput" type="file" class="mint-plate-editor__file" :accept="config.importAccept" tabindex="-1" aria-hidden="true" @change="handleFile">
561
542
  </template>
562
543
  <slot name="tab-extra" />
563
544
  </div>
@@ -565,7 +546,7 @@ const hint = computed(() => {
565
546
 
566
547
  <!-- Toolbar for the active plate -->
567
548
  <div v-if="showToolbar && activeRack" class="mint-plate-editor__toolbar">
568
- <div v-if="formats.length > 1" class="mint-plate-editor__field mint-plate-editor__field--format">
549
+ <div v-if="config.formats.length > 1" class="mint-plate-editor__field mint-plate-editor__field--format">
569
550
  <span class="mint-plate-editor__label">Format</span>
570
551
  <SegmentedControl
571
552
  :model-value="activeRack.format"
@@ -598,18 +579,18 @@ const hint = computed(() => {
598
579
 
599
580
  <div class="mint-plate-editor__toolbar-end">
600
581
  <button
601
- v-if="fillSeries"
582
+ v-if="config.fillSeries"
602
583
  type="button"
603
584
  class="mint-plate-editor__action"
604
585
  data-action="fill-series"
605
- :disabled="isFull && fillSeriesWhenFull === 'disable'"
586
+ :disabled="isFull && config.fillSeriesWhenFull === 'disable'"
606
587
  :title="isFull ? 'Plate is full' : 'Name every empty well in order'"
607
588
  @click="emit('fill-series', activeRack.id)"
608
589
  >
609
590
  Fill Series
610
591
  </button>
611
592
  <button
612
- v-if="wellDrag"
593
+ v-if="config.wellDrag"
613
594
  type="button"
614
595
  :class="['mint-plate-editor__action', { 'mint-plate-editor__action--on': dragMode }]"
615
596
  data-action="drag"
@@ -621,7 +602,7 @@ const hint = computed(() => {
621
602
  Drag
622
603
  </button>
623
604
  <button
624
- v-if="clear"
605
+ v-if="config.clear"
625
606
  type="button"
626
607
  class="mint-plate-editor__action mint-plate-editor__action--danger"
627
608
  :disabled="isEmpty"
@@ -642,21 +623,9 @@ const hint = computed(() => {
642
623
  <WellPlate
643
624
  :key="activeRack.id"
644
625
  :model-value="selection"
645
- :format="activeRack.format"
626
+ :spec="plateSpec"
646
627
  :wells="activeRack.wells"
647
- :selection-mode="selectionMode"
648
- :editable="inspectorOn && !railOn"
649
- :edit-fields="wellFields || undefined"
650
- :default-injection-volume="activeRack.injectionVolume"
651
628
  :readonly="readonly"
652
- :size="size"
653
- :sample-colors="sampleColors"
654
- :legend-items="legendItems"
655
- :allow-sample-drop="Boolean(sampleDrop) && !readonly"
656
- :sample-drop-parser="dropParser"
657
- :show-well-labels="size !== 'xs'"
658
- show-badges
659
- :show-legend="!railOn"
660
629
  @well-click="(wellId: string) => emit('well-click', activeRack!.id, wellId)"
661
630
  @selection-change="handleSelection"
662
631
  @well-edit="handleWellEdit"
@@ -670,15 +639,15 @@ const hint = computed(() => {
670
639
  </WellPlate>
671
640
 
672
641
  <!-- Selection bar, or a hint while nothing is selected -->
673
- <div v-if="!readonly && (groups || wellDrag)" class="mint-plate-editor__footer">
674
- <div v-if="selection.length && groups" class="mint-plate-editor__selection" role="toolbar" aria-label="Selected wells">
642
+ <div v-if="!readonly && (config.groups || config.wellDrag)" class="mint-plate-editor__footer">
643
+ <div v-if="selection.length && config.groups" class="mint-plate-editor__selection" role="toolbar" aria-label="Selected wells">
675
644
  <span class="mint-plate-editor__selection-count">
676
645
  <span class="mint-plate-editor__mono">{{ selection.length }}</span> selected
677
646
  </span>
678
647
  <span class="mint-plate-editor__divider" aria-hidden="true" />
679
648
  <span class="mint-plate-editor__label">Group</span>
680
649
  <button
681
- v-for="(group, index) in groups"
650
+ v-for="(group, index) in config.groups"
682
651
  :key="group.id"
683
652
  type="button"
684
653
  class="mint-plate-editor__group"
@@ -719,7 +688,7 @@ const hint = computed(() => {
719
688
  :rack-id="activeRack.id"
720
689
  :well-id="railWellId"
721
690
  :well-data="activeRack.wells[railWellId]"
722
- :edit-fields="wellFields || []"
691
+ :edit-fields="config.wellFields || []"
723
692
  :default-injection-volume="activeRack.injectionVolume"
724
693
  :position="railPosition()"
725
694
  :save="(data: WellEditData) => handleWellEdit(railWellId!, data)"
@@ -731,7 +700,7 @@ const hint = computed(() => {
731
700
  inline
732
701
  :well-id="railWellId"
733
702
  :well-data="activeRack.wells[railWellId]"
734
- :edit-fields="wellFields || undefined"
703
+ :edit-fields="config.wellFields || undefined"
735
704
  :default-injection-volume="activeRack.injectionVolume"
736
705
  :marker-colors="sampleColors"
737
706
  :group-label="railGroupLabel"
@@ -743,11 +712,11 @@ const hint = computed(() => {
743
712
  </slot>
744
713
  </template>
745
714
  <template v-else>
746
- <span class="mint-plate-editor__rail-title">{{ groups ? 'Groups' : 'Sample types' }}</span>
715
+ <span class="mint-plate-editor__rail-title">{{ config.groups ? 'Groups' : 'Sample types' }}</span>
747
716
  <ul class="mint-plate-editor__rail-list">
748
717
  <li v-for="item in railItems" :key="item.type" class="mint-plate-editor__rail-row">
749
718
  <span
750
- :class="['mint-plate-editor__rail-swatch', { 'mint-plate-editor__rail-swatch--marker': !groups }]"
719
+ :class="['mint-plate-editor__rail-swatch', { 'mint-plate-editor__rail-swatch--marker': !config.groups }]"
751
720
  :style="item.swatch"
752
721
  aria-hidden="true"
753
722
  >{{ item.glyph }}</span>
@@ -756,7 +725,7 @@ const hint = computed(() => {
756
725
  </li>
757
726
  </ul>
758
727
  <button
759
- v-if="groups && !readonly"
728
+ v-if="config.groups && !readonly"
760
729
  type="button"
761
730
  class="mint-plate-editor__rail-add"
762
731
  data-action="group-add"
@@ -770,25 +739,25 @@ const hint = computed(() => {
770
739
  </div>
771
740
 
772
741
  <ConfirmDialog
773
- v-if="clear === 'confirm'"
774
- v-model="confirmOpen"
775
- :title="clearConfirm?.title ?? 'Clear plate'"
776
- :message="clearConfirm?.message ?? `Clear all ${activeRack ? filledCount(activeRack) : 0} wells on ${activeRack?.name ?? 'this plate'}?`"
777
- :confirm-label="clearConfirm?.confirmLabel ?? 'Clear'"
778
- :variant="clearConfirm?.variant"
742
+ v-if="config.clear === 'confirm'"
743
+ v-model:open="confirmOpen"
744
+ :title="config.clearConfirm?.title ?? 'Clear plate'"
745
+ :message="config.clearConfirm?.message ?? `Clear all ${activeRack ? filledCount(activeRack) : 0} wells on ${activeRack?.name ?? 'this plate'}?`"
746
+ :confirm-label="config.clearConfirm?.confirmLabel ?? 'Clear'"
747
+ :tone="config.clearConfirm?.tone"
779
748
  @confirm="confirmClear"
780
749
  />
781
750
 
782
751
  <ConfirmDialog
783
752
  v-if="importPaste"
784
- v-model="pasteOpen"
753
+ v-model:open="pasteOpen"
785
754
  title="Paste wells"
786
755
  message="Paste the rows to import, e.g. copied from a spreadsheet."
787
756
  confirm-label="Import"
788
- variant="info"
757
+ tone="info"
789
758
  @confirm="confirmPaste"
790
759
  >
791
- <BaseTextarea v-model="pasteText" :rows="8" aria-label="Pasted rows" />
760
+ <BaseInput type="textarea" v-model="pasteText" :rows="8" aria-label="Pasted rows" />
792
761
  </ConfirmDialog>
793
762
 
794
763
  <div role="status" aria-live="polite" :style="reorder.announcerStyle">{{ reorder.announcement.value }}</div>
@@ -83,7 +83,7 @@ const layout: Partial<Plotly.Layout> = {
83
83
  title="Metabolite response"
84
84
  :data="[]"
85
85
  empty
86
- empty-message="No measurements are available."
86
+ empty-text="No measurements are available."
87
87
  />
88
88
  </div>
89
89
  </Variant>
@@ -20,7 +20,7 @@ import { computed, nextTick, onBeforeUnmount, onMounted, ref, toRaw, watch } fro
20
20
 
21
21
  import type { ChartLegendItem } from '../types'
22
22
  import { SAMPLE_GROUP_TOKENS } from '../utils/color'
23
- import { mintPlotlyTemplate } from '../utils/plotlyTemplate'
23
+ import { mintPlotlyTemplate, resolveCssColor } from '../utils/plotlyTemplate'
24
24
  import ChartContainer from './ChartContainer.vue'
25
25
 
26
26
  interface Props {
@@ -31,7 +31,7 @@ interface Props {
31
31
  description?: string
32
32
  loading?: boolean
33
33
  empty?: boolean
34
- emptyMessage?: string
34
+ emptyText?: string
35
35
  ariaLabel?: string
36
36
  /** Use a custom Plotly build instead of the SDK's lazy-loaded default bundle. */
37
37
  plotly?: typeof PlotlyType
@@ -56,7 +56,7 @@ const props = withDefaults(defineProps<Props>(), {
56
56
  config: () => ({}),
57
57
  loading: false,
58
58
  empty: false,
59
- emptyMessage: 'No data available',
59
+ emptyText: 'No data available',
60
60
  ariaLabel: 'Interactive Plotly chart',
61
61
  active: true,
62
62
  clickEvents: false,
@@ -184,6 +184,8 @@ function themedLayout(): Partial<PlotlyType.Layout> {
184
184
  ...template,
185
185
  ...(legendTraces.value.length ? { showlegend: false } : {}),
186
186
  ...layout,
187
+ // Plotly cannot read `var(--…)`; resolve a caller colorway's tokens on every render.
188
+ ...(layout.colorway ? { colorway: layout.colorway.map(color => (typeof color === 'string' ? resolveCssColor(color, chartElement.value ?? undefined) : color)) } : {}),
187
189
  font: { ...template.font, ...layout.font },
188
190
  xaxis: { ...template.xaxis, ...layout.xaxis },
189
191
  yaxis: { ...template.yaxis, ...layout.yaxis },
@@ -298,7 +300,7 @@ onBeforeUnmount(() => {
298
300
  :description="description"
299
301
  :loading="loading"
300
302
  :empty="empty"
301
- :empty-message="emptyMessage"
303
+ :empty-text="emptyText"
302
304
  :variant="variant"
303
305
  :legend-items="legendItems"
304
306
  @legend-toggle="toggleTrace"
@@ -1,6 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import { reactive } from 'vue'
3
3
  import PluginIcon from './PluginIcon.vue'
4
+ import type { Tone } from '../types'
4
5
 
5
6
  const SAMPLE_PATH = 'M13 10V3L4 14h7v7l9-11h-7z'
6
7
  const SAMPLE_STRUCTURED = JSON.stringify({
@@ -33,7 +34,8 @@ function initState() {
33
34
  icon: SAMPLE_PATH,
34
35
  size: 'md' as 'sm' | 'md' | 'topbar' | 'lg',
35
36
  variant: 'solid' as 'solid' | 'tinted',
36
- tone: '',
37
+ tone: '' as '' | Tone,
38
+ color: '',
37
39
  })
38
40
  }
39
41
  </script>
@@ -43,14 +45,15 @@ function initState() {
43
45
  <Variant title="Playground" :init-state="initState">
44
46
  <template #default="{ state }">
45
47
  <div style="padding: 2rem; max-width: 600px;">
46
- <PluginIcon :icon="state.icon" :size="state.size" :variant="state.variant" :tone="state.tone || undefined" />
48
+ <PluginIcon :icon="state.icon" :size="state.size" :variant="state.variant" :tone="state.tone || undefined" :color="state.color || undefined" />
47
49
  </div>
48
50
  </template>
49
51
  <template #controls="{ state }">
50
52
  <HstText v-model="state.icon" title="icon" />
51
53
  <HstSelect v-model="state.size" title="size" :options="['sm', 'md', 'topbar', 'lg']" />
52
54
  <HstSelect v-model="state.variant" title="variant" :options="['solid', 'tinted']" />
53
- <HstText v-model="state.tone" title="tone (hex)" />
55
+ <HstSelect v-model="state.tone" title="tone (deprecated, no effect; removed in 1.5)" :options="['', 'neutral', 'primary', 'cta', 'success', 'warning', 'error', 'info']" />
56
+ <HstText v-model="state.color" title="color (deprecated, no effect; removed in 1.5)" />
54
57
  </template>
55
58
  </Variant>
56
59
 
@@ -91,13 +94,5 @@ function initState() {
91
94
  <PluginIcon :icon="SAMPLE_STRUCTURED" size="lg" />
92
95
  </div>
93
96
  </Variant>
94
-
95
- <Variant title="Tone overrides">
96
- <div style="padding: 2rem; display: flex; gap: 1rem; align-items: center;">
97
- <PluginIcon :icon="SAMPLE_PATH" size="lg" variant="solid" tone="#0EA5E9" />
98
- <PluginIcon :icon="SAMPLE_PATH" size="lg" variant="solid" tone="#F97316" />
99
- <PluginIcon :icon="SAMPLE_PATH" size="lg" variant="solid" tone="#22C55E" />
100
- </div>
101
- </Variant>
102
97
  </Story>
103
98
  </template>
@@ -9,6 +9,7 @@
9
9
  * http://, protocol-relative, and data:image/svg+xml URLs are deliberately rejected
10
10
  * (mixed-content + XSS, see spec 2026-05-04-plugin-icon-component-design.md). */
11
11
  import { computed } from 'vue'
12
+ import type { Tone } from '../types'
12
13
  import { detectPluginIcon, type DetectedPluginIcon, type StructuredPluginIcon } from '../utils/pluginIcon'
13
14
 
14
15
  defineOptions({ name: 'PluginIcon' })
@@ -17,7 +18,10 @@ interface Props {
17
18
  icon?: string
18
19
  size?: 'sm' | 'md' | 'topbar' | 'lg'
19
20
  variant?: 'solid' | 'tinted'
20
- tone?: string
21
+ /** @deprecated v2 design: the tile is always the neutral accent-soft tile, so the tone has no visible effect. Removed in 1.5. */
22
+ tone?: Tone
23
+ /** @deprecated v2 design: the tile is always the neutral accent-soft tile, so the color has no visible effect. Removed in 1.5. */
24
+ color?: string
21
25
  }
22
26
 
23
27
  const props = withDefaults(defineProps<Props>(), {
@@ -76,10 +80,11 @@ const rootClasses = computed(() => [
76
80
  'mint-plugin-icon',
77
81
  `mint-plugin-icon--${props.size}`,
78
82
  `mint-plugin-icon--${props.variant}`,
83
+ props.tone ? `mint-plugin-icon--${props.tone}` : '',
79
84
  ])
80
85
 
81
86
  const rootStyle = computed(() =>
82
- props.tone ? { '--mint-plugin-icon-tone': props.tone } : undefined,
87
+ props.color ? { '--mint-plugin-icon-tone': props.color } : undefined,
83
88
  )
84
89
  </script>
85
90