@morscherlab/mint-sdk 1.3.0-beta.3 → 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 (113) 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/FilePicker.vue.d.ts +4 -1
  5. package/dist/components/WellPlate.colors.d.ts +1 -5
  6. package/dist/components/WellPlate.rendering.d.ts +5 -2
  7. package/dist/components/index.d.ts +32 -17
  8. package/dist/components/index.js +3 -3
  9. package/dist/components/internal/FilePickerListInternal.vue.d.ts +2 -0
  10. package/dist/{components-CvY105kJ.js → components-BTzcqrJp.js} +400 -358
  11. package/dist/components-BTzcqrJp.js.map +1 -0
  12. package/dist/composables/createFilePickerAdapter.d.ts +5 -1
  13. package/dist/composables/filePicker/usePickerNavigation.d.ts +3 -2
  14. package/dist/composables/index.d.ts +0 -3
  15. package/dist/composables/index.js +4 -4
  16. package/dist/composables/useAutoGroup.d.ts +1 -1
  17. package/dist/composables/useBioTemplateComponents.d.ts +15 -3
  18. package/dist/composables/useBioTemplateControls.d.ts +5 -1
  19. package/dist/composables/useBioTemplatePackWorkspace.d.ts +2 -0
  20. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +5 -1
  21. package/dist/composables/useBioTemplateWorkspace.d.ts +5 -1
  22. package/dist/composables/useExperimentSave.d.ts +5 -1
  23. package/dist/composables/useFilePicker.d.ts +4 -1
  24. package/dist/composables/useGroupAssignment.d.ts +5 -1
  25. package/dist/composables/useTemplateCollection.d.ts +5 -1
  26. package/dist/composables-Doqb7g1z.js +591 -0
  27. package/dist/composables-Doqb7g1z.js.map +1 -0
  28. package/dist/index.js +24 -24
  29. package/dist/index.js.map +1 -1
  30. package/dist/install.js +1 -1
  31. package/dist/lcms.d.ts +11 -11
  32. package/dist/styles.css +60 -89
  33. package/dist/templates/index.js +1 -1
  34. package/dist/{templates-Bj9hZ7iV.js → templates-DgAG5kMq.js} +2 -2
  35. package/dist/{templates-Bj9hZ7iV.js.map → templates-DgAG5kMq.js.map} +1 -1
  36. package/dist/types/auth.d.ts +0 -27
  37. package/dist/types/components.d.ts +4 -0
  38. package/dist/types/fileBrowserTypes.d.ts +13 -0
  39. package/dist/types/filePicker.d.ts +8 -1
  40. package/dist/types/index.d.ts +2 -2
  41. package/dist/utils/rack.d.ts +16 -16
  42. package/dist/{validation-B4Y8_eEe.js → validation-DILksa0c.js} +50 -12
  43. package/dist/validation-DILksa0c.js.map +1 -0
  44. package/package.json +1 -6
  45. package/src/__tests__/components/ActionMenu.test.ts +10 -0
  46. package/src/__tests__/components/AppTopBar.test.ts +16 -8
  47. package/src/__tests__/components/EmptyState.test.ts +15 -0
  48. package/src/__tests__/components/FilePicker.test.ts +65 -1
  49. package/src/__tests__/components/WellPlate.decoration.test.ts +4 -28
  50. package/src/__tests__/components/WellPlate.rendering.test.ts +20 -33
  51. package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +7 -7
  52. package/src/__tests__/composables/createFilePickerAdapter.test.ts +92 -1
  53. package/src/__tests__/composables/usePickerNavigation.test.ts +61 -1
  54. package/src/__tests__/composables/usePlatformFilePickerAdapter.test.ts +18 -6
  55. package/src/__tests__/docs/frontendDocsCatalog.test.ts +2 -2
  56. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  57. package/src/__tests__/styles/menusShellRefresh.test.ts +8 -2
  58. package/src/__tests__/templates/templatesDeprecation.test.ts +51 -11
  59. package/src/components/ActionMenu.vue +10 -2
  60. package/src/components/AppTopBar.vue +2 -4
  61. package/src/components/EmptyState.vue +3 -1
  62. package/src/components/FilePicker.vue +42 -0
  63. package/src/components/WellPlate.colors.ts +6 -10
  64. package/src/components/WellPlate.legend.ts +4 -4
  65. package/src/components/WellPlate.rendering.ts +9 -8
  66. package/src/components/WellPlate.vue +5 -22
  67. package/src/components/index.ts +32 -17
  68. package/src/components/internal/FilePickerListInternal.vue +11 -2
  69. package/src/composables/autoGroup/index.ts +1 -1
  70. package/src/composables/createFilePickerAdapter.ts +82 -22
  71. package/src/composables/filePicker/usePickerNavigation.ts +29 -2
  72. package/src/composables/index.ts +0 -7
  73. package/src/composables/useAutoGroup.ts +1 -1
  74. package/src/composables/useBioTemplateComponents.ts +15 -3
  75. package/src/composables/useBioTemplateControls.ts +5 -1
  76. package/src/composables/useBioTemplatePackWorkspace.ts +2 -0
  77. package/src/composables/useBioTemplatePresetWorkspace.ts +5 -1
  78. package/src/composables/useBioTemplateWorkspace.ts +5 -1
  79. package/src/composables/useExperimentSave.ts +5 -1
  80. package/src/composables/useFilePicker.ts +8 -1
  81. package/src/composables/useGroupAssignment.ts +5 -1
  82. package/src/composables/usePlatformFilePickerAdapter.ts +26 -4
  83. package/src/composables/useTemplateCollection.ts +5 -1
  84. package/src/index.ts +1 -1
  85. package/src/lcms.ts +11 -11
  86. package/src/styles/components/action-menu.css +10 -0
  87. package/src/styles/components/app-top-bar.css +7 -31
  88. package/src/styles/components/empty-state.css +3 -2
  89. package/src/styles/components/file-picker.css +23 -1
  90. package/src/styles/components/well-plate.css +18 -55
  91. package/src/types/auth.ts +0 -37
  92. package/src/types/components.ts +4 -0
  93. package/src/types/fileBrowserTypes.ts +15 -0
  94. package/src/types/filePicker.ts +8 -1
  95. package/src/types/index.ts +2 -5
  96. package/src/utils/rack.ts +16 -16
  97. package/dist/ResourcePickerListInternal-c3IT8PIu.js.map +0 -1
  98. package/dist/__tests__/composables/useAuth.test.d.ts +0 -1
  99. package/dist/__tests__/composables/usePasskey.test.d.ts +0 -1
  100. package/dist/components-CvY105kJ.js.map +0 -1
  101. package/dist/composables/useAuth.d.ts +0 -47
  102. package/dist/composables/usePasskey.d.ts +0 -10
  103. package/dist/composables/useWellPlateEditor.d.ts +0 -33
  104. package/dist/composables-DL4Vca7L.js +0 -1193
  105. package/dist/composables-DL4Vca7L.js.map +0 -1
  106. package/dist/plotly.min-D6Ge6qgX.js +0 -168582
  107. package/dist/plotly.min-D6Ge6qgX.js.map +0 -1
  108. package/dist/validation-B4Y8_eEe.js.map +0 -1
  109. package/src/__tests__/composables/useAuth.test.ts +0 -290
  110. package/src/__tests__/composables/usePasskey.test.ts +0 -38
  111. package/src/composables/useAuth.ts +0 -470
  112. package/src/composables/usePasskey.ts +0 -216
  113. package/src/composables/useWellPlateEditor.ts +0 -415
@@ -1,22 +1,16 @@
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";
9
9
  import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, effectScope, guardReactiveProps, h, inject, isRef, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, openBlock, provide, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowRef, toDisplayString, toHandlers, toRaw, toRef, unref, useId, useModel, useSlots, useTemplateRef, vModelCheckbox, vModelText, vShow, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
10
10
  import { computePosition, flip, offset, shift } from "@floating-ui/dom";
11
- import { ChevronRight, Download, Ellipsis, Move, Plus, Redo2, RefreshCw, Trash2, Undo2, Upload, X } from "lucide-vue-next";
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 = [
@@ -1099,22 +1079,22 @@ var _hoisted_18$22 = {
1099
1079
  key: 0,
1100
1080
  class: "mint-dataframe__state"
1101
1081
  };
1102
- var _hoisted_19$21 = {
1082
+ var _hoisted_19$22 = {
1103
1083
  key: 1,
1104
1084
  class: "mint-dataframe__state"
1105
1085
  };
1106
- var _hoisted_20$20 = {
1086
+ 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";
@@ -1567,14 +1547,14 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1567
1547
  __props.error ? (openBlock(), createElementBlock("div", _hoisted_18$22, [renderSlot(_ctx.$slots, "error", { error: __props.error }, () => [createVNode(DataStateInternal_default, {
1568
1548
  state: "error",
1569
1549
  title: __props.error
1570
- }, null, 8, ["title"])])])) : paginatedData.value.length === 0 && !__props.loading ? (openBlock(), createElementBlock("div", _hoisted_19$21, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
1550
+ }, null, 8, ["title"])])])) : paginatedData.value.length === 0 && !__props.loading ? (openBlock(), createElementBlock("div", _hoisted_19$22, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
1571
1551
  state: "empty",
1572
1552
  title: __props.emptyText,
1573
1553
  "icon-path": EMPTY_ICON_PATH$2
1574
1554
  }, null, 8, ["title"])])])) : createCommentVNode("", true),
1575
- __props.loading ? (openBlock(), createElementBlock("div", _hoisted_20$20, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(LoadingSpinner_default, { size: "lg" })])])) : createCommentVNode("", true)
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",
@@ -2077,7 +2057,12 @@ var _hoisted_2$63 = [
2077
2057
  "rel",
2078
2058
  "onClick"
2079
2059
  ];
2080
- var _hoisted_3$55 = ["disabled", "onClick"];
2060
+ var _hoisted_3$55 = [
2061
+ "role",
2062
+ "aria-checked",
2063
+ "disabled",
2064
+ "onClick"
2065
+ ];
2081
2066
  //#endregion
2082
2067
  //#region src/components/ActionMenu.vue
2083
2068
  var ActionMenu_default = /* @__PURE__ */ defineComponent({
@@ -2215,10 +2200,16 @@ var ActionMenu_default = /* @__PURE__ */ defineComponent({
2215
2200
  key: 2,
2216
2201
  type: "button",
2217
2202
  class: normalizeClass(["mint-menu-item mint-action-menu__item", { "mint-menu-item--danger mint-action-menu__item--danger": item.danger }]),
2218
- role: "menuitem",
2203
+ role: item.checked === void 0 ? "menuitem" : "menuitemradio",
2204
+ "aria-checked": item.checked,
2219
2205
  disabled: item.disabled,
2220
2206
  onClick: ($event) => handleSelect(item)
2221
- }, toDisplayString(item.label), 11, _hoisted_3$55))], 64);
2207
+ }, [item.checked !== void 0 ? (openBlock(), createBlock(unref(Check), {
2208
+ key: 0,
2209
+ class: normalizeClass(["mint-action-menu__check", { "mint-action-menu__check--off": !item.checked }]),
2210
+ size: 14,
2211
+ "aria-hidden": "true"
2212
+ }, null, 8, ["class"])) : createCommentVNode("", true), createTextVNode(" " + toDisplayString(item.label), 1)], 10, _hoisted_3$55))], 64);
2222
2213
  }), 128))], 36)) : createCommentVNode("", true)]))], 64);
2223
2214
  };
2224
2215
  }
@@ -3490,38 +3481,29 @@ var _hoisted_10$28 = {
3490
3481
  };
3491
3482
  var _hoisted_11$26 = { class: "mint-topbar__plugin-name" };
3492
3483
  var _hoisted_12$24 = {
3493
- key: 0,
3494
- class: "mint-topbar__plugin-version"
3495
- };
3496
- var _hoisted_13$24 = {
3497
- key: 1,
3498
- class: "mint-topbar__divider",
3499
- "aria-hidden": "true"
3500
- };
3501
- var _hoisted_14$24 = {
3502
- key: 3,
3484
+ key: 2,
3503
3485
  class: "mint-topbar-title-group"
3504
3486
  };
3505
- var _hoisted_15$24 = { class: "mint-topbar-title" };
3506
- var _hoisted_16$21 = { class: "mint-topbar-subtitle" };
3507
- var _hoisted_17$21 = {
3508
- 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,
3509
3491
  class: "mint-topbar__title-only"
3510
3492
  };
3511
- var _hoisted_18$21 = {
3512
- key: 5,
3493
+ var _hoisted_16$21 = {
3494
+ key: 4,
3513
3495
  class: "mint-topbar__center"
3514
3496
  };
3515
- var _hoisted_19$20 = { class: "mint-topbar__right" };
3516
- var _hoisted_20$19 = {
3497
+ var _hoisted_17$21 = { class: "mint-topbar__right" };
3498
+ var _hoisted_18$21 = {
3517
3499
  key: 0,
3518
3500
  class: "mint-topbar__standalone-badge"
3519
3501
  };
3520
- var _hoisted_21$17 = {
3502
+ var _hoisted_19$21 = {
3521
3503
  key: 2,
3522
3504
  class: "mint-topbar__standalone-badge"
3523
3505
  };
3524
- var _hoisted_22$17 = {
3506
+ var _hoisted_20$20 = {
3525
3507
  key: 0,
3526
3508
  class: "mint-topbar__icon-btn-dot",
3527
3509
  "aria-hidden": "true"
@@ -3619,8 +3601,8 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3619
3601
  });
3620
3602
  const hasPlatformPageSelector = computed(() => props.pageSelector === void 0 && (plugin.value?.nav_items?.length ?? 0) > 1);
3621
3603
  const hasPageSelector = computed(() => (props.pageSelector?.length ?? 0) > 1 || hasPlatformPageSelector.value);
3622
- /** Integrated plugins show their name + version as a static identity; it stands in for the title. */
3623
- 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);
3624
3606
  const hasPillNav = computed(() => !!props.pillNav?.length);
3625
3607
  const hasAccountMenu = computed(() => !!props.accountMenu?.length);
3626
3608
  const hasTitleGroup = computed(() => !hasPageSelector.value && !identityName.value && !!props.title && !!props.subtitle);
@@ -3692,10 +3674,9 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3692
3674
  size: "topbar",
3693
3675
  variant: "solid"
3694
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))]),
3695
- 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),
3696
- 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),
3697
3678
  hasPageSelector.value ? (openBlock(), createBlock(AppTopBarPageSelectorInternal_default, {
3698
- key: 2,
3679
+ key: 1,
3699
3680
  pages: normalizedPageSelector.value,
3700
3681
  "current-page-id": effectiveCurrentPageSelectorId.value,
3701
3682
  onSelect: _cache[0] || (_cache[0] = ($event) => emit("page-selector-select", $event))
@@ -3708,23 +3689,23 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3708
3689
  fn: withCtx((slotProps) => [renderSlot(_ctx.$slots, "page-selector-item-icon", normalizeProps(guardReactiveProps(slotProps)))]),
3709
3690
  key: "1"
3710
3691
  } : void 0]), 1032, ["pages", "current-page-id"])) : createCommentVNode("", true),
