@morscherlab/mint-sdk 1.3.0-beta.1 → 1.3.0-beta.10

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 (134) hide show
  1. package/README.md +23 -140
  2. package/dist/{ResourcePickerListInternal-c3IT8PIu.js → ResourcePickerListInternal-CFAw4vTZ.js} +26 -19
  3. package/dist/ResourcePickerListInternal-CFAw4vTZ.js.map +1 -0
  4. package/dist/components/FilePicker.vue.d.ts +4 -1
  5. package/dist/components/SettingsModal.schema.d.ts +1 -1
  6. package/dist/components/SettingsModal.vue.d.ts +2 -0
  7. package/dist/components/WellPlate.colors.d.ts +1 -5
  8. package/dist/components/WellPlate.rendering.d.ts +5 -2
  9. package/dist/components/index.d.ts +32 -17
  10. package/dist/components/index.js +3 -3
  11. package/dist/components/internal/FilePickerListInternal.vue.d.ts +2 -0
  12. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +9 -3
  13. package/dist/{components-CvY105kJ.js → components-GDDvof8D.js} +414 -368
  14. package/dist/components-GDDvof8D.js.map +1 -0
  15. package/dist/composables/createFilePickerAdapter.d.ts +5 -1
  16. package/dist/composables/filePicker/usePickerNavigation.d.ts +3 -2
  17. package/dist/composables/index.d.ts +0 -3
  18. package/dist/composables/index.js +4 -4
  19. package/dist/composables/useAutoGroup.d.ts +1 -1
  20. package/dist/composables/useBioTemplateComponents.d.ts +15 -3
  21. package/dist/composables/useBioTemplateControls.d.ts +5 -1
  22. package/dist/composables/useBioTemplatePackWorkspace.d.ts +2 -0
  23. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +5 -1
  24. package/dist/composables/useBioTemplateWorkspace.d.ts +5 -1
  25. package/dist/composables/useExperimentSave.d.ts +5 -1
  26. package/dist/composables/useFilePicker.d.ts +4 -1
  27. package/dist/composables/useGroupAssignment.d.ts +5 -1
  28. package/dist/composables/usePlatformContext.d.ts +3 -0
  29. package/dist/composables/useTemplateCollection.d.ts +5 -1
  30. package/dist/composables-D6uqp0UF.js +591 -0
  31. package/dist/composables-D6uqp0UF.js.map +1 -0
  32. package/dist/index.js +24 -24
  33. package/dist/index.js.map +1 -1
  34. package/dist/install.js +1 -1
  35. package/dist/lcms.d.ts +11 -11
  36. package/dist/styles.css +170 -200
  37. package/dist/templates/index.js +1 -1
  38. package/dist/{templates-Bj9hZ7iV.js → templates-BU1pet28.js} +31 -44
  39. package/dist/templates-BU1pet28.js.map +1 -0
  40. package/dist/types/auth.d.ts +0 -27
  41. package/dist/types/components.d.ts +8 -0
  42. package/dist/types/fileBrowserTypes.d.ts +13 -0
  43. package/dist/types/filePicker.d.ts +8 -1
  44. package/dist/types/index.d.ts +2 -2
  45. package/dist/types/platform.d.ts +2 -0
  46. package/dist/utils/rack.d.ts +16 -16
  47. package/dist/{validation-B4Y8_eEe.js → validation-Dmp9Q5W0.js} +50 -12
  48. package/dist/validation-Dmp9Q5W0.js.map +1 -0
  49. package/package.json +1 -6
  50. package/src/__tests__/components/ActionMenu.test.ts +10 -0
  51. package/src/__tests__/components/AppTopBar.test.ts +24 -8
  52. package/src/__tests__/components/EmptyState.test.ts +15 -0
  53. package/src/__tests__/components/ExperimentSelectorModal.test.ts +12 -5
  54. package/src/__tests__/components/FilePicker.test.ts +65 -1
  55. package/src/__tests__/components/FileUploader.test.ts +6 -9
  56. package/src/__tests__/components/ResourcePickerListInternal.test.ts +23 -4
  57. package/src/__tests__/components/SettingsModal.test.ts +22 -0
  58. package/src/__tests__/components/WellPlate.decoration.test.ts +4 -28
  59. package/src/__tests__/components/WellPlate.rendering.test.ts +20 -33
  60. package/src/__tests__/components/WellPlate.sampleTypeIndicator.test.ts +7 -7
  61. package/src/__tests__/composables/createFilePickerAdapter.test.ts +92 -1
  62. package/src/__tests__/composables/usePickerNavigation.test.ts +61 -1
  63. package/src/__tests__/composables/usePlatformFilePickerAdapter.test.ts +18 -6
  64. package/src/__tests__/docs/frontendDocsCatalog.test.ts +2 -2
  65. package/src/__tests__/styles/controlRefreshRules.test.ts +21 -8
  66. package/src/__tests__/styles/menusShellRefresh.test.ts +20 -5
  67. package/src/__tests__/templates/templatesDeprecation.test.ts +58 -11
  68. package/src/components/ActionMenu.vue +10 -2
  69. package/src/components/AppTopBar.vue +6 -4
  70. package/src/components/EmptyState.vue +3 -1
  71. package/src/components/ExperimentSelectorModal.vue +4 -1
  72. package/src/components/FilePicker.vue +42 -0
  73. package/src/components/FileUploader.vue +30 -46
  74. package/src/components/SettingsModal.schema.ts +4 -2
  75. package/src/components/SettingsModal.vue +4 -2
  76. package/src/components/WellPlate.colors.ts +6 -10
  77. package/src/components/WellPlate.legend.ts +4 -4
  78. package/src/components/WellPlate.rendering.ts +9 -8
  79. package/src/components/WellPlate.vue +5 -22
  80. package/src/components/index.ts +32 -17
  81. package/src/components/internal/FilePickerListInternal.vue +11 -2
  82. package/src/components/internal/ResourcePickerListInternal.vue +21 -27
  83. package/src/composables/autoGroup/index.ts +1 -1
  84. package/src/composables/createFilePickerAdapter.ts +82 -22
  85. package/src/composables/filePicker/usePickerNavigation.ts +29 -2
  86. package/src/composables/index.ts +0 -7
  87. package/src/composables/useAutoGroup.ts +1 -1
  88. package/src/composables/useBioTemplateComponents.ts +15 -3
  89. package/src/composables/useBioTemplateControls.ts +5 -1
  90. package/src/composables/useBioTemplatePackWorkspace.ts +2 -0
  91. package/src/composables/useBioTemplatePresetWorkspace.ts +5 -1
  92. package/src/composables/useBioTemplateWorkspace.ts +5 -1
  93. package/src/composables/useExperimentSave.ts +5 -1
  94. package/src/composables/useFilePicker.ts +8 -1
  95. package/src/composables/useGroupAssignment.ts +5 -1
  96. package/src/composables/usePlatformFilePickerAdapter.ts +26 -4
  97. package/src/composables/useTemplateCollection.ts +5 -1
  98. package/src/index.ts +1 -1
  99. package/src/lcms.ts +11 -11
  100. package/src/styles/components/action-menu.css +10 -0
  101. package/src/styles/components/app-page-selector.css +3 -3
  102. package/src/styles/components/app-pill-nav.css +1 -1
  103. package/src/styles/components/app-top-bar.css +18 -38
  104. package/src/styles/components/empty-state.css +3 -2
  105. package/src/styles/components/experiment-selector-modal.css +3 -9
  106. package/src/styles/components/file-picker.css +23 -1
  107. package/src/styles/components/file-uploader.css +22 -55
  108. package/src/styles/components/resource-picker-list.css +70 -36
  109. package/src/styles/components/well-plate.css +18 -55
  110. package/src/types/auth.ts +0 -37
  111. package/src/types/components.ts +8 -0
  112. package/src/types/fileBrowserTypes.ts +15 -0
  113. package/src/types/filePicker.ts +8 -1
  114. package/src/types/index.ts +2 -5
  115. package/src/types/platform.ts +2 -0
  116. package/src/utils/rack.ts +16 -16
  117. package/dist/ResourcePickerListInternal-c3IT8PIu.js.map +0 -1
  118. package/dist/__tests__/composables/useAuth.test.d.ts +0 -1
  119. package/dist/__tests__/composables/usePasskey.test.d.ts +0 -1
  120. package/dist/components-CvY105kJ.js.map +0 -1
  121. package/dist/composables/useAuth.d.ts +0 -47
  122. package/dist/composables/usePasskey.d.ts +0 -10
  123. package/dist/composables/useWellPlateEditor.d.ts +0 -33
  124. package/dist/composables-DL4Vca7L.js +0 -1193
  125. package/dist/composables-DL4Vca7L.js.map +0 -1
  126. package/dist/plotly.min-D6Ge6qgX.js +0 -168582
  127. package/dist/plotly.min-D6Ge6qgX.js.map +0 -1
  128. package/dist/templates-Bj9hZ7iV.js.map +0 -1
  129. package/dist/validation-B4Y8_eEe.js.map +0 -1
  130. package/src/__tests__/composables/useAuth.test.ts +0 -290
  131. package/src/__tests__/composables/usePasskey.test.ts +0 -38
  132. package/src/composables/useAuth.ts +0 -470
  133. package/src/composables/usePasskey.ts +0 -216
  134. 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
- 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";
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, u as getExperimentStatusVariant } 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-CFAw4vTZ.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-BU1pet28.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-Dmp9Q5W0.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?.display_name || 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"
@@ -3817,6 +3798,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3817
3798
  title: __props.settingsConfig?.title,
3818
3799
  tabs: normalizedSettingsTabs.value,
3819
3800
  "show-appearance": __props.settingsConfig?.showAppearance ?? true,
3801
+ "appearance-first": __props.settingsConfig?.appearanceFirst,
3820
3802
  size: __props.settingsConfig?.size,
3821
3803
  layout: __props.settingsConfig?.layout,
3822
3804
  schema: __props.settingsConfig?.schema,
@@ -3840,6 +3822,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
3840
3822
  "title",
3841
3823
  "tabs",
3842
3824
  "show-appearance",
3825
+ "appearance-first",
3843
3826
  "size",
3844
3827
  "layout",
3845
3828
  "schema",
@@ -4619,13 +4602,13 @@ var _hoisted_17$20 = {
4619
4602
  class: "mint-sidebar__group-subtitle"
4620
4603
  };
4621
4604
  var _hoisted_18$20 = { class: "mint-sidebar__group-tail" };
