@morscherlab/mint-sdk 1.4.0-beta.7 → 1.4.0-beta.9

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 (257) hide show
  1. package/dist/{ActionMenu-CScINahU.js → AlertBox-B2Bgr3ei.js} +40 -209
  2. package/dist/AlertBox-B2Bgr3ei.js.map +1 -0
  3. package/dist/{AppSidebar-BmiiPfz9.js → AppSidebar-Dq9W1jE2.js} +160 -109
  4. package/dist/AppSidebar-Dq9W1jE2.js.map +1 -0
  5. package/dist/{ConfirmDialog-CJ7hqYUP.js → ConfirmDialog-nbJj51is.js} +2 -2
  6. package/dist/{ConfirmDialog-CJ7hqYUP.js.map → ConfirmDialog-nbJj51is.js.map} +1 -1
  7. package/dist/ExperimentPopover-5T1fAq2L.js +337 -0
  8. package/dist/ExperimentPopover-5T1fAq2L.js.map +1 -0
  9. package/dist/{ExperimentSelectorModal-D-9z7cNx.js → ExperimentSelectorModal-65peG4Up.js} +198 -181
  10. package/dist/ExperimentSelectorModal-65peG4Up.js.map +1 -0
  11. package/dist/{SegmentedControl-DERBN-Xd.js → SegmentedControl-BtnnjWzs.js} +2 -2
  12. package/dist/{SegmentedControl-DERBN-Xd.js.map → SegmentedControl-BtnnjWzs.js.map} +1 -1
  13. package/dist/{SettingsModal-CSLE31yg.js → SettingsModal-483nyI6b.js} +9 -9
  14. package/dist/SettingsModal-483nyI6b.js.map +1 -0
  15. package/dist/components/AppSidebar.vue.d.ts +1 -1
  16. package/dist/components/ArtifactSaveDialog.vue.d.ts +9 -1
  17. package/dist/components/AuditTrail.vue.d.ts +1 -1
  18. package/dist/components/BaseSelect.vue.d.ts +2 -2
  19. package/dist/components/ChartContainer.vue.d.ts +2 -0
  20. package/dist/components/DatePicker.vue.d.ts +1 -1
  21. package/dist/components/ExperimentPopover.vue.d.ts +18 -0
  22. package/dist/components/ExperimentSelectorModal.vue.d.ts +0 -4
  23. package/dist/components/FilePicker.vue.d.ts +1 -1
  24. package/dist/components/FileUploader.vue.d.ts +2 -2
  25. package/dist/components/PluginIcon.vue.d.ts +2 -2
  26. package/dist/components/SampleSelector.vue.d.ts +6 -6
  27. package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
  28. package/dist/components/StepWizard.vue.d.ts +3 -0
  29. package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +1 -1
  30. package/dist/components/internal/DatePickerTimeInternal.vue.d.ts +1 -1
  31. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +2 -7
  32. package/dist/components/internal/SelectMultipleInternal.vue.d.ts +4 -0
  33. package/dist/composables/createClient.d.ts +2 -0
  34. package/dist/composables/index.d.ts +1 -0
  35. package/dist/composables/pluginIdentity.d.ts +24 -0
  36. package/dist/composables/useAppExperiment.d.ts +8 -0
  37. package/dist/composables/useCalendarGrid.d.ts +1 -1
  38. package/dist/composables/useExperimentSelector.d.ts +6 -2
  39. package/dist/composables/usePlatform.d.ts +1 -0
  40. package/dist/{controlSchemaModel-CP5-_nAj.js → controlSchemaModel-B8CTXagP.js} +2 -2
  41. package/dist/{controlSchemaModel-CP5-_nAj.js.map → controlSchemaModel-B8CTXagP.js.map} +1 -1
  42. package/dist/{data-C2PwI_dn.js → data-CgILxDLW.js} +178 -124
  43. package/dist/data-CgILxDLW.js.map +1 -0
  44. package/dist/data.js +8 -8
  45. package/dist/{experimentStatus-BZmU4czV.js → experimentStatus-Cqp6qNrR.js} +3 -3
  46. package/dist/{experimentStatus-BZmU4czV.js.map → experimentStatus-Cqp6qNrR.js.map} +1 -1
  47. package/dist/index.js +19 -19
  48. package/dist/{install-DAID6c2-.js → install-BtLWTk6H.js} +15 -14
  49. package/dist/{install-DAID6c2-.js.map → install-BtLWTk6H.js.map} +1 -1
  50. package/dist/install.js +1 -1
  51. package/dist/{lab-DLwRl_Ql.js → lab-MHzp-_J8.js} +128 -147
  52. package/dist/lab-MHzp-_J8.js.map +1 -0
  53. package/dist/lab.js +4 -3
  54. package/dist/{records-BzTcxekG.js → records-B6gpM_3e.js} +472 -274
  55. package/dist/records-B6gpM_3e.js.map +1 -0
  56. package/dist/{runtime-D6gVat6r.js → runtime-7vfl_bI3.js} +27 -31
  57. package/dist/runtime-7vfl_bI3.js.map +1 -0
  58. package/dist/runtime.js +6 -6
  59. package/dist/{shell-5ju97nOS.js → shell-Cs9OJMnm.js} +5 -5
  60. package/dist/{shell-5ju97nOS.js.map → shell-Cs9OJMnm.js.map} +1 -1
  61. package/dist/shell.js +5 -5
  62. package/dist/styles.css +1606 -1666
  63. package/dist/types/componentWorkflowTypes.d.ts +2 -0
  64. package/dist/types/generated/platformContext.d.ts +1 -0
  65. package/dist/types/generated-ui.d.ts +4 -0
  66. package/dist/{BaseModal-DfRIuVoj.js → useDropdownState-8yWMu-7_.js} +60 -2
  67. package/dist/useDropdownState-8yWMu-7_.js.map +1 -0
  68. package/dist/{useExperimentSamples-CxcnxZ8h.js → useExperimentSamples-DHnxKFAF.js} +3 -3
  69. package/dist/{useExperimentSamples-CxcnxZ8h.js.map → useExperimentSamples-DHnxKFAF.js.map} +1 -1
  70. package/dist/{useListReorder-CcbEYxX-.js → useListReorder-BitdUhxn.js} +109 -277
  71. package/dist/useListReorder-BitdUhxn.js.map +1 -0
  72. package/dist/{useRackEditor-BD5NIo5s.js → useRackEditor-DiwCt77M.js} +71 -57
  73. package/dist/useRackEditor-DiwCt77M.js.map +1 -0
  74. package/dist/{useRealtime-PalKue84.js → useRealtime-C3iy9QkU.js} +7 -4
  75. package/dist/useRealtime-C3iy9QkU.js.map +1 -0
  76. package/dist/useRequest-D506eHi8.js +244 -0
  77. package/dist/useRequest-D506eHi8.js.map +1 -0
  78. package/dist/utils/time.d.ts +7 -0
  79. package/package.json +1 -1
  80. package/src/__tests__/components/AppTopBar.test.ts +51 -2
  81. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  82. package/src/__tests__/components/ArtifactSaveDialog.test.ts +78 -0
  83. package/src/__tests__/components/BaseSelect.multiple.test.ts +87 -32
  84. package/src/__tests__/components/BaseSelect.test.ts +2 -1
  85. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  86. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  87. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  88. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  89. package/src/__tests__/components/DatePicker.datetime.test.ts +6 -0
  90. package/src/__tests__/components/DatePicker.test.ts +21 -0
  91. package/src/__tests__/components/DatePicker.time.test.ts +2 -2
  92. package/src/__tests__/components/EmptyState.test.ts +1 -1
  93. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  94. package/src/__tests__/components/ExperimentSelectorModal.test.ts +119 -13
  95. package/src/__tests__/components/GeneratedPluginView.test.ts +22 -1
  96. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  97. package/src/__tests__/components/ResourcePickerListInternal.test.ts +0 -20
  98. package/src/__tests__/components/SampleSelector.test.ts +13 -8
  99. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  100. package/src/__tests__/components/StepWizard.test.ts +11 -0
  101. package/src/__tests__/components/WellPlate.decoration.test.ts +11 -4
  102. package/src/__tests__/components/deprecationTags.test.ts +1 -1
  103. package/src/__tests__/composables/useAppExperiment.test.ts +27 -1
  104. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  105. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  106. package/src/__tests__/styles/baseControlsRules.test.ts +6 -2
  107. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  108. package/src/__tests__/styles/cssTokens.test.ts +2 -2
  109. package/src/__tests__/styles/menusShellRefresh.test.ts +14 -10
  110. package/src/__tests__/utils/plotlyTemplate.test.ts +4 -4
  111. package/src/__tests__/utils/time.test.ts +18 -1
  112. package/src/components/AdductText.story.vue +7 -0
  113. package/src/components/AdductText.vue +1 -1
  114. package/src/components/AlertBox.story.vue +2 -2
  115. package/src/components/AlertBox.vue +18 -16
  116. package/src/components/AppSidebar.story.vue +0 -28
  117. package/src/components/AppTopBar.story.vue +47 -12
  118. package/src/components/AppTopBar.vue +118 -114
  119. package/src/components/ArtifactSaveDialog.story.vue +23 -0
  120. package/src/components/ArtifactSaveDialog.vue +102 -12
  121. package/src/components/AuditTrail.story.vue +2 -1
  122. package/src/components/AuditTrail.vue +2 -21
  123. package/src/components/Avatar.vue +10 -14
  124. package/src/components/BaseSelect.multiple.story.vue +13 -2
  125. package/src/components/BaseSelect.vue +4 -3
  126. package/src/components/BatchProgressList.vue +35 -25
  127. package/src/components/ChartContainer.story.vue +2 -1
  128. package/src/components/ChartContainer.vue +8 -6
  129. package/src/components/ConfirmDialog.story.vue +1 -1
  130. package/src/components/EmptyState.vue +1 -1
  131. package/src/components/ExperimentPopover.story.vue +165 -53
  132. package/src/components/ExperimentPopover.vue +169 -187
  133. package/src/components/ExperimentSelectorModal.story.vue +40 -36
  134. package/src/components/ExperimentSelectorModal.vue +124 -110
  135. package/src/components/FormField.story.vue +8 -48
  136. package/src/components/GeneratedPluginView.vue +7 -1
  137. package/src/components/InstrumentStateBadge.vue +1 -1
  138. package/src/components/JobsStatusTray.vue +1 -1
  139. package/src/components/LoadingSpinner.vue +1 -1
  140. package/src/components/NumberInput.vue +3 -6
  141. package/src/components/PluginIcon.story.vue +2 -10
  142. package/src/components/PluginIcon.vue +2 -2
  143. package/src/components/PluginWorkspaceView.story.vue +1 -1
  144. package/src/components/RuntimeUpdateNotice.vue +1 -1
  145. package/src/components/SampleSelector.story.vue +1 -1
  146. package/src/components/SampleSelector.vue +27 -37
  147. package/src/components/SampleSelectorGroupNode.vue +1 -1
  148. package/src/components/SectionCard.story.vue +2 -2
  149. package/src/components/SequenceProgressBar.story.vue +9 -0
  150. package/src/components/SequenceProgressBar.vue +6 -1
  151. package/src/components/SettingsModal.schema.ts +1 -1
  152. package/src/components/SettingsModal.vue +2 -2
  153. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  154. package/src/components/SmartGroupManual.story.vue +1 -1
  155. package/src/components/StepWizard.story.vue +33 -0
  156. package/src/components/StepWizard.vue +8 -1
  157. package/src/components/WellPlate.story.vue +3 -1
  158. package/src/components/WellPlate.vue +7 -0
  159. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  160. package/src/components/internal/DatePickerDateInternal.vue +16 -40
  161. package/src/components/internal/DatePickerDateTimeInternal.vue +3 -13
  162. package/src/components/internal/DatePickerTimeInternal.vue +5 -8
  163. package/src/components/internal/ResourcePickerListInternal.vue +45 -85
  164. package/src/components/internal/SelectMultipleInternal.vue +182 -65
  165. package/src/components/internal/SelectSearchableInternal.vue +2 -3
  166. package/src/composables/createClient.ts +2 -0
  167. package/src/composables/index.ts +1 -0
  168. package/src/composables/pluginIdentity.ts +31 -0
  169. package/src/composables/useAppExperiment.ts +20 -0
  170. package/src/composables/useCalendarGrid.ts +4 -3
  171. package/src/composables/useExperimentSelector.ts +77 -31
  172. package/src/styles/components/adduct-text.css +13 -5
  173. package/src/styles/components/alert-box.css +39 -58
  174. package/src/styles/components/app-layout.css +6 -5
  175. package/src/styles/components/app-page-selector.css +3 -1
  176. package/src/styles/components/app-pill-nav.css +11 -12
  177. package/src/styles/components/app-sidebar.css +9 -18
  178. package/src/styles/components/app-top-bar.css +57 -55
  179. package/src/styles/components/artifact-save-dialog.css +153 -2
  180. package/src/styles/components/audit-trail.css +16 -19
  181. package/src/styles/components/avatar.css +6 -4
  182. package/src/styles/components/batch-progress-list.css +38 -36
  183. package/src/styles/components/button.css +28 -59
  184. package/src/styles/components/calendar.css +12 -12
  185. package/src/styles/components/chart-container.css +34 -23
  186. package/src/styles/components/checkbox.css +2 -12
  187. package/src/styles/components/collapsible-card.css +27 -29
  188. package/src/styles/components/confirm-dialog.css +13 -14
  189. package/src/styles/components/dataframe.css +12 -4
  190. package/src/styles/components/date-picker.css +80 -92
  191. package/src/styles/components/datetime-picker.css +31 -43
  192. package/src/styles/components/divider.css +20 -20
  193. package/src/styles/components/dose-calculator.css +3 -3
  194. package/src/styles/components/empty-state.css +20 -17
  195. package/src/styles/components/experiment-code-badge.css +2 -0
  196. package/src/styles/components/experiment-popover.css +174 -329
  197. package/src/styles/components/experiment-selector-modal.css +75 -56
  198. package/src/styles/components/file-picker.css +3 -3
  199. package/src/styles/components/file-uploader.css +38 -49
  200. package/src/styles/components/form-builder.css +3 -3
  201. package/src/styles/components/formula-input.css +1 -1
  202. package/src/styles/components/icon-button.css +18 -24
  203. package/src/styles/components/input.css +5 -4
  204. package/src/styles/components/instrument-monitor.css +13 -15
  205. package/src/styles/components/jobs-status-tray.css +31 -25
  206. package/src/styles/components/modal.css +2 -4
  207. package/src/styles/components/molecule-input.css +2 -2
  208. package/src/styles/components/multi-select.css +65 -117
  209. package/src/styles/components/number-input.css +26 -19
  210. package/src/styles/components/pill.css +3 -2
  211. package/src/styles/components/plate-editor.css +0 -1
  212. package/src/styles/components/plugin-icon.css +26 -23
  213. package/src/styles/components/popover.css +2 -2
  214. package/src/styles/components/presence-avatars.css +1 -1
  215. package/src/styles/components/protocol-step-editor.css +1 -3
  216. package/src/styles/components/resource-card.css +2 -2
  217. package/src/styles/components/resource-picker-list.css +6 -57
  218. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  219. package/src/styles/components/sample-selector.css +95 -79
  220. package/src/styles/components/schedule-calendar.css +8 -8
  221. package/src/styles/components/searchable-select.css +12 -12
  222. package/src/styles/components/section-card.css +28 -47
  223. package/src/styles/components/segmented-control.css +18 -15
  224. package/src/styles/components/select.css +3 -3
  225. package/src/styles/components/sequence-input.css +2 -2
  226. package/src/styles/components/sequence-progress-bar.css +17 -8
  227. package/src/styles/components/smart-group.css +18 -18
  228. package/src/styles/components/step-wizard.css +52 -16
  229. package/src/styles/components/tabs.css +2 -2
  230. package/src/styles/components/textarea.css +3 -3
  231. package/src/styles/components/time-picker.css +36 -21
  232. package/src/styles/components/toast.css +12 -10
  233. package/src/styles/components/toggle.css +1 -11
  234. package/src/styles/components/tooltip.css +10 -9
  235. package/src/styles/components/unit-input.css +8 -7
  236. package/src/styles/components/well-plate.css +9 -2
  237. package/src/styles/variables.css +106 -75
  238. package/src/types/componentWorkflowTypes.ts +2 -0
  239. package/src/types/generated/platformContext.ts +1 -0
  240. package/src/types/generated-ui.ts +4 -0
  241. package/src/utils/time.ts +21 -0
  242. package/dist/ActionMenu-CScINahU.js.map +0 -1
  243. package/dist/AppSidebar-BmiiPfz9.js.map +0 -1
  244. package/dist/BaseModal-DfRIuVoj.js.map +0 -1
  245. package/dist/ExperimentPopover-C4sGw-is.js +0 -359
  246. package/dist/ExperimentPopover-C4sGw-is.js.map +0 -1
  247. package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +0 -1
  248. package/dist/SettingsModal-CSLE31yg.js.map +0 -1
  249. package/dist/data-C2PwI_dn.js.map +0 -1
  250. package/dist/lab-DLwRl_Ql.js.map +0 -1
  251. package/dist/records-BzTcxekG.js.map +0 -1
  252. package/dist/runtime-D6gVat6r.js.map +0 -1
  253. package/dist/useListReorder-CcbEYxX-.js.map +0 -1
  254. package/dist/useRackEditor-BD5NIo5s.js.map +0 -1
  255. package/dist/useRealtime-PalKue84.js.map +0 -1
  256. package/dist/useRequest-D5JDfsgZ.js +0 -76
  257. 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";
