@morscherlab/mint-sdk 1.3.0-beta.4 → 1.3.0-beta.5

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 (88) hide show
  1. package/README.md +23 -140
  2. package/dist/{ResourcePickerListInternal-c3IT8PIu.js → ResourcePickerListInternal-BEXnyBNz.js} +7 -3
  3. package/dist/ResourcePickerListInternal-BEXnyBNz.js.map +1 -0
  4. package/dist/components/WellPlate.colors.d.ts +1 -5
  5. package/dist/components/WellPlate.rendering.d.ts +5 -2
  6. package/dist/components/index.d.ts +32 -17
  7. package/dist/components/index.js +3 -3
  8. package/dist/{components-CF0XMy8W.js → components-BTzcqrJp.js} +84 -134
  9. package/dist/components-BTzcqrJp.js.map +1 -0
  10. package/dist/composables/index.d.ts +0 -3
  11. package/dist/composables/index.js +4 -4
  12. package/dist/composables/useAutoGroup.d.ts +1 -1
  13. package/dist/composables/useBioTemplateComponents.d.ts +15 -3
  14. package/dist/composables/useBioTemplateControls.d.ts +5 -1
  15. package/dist/composables/useBioTemplatePackWorkspace.d.ts +2 -0
  16. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +5 -1
  17. package/dist/composables/useBioTemplateWorkspace.d.ts +5 -1
  18. package/dist/composables/useExperimentSave.d.ts +5 -1
  19. package/dist/composables/useGroupAssignment.d.ts +5 -1
  20. package/dist/composables/useTemplateCollection.d.ts +5 -1
  21. package/dist/composables-Doqb7g1z.js +591 -0
  22. package/dist/composables-Doqb7g1z.js.map +1 -0
  23. package/dist/index.js +24 -24
  24. package/dist/index.js.map +1 -1
  25. package/dist/install.js +1 -1
  26. package/dist/lcms.d.ts +11 -11
  27. package/dist/styles.css +28 -88
  28. package/dist/templates/index.js +1 -1
  29. package/dist/{templates-Bj9hZ7iV.js → templates-DgAG5kMq.js} +2 -2
  30. package/dist/{templates-Bj9hZ7iV.js.map → templates-DgAG5kMq.js.map} +1 -1
  31. package/dist/types/auth.d.ts +0 -31
  32. package/dist/types/index.d.ts +1 -1
  33. package/dist/utils/rack.d.ts +16 -16
  34. package/dist/{validation-B4Y8_eEe.js → validation-DILksa0c.js} +50 -12
  35. package/dist/validation-DILksa0c.js.map +1 -0
  36. package/package.json +1 -6
  37. package/src/__tests__/components/AppTopBar.test.ts +16 -8
  38. package/src/__tests__/components/EmptyState.test.ts +15 -0
  39. package/src/__tests__/components/WellPlate.decoration.test.ts +4 -28
  40. package/src/__tests__/components/WellPlate.rendering.test.ts +20 -33
  41. package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +7 -7
  42. package/src/__tests__/docs/frontendDocsCatalog.test.ts +2 -2
  43. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  44. package/src/__tests__/styles/menusShellRefresh.test.ts +8 -2
  45. package/src/__tests__/templates/templatesDeprecation.test.ts +51 -11
  46. package/src/components/AppTopBar.vue +2 -4
  47. package/src/components/EmptyState.vue +3 -1
  48. package/src/components/WellPlate.colors.ts +6 -10
  49. package/src/components/WellPlate.legend.ts +4 -4
  50. package/src/components/WellPlate.rendering.ts +9 -8
  51. package/src/components/WellPlate.vue +5 -22
  52. package/src/components/index.ts +32 -17
  53. package/src/composables/autoGroup/index.ts +1 -1
  54. package/src/composables/index.ts +0 -7
  55. package/src/composables/useAutoGroup.ts +1 -1
  56. package/src/composables/useBioTemplateComponents.ts +15 -3
  57. package/src/composables/useBioTemplateControls.ts +5 -1
  58. package/src/composables/useBioTemplatePackWorkspace.ts +2 -0
  59. package/src/composables/useBioTemplatePresetWorkspace.ts +5 -1
  60. package/src/composables/useBioTemplateWorkspace.ts +5 -1
  61. package/src/composables/useExperimentSave.ts +5 -1
  62. package/src/composables/useGroupAssignment.ts +5 -1
  63. package/src/composables/useTemplateCollection.ts +5 -1
  64. package/src/index.ts +1 -1
  65. package/src/lcms.ts +11 -11
  66. package/src/styles/components/app-top-bar.css +7 -31
  67. package/src/styles/components/empty-state.css +3 -2
  68. package/src/styles/components/well-plate.css +18 -55
  69. package/src/types/auth.ts +0 -41
  70. package/src/types/index.ts +0 -5
  71. package/src/utils/rack.ts +16 -16
  72. package/dist/ResourcePickerListInternal-c3IT8PIu.js.map +0 -1
  73. package/dist/__tests__/composables/useAuth.test.d.ts +0 -1
  74. package/dist/__tests__/composables/usePasskey.test.d.ts +0 -1
  75. package/dist/components-CF0XMy8W.js.map +0 -1
  76. package/dist/composables/useAuth.d.ts +0 -47
  77. package/dist/composables/usePasskey.d.ts +0 -10
  78. package/dist/composables/useWellPlateEditor.d.ts +0 -33
  79. package/dist/composables-Dlyz_Aiv.js +0 -1256
  80. package/dist/composables-Dlyz_Aiv.js.map +0 -1
  81. package/dist/plotly.min-DDhZCNEM.js +0 -168582
  82. package/dist/plotly.min-DDhZCNEM.js.map +0 -1
  83. package/dist/validation-B4Y8_eEe.js.map +0 -1
  84. package/src/__tests__/composables/useAuth.test.ts +0 -290
  85. package/src/__tests__/composables/usePasskey.test.ts +0 -38
  86. package/src/composables/useAuth.ts +0 -470
  87. package/src/composables/usePasskey.ts +0 -216
  88. package/src/composables/useWellPlateEditor.ts +0 -415
@@ -1,8 +1,8 @@
1
1
  import { a as tryUseSettingsStore, c as mintApiErrorFromResponse, i as tableDensityToSize, n as colorPalettes, o as useSettingsStore } from "./settings-BLr8lzw6.js";
2
2
  import { a as SORT_OPTIONS, c as formatExperimentDate, f as BaseModal_default, h as BaseButton_default, l as formatExperimentStatus, m as useEventListener, p as useFocusTrap, r as EXPERIMENT_STATUS_OPTIONS, t as DATE_PRESET_OPTIONS } from "./experiment-utils-DTANyVKV.js";