4622
- var _hoisted_19$19 = [
4605
+ var _hoisted_19$20 = [
4623
4606
  "disabled",
4624
4607
  "aria-label",
4625
4608
  "title",
4626
4609
  "onClick"
4627
4610
  ];
4628
- var _hoisted_20$18 = {
4611
+ var _hoisted_20$19 = {
4629
4612
  key: 0,
4630
4613
  class: "mint-sidebar__group-action-icon",
4631
4614
  viewBox: "0 0 24 24",
@@ -4639,12 +4622,12 @@ var _hoisted_20$18 = {
4639
4622
  var _hoisted_21$16 = ["d"];
4640
4623
  var _hoisted_22$16 = ["d"];
4641
4624
  var _hoisted_23$14 = { key: 1 };
4642
- var _hoisted_24$13 = [
4625
+ var _hoisted_24$12 = [
4643
4626
  "aria-checked",
4644
4627
  "aria-label",
4645
4628
  "onClick"
4646
4629
  ];
4647
- var _hoisted_25$13 = [
4630
+ var _hoisted_25$12 = [
4648
4631
  "aria-label",
4649
4632
  "aria-expanded",
4650
4633
  "onClick"
@@ -4973,7 +4956,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
4973
4956
  "aria-label": action.label,
4974
4957
  title: action.label,
4975
4958
  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) => {
4959
+ }, [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
4960
  return openBlock(), createElementBlock("path", {
4978
4961
  key: i,
4979
4962
  d
@@ -4981,7 +4964,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
4981
4964
  }), 128)) : (openBlock(), createElementBlock("path", {
4982
4965
  key: 1,
4983
4966
  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);
4967
+ }, null, 8, _hoisted_22$16))])) : action.icon ? (openBlock(), createElementBlock("span", _hoisted_23$14, toDisplayString(action.icon), 1)) : createCommentVNode("", true)], 14, _hoisted_19$20);
4985
4968
  }), 128)),
4986
4969
  section.showToggle ? (openBlock(), createElementBlock("button", {
4987
4970
  key: 1,
@@ -4991,7 +4974,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
4991
4974
  "aria-label": `Enable ${section.label}`,
4992
4975
  class: normalizeClass(["mint-sidebar__switch", __props.toggleState[section.id] ?? false ? "mint-sidebar__switch--on" : ""]),
4993
4976
  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),
4977
+ }, [..._cache[1] || (_cache[1] = [createElementVNode("span", { class: "mint-sidebar__switch-knob" }, null, -1)])], 10, _hoisted_24$12)) : createCommentVNode("", true),
4995
4978
  createElementVNode("button", {
4996
4979
  type: "button",
4997
4980
  class: "mint-sidebar__chevron-button",
@@ -5007,7 +4990,7 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
5007
4990
  "stroke-linecap": "round",
5008
4991
  "stroke-linejoin": "round",
5009
4992
  "aria-hidden": "true"
5010
- }, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 8, _hoisted_25$13)
4993
+ }, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 8, _hoisted_25$12)
5011
4994
  ])]), createVNode(Transition, { name: "collapse" }, {
5012
4995
  default: withCtx(() => [withDirectives(createElementVNode("div", _hoisted_26$10, [renderSlot(_ctx.$slots, `section-${section.id}`, {}, () => [resolvedForms.value[section.id] ? (openBlock(), createBlock(FormBuilder_default, {
5013
4996
  key: 0,
@@ -6068,7 +6051,7 @@ var PlotlyChart_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
6068
6051
  let revision = 0;
6069
6052
  async function loadPlotly() {
6070
6053
  if (props.plotly) return props.plotly;
6071
- const module = await import("./plotly.min-D6Ge6qgX.js").then((m) => /* @__PURE__ */ __toESM(m.default, 1));
6054
+ const module = await import("plotly.js-dist-min");
6072
6055
  return "default" in module ? module.default : module;
6073
6056
  }
6074
6057
  function bindEvents(element) {
@@ -6476,16 +6459,16 @@ var _hoisted_16$19 = {
6476
6459
  };
6477
6460
  var _hoisted_17$19 = { class: "mint-jobs-tray__job-heading" };
6478
6461
  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" };
6462
+ var _hoisted_19$19 = ["onClick"];
6463
+ var _hoisted_20$18 = { class: "mint-jobs-tray__kind" };
6481
6464
  var _hoisted_21$15 = {
6482
6465
  key: 0,
6483
6466
  class: "mint-jobs-tray__percent"
6484
6467
  };
6485
6468
  var _hoisted_22$15 = ["aria-valuenow"];
6486
6469
  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"];
6470
+ var _hoisted_24$11 = { class: "mint-jobs-tray__job-actions" };
6471
+ var _hoisted_25$11 = ["disabled", "onClick"];
6489
6472
  var _hoisted_26$9 = ["disabled", "onClick"];
6490
6473
  var _hoisted_27$8 = {
6491
6474
  key: 0,
@@ -6724,7 +6707,7 @@ var JobsStatusTray_default = /* @__PURE__ */ defineComponent({
6724
6707
  type: "button",
6725
6708
  class: "mint-jobs-tray__job-select",
6726
6709
  onClick: ($event) => emit("select", job)
6727
- }, toDisplayString(job.name), 9, _hoisted_19$18), createElementVNode("span", _hoisted_20$17, toDisplayString(job.kind), 1)]),
6710
+ }, toDisplayString(job.name), 9, _hoisted_19$19), createElementVNode("span", _hoisted_20$18, toDisplayString(job.kind), 1)]),
6728
6711
  createElementVNode("span", { class: normalizeClass(["mint-jobs-tray__status", statusClass(job)]) }, [_cache[8] || (_cache[8] = createElementVNode("span", {
6729
6712
  class: "mint-jobs-tray__status-dot",
6730
6713
  "aria-hidden": "true"
@@ -6740,7 +6723,7 @@ var JobsStatusTray_default = /* @__PURE__ */ defineComponent({
6740
6723
  "aria-valuemax": "100",
6741
6724
  "aria-valuenow": jobPercent(job)
6742
6725
  }, [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, [
6726
+ createElementVNode("div", _hoisted_23$13, [createElementVNode("span", null, toDisplayString(progressText(job)), 1), createElementVNode("div", _hoisted_24$11, [
6744
6727
  renderSlot(_ctx.$slots, "job-actions", { job }),
6745
6728
  job.can_cancel && unref(tray).canCancel.value ? (openBlock(), createElementBlock("button", {
6746
6729
  key: 0,
@@ -6749,7 +6732,7 @@ var JobsStatusTray_default = /* @__PURE__ */ defineComponent({
6749
6732
  "aria-label": "Cancel job",
6750
6733
  disabled: unref(tray).isPending(job),
6751
6734
  onClick: ($event) => cancelJob(job)
6752
- }, " Cancel ", 8, _hoisted_25$12)) : createCommentVNode("", true),
6735
+ }, " Cancel ", 8, _hoisted_25$11)) : createCommentVNode("", true),
6753
6736
  job.can_delete && unref(tray).canDelete.value ? (openBlock(), createElementBlock("button", {
6754
6737
  key: 1,
6755
6738
  type: "button",
@@ -7066,8 +7049,8 @@ var _hoisted_15$21 = {
7066
7049
  var _hoisted_16$18 = { class: "mint-dose-calculator__preview-steps" };
7067
7050
  var _hoisted_17$18 = { class: "mint-dose-calculator__preview-step" };
7068
7051
  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 = {
7052
+ var _hoisted_19$18 = { class: "mint-dose-calculator__preview-step-conc" };
7053
+ var _hoisted_20$17 = {
7071
7054
  key: 0,
7072
7055
  class: "mint-dose-calculator__preview-arrow"
7073
7056
  };
@@ -7084,11 +7067,11 @@ var _hoisted_23$12 = {
7084
7067
  key: 0,
7085
7068
  class: "mint-dose-calculator__error"
7086
7069
  };
7087
- var _hoisted_24$11 = {
7070
+ var _hoisted_24$10 = {
7088
7071
  key: 4,
7089
7072
  class: "mint-dose-calculator__mw-section"
7090
7073
  };
7091
- var _hoisted_25$11 = { class: "mint-dose-calculator__mw-label" };
7074
+ var _hoisted_25$10 = { class: "mint-dose-calculator__mw-label" };
7092
7075
  var _hoisted_26$8 = {
7093
7076
  key: 5,
7094
7077
  class: "mint-dose-calculator__form"
@@ -7334,7 +7317,7 @@ var DoseCalculator_default = /* @__PURE__ */ defineComponent({
7334
7317
  ]),
7335
7318
  _cache[17] || (_cache[17] = createElementVNode("div", { class: "mint-dose-calculator__divider" }, null, -1)),
7336
7319
  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);
7320
+ 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
7321
  }), 128))])])) : serialResult.value?.error ? (openBlock(), createElementBlock("div", _hoisted_21$14, toDisplayString(serialResult.value.error), 1)) : createCommentVNode("", true)
7339
7322
  ])) : activeMode.value === "conversion" ? (openBlock(), createElementBlock("div", _hoisted_22$14, [createVNode(FormField_default, { label: "Input Concentration" }, {
7340
7323
  default: withCtx(() => [createVNode(ConcentrationInput_default, {
@@ -7345,7 +7328,7 @@ var DoseCalculator_default = /* @__PURE__ */ defineComponent({
7345
7328
  }, null, 8, ["disabled", "molecular-weight"])]),
7346
7329
  _: 1
7347
7330
  }), !__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),
7331
+ __props.molecularWeight ? (openBlock(), createElementBlock("div", _hoisted_24$10, [createElementVNode("span", _hoisted_25$10, " Molecular Weight: " + toDisplayString(__props.molecularWeight) + " g/mol ", 1)])) : createCommentVNode("", true),
7349
7332
  hasTargetWells.value ? (openBlock(), createElementBlock("div", _hoisted_26$8, [createVNode(BaseButton_default, {
7350
7333
  variant: "primary",
7351
7334
  "full-width": "",
@@ -7432,11 +7415,11 @@ var _hoisted_16$17 = {
7432
7415
  };
7433
7416
  var _hoisted_17$17 = ["onClick"];
7434
7417
  var _hoisted_18$17 = ["aria-label", "onClick"];
7435
- var _hoisted_19$16 = {
7418
+ var _hoisted_19$17 = {
7436
7419
  key: 2,
7437
7420
  class: "mint-timeline__spacer--vertical"
7438
7421
  };
7439
- var _hoisted_20$15 = {
7422
+ var _hoisted_20$16 = {
7440
7423
  key: 3,
7441
7424
  class: "mint-timeline__spacer--horizontal"
7442
7425
  };
@@ -7744,8 +7727,8 @@ var ExperimentTimeline_default = /* @__PURE__ */ defineComponent({
7744
7727
  "stroke-width": "2",
7745
7728
  d: "M12 4v16m8-8H4"
7746
7729
  })], -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)
7730
+ __props.orientation === "vertical" && index < sortedSteps.value.length - 1 ? (openBlock(), createElementBlock("div", _hoisted_19$17)) : createCommentVNode("", true),
7731
+ __props.orientation === "horizontal" && index < sortedSteps.value.length - 1 ? (openBlock(), createElementBlock("div", _hoisted_20$16)) : createCommentVNode("", true)
7749
7732
  ], 40, _hoisted_2$44);
7750
7733
  }), 128)),
7751
7734
  __props.error ? (openBlock(), createElementBlock("div", _hoisted_21$13, [renderSlot(_ctx.$slots, "error", { error: __props.error }, () => [createVNode(DataStateInternal_default, {
@@ -7850,22 +7833,22 @@ var DEFAULT_WELL_LEGEND_ITEMS = [
7850
7833
  {
7851
7834
  type: "sample",
7852
7835
  label: "Sample",
7853
- color: "var(--mint-sample-1)"
7836
+ color: "#10b981"
7854
7837
  },
7855
7838
  {
7856
7839
  type: "blank",
7857
7840
  label: "Blank",
7858
- color: "var(--mint-sample-1)"
7841
+ color: "#f97316"
7859
7842
  },
7860
7843
  {
7861
7844
  type: "qc",
7862
7845
  label: "QC",
7863
- color: "var(--mint-sample-1)"
7846
+ color: "#8b5cf6"
7864
7847
  },
7865
7848
  {
7866
7849
  type: "iqc",
7867
7850
  label: "IQC",
7868
- color: "var(--mint-sample-1)"
7851
+ color: "#ec4899"
7869
7852
  }
7870
7853
  ];
7871
7854
  //#endregion
@@ -7906,17 +7889,13 @@ function sampleTypeMarker(type, groupColor) {
7906
7889
  }
7907
7890
  //#endregion
7908
7891
  //#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
- */
7892
+ /** Color for the built-in sample types when `sampleColors` has no entry. */
7914
7893
  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)"
7894
+ sample: "#10b981",
7895
+ control: "#3b82f6",
7896
+ blank: "#f97316",
7897
+ qc: "#8b5cf6",
7898
+ iqc: "#ec4899"
7920
7899
  };
7921
7900
  var HEATMAP_COLORS = {
7922
7901
  viridis: [
@@ -8719,16 +8698,15 @@ function wellStyle(well, state) {
8719
8698
  };
8720
8699
  const groupColor = well.sampleType && ((well.group ? state.sampleColors[well.group] : void 0) ?? state.sampleColors[well.sampleType] ?? DEFAULT_SAMPLE_TYPE_COLORS[well.sampleType]);
8721
8700
  if (!groupColor) return {};
8722
- const { background, border } = sampleTypeMarker(well.sampleType, groupColor).style;
8701
+ return sampleTint(groupColor);
8702
+ }
8703
+ /** 15% fill and 40% outline of a sample color; color-mix accepts hex and `var()` tokens alike. */
8704
+ function sampleTint(color) {
8723
8705
  return {
8724
- backgroundColor: background,
8725
- border
8706
+ backgroundColor: `color-mix(in srgb, ${color} 15%, transparent)`,
8707
+ border: `1px solid color-mix(in srgb, ${color} 40%, transparent)`
8726
8708
  };
8727
8709
  }
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
8710
  var sampleTypeIndicatorWarned = false;
8733
8711
  /** One dev-only warning per page for the no-op `showSampleTypeIndicator` prop. */
8734
8712
  function warnSampleTypeIndicatorDeprecated() {
@@ -8746,11 +8724,11 @@ function wellBadge(well, showBadges) {
8746
8724
  const count = well.metadata.injectionCount;
8747
8725
  if (count && count > 1) return {
8748
8726
  text: String(count),
8749
- color: "var(--text-primary)"
8727
+ color: "#6366f1"
8750
8728
  };
8751
8729
  if (well.metadata.customMethod) return {
8752
- text: "",
8753
- color: "var(--color-purple)"
8730
+ text: "+",
8731
+ color: "#ec4899"
8754
8732
  };
8755
8733
  return null;
8756
8734
  }
@@ -8807,27 +8785,19 @@ var _hoisted_16$16 = {
8807
8785
  key: 1,
8808
8786
  class: "mint-well-plate__well-id"
8809
8787
  };
8810
- var _hoisted_17$16 = {
8811
- key: 2,
8812
- class: "mint-well-plate__indicator"
8813
- };
8788
+ var _hoisted_17$16 = ["title"];
8814
8789
  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
8790
  key: 0,
8821
8791
  class: "mint-well-plate__legend"
8822
8792
  };
8793
+ var _hoisted_19$16 = { class: "mint-well-plate__legend-label" };
8794
+ var _hoisted_20$15 = { class: "mint-well-plate__legend-bar" };
8823
8795
  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 = {
8796
+ var _hoisted_22$12 = {
8827
8797
  key: 1,
8828
8798
  class: "mint-well-plate__sample-legend"
8829
8799
  };
8830
- var _hoisted_25$10 = { class: "mint-well-plate__sample-legend-text" };
8800
+ var _hoisted_23$10 = { class: "mint-well-plate__sample-legend-text" };
8831
8801
  //#endregion
8832
8802
  //#region src/components/WellPlate.vue
8833
8803
  var WellPlate_default = /* @__PURE__ */ defineComponent({
@@ -9159,42 +9129,35 @@ var WellPlate_default = /* @__PURE__ */ defineComponent({
9159
9129
  "prevent"
9160
9130
  ]), ["space"])
9161
9131
  ]
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)]);
9132
+ }, [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", {
9133
+ key: 2,
9134
+ class: "mint-well-plate__badge",
9135
+ style: normalizeStyle({ backgroundColor: getWellBadge(well)?.color }),
9136
+ title: getWellBadge(well)?.text === "+" ? "Custom method" : `${getWellBadge(well)?.text ?? ""}x injections`
9137
+ }, toDisplayString(getWellBadge(well)?.text), 13, _hoisted_17$16)) : createCommentVNode("", true)], 46, _hoisted_14$19)]);
9172
9138
  }), 128))
9173
9139
  ]);
9174
9140
  }), 128))])
9175
9141
  ], 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) => {
9142
+ props.heatmap?.enabled && props.heatmap.showLegend ? (openBlock(), createElementBlock("div", _hoisted_18$16, [
9143
+ createElementVNode("span", _hoisted_19$16, toDisplayString(props.heatmap.min ?? 0), 1),
9144
+ 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
9145
  return openBlock(), createElementBlock("div", {
9180
9146
  key: index,
9181
9147
  class: "mint-well-plate__legend-segment",
9182
9148
  style: normalizeStyle({ backgroundColor: color })
9183
9149
  }, null, 4);
9184
9150
  }), 128))]),