3711
- 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),
3712
3693
  renderSlot(_ctx.$slots, "nav"),
3713
- 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, {
3714
3695
  key: 0,
3715
3696
  items: normalizedPillNav.value,
3716
3697
  "current-item-id": __props.currentPillId,
3717
3698
  onSelect: _cache[1] || (_cache[1] = ($event) => emit("pill-select", $event)),
3718
3699
  onOptionSelect: _cache[2] || (_cache[2] = (option, item) => emit("pill-option-select", option, item))
3719
3700
  }, null, 8, ["items", "current-item-id"])) : createCommentVNode("", true)])])) : createCommentVNode("", true),
3720
- createElementVNode("div", _hoisted_19$20, [
3721
- __props.showStandaloneLabel && isStandalone.value && !unref(appExperiment) ? (openBlock(), createElementBlock("span", _hoisted_20$19, 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),
3722
3703
  unref(appExperiment) && !isStandalone.value && canBindExperiment.value ? (openBlock(), createBlock(unref(ExperimentPopover), mergeProps({ key: 1 }, unref(appExperiment).popover.value, {
3723
3704
  onSelect: _cache[3] || (_cache[3] = ($event) => unref(appExperiment).openModal()),
3724
3705
  onSave: _cache[4] || (_cache[4] = ($event) => unref(appExperiment).handleSave()),
3725
3706
  onDetach: _cache[5] || (_cache[5] = ($event) => unref(appExperiment).handleDetach())
3726
3707
  }), null, 16)) : createCommentVNode("", true),
3727
- 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),
3728
3709
  renderSlot(_ctx.$slots, "actions"),
3729
3710
  __props.showNotifications ? (openBlock(), createElementBlock("button", {
3730
3711
  key: 3,
@@ -3740,7 +3721,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3740
3721
  "stroke-width": "2",
3741
3722
  "stroke-linecap": "round",
3742
3723
  "stroke-linejoin": "round"
3743
- }, [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),
3744
3725
  __props.showThemeToggle ? (openBlock(), createBlock(ThemeToggle_default, {
3745
3726
  key: 4,
3746
3727
  size: "sm"
@@ -4619,13 +4600,13 @@ var _hoisted_17$20 = {
4619
4600
  class: "mint-sidebar__group-subtitle"
4620
4601
  };
4621
4602
  var _hoisted_18$20 = { class: "mint-sidebar__group-tail" };
4622
- var _hoisted_19$19 = [
4603
+ var _hoisted_19$20 = [
4623
4604
  "disabled",
4624
4605
  "aria-label",
4625
4606
  "title",
4626
4607
  "onClick"
4627
4608
  ];
4628
- var _hoisted_20$18 = {
4609
+ var _hoisted_20$19 = {
4629
4610
  key: 0,
4630
4611
  class: "mint-sidebar__group-action-icon",
4631
4612
  viewBox: "0 0 24 24",
@@ -4639,12 +4620,12 @@ var _hoisted_20$18 = {
4639
4620
  var _hoisted_21$16 = ["d"];
4640
4621
  var _hoisted_22$16 = ["d"];
4641
4622
  var _hoisted_23$14 = { key: 1 };
4642
- var _hoisted_24$13 = [
4623
+ var _hoisted_24$12 = [
4643
4624
  "aria-checked",
4644
4625
  "aria-label",
4645
4626
  "onClick"
4646
4627
  ];
4647
- var _hoisted_25$13 = [
4628
+ var _hoisted_25$12 = [
4648
4629
  "aria-label",
4649
4630
  "aria-expanded",
4650
4631
  "onClick"
@@ -4973,7 +4954,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
4973
4954
  "aria-label": action.label,
4974
4955
  title: action.label,
4975
4956
  onClick: ($event) => handleSectionAction(section.id, action.id)
4976
- }, [action.icon && isSvgIcon(action.icon) ? (openBlock(), createElementBlock("svg", _hoisted_20$18, [Array.isArray(action.icon) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(action.icon, (d, i) => {
4957
+ }, [action.icon && isSvgIcon(action.icon) ? (openBlock(), createElementBlock("svg", _hoisted_20$19, [Array.isArray(action.icon) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(action.icon, (d, i) => {
4977
4958
  return openBlock(), createElementBlock("path", {
4978
4959
  key: i,
4979
4960
  d
@@ -4981,7 +4962,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
4981
4962
  }), 128)) : (openBlock(), createElementBlock("path", {
4982
4963
  key: 1,
4983
4964
  d: action.icon
4984
- }, null, 8, _hoisted_22$16))])) : action.icon ? (openBlock(), createElementBlock("span", _hoisted_23$14, toDisplayString(action.icon), 1)) : createCommentVNode("", true)], 14, _hoisted_19$19);
4965
+ }, null, 8, _hoisted_22$16))])) : action.icon ? (openBlock(), createElementBlock("span", _hoisted_23$14, toDisplayString(action.icon), 1)) : createCommentVNode("", true)], 14, _hoisted_19$20);
4985
4966
  }), 128)),
4986
4967
  section.showToggle ? (openBlock(), createElementBlock("button", {
4987
4968
  key: 1,
@@ -4991,7 +4972,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
4991
4972
  "aria-label": `Enable ${section.label}`,
4992
4973
  class: normalizeClass(["mint-sidebar__switch", __props.toggleState[section.id] ?? false ? "mint-sidebar__switch--on" : ""]),
4993
4974
  onClick: ($event) => emit("update:toggle", section.id, !(__props.toggleState[section.id] ?? false))
4994
- }, [..._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),
4995
4976
  createElementVNode("button", {
4996
4977
  type: "button",
4997
4978
  class: "mint-sidebar__chevron-button",
@@ -5007,7 +4988,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
5007
4988
  "stroke-linecap": "round",
5008
4989
  "stroke-linejoin": "round",
5009
4990
  "aria-hidden": "true"
5010
- }, [..._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)
5011
4992
  ])]), createVNode(Transition, { name: "collapse" }, {
5012
4993
  default: withCtx(() => [withDirectives(createElementVNode("div", _hoisted_26$10, [renderSlot(_ctx.$slots, `section-${section.id}`, {}, () => [resolvedForms.value[section.id] ? (openBlock(), createBlock(FormBuilder_default, {
5013
4994
  key: 0,
@@ -6068,7 +6049,7 @@ var PlotlyChart_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
6068
6049
  let revision = 0;
6069
6050
  async function loadPlotly() {
6070
6051
  if (props.plotly) return props.plotly;
6071
- const module = await import("./plotly.min-D6Ge6qgX.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1));
6052
+ const module = await import("plotly.js-dist-min");
6072
6053
  return "default" in module ? module.default : module;
6073
6054
  }
6074
6055
  function bindEvents(element) {
@@ -6476,16 +6457,16 @@ var _hoisted_16$19 = {
6476
6457
  };
6477
6458
  var _hoisted_17$19 = { class: "mint-jobs-tray__job-heading" };
6478
6459
  var _hoisted_18$19 = { class: "mint-jobs-tray__job-identity" };
6479
- var _hoisted_19$18 = ["onClick"];
6480
- var _hoisted_20$17 = { class: "mint-jobs-tray__kind" };
6460
+ var _hoisted_19$19 = ["onClick"];
6461
+ var _hoisted_20$18 = { class: "mint-jobs-tray__kind" };
6481
6462
  var _hoisted_21$15 = {
6482
6463
  key: 0,
6483
6464
  class: "mint-jobs-tray__percent"
6484
6465
  };
6485
6466
  var _hoisted_22$15 = ["aria-valuenow"];
6486
6467
  var _hoisted_23$13 = { class: "mint-jobs-tray__job-footer" };
6487
- var _hoisted_24$12 = { class: "mint-jobs-tray__job-actions" };
6488
- var _hoisted_25$12 = ["disabled", "onClick"];
6468
+ var _hoisted_24$11 = { class: "mint-jobs-tray__job-actions" };
6469
+ var _hoisted_25$11 = ["disabled", "onClick"];
6489
6470
  var _hoisted_26$9 = ["disabled", "onClick"];
6490
6471
  var _hoisted_27$8 = {
6491
6472
  key: 0,
@@ -6724,7 +6705,7 @@ var JobsStatusTray_default = /* @__PURE__ */ defineComponent({
6724
6705
  type: "button",
6725
6706
  class: "mint-jobs-tray__job-select",
6726
6707
  onClick: ($event) => emit("select", job)
6727
- }, toDisplayString(job.name), 9, _hoisted_19$18), createElementVNode("span", _hoisted_20$17, toDisplayString(job.kind), 1)]),
6708
+ }, toDisplayString(job.name), 9, _hoisted_19$19), createElementVNode("span", _hoisted_20$18, toDisplayString(job.kind), 1)]),
6728
6709
  createElementVNode("span", { class: normalizeClass(["mint-jobs-tray__status", statusClass(job)]) }, [_cache[8] || (_cache[8] = createElementVNode("span", {
6729
6710
  class: "mint-jobs-tray__status-dot",
6730
6711
  "aria-hidden": "true"
@@ -6740,7 +6721,7 @@ var JobsStatusTray_default = /* @__PURE__ */ defineComponent({
6740
6721
  "aria-valuemax": "100",
6741
6722
  "aria-valuenow": jobPercent(job)
6742
6723
  }, [createElementVNode("span", { style: normalizeStyle({ width: `${jobPercent(job)}%` }) }, null, 4)], 8, _hoisted_22$15)) : createCommentVNode("", true),
6743
- 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, [
6744
6725
  renderSlot(_ctx.$slots, "job-actions", { job }),
6745
6726
  job.can_cancel && unref(tray).canCancel.value ? (openBlock(), createElementBlock("button", {
6746
6727
  key: 0,
@@ -6749,7 +6730,7 @@ var JobsStatusTray_default = /* @__PURE__ */ defineComponent({
6749
6730
  "aria-label": "Cancel job",
6750
6731
  disabled: unref(tray).isPending(job),
6751
6732
  onClick: ($event) => cancelJob(job)
6752
- }, " Cancel ", 8, _hoisted_25$12)) : createCommentVNode("", true),
6733
+ }, " Cancel ", 8, _hoisted_25$11)) : createCommentVNode("", true),
6753
6734
  job.can_delete && unref(tray).canDelete.value ? (openBlock(), createElementBlock("button", {
6754
6735
  key: 1,
6755
6736
  type: "button",
@@ -7066,8 +7047,8 @@ var _hoisted_15$21 = {
7066
7047
  var _hoisted_16$18 = { class: "mint-dose-calculator__preview-steps" };
7067
7048
  var _hoisted_17$18 = { class: "mint-dose-calculator__preview-step" };
7068
7049
  var _hoisted_18$18 = { class: "mint-dose-calculator__preview-step-num" };
7069
- var _hoisted_19$17 = { class: "mint-dose-calculator__preview-step-conc" };
7070
- var _hoisted_20$16 = {
7050
+ var _hoisted_19$18 = { class: "mint-dose-calculator__preview-step-conc" };
7051
+ var _hoisted_20$17 = {
7071
7052
  key: 0,
7072
7053
  class: "mint-dose-calculator__preview-arrow"
7073
7054
  };
@@ -7084,11 +7065,11 @@ var _hoisted_23$12 = {
7084
7065
  key: 0,
7085
7066
  class: "mint-dose-calculator__error"
7086
7067
  };
7087
- var _hoisted_24$11 = {
7068
+ var _hoisted_24$10 = {
7088
7069
  key: 4,
7089
7070
  class: "mint-dose-calculator__mw-section"
7090
7071
  };
7091
- var _hoisted_25$11 = { class: "mint-dose-calculator__mw-label" };
7072
+ var _hoisted_25$10 = { class: "mint-dose-calculator__mw-label" };
7092
7073
  var _hoisted_26$8 = {
7093
7074
  key: 5,
7094
7075
  class: "mint-dose-calculator__form"
@@ -7334,7 +7315,7 @@ var DoseCalculator_default = /* @__PURE__ */ defineComponent({
7334
7315
  ]),
7335
7316
  _cache[17] || (_cache[17] = createElementVNode("div", { class: "mint-dose-calculator__divider" }, null, -1)),
7336
7317
  serialResult.value?.valid ? (openBlock(), createElementBlock("div", _hoisted_15$21, [_cache[16] || (_cache[16] = createElementVNode("div", { class: "mint-dose-calculator__preview-title" }, "Preview", -1)), createElementVNode("div", _hoisted_16$18, [(openBlock(true), createElementBlock(Fragment, null, renderList(serialResult.value.steps, (step, index) => {
7337
- return openBlock(), createElementBlock(Fragment, { key: step.stepNumber }, [createElementVNode("div", _hoisted_17$18, [createElementVNode("span", _hoisted_18$18, toDisplayString(step.stepNumber) + ":", 1), createElementVNode("span", _hoisted_19$17, toDisplayString(unref(formatWithUnit)(step.concentration, 3)), 1)]), index < serialResult.value.steps.length - 1 ? (openBlock(), createElementBlock("span", _hoisted_20$16, " → ")) : createCommentVNode("", true)], 64);
7318
+ return openBlock(), createElementBlock(Fragment, { key: step.stepNumber }, [createElementVNode("div", _hoisted_17$18, [createElementVNode("span", _hoisted_18$18, toDisplayString(step.stepNumber) + ":", 1), createElementVNode("span", _hoisted_19$18, toDisplayString(unref(formatWithUnit)(step.concentration, 3)), 1)]), index < serialResult.value.steps.length - 1 ? (openBlock(), createElementBlock("span", _hoisted_20$17, " → ")) : createCommentVNode("", true)], 64);
7338
7319
  }), 128))])])) : serialResult.value?.error ? (openBlock(), createElementBlock("div", _hoisted_21$14, toDisplayString(serialResult.value.error), 1)) : createCommentVNode("", true)
7339
7320
  ])) : activeMode.value === "conversion" ? (openBlock(), createElementBlock("div", _hoisted_22$14, [createVNode(FormField_default, { label: "Input Concentration" }, {
7340
7321
  default: withCtx(() => [createVNode(ConcentrationInput_default, {
@@ -7345,7 +7326,7 @@ var DoseCalculator_default = /* @__PURE__ */ defineComponent({
7345
7326
  }, null, 8, ["disabled", "molecular-weight"])]),
7346
7327
  _: 1
7347
7328
  }), !__props.molecularWeight ? (openBlock(), createElementBlock("div", _hoisted_23$12, " Provide molecular weight for mass ↔ molarity conversion ")) : createCommentVNode("", true)])) : createCommentVNode("", true),
7348
- __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),
7349
7330
  hasTargetWells.value ? (openBlock(), createElementBlock("div", _hoisted_26$8, [createVNode(BaseButton_default, {
7350
7331
  variant: "primary",
7351
7332
  "full-width": "",
@@ -7432,11 +7413,11 @@ var _hoisted_16$17 = {
7432
7413
  };
7433
7414
  var _hoisted_17$17 = ["onClick"];
7434
7415
  var _hoisted_18$17 = ["aria-label", "onClick"];
7435
- var _hoisted_19$16 = {
7416
+ var _hoisted_19$17 = {
7436
7417
  key: 2,
7437
7418
  class: "mint-timeline__spacer--vertical"
7438
7419
  };
7439
- var _hoisted_20$15 = {
7420
+ var _hoisted_20$16 = {
7440
7421
  key: 3,
7441
7422
  class: "mint-timeline__spacer--horizontal"
7442
7423
  };
@@ -7744,8 +7725,8 @@ var ExperimentTimeline_default = /* @__PURE__ */ defineComponent({
7744
7725
  "stroke-width": "2",
7745
7726
  d: "M12 4v16m8-8H4"
7746
7727
  })], -1)])], 8, _hoisted_18$17)) : createCommentVNode("", true),
7747
- __props.orientation === "vertical" && index < sortedSteps.value.length - 1 ? (openBlock(), createElementBlock("div", _hoisted_19$16)) : createCommentVNode("", true),
7748
- __props.orientation === "horizontal" && index < sortedSteps.value.length - 1 ? (openBlock(), createElementBlock("div", _hoisted_20$15)) : createCommentVNode("", true)
7728
+ __props.orientation === "vertical" && index < sortedSteps.value.length - 1 ? (openBlock(), createElementBlock("div", _hoisted_19$17)) : createCommentVNode("", true),
7729
+ __props.orientation === "horizontal" && index < sortedSteps.value.length - 1 ? (openBlock(), createElementBlock("div", _hoisted_20$16)) : createCommentVNode("", true)
7749
7730
  ], 40, _hoisted_2$44);
7750
7731
  }), 128)),
7751
7732
  __props.error ? (openBlock(), createElementBlock("div", _hoisted_21$13, [renderSlot(_ctx.$slots, "error", { error: __props.error }, () => [createVNode(DataStateInternal_default, {
@@ -7850,22 +7831,22 @@ var DEFAULT_WELL_LEGEND_ITEMS = [
7850
7831
  {
7851
7832
  type: "sample",
7852
7833
  label: "Sample",
7853
- color: "var(--mint-sample-1)"
7834
+ color: "#10b981"
7854
7835
  },
7855
7836
  {
7856
7837
  type: "blank",
7857
7838
  label: "Blank",
7858
- color: "var(--mint-sample-1)"
7839
+ color: "#f97316"
7859
7840
  },
7860
7841
  {
7861
7842
  type: "qc",
7862
7843
  label: "QC",
7863
- color: "var(--mint-sample-1)"
7844
+ color: "#8b5cf6"
7864
7845
  },
7865
7846
  {
7866
7847
  type: "iqc",
7867
7848
  label: "IQC",
7868
- color: "var(--mint-sample-1)"
7849
+ color: "#ec4899"
7869
7850
  }
7870
7851
  ];
7871
7852
  //#endregion
@@ -7906,17 +7887,13 @@ function sampleTypeMarker(type, groupColor) {
7906
7887
  }
7907
7888
  //#endregion
7908
7889
  //#region src/components/WellPlate.colors.ts
7909
- /**
7910
- * Group color for the built-in sample types when `sampleColors` has no entry.
7911
- * Color encodes the group and shape encodes the type (3a): blank and QC render
7912
- * neutral markers and ignore it; iQC takes it like a sample.
7913
- */
7890
+ /** Color for the built-in sample types when `sampleColors` has no entry. */
7914
7891
  var DEFAULT_SAMPLE_TYPE_COLORS = {
7915
- sample: "var(--mint-sample-1)",
7916
- control: "var(--mint-sample-2)",
7917
- blank: "var(--mint-sample-1)",
7918
- qc: "var(--mint-sample-1)",
7919
- iqc: "var(--mint-sample-1)"
7892
+ sample: "#10b981",
7893
+ control: "#3b82f6",
7894
+ blank: "#f97316",
7895
+ qc: "#8b5cf6",
7896
+ iqc: "#ec4899"
7920
7897
  };
7921
7898
  var HEATMAP_COLORS = {
7922
7899
  viridis: [
@@ -8719,16 +8696,15 @@ function wellStyle(well, state) {
8719
8696
  };
8720
8697
  const groupColor = well.sampleType && ((well.group ? state.sampleColors[well.group] : void 0) ?? state.sampleColors[well.sampleType] ?? DEFAULT_SAMPLE_TYPE_COLORS[well.sampleType]);
8721
8698
  if (!groupColor) return {};
8722
- 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) {
8723
8703
  return {
8724
- backgroundColor: background,
8725
- border
8704
+ backgroundColor: `color-mix(in srgb, ${color} 15%, transparent)`,
8705
+ border: `1px solid color-mix(in srgb, ${color} 40%, transparent)`
8726
8706
  };
8727
8707
  }
8728
- /** In-well glyph of the 3a sample-type marker: `Q` for QC, `i` for iQC. */
8729
- function sampleTypeGlyph(well) {
8730
- return well.sampleType ? sampleTypeMarker(well.sampleType, "").glyph : null;
8731
- }
8732
8708
  var sampleTypeIndicatorWarned = false;
8733
8709
  /** One dev-only warning per page for the no-op `showSampleTypeIndicator` prop. */
8734
8710
  function warnSampleTypeIndicatorDeprecated() {
@@ -8746,11 +8722,11 @@ function wellBadge(well, showBadges) {
8746
8722
  const count = well.metadata.injectionCount;
8747
8723
  if (count && count > 1) return {
8748
8724
  text: String(count),
8749
- color: "var(--text-primary)"
8725
+ color: "#6366f1"
8750
8726
  };
8751
8727
  if (well.metadata.customMethod) return {
8752
- text: "",
8753
- color: "var(--color-purple)"
8728
+ text: "+",
8729
+ color: "#ec4899"
8754
8730
  };
8755
8731
  return null;
8756
8732
  }
@@ -8807,27 +8783,19 @@ var _hoisted_16$16 = {
8807
8783
  key: 1,
8808
8784
  class: "mint-well-plate__well-id"
8809
8785
  };
8810
- var _hoisted_17$16 = {
8811
- key: 2,
8812
- class: "mint-well-plate__indicator"
8813
- };
8786
+ var _hoisted_17$16 = ["title"];
8814
8787
  var _hoisted_18$16 = {
8815
- key: 3,
8816
- class: "mint-well-plate__corner-glyph"
8817
- };
8818
- var _hoisted_19$15 = ["title"];
8819
- var _hoisted_20$14 = {
8820
8788
  key: 0,
8821
8789
  class: "mint-well-plate__legend"
8822
8790
  };
8791
+ var _hoisted_19$16 = { class: "mint-well-plate__legend-label" };
8792
+ var _hoisted_20$15 = { class: "mint-well-plate__legend-bar" };
8823
8793
  var _hoisted_21$12 = { class: "mint-well-plate__legend-label" };
8824
- var _hoisted_22$12 = { class: "mint-well-plate__legend-bar" };
8825
- var _hoisted_23$10 = { class: "mint-well-plate__legend-label" };
8826
- var _hoisted_24$10 = {
8794
+ var _hoisted_22$12 = {
8827
8795
  key: 1,
8828
8796
  class: "mint-well-plate__sample-legend"
8829
8797
  };
8830
- var _hoisted_25$10 = { class: "mint-well-plate__sample-legend-text" };
8798
+ var _hoisted_23$10 = { class: "mint-well-plate__sample-legend-text" };
8831
8799
  //#endregion
8832
8800
  //#region src/components/WellPlate.vue
8833
8801
  var WellPlate_default = /* @__PURE__ */ defineComponent({
@@ -9159,42 +9127,35 @@ var WellPlate_default = /* @__PURE__ */ defineComponent({
9159
9127
  "prevent"
9160
9128
  ]), ["space"])
9161
9129
  ]
9162
- }, [
9163
- 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),
9164
- unref(sampleTypeGlyph)(well) && (getWellLabel(well) || props.showWellIds) ? (openBlock(), createElementBlock("span", _hoisted_18$16, toDisplayString(unref(sampleTypeGlyph)(well)), 1)) : createCommentVNode("", true),
9165
- getWellBadge(well) ? (openBlock(), createElementBlock("span", {
9166
- key: 4,
9167
- class: normalizeClass(["mint-well-plate__badge", { "mint-well-plate__badge--dot": !getWellBadge(well)?.text }]),
9168
- style: normalizeStyle({ backgroundColor: getWellBadge(well)?.color }),
9169
- title: getWellBadge(well)?.text ? `${getWellBadge(well)?.text}x injections` : "Custom method"
9170
- }, toDisplayString(getWellBadge(well)?.text), 15, _hoisted_19$15)) : createCommentVNode("", true)
9171
- ], 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)]);
9172
9136
  }), 128))
9173
9137
  ]);
9174
9138
  }), 128))])
9175
9139
  ], 12, _hoisted_6$29),
9176
- props.heatmap?.enabled && props.heatmap.showLegend ? (openBlock(), createElementBlock("div", _hoisted_20$14, [
9177
- createElementVNode("span", _hoisted_21$12, toDisplayString(props.heatmap.min ?? 0), 1),
9178
- 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) => {
9179
9143
  return openBlock(), createElementBlock("div", {
9180
9144
  key: index,
9181
9145
  class: "mint-well-plate__legend-segment",
9182
9146
  style: normalizeStyle({ backgroundColor: color })
9183
9147
  }, null, 4);
9184
9148
  }), 128))]),
9185
- createElementVNode("span", _hoisted_23$10, toDisplayString(props.heatmap.max ?? 1), 1)
9149
+ createElementVNode("span", _hoisted_21$12, toDisplayString(props.heatmap.max ?? 1), 1)
9186
9150
  ])) : createCommentVNode("", true),
9187
- 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) => {
9188
9152
  return openBlock(), createElementBlock("div", {
9189
9153
  key: item.type,
9190
9154
  class: "mint-well-plate__sample-legend-item"
9191
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList([unref(sampleTypeMarker)(item.type, item.color)], (marker) => {
9192
- return openBlock(), createElementBlock("span", {
9193
- key: item.type,
9194
- class: "mint-well-plate__sample-legend-dot",
9195
- style: normalizeStyle(marker.style)
9196
- }, toDisplayString(marker.glyph), 5);
9197
- }), 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)]);
9198
9159
  }), 128))])) : createCommentVNode("", true)