1
+ import { a as BaseButton_default, n as BaseModal_default, o as __exportAll } from "./useDropdownState-8yWMu-7_.js";
2
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";
3
+ import { D as compareTime, G as BaseInput_default, H as useListSelection, I as FormField_default, O as durationMinutes, P as time_exports, R as useRovingFocus, V as BaseSelect_default, W as normalizeOptionInput, z as BaseCheckbox_default } from "./records-B6gpM_3e.js";
4
+ import { C as useSequenceUtils, E as renderFormulaParts, L as definePlateEditor, N as NumberInput_default, O as _plugin_vue_export_helper_default, P as DatePicker_default, S as SequenceInput_default, T as formula_exports, 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, z as defineWellPlate } from "./useListReorder-BitdUhxn.js";
5
+ import { t as SegmentedControl_default } from "./SegmentedControl-BtnnjWzs.js";
6
+ import { n as DataStateInternal_default, o as useTextSearch, r as LoadingSpinner_default, t as AlertBox_default } from "./AlertBox-B2Bgr3ei.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-DiwCt77M.js";
8
+ import { n as ActionMenu_default } from "./useRequest-D506eHi8.js";
9
+ import { t as defineControlModel } from "./controlSchemaModel-B8CTXagP.js";
10
+ import { i as readFileAsText, t as useExperimentSamples, u as unwrapExperimentDesignData } from "./useExperimentSamples-DHnxKFAF.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
  };