9185
- createElementVNode("span", _hoisted_23$10, toDisplayString(props.heatmap.max ?? 1), 1)
9151
+ createElementVNode("span", _hoisted_21$12, toDisplayString(props.heatmap.max ?? 1), 1)
9186
9152
  ])) : createCommentVNode("", true),
9187
- props.showLegend ? (openBlock(), createElementBlock("div", _hoisted_24$10, [(openBlock(true), createElementBlock(Fragment, null, renderList(activeLegendItems.value, (item) => {
9153
+ props.showLegend ? (openBlock(), createElementBlock("div", _hoisted_22$12, [(openBlock(true), createElementBlock(Fragment, null, renderList(activeLegendItems.value, (item) => {
9188
9154
  return openBlock(), createElementBlock("div", {
9189
9155
  key: item.type,
9190
9156
  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)]);
9157
+ }, [createElementVNode("span", {
9158
+ class: "mint-well-plate__sample-legend-dot",
9159
+ style: normalizeStyle(unref(sampleTint)(item.color))
9160
+ }, null, 4), createElementVNode("span", _hoisted_23$10, toDisplayString(item.label), 1)]);
9198
9161
  }), 128))])) : createCommentVNode("", true)
9199
9162
  ])])),
9200
9163
  __props.editable && unref(editingWellId) ? renderSlot(_ctx.$slots, "well-editor", {
@@ -9391,11 +9354,11 @@ var _hoisted_15$18 = { class: "mint-plate-editor__toolbar-end" };
9391
9354
  var _hoisted_16$15 = ["disabled", "title"];
9392
9355
  var _hoisted_17$15 = ["aria-pressed"];
9393
9356
  var _hoisted_18$15 = ["disabled"];
9394
- var _hoisted_19$14 = {
9357
+ var _hoisted_19$15 = {
9395
9358
  key: 1,
9396
9359
  class: "mint-plate-editor__body"
9397
9360
  };
9398
- var _hoisted_20$13 = { class: "mint-plate-editor__main" };
9361
+ var _hoisted_20$14 = { class: "mint-plate-editor__main" };
9399
9362
  var _hoisted_21$11 = {
9400
9363
  key: 0,
9401
9364
  class: "mint-plate-editor__footer"
@@ -9974,7 +9937,7 @@ var PlateEditor_default = /* @__PURE__ */ defineComponent({
9974
9937
  renderSlot(_ctx.$slots, "toolbar-extra")
9975
9938
  ])
9976
9939
  ])) : createCommentVNode("", true),
9977
- activeRack.value ? (openBlock(), createElementBlock("div", _hoisted_19$14, [createElementVNode("div", _hoisted_20$13, [(openBlock(), createBlock(WellPlate_default, {
9940
+ activeRack.value ? (openBlock(), createElementBlock("div", _hoisted_19$15, [createElementVNode("div", _hoisted_20$14, [(openBlock(), createBlock(WellPlate_default, {
9978
9941
  key: activeRack.value.id,
9979
9942
  "model-value": selection.value,
9980
9943
  format: activeRack.value.format,
@@ -10339,11 +10302,11 @@ var _hoisted_18$14 = {
10339
10302
  key: 4,
10340
10303
  class: "mint-reagent-list__cell"
10341
10304
  };
10342
- var _hoisted_19$13 = {
10305
+ var _hoisted_19$14 = {
10343
10306
  key: 0,
10344
10307
  class: "mint-reagent-list__expired-text"
10345
10308
  };
10346
- var _hoisted_20$12 = { key: 1 };
10309
+ var _hoisted_20$13 = { key: 1 };
10347
10310
  var _hoisted_21$10 = {
10348
10311
  key: 2,
10349
10312
  class: "mint-reagent-list__badge mint-reagent-list__badge--error"
@@ -10639,7 +10602,7 @@ var ReagentList_default = /* @__PURE__ */ defineComponent({
10639
10602
  }, toDisplayString(reagent.name), 9, _hoisted_14$17)) : (openBlock(), createElementBlock("span", _hoisted_15$17, toDisplayString(reagent.name), 1))])) : createCommentVNode("", true),
10640
10603
  __props.columns.includes("catalog") ? (openBlock(), createElementBlock("td", _hoisted_16$14, toDisplayString(reagent.catalogNumber || "-"), 1)) : createCommentVNode("", true),
10641
10604
  __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", {
10605
+ __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
10606
  class: "mint-reagent-list__badge-icon",
10644
10607
  fill: "none",
10645
10608
  stroke: "currentColor",
@@ -10832,12 +10795,12 @@ var _hoisted_17$13 = {
10832
10795
  class: "sg-field__order"
10833
10796
  };
10834
10797
  var _hoisted_18$13 = { class: "sg-field__layer" };
10835
- var _hoisted_19$12 = [
10798
+ var _hoisted_19$13 = [
10836
10799
  "disabled",
10837
10800
  "aria-label",
10838
10801
  "onClick"
10839
10802
  ];
10840
- var _hoisted_20$11 = [
10803
+ var _hoisted_20$12 = [
10841
10804
  "disabled",
10842
10805
  "aria-label",
10843
10806
  "onClick"
@@ -11256,7 +11219,7 @@ var SmartGroupFieldRecipe_default = /* @__PURE__ */ defineComponent({
11256
11219
  }, [createVNode(Icon, {
11257
11220
  d: ICON.chevUp,
11258
11221
  size: 12
11259
- }, null, 8, ["d"])], 8, _hoisted_19$12),
11222
+ }, null, 8, ["d"])], 8, _hoisted_19$13),
11260
11223
  createElementVNode("button", {
11261
11224
  type: "button",
11262
11225
  class: "sg-field__order-btn",
@@ -11267,7 +11230,7 @@ var SmartGroupFieldRecipe_default = /* @__PURE__ */ defineComponent({
11267
11230
  }, [createVNode(Icon, {
11268
11231
  d: ICON.chev,
11269
11232
  size: 12
11270
- }, null, 8, ["d"])], 8, _hoisted_20$11)
11233
+ }, null, 8, ["d"])], 8, _hoisted_20$12)
11271
11234
  ])) : createCommentVNode("", true),
11272
11235
  createElementVNode("div", _hoisted_21$9, toDisplayString(field.vals), 1)
11273
11236
  ], 2);
@@ -11445,11 +11408,11 @@ var _hoisted_15$15 = {
11445
11408
  var _hoisted_16$12 = ["onClick"];
11446
11409
  var _hoisted_17$12 = ["checked"];
11447
11410
  var _hoisted_18$12 = { class: "mg2-row__name" };
11448
- var _hoisted_19$11 = {
11411
+ var _hoisted_19$12 = {
11449
11412
  key: 0,
11450
11413
  class: "mg2-row__tag"
11451
11414
  };
11452
- var _hoisted_20$10 = {
11415
+ var _hoisted_20$11 = {
11453
11416
  key: 1,
11454
11417
  class: "mg2-row__tag mg2-row__tag--none"
11455
11418
  };
@@ -11777,14 +11740,14 @@ var SmartGroupManual_default = /* @__PURE__ */ defineComponent({
11777
11740
  readonly: ""
11778
11741
  }, null, 8, _hoisted_17$12),
11779
11742
  createElementVNode("span", _hoisted_18$12, toDisplayString(match.sample.name), 1),
11780
- match.sample.group ? (openBlock(), createElementBlock("span", _hoisted_19$11, [
11743
+ match.sample.group ? (openBlock(), createElementBlock("span", _hoisted_19$12, [
11781
11744
  createElementVNode("span", {
11782
11745
  class: "sg-dot",
11783
11746
  style: normalizeStyle({ background: match.sample.color ?? void 0 })
11784
11747
  }, null, 4),
11785
11748
  createTextVNode(toDisplayString(match.sample.group), 1),
11786
11749
  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"))
11750
+ ])) : (openBlock(), createElementBlock("span", _hoisted_20$11, "unassigned"))
11788
11751
  ], 10, _hoisted_16$12);
11789
11752
  }), 128))])
11790
11753
  ]), createElementVNode("div", _hoisted_21$8, [
@@ -12995,8 +12958,8 @@ var _hoisted_17$11 = {
12995
12958
  class: "mint-sample-selector__ungrouped-list"
12996
12959
  };
12997
12960
  var _hoisted_18$11 = { class: "mint-sample-selector__new-group" };
12998
- var _hoisted_19$10 = ["value"];
12999
- var _hoisted_20$9 = {
12961
+ var _hoisted_19$11 = ["value"];
12962
+ var _hoisted_20$10 = {
13000
12963
  key: 6,
13001
12964
  class: "mint-sample-selector__flat"
13002
12965
  };
@@ -13358,9 +13321,9 @@ var SampleSelector_default = /* @__PURE__ */ defineComponent({
13358
13321
  class: "mint-sample-selector__color-input",
13359
13322
  value: colorPickerSeed.value,
13360
13323
  onChange: handleColorChange
13361
- }, null, 40, _hoisted_19$10)
13324
+ }, null, 40, _hoisted_19$11)
13362
13325
  ])) : createCommentVNode("", true),
13363
- !isPlaceholderState.value && !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_20$9, [createElementVNode("div", _hoisted_21$7, [_cache[17] || (_cache[17] = createElementVNode("svg", {
13326
+ !isPlaceholderState.value && !groupingEnabled.value ? (openBlock(), createElementBlock("div", _hoisted_20$10, [createElementVNode("div", _hoisted_21$7, [_cache[17] || (_cache[17] = createElementVNode("svg", {
13364
13327
  class: "mint-sample-selector__search-icon",
13365
13328
  fill: "none",
13366
13329
  stroke: "currentColor",
@@ -13659,8 +13622,8 @@ var _hoisted_15$13 = [
13659
13622
  var _hoisted_16$10 = ["onPointerdown"];
13660
13623
  var _hoisted_17$10 = { class: "mint-schedule__event-title" };
13661
13624
  var _hoisted_18$10 = { class: "mint-schedule__event-time" };
13662
- var _hoisted_19$9 = ["onPointerdown"];
13663
- var _hoisted_20$8 = {
13625
+ var _hoisted_19$10 = ["onPointerdown"];
13626
+ var _hoisted_20$9 = {
13664
13627
  key: 0,
13665
13628
  class: "mint-schedule__blocked-label"
13666
13629
  };
@@ -14015,7 +13978,7 @@ var ScheduleCalendar_default = /* @__PURE__ */ defineComponent({
14015
13978
  key: 1,
14016
13979
  class: "mint-schedule__event-resize-handle mint-schedule__event-resize-handle--bottom",
14017
13980
  onPointerdown: ($event) => onResizePointerDown(event, "bottom", dayIdx, $event)
14018
- }, null, 40, _hoisted_19$9)) : createCommentVNode("", true)
13981
+ }, null, 40, _hoisted_19$10)) : createCommentVNode("", true)
14019
13982
  ])], 46, _hoisted_15$13);
14020
13983
  }), 128)),
14021
13984
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getBlockedForDay)(day), (blocked, bIdx) => {
@@ -14023,7 +13986,7 @@ var ScheduleCalendar_default = /* @__PURE__ */ defineComponent({
14023
13986
  key: `b-${bIdx}`,
14024
13987
  class: "mint-schedule__blocked",
14025
13988
  style: normalizeStyle(unref(getBlockedStyle)(blocked))
14026
- }, [blocked.label ? (openBlock(), createElementBlock("span", _hoisted_20$8, toDisplayString(blocked.label), 1)) : createCommentVNode("", true)], 4);
13989
+ }, [blocked.label ? (openBlock(), createElementBlock("span", _hoisted_20$9, toDisplayString(blocked.label), 1)) : createCommentVNode("", true)], 4);
14027
13990
  }), 128)),
