@morscherlab/mint-sdk 1.4.0-beta.8 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/README.md +14 -3
  2. package/dist/{ActionMenu-CScINahU.js → AlertBox-DwgNTEqf.js} +40 -209
  3. package/dist/AlertBox-DwgNTEqf.js.map +1 -0
  4. package/dist/{AppSidebar-BmiiPfz9.js → AppSidebar-CZZaxni0.js} +1249 -239
  5. package/dist/AppSidebar-CZZaxni0.js.map +1 -0
  6. package/dist/{ConfirmDialog-CJ7hqYUP.js → ConfirmDialog-CjWoxAD1.js} +2 -2
  7. package/dist/{ConfirmDialog-CJ7hqYUP.js.map → ConfirmDialog-CjWoxAD1.js.map} +1 -1
  8. package/dist/ExperimentPopover-DujiuQIO.js +337 -0
  9. package/dist/ExperimentPopover-DujiuQIO.js.map +1 -0
  10. package/dist/{ExperimentSelectorModal-D-9z7cNx.js → ExperimentSelectorModal-B4j4eUOJ.js} +244 -211
  11. package/dist/ExperimentSelectorModal-B4j4eUOJ.js.map +1 -0
  12. package/dist/{SegmentedControl-DERBN-Xd.js → SegmentedControl-DyUPH3I5.js} +2 -2
  13. package/dist/{SegmentedControl-DERBN-Xd.js.map → SegmentedControl-DyUPH3I5.js.map} +1 -1
  14. package/dist/{SettingsModal-CSLE31yg.js → SettingsModal-D2MOOtuO.js} +28 -27
  15. package/dist/SettingsModal-D2MOOtuO.js.map +1 -0
  16. package/dist/__stories__/experiment-helpers.d.ts +10 -0
  17. package/dist/__tests__/components/AppTopBarOnboarding.test.d.ts +1 -0
  18. package/dist/__tests__/components/FloatingPanelsInModal.test.d.ts +1 -0
  19. package/dist/__tests__/composables/useFloatingPanel.test.d.ts +1 -0
  20. package/dist/__tests__/composables/useOnboarding.test.d.ts +1 -0
  21. package/dist/__tests__/styles/paletteTokens.test.d.ts +1 -0
  22. package/dist/__tests__/styles/v2AuditRules.test.d.ts +1 -0
  23. package/dist/components/AppSidebar.vue.d.ts +1 -1
  24. package/dist/components/AppTopBar.vue.d.ts +20 -5
  25. package/dist/components/ArtifactSaveDialog.vue.d.ts +9 -1
  26. package/dist/components/AuditTrail.vue.d.ts +1 -1
  27. package/dist/components/BaseButton.vue.d.ts +4 -2
  28. package/dist/components/BaseSelect.vue.d.ts +2 -2
  29. package/dist/components/ChartContainer.vue.d.ts +2 -0
  30. package/dist/components/DatePicker.vue.d.ts +1 -1
  31. package/dist/components/ExperimentPopover.vue.d.ts +18 -0
  32. package/dist/components/ExperimentSelectorModal.vue.d.ts +15 -5
  33. package/dist/components/FilePicker.vue.d.ts +1 -1
  34. package/dist/components/FileUploader.vue.d.ts +2 -2
  35. package/dist/components/JobsStatusTray.vue.d.ts +15 -4
  36. package/dist/components/PluginIcon.vue.d.ts +2 -2
  37. package/dist/components/PluginWorkspaceView.props.d.ts +3 -0
  38. package/dist/components/PluginWorkspaceView.vue.d.ts +3 -0
  39. package/dist/components/SampleSelector.vue.d.ts +6 -6
  40. package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
  41. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +3 -3
  42. package/dist/components/StepWizard.vue.d.ts +3 -0
  43. package/dist/components/internal/AppTopBarOnboardingInternal.vue.d.ts +7 -0
  44. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -1
  45. package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +3 -3
  46. package/dist/components/internal/DatePickerTimeInternal.vue.d.ts +1 -1
  47. package/dist/components/internal/OnboardingLayerInternal.vue.d.ts +7 -0
  48. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +2 -7
  49. package/dist/components/internal/SelectMultipleInternal.vue.d.ts +4 -0
  50. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +8 -0
  51. package/dist/composables/createClient.d.ts +2 -0
  52. package/dist/composables/index.d.ts +1 -0
  53. package/dist/composables/pluginIdentity.d.ts +24 -0
  54. package/dist/composables/pluginWorkspaceModel.d.ts +2 -2
  55. package/dist/composables/useAppExperiment.d.ts +8 -0
  56. package/dist/composables/useCalendarGrid.d.ts +1 -1
  57. package/dist/composables/useExperimentSelector.d.ts +6 -2
  58. package/dist/composables/useFileImport.d.ts +7 -0
  59. package/dist/composables/useFloatingPanel.d.ts +29 -0
  60. package/dist/composables/useJobCenter.d.ts +41 -3
  61. package/dist/composables/useOnboarding.d.ts +119 -0
  62. package/dist/composables/usePlatform.d.ts +1 -0
  63. package/dist/{controlSchemaModel-CP5-_nAj.js → controlSchemaModel-Bsg0t5Ab.js} +2 -2
  64. package/dist/{controlSchemaModel-CP5-_nAj.js.map → controlSchemaModel-Bsg0t5Ab.js.map} +1 -1
  65. package/dist/{data-C2PwI_dn.js → data-Boeh4uPI.js} +180 -125
  66. package/dist/data-Boeh4uPI.js.map +1 -0
  67. package/dist/data.d.ts +1 -1
  68. package/dist/data.js +9 -9
  69. package/dist/{experiment-43OJtH7R.js → experiment-DyO54FQB.js} +25 -61
  70. package/dist/experiment-DyO54FQB.js.map +1 -0
  71. package/dist/{experimentStatus-BZmU4czV.js → experimentStatus-DCn2QKG7.js} +3 -3
  72. package/dist/{experimentStatus-BZmU4czV.js.map → experimentStatus-DCn2QKG7.js.map} +1 -1
  73. package/dist/index.js +20 -20
  74. package/dist/{install-DAID6c2-.js → install-BEHp7Mo-.js} +15 -14
  75. package/dist/{install-DAID6c2-.js.map → install-BEHp7Mo-.js.map} +1 -1
  76. package/dist/install.js +1 -1
  77. package/dist/{lab-DLwRl_Ql.js → lab-D61eaX6f.js} +136 -148
  78. package/dist/lab-D61eaX6f.js.map +1 -0
  79. package/dist/lab.js +4 -3
  80. package/dist/{records-BzTcxekG.js → records-D4aQXyZu.js} +647 -389
  81. package/dist/records-D4aQXyZu.js.map +1 -0
  82. package/dist/{runtime-D6gVat6r.js → runtime-q-R0CNLh.js} +417 -54
  83. package/dist/runtime-q-R0CNLh.js.map +1 -0
  84. package/dist/runtime.d.ts +1 -1
  85. package/dist/runtime.js +7 -7
  86. package/dist/{shell-5ju97nOS.js → shell-6CGFvUUw.js} +10 -5
  87. package/dist/{shell-5ju97nOS.js.map → shell-6CGFvUUw.js.map} +1 -1
  88. package/dist/shell.d.ts +1 -0
  89. package/dist/shell.js +6 -6
  90. package/dist/stores/index.d.ts +1 -1
  91. package/dist/stores/index.js +2 -2
  92. package/dist/stores/settings.d.ts +4 -12
  93. package/dist/styles.css +2753 -2101
  94. package/dist/types/componentWorkflowTypes.d.ts +2 -0
  95. package/dist/types/components.d.ts +2 -0
  96. package/dist/types/generated/platformContext.d.ts +1 -0
  97. package/dist/types/generated-ui.d.ts +4 -0
  98. package/dist/types/index.d.ts +1 -1
  99. package/dist/types/jobs.d.ts +9 -0
  100. package/dist/types/platform.d.ts +1 -1
  101. package/dist/{BaseModal-DfRIuVoj.js → useDropdownState-uFIz6Yv8.js} +75 -5
  102. package/dist/useDropdownState-uFIz6Yv8.js.map +1 -0
  103. package/dist/{useExperimentSamples-CxcnxZ8h.js → useExperimentSamples-QEFoq4tf.js} +48 -6
  104. package/dist/useExperimentSamples-QEFoq4tf.js.map +1 -0
  105. package/dist/{useListReorder-CcbEYxX-.js → useListReorder-DsuzwWGS.js} +219 -437
  106. package/dist/useListReorder-DsuzwWGS.js.map +1 -0
  107. package/dist/{useRackEditor-BD5NIo5s.js → useRackEditor-KpZ4iJ6o.js} +85 -81
  108. package/dist/useRackEditor-KpZ4iJ6o.js.map +1 -0
  109. package/dist/useRealtime-B58Lo-Tm.js +508 -0
  110. package/dist/useRealtime-B58Lo-Tm.js.map +1 -0
  111. package/dist/useRequest-BuDmW8Jc.js +215 -0
  112. package/dist/useRequest-BuDmW8Jc.js.map +1 -0
  113. package/dist/utils/time.d.ts +7 -0
  114. package/package.json +3 -2
  115. package/src/__stories__/experiment-helpers.ts +3 -3
  116. package/src/__tests__/components/ActionMenu.test.ts +2 -2
  117. package/src/__tests__/components/AppTopBar.test.ts +257 -3
  118. package/src/__tests__/components/AppTopBarOnboarding.test.ts +160 -0
  119. package/src/__tests__/components/AppTopBarPageSelector.test.ts +125 -9
  120. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  121. package/src/__tests__/components/ArtifactSaveDialog.test.ts +78 -0
  122. package/src/__tests__/components/BaseButton.test.ts +19 -0
  123. package/src/__tests__/components/BaseModal.test.ts +13 -0
  124. package/src/__tests__/components/BaseSelect.multiple.test.ts +87 -32
  125. package/src/__tests__/components/BaseSelect.test.ts +2 -1
  126. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  127. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  128. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  129. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  130. package/src/__tests__/components/DatePicker.datetime.test.ts +6 -0
  131. package/src/__tests__/components/DatePicker.test.ts +21 -0
  132. package/src/__tests__/components/DatePicker.time.test.ts +2 -2
  133. package/src/__tests__/components/EmptyState.test.ts +1 -1
  134. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  135. package/src/__tests__/components/ExperimentSelectorModal.test.ts +153 -14
  136. package/src/__tests__/components/FloatingPanelsInModal.test.ts +94 -0
  137. package/src/__tests__/components/GeneratedPluginView.test.ts +23 -2
  138. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  139. package/src/__tests__/components/JobsStatusTray.test.ts +373 -71
  140. package/src/__tests__/components/PluginWorkspaceView.test.ts +63 -1
  141. package/src/__tests__/components/ResourcePickerListInternal.test.ts +0 -20
  142. package/src/__tests__/components/SampleSelector.test.ts +33 -8
  143. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  144. package/src/__tests__/components/SettingsModal.test.ts +9 -2
  145. package/src/__tests__/components/StepWizard.test.ts +11 -0
  146. package/src/__tests__/components/WellPlate.decoration.test.ts +11 -4
  147. package/src/__tests__/components/deprecationTags.test.ts +1 -1
  148. package/src/__tests__/composables/useAppExperiment.test.ts +27 -1
  149. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  150. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  151. package/src/__tests__/composables/useFileImport.test.ts +36 -0
  152. package/src/__tests__/composables/useFloatingPanel.test.ts +68 -0
  153. package/src/__tests__/composables/useJobCenter.test.ts +262 -3
  154. package/src/__tests__/composables/useOnboarding.test.ts +317 -0
  155. package/src/__tests__/docs/frontendDocsCatalog.test.ts +4 -3
  156. package/src/__tests__/fixtures/table-import/cells.xlsx +0 -0
  157. package/src/__tests__/fixtures/table-import/samples.xlsx +0 -0
  158. package/src/__tests__/stores/settings.test.ts +21 -21
  159. package/src/__tests__/styles/baseControlsRules.test.ts +6 -2
  160. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  161. package/src/__tests__/styles/cssTokens.test.ts +6 -3
  162. package/src/__tests__/styles/menusShellRefresh.test.ts +22 -12
  163. package/src/__tests__/styles/paletteTokens.test.ts +44 -0
  164. package/src/__tests__/styles/v2AuditRules.test.ts +104 -0
  165. package/src/__tests__/utils/plotlyTemplate.test.ts +4 -4
  166. package/src/__tests__/utils/time.test.ts +18 -1
  167. package/src/components/ActionMenu.vue +6 -37
  168. package/src/components/AdductText.story.vue +7 -0
  169. package/src/components/AdductText.vue +1 -1
  170. package/src/components/AlertBox.story.vue +2 -2
  171. package/src/components/AlertBox.vue +18 -16
  172. package/src/components/AppSidebar.story.vue +0 -28
  173. package/src/components/AppTopBar.onboarding.story.vue +69 -0
  174. package/src/components/AppTopBar.story.vue +105 -15
  175. package/src/components/AppTopBar.vue +248 -122
  176. package/src/components/ArtifactSaveDialog.story.vue +23 -0
  177. package/src/components/ArtifactSaveDialog.vue +102 -12
  178. package/src/components/AuditTrail.story.vue +2 -1
  179. package/src/components/AuditTrail.vue +2 -21
  180. package/src/components/Avatar.vue +10 -14
  181. package/src/components/BaseButton.vue +16 -2
  182. package/src/components/BaseModal.vue +2 -1
  183. package/src/components/BaseSelect.multiple.story.vue +13 -2
  184. package/src/components/BaseSelect.vue +4 -3
  185. package/src/components/BatchProgressList.vue +35 -25
  186. package/src/components/ChartContainer.story.vue +2 -1
  187. package/src/components/ChartContainer.vue +8 -6
  188. package/src/components/ConfirmDialog.story.vue +1 -1
  189. package/src/components/EmptyState.vue +1 -1
  190. package/src/components/ExperimentPopover.story.vue +165 -53
  191. package/src/components/ExperimentPopover.vue +169 -187
  192. package/src/components/ExperimentSelectorModal.story.vue +73 -31
  193. package/src/components/ExperimentSelectorModal.vue +144 -111
  194. package/src/components/FormField.story.vue +8 -48
  195. package/src/components/GeneratedPluginView.vue +11 -10
  196. package/src/components/GeneratedResultRenderer.vue +3 -4
  197. package/src/components/InstrumentStateBadge.vue +1 -1
  198. package/src/components/JobsStatusTray.story.vue +97 -43
  199. package/src/components/JobsStatusTray.vue +287 -290
  200. package/src/components/LayoutResizeHandle.story.vue +65 -4
  201. package/src/components/LoadingSpinner.vue +1 -1
  202. package/src/components/NumberInput.vue +3 -6
  203. package/src/components/PluginIcon.story.vue +2 -10
  204. package/src/components/PluginIcon.vue +2 -2
  205. package/src/components/PluginWorkspaceView.props.ts +3 -0
  206. package/src/components/PluginWorkspaceView.story.vue +1 -1
  207. package/src/components/PluginWorkspaceView.vue +17 -0
  208. package/src/components/RuntimeUpdateNotice.vue +1 -1
  209. package/src/components/SampleSelector.story.vue +22 -7
  210. package/src/components/SampleSelector.vue +34 -37
  211. package/src/components/SampleSelectorGroupNode.vue +1 -1
  212. package/src/components/SectionCard.story.vue +35 -2
  213. package/src/components/SequenceProgressBar.story.vue +9 -0
  214. package/src/components/SequenceProgressBar.vue +6 -1
  215. package/src/components/SettingsModal.schema.ts +1 -1
  216. package/src/components/SettingsModal.vue +9 -14
  217. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  218. package/src/components/SmartGroupManual.story.vue +1 -1
  219. package/src/components/StepWizard.story.vue +33 -0
  220. package/src/components/StepWizard.vue +8 -1
  221. package/src/components/Tooltip.vue +9 -32
  222. package/src/components/WellPlate.story.vue +3 -1
  223. package/src/components/WellPlate.vue +7 -0
  224. package/src/components/internal/AppTopBarOnboardingInternal.vue +172 -0
  225. package/src/components/internal/AppTopBarPageSelectorInternal.vue +140 -72
  226. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  227. package/src/components/internal/DatePickerDateInternal.vue +23 -85
  228. package/src/components/internal/DatePickerDateTimeInternal.vue +10 -14
  229. package/src/components/internal/DatePickerTimeInternal.vue +13 -9
  230. package/src/components/internal/NumberUnitInputInternal.vue +4 -18
  231. package/src/components/internal/OnboardingLayerInternal.vue +173 -0
  232. package/src/components/internal/ResourcePickerListInternal.vue +45 -85
  233. package/src/components/internal/SelectMultipleInternal.vue +187 -65
  234. package/src/components/internal/SelectSearchableInternal.vue +8 -4
  235. package/src/components/internal/WellEditPopupInternal.vue +11 -22
  236. package/src/components/internal/WorkspaceShellInternal.vue +12 -0
  237. package/src/composables/createClient.ts +2 -0
  238. package/src/composables/index.ts +1 -0
  239. package/src/composables/pluginIdentity.ts +31 -0
  240. package/src/composables/pluginWorkspaceModel.ts +2 -2
  241. package/src/composables/useAppExperiment.ts +20 -0
  242. package/src/composables/useCalendarGrid.ts +4 -3
  243. package/src/composables/useExperimentSelector.ts +77 -31
  244. package/src/composables/useFileImport.ts +51 -1
  245. package/src/composables/useFloatingPanel.ts +107 -0
  246. package/src/composables/useJobCenter.ts +188 -6
  247. package/src/composables/useOnboarding.ts +465 -0
  248. package/src/composables/usePluginWorkspace.ts +1 -1
  249. package/src/data.ts +1 -0
  250. package/src/runtime.ts +2 -1
  251. package/src/shell.ts +17 -0
  252. package/src/stores/index.ts +0 -2
  253. package/src/stores/settings.ts +20 -50
  254. package/src/styles/components/action-menu.css +1 -1
  255. package/src/styles/components/adduct-text.css +13 -5
  256. package/src/styles/components/alert-box.css +39 -58
  257. package/src/styles/components/app-layout.css +10 -6
  258. package/src/styles/components/app-page-selector.css +121 -44
  259. package/src/styles/components/app-pill-nav.css +11 -12
  260. package/src/styles/components/app-sidebar.css +9 -18
  261. package/src/styles/components/app-top-bar.css +219 -55
  262. package/src/styles/components/artifact-save-dialog.css +153 -2
  263. package/src/styles/components/audit-trail.css +16 -19
  264. package/src/styles/components/avatar.css +6 -4
  265. package/src/styles/components/batch-progress-list.css +38 -36
  266. package/src/styles/components/button.css +36 -59
  267. package/src/styles/components/calendar.css +12 -12
  268. package/src/styles/components/chart-container.css +34 -23
  269. package/src/styles/components/checkbox.css +2 -12
  270. package/src/styles/components/collapsible-card.css +27 -29
  271. package/src/styles/components/confirm-dialog.css +13 -14
  272. package/src/styles/components/dataframe.css +13 -5
  273. package/src/styles/components/date-picker.css +84 -94
  274. package/src/styles/components/datetime-picker.css +35 -47
  275. package/src/styles/components/divider.css +20 -20
  276. package/src/styles/components/dose-calculator.css +3 -3
  277. package/src/styles/components/empty-state.css +20 -17
  278. package/src/styles/components/experiment-code-badge.css +2 -0
  279. package/src/styles/components/experiment-popover.css +174 -329
  280. package/src/styles/components/experiment-selector-modal.css +88 -56
  281. package/src/styles/components/file-picker.css +3 -3
  282. package/src/styles/components/file-uploader.css +38 -49
  283. package/src/styles/components/form-builder.css +3 -3
  284. package/src/styles/components/formula-input.css +1 -1
  285. package/src/styles/components/icon-button.css +18 -24
  286. package/src/styles/components/input.css +5 -4
  287. package/src/styles/components/instrument-monitor.css +13 -15
  288. package/src/styles/components/jobs-status-tray.css +140 -296
  289. package/src/styles/components/layout-resize-handle.css +59 -16
  290. package/src/styles/components/modal.css +5 -7
  291. package/src/styles/components/molecule-input.css +2 -2
  292. package/src/styles/components/multi-select.css +65 -117
  293. package/src/styles/components/number-input.css +26 -19
  294. package/src/styles/components/onboarding.css +368 -0
  295. package/src/styles/components/pill.css +3 -2
  296. package/src/styles/components/plate-editor.css +0 -1
  297. package/src/styles/components/plugin-icon.css +26 -23
  298. package/src/styles/components/popover.css +2 -2
  299. package/src/styles/components/presence-avatars.css +1 -1
  300. package/src/styles/components/progress-bar.css +3 -3
  301. package/src/styles/components/protocol-step-editor.css +1 -3
  302. package/src/styles/components/resource-card.css +2 -2
  303. package/src/styles/components/resource-picker-list.css +6 -57
  304. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  305. package/src/styles/components/sample-selector.css +138 -79
  306. package/src/styles/components/schedule-calendar.css +8 -8
  307. package/src/styles/components/searchable-select.css +15 -19
  308. package/src/styles/components/section-card.css +54 -49
  309. package/src/styles/components/segmented-control.css +18 -15
  310. package/src/styles/components/select.css +3 -3
  311. package/src/styles/components/sequence-input.css +2 -2
  312. package/src/styles/components/sequence-progress-bar.css +17 -8
  313. package/src/styles/components/settings-modal.css +7 -2
  314. package/src/styles/components/smart-group.css +18 -18
  315. package/src/styles/components/step-wizard.css +52 -16
  316. package/src/styles/components/tabs.css +2 -2
  317. package/src/styles/components/textarea.css +3 -3
  318. package/src/styles/components/time-picker.css +37 -25
  319. package/src/styles/components/toast.css +13 -11
  320. package/src/styles/components/toggle.css +1 -11
  321. package/src/styles/components/tooltip.css +12 -11
  322. package/src/styles/components/unit-input.css +9 -8
  323. package/src/styles/components/well-edit-popup.css +2 -2
  324. package/src/styles/components/well-plate.css +9 -2
  325. package/src/styles/index.css +1 -0
  326. package/src/styles/variables.css +247 -78
  327. package/src/types/componentWorkflowTypes.ts +2 -0
  328. package/src/types/components.ts +2 -0
  329. package/src/types/generated/platformContext.ts +1 -0
  330. package/src/types/generated-ui.ts +4 -0
  331. package/src/types/index.ts +1 -0
  332. package/src/types/jobs.ts +10 -0
  333. package/src/types/platform.ts +1 -1
  334. package/src/utils/time.ts +21 -0
  335. package/dist/ActionMenu-CScINahU.js.map +0 -1
  336. package/dist/AppSidebar-BmiiPfz9.js.map +0 -1
  337. package/dist/BaseModal-DfRIuVoj.js.map +0 -1
  338. package/dist/ExperimentPopover-C4sGw-is.js +0 -359
  339. package/dist/ExperimentPopover-C4sGw-is.js.map +0 -1
  340. package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +0 -1
  341. package/dist/SettingsModal-CSLE31yg.js.map +0 -1
  342. package/dist/data-C2PwI_dn.js.map +0 -1
  343. package/dist/experiment-43OJtH7R.js.map +0 -1
  344. package/dist/lab-DLwRl_Ql.js.map +0 -1
  345. package/dist/records-BzTcxekG.js.map +0 -1
  346. package/dist/runtime-D6gVat6r.js.map +0 -1
  347. package/dist/useExperimentSamples-CxcnxZ8h.js.map +0 -1
  348. package/dist/useListReorder-CcbEYxX-.js.map +0 -1
  349. package/dist/useRackEditor-BD5NIo5s.js.map +0 -1
  350. package/dist/useRealtime-PalKue84.js +0 -696
  351. package/dist/useRealtime-PalKue84.js.map +0 -1
  352. package/dist/useRequest-D5JDfsgZ.js +0 -76
  353. package/dist/useRequest-D5JDfsgZ.js.map +0 -1
