@morscherlab/mint-sdk 1.0.14 → 1.0.16

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 (58) hide show
  1. package/dist/{BaseSelect-DksaKYq_.js → BaseSelect-ekgr9fDo.js} +4 -1
  2. package/dist/BaseSelect-ekgr9fDo.js.map +1 -0
  3. package/dist/{ExperimentSelectorModal-DIFyL5ta.js → ExperimentSelectorModal-BOzDs8TU.js} +2 -2
  4. package/dist/{ExperimentSelectorModal-CHsU-LIh.js → ExperimentSelectorModal-CX0oBzpV.js} +2 -2
  5. package/dist/{ExperimentSelectorModal-CHsU-LIh.js.map → ExperimentSelectorModal-CX0oBzpV.js.map} +1 -1
  6. package/dist/{SettingsModal-LEKI6Ebl.js → SettingsModal-BTyXD0uP.js} +3 -3
  7. package/dist/{SettingsModal-LEKI6Ebl.js.map → SettingsModal-BTyXD0uP.js.map} +1 -1
  8. package/dist/SettingsModal-DXcSKk9D.js +5 -0
  9. package/dist/__tests__/components/MobileSupportGate.test.d.ts +1 -0
  10. package/dist/__tests__/composables/useMobileSupportGate.test.d.ts +1 -0
  11. package/dist/components/AutoGroupModal.vue.d.ts +6 -0
  12. package/dist/components/BaseInput.vue.d.ts +1 -0
  13. package/dist/components/MobileSupportGate.vue.d.ts +40 -0
  14. package/dist/components/SampleSelector.colors.d.ts +2 -1
  15. package/dist/components/index.d.ts +1 -0
  16. package/dist/components/index.js +6 -6
  17. package/dist/{components-Dq02EVZH.js → components-D0CzE0XK.js} +1094 -500
  18. package/dist/components-D0CzE0XK.js.map +1 -0
  19. package/dist/composables/index.d.ts +1 -0
  20. package/dist/composables/index.js +7 -7
  21. package/dist/composables/useMobileSupportGate.d.ts +14 -0
  22. package/dist/{composables-D9mexHSW.js → composables-Da-4XOe2.js} +3 -3
  23. package/dist/{composables-D9mexHSW.js.map → composables-Da-4XOe2.js.map} +1 -1
  24. package/dist/index.js +10 -10
  25. package/dist/install.js +5 -5
  26. package/dist/styles.css +3705 -2286
  27. package/dist/templates/index.js +3 -3
  28. package/dist/{templates-Do43ZIMb.js → templates-Dnf8UNxg.js} +2 -2
  29. package/dist/{templates-Do43ZIMb.js.map → templates-Dnf8UNxg.js.map} +1 -1
  30. package/dist/{useControlSchema-0n8Bcftq.js → useControlSchema-Dkm-W_lg.js} +2 -2
  31. package/dist/{useControlSchema-0n8Bcftq.js.map → useControlSchema-Dkm-W_lg.js.map} +1 -1
  32. package/dist/{useFormBuilder-COfYWDuC.js → useFormBuilder-BOJ52N4M.js} +2 -2
  33. package/dist/{useFormBuilder-COfYWDuC.js.map → useFormBuilder-BOJ52N4M.js.map} +1 -1
  34. package/dist/{useProtocolTemplates-DODHlhxr.js → useProtocolTemplates-r2GOnnH1.js} +55 -5
  35. package/dist/useProtocolTemplates-r2GOnnH1.js.map +1 -0
  36. package/package.json +1 -1
  37. package/src/__tests__/components/MobileSupportGate.test.ts +120 -0
  38. package/src/__tests__/components/SampleSelector.test.ts +125 -3
  39. package/src/__tests__/components/SampleSelectorSampleRow.test.ts +5 -2
  40. package/src/__tests__/composables/useMobileSupportGate.test.ts +74 -0
  41. package/src/components/AutoGroupModal.story.vue +46 -0
  42. package/src/components/AutoGroupModal.vue +578 -2
  43. package/src/components/BaseInput.vue +2 -0
  44. package/src/components/MobileSupportGate.story.vue +52 -0
  45. package/src/components/MobileSupportGate.vue +115 -0
  46. package/src/components/SampleSelector.colors.ts +7 -2
  47. package/src/components/SampleSelector.story.vue +34 -0
  48. package/src/components/SampleSelector.vue +24 -1
  49. package/src/components/SampleSelectorSampleRow.vue +2 -0
  50. package/src/components/index.ts +1 -0
  51. package/src/composables/index.ts +8 -0
  52. package/src/composables/useMobileSupportGate.ts +80 -0
  53. package/src/styles/components/auto-group-modal.css +744 -0
  54. package/src/styles/components/mobile-support-gate.css +119 -0
  55. package/dist/BaseSelect-DksaKYq_.js.map +0 -1
  56. package/dist/SettingsModal-L7Ejny45.js +0 -5
  57. package/dist/components-Dq02EVZH.js.map +0 -1
  58. package/dist/useProtocolTemplates-DODHlhxr.js.map +0 -1
@@ -1,15 +1,15 @@
1
- import { a as BasePill_default, i as Skeleton_default, n as ExperimentCodeBadge_default, o as BaseButton_default, r as EmptyState_default, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-CHsU-LIh.js";
2
- import { n as normalizeOptionInput, r as BaseInput_default, t as BaseSelect_default } from "./BaseSelect-DksaKYq_.js";
3
- import { A as useConcentrationUnits, B as TagsInput_default, I as useChemicalFormula, J as formatTime, L as DateTimePicker_default, M as SequenceInput_default, O as ConcentrationInput_default, P as FormulaInput_default, R as FileUploader_default, T as getDefaultControlView, U as compareTime, V as TimePicker_default, W as durationMinutes, _ as controlsToFormSchema, at as MultiSelect_default, ct as BaseSlider_default, dt as BaseCheckbox_default, f as resolveControlModel, ft as Tooltip_default, g as mergeControlWorkspaceOptions, h as controlValuesToComponentProps, it as DatePicker_default, j as MoleculeInput_default, k as UnitInput_default, lt as BaseRadioGroup_default, m as controlValuesToComponentBindingsById, o as defineDoseDesignControlModel, ot as useListSelection, p as controlValuesToComponentBindings, pt as BaseTextarea_default, q as formatDuration, r as getControlDefaults, u as useControlWorkspace, ut as BaseToggle_default, w as controlsToViewItems, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as NumberInput_default } from "./useControlSchema-0n8Bcftq.js";
1
+ import { a as BasePill_default, i as Skeleton_default, n as ExperimentCodeBadge_default, o as BaseButton_default, r as EmptyState_default, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-CX0oBzpV.js";
2
+ import { n as normalizeOptionInput, r as BaseInput_default, t as BaseSelect_default } from "./BaseSelect-ekgr9fDo.js";
3
+ import { A as useConcentrationUnits, B as TagsInput_default, I as useChemicalFormula, J as formatTime, L as DateTimePicker_default, M as SequenceInput_default, O as ConcentrationInput_default, P as FormulaInput_default, R as FileUploader_default, T as getDefaultControlView, U as compareTime, V as TimePicker_default, W as durationMinutes, _ as controlsToFormSchema, at as MultiSelect_default, ct as BaseSlider_default, dt as BaseCheckbox_default, f as resolveControlModel, ft as Tooltip_default, g as mergeControlWorkspaceOptions, h as controlValuesToComponentProps, it as DatePicker_default, j as MoleculeInput_default, k as UnitInput_default, lt as BaseRadioGroup_default, m as controlValuesToComponentBindingsById, o as defineDoseDesignControlModel, ot as useListSelection, p as controlValuesToComponentBindings, pt as BaseTextarea_default, q as formatDuration, r as getControlDefaults, u as useControlWorkspace, ut as BaseToggle_default, w as controlsToViewItems, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as NumberInput_default } from "./useControlSchema-Dkm-W_lg.js";
4
4
  import { t as useEventListener } from "./useEventListener-CfVkP9Xz.js";
5
- import { a as recordValuesEqualForKeys, c as normalizeLabelItemInput, i as pickExistingRecordKeys, n as FormFieldRendererInternal_default, o as FormField_default, r as formSchemaFieldNames, s as normalizeItemInput, t as SettingsModal_default } from "./SettingsModal-LEKI6Ebl.js";
5
+ import { a as recordValuesEqualForKeys, c as normalizeLabelItemInput, i as pickExistingRecordKeys, n as FormFieldRendererInternal_default, o as FormField_default, r as formSchemaFieldNames, s as normalizeItemInput, t as SettingsModal_default } from "./SettingsModal-BTyXD0uP.js";
6
6
  import { t as BaseModal_default } from "./BaseModal-B9UA8Y_I.js";
7
7
  import { t as useDropdownState } from "./useDropdownState-Ben4DnjJ.js";
8
- import { A as parseCSV, B as useTheme, C as useExpansionSet, F as classKey, I as useWellPlateEditor, K as useSortedItems, L as useDoseCalculator, P as DEFAULT_COLORS, R as APP_EXPERIMENT_KEY, V as useToast, W as useTextSearch, _ as useScheduleDrag, a as useReagentSeries, c as useBioTemplatePresetWorkspace, k as useAutoGroup, l as useBioTemplatePackWorkspace, n as DEFAULT_PRESETS, o as useGroupAssignment, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, v as useExperimentSamples, w as useSampleGroups, y as useExperimentData, z as useAppExperiment } from "./useProtocolTemplates-DODHlhxr.js";
9
- import { i as usePlatformContext, t as useFormBuilder } from "./useFormBuilder-COfYWDuC.js";
8
+ import { A as parseCSV, B as APP_EXPERIMENT_KEY, C as useExpansionSet, F as classKey, H as useTheme, I as useWellPlateEditor, J as useSortedItems, K as useTextSearch, L as useDoseCalculator, P as DEFAULT_COLORS, R as DEFAULT_MOBILE_VIEWPORT_QUERY, U as useToast, V as useAppExperiment, _ as useScheduleDrag, a as useReagentSeries, c as useBioTemplatePresetWorkspace, k as useAutoGroup, l as useBioTemplatePackWorkspace, n as DEFAULT_PRESETS, o as useGroupAssignment, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, v as useExperimentSamples, w as useSampleGroups, y as useExperimentData, z as useMobileSupportGate } from "./useProtocolTemplates-r2GOnnH1.js";
9
+ import { i as usePlatformContext, t as useFormBuilder } from "./useFormBuilder-BOJ52N4M.js";
10
10
  import { i as useApi } from "./useExperimentSelector-BBaz0w51.js";
11
11
  import { n as ConfirmDialog_default, t as ExperimentPopover_default } from "./ExperimentPopover-B29fIHQz.js";
12
- import { B as toBioTemplateComponentProps, F as getBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, V as toBioTemplateComponentPropsByComponent, dn as extractTemplateCollection } from "./templates-Do43ZIMb.js";
12
+ import { B as toBioTemplateComponentProps, F as getBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, V as toBioTemplateComponentPropsByComponent, dn as extractTemplateCollection } from "./templates-Dnf8UNxg.js";
13
13
  import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, effectScope, guardReactiveProps, h, inject, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onMounted, onScopeDispose, onUnmounted, openBlock, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, unref, useSlots, vModelCheckbox, vModelSelect, vModelText, vShow, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
14
14
  //#region \0rolldown/runtime.js
15
15
  var __defProp = Object.defineProperty;
@@ -24,9 +24,9 @@ var __exportAll = (all, no_symbols) => {
24
24
  };
25
25
  //#endregion
26
26
  //#region src/components/ColorSlider.vue?vue&type=script&setup=true&lang.ts
27
- var _hoisted_1$67 = { class: "mint-color-slider__row" };
28
- var _hoisted_2$59 = { class: "mint-color-slider__track" };
29
- var _hoisted_3$54 = [
27
+ var _hoisted_1$68 = { class: "mint-color-slider__row" };
28
+ var _hoisted_2$60 = { class: "mint-color-slider__track" };
29
+ var _hoisted_3$56 = [
30
30
  "value",
31
31
  "min",
32
32
  "max",
@@ -141,7 +141,7 @@ var ColorSlider_default = /* @__PURE__ */ defineComponent({
141
141
  emit("update:modelValue", Number(target.value));
142
142
  }
143
143
  return (_ctx, _cache) => {
144
- return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-color-slider", { "mint-color-slider--disabled": __props.disabled }]) }, [createElementVNode("div", _hoisted_1$67, [createElementVNode("div", _hoisted_2$59, [createElementVNode("input", {
144
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-color-slider", { "mint-color-slider--disabled": __props.disabled }]) }, [createElementVNode("div", _hoisted_1$68, [createElementVNode("div", _hoisted_2$60, [createElementVNode("input", {
145
145
  type: "range",
146
146
  value: currentValue.value,
147
147
  min: __props.min,
@@ -158,7 +158,7 @@ var ColorSlider_default = /* @__PURE__ */ defineComponent({
158
158
  "--thumb-size": `${sizeConfig.value.thumb}px`
159
159
  }),
160
160
  onInput: handleInput
161
- }, null, 44, _hoisted_3$54)]), __props.showValue ? (openBlock(), createElementBlock("div", {
161
+ }, null, 44, _hoisted_3$56)]), __props.showValue ? (openBlock(), createElementBlock("div", {
162
162
  key: 0,
163
163
  class: "mint-color-slider__badge",
164
164
  style: normalizeStyle({
@@ -177,13 +177,13 @@ var ColorSlider_default = /* @__PURE__ */ defineComponent({
177
177
  });
178
178
  //#endregion
179
179
  //#region src/components/BaseTabs.vue?vue&type=script&setup=true&lang.ts
180
- var _hoisted_1$66 = [
180
+ var _hoisted_1$67 = [
181
181
  "aria-selected",
182
182
  "aria-disabled",
183
183
  "onClick"
184
184
  ];
185
- var _hoisted_2$58 = { class: "mint-tab__content" };
186
- var _hoisted_3$53 = {
185
+ var _hoisted_2$59 = { class: "mint-tab__content" };
186
+ var _hoisted_3$55 = {
187
187
  key: 0,
188
188
  class: "mint-tab__icon mint-tab__icon--svg",
189
189
  viewBox: "0 0 24 24",
@@ -194,8 +194,8 @@ var _hoisted_3$53 = {
194
194
  "stroke-linejoin": "round",
195
195
  "aria-hidden": "true"
196
196
  };
197
- var _hoisted_4$50 = ["d"];
198
- var _hoisted_5$48 = ["d"];
197
+ var _hoisted_4$51 = ["d"];
198
+ var _hoisted_5$49 = ["d"];
199
199
  var _hoisted_6$47 = {
200
200
  key: 1,
201
201
  class: "mint-tab__icon"
@@ -245,33 +245,33 @@ var BaseTabs_default = /* @__PURE__ */ defineComponent({
245
245
  tab.disabled ? "mint-tab--disabled" : ""
246
246
  ]),
247
247
  onClick: ($event) => selectTab(tab.id)
248
- }, [createElementVNode("span", _hoisted_2$58, [
249
- isSvgIcon(tab.icon) ? (openBlock(), createElementBlock("svg", _hoisted_3$53, [Array.isArray(tab.icon) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(tab.icon, (d, index) => {
248
+ }, [createElementVNode("span", _hoisted_2$59, [
249
+ isSvgIcon(tab.icon) ? (openBlock(), createElementBlock("svg", _hoisted_3$55, [Array.isArray(tab.icon) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(tab.icon, (d, index) => {
250
250
  return openBlock(), createElementBlock("path", {
251
251
  key: index,
252
252
  d
253
- }, null, 8, _hoisted_4$50);
253
+ }, null, 8, _hoisted_4$51);
254
254
  }), 128)) : (openBlock(), createElementBlock("path", {
255
255
  key: 1,
256
256
  d: tab.icon
257
- }, null, 8, _hoisted_5$48))])) : tab.icon ? (openBlock(), createElementBlock("span", _hoisted_6$47, toDisplayString(tab.icon), 1)) : createCommentVNode("", true),
257
+ }, null, 8, _hoisted_5$49))])) : tab.icon ? (openBlock(), createElementBlock("span", _hoisted_6$47, toDisplayString(tab.icon), 1)) : createCommentVNode("", true),
258
258
  createTextVNode(" " + toDisplayString(tab.label) + " ", 1),
259
259
  tab.badge !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_7$43, toDisplayString(tab.badge), 1)) : createCommentVNode("", true)
260
- ])], 10, _hoisted_1$66);
260
+ ])], 10, _hoisted_1$67);
261
261
  }), 128))], 2);
262
262
  };
263
263
  }
264
264
  });
265
265
  //#endregion
266
266
  //#region src/components/SegmentedControl.vue?vue&type=script&setup=true&lang.ts
267
- var _hoisted_1$65 = [
267
+ var _hoisted_1$66 = [
268
268
  "aria-checked",
269
269
  "disabled",
270
270
  "onClick",
271
271
  "onKeydown"
272
272
  ];
273
- var _hoisted_2$57 = { class: "mint-segmented-control__label" };
274
- var _hoisted_3$52 = {
273
+ var _hoisted_2$58 = { class: "mint-segmented-control__label" };
274
+ var _hoisted_3$54 = {
275
275
  key: 0,
276
276
  class: "mint-segmented-control__description"
277
277
  };
@@ -343,24 +343,24 @@ var SegmentedControl_default = /* @__PURE__ */ defineComponent({
343
343
  ]),
344
344
  onClick: ($event) => handleSelect(option),
345
345
  onKeydown: ($event) => handleKeydown($event, option)
346
- }, [createElementVNode("span", _hoisted_2$57, toDisplayString(option.label), 1), option.description && __props.variant === "card" ? (openBlock(), createElementBlock("span", _hoisted_3$52, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 42, _hoisted_1$65);
346
+ }, [createElementVNode("span", _hoisted_2$58, toDisplayString(option.label), 1), option.description && __props.variant === "card" ? (openBlock(), createElementBlock("span", _hoisted_3$54, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 42, _hoisted_1$66);
347
347
  }), 128))], 2);
348
348
  };
349
349
  }
350
350
  });
351
351
  //#endregion
352
352
  //#region src/components/DropdownButton.vue?vue&type=script&setup=true&lang.ts
353
- var _hoisted_1$64 = ["disabled", "aria-expanded"];
354
- var _hoisted_2$56 = {
353
+ var _hoisted_1$65 = ["disabled", "aria-expanded"];
354
+ var _hoisted_2$57 = {
355
355
  key: 0,
356
356
  class: "mint-dropdown-button__spinner",
357
357
  viewBox: "0 0 24 24",
358
358
  fill: "none",
359
359
  "aria-hidden": "true"
360
360
  };
361
- var _hoisted_3$51 = { class: "mint-dropdown-button__label" };
362
- var _hoisted_4$49 = ["aria-activedescendant"];
363
- var _hoisted_5$47 = [
361
+ var _hoisted_3$53 = { class: "mint-dropdown-button__label" };
362
+ var _hoisted_4$50 = ["aria-activedescendant"];
363
+ var _hoisted_5$48 = [
364
364
  "id",
365
365
  "aria-selected",
366
366
  "aria-disabled",
@@ -446,7 +446,7 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
446
446
  "aria-haspopup": "listbox",
447
447
  onClick: toggle
448
448
  }, [
449
- __props.loading ? (openBlock(), createElementBlock("svg", _hoisted_2$56, [..._cache[0] || (_cache[0] = [createElementVNode("circle", {
449
+ __props.loading ? (openBlock(), createElementBlock("svg", _hoisted_2$57, [..._cache[0] || (_cache[0] = [createElementVNode("circle", {
450
450
  cx: "12",
451
451
  cy: "12",
452
452
  r: "10",
@@ -459,7 +459,7 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
459
459
  "stroke-width": "3",
460
460
  "stroke-linecap": "round"
461
461
  }, null, -1)])])) : createCommentVNode("", true),
462
- createElementVNode("span", _hoisted_3$51, toDisplayString(selectedLabel.value), 1),
462
+ createElementVNode("span", _hoisted_3$53, toDisplayString(selectedLabel.value), 1),
463
463
  (openBlock(), createElementBlock("svg", {
464
464
  class: normalizeClass(["mint-dropdown-button__chevron", { "mint-dropdown-button__chevron--open": unref(isOpen) }]),
465
465
  viewBox: "0 0 24 24",
@@ -469,7 +469,7 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
469
469
  "stroke-linecap": "round",
470
470
  "stroke-linejoin": "round"
471
471
  }, [..._cache[1] || (_cache[1] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))
472
- ], 10, _hoisted_1$64), createVNode(Transition, { name: "mint-dropdown-button-menu" }, {
472
+ ], 10, _hoisted_1$65), createVNode(Transition, { name: "mint-dropdown-button-menu" }, {
473
473
  default: withCtx(() => [unref(isOpen) ? (openBlock(), createElementBlock("ul", {
474
474
  key: 0,
475
475
  class: "mint-dropdown-button__menu",
@@ -491,8 +491,8 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
491
491
  createElementVNode("span", _hoisted_6$46, toDisplayString(option.label), 1),
492
492
  option.description ? (openBlock(), createElementBlock("span", _hoisted_7$42, toDisplayString(option.description), 1)) : createCommentVNode("", true),
493
493
  option.value === __props.modelValue ? (openBlock(), createElementBlock("svg", _hoisted_8$39, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "M20 6 9 17l-5-5" }, null, -1)])])) : createCommentVNode("", true)
494
- ], 10, _hoisted_5$47);
495
- }), 128))], 8, _hoisted_4$49)) : createCommentVNode("", true)]),
494
+ ], 10, _hoisted_5$48);
495
+ }), 128))], 8, _hoisted_4$50)) : createCommentVNode("", true)]),
496
496
  _: 1
497
497
  })], 512);
498
498
  };
@@ -500,14 +500,14 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
500
500
  });
501
501
  //#endregion
502
502
  //#region src/components/Calendar.vue?vue&type=script&setup=true&lang.ts