14028
13991
  __props.showNowIndicator && unref(isToday)(day) && unref(getNowIndicatorStyle)() ? (openBlock(), createElementBlock("div", {
14029
13992
  key: 0,
@@ -15287,8 +15250,9 @@ function settingsGroupToTab(group) {
15287
15250
  function normalizeVisibleSettingsTabs(tabs, canShow) {
15288
15251
  return tabs.map(normalizeItemInput).filter(canShow);
15289
15252
  }
15290
- function buildSettingsTabs(baseTabs, showAppearance) {
15291
- return showAppearance ? [...baseTabs, APPEARANCE_TAB] : baseTabs;
15253
+ function buildSettingsTabs(baseTabs, showAppearance, appearanceFirst = false) {
15254
+ if (!showAppearance) return baseTabs;
15255
+ return appearanceFirst ? [APPEARANCE_TAB, ...baseTabs] : [...baseTabs, APPEARANCE_TAB];
15292
15256
  }
15293
15257
  //#endregion
15294
15258
  //#region src/components/SettingsModal.vue?vue&type=script&setup=true&lang.ts
@@ -15331,8 +15295,8 @@ var _hoisted_18$9 = {
15331
15295
  class: "mint-settings-modal__swatches",
15332
15296
  "aria-hidden": "true"
15333
15297
  };
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" };
15298
+ var _hoisted_19$9 = { class: "mint-settings-modal__palette-name" };
15299
+ var _hoisted_20$8 = { class: "mint-settings-modal__setting mint-settings-modal__setting--inline" };
15336
15300
  var _hoisted_21$5 = {
15337
15301
  class: "mint-settings-modal__status",
15338
15302
  role: "status"
@@ -15359,6 +15323,7 @@ var SettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
15359
15323
  type: Boolean,
15360
15324
  default: true
15361
15325
  },
15326
+ appearanceFirst: { type: Boolean },
15362
15327
  size: { default: "lg" },
15363
15328
  layout: { default: void 0 },
15364
15329
  schema: {},
@@ -15462,7 +15427,7 @@ var SettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
15462
15427
  const visibleSchemaGroups = computed(() => settingsSchema.value ? settingsSchema.value.groups.filter((g) => builder.isSectionVisible(g.id)) : []);
15463
15428
  const manualTabs = computed(() => normalizeVisibleSettingsTabs(props.tabs, canShowForCurrentUser));
15464
15429
  const allTabs = computed(() => {
15465
- return buildSettingsTabs(settingsSchema.value ? visibleSchemaGroups.value.map(settingsGroupToTab) : manualTabs.value, props.showAppearance);
15430
+ return buildSettingsTabs(settingsSchema.value ? visibleSchemaGroups.value.map(settingsGroupToTab) : manualTabs.value, props.showAppearance, props.appearanceFirst);
15466
15431
  });
15467
15432
  const activeTab = ref(allTabs.value[0]?.id || "appearance");
15468
15433
  /** Above this many plugin groups the default layout switches from one stacked page to the rail. */
@@ -15485,7 +15450,7 @@ var SettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
15485
15450
  icon: tab.icon,
15486
15451
  description: tab.description,
15487
15452
  meta: group ? modified ? String(modified) : void 0 : tab.meta,
15488
- section: props.showAppearance ? tab.id === "appearance" ? "Personal" : "Plugin" : void 0
15453
+ section: props.showAppearance ? tab.id === "appearance" ? "Personal" : tab.section ?? "Plugin" : void 0
15489
15454
  };
15490
15455
  }));
15491
15456
  function selectTab(id) {
@@ -15786,7 +15751,7 @@ var SettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
15786
15751
  style: normalizeStyle({ backgroundColor: color })
15787
15752
  }, null, 4);
15788
15753
  }), 128))]),
15789
- createElementVNode("span", _hoisted_19$8, toDisplayString(palette.name), 1),
15754
+ createElementVNode("span", _hoisted_19$9, toDisplayString(palette.name), 1),
15790
15755
  _cache[9] || (_cache[9] = createElementVNode("svg", {
15791
15756
  class: "mint-settings-modal__palette-check",
15792
15757
  viewBox: "0 0 16 16",
@@ -15799,7 +15764,7 @@ var SettingsModal_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
15799
15764
  }, [createElementVNode("path", { d: "M3.5 8.5l3 3 6-7" })], -1))
15800
15765
  ], 10, _hoisted_17$9);
15801
15766
  }), 128))])]),