3
- import { a as normalizeOptionInput, i as BaseSelect_default, n as Skeleton_default, o as BaseInput_default, r as EmptyState_default, t as ResourcePickerListInternal_default } from "./ResourcePickerListInternal-c3IT8PIu.js";
4
- import { $n as FormulaInput_default, An as getControlDefaults, B as toBioTemplateComponentProps, Cn as SAMPLE_GROUP_TOKENS, Cr as FileUploader_default, F as getBioTemplateComponentProps, Fn as controlsToSettingsSchema, Gn as getFieldRegistryEntry, H as toBioTemplateComponentPropsById, Hr as durationMinutes, In as controlsToSidebarPanels, Jn as UnitInput_default, Kr as formatTime, L as toBioTemplateComponentBindings, Mn as controlsToFormSchema, Pn as controlsToSectionFormSchemas, R as toBioTemplateComponentBindingsById, Rr as TagsInput_default, Sn as SAMPLE_COLOR_SCALE, Sr as _plugin_vue_export_helper_default, Tr as SecretInput_default, V as toBioTemplateComponentPropsByComponent, Vr as compareTime, Xn as MoleculeInput_default, Yn as useConcentrationUnits, Zn as SequenceInput_default, _n as createPlateRowLabels, ai as useListSelection, ar as getInjectedPlatformContext, br as isRecord, ci as BaseRadioGroup_default, di as Tooltip_default, fi as BaseTextarea_default, fn as extractTemplateCollection, gn as createPlateColumnLabels, hn as WELL_PLATE_SIZE_CONFIGS, hr as normalizeJobPercent, ii as MultiSelect_default, li as BaseToggle_default, lr as createGeneratedAnalysisTransport, mn as PLATE_CONFIGS, mr as jobStatusLabel, ni as DatePicker_default, nr as GeneratedPathInput_default, qn as ConcentrationInput_default, ri as useDropdownState, rr as GENERATED_JOBS_API_KEY, si as BaseSlider_default, sr as resolveCurrentExperimentId, tr as useChemicalFormula, ui as BaseCheckbox_default, ur as useGeneratedAnalysis, vn as createWellGrid, wn as SLOT_ORDER, wr as NumberInput_default, xr as useMenuKeyboard, yn as getRectangleWellIds, yr as DateTimePicker_default, zr as TimePicker_default } from "./templates-Bj9hZ7iV.js";
5
- import { B as useRackEditor, Bt as useRovingFocus, C as useExperimentSamples, D as getSampleGroupMajorPrefix, Dt as useAppExperiment, E as useSampleGroups, Et as APP_EXPERIMENT_KEY, F as useAutoGroup, G as useDoseCalculator, H as reorderList, J as usePluginJobCenter, Lt as useTextSearch, Mt as usePlatformContext, Nt as useTheme, O as getSampleGroupParentPath, Ot as getInjectedFrontendRevision, Pt as useToast, S as useScheduleDrag, T as useExpansionSet, Tt as mergeControlWorkspaceOptions, U as useListReorder, W as useReorderAnnouncer, X as downloadBlob, a as useExperimentSelector, c as DEFAULT_PRESETS, ct as usePluginWorkspace, d as useReagentSeries, dt as useFormBuilder, f as useGroupAssignment, ht as defineDoseDesignControlModel, i as useAnalysisArtifacts, j as readFileAsText, jt as usePresenceHeartbeat, kt as useRuntimeAlignment, l as DEFAULT_UNITS, lt as DEFAULT_MOBILE_VIEWPORT_QUERY, m as useBioTemplatePackWorkspace, n as pickerFormat, p as useBioTemplatePresetWorkspace, r as pickerReason, s as useProtocolTemplates, st as useRequestSyncState, t as pickerExclusion, ut as useMobileSupportGate, w as useExperimentData, xt as resolveControlModel, yt as useControlWorkspace, z as DEFAULT_COLORS, zt as useSortedItems } from "./validation-B4Y8_eEe.js";
3
+ import { a as normalizeOptionInput, i as BaseSelect_default, n as Skeleton_default, o as BaseInput_default, r as EmptyState_default, t as ResourcePickerListInternal_default } from "./ResourcePickerListInternal-BEXnyBNz.js";
4
+ import { $n as FormulaInput_default, An as getControlDefaults, B as toBioTemplateComponentProps, Cn as SAMPLE_GROUP_TOKENS, Cr as FileUploader_default, F as getBioTemplateComponentProps, Fn as controlsToSettingsSchema, Gn as getFieldRegistryEntry, H as toBioTemplateComponentPropsById, Hr as durationMinutes, In as controlsToSidebarPanels, Jn as UnitInput_default, Kr as formatTime, L as toBioTemplateComponentBindings, Mn as controlsToFormSchema, Pn as controlsToSectionFormSchemas, R as toBioTemplateComponentBindingsById, Rr as TagsInput_default, Sn as SAMPLE_COLOR_SCALE, Sr as _plugin_vue_export_helper_default, Tr as SecretInput_default, V as toBioTemplateComponentPropsByComponent, Vr as compareTime, Xn as MoleculeInput_default, Yn as useConcentrationUnits, Zn as SequenceInput_default, _n as createPlateRowLabels, ai as useListSelection, ar as getInjectedPlatformContext, br as isRecord, ci as BaseRadioGroup_default, di as Tooltip_default, fi as BaseTextarea_default, fn as extractTemplateCollection, gn as createPlateColumnLabels, hn as WELL_PLATE_SIZE_CONFIGS, hr as normalizeJobPercent, ii as MultiSelect_default, li as BaseToggle_default, lr as createGeneratedAnalysisTransport, mn as PLATE_CONFIGS, mr as jobStatusLabel, ni as DatePicker_default, nr as GeneratedPathInput_default, qn as ConcentrationInput_default, ri as useDropdownState, rr as GENERATED_JOBS_API_KEY, si as BaseSlider_default, sr as resolveCurrentExperimentId, tr as useChemicalFormula, ui as BaseCheckbox_default, ur as useGeneratedAnalysis, vn as createWellGrid, wn as SLOT_ORDER, wr as NumberInput_default, xr as useMenuKeyboard, yn as getRectangleWellIds, yr as DateTimePicker_default, zr as TimePicker_default } from "./templates-DgAG5kMq.js";
5
+ import { B as useRackEditor, Bt as useRovingFocus, C as useExperimentSamples, D as getSampleGroupMajorPrefix, Dt as useAppExperiment, E as useSampleGroups, Et as APP_EXPERIMENT_KEY, F as useAutoGroup, G as useDoseCalculator, H as reorderList, J as usePluginJobCenter, Lt as useTextSearch, Mt as usePlatformContext, Nt as useTheme, O as getSampleGroupParentPath, Ot as getInjectedFrontendRevision, Pt as useToast, S as useScheduleDrag, T as useExpansionSet, Tt as mergeControlWorkspaceOptions, U as useListReorder, W as useReorderAnnouncer, X as downloadBlob, a as useExperimentSelector, c as DEFAULT_PRESETS, ct as usePluginWorkspace, d as useReagentSeries, dt as useFormBuilder, f as useGroupAssignment, ht as defineDoseDesignControlModel, i as useAnalysisArtifacts, j as readFileAsText, jt as usePresenceHeartbeat, kt as useRuntimeAlignment, l as DEFAULT_UNITS, lt as DEFAULT_MOBILE_VIEWPORT_QUERY, m as useBioTemplatePackWorkspace, n as pickerFormat, p as useBioTemplatePresetWorkspace, r as pickerReason, s as useProtocolTemplates, st as useRequestSyncState, t as pickerExclusion, ut as useMobileSupportGate, w as useExperimentData, xt as resolveControlModel, yt as useControlWorkspace, z as DEFAULT_COLORS, zt as useSortedItems } from "./validation-DILksa0c.js";
6
6
  import { canAccessByPolicy, hasAllPermissions } from "./permissions.js";