@@ -1,14 +1,16 @@
1
- import { a as __exportAll, i as BaseButton_default, t as BaseModal_default } from "./BaseModal-DfRIuVoj.js";
2
- import { o as useApi } from "./experiment-43OJtH7R.js";
3
- import { A as useRovingFocus, I as normalizeOptionInput, L as BaseInput_default, N as BaseSelect_default, O as FormField_default, P as useListSelection, j as BaseCheckbox_default } from "./records-BzTcxekG.js";
4
- import { C as useSequenceUtils, E as renderFormulaParts, F as compareTime, I as durationMinutes, N as NumberInput_default, O as _plugin_vue_export_helper_default, P as DatePicker_default, R as time_exports, S as SequenceInput_default, T as formula_exports, U as defineWellPlate, V as definePlateEditor, a as StepWizard_default, b as useConcentrationUnits, h as recordValue, i as useReorderAnnouncer, r as useListReorder, w as FormulaInput_default, x as MoleculeInput_default, y as ConcentrationInput_default } from "./useListReorder-CcbEYxX-.js";
5
- import { t as SegmentedControl_default } from "./SegmentedControl-DERBN-Xd.js";
6
- import { i as LoadingSpinner_default, n as AlertBox_default, r as DataStateInternal_default, s as useTextSearch, t as ActionMenu_default } from "./ActionMenu-CScINahU.js";
7
- import { C as hexToHsl, E as sampleTypeMarker, S as deriveShade, T as WellPlate_default, _ as mintPlotlyTemplate, b as PlateEditor_default, g as ChartContainer_default, h as PlotlyChart_default, i as GeneratedResultRenderer_default, n as ScheduleCalendar_default, r as useScheduleDrag, t as useRackEditor, v as DoseCalculator_default, w as hslToHex, x as SAMPLE_GROUP_TOKENS, y as dose_exports } from "./useRackEditor-BD5NIo5s.js";
8
- import { t as defineControlModel } from "./controlSchemaModel-CP5-_nAj.js";
9
- import { i as readFileAsText, t as useExperimentSamples, u as unwrapExperimentDesignData } from "./useExperimentSamples-CxcnxZ8h.js";
1
+ import { a as BaseButton_default, n as BaseModal_default, o as __exportAll } from "./useDropdownState-uFIz6Yv8.js";
2
+ import { o as useApi } from "./experiment-DyO54FQB.js";
3
+ import { D as compareTime, G as normalizeOptionInput, H as useListSelection, I as FormField_default, K as BaseInput_default, O as durationMinutes, P as time_exports, R as useRovingFocus, V as BaseSelect_default, z as BaseCheckbox_default } from "./records-D4aQXyZu.js";
4
+ import { C as FormulaInput_default, D as _plugin_vue_export_helper_default, L as definePlateEditor, N as NumberInput_default, P as DatePicker_default, S as useSequenceUtils, T as renderFormulaParts, a as StepWizard_default, b as MoleculeInput_default, i as useReorderAnnouncer, m as recordValue, r as useListReorder, v as ConcentrationInput_default, w as formula_exports, x as SequenceInput_default, y as useConcentrationUnits, z as defineWellPlate } from "./useListReorder-DsuzwWGS.js";
5
+ import { t as SegmentedControl_default } from "./SegmentedControl-DyUPH3I5.js";
6
+ import { n as DataStateInternal_default, o as useTextSearch, r as LoadingSpinner_default, t as AlertBox_default } from "./AlertBox-DwgNTEqf.js";
7
+ import { C as hexToHsl, E as sampleTypeMarker, S as deriveShade, T as WellPlate_default, _ as mintPlotlyTemplate, b as PlateEditor_default, g as ChartContainer_default, h as PlotlyChart_default, i as GeneratedResultRenderer_default, n as ScheduleCalendar_default, r as useScheduleDrag, t as useRackEditor, v as DoseCalculator_default, w as hslToHex, x as SAMPLE_GROUP_TOKENS, y as dose_exports } from "./useRackEditor-KpZ4iJ6o.js";
8
+ import { n as ActionMenu_default } from "./useRequest-BuDmW8Jc.js";
9
+ import { t as defineControlModel } from "./controlSchemaModel-Bsg0t5Ab.js";
10
+ import { d as unwrapExperimentDesignData, i as readFileAsText, t as useExperimentSamples } from "./useExperimentSamples-QEFoq4tf.js";
10
11
  import { t as useExpansionSet } from "./useExpansionSet-CvoNMZJi.js";