15802
- createElementVNode("div", _hoisted_20$7, [
15767
+ createElementVNode("div", _hoisted_20$8, [
15803
15768
  _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
15769
  createVNode(SegmentedControl_default, {
15805
15770
  "model-value": unref(settings).tableDensity,
@@ -16601,8 +16566,8 @@ var _hoisted_16$8 = [
16601
16566
  ];
16602
16567
  var _hoisted_17$8 = { class: "mint-group-assigner__pill-name" };
16603
16568
  var _hoisted_18$8 = { class: "mint-group-assigner__pill-count" };
16604
- var _hoisted_19$7 = ["onClick"];
16605
- var _hoisted_20$6 = {
16569
+ var _hoisted_19$8 = ["onClick"];
16570
+ var _hoisted_20$7 = {
16606
16571
  key: 0,
16607
16572
  class: "mint-group-assigner__zone-empty"
16608
16573
  };
@@ -16815,9 +16780,9 @@ var GroupAssigner_default = /* @__PURE__ */ defineComponent({
16815
16780
  fill: "none",
16816
16781
  stroke: "currentColor",
16817
16782
  "stroke-width": "2"
16818
- }, [createElementVNode("path", { d: "M6 18L18 6M6 6l12 12" })], -1)])], 8, _hoisted_19$7)
16783
+ }, [createElementVNode("path", { d: "M6 18L18 6M6 6l12 12" })], -1)])], 8, _hoisted_19$8)
16819
16784
  ], 40, _hoisted_16$8);
16820
- }), 128)), unref(zone2Groups).length === 0 ? (openBlock(), createElementBlock("div", _hoisted_20$6, " Drag groups here ")) : createCommentVNode("", true)])], 38)]),
16785
+ }), 128)), unref(zone2Groups).length === 0 ? (openBlock(), createElementBlock("div", _hoisted_20$7, " Drag groups here ")) : createCommentVNode("", true)])], 38)]),
16821
16786
  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
16787
  key: 0,
16823
16788
  type: "button",
@@ -16956,8 +16921,8 @@ var _hoisted_15$10 = ["value"];
16956
16921
  var _hoisted_16$7 = { class: "mint-reagent-editor__generator" };
16957
16922
  var _hoisted_17$7 = { class: "mint-reagent-editor__generator-inputs" };
16958
16923
  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" };
16924
+ var _hoisted_19$7 = { class: "mint-reagent-editor__field mint-reagent-editor__field--flex" };
16925
+ var _hoisted_20$6 = { class: "mint-reagent-editor__presets" };
16961
16926
  var _hoisted_21$3 = ["onClick"];
16962
16927
  var _hoisted_22$3 = ["disabled"];