@@ -654,7 +656,7 @@ var _hoisted_23$2 = {
654
656
  class: "fr-row__hint"
655
657
  };
656
658
  var _hoisted_24$2 = { class: "sg-recipe" };
657
- var _hoisted_25$2 = ["data-field"];
659
+ var _hoisted_25$1 = ["data-field"];
658
660
  var _hoisted_26$1 = { class: "sg-field__name" };
659
661
  var _hoisted_27$1 = { class: "sg-field__vals" };
660
662
  var _hoisted_28$1 = {
@@ -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])
@@ -1213,7 +1215,7 @@ var SmartGroupFieldRecipe_default = /* @__PURE__ */ defineComponent({
1213
1215
  "aria-label": "Group by " + card.field.key,
1214
1216
  "onUpdate:modelValue": ($event) => toggle(card.index)
1215
1217
  }, null, 8, ["aria-label", "onUpdate:modelValue"])
1216
- ], 8, _hoisted_25$2);
1218
+ ], 8, _hoisted_25$1);
1217
1219
  }), 128))])], 64)) : createCommentVNode("", true),
1218
1220
  summary.value.kind === "mute" ? (openBlock(), createElementBlock("div", _hoisted_28$1, [createElementVNode("span", _hoisted_29$1, [createVNode(Icon, {
1219
1221
  d: ICON.info,
@@ -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"];
@@ -1404,7 +1406,7 @@ var _hoisted_21$1 = { class: "mg2-cohorts" };
1404
1406
  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
- var _hoisted_25$1 = { class: "mg2-progress__top" };
1409
+ var _hoisted_25 = { class: "mg2-progress__top" };
1408
1410
  var _hoisted_26 = { class: "mg2-progress__pct" };
1409
1411
  var _hoisted_27 = { class: "mg2-progress__track" };
1410
1412
  var _hoisted_28 = { class: "mg2-tree" };
@@ -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, [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", {
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,56 @@ 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 = {
4680
+ key: 0,
4681
+ class: "mint-sample-selector__header-actions"
4682
+ };
4683
+ var _hoisted_5$6 = {
4676
4684
  key: 0,
4677
4685
  class: "mint-sample-selector__state"
4678
4686
  };
4679
- var _hoisted_3$8 = {
4687
+ var _hoisted_6$5 = {
4680
4688
  key: 1,
4681
4689
  class: "mint-sample-selector__state"
4682
4690
  };
4683
- var _hoisted_4$7 = {
4691
+ var _hoisted_7$5 = {
4684
4692
  key: 2,
4685
4693
  class: "mint-sample-selector__state"
4686
4694
  };
4687
- var _hoisted_5$6 = { class: "mint-sample-selector__select-all-count" };
4688
- var _hoisted_6$5 = {
4695
+ var _hoisted_8$5 = { class: "mint-sample-selector__select-all-count" };
4696
+ var _hoisted_9$5 = {
4689
4697
  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
4698
  class: "mint-sample-selector__grouped"
4710
4699
  };
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 = {
4700
+ var _hoisted_10$3 = { class: "mint-sample-selector__groups-header" };
4701
+ var _hoisted_11$3 = { class: "mint-sample-selector__groups-title" };
4702
+ var _hoisted_12$2 = { class: "mint-sample-selector__tree" };
4703
+ var _hoisted_13$2 = {
4715
4704
  key: 0,
4716
4705
  class: "mint-sample-selector__hint"
4717
4706
  };
4718
- var _hoisted_15$2 = {
4707
+ var _hoisted_14$2 = {
4719
4708
  key: 0,
4720
4709
  class: "mint-sample-selector__ungrouped"
4721
4710
  };
4722
- var _hoisted_16$1 = { class: "mint-sample-selector__ungrouped-count" };
4723
- var _hoisted_17$1 = {
4711
+ var _hoisted_15$2 = { class: "mint-sample-selector__ungrouped-count" };
4712
+ var _hoisted_16$1 = {
4724
4713
  key: 0,
4725
4714
  class: "mint-sample-selector__ungrouped-list"
4726
4715
  };
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,
4716
+ var _hoisted_17$1 = { class: "mint-sample-selector__new-group" };
4717
+ var _hoisted_18$1 = ["value"];
4718
+ var _hoisted_19$1 = {
4719
+ key: 5,
4731
4720
  class: "mint-sample-selector__flat"
4732
4721
  };
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 = {
4722
+ var _hoisted_20$1 = { class: "mint-sample-selector__search" };
4723
+ var _hoisted_21 = { class: "mint-sample-selector__flat-list" };
4724
+ var _hoisted_22 = ["title", "aria-label"];
4725
+ var _hoisted_23 = { class: "mint-sample-selector__flat-name" };
4726
+ var _hoisted_24 = {
4738
4727
  key: 0,
4739
4728
  class: "mint-sample-selector__hint"
4740
4729
  };
@@ -4911,15 +4900,37 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
4911
4900
  __expose({ handleSmartGroupApply });
4912
4901
  return (_ctx, _cache) => {
4913
4902
  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, {
4903
+ createElementVNode("div", _hoisted_2$9, [
4904
+ _cache[7] || (_cache[7] = createElementVNode("span", { class: "mint-sample-selector__title" }, "Samples", -1)),
4905
+ createElementVNode("span", _hoisted_3$8, toDisplayString(selectedCount.value) + " selected", 1),
4906
+ !isPlaceholderState.value && __props.enableGrouping ? (openBlock(), createElementBlock("div", _hoisted_4$7, [createVNode(BaseButton_default, {
4907
+ variant: "ghost",
4908
+ size: "sm",
4909
+ icon: __props.enableSmartGroup ? unref(WandSparkles) : unref(Layers),
4910
+ class: "mint-sample-selector__action-btn",
4911
+ onClick: _cache[0] || (_cache[0] = ($event) => openGroupingModal(groupingActionMode.value))
4912
+ }, {
4913
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.enableSmartGroup ? "Smart group" : "Group"), 1)]),
4914
+ _: 1
4915
+ }, 8, ["icon"]), internalGroups.value.length > 0 ? (openBlock(), createBlock(BaseButton_default, {
4916
+ key: 0,
4917
+ variant: "ghost",
4918
+ size: "sm",
4919
+ icon: unref(RotateCcw),
4920
+ label: "Clear all groups",
4921
+ class: "mint-sample-selector__action-btn",
4922
+ onClick: clearGroups
4923
+ }, null, 8, ["icon"])) : createCommentVNode("", true)])) : createCommentVNode("", true)
4924
+ ]),
4925
+ __props.error ? (openBlock(), createElementBlock("div", _hoisted_5$6, [renderSlot(_ctx.$slots, "error", { error: __props.error }, () => [createVNode(DataStateInternal_default, {
4915
4926
  state: "error",
4916
4927
  size: "sm",
4917
4928
  title: __props.error
4918
- }, null, 8, ["title"])])])) : __props.loading ? (openBlock(), createElementBlock("div", _hoisted_3$8, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(DataStateInternal_default, {
4929
+ }, null, 8, ["title"])])])) : __props.loading ? (openBlock(), createElementBlock("div", _hoisted_6$5, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(DataStateInternal_default, {
4919
4930
  state: "loading",
4920
4931
  size: "sm",
4921
4932
  "loading-label": "Loading samples"
4922
- })])])) : resolvedSamples.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_4$7, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
4933
+ })])])) : resolvedSamples.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_7$5, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
4923
4934
  state: "empty",