11
12
  import { Fragment, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, h, mergeProps, nextTick, normalizeClass, normalizeStyle, onMounted, openBlock, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, toDisplayString, toHandlers, toValue, unref, useId, vModelText, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
13
+ import { Layers, RotateCcw, WandSparkles } from "lucide-vue-next";
12
14
  //#region src/components/BaseTabs.vue?vue&type=script&setup=true&lang.ts
13
15
  var _hoisted_1$17 = {
14
16
  class: "mint-tabs mint-tabs--underline",
@@ -40,7 +42,7 @@ var _hoisted_7$8 = {
40
42
  key: 1,
41
43
  class: "mint-tab__icon"
42
44
  };
43
- var _hoisted_8$7 = {
45
+ var _hoisted_8$8 = {
44
46
  key: 2,
45
47
  class: "mint-tab__badge"
46
48
  };
@@ -115,7 +117,7 @@ var BaseTabs_default = /* @__PURE__ */ defineComponent({
115
117
  d: tab.icon
116
118
  }, null, 8, _hoisted_6$9))])) : tab.icon ? (openBlock(), createElementBlock("span", _hoisted_7$8, toDisplayString(tab.icon), 1)) : createCommentVNode("", true),
117
119
  createTextVNode(" " + toDisplayString(tab.label) + " ", 1),