16963
16928
  var _hoisted_23$2 = {
@@ -17205,14 +17170,14 @@ var ReagentEditor_default = /* @__PURE__ */ defineComponent({
17205
17170
  min: 0,
17206
17171
  step: 10,
17207
17172
  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, {
17173
+ }, 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
17174
  modelValue: generatorCount.value,
17210
17175
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => generatorCount.value = $event),
17211
17176
  min: 2,
17212
17177
  max: __props.maxLevels,
17213
17178
  step: 1,
17214
17179
  size: "sm"
17215
- }, null, 8, ["modelValue", "max"])])]), createElementVNode("div", _hoisted_20$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.presets, (preset) => {
17180
+ }, null, 8, ["modelValue", "max"])])]), createElementVNode("div", _hoisted_20$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.presets, (preset) => {
17216
17181
  return openBlock(), createElementBlock("button", {
17217
17182
  key: preset.label,
17218
17183
  type: "button",
@@ -18805,11 +18770,11 @@ var _hoisted_18$6 = {
18805
18770
  key: 2,
18806
18771
  class: "mint-batch-progress__state"
18807
18772
  };
18808
- var _hoisted_19$5 = {
18773
+ var _hoisted_19$6 = {
18809
18774
  key: 3,
18810
18775
  class: "mint-batch-progress__state"
18811
18776
  };
18812
- var _hoisted_20$4 = {
18777
+ var _hoisted_20$5 = {
18813
18778
  key: 4,
18814
18779
  class: "mint-batch-progress__state"
18815
18780
  };
@@ -18987,11 +18952,11 @@ var BatchProgressList_default = /* @__PURE__ */ defineComponent({
18987
18952
  state: "error",
18988
18953
  size: "sm",
18989
18954
  title: __props.error
18990
- }, null, 8, ["title"])])])) : __props.loading ? (openBlock(), createElementBlock("div", _hoisted_19$5, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(DataStateInternal_default, {
18955
+ }, null, 8, ["title"])])])) : __props.loading ? (openBlock(), createElementBlock("div", _hoisted_19$6, [renderSlot(_ctx.$slots, "loading", {}, () => [createVNode(DataStateInternal_default, {
18991
18956
  state: "loading",
18992
18957
  size: "sm",
18993
18958
  "loading-label": "Loading batch"
18994
- })])])) : __props.items.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_20$4, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
18959
+ })])])) : __props.items.length === 0 ? (openBlock(), createElementBlock("div", _hoisted_20$5, [renderSlot(_ctx.$slots, "empty", {}, () => [createVNode(DataStateInternal_default, {
18995
18960
  state: "empty",
18996
18961
  size: "sm",
18997
18962
  title: __props.emptyMessage
@@ -19101,8 +19066,8 @@ var _hoisted_16$5 = {
19101
19066
  };
19102
19067
  var _hoisted_17$5 = { class: "mint-summary__pill-key" };
19103
19068
  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" };
19069
+ var _hoisted_19$5 = { class: "mint-summary__table-header" };
19070
+ var _hoisted_20$4 = { class: "mint-summary__section-label" };
19106
19071
  var _hoisted_21$1 = { class: "mint-summary__section-count" };
19107
19072
  var _hoisted_22$1 = {
19108
19073
  key: 3,
@@ -19300,7 +19265,7 @@ var ExperimentDataViewer_default = /* @__PURE__ */ defineComponent({
19300
19265
  "searchable"
19301
19266
  ])) : createCommentVNode("", true)
19302
19267
  ]);
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, {
19268
+ }), 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
19269
  data: section.rows,
19305
19270
  columns: columnsForSection(section.columns || []),
19306
19271
  searchable: (section.rows?.length || 0) > 10,
@@ -19583,8 +19548,8 @@ var _hoisted_18$4 = {
19583
19548
  key: 1,
19584
19549
  class: "mint-resource-card__footer"
19585
19550
  };
19586
- var _hoisted_19$3 = { class: "mint-resource-card__tags" };
19587
- var _hoisted_20$2 = { class: "mint-resource-card__action" };
19551
+ var _hoisted_19$4 = { class: "mint-resource-card__tags" };
19552
+ var _hoisted_20$3 = { class: "mint-resource-card__action" };
19588
19553
  //#endregion
19589
19554
  //#region src/components/ResourceCard.vue
19590
19555
  var ResourceCard_default = /* @__PURE__ */ defineComponent({
@@ -19678,7 +19643,7 @@ var ResourceCard_default = /* @__PURE__ */ defineComponent({
19678
19643
  class: "mint-resource-card__spec"
19679
19644
  }, [createElementVNode("span", _hoisted_16$4, toDisplayString(spec.label), 1), createElementVNode("span", _hoisted_17$4, toDisplayString(spec.value), 1)]);
19680
19645
  }), 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) => {
19646
+ __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
19647
  return openBlock(), createBlock(BasePill_default, {
19683
19648
  key: tag,
19684
19649
  size: "sm"
@@ -19686,7 +19651,7 @@ var ResourceCard_default = /* @__PURE__ */ defineComponent({
19686
19651
  default: withCtx(() => [createTextVNode(toDisplayString(tag), 1)]),
19687
19652
  _: 2
19688
19653
  }, 1024);
19689
- }), 128))]), createElementVNode("div", _hoisted_20$2, [renderSlot(_ctx.$slots, "action", {}, () => [__props.showBookAction ? (openBlock(), createElementBlock("button", {
19654
+ }), 128))]), createElementVNode("div", _hoisted_20$3, [renderSlot(_ctx.$slots, "action", {}, () => [__props.showBookAction ? (openBlock(), createElementBlock("button", {
19690
19655
  key: 0,
19691
19656
  type: "button",
19692
19657
  class: "mint-resource-card__book-btn",
@@ -19872,11 +19837,11 @@ var ExperimentSelectorModal_vue_vue_type_script_setup_true_lang_default = /*@__P
19872
19837
  return {
19873
19838
  code: experiment.experiment_code,
19874
19839
  title: experiment.name,
19875
- meta: [
19876
- ...groupToggle.value ? [] : [experiment.project_name || experiment.project || ""],
19877
- owner ? [owner.first_name, owner.last_name].filter(Boolean).join(" ") || owner.username : "",
19878
- formatExperimentStatus(experiment.status)
19879
- ].filter(Boolean),
19840
+ meta: [...groupToggle.value ? [] : [experiment.project_name || experiment.project || ""], owner ? [owner.first_name, owner.last_name].filter(Boolean).join(" ") || owner.username : ""].filter(Boolean),
19841
+ status: experiment.status ? {
19842
+ label: formatExperimentStatus(experiment.status),
19843
+ variant: getExperimentStatusVariant(experiment.status)
19844
+ } : void 0,
19880
19845
  date: formatExperimentDate(experiment.created_at)
19881
19846
  };
19882
19847
  }
@@ -20656,8 +20621,8 @@ var _hoisted_18$3 = {
20656
20621
  class: "mint-experiment-popover__card mint-experiment-popover__card--error",
20657
20622
  role: "alert"
20658
20623
  };
20659
- var _hoisted_19$2 = { class: "mint-experiment-popover__card-info" };
20660
- var _hoisted_20$1 = { class: "mint-experiment-popover__card-message" };
20624
+ var _hoisted_19$3 = { class: "mint-experiment-popover__card-info" };
20625
+ var _hoisted_20$2 = { class: "mint-experiment-popover__card-message" };
20661
20626
  var _hoisted_21 = { class: "mint-experiment-popover__card-actions" };
20662
20627
  var _hoisted_22 = {
20663
20628
  key: 2,
@@ -20864,7 +20829,7 @@ var ExperimentPopover_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*
20864
20829
  "stroke-linejoin": "round",
20865
20830
  "stroke-width": "1.75",
20866
20831
  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", {
20832
+ })])], -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
20833
  type: "button",
20869
20834
  class: "mint-experiment-popover__change-btn",
20870
20835
  onClick: handleSelect
@@ -20994,12 +20959,12 @@ var _hoisted_17$2 = {
20994
20959
  d: "M3.5 8.5l3 3 6-7"
20995
20960
  };
20996
20961
  var _hoisted_18$2 = { key: 1 };
20997
- var _hoisted_19$1 = {
20962
+ var _hoisted_19$2 = {
20998
20963
  key: 0,
20999
20964
  class: "mint-fit-panel__check-shape",
21000
20965
  d: "M8 1.5l7 12.5H1z"
21001
20966
  };
21002
- var _hoisted_20 = {
20967
+ var _hoisted_20$1 = {
21003
20968
  key: 1,
21004
20969
  class: "mint-fit-panel__check-shape",
21005
20970
  cx: "8",
@@ -21119,7 +21084,7 @@ var FitPanel_default = /* @__PURE__ */ defineComponent({
21119
21084
  return openBlock(), createElementBlock("span", {
21120
21085
  key: idx,
21121
21086
  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", {
21087
+ }, [(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
21088
  class: "mint-fit-panel__check-mark",
21124
21089
  d: "M8 6v3M8 11.5v.01"
21125
21090
  }, null, -1))]))])), createTextVNode(" " + toDisplayString(item.label) + " " + toDisplayString(item.value), 1)], 2);
@@ -21178,19 +21143,24 @@ var _hoisted_1$2 = [
21178
21143
  ];
21179
21144
  var _hoisted_2$2 = {
21180
21145
  key: 0,
21181
- class: "mint-picker__skeleton"
21146
+ class: "mint-picker__truncated",
21147
+ role: "status"
21182
21148
  };
21183
21149
  var _hoisted_3$2 = {
21184
21150
  key: 1,
21185
- role: "alert",
21186
- class: "mint-picker__empty"
21151
+ class: "mint-picker__skeleton"
21187
21152
  };
21188
21153
  var _hoisted_4$2 = {
21189
21154
  key: 2,
21155
+ role: "alert",
21156
+ class: "mint-picker__empty"
21157
+ };
21158
+ var _hoisted_5$2 = {
21159
+ key: 3,
21190
21160
  class: "mint-picker__empty",
21191
21161
  role: "status"
21192
21162
  };
21193
- var _hoisted_5$2 = [
21163
+ var _hoisted_6$2 = [
21194
21164
  "role",
21195
21165
  "data-path",
21196
21166
  "aria-level",
@@ -21203,8 +21173,8 @@ var _hoisted_5$2 = [
21203
21173
  "onDblclick",
21204
21174
  "onKeydown"
21205
21175
  ];
21206
- var _hoisted_6$2 = { class: "mint-picker__cell mint-picker__cell--check" };
21207
- var _hoisted_7$2 = {
21176
+ var _hoisted_7$2 = { class: "mint-picker__cell mint-picker__cell--check" };
21177
+ var _hoisted_8$2 = {
21208
21178
  key: 0,
21209
21179
  class: "mint-picker__lock",
21210
21180
  viewBox: "0 0 24 24",
@@ -21213,13 +21183,13 @@ var _hoisted_7$2 = {
21213
21183
  "stroke-width": "1.8",
21214
21184
  "aria-hidden": "true"
21215
21185
  };
21216
- var _hoisted_8$2 = ["d"];
21217
- var _hoisted_9$2 = { class: "mint-picker__cell mint-picker__cell--name" };
21218
- var _hoisted_10$2 = {
21186
+ var _hoisted_9$2 = ["d"];
21187
+ var _hoisted_10$2 = { class: "mint-picker__cell mint-picker__cell--name" };
21188
+ var _hoisted_11$2 = {
21219
21189
  key: 1,
21220
21190
  class: "mint-picker__disclosure"
21221
21191
  };
21222
- var _hoisted_11$2 = {
21192
+ var _hoisted_12$2 = {
21223
21193
  class: "mint-picker__node-icon",
21224
21194
  viewBox: "0 0 24 24",
21225
21195
  fill: "none",
@@ -21227,19 +21197,19 @@ var _hoisted_11$2 = {
21227
21197
  "stroke-width": "1.7",
21228
21198
  "aria-hidden": "true"
21229
21199
  };
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 = {
21200
+ var _hoisted_13$2 = ["d"];
21201
+ var _hoisted_14$2 = { class: "mint-picker__name" };
21202
+ var _hoisted_15$2 = { key: 0 };
21203
+ var _hoisted_16$1 = {
21234
21204
  key: 1,
21235
21205
  class: "mint-picker__reason"
21236
21206
  };
21237
- var _hoisted_16$1 = {
21207
+ var _hoisted_17$1 = {
21238
21208
  key: 2,
21239
21209
  class: "mint-picker__parent-name"
21240
21210
  };
21241
- var _hoisted_17$1 = { class: "mint-picker__cell mint-picker__cell--time" };
21242
- var _hoisted_18$1 = {
21211
+ var _hoisted_18$1 = { class: "mint-picker__cell mint-picker__cell--time" };
21212
+ var _hoisted_19$1 = {
21243
21213
  key: 0,
21244
21214
  class: "mint-picker__branch-error",
21245
21215
  role: "alert"
@@ -21255,6 +21225,7 @@ var FilePickerListInternal_default = /* @__PURE__ */ defineComponent({
21255
21225
  loading: { type: Boolean },
21256
21226
  error: {},
21257
21227
  query: {},
21228
+ truncated: { type: Boolean },
21258
21229
  mode: {},
21259
21230
  selected: { type: Function },
21260
21231
  selectable: { type: Function },
@@ -21382,106 +21353,110 @@ var FilePickerListInternal_default = /* @__PURE__ */ defineComponent({
21382
21353
  "aria-label": "Folders and files",
21383
21354
  "aria-multiselectable": multi.value,
21384
21355
  "aria-busy": __props.loading
21385
- }, [_cache[6] || (_cache[6] = createElementVNode("div", {
21386
- class: "mint-picker__list-head",
21387
- "aria-hidden": "true"
21388
21356
  }, [
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)
21357
+ _cache[6] || (_cache[6] = createElementVNode("div", {
21358
+ class: "mint-picker__list-head",
21359
+ "aria-hidden": "true"
21424
21360
  }, [
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",
21361
+ createElementVNode("span"),
21362
+ createElementVNode("span", null, "Name"),
21363
+ createElementVNode("span", null, "Size"),
21364
+ createElementVNode("span", null, "Modified")
21365
+ ], -1)),
21366
+ __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),
21367
+ __props.loading ? (openBlock(), createElementBlock("div", _hoisted_3$2, [(openBlock(), createElementBlock(Fragment, null, renderList(6, (n) => {
21368
+ return createVNode(Skeleton_default, {
21369
+ key: n,
21370
+ width: "100%",
21371
+ height: "1.25rem"
21372
+ });
21373
+ }), 64))])) : __props.error ? (openBlock(), createElementBlock("div", _hoisted_4$2, [createElementVNode("span", null, toDisplayString(__props.error), 1), createVNode(BaseButton_default, {
21374
+ variant: "secondary",
21478
21375
  size: "sm",
21479
- onClick: ($event) => emit("expand", row.node)
21376
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("retry"))
21480
21377
  }, {
21481
- default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("Close branch", -1)])]),
21378
+ default: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode("Try again", -1)])]),
21482
21379
  _: 1
21483
- }, 8, ["onClick"])])) : createCommentVNode("", true)], 64);
21484
- }), 128))], 8, _hoisted_1$2);
21380
+ })])) : !__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) => {
21381
+ return openBlock(), createElementBlock(Fragment, { key: row.node.path }, [createElementVNode("div", {
21382
+ role: tree.value ? "treeitem" : "option",
21383
+ "data-path": row.node.path,
21384
+ "aria-level": tree.value ? row.depth + 1 : void 0,
21385
+ "aria-selected": __props.selected(row.node),
21386
+ "aria-disabled": !!reason(row.node),
21387
+ "aria-expanded": tree.value && row.node.kind === "folder" && !reason(row.node) ? row.expanded : void 0,
21388
+ tabindex: !reason(row.node) && row.node.path === focusablePath.value ? 0 : -1,
21389
+ class: normalizeClass(["mint-picker__row", {
21390
+ "mint-picker__row--selected": __props.selected(row.node),
21391
+ "mint-picker__row--unreadable": !!reason(row.node)
21392
+ }]),
21393
+ style: normalizeStyle({ "--picker-depth": row.depth }),
21394
+ title: reason(row.node) || row.node.name,
21395
+ onClick: ($event) => !reason(row.node) && emit("select", row.node, $event),
21396
+ onDblclick: ($event) => !reason(row.node) && emit("enter", row.node),
21397
+ onKeydown: ($event) => keydown($event, row)
21398
+ }, [
21399
+ 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, {
21400
+ key: 1,
21401
+ size: "sm",
21402
+ inert: "",
21403
+ "aria-hidden": "true",
21404
+ "model-value": __props.selected(row.node),
21405
+ indeterminate: partial(row.node)
21406
+ }, null, 8, ["model-value", "indeterminate"])) : createCommentVNode("", true)]),
21407
+ createElementVNode("span", _hoisted_10$2, [
21408
+ tree.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [row.node.kind === "folder" && row.node.hasChildren !== false && !reason(row.node) ? (openBlock(), createBlock(IconButton_default, {
21409
+ key: 0,
21410
+ size: "sm",
21411
+ variant: "ghost",
21412
+ class: "mint-picker__disclosure",
21413
+ label: `${row.expanded ? "Collapse" : "Expand"} ${row.node.name}`,
21414
+ tabindex: "-1",
21415
+ loading: row.loading,
21416
+ onClick: withModifiers(($event) => emit("expand", row.node), ["stop"]),
21417
+ onDblclick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"]))
21418
+ }, {
21419
+ default: withCtx(() => [(openBlock(), createElementBlock("svg", {
21420
+ viewBox: "0 0 16 16",
21421
+ fill: "currentColor",
21422
+ "aria-hidden": "true",
21423
+ class: normalizeClass({ "mint-picker__chevron--open": row.expanded })
21424
+ }, [..._cache[3] || (_cache[3] = [createElementVNode("path", { d: "m6 3 5 5-5 5z" }, null, -1)])], 2))]),
21425
+ _: 2
21426
+ }, 1032, [
21427
+ "label",
21428
+ "loading",
21429
+ "onClick"
21430
+ ])) : (openBlock(), createElementBlock("span", _hoisted_11$2))], 64)) : createCommentVNode("", true),
21431
+ (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)])),
21432
+ createElementVNode("span", _hoisted_14$2, [
21433
+ createTextVNode(toDisplayString(parts(row.node.name)[0]), 1),
21434
+ parts(row.node.name)[1] ? (openBlock(), createElementBlock("mark", _hoisted_15$2, toDisplayString(parts(row.node.name)[1]), 1)) : createCommentVNode("", true),
21435
+ createTextVNode(toDisplayString(parts(row.node.name)[2]), 1)
21436
+ ]),
21437
+ 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),
21438
+ __props.query && __props.mode === "folder" && row.node.kind === "file" && row.node.parentPath && !reason(row.node) ? (openBlock(), createBlock(BaseButton_default, {
21439
+ key: 3,
21440
+ variant: "ghost",
21441
+ size: "sm",
21442
+ onClick: withModifiers(($event) => emit("parent", row.node), ["stop"])
21443
+ }, {
21444
+ default: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode("Select its folder", -1)])]),
21445
+ _: 1
21446
+ }, 8, ["onClick"])) : createCommentVNode("", true)
21447
+ ]),
21448
+ createElementVNode("span", { class: normalizeClass(["mint-picker__cell mint-picker__cell--size", { "mint-picker__partial": partial(row.node) }]) }, toDisplayString(size(row.node)), 3),
21449
+ createElementVNode("span", _hoisted_18$1, toDisplayString(unref(formatModified)(row.node.modifiedAt)), 1)
21450
+ ], 46, _hoisted_6$2), row.error ? (openBlock(), createElementBlock("div", _hoisted_19$1, [createTextVNode(toDisplayString(row.error), 1), createVNode(BaseButton_default, {
21451
+ variant: "ghost",
21452
+ size: "sm",
21453
+ onClick: ($event) => emit("expand", row.node)
21454
+ }, {
21455
+ default: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode("Close branch", -1)])]),
21456
+ _: 1
21457
+ }, 8, ["onClick"])])) : createCommentVNode("", true)], 64);
21458
+ }), 128))
21459
+ ], 8, _hoisted_1$2);
21485
21460
  };