4924
4935
  size: "sm",
4925
4936
  title: __props.emptyText
@@ -4927,7 +4938,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
4927
4938
  !isPlaceholderState.value ? (openBlock(), createElementBlock("div", {
4928
4939
  key: 3,
4929
4940
  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))
4941
+ onClick: _cache[2] || (_cache[2] = (...args) => unref(toggleSelectAll) && unref(toggleSelectAll)(...args))
4931
4942
  }, [
4932
4943
  createVNode(BaseCheckbox_default, {
4933
4944
  "model-value": unref(isAllSelected),
@@ -4935,64 +4946,24 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
4935
4946
  size: "sm",
4936
4947
  "aria-label": "Select all samples",
4937
4948
  class: "mint-sample-selector__checkbox",
4938
- onClick: _cache[0] || (_cache[0] = withModifiers(() => {}, ["stop"])),
4949
+ onClick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"])),
4939
4950
  "onUpdate:modelValue": unref(toggleSelectAll)
4940
4951
  }, null, 8, [
4941
4952
  "model-value",
4942
4953
  "indeterminate",
4943
4954
  "onUpdate:modelValue"
4944
4955
  ]),
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)
4956
+ _cache[8] || (_cache[8] = createElementVNode("span", { class: "mint-sample-selector__select-all-label" }, "All samples", -1)),
4957
+ createElementVNode("span", _hoisted_8$5, toDisplayString(selectedCount.value) + "/" + toDisplayString(resolvedSamples.value.length), 1)
4947
4958
  ], 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", {