118
- tab.badge !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_8$7, toDisplayString(tab.badge), 1)) : createCommentVNode("", true)
120
+ tab.badge !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_8$8, toDisplayString(tab.badge), 1)) : createCommentVNode("", true)
119
121
  ])], 42, _hoisted_2$17);
120
122
  }), 128))]);
121
123
  };
@@ -609,12 +611,12 @@ var _hoisted_7$7 = {
609
611
  key: 1,
610
612
  class: "fr-loading"
611
613
  };
612
- var _hoisted_8$6 = {
614
+ var _hoisted_8$7 = {
613
615
  key: 2,
614
616
  class: "fr-blank",
615
617
  "data-test": "recipe-empty"
616
618
  };
617
- var _hoisted_9$6 = {
619
+ var _hoisted_9$7 = {
618
620
  key: 0,
619
621
  class: "fr-anatomy"
620
622
  };
@@ -655,7 +657,7 @@ var _hoisted_23$2 = {
655
657
  };
656
658
  var _hoisted_24$2 = { class: "sg-recipe" };
657
659
  var _hoisted_25$2 = ["data-field"];
658
- var _hoisted_26$1 = { class: "sg-field__name" };
660
+ var _hoisted_26$2 = { class: "sg-field__name" };
659
661
  var _hoisted_27$1 = { class: "sg-field__vals" };
660
662
  var _hoisted_28$1 = {
661
663
  key: 2,
@@ -1108,7 +1110,7 @@ var SmartGroupFieldRecipe_default = /* @__PURE__ */ defineComponent({
1108
1110
  size: "md",
1109
1111
  label: "Loading experiment metadata"
1110
1112
  }), _cache[14] || (_cache[14] = createElementVNode("span", null, "Loading experiment metadata…", -1))])) : createCommentVNode("", true),