7
7
  import { a as useApi, o as useAuthStore, t as useExperimentStore } from "./experiment-DgllIc3I.js";
8
8
  import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "./analysisArtifactTypes-Cy3D0Ipg.js";
@@ -10,13 +10,7 @@ import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock,
10
10
  import { computePosition, flip, offset, shift } from "@floating-ui/dom";
11
11
  import { Check, ChevronRight, Download, Ellipsis, Move, Plus, Redo2, RefreshCw, Trash2, Undo2, Upload, X } from "lucide-vue-next";
12
12
  //#region \0rolldown/runtime.js
13
- var __create = Object.create;
14
13
  var __defProp = Object.defineProperty;
15
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
16
- var __getOwnPropNames = Object.getOwnPropertyNames;
17
- var __getProtoOf = Object.getPrototypeOf;
18
- var __hasOwnProp = Object.prototype.hasOwnProperty;
19
- var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
20
14
  var __exportAll = (all, no_symbols) => {
21
15
  let target = {};
22
16
  for (var name in all) __defProp(target, name, {
@@ -26,20 +20,6 @@ var __exportAll = (all, no_symbols) => {
26
20
  if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
27
21
  return target;
28
22
  };
29
- var __copyProps = (to, from, except, desc) => {
30
- if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
31
- key = keys[i];
32
- if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
33
- get: ((k) => from[k]).bind(null, key),
34
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
35
- });
36
- }
37
- return to;
38
- };
39
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
40
- value: mod,
41
- enumerable: true
42
- }) : target, mod));
43
23
  //#endregion
44
24
  //#region src/components/SearchableSelect.vue?vue&type=script&setup=true&lang.ts
45
25
  var _hoisted_1$84 = [
@@ -1107,14 +1087,14 @@ var _hoisted_20$21 = {
1107
1087
  key: 2,
1108
1088
  class: "mint-dataframe__loading"
1109
1089
  };
1110
- var _hoisted_21$18 = {
1090
+ var _hoisted_21$17 = {
1111
1091
  key: 1,
1112
1092
  class: "mint-dataframe__footer"
1113
1093
  };
1114
- var _hoisted_22$18 = { class: "mint-dataframe__page-info" };
1094
+ var _hoisted_22$17 = { class: "mint-dataframe__page-info" };
1115
1095
  var _hoisted_23$15 = { class: "mint-dataframe__page-controls" };
1116
- var _hoisted_24$14 = ["disabled"];
1117
- var _hoisted_25$14 = { class: "mint-dataframe__page-number" };
1096
+ var _hoisted_24$13 = ["disabled"];
1097
+ var _hoisted_25$13 = { class: "mint-dataframe__page-number" };
1118
1098
  var _hoisted_26$11 = ["disabled"];
1119
1099
  /** Inbox glyph kept from the pre-1.2 hand-rolled empty state. */
1120
1100
  var EMPTY_ICON_PATH$2 = "M22 12L16 12L14 15L10 15L8 12L2 12M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z";
@@ -1574,7 +1554,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1574
1554
  }, null, 8, ["title"])])])) : createCommentVNode("", true),
1575
1555
  __props.loading ? (openBlock(), createElementBlock("div", _hoisted_20$21, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(LoadingSpinner_default, { size: "lg" })])])) : createCommentVNode("", true)
1576
1556
  ], 4),