4959
+ !isPlaceholderState.value && groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_9$5, [
4960
+ createElementVNode("div", _hoisted_10$3, [createElementVNode("span", _hoisted_11$3, "Groups (" + toDisplayString(internalGroups.value.length) + ")", 1), createElementVNode("div", { class: "mint-sample-selector__groups-controls" }, [createElementVNode("button", {
4990
4961
  type: "button",
4991
4962
  class: "mint-sample-selector__expand-btn",
4992
4963
  onClick: expandAllGroups,
4993
4964
  title: "Expand all",
4994
4965
  "aria-label": "Expand all groups"
4995
- }, [..._cache[12] || (_cache[12] = [createElementVNode("svg", {
4966
+ }, [..._cache[9] || (_cache[9] = [createElementVNode("svg", {
4996
4967
  class: "mint-sample-selector__expand-icon",
4997
4968
  fill: "none",
4998
4969
  stroke: "currentColor",
@@ -5008,7 +4979,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5008
4979
  onClick: collapseAllGroups,
5009
4980
  title: "Collapse all",
5010
4981
  "aria-label": "Collapse all groups"
5011
- }, [..._cache[13] || (_cache[13] = [createElementVNode("svg", {
4982
+ }, [..._cache[10] || (_cache[10] = [createElementVNode("svg", {
5012
4983
  class: "mint-sample-selector__expand-icon",
5013
4984
  fill: "none",
5014
4985
  stroke: "currentColor",
@@ -5019,15 +4990,15 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5019
4990
  "stroke-width": "2",
5020
4991
  d: "M9 5l7 7-7 7"
5021
4992
  })], -1)])])])]),
5022
- createElementVNode("div", _hoisted_13$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(groupTree), (node) => {
4993
+ createElementVNode("div", _hoisted_12$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(groupTree), (node) => {
5023
4994
  return openBlock(), createBlock(SampleSelectorGroupNode_default, {
5024
4995
  key: node.key,
5025
4996
  node,
5026
4997
  depth: 0,
5027
4998
  ctx: treeContext.value
5028
4999
  }, 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", {
5000
+ }), 128)), internalGroups.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_13$2, " Click Smart to auto-group samples ")) : createCommentVNode("", true)]),
5001
+ unref(ungroupedSamples).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_14$2, [createElementVNode("div", {
5031
5002
  class: "mint-sample-selector__ungrouped-header",
5032
5003
  onClick: _cache[3] || (_cache[3] = ($event) => toggleGroupExpanded("__ungrouped__"))
5033
5004
  }, [
@@ -5036,16 +5007,16 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5036
5007
  fill: "none",
5037
5008
  stroke: "currentColor",
5038
5009
  viewBox: "0 0 24 24"
5039
- }, [..._cache[14] || (_cache[14] = [createElementVNode("path", {
5010
+ }, [..._cache[11] || (_cache[11] = [createElementVNode("path", {
5040
5011
  "stroke-linecap": "round",
5041
5012
  "stroke-linejoin": "round",
5042
5013
  "stroke-width": "2",
5043
5014
  d: "M9 5l7 7-7 7"
5044
5015
  }, 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)
5016
+ _cache[12] || (_cache[12] = createElementVNode("span", { class: "mint-sample-selector__ungrouped-label" }, "Ungrouped", -1)),
5017
+ createElementVNode("span", _hoisted_15$2, toDisplayString(unref(ungroupedSamples).length), 1)
5047
5018
  ]), 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) => {
5019
+ default: withCtx(() => [isGroupExpanded("__ungrouped__") ? (openBlock(), createElementBlock("div", _hoisted_16$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ungroupedSamples), (sample) => {
5049
5020
  return openBlock(), createBlock(SampleSelectorSampleRow_default, {
5050
5021
  key: sample,
5051
5022
  sample,
@@ -5065,7 +5036,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5065
5036
  }), 128))])) : createCommentVNode("", true)]),
5066
5037
  _: 1
5067
5038
  })])) : createCommentVNode("", true),
5068
- createElementVNode("div", _hoisted_18$1, [createVNode(BaseInput_default, {
5039
+ createElementVNode("div", _hoisted_17$1, [createVNode(BaseInput_default, {
5069
5040
  modelValue: newGroupName.value,
5070
5041
  "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => newGroupName.value = $event),
5071
5042
  placeholder: "New group name...",
@@ -5078,7 +5049,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5078
5049
  class: "mint-sample-selector__new-group-btn",
5079
5050
  onClick: addNewGroup
5080
5051
  }, {
5081
- default: withCtx(() => [..._cache[16] || (_cache[16] = [createTextVNode(" Add ", -1)])]),
5052
+ default: withCtx(() => [..._cache[13] || (_cache[13] = [createTextVNode(" Add ", -1)])]),
5082
5053
  _: 1
5083
5054
  }, 8, ["disabled"])]),
5084
5055
  createElementVNode("input", {
@@ -5088,9 +5059,9 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5088
5059
  class: "mint-sample-selector__color-input",
5089
5060
  value: colorPickerSeed.value,
5090
5061
  onChange: handleColorChange
5091
- }, null, 40, _hoisted_19$1)
5062
+ }, null, 40, _hoisted_18$1)
5092
5063
  ])) : createCommentVNode("", true),
5093
- !isPlaceholderState.value && !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_20$1, [createElementVNode("div", _hoisted_21, [_cache[17] || (_cache[17] = createElementVNode("svg", {
5064
+ !isPlaceholderState.value && !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_19$1, [createElementVNode("div", _hoisted_20$1, [_cache[14] || (_cache[14] = createElementVNode("svg", {
5094
5065
  class: "mint-sample-selector__search-icon",
5095
5066
  fill: "none",
5096
5067
  stroke: "currentColor",
@@ -5105,7 +5076,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5105
5076
  type: "text",
5106
5077
  placeholder: "Search samples...",
5107
5078
  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) => {
5079
+ }, null, 512), [[vModelText, searchQuery.value]])]), createElementVNode("div", _hoisted_21, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(filteredSamples), (sample) => {
5109
5080
  return openBlock(), createElementBlock("div", {
5110
5081
  key: sample,
5111
5082
  class: "mint-sample-selector__flat-item",
@@ -5121,8 +5092,8 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
5121
5092
  "model-value",
5122
5093
  "aria-label",
5123
5094
  "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),
5095
+ ]), createElementVNode("span", _hoisted_23, toDisplayString(sample), 1)], 8, _hoisted_22);
5096
+ }), 128)), unref(filteredSamples).length === 0 && searchQuery.value.trim() ? (openBlock(), createElementBlock("div", _hoisted_24, " No samples match \"" + toDisplayString(searchQuery.value) + "\" ", 1)) : createCommentVNode("", true)])])) : createCommentVNode("", true),
5126
5097
  createVNode(AutoGroupModalInternal_default, {
5127
5098
  open: showSmartGroupModal.value,
5128
5099
  "onUpdate:open": _cache[6] || (_cache[6] = ($event) => showSmartGroupModal.value = $event),
@@ -6166,8 +6137,8 @@ var _hoisted_6$4 = {
6166
6137
  class: "mint-protocol-editor__preview"
6167
6138
  };
6168
6139
  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 = {
6140
+ var _hoisted_8$4 = { class: "mint-protocol-editor__preview-icon" };
6141
+ var _hoisted_9$4 = {
6171
6142
  fill: "none",
6172
6143
  stroke: "currentColor",
6173
6144
  viewBox: "0 0 24 24"
@@ -6372,7 +6343,7 @@ var ProtocolStepEditor_default = /* @__PURE__ */ defineComponent({
6372
6343
  }, 8, ["html-for"])
6373
6344
  ]),
6374
6345
  __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", {
6346
+ createElementVNode("div", _hoisted_8$4, [(openBlock(), createElementBlock("svg", _hoisted_9$4, [createElementVNode("path", {
6376
6347
  "stroke-linecap": "round",
6377
6348
  "stroke-linejoin": "round",
6378
6349
  "stroke-width": "2",
@@ -6431,11 +6402,11 @@ var _hoisted_7$3 = {
6431
6402
  key: 3,
6432
6403
  class: "mint-sci-number__plain"
6433
6404
  };
6434
- var _hoisted_8$2 = {
6405
+ var _hoisted_8$3 = {
6435
6406
  key: 4,
6436
6407
  class: "mint-sci-number__unit"
6437
6408
  };
6438
- var _hoisted_9$2 = {
6409
+ var _hoisted_9$3 = {
6439
6410
  key: 0,
6440
6411
  width: "14",
6441
6412
  height: "14",
@@ -6582,7 +6553,7 @@ var ScientificNumber_default = /* @__PURE__ */ defineComponent({
6582
6553
  "aria-hidden": "true"
6583
6554
  }, null, 8, _hoisted_4$5)
6584
6555
  ], 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),
6556
+ __props.unit ? (openBlock(), createElementBlock("span", _hoisted_8$3, toDisplayString(__props.unit), 1)) : createCommentVNode("", true),
6586
6557
  __props.copyable ? (openBlock(), createElementBlock("button", {
6587
6558
  key: 5,
6588
6559
  class: normalizeClass(["mint-sci-number__copy-btn", { "mint-sci-number__copy-btn--copied": copied.value }]),
@@ -6590,7 +6561,7 @@ var ScientificNumber_default = /* @__PURE__ */ defineComponent({
6590
6561
  title: "Copy value",
6591
6562
  "aria-label": "Copy value",
6592
6563
  onClick: withModifiers(copyToClipboard, ["stop"])
6593
- }, [!copied.value ? (openBlock(), createElementBlock("svg", _hoisted_9$2, [..._cache[2] || (_cache[2] = [createElementVNode("rect", {
6564
+ }, [!copied.value ? (openBlock(), createElementBlock("svg", _hoisted_9$3, [..._cache[2] || (_cache[2] = [createElementVNode("rect", {
6594
6565
  x: "9",
6595
6566
  y: "9",
6596
6567
  width: "13",
@@ -6620,7 +6591,7 @@ var AdductText_default = /* @__PURE__ */ defineComponent({
6620
6591
  variant: { default: "inline" },
6621
6592
  tone: { default: "default" },
6622
6593
  size: { default: "xs" },
6623
- font: { default: "mono" }
6594
+ font: { default: "sans" }
6624
6595
  },
6625
6596
  setup(__props) {
6626
6597
  /** Compact, overflow-safe display for mass-spectrometry adduct notation. */
@@ -6678,11 +6649,11 @@ var _hoisted_7$2 = {
6678
6649
  key: 5,
6679
6650
  class: "mint-chem-formula__charge"
6680
6651
  };
6681
- var _hoisted_8$1 = {
6652
+ var _hoisted_8$2 = {
6682
6653
  key: 6,
6683
6654
  class: "mint-chem-formula__element mint-chem-formula__coefficient"
6684
6655
  };
6685
- var _hoisted_9$1 = { key: 1 };
6656
+ var _hoisted_9$2 = { key: 1 };
6686
6657
  //#endregion
6687
6658
  //#region src/components/ChemicalFormula.vue
6688
6659
  var ChemicalFormula_default = /* @__PURE__ */ defineComponent({
@@ -6726,7 +6697,7 @@ var ChemicalFormula_default = /* @__PURE__ */ defineComponent({
6726
6697
  }, {
6727
6698
  default: withCtx(() => [formula.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
6728
6699
  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);
6700
+ 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
6701
  }), 128))]),
6731
6702
  __props.adduct ? (openBlock(), createBlock(AdductText_default, {
6732
6703
  key: 0,
@@ -6734,7 +6705,7 @@ var ChemicalFormula_default = /* @__PURE__ */ defineComponent({
6734
6705
  size: "inherit"
6735
6706
  }, null, 8, ["value"])) : createCommentVNode("", true),
6736
6707
  renderSlot(_ctx.$slots, "default")
6737
- ], 64)) : (openBlock(), createElementBlock("span", _hoisted_9$1, toDisplayString(__props.emptyText), 1))]),
6708
+ ], 64)) : (openBlock(), createElementBlock("span", _hoisted_9$2, toDisplayString(__props.emptyText), 1))]),
6738
6709
  _: 3
6739
6710
  }, 8, ["class", "title"]);
6740
6711
  };
@@ -6808,16 +6779,21 @@ function clamp(value, min, max) {
6808
6779
  var _hoisted_1$3 = { class: "mint-sequence-progress" };
6809
6780
  var _hoisted_2$3 = { class: "mint-sequence-progress__header" };
6810
6781
  var _hoisted_3$3 = { class: "mint-sequence-progress__label" };
6811
- var _hoisted_4$3 = { class: "mint-sequence-progress__percent" };
6782
+ var _hoisted_4$3 = { class: "mint-sequence-progress__count" };
6812
6783
  var _hoisted_5$2 = {
6784
+ key: 0,
6785
+ class: "mint-sequence-progress__failed"
6786
+ };
6787
+ var _hoisted_6$1 = { class: "mint-sequence-progress__percent" };
6788
+ var _hoisted_7$1 = {
6813
6789
  key: 0,
6814
6790
  class: "mint-sequence-progress__footer"
6815
6791
  };
6816
- var _hoisted_6$1 = {
6792
+ var _hoisted_8$1 = {
6817
6793
  key: 0,
6818
6794
  class: "mint-sequence-progress__remaining"
6819
6795
  };
6820
- var _hoisted_7$1 = {
6796
+ var _hoisted_9$1 = {
6821
6797
  key: 1,
6822
6798
  class: "mint-sequence-progress__eta"
6823
6799
  };
@@ -6839,7 +6815,8 @@ var SequenceProgressBar_default = /* @__PURE__ */ defineComponent({
6839
6815
  showRemaining: {
6840
6816
  type: Boolean,
6841
6817
  default: true
6842
- }
6818
+ },
6819
+ failed: { default: 0 }
6843
6820
  },
6844
6821
  setup(__props) {
6845
6822
  /** Displays LC/MS or GC/MS acquisition sequence progress with ETA and remaining-time labels. */
@@ -6853,13 +6830,17 @@ var SequenceProgressBar_default = /* @__PURE__ */ defineComponent({
6853
6830
  });
6854
6831
  return (_ctx, _cache) => {
6855
6832
  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)]),
6833
+ createElementVNode("div", _hoisted_2$3, [
6834
+ 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)]),
6835
+ __props.failed > 0 ? (openBlock(), createElementBlock("span", _hoisted_5$2, toDisplayString(__props.failed) + " failed", 1)) : createCommentVNode("", true),
6836
+ createElementVNode("span", _hoisted_6$1, toDisplayString(percent.value) + "%", 1)
6837
+ ]),
6857
6838
  createVNode(ProgressBar_default, {
6858
6839
  value: percent.value,
6859
6840
  size: "sm",
6860
6841
  "aria-label": "Sequence progress"
6861
6842
  }, 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)
6843
+ 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
6844
  ]);
6864
6845
  };
6865
6846
  }
@@ -6882,7 +6863,7 @@ var InstrumentStateBadge_default = /* @__PURE__ */ defineComponent({
6882
6863
  const stateConfig = {
6883
6864
  running: {
6884
6865
  label: "Running",
6885
- tone: "info"
6866
+ tone: "success"
6886
6867
  },
6887
6868
  standby: {
6888
6869
  label: "Standby",
@@ -7510,4 +7491,4 @@ var lab_exports = /* @__PURE__ */ __exportAll({
7510
7491
  //#endregion
7511
7492
  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
7493
 
7513
- //# sourceMappingURL=lab-DLwRl_Ql.js.map
7494
+ //# sourceMappingURL=lab-MHzp-_J8.js.map