9199
9160
  ])])),
9200
9161
  __props.editable && unref(editingWellId) ? renderSlot(_ctx.$slots, "well-editor", {
@@ -9391,11 +9352,11 @@ var _hoisted_15$18 = { class: "mint-plate-editor__toolbar-end" };
9391
9352
  var _hoisted_16$15 = ["disabled", "title"];
9392
9353
  var _hoisted_17$15 = ["aria-pressed"];
9393
9354
  var _hoisted_18$15 = ["disabled"];
9394
- var _hoisted_19$14 = {
9355
+ var _hoisted_19$15 = {
9395
9356
  key: 1,
9396
9357
  class: "mint-plate-editor__body"
9397
9358
  };
9398
- var _hoisted_20$13 = { class: "mint-plate-editor__main" };
9359
+ var _hoisted_20$14 = { class: "mint-plate-editor__main" };
9399
9360
  var _hoisted_21$11 = {
9400
9361
  key: 0,
9401
9362
  class: "mint-plate-editor__footer"
@@ -9974,7 +9935,7 @@ var PlateEditor_default = /* @__PURE__ */ defineComponent({
9974
9935
  renderSlot(_ctx.$slots, "toolbar-extra")
9975
9936
  ])
9976
9937
  ])) : createCommentVNode("", true),
9977
- activeRack.value ? (openBlock(), createElementBlock("div", _hoisted_19$14, [createElementVNode("div", _hoisted_20$13, [(openBlock(), createBlock(WellPlate_default, {
9938
+ activeRack.value ? (openBlock(), createElementBlock("div", _hoisted_19$15, [createElementVNode("div", _hoisted_20$14, [(openBlock(), createBlock(WellPlate_default, {
9978
9939
  key: activeRack.value.id,
9979
9940
  "model-value": selection.value,
9980
9941
  format: activeRack.value.format,
@@ -10339,11 +10300,11 @@ var _hoisted_18$14 = {
10339
10300
  key: 4,
10340
10301
  class: "mint-reagent-list__cell"
10341
10302
  };
10342
- var _hoisted_19$13 = {
10303
+ var _hoisted_19$14 = {
10343
10304
  key: 0,
10344
10305
  class: "mint-reagent-list__expired-text"
10345
10306
  };
10346
- var _hoisted_20$12 = { key: 1 };
10307
+ var _hoisted_20$13 = { key: 1 };
10347
10308
  var _hoisted_21$10 = {
10348
10309
  key: 2,
10349
10310
  class: "mint-reagent-list__badge mint-reagent-list__badge--error"
@@ -10639,7 +10600,7 @@ var ReagentList_default = /* @__PURE__ */ defineComponent({
10639
10600
  }, toDisplayString(reagent.name), 9, _hoisted_14$17)) : (openBlock(), createElementBlock("span", _hoisted_15$17, toDisplayString(reagent.name), 1))])) : createCommentVNode("", true),
10640
10601
  __props.columns.includes("catalog") ? (openBlock(), createElementBlock("td", _hoisted_16$14, toDisplayString(reagent.catalogNumber || "-"), 1)) : createCommentVNode("", true),
10641
10602
  __props.columns.includes("lot") ? (openBlock(), createElementBlock("td", _hoisted_17$14, toDisplayString(reagent.lotNumber || "-"), 1)) : createCommentVNode("", true),
10642
- __props.columns.includes("expiry") ? (openBlock(), createElementBlock("td", _hoisted_18$14, [unref(isReagentExpired)(reagent) ? (openBlock(), createElementBlock("span", _hoisted_19$13, toDisplayString(unref(formatReagentExpiryDate)(reagent.expiryDate)), 1)) : (openBlock(), createElementBlock("span", _hoisted_20$12, toDisplayString(unref(formatReagentExpiryDate)(reagent.expiryDate)), 1)), unref(isReagentExpired)(reagent) ? (openBlock(), createElementBlock("span", _hoisted_21$10, " Expired ")) : unref(isReagentExpiringSoon)(reagent) ? (openBlock(), createElementBlock("span", _hoisted_22$10, [_cache[6] || (_cache[6] = createElementVNode("svg", {
10603
+ __props.columns.includes("expiry") ? (openBlock(), createElementBlock("td", _hoisted_18$14, [unref(isReagentExpired)(reagent) ? (openBlock(), createElementBlock("span", _hoisted_19$14, toDisplayString(unref(formatReagentExpiryDate)(reagent.expiryDate)), 1)) : (openBlock(), createElementBlock("span", _hoisted_20$13, toDisplayString(unref(formatReagentExpiryDate)(reagent.expiryDate)), 1)), unref(isReagentExpired)(reagent) ? (openBlock(), createElementBlock("span", _hoisted_21$10, " Expired ")) : unref(isReagentExpiringSoon)(reagent) ? (openBlock(), createElementBlock("span", _hoisted_22$10, [_cache[6] || (_cache[6] = createElementVNode("svg", {
10643
10604
  class: "mint-reagent-list__badge-icon",
10644
10605
  fill: "none",
10645
10606
  stroke: "currentColor",
@@ -10832,12 +10793,12 @@ var _hoisted_17$13 = {
10832
10793
  class: "sg-field__order"
10833
10794
  };
10834
10795
  var _hoisted_18$13 = { class: "sg-field__layer" };
10835
- var _hoisted_19$12 = [
10796
+ var _hoisted_19$13 = [
10836
10797
  "disabled",
10837
10798
  "aria-label",
10838
10799
  "onClick"
10839
10800
  ];
10840
- var _hoisted_20$11 = [
10801
+ var _hoisted_20$12 = [
10841
10802
  "disabled",
10842
10803
  "aria-label",
10843
10804
  "onClick"
@@ -11256,7 +11217,7 @@ var SmartGroupFieldRecipe_default = /* @__PURE__ */ defineComponent({
11256
11217
  }, [createVNode(Icon, {
11257
11218
  d: ICON.chevUp,
11258
11219
  size: 12
11259
- }, null, 8, ["d"])], 8, _hoisted_19$12),
11220
+ }, null, 8, ["d"])], 8, _hoisted_19$13),
11260
11221
  createElementVNode("button", {
11261
11222
  type: "button",
11262
11223
  class: "sg-field__order-btn",
@@ -11267,7 +11228,7 @@ var SmartGroupFieldRecipe_default = /* @__PURE__ */ defineComponent({
11267
11228
  }, [createVNode(Icon, {
11268
11229
  d: ICON.chev,
11269
11230
  size: 12
11270
- }, null, 8, ["d"])], 8, _hoisted_20$11)
11231
+ }, null, 8, ["d"])], 8, _hoisted_20$12)
11271
11232
  ])) : createCommentVNode("", true),
11272
11233
  createElementVNode("div", _hoisted_21$9, toDisplayString(field.vals), 1)
11273
11234
  ], 2);
@@ -11445,11 +11406,11 @@ var _hoisted_15$15 = {
11445
11406
  var _hoisted_16$12 = ["onClick"];
11446
11407
  var _hoisted_17$12 = ["checked"];
11447
11408
  var _hoisted_18$12 = { class: "mg2-row__name" };
11448
- var _hoisted_19$11 = {
11409
+ var _hoisted_19$12 = {
11449
11410
  key: 0,
11450
11411
  class: "mg2-row__tag"
11451
11412
  };
11452
- var _hoisted_20$10 = {
11413
+ var _hoisted_20$11 = {
11453
11414
  key: 1,
11454
11415
  class: "mg2-row__tag mg2-row__tag--none"
11455
11416
  };
@@ -11777,14 +11738,14 @@ var SmartGroupManual_default = /* @__PURE__ */ defineComponent({
11777
11738
  readonly: ""
11778
11739
  }, null, 8, _hoisted_17$12),
11779
11740
  createElementVNode("span", _hoisted_18$12, toDisplayString(match.sample.name), 1),
11780
- match.sample.group ? (openBlock(), createElementBlock("span", _hoisted_19$11, [
11741
+ match.sample.group ? (openBlock(), createElementBlock("span", _hoisted_19$12, [
11781
11742
  createElementVNode("span", {
11782
11743
  class: "sg-dot",
11783
11744
  style: normalizeStyle({ background: match.sample.color ?? void 0 })
11784
11745
  }, null, 4),
11785
11746
  createTextVNode(toDisplayString(match.sample.group), 1),
11786
11747
  match.sample.sub ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(" · " + toDisplayString(match.sample.sub), 1)], 64)) : createCommentVNode("", true)
11787
- ])) : (openBlock(), createElementBlock("span", _hoisted_20$10, "unassigned"))
11748
+ ])) : (openBlock(), createElementBlock("span", _hoisted_20$11, "unassigned"))
11788
11749
  ], 10, _hoisted_16$12);
11789
11750
  }), 128))])
11790
11751
  ]), createElementVNode("div", _hoisted_21$8, [
@@ -12995,8 +12956,8 @@ var _hoisted_17$11 = {
12995
12956
  class: "mint-sample-selector__ungrouped-list"
12996
12957
  };
12997
12958
  var _hoisted_18$11 = { class: "mint-sample-selector__new-group" };
12998
- var _hoisted_19$10 = ["value"];
12999
- var _hoisted_20$9 = {
12959
+ var _hoisted_19$11 = ["value"];
12960
+ var _hoisted_20$10 = {
13000
12961
  key: 6,
13001
12962
  class: "mint-sample-selector__flat"
13002
12963
  };
@@ -13358,9 +13319,9 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
13358
13319
  class: "mint-sample-selector__color-input",
13359
13320
  value: colorPickerSeed.value,
13360
13321
  onChange: handleColorChange
13361
- }, null, 40, _hoisted_19$10)
13322
+ }, null, 40, _hoisted_19$11)
13362
13323
  ])) : createCommentVNode("", true),
13363
- !isPlaceholderState.value && !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_20$9, [createElementVNode("div", _hoisted_21$7, [_cache[17] || (_cache[17] = createElementVNode("svg", {
13324
+ !isPlaceholderState.value && !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_20$10, [createElementVNode("div", _hoisted_21$7, [_cache[17] || (_cache[17] = createElementVNode("svg", {
13364
13325
  class: "mint-sample-selector__search-icon",
13365
13326
  fill: "none",
13366
13327
  stroke: "currentColor",
@@ -13659,8 +13620,8 @@ var _hoisted_15$13 = [
13659
13620
  var _hoisted_16$10 = ["onPointerdown"];
13660
13621
  var _hoisted_17$10 = { class: "mint-schedule__event-title" };
13661
13622
  var _hoisted_18$10 = { class: "mint-schedule__event-time" };
13662
- var _hoisted_19$9 = ["onPointerdown"];
13663
- var _hoisted_20$8 = {
13623
+ var _hoisted_19$10 = ["onPointerdown"];
13624
+ var _hoisted_20$9 = {
13664
13625
  key: 0,
13665
13626
  class: "mint-schedule__blocked-label"
13666
13627
  };
@@ -14015,7 +13976,7 @@ var ScheduleCalendar_default = /* @__PURE__ */ defineComponent({
14015
13976
  key: 1,
14016
13977
  class: "mint-schedule__event-resize-handle mint-schedule__event-resize-handle--bottom",
14017
13978
  onPointerdown: ($event) => onResizePointerDown(event, "bottom", dayIdx, $event)
14018
- }, null, 40, _hoisted_19$9)) : createCommentVNode("", true)
13979
+ }, null, 40, _hoisted_19$10)) : createCommentVNode("", true)
14019
13980
  ])], 46, _hoisted_15$13);
14020
13981
  }), 128)),
14021
13982
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getBlockedForDay)(day), (blocked, bIdx) => {
@@ -14023,7 +13984,7 @@ var ScheduleCalendar_default = /* @__PURE__ */ defineComponent({
14023
13984
  key: `b-${bIdx}`,
14024
13985
  class: "mint-schedule__blocked",
14025
13986
  style: normalizeStyle(unref(getBlockedStyle)(blocked))
14026
- }, [blocked.label ? (openBlock(), createElementBlock("span", _hoisted_20$8, toDisplayString(blocked.label), 1)) : createCommentVNode("", true)], 4);
13987
+ }, [blocked.label ? (openBlock(), createElementBlock("span", _hoisted_20$9, toDisplayString(blocked.label), 1)) : createCommentVNode("", true)], 4);
14027
13988
  }), 128)),
14028
13989
  __props.showNowIndicator && unref(isToday)(day) && unref(getNowIndicatorStyle)() ? (openBlock(), createElementBlock("div", {
14029
13990
  key: 0,
@@ -15331,8 +15292,8 @@ var _hoisted_18$9 = {
15331
15292
  class: "mint-settings-modal__swatches",
15332
15293
  "aria-hidden": "true"
15333
15294
  };
15334
- var _hoisted_19$8 = { class: "mint-settings-modal__palette-name" };
15335
- var _hoisted_20$7 = { class: "mint-settings-modal__setting mint-settings-modal__setting--inline" };
15295
+ var _hoisted_19$9 = { class: "mint-settings-modal__palette-name" };
15296
+ var _hoisted_20$8 = { class: "mint-settings-modal__setting mint-settings-modal__setting--inline" };
15336
15297
  var _hoisted_21$5 = {
15337
15298
  class: "mint-settings-modal__status",
15338
15299
  role: "status"
@@ -15786,7 +15747,7 @@ var SettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
15786
15747
  style: normalizeStyle({ backgroundColor: color })
15787
15748
  }, null, 4);
15788
15749
  }), 128))]),
15789
- createElementVNode("span", _hoisted_19$8, toDisplayString(palette.name), 1),
15750
+ createElementVNode("span", _hoisted_19$9, toDisplayString(palette.name), 1),
15790
15751
  _cache[9] || (_cache[9] = createElementVNode("svg", {
15791
15752
  class: "mint-settings-modal__palette-check",
15792
15753
  viewBox: "0 0 16 16",
@@ -15799,7 +15760,7 @@ var SettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
15799
15760
  }, [createElementVNode("path", { d: "M3.5 8.5l3 3 6-7" })], -1))
15800
15761
  ], 10, _hoisted_17$9);
15801
15762
  }), 128))])]),