503
- var _hoisted_1$63 = { class: "mint-calendar" };
504
- var _hoisted_2$55 = {
503
+ var _hoisted_1$64 = { class: "mint-calendar" };
504
+ var _hoisted_2$56 = {
505
505
  key: 0,
506
506
  class: "mint-calendar__header"
507
507
  };
508
- var _hoisted_3$50 = { class: "mint-calendar__title" };
509
- var _hoisted_4$48 = { class: "mint-calendar__weekdays" };
510
- var _hoisted_5$46 = { class: "mint-calendar__grid" };
508
+ var _hoisted_3$52 = { class: "mint-calendar__title" };
509
+ var _hoisted_4$49 = { class: "mint-calendar__weekdays" };
510
+ var _hoisted_5$47 = { class: "mint-calendar__grid" };
511
511
  var _hoisted_6$45 = [
512
512
  "disabled",
513
513
  "onClick",
@@ -734,8 +734,8 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
734
734
  emit("navigate", "next", currentMonth.value, currentYear.value);
735
735
  }
736
736
  return (_ctx, _cache) => {
737
- return openBlock(), createElementBlock("div", _hoisted_1$63, [
738
- __props.showNavigation ? (openBlock(), createElementBlock("div", _hoisted_2$55, [
737
+ return openBlock(), createElementBlock("div", _hoisted_1$64, [
738
+ __props.showNavigation ? (openBlock(), createElementBlock("div", _hoisted_2$56, [
739
739
  createElementVNode("button", {
740
740
  type: "button",
741
741
  class: "mint-calendar__nav-btn",
@@ -754,7 +754,7 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
754
754
  year: currentYear.value,
755
755
  prevMonth,
756
756
  nextMonth
757
- }, () => [createElementVNode("span", _hoisted_3$50, toDisplayString(monthLabel.value), 1)]),
757
+ }, () => [createElementVNode("span", _hoisted_3$52, toDisplayString(monthLabel.value), 1)]),
758
758
  createElementVNode("button", {
759
759
  type: "button",
760
760
  class: "mint-calendar__nav-btn",
@@ -769,7 +769,7 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
769
769
  "stroke-linejoin": "round"
770
770
  }, [createElementVNode("path", { d: "m9 18 6-6-6-6" })], -1)])])
771
771
  ])) : createCommentVNode("", true),
772
- createElementVNode("div", _hoisted_4$48, [(openBlock(true), createElementBlock(Fragment, null, renderList(weekDayLabels.value, (label, i) => {
772
+ createElementVNode("div", _hoisted_4$49, [(openBlock(true), createElementBlock(Fragment, null, renderList(weekDayLabels.value, (label, i) => {
773
773
  return openBlock(), createElementBlock("span", {
774
774
  key: i,
775
775
  class: "mint-calendar__weekday"
@@ -778,7 +778,7 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
778
778
  index: i
779
779
  }, () => [createTextVNode(toDisplayString(label), 1)])]);
780
780
  }), 128))]),
781
- createElementVNode("div", _hoisted_5$46, [(openBlock(true), createElementBlock(Fragment, null, renderList(calendarDays.value, (day, i) => {
781
+ createElementVNode("div", _hoisted_5$47, [(openBlock(true), createElementBlock(Fragment, null, renderList(calendarDays.value, (day, i) => {
782
782
  return openBlock(), createElementBlock("button", {
783
783
  key: i,
784
784
  type: "button",
@@ -808,14 +808,14 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
808
808
  });
809
809
  //#endregion
810
810
  //#region src/components/DataFrame.vue?vue&type=script&setup=true&lang.ts
811
- var _hoisted_1$62 = {
811
+ var _hoisted_1$63 = {
812
812
  key: 0,
813
813
  class: "mint-dataframe__header"
814
814
  };
815
- var _hoisted_2$54 = { class: "mint-dataframe__search-wrapper" };
816
- var _hoisted_3$49 = ["placeholder"];
817
- var _hoisted_4$47 = { class: "mint-dataframe__table" };
818
- var _hoisted_5$45 = {
815
+ var _hoisted_2$55 = { class: "mint-dataframe__search-wrapper" };
816
+ var _hoisted_3$51 = ["placeholder"];
817
+ var _hoisted_4$48 = { class: "mint-dataframe__table" };
818
+ var _hoisted_5$46 = {
819
819
  key: 0,
820
820
  class: "mint-dataframe__th mint-dataframe__th--checkbox"
821
821
  };
@@ -1037,7 +1037,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1037
1037
  });
1038
1038
  return (_ctx, _cache) => {
1039
1039
  return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-dataframe", { "mint-dataframe--bordered": __props.bordered }]) }, [
1040
- __props.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$62, [createElementVNode("div", _hoisted_2$54, [_cache[4] || (_cache[4] = createElementVNode("svg", {
1040
+ __props.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$63, [createElementVNode("div", _hoisted_2$55, [_cache[4] || (_cache[4] = createElementVNode("svg", {
1041
1041
  class: "mint-dataframe__search-icon",
1042
1042
  viewBox: "0 0 24 24",
1043
1043
  fill: "none",
@@ -1054,12 +1054,12 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1054
1054
  type: "text",
1055
1055
  class: "mint-dataframe__search",
1056
1056
  placeholder: __props.searchPlaceholder
1057
- }, null, 8, _hoisted_3$49), [[vModelText, searchQuery.value]])])])) : createCommentVNode("", true),
1057
+ }, null, 8, _hoisted_3$51), [[vModelText, searchQuery.value]])])])) : createCommentVNode("", true),
1058
1058
  createElementVNode("div", {
1059
1059
  class: "mint-dataframe__table-wrapper",
1060
1060
  style: normalizeStyle(wrapperStyle.value)
1061
1061
  }, [
1062
- createElementVNode("table", _hoisted_4$47, [createElementVNode("thead", { class: normalizeClass(["mint-dataframe__thead", { "mint-dataframe__thead--sticky": __props.stickyHeader }]) }, [createElementVNode("tr", null, [__props.selectable ? (openBlock(), createElementBlock("th", _hoisted_5$45, [createElementVNode("input", {
1062
+ createElementVNode("table", _hoisted_4$48, [createElementVNode("thead", { class: normalizeClass(["mint-dataframe__thead", { "mint-dataframe__thead--sticky": __props.stickyHeader }]) }, [createElementVNode("tr", null, [__props.selectable ? (openBlock(), createElementBlock("th", _hoisted_5$46, [createElementVNode("input", {
1063
1063
  type: "checkbox",
1064
1064
  checked: allSelected.value,
1065
1065
  indeterminate: selectIndeterminate.value,
@@ -1199,7 +1199,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1199
1199
  });
1200
1200
  //#endregion
1201
1201
  //#region src/components/AlertBox.vue?vue&type=script&setup=true&lang.ts
1202
- var _hoisted_1$61 = {
1202
+ var _hoisted_1$62 = {
1203
1203
  key: 0,
1204
1204
  class: "mint-alert__icon mint-alert__icon--success",
1205
1205
  viewBox: "0 0 24 24",
@@ -1209,7 +1209,7 @@ var _hoisted_1$61 = {
1209
1209
  "stroke-linecap": "round",
1210
1210
  "stroke-linejoin": "round"
1211
1211
  };
1212
- var _hoisted_2$53 = {
1212
+ var _hoisted_2$54 = {
1213
1213
  key: 1,
1214
1214
  class: "mint-alert__icon mint-alert__icon--error",
1215
1215
  viewBox: "0 0 24 24",
@@ -1219,7 +1219,7 @@ var _hoisted_2$53 = {
1219
1219
  "stroke-linecap": "round",
1220
1220
  "stroke-linejoin": "round"
1221
1221
  };
1222
- var _hoisted_3$48 = {
1222
+ var _hoisted_3$50 = {
1223
1223
  key: 2,
1224
1224
  class: "mint-alert__icon mint-alert__icon--warning",
1225
1225
  viewBox: "0 0 24 24",
@@ -1229,7 +1229,7 @@ var _hoisted_3$48 = {
1229
1229
  "stroke-linecap": "round",
1230
1230
  "stroke-linejoin": "round"
1231
1231
  };
1232
- var _hoisted_4$46 = {
1232
+ var _hoisted_4$47 = {
1233
1233
  key: 3,
1234
1234
  class: "mint-alert__icon mint-alert__icon--info",
1235
1235
  viewBox: "0 0 24 24",
@@ -1239,7 +1239,7 @@ var _hoisted_4$46 = {
1239
1239
  "stroke-linecap": "round",
1240
1240
  "stroke-linejoin": "round"
1241
1241
  };
1242
- var _hoisted_5$44 = { class: "mint-alert__content" };
1242
+ var _hoisted_5$45 = { class: "mint-alert__content" };
1243
1243
  var _hoisted_6$43 = {
1244
1244
  key: 0,
1245
1245
  class: "mint-alert__title"
@@ -1274,11 +1274,11 @@ var AlertBox_default = /* @__PURE__ */ defineComponent({
1274
1274
  class: normalizeClass(["mint-alert", `mint-alert--${props.type}`]),
1275
1275
  role: "alert"
1276
1276
  }, [
1277
- props.type === "success" ? (openBlock(), createElementBlock("svg", _hoisted_1$61, [..._cache[2] || (_cache[2] = [createElementVNode("circle", {
1277
+ props.type === "success" ? (openBlock(), createElementBlock("svg", _hoisted_1$62, [..._cache[2] || (_cache[2] = [createElementVNode("circle", {
1278
1278
  cx: "12",
1279
1279
  cy: "12",
1280
1280
  r: "10"
1281
- }, null, -1), createElementVNode("path", { d: "m9 12 2 2 4-4" }, null, -1)])])) : props.type === "error" ? (openBlock(), createElementBlock("svg", _hoisted_2$53, [..._cache[3] || (_cache[3] = [
1281
+ }, null, -1), createElementVNode("path", { d: "m9 12 2 2 4-4" }, null, -1)])])) : props.type === "error" ? (openBlock(), createElementBlock("svg", _hoisted_2$54, [..._cache[3] || (_cache[3] = [
1282
1282
  createElementVNode("circle", {
1283
1283
  cx: "12",
1284
1284
  cy: "12",
@@ -1286,11 +1286,11 @@ var AlertBox_default = /* @__PURE__ */ defineComponent({
1286
1286
  }, null, -1),
1287
1287
  createElementVNode("path", { d: "m15 9-6 6" }, null, -1),
1288
1288
  createElementVNode("path", { d: "m9 9 6 6" }, null, -1)
1289
- ])])) : props.type === "warning" ? (openBlock(), createElementBlock("svg", _hoisted_3$48, [..._cache[4] || (_cache[4] = [
1289
+ ])])) : props.type === "warning" ? (openBlock(), createElementBlock("svg", _hoisted_3$50, [..._cache[4] || (_cache[4] = [
1290
1290
  createElementVNode("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }, null, -1),
1291
1291
  createElementVNode("path", { d: "M12 9v4" }, null, -1),
1292
1292
  createElementVNode("path", { d: "M12 17h.01" }, null, -1)
1293
- ])])) : (openBlock(), createElementBlock("svg", _hoisted_4$46, [..._cache[5] || (_cache[5] = [
1293
+ ])])) : (openBlock(), createElementBlock("svg", _hoisted_4$47, [..._cache[5] || (_cache[5] = [
1294
1294
  createElementVNode("circle", {
1295
1295
  cx: "12",
1296
1296
  cy: "12",
@@ -1299,7 +1299,7 @@ var AlertBox_default = /* @__PURE__ */ defineComponent({
1299
1299
  createElementVNode("path", { d: "M12 16v-4" }, null, -1),
1300
1300
  createElementVNode("path", { d: "M12 8h.01" }, null, -1)
1301
1301
  ])])),
1302
- createElementVNode("div", _hoisted_5$44, [props.title ? (openBlock(), createElementBlock("h4", _hoisted_6$43, toDisplayString(props.title), 1)) : createCommentVNode("", true), createElementVNode("div", _hoisted_7$39, [renderSlot(_ctx.$slots, "default")])]),
1302
+ createElementVNode("div", _hoisted_5$45, [props.title ? (openBlock(), createElementBlock("h4", _hoisted_6$43, toDisplayString(props.title), 1)) : createCommentVNode("", true), createElementVNode("div", _hoisted_7$39, [renderSlot(_ctx.$slots, "default")])]),
1303
1303
  hasActions() ? (openBlock(), createElementBlock("div", _hoisted_8$36, [renderSlot(_ctx.$slots, "actions", {}, () => [createElementVNode("button", {
1304
1304
  type: "button",
1305
1305
  class: normalizeClass(["mint-alert__action-btn", `mint-alert__action-btn--${props.type}`]),
@@ -1326,9 +1326,9 @@ var AlertBox_default = /* @__PURE__ */ defineComponent({
1326
1326
  });
1327
1327
  //#endregion
1328
1328
  //#region src/components/AppToastContainer.vue?vue&type=script&setup=true&lang.ts
1329
- var _hoisted_1$60 = { class: "mint-toast__container" };
1330
- var _hoisted_2$52 = ["onClick"];
1331
- var _hoisted_3$47 = { class: "mint-toast__message" };
1329
+ var _hoisted_1$61 = { class: "mint-toast__container" };
1330
+ var _hoisted_2$53 = ["onClick"];
1331
+ var _hoisted_3$49 = { class: "mint-toast__message" };
1332
1332
  //#endregion
1333
1333
  //#region src/components/AppToastContainer.vue
1334
1334
  var AppToastContainer_default = /* @__PURE__ */ defineComponent({
@@ -1343,7 +1343,7 @@ var AppToastContainer_default = /* @__PURE__ */ defineComponent({
1343
1343
  info: "#3B82F6"
1344
1344
  };
1345
1345
  return (_ctx, _cache) => {
1346
- return openBlock(), createBlock(Teleport, { to: "body" }, [createElementVNode("div", _hoisted_1$60, [createVNode(TransitionGroup, { name: "toast" }, {
1346
+ return openBlock(), createBlock(Teleport, { to: "body" }, [createElementVNode("div", _hoisted_1$61, [createVNode(TransitionGroup, { name: "toast" }, {
1347
1347
  default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(toasts), (toast) => {
1348
1348
  return openBlock(), createElementBlock("div", {
1349
1349
  key: toast.id,
@@ -1417,7 +1417,7 @@ var AppToastContainer_default = /* @__PURE__ */ defineComponent({
1417
1417
  createElementVNode("path", { d: "M12 16v-4" }, null, -1),
1418
1418
  createElementVNode("path", { d: "M12 8h.01" }, null, -1)
1419
1419
  ])], 4)),
1420
- createElementVNode("span", _hoisted_3$47, toDisplayString(toast.message), 1),
1420
+ createElementVNode("span", _hoisted_3$49, toDisplayString(toast.message), 1),
1421
1421
  createElementVNode("span", {
1422
1422
  class: "mint-toast__progress",
1423
1423
  style: normalizeStyle({
@@ -1425,7 +1425,7 @@ var AppToastContainer_default = /* @__PURE__ */ defineComponent({
1425
1425
  animationDuration: `${toast.duration ?? 3500}ms`
1426
1426
  })
1427
1427
  }, null, 4)
1428
- ], 14, _hoisted_2$52);
1428
+ ], 14, _hoisted_2$53);
1429
1429
  }), 128))]),
1430
1430
  _: 1
1431
1431
  })])]);
@@ -1434,7 +1434,7 @@ var AppToastContainer_default = /* @__PURE__ */ defineComponent({
1434
1434
  });
1435
1435
  //#endregion
1436
1436
  //#region src/components/IconButton.vue?vue&type=script&setup=true&lang.ts
1437
- var _hoisted_1$59 = [
1437
+ var _hoisted_1$60 = [
1438
1438
  "disabled",
1439
1439
  "aria-label",
1440
1440
  "title"
@@ -1496,13 +1496,13 @@ var IconButton_default = /* @__PURE__ */ defineComponent({
1496
1496
  }, null, -1)])], 2)) : (openBlock(), createElementBlock("span", {
1497
1497
  key: 1,
1498
1498
  class: normalizeClass(`mint-icon-button__icon--${__props.size}`)
1499
- }, [renderSlot(_ctx.$slots, "default")], 2))], 10, _hoisted_1$59);
1499
+ }, [renderSlot(_ctx.$slots, "default")], 2))], 10, _hoisted_1$60);
1500
1500
  };
1501
1501
  }
1502
1502
  });
1503
1503
  //#endregion
1504
1504
  //#region src/components/ThemeToggle.vue?vue&type=script&setup=true&lang.ts
1505
- var _hoisted_1$58 = {
1505
+ var _hoisted_1$59 = {
1506
1506
  key: 0,
1507
1507
  class: "mint-theme-toggle__icon",
1508
1508
  viewBox: "0 0 24 24",
@@ -1512,7 +1512,7 @@ var _hoisted_1$58 = {
1512
1512
  "stroke-linecap": "round",
1513
1513
  "stroke-linejoin": "round"
1514
1514
  };
1515
- var _hoisted_2$51 = {
1515
+ var _hoisted_2$52 = {
1516
1516
  key: 1,
1517
1517
  class: "mint-theme-toggle__icon",
1518
1518
  viewBox: "0 0 24 24",
@@ -1538,7 +1538,7 @@ var ThemeToggle_default = /* @__PURE__ */ defineComponent({
1538
1538
  label: unref(isDark) ? "Switch to light mode" : "Switch to dark mode",
1539
1539
  onClick: unref(toggleTheme)
1540
1540
  }, {
1541
- default: withCtx(() => [unref(isDark) ? (openBlock(), createElementBlock("svg", _hoisted_1$58, [..._cache[0] || (_cache[0] = [
1541
+ default: withCtx(() => [unref(isDark) ? (openBlock(), createElementBlock("svg", _hoisted_1$59, [..._cache[0] || (_cache[0] = [
1542
1542
  createElementVNode("circle", {
1543
1543
  cx: "12",
1544
1544
  cy: "12",
@@ -1552,7 +1552,7 @@ var ThemeToggle_default = /* @__PURE__ */ defineComponent({
1552
1552
  createElementVNode("path", { d: "M20 12h2" }, null, -1),
1553
1553
  createElementVNode("path", { d: "m6.34 17.66-1.41 1.41" }, null, -1),
1554
1554
  createElementVNode("path", { d: "m19.07 4.93-1.41 1.41" }, null, -1)
1555
- ])])) : (openBlock(), createElementBlock("svg", _hoisted_2$51, [..._cache[1] || (_cache[1] = [createElementVNode("path", { d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" }, null, -1)])]))]),
1555
+ ])])) : (openBlock(), createElementBlock("svg", _hoisted_2$52, [..._cache[1] || (_cache[1] = [createElementVNode("path", { d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" }, null, -1)])]))]),
1556
1556
  _: 1
1557
1557
  }, 8, [
1558
1558
  "size",
@@ -1564,11 +1564,11 @@ var ThemeToggle_default = /* @__PURE__ */ defineComponent({
1564
1564
  });
1565
1565
  //#endregion
1566
1566
  //#region src/components/CollapsibleCard.vue?vue&type=script&setup=true&lang.ts
1567
- var _hoisted_1$57 = { class: "mint-collapsible-card__header-shell" };
1568
- var _hoisted_2$50 = ["disabled", "aria-expanded"];
1569
- var _hoisted_3$46 = { class: "mint-collapsible-card__title-section" };
1570
- var _hoisted_4$45 = ["d"];
1571
- var _hoisted_5$43 = ["d"];
1567
+ var _hoisted_1$58 = { class: "mint-collapsible-card__header-shell" };
1568
+ var _hoisted_2$51 = ["disabled", "aria-expanded"];
1569
+ var _hoisted_3$48 = { class: "mint-collapsible-card__title-section" };
1570
+ var _hoisted_4$46 = ["d"];
1571
+ var _hoisted_5$44 = ["d"];
1572
1572
  var _hoisted_6$42 = { class: "mint-collapsible-card__titles" };
1573
1573
  var _hoisted_7$38 = { class: "mint-collapsible-card__title" };
1574
1574
  var _hoisted_8$35 = {
@@ -1686,13 +1686,13 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
1686
1686
  emit("action", action.id);
1687
1687
  }
1688
1688
  return (_ctx, _cache) => {
1689
- return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-collapsible-card", __props.dense ? "mint-collapsible-card--dense" : ""]) }, [createElementVNode("div", _hoisted_1$57, [createElementVNode("button", {
1689
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-collapsible-card", __props.dense ? "mint-collapsible-card--dense" : ""]) }, [createElementVNode("div", _hoisted_1$58, [createElementVNode("button", {
1690
1690
  type: "button",
1691
1691
  class: normalizeClass(headerClasses.value),
1692
1692
  disabled: __props.disabled,
1693
1693
  "aria-expanded": isOpen.value,
1694
1694
  onClick: toggle
1695
- }, [createElementVNode("div", _hoisted_3$46, [__props.icon ? (openBlock(), createElementBlock("div", {
1695
+ }, [createElementVNode("div", _hoisted_3$48, [__props.icon ? (openBlock(), createElementBlock("div", {
1696
1696
  key: 0,
1697
1697
  class: "mint-collapsible-card__icon-badge",
1698
1698
  style: normalizeStyle(iconBgStyle.value)
@@ -1710,15 +1710,15 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
1710
1710
  return openBlock(), createElementBlock("path", {
1711
1711
  key: i,
1712
1712
  d
1713
- }, null, 8, _hoisted_4$45);
1713
+ }, null, 8, _hoisted_4$46);
1714
1714
  }), 128)) : (openBlock(), createElementBlock("path", {
1715
1715
  key: 1,
1716
1716
  d: __props.icon
1717
- }, null, 8, _hoisted_5$43))], 4)) : (openBlock(), createElementBlock("span", {
1717
+ }, null, 8, _hoisted_5$44))], 4)) : (openBlock(), createElementBlock("span", {
1718
1718
  key: 1,
1719
1719
  class: "mint-collapsible-card__icon-text",
1720
1720
  style: normalizeStyle(iconColorStyle.value)
1721
- }, toDisplayString(__props.icon), 5))], 4)) : createCommentVNode("", true), createElementVNode("div", _hoisted_6$42, [createElementVNode("h3", _hoisted_7$38, toDisplayString(__props.title), 1), __props.subtitle ? (openBlock(), createElementBlock("p", _hoisted_8$35, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true)])])], 10, _hoisted_2$50), createElementVNode("div", _hoisted_9$32, [
1721
+ }, toDisplayString(__props.icon), 5))], 4)) : createCommentVNode("", true), createElementVNode("div", _hoisted_6$42, [createElementVNode("h3", _hoisted_7$38, toDisplayString(__props.title), 1), __props.subtitle ? (openBlock(), createElementBlock("p", _hoisted_8$35, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true)])])], 10, _hoisted_2$51), createElementVNode("div", _hoisted_9$32, [
1722
1722
  __props.badge !== void 0 ? (openBlock(), createElementBlock("span", {
1723
1723
  key: 0,
1724
1724
  class: normalizeClass(badgeClasses.value)
@@ -1913,18 +1913,18 @@ function isFiniteNumber(value, min, max) {
1913
1913
  }
1914
1914
  //#endregion
1915
1915
  //#region src/components/internal/ActionItemInternal.vue?vue&type=script&setup=true&lang.ts
1916
- var _hoisted_1$56 = [
1916
+ var _hoisted_1$57 = [
1917
1917
  "href",
1918
1918
  "aria-disabled",
1919
1919
  "tabindex"
1920
1920
  ];
1921
- var _hoisted_2$49 = [
1921
+ var _hoisted_2$50 = [
1922
1922
  "href",
1923
1923
  "aria-disabled",
1924
1924
  "tabindex",
1925
1925
  "onClick"
1926
1926
  ];
1927
- var _hoisted_3$45 = ["type", "disabled"];
1927
+ var _hoisted_3$47 = ["type", "disabled"];
1928
1928
  //#endregion
1929
1929
  //#region src/components/internal/ActionItemInternal.vue
1930
1930
  var ActionItemInternal_default = /* @__PURE__ */ defineComponent({
@@ -1970,7 +1970,7 @@ var ActionItemInternal_default = /* @__PURE__ */ defineComponent({
1970
1970
  "aria-disabled": __props.disabled || void 0,
1971
1971
  tabindex: __props.disabled ? -1 : void 0,
1972
1972
  onClick: handleClick
1973
- }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$56)) : __props.to ? (openBlock(), createBlock(_component_router_link, {
1973
+ }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_1$57)) : __props.to ? (openBlock(), createBlock(_component_router_link, {
1974
1974
  key: 1,
1975
1975
  to: __props.to,
1976
1976
  custom: ""
@@ -1980,33 +1980,33 @@ var ActionItemInternal_default = /* @__PURE__ */ defineComponent({
1980
1980
  "aria-disabled": __props.disabled || void 0,
1981
1981
  tabindex: __props.disabled ? -1 : void 0,
1982
1982
  onClick: ($event) => handleRouterClick($event, navigate)
1983
- }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_2$49)]),
1983
+ }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_2$50)]),
1984
1984
  _: 3
1985
1985
  }, 8, ["to"])) : (openBlock(), createElementBlock("button", mergeProps({ key: 2 }, _ctx.$attrs, {
1986
1986
  type: __props.type,
1987
1987
  disabled: __props.disabled,
1988
1988
  onClick: handleClick
1989
- }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_3$45));
1989
+ }), [renderSlot(_ctx.$slots, "default")], 16, _hoisted_3$47));
1990
1990
  };
1991
1991
  }
1992
1992
  });
1993
1993
  //#endregion
1994
1994
  //#region src/components/PluginIcon.vue?vue&type=script&setup=true&lang.ts
1995
- var _hoisted_1$55 = ["viewBox"];
1996
- var _hoisted_2$48 = { key: 0 };
1997
- var _hoisted_3$44 = [
1995
+ var _hoisted_1$56 = ["viewBox"];
1996
+ var _hoisted_2$49 = { key: 0 };
1997
+ var _hoisted_3$46 = [
1998
1998
  "id",
1999
1999
  "x1",
2000
2000
  "y1",
2001
2001
  "x2",
2002
2002
  "y2"
2003
2003
  ];
2004
- var _hoisted_4$44 = [
2004
+ var _hoisted_4$45 = [
2005
2005
  "offset",
2006
2006
  "stop-color",
2007
2007
  "stop-opacity"
2008
2008
  ];
2009
- var _hoisted_5$42 = [
2009
+ var _hoisted_5$43 = [
2010
2010
  "x",
2011
2011
  "y",
2012
2012
  "width",
@@ -2107,7 +2107,7 @@ var PluginIcon_default = /* @__PURE__ */ defineComponent({
2107
2107
  viewBox: structuredIcon.value.viewBox,
2108
2108
  "aria-hidden": "true"
2109
2109
  }, [
2110
- structuredIcon.value.gradient ? (openBlock(), createElementBlock("defs", _hoisted_2$48, [createElementVNode("linearGradient", {
2110
+ structuredIcon.value.gradient ? (openBlock(), createElementBlock("defs", _hoisted_2$49, [createElementVNode("linearGradient", {
2111
2111
  id: gradientId.value,
2112
2112
  x1: gradientCoords.value.x1,
2113
2113
  y1: gradientCoords.value.y1,
@@ -2119,8 +2119,8 @@ var PluginIcon_default = /* @__PURE__ */ defineComponent({
2119
2119
  offset: stop.offset,
2120
2120
  "stop-color": stop.color,
2121
2121
  "stop-opacity": stop.opacity
2122
- }, null, 8, _hoisted_4$44);
2123
- }), 128))], 8, _hoisted_3$44)])) : createCommentVNode("", true),
2122
+ }, null, 8, _hoisted_4$45);
2123
+ }), 128))], 8, _hoisted_3$46)])) : createCommentVNode("", true),
2124
2124
  structuredIcon.value.background ? (openBlock(), createElementBlock("rect", {
2125
2125
  key: 1,
2126
2126
  x: structuredViewBox.value.x,
@@ -2129,7 +2129,7 @@ var PluginIcon_default = /* @__PURE__ */ defineComponent({
2129
2129
  height: structuredViewBox.value.height,
2130
2130
  rx: structuredIcon.value.background.radius,
2131
2131
  fill: backgroundFill.value
2132
- }, null, 8, _hoisted_5$42)) : createCommentVNode("", true),
2132
+ }, null, 8, _hoisted_5$43)) : createCommentVNode("", true),
2133
2133
  (openBlock(true), createElementBlock(Fragment, null, renderList(structuredIcon.value.paths, (path, index) => {
2134
2134
  return openBlock(), createElementBlock("path", {
2135
2135
  key: index,
@@ -2142,7 +2142,7 @@ var PluginIcon_default = /* @__PURE__ */ defineComponent({
2142
2142
  "stroke-linejoin": "round"
2143
2143
  }, null, 8, _hoisted_6$41);
2144
2144
  }), 128))
2145
- ], 8, _hoisted_1$55)) : detected.value.format === "path" || detected.value.format === "fallback" ? (openBlock(), createElementBlock("svg", _hoisted_7$37, [createElementVNode("path", { d: iconValue.value }, null, 8, _hoisted_8$34)])) : (openBlock(), createElementBlock("img", {
2145
+ ], 8, _hoisted_1$56)) : detected.value.format === "path" || detected.value.format === "fallback" ? (openBlock(), createElementBlock("svg", _hoisted_7$37, [createElementVNode("path", { d: iconValue.value }, null, 8, _hoisted_8$34)])) : (openBlock(), createElementBlock("img", {
2146
2146
  key: 2,
2147
2147
  class: "mint-plugin-icon__img",
2148
2148
  src: iconValue.value,
@@ -2155,17 +2155,17 @@ var PluginIcon_default = /* @__PURE__ */ defineComponent({
2155
2155
  });
2156
2156
  //#endregion
2157
2157
  //#region src/components/internal/AppTopBarPageSelectorInternal.vue?vue&type=script&setup=true&lang.ts
2158
- var _hoisted_1$54 = ["aria-expanded"];
2159
- var _hoisted_2$47 = {
2158
+ var _hoisted_1$55 = ["aria-expanded"];
2159
+ var _hoisted_2$48 = {
2160
2160
  key: 1,
2161
2161
  class: "mint-page-selector__icon-fallback"
2162
2162
  };
2163
- var _hoisted_3$43 = { class: "mint-page-selector__label" };
2164
- var _hoisted_4$43 = {
2163
+ var _hoisted_3$45 = { class: "mint-page-selector__label" };
2164
+ var _hoisted_4$44 = {
2165
2165
  class: "mint-page-selector__chevron-wrap",
2166
2166
  "aria-hidden": "true"
2167
2167
  };
2168
- var _hoisted_5$41 = {
2168
+ var _hoisted_5$42 = {
2169
2169
  key: 0,
2170
2170
  class: "mint-page-selector__menu",
2171
2171
  role: "menu"
@@ -2228,9 +2228,9 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
2228
2228
  icon: current.value.icon,
2229
2229
  size: "sm",
2230
2230
  variant: "tinted"
2231
- }, null, 8, ["icon"])) : (openBlock(), createElementBlock("span", _hoisted_2$47, toDisplayString(current.value.label.charAt(0)), 1))])], 2)) : createCommentVNode("", true),
2232
- createElementVNode("span", _hoisted_3$43, toDisplayString(current.value?.label ?? __props.placeholder), 1),
2233
- createElementVNode("span", _hoisted_4$43, [(openBlock(), createElementBlock("svg", {
2231
+ }, null, 8, ["icon"])) : (openBlock(), createElementBlock("span", _hoisted_2$48, toDisplayString(current.value.label.charAt(0)), 1))])], 2)) : createCommentVNode("", true),
2232
+ createElementVNode("span", _hoisted_3$45, toDisplayString(current.value?.label ?? __props.placeholder), 1),
2233
+ createElementVNode("span", _hoisted_4$44, [(openBlock(), createElementBlock("svg", {
2234
2234
  class: normalizeClass(["mint-page-selector__chevron", { "mint-page-selector__chevron--open": unref(isOpen) }]),
2235
2235
  viewBox: "0 0 24 24",
2236
2236
  fill: "none",
@@ -2239,7 +2239,7 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
2239
2239
  "stroke-linecap": "round",
2240
2240
  "stroke-linejoin": "round"
2241
2241
  }, [..._cache[1] || (_cache[1] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))])
2242
- ], 10, _hoisted_1$54), unref(isOpen) ? (openBlock(), createElementBlock("div", _hoisted_5$41, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "mint-page-selector__menu-title" }, "Go to", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(normalizedPages.value, (page) => {
2242
+ ], 10, _hoisted_1$55), unref(isOpen) ? (openBlock(), createElementBlock("div", _hoisted_5$42, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "mint-page-selector__menu-title" }, "Go to", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(normalizedPages.value, (page) => {
2243
2243
  return openBlock(), createBlock(ActionItemInternal_default, {
2244
2244
  key: page.id,
2245
2245
  href: page.href,
@@ -2278,16 +2278,16 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
2278
2278
  });
2279
2279
  //#endregion
2280
2280
  //#region src/components/internal/AppTopBarPillNavInternal.vue?vue&type=script&setup=true&lang.ts
2281
- var _hoisted_1$53 = {
2281
+ var _hoisted_1$54 = {
2282
2282
  class: "mint-pill-nav",
2283
2283
  "aria-label": "Primary"
2284
2284
  };
2285
- var _hoisted_2$46 = [
2285
+ var _hoisted_2$47 = [
2286
2286
  "disabled",
2287
2287
  "aria-expanded",
2288
2288
  "onClick"
2289
2289
  ];
2290
- var _hoisted_3$42 = {
2290
+ var _hoisted_3$44 = {
2291
2291
  key: 0,
2292
2292
  class: "mint-pill-nav__icon",
2293
2293
  viewBox: "0 0 24 24",
@@ -2298,8 +2298,8 @@ var _hoisted_3$42 = {
2298
2298
  "stroke-linejoin": "round",
2299
2299
  "aria-hidden": "true"
2300
2300
  };
2301
- var _hoisted_4$42 = ["d"];
2302
- var _hoisted_5$40 = ["d"];
2301
+ var _hoisted_4$43 = ["d"];
2302
+ var _hoisted_5$41 = ["d"];
2303
2303
  var _hoisted_6$39 = {
2304
2304
  key: 0,
2305
2305
  class: "mint-pill-nav__icon",
@@ -2378,7 +2378,7 @@ var AppTopBarPillNavInternal_default = /* @__PURE__ */ defineComponent({
2378
2378
  }
2379
2379
  useEventListener(() => document, "click", handleClickOutside);
2380
2380
  return (_ctx, _cache) => {
2381
- return openBlock(), createElementBlock("nav", _hoisted_1$53, [(openBlock(true), createElementBlock(Fragment, null, renderList(normalizedItems.value, (item) => {
2381
+ return openBlock(), createElementBlock("nav", _hoisted_1$54, [(openBlock(true), createElementBlock(Fragment, null, renderList(normalizedItems.value, (item) => {
2382
2382
  return openBlock(), createElementBlock("div", {
2383
2383
  key: item.id,
2384
2384
  ref_for: true,
@@ -2397,15 +2397,15 @@ var AppTopBarPillNavInternal_default = /* @__PURE__ */ defineComponent({
2397
2397
  "aria-haspopup": "menu",
2398
2398
  onClick: withModifiers(($event) => handleClick(item), ["stop"])
2399
2399
  }, [
2400
- isSvgIcon(item.icon) ? (openBlock(), createElementBlock("svg", _hoisted_3$42, [Array.isArray(item.icon) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(item.icon, (d, index) => {
2400
+ isSvgIcon(item.icon) ? (openBlock(), createElementBlock("svg", _hoisted_3$44, [Array.isArray(item.icon) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(item.icon, (d, index) => {
2401
2401
  return openBlock(), createElementBlock("path", {
2402
2402
  key: index,
2403
2403
  d
2404
- }, null, 8, _hoisted_4$42);
2404
+ }, null, 8, _hoisted_4$43);
2405
2405
  }), 128)) : (openBlock(), createElementBlock("path", {
2406
2406
  key: 1,
2407
2407
  d: item.icon
2408
- }, null, 8, _hoisted_5$40))])) : createCommentVNode("", true),
2408
+ }, null, 8, _hoisted_5$41))])) : createCommentVNode("", true),
2409
2409
  createTextVNode(" " + toDisplayString(item.label) + " ", 1),
2410
2410
  (openBlock(), createElementBlock("svg", {
2411
2411
  class: normalizeClass(["mint-pill-nav__chevron", { "mint-pill-nav__chevron--open": openItemId.value === item.id }]),
@@ -2417,7 +2417,7 @@ var AppTopBarPillNavInternal_default = /* @__PURE__ */ defineComponent({
2417
2417
  "stroke-linejoin": "round",
2418
2418
  "aria-hidden": "true"
2419
2419
  }, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))
2420
- ], 10, _hoisted_2$46)) : (openBlock(), createBlock(ActionItemInternal_default, {
2420
+ ], 10, _hoisted_2$47)) : (openBlock(), createBlock(ActionItemInternal_default, {
2421
2421
  key: 1,
2422
2422
  href: item.href,
2423
2423
  to: item.to,
@@ -2475,18 +2475,18 @@ var AppTopBarPillNavInternal_default = /* @__PURE__ */ defineComponent({
2475
2475
  });
2476
2476
  //#endregion
2477
2477
  //#region src/components/AppAvatarMenu.vue?vue&type=script&setup=true&lang.ts
2478
- var _hoisted_1$52 = ["aria-expanded", "title"];
2479
- var _hoisted_2$45 = { class: "mint-avatar-menu__avatar" };
2480
- var _hoisted_3$41 = {
2478
+ var _hoisted_1$53 = ["aria-expanded", "title"];
2479
+ var _hoisted_2$46 = { class: "mint-avatar-menu__avatar" };
2480
+ var _hoisted_3$43 = {
2481
2481
  key: 0,
2482
2482
  class: "mint-avatar-menu__name"
2483
2483
  };
2484
- var _hoisted_4$41 = {
2484
+ var _hoisted_4$42 = {
2485
2485
  key: 0,
2486
2486
  class: "mint-avatar-menu__panel",
2487
2487
  role: "menu"
2488
2488
  };
2489
- var _hoisted_5$39 = {
2489
+ var _hoisted_5$40 = {
2490
2490
  key: 0,
2491
2491
  class: "mint-avatar-menu__header"
2492
2492
  };
@@ -2578,8 +2578,8 @@ var AppAvatarMenu_default = /* @__PURE__ */ defineComponent({
2578
2578
  "aria-haspopup": "menu",
2579
2579
  title: __props.userName ? `${__props.userName} · Account menu` : "Account menu",
2580
2580
  onClick: _cache[0] || (_cache[0] = withModifiers((...args) => unref(toggle) && unref(toggle)(...args), ["stop"]))
2581
- }, [createElementVNode("span", _hoisted_2$45, [renderSlot(_ctx.$slots, "avatar", { initials: initials.value }, () => [createTextVNode(toDisplayString(initials.value), 1)])]), __props.userName ? (openBlock(), createElementBlock("span", _hoisted_3$41, toDisplayString(__props.userName), 1)) : createCommentVNode("", true)], 10, _hoisted_1$52), unref(isOpen) ? (openBlock(), createElementBlock("div", _hoisted_4$41, [
2582
- __props.userName || __props.userEmail ? (openBlock(), createElementBlock("div", _hoisted_5$39, [__props.userName ? (openBlock(), createElementBlock("div", _hoisted_6$38, toDisplayString(__props.userName), 1)) : createCommentVNode("", true), __props.userEmail ? (openBlock(), createElementBlock("div", _hoisted_7$34, toDisplayString(__props.userEmail), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true),
2581
+ }, [createElementVNode("span", _hoisted_2$46, [renderSlot(_ctx.$slots, "avatar", { initials: initials.value }, () => [createTextVNode(toDisplayString(initials.value), 1)])]), __props.userName ? (openBlock(), createElementBlock("span", _hoisted_3$43, toDisplayString(__props.userName), 1)) : createCommentVNode("", true)], 10, _hoisted_1$53), unref(isOpen) ? (openBlock(), createElementBlock("div", _hoisted_4$42, [
2582
+ __props.userName || __props.userEmail ? (openBlock(), createElementBlock("div", _hoisted_5$40, [__props.userName ? (openBlock(), createElementBlock("div", _hoisted_6$38, toDisplayString(__props.userName), 1)) : createCommentVNode("", true), __props.userEmail ? (openBlock(), createElementBlock("div", _hoisted_7$34, toDisplayString(__props.userEmail), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true),
2583
2583
  renderSlot(_ctx.$slots, "items", { close: closeSilently }, () => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
2584
2584
  return openBlock(), createElementBlock(Fragment, { key: item.id }, [item.divider ? (openBlock(), createElementBlock("div", _hoisted_8$31)) : (openBlock(), createBlock(ActionItemInternal_default, {
2585
2585
  key: 1,
@@ -2617,17 +2617,17 @@ var AppAvatarMenu_default = /* @__PURE__ */ defineComponent({
2617
2617
  });
2618
2618
  //#endregion
2619
2619
  //#region src/components/AppPluginSwitcher.vue?vue&type=script&setup=true&lang.ts
2620
- var _hoisted_1$51 = ["aria-expanded"];
2621
- var _hoisted_2$44 = { class: "mint-plugin-switcher__label" };
2622
- var _hoisted_3$40 = {
2620
+ var _hoisted_1$52 = ["aria-expanded"];
2621
+ var _hoisted_2$45 = { class: "mint-plugin-switcher__label" };
2622
+ var _hoisted_3$42 = {
2623
2623
  key: 0,
2624
2624
  class: "mint-plugin-switcher__version"
2625
2625
  };
2626
- var _hoisted_4$40 = {
2626
+ var _hoisted_4$41 = {
2627
2627
  class: "mint-plugin-switcher__chevron-wrap",
2628
2628
  "aria-hidden": "true"
2629
2629
  };
2630
- var _hoisted_5$38 = {
2630
+ var _hoisted_5$39 = {
2631
2631
  key: 0,
2632
2632
  class: "mint-plugin-switcher__menu",
2633
2633
  role: "menu"
@@ -2697,9 +2697,9 @@ var AppPluginSwitcher_default = /* @__PURE__ */ defineComponent({
2697
2697
  "aria-haspopup": "menu",
2698
2698
  onClick: _cache[0] || (_cache[0] = withModifiers((...args) => unref(toggle) && unref(toggle)(...args), ["stop"]))
2699
2699
  }, [
2700
- createElementVNode("span", _hoisted_2$44, toDisplayString(__props.current.label), 1),
2701
- __props.current.version ? (openBlock(), createElementBlock("span", _hoisted_3$40, "v" + toDisplayString(__props.current.version), 1)) : createCommentVNode("", true),
2702
- createElementVNode("span", _hoisted_4$40, [(openBlock(), createElementBlock("svg", {
2700
+ createElementVNode("span", _hoisted_2$45, toDisplayString(__props.current.label), 1),
2701
+ __props.current.version ? (openBlock(), createElementBlock("span", _hoisted_3$42, "v" + toDisplayString(__props.current.version), 1)) : createCommentVNode("", true),
2702
+ createElementVNode("span", _hoisted_4$41, [(openBlock(), createElementBlock("svg", {
2703
2703
  class: normalizeClass(["mint-plugin-switcher__chevron", { "mint-plugin-switcher__chevron--open": unref(isOpen) }]),
2704
2704
  viewBox: "0 0 24 24",
2705
2705
  fill: "none",
@@ -2708,7 +2708,7 @@ var AppPluginSwitcher_default = /* @__PURE__ */ defineComponent({
2708
2708
  "stroke-linecap": "round",
2709
2709
  "stroke-linejoin": "round"
2710
2710
  }, [..._cache[1] || (_cache[1] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))])
2711
- ], 10, _hoisted_1$51), unref(isOpen) ? (openBlock(), createElementBlock("div", _hoisted_5$38, [
2711
+ ], 10, _hoisted_1$52), unref(isOpen) ? (openBlock(), createElementBlock("div", _hoisted_5$39, [
2712
2712
  _cache[4] || (_cache[4] = createElementVNode("div", { class: "mint-plugin-switcher__menu-title" }, "Switch plugin", -1)),
2713
2713
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.plugins, (plugin) => {
2714
2714
  return openBlock(), createBlock(ActionItemInternal_default, {
@@ -2806,14 +2806,14 @@ function currentItemIdFromLocation(pages, pathname, routePrefix) {
2806
2806
  }
2807
2807
  //#endregion
2808
2808
  //#region src/components/AppTopBar.vue?vue&type=script&setup=true&lang.ts
2809
- var _hoisted_1$50 = { class: "mint-topbar__container" };
2810
- var _hoisted_2$43 = { class: "mint-topbar__brand" };
2811
- var _hoisted_3$39 = ["href"];
2812
- var _hoisted_4$39 = {
2809
+ var _hoisted_1$51 = { class: "mint-topbar__container" };
2810
+ var _hoisted_2$44 = { class: "mint-topbar__brand" };
2811
+ var _hoisted_3$41 = ["href"];
2812
+ var _hoisted_4$40 = {
2813
2813
  key: 0,
2814
2814
  class: "mint-topbar__logo"
2815
2815
  };
2816
- var _hoisted_5$37 = {
2816
+ var _hoisted_5$38 = {
2817
2817
  key: 0,
2818
2818
  class: "mint-topbar__logo"
2819
2819
  };
@@ -2924,9 +2924,9 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
2924
2924
  setup(__props, { emit: __emit }) {
2925
2925
  /** Full application top bar with brand logo, page selector or plugin switcher, centered pill nav, experiment popover, and avatar menu. */
2926
2926
  const props = __props;
2927
- const SettingsModal = defineAsyncComponent(() => import("./SettingsModal-L7Ejny45.js"));
2927
+ const SettingsModal = defineAsyncComponent(() => import("./SettingsModal-DXcSKk9D.js"));
2928
2928
  const ExperimentPopover = defineAsyncComponent(() => import("./ExperimentPopover-gdSA9ZCF.js"));
2929
- const ExperimentSelectorModal = defineAsyncComponent(() => import("./ExperimentSelectorModal-DIFyL5ta.js"));
2929
+ const ExperimentSelectorModal = defineAsyncComponent(() => import("./ExperimentSelectorModal-BOzDs8TU.js"));
2930
2930
  const emit = __emit;
2931
2931
  const settingsOpen = ref(false);
2932
2932
  const { isIntegrated, plugin } = usePlatformContext();
@@ -2962,8 +2962,8 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
2962
2962
  return (_ctx, _cache) => {
2963
2963
  const _component_router_link = resolveComponent("router-link");
2964
2964
  return openBlock(), createElementBlock(Fragment, null, [
2965
- createElementVNode("header", { class: normalizeClass(["mint-topbar", `mint-topbar--${props.variant}`]) }, [createElementVNode("div", _hoisted_1$50, [
2966
- createElementVNode("div", _hoisted_2$43, [__props.homePath && (__props.homePath.startsWith("http") || __props.homePath.startsWith("/")) ? (openBlock(), createElementBlock("a", {
2965
+ createElementVNode("header", { class: normalizeClass(["mint-topbar", `mint-topbar--${props.variant}`]) }, [createElementVNode("div", _hoisted_1$51, [
2966
+ createElementVNode("div", _hoisted_2$44, [__props.homePath && (__props.homePath.startsWith("http") || __props.homePath.startsWith("/")) ? (openBlock(), createElementBlock("a", {
2967
2967
  key: 0,
2968
2968
  href: __props.homePath,
2969
2969
  class: "mint-topbar-home-link"
@@ -2974,7 +2974,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
2974
2974
  tone: pluginIcon.value.color,
2975
2975
  size: "md",
2976
2976
  variant: "solid"
2977
- }, null, 8, ["icon", "tone"])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_4$39, [..._cache[19] || (_cache[19] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])], 8, _hoisted_3$39)) : __props.homePath ? (openBlock(), createBlock(_component_router_link, {
2977
+ }, null, 8, ["icon", "tone"])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_4$40, [..._cache[19] || (_cache[19] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])], 8, _hoisted_3$41)) : __props.homePath ? (openBlock(), createBlock(_component_router_link, {
2978
2978
  key: 1,
2979
2979
  to: __props.homePath,
2980
2980
  class: "mint-topbar-home-link"
@@ -2986,7 +2986,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
2986
2986
  tone: pluginIcon.value.color,
2987
2987
  size: "md",
2988
2988
  variant: "solid"
2989
- }, null, 8, ["icon", "tone"])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_5$37, [..._cache[20] || (_cache[20] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])]),
2989
+ }, null, 8, ["icon", "tone"])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_5$38, [..._cache[20] || (_cache[20] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])]),
2990
2990
  _: 3
2991
2991
  }, 8, ["to"])) : renderSlot(_ctx.$slots, "icon", { key: 2 }, () => [pluginIcon.value ? (openBlock(), createBlock(PluginIcon_default, {
2992
2992
  key: 0,
@@ -3178,14 +3178,14 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3178
3178
  });
3179
3179
  //#endregion
3180
3180
  //#region src/components/StepWizard.vue?vue&type=script&setup=true&lang.ts
3181
- var _hoisted_1$49 = {
3181
+ var _hoisted_1$50 = {
3182
3182
  key: 0,
3183
3183
  class: "mint-wizard__progress"
3184
3184
  };
3185
- var _hoisted_2$42 = { class: "mint-wizard__steps-indicator" };
3186
- var _hoisted_3$38 = ["onClick"];
3187
- var _hoisted_4$38 = { class: "mint-wizard__step-dot" };
3188
- var _hoisted_5$36 = {
3185
+ var _hoisted_2$43 = { class: "mint-wizard__steps-indicator" };
3186
+ var _hoisted_3$40 = ["onClick"];
3187
+ var _hoisted_4$39 = { class: "mint-wizard__step-dot" };
3188
+ var _hoisted_5$37 = {
3189
3189
  key: 0,
3190
3190
  width: "12",
3191
3191
  height: "12",
@@ -3294,18 +3294,18 @@ var StepWizard_default = /* @__PURE__ */ defineComponent({
3294
3294
  tabindex: "0",
3295
3295
  onKeydown: handleKeydown
3296
3296
  }, [
3297
- props.showProgress ? (openBlock(), createElementBlock("div", _hoisted_1$49, [renderSlot(_ctx.$slots, "progress", {
3297
+ props.showProgress ? (openBlock(), createElementBlock("div", _hoisted_1$50, [renderSlot(_ctx.$slots, "progress", {
3298
3298
  steps: props.steps,
3299
3299
  current: props.modelValue,
3300
3300
  states: stepStates.value
3301
- }, () => [createElementVNode("div", _hoisted_2$42, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.steps, (step, index) => {
3301
+ }, () => [createElementVNode("div", _hoisted_2$43, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.steps, (step, index) => {
3302
3302
  return openBlock(), createElementBlock(Fragment, { key: step.id }, [index > 0 ? (openBlock(), createElementBlock("div", {
3303
3303
  key: 0,
3304
3304
  class: normalizeClass(["mint-wizard__step-connector", stepStates.value[index - 1] === "completed" ? "mint-wizard__step-connector--completed" : ""])
3305
3305
  }, null, 2)) : createCommentVNode("", true), createElementVNode("div", {
3306
3306
  class: normalizeClass(["mint-wizard__step-indicator", `mint-wizard__step-indicator--${stepStates.value[index]}`]),
3307
3307
  onClick: ($event) => goToStep(index)
3308
- }, [createElementVNode("div", _hoisted_4$38, [stepStates.value[index] === "completed" ? (openBlock(), createElementBlock("svg", _hoisted_5$36, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "M20 6 9 17l-5-5" }, null, -1)])])) : props.showStepNumbers ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(index + 1), 1)], 64)) : createCommentVNode("", true)]), createElementVNode("div", _hoisted_6$35, toDisplayString(step.label), 1)], 10, _hoisted_3$38)], 64);
3308
+ }, [createElementVNode("div", _hoisted_4$39, [stepStates.value[index] === "completed" ? (openBlock(), createElementBlock("svg", _hoisted_5$37, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "M20 6 9 17l-5-5" }, null, -1)])])) : props.showStepNumbers ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(index + 1), 1)], 64)) : createCommentVNode("", true)]), createElementVNode("div", _hoisted_6$35, toDisplayString(step.label), 1)], 10, _hoisted_3$40)], 64);
3309
3309
  }), 128))])])])) : createCommentVNode("", true),
3310
3310
  createElementVNode("div", _hoisted_7$31, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.steps, (step, index) => {
3311
3311
  return withDirectives((openBlock(), createElementBlock("div", {
@@ -3357,23 +3357,23 @@ var StepWizard_default = /* @__PURE__ */ defineComponent({
3357
3357
  });
3358
3358
  //#endregion
3359
3359
  //#region src/components/internal/FormSectionRenderer.vue?vue&type=script&setup=true&lang.ts
3360
- var _hoisted_1$48 = {
3360
+ var _hoisted_1$49 = {
3361
3361
  key: 0,
3362
3362
  class: "mint-form-section"
3363
3363
  };
3364
- var _hoisted_2$41 = {
3364
+ var _hoisted_2$42 = {
3365
3365
  key: 1,
3366
3366
  class: "mint-form-section--static"
3367
3367
  };
3368
- var _hoisted_3$37 = {
3368
+ var _hoisted_3$39 = {
3369
3369
  key: 0,
3370
3370
  class: "mint-form-section__header"
3371
3371
  };
3372
- var _hoisted_4$37 = {
3372
+ var _hoisted_4$38 = {
3373
3373
  key: 0,
3374
3374
  class: "mint-form-section__title"
3375
3375
  };
3376
- var _hoisted_5$35 = {
3376
+ var _hoisted_5$36 = {
3377
3377
  key: 1,
3378
3378
  class: "mint-form-section__description"
3379
3379
  };
@@ -3390,7 +3390,7 @@ var FormSectionRenderer_default = /* @__PURE__ */ defineComponent({
3390
3390
  const visibleFields = computed(() => props.section.fields.filter((f) => props.builder.isFieldVisible(f.name)));
3391
3391
  const gridStyle = computed(() => ({ gridTemplateColumns: `repeat(${props.section.columns ?? 1}, 1fr)` }));
3392
3392
  return (_ctx, _cache) => {
3393
- return visibleFields.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$48, [renderSlot(_ctx.$slots, `section:${__props.section.id}`, {
3393
+ return visibleFields.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$49, [renderSlot(_ctx.$slots, `section:${__props.section.id}`, {
3394
3394
  section: __props.section,
3395
3395
  form: __props.builder.form
3396
3396
  }, () => [__props.section.collapsible ? (openBlock(), createBlock(CollapsibleCard_default, {
@@ -3425,7 +3425,7 @@ var FormSectionRenderer_default = /* @__PURE__ */ defineComponent({
3425
3425
  "title",
3426
3426
  "subtitle",
3427
3427
  "default-open"
3428
- ])) : (openBlock(), createElementBlock("div", _hoisted_2$41, [__props.section.title || __props.section.description ? (openBlock(), createElementBlock("div", _hoisted_3$37, [__props.section.title ? (openBlock(), createElementBlock("h3", _hoisted_4$37, toDisplayString(__props.section.title), 1)) : createCommentVNode("", true), __props.section.description ? (openBlock(), createElementBlock("p", _hoisted_5$35, toDisplayString(__props.section.description), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", {
3428
+ ])) : (openBlock(), createElementBlock("div", _hoisted_2$42, [__props.section.title || __props.section.description ? (openBlock(), createElementBlock("div", _hoisted_3$39, [__props.section.title ? (openBlock(), createElementBlock("h3", _hoisted_4$38, toDisplayString(__props.section.title), 1)) : createCommentVNode("", true), __props.section.description ? (openBlock(), createElementBlock("p", _hoisted_5$36, toDisplayString(__props.section.description), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", {
3429
3429
  class: "mint-form-section__grid",
3430
3430
  style: normalizeStyle(gridStyle.value)
3431
3431
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(visibleFields.value, (field) => {
@@ -3451,7 +3451,7 @@ var FormSectionRenderer_default = /* @__PURE__ */ defineComponent({
3451
3451
  });
3452
3452
  //#endregion
3453
3453
  //#region src/components/FormActions.vue?vue&type=script&setup=true&lang.ts
3454
- var _hoisted_1$47 = { class: "mint-form-actions" };
3454
+ var _hoisted_1$48 = { class: "mint-form-actions" };
3455
3455
  //#endregion
3456
3456
  //#region src/components/FormActions.vue
3457
3457
  var FormActions_default = /* @__PURE__ */ defineComponent({
@@ -3508,7 +3508,7 @@ var FormActions_default = /* @__PURE__ */ defineComponent({
3508
3508
  */
3509
3509
  const emit = __emit;
3510
3510
  return (_ctx, _cache) => {
3511
- return openBlock(), createElementBlock("div", _hoisted_1$47, [
3511
+ return openBlock(), createElementBlock("div", _hoisted_1$48, [
3512
3512
  __props.showCancel ? (openBlock(), createBlock(BaseButton_default, {
3513
3513
  key: 0,
3514
3514
  variant: "ghost",
@@ -3553,7 +3553,7 @@ var FormActions_default = /* @__PURE__ */ defineComponent({
3553
3553
  });
3554
3554
  //#endregion
3555
3555
  //#region src/components/FormBuilder.vue?vue&type=script&setup=true&lang.ts
3556
- var _hoisted_1$46 = { class: "mint-form-builder__step" };
3556
+ var _hoisted_1$47 = { class: "mint-form-builder__step" };
3557
3557
  //#endregion
3558
3558
  //#region src/components/FormBuilder.vue
3559
3559
  var FormBuilder_default = /* @__PURE__ */ defineComponent({
@@ -3697,7 +3697,7 @@ var FormBuilder_default = /* @__PURE__ */ defineComponent({
3697
3697
  }, createSlots({ _: 2 }, [renderList(resolvedSchema.value.steps, (step) => {
3698
3698
  return {
3699
3699
  name: `step-${step.id}`,
3700
- fn: withCtx(() => [createElementVNode("div", _hoisted_1$46, [(openBlock(true), createElementBlock(Fragment, null, renderList(step.sections, (section) => {
3700
+ fn: withCtx(() => [createElementVNode("div", _hoisted_1$47, [(openBlock(true), createElementBlock(Fragment, null, renderList(step.sections, (section) => {
3701
3701
  return openBlock(), createElementBlock(Fragment, { key: section.id }, [unref(builder).isSectionVisible(section.id) ? (openBlock(), createBlock(FormSectionRenderer_default, {
3702
3702
  key: 0,
3703
3703
  section,
@@ -3784,20 +3784,20 @@ var FormBuilder_default = /* @__PURE__ */ defineComponent({
3784
3784
  });
3785
3785
  //#endregion
3786
3786
  //#region src/components/AppSidebar.vue?vue&type=script&setup=true&lang.ts
3787
- var _hoisted_1$45 = {
3787
+ var _hoisted_1$46 = {
3788
3788
  key: 0,
3789
3789
  class: "mint-sidebar__header"
3790
3790
  };
3791
- var _hoisted_2$40 = {
3791
+ var _hoisted_2$41 = {
3792
3792
  key: 0,
3793
3793
  class: "mint-sidebar__heading"
3794
3794
  };
3795
- var _hoisted_3$36 = { class: "mint-sidebar__heading-copy" };
3796
- var _hoisted_4$36 = {
3795
+ var _hoisted_3$38 = { class: "mint-sidebar__heading-copy" };
3796
+ var _hoisted_4$37 = {
3797
3797
  key: 0,
3798
3798
  class: "mint-sidebar__title"
3799
3799
  };
3800
- var _hoisted_5$34 = {
3800
+ var _hoisted_5$35 = {
3801
3801
  key: 1,
3802
3802
  class: "mint-sidebar__subtitle"
3803
3803
  };
@@ -4071,10 +4071,10 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
4071
4071
  class: normalizeClass(sidebarClasses.value),
4072
4072
  style: normalizeStyle(sidebarStyle.value)
4073
4073
  }, [
4074
- _ctx.$slots.header || __props.title || __props.subtitle || __props.badge !== void 0 || resolvedCollapsible.value ? (openBlock(), createElementBlock("div", _hoisted_1$45, [renderSlot(_ctx.$slots, "header", {
4074
+ _ctx.$slots.header || __props.title || __props.subtitle || __props.badge !== void 0 || resolvedCollapsible.value ? (openBlock(), createElementBlock("div", _hoisted_1$46, [renderSlot(_ctx.$slots, "header", {
4075
4075
  collapsed: collapsedModel.value,
4076
4076
  toggleCollapsed
4077
- }, () => [!collapsedModel.value ? (openBlock(), createElementBlock("div", _hoisted_2$40, [createElementVNode("div", _hoisted_3$36, [__props.title ? (openBlock(), createElementBlock("h2", _hoisted_4$36, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.subtitle ? (openBlock(), createElementBlock("p", _hoisted_5$34, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true)]), __props.badge !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_6$34, toDisplayString(__props.badge), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), resolvedCollapsible.value ? (openBlock(), createElementBlock("button", {
4077
+ }, () => [!collapsedModel.value ? (openBlock(), createElementBlock("div", _hoisted_2$41, [createElementVNode("div", _hoisted_3$38, [__props.title ? (openBlock(), createElementBlock("h2", _hoisted_4$37, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.subtitle ? (openBlock(), createElementBlock("p", _hoisted_5$35, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true)]), __props.badge !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_6$34, toDisplayString(__props.badge), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), resolvedCollapsible.value ? (openBlock(), createElementBlock("button", {
4078
4078
  key: 1,
4079
4079
  type: "button",
4080
4080
  class: "mint-sidebar__collapse-button",
@@ -4193,13 +4193,13 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
4193
4193
  });
4194
4194
  //#endregion
4195
4195
  //#region src/components/AppLayout.vue?vue&type=script&setup=true&lang.ts
4196
- var _hoisted_1$44 = {
4196
+ var _hoisted_1$45 = {
4197
4197
  key: 0,
4198
4198
  class: "mint-layout__topbar"
4199
4199
  };
4200
- var _hoisted_2$39 = { class: "mint-layout__body" };
4201
- var _hoisted_3$35 = ["aria-label", "aria-expanded"];
4202
- var _hoisted_4$35 = {
4200
+ var _hoisted_2$40 = { class: "mint-layout__body" };
4201
+ var _hoisted_3$37 = ["aria-label", "aria-expanded"];
4202
+ var _hoisted_4$36 = {
4203
4203
  key: 0,
4204
4204
  class: "mint-layout__sidebar-toggle-icon",
4205
4205
  viewBox: "0 0 24 24",
@@ -4210,7 +4210,7 @@ var _hoisted_4$35 = {
4210
4210
  "stroke-linejoin": "round",
4211
4211
  "aria-hidden": "true"
4212
4212
  };
4213
- var _hoisted_5$33 = {
4213
+ var _hoisted_5$34 = {
4214
4214
  key: 1,
4215
4215
  class: "mint-layout__sidebar-toggle-icon",
4216
4216
  viewBox: "0 0 24 24",
@@ -4299,7 +4299,7 @@ var AppLayout_default = /* @__PURE__ */ defineComponent({
4299
4299
  sidebarOpenModel.value = false;
4300
4300
  }
4301
4301
  return (_ctx, _cache) => {
4302
- return openBlock(), createElementBlock("div", { class: normalizeClass(layoutClasses.value) }, [_ctx.$slots.topbar ? (openBlock(), createElementBlock("div", _hoisted_1$44, [renderSlot(_ctx.$slots, "topbar")])) : createCommentVNode("", true), createElementVNode("div", _hoisted_2$39, [
4302
+ return openBlock(), createElementBlock("div", { class: normalizeClass(layoutClasses.value) }, [_ctx.$slots.topbar ? (openBlock(), createElementBlock("div", _hoisted_1$45, [renderSlot(_ctx.$slots, "topbar")])) : createCommentVNode("", true), createElementVNode("div", _hoisted_2$40, [
4303
4303
  __props.responsiveSidebar && _ctx.$slots.sidebar ? (openBlock(), createElementBlock("button", {
4304
4304
  key: 0,
4305
4305
  type: "button",
@@ -4307,7 +4307,7 @@ var AppLayout_default = /* @__PURE__ */ defineComponent({
4307
4307
  "aria-label": sidebarOpenModel.value ? __props.sidebarCloseLabel : __props.sidebarToggleLabel,
4308
4308
  "aria-expanded": sidebarOpenModel.value,
4309
4309
  onClick: toggleSidebar
4310
- }, [!sidebarOpenModel.value ? (openBlock(), createElementBlock("svg", _hoisted_4$35, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "M4 6h16M4 12h16M4 18h16" }, null, -1)])])) : (openBlock(), createElementBlock("svg", _hoisted_5$33, [..._cache[1] || (_cache[1] = [createElementVNode("path", { d: "M6 18 18 6M6 6l12 12" }, null, -1)])]))], 8, _hoisted_3$35)) : createCommentVNode("", true),
4310
+ }, [!sidebarOpenModel.value ? (openBlock(), createElementBlock("svg", _hoisted_4$36, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "M4 6h16M4 12h16M4 18h16" }, null, -1)])])) : (openBlock(), createElementBlock("svg", _hoisted_5$34, [..._cache[1] || (_cache[1] = [createElementVNode("path", { d: "M6 18 18 6M6 6l12 12" }, null, -1)])]))], 8, _hoisted_3$37)) : createCommentVNode("", true),
4311
4311
  __props.responsiveSidebar && _ctx.$slots.sidebar && sidebarOpenModel.value ? (openBlock(), createElementBlock("div", {
4312
4312
  key: 1,
4313
4313
  class: "mint-layout__sidebar-backdrop",
@@ -4324,6 +4324,74 @@ var AppLayout_default = /* @__PURE__ */ defineComponent({
4324
4324
  }
4325
4325
  });
4326
4326
  //#endregion
4327
+ //#region src/components/MobileSupportGate.vue?vue&type=script&setup=true&lang.ts
4328
+ var _hoisted_1$44 = { class: "mint-mobile-support-gate__panel" };
4329
+ var _hoisted_2$39 = { class: "mint-mobile-support-gate__copy" };
4330
+ var _hoisted_3$36 = { class: "mint-mobile-support-gate__eyebrow" };
4331
+ var _hoisted_4$35 = { class: "mint-mobile-support-gate__message" };
4332
+ var _hoisted_5$33 = { class: "mint-mobile-support-gate__hint" };
4333
+ var nextMobileSupportGateTitleId = 0;
4334
+ //#endregion
4335
+ //#region src/components/MobileSupportGate.vue
4336
+ var MobileSupportGate_default = /* @__PURE__ */ defineComponent({
4337
+ __name: "MobileSupportGate",
4338
+ props: {
4339
+ supported: {
4340
+ type: Boolean,
4341
+ default: true
4342
+ },
4343
+ mediaQuery: { default: DEFAULT_MOBILE_VIEWPORT_QUERY },
4344
+ appName: { default: "MINT" },
4345
+ title: { default: "Desktop workspace recommended" },
4346
+ message: { default: "This workspace is optimized for a wider desktop screen and is not supported on mobile." },
4347
+ desktopLabel: { default: "Open this page from a desktop browser to use the full workflow." }
4348
+ },
4349
+ setup(__props) {
4350
+ const props = __props;
4351
+ const titleId = `mint-mobile-support-title-${++nextMobileSupportGateTitleId}`;
4352
+ const { isMobileViewport, isSupported, shouldShowUnsupported } = useMobileSupportGate({
4353
+ supported: computed(() => props.supported),
4354
+ mediaQuery: computed(() => props.mediaQuery)
4355
+ });
4356
+ return (_ctx, _cache) => {
4357
+ return unref(shouldShowUnsupported) ? (openBlock(), createElementBlock("div", {
4358
+ key: 0,
4359
+ class: "mint-mobile-support-gate",
4360
+ role: "main",
4361
+ "aria-labelledby": titleId,
4362
+ "data-testid": "mobile-unsupported"
4363
+ }, [renderSlot(_ctx.$slots, "unsupported", {
4364
+ isMobileViewport: unref(isMobileViewport),
4365
+ isSupported: unref(isSupported)
4366
+ }, () => [createElementVNode("section", _hoisted_1$44, [
4367
+ _cache[1] || (_cache[1] = createStaticVNode("<div class=\"mint-mobile-support-gate__mark\" aria-hidden=\"true\"><svg class=\"mint-mobile-support-gate__icon\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"12\" rx=\"2\"></rect><path d=\"M8 20h8\"></path><path d=\"M12 16v4\"></path></svg></div>", 1)),
4368
+ createElementVNode("div", _hoisted_2$39, [
4369
+ createElementVNode("p", _hoisted_3$36, toDisplayString(__props.appName), 1),
4370
+ createElementVNode("h1", {
4371
+ id: titleId,
4372
+ class: "mint-mobile-support-gate__title"
4373
+ }, toDisplayString(__props.title), 1),
4374
+ createElementVNode("p", _hoisted_4$35, toDisplayString(__props.message), 1)
4375
+ ]),
4376
+ createElementVNode("div", _hoisted_5$33, [_cache[0] || (_cache[0] = createElementVNode("svg", {
4377
+ class: "mint-mobile-support-gate__hint-icon",
4378
+ viewBox: "0 0 24 24",
4379
+ fill: "none",
4380
+ stroke: "currentColor",
4381
+ "stroke-width": "2",
4382
+ "stroke-linecap": "round",
4383
+ "stroke-linejoin": "round",
4384
+ "aria-hidden": "true"
4385
+ }, [createElementVNode("path", { d: "M12 20h9" }), createElementVNode("path", { d: "M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z" })], -1)), createElementVNode("span", null, toDisplayString(__props.desktopLabel), 1)])
4386
+ ])])])) : renderSlot(_ctx.$slots, "default", {
4387
+ key: 1,
4388
+ isMobileViewport: unref(isMobileViewport),
4389
+ isSupported: unref(isSupported)
4390
+ });
4391
+ };
4392
+ }
4393
+ });
4394
+ //#endregion
4327
4395
  //#region src/components/PluginWorkspaceView.controls.ts
4328
4396
  function usePluginWorkspaceControls(options) {
4329
4397
  const resolvedModel = computed(() => resolveControlModel(options.model()));
@@ -4911,7 +4979,7 @@ var PluginWorkspaceView_default = /* @__PURE__ */ defineComponent({
4911
4979
  //#region src/components/DoseCalculatorVolumeField.vue?vue&type=script&setup=true&lang.ts
4912
4980
  var _hoisted_1$43 = { class: "mint-dose-calculator__field" };
4913
4981
  var _hoisted_2$38 = { class: "mint-dose-calculator__field-label" };
4914
- var _hoisted_3$34 = { class: "mint-dose-calculator__field-row" };
4982
+ var _hoisted_3$35 = { class: "mint-dose-calculator__field-row" };
4915
4983
  var _hoisted_4$34 = ["value", "disabled"];
4916
4984
  var _hoisted_5$32 = ["value", "disabled"];
4917
4985
  var _hoisted_6$32 = ["value"];
@@ -4950,7 +5018,7 @@ var DoseCalculatorVolumeField_default = /* @__PURE__ */ defineComponent({
4950
5018
  });
4951
5019
  }
4952
5020
  return (_ctx, _cache) => {
4953
- return openBlock(), createElementBlock("div", _hoisted_1$43, [createElementVNode("label", _hoisted_2$38, toDisplayString(__props.label), 1), createElementVNode("div", _hoisted_3$34, [createElementVNode("input", {
5021
+ return openBlock(), createElementBlock("div", _hoisted_1$43, [createElementVNode("label", _hoisted_2$38, toDisplayString(__props.label), 1), createElementVNode("div", _hoisted_3$35, [createElementVNode("input", {
4954
5022
  type: "number",
4955
5023
  value: __props.modelValue.value,
4956
5024
  disabled: __props.disabled,
@@ -4980,7 +5048,7 @@ var _hoisted_1$42 = {
4980
5048
  role: "tablist"
4981
5049
  };
4982
5050
  var _hoisted_2$37 = ["aria-selected"];
4983
- var _hoisted_3$33 = ["aria-selected"];
5051
+ var _hoisted_3$34 = ["aria-selected"];
4984
5052
  var _hoisted_4$33 = ["aria-selected"];
4985
5053
  var _hoisted_5$31 = {
4986
5054
  key: 1,
@@ -5181,7 +5249,7 @@ var DoseCalculator_default = /* @__PURE__ */ defineComponent({
5181
5249
  role: "tab",
5182
5250
  "aria-selected": activeMode.value === "serial",
5183
5251
  onClick: _cache[1] || (_cache[1] = ($event) => activeMode.value = "serial")
5184
- }, " Serial ", 10, _hoisted_3$33),
5252
+ }, " Serial ", 10, _hoisted_3$34),
5185
5253
  createElementVNode("button", {
5186
5254
  type: "button",
5187
5255
  class: normalizeClass(["mint-dose-calculator__tab", activeMode.value === "conversion" ? "mint-dose-calculator__tab--active" : ""]),
@@ -5335,7 +5403,7 @@ var _hoisted_2$36 = [
5335
5403
  "onDragover",
5336
5404
  "onDrop"
5337
5405
  ];
5338
- var _hoisted_3$32 = {
5406
+ var _hoisted_3$33 = {
5339
5407
  key: 0,
5340
5408
  class: "mint-timeline__connector"
5341
5409
  };
@@ -5547,7 +5615,7 @@ var ExperimentTimeline_default = /* @__PURE__ */ defineComponent({
5547
5615
  onDrop: ($event) => handleDrop($event, step),
5548
5616
  onDragend: handleDragEnd
5549
5617
  }, [
5550
- index < sortedSteps.value.length - 1 ? (openBlock(), createElementBlock("div", _hoisted_3$32)) : createCommentVNode("", true),
5618
+ index < sortedSteps.value.length - 1 ? (openBlock(), createElementBlock("div", _hoisted_3$33)) : createCommentVNode("", true),
5551
5619
  createElementVNode("div", {
5552
5620
  class: normalizeClass([
5553
5621
  "mint-timeline__card",
@@ -5691,7 +5759,7 @@ var ExperimentTimeline_default = /* @__PURE__ */ defineComponent({
5691
5759
  //#region src/components/internal/WellEditPopupInternal.vue?vue&type=script&setup=true&lang.ts
5692
5760
  var _hoisted_1$40 = { class: "mint-well-edit-popup__header" };
5693
5761
  var _hoisted_2$35 = { class: "mint-well-edit-popup__header-left" };
5694
- var _hoisted_3$31 = { class: "mint-well-edit-popup__well-id" };
5762
+ var _hoisted_3$32 = { class: "mint-well-edit-popup__well-id" };
5695
5763
  var _hoisted_4$31 = { class: "mint-well-edit-popup__body" };
5696
5764
  var _hoisted_5$29 = { key: 0 };
5697
5765
  var _hoisted_6$29 = { class: "mint-well-edit-popup__row" };
@@ -5811,7 +5879,7 @@ var WellEditPopupInternal_default = /* @__PURE__ */ defineComponent({
5811
5879
  style: normalizeStyle(popupStyle.value),
5812
5880
  onClick: _cache[5] || (_cache[5] = withModifiers(() => {}, ["stop"]))
5813
5881
  }, [
5814
- createElementVNode("div", _hoisted_1$40, [createElementVNode("div", _hoisted_2$35, [createElementVNode("span", _hoisted_3$31, toDisplayString(__props.wellId), 1), _cache[6] || (_cache[6] = createElementVNode("span", { class: "mint-well-edit-popup__title" }, "Edit Well", -1))]), createElementVNode("button", {
5882
+ createElementVNode("div", _hoisted_1$40, [createElementVNode("div", _hoisted_2$35, [createElementVNode("span", _hoisted_3$32, toDisplayString(__props.wellId), 1), _cache[6] || (_cache[6] = createElementVNode("span", { class: "mint-well-edit-popup__title" }, "Edit Well", -1))]), createElementVNode("button", {
5815
5883
  class: "mint-well-edit-popup__close",
5816
5884
  onClick: close
5817
5885
  }, [..._cache[7] || (_cache[7] = [createElementVNode("svg", {
@@ -6512,7 +6580,7 @@ var DEFAULT_WELL_LEGEND_ITEMS = [
6512
6580
  //#region src/components/WellPlate.vue?vue&type=script&setup=true&lang.ts
6513
6581
  var _hoisted_1$39 = { class: "mint-well-plate__scroll" };
6514
6582
  var _hoisted_2$34 = { class: "mint-well-plate__content" };
6515
- var _hoisted_3$30 = ["aria-label"];
6583
+ var _hoisted_3$31 = ["aria-label"];
6516
6584
  var _hoisted_4$30 = { key: 0 };
6517
6585
  var _hoisted_5$28 = ["colspan"];
6518
6586
  var _hoisted_6$28 = ["colspan"];
@@ -6871,7 +6939,7 @@ var WellPlate_default = /* @__PURE__ */ defineComponent({
6871
6939
  }), 128))
6872
6940
  ]);
6873
6941
  }), 128))])
6874
- ], 12, _hoisted_3$30),
6942
+ ], 12, _hoisted_3$31),
6875
6943
  props.heatmap?.enabled && props.heatmap.showLegend ? (openBlock(), createElementBlock("div", _hoisted_16$11, [
6876
6944
  createElementVNode("span", _hoisted_17$11, toDisplayString(props.heatmap.min ?? 0), 1),
6877
6945
  createElementVNode("div", _hoisted_18$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.heatmap.colorScale === "custom" && props.heatmap.customColors?.length ? props.heatmap.customColors : unref(HEATMAP_COLORS)[props.heatmap.colorScale || "viridis"], (color, index) => {
@@ -7056,7 +7124,7 @@ var SampleLegend_default = /* @__PURE__ */ defineComponent({
7056
7124
  //#region src/components/internal/PlateMapEditorToolbarInternal.vue?vue&type=script&setup=true&lang.ts
7057
7125
  var _hoisted_1$37 = { class: "mint-plate-editor__toolbar" };
7058
7126
  var _hoisted_2$32 = { class: "mint-plate-editor__tabs" };
7059
- var _hoisted_3$29 = ["onClick"];
7127
+ var _hoisted_3$30 = ["onClick"];
7060
7128
  var _hoisted_4$29 = { class: "mint-plate-editor__tab-name" };
7061
7129
  var _hoisted_5$27 = {
7062
7130
  key: 0,
@@ -7121,7 +7189,7 @@ var PlateMapEditorToolbarInternal_default = /* @__PURE__ */ defineComponent({
7121
7189
  "stroke-linecap": "round",
7122
7190
  "stroke-linejoin": "round"
7123
7191
  }, [createElementVNode("path", { d: "M18 6 6 18" }), createElementVNode("path", { d: "m6 6 12 12" })], -1)])], 8, _hoisted_6$27)) : createCommentVNode("", true)
7124
- ], 10, _hoisted_3$29);
7192
+ ], 10, _hoisted_3$30);
7125
7193
  }), 128)), __props.canAddPlate ? (openBlock(), createElementBlock("button", {
7126
7194
  key: 0,
7127
7195
  type: "button",
@@ -7213,7 +7281,7 @@ var _hoisted_2$31 = {
7213
7281
  key: 2,
7214
7282
  class: "mint-plate-editor__selection-bar"
7215
7283
  };
7216
- var _hoisted_3$28 = { class: "mint-plate-editor__selection-count" };
7284
+ var _hoisted_3$29 = { class: "mint-plate-editor__selection-count" };
7217
7285
  var _hoisted_4$28 = {
7218
7286
  key: 0,
7219
7287
  class: "mint-plate-editor__sidebar"
@@ -7456,7 +7524,7 @@ var PlateMapEditor_default = /* @__PURE__ */ defineComponent({
7456
7524
  "size"
7457
7525
  ])) : createCommentVNode("", true),
7458
7526
  unref(editor).selectedWells.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_2$31, [
7459
- createElementVNode("span", _hoisted_3$28, [createElementVNode("strong", null, toDisplayString(unref(editor).selectedWells.value.length), 1), _cache[8] || (_cache[8] = createTextVNode(" wells selected ", -1))]),
7527
+ createElementVNode("span", _hoisted_3$29, [createElementVNode("strong", null, toDisplayString(unref(editor).selectedWells.value.length), 1), _cache[8] || (_cache[8] = createTextVNode(" wells selected ", -1))]),
7460
7528
  _cache[9] || (_cache[9] = createElementVNode("div", { class: "mint-plate-editor__spacer" }, null, -1)),
7461
7529
  unref(editor).activeSampleId.value ? (openBlock(), createElementBlock("button", {
7462
7530
  key: 0,
@@ -7599,7 +7667,7 @@ function getReagentRowClasses(reagent, options) {
7599
7667
  //#region src/components/ReagentList.vue?vue&type=script&setup=true&lang.ts
7600
7668
  var _hoisted_1$35 = { class: "mint-reagent-list" };
7601
7669
  var _hoisted_2$30 = { class: "mint-reagent-list__header" };
7602
- var _hoisted_3$27 = {
7670
+ var _hoisted_3$28 = {
7603
7671
  key: 0,
7604
7672
  class: "mint-reagent-list__search"
7605
7673
  };
@@ -7848,7 +7916,7 @@ var ReagentList_default = /* @__PURE__ */ defineComponent({
7848
7916
  dragOverId.value = null;
7849
7917
  }
7850
7918
  return (_ctx, _cache) => {
7851
- return openBlock(), createElementBlock("div", _hoisted_1$35, [createElementVNode("div", _hoisted_2$30, [__props.searchable ? (openBlock(), createElementBlock("div", _hoisted_3$27, [_cache[1] || (_cache[1] = createElementVNode("svg", {
7919
+ return openBlock(), createElementBlock("div", _hoisted_1$35, [createElementVNode("div", _hoisted_2$30, [__props.searchable ? (openBlock(), createElementBlock("div", _hoisted_3$28, [_cache[1] || (_cache[1] = createElementVNode("svg", {
7852
7920
  class: "mint-reagent-list__search-icon",
7853
7921
  fill: "none",
7854
7922
  stroke: "currentColor",
@@ -8050,144 +8118,252 @@ var LoadingSpinner_default = /* @__PURE__ */ defineComponent({
8050
8118
  }
8051
8119
  });
8052
8120
  //#endregion
8121
+ //#region src/components/SampleSelector.colors.ts
8122
+ var DEFAULT_COLOR_PICKER_SEED = "#3B82F6";
8123
+ var SAMPLE_GROUP_COLOR_OPTIONS = DEFAULT_COLORS.slice(0, 5);
8124
+ function applySampleGroupColorEdit(groups, edit, color) {
8125
+ const targets = edit.kind === "family" ? new Set(edit.names) : new Set([edit.name]);
8126
+ return groups.map((group) => targets.has(group.name) ? {
8127
+ ...group,
8128
+ color
8129
+ } : group);
8130
+ }
8131
+ function getSampleGroupColorEditSeed(edit, getGroupColor) {
8132
+ if (!edit) return DEFAULT_COLOR_PICKER_SEED;
8133
+ return getGroupColor(edit.kind === "family" ? edit.names[0] : edit.name);
8134
+ }
8135
+ function pickUnusedSampleGroupColor(groups) {
8136
+ const usedColors = new Set(groups.map((group) => group.color));
8137
+ return DEFAULT_COLORS.find((color) => !usedColors.has(color)) || DEFAULT_COLORS[0];
8138
+ }
8139
+ function createSampleGroup(name, existingGroups, color) {
8140
+ const trimmedName = name.trim();
8141
+ if (!trimmedName) return null;
8142
+ return {
8143
+ name: trimmedName,
8144
+ color: color || pickUnusedSampleGroupColor(existingGroups),
8145
+ samples: []
8146
+ };
8147
+ }
8148
+ //#endregion
8053
8149
  //#region src/components/AutoGroupModal.vue?vue&type=script&setup=true&lang.ts
8054
8150
  var _hoisted_1$33 = { class: "mint-auto-group" };
8055
- var _hoisted_2$29 = { class: "mint-auto-group__input-step" };
8056
- var _hoisted_3$26 = { class: "mint-auto-group__mode-toggle" };
8057
- var _hoisted_4$26 = {
8151
+ var _hoisted_2$29 = {
8152
+ class: "mint-auto-group__workflow-tabs",
8153
+ role: "tablist",
8154
+ "aria-label": "Grouping workflow"
8155
+ };
8156
+ var _hoisted_3$27 = ["aria-selected"];
8157
+ var _hoisted_4$26 = ["aria-selected"];
8158
+ var _hoisted_5$24 = {
8159
+ key: 0,
8160
+ class: "mint-auto-group__manual-summary"
8161
+ };
8162
+ var _hoisted_6$24 = {
8163
+ class: "mint-auto-group__manual-stats",
8164
+ "aria-label": "Manual grouping status"
8165
+ };
8166
+ var _hoisted_7$22 = { class: "mint-auto-group__input-step" };
8167
+ var _hoisted_8$19 = { class: "mint-auto-group__mode-toggle" };
8168
+ var _hoisted_9$17 = {
8058
8169
  key: 0,
8059
8170
  class: "mint-auto-group__experiment"
8060
8171
  };
8061
- var _hoisted_5$24 = {
8172
+ var _hoisted_10$16 = {
8062
8173
  key: 0,
8063
8174
  class: "mint-auto-group__experiment-loading"
8064
8175
  };
8065
- var _hoisted_6$24 = {
8176
+ var _hoisted_11$14 = {
8066
8177
  key: 1,
8067
8178
  class: "mint-auto-group__experiment-error"
8068
8179
  };
8069
- var _hoisted_7$22 = {
8180
+ var _hoisted_12$13 = {
8070
8181
  key: 2,
8071
8182
  class: "mint-auto-group__experiment-loaded"
8072
8183
  };
8073
- var _hoisted_8$19 = { class: "mint-auto-group__experiment-summary" };
8074
- var _hoisted_9$17 = { class: "mint-auto-group__experiment-stat" };
8075
- var _hoisted_10$16 = { class: "mint-auto-group__experiment-stat" };
8076
- var _hoisted_11$14 = { class: "mint-auto-group__experiment-fields" };
8077
- var _hoisted_12$13 = {
8184
+ var _hoisted_13$13 = { class: "mint-auto-group__experiment-summary" };
8185
+ var _hoisted_14$11 = { class: "mint-auto-group__experiment-stat" };
8186
+ var _hoisted_15$10 = { class: "mint-auto-group__experiment-stat" };
8187
+ var _hoisted_16$9 = { class: "mint-auto-group__experiment-fields" };
8188
+ var _hoisted_17$9 = {
8078
8189
  key: 1,
8079
8190
  class: "mint-auto-group__paste"
8080
8191
  };
8081
- var _hoisted_13$13 = {
8192
+ var _hoisted_18$9 = {
8082
8193
  key: 0,
8083
8194
  class: "mint-auto-group__sample-count"
8084
8195
  };
8085
- var _hoisted_14$11 = {
8196
+ var _hoisted_19$9 = {
8086
8197
  key: 2,
8087
8198
  class: "mint-auto-group__csv"
8088
8199
  };
8089
- var _hoisted_15$10 = {
8200
+ var _hoisted_20$8 = {
8090
8201
  key: 1,
8091
8202
  class: "mint-auto-group__csv-error"
8092
8203
  };
8093
- var _hoisted_16$9 = {
8204
+ var _hoisted_21$7 = {
8094
8205
  key: 2,
8095
8206
  class: "mint-auto-group__file-info"
8096
8207
  };
8097
- var _hoisted_17$9 = { class: "mint-auto-group__file-name" };
8098
- var _hoisted_18$9 = { class: "mint-auto-group__file-rows" };
8099
- var _hoisted_19$9 = {
8208
+ var _hoisted_22$6 = { class: "mint-auto-group__file-name" };
8209
+ var _hoisted_23$5 = { class: "mint-auto-group__file-rows" };
8210
+ var _hoisted_24$5 = {
8100
8211
  key: 3,
8101
8212
  class: "mint-auto-group__template"
8102
8213
  };
8103
- var _hoisted_20$8 = { class: "mint-auto-group__template-actions" };
8104
- var _hoisted_21$7 = { class: "mint-auto-group__workspace" };
8105
- var _hoisted_22$6 = {
8214
+ var _hoisted_25$5 = { class: "mint-auto-group__template-actions" };
8215
+ var _hoisted_26$5 = { class: "mint-auto-group__workspace" };
8216
+ var _hoisted_27$4 = {
8106
8217
  class: "mint-auto-group__classes",
8107
8218
  "aria-label": "Detected sample classes"
8108
8219
  };
8109
- var _hoisted_23$5 = ["onClick"];
8110
- var _hoisted_24$5 = { class: "mint-auto-group__class-label" };
8111
- var _hoisted_25$5 = { class: "mint-auto-group__class-count" };
8112
- var _hoisted_26$5 = { class: "mint-auto-group__routing" };
8113
- var _hoisted_27$4 = { class: "mint-auto-group__routing-radio" };
8114
- var _hoisted_28$3 = ["checked"];
8115
- var _hoisted_29$2 = { class: "mint-auto-group__routing-radio" };
8116
- var _hoisted_30$2 = ["checked"];
8117
- var _hoisted_31$2 = { class: "mint-auto-group__routing-radio" };
8118
- var _hoisted_32$2 = ["checked"];
8119
- var _hoisted_33$2 = {
8220
+ var _hoisted_28$3 = ["onClick"];
8221
+ var _hoisted_29$2 = { class: "mint-auto-group__class-label" };
8222
+ var _hoisted_30$2 = { class: "mint-auto-group__class-count" };
8223
+ var _hoisted_31$2 = { class: "mint-auto-group__routing" };
8224
+ var _hoisted_32$2 = { class: "mint-auto-group__routing-radio" };
8225
+ var _hoisted_33$2 = ["checked"];
8226
+ var _hoisted_34$2 = { class: "mint-auto-group__routing-radio" };
8227
+ var _hoisted_35$2 = ["checked"];
8228
+ var _hoisted_36$2 = { class: "mint-auto-group__routing-radio" };
8229
+ var _hoisted_37$2 = ["checked"];
8230
+ var _hoisted_38$2 = {
8120
8231
  class: "mint-auto-group__schema",
8121
8232
  "aria-label": "Schema editor"
8122
8233
  };
8123
- var _hoisted_34$2 = { class: "mint-auto-group__stats" };
8124
- var _hoisted_35$2 = { class: "mint-auto-group__stat mint-auto-group__stat--primary" };
8125
- var _hoisted_36$2 = { class: "mint-auto-group__stat-v" };
8126
- var _hoisted_37$2 = { class: "mint-auto-group__stat-sub" };
8127
- var _hoisted_38$2 = {
8234
+ var _hoisted_39$2 = { class: "mint-auto-group__stats" };
8235
+ var _hoisted_40$1 = { class: "mint-auto-group__stat mint-auto-group__stat--primary" };
8236
+ var _hoisted_41$1 = { class: "mint-auto-group__stat-v" };
8237
+ var _hoisted_42 = { class: "mint-auto-group__stat-sub" };
8238
+ var _hoisted_43 = {
8128
8239
  key: 0,
8129
8240
  class: "mint-auto-group__stat-empty"
8130
8241
  };
8131
- var _hoisted_39$1 = { class: "mint-auto-group__stat" };
8132
- var _hoisted_40$1 = { class: "mint-auto-group__stat-v" };
8133
- var _hoisted_41$1 = { class: "mint-auto-group__stat-sub mint-auto-group__stat-sub--muted" };
8134
- var _hoisted_42 = { class: "mint-auto-group__stat" };
8135
- var _hoisted_43 = { class: "mint-auto-group__stat-v" };
8136
- var _hoisted_44 = { class: "mint-auto-group__stat-sub mint-auto-group__stat-sub--muted" };
8137
- var _hoisted_45 = {
8242
+ var _hoisted_44 = { class: "mint-auto-group__stat" };
8243
+ var _hoisted_45 = { class: "mint-auto-group__stat-v" };
8244
+ var _hoisted_46 = { class: "mint-auto-group__stat-sub mint-auto-group__stat-sub--muted" };
8245
+ var _hoisted_47 = { class: "mint-auto-group__stat" };
8246
+ var _hoisted_48 = { class: "mint-auto-group__stat-v" };
8247
+ var _hoisted_49 = { class: "mint-auto-group__stat-sub mint-auto-group__stat-sub--muted" };
8248
+ var _hoisted_50 = {
8138
8249
  key: 0,
8139
8250
  class: "mint-auto-group__suggest"
8140
8251
  };
8141
- var _hoisted_46 = {
8252
+ var _hoisted_51 = {
8142
8253
  class: "mint-auto-group__token-table",
8143
8254
  role: "table",
8144
8255
  "aria-label": "Token positions"
8145
8256
  };
8146
- var _hoisted_47 = ["onClick"];
8147
- var _hoisted_48 = {
8257
+ var _hoisted_52 = ["onClick"];
8258
+ var _hoisted_53 = {
8148
8259
  class: "mint-auto-group__token-ix",
8149
8260
  role: "cell"
8150
8261
  };
8151
- var _hoisted_49 = {
8262
+ var _hoisted_54 = {
8152
8263
  class: "mint-auto-group__token-nm",
8153
8264
  role: "cell"
8154
8265
  };
8155
- var _hoisted_50 = {
8266
+ var _hoisted_55 = {
8156
8267
  class: "mint-auto-group__token-unique",
8157
8268
  role: "cell"
8158
8269
  };
8159
- var _hoisted_51 = {
8270
+ var _hoisted_56 = {
8160
8271
  class: "mint-auto-group__token-preview",
8161
8272
  role: "cell"
8162
8273
  };
8163
- var _hoisted_52 = {
8274
+ var _hoisted_57 = {
8164
8275
  key: 0,
8165
8276
  class: "mint-auto-group__token-more"
8166
8277
  };
8167
- var _hoisted_53 = ["checked", "onChange"];
8168
- var _hoisted_54 = { class: "mint-auto-group__popover-head" };
8169
- var _hoisted_55 = { class: "mono" };
8170
- var _hoisted_56 = { class: "mint-auto-group__popover-section" };
8171
- var _hoisted_57 = { class: "mint-auto-group__pills" };
8172
- var _hoisted_58 = ["onClick"];
8173
- var _hoisted_59 = { class: "mint-auto-group__popover-section" };
8174
- var _hoisted_60 = { class: "mint-auto-group__popover-section" };
8175
- var _hoisted_61 = { class: "mint-auto-group__popover-label" };
8176
- var _hoisted_62 = { class: "mint-auto-group__values-list" };
8177
- var _hoisted_63 = { class: "mint-auto-group__value-src" };
8178
- var _hoisted_64 = ["value", "onChange"];
8179
- var _hoisted_65 = { class: "mint-auto-group__value-excl" };
8180
- var _hoisted_66 = ["checked", "onChange"];
8181
- var _hoisted_67 = { class: "mint-auto-group__preview" };
8182
- var _hoisted_68 = { class: "mint-auto-group__preview-summary" };
8183
- var _hoisted_69 = { class: "mint-auto-group__preview-grid" };
8184
- var _hoisted_70 = { class: "mint-auto-group__preview-panel" };
8185
- var _hoisted_71 = { class: "mint-auto-group__preview-count" };
8186
- var _hoisted_72 = { class: "mint-auto-group__preview-samples" };
8187
- var _hoisted_73 = { class: "mint-auto-group__preview-panel" };
8188
- var _hoisted_74 = { class: "mint-auto-group__qc-chips" };
8189
- var _hoisted_75 = { class: "mint-auto-group__fingerprint" };
8190
- var _hoisted_76 = { class: "mint-auto-group__nav" };
8278
+ var _hoisted_58 = ["checked", "onChange"];
8279
+ var _hoisted_59 = { class: "mint-auto-group__popover-head" };
8280
+ var _hoisted_60 = { class: "mono" };
8281
+ var _hoisted_61 = { class: "mint-auto-group__popover-section" };
8282
+ var _hoisted_62 = { class: "mint-auto-group__pills" };
8283
+ var _hoisted_63 = ["onClick"];
8284
+ var _hoisted_64 = { class: "mint-auto-group__popover-section" };
8285
+ var _hoisted_65 = { class: "mint-auto-group__popover-section" };
8286
+ var _hoisted_66 = { class: "mint-auto-group__popover-label" };
8287
+ var _hoisted_67 = { class: "mint-auto-group__values-list" };
8288
+ var _hoisted_68 = { class: "mint-auto-group__value-src" };
8289
+ var _hoisted_69 = ["value", "onChange"];
8290
+ var _hoisted_70 = { class: "mint-auto-group__value-excl" };
8291
+ var _hoisted_71 = ["checked", "onChange"];
8292
+ var _hoisted_72 = { class: "mint-auto-group__preview" };
8293
+ var _hoisted_73 = { class: "mint-auto-group__preview-summary" };
8294
+ var _hoisted_74 = { class: "mint-auto-group__preview-grid" };
8295
+ var _hoisted_75 = { class: "mint-auto-group__preview-panel" };
8296
+ var _hoisted_76 = { class: "mint-auto-group__preview-count" };
8297
+ var _hoisted_77 = { class: "mint-auto-group__preview-samples" };
8298
+ var _hoisted_78 = { class: "mint-auto-group__preview-panel" };
8299
+ var _hoisted_79 = { class: "mint-auto-group__qc-chips" };
8300
+ var _hoisted_80 = { class: "mint-auto-group__fingerprint" };
8301
+ var _hoisted_81 = { class: "mint-auto-group__nav" };
8302
+ var _hoisted_82 = {
8303
+ key: 1,
8304
+ class: "mint-auto-group__manual-mode"
8305
+ };
8306
+ var _hoisted_83 = { class: "mint-auto-group__manual-grid" };
8307
+ var _hoisted_84 = {
8308
+ class: "mint-auto-group__manual-panel",
8309
+ "aria-label": "Manual sample selection"
8310
+ };
8311
+ var _hoisted_85 = { class: "mint-auto-group__manual-panel-head" };
8312
+ var _hoisted_86 = { class: "mint-auto-group__manual-panel-meta" };
8313
+ var _hoisted_87 = { class: "mint-auto-group__manual-filter" };
8314
+ var _hoisted_88 = { class: "mint-auto-group__manual-search" };
8315
+ var _hoisted_89 = { class: "mint-auto-group__manual-selectbar" };
8316
+ var _hoisted_90 = [
8317
+ "checked",
8318
+ "indeterminate",
8319
+ "disabled"
8320
+ ];
8321
+ var _hoisted_91 = { class: "mint-auto-group__manual-selectbar-count" };
8322
+ var _hoisted_92 = { class: "mint-auto-group__manual-list" };
8323
+ var _hoisted_93 = ["title"];
8324
+ var _hoisted_94 = ["checked", "onChange"];
8325
+ var _hoisted_95 = { class: "mint-auto-group__manual-sample-name" };
8326
+ var _hoisted_96 = { class: "mint-auto-group__manual-tooltip" };
8327
+ var _hoisted_97 = {
8328
+ key: 0,
8329
+ class: "mint-auto-group__manual-empty"
8330
+ };
8331
+ var _hoisted_98 = { class: "mint-auto-group__manual-selection-footer" };
8332
+ var _hoisted_99 = ["disabled"];
8333
+ var _hoisted_100 = {
8334
+ class: "mint-auto-group__manual-panel",
8335
+ "aria-label": "Manual cohort assignment"
8336
+ };
8337
+ var _hoisted_101 = { class: "mint-auto-group__manual-selected-summary" };
8338
+ var _hoisted_102 = { class: "mint-auto-group__manual-fields" };
8339
+ var _hoisted_103 = { class: "mint-auto-group__manual-field" };
8340
+ var _hoisted_104 = { class: "mint-auto-group__manual-combo" };
8341
+ var _hoisted_105 = { id: "mint-auto-group-manual-groups" };
8342
+ var _hoisted_106 = ["value"];
8343
+ var _hoisted_107 = { class: "mint-auto-group__manual-field" };
8344
+ var _hoisted_108 = { class: "mint-auto-group__manual-combo" };
8345
+ var _hoisted_109 = { id: "mint-auto-group-manual-subgroups" };
8346
+ var _hoisted_110 = ["value"];
8347
+ var _hoisted_111 = { class: "mint-auto-group__manual-field" };
8348
+ var _hoisted_112 = { class: "mint-auto-group__manual-swatches" };
8349
+ var _hoisted_113 = ["aria-label", "onClick"];
8350
+ var _hoisted_114 = { class: "mint-auto-group__manual-target" };
8351
+ var _hoisted_115 = { class: "mint-auto-group__manual-cohorts" };
8352
+ var _hoisted_116 = { class: "mint-auto-group__manual-cohorts-head" };
8353
+ var _hoisted_117 = ["title", "onClick"];
8354
+ var _hoisted_118 = { class: "mint-auto-group__manual-chip-main" };
8355
+ var _hoisted_119 = { class: "mint-auto-group__manual-chip-count" };
8356
+ var _hoisted_120 = ["title", "onClick"];
8357
+ var _hoisted_121 = { class: "mint-auto-group__manual-chip-sub" };
8358
+ var _hoisted_122 = { class: "mint-auto-group__manual-chip-count" };
8359
+ var _hoisted_123 = ["title", "onClick"];
8360
+ var _hoisted_124 = { class: "mint-auto-group__manual-chip-main" };
8361
+ var _hoisted_125 = { class: "mint-auto-group__manual-chip-count" };
8362
+ var _hoisted_126 = {
8363
+ key: 2,
8364
+ class: "mint-auto-group__manual-empty"
8365
+ };
8366
+ var _hoisted_127 = { class: "mint-auto-group__nav mint-auto-group__nav--manual" };
8191
8367
  //#endregion
8192
8368
  //#region src/components/AutoGroupModal.vue
8193
8369
  var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
@@ -8195,6 +8371,8 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8195
8371
  props: {
8196
8372
  modelValue: { type: Boolean },
8197
8373
  samples: { default: () => [] },
8374
+ groups: { default: () => [] },
8375
+ initialMode: { default: "auto" },
8198
8376
  experimentId: { default: void 0 },
8199
8377
  designData: { default: void 0 }
8200
8378
  },
@@ -8212,6 +8390,15 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8212
8390
  const experimentLoading = ref(false);
8213
8391
  const experimentError = ref(null);
8214
8392
  const csvError = ref(null);
8393
+ const activeWorkflow = ref("auto");
8394
+ const manualDraftGroups = ref([]);
8395
+ const manualSearchQuery = ref("");
8396
+ const manualUngroupedOnly = ref(true);
8397
+ const manualSelectedSamples = ref([]);
8398
+ const manualGroupName = ref("");
8399
+ const manualSubGroupName = ref("");
8400
+ const manualColorOptions = SAMPLE_GROUP_COLOR_OPTIONS;
8401
+ const manualSelectedColor = ref(manualColorOptions[0]);
8215
8402
  const openPopoverIdx = ref(null);
8216
8403
  const qcAsOverlay = ref(true);
8217
8404
  const excludeQc = ref(false);
@@ -8244,6 +8431,143 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8244
8431
  });
8245
8432
  const totalGrouped = computed(() => (autoGroup.result.value.experimentalGroups ?? []).reduce((acc, g) => acc + g.samples.length, 0));
8246
8433
  const totalQc = computed(() => (autoGroup.qcGroups.value ?? []).reduce((acc, g) => acc + g.samples.length, 0));
8434
+ function cloneGroups(groups) {
8435
+ return groups.map((group) => ({
8436
+ ...group,
8437
+ samples: [...group.samples]
8438
+ }));
8439
+ }
8440
+ function manualResetSelection() {
8441
+ manualSearchQuery.value = "";
8442
+ manualUngroupedOnly.value = true;
8443
+ manualSelectedSamples.value = [];
8444
+ manualGroupName.value = "";
8445
+ manualSubGroupName.value = "";
8446
+ manualSelectedColor.value = manualColorOptions[0];
8447
+ }
8448
+ function manualToggleSample(sample) {
8449
+ if (manualSelectedSet.value.has(sample)) manualSelectedSamples.value = manualSelectedSamples.value.filter((item) => item !== sample);
8450
+ else manualSelectedSamples.value = [...manualSelectedSamples.value, sample];
8451
+ }
8452
+ function manualSelectVisibleSamples() {
8453
+ const next = new Set(manualSelectedSamples.value);
8454
+ for (const sample of manualFilteredSamples.value) next.add(sample);
8455
+ manualSelectedSamples.value = [...next];
8456
+ }
8457
+ function manualClearSamples() {
8458
+ manualSelectedSamples.value = [];
8459
+ }
8460
+ function manualToggleVisibleSamples() {
8461
+ if (manualAllVisibleSelected.value) {
8462
+ manualSelectedSamples.value = manualSelectedSamples.value.filter((sample) => !manualVisibleSet.value.has(sample));
8463
+ return;
8464
+ }
8465
+ manualSelectVisibleSamples();
8466
+ }
8467
+ function manualGetSampleGroup(sample) {
8468
+ return manualDraftGroups.value.find((group) => group.samples.includes(sample));
8469
+ }
8470
+ function manualGetSampleStatus(sample) {
8471
+ return manualGetSampleGroup(sample)?.name.replace("/", " · ") || "unassigned";
8472
+ }
8473
+ function manualGetGroupPrimaryName(name) {
8474
+ return name.split("/")[0];
8475
+ }
8476
+ function manualGetGroupSecondaryName(name) {
8477
+ const separatorIndex = name.indexOf("/");
8478
+ return separatorIndex === -1 ? null : name.slice(separatorIndex + 1);
8479
+ }
8480
+ function manualChooseColor(color) {
8481
+ manualSelectedColor.value = color;
8482
+ }
8483
+ function manualUseExistingGroupAsTarget(name) {
8484
+ const existingGroup = manualDraftGroups.value.find((group) => group.name === name);
8485
+ if (existingGroup) manualSelectedColor.value = existingGroup.color;
8486
+ const separatorIndex = name.indexOf("/");
8487
+ if (separatorIndex === -1) {
8488
+ manualGroupName.value = name;
8489
+ manualSubGroupName.value = "";
8490
+ return;
8491
+ }
8492
+ manualGroupName.value = name.slice(0, separatorIndex);
8493
+ manualSubGroupName.value = name.slice(separatorIndex + 1);
8494
+ }
8495
+ function manualAssignSamplesToGroup() {
8496
+ const target = manualTargetGroupName.value;
8497
+ if (!manualCanAssign.value || !target) return;
8498
+ const selected = manualAssignableSamples.value;
8499
+ const selectedSet = new Set(selected);
8500
+ if (selectedSet.size === 0) return;
8501
+ let nextGroups = manualDraftGroups.value.map((group) => ({
8502
+ ...group,
8503
+ samples: group.samples.filter((sample) => !selectedSet.has(sample))
8504
+ }));
8505
+ const targetIndex = nextGroups.findIndex((group) => group.name === target);
8506
+ if (targetIndex === -1) {
8507
+ const newGroup = createSampleGroup(target, nextGroups, manualSelectedColor.value);
8508
+ if (!newGroup) return;
8509
+ nextGroups = [...nextGroups, {
8510
+ ...newGroup,
8511
+ samples: selected
8512
+ }];
8513
+ } else {
8514
+ const group = nextGroups[targetIndex];
8515
+ nextGroups[targetIndex] = {
8516
+ ...group,
8517
+ color: manualSelectedColor.value,
8518
+ samples: [...group.samples, ...selected.filter((sample) => !group.samples.includes(sample))]
8519
+ };
8520
+ }
8521
+ manualDraftGroups.value = nextGroups;
8522
+ manualSelectedSamples.value = [];
8523
+ }
8524
+ const manualSamples = computed(() => props.samples.length > 0 ? props.samples : autoGroup.samples.value);
8525
+ const manualSampleGroups = useSampleGroups({
8526
+ samples: () => manualSamples.value,
8527
+ groups: computed({
8528
+ get: () => manualDraftGroups.value,
8529
+ set: (value) => {
8530
+ manualDraftGroups.value = value;
8531
+ }
8532
+ })
8533
+ });
8534
+ const manualHierarchicalGroups = manualSampleGroups.hierarchicalGroups;
8535
+ const manualShowHierarchy = manualSampleGroups.showHierarchy;
8536
+ const manualUngroupedSamples = manualSampleGroups.ungroupedSamples;
8537
+ const manualSamplePool = computed(() => manualUngroupedOnly.value ? manualUngroupedSamples.value : manualSamples.value);
8538
+ const manualFilteredSamples = useTextSearch({
8539
+ items: () => manualSamplePool.value,
8540
+ query: manualSearchQuery,
8541
+ getText: (sample) => sample
8542
+ }).filteredItems;
8543
+ const manualSelectedSet = computed(() => new Set(manualSelectedSamples.value));
8544
+ const manualVisibleSet = computed(() => new Set(manualFilteredSamples.value));
8545
+ const manualAllVisibleSelected = computed(() => manualFilteredSamples.value.length > 0 && manualFilteredSamples.value.every((sample) => manualSelectedSet.value.has(sample)));
8546
+ const manualSomeVisibleSelected = computed(() => manualFilteredSamples.value.some((sample) => manualSelectedSet.value.has(sample)) && !manualAllVisibleSelected.value);
8547
+ const manualAssignableSamples = computed(() => manualSelectedSamples.value.filter((sample) => manualSamples.value.includes(sample)));
8548
+ const manualTargetGroupName = computed(() => {
8549
+ const major = manualGroupName.value.trim();
8550
+ const sub = manualSubGroupName.value.trim();
8551
+ if (!major) return "";
8552
+ return sub ? `${major}/${sub}` : major;
8553
+ });
8554
+ const manualCanAssign = computed(() => manualAssignableSamples.value.length > 0 && manualTargetGroupName.value.length > 0);
8555
+ const manualGroupedSamples = computed(() => {
8556
+ const validSamples = new Set(manualSamples.value);
8557
+ return new Set(manualDraftGroups.value.flatMap((group) => group.samples).filter((sample) => validSamples.has(sample)));
8558
+ });
8559
+ const manualGroupedCount = computed(() => manualGroupedSamples.value.size);
8560
+ const manualUngroupedCount = computed(() => Math.max(manualSamples.value.length - manualGroupedCount.value, 0));
8561
+ const manualResult = computed(() => {
8562
+ const groups = cloneGroups(manualDraftGroups.value);
8563
+ return {
8564
+ groups,
8565
+ experimentalGroups: groups,
8566
+ qcGroups: [],
8567
+ metadata: [],
8568
+ excludedSamples: []
8569
+ };
8570
+ });
8247
8571
  function acceptSuggestion(s) {
8248
8572
  autoGroup.mergeColumns(autoGroup.activeClassKey.value, s.columnIndices);
8249
8573
  }
@@ -8327,6 +8651,9 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8327
8651
  }
8328
8652
  watch(() => props.modelValue, (open) => {
8329
8653
  if (open) {
8654
+ activeWorkflow.value = props.initialMode;
8655
+ manualDraftGroups.value = cloneGroups(props.groups);
8656
+ manualResetSelection();
8330
8657
  autoGroup.reset();
8331
8658
  currentStep.value = 0;
8332
8659
  csvFileName.value = "";
@@ -8343,6 +8670,15 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8343
8670
  } else autoGroup.inputMode.value = "paste";
8344
8671
  }
8345
8672
  }, { immediate: true });
8673
+ watch(manualSamples, (samples) => {
8674
+ manualSelectedSamples.value = manualSelectedSamples.value.filter((sample) => samples.includes(sample));
8675
+ });
8676
+ watch(manualTargetGroupName, (target) => {
8677
+ if (!target) return;
8678
+ const existingGroup = manualDraftGroups.value.find((group) => group.name === target);
8679
+ if (!existingGroup) return;
8680
+ manualSelectedColor.value = existingGroup.color;
8681
+ });
8346
8682
  const allSteps = [
8347
8683
  {
8348
8684
  id: "input",
@@ -8387,6 +8723,10 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8387
8723
  emit("apply", autoGroup.result.value);
8388
8724
  emit("update:modelValue", false);
8389
8725
  }
8726
+ function handleManualApply() {
8727
+ emit("apply", manualResult.value);
8728
+ emit("update:modelValue", false);
8729
+ }
8390
8730
  function handleCancel() {
8391
8731
  emit("update:modelValue", false);
8392
8732
  }
@@ -8456,24 +8796,41 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8456
8796
  return (_ctx, _cache) => {
8457
8797
  return openBlock(), createBlock(BaseModal_default, {
8458
8798
  "model-value": __props.modelValue,
8459
- title: "Smart Group",
8460
- size: "lg",
8799
+ title: "Group Samples",
8800
+ size: activeWorkflow.value === "manual" ? "xl" : "lg",
8461
8801
  "close-on-overlay": false,
8462
8802
  "close-on-escape": false,
8463
- "onUpdate:modelValue": _cache[17] || (_cache[17] = ($event) => emit("update:modelValue", $event)),
8803
+ "onUpdate:modelValue": _cache[23] || (_cache[23] = ($event) => emit("update:modelValue", $event)),
8464
8804
  onClose: handleCancel
8465
- }, {
8466
- default: withCtx(() => [createElementVNode("div", _hoisted_1$33, [createVNode(StepWizard_default, {
8805
+ }, createSlots({
8806
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$33, [createElementVNode("div", { class: normalizeClass(["mint-auto-group__workflow-bar", activeWorkflow.value === "manual" ? "mint-auto-group__workflow-bar--manual" : ""]) }, [createElementVNode("div", _hoisted_2$29, [createElementVNode("button", {
8807
+ type: "button",
8808
+ class: normalizeClass(["mint-auto-group__workflow-tab", activeWorkflow.value === "auto" ? "mint-auto-group__workflow-tab--active" : ""]),
8809
+ role: "tab",
8810
+ "aria-selected": activeWorkflow.value === "auto",
8811
+ onClick: _cache[0] || (_cache[0] = ($event) => activeWorkflow.value = "auto")
8812
+ }, " Auto ", 10, _hoisted_3$27), createElementVNode("button", {
8813
+ type: "button",
8814
+ class: normalizeClass(["mint-auto-group__workflow-tab", activeWorkflow.value === "manual" ? "mint-auto-group__workflow-tab--active" : ""]),
8815
+ role: "tab",
8816
+ "aria-selected": activeWorkflow.value === "manual",
8817
+ onClick: _cache[1] || (_cache[1] = ($event) => activeWorkflow.value = "manual")
8818
+ }, " Manual ", 10, _hoisted_4$26)]), activeWorkflow.value === "manual" ? (openBlock(), createElementBlock("div", _hoisted_5$24, [_cache[27] || (_cache[27] = createElementVNode("div", { class: "mint-auto-group__manual-summary-text" }, [createElementVNode("span", { class: "mint-auto-group__manual-eyebrow" }, "Manual workflow"), createElementVNode("strong", null, "Assign selected samples to cohorts")], -1)), createElementVNode("div", _hoisted_6$24, [
8819
+ createElementVNode("span", null, [createElementVNode("strong", null, toDisplayString(manualGroupedCount.value), 1), _cache[24] || (_cache[24] = createTextVNode(" grouped", -1))]),
8820
+ createElementVNode("span", null, [createElementVNode("strong", null, toDisplayString(manualUngroupedCount.value), 1), _cache[25] || (_cache[25] = createTextVNode(" unassigned", -1))]),
8821
+ createElementVNode("span", null, [createElementVNode("strong", null, toDisplayString(manualDraftGroups.value.length), 1), _cache[26] || (_cache[26] = createTextVNode(" cohorts", -1))])
8822
+ ])])) : createCommentVNode("", true)], 2), activeWorkflow.value === "auto" ? (openBlock(), createBlock(StepWizard_default, {
8823
+ key: 0,
8467
8824
  ref_key: "wizardRef",
8468
8825
  ref: wizardRef,
8469
8826
  modelValue: currentStep.value,
8470
- "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => currentStep.value = $event),
8827
+ "onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => currentStep.value = $event),
8471
8828
  steps: dynamicSteps.value,
8472
8829
  linear: true,
8473
8830
  size: "sm"
8474
8831
  }, {
8475
- "step-input": withCtx(() => [createElementVNode("div", _hoisted_2$29, [
8476
- createElementVNode("div", _hoisted_3$26, [
8832
+ "step-input": withCtx(() => [createElementVNode("div", _hoisted_7$22, [
8833
+ createElementVNode("div", _hoisted_8$19, [
8477
8834
  __props.experimentId || __props.designData ? (openBlock(), createBlock(BaseButton_default, {
8478
8835
  key: 0,
8479
8836
  variant: unref(autoGroup).inputMode.value === "experiment" ? "primary" : "secondary",
@@ -8481,7 +8838,7 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8481
8838
  disabled: experimentLoading.value,
8482
8839
  onClick: fetchExperimentData
8483
8840
  }, {
8484
- default: withCtx(() => [..._cache[18] || (_cache[18] = [createTextVNode(" Experiment ", -1)])]),
8841
+ default: withCtx(() => [..._cache[28] || (_cache[28] = [createTextVNode(" Experiment ", -1)])]),
8485
8842
  _: 1
8486
8843
  }, 8, ["variant", "disabled"])) : createCommentVNode("", true),
8487
8844
  createVNode(BaseButton_default, {
@@ -8489,51 +8846,51 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8489
8846
  size: "sm",
8490
8847
  onClick: switchToPasteMode
8491
8848
  }, {
8492
- default: withCtx(() => [..._cache[19] || (_cache[19] = [createTextVNode(" Paste ", -1)])]),
8849
+ default: withCtx(() => [..._cache[29] || (_cache[29] = [createTextVNode(" Paste ", -1)])]),
8493
8850
  _: 1
8494
8851
  }, 8, ["variant"]),
8495
8852
  createVNode(BaseButton_default, {
8496
8853
  variant: unref(autoGroup).inputMode.value === "csv" ? "primary" : "secondary",
8497
8854
  size: "sm",
8498
- onClick: _cache[0] || (_cache[0] = ($event) => unref(autoGroup).inputMode.value = "csv")
8855
+ onClick: _cache[2] || (_cache[2] = ($event) => unref(autoGroup).inputMode.value = "csv")
8499
8856
  }, {
8500
- default: withCtx(() => [..._cache[20] || (_cache[20] = [createTextVNode(" CSV ", -1)])]),
8857
+ default: withCtx(() => [..._cache[30] || (_cache[30] = [createTextVNode(" CSV ", -1)])]),
8501
8858
  _: 1
8502
8859
  }, 8, ["variant"])
8503
8860
  ]),
8504
- unref(autoGroup).inputMode.value === "experiment" ? (openBlock(), createElementBlock("div", _hoisted_4$26, [experimentLoading.value ? (openBlock(), createElementBlock("div", _hoisted_5$24, [createVNode(LoadingSpinner_default, { size: "sm" }), _cache[21] || (_cache[21] = createElementVNode("span", null, "Loading experiment metadata…", -1))])) : experimentError.value ? (openBlock(), createElementBlock("div", _hoisted_6$24, [createElementVNode("p", null, toDisplayString(experimentError.value), 1), createElementVNode("p", null, [
8505
- _cache[22] || (_cache[22] = createTextVNode(" Switch to ", -1)),
8861
+ unref(autoGroup).inputMode.value === "experiment" ? (openBlock(), createElementBlock("div", _hoisted_9$17, [experimentLoading.value ? (openBlock(), createElementBlock("div", _hoisted_10$16, [createVNode(LoadingSpinner_default, { size: "sm" }), _cache[31] || (_cache[31] = createElementVNode("span", null, "Loading experiment metadata…", -1))])) : experimentError.value ? (openBlock(), createElementBlock("div", _hoisted_11$14, [createElementVNode("p", null, toDisplayString(experimentError.value), 1), createElementVNode("p", null, [
8862
+ _cache[32] || (_cache[32] = createTextVNode(" Switch to ", -1)),
8506
8863
  createElementVNode("button", {
8507
8864
  type: "button",
8508
8865
  class: "mint-auto-group__link-btn",
8509
8866
  onClick: switchToPasteMode
8510
8867
  }, "Paste"),
8511
- _cache[23] || (_cache[23] = createTextVNode(" or ", -1)),
8868
+ _cache[33] || (_cache[33] = createTextVNode(" or ", -1)),
8512
8869
  createElementVNode("button", {
8513
8870
  type: "button",
8514
8871
  class: "mint-auto-group__link-btn",
8515
- onClick: _cache[1] || (_cache[1] = ($event) => unref(autoGroup).inputMode.value = "csv")
8872
+ onClick: _cache[3] || (_cache[3] = ($event) => unref(autoGroup).inputMode.value = "csv")
8516
8873
  }, "CSV"),
8517
- _cache[24] || (_cache[24] = createTextVNode(" mode instead. ", -1))
8518
- ])])) : unref(autoGroup).csvData.value ? (openBlock(), createElementBlock("div", _hoisted_7$22, [createElementVNode("div", _hoisted_8$19, [createElementVNode("span", _hoisted_9$17, [createElementVNode("strong", null, toDisplayString(unref(autoGroup).csvData.value.rows.length), 1), _cache[25] || (_cache[25] = createTextVNode(" samples ", -1))]), createElementVNode("span", _hoisted_10$16, [createElementVNode("strong", null, toDisplayString(experimentFieldNames.value.length), 1), _cache[26] || (_cache[26] = createTextVNode(" metadata fields ", -1))])]), createElementVNode("div", _hoisted_11$14, [(openBlock(true), createElementBlock(Fragment, null, renderList(experimentFieldNames.value, (col) => {
8874
+ _cache[34] || (_cache[34] = createTextVNode(" mode instead. ", -1))
8875
+ ])])) : unref(autoGroup).csvData.value ? (openBlock(), createElementBlock("div", _hoisted_12$13, [createElementVNode("div", _hoisted_13$13, [createElementVNode("span", _hoisted_14$11, [createElementVNode("strong", null, toDisplayString(unref(autoGroup).csvData.value.rows.length), 1), _cache[35] || (_cache[35] = createTextVNode(" samples ", -1))]), createElementVNode("span", _hoisted_15$10, [createElementVNode("strong", null, toDisplayString(experimentFieldNames.value.length), 1), _cache[36] || (_cache[36] = createTextVNode(" metadata fields ", -1))])]), createElementVNode("div", _hoisted_16$9, [(openBlock(true), createElementBlock(Fragment, null, renderList(experimentFieldNames.value, (col) => {
8519
8876
  return openBlock(), createElementBlock("span", {
8520
8877
  key: col,
8521
8878
  class: "mint-auto-group__field-value"
8522
8879
  }, toDisplayString(col), 1);
8523
8880
  }), 128))])])) : createCommentVNode("", true)])) : createCommentVNode("", true),
8524
- unref(autoGroup).inputMode.value === "paste" ? (openBlock(), createElementBlock("div", _hoisted_12$13, [withDirectives(createElementVNode("textarea", {
8525
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => unref(autoGroup).rawText.value = $event),
8881
+ unref(autoGroup).inputMode.value === "paste" ? (openBlock(), createElementBlock("div", _hoisted_17$9, [withDirectives(createElementVNode("textarea", {
8882
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => unref(autoGroup).rawText.value = $event),
8526
8883
  class: "mint-auto-group__textarea",
8527
8884
  rows: "12",
8528
8885
  placeholder: "Paste sample names, one per line..."
8529
- }, null, 512), [[vModelText, unref(autoGroup).rawText.value]]), unref(autoGroup).samples.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_13$13, toDisplayString(unref(autoGroup).samples.value.length) + " samples ", 1)) : createCommentVNode("", true)])) : createCommentVNode("", true),
8530
- unref(autoGroup).inputMode.value === "csv" ? (openBlock(), createElementBlock("div", _hoisted_14$11, [
8886
+ }, null, 512), [[vModelText, unref(autoGroup).rawText.value]]), unref(autoGroup).samples.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_18$9, toDisplayString(unref(autoGroup).samples.value.length) + " samples ", 1)) : createCommentVNode("", true)])) : createCommentVNode("", true),
8887
+ unref(autoGroup).inputMode.value === "csv" ? (openBlock(), createElementBlock("div", _hoisted_19$9, [
8531
8888
  !unref(autoGroup).csvData.value ? (openBlock(), createElementBlock("div", {
8532
8889
  key: 0,
8533
8890
  class: normalizeClass(["mint-auto-group__dropzone", isDragOver.value ? "mint-auto-group__dropzone--dragover" : ""]),
8534
8891
  onDrop: handleFileDrop,
8535
- onDragover: _cache[3] || (_cache[3] = withModifiers(($event) => isDragOver.value = true, ["prevent"])),
8536
- onDragleave: _cache[4] || (_cache[4] = ($event) => isDragOver.value = false)
8892
+ onDragover: _cache[5] || (_cache[5] = withModifiers(($event) => isDragOver.value = true, ["prevent"])),
8893
+ onDragleave: _cache[6] || (_cache[6] = ($event) => isDragOver.value = false)
8537
8894
  }, [
8538
8895
  createElementVNode("input", {
8539
8896
  type: "file",
@@ -8541,7 +8898,7 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8541
8898
  class: "mint-auto-group__file-input",
8542
8899
  onChange: handleFileInput
8543
8900
  }, null, 32),
8544
- _cache[27] || (_cache[27] = createElementVNode("svg", {
8901
+ _cache[37] || (_cache[37] = createElementVNode("svg", {
8545
8902
  class: "mint-auto-group__upload-icon",
8546
8903
  fill: "none",
8547
8904
  stroke: "currentColor",
@@ -8552,12 +8909,12 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8552
8909
  "stroke-width": "1.5",
8553
8910
  d: "M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
8554
8911
  })], -1)),
8555
- _cache[28] || (_cache[28] = createElementVNode("p", { class: "mint-auto-group__upload-text" }, [createElementVNode("span", { class: "mint-auto-group__upload-highlight" }, "Click to upload"), createTextVNode(" or drag and drop a CSV file ")], -1)),
8556
- _cache[29] || (_cache[29] = createElementVNode("p", { class: "mint-auto-group__upload-hint" }, " CSV or TSV with a header row. First column or column named \"Sample\" / \"File Name\" is used as sample identifier. Other columns become grouping fields. ", -1))
8912
+ _cache[38] || (_cache[38] = createElementVNode("p", { class: "mint-auto-group__upload-text" }, [createElementVNode("span", { class: "mint-auto-group__upload-highlight" }, "Click to upload"), createTextVNode(" or drag and drop a CSV file ")], -1)),
8913
+ _cache[39] || (_cache[39] = createElementVNode("p", { class: "mint-auto-group__upload-hint" }, " CSV or TSV with a header row. First column or column named \"Sample\" / \"File Name\" is used as sample identifier. Other columns become grouping fields. ", -1))
8557
8914
  ], 34)) : createCommentVNode("", true),
8558
- csvError.value && !unref(autoGroup).csvData.value ? (openBlock(), createElementBlock("div", _hoisted_15$10, toDisplayString(csvError.value), 1)) : createCommentVNode("", true),
8559
- unref(autoGroup).csvData.value ? (openBlock(), createElementBlock("div", _hoisted_16$9, [
8560
- _cache[30] || (_cache[30] = createElementVNode("svg", {
8915
+ csvError.value && !unref(autoGroup).csvData.value ? (openBlock(), createElementBlock("div", _hoisted_20$8, toDisplayString(csvError.value), 1)) : createCommentVNode("", true),
8916
+ unref(autoGroup).csvData.value ? (openBlock(), createElementBlock("div", _hoisted_21$7, [
8917
+ _cache[40] || (_cache[40] = createElementVNode("svg", {
8561
8918
  class: "mint-auto-group__file-icon",
8562
8919
  fill: "none",
8563
8920
  stroke: "currentColor",
@@ -8568,8 +8925,8 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8568
8925
  "stroke-width": "2",
8569
8926
  d: "M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"
8570
8927
  })], -1)),
8571
- createElementVNode("span", _hoisted_17$9, toDisplayString(csvFileName.value), 1),
8572
- createElementVNode("span", _hoisted_18$9, toDisplayString(unref(autoGroup).csvData.value.rows.length) + " rows", 1),
8928
+ createElementVNode("span", _hoisted_22$6, toDisplayString(csvFileName.value), 1),
8929
+ createElementVNode("span", _hoisted_23$5, toDisplayString(unref(autoGroup).csvData.value.rows.length) + " rows", 1),
8573
8930
  createElementVNode("button", {
8574
8931
  type: "button",
8575
8932
  class: "mint-auto-group__file-clear",
@@ -8577,25 +8934,25 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8577
8934
  }, " Change file ")
8578
8935
  ])) : createCommentVNode("", true)
8579
8936
  ])) : createCommentVNode("", true),
8580
- unref(autoGroup).canDownloadTemplate.value ? (openBlock(), createElementBlock("div", _hoisted_19$9, [_cache[33] || (_cache[33] = createElementVNode("div", { class: "mint-auto-group__template-label" }, "Or hand-edit in Excel:", -1)), createElementVNode("div", _hoisted_20$8, [createVNode(BaseButton_default, {
8937
+ unref(autoGroup).canDownloadTemplate.value ? (openBlock(), createElementBlock("div", _hoisted_24$5, [_cache[43] || (_cache[43] = createElementVNode("div", { class: "mint-auto-group__template-label" }, "Or hand-edit in Excel:", -1)), createElementVNode("div", _hoisted_25$5, [createVNode(BaseButton_default, {
8581
8938
  size: "sm",
8582
8939
  variant: "ghost",
8583
- onClick: _cache[5] || (_cache[5] = ($event) => unref(autoGroup).downloadTemplate("prefilled", "csv"))
8940
+ onClick: _cache[7] || (_cache[7] = ($event) => unref(autoGroup).downloadTemplate("prefilled", "csv"))
8584
8941
  }, {
8585
- default: withCtx(() => [..._cache[31] || (_cache[31] = [createTextVNode(" Download pre-filled CSV ", -1)])]),
8942
+ default: withCtx(() => [..._cache[41] || (_cache[41] = [createTextVNode(" Download pre-filled CSV ", -1)])]),
8586
8943
  _: 1
8587
8944
  }), createVNode(BaseButton_default, {
8588
8945
  size: "sm",
8589
8946
  variant: "ghost",
8590
- onClick: _cache[6] || (_cache[6] = ($event) => unref(autoGroup).downloadTemplate("blank", "csv"))
8947
+ onClick: _cache[8] || (_cache[8] = ($event) => unref(autoGroup).downloadTemplate("blank", "csv"))
8591
8948
  }, {
8592
- default: withCtx(() => [..._cache[32] || (_cache[32] = [createTextVNode(" Download blank CSV ", -1)])]),
8949
+ default: withCtx(() => [..._cache[42] || (_cache[42] = [createTextVNode(" Download blank CSV ", -1)])]),
8593
8950
  _: 1
8594
8951
  })])])) : createCommentVNode("", true)
8595
8952
  ])]),
8596
- "step-workspace": withCtx(() => [createElementVNode("div", _hoisted_21$7, [
8597
- createElementVNode("aside", _hoisted_22$6, [
8598
- _cache[39] || (_cache[39] = createElementVNode("h3", null, "Detected classes", -1)),
8953
+ "step-workspace": withCtx(() => [createElementVNode("div", _hoisted_26$5, [
8954
+ createElementVNode("aside", _hoisted_27$4, [
8955
+ _cache[49] || (_cache[49] = createElementVNode("h3", null, "Detected classes", -1)),
8599
8956
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(autoGroup).classes.value, (cls) => {
8600
8957
  return openBlock(), createElementBlock("button", {
8601
8958
  key: unref(classKey)(cls),
@@ -8607,39 +8964,39 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8607
8964
  ]),
8608
8965
  onClick: ($event) => unref(autoGroup).activeClassKey.value = unref(classKey)(cls)
8609
8966
  }, [
8610
- _cache[34] || (_cache[34] = createElementVNode("span", { class: "mint-auto-group__class-dot" }, null, -1)),
8611
- createElementVNode("span", _hoisted_24$5, toDisplayString(cls.label), 1),
8612
- createElementVNode("span", _hoisted_25$5, toDisplayString(cls.members.length), 1)
8613
- ], 10, _hoisted_23$5);
8967
+ _cache[44] || (_cache[44] = createElementVNode("span", { class: "mint-auto-group__class-dot" }, null, -1)),
8968
+ createElementVNode("span", _hoisted_29$2, toDisplayString(cls.label), 1),
8969
+ createElementVNode("span", _hoisted_30$2, toDisplayString(cls.members.length), 1)
8970
+ ], 10, _hoisted_28$3);
8614
8971
  }), 128)),
8615
- createElementVNode("div", _hoisted_26$5, [
8616
- _cache[38] || (_cache[38] = createElementVNode("h4", { class: "mint-auto-group__routing-head" }, "QC routing", -1)),
8617
- createElementVNode("label", _hoisted_27$4, [createElementVNode("input", {
8972
+ createElementVNode("div", _hoisted_31$2, [
8973
+ _cache[48] || (_cache[48] = createElementVNode("h4", { class: "mint-auto-group__routing-head" }, "QC routing", -1)),
8974
+ createElementVNode("label", _hoisted_32$2, [createElementVNode("input", {
8618
8975
  type: "radio",
8619
8976
  name: "qc-routing",
8620
8977
  checked: qcRouting.value === "overlay",
8621
- onChange: _cache[7] || (_cache[7] = ($event) => setQcRouting("overlay"))
8622
- }, null, 40, _hoisted_28$3), _cache[35] || (_cache[35] = createElementVNode("span", null, [createTextVNode("Overlay "), createElementVNode("small", null, "preview only")], -1))]),
8623
- createElementVNode("label", _hoisted_29$2, [createElementVNode("input", {
8978
+ onChange: _cache[9] || (_cache[9] = ($event) => setQcRouting("overlay"))
8979
+ }, null, 40, _hoisted_33$2), _cache[45] || (_cache[45] = createElementVNode("span", null, [createTextVNode("Overlay "), createElementVNode("small", null, "preview only")], -1))]),
8980
+ createElementVNode("label", _hoisted_34$2, [createElementVNode("input", {
8624
8981
  type: "radio",
8625
8982
  name: "qc-routing",
8626
8983
  checked: qcRouting.value === "exclude",
8627
- onChange: _cache[8] || (_cache[8] = ($event) => setQcRouting("exclude"))
8628
- }, null, 40, _hoisted_30$2), _cache[36] || (_cache[36] = createElementVNode("span", null, "Exclude entirely", -1))]),
8629
- createElementVNode("label", _hoisted_31$2, [createElementVNode("input", {
8984
+ onChange: _cache[10] || (_cache[10] = ($event) => setQcRouting("exclude"))
8985
+ }, null, 40, _hoisted_35$2), _cache[46] || (_cache[46] = createElementVNode("span", null, "Exclude entirely", -1))]),
8986
+ createElementVNode("label", _hoisted_36$2, [createElementVNode("input", {
8630
8987
  type: "radio",
8631
8988
  name: "qc-routing",
8632
8989
  checked: qcRouting.value === "mix",
8633
- onChange: _cache[9] || (_cache[9] = ($event) => setQcRouting("mix"))
8634
- }, null, 40, _hoisted_32$2), _cache[37] || (_cache[37] = createElementVNode("span", null, "Mix into groups", -1))])
8990
+ onChange: _cache[11] || (_cache[11] = ($event) => setQcRouting("mix"))
8991
+ }, null, 40, _hoisted_37$2), _cache[47] || (_cache[47] = createElementVNode("span", null, "Mix into groups", -1))])
8635
8992
  ])
8636
8993
  ]),
8637
- createElementVNode("section", _hoisted_33$2, [
8638
- createElementVNode("div", _hoisted_34$2, [
8639
- createElementVNode("div", _hoisted_35$2, [
8640
- createElementVNode("div", _hoisted_36$2, toDisplayString(groupStats.value.count), 1),
8641
- _cache[41] || (_cache[41] = createElementVNode("div", { class: "mint-auto-group__stat-l" }, "Groups", -1)),
8642
- createElementVNode("div", _hoisted_37$2, [groupKeyNames.value.length === 0 ? (openBlock(), createElementBlock("span", _hoisted_38$2, [..._cache[40] || (_cache[40] = [
8994
+ createElementVNode("section", _hoisted_38$2, [
8995
+ createElementVNode("div", _hoisted_39$2, [
8996
+ createElementVNode("div", _hoisted_40$1, [
8997
+ createElementVNode("div", _hoisted_41$1, toDisplayString(groupStats.value.count), 1),
8998
+ _cache[51] || (_cache[51] = createElementVNode("div", { class: "mint-auto-group__stat-l" }, "Groups", -1)),
8999
+ createElementVNode("div", _hoisted_42, [groupKeyNames.value.length === 0 ? (openBlock(), createElementBlock("span", _hoisted_43, [..._cache[50] || (_cache[50] = [
8643
9000
  createTextVNode("Toggle ", -1),
8644
9001
  createElementVNode("strong", null, "Use", -1),
8645
9002
  createTextVNode(" on a column to start splitting", -1)
@@ -8650,34 +9007,34 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8650
9007
  }, toDisplayString(name), 1);
8651
9008
  }), 128))])
8652
9009
  ]),
8653
- createElementVNode("div", _hoisted_39$1, [
8654
- createElementVNode("div", _hoisted_40$1, toDisplayString(activeMemberCount.value), 1),
8655
- _cache[42] || (_cache[42] = createElementVNode("div", { class: "mint-auto-group__stat-l" }, "Samples", -1)),
8656
- createElementVNode("div", _hoisted_41$1, toDisplayString(activeSchemaLabel.value) + " · " + toDisplayString(activeColumnCount.value) + " token positions", 1)
9010
+ createElementVNode("div", _hoisted_44, [
9011
+ createElementVNode("div", _hoisted_45, toDisplayString(activeMemberCount.value), 1),
9012
+ _cache[52] || (_cache[52] = createElementVNode("div", { class: "mint-auto-group__stat-l" }, "Samples", -1)),
9013
+ createElementVNode("div", _hoisted_46, toDisplayString(activeSchemaLabel.value) + " · " + toDisplayString(activeColumnCount.value) + " token positions", 1)
8657
9014
  ]),
8658
- createElementVNode("div", _hoisted_42, [
8659
- createElementVNode("div", _hoisted_43, toDisplayString(groupStats.value.avg), 1),
8660
- _cache[43] || (_cache[43] = createElementVNode("div", { class: "mint-auto-group__stat-l" }, "Avg / group", -1)),
8661
- createElementVNode("div", _hoisted_44, [groupStats.value.count > 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode("Min " + toDisplayString(groupStats.value.min) + " · Max " + toDisplayString(groupStats.value.max), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode("—")], 64))])
9015
+ createElementVNode("div", _hoisted_47, [
9016
+ createElementVNode("div", _hoisted_48, toDisplayString(groupStats.value.avg), 1),
9017
+ _cache[53] || (_cache[53] = createElementVNode("div", { class: "mint-auto-group__stat-l" }, "Avg / group", -1)),
9018
+ createElementVNode("div", _hoisted_49, [groupStats.value.count > 0 ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode("Min " + toDisplayString(groupStats.value.min) + " · Max " + toDisplayString(groupStats.value.max), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode("—")], 64))])
8662
9019
  ])
8663
9020
  ]),
8664
- unref(autoGroup).suggestions.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_45, [
8665
- _cache[44] || (_cache[44] = createElementVNode("strong", null, "Suggested merge:", -1)),
9021
+ unref(autoGroup).suggestions.value.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_50, [
9022
+ _cache[54] || (_cache[54] = createElementVNode("strong", null, "Suggested merge:", -1)),
8666
9023
  createTextVNode(" columns " + toDisplayString(unref(autoGroup).suggestions.value[0].columnIndices.map((i) => i + 1).join(" + ")) + " always co-occur — combine into ", 1),
8667
9024
  createElementVNode("code", null, toDisplayString(unref(autoGroup).suggestions.value[0].proposedName), 1),
8668
- _cache[45] || (_cache[45] = createTextVNode("? ", -1)),
9025
+ _cache[55] || (_cache[55] = createTextVNode("? ", -1)),
8669
9026
  createElementVNode("button", {
8670
9027
  type: "button",
8671
9028
  class: "mint-auto-group__suggest-btn",
8672
- onClick: _cache[10] || (_cache[10] = ($event) => acceptSuggestion(unref(autoGroup).suggestions.value[0]))
9029
+ onClick: _cache[12] || (_cache[12] = ($event) => acceptSuggestion(unref(autoGroup).suggestions.value[0]))
8673
9030
  }, " Accept · merge "),
8674
9031
  createElementVNode("button", {
8675
9032
  type: "button",
8676
9033
  class: "mint-auto-group__suggest-btn mint-auto-group__suggest-btn--ghost",
8677
- onClick: _cache[11] || (_cache[11] = ($event) => dismissSuggestion(unref(autoGroup).suggestions.value[0]))
9034
+ onClick: _cache[13] || (_cache[13] = ($event) => dismissSuggestion(unref(autoGroup).suggestions.value[0]))
8678
9035
  }, " Dismiss ")
8679
9036
  ])) : createCommentVNode("", true),
8680
- createElementVNode("div", _hoisted_46, [_cache[47] || (_cache[47] = createElementVNode("div", {
9037
+ createElementVNode("div", _hoisted_51, [_cache[57] || (_cache[57] = createElementVNode("div", {
8681
9038
  class: "mint-auto-group__token-row mint-auto-group__token-row--head",
8682
9039
  role: "row"
8683
9040
  }, [
@@ -8709,46 +9066,46 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8709
9066
  class: normalizeClass(["mint-auto-group__token-row", openPopoverIdx.value === col.index ? "mint-auto-group__token-row--active" : ""]),
8710
9067
  onClick: ($event) => openPopoverIdx.value = col.index
8711
9068
  }, [
8712
- createElementVNode("span", _hoisted_48, toDisplayString(col.index + 1), 1),
8713
- createElementVNode("span", _hoisted_49, toDisplayString(col.displayName ?? col.name), 1),
9069
+ createElementVNode("span", _hoisted_53, toDisplayString(col.index + 1), 1),
9070
+ createElementVNode("span", _hoisted_54, toDisplayString(col.displayName ?? col.name), 1),
8714
9071
  createElementVNode("span", {
8715
9072
  class: normalizeClass(["mint-auto-group__role", `mint-auto-group__role--${col.role}`]),
8716
9073
  role: "cell"
8717
9074
  }, toDisplayString(roleLabel(col.role)), 3),
8718
- createElementVNode("span", _hoisted_50, toDisplayString(col.cardinality), 1),
8719
- createElementVNode("span", _hoisted_51, [createTextVNode(toDisplayString(col.uniqueValues.slice(0, 4).join(", ")), 1), col.uniqueValues.length > 4 ? (openBlock(), createElementBlock("span", _hoisted_52, " +" + toDisplayString(col.uniqueValues.length - 4) + " more", 1)) : createCommentVNode("", true)]),
9075
+ createElementVNode("span", _hoisted_55, toDisplayString(col.cardinality), 1),
9076
+ createElementVNode("span", _hoisted_56, [createTextVNode(toDisplayString(col.uniqueValues.slice(0, 4).join(", ")), 1), col.uniqueValues.length > 4 ? (openBlock(), createElementBlock("span", _hoisted_57, " +" + toDisplayString(col.uniqueValues.length - 4) + " more", 1)) : createCommentVNode("", true)]),
8720
9077
  createElementVNode("label", {
8721
9078
  class: "mint-auto-group__token-use",
8722
9079
  role: "cell",
8723
- onClick: _cache[12] || (_cache[12] = withModifiers(() => {}, ["stop"]))
9080
+ onClick: _cache[14] || (_cache[14] = withModifiers(() => {}, ["stop"]))
8724
9081
  }, [createElementVNode("input", {
8725
9082
  type: "checkbox",
8726
9083
  checked: (unref(autoGroup).activeSchema.value?.groupBy ?? []).includes(col.index),
8727
9084
  onChange: ($event) => unref(autoGroup).toggleGroupBy(unref(autoGroup).activeClassKey.value, col.index)
8728
- }, null, 40, _hoisted_53)]),
8729
- _cache[46] || (_cache[46] = createElementVNode("span", {
9085
+ }, null, 40, _hoisted_58)]),
9086
+ _cache[56] || (_cache[56] = createElementVNode("span", {
8730
9087
  class: "mint-auto-group__token-trigger",
8731
9088
  role: "cell",
8732
9089
  "aria-hidden": "true"
8733
9090
  }, "⋯", -1))
8734
- ], 10, _hoisted_47);
9091
+ ], 10, _hoisted_52);
8735
9092
  }), 128))])
8736
9093
  ]),
8737
9094
  openPopoverIdx.value !== null && activeColumn.value ? (openBlock(), createElementBlock("div", {
8738
9095
  key: 0,
8739
9096
  class: "mint-auto-group__popover",
8740
- onClick: _cache[15] || (_cache[15] = withModifiers(() => {}, ["stop"]))
9097
+ onClick: _cache[17] || (_cache[17] = withModifiers(() => {}, ["stop"]))
8741
9098
  }, [
8742
- createElementVNode("div", _hoisted_54, [
9099
+ createElementVNode("div", _hoisted_59, [
8743
9100
  createElementVNode("strong", null, toDisplayString(activeColumn.value.displayName ?? activeColumn.value.name), 1),
8744
- createElementVNode("span", _hoisted_55, toDisplayString(activeColumn.value.cardinality) + " unique", 1),
9101
+ createElementVNode("span", _hoisted_60, toDisplayString(activeColumn.value.cardinality) + " unique", 1),
8745
9102
  createElementVNode("button", {
8746
9103
  type: "button",
8747
9104
  class: "mint-auto-group__popover-close",
8748
- onClick: _cache[13] || (_cache[13] = ($event) => openPopoverIdx.value = null)
9105
+ onClick: _cache[15] || (_cache[15] = ($event) => openPopoverIdx.value = null)
8749
9106
  }, "×")
8750
9107
  ]),
8751
- createElementVNode("div", _hoisted_56, [_cache[48] || (_cache[48] = createElementVNode("div", { class: "mint-auto-group__popover-label" }, "Role", -1)), createElementVNode("div", _hoisted_57, [(openBlock(), createElementBlock(Fragment, null, renderList([
9108
+ createElementVNode("div", _hoisted_61, [_cache[58] || (_cache[58] = createElementVNode("div", { class: "mint-auto-group__popover-label" }, "Role", -1)), createElementVNode("div", _hoisted_62, [(openBlock(), createElementBlock(Fragment, null, renderList([
8752
9109
  "factor",
8753
9110
  "replicate",
8754
9111
  "run-order",
@@ -8761,28 +9118,28 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8761
9118
  type: "button",
8762
9119
  class: normalizeClass(["mint-auto-group__pill-btn", activeColumn.value.role === r ? "mint-auto-group__pill-btn--on" : ""]),
8763
9120
  onClick: ($event) => unref(autoGroup).setRole(unref(autoGroup).activeClassKey.value, activeColumn.value.index, r)
8764
- }, toDisplayString(roleLabel(r)), 11, _hoisted_58);
9121
+ }, toDisplayString(roleLabel(r)), 11, _hoisted_63);
8765
9122
  }), 64))])]),
8766
- createElementVNode("div", _hoisted_59, [_cache[49] || (_cache[49] = createElementVNode("div", { class: "mint-auto-group__popover-label" }, "Rename", -1)), createVNode(BaseInput_default, {
9123
+ createElementVNode("div", _hoisted_64, [_cache[59] || (_cache[59] = createElementVNode("div", { class: "mint-auto-group__popover-label" }, "Rename", -1)), createVNode(BaseInput_default, {
8767
9124
  "model-value": activeColumn.value.displayName ?? activeColumn.value.name,
8768
- "onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => renameActive(String($event ?? "")))
9125
+ "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => renameActive(String($event ?? "")))
8769
9126
  }, null, 8, ["model-value"])]),
8770
- createElementVNode("div", _hoisted_60, [createElementVNode("div", _hoisted_61, "Values (" + toDisplayString(activeColumn.value.uniqueValues.length) + ")", 1), createElementVNode("div", _hoisted_62, [(openBlock(true), createElementBlock(Fragment, null, renderList(activeColumn.value.uniqueValues, (v) => {
9127
+ createElementVNode("div", _hoisted_65, [createElementVNode("div", _hoisted_66, "Values (" + toDisplayString(activeColumn.value.uniqueValues.length) + ")", 1), createElementVNode("div", _hoisted_67, [(openBlock(true), createElementBlock(Fragment, null, renderList(activeColumn.value.uniqueValues, (v) => {
8771
9128
  return openBlock(), createElementBlock("div", {
8772
9129
  key: v,
8773
9130
  class: "mint-auto-group__value-row"
8774
9131
  }, [
8775
- createElementVNode("span", _hoisted_63, toDisplayString(v) + " →", 1),
9132
+ createElementVNode("span", _hoisted_68, toDisplayString(v) + " →", 1),
8776
9133
  createElementVNode("input", {
8777
9134
  class: "mint-auto-group__value-input",
8778
9135
  value: activeColumn.value.ops?.alias?.[v] ?? v,
8779
9136
  onChange: ($event) => setAlias(v, $event.target.value)
8780
- }, null, 40, _hoisted_64),
8781
- createElementVNode("label", _hoisted_65, [createElementVNode("input", {
9137
+ }, null, 40, _hoisted_69),
9138
+ createElementVNode("label", _hoisted_70, [createElementVNode("input", {
8782
9139
  type: "checkbox",
8783
9140
  checked: activeColumn.value.ops?.exclude?.includes(v) ?? false,
8784
9141
  onChange: ($event) => toggleExclude(v)
8785
- }, null, 40, _hoisted_66), _cache[50] || (_cache[50] = createTextVNode(" excl ", -1))])
9142
+ }, null, 40, _hoisted_71), _cache[60] || (_cache[60] = createTextVNode(" excl ", -1))])
8786
9143
  ]);
8787
9144
  }), 128))])]),
8788
9145
  createElementVNode("div", { class: "mint-auto-group__popover-section" }, [createElementVNode("button", {
@@ -8792,26 +9149,26 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8792
9149
  }, "▸ Merge with next column")])
8793
9150
  ])) : createCommentVNode("", true)
8794
9151
  ])]),
8795
- "step-preview": withCtx(() => [createElementVNode("div", _hoisted_67, [
8796
- createElementVNode("div", _hoisted_68, [
9152
+ "step-preview": withCtx(() => [createElementVNode("div", _hoisted_72, [
9153
+ createElementVNode("div", _hoisted_73, [
8797
9154
  createElementVNode("strong", null, toDisplayString(unref(autoGroup).groups.value.length), 1),
8798
- _cache[51] || (_cache[51] = createTextVNode(" groups · ", -1)),
9155
+ _cache[61] || (_cache[61] = createTextVNode(" groups · ", -1)),
8799
9156
  createElementVNode("strong", null, toDisplayString(totalGrouped.value), 1),
8800
- _cache[52] || (_cache[52] = createTextVNode(" samples · ", -1)),
9157
+ _cache[62] || (_cache[62] = createTextVNode(" samples · ", -1)),
8801
9158
  createElementVNode("strong", null, toDisplayString(totalQc.value), 1),
8802
- _cache[53] || (_cache[53] = createTextVNode(" QC kept aside · ", -1)),
9159
+ _cache[63] || (_cache[63] = createTextVNode(" QC kept aside · ", -1)),
8803
9160
  createElementVNode("strong", null, toDisplayString(unref(autoGroup).excludedSamples.value.length), 1),
8804
- _cache[54] || (_cache[54] = createTextVNode(" excluded ", -1))
9161
+ _cache[64] || (_cache[64] = createTextVNode(" excluded ", -1))
8805
9162
  ]),
8806
9163
  unref(autoGroup).allSingletons.value ? (openBlock(), createBlock(AlertBox_default, {
8807
9164
  key: 0,
8808
9165
  type: "warning",
8809
9166
  title: "Each group has only one sample"
8810
9167
  }, {
8811
- default: withCtx(() => [..._cache[55] || (_cache[55] = [createTextVNode(" Group key produced a unique key per row. Go back and disable any column whose values are unique per sample. ", -1)])]),
9168
+ default: withCtx(() => [..._cache[65] || (_cache[65] = [createTextVNode(" Group key produced a unique key per row. Go back and disable any column whose values are unique per sample. ", -1)])]),
8812
9169
  _: 1
8813
9170
  })) : createCommentVNode("", true),
8814
- createElementVNode("div", _hoisted_69, [createElementVNode("div", _hoisted_70, [_cache[56] || (_cache[56] = createElementVNode("h4", null, "Experimental groups", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(autoGroup).result.value.experimentalGroups ?? [], (group) => {
9171
+ createElementVNode("div", _hoisted_74, [createElementVNode("div", _hoisted_75, [_cache[66] || (_cache[66] = createElementVNode("h4", null, "Experimental groups", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(autoGroup).result.value.experimentalGroups ?? [], (group) => {
8815
9172
  return openBlock(), createElementBlock("details", {
8816
9173
  key: group.name,
8817
9174
  class: "mint-auto-group__preview-group"
@@ -8821,39 +9178,39 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8821
9178
  style: normalizeStyle({ background: group.color })
8822
9179
  }, null, 4),
8823
9180
  createElementVNode("span", null, toDisplayString(group.name), 1),
8824
- createElementVNode("span", _hoisted_71, toDisplayString(group.samples.length), 1)
8825
- ]), createElementVNode("div", _hoisted_72, [(openBlock(true), createElementBlock(Fragment, null, renderList(group.samples, (s) => {
9181
+ createElementVNode("span", _hoisted_76, toDisplayString(group.samples.length), 1)
9182
+ ]), createElementVNode("div", _hoisted_77, [(openBlock(true), createElementBlock(Fragment, null, renderList(group.samples, (s) => {
8826
9183
  return openBlock(), createElementBlock("span", {
8827
9184
  key: s,
8828
9185
  class: "mint-auto-group__preview-sample"
8829
9186
  }, toDisplayString(s), 1);
8830
9187
  }), 128))])]);
8831
- }), 128))]), createElementVNode("div", _hoisted_73, [
8832
- _cache[58] || (_cache[58] = createElementVNode("h4", null, "QC kept aside (overlay)", -1)),
8833
- createElementVNode("div", _hoisted_74, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(autoGroup).qcGroups.value ?? [], (g) => {
9188
+ }), 128))]), createElementVNode("div", _hoisted_78, [
9189
+ _cache[68] || (_cache[68] = createElementVNode("h4", null, "QC kept aside (overlay)", -1)),
9190
+ createElementVNode("div", _hoisted_79, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(autoGroup).qcGroups.value ?? [], (g) => {
8834
9191
  return openBlock(), createElementBlock("span", {
8835
9192
  key: g.name,
8836
9193
  class: "mint-auto-group__qc-chip"
8837
9194
  }, [createTextVNode(toDisplayString(g.name) + " ", 1), createElementVNode("code", null, "×" + toDisplayString(g.samples.length), 1)]);
8838
9195
  }), 128))]),
8839
- createElementVNode("details", _hoisted_75, [_cache[57] || (_cache[57] = createElementVNode("summary", null, "Schema fingerprint", -1)), createElementVNode("pre", null, toDisplayString(JSON.stringify(unref(autoGroup).fingerprint.value, null, 2)), 1)])
9196
+ createElementVNode("details", _hoisted_80, [_cache[67] || (_cache[67] = createElementVNode("summary", null, "Schema fingerprint", -1)), createElementVNode("pre", null, toDisplayString(JSON.stringify(unref(autoGroup).fingerprint.value, null, 2)), 1)])
8840
9197
  ])])
8841
9198
  ])]),
8842
- navigation: withCtx(({ goBack, goNext, canProceed }) => [createElementVNode("div", _hoisted_76, [
9199
+ navigation: withCtx(({ goBack, goNext, canProceed }) => [createElementVNode("div", _hoisted_81, [
8843
9200
  createVNode(BaseButton_default, {
8844
9201
  variant: "secondary",
8845
9202
  onClick: handleCancel
8846
9203
  }, {
8847
- default: withCtx(() => [..._cache[59] || (_cache[59] = [createTextVNode(" Cancel ", -1)])]),
9204
+ default: withCtx(() => [..._cache[69] || (_cache[69] = [createTextVNode(" Cancel ", -1)])]),
8848
9205
  _: 1
8849
9206
  }),
8850
- _cache[63] || (_cache[63] = createElementVNode("div", { class: "mint-auto-group__nav-spacer" }, null, -1)),
9207
+ _cache[73] || (_cache[73] = createElementVNode("div", { class: "mint-auto-group__nav-spacer" }, null, -1)),
8851
9208
  !isFirstStep.value ? (openBlock(), createBlock(BaseButton_default, {
8852
9209
  key: 0,
8853
9210
  variant: "secondary",
8854
9211
  onClick: goBack
8855
9212
  }, {
8856
- default: withCtx(() => [..._cache[60] || (_cache[60] = [createTextVNode(" Back ", -1)])]),
9213
+ default: withCtx(() => [..._cache[70] || (_cache[70] = [createTextVNode(" Back ", -1)])]),
8857
9214
  _: 1
8858
9215
  }, 8, ["onClick"])) : createCommentVNode("", true),
8859
9216
  !isLastStep.value ? (openBlock(), createBlock(BaseButton_default, {
@@ -8865,7 +9222,7 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8865
9222
  goNext();
8866
9223
  }
8867
9224
  }, {
8868
- default: withCtx(() => [..._cache[61] || (_cache[61] = [createTextVNode(" Next ", -1)])]),
9225
+ default: withCtx(() => [..._cache[71] || (_cache[71] = [createTextVNode(" Next ", -1)])]),
8869
9226
  _: 1
8870
9227
  }, 8, ["disabled", "onClick"])) : createCommentVNode("", true),
8871
9228
  isLastStep.value ? (openBlock(), createBlock(BaseButton_default, {
@@ -8873,21 +9230,247 @@ var AutoGroupModal_default = /* @__PURE__ */ defineComponent({
8873
9230
  variant: "primary",
8874
9231
  onClick: handleApply
8875
9232
  }, {
8876
- default: withCtx(() => [..._cache[62] || (_cache[62] = [createTextVNode(" Apply ", -1)])]),
9233
+ default: withCtx(() => [..._cache[72] || (_cache[72] = [createTextVNode(" Apply ", -1)])]),
8877
9234
  _: 1
8878
9235
  })) : createCommentVNode("", true)
8879
9236
  ])]),
8880
9237
  _: 1
8881
- }, 8, ["modelValue", "steps"])])]),
8882
- _: 1
8883
- }, 8, ["model-value"]);
9238
+ }, 8, ["modelValue", "steps"])) : (openBlock(), createElementBlock("div", _hoisted_82, [createElementVNode("div", _hoisted_83, [createElementVNode("section", _hoisted_84, [
9239
+ createElementVNode("div", _hoisted_85, [_cache[75] || (_cache[75] = createElementVNode("div", null, [createElementVNode("span", { class: "mint-auto-group__manual-step" }, "1"), createElementVNode("h3", null, "Samples")], -1)), createElementVNode("div", _hoisted_86, [createElementVNode("span", null, toDisplayString(unref(manualFilteredSamples).length) + " of " + toDisplayString(manualSamplePool.value.length), 1), createElementVNode("label", _hoisted_87, [withDirectives(createElementVNode("input", {
9240
+ "onUpdate:modelValue": _cache[19] || (_cache[19] = ($event) => manualUngroupedOnly.value = $event),
9241
+ type: "checkbox",
9242
+ class: "mint-auto-group__manual-checkbox"
9243
+ }, null, 512), [[vModelCheckbox, manualUngroupedOnly.value]]), _cache[74] || (_cache[74] = createElementVNode("span", null, "Ungrouped only", -1))])])]),
9244
+ createElementVNode("div", _hoisted_88, [_cache[76] || (_cache[76] = createElementVNode("svg", {
9245
+ class: "mint-auto-group__manual-search-icon",
9246
+ fill: "none",
9247
+ stroke: "currentColor",
9248
+ viewBox: "0 0 24 24"
9249
+ }, [createElementVNode("path", {
9250
+ "stroke-linecap": "round",
9251
+ "stroke-linejoin": "round",
9252
+ "stroke-width": "2",
9253
+ d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
9254
+ })], -1)), withDirectives(createElementVNode("input", {
9255
+ "onUpdate:modelValue": _cache[20] || (_cache[20] = ($event) => manualSearchQuery.value = $event),
9256
+ type: "text",
9257
+ "aria-label": "Search samples for manual grouping",
9258
+ placeholder: "Search sample keyword...",
9259
+ class: "mint-auto-group__manual-search-input"
9260
+ }, null, 512), [[vModelText, manualSearchQuery.value]])]),
9261
+ createElementVNode("label", _hoisted_89, [
9262
+ createElementVNode("input", {
9263
+ type: "checkbox",
9264
+ checked: manualAllVisibleSelected.value,
9265
+ indeterminate: manualSomeVisibleSelected.value,
9266
+ disabled: unref(manualFilteredSamples).length === 0,
9267
+ class: "mint-auto-group__manual-checkbox",
9268
+ onChange: manualToggleVisibleSamples
9269
+ }, null, 40, _hoisted_90),
9270
+ _cache[77] || (_cache[77] = createElementVNode("span", null, "Select all matching", -1)),
9271
+ createElementVNode("span", _hoisted_91, toDisplayString(unref(manualFilteredSamples).length) + " shown ", 1)
9272
+ ]),
9273
+ createElementVNode("div", _hoisted_92, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(manualFilteredSamples), (sample) => {
9274
+ return openBlock(), createElementBlock("label", {
9275
+ key: sample,
9276
+ class: normalizeClass(["mint-auto-group__manual-sample", manualSelectedSet.value.has(sample) ? "mint-auto-group__manual-sample--selected" : ""]),
9277
+ title: sample
9278
+ }, [
9279
+ createElementVNode("input", {
9280
+ type: "checkbox",
9281
+ checked: manualSelectedSet.value.has(sample),
9282
+ class: "mint-auto-group__manual-checkbox",
9283
+ onChange: ($event) => manualToggleSample(sample)
9284
+ }, null, 40, _hoisted_94),
9285
+ createElementVNode("span", _hoisted_95, toDisplayString(sample), 1),
9286
+ createElementVNode("span", { class: normalizeClass(["mint-auto-group__manual-status", manualGetSampleGroup(sample) ? "" : "mint-auto-group__manual-status--empty"]) }, [manualGetSampleGroup(sample) ? (openBlock(), createElementBlock("span", {
9287
+ key: 0,
9288
+ class: "mint-auto-group__manual-dot",
9289
+ style: normalizeStyle({ backgroundColor: manualGetSampleGroup(sample)?.color }),
9290
+ "aria-hidden": "true"
9291
+ }, null, 4)) : createCommentVNode("", true), createTextVNode(" " + toDisplayString(manualGetSampleStatus(sample)), 1)], 2),
9292
+ createElementVNode("span", _hoisted_96, toDisplayString(sample), 1)
9293
+ ], 10, _hoisted_93);
9294
+ }), 128)), unref(manualFilteredSamples).length === 0 ? (openBlock(), createElementBlock("div", _hoisted_97, " No samples ")) : createCommentVNode("", true)]),
9295
+ createElementVNode("div", _hoisted_98, [createElementVNode("span", null, [createElementVNode("strong", null, toDisplayString(manualSelectedSamples.value.length), 1), _cache[78] || (_cache[78] = createTextVNode(" selected", -1))]), createElementVNode("button", {
9296
+ type: "button",
9297
+ class: "mint-auto-group__manual-link",
9298
+ disabled: manualSelectedSamples.value.length === 0,
9299
+ onClick: manualClearSamples
9300
+ }, " Clear ", 8, _hoisted_99)])
9301
+ ]), createElementVNode("section", _hoisted_100, [
9302
+ _cache[87] || (_cache[87] = createElementVNode("div", { class: "mint-auto-group__manual-panel-head" }, [createElementVNode("div", null, [createElementVNode("span", { class: "mint-auto-group__manual-step" }, "2"), createElementVNode("h3", null, "Cohort target")])], -1)),
9303
+ createElementVNode("div", { class: normalizeClass(["mint-auto-group__manual-assignment", manualSelectedSamples.value.length === 0 ? "mint-auto-group__manual-assignment--empty" : ""]) }, [
9304
+ createElementVNode("div", _hoisted_101, [createElementVNode("span", {
9305
+ class: "mint-auto-group__manual-dot",
9306
+ style: normalizeStyle({ backgroundColor: manualSelectedColor.value }),
9307
+ "aria-hidden": "true"
9308
+ }, null, 4), createElementVNode("span", null, toDisplayString(manualSelectedSamples.value.length > 0 ? `${manualSelectedSamples.value.length} selected` : "No sample selected"), 1)]),
9309
+ createElementVNode("div", _hoisted_102, [createElementVNode("label", _hoisted_103, [_cache[80] || (_cache[80] = createElementVNode("span", null, "Group", -1)), createElementVNode("div", _hoisted_104, [
9310
+ createElementVNode("span", {
9311
+ class: "mint-auto-group__manual-dot",
9312
+ style: normalizeStyle({ backgroundColor: manualSelectedColor.value }),
9313
+ "aria-hidden": "true"
9314
+ }, null, 4),
9315
+ createVNode(BaseInput_default, {
9316
+ modelValue: manualGroupName.value,
9317
+ "onUpdate:modelValue": _cache[21] || (_cache[21] = ($event) => manualGroupName.value = $event),
9318
+ list: "mint-auto-group-manual-groups",
9319
+ placeholder: "Type or pick...",
9320
+ size: "sm",
9321
+ class: "mint-auto-group__manual-combo-input"
9322
+ }, null, 8, ["modelValue"]),
9323
+ _cache[79] || (_cache[79] = createElementVNode("svg", {
9324
+ class: "mint-auto-group__manual-combo-icon",
9325
+ fill: "none",
9326
+ stroke: "currentColor",
9327
+ viewBox: "0 0 24 24"
9328
+ }, [createElementVNode("path", {
9329
+ "stroke-linecap": "round",
9330
+ "stroke-linejoin": "round",
9331
+ "stroke-width": "2",
9332
+ d: "M6 9l6 6 6-6"
9333
+ })], -1)),
9334
+ createElementVNode("datalist", _hoisted_105, [(openBlock(true), createElementBlock(Fragment, null, renderList(manualDraftGroups.value, (group) => {
9335
+ return openBlock(), createElementBlock("option", {
9336
+ key: `manual-group-option-${group.name}`,
9337
+ value: manualGetGroupPrimaryName(group.name)
9338
+ }, null, 8, _hoisted_106);
9339
+ }), 128))])
9340
+ ])]), createElementVNode("label", _hoisted_107, [_cache[82] || (_cache[82] = createElementVNode("span", null, [createTextVNode("Subgroup "), createElementVNode("small", null, "optional")], -1)), createElementVNode("div", _hoisted_108, [
9341
+ createVNode(BaseInput_default, {
9342
+ modelValue: manualSubGroupName.value,
9343
+ "onUpdate:modelValue": _cache[22] || (_cache[22] = ($event) => manualSubGroupName.value = $event),
9344
+ list: "mint-auto-group-manual-subgroups",
9345
+ placeholder: "e.g. Day 7",
9346
+ size: "sm",
9347
+ class: "mint-auto-group__manual-combo-input"
9348
+ }, null, 8, ["modelValue"]),
9349
+ _cache[81] || (_cache[81] = createElementVNode("svg", {
9350
+ class: "mint-auto-group__manual-combo-icon",
9351
+ fill: "none",
9352
+ stroke: "currentColor",
9353
+ viewBox: "0 0 24 24"
9354
+ }, [createElementVNode("path", {
9355
+ "stroke-linecap": "round",
9356
+ "stroke-linejoin": "round",
9357
+ "stroke-width": "2",
9358
+ d: "M6 9l6 6 6-6"
9359
+ })], -1)),
9360
+ createElementVNode("datalist", _hoisted_109, [(openBlock(true), createElementBlock(Fragment, null, renderList(manualDraftGroups.value, (group) => {
9361
+ return openBlock(), createElementBlock("option", {
9362
+ key: `manual-subgroup-option-${group.name}`,
9363
+ value: manualGetGroupSecondaryName(group.name) || group.name
9364
+ }, null, 8, _hoisted_110);
9365
+ }), 128))])
9366
+ ])])]),
9367
+ createElementVNode("div", _hoisted_111, [_cache[83] || (_cache[83] = createElementVNode("span", null, "Color", -1)), createElementVNode("div", _hoisted_112, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(manualColorOptions), (color) => {
9368
+ return openBlock(), createElementBlock("button", {
9369
+ key: color,
9370
+ type: "button",
9371
+ class: normalizeClass(["mint-auto-group__manual-swatch", manualSelectedColor.value === color ? "mint-auto-group__manual-swatch--active" : ""]),
9372
+ style: normalizeStyle({ backgroundColor: color }),
9373
+ "aria-label": `Use color ${color}`,
9374
+ onClick: ($event) => manualChooseColor(color)
9375
+ }, null, 14, _hoisted_113);
9376
+ }), 128))])]),
9377
+ createElementVNode("div", _hoisted_114, [_cache[84] || (_cache[84] = createElementVNode("span", null, "Target cohort", -1)), createElementVNode("code", null, toDisplayString(manualTargetGroupName.value || "Group/Subgroup"), 1)]),
9378
+ createVNode(BaseButton_default, {
9379
+ variant: "primary",
9380
+ size: "sm",
9381
+ class: "mint-auto-group__manual-assign",
9382
+ disabled: !manualCanAssign.value,
9383
+ onClick: manualAssignSamplesToGroup
9384
+ }, {
9385
+ default: withCtx(() => [..._cache[85] || (_cache[85] = [createElementVNode("svg", {
9386
+ class: "mint-auto-group__manual-btn-icon",
9387
+ fill: "none",
9388
+ stroke: "currentColor",
9389
+ viewBox: "0 0 24 24"
9390
+ }, [createElementVNode("path", {
9391
+ "stroke-linecap": "round",
9392
+ "stroke-linejoin": "round",
9393
+ "stroke-width": "2",
9394
+ d: "M5 12h14m-6-6 6 6-6 6"
9395
+ })], -1), createTextVNode(" Assign ", -1)])]),
9396
+ _: 1
9397
+ }, 8, ["disabled"])
9398
+ ], 2),
9399
+ createElementVNode("div", _hoisted_115, [
9400
+ createElementVNode("div", _hoisted_116, [_cache[86] || (_cache[86] = createElementVNode("span", null, "Cohorts so far", -1)), createElementVNode("span", null, toDisplayString(manualDraftGroups.value.length) + " groups", 1)]),
9401
+ unref(manualShowHierarchy) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(manualHierarchicalGroups), (majorGroup) => {
9402
+ return openBlock(), createElementBlock(Fragment, { key: `manual-major-${majorGroup.name}` }, [createElementVNode("button", {
9403
+ type: "button",
9404
+ class: "mint-auto-group__manual-chip mint-auto-group__manual-chip--major",
9405
+ title: majorGroup.name,
9406
+ onClick: ($event) => manualUseExistingGroupAsTarget(majorGroup.subGroups[0]?.name || majorGroup.name)
9407
+ }, [
9408
+ createElementVNode("span", {
9409
+ class: "mint-auto-group__manual-chip-dot",
9410
+ style: normalizeStyle({ backgroundColor: majorGroup.color }),
9411
+ "aria-hidden": "true"
9412
+ }, null, 4),
9413
+ createElementVNode("span", _hoisted_118, toDisplayString(majorGroup.name), 1),
9414
+ createElementVNode("span", _hoisted_119, toDisplayString(majorGroup.allSamples.length), 1)
9415
+ ], 8, _hoisted_117), (openBlock(true), createElementBlock(Fragment, null, renderList(majorGroup.subGroups, (subGroup) => {
9416
+ return openBlock(), createElementBlock("button", {
9417
+ key: `manual-sub-${subGroup.name}`,
9418
+ type: "button",
9419
+ class: "mint-auto-group__manual-chip mint-auto-group__manual-chip--sub",
9420
+ title: subGroup.name,
9421
+ onClick: ($event) => manualUseExistingGroupAsTarget(subGroup.name)
9422
+ }, [createElementVNode("span", _hoisted_121, toDisplayString(manualGetGroupSecondaryName(subGroup.name) || subGroup.name), 1), createElementVNode("span", _hoisted_122, toDisplayString(subGroup.samples.length), 1)], 8, _hoisted_120);
9423
+ }), 128))], 64);
9424
+ }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(manualDraftGroups.value, (group) => {
9425
+ return openBlock(), createElementBlock("button", {
9426
+ key: group.name,
9427
+ type: "button",
9428
+ class: "mint-auto-group__manual-chip",
9429
+ title: group.name,
9430
+ onClick: ($event) => manualUseExistingGroupAsTarget(group.name)
9431
+ }, [
9432
+ createElementVNode("span", {
9433
+ class: "mint-auto-group__manual-chip-dot",
9434
+ style: normalizeStyle({ backgroundColor: group.color }),
9435
+ "aria-hidden": "true"
9436
+ }, null, 4),
9437
+ createElementVNode("span", _hoisted_124, toDisplayString(group.name), 1),
9438
+ createElementVNode("span", _hoisted_125, toDisplayString(group.samples.length), 1)
9439
+ ], 8, _hoisted_123);
9440
+ }), 128)),
9441
+ manualDraftGroups.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_126, " No cohorts yet ")) : createCommentVNode("", true)
9442
+ ])
9443
+ ])])]))])]),
9444
+ _: 2
9445
+ }, [activeWorkflow.value === "manual" ? {
9446
+ name: "footer",
9447
+ fn: withCtx(() => [createElementVNode("div", _hoisted_127, [
9448
+ createVNode(BaseButton_default, {
9449
+ variant: "secondary",
9450
+ onClick: handleCancel
9451
+ }, {
9452
+ default: withCtx(() => [..._cache[88] || (_cache[88] = [createTextVNode(" Cancel ", -1)])]),
9453
+ _: 1
9454
+ }),
9455
+ _cache[90] || (_cache[90] = createElementVNode("div", { class: "mint-auto-group__nav-spacer" }, null, -1)),
9456
+ createVNode(BaseButton_default, {
9457
+ variant: "primary",
9458
+ onClick: handleManualApply
9459
+ }, {
9460
+ default: withCtx(() => [..._cache[89] || (_cache[89] = [createTextVNode(" Apply ", -1)])]),
9461
+ _: 1
9462
+ })
9463
+ ])]),
9464
+ key: "0"
9465
+ } : void 0]), 1032, ["model-value", "size"]);
8884
9466
  };
8885
9467
  }
8886
9468
  });
8887
9469
  //#endregion
8888
9470
  //#region src/components/SampleSelectorSampleRow.vue?vue&type=script&setup=true&lang.ts
8889
- var _hoisted_1$32 = ["checked"];
8890
- var _hoisted_2$28 = { class: "mint-sample-selector__sample-name" };
9471
+ var _hoisted_1$32 = ["title", "aria-label"];
9472
+ var _hoisted_2$28 = ["checked"];
9473
+ var _hoisted_3$26 = { class: "mint-sample-selector__sample-name" };
8891
9474
  //#endregion
8892
9475
  //#region src/components/SampleSelectorSampleRow.vue
8893
9476
  var SampleSelectorSampleRow_default = /* @__PURE__ */ defineComponent({
@@ -8915,6 +9498,8 @@ var SampleSelectorSampleRow_default = /* @__PURE__ */ defineComponent({
8915
9498
  return (_ctx, _cache) => {
8916
9499
  return openBlock(), createElementBlock("div", {
8917
9500
  class: normalizeClass(["mint-sample-selector__sample", __props.dragging ? "mint-sample-selector__sample--dragging" : ""]),
9501
+ title: __props.sample,
9502
+ "aria-label": `Sample: ${__props.sample}`,
8918
9503
  draggable: "true"
8919
9504
  }, [
8920
9505
  _cache[3] || (_cache[3] = createElementVNode("svg", {
@@ -8934,8 +9519,8 @@ var SampleSelectorSampleRow_default = /* @__PURE__ */ defineComponent({
8934
9519
  class: normalizeClass(checkboxClasses.value),
8935
9520
  style: normalizeStyle(__props.accentColor ? { accentColor: __props.accentColor } : void 0),
8936
9521
  onChange: _cache[0] || (_cache[0] = ($event) => emit("toggle"))
8937
- }, null, 46, _hoisted_1$32),
8938
- createElementVNode("span", _hoisted_2$28, toDisplayString(__props.sample), 1),
9522
+ }, null, 46, _hoisted_2$28),
9523
+ createElementVNode("span", _hoisted_3$26, toDisplayString(__props.sample), 1),
8939
9524
  __props.removable ? (openBlock(), createElementBlock("button", {
8940
9525
  key: 0,
8941
9526
  type: "button",
@@ -8952,7 +9537,7 @@ var SampleSelectorSampleRow_default = /* @__PURE__ */ defineComponent({
8952
9537
  "stroke-width": "2",
8953
9538
  d: "M20 12H4"
8954
9539
  })], -1)])])) : createCommentVNode("", true)
8955
- ], 2);
9540
+ ], 10, _hoisted_1$32);
8956
9541
  };
8957
9542
  }
8958
9543
  });
@@ -9206,33 +9791,6 @@ function useSampleSelectorSelection(options) {
9206
9791
  };
9207
9792
  }
9208
9793
  //#endregion
9209
- //#region src/components/SampleSelector.colors.ts
9210
- var DEFAULT_COLOR_PICKER_SEED = "#3B82F6";
9211
- function applySampleGroupColorEdit(groups, edit, color) {
9212
- const targets = edit.kind === "family" ? new Set(edit.names) : new Set([edit.name]);
9213
- return groups.map((group) => targets.has(group.name) ? {
9214
- ...group,
9215
- color
9216
- } : group);
9217
- }
9218
- function getSampleGroupColorEditSeed(edit, getGroupColor) {
9219
- if (!edit) return DEFAULT_COLOR_PICKER_SEED;
9220
- return getGroupColor(edit.kind === "family" ? edit.names[0] : edit.name);
9221
- }
9222
- function pickUnusedSampleGroupColor(groups) {
9223
- const usedColors = new Set(groups.map((group) => group.color));
9224
- return DEFAULT_COLORS.find((color) => !usedColors.has(color)) || DEFAULT_COLORS[0];
9225
- }
9226
- function createSampleGroup(name, existingGroups) {
9227
- const trimmedName = name.trim();
9228
- if (!trimmedName) return null;
9229
- return {
9230
- name: trimmedName,
9231
- color: pickUnusedSampleGroupColor(existingGroups),
9232
- samples: []
9233
- };
9234
- }
9235
- //#endregion
9236
9794
  //#region src/components/SampleSelector.vue?vue&type=script&setup=true&lang.ts
9237
9795
  var _hoisted_1$31 = { class: "mint-sample-selector" };
9238
9796
  var _hoisted_2$27 = { class: "mint-sample-selector__select-all" };
@@ -9314,9 +9872,10 @@ var _hoisted_33$1 = {
9314
9872
  };
9315
9873
  var _hoisted_34$1 = { class: "mint-sample-selector__search" };
9316
9874
  var _hoisted_35$1 = { class: "mint-sample-selector__flat-list" };
9317
- var _hoisted_36$1 = ["checked", "onChange"];
9318
- var _hoisted_37$1 = { class: "mint-sample-selector__flat-name" };
9319
- var _hoisted_38$1 = {
9875
+ var _hoisted_36$1 = ["title", "aria-label"];
9876
+ var _hoisted_37$1 = ["checked", "onChange"];
9877
+ var _hoisted_38$1 = { class: "mint-sample-selector__flat-name" };
9878
+ var _hoisted_39$1 = {
9320
9879
  key: 0,
9321
9880
  class: "mint-sample-selector__empty"
9322
9881
  };
@@ -9353,6 +9912,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9353
9912
  const props = __props;
9354
9913
  const emit = __emit;
9355
9914
  const showSmartGroupModal = ref(false);
9915
+ const groupingModalMode = ref("auto");
9356
9916
  const newGroupName = ref("");
9357
9917
  const editingColor = ref(null);
9358
9918
  const colorPickerInput = ref(null);
@@ -9413,6 +9973,10 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9413
9973
  emit("smartGroup", result);
9414
9974
  emit("update:groups", result.groups);
9415
9975
  }
9976
+ function openGroupingModal(mode) {
9977
+ groupingModalMode.value = mode;
9978
+ showSmartGroupModal.value = true;
9979
+ }
9416
9980
  function clearGroups() {
9417
9981
  internalGroups.value = [];
9418
9982
  }
@@ -9470,57 +10034,80 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9470
10034
  onChange: _cache[0] || (_cache[0] = (...args) => unref(toggleSelectAll) && unref(toggleSelectAll)(...args)),
9471
10035
  class: "mint-sample-selector__checkbox"
9472
10036
  }, null, 40, _hoisted_3$25),
9473
- _cache[17] || (_cache[17] = createElementVNode("span", { class: "mint-sample-selector__select-all-label" }, "Select All", -1)),
10037
+ _cache[18] || (_cache[18] = createElementVNode("span", { class: "mint-sample-selector__select-all-label" }, "Select All", -1)),
9474
10038
  createElementVNode("span", _hoisted_4$25, toDisplayString(resolvedSamples.value.length) + " samples", 1)
9475
10039
  ]),
9476
- __props.enableGrouping ? (openBlock(), createElementBlock("div", _hoisted_5$23, [createElementVNode("div", _hoisted_6$23, [__props.enableSmartGroup ? (openBlock(), createBlock(BaseButton_default, {
9477
- key: 0,
9478
- variant: groupingEnabled.value ? "primary" : "secondary",
9479
- size: "sm",
9480
- disabled: resolvedSamples.value.length === 0,
9481
- class: "mint-sample-selector__action-btn",
9482
- onClick: _cache[1] || (_cache[1] = ($event) => showSmartGroupModal.value = true)
9483
- }, {
9484
- default: withCtx(() => [..._cache[18] || (_cache[18] = [createElementVNode("svg", {
9485
- class: "mint-sample-selector__action-icon",
9486
- fill: "none",
9487
- stroke: "currentColor",
9488
- viewBox: "0 0 24 24"
9489
- }, [createElementVNode("path", {
9490
- "stroke-linecap": "round",
9491
- "stroke-linejoin": "round",
9492
- "stroke-width": "2",
9493
- d: "M13 10V3L4 14h7v7l9-11h-7z"
9494
- })], -1), createElementVNode("span", null, "Smart Group", -1)])]),
9495
- _: 1
9496
- }, 8, ["variant", "disabled"])) : createCommentVNode("", true), createVNode(BaseButton_default, {
9497
- variant: "ghost",
9498
- size: "sm",
9499
- disabled: internalGroups.value.length === 0,
9500
- class: "mint-sample-selector__action-btn mint-sample-selector__action-btn--reset",
9501
- onClick: clearGroups,
9502
- title: "Clear all groups"
9503
- }, {
9504
- default: withCtx(() => [..._cache[19] || (_cache[19] = [createElementVNode("svg", {
9505
- class: "mint-sample-selector__action-icon",
9506
- fill: "none",
9507
- stroke: "currentColor",
9508
- viewBox: "0 0 24 24"
9509
- }, [createElementVNode("path", {
9510
- "stroke-linecap": "round",
9511
- "stroke-linejoin": "round",
9512
- "stroke-width": "2",
9513
- 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"
9514
- })], -1)])]),
9515
- _: 1
9516
- }, 8, ["disabled"])])])) : createCommentVNode("", true),
10040
+ __props.enableGrouping ? (openBlock(), createElementBlock("div", _hoisted_5$23, [createElementVNode("div", _hoisted_6$23, [
10041
+ __props.enableSmartGroup ? (openBlock(), createBlock(BaseButton_default, {
10042
+ key: 0,
10043
+ variant: groupingEnabled.value ? "primary" : "secondary",
10044
+ size: "sm",
10045
+ disabled: resolvedSamples.value.length === 0,
10046
+ class: "mint-sample-selector__action-btn",
10047
+ onClick: _cache[1] || (_cache[1] = ($event) => openGroupingModal("auto"))
10048
+ }, {
10049
+ default: withCtx(() => [..._cache[19] || (_cache[19] = [createElementVNode("svg", {
10050
+ class: "mint-sample-selector__action-icon",
10051
+ fill: "none",
10052
+ stroke: "currentColor",
10053
+ viewBox: "0 0 24 24"
10054
+ }, [createElementVNode("path", {
10055
+ "stroke-linecap": "round",
10056
+ "stroke-linejoin": "round",
10057
+ "stroke-width": "2",
10058
+ d: "M13 10V3L4 14h7v7l9-11h-7z"
10059
+ })], -1), createElementVNode("span", null, "Smart Group", -1)])]),
10060
+ _: 1
10061
+ }, 8, ["variant", "disabled"])) : createCommentVNode("", true),
10062
+ createVNode(BaseButton_default, {
10063
+ variant: "secondary",
10064
+ size: "sm",
10065
+ disabled: resolvedSamples.value.length === 0,
10066
+ class: "mint-sample-selector__action-btn",
10067
+ onClick: _cache[2] || (_cache[2] = ($event) => openGroupingModal("manual"))
10068
+ }, {
10069
+ default: withCtx(() => [..._cache[20] || (_cache[20] = [createElementVNode("svg", {
10070
+ class: "mint-sample-selector__action-icon",
10071
+ fill: "none",
10072
+ stroke: "currentColor",
10073
+ viewBox: "0 0 24 24"
10074
+ }, [createElementVNode("path", {
10075
+ "stroke-linecap": "round",
10076
+ "stroke-linejoin": "round",
10077
+ "stroke-width": "2",
10078
+ 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"
10079
+ })], -1), createElementVNode("span", null, "Manual Group", -1)])]),
10080
+ _: 1
10081
+ }, 8, ["disabled"]),
10082
+ createVNode(BaseButton_default, {
10083
+ variant: "ghost",
10084
+ size: "sm",
10085
+ disabled: internalGroups.value.length === 0,
10086
+ class: "mint-sample-selector__action-btn mint-sample-selector__action-btn--reset",
10087
+ onClick: clearGroups,
10088
+ title: "Clear all groups"
10089
+ }, {
10090
+ default: withCtx(() => [..._cache[21] || (_cache[21] = [createElementVNode("svg", {
10091
+ class: "mint-sample-selector__action-icon",
10092
+ fill: "none",
10093
+ stroke: "currentColor",
10094
+ viewBox: "0 0 24 24"
10095
+ }, [createElementVNode("path", {
10096
+ "stroke-linecap": "round",
10097
+ "stroke-linejoin": "round",
10098
+ "stroke-width": "2",
10099
+ 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"
10100
+ })], -1)])]),
10101
+ _: 1
10102
+ }, 8, ["disabled"])
10103
+ ])])) : createCommentVNode("", true),
9517
10104
  groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_7$21, [
9518
10105
  createElementVNode("div", _hoisted_8$18, [createElementVNode("span", _hoisted_9$16, "Groups (" + toDisplayString(internalGroups.value.length) + ")", 1), createElementVNode("div", { class: "mint-sample-selector__groups-controls" }, [createElementVNode("button", {
9519
10106
  type: "button",
9520
10107
  class: "mint-sample-selector__expand-btn",
9521
10108
  onClick: expandAllGroups,
9522
10109
  title: "Expand all"
9523
- }, [..._cache[20] || (_cache[20] = [createElementVNode("svg", {
10110
+ }, [..._cache[22] || (_cache[22] = [createElementVNode("svg", {
9524
10111
  class: "mint-sample-selector__expand-icon",
9525
10112
  fill: "none",
9526
10113
  stroke: "currentColor",
@@ -9535,7 +10122,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9535
10122
  class: "mint-sample-selector__expand-btn",
9536
10123
  onClick: collapseAllGroups,
9537
10124
  title: "Collapse all"
9538
- }, [..._cache[21] || (_cache[21] = [createElementVNode("svg", {
10125
+ }, [..._cache[23] || (_cache[23] = [createElementVNode("svg", {
9539
10126
  class: "mint-sample-selector__expand-icon",
9540
10127
  fill: "none",
9541
10128
  stroke: "currentColor",
@@ -9560,9 +10147,9 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9560
10147
  draggable: "true",
9561
10148
  onClick: ($event) => toggleGroupExpanded(`major:${majorGroup.name}`),
9562
10149
  onDragstart: ($event) => unref(handleGroupDragStart)(majorGroup.name, "major", $event),
9563
- onDragend: _cache[3] || (_cache[3] = (...args) => unref(handleGroupDragEnd) && unref(handleGroupDragEnd)(...args)),
10150
+ onDragend: _cache[4] || (_cache[4] = (...args) => unref(handleGroupDragEnd) && unref(handleGroupDragEnd)(...args)),
9564
10151
  onDragover: ($event) => unref(handleGroupDragOver)(majorGroup.name, "major", $event),
9565
- onDragleave: _cache[4] || (_cache[4] = ($event) => unref(handleGroupDragLeave)($event)),
10152
+ onDragleave: _cache[5] || (_cache[5] = ($event) => unref(handleGroupDragLeave)($event)),
9566
10153
  onDrop: ($event) => unref(handleGroupDrop)(majorGroup.name, "major", $event)
9567
10154
  }, [
9568
10155
  (openBlock(), createElementBlock("svg", {
@@ -9570,7 +10157,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9570
10157
  fill: "none",
9571
10158
  stroke: "currentColor",
9572
10159
  viewBox: "0 0 24 24"
9573
- }, [..._cache[22] || (_cache[22] = [createElementVNode("path", {
10160
+ }, [..._cache[24] || (_cache[24] = [createElementVNode("path", {
9574
10161
  "stroke-linecap": "round",
9575
10162
  "stroke-linejoin": "round",
9576
10163
  "stroke-width": "2",
@@ -9582,7 +10169,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9582
10169
  indeterminate: unref(isMajorGroupPartiallySelected)(majorGroup),
9583
10170
  class: "mint-sample-selector__checkbox",
9584
10171
  style: normalizeStyle({ accentColor: majorGroup.color }),
9585
- onClick: _cache[2] || (_cache[2] = withModifiers(() => {}, ["stop"])),
10172
+ onClick: _cache[3] || (_cache[3] = withModifiers(() => {}, ["stop"])),
9586
10173
  onChange: ($event) => unref(toggleMajorGroupSamples)(majorGroup)
9587
10174
  }, null, 44, _hoisted_12$12),
9588
10175
  createElementVNode("button", {
@@ -9605,7 +10192,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9605
10192
  class: "mint-sample-selector__delete-btn mint-sample-selector__delete-btn--hidden",
9606
10193
  onClick: withModifiers(($event) => deleteMajorGroup(majorGroup), ["stop"]),
9607
10194
  title: "Remove major group"
9608
- }, [..._cache[23] || (_cache[23] = [createElementVNode("svg", {
10195
+ }, [..._cache[25] || (_cache[25] = [createElementVNode("svg", {
9609
10196
  fill: "none",
9610
10197
  stroke: "currentColor",
9611
10198
  viewBox: "0 0 24 24"
@@ -9625,7 +10212,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9625
10212
  key: subGroup.name,
9626
10213
  class: normalizeClass(["mint-sample-selector__sub-group", unref(dragOverGroup) === subGroup.name ? "mint-sample-selector__sub-group--drag-over" : ""]),
9627
10214
  onDragover: ($event) => unref(handleDragOver)(subGroup.name, $event),
9628
- onDragleave: _cache[8] || (_cache[8] = (...args) => unref(handleDragLeave) && unref(handleDragLeave)(...args)),
10215
+ onDragleave: _cache[9] || (_cache[9] = (...args) => unref(handleDragLeave) && unref(handleDragLeave)(...args)),
9629
10216
  onDrop: ($event) => unref(handleDrop)(subGroup.name, $event)
9630
10217
  }, [createElementVNode("div", {
9631
10218
  class: normalizeClass([
@@ -9637,9 +10224,9 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9637
10224
  draggable: "true",
9638
10225
  onClick: ($event) => toggleGroupExpanded(subGroup.name),
9639
10226
  onDragstart: ($event) => unref(handleGroupDragStart)(subGroup.name, "sub", $event),
9640
- onDragend: _cache[6] || (_cache[6] = (...args) => unref(handleGroupDragEnd) && unref(handleGroupDragEnd)(...args)),
10227
+ onDragend: _cache[7] || (_cache[7] = (...args) => unref(handleGroupDragEnd) && unref(handleGroupDragEnd)(...args)),
9641
10228
  onDragover: ($event) => unref(handleGroupDragOver)(subGroup.name, "sub", $event),
9642
- onDragleave: _cache[7] || (_cache[7] = ($event) => unref(handleGroupDragLeave)($event)),
10229
+ onDragleave: _cache[8] || (_cache[8] = ($event) => unref(handleGroupDragLeave)($event)),
9643
10230
  onDrop: ($event) => unref(handleGroupDrop)(subGroup.name, "sub", $event)
9644
10231
  }, [
9645
10232
  (openBlock(), createElementBlock("svg", {
@@ -9647,7 +10234,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9647
10234
  fill: "none",
9648
10235
  stroke: "currentColor",
9649
10236
  viewBox: "0 0 24 24"
9650
- }, [..._cache[24] || (_cache[24] = [createElementVNode("path", {
10237
+ }, [..._cache[26] || (_cache[26] = [createElementVNode("path", {
9651
10238
  "stroke-linecap": "round",
9652
10239
  "stroke-linejoin": "round",
9653
10240
  "stroke-width": "2",
@@ -9659,7 +10246,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9659
10246
  indeterminate: unref(isGroupPartiallySelected)(subGroup.name),
9660
10247
  class: "mint-sample-selector__checkbox mint-sample-selector__checkbox--small",
9661
10248
  style: normalizeStyle({ accentColor: subGroup.displayColor }),
9662
- onClick: _cache[5] || (_cache[5] = withModifiers(() => {}, ["stop"])),
10249
+ onClick: _cache[6] || (_cache[6] = withModifiers(() => {}, ["stop"])),
9663
10250
  onChange: ($event) => unref(toggleGroupSamples)(subGroup.name)
9664
10251
  }, null, 44, _hoisted_18$8),
9665
10252
  createElementVNode("div", {
@@ -9680,7 +10267,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9680
10267
  class: "mint-sample-selector__delete-btn mint-sample-selector__delete-btn--hidden",
9681
10268
  onClick: withModifiers(($event) => deleteGroup(subGroup.name), ["stop"]),
9682
10269
  title: "Remove sub group"
9683
- }, [..._cache[25] || (_cache[25] = [createElementVNode("svg", {
10270
+ }, [..._cache[27] || (_cache[27] = [createElementVNode("svg", {
9684
10271
  fill: "none",
9685
10272
  stroke: "currentColor",
9686
10273
  viewBox: "0 0 24 24"
@@ -9729,7 +10316,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9729
10316
  key: group.name,
9730
10317
  class: normalizeClass(["mint-sample-selector__sub-group", unref(dragOverGroup) === group.name ? "mint-sample-selector__sub-group--drag-over" : ""]),
9731
10318
  onDragover: ($event) => unref(handleDragOver)(group.name, $event),
9732
- onDragleave: _cache[12] || (_cache[12] = (...args) => unref(handleDragLeave) && unref(handleDragLeave)(...args)),
10319
+ onDragleave: _cache[13] || (_cache[13] = (...args) => unref(handleDragLeave) && unref(handleDragLeave)(...args)),
9733
10320
  onDrop: ($event) => unref(handleDrop)(group.name, $event)
9734
10321
  }, [createElementVNode("div", {
9735
10322
  class: normalizeClass([
@@ -9741,9 +10328,9 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9741
10328
  draggable: "true",
9742
10329
  onClick: ($event) => toggleGroupExpanded(group.name),
9743
10330
  onDragstart: ($event) => unref(handleGroupDragStart)(group.name, "flat", $event),
9744
- onDragend: _cache[10] || (_cache[10] = (...args) => unref(handleGroupDragEnd) && unref(handleGroupDragEnd)(...args)),
10331
+ onDragend: _cache[11] || (_cache[11] = (...args) => unref(handleGroupDragEnd) && unref(handleGroupDragEnd)(...args)),
9745
10332
  onDragover: ($event) => unref(handleGroupDragOver)(group.name, "flat", $event),
9746
- onDragleave: _cache[11] || (_cache[11] = ($event) => unref(handleGroupDragLeave)($event)),
10333
+ onDragleave: _cache[12] || (_cache[12] = ($event) => unref(handleGroupDragLeave)($event)),
9747
10334
  onDrop: ($event) => unref(handleGroupDrop)(group.name, "flat", $event)
9748
10335
  }, [
9749
10336
  (openBlock(), createElementBlock("svg", {
@@ -9751,7 +10338,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9751
10338
  fill: "none",
9752
10339
  stroke: "currentColor",
9753
10340
  viewBox: "0 0 24 24"
9754
- }, [..._cache[26] || (_cache[26] = [createElementVNode("path", {
10341
+ }, [..._cache[28] || (_cache[28] = [createElementVNode("path", {
9755
10342
  "stroke-linecap": "round",
9756
10343
  "stroke-linejoin": "round",
9757
10344
  "stroke-width": "2",
@@ -9763,7 +10350,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9763
10350
  indeterminate: unref(isGroupPartiallySelected)(group.name),
9764
10351
  class: "mint-sample-selector__checkbox",
9765
10352
  style: normalizeStyle({ accentColor: group.color }),
9766
- onClick: _cache[9] || (_cache[9] = withModifiers(() => {}, ["stop"])),
10353
+ onClick: _cache[10] || (_cache[10] = withModifiers(() => {}, ["stop"])),
9767
10354
  onChange: ($event) => unref(toggleGroupSamples)(group.name)
9768
10355
  }, null, 44, _hoisted_23$4),
9769
10356
  createElementVNode("button", {
@@ -9786,7 +10373,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9786
10373
  class: "mint-sample-selector__delete-btn mint-sample-selector__delete-btn--hidden",
9787
10374
  onClick: withModifiers(($event) => deleteGroup(group.name), ["stop"]),
9788
10375
  title: "Remove group"
9789
- }, [..._cache[27] || (_cache[27] = [createElementVNode("svg", {
10376
+ }, [..._cache[29] || (_cache[29] = [createElementVNode("svg", {
9790
10377
  fill: "none",
9791
10378
  stroke: "currentColor",
9792
10379
  viewBox: "0 0 24 24"
@@ -9830,20 +10417,20 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9830
10417
  }), 128)), internalGroups.value.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_27$3, " Click Smart Group to auto-group samples ")) : createCommentVNode("", true)]),
9831
10418
  unref(ungroupedSamples).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_28$2, [createElementVNode("div", {
9832
10419
  class: "mint-sample-selector__ungrouped-header",
9833
- onClick: _cache[13] || (_cache[13] = ($event) => toggleGroupExpanded("__ungrouped__"))
10420
+ onClick: _cache[14] || (_cache[14] = ($event) => toggleGroupExpanded("__ungrouped__"))
9834
10421
  }, [
9835
10422
  (openBlock(), createElementBlock("svg", {
9836
10423
  class: normalizeClass(["mint-sample-selector__chevron", isGroupExpanded("__ungrouped__") ? "mint-sample-selector__chevron--open" : ""]),
9837
10424
  fill: "none",
9838
10425
  stroke: "currentColor",
9839
10426
  viewBox: "0 0 24 24"
9840
- }, [..._cache[28] || (_cache[28] = [createElementVNode("path", {
10427
+ }, [..._cache[30] || (_cache[30] = [createElementVNode("path", {
9841
10428
  "stroke-linecap": "round",
9842
10429
  "stroke-linejoin": "round",
9843
10430
  "stroke-width": "2",
9844
10431
  d: "M9 5l7 7-7 7"
9845
10432
  }, null, -1)])], 2)),
9846
- _cache[29] || (_cache[29] = createElementVNode("span", { class: "mint-sample-selector__ungrouped-label" }, "Ungrouped", -1)),
10433
+ _cache[31] || (_cache[31] = createElementVNode("span", { class: "mint-sample-selector__ungrouped-label" }, "Ungrouped", -1)),
9847
10434
  createElementVNode("span", _hoisted_29$1, toDisplayString(unref(ungroupedSamples).length), 1)
9848
10435
  ]), createVNode(Transition, { name: "mint-collapse" }, {
9849
10436
  default: withCtx(() => [isGroupExpanded("__ungrouped__") ? (openBlock(), createElementBlock("div", _hoisted_30$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(ungroupedSamples), (sample) => {
@@ -9869,7 +10456,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9869
10456
  })])) : createCommentVNode("", true),
9870
10457
  createElementVNode("div", _hoisted_31$1, [createVNode(BaseInput_default, {
9871
10458
  modelValue: newGroupName.value,
9872
- "onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => newGroupName.value = $event),
10459
+ "onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => newGroupName.value = $event),
9873
10460
  placeholder: "New group name...",
9874
10461
  class: "mint-sample-selector__new-group-input",
9875
10462
  onKeyup: withKeys(addNewGroup, ["enter"])
@@ -9880,7 +10467,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9880
10467
  class: "mint-sample-selector__new-group-btn",
9881
10468
  onClick: addNewGroup
9882
10469
  }, {
9883
- default: withCtx(() => [..._cache[30] || (_cache[30] = [createTextVNode(" Add ", -1)])]),
10470
+ default: withCtx(() => [..._cache[32] || (_cache[32] = [createTextVNode(" Add ", -1)])]),
9884
10471
  _: 1
9885
10472
  }, 8, ["disabled"])]),
9886
10473
  createElementVNode("input", {
@@ -9892,7 +10479,7 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9892
10479
  onChange: handleColorChange
9893
10480
  }, null, 40, _hoisted_32$1)
9894
10481
  ])) : createCommentVNode("", true),
9895
- !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_33$1, [createElementVNode("div", _hoisted_34$1, [_cache[31] || (_cache[31] = createElementVNode("svg", {
10482
+ !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_33$1, [createElementVNode("div", _hoisted_34$1, [_cache[33] || (_cache[33] = createElementVNode("svg", {
9896
10483
  class: "mint-sample-selector__search-icon",
9897
10484
  fill: "none",
9898
10485
  stroke: "currentColor",
@@ -9903,31 +10490,37 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
9903
10490
  "stroke-width": "2",
9904
10491
  d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
9905
10492
  })], -1)), withDirectives(createElementVNode("input", {
9906
- "onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => searchQuery.value = $event),
10493
+ "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => searchQuery.value = $event),
9907
10494
  type: "text",
9908
10495
  placeholder: "Search samples...",
9909
10496
  class: "mint-sample-selector__search-input"
9910
10497
  }, null, 512), [[vModelText, searchQuery.value]])]), createElementVNode("div", _hoisted_35$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(filteredSamples), (sample) => {
9911
10498
  return openBlock(), createElementBlock("div", {
9912
10499
  key: sample,
9913
- class: "mint-sample-selector__flat-item"
10500
+ class: "mint-sample-selector__flat-item",
10501
+ title: sample,
10502
+ "aria-label": `Sample: ${sample}`
9914
10503
  }, [createElementVNode("input", {
9915
10504
  type: "checkbox",
9916
10505
  checked: __props.modelValue.includes(sample),
9917
10506
  class: "mint-sample-selector__checkbox",
9918
10507
  onChange: ($event) => unref(toggleSample)(sample)
9919
- }, null, 40, _hoisted_36$1), createElementVNode("span", _hoisted_37$1, toDisplayString(sample), 1)]);
9920
- }), 128)), unref(filteredSamples).length === 0 && searchQuery.value.trim() ? (openBlock(), createElementBlock("div", _hoisted_38$1, " No samples match \"" + toDisplayString(searchQuery.value) + "\" ", 1)) : createCommentVNode("", true)])])) : createCommentVNode("", true),
10508
+ }, null, 40, _hoisted_37$1), createElementVNode("span", _hoisted_38$1, toDisplayString(sample), 1)], 8, _hoisted_36$1);
10509
+ }), 128)), unref(filteredSamples).length === 0 && searchQuery.value.trim() ? (openBlock(), createElementBlock("div", _hoisted_39$1, " No samples match \"" + toDisplayString(searchQuery.value) + "\" ", 1)) : createCommentVNode("", true)])])) : createCommentVNode("", true),
9921
10510
  createVNode(AutoGroupModal_default, {
9922
10511
  modelValue: showSmartGroupModal.value,
9923
- "onUpdate:modelValue": _cache[16] || (_cache[16] = ($event) => showSmartGroupModal.value = $event),
10512
+ "onUpdate:modelValue": _cache[17] || (_cache[17] = ($event) => showSmartGroupModal.value = $event),
9924
10513
  samples: resolvedSamples.value,
10514
+ groups: internalGroups.value,
10515
+ "initial-mode": groupingModalMode.value,
9925
10516
  "experiment-id": resolvedExperimentId.value,
9926
10517
  "design-data": resolvedDesignData.value,
9927
10518
  onApply: handleSmartGroupApply
9928
10519
  }, null, 8, [
9929
10520
  "modelValue",
9930
10521
  "samples",
10522
+ "groups",
10523
+ "initial-mode",
9931
10524
  "experiment-id",
9932
10525
  "design-data"
9933
10526
  ])
@@ -15976,6 +16569,7 @@ var components_exports = /* @__PURE__ */ __exportAll({
15976
16569
  InstrumentStatusCard: () => InstrumentStatusCard_default,
15977
16570
  LcmsSequenceTable: () => LcmsSequenceTable_default,
15978
16571
  LoadingSpinner: () => LoadingSpinner_default,
16572
+ MobileSupportGate: () => MobileSupportGate_default,
15979
16573
  MoleculeInput: () => MoleculeInput_default,
15980
16574
  MultiSelect: () => MultiSelect_default,
15981
16575
  NumberInput: () => NumberInput_default,
@@ -16009,6 +16603,6 @@ var components_exports = /* @__PURE__ */ __exportAll({
16009
16603
  WellPlate: () => WellPlate_default
16010
16604
  });
16011
16605
  //#endregion
16012
- export { SampleLegend_default as $, ReagentEditor_default as A, ProgressBar_default as B, formatSequenceRemaining as C, ColorSlider_default as Ct, ScientificNumber_default as D, ChemicalFormula_default as E, BioTemplateExperimentWorkspaceView_default as F, ControlWorkspaceView_default as G, Divider_default as H, BioTemplateRenderer_default as I, SampleSelector_default as J, ComponentBindingRenderer_default as K, ChartContainer_default as L, RackEditor_default as M, BioTemplatePresetWorkspaceView_default as N, ProtocolStepEditor_default as O, BioTemplatePackWorkspaceView_default as P, PlateMapEditor_default as Q, Breadcrumb_default as R, formatSequenceEta as S, BaseTabs_default as St, sequenceSamplesRemaining as T, AppContainer_default as U, StatusIndicator_default as V, DoseDesignWorkspaceView_default as W, LoadingSpinner_default as X, AutoGroupModal_default as Y, ReagentList_default as Z, InstrumentStateBadge_default as _, AlertBox_default as _t, ExperimentDataViewer_default as a, AppSidebar_default as at, estimateSequenceFinishDate as b, DropdownButton_default as bt, LcmsSequenceTable_default as c, StepWizard_default as ct, extractLcmsCommonPrefix as d, AppAvatarMenu_default as dt, WellPlate_default as et, extractLcmsSampleName as f, PluginIcon_default as ft, InstrumentStatusCard_default as g, AppToastContainer_default as gt, reconstructLcmsPlateCellsFromSequenceItems as h, IconButton_default as ht, TimeRangeInput_default as i, AppLayout_default as it, GroupAssigner_default as j, SampleHierarchyTree_default as k, DEFAULT_LCMS_SEQUENCE_COLUMNS as l, AppTopBar_default as lt, lcmsWellIdFromPosition as m, ThemeToggle_default as mt, FitPanel_default as n, DoseCalculator_default as nt, BatchProgressList_default as o, FormBuilder_default as ot, inferLcmsPlateTypeFromWellIds as p, CollapsibleCard_default as pt, ScheduleCalendar_default as q, ResourceCard_default as r, PluginWorkspaceView_default as rt, AuditTrail_default as s, FormActions_default as st, components_exports as t, ExperimentTimeline_default as tt, basenameFromWindowsPath as u, AppPluginSwitcher_default as ut, InstrumentAlertLog_default as v, DataFrame_default as vt, sequenceProgressPercent as w, estimateSequenceRemainingSeconds as x, SegmentedControl_default as xt, SequenceProgressBar_default as y, Calendar_default as yt, Avatar_default as z };
16606
+ export { SampleLegend_default as $, ReagentEditor_default as A, ProgressBar_default as B, formatSequenceRemaining as C, BaseTabs_default as Ct, ScientificNumber_default as D, ChemicalFormula_default as E, BioTemplateExperimentWorkspaceView_default as F, ControlWorkspaceView_default as G, Divider_default as H, BioTemplateRenderer_default as I, SampleSelector_default as J, ComponentBindingRenderer_default as K, ChartContainer_default as L, RackEditor_default as M, BioTemplatePresetWorkspaceView_default as N, ProtocolStepEditor_default as O, BioTemplatePackWorkspaceView_default as P, PlateMapEditor_default as Q, Breadcrumb_default as R, formatSequenceEta as S, SegmentedControl_default as St, sequenceSamplesRemaining as T, AppContainer_default as U, StatusIndicator_default as V, DoseDesignWorkspaceView_default as W, LoadingSpinner_default as X, AutoGroupModal_default as Y, ReagentList_default as Z, InstrumentStateBadge_default as _, AppToastContainer_default as _t, ExperimentDataViewer_default as a, AppLayout_default as at, estimateSequenceFinishDate as b, Calendar_default as bt, LcmsSequenceTable_default as c, FormActions_default as ct, extractLcmsCommonPrefix as d, AppPluginSwitcher_default as dt, WellPlate_default as et, extractLcmsSampleName as f, AppAvatarMenu_default as ft, InstrumentStatusCard_default as g, IconButton_default as gt, reconstructLcmsPlateCellsFromSequenceItems as h, ThemeToggle_default as ht, TimeRangeInput_default as i, MobileSupportGate_default as it, GroupAssigner_default as j, SampleHierarchyTree_default as k, DEFAULT_LCMS_SEQUENCE_COLUMNS as l, StepWizard_default as lt, lcmsWellIdFromPosition as m, CollapsibleCard_default as mt, FitPanel_default as n, DoseCalculator_default as nt, BatchProgressList_default as o, AppSidebar_default as ot, inferLcmsPlateTypeFromWellIds as p, PluginIcon_default as pt, ScheduleCalendar_default as q, ResourceCard_default as r, PluginWorkspaceView_default as rt, AuditTrail_default as s, FormBuilder_default as st, components_exports as t, ExperimentTimeline_default as tt, basenameFromWindowsPath as u, AppTopBar_default as ut, InstrumentAlertLog_default as v, AlertBox_default as vt, sequenceProgressPercent as w, ColorSlider_default as wt, estimateSequenceRemainingSeconds as x, DropdownButton_default as xt, SequenceProgressBar_default as y, DataFrame_default as yt, Avatar_default as z };
16013
16607
 
16014
- //# sourceMappingURL=components-Dq02EVZH.js.map
16608
+ //# sourceMappingURL=components-D0CzE0XK.js.map