1577
- __props.pagination ? (openBlock(), createElementBlock("div", _hoisted_21$18, [renderSlot(_ctx.$slots, "footer", {}, () => [createElementVNode("span", _hoisted_22$18, toDisplayString((__props.pagination.page - 1) * __props.pagination.pageSize + 1) + "–" + toDisplayString(Math.min(__props.pagination.page * __props.pagination.pageSize, unref(sortedData).length)) + " of " + toDisplayString(unref(sortedData).length), 1), createElementVNode("div", _hoisted_23$15, [
1557
+ __props.pagination ? (openBlock(), createElementBlock("div", _hoisted_21$17, [renderSlot(_ctx.$slots, "footer", {}, () => [createElementVNode("span", _hoisted_22$17, toDisplayString((__props.pagination.page - 1) * __props.pagination.pageSize + 1) + "–" + toDisplayString(Math.min(__props.pagination.page * __props.pagination.pageSize, unref(sortedData).length)) + " of " + toDisplayString(unref(sortedData).length), 1), createElementVNode("div", _hoisted_23$15, [
1578
1558
  createElementVNode("button", {
1579
1559
  type: "button",
1580
1560
  class: "mint-dataframe__page-btn",
@@ -1587,8 +1567,8 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1587
1567
  "stroke-width": "2",
1588
1568
  "stroke-linecap": "round",
1589
1569
  "stroke-linejoin": "round"
1590
- }, [createElementVNode("path", { d: "m15 18-6-6 6-6" })], -1)])], 8, _hoisted_24$14),
1591
- createElementVNode("span", _hoisted_25$14, toDisplayString(__props.pagination.page) + " / " + toDisplayString(totalPages.value), 1),
1570
+ }, [createElementVNode("path", { d: "m15 18-6-6 6-6" })], -1)])], 8, _hoisted_24$13),
1571
+ createElementVNode("span", _hoisted_25$13, toDisplayString(__props.pagination.page) + " / " + toDisplayString(totalPages.value), 1),
1592
1572
  createElementVNode("button", {
1593
1573
  type: "button",
1594
1574
  class: "mint-dataframe__page-btn",
@@ -3501,38 +3481,29 @@ var _hoisted_10$28 = {
3501
3481
  };
3502
3482
  var _hoisted_11$26 = { class: "mint-topbar__plugin-name" };
3503
3483
  var _hoisted_12$24 = {
3504
- key: 0,
3505
- class: "mint-topbar__plugin-version"
3506
- };
3507
- var _hoisted_13$24 = {
3508
- key: 1,
3509
- class: "mint-topbar__divider",
3510
- "aria-hidden": "true"
3511
- };
3512
- var _hoisted_14$24 = {
3513
- key: 3,
3484
+ key: 2,
3514
3485
  class: "mint-topbar-title-group"
3515
3486
  };
3516
- var _hoisted_15$24 = { class: "mint-topbar-title" };
3517
- var _hoisted_16$21 = { class: "mint-topbar-subtitle" };
3518
- var _hoisted_17$21 = {
3519
- key: 4,
3487
+ var _hoisted_13$24 = { class: "mint-topbar-title" };
3488
+ var _hoisted_14$24 = { class: "mint-topbar-subtitle" };
3489
+ var _hoisted_15$24 = {
3490
+ key: 3,
3520
3491
  class: "mint-topbar__title-only"
3521
3492
  };
3522
- var _hoisted_18$21 = {
3523
- key: 5,
3493
+ var _hoisted_16$21 = {
3494
+ key: 4,
3524
3495
  class: "mint-topbar__center"
3525
3496
  };
3526
- var _hoisted_19$21 = { class: "mint-topbar__right" };
3527
- var _hoisted_20$20 = {
3497
+ var _hoisted_17$21 = { class: "mint-topbar__right" };
3498
+ var _hoisted_18$21 = {
3528
3499
  key: 0,
3529
3500
  class: "mint-topbar__standalone-badge"
3530
3501
  };
3531
- var _hoisted_21$17 = {
3502
+ var _hoisted_19$21 = {
3532
3503
  key: 2,
3533
3504
  class: "mint-topbar__standalone-badge"
3534
3505
  };
3535
- var _hoisted_22$17 = {
3506
+ var _hoisted_20$20 = {
3536
3507
  key: 0,
3537
3508
  class: "mint-topbar__icon-btn-dot",
3538
3509
  "aria-hidden": "true"
@@ -3630,8 +3601,8 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3630
3601
  });
3631
3602
  const hasPlatformPageSelector = computed(() => props.pageSelector === void 0 && (plugin.value?.nav_items?.length ?? 0) > 1);
3632
3603
  const hasPageSelector = computed(() => (props.pageSelector?.length ?? 0) > 1 || hasPlatformPageSelector.value);
3633
- /** Integrated plugins show their name + version as a static identity; it stands in for the title. */
3634
- const identityName = computed(() => isIntegrated.value ? plugin.value?.name : void 0);
3604
+ /** Integrated plugins show their name as a static identity in place of the title; the page selector replaces it. */
3605
+ const identityName = computed(() => isIntegrated.value && !hasPageSelector.value ? plugin.value?.name : void 0);
3635
3606
  const hasPillNav = computed(() => !!props.pillNav?.length);
3636
3607
  const hasAccountMenu = computed(() => !!props.accountMenu?.length);
3637
3608
  const hasTitleGroup = computed(() => !hasPageSelector.value && !identityName.value && !!props.title && !!props.subtitle);
@@ -3703,10 +3674,9 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3703
3674
  size: "topbar",
3704
3675
  variant: "solid"
3705
3676
  }, null, 8, ["icon", "tone"])) : renderSlot(_ctx.$slots, "logo", {}, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_9$30, [..._cache[16] || (_cache[16] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)], void 0, 1)], void 0, 1)])) : createCommentVNode("", true)], 64))]),