1111
- __props.fields.length === 0 && __props.headerCount === 0 && !__props.loading ? (openBlock(), createElementBlock("div", _hoisted_8$6, [
1113
+ __props.fields.length === 0 && __props.headerCount === 0 && !__props.loading ? (openBlock(), createElementBlock("div", _hoisted_8$7, [
1112
1114
  _cache[16] || (_cache[16] = createElementVNode("span", { class: "sg-lead__q" }, "No samples to group", -1)),
1113
1115
  _cache[17] || (_cache[17] = createElementVNode("span", { class: "sg-lead__hint" }, " Upload a CSV with one sample column and one column for each field, or close this dialog and select samples first. ", -1)),
1114
1116
  createVNode(BaseButton_default, {
@@ -1124,7 +1126,7 @@ var SmartGroupFieldRecipe_default = /* @__PURE__ */ defineComponent({
1124
1126
  _: 1
1125
1127
  })
1126
1128
  ])) : (openBlock(), createElementBlock(Fragment, { key: 3 }, [
1127
- __props.anatomy && __props.anatomy.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_9$6, [_cache[18] || (_cache[18] = createElementVNode("span", { class: "fr-label" }, "How MINT read your names", -1)), createElementVNode("div", _hoisted_10$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.anatomy, (token, t) => {
1129
+ __props.anatomy && __props.anatomy.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_9$7, [_cache[18] || (_cache[18] = createElementVNode("span", { class: "fr-label" }, "How MINT read your names", -1)), createElementVNode("div", _hoisted_10$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.anatomy, (token, t) => {
1128
1130
  return openBlock(), createElementBlock("span", {
1129
1131
  key: t,
1130
1132
  class: normalizeClass(["fr-token", "fr-token--" + token.state])
@@ -1203,7 +1205,7 @@ var SmartGroupFieldRecipe_default = /* @__PURE__ */ defineComponent({
1203
1205
  "data-test": "field-off",
1204
1206
  "data-field": card.index
1205
1207
  }, [
1206
- createElementVNode("span", _hoisted_26$1, toDisplayString(card.field.key), 1),
1208
+ createElementVNode("span", _hoisted_26$2, toDisplayString(card.field.key), 1),
1207
1209
  createElementVNode("span", { class: normalizeClass(["sg-field__role", { "sg-field__role--rep": card.field.rep }]) }, toDisplayString(card.field.role), 3),
1208
1210
  createElementVNode("span", _hoisted_27$1, toDisplayString(card.field.vals), 1),
1209
1211
  createVNode(BaseCheckbox_default, {
@@ -1378,8 +1380,8 @@ var _hoisted_4$9 = { class: "mg2-body" };
1378
1380
  var _hoisted_5$8 = { class: "mg2-find" };
1379
1381
  var _hoisted_6$6 = { class: "mg2-search" };
1380
1382
  var _hoisted_7$6 = { class: "mg2-chips" };
1381
- var _hoisted_8$5 = ["onClick"];
1382
- var _hoisted_9$5 = { class: "mg2-chip__n" };
1383
+ var _hoisted_8$6 = ["onClick"];
1384
+ var _hoisted_9$6 = { class: "mg2-chip__n" };
1383
1385
  var _hoisted_10$4 = { class: "mg2-selbar" };
1384
1386
  var _hoisted_11$4 = { class: "mg2-check" };
1385
1387
  var _hoisted_12$3 = ["checked"];
@@ -1405,7 +1407,7 @@ var _hoisted_22$1 = { class: "mg2-cohorts__head" };
1405
1407
  var _hoisted_23$1 = { class: "mg2-cohorts__n" };
1406
1408
  var _hoisted_24$1 = { class: "mg2-progress" };
1407
1409
  var _hoisted_25$1 = { class: "mg2-progress__top" };
1408
- var _hoisted_26 = { class: "mg2-progress__pct" };
1410
+ var _hoisted_26$1 = { class: "mg2-progress__pct" };
1409
1411
  var _hoisted_27 = { class: "mg2-progress__track" };
1410
1412
  var _hoisted_28 = { class: "mg2-tree" };
1411
1413
  var _hoisted_29 = {
@@ -1704,7 +1706,7 @@ var SmartGroupManual_default = /* @__PURE__ */ defineComponent({
1704
1706
  key: chip.k,
1705
1707
  class: normalizeClass(["mg2-chip", { "mg2-chip--on": filter.value === chip.k }]),
1706
1708
  onClick: ($event) => filter.value = chip.k
1707
- }, [createTextVNode(toDisplayString(chip.label), 1), createElementVNode("span", _hoisted_9$5, toDisplayString(chip.n), 1)], 10, _hoisted_8$5);
1709
+ }, [createTextVNode(toDisplayString(chip.label), 1), createElementVNode("span", _hoisted_9$6, toDisplayString(chip.n), 1)], 10, _hoisted_8$6);
1708
1710
  }), 128))]),
1709
1711
  createElementVNode("div", _hoisted_10$4, [createElementVNode("label", _hoisted_11$4, [createElementVNode("input", {
1710
1712
  type: "checkbox",
@@ -1736,7 +1738,7 @@ var SmartGroupManual_default = /* @__PURE__ */ defineComponent({
1736
1738
  }), 128))])
1737
1739
  ]), createElementVNode("div", _hoisted_21$1, [
1738
1740
  createElementVNode("div", _hoisted_22$1, [_cache[14] || (_cache[14] = createElementVNode("span", { class: "mg2-cohorts__t" }, "Cohorts", -1)), createElementVNode("span", _hoisted_23$1, toDisplayString(tree.value.size) + " groups", 1)]),
1739
- createElementVNode("div", _hoisted_24$1, [createElementVNode("div", _hoisted_25$1, [createElementVNode("span", null, [createElementVNode("b", null, toDisplayString(assignedCount.value), 1), createTextVNode(" of " + toDisplayString(samples.value.length) + " grouped", 1)]), createElementVNode("span", _hoisted_26, toDisplayString(pct.value) + "%", 1)]), createElementVNode("div", _hoisted_27, [createElementVNode("div", {
1741
+ createElementVNode("div", _hoisted_24$1, [createElementVNode("div", _hoisted_25$1, [createElementVNode("span", null, [createElementVNode("b", null, toDisplayString(assignedCount.value), 1), createTextVNode(" of " + toDisplayString(samples.value.length) + " grouped", 1)]), createElementVNode("span", _hoisted_26$1, toDisplayString(pct.value) + "%", 1)]), createElementVNode("div", _hoisted_27, [createElementVNode("div", {
1740
1742
  class: "mg2-progress__fill",
1741
1743
  style: normalizeStyle({ width: pct.value + "%" })
1742
1744
  }, null, 4)])]),
@@ -4216,7 +4218,7 @@ var SampleSelectorGroupNode_default = /* @__PURE__ */ defineComponent({
4216
4218
  class: normalizeClass(isRoot.value ? "mint-sample-selector__major-name" : "mint-sample-selector__sub-name"),
4217
4219
  title: __props.node.group?.name ?? __props.node.label
4218
4220
  }, toDisplayString(__props.node.label), 11, _hoisted_3$9),
4219
- createElementVNode("span", _hoisted_4$8, toDisplayString(selectedCount.value) + " / " + toDisplayString(__props.node.allSamples.length), 1),
4221
+ createElementVNode("span", _hoisted_4$8, toDisplayString(selectedCount.value) + "/" + toDisplayString(__props.node.allSamples.length), 1),
4220
4222
  createElementVNode("button", {
4221
4223
  type: "button",
4222
4224
  class: "mint-sample-selector__delete-btn mint-sample-selector__delete-btn--hidden",
@@ -4672,69 +4674,61 @@ function useSampleSelectorSelection(options) {
4672
4674
  //#endregion
4673
4675
  //#region src/components/SampleSelector.vue?vue&type=script&setup=true&lang.ts
4674
4676
  var _hoisted_1$9 = { class: "mint-sample-selector" };
4675
- var _hoisted_2$9 = {
4677
+ var _hoisted_2$9 = { class: "mint-sample-selector__header" };
4678
+ var _hoisted_3$8 = { class: "mint-sample-selector__selected" };
4679
+ var _hoisted_4$7 = { class: "mint-sample-selector__selected-full" };
4680
+ var _hoisted_5$6 = {
4681
+ class: "mint-sample-selector__selected-short",
4682
+ "aria-hidden": "true"
4683
+ };
4684
+ var _hoisted_6$5 = {
4685
+ key: 0,
4686
+ class: "mint-sample-selector__header-actions"
4687
+ };
4688
+ var _hoisted_7$5 = {
4676
4689
  key: 0,
4677
4690
  class: "mint-sample-selector__state"
4678
4691
  };
4679
- var _hoisted_3$8 = {
4692
+ var _hoisted_8$5 = {
4680
4693
  key: 1,
4681
4694
  class: "mint-sample-selector__state"
4682
4695
  };
4683
- var _hoisted_4$7 = {
4696
+ var _hoisted_9$5 = {
4684
4697
  key: 2,
4685
4698
  class: "mint-sample-selector__state"
4686
4699
  };
4687
- var _hoisted_5$6 = { class: "mint-sample-selector__select-all-count" };
4688
- var _hoisted_6$5 = {
4700
+ var _hoisted_10$3 = { class: "mint-sample-selector__select-all-count" };
4701
+ var _hoisted_11$3 = {
4689
4702
  key: 4,
4690
- class: "mint-sample-selector__actions"
4691
- };
4692
- var _hoisted_7$5 = { class: "mint-sample-selector__actions-row" };
4693
- var _hoisted_8$4 = {
4694
- key: 0,
4695
- class: "mint-sample-selector__action-icon",
4696
- fill: "none",
4697
- stroke: "currentColor",
4698
- viewBox: "0 0 24 24"
4699
- };
4700
- var _hoisted_9$4 = {
4701
- key: 1,
4702
- class: "mint-sample-selector__action-icon",
4703
- fill: "none",
4704
- stroke: "currentColor",
4705
- viewBox: "0 0 24 24"
4706
- };
4707
- var _hoisted_10$3 = {
4708
- key: 5,
4709
4703
  class: "mint-sample-selector__grouped"
4710
4704
  };
4711
- var _hoisted_11$3 = { class: "mint-sample-selector__groups-header" };
4712
- var _hoisted_12$2 = { class: "mint-sample-selector__groups-title" };
4713
- var _hoisted_13$2 = { class: "mint-sample-selector__tree" };
4714
- var _hoisted_14$2 = {
4705
+ var _hoisted_12$2 = { class: "mint-sample-selector__groups-header" };
4706
+ var _hoisted_13$2 = { class: "mint-sample-selector__groups-title" };
4707
+ var _hoisted_14$2 = { class: "mint-sample-selector__tree" };
4708
+ var _hoisted_15$2 = {
4715
4709
  key: 0,
4716
4710
  class: "mint-sample-selector__hint"
4717
4711
  };
4718
- var _hoisted_15$2 = {
4712
+ var _hoisted_16$1 = {
4719
4713
  key: 0,
4720
4714
  class: "mint-sample-selector__ungrouped"
4721
4715
  };
4722
- var _hoisted_16$1 = { class: "mint-sample-selector__ungrouped-count" };
4723
- var _hoisted_17$1 = {
4716
+ var _hoisted_17$1 = { class: "mint-sample-selector__ungrouped-count" };
4717
+ var _hoisted_18$1 = {
4724
4718
  key: 0,
4725
4719
  class: "mint-sample-selector__ungrouped-list"
4726
4720
  };
4727
- var _hoisted_18$1 = { class: "mint-sample-selector__new-group" };
4728
- var _hoisted_19$1 = ["value"];
4729
- var _hoisted_20$1 = {
4730
- key: 6,
4721
+ var _hoisted_19$1 = { class: "mint-sample-selector__new-group" };
4722
+ var _hoisted_20$1 = ["value"];
4723
+ var _hoisted_21 = {
4724
+ key: 5,
4731
4725
  class: "mint-sample-selector__flat"
4732
4726
  };
4733
- var _hoisted_21 = { class: "mint-sample-selector__search" };
4734
- var _hoisted_22 = { class: "mint-sample-selector__flat-list" };
4735
- var _hoisted_23 = ["title", "aria-label"];
4736
- var _hoisted_24 = { class: "mint-sample-selector__flat-name" };
4737
- var _hoisted_25 = {
4727
+ var _hoisted_22 = { class: "mint-sample-selector__search" };
4728
+ var _hoisted_23 = { class: "mint-sample-selector__flat-list" };
4729
+ var _hoisted_24 = ["title", "aria-label"];
4730
+ var _hoisted_25 = { class: "mint-sample-selector__flat-name" };
4731
+ var _hoisted_26 = {
4738
4732
  key: 0,
4739
4733
  class: "mint-sample-selector__hint"
4740
4734
  };
@@ -4904,6 +4898,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
4904
4898
  internalGroups.value = [...internalGroups.value, newGroup];
4905
4899
  newGroupName.value = "";
4906
4900
  }
4901
+ const groupingLabel = computed(() => props.enableSmartGroup ? "Smart group" : "Group");
4907
4902
  /** Selected samples among the resolved list, for the select-all header. */
4908
4903
  const selectedCount = computed(() => resolvedSamples.value.filter((s) => props.modelValue.includes(s)).length);
4909
4904
  /** True while a loading, error or empty placeholder stands in for the body. */
@@ -4911,15 +4906,38 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
4911
4906
  __expose({ handleSmartGroupApply });
4912
4907
  return (_ctx, _cache) => {
4913
4908
  return openBlock(), createElementBlock("div", _hoisted_1$9, [
4914
- __props.error ? (openBlock(), createElementBlock("div", _hoisted_2$9, [renderSlot(_ctx.$slots, "error", { error: __props.error }, () => [createVNode(DataStateInternal_default, {
4909
+ createElementVNode("div", _hoisted_2$9, [
4910
+ _cache[7] || (_cache[7] = createElementVNode("span", { class: "mint-sample-selector__title" }, "Samples", -1)),
4911
+ createElementVNode("span", _hoisted_3$8, [createElementVNode("span", _hoisted_4$7, toDisplayString(selectedCount.value) + " selected", 1), createElementVNode("span", _hoisted_5$6, toDisplayString(selectedCount.value) + " sel.", 1)]),
4912
+ !isPlaceholderState.value && __props.enableGrouping ? (openBlock(), createElementBlock("div", _hoisted_6$5, [createVNode(BaseButton_default, {
4913
+ variant: "ghost",
4914
+ size: "sm",
4915
+ icon: __props.enableSmartGroup ? unref(WandSparkles) : unref(Layers),
4916
+ title: groupingLabel.value,
4917
+ class: "mint-sample-selector__action-btn mint-sample-selector__group-btn",
4918
+ onClick: _cache[0] || (_cache[0] = ($event) => openGroupingModal(groupingActionMode.value))
4919
+ }, {
4920
+ default: withCtx(() => [createTextVNode(toDisplayString(groupingLabel.value), 1)]),
4921
+ _: 1
4922
+ }, 8, ["icon", "title"]), internalGroups.value.length > 0 ? (openBlock(), createBlock(BaseButton_default, {
4923
+ key: 0,
4924
+ variant: "ghost",
4925
+ size: "sm",
4926
+ icon: unref(RotateCcw),
4927
+ label: "Clear all groups",
4928
+ class: "mint-sample-selector__action-btn",
4929
+ onClick: clearGroups
4930
+ }, null, 8, ["icon"])) : createCommentVNode("", true)])) : createCommentVNode("", true)
4931
+ ]),
4932
+ __props.error ? (openBlock(), createElementBlock("div", _hoisted_7$5, [renderSlot(_ctx.$slots, "error", { error: __props.error }, () => [createVNode(DataStateInternal_default, {
4915
4933
  state: "error",
4916
4934
  size: "sm",
4917
4935
  title: __props.error
4918
- }, null, 8, ["title"])])])) : __props.loading ? (openBlock(), createElementBlock("div", _hoisted_3$8, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(DataStateInternal_default, {
4936
+ }, null, 8, ["title"])])])) : __props.loading ? (openBlock(), createElementBlock("div", _hoisted_8$5, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(DataStateInternal_default, {
4919
4937
  state: "loading",
4920
4938
  size: "sm",
4921
4939
  "loading-label": "Loading samples"
4922
- })])])) : resolvedSamples.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_4$7, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
4940
+ })])])) : resolvedSamples.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_9$5, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
4923
4941
  state: "empty",
4924
4942
  size: "sm",
4925
4943
  title: __props.emptyText
@@ -4927,7 +4945,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
4927
4945
  !isPlaceholderState.value ? (openBlock(), createElementBlock("div", {
4928
4946
  key: 3,
4929
4947
  class: normalizeClass(["mint-sample-selector__select-all", { "mint-sample-selector__select-all--grouped": groupingEnabled.value }]),
4930
- onClick: _cache[1] || (_cache[1] = (...args) => unref(toggleSelectAll) && unref(toggleSelectAll)(...args))
4948
+ onClick: _cache[2] || (_cache[2] = (...args) => unref(toggleSelectAll) && unref(toggleSelectAll)(...args))
4931
4949
  }, [
4932
4950
  createVNode(BaseCheckbox_default, {
4933
4951
  "model-value": unref(isAllSelected),
@@ -4935,64 +4953,24 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
4935
4953
  size: "sm",
4936
4954
  "aria-label": "Select all samples",
4937
4955
  class: "mint-sample-selector__checkbox",
4938
- onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"])),
4956
+ onClick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"])),
4939
4957
  "onUpdate:modelValue": unref(toggleSelectAll)
4940
4958
  }, null, 8, [
4941
4959
  "model-value",
4942
4960
  "indeterminate",
4943
4961
  "onUpdate:modelValue"
4944
4962
  ]),
4945
- _cache[7] || (_cache[7] = createElementVNode("span", { class: "mint-sample-selector__select-all-label" }, "All samples", -1)),
4946
- createElementVNode("span", _hoisted_5$6, toDisplayString(selectedCount.value) + " / " + toDisplayString(resolvedSamples.value.length), 1)
4963
+ _cache[8] || (_cache[8] = createElementVNode("span", { class: "mint-sample-selector__select-all-label" }, "All samples", -1)),
4964
+ createElementVNode("span", _hoisted_10$3, toDisplayString(selectedCount.value) + "/" + toDisplayString(resolvedSamples.value.length), 1)
4947
4965
  ], 2)) : createCommentVNode("", true),
4948
- !isPlaceholderState.value && __props.enableGrouping ? (openBlock(), createElementBlock("div", _hoisted_6$5, [createElementVNode("div", _hoisted_7$5, [createVNode(BaseButton_default, {
4949
- variant: __props.enableSmartGroup && groupingEnabled.value ? "primary" : "secondary",
4950
- size: "sm",
4951
- disabled: resolvedSamples.value.length === 0,
4952
- class: "mint-sample-selector__action-btn",
4953
- onClick: _cache[2] || (_cache[2] = ($event) => openGroupingModal(groupingActionMode.value))
4954
- }, {
4955
- default: withCtx(() => [__props.enableSmartGroup ? (openBlock(), createElementBlock("svg", _hoisted_8$4, [..._cache[8] || (_cache[8] = [createElementVNode("path", {
4956
- "stroke-linecap": "round",
4957
- "stroke-linejoin": "round",
4958
- "stroke-width": "2",
4959
- d: "M13 10V3L4 14h7v7l9-11h-7z"
4960
- }, null, -1)])])) : (openBlock(), createElementBlock("svg", _hoisted_9$4, [..._cache[9] || (_cache[9] = [createElementVNode("path", {
4961
- "stroke-linecap": "round",
4962
- "stroke-linejoin": "round",
4963
- "stroke-width": "2",
4964
- d: "M12 3 3 7.5l9 4.5 9-4.5L12 3ZM3 12l9 4.5 9-4.5M3 16.5l9 4.5 9-4.5"
4965
- }, null, -1)])])), _cache[10] || (_cache[10] = createElementVNode("span", { class: "mint-sample-selector__action-label" }, "Grouping", -1))]),
4966
- _: 1
4967
- }, 8, ["variant", "disabled"]), createVNode(BaseButton_default, {
4968
- variant: "ghost",
4969
- size: "sm",
4970
- disabled: internalGroups.value.length === 0,
4971
- class: "mint-sample-selector__action-btn mint-sample-selector__action-btn--reset",
4972
- onClick: clearGroups,
4973
- title: "Clear all groups"
4974
- }, {
4975
- default: withCtx(() => [..._cache[11] || (_cache[11] = [createElementVNode("svg", {
4976
- class: "mint-sample-selector__action-icon",
4977
- fill: "none",
4978
- stroke: "currentColor",
4979
- viewBox: "0 0 24 24"
4980
- }, [createElementVNode("path", {
4981
- "stroke-linecap": "round",
4982
- "stroke-linejoin": "round",
4983
- "stroke-width": "2",
4984
- d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"
4985
- })], -1)])]),
4986
- _: 1
4987
- }, 8, ["disabled"])])])) : createCommentVNode("", true),
4988
- !isPlaceholderState.value && groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_10$3, [
4989
- createElementVNode("div", _hoisted_11$3, [createElementVNode("span", _hoisted_12$2, "Groups (" + toDisplayString(internalGroups.value.length) + ")", 1), createElementVNode("div", { class: "mint-sample-selector__groups-controls" }, [createElementVNode("button", {
4966
+ !isPlaceholderState.value && groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_11$3, [
4967
+ createElementVNode("div", _hoisted_12$2, [createElementVNode("span", _hoisted_13$2, "Groups (" + toDisplayString(internalGroups.value.length) + ")", 1), createElementVNode("div", { class: "mint-sample-selector__groups-controls" }, [createElementVNode("button", {
4990
4968
  type: "button",
4991
4969
  class: "mint-sample-selector__expand-btn",
4992
4970
  onClick: expandAllGroups,
4993
4971
  title: "Expand all",
4994
4972
  "aria-label": "Expand all groups"
4995
- }, [..._cache[12] || (_cache[12] = [createElementVNode("svg", {
4973
+ }, [..._cache[9] || (_cache[9] = [createElementVNode("svg", {
4996
4974
  class: "mint-sample-selector__expand-icon",
4997
4975
  fill: "none",
4998
4976
  stroke: "currentColor",
@@ -5008,7 +4986,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5008
4986
  onClick: collapseAllGroups,
5009
4987
  title: "Collapse all",
5010
4988
  "aria-label": "Collapse all groups"
5011
- }, [..._cache[13] || (_cache[13] = [createElementVNode("svg", {
4989
+ }, [..._cache[10] || (_cache[10] = [createElementVNode("svg", {
5012
4990
  class: "mint-sample-selector__expand-icon",
5013
4991
  fill: "none",
5014
4992
  stroke: "currentColor",
@@ -5019,15 +4997,15 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5019
4997
  "stroke-width": "2",
5020
4998
  d: "M9 5l7 7-7 7"
5021
4999
  })], -1)])])])]),
5022
- createElementVNode("div", _hoisted_13$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(groupTree), (node) => {
5000
+ createElementVNode("div", _hoisted_14$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(groupTree), (node) => {
5023
5001
  return openBlock(), createBlock(SampleSelectorGroupNode_default, {
5024
5002
  key: node.key,
5025
5003
  node,
5026
5004
  depth: 0,
5027
5005
  ctx: treeContext.value
5028
5006
  }, null, 8, ["node", "ctx"]);
5029
- }), 128)), internalGroups.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_14$2, " Click Smart to auto-group samples ")) : createCommentVNode("", true)]),
5030
- unref(ungroupedSamples).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_15$2, [createElementVNode("div", {
5007
+ }), 128)), internalGroups.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_15$2, " Click Smart to auto-group samples ")) : createCommentVNode("", true)]),
5008
+ unref(ungroupedSamples).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_16$1, [createElementVNode("div", {
5031
5009
  class: "mint-sample-selector__ungrouped-header",
5032
5010
  onClick: _cache[3] || (_cache[3] = ($event) => toggleGroupExpanded("__ungrouped__"))
5033
5011
  }, [
@@ -5036,16 +5014,16 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5036
5014
  fill: "none",
5037
5015
  stroke: "currentColor",
5038
5016
  viewBox: "0 0 24 24"
5039
- }, [..._cache[14] || (_cache[14] = [createElementVNode("path", {
5017
+ }, [..._cache[11] || (_cache[11] = [createElementVNode("path", {
5040
5018
  "stroke-linecap": "round",
5041
5019
  "stroke-linejoin": "round",
5042
5020
  "stroke-width": "2",
5043
5021
  d: "M9 5l7 7-7 7"
5044
5022
  }, null, -1)])], 2)),
5045
- _cache[15] || (_cache[15] = createElementVNode("span", { class: "mint-sample-selector__ungrouped-label" }, "Ungrouped", -1)),
5046
- createElementVNode("span", _hoisted_16$1, toDisplayString(unref(ungroupedSamples).length), 1)
5023
+ _cache[12] || (_cache[12] = createElementVNode("span", { class: "mint-sample-selector__ungrouped-label" }, "Ungrouped", -1)),
5024
+ createElementVNode("span", _hoisted_17$1, toDisplayString(unref(ungroupedSamples).length), 1)
5047
5025
  ]), createVNode(Transition, { name: "mint-collapse" }, {
5048
- default: withCtx(() => [isGroupExpanded("__ungrouped__") ? (openBlock(), createElementBlock("div", _hoisted_17$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ungroupedSamples), (sample) => {
5026
+ default: withCtx(() => [isGroupExpanded("__ungrouped__") ? (openBlock(), createElementBlock("div", _hoisted_18$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ungroupedSamples), (sample) => {
5049
5027
  return openBlock(), createBlock(SampleSelectorSampleRow_default, {
5050
5028
  key: sample,
5051
5029
  sample,
@@ -5065,7 +5043,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5065
5043
  }), 128))])) : createCommentVNode("", true)]),
5066
5044
  _: 1
5067
5045
  })])) : createCommentVNode("", true),
5068
- createElementVNode("div", _hoisted_18$1, [createVNode(BaseInput_default, {
5046
+ createElementVNode("div", _hoisted_19$1, [createVNode(BaseInput_default, {
5069
5047
  modelValue: newGroupName.value,
5070
5048
  "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => newGroupName.value = $event),
5071
5049
  placeholder: "New group name...",
@@ -5078,7 +5056,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5078
5056
  class: "mint-sample-selector__new-group-btn",
5079
5057
  onClick: addNewGroup
5080
5058
  }, {
5081
- default: withCtx(() => [..._cache[16] || (_cache[16] = [createTextVNode(" Add ", -1)])]),
5059
+ default: withCtx(() => [..._cache[13] || (_cache[13] = [createTextVNode(" Add ", -1)])]),
5082
5060
  _: 1
5083
5061
  }, 8, ["disabled"])]),
5084
5062
  createElementVNode("input", {
@@ -5088,9 +5066,9 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5088
5066
  class: "mint-sample-selector__color-input",
5089
5067
  value: colorPickerSeed.value,
5090
5068
  onChange: handleColorChange
5091
- }, null, 40, _hoisted_19$1)
5069
+ }, null, 40, _hoisted_20$1)
5092
5070
  ])) : createCommentVNode("", true),
5093
- !isPlaceholderState.value && !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_20$1, [createElementVNode("div", _hoisted_21, [_cache[17] || (_cache[17] = createElementVNode("svg", {
5071
+ !isPlaceholderState.value && !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_21, [createElementVNode("div", _hoisted_22, [_cache[14] || (_cache[14] = createElementVNode("svg", {
5094
5072
  class: "mint-sample-selector__search-icon",
5095
5073
  fill: "none",
5096
5074
  stroke: "currentColor",
@@ -5105,7 +5083,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5105
5083
  type: "text",
5106
5084
  placeholder: "Search samples...",
5107
5085
  class: "mint-sample-selector__search-input"
5108
- }, null, 512), [[vModelText, searchQuery.value]])]), createElementVNode("div", _hoisted_22, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(filteredSamples), (sample) => {
5086
+ }, null, 512), [[vModelText, searchQuery.value]])]), createElementVNode("div", _hoisted_23, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(filteredSamples), (sample) => {
5109
5087
  return openBlock(), createElementBlock("div", {
5110
5088
  key: sample,
5111
5089
  class: "mint-sample-selector__flat-item",
@@ -5121,8 +5099,8 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5121
5099
  "model-value",
5122
5100
  "aria-label",
5123
5101
  "onUpdate:modelValue"
5124
- ]), createElementVNode("span", _hoisted_24, toDisplayString(sample), 1)], 8, _hoisted_23);
5125
- }), 128)), unref(filteredSamples).length === 0 && searchQuery.value.trim() ? (openBlock(), createElementBlock("div", _hoisted_25, " No samples match \"" + toDisplayString(searchQuery.value) + "\" ", 1)) : createCommentVNode("", true)])])) : createCommentVNode("", true),
5102
+ ]), createElementVNode("span", _hoisted_25, toDisplayString(sample), 1)], 8, _hoisted_24);
5103
+ }), 128)), unref(filteredSamples).length === 0 && searchQuery.value.trim() ? (openBlock(), createElementBlock("div", _hoisted_26, " No samples match \"" + toDisplayString(searchQuery.value) + "\" ", 1)) : createCommentVNode("", true)])])) : createCommentVNode("", true),
5126
5104
  createVNode(AutoGroupModalInternal_default, {
5127
5105
  open: showSmartGroupModal.value,
5128
5106
  "onUpdate:open": _cache[6] || (_cache[6] = ($event) => showSmartGroupModal.value = $event),
@@ -6166,8 +6144,8 @@ var _hoisted_6$4 = {
6166
6144
  class: "mint-protocol-editor__preview"
6167
6145
  };
6168
6146
  var _hoisted_7$4 = { class: "mint-protocol-editor__preview-card" };
6169
- var _hoisted_8$3 = { class: "mint-protocol-editor__preview-icon" };
6170
- var _hoisted_9$3 = {
6147
+ var _hoisted_8$4 = { class: "mint-protocol-editor__preview-icon" };
6148
+ var _hoisted_9$4 = {
6171
6149
  fill: "none",
6172
6150
  stroke: "currentColor",
6173
6151
  viewBox: "0 0 24 24"
@@ -6372,7 +6350,7 @@ var ProtocolStepEditor_default = /* @__PURE__ */ defineComponent({
6372
6350
  }, 8, ["html-for"])
6373
6351
  ]),
6374
6352
  __props.showPreview && previewStep.value ? (openBlock(), createElementBlock("div", _hoisted_6$4, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "mint-protocol-editor__preview-title" }, "Preview", -1)), createElementVNode("div", _hoisted_7$4, [
6375
- createElementVNode("div", _hoisted_8$3, [(openBlock(), createElementBlock("svg", _hoisted_9$3, [createElementVNode("path", {
6353
+ createElementVNode("div", _hoisted_8$4, [(openBlock(), createElementBlock("svg", _hoisted_9$4, [createElementVNode("path", {
6376
6354
  "stroke-linecap": "round",
6377
6355
  "stroke-linejoin": "round",
6378
6356
  "stroke-width": "2",
@@ -6431,11 +6409,11 @@ var _hoisted_7$3 = {
6431
6409
  key: 3,
6432
6410
  class: "mint-sci-number__plain"
6433
6411
  };
6434
- var _hoisted_8$2 = {
6412
+ var _hoisted_8$3 = {
6435
6413
  key: 4,
6436
6414
  class: "mint-sci-number__unit"
6437
6415
  };
6438
- var _hoisted_9$2 = {
6416
+ var _hoisted_9$3 = {
6439
6417
  key: 0,
6440
6418
  width: "14",
6441
6419
  height: "14",
@@ -6582,7 +6560,7 @@ var ScientificNumber_default = /* @__PURE__ */ defineComponent({
6582
6560
  "aria-hidden": "true"
6583
6561
  }, null, 8, _hoisted_4$5)
6584
6562
  ], 64)) : formatted.value.type === "compact" ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createElementVNode("span", _hoisted_5$4, toDisplayString(formatted.value.plain), 1), formatted.value.suffix ? (openBlock(), createElementBlock("span", _hoisted_6$3, toDisplayString(formatted.value.suffix), 1)) : createCommentVNode("", true)], 64)) : (openBlock(), createElementBlock("span", _hoisted_7$3, toDisplayString(formatted.value.plain), 1)),
6585
- __props.unit ? (openBlock(), createElementBlock("span", _hoisted_8$2, toDisplayString(__props.unit), 1)) : createCommentVNode("", true),
6563
+ __props.unit ? (openBlock(), createElementBlock("span", _hoisted_8$3, toDisplayString(__props.unit), 1)) : createCommentVNode("", true),
6586
6564
  __props.copyable ? (openBlock(), createElementBlock("button", {
6587
6565
  key: 5,
6588
6566
  class: normalizeClass(["mint-sci-number__copy-btn", { "mint-sci-number__copy-btn--copied": copied.value }]),
@@ -6590,7 +6568,7 @@ var ScientificNumber_default = /* @__PURE__ */ defineComponent({
6590
6568
  title: "Copy value",
6591
6569
  "aria-label": "Copy value",
6592
6570
  onClick: withModifiers(copyToClipboard, ["stop"])
6593
- }, [!copied.value ? (openBlock(), createElementBlock("svg", _hoisted_9$2, [..._cache[2] || (_cache[2] = [createElementVNode("rect", {
6571
+ }, [!copied.value ? (openBlock(), createElementBlock("svg", _hoisted_9$3, [..._cache[2] || (_cache[2] = [createElementVNode("rect", {
6594
6572
  x: "9",
6595
6573
  y: "9",
6596
6574
  width: "13",
@@ -6620,7 +6598,7 @@ var AdductText_default = /* @__PURE__ */ defineComponent({
6620
6598
  variant: { default: "inline" },
6621
6599
  tone: { default: "default" },
6622
6600
  size: { default: "xs" },
6623
- font: { default: "mono" }
6601
+ font: { default: "sans" }
6624
6602
  },
6625
6603
  setup(__props) {
6626
6604
  /** Compact, overflow-safe display for mass-spectrometry adduct notation. */
@@ -6678,11 +6656,11 @@ var _hoisted_7$2 = {
6678
6656
  key: 5,
6679
6657
  class: "mint-chem-formula__charge"
6680
6658
  };
6681
- var _hoisted_8$1 = {
6659
+ var _hoisted_8$2 = {
6682
6660
  key: 6,
6683
6661
  class: "mint-chem-formula__element mint-chem-formula__coefficient"
6684
6662
  };
6685
- var _hoisted_9$1 = { key: 1 };
6663
+ var _hoisted_9$2 = { key: 1 };
6686
6664
  //#endregion
6687
6665
  //#region src/components/ChemicalFormula.vue
6688
6666
  var ChemicalFormula_default = /* @__PURE__ */ defineComponent({
@@ -6726,7 +6704,7 @@ var ChemicalFormula_default = /* @__PURE__ */ defineComponent({
6726
6704
  }, {
6727
6705
  default: withCtx(() => [formula.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
6728
6706
  createElementVNode("span", _hoisted_1$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(getParts(formula.value), (part, i) => {
6729
- return openBlock(), createElementBlock(Fragment, { key: i }, [part.type === "element" ? (openBlock(), createElementBlock("span", _hoisted_2$4, toDisplayString(part.text), 1)) : part.type === "subscript" ? (openBlock(), createElementBlock("span", _hoisted_3$4, toDisplayString(part.text), 1)) : part.type === "superscript" ? (openBlock(), createElementBlock("span", _hoisted_4$4, toDisplayString(part.text), 1)) : part.type === "paren" ? (openBlock(), createElementBlock("span", _hoisted_5$3, toDisplayString(part.text), 1)) : part.type === "dot" ? (openBlock(), createElementBlock("span", _hoisted_6$2, toDisplayString(part.text), 1)) : part.type === "charge" ? (openBlock(), createElementBlock("span", _hoisted_7$2, toDisplayString(part.text), 1)) : part.type === "coefficient" ? (openBlock(), createElementBlock("span", _hoisted_8$1, toDisplayString(part.text), 1)) : createCommentVNode("", true)], 64);
6707
+ return openBlock(), createElementBlock(Fragment, { key: i }, [part.type === "element" ? (openBlock(), createElementBlock("span", _hoisted_2$4, toDisplayString(part.text), 1)) : part.type === "subscript" ? (openBlock(), createElementBlock("span", _hoisted_3$4, toDisplayString(part.text), 1)) : part.type === "superscript" ? (openBlock(), createElementBlock("span", _hoisted_4$4, toDisplayString(part.text), 1)) : part.type === "paren" ? (openBlock(), createElementBlock("span", _hoisted_5$3, toDisplayString(part.text), 1)) : part.type === "dot" ? (openBlock(), createElementBlock("span", _hoisted_6$2, toDisplayString(part.text), 1)) : part.type === "charge" ? (openBlock(), createElementBlock("span", _hoisted_7$2, toDisplayString(part.text), 1)) : part.type === "coefficient" ? (openBlock(), createElementBlock("span", _hoisted_8$2, toDisplayString(part.text), 1)) : createCommentVNode("", true)], 64);
6730
6708
  }), 128))]),
6731
6709
  __props.adduct ? (openBlock(), createBlock(AdductText_default, {
6732
6710
  key: 0,
@@ -6734,7 +6712,7 @@ var ChemicalFormula_default = /* @__PURE__ */ defineComponent({
6734
6712
  size: "inherit"
6735
6713
  }, null, 8, ["value"])) : createCommentVNode("", true),
6736
6714
  renderSlot(_ctx.$slots, "default")
6737
- ], 64)) : (openBlock(), createElementBlock("span", _hoisted_9$1, toDisplayString(__props.emptyText), 1))]),
6715
+ ], 64)) : (openBlock(), createElementBlock("span", _hoisted_9$2, toDisplayString(__props.emptyText), 1))]),
6738
6716
  _: 3
6739
6717
  }, 8, ["class", "title"]);
6740
6718
  };
@@ -6808,16 +6786,21 @@ function clamp(value, min, max) {
6808
6786
  var _hoisted_1$3 = { class: "mint-sequence-progress" };
6809
6787
  var _hoisted_2$3 = { class: "mint-sequence-progress__header" };
6810
6788
  var _hoisted_3$3 = { class: "mint-sequence-progress__label" };
6811
- var _hoisted_4$3 = { class: "mint-sequence-progress__percent" };
6789
+ var _hoisted_4$3 = { class: "mint-sequence-progress__count" };
6812
6790
  var _hoisted_5$2 = {
6791
+ key: 0,
6792
+ class: "mint-sequence-progress__failed"
6793
+ };
6794
+ var _hoisted_6$1 = { class: "mint-sequence-progress__percent" };
6795
+ var _hoisted_7$1 = {
6813
6796
  key: 0,
6814
6797
  class: "mint-sequence-progress__footer"
6815
6798
  };
6816
- var _hoisted_6$1 = {
6799
+ var _hoisted_8$1 = {
6817
6800
  key: 0,
6818
6801
  class: "mint-sequence-progress__remaining"
6819
6802
  };
6820
- var _hoisted_7$1 = {
6803
+ var _hoisted_9$1 = {
6821
6804
  key: 1,
6822
6805
  class: "mint-sequence-progress__eta"
6823
6806
  };
@@ -6839,7 +6822,8 @@ var SequenceProgressBar_default = /* @__PURE__ */ defineComponent({
6839
6822
  showRemaining: {
6840
6823
  type: Boolean,
6841
6824
  default: true
6842
- }
6825
+ },
6826
+ failed: { default: 0 }
6843
6827
  },
6844
6828
  setup(__props) {
6845
6829
  /** Displays LC/MS or GC/MS acquisition sequence progress with ETA and remaining-time labels. */
@@ -6853,13 +6837,17 @@ var SequenceProgressBar_default = /* @__PURE__ */ defineComponent({
6853
6837
  });
6854
6838
  return (_ctx, _cache) => {
6855
6839
  return openBlock(), createElementBlock("div", _hoisted_1$3, [
6856
- createElementVNode("div", _hoisted_2$3, [createElementVNode("span", _hoisted_3$3, toDisplayString(__props.progress.current_sample) + " / " + toDisplayString(__props.progress.total_samples) + " " + toDisplayString(__props.label), 1), createElementVNode("span", _hoisted_4$3, toDisplayString(percent.value) + "%", 1)]),
6840
+ createElementVNode("div", _hoisted_2$3, [
6841
+ createElementVNode("span", _hoisted_3$3, [createElementVNode("span", _hoisted_4$3, toDisplayString(__props.progress.current_sample) + " / " + toDisplayString(__props.progress.total_samples), 1), createTextVNode(" " + toDisplayString(__props.label), 1)]),
6842
+ __props.failed > 0 ? (openBlock(), createElementBlock("span", _hoisted_5$2, toDisplayString(__props.failed) + " failed", 1)) : createCommentVNode("", true),
6843
+ createElementVNode("span", _hoisted_6$1, toDisplayString(percent.value) + "%", 1)
6844
+ ]),
6857
6845
  createVNode(ProgressBar_default, {
6858
6846
  value: percent.value,
6859
6847
  size: "sm",
6860
6848
  "aria-label": "Sequence progress"
6861
6849
  }, null, 8, ["value"]),
6862
- hasFooter.value ? (openBlock(), createElementBlock("div", _hoisted_5$2, [__props.showRemaining && remainingLabel.value ? (openBlock(), createElementBlock("span", _hoisted_6$1, toDisplayString(remainingLabel.value), 1)) : createCommentVNode("", true), __props.showEta && etaLabel.value ? (openBlock(), createElementBlock("span", _hoisted_7$1, " ETA " + toDisplayString(etaLabel.value), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true)
6850
+ hasFooter.value ? (openBlock(), createElementBlock("div", _hoisted_7$1, [__props.showRemaining && remainingLabel.value ? (openBlock(), createElementBlock("span", _hoisted_8$1, toDisplayString(remainingLabel.value), 1)) : createCommentVNode("", true), __props.showEta && etaLabel.value ? (openBlock(), createElementBlock("span", _hoisted_9$1, " ETA " + toDisplayString(etaLabel.value), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true)
6863
6851
  ]);
6864
6852
  };
6865
6853
  }
@@ -6882,7 +6870,7 @@ var InstrumentStateBadge_default = /* @__PURE__ */ defineComponent({
6882
6870
  const stateConfig = {
6883
6871
  running: {
6884
6872
  label: "Running",
6885
- tone: "info"
6873
+ tone: "success"
6886
6874
  },
6887
6875
  standby: {
6888
6876
  label: "Standby",
@@ -7510,4 +7498,4 @@ var lab_exports = /* @__PURE__ */ __exportAll({
7510
7498
  //#endregion
7511
7499
  export { defineWellPlateControlProps as C, BaseTabs_default as D, BasePill_default as E, defineDoseDesignControlModel as S, defineWellPlateDoseControlProps as T, SampleSelector_default as _, useReagentSeries as a, ProgressBar_default as b, InstrumentStatusPanels_default as c, ChemicalFormula_default as d, AdductText_default as f, SampleHierarchyTree_default as g, useProtocolTemplates as h, generateDilutionSeries as i, InstrumentStateBadge_default as l, ProtocolStepEditor_default as m, DEFAULT_PRESETS as n, ResourceCard_default as o, ScientificNumber_default as p, DEFAULT_UNITS as r, TimeRangeInput_default as s, lab_exports as t, SequenceProgressBar_default as u, useSampleGroups as v, defineWellPlateDoseComponentBindings as w, defineDoseCalculatorControlProps as x, SectionCard_default as y };
7512
7500
 
7513
- //# sourceMappingURL=lab-DLwRl_Ql.js.map
7501
+ //# sourceMappingURL=lab-D61eaX6f.js.map