15802
- createElementVNode("div", _hoisted_20$7, [
15763
+ createElementVNode("div", _hoisted_20$8, [
15803
15764
  _cache[12] || (_cache[12] = createElementVNode("div", { class: "mint-settings-modal__setting-text" }, [createElementVNode("span", { class: "mint-settings-modal__setting-label" }, "Table density"), createElementVNode("span", { class: "mint-settings-modal__setting-hint" }, "Adjusts row height in data tables")], -1)),
15804
15765
  createVNode(SegmentedControl_default, {
15805
15766
  "model-value": unref(settings).tableDensity,
@@ -16601,8 +16562,8 @@ var _hoisted_16$8 = [
16601
16562
  ];
16602
16563
  var _hoisted_17$8 = { class: "mint-group-assigner__pill-name" };
16603
16564
  var _hoisted_18$8 = { class: "mint-group-assigner__pill-count" };
16604
- var _hoisted_19$7 = ["onClick"];
16605
- var _hoisted_20$6 = {
16565
+ var _hoisted_19$8 = ["onClick"];
16566
+ var _hoisted_20$7 = {
16606
16567
  key: 0,
16607
16568
  class: "mint-group-assigner__zone-empty"
16608
16569
  };
@@ -16815,9 +16776,9 @@ var GroupAssigner_default = /* @__PURE__ */ defineComponent({
16815
16776
  fill: "none",
16816
16777
  stroke: "currentColor",
16817
16778
  "stroke-width": "2"
16818
- }, [createElementVNode("path", { d: "M6 18L18 6M6 6l12 12" })], -1)])], 8, _hoisted_19$7)
16779
+ }, [createElementVNode("path", { d: "M6 18L18 6M6 6l12 12" })], -1)])], 8, _hoisted_19$8)
16819
16780
  ], 40, _hoisted_16$8);