3706
- identityName.value ? (openBlock(), createElementBlock("span", _hoisted_10$28, [createElementVNode("span", _hoisted_11$26, toDisplayString(identityName.value), 1), unref(plugin)?.version ? (openBlock(), createElementBlock("span", _hoisted_12$24, "v" + toDisplayString(unref(plugin).version), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true),
3707
- identityName.value && hasPageSelector.value ? (openBlock(), createElementBlock("span", _hoisted_13$24)) : createCommentVNode("", true),
3677
+ identityName.value ? (openBlock(), createElementBlock("span", _hoisted_10$28, [createElementVNode("span", _hoisted_11$26, toDisplayString(identityName.value), 1)])) : createCommentVNode("", true),
3708
3678
  hasPageSelector.value ? (openBlock(), createBlock(AppTopBarPageSelectorInternal_default, {
3709
- key: 2,
3679
+ key: 1,
3710
3680
  pages: normalizedPageSelector.value,
3711
3681
  "current-page-id": effectiveCurrentPageSelectorId.value,
3712
3682
  onSelect: _cache[0] || (_cache[0] = ($event) => emit("page-selector-select", $event))
@@ -3719,23 +3689,23 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3719
3689
  fn: withCtx((slotProps) => [renderSlot(_ctx.$slots, "page-selector-item-icon", normalizeProps(guardReactiveProps(slotProps)))]),
3720
3690
  key: "1"
3721
3691
  } : void 0]), 1032, ["pages", "current-page-id"])) : createCommentVNode("", true),
3722
- hasTitleGroup.value ? (openBlock(), createElementBlock("div", _hoisted_14$24, [createElementVNode("span", _hoisted_15$24, toDisplayString(__props.title), 1), createElementVNode("span", _hoisted_16$21, toDisplayString(__props.subtitle), 1)])) : hasTitleOnly.value ? (openBlock(), createElementBlock("span", _hoisted_17$21, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
3692
+ hasTitleGroup.value ? (openBlock(), createElementBlock("div", _hoisted_12$24, [createElementVNode("span", _hoisted_13$24, toDisplayString(__props.title), 1), createElementVNode("span", _hoisted_14$24, toDisplayString(__props.subtitle), 1)])) : hasTitleOnly.value ? (openBlock(), createElementBlock("span", _hoisted_15$24, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
3723
3693
  renderSlot(_ctx.$slots, "nav"),
3724
- hasPillNav.value || _ctx.$slots.center ? (openBlock(), createElementBlock("div", _hoisted_18$21, [renderSlot(_ctx.$slots, "center", {}, () => [hasPillNav.value && __props.pillNav ? (openBlock(), createBlock(AppTopBarPillNavInternal_default, {
3694
+ hasPillNav.value || _ctx.$slots.center ? (openBlock(), createElementBlock("div", _hoisted_16$21, [renderSlot(_ctx.$slots, "center", {}, () => [hasPillNav.value && __props.pillNav ? (openBlock(), createBlock(AppTopBarPillNavInternal_default, {
3725
3695
  key: 0,
3726
3696
  items: normalizedPillNav.value,
3727
3697
  "current-item-id": __props.currentPillId,
3728
3698
  onSelect: _cache[1] || (_cache[1] = ($event) => emit("pill-select", $event)),
3729
3699
  onOptionSelect: _cache[2] || (_cache[2] = (option, item) => emit("pill-option-select", option, item))
3730
3700
  }, null, 8, ["items", "current-item-id"])) : createCommentVNode("", true)])])) : createCommentVNode("", true),
3731
- createElementVNode("div", _hoisted_19$21, [
3732
- __props.showStandaloneLabel && isStandalone.value && !unref(appExperiment) ? (openBlock(), createElementBlock("span", _hoisted_20$20, toDisplayString(__props.standaloneLabel), 1)) : createCommentVNode("", true),
3701
+ createElementVNode("div", _hoisted_17$21, [
3702
+ __props.showStandaloneLabel && isStandalone.value && !unref(appExperiment) ? (openBlock(), createElementBlock("span", _hoisted_18$21, toDisplayString(__props.standaloneLabel), 1)) : createCommentVNode("", true),
3733
3703
  unref(appExperiment) && !isStandalone.value && canBindExperiment.value ? (openBlock(), createBlock(unref(ExperimentPopover), mergeProps({ key: 1 }, unref(appExperiment).popover.value, {
3734
3704
  onSelect: _cache[3] || (_cache[3] = ($event) => unref(appExperiment).openModal()),
3735
3705
  onSave: _cache[4] || (_cache[4] = ($event) => unref(appExperiment).handleSave()),
3736
3706
  onDetach: _cache[5] || (_cache[5] = ($event) => unref(appExperiment).handleDetach())
3737
3707
  }), null, 16)) : createCommentVNode("", true),
3738
- unref(appExperiment) && isStandalone.value ? (openBlock(), createElementBlock("span", _hoisted_21$17, toDisplayString(__props.standaloneLabel), 1)) : createCommentVNode("", true),
3708
+ unref(appExperiment) && isStandalone.value ? (openBlock(), createElementBlock("span", _hoisted_19$21, toDisplayString(__props.standaloneLabel), 1)) : createCommentVNode("", true),
3739
3709
  renderSlot(_ctx.$slots, "actions"),
3740
3710
  __props.showNotifications ? (openBlock(), createElementBlock("button", {
3741
3711
  key: 3,
@@ -3751,7 +3721,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3751
3721
  "stroke-width": "2",
3752
3722
  "stroke-linecap": "round",
3753
3723
  "stroke-linejoin": "round"
3754
- }, [createElementVNode("path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" }), createElementVNode("path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0" })], -1)), __props.hasNotificationDot ? (openBlock(), createElementBlock("span", _hoisted_22$17)) : createCommentVNode("", true)])) : createCommentVNode("", true),
3724
+ }, [createElementVNode("path", { d: "M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9" }), createElementVNode("path", { d: "M10.3 21a1.94 1.94 0 0 0 3.4 0" })], -1)), __props.hasNotificationDot ? (openBlock(), createElementBlock("span", _hoisted_20$20)) : createCommentVNode("", true)])) : createCommentVNode("", true),
3755
3725
  __props.showThemeToggle ? (openBlock(), createBlock(ThemeToggle_default, {
3756
3726
  key: 4,
3757
3727
  size: "sm"
@@ -4650,12 +4620,12 @@ var _hoisted_20$19 = {
4650
4620
  var _hoisted_21$16 = ["d"];
4651
4621
  var _hoisted_22$16 = ["d"];
4652
4622
  var _hoisted_23$14 = { key: 1 };
4653
- var _hoisted_24$13 = [
4623
+ var _hoisted_24$12 = [
4654
4624
  "aria-checked",
4655
4625
  "aria-label",
4656
4626
  "onClick"
4657
4627
  ];
4658
- var _hoisted_25$13 = [
4628
+ var _hoisted_25$12 = [
4659
4629
  "aria-label",
4660
4630
  "aria-expanded",
4661
4631
  "onClick"
@@ -5002,7 +4972,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
5002
4972
  "aria-label": `Enable ${section.label}`,
5003
4973
  class: normalizeClass(["mint-sidebar__switch", __props.toggleState[section.id] ?? false ? "mint-sidebar__switch--on" : ""]),
5004
4974
  onClick: ($event) => emit("update:toggle", section.id, !(__props.toggleState[section.id] ?? false))
5005
- }, [..._cache[1] || (_cache[1] = [createElementVNode("span", { class: "mint-sidebar__switch-knob" }, null, -1)])], 10, _hoisted_24$13)) : createCommentVNode("", true),
4975
+ }, [..._cache[1] || (_cache[1] = [createElementVNode("span", { class: "mint-sidebar__switch-knob" }, null, -1)])], 10, _hoisted_24$12)) : createCommentVNode("", true),
5006
4976
  createElementVNode("button", {
5007
4977
  type: "button",
5008
4978
  class: "mint-sidebar__chevron-button",
@@ -5018,7 +4988,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
5018
4988
  "stroke-linecap": "round",
5019
4989
  "stroke-linejoin": "round",
5020
4990
  "aria-hidden": "true"
5021
- }, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 8, _hoisted_25$13)
4991
+ }, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 8, _hoisted_25$12)
5022
4992
  ])]), createVNode(Transition, { name: "collapse" }, {
5023
4993
  default: withCtx(() => [withDirectives(createElementVNode("div", _hoisted_26$10, [renderSlot(_ctx.$slots, `section-${section.id}`, {}, () => [resolvedForms.value[section.id] ? (openBlock(), createBlock(FormBuilder_default, {
5024
4994
  key: 0,
@@ -6079,7 +6049,7 @@ var PlotlyChart_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
6079
6049
  let revision = 0;
6080
6050
  async function loadPlotly() {
6081
6051
  if (props.plotly) return props.plotly;
6082
- const module = await import("./plotly.min-DDhZCNEM.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1));
6052
+ const module = await import("plotly.js-dist-min");
6083
6053
  return "default" in module ? module.default : module;
6084
6054
  }
6085
6055
  function bindEvents(element) {
@@ -6495,8 +6465,8 @@ var _hoisted_21$15 = {
6495
6465
  };
6496
6466
  var _hoisted_22$15 = ["aria-valuenow"];
6497
6467
  var _hoisted_23$13 = { class: "mint-jobs-tray__job-footer" };
6498
- var _hoisted_24$12 = { class: "mint-jobs-tray__job-actions" };
6499
- var _hoisted_25$12 = ["disabled", "onClick"];
6468
+ var _hoisted_24$11 = { class: "mint-jobs-tray__job-actions" };
6469
+ var _hoisted_25$11 = ["disabled", "onClick"];
6500
6470
  var _hoisted_26$9 = ["disabled", "onClick"];
6501
6471
  var _hoisted_27$8 = {
6502
6472
  key: 0,
@@ -6751,7 +6721,7 @@ var JobsStatusTray_default = /* @__PURE__ */ defineComponent({
6751
6721
  "aria-valuemax": "100",
6752
6722
  "aria-valuenow": jobPercent(job)
6753
6723
  }, [createElementVNode("span", { style: normalizeStyle({ width: `${jobPercent(job)}%` }) }, null, 4)], 8, _hoisted_22$15)) : createCommentVNode("", true),
6754
- createElementVNode("div", _hoisted_23$13, [createElementVNode("span", null, toDisplayString(progressText(job)), 1), createElementVNode("div", _hoisted_24$12, [
6724
+ createElementVNode("div", _hoisted_23$13, [createElementVNode("span", null, toDisplayString(progressText(job)), 1), createElementVNode("div", _hoisted_24$11, [
6755
6725
  renderSlot(_ctx.$slots, "job-actions", { job }),
6756
6726
  job.can_cancel && unref(tray).canCancel.value ? (openBlock(), createElementBlock("button", {
6757
6727
  key: 0,
@@ -6760,7 +6730,7 @@ var JobsStatusTray_default = /* @__PURE__ */ defineComponent({
6760
6730
  "aria-label": "Cancel job",
6761
6731
  disabled: unref(tray).isPending(job),
6762
6732
  onClick: ($event) => cancelJob(job)
6763
- }, " Cancel ", 8, _hoisted_25$12)) : createCommentVNode("", true),
6733
+ }, " Cancel ", 8, _hoisted_25$11)) : createCommentVNode("", true),
6764
6734
  job.can_delete && unref(tray).canDelete.value ? (openBlock(), createElementBlock("button", {
6765
6735
  key: 1,
6766
6736
  type: "button",
@@ -7095,11 +7065,11 @@ var _hoisted_23$12 = {
7095
7065
  key: 0,
7096
7066
  class: "mint-dose-calculator__error"
7097
7067
  };
7098
- var _hoisted_24$11 = {
7068
+ var _hoisted_24$10 = {
7099
7069
  key: 4,
7100
7070
  class: "mint-dose-calculator__mw-section"
7101
7071
  };
7102
- var _hoisted_25$11 = { class: "mint-dose-calculator__mw-label" };
7072
+ var _hoisted_25$10 = { class: "mint-dose-calculator__mw-label" };
7103
7073
  var _hoisted_26$8 = {
7104
7074
  key: 5,
7105
7075
  class: "mint-dose-calculator__form"
@@ -7356,7 +7326,7 @@ var DoseCalculator_default = /* @__PURE__ */ defineComponent({
7356
7326
  }, null, 8, ["disabled", "molecular-weight"])]),
7357
7327
  _: 1
7358
7328
  }), !__props.molecularWeight ? (openBlock(), createElementBlock("div", _hoisted_23$12, " Provide molecular weight for mass ↔ molarity conversion ")) : createCommentVNode("", true)])) : createCommentVNode("", true),
7359
- __props.molecularWeight ? (openBlock(), createElementBlock("div", _hoisted_24$11, [createElementVNode("span", _hoisted_25$11, " Molecular Weight: " + toDisplayString(__props.molecularWeight) + " g/mol ", 1)])) : createCommentVNode("", true),
7329
+ __props.molecularWeight ? (openBlock(), createElementBlock("div", _hoisted_24$10, [createElementVNode("span", _hoisted_25$10, " Molecular Weight: " + toDisplayString(__props.molecularWeight) + " g/mol ", 1)])) : createCommentVNode("", true),
7360
7330
  hasTargetWells.value ? (openBlock(), createElementBlock("div", _hoisted_26$8, [createVNode(BaseButton_default, {
7361
7331
  variant: "primary",
7362
7332
  "full-width": "",
@@ -7861,22 +7831,22 @@ var DEFAULT_WELL_LEGEND_ITEMS = [
7861
7831
  {
7862
7832
  type: "sample",
7863
7833
  label: "Sample",
7864
- color: "var(--mint-sample-1)"
7834
+ color: "#10b981"
7865
7835
  },
7866
7836
  {
7867
7837
  type: "blank",
7868
7838
  label: "Blank",
7869
- color: "var(--mint-sample-1)"
7839
+ color: "#f97316"
7870
7840
  },
7871
7841
  {
7872
7842
  type: "qc",
7873
7843
  label: "QC",
7874
- color: "var(--mint-sample-1)"
7844
+ color: "#8b5cf6"
7875
7845
  },
7876
7846
  {
7877
7847
  type: "iqc",
7878
7848
  label: "IQC",
7879
- color: "var(--mint-sample-1)"
7849
+ color: "#ec4899"
7880
7850
  }
7881
7851
  ];
7882
7852
  //#endregion
@@ -7917,17 +7887,13 @@ function sampleTypeMarker(type, groupColor) {
7917
7887
  }
7918
7888
  //#endregion
7919
7889
  //#region src/components/WellPlate.colors.ts
7920
- /**
7921
- * Group color for the built-in sample types when `sampleColors` has no entry.
7922
- * Color encodes the group and shape encodes the type (3a): blank and QC render
7923
- * neutral markers and ignore it; iQC takes it like a sample.
7924
- */
7890
+ /** Color for the built-in sample types when `sampleColors` has no entry. */
7925
7891
  var DEFAULT_SAMPLE_TYPE_COLORS = {
7926
- sample: "var(--mint-sample-1)",
7927
- control: "var(--mint-sample-2)",
7928
- blank: "var(--mint-sample-1)",
7929
- qc: "var(--mint-sample-1)",
7930
- iqc: "var(--mint-sample-1)"
7892
+ sample: "#10b981",
7893
+ control: "#3b82f6",
7894
+ blank: "#f97316",
7895
+ qc: "#8b5cf6",
7896
+ iqc: "#ec4899"
7931
7897
  };
7932
7898
  var HEATMAP_COLORS = {
7933
7899
  viridis: [
@@ -8730,16 +8696,15 @@ function wellStyle(well, state) {
8730
8696
  };
8731
8697
  const groupColor = well.sampleType && ((well.group ? state.sampleColors[well.group] : void 0) ?? state.sampleColors[well.sampleType] ?? DEFAULT_SAMPLE_TYPE_COLORS[well.sampleType]);
8732
8698
  if (!groupColor) return {};
8733
- const { background, border } = sampleTypeMarker(well.sampleType, groupColor).style;
8699
+ return sampleTint(groupColor);
8700
+ }
8701
+ /** 15% fill and 40% outline of a sample color; color-mix accepts hex and `var()` tokens alike. */
8702
+ function sampleTint(color) {
8734
8703
  return {
8735
- backgroundColor: background,
8736
- border
8704
+ backgroundColor: `color-mix(in srgb, ${color} 15%, transparent)`,
8705
+ border: `1px solid color-mix(in srgb, ${color} 40%, transparent)`
8737
8706
  };
8738
8707
  }
8739
- /** In-well glyph of the 3a sample-type marker: `Q` for QC, `i` for iQC. */
8740
- function sampleTypeGlyph(well) {
8741
- return well.sampleType ? sampleTypeMarker(well.sampleType, "").glyph : null;
8742
- }
8743
8708
  var sampleTypeIndicatorWarned = false;
8744
8709
  /** One dev-only warning per page for the no-op `showSampleTypeIndicator` prop. */
8745
8710
  function warnSampleTypeIndicatorDeprecated() {
@@ -8757,11 +8722,11 @@ function wellBadge(well, showBadges) {
8757
8722
  const count = well.metadata.injectionCount;
8758
8723
  if (count && count > 1) return {
8759
8724
  text: String(count),
8760
- color: "var(--text-primary)"
8725
+ color: "#6366f1"
8761
8726
  };
8762
8727
  if (well.metadata.customMethod) return {
8763
- text: "",
8764
- color: "var(--color-purple)"
8728
+ text: "+",
8729
+ color: "#ec4899"
8765
8730
  };
8766
8731
  return null;
8767
8732
  }
@@ -8818,27 +8783,19 @@ var _hoisted_16$16 = {
8818
8783
  key: 1,
8819
8784
  class: "mint-well-plate__well-id"
8820
8785
  };
8821
- var _hoisted_17$16 = {
8822
- key: 2,
8823
- class: "mint-well-plate__indicator"
8824
- };
8786
+ var _hoisted_17$16 = ["title"];
8825
8787
  var _hoisted_18$16 = {
8826
- key: 3,
8827
- class: "mint-well-plate__corner-glyph"
8828
- };
8829
- var _hoisted_19$16 = ["title"];
8830
- var _hoisted_20$15 = {
8831
8788
  key: 0,
8832
8789
  class: "mint-well-plate__legend"
8833
8790
  };
8791
+ var _hoisted_19$16 = { class: "mint-well-plate__legend-label" };
8792
+ var _hoisted_20$15 = { class: "mint-well-plate__legend-bar" };
8834
8793
  var _hoisted_21$12 = { class: "mint-well-plate__legend-label" };
8835
- var _hoisted_22$12 = { class: "mint-well-plate__legend-bar" };
8836
- var _hoisted_23$10 = { class: "mint-well-plate__legend-label" };
8837
- var _hoisted_24$10 = {
8794
+ var _hoisted_22$12 = {
8838
8795
  key: 1,
8839
8796
  class: "mint-well-plate__sample-legend"
8840
8797
  };
8841
- var _hoisted_25$10 = { class: "mint-well-plate__sample-legend-text" };
8798
+ var _hoisted_23$10 = { class: "mint-well-plate__sample-legend-text" };
8842
8799
  //#endregion
8843
8800
  //#region src/components/WellPlate.vue
8844
8801
  var WellPlate_default = /* @__PURE__ */ defineComponent({
@@ -9170,42 +9127,35 @@ var WellPlate_default = /* @__PURE__ */ defineComponent({
9170
9127
  "prevent"
9171
9128
  ]), ["space"])
9172
9129
  ]
9173
- }, [
9174
- getWellLabel(well) ? (openBlock(), createElementBlock("span", _hoisted_15$19, toDisplayString(getWellLabel(well)), 1)) : props.showWellIds ? (openBlock(), createElementBlock("span", _hoisted_16$16, toDisplayString(well.id), 1)) : unref(sampleTypeGlyph)(well) ? (openBlock(), createElementBlock("span", _hoisted_17$16, toDisplayString(unref(sampleTypeGlyph)(well)), 1)) : createCommentVNode("", true),
9175
- unref(sampleTypeGlyph)(well) && (getWellLabel(well) || props.showWellIds) ? (openBlock(), createElementBlock("span", _hoisted_18$16, toDisplayString(unref(sampleTypeGlyph)(well)), 1)) : createCommentVNode("", true),
9176
- getWellBadge(well) ? (openBlock(), createElementBlock("span", {
9177
- key: 4,
9178
- class: normalizeClass(["mint-well-plate__badge", { "mint-well-plate__badge--dot": !getWellBadge(well)?.text }]),
9179
- style: normalizeStyle({ backgroundColor: getWellBadge(well)?.color }),
9180
- title: getWellBadge(well)?.text ? `${getWellBadge(well)?.text}x injections` : "Custom method"
9181
- }, toDisplayString(getWellBadge(well)?.text), 15, _hoisted_19$16)) : createCommentVNode("", true)
9182
- ], 46, _hoisted_14$19)]);
9130
+ }, [getWellLabel(well) ? (openBlock(), createElementBlock("span", _hoisted_15$19, toDisplayString(getWellLabel(well)), 1)) : props.showWellIds ? (openBlock(), createElementBlock("span", _hoisted_16$16, toDisplayString(well.id), 1)) : createCommentVNode("", true), getWellBadge(well) ? (openBlock(), createElementBlock("span", {
9131
+ key: 2,
9132
+ class: "mint-well-plate__badge",
9133
+ style: normalizeStyle({ backgroundColor: getWellBadge(well)?.color }),
9134
+ title: getWellBadge(well)?.text === "+" ? "Custom method" : `${getWellBadge(well)?.text ?? ""}x injections`
9135
+ }, toDisplayString(getWellBadge(well)?.text), 13, _hoisted_17$16)) : createCommentVNode("", true)], 46, _hoisted_14$19)]);
9183
9136
  }), 128))
9184
9137
  ]);
9185
9138
  }), 128))])
9186
9139
  ], 12, _hoisted_6$29),
9187
- props.heatmap?.enabled && props.heatmap.showLegend ? (openBlock(), createElementBlock("div", _hoisted_20$15, [
9188
- createElementVNode("span", _hoisted_21$12, toDisplayString(props.heatmap.min ?? 0), 1),
9189
- createElementVNode("div", _hoisted_22$12, [(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) => {
9140
+ props.heatmap?.enabled && props.heatmap.showLegend ? (openBlock(), createElementBlock("div", _hoisted_18$16, [
9141
+ createElementVNode("span", _hoisted_19$16, toDisplayString(props.heatmap.min ?? 0), 1),
9142
+ createElementVNode("div", _hoisted_20$15, [(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) => {
9190
9143
  return openBlock(), createElementBlock("div", {
9191
9144
  key: index,
9192
9145
  class: "mint-well-plate__legend-segment",
9193
9146
  style: normalizeStyle({ backgroundColor: color })
9194
9147
  }, null, 4);
9195
9148
  }), 128))]),
9196
- createElementVNode("span", _hoisted_23$10, toDisplayString(props.heatmap.max ?? 1), 1)
9149
+ createElementVNode("span", _hoisted_21$12, toDisplayString(props.heatmap.max ?? 1), 1)
9197
9150
  ])) : createCommentVNode("", true),
9198
- props.showLegend ? (openBlock(), createElementBlock("div", _hoisted_24$10, [(openBlock(true), createElementBlock(Fragment, null, renderList(activeLegendItems.value, (item) => {
9151
+ props.showLegend ? (openBlock(), createElementBlock("div", _hoisted_22$12, [(openBlock(true), createElementBlock(Fragment, null, renderList(activeLegendItems.value, (item) => {
9199
9152
  return openBlock(), createElementBlock("div", {
9200
9153
  key: item.type,
9201
9154
  class: "mint-well-plate__sample-legend-item"
9202
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList([unref(sampleTypeMarker)(item.type, item.color)], (marker) => {
9203
- return openBlock(), createElementBlock("span", {
9204
- key: item.type,
9205
- class: "mint-well-plate__sample-legend-dot",
9206
- style: normalizeStyle(marker.style)
9207
- }, toDisplayString(marker.glyph), 5);
9208
- }), 128)), createElementVNode("span", _hoisted_25$10, toDisplayString(item.label), 1)]);
9155
+ }, [createElementVNode("span", {
9156
+ class: "mint-well-plate__sample-legend-dot",
9157
+ style: normalizeStyle(unref(sampleTint)(item.color))
9158
+ }, null, 4), createElementVNode("span", _hoisted_23$10, toDisplayString(item.label), 1)]);
9209
9159
  }), 128))])) : createCommentVNode("", true)
9210
9160
  ])])),
9211
9161
  __props.editable && unref(editingWellId) ? renderSlot(_ctx.$slots, "well-editor", {
@@ -22953,6 +22903,6 @@ var components_exports = /* @__PURE__ */ __exportAll({
22953
22903
  WellPlate: () => WellPlate_default
22954
22904
  });
22955
22905
  //#endregion
22956
- export { PlateEditor_default as $, SampleLegend_default as A, AppToastContainer_default as At, StatusIndicator_default as B, __commonJSMin as Bt, ChemicalFormula_default as C, AppAvatarMenu_default as Ct, ReagentEditor_default as D, ActionMenu_default as Dt, SampleHierarchyTree_default as E, ThemeToggle_default as Et, SettingsModal_default as F, Calendar_default as Ft, ControlWorkspaceView_default as G, LayoutResizeHandle_default as H, AdductText_default as I, BasePill_default as It, SampleSelector_default as J, ComponentBindingRenderer_default as K, Breadcrumb_default as L, SegmentedControl_default as Lt, BioTemplatePackWorkspaceView_default as M, FormField_default as Mt, BioTemplateExperimentWorkspaceView_default as N, DataFrame_default as Nt, SmartGroupModal_default as O, IconButton_default as Ot, BioTemplateRenderer_default as P, LoadingSpinner_default as Pt, ReagentList_default as Q, Avatar_default as R, BaseTabs_default as Rt, sequenceSamplesRemaining as S, AppTopBar_default as St, ProtocolStepEditor_default as T, CollapsibleCard_default as Tt, AppContainer_default as U, Divider_default as V, DoseDesignWorkspaceView_default as W, SmartGroupManual_default as X, AutoGroupModal_default as Y, SmartGroupFieldRecipe_default as Z, estimateSequenceFinishDate as _, AppLayout_default as _t, ArtifactSaveDialog_default as a, GeneratedPluginView_default as at, formatSequenceRemaining as b, FormActions_default as bt, SectionCard_default as c, GeneratedPlotlyResult_default as ct, ExperimentCodeBadge_default as d, ChartContainer_default as dt, ConfirmDialog_default as et, ExperimentDataViewer_default as f, generatedJobDefaults as ft, SequenceProgressBar_default as g, MobileSupportGate_default as gt, InstrumentStateBadge_default as h, PluginWorkspaceView_default as ht, ExperimentPopover_default as i, DoseCalculator_default as it, BioTemplatePresetWorkspaceView_default as j, AlertBox_default as jt, GroupAssigner_default as k, RuntimeUpdateNotice_default as kt, ResourceCard_default as l, PlotlyChart_default as lt, AuditTrail_default as m, normalizeGeneratedJobInput as mt, FilePicker_default as n, sampleTypeMarker as nt, ArtifactSelectorModal_default as o, JobsStatusTray_default as ot, BatchProgressList_default as p, generatedJobFormSchema as pt, ScheduleCalendar_default as q, FitPanel_default as r, ExperimentTimeline_default as rt, ExperimentSelectorModal_default as s, GeneratedResultRenderer_default as st, components_exports as t, WellPlate_default as tt, TimeRangeInput_default as u, mintPlotlyTemplate as ut, estimateSequenceRemainingSeconds as v, AppSidebar_default as vt, ScientificNumber_default as w, PluginIcon_default as wt, sequenceProgressPercent as x, StepWizard_default as xt, formatSequenceEta as y, FormBuilder_default as yt, ProgressBar_default as z, SearchableSelect_default as zt };
22906
+ export { PlateEditor_default as $, SampleLegend_default as A, AppToastContainer_default as At, StatusIndicator_default as B, ChemicalFormula_default as C, AppAvatarMenu_default as Ct, ReagentEditor_default as D, ActionMenu_default as Dt, SampleHierarchyTree_default as E, ThemeToggle_default as Et, SettingsModal_default as F, Calendar_default as Ft, ControlWorkspaceView_default as G, LayoutResizeHandle_default as H, AdductText_default as I, BasePill_default as It, SampleSelector_default as J, ComponentBindingRenderer_default as K, Breadcrumb_default as L, SegmentedControl_default as Lt, BioTemplatePackWorkspaceView_default as M, FormField_default as Mt, BioTemplateExperimentWorkspaceView_default as N, DataFrame_default as Nt, SmartGroupModal_default as O, IconButton_default as Ot, BioTemplateRenderer_default as P, LoadingSpinner_default as Pt, ReagentList_default as Q, Avatar_default as R, BaseTabs_default as Rt, sequenceSamplesRemaining as S, AppTopBar_default as St, ProtocolStepEditor_default as T, CollapsibleCard_default as Tt, AppContainer_default as U, Divider_default as V, DoseDesignWorkspaceView_default as W, SmartGroupManual_default as X, AutoGroupModal_default as Y, SmartGroupFieldRecipe_default as Z, estimateSequenceFinishDate as _, AppLayout_default as _t, ArtifactSaveDialog_default as a, GeneratedPluginView_default as at, formatSequenceRemaining as b, FormActions_default as bt, SectionCard_default as c, GeneratedPlotlyResult_default as ct, ExperimentCodeBadge_default as d, ChartContainer_default as dt, ConfirmDialog_default as et, ExperimentDataViewer_default as f, generatedJobDefaults as ft, SequenceProgressBar_default as g, MobileSupportGate_default as gt, InstrumentStateBadge_default as h, PluginWorkspaceView_default as ht, ExperimentPopover_default as i, DoseCalculator_default as it, BioTemplatePresetWorkspaceView_default as j, AlertBox_default as jt, GroupAssigner_default as k, RuntimeUpdateNotice_default as kt, ResourceCard_default as l, PlotlyChart_default as lt, AuditTrail_default as m, normalizeGeneratedJobInput as mt, FilePicker_default as n, sampleTypeMarker as nt, ArtifactSelectorModal_default as o, JobsStatusTray_default as ot, BatchProgressList_default as p, generatedJobFormSchema as pt, ScheduleCalendar_default as q, FitPanel_default as r, ExperimentTimeline_default as rt, ExperimentSelectorModal_default as s, GeneratedResultRenderer_default as st, components_exports as t, WellPlate_default as tt, TimeRangeInput_default as u, mintPlotlyTemplate as ut, estimateSequenceRemainingSeconds as v, AppSidebar_default as vt, ScientificNumber_default as w, PluginIcon_default as wt, sequenceProgressPercent as x, StepWizard_default as xt, formatSequenceEta as y, FormBuilder_default as yt, ProgressBar_default as z, SearchableSelect_default as zt };
22957
22907
 
22958
- //# sourceMappingURL=components-CF0XMy8W.js.map
22908
+ //# sourceMappingURL=components-BTzcqrJp.js.map