21486
21461
  }
21487
21462
  });
@@ -21594,7 +21569,25 @@ var FilePickerPreviewInternal_default = /* @__PURE__ */ defineComponent({
21594
21569
  });
21595
21570
  //#endregion
21596
21571
  //#region src/composables/filePicker/usePickerNavigation.ts
21597
- function usePickerNavigation(adapter, request, systemFilter = () => true) {
21572
+ var byName = new Intl.Collator(void 0, {
21573
+ numeric: true,
21574
+ sensitivity: "base"
21575
+ }).compare;
21576
+ /** Folders first; undated rows go last in either time order. */
21577
+ function ordered(items, sort) {
21578
+ if (!sort) return items;
21579
+ const times = new Map(items.map((node) => [node, node.modifiedAt ? Date.parse(node.modifiedAt) : NaN]));
21580
+ const time = (node) => times.get(node);
21581
+ return [...items].sort((a, b) => {
21582
+ if (a.kind !== b.kind) return a.kind === "folder" ? -1 : 1;
21583
+ if (sort === "name") return byName(a.name, b.name);
21584
+ if (sort === "name-desc") return byName(b.name, a.name);
21585
+ const [ta, tb] = [time(a), time(b)];
21586
+ if (Number.isNaN(ta) || Number.isNaN(tb)) return Number.isNaN(ta) === Number.isNaN(tb) ? byName(a.name, b.name) : Number.isNaN(ta) ? 1 : -1;
21587
+ return (sort === "newest" ? tb - ta : ta - tb) || byName(a.name, b.name);
21588
+ });
21589
+ }
21590
+ function usePickerNavigation(adapter, request, systemFilter = () => true, sort = () => void 0) {
21598
21591
  const path = shallowRef("");
21599
21592
  const trail = ref([]);
21600
21593
  const entries = shallowRef([]);
@@ -21605,6 +21598,8 @@ function usePickerNavigation(adapter, request, systemFilter = () => true) {
21605
21598
  const expansionErrors = ref(/* @__PURE__ */ new Map());
21606
21599
  const loading = shallowRef(false);
21607
21600
  const error = shallowRef("");
21601
+ /** True when the current search results stopped at an adapter limit. */
21602
+ const truncated = shallowRef(false);
21608
21603
  let epoch = 0;
21609
21604
  let navigation = 0;
21610
21605
  let controller;
@@ -21724,13 +21719,16 @@ function usePickerNavigation(adapter, request, systemFilter = () => true) {
21724
21719
  };
21725
21720
  loading.value = true;
21726
21721
  error.value = "";
21722
+ truncated.value = false;
21727
21723
  entries.value = [];
21728
21724
  try {
21729
- const items = query.trim() ? await adapter().search(query.trim(), {
21725
+ const found = query.trim() ? await adapter().search(query.trim(), {
21730
21726
  path: path.value,
21731
21727
  recursive
21732
21728
  }, options) : path.value ? await loadChildren(path.value, [], refresh) : await adapter().listRoot(options);
21733
21729
  if (token !== navigation) return;
21730
+ const items = Array.isArray(found) ? found : found.nodes;
21731
+ truncated.value = !Array.isArray(found) && found.truncated;
21734
21732
  register(items, query.trim() ? void 0 : path.value);
21735
21733
  entries.value = items;
21736
21734
  if (!query.trim()) prefetch(items);
@@ -21776,8 +21774,9 @@ function usePickerNavigation(adapter, request, systemFilter = () => true) {
21776
21774
  }
21777
21775
  const rows = computed(() => {
21778
21776
  const result = [];
21777
+ const order = sort();
21779
21778
  function visit(items, depth, ancestors) {
21780
- for (const item of items) {
21779
+ for (const item of ordered(items, order)) {
21781
21780
  if (ancestors.has(item.path) || depth > 30) continue;
21782
21781
  const node = nodes.value.get(item.path) ?? item;
21783
21782
  if (!isAllowed(node)) continue;
@@ -21806,6 +21805,7 @@ function usePickerNavigation(adapter, request, systemFilter = () => true) {
21806
21805
  expansionErrors,
21807
21806
  loading,
21808
21807
  error,
21808
+ truncated,
21809
21809
  rows,
21810
21810
  isAllowed,
21811
21811
  clear,
@@ -22111,12 +22111,13 @@ function useFilePicker(props, emit, searchArea) {
22111
22111
  const source = shallowRef(allowedSources.value.includes(props.initialSelection?.source) ? props.initialSelection.source : allowedSources.value[0] ?? "server");
22112
22112
  const query = shallowRef("");
22113
22113
  const recursive = shallowRef(false);
22114
+ const sort = shallowRef(props.defaultSort);
22114
22115
  const skipBlanks = shallowRef(false);
22115
22116
  const reviewing = shallowRef(false);
22116
22117
  const localFiles = shallowRef([]);
22117
22118
  const localPaths = /* @__PURE__ */ new WeakMap();
22118
22119
  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);
22120
+ const nav = usePickerNavigation(() => source.value === "localFile" ? localAdapter.value : props.adapter, () => ({ source: source.value }), (node) => props.systemFilter?.(node, source.value) !== false, () => sort.value);
22120
22121
  const capability = computed(() => props.capabilities[source.value]);
22121
22122
  const selection = usePickerSelection(nav, () => props.selectionMode, () => capability.value, () => skipBlanks.value);
22122
22123
  const { path, trail, loading, error, rows } = nav;
@@ -22199,6 +22200,7 @@ function useFilePicker(props, emit, searchArea) {
22199
22200
  watch(() => props.open, (open) => {
22200
22201
  clearTimeout(timer);
22201
22202
  if (open) {
22203
+ sort.value = props.defaultSort;
22202
22204
  if (!initialized) {
22203
22205
  path.value = props.initialPath;
22204
22206
  if (path.value) trail.value = [{
@@ -22360,10 +22362,11 @@ function useFilePicker(props, emit, searchArea) {
22360
22362
  }
22361
22363
  async function selectLocalFiles() {
22362
22364
  const token = openGeneration;
22363
- const items = props.selectionMode === "single-file" || props.selectionMode === "multi-file" ? await localAdapter.value.search("", {
22365
+ const found = props.selectionMode === "single-file" || props.selectionMode === "multi-file" ? await localAdapter.value.search("", {
22364
22366
  path: "",
22365
22367
  recursive: true
22366
22368
  }) : nav.entries.value;
22369
+ const items = Array.isArray(found) ? found : found.nodes;
22367
22370
  if (token !== openGeneration || !props.open || source.value !== "localFile") return;
22368
22371
  nav.register(items);
22369
22372
  const candidates = items.filter((node) => selection.selectable(node));
@@ -22408,6 +22411,7 @@ function useFilePicker(props, emit, searchArea) {
22408
22411
  source,
22409
22412
  query,
22410
22413
  recursive,
22414
+ sort,
22411
22415
  skipBlanks,
22412
22416
  reviewing,
22413
22417
  nav,
@@ -22470,32 +22474,38 @@ var _hoisted_8 = {
22470
22474
  key: 0,
22471
22475
  class: "mint-picker__accepts"
22472
22476
  };
22473
- var _hoisted_9 = ["aria-pressed"];
22474
- var _hoisted_10 = ["disabled"];
22475
- var _hoisted_11 = {
22477
+ var _hoisted_9 = [
22478
+ "aria-expanded",
22479
+ "aria-label",
22480
+ "onClick",
22481
+ "onKeydown"
22482
+ ];
22483
+ var _hoisted_10 = ["aria-pressed"];
22484
+ var _hoisted_11 = ["disabled"];
22485
+ var _hoisted_12 = {
22476
22486
  key: 1,
22477
22487
  class: "mint-picker__empty"
22478
22488
  };
22479
- var _hoisted_12 = {
22489
+ var _hoisted_13 = {
22480
22490
  key: 0,
22481
22491
  class: "mint-picker__local-upload"
22482
22492
  };
22483
- var _hoisted_13 = {
22493
+ var _hoisted_14 = {
22484
22494
  key: 0,
22485
22495
  role: "alert"
22486
22496
  };
22487
- var _hoisted_14 = {
22497
+ var _hoisted_15 = {
22488
22498
  key: 1,
22489
22499
  class: "mint-picker__workspace"
22490
22500
  };
22491
- var _hoisted_15 = { class: "mint-picker__footer" };
22492
- var _hoisted_16 = {
22501
+ var _hoisted_16 = { class: "mint-picker__footer" };
22502
+ var _hoisted_17 = {
22493
22503
  class: "mint-picker__receipt",
22494
22504
  role: "status"
22495
22505
  };
22496
- var _hoisted_17 = { class: "mint-picker__summary" };
22497
- var _hoisted_18 = { key: 2 };
22498
- var _hoisted_19 = { class: "mint-picker__actions" };
22506
+ var _hoisted_18 = { class: "mint-picker__summary" };
22507
+ var _hoisted_19 = { key: 2 };
22508
+ var _hoisted_20 = { class: "mint-picker__actions" };
22499
22509
  //#endregion
22500
22510
  //#region src/components/FilePicker.vue
22501
22511
  var FilePicker_default = /* @__PURE__ */ defineComponent({
@@ -22510,6 +22520,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22510
22520
  initialSelection: { default: null },
22511
22521
  title: { default: "Choose data" },
22512
22522
  view: { default: "list" },
22523
+ defaultSort: { default: "newest" },
22513
22524
  systemFilter: {}
22514
22525
  },
22515
22526
  emits: [
@@ -22530,7 +22541,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22530
22541
  const props = __props;
22531
22542
  const emit = __emit;
22532
22543
  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"));
22544
+ 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
22545
  const sourceLabel = computed(() => {
22535
22546
  const node = previewNode.value;
22536
22547
  if (!mountView.value || !node) return sourceNames[source.value];
@@ -22540,6 +22551,17 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22540
22551
  }
22541
22552
  return mounts.value.find((item) => item.path === props.adapter.mountOf?.(node.path))?.name ?? sourceNames.server;
22542
22553
  });
22554
+ const SORT_LABELS = {
22555
+ newest: "Newest first",
22556
+ oldest: "Oldest first",
22557
+ name: "Name A–Z",
22558
+ "name-desc": "Name Z–A"
22559
+ };
22560
+ const sortItems = computed(() => Object.keys(SORT_LABELS).map((id) => ({
22561
+ id,
22562
+ label: SORT_LABELS[id],
22563
+ checked: sort.value === id
22564
+ })));
22543
22565
  const accepts = computed(() => (capability.value?.formats ?? []).map((format) => `.${format.replace(/^\./, "")}`).join(" "));
22544
22566
  const summary = computed(() => {
22545
22567
  if (!roots.value.length) return "No selection";
@@ -22582,7 +22604,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22582
22604
  "aria-label": "Search folders and files",
22583
22605
  placeholder: "Search this source"
22584
22606
  }, {
22585
- prefix: withCtx(() => [..._cache[12] || (_cache[12] = [createElementVNode("svg", {
22607
+ prefix: withCtx(() => [..._cache[13] || (_cache[13] = [createElementVNode("svg", {
22586
22608
  viewBox: "0 0 24 24",
22587
22609
  fill: "none",
22588
22610
  stroke: "currentColor",
@@ -22593,40 +22615,40 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22593
22615
  cy: "10.5",
22594
22616
  r: "7"
22595
22617
  }), createElementVNode("path", { d: "m16 16 5 5" })], -1)])]),
22596
- suffix: withCtx(() => [..._cache[13] || (_cache[13] = [createElementVNode("kbd", null, "/", -1)])]),
22618
+ suffix: withCtx(() => [..._cache[14] || (_cache[14] = [createElementVNode("kbd", null, "/", -1)])]),
22597
22619
  _: 1
22598
22620
  }, 8, ["modelValue"])], 512)) : createCommentVNode("", true)
22599
22621
  ], 32)]),
22600
- footer: withCtx(() => [createElementVNode("div", _hoisted_15, [createElementVNode("div", _hoisted_16, [
22601
- createElementVNode("span", _hoisted_17, toDisplayString(summary.value), 1),
22622
+ footer: withCtx(() => [createElementVNode("div", _hoisted_16, [createElementVNode("div", _hoisted_17, [
22623
+ createElementVNode("span", _hoisted_18, toDisplayString(summary.value), 1),
22602
22624
  unref(roots).length ? (openBlock(), createElementBlock("button", {
22603
22625
  key: 0,
22604
22626
  type: "button",
22605
22627
  class: "mint-picker__link mint-picker__clear",
22606
- onClick: _cache[9] || (_cache[9] = (...args) => unref(clearSelection) && unref(clearSelection)(...args))
22628
+ onClick: _cache[10] || (_cache[10] = (...args) => unref(clearSelection) && unref(clearSelection)(...args))
22607
22629
  }, " Clear ")) : createCommentVNode("", true),
22608
22630
  unref(chosen).excluded.length && unref(source) === "server" ? (openBlock(), createElementBlock("button", {
22609
22631
  key: 1,
22610
22632
  type: "button",
22611
22633
  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),
22634
+ onClick: _cache[11] || (_cache[11] = ($event) => reviewing.value = !unref(reviewing))
22635
+ }, 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
22636
  unref(capability)?.isBlank ? (openBlock(), createBlock(BaseButton_default, {
22615
22637
  key: 3,
22616
22638
  size: "sm",
22617
22639
  variant: "ghost",
22618
22640
  "aria-pressed": unref(skipBlanks),
22619
- onClick: _cache[11] || (_cache[11] = ($event) => skipBlanks.value = !unref(skipBlanks))
22641
+ onClick: _cache[12] || (_cache[12] = ($event) => skipBlanks.value = !unref(skipBlanks))
22620
22642
  }, {
22621
22643
  default: withCtx(() => [createTextVNode("Skip blanks " + toDisplayString(unref(skipBlanks) ? "on" : "off"), 1)]),
22622
22644
  _: 1
22623
22645
  }, 8, ["aria-pressed"])) : createCommentVNode("", true)
22624
- ]), createElementVNode("div", _hoisted_19, [createVNode(BaseButton_default, {
22646
+ ]), createElementVNode("div", _hoisted_20, [createVNode(BaseButton_default, {
22625
22647
  variant: "ghost",
22626
22648
  size: "sm",
22627
22649
  onClick: unref(cancel)
22628
22650
  }, {
22629
- default: withCtx(() => [..._cache[16] || (_cache[16] = [createTextVNode("Cancel", -1)])]),
22651
+ default: withCtx(() => [..._cache[18] || (_cache[18] = [createTextVNode("Cancel", -1)])]),
22630
22652
  _: 1
22631
22653
  }, 8, ["onClick"]), createVNode(BaseButton_default, {
22632
22654
  size: "sm",
@@ -22639,7 +22661,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22639
22661
  default: withCtx(() => [(openBlock(), createElementBlock("div", {
22640
22662
  key: unref(source),
22641
22663
  class: "mint-picker mint-picker__source-panel",
22642
- onKeydown: _cache[8] || (_cache[8] = (...args) => unref(keyboard) && unref(keyboard)(...args))
22664
+ onKeydown: _cache[9] || (_cache[9] = (...args) => unref(keyboard) && unref(keyboard)(...args))
22643
22665
  }, [unref(source) === "server" ? (openBlock(), createElementBlock("div", _hoisted_3, [
22644
22666
  createElementVNode("nav", _hoisted_4, [!unref(mountView) ? (openBlock(), createElementBlock("button", {
22645
22667
  key: 0,
@@ -22648,7 +22670,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22648
22670
  "aria-current": unref(trail).length ? void 0 : "location",
22649
22671
  onClick: _cache[2] || (_cache[2] = ($event) => unref(up)(""))
22650
22672
  }, 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", {
22673
+ 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
22674
  type: "button",
22653
22675
  class: "mint-picker__crumb",
22654
22676
  "aria-current": index === unref(trail).length - 1 ? "location" : void 0,
@@ -22656,43 +22678,66 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22656
22678
  }, toDisplayString(crumb.label), 9, _hoisted_7)], 64);
22657
22679
  }), 128))]),
22658
22680
  accepts.value ? (openBlock(), createElementBlock("span", _hoisted_8, "Accepts " + toDisplayString(accepts.value), 1)) : createCommentVNode("", true),
22681
+ createVNode(ActionMenu_default, {
22682
+ label: "Sort",
22683
+ items: sortItems.value,
22684
+ onSelect: _cache[3] || (_cache[3] = ($event) => sort.value = $event.id)
22685
+ }, {
22686
+ trigger: withCtx(({ open: menuOpen, toggle, keydown }) => [createElementVNode("button", {
22687
+ type: "button",
22688
+ class: "mint-picker__sort",
22689
+ "aria-haspopup": "menu",
22690
+ "aria-expanded": menuOpen,
22691
+ "aria-label": `Sort: ${SORT_LABELS[unref(sort)]}`,
22692
+ onClick: toggle,
22693
+ onKeydown: keydown
22694
+ }, [createTextVNode(toDisplayString(SORT_LABELS[unref(sort)]) + " ", 1), _cache[16] || (_cache[16] = createElementVNode("svg", {
22695
+ viewBox: "0 0 16 16",
22696
+ fill: "none",
22697
+ stroke: "currentColor",
22698
+ "stroke-width": "1.5",
22699
+ "aria-hidden": "true"
22700
+ }, [createElementVNode("path", { d: "M4 6l4 4 4-4" })], -1))], 40, _hoisted_9)]),
22701
+ _: 1
22702
+ }, 8, ["items"]),
22659
22703
  createElementVNode("button", {
22660
22704
  type: "button",
22661
22705
  class: "mint-picker__scope",
22662
22706
  "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),
22707
+ onClick: _cache[4] || (_cache[4] = ($event) => recursive.value = !unref(recursive))
22708
+ }, toDisplayString(unref(recursive) ? "Subfolders" : "This folder"), 9, _hoisted_10),
22665
22709
  createElementVNode("button", {
22666
22710
  type: "button",
22667
22711
  class: "mint-picker__scope mint-picker__refresh",
22668
22712
  "aria-label": "Refresh location",
22669
22713
  title: "Refresh location",
22670
22714
  disabled: unref(loading),
22671
- onClick: _cache[4] || (_cache[4] = ($event) => unref(refresh)())
22672
- }, [..._cache[15] || (_cache[15] = [createElementVNode("svg", {
22715
+ onClick: _cache[5] || (_cache[5] = ($event) => unref(refresh)())
22716
+ }, [..._cache[17] || (_cache[17] = [createElementVNode("svg", {
22673
22717
  viewBox: "0 0 24 24",
22674
22718
  fill: "none",
22675
22719
  stroke: "currentColor",
22676
22720
  "stroke-width": "1.8",
22677
22721
  "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, {
22722
+ }, [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)
22723
+ ])) : 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
22724
  size: "lg",
22681
22725
  mode: __props.selectionMode === "folder" ? "folder" : __props.selectionMode === "single-file" ? "file" : "file+folder",
22682
22726
  multiple: __props.selectionMode !== "single-file",
22683
22727
  "show-files": false,
22684
- onUpload: _cache[5] || (_cache[5] = (...args) => {
22728
+ onUpload: _cache[6] || (_cache[6] = (...args) => {
22685
22729
  uploadError.value = "";
22686
22730
  unref(chooseLocal)(...args);
22687
22731
  }),
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, {
22732
+ onError: _cache[7] || (_cache[7] = ($event) => uploadError.value = $event)
22733
+ }, 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
22734
  "empty-title": unref(path) ? "No readable files" : "No server locations configured",
22691
22735
  view: __props.view,
22692
22736
  rows: unref(rows),
22693
22737
  loading: unref(loading),
22694
22738
  error: unref(error),
22695
22739
  query: unref(query),
22740
+ truncated: unref(nav).truncated.value,
22696
22741
  mode: __props.selectionMode,
22697
22742
  selected: unref(selection).selected,
22698
22743
  selectable: unref(selection).selectable,
@@ -22712,6 +22757,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22712
22757
  "loading",
22713
22758
  "error",
22714
22759
  "query",
22760
+ "truncated",
22715
22761
  "mode",
22716
22762
  "selected",
22717
22763
  "selectable",
@@ -22732,7 +22778,7 @@ var FilePicker_default = /* @__PURE__ */ defineComponent({
22732
22778
  busy: unref(resolving),
22733
22779
  error: unref(resolutionError),
22734
22780
  reviewing: unref(reviewing),
22735
- onReview: _cache[7] || (_cache[7] = ($event) => reviewing.value = !unref(reviewing)),
22781
+ onReview: _cache[8] || (_cache[8] = ($event) => reviewing.value = !unref(reviewing)),
22736
22782
  onRetry: unref(selection).resolve
22737
22783
  }, null, 8, [
22738
22784
  "node",
@@ -22861,6 +22907,6 @@ var components_exports = /* @__PURE__ */ __exportAll({
22861
22907
  WellPlate: () => WellPlate_default
22862
22908
  });
22863
22909
  //#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 };
22910
+ 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
22911
 
22866
- //# sourceMappingURL=components-CvY105kJ.js.map
22912
+ //# sourceMappingURL=components-GDDvof8D.js.map