16820
- }), 128)), unref(zone2Groups).length === 0 ? (openBlock(), createElementBlock("div", _hoisted_20$6, " Drag groups here ")) : createCommentVNode("", true)])], 38)]),
16781
+ }), 128)), unref(zone2Groups).length === 0 ? (openBlock(), createElementBlock("div", _hoisted_20$7, " Drag groups here ")) : createCommentVNode("", true)])], 38)]),
16821
16782
  unref(unassignedGroups).length > 0 ? (openBlock(), createElementBlock("div", _hoisted_21$4, [createElementVNode("div", _hoisted_22$4, [_cache[6] || (_cache[6] = createElementVNode("span", { class: "mint-group-assigner__unassigned-title" }, "Available Groups", -1)), __props.group1.length > 0 || __props.group2.length > 0 ? (openBlock(), createElementBlock("button", {
16822
16783
  key: 0,
16823
16784
  type: "button",
@@ -16956,8 +16917,8 @@ var _hoisted_15$10 = ["value"];
16956
16917
  var _hoisted_16$7 = { class: "mint-reagent-editor__generator" };
16957
16918
  var _hoisted_17$7 = { class: "mint-reagent-editor__generator-inputs" };
16958
16919
  var _hoisted_18$7 = { class: "mint-reagent-editor__field mint-reagent-editor__field--flex" };
16959
- var _hoisted_19$6 = { class: "mint-reagent-editor__field mint-reagent-editor__field--flex" };
16960
- var _hoisted_20$5 = { class: "mint-reagent-editor__presets" };
16920
+ var _hoisted_19$7 = { class: "mint-reagent-editor__field mint-reagent-editor__field--flex" };
16921
+ var _hoisted_20$6 = { class: "mint-reagent-editor__presets" };
16961
16922
  var _hoisted_21$3 = ["onClick"];
16962
16923
  var _hoisted_22$3 = ["disabled"];
16963
16924
  var _hoisted_23$2 = {
@@ -17205,14 +17166,14 @@ var ReagentEditor_default = /* @__PURE__ */ defineComponent({
17205
17166
  min: 0,
17206
17167
  step: 10,
17207
17168
  size: "sm"
17208
- }, null, 8, ["modelValue"])]), createElementVNode("div", _hoisted_19$6, [_cache[10] || (_cache[10] = createElementVNode("label", { class: "mint-reagent-editor__label" }, "Doses", -1)), createVNode(NumberInput_default, {
17169
+ }, null, 8, ["modelValue"])]), createElementVNode("div", _hoisted_19$7, [_cache[10] || (_cache[10] = createElementVNode("label", { class: "mint-reagent-editor__label" }, "Doses", -1)), createVNode(NumberInput_default, {
17209
17170
  modelValue: generatorCount.value,
17210
17171
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => generatorCount.value = $event),
17211
17172
  min: 2,
17212
17173
  max: __props.maxLevels,
17213
17174
  step: 1,
17214
17175
  size: "sm"
17215
- }, null, 8, ["modelValue", "max"])])]), createElementVNode("div", _hoisted_20$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.presets, (preset) => {
17176
+ }, null, 8, ["modelValue", "max"])])]), createElementVNode("div", _hoisted_20$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.presets, (preset) => {
17216
17177
  return openBlock(), createElementBlock("button", {
17217
17178
  key: preset.label,
17218
17179
  type: "button",
@@ -18805,11 +18766,11 @@ var _hoisted_18$6 = {
18805
18766
  key: 2,
18806
18767
  class: "mint-batch-progress__state"
18807
18768
  };
18808
- var _hoisted_19$5 = {
18769
+ var _hoisted_19$6 = {
18809
18770
  key: 3,
18810
18771
  class: "mint-batch-progress__state"
18811
18772
  };
18812
- var _hoisted_20$4 = {
18773
+ var _hoisted_20$5 = {
18813
18774
  key: 4,
18814
18775
  class: "mint-batch-progress__state"
18815
18776
  };
@@ -18987,11 +18948,11 @@ var BatchProgressList_default = /* @__PURE__ */ defineComponent({
18987
18948
  state: "error",
18988
18949
  size: "sm",
18989
18950
  title: __props.error
18990
- }, null, 8, ["title"])])])) : __props.loading ? (openBlock(), createElementBlock("div", _hoisted_19$5, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(DataStateInternal_default, {
18951
+ }, null, 8, ["title"])])])) : __props.loading ? (openBlock(), createElementBlock("div", _hoisted_19$6, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(DataStateInternal_default, {
18991
18952
  state: "loading",
18992
18953
  size: "sm",
18993
18954
  "loading-label": "Loading batch"
18994
- })])])) : __props.items.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_20$4, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
18955
+ })])])) : __props.items.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_20$5, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
18995
18956
  state: "empty",
18996
18957
  size: "sm",
18997
18958
  title: __props.emptyMessage
@@ -19101,8 +19062,8 @@ var _hoisted_16$5 = {
19101
19062
  };
19102
19063
  var _hoisted_17$5 = { class: "mint-summary__pill-key" };
19103
19064
  var _hoisted_18$5 = { class: "mint-summary__pill-value" };
19104
- var _hoisted_19$4 = { class: "mint-summary__table-header" };
19105
- var _hoisted_20$3 = { class: "mint-summary__section-label" };
19065
+ var _hoisted_19$5 = { class: "mint-summary__table-header" };
19066
+ var _hoisted_20$4 = { class: "mint-summary__section-label" };
19106
19067
  var _hoisted_21$1 = { class: "mint-summary__section-count" };
19107
19068
  var _hoisted_22$1 = {
19108
19069
  key: 3,
@@ -19300,7 +19261,7 @@ var ExperimentDataViewer_default = /* @__PURE__ */ defineComponent({
19300
19261
  "searchable"
19301
19262
  ])) : createCommentVNode("", true)
19302
19263
  ]);
19303
- }), 128)) : section.type === "table" && section.rows ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("div", _hoisted_19$4, [createElementVNode("span", _hoisted_20$3, toDisplayString(section.label), 1), createElementVNode("span", _hoisted_21$1, toDisplayString(section.row_count) + " rows", 1)]), createVNode(DataFrame_default, {
19264
+ }), 128)) : section.type === "table" && section.rows ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("div", _hoisted_19$5, [createElementVNode("span", _hoisted_20$4, toDisplayString(section.label), 1), createElementVNode("span", _hoisted_21$1, toDisplayString(section.row_count) + " rows", 1)]), createVNode(DataFrame_default, {
19304
19265
  data: section.rows,
19305
19266
  columns: columnsForSection(section.columns || []),
19306
19267
  searchable: (section.rows?.length || 0) > 10,
@@ -19583,8 +19544,8 @@ var _hoisted_18$4 = {
19583
19544
  key: 1,
19584
19545
  class: "mint-resource-card__footer"
19585
19546
  };
19586
- var _hoisted_19$3 = { class: "mint-resource-card__tags" };
19587
- var _hoisted_20$2 = { class: "mint-resource-card__action" };
19547
+ var _hoisted_19$4 = { class: "mint-resource-card__tags" };
19548
+ var _hoisted_20$3 = { class: "mint-resource-card__action" };
19588
19549
  //#endregion
19589
19550
  //#region src/components/ResourceCard.vue
19590
19551
  var ResourceCard_default = /* @__PURE__ */ defineComponent({
@@ -19678,7 +19639,7 @@ var ResourceCard_default = /* @__PURE__ */ defineComponent({
19678
19639
  class: "mint-resource-card__spec"
19679
19640
  }, [createElementVNode("span", _hoisted_16$4, toDisplayString(spec.label), 1), createElementVNode("span", _hoisted_17$4, toDisplayString(spec.value), 1)]);
19680
19641
  }), 128))])])) : createCommentVNode("", true),
19681
- __props.tags.length > 0 || __props.showBookAction || _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_18$4, [createElementVNode("div", _hoisted_19$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tags, (tag) => {
19642
+ __props.tags.length > 0 || __props.showBookAction || _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_18$4, [createElementVNode("div", _hoisted_19$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tags, (tag) => {
19682
19643
  return openBlock(), createBlock(BasePill_default, {
19683
19644
  key: tag,
19684
19645
  size: "sm"
@@ -19686,7 +19647,7 @@ var ResourceCard_default = /* @__PURE__ */ defineComponent({
19686
19647
  default: withCtx(() => [createTextVNode(toDisplayString(tag), 1)]),
19687
19648
  _: 2
19688
19649
  }, 1024);
19689
- }), 128))]), createElementVNode("div", _hoisted_20$2, [renderSlot(_ctx.$slots, "action", {}, () => [__props.showBookAction ? (openBlock(), createElementBlock("button", {
19650
+ }), 128))]), createElementVNode("div", _hoisted_20$3, [renderSlot(_ctx.$slots, "action", {}, () => [__props.showBookAction ? (openBlock(), createElementBlock("button", {
19690
19651
  key: 0,
19691
19652
  type: "button",
19692
19653
  class: "mint-resource-card__book-btn",
@@ -20656,8 +20617,8 @@ var _hoisted_18$3 = {
20656
20617
  class: "mint-experiment-popover__card mint-experiment-popover__card--error",
20657
20618
  role: "alert"
20658
20619
  };
20659
- var _hoisted_19$2 = { class: "mint-experiment-popover__card-info" };
20660
- var _hoisted_20$1 = { class: "mint-experiment-popover__card-message" };
20620
+ var _hoisted_19$3 = { class: "mint-experiment-popover__card-info" };
20621
+ var _hoisted_20$2 = { class: "mint-experiment-popover__card-message" };
20661
20622
  var _hoisted_21 = { class: "mint-experiment-popover__card-actions" };
20662
20623
  var _hoisted_22 = {
20663
20624
  key: 2,
@@ -20864,7 +20825,7 @@ var ExperimentPopover_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
20864
20825
  "stroke-linejoin": "round",
20865
20826
  "stroke-width": "1.75",
20866
20827
  d: "M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z"
20867
- })])], -1)), createElementVNode("div", _hoisted_19$2, [_cache[7] || (_cache[7] = createElementVNode("div", { class: "mint-experiment-popover__card-name" }, "Experiment unavailable", -1)), createElementVNode("div", _hoisted_20$1, toDisplayString(__props.error), 1)])]), createElementVNode("div", _hoisted_21, [createElementVNode("button", {
20828
+ })])], -1)), createElementVNode("div", _hoisted_19$3, [_cache[7] || (_cache[7] = createElementVNode("div", { class: "mint-experiment-popover__card-name" }, "Experiment unavailable", -1)), createElementVNode("div", _hoisted_20$2, toDisplayString(__props.error), 1)])]), createElementVNode("div", _hoisted_21, [createElementVNode("button", {
20868
20829
  type: "button",
20869
20830
  class: "mint-experiment-popover__change-btn",
20870
20831
  onClick: handleSelect
@@ -20994,12 +20955,12 @@ var _hoisted_17$2 = {
20994
20955
  d: "M3.5 8.5l3 3 6-7"
20995
20956
  };
20996
20957
  var _hoisted_18$2 = { key: 1 };
20997
- var _hoisted_19$1 = {
20958
+ var _hoisted_19$2 = {
20998
20959
  key: 0,
20999
20960
  class: "mint-fit-panel__check-shape",
21000
20961
  d: "M8 1.5l7 12.5H1z"
21001
20962
  };
21002
- var _hoisted_20 = {
20963
+ var _hoisted_20$1 = {
21003
20964
  key: 1,
21004
20965
  class: "mint-fit-panel__check-shape",
21005
20966
  cx: "8",
@@ -21119,7 +21080,7 @@ var FitPanel_default = /* @__PURE__ */ defineComponent({
21119
21080
  return openBlock(), createElementBlock("span", {
21120
21081
  key: idx,
21121
21082
  class: normalizeClass(["mint-fit-panel__check", `mint-fit-panel__check--${item.variant ?? "default"}`])
21122
- }, [(openBlock(), createElementBlock("svg", _hoisted_16$2, [item.variant === "success" ? (openBlock(), createElementBlock("path", _hoisted_17$2)) : (openBlock(), createElementBlock("g", _hoisted_18$2, [item.variant === "warning" ? (openBlock(), createElementBlock("path", _hoisted_19$1)) : (openBlock(), createElementBlock("circle", _hoisted_20)), _cache[3] || (_cache[3] = createElementVNode("path", {
21083
+ }, [(openBlock(), createElementBlock("svg", _hoisted_16$2, [item.variant === "success" ? (openBlock(), createElementBlock("path", _hoisted_17$2)) : (openBlock(), createElementBlock("g", _hoisted_18$2, [item.variant === "warning" ? (openBlock(), createElementBlock("path", _hoisted_19$2)) : (openBlock(), createElementBlock("circle", _hoisted_20$1)), _cache[3] || (_cache[3] = createElementVNode("path", {
21123
21084
  class: "mint-fit-panel__check-mark",
21124
21085
  d: "M8 6v3M8 11.5v.01"
21125
21086
  }, null, -1))]))])), createTextVNode(" " + toDisplayString(item.label) + " " + toDisplayString(item.value), 1)], 2);
@@ -21178,19 +21139,24 @@ var _hoisted_1$2 = [
21178
21139
  ];
21179
21140
  var _hoisted_2$2 = {
21180
21141
  key: 0,
21181
- class: "mint-picker__skeleton"
21142
+ class: "mint-picker__truncated",
21143
+ role: "status"
21182
21144
  };
21183
21145
  var _hoisted_3$2 = {
21184
21146
  key: 1,
21185
- role: "alert",
21186
- class: "mint-picker__empty"
21147
+ class: "mint-picker__skeleton"
21187
21148
  };
21188
21149
  var _hoisted_4$2 = {
21189
21150
  key: 2,
21151
+ role: "alert",
21152
+ class: "mint-picker__empty"
21153
+ };
21154
+ var _hoisted_5$2 = {
21155
+ key: 3,
21190
21156
  class: "mint-picker__empty",
21191
21157
  role: "status"
21192
21158
  };
21193
- var _hoisted_5$2 = [
21159
+ var _hoisted_6$2 = [
21194
21160
  "role",
21195
21161
  "data-path",
21196
21162
  "aria-level",
@@ -21203,8 +21169,8 @@ var _hoisted_5$2 = [
21203
21169
  "onDblclick",
21204
21170
  "onKeydown"
21205
21171
  ];
21206
- var _hoisted_6$2 = { class: "mint-picker__cell mint-picker__cell--check" };
21207
- var _hoisted_7$2 = {
21172
+ var _hoisted_7$2 = { class: "mint-picker__cell mint-picker__cell--check" };
21173
+ var _hoisted_8$2 = {
21208
21174
  key: 0,
21209
21175
  class: "mint-picker__lock",
21210
21176
  viewBox: "0 0 24 24",
@@ -21213,13 +21179,13 @@ var _hoisted_7$2 = {
21213
21179
  "stroke-width": "1.8",
21214
21180
  "aria-hidden": "true"
21215
21181
  };
21216
- var _hoisted_8$2 = ["d"];
21217
- var _hoisted_9$2 = { class: "mint-picker__cell mint-picker__cell--name" };
21218
- var _hoisted_10$2 = {
21182
+ var _hoisted_9$2 = ["d"];
21183
+ var _hoisted_10$2 = { class: "mint-picker__cell mint-picker__cell--name" };
21184
+ var _hoisted_11$2 = {
21219
21185
  key: 1,
21220
21186
  class: "mint-picker__disclosure"
21221
21187
  };
21222
- var _hoisted_11$2 = {
21188
+ var _hoisted_12$2 = {
21223
21189
  class: "mint-picker__node-icon",
21224
21190
  viewBox: "0 0 24 24",
21225
21191
  fill: "none",
@@ -21227,19 +21193,19 @@ var _hoisted_11$2 = {
21227
21193
  "stroke-width": "1.7",
21228
21194
  "aria-hidden": "true"
21229
21195
  };
21230
- var _hoisted_12$2 = ["d"];
21231
- var _hoisted_13$2 = { class: "mint-picker__name" };
21232
- var _hoisted_14$2 = { key: 0 };
21233
- var _hoisted_15$2 = {
21196
+ var _hoisted_13$2 = ["d"];
21197
+ var _hoisted_14$2 = { class: "mint-picker__name" };
21198
+ var _hoisted_15$2 = { key: 0 };
21199
+ var _hoisted_16$1 = {
21234
21200
  key: 1,
21235
21201
  class: "mint-picker__reason"
21236
21202
  };
21237
- var _hoisted_16$1 = {
21203
+ var _hoisted_17$1 = {
21238
21204
  key: 2,
21239
21205
  class: "mint-picker__parent-name"
21240
21206
  };
21241
- var _hoisted_17$1 = { class: "mint-picker__cell mint-picker__cell--time" };
21242
- var _hoisted_18$1 = {
21207
+ var _hoisted_18$1 = { class: "mint-picker__cell mint-picker__cell--time" };
21208
+ var _hoisted_19$1 = {
21243
21209
  key: 0,
21244
21210
  class: "mint-picker__branch-error",
21245
21211
  role: "alert"
@@ -21255,6 +21221,7 @@ var FilePickerListInternal_default = /* @__PURE__ */ defineComponent({
21255
21221
  loading: { type: Boolean },
21256
21222
  error: {},
21257
21223
  query: {},
21224
+ truncated: { type: Boolean },
21258
21225
  mode: {},
21259
21226
  selected: { type: Function },
21260
21227
  selectable: { type: Function },
@@ -21382,106 +21349,110 @@ var FilePickerListInternal_default = /* @__PURE__ */ defineComponent({
21382
21349
  "aria-label": "Folders and files",
21383
21350
  "aria-multiselectable": multi.value,
21384
21351
  "aria-busy": __props.loading
21385
- }, [_cache[6] || (_cache[6] = createElementVNode("div", {
21386
- class: "mint-picker__list-head",
21387
- "aria-hidden": "true"
21388
21352
  }, [
21389
- createElementVNode("span"),
21390
- createElementVNode("span", null, "Name"),
21391
- createElementVNode("span", null, "Size"),
21392
- createElementVNode("span", null, "Modified")
21393
- ], -1)), __props.loading ? (openBlock(), createElementBlock("div", _hoisted_2$2, [(openBlock(), createElementBlock(Fragment, null, renderList(6, (n) => {
21394
- return createVNode(Skeleton_default, {
21395
- key: n,
21396
- width: "100%",
21397
- height: "1.25rem"
21398
- });
21399
- }), 64))])) : __props.error ? (openBlock(), createElementBlock("div", _hoisted_3$2, [createElementVNode("span", null, toDisplayString(__props.error), 1), createVNode(BaseButton_default, {
21400
- variant: "secondary",
21401
- size: "sm",
21402
- onClick: _cache[0] || (_cache[0] = ($event) => emit("retry"))
21403
- }, {
21404
- default: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode("Try again", -1)])]),
21405
- _: 1
21406
- })])) : !__props.rows.length ? (openBlock(), createElementBlock("div", _hoisted_4$2, [createElementVNode("strong", null, toDisplayString(__props.query ? "No matching folders or files" : __props.emptyTitle || "No readable files"), 1), createElementVNode("span", null, toDisplayString(__props.query ? "Try a different search or include subfolders." : "Choose another location."), 1)])) : (openBlock(true), createElementBlock(Fragment, { key: 3 }, renderList(__props.rows, (row) => {
21407
- return openBlock(), createElementBlock(Fragment, { key: row.node.path }, [createElementVNode("div", {
21408
- role: tree.value ? "treeitem" : "option",
21409
- "data-path": row.node.path,
21410
- "aria-level": tree.value ? row.depth + 1 : void 0,
21411
- "aria-selected": __props.selected(row.node),
21412
- "aria-disabled": !!reason(row.node),
21413
- "aria-expanded": tree.value && row.node.kind === "folder" && !reason(row.node) ? row.expanded : void 0,
21414
- tabindex: !reason(row.node) && row.node.path === focusablePath.value ? 0 : -1,
21415
- class: normalizeClass(["mint-picker__row", {
21416
- "mint-picker__row--selected": __props.selected(row.node),
21417
- "mint-picker__row--unreadable": !!reason(row.node)
21418
- }]),
21419
- style: normalizeStyle({ "--picker-depth": row.depth }),
21420
- title: reason(row.node) || row.node.name,
21421
- onClick: ($event) => !reason(row.node) && emit("select", row.node, $event),
21422
- onDblclick: ($event) => !reason(row.node) && emit("enter", row.node),
21423
- onKeydown: ($event) => keydown($event, row)
21353
+ _cache[6] || (_cache[6] = createElementVNode("div", {
21354
+ class: "mint-picker__list-head",
21355
+ "aria-hidden": "true"
21424
21356
  }, [
21425
- createElementVNode("span", _hoisted_6$2, [locked(row.node) ? (openBlock(), createElementBlock("svg", _hoisted_7$2, [createElementVNode("path", { d: unref(FILE_PICKER_ICONS).lock }, null, 8, _hoisted_8$2)])) : multi.value && __props.selectable(row.node) ? (openBlock(), createBlock(BaseCheckbox_default, {
21426
- key: 1,
21427
- size: "sm",
21428
- inert: "",
21429
- "aria-hidden": "true",
21430
- "model-value": __props.selected(row.node),
21431
- indeterminate: partial(row.node)
21432
- }, null, 8, ["model-value", "indeterminate"])) : createCommentVNode("", true)]),
21433
- createElementVNode("span", _hoisted_9$2, [
21434
- tree.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [row.node.kind === "folder" && row.node.hasChildren !== false && !reason(row.node) ? (openBlock(), createBlock(IconButton_default, {
21435
- key: 0,
21436
- size: "sm",
21437
- variant: "ghost",
21438
- class: "mint-picker__disclosure",
21439
- label: `${row.expanded ? "Collapse" : "Expand"} ${row.node.name}`,
21440
- tabindex: "-1",
21441
- loading: row.loading,
21442
- onClick: withModifiers(($event) => emit("expand", row.node), ["stop"]),
21443
- onDblclick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"]))
21444
- }, {
21445
- default: withCtx(() => [(openBlock(), createElementBlock("svg", {
21446
- viewBox: "0 0 16 16",
21447
- fill: "currentColor",
21448
- "aria-hidden": "true",
21449
- class: normalizeClass({ "mint-picker__chevron--open": row.expanded })
21450
- }, [..._cache[3] || (_cache[3] = [createElementVNode("path", { d: "m6 3 5 5-5 5z" }, null, -1)])], 2))]),
21451
- _: 2
21452
- }, 1032, [
21453
- "label",
21454
- "loading",
21455
- "onClick"
21456
- ])) : (openBlock(), createElementBlock("span", _hoisted_10$2))], 64)) : createCommentVNode("", true),
21457
- (openBlock(), createElementBlock("svg", _hoisted_11$2, [createElementVNode("path", { d: row.node.kind === "folder" ? unref(FILE_PICKER_ICONS).folder : unref(FILE_PICKER_ICONS).file }, null, 8, _hoisted_12$2)])),
21458
- createElementVNode("span", _hoisted_13$2, [
21459
- createTextVNode(toDisplayString(parts(row.node.name)[0]), 1),
21460
- parts(row.node.name)[1] ? (openBlock(), createElementBlock("mark", _hoisted_14$2, toDisplayString(parts(row.node.name)[1]), 1)) : createCommentVNode("", true),
21461
- createTextVNode(toDisplayString(parts(row.node.name)[2]), 1)
21462
- ]),
21463
- reason(row.node) ? (openBlock(), createElementBlock("span", _hoisted_15$2, toDisplayString(shortReason(row.node)), 1)) : __props.query && row.node.parentName ? (openBlock(), createElementBlock("span", _hoisted_16$1, toDisplayString(row.node.parentName), 1)) : createCommentVNode("", true),
21464
- __props.query && __props.mode === "folder" && row.node.kind === "file" && row.node.parentPath && !reason(row.node) ? (openBlock(), createBlock(BaseButton_default, {
21465
- key: 3,
21466
- variant: "ghost",
21467
- size: "sm",
21468
- onClick: withModifiers(($event) => emit("parent", row.node), ["stop"])
21469
- }, {
21470
- default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode("Select its folder", -1)])]),
21471
- _: 1
21472
- }, 8, ["onClick"])) : createCommentVNode("", true)
21473
- ]),
21474
- createElementVNode("span", { class: normalizeClass(["mint-picker__cell mint-picker__cell--size", { "mint-picker__partial": partial(row.node) }]) }, toDisplayString(size(row.node)), 3),
21475
- createElementVNode("span", _hoisted_17$1, toDisplayString(unref(formatModified)(row.node.modifiedAt)), 1)
21476
- ], 46, _hoisted_5$2), row.error ? (openBlock(), createElementBlock("div", _hoisted_18$1, [createTextVNode(toDisplayString(row.error), 1), createVNode(BaseButton_default, {
21477
- variant: "ghost",
21357
+ createElementVNode("span"),
21358
+ createElementVNode("span", null, "Name"),
21359
+ createElementVNode("span", null, "Size"),
21360
+ createElementVNode("span", null, "Modified")
21361
+ ], -1)),
21362
+ __props.truncated && !__props.loading && !__props.error && __props.rows.length ? (openBlock(), createElementBlock("p", _hoisted_2$2, " Showing the first " + toDisplayString(__props.rows.length) + " matches. Search a smaller folder or use a more specific search to see the rest. ", 1)) : createCommentVNode("", true),
21363
+ __props.loading ? (openBlock(), createElementBlock("div", _hoisted_3$2, [(openBlock(), createElementBlock(Fragment, null, renderList(6, (n) => {
21364
+ return createVNode(Skeleton_default, {
21365
+ key: n,
21366
+ width: "100%",
21367
+ height: "1.25rem"
21368
+ });
21369
+ }), 64))])) : __props.error ? (openBlock(), createElementBlock("div", _hoisted_4$2, [createElementVNode("span", null, toDisplayString(__props.error), 1), createVNode(BaseButton_default, {
21370
+ variant: "secondary",
21478
21371
  size: "sm",
21479
- onClick: ($event) => emit("expand", row.node)
21372
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("retry"))
21480
21373
  }, {
21481
- default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("Close branch", -1)])]),
21374
+ default: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode("Try again", -1)])]),
21482
21375
  _: 1
21483
- }, 8, ["onClick"])])) : createCommentVNode("", true)], 64);
21484
- }), 128))], 8, _hoisted_1$2);
21376
+ })])) : !__props.rows.length ? (openBlock(), createElementBlock("div", _hoisted_5$2, [createElementVNode("strong", null, toDisplayString(__props.truncated ? "Search stopped before finding a match" : __props.query ? "No matching folders or files" : __props.emptyTitle || "No readable files"), 1), createElementVNode("span", null, toDisplayString(__props.truncated ? "Search a smaller folder or use a more specific search." : __props.query ? "Try a different search or include subfolders." : "Choose another location."), 1)])) : (openBlock(true), createElementBlock(Fragment, { key: 4 }, renderList(__props.rows, (row) => {
21377
+ return openBlock(), createElementBlock(Fragment, { key: row.node.path }, [createElementVNode("div", {
21378
+ role: tree.value ? "treeitem" : "option",
21379
+ "data-path": row.node.path,
21380
+ "aria-level": tree.value ? row.depth + 1 : void 0,
21381
+ "aria-selected": __props.selected(row.node),
21382
+ "aria-disabled": !!reason(row.node),
21383
+ "aria-expanded": tree.value && row.node.kind === "folder" && !reason(row.node) ? row.expanded : void 0,
21384
+ tabindex: !reason(row.node) && row.node.path === focusablePath.value ? 0 : -1,
21385
+ class: normalizeClass(["mint-picker__row", {
21386
+ "mint-picker__row--selected": __props.selected(row.node),
21387
+ "mint-picker__row--unreadable": !!reason(row.node)
21388
+ }]),
21389
+ style: normalizeStyle({ "--picker-depth": row.depth }),
21390
+ title: reason(row.node) || row.node.name,
21391
+ onClick: ($event) => !reason(row.node) && emit("select", row.node, $event),
21392
+ onDblclick: ($event) => !reason(row.node) && emit("enter", row.node),
21393
+ onKeydown: ($event) => keydown($event, row)
21394
+ }, [
21395
+ createElementVNode("span", _hoisted_7$2, [locked(row.node) ? (openBlock(), createElementBlock("svg", _hoisted_8$2, [createElementVNode("path", { d: unref(FILE_PICKER_ICONS).lock }, null, 8, _hoisted_9$2)])) : multi.value && __props.selectable(row.node) ? (openBlock(), createBlock(BaseCheckbox_default, {
21396
+ key: 1,
21397
+ size: "sm",
21398
+ inert: "",
21399
+ "aria-hidden": "true",
21400
+ "model-value": __props.selected(row.node),
21401
+ indeterminate: partial(row.node)
21402
+ }, null, 8, ["model-value", "indeterminate"])) : createCommentVNode("", true)]),
21403
+ createElementVNode("span", _hoisted_10$2, [
21404
+ tree.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [row.node.kind === "folder" && row.node.hasChildren !== false && !reason(row.node) ? (openBlock(), createBlock(IconButton_default, {
21405
+ key: 0,
21406
+ size: "sm",
21407
+ variant: "ghost",
21408
+ class: "mint-picker__disclosure",
21409
+ label: `${row.expanded ? "Collapse" : "Expand"} ${row.node.name}`,
21410
+ tabindex: "-1",
21411
+ loading: row.loading,
21412
+ onClick: withModifiers(($event) => emit("expand", row.node), ["stop"]),
21413
+ onDblclick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"]))
21414
+ }, {
21415
+ default: withCtx(() => [(openBlock(), createElementBlock("svg", {
21416
+ viewBox: "0 0 16 16",
21417
+ fill: "currentColor",
21418
+ "aria-hidden": "true",
21419
+ class: normalizeClass({ "mint-picker__chevron--open": row.expanded })
21420
+ }, [..._cache[3] || (_cache[3] = [createElementVNode("path", { d: "m6 3 5 5-5 5z" }, null, -1)])], 2))]),
21421
+ _: 2
21422
+ }, 1032, [
21423
+ "label",
21424
+ "loading",
21425
+ "onClick"
21426
+ ])) : (openBlock(), createElementBlock("span", _hoisted_11$2))], 64)) : createCommentVNode("", true),
21427
+ (openBlock(), createElementBlock("svg", _hoisted_12$2, [createElementVNode("path", { d: row.node.kind === "folder" ? unref(FILE_PICKER_ICONS).folder : unref(FILE_PICKER_ICONS).file }, null, 8, _hoisted_13$2)])),
21428
+ createElementVNode("span", _hoisted_14$2, [
21429
+ createTextVNode(toDisplayString(parts(row.node.name)[0]), 1),
21430
+ parts(row.node.name)[1] ? (openBlock(), createElementBlock("mark", _hoisted_15$2, toDisplayString(parts(row.node.name)[1]), 1)) : createCommentVNode("", true),
21431
+ createTextVNode(toDisplayString(parts(row.node.name)[2]), 1)
21432
+ ]),
21433
+ reason(row.node) ? (openBlock(), createElementBlock("span", _hoisted_16$1, toDisplayString(shortReason(row.node)), 1)) : __props.query && row.node.parentName ? (openBlock(), createElementBlock("span", _hoisted_17$1, toDisplayString(row.node.parentName), 1)) : createCommentVNode("", true),
21434
+ __props.query && __props.mode === "folder" && row.node.kind === "file" && row.node.parentPath && !reason(row.node) ? (openBlock(), createBlock(BaseButton_default, {
21435
+ key: 3,
21436
+ variant: "ghost",
21437
+ size: "sm",
21438
+ onClick: withModifiers(($event) => emit("parent", row.node), ["stop"])
21439
+ }, {
21440
+ default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode("Select its folder", -1)])]),
21441
+ _: 1
21442
+ }, 8, ["onClick"])) : createCommentVNode("", true)
21443
+ ]),
21444
+ createElementVNode("span", { class: normalizeClass(["mint-picker__cell mint-picker__cell--size", { "mint-picker__partial": partial(row.node) }]) }, toDisplayString(size(row.node)), 3),
21445
+ createElementVNode("span", _hoisted_18$1, toDisplayString(unref(formatModified)(row.node.modifiedAt)), 1)
21446
+ ], 46, _hoisted_6$2), row.error ? (openBlock(), createElementBlock("div", _hoisted_19$1, [createTextVNode(toDisplayString(row.error), 1), createVNode(BaseButton_default, {
21447
+ variant: "ghost",
21448
+ size: "sm",
21449
+ onClick: ($event) => emit("expand", row.node)
21450
+ }, {
21451
+ default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("Close branch", -1)])]),
21452
+ _: 1
21453
+ }, 8, ["onClick"])])) : createCommentVNode("", true)], 64);
21454
+ }), 128))
21455
+ ], 8, _hoisted_1$2);
21485
21456
  };
21486
21457
  }
21487
21458
  });
@@ -21594,7 +21565,25 @@ var FilePickerPreviewInternal_default = /* @__PURE__ */ defineComponent({
21594
21565
  });
21595
21566
  //#endregion
21596
21567
  //#region src/composables/filePicker/usePickerNavigation.ts
21597
- function usePickerNavigation(adapter, request, systemFilter = () => true) {
21568
+ var byName = new Intl.Collator(void 0, {
21569
+ numeric: true,
21570
+ sensitivity: "base"
21571
+ }).compare;
21572
+ /** Folders first; undated rows go last in either time order. */
21573
+ function ordered(items, sort) {
21574
+ if (!sort) return items;
21575
+ const times = new Map(items.map((node) => [node, node.modifiedAt ? Date.parse(node.modifiedAt) : NaN]));
21576
+ const time = (node) => times.get(node);
21577
+ return [...items].sort((a, b) => {
21578
+ if (a.kind !== b.kind) return a.kind === "folder" ? -1 : 1;
21579
+ if (sort === "name") return byName(a.name, b.name);
21580
+ if (sort === "name-desc") return byName(b.name, a.name);
21581
+ const [ta, tb] = [time(a), time(b)];
21582
+ if (Number.isNaN(ta) || Number.isNaN(tb)) return Number.isNaN(ta) === Number.isNaN(tb) ? byName(a.name, b.name) : Number.isNaN(ta) ? 1 : -1;
21583
+ return (sort === "newest" ? tb - ta : ta - tb) || byName(a.name, b.name);
21584
+ });
21585
+ }
21586
+ function usePickerNavigation(adapter, request, systemFilter = () => true, sort = () => void 0) {
21598
21587
  const path = shallowRef("");
21599
21588
  const trail = ref([]);
21600
21589
  const entries = shallowRef([]);
@@ -21605,6 +21594,8 @@ function usePickerNavigation(adapter, request, systemFilter = () => true) {
21605
21594
  const expansionErrors = ref(/* @__PURE__ */ new Map());
21606
21595
  const loading = shallowRef(false);
21607
21596
  const error = shallowRef("");
21597
+ /** True when the current search results stopped at an adapter limit. */
21598
+ const truncated = shallowRef(false);
21608
21599
  let epoch = 0;
21609
21600
  let navigation = 0;
21610
21601
  let controller;
@@ -21724,13 +21715,16 @@ function usePickerNavigation(adapter, request, systemFilter = () => true) {
21724
21715
  };
21725
21716
  loading.value = true;
21726
21717
  error.value = "";
21718
+ truncated.value = false;
21727
21719
  entries.value = [];
21728
21720
  try {
21729
- const items = query.trim() ? await adapter().search(query.trim(), {
21721
+ const found = query.trim() ? await adapter().search(query.trim(), {
21730
21722
  path: path.value,
21731
21723
  recursive
21732
21724
  }, options) : path.value ? await loadChildren(path.value, [], refresh) : await adapter().listRoot(options);
21733
21725
  if (token !== navigation) return;
21726
+ const items = Array.isArray(found) ? found : found.nodes;
21727
+ truncated.value = !Array.isArray(found) && found.truncated;
21734
21728
  register(items, query.trim() ? void 0 : path.value);
21735
21729
  entries.value = items;
21736
21730
  if (!query.trim()) prefetch(items);
@@ -21776,8 +21770,9 @@ function usePickerNavigation(adapter, request, systemFilter = () => true) {
21776
21770
  }
21777
21771
  const rows = computed(() => {
21778
21772
  const result = [];
21773
+ const order = sort();
21779
21774
  function visit(items, depth, ancestors) {
21780
- for (const item of items) {
21775
+ for (const item of ordered(items, order)) {
21781
21776
  if (ancestors.has(item.path) || depth > 30) continue;
21782
21777
  const node = nodes.value.get(item.path) ?? item;
21783
21778
  if (!isAllowed(node)) continue;
@@ -21806,6 +21801,7 @@ function usePickerNavigation(adapter, request, systemFilter = () => true) {
21806
21801
  expansionErrors,
21807
21802
  loading,
21808
21803
  error,
21804
+ truncated,
21809
21805
  rows,
21810
21806
  isAllowed,
21811
21807
  clear,
@@ -22111,12 +22107,13 @@ function useFilePicker(props, emit, searchArea) {
22111
22107
  const source = shallowRef(allowedSources.value.includes(props.initialSelection?.source) ? props.initialSelection.source : allowedSources.value[0] ?? "server");
22112
22108
  const query = shallowRef("");
22113
22109
  const recursive = shallowRef(false);
22110
+ const sort = shallowRef(props.defaultSort);
22114
22111
  const skipBlanks = shallowRef(false);
22115
22112
  const reviewing = shallowRef(false);
22116
22113
  const localFiles = shallowRef([]);
22117
22114
  const localPaths = /* @__PURE__ */ new WeakMap();
22118
22115
  const localAdapter = computed(() => localFilesAdapter(localFiles.value, localFiles.value.map((file) => localPaths.get(toRaw(file)))));
22119
- const nav = usePickerNavigation(() => source.value === "localFile" ? localAdapter.value : props.adapter, () => ({ source: source.value }), (node) => props.systemFilter?.(node, source.value) !== false);
22116
+ const nav = usePickerNavigation(() => source.value === "localFile" ? localAdapter.value : props.adapter, () => ({ source: source.value }), (node) => props.systemFilter?.(node, source.value) !== false, () => sort.value);
22120
22117
  const capability = computed(() => props.capabilities[source.value]);
22121
22118
  const selection = usePickerSelection(nav, () => props.selectionMode, () => capability.value, () => skipBlanks.value);
22122
22119
  const { path, trail, loading, error, rows } = nav;
@@ -22199,6 +22196,7 @@ function useFilePicker(props, emit, searchArea) {
22199
22196
  watch(() => props.open, (open) => {
22200
22197
  clearTimeout(timer);
22201
22198
  if (open) {
22199
+ sort.value = props.defaultSort;
22202
22200
  if (!initialized) {
22203
22201
  path.value = props.initialPath;
22204
22202
  if (path.value) trail.value = [{
@@ -22360,10 +22358,11 @@ function useFilePicker(props, emit, searchArea) {
22360
22358
  }
22361
22359
  async function selectLocalFiles() {
22362
22360
  const token = openGeneration;
22363
- const items = props.selectionMode === "single-file" || props.selectionMode === "multi-file" ? await localAdapter.value.search("", {
22361
+ const found = props.selectionMode === "single-file" || props.selectionMode === "multi-file" ? await localAdapter.value.search("", {
22364
22362
  path: "",
22365
22363
  recursive: true
22366
22364
  }) : nav.entries.value;
22365
+ const items = Array.isArray(found) ? found : found.nodes;
22367
22366
  if (token !== openGeneration || !props.open || source.value !== "localFile") return;
22368
22367
  nav.register(items);
22369
22368
  const candidates = items.filter((node) => selection.selectable(node));
@@ -22408,6 +22407,7 @@ function useFilePicker(props, emit, searchArea) {
22408
22407
  source,
22409
22408
  query,
22410
22409
  recursive,
22410
+ sort,
22411
22411
  skipBlanks,
22412
22412
  reviewing,
22413
22413
  nav,
@@ -22470,32 +22470,38 @@ var _hoisted_8 = {
22470
22470
  key: 0,
22471
22471
  class: "mint-picker__accepts"
22472
22472
  };
22473
- var _hoisted_9 = ["aria-pressed"];
22474
- var _hoisted_10 = ["disabled"];
22475
- var _hoisted_11 = {
22473
+ var _hoisted_9 = [
22474
+ "aria-expanded",
22475
+ "aria-label",
22476
+ "onClick",
22477
+ "onKeydown"
22478
+ ];
22479
+ var _hoisted_10 = ["aria-pressed"];
22480
+ var _hoisted_11 = ["disabled"];
22481
+ var _hoisted_12 = {
22476
22482
  key: 1,
22477
22483
  class: "mint-picker__empty"
22478
22484
  };
22479
- var _hoisted_12 = {
22485
+ var _hoisted_13 = {
22480
22486
  key: 0,
22481
22487
  class: "mint-picker__local-upload"
22482
22488
  };
22483
- var _hoisted_13 = {
22489
+ var _hoisted_14 = {
22484
22490
  key: 0,
22485
22491
  role: "alert"
22486
22492
  };
22487
- var _hoisted_14 = {
22493
+ var _hoisted_15 = {
22488
22494
  key: 1,
22489
22495
  class: "mint-picker__workspace"
22490
22496
  };
22491
- var _hoisted_15 = { class: "mint-picker__footer" };
22492
- var _hoisted_16 = {
22497
+ var _hoisted_16 = { class: "mint-picker__footer" };
22498
+ var _hoisted_17 = {
22493
22499
  class: "mint-picker__receipt",
22494
22500
  role: "status"
22495
22501
  };
22496
- var _hoisted_17 = { class: "mint-picker__summary" };
22497
- var _hoisted_18 = { key: 2 };
22498
- var _hoisted_19 = { class: "mint-picker__actions" };
22502
+ var _hoisted_18 = { class: "mint-picker__summary" };
22503
+ var _hoisted_19 = { key: 2 };
22504
+ var _hoisted_20 = { class: "mint-picker__actions" };
22499
22505
  //#endregion
22500
22506
  //#region src/components/FilePicker.vue
22501
22507
  var FilePicker_default = /* @__PURE__ */ defineComponent({
@@ -22510,6 +22516,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22510
22516
  initialSelection: { default: null },
22511
22517
  title: { default: "Choose data" },
22512
22518
  view: { default: "list" },
22519
+ defaultSort: { default: "newest" },
22513
22520
  systemFilter: {}
22514
22521
  },
22515
22522
  emits: [
@@ -22530,7 +22537,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22530
22537
  const props = __props;
22531
22538
  const emit = __emit;
22532
22539
  const uploadError = ref("");
22533
- const { previewNode, sourceNames, mounts, segments, activeSegment, mountView, allowedSources, source, query, recursive, skipBlanks, reviewing, nav, selection, capability, path, trail, loading, error, rows, roots, chosen, focused, resolving, resolutionError, confirmLabel, folderCount, canConfirm, chooseSegment, clearSelection, selectNode, enter, up, refresh, selectParent, chooseLocal, cancel, confirm, keyboard } = useFilePicker(props, emit, useTemplateRef("searchArea"));
22540
+ const { previewNode, sourceNames, mounts, segments, activeSegment, mountView, allowedSources, source, query, recursive, sort, skipBlanks, reviewing, nav, selection, capability, path, trail, loading, error, rows, roots, chosen, focused, resolving, resolutionError, confirmLabel, folderCount, canConfirm, chooseSegment, clearSelection, selectNode, enter, up, refresh, selectParent, chooseLocal, cancel, confirm, keyboard } = useFilePicker(props, emit, useTemplateRef("searchArea"));
22534
22541
  const sourceLabel = computed(() => {
22535
22542
  const node = previewNode.value;
22536
22543
  if (!mountView.value || !node) return sourceNames[source.value];
@@ -22540,6 +22547,17 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22540
22547
  }
22541
22548
  return mounts.value.find((item) => item.path === props.adapter.mountOf?.(node.path))?.name ?? sourceNames.server;
22542
22549
  });
22550
+ const SORT_LABELS = {
22551
+ newest: "Newest first",
22552
+ oldest: "Oldest first",
22553
+ name: "Name A–Z",
22554
+ "name-desc": "Name Z–A"
22555
+ };
22556
+ const sortItems = computed(() => Object.keys(SORT_LABELS).map((id) => ({
22557
+ id,
22558
+ label: SORT_LABELS[id],
22559
+ checked: sort.value === id
22560
+ })));
22543
22561
  const accepts = computed(() => (capability.value?.formats ?? []).map((format) => `.${format.replace(/^\./, "")}`).join(" "));
22544
22562
  const summary = computed(() => {
22545
22563
  if (!roots.value.length) return "No selection";
@@ -22582,7 +22600,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22582
22600
  "aria-label": "Search folders and files",
22583
22601
  placeholder: "Search this source"
22584
22602
  }, {
22585
- prefix: withCtx(() => [..._cache[12] || (_cache[12] = [createElementVNode("svg", {
22603
+ prefix: withCtx(() => [..._cache[13] || (_cache[13] = [createElementVNode("svg", {
22586
22604
  viewBox: "0 0 24 24",
22587
22605
  fill: "none",
22588
22606
  stroke: "currentColor",
@@ -22593,40 +22611,40 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22593
22611
  cy: "10.5",
22594
22612
  r: "7"
22595
22613
  }), createElementVNode("path", { d: "m16 16 5 5" })], -1)])]),
22596
- suffix: withCtx(() => [..._cache[13] || (_cache[13] = [createElementVNode("kbd", null, "/", -1)])]),
22614
+ suffix: withCtx(() => [..._cache[14] || (_cache[14] = [createElementVNode("kbd", null, "/", -1)])]),
22597
22615
  _: 1
22598
22616
  }, 8, ["modelValue"])], 512)) : createCommentVNode("", true)
22599
22617
  ], 32)]),
22600
- footer: withCtx(() => [createElementVNode("div", _hoisted_15, [createElementVNode("div", _hoisted_16, [
22601
- createElementVNode("span", _hoisted_17, toDisplayString(summary.value), 1),
22618
+ footer: withCtx(() => [createElementVNode("div", _hoisted_16, [createElementVNode("div", _hoisted_17, [
22619
+ createElementVNode("span", _hoisted_18, toDisplayString(summary.value), 1),
22602
22620
  unref(roots).length ? (openBlock(), createElementBlock("button", {
22603
22621
  key: 0,
22604
22622
  type: "button",
22605
22623
  class: "mint-picker__link mint-picker__clear",
22606
- onClick: _cache[9] || (_cache[9] = (...args) => unref(clearSelection) && unref(clearSelection)(...args))
22624
+ onClick: _cache[10] || (_cache[10] = (...args) => unref(clearSelection) && unref(clearSelection)(...args))
22607
22625
  }, " Clear ")) : createCommentVNode("", true),
22608
22626
  unref(chosen).excluded.length && unref(source) === "server" ? (openBlock(), createElementBlock("button", {
22609
22627
  key: 1,
22610
22628
  type: "button",
22611
22629
  class: "mint-picker__link",
22612
- onClick: _cache[10] || (_cache[10] = ($event) => reviewing.value = !unref(reviewing))
22613
- }, toDisplayString(unref(chosen).excluded.length) + " skipped ", 1)) : unref(chosen).excluded.length ? (openBlock(), createElementBlock("span", _hoisted_18, toDisplayString(unref(chosen).excluded.length) + " skipped", 1)) : createCommentVNode("", true),
22630
+ onClick: _cache[11] || (_cache[11] = ($event) => reviewing.value = !unref(reviewing))
22631
+ }, toDisplayString(unref(chosen).excluded.length) + " skipped ", 1)) : unref(chosen).excluded.length ? (openBlock(), createElementBlock("span", _hoisted_19, toDisplayString(unref(chosen).excluded.length) + " skipped", 1)) : createCommentVNode("", true),
22614
22632
  unref(capability)?.isBlank ? (openBlock(), createBlock(BaseButton_default, {
22615
22633
  key: 3,
22616
22634
  size: "sm",
22617
22635
  variant: "ghost",
22618
22636
  "aria-pressed": unref(skipBlanks),
22619
- onClick: _cache[11] || (_cache[11] = ($event) => skipBlanks.value = !unref(skipBlanks))
22637
+ onClick: _cache[12] || (_cache[12] = ($event) => skipBlanks.value = !unref(skipBlanks))
22620
22638
  }, {
22621
22639
  default: withCtx(() => [createTextVNode("Skip blanks " + toDisplayString(unref(skipBlanks) ? "on" : "off"), 1)]),
22622
22640
  _: 1
22623
22641
  }, 8, ["aria-pressed"])) : createCommentVNode("", true)
22624
- ]), createElementVNode("div", _hoisted_19, [createVNode(BaseButton_default, {
22642
+ ]), createElementVNode("div", _hoisted_20, [createVNode(BaseButton_default, {
22625
22643
  variant: "ghost",
22626
22644
  size: "sm",
22627
22645
  onClick: unref(cancel)
22628
22646
  }, {
22629
- default: withCtx(() => [..._cache[16] || (_cache[16] = [createTextVNode("Cancel", -1)])]),
22647
+ default: withCtx(() => [..._cache[18] || (_cache[18] = [createTextVNode("Cancel", -1)])]),
22630
22648
  _: 1
22631
22649
  }, 8, ["onClick"]), createVNode(BaseButton_default, {
22632
22650
  size: "sm",
@@ -22639,7 +22657,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22639
22657
  default: withCtx(() => [(openBlock(), createElementBlock("div", {
22640
22658
  key: unref(source),
22641
22659
  class: "mint-picker mint-picker__source-panel",
22642
- onKeydown: _cache[8] || (_cache[8] = (...args) => unref(keyboard) && unref(keyboard)(...args))
22660
+ onKeydown: _cache[9] || (_cache[9] = (...args) => unref(keyboard) && unref(keyboard)(...args))
22643
22661
  }, [unref(source) === "server" ? (openBlock(), createElementBlock("div", _hoisted_3, [
22644
22662
  createElementVNode("nav", _hoisted_4, [!unref(mountView) ? (openBlock(), createElementBlock("button", {
22645
22663
  key: 0,
@@ -22648,7 +22666,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22648
22666
  "aria-current": unref(trail).length ? void 0 : "location",
22649
22667
  onClick: _cache[2] || (_cache[2] = ($event) => unref(up)(""))
22650
22668
  }, toDisplayString(unref(sourceNames)[unref(source)]), 9, _hoisted_5)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(unref(trail), (crumb, index) => {
22651
- return openBlock(), createElementBlock(Fragment, { key: crumb.path }, [index > 0 || !unref(mountView) ? (openBlock(), createElementBlock("svg", _hoisted_6, [..._cache[14] || (_cache[14] = [createElementVNode("path", { d: "M6 4l4 4-4 4" }, null, -1)])])) : createCommentVNode("", true), createElementVNode("button", {
22669
+ return openBlock(), createElementBlock(Fragment, { key: crumb.path }, [index > 0 || !unref(mountView) ? (openBlock(), createElementBlock("svg", _hoisted_6, [..._cache[15] || (_cache[15] = [createElementVNode("path", { d: "M6 4l4 4-4 4" }, null, -1)])])) : createCommentVNode("", true), createElementVNode("button", {
22652
22670
  type: "button",
22653
22671
  class: "mint-picker__crumb",
22654
22672
  "aria-current": index === unref(trail).length - 1 ? "location" : void 0,
@@ -22656,43 +22674,66 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22656
22674
  }, toDisplayString(crumb.label), 9, _hoisted_7)], 64);
22657
22675
  }), 128))]),
22658
22676
  accepts.value ? (openBlock(), createElementBlock("span", _hoisted_8, "Accepts " + toDisplayString(accepts.value), 1)) : createCommentVNode("", true),
22677
+ createVNode(ActionMenu_default, {
22678
+ label: "Sort",
22679
+ items: sortItems.value,
22680
+ onSelect: _cache[3] || (_cache[3] = ($event) => sort.value = $event.id)
22681
+ }, {
22682
+ trigger: withCtx(({ open: menuOpen, toggle, keydown }) => [createElementVNode("button", {
22683
+ type: "button",
22684
+ class: "mint-picker__sort",
22685
+ "aria-haspopup": "menu",
22686
+ "aria-expanded": menuOpen,
22687
+ "aria-label": `Sort: ${SORT_LABELS[unref(sort)]}`,
22688
+ onClick: toggle,
22689
+ onKeydown: keydown
22690
+ }, [createTextVNode(toDisplayString(SORT_LABELS[unref(sort)]) + " ", 1), _cache[16] || (_cache[16] = createElementVNode("svg", {
22691
+ viewBox: "0 0 16 16",
22692
+ fill: "none",
22693
+ stroke: "currentColor",
22694
+ "stroke-width": "1.5",
22695
+ "aria-hidden": "true"
22696
+ }, [createElementVNode("path", { d: "M4 6l4 4 4-4" })], -1))], 40, _hoisted_9)]),
22697
+ _: 1
22698
+ }, 8, ["items"]),
22659
22699
  createElementVNode("button", {
22660
22700
  type: "button",
22661
22701
  class: "mint-picker__scope",
22662
22702
  "aria-pressed": unref(recursive),
22663
- onClick: _cache[3] || (_cache[3] = ($event) => recursive.value = !unref(recursive))
22664
- }, toDisplayString(unref(recursive) ? "Subfolders" : "This folder"), 9, _hoisted_9),
22703
+ onClick: _cache[4] || (_cache[4] = ($event) => recursive.value = !unref(recursive))
22704
+ }, toDisplayString(unref(recursive) ? "Subfolders" : "This folder"), 9, _hoisted_10),
22665
22705
  createElementVNode("button", {
22666
22706
  type: "button",
22667
22707
  class: "mint-picker__scope mint-picker__refresh",
22668
22708
  "aria-label": "Refresh location",
22669
22709
  title: "Refresh location",
22670
22710
  disabled: unref(loading),
22671
- onClick: _cache[4] || (_cache[4] = ($event) => unref(refresh)())
22672
- }, [..._cache[15] || (_cache[15] = [createElementVNode("svg", {
22711
+ onClick: _cache[5] || (_cache[5] = ($event) => unref(refresh)())
22712
+ }, [..._cache[17] || (_cache[17] = [createElementVNode("svg", {
22673
22713
  viewBox: "0 0 24 24",
22674
22714
  fill: "none",
22675
22715
  stroke: "currentColor",
22676
22716
  "stroke-width": "1.8",
22677
22717
  "aria-hidden": "true"
22678
- }, [createElementVNode("path", { d: "M20 7v5h-5M4 17v-5h5M6 8a7 7 0 0 1 12-2l2 3M4 15l2 3a7 7 0 0 0 12-2" })], -1)])], 8, _hoisted_10)
22679
- ])) : createCommentVNode("", true), !unref(allowedSources).length ? (openBlock(), createElementBlock("div", _hoisted_11, " No data sources are enabled. ")) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [unref(source) === "localFile" ? (openBlock(), createElementBlock("div", _hoisted_12, [createVNode(FileUploader_default, {
22718
+ }, [createElementVNode("path", { d: "M20 7v5h-5M4 17v-5h5M6 8a7 7 0 0 1 12-2l2 3M4 15l2 3a7 7 0 0 0 12-2" })], -1)])], 8, _hoisted_11)
22719
+ ])) : createCommentVNode("", true), !unref(allowedSources).length ? (openBlock(), createElementBlock("div", _hoisted_12, " No data sources are enabled. ")) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [unref(source) === "localFile" ? (openBlock(), createElementBlock("div", _hoisted_13, [createVNode(FileUploader_default, {
22680
22720
  size: "lg",
22681
22721
  mode: __props.selectionMode === "folder" ? "folder" : __props.selectionMode === "single-file" ? "file" : "file+folder",
22682
22722
  multiple: __props.selectionMode !== "single-file",
22683
22723
  "show-files": false,
22684
- onUpload: _cache[5] || (_cache[5] = (...args) => {
22724
+ onUpload: _cache[6] || (_cache[6] = (...args) => {
22685
22725
  uploadError.value = "";
22686
22726
  unref(chooseLocal)(...args);
22687
22727
  }),
22688
- onError: _cache[6] || (_cache[6] = ($event) => uploadError.value = $event)
22689
- }, null, 8, ["mode", "multiple"]), uploadError.value || unref(error) || unref(resolutionError) ? (openBlock(), createElementBlock("p", _hoisted_13, toDisplayString(uploadError.value || unref(error) || unref(resolutionError)), 1)) : createCommentVNode("", true)])) : (openBlock(), createElementBlock("div", _hoisted_14, [createVNode(FilePickerListInternal_default, {
22728
+ onError: _cache[7] || (_cache[7] = ($event) => uploadError.value = $event)
22729
+ }, null, 8, ["mode", "multiple"]), uploadError.value || unref(error) || unref(resolutionError) ? (openBlock(), createElementBlock("p", _hoisted_14, toDisplayString(uploadError.value || unref(error) || unref(resolutionError)), 1)) : createCommentVNode("", true)])) : (openBlock(), createElementBlock("div", _hoisted_15, [createVNode(FilePickerListInternal_default, {
22690
22730
  "empty-title": unref(path) ? "No readable files" : "No server locations configured",
22691
22731
  view: __props.view,
22692
22732
  rows: unref(rows),
22693
22733
  loading: unref(loading),
22694
22734
  error: unref(error),
22695
22735
  query: unref(query),
22736
+ truncated: unref(nav).truncated.value,
22696
22737
  mode: __props.selectionMode,
22697
22738
  selected: unref(selection).selected,
22698
22739
  selectable: unref(selection).selectable,
@@ -22712,6 +22753,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22712
22753
  "loading",
22713
22754
  "error",
22714
22755
  "query",
22756
+ "truncated",
22715
22757
  "mode",
22716
22758
  "selected",
22717
22759
  "selectable",
@@ -22732,7 +22774,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22732
22774
  busy: unref(resolving),
22733
22775
  error: unref(resolutionError),
22734
22776
  reviewing: unref(reviewing),
22735
- onReview: _cache[7] || (_cache[7] = ($event) => reviewing.value = !unref(reviewing)),
22777
+ onReview: _cache[8] || (_cache[8] = ($event) => reviewing.value = !unref(reviewing)),
22736
22778
  onRetry: unref(selection).resolve
22737
22779
  }, null, 8, [
22738
22780
  "node",
@@ -22861,6 +22903,6 @@ var components_exports = /* @__PURE__ */ __exportAll({
22861
22903
  WellPlate: () => WellPlate_default
22862
22904
  });
22863
22905
  //#endregion
22864
- 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 };
22865
22907
 
22866
- //# sourceMappingURL=components-CvY105kJ.js.map
22908
+ //# sourceMappingURL=components-BTzcqrJp.js.map