@morscherlab/mint-sdk 1.0.0-beta.1 → 1.0.0-beta.2

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 (81) hide show
  1. package/dist/__tests__/components/PluginIcon.test.d.ts +1 -0
  2. package/dist/components/AppTopBar.vue.d.ts +2 -0
  3. package/dist/components/BaseButton.vue.d.ts +1 -1
  4. package/dist/components/BaseCheckbox.vue.d.ts +1 -1
  5. package/dist/components/BaseInput.vue.d.ts +1 -1
  6. package/dist/components/BasePill.vue.d.ts +1 -1
  7. package/dist/components/BaseRadioGroup.vue.d.ts +1 -1
  8. package/dist/components/BaseSelect.vue.d.ts +1 -1
  9. package/dist/components/BaseSlider.vue.d.ts +1 -1
  10. package/dist/components/BaseTextarea.vue.d.ts +1 -1
  11. package/dist/components/BaseToggle.vue.d.ts +1 -1
  12. package/dist/components/ColorSlider.vue.d.ts +1 -1
  13. package/dist/components/ConcentrationInput.vue.d.ts +1 -1
  14. package/dist/components/DatePicker.vue.d.ts +1 -1
  15. package/dist/components/DateTimePicker.vue.d.ts +1 -1
  16. package/dist/components/Divider.vue.d.ts +1 -1
  17. package/dist/components/DropdownButton.vue.d.ts +1 -1
  18. package/dist/components/FileUploader.vue.d.ts +1 -1
  19. package/dist/components/FormulaInput.vue.d.ts +1 -1
  20. package/dist/components/IconButton.vue.d.ts +1 -1
  21. package/dist/components/LoadingSpinner.vue.d.ts +1 -1
  22. package/dist/components/MultiSelect.vue.d.ts +1 -1
  23. package/dist/components/NumberInput.vue.d.ts +1 -1
  24. package/dist/components/PluginIcon.vue.d.ts +11 -0
  25. package/dist/components/ProgressBar.vue.d.ts +1 -1
  26. package/dist/components/ReagentEditor.vue.d.ts +1 -1
  27. package/dist/components/ResourceCard.vue.d.ts +1 -1
  28. package/dist/components/SampleSelector.vue.d.ts +1 -1
  29. package/dist/components/ScientificNumber.vue.d.ts +1 -1
  30. package/dist/components/SegmentedControl.vue.d.ts +1 -1
  31. package/dist/components/SettingsModal.vue.d.ts +22 -2
  32. package/dist/components/TagsInput.vue.d.ts +1 -1
  33. package/dist/components/TimePicker.vue.d.ts +1 -1
  34. package/dist/components/TimeRangeInput.vue.d.ts +1 -1
  35. package/dist/components/UnitInput.vue.d.ts +1 -1
  36. package/dist/components/WellPlate.vue.d.ts +1 -1
  37. package/dist/components/index.d.ts +1 -0
  38. package/dist/components/index.js +3 -3
  39. package/dist/{components-CzbQQPCb.js → components-_XqPEhP9.js} +572 -362
  40. package/dist/components-_XqPEhP9.js.map +1 -0
  41. package/dist/composables/index.js +2 -2
  42. package/dist/composables/usePlatformContext.d.ts +3 -0
  43. package/dist/{composables-BXklV5ii.js → composables-tiZqLu1M.js} +2 -2
  44. package/dist/{composables-BXklV5ii.js.map → composables-tiZqLu1M.js.map} +1 -1
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.js +4 -4
  47. package/dist/install.js +2 -2
  48. package/dist/stores/auth.d.ts +1 -1
  49. package/dist/styles.css +896 -553
  50. package/dist/types/components.d.ts +39 -0
  51. package/dist/types/index.d.ts +1 -1
  52. package/dist/types/platform.d.ts +1 -0
  53. package/dist/{useScheduleDrag-CxBeqYcu.js → useScheduleDrag-CA9sGNJG.js} +4000 -4000
  54. package/dist/useScheduleDrag-CA9sGNJG.js.map +1 -0
  55. package/package.json +1 -1
  56. package/src/__tests__/components/AppTopBar.test.ts +31 -13
  57. package/src/__tests__/components/PluginIcon.test.ts +119 -0
  58. package/src/components/AppTopBar.vue +32 -27
  59. package/src/components/PluginIcon.story.vue +71 -0
  60. package/src/components/PluginIcon.vue +88 -0
  61. package/src/components/SettingsModal.story.vue +337 -45
  62. package/src/components/SettingsModal.vue +251 -64
  63. package/src/components/index.ts +1 -0
  64. package/src/index.ts +4 -0
  65. package/src/styles/components/app-pill-nav.css +1 -2
  66. package/src/styles/components/app-top-bar.css +1 -2
  67. package/src/styles/components/button.css +3 -7
  68. package/src/styles/components/dropdown-button.css +4 -4
  69. package/src/styles/components/input.css +4 -5
  70. package/src/styles/components/number-input.css +3 -3
  71. package/src/styles/components/plugin-icon.css +38 -0
  72. package/src/styles/components/segmented-control.css +4 -7
  73. package/src/styles/components/settings-modal.css +184 -0
  74. package/src/styles/components/tabs.css +1 -2
  75. package/src/styles/components/textarea.css +4 -5
  76. package/src/styles/components/unit-input.css +3 -3
  77. package/src/types/components.ts +42 -0
  78. package/src/types/index.ts +3 -0
  79. package/src/types/platform.ts +1 -0
  80. package/dist/components-CzbQQPCb.js.map +0 -1
  81. package/dist/useScheduleDrag-CxBeqYcu.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { $ as formatTime, A as APP_EXPERIMENT_KEY, B as formatExperimentDate, C as MoleculeInput_default, D as useAutoGroup, E as parseCSV, G as NumberInput_default, H as useTheme, I as EXPERIMENT_STATUS_OPTIONS, K as TagsInput_default, L as EXPERIMENT_STATUS_VARIANT_MAP, M as usePlatformContext, N as useExperimentSelector, O as useWellPlateEditor, P as DATE_PRESET_OPTIONS, Q as formatDuration, R as SORT_OPTIONS, S as useConcentrationUnits, U as useToast, V as useApi, W as FileUploader_default, X as durationMinutes, Y as compareTime, _ as DEFAULT_UNITS, a as getFieldRegistryEntry, b as useDoseCalculator, ct as BaseSlider_default, dt as BaseCheckbox_default, f as FormulaInput_default, ft as BaseSelect_default, g as DEFAULT_PRESETS, h as useProtocolTemplates, i as useFormBuilder, k as useRackEditor, l as UnitInput_default, lt as BaseRadioGroup_default, m as useChemicalFormula, mt as BaseInput_default, n as useExperimentData, ot as DatePicker_default, pt as BaseTextarea_default, q as TimePicker_default, s as DateTimePicker_default, st as MultiSelect_default, t as useScheduleDrag, u as SequenceInput_default, ut as BaseToggle_default, w as DEFAULT_COLORS, x as ConcentrationInput_default, y as useReagentSeries } from "./useScheduleDrag-CxBeqYcu.js";
1
+ import { $ as formatTime, A as getFieldRegistryEntry, B as useChemicalFormula, C as SORT_OPTIONS, E as useApi, F as MoleculeInput_default, G as NumberInput_default, H as useTheme, I as SequenceInput_default, K as TagsInput_default, M as UnitInput_default, N as ConcentrationInput_default, O as useFormBuilder, P as useConcentrationUnits, Q as formatDuration, R as FormulaInput_default, S as EXPERIMENT_STATUS_VARIANT_MAP, T as formatExperimentDate, U as useToast, V as DateTimePicker_default, W as FileUploader_default, X as durationMinutes, Y as compareTime, _ as usePlatformContext, a as DEFAULT_UNITS, c as useDoseCalculator, ct as BaseSlider_default, d as parseCSV, dt as BaseCheckbox_default, f as useAutoGroup, ft as BaseSelect_default, h as APP_EXPERIMENT_KEY, i as DEFAULT_PRESETS, l as DEFAULT_COLORS, lt as BaseRadioGroup_default, m as useRackEditor, mt as BaseInput_default, n as useExperimentData, ot as DatePicker_default, p as useWellPlateEditor, pt as BaseTextarea_default, q as TimePicker_default, r as useProtocolTemplates, s as useReagentSeries, st as MultiSelect_default, t as useScheduleDrag, ut as BaseToggle_default, v as useExperimentSelector, x as EXPERIMENT_STATUS_OPTIONS, y as DATE_PRESET_OPTIONS } from "./useScheduleDrag-CA9sGNJG.js";
2
2
  import { n as colorPalettes, r as useSettingsStore } from "./auth-DsI0rQ7_.js";
3
3
  import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, h, inject, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, onUnmounted, openBlock, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, toDisplayString, unref, useSlots, vModelCheckbox, vModelSelect, vModelText, vShow, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
4
4
  //#region \0rolldown/runtime.js
@@ -14,8 +14,8 @@ var __exportAll = (all, no_symbols) => {
14
14
  };
15
15
  //#endregion
16
16
  //#region src/components/BaseButton.vue?vue&type=script&setup=true&lang.ts
17
- var _hoisted_1$64 = ["type", "disabled"];
18
- var _hoisted_2$56 = {
17
+ var _hoisted_1$65 = ["type", "disabled"];
18
+ var _hoisted_2$57 = {
19
19
  key: 0,
20
20
  class: "mint-button__spinner",
21
21
  fill: "none",
@@ -62,7 +62,7 @@ var BaseButton_default = /* @__PURE__ */ defineComponent({
62
62
  __props.disabled || __props.loading ? "mint-button--disabled" : ""
63
63
  ]),
64
64
  onClick: handleClick
65
- }, [__props.loading ? (openBlock(), createElementBlock("svg", _hoisted_2$56, [..._cache[0] || (_cache[0] = [createElementVNode("circle", {
65
+ }, [__props.loading ? (openBlock(), createElementBlock("svg", _hoisted_2$57, [..._cache[0] || (_cache[0] = [createElementVNode("circle", {
66
66
  style: { "opacity": "0.25" },
67
67
  cx: "12",
68
68
  cy: "12",
@@ -73,15 +73,15 @@ var BaseButton_default = /* @__PURE__ */ defineComponent({
73
73
  style: { "opacity": "0.75" },
74
74
  fill: "currentColor",
75
75
  d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
76
- }, null, -1)])])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$64);
76
+ }, null, -1)])])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$65);
77
77
  };
78
78
  }
79
79
  });
80
80
  //#endregion
81
81
  //#region src/components/ColorSlider.vue?vue&type=script&setup=true&lang.ts
82
- var _hoisted_1$63 = { class: "mint-color-slider__row" };
83
- var _hoisted_2$55 = { class: "mint-color-slider__track" };
84
- var _hoisted_3$51 = [
82
+ var _hoisted_1$64 = { class: "mint-color-slider__row" };
83
+ var _hoisted_2$56 = { class: "mint-color-slider__track" };
84
+ var _hoisted_3$52 = [
85
85
  "value",
86
86
  "min",
87
87
  "max",
@@ -196,7 +196,7 @@ var ColorSlider_default = /* @__PURE__ */ defineComponent({
196
196
  emit("update:modelValue", Number(target.value));
197
197
  }
198
198
  return (_ctx, _cache) => {
199
- return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-color-slider", { "mint-color-slider--disabled": __props.disabled }]) }, [createElementVNode("div", _hoisted_1$63, [createElementVNode("div", _hoisted_2$55, [createElementVNode("input", {
199
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-color-slider", { "mint-color-slider--disabled": __props.disabled }]) }, [createElementVNode("div", _hoisted_1$64, [createElementVNode("div", _hoisted_2$56, [createElementVNode("input", {
200
200
  type: "range",
201
201
  value: currentValue.value,
202
202
  min: __props.min,
@@ -213,7 +213,7 @@ var ColorSlider_default = /* @__PURE__ */ defineComponent({
213
213
  "--thumb-size": `${sizeConfig.value.thumb}px`
214
214
  }),
215
215
  onInput: handleInput
216
- }, null, 44, _hoisted_3$51)]), __props.showValue ? (openBlock(), createElementBlock("div", {
216
+ }, null, 44, _hoisted_3$52)]), __props.showValue ? (openBlock(), createElementBlock("div", {
217
217
  key: 0,
218
218
  class: "mint-color-slider__badge",
219
219
  style: normalizeStyle({
@@ -232,13 +232,13 @@ var ColorSlider_default = /* @__PURE__ */ defineComponent({
232
232
  });
233
233
  //#endregion
234
234
  //#region src/components/BaseTabs.vue?vue&type=script&setup=true&lang.ts
235
- var _hoisted_1$62 = [
235
+ var _hoisted_1$63 = [
236
236
  "aria-selected",
237
237
  "aria-disabled",
238
238
  "onClick"
239
239
  ];
240
- var _hoisted_2$54 = { class: "mint-tab__content" };
241
- var _hoisted_3$50 = {
240
+ var _hoisted_2$55 = { class: "mint-tab__content" };
241
+ var _hoisted_3$51 = {
242
242
  key: 0,
243
243
  class: "mint-tab__icon"
244
244
  };
@@ -282,27 +282,27 @@ var BaseTabs_default = /* @__PURE__ */ defineComponent({
282
282
  tab.disabled ? "mint-tab--disabled" : ""
283
283
  ]),
284
284
  onClick: ($event) => selectTab(tab.id)
285
- }, [createElementVNode("span", _hoisted_2$54, [
286
- tab.icon ? (openBlock(), createElementBlock("span", _hoisted_3$50, toDisplayString(tab.icon), 1)) : createCommentVNode("", true),
285
+ }, [createElementVNode("span", _hoisted_2$55, [
286
+ tab.icon ? (openBlock(), createElementBlock("span", _hoisted_3$51, toDisplayString(tab.icon), 1)) : createCommentVNode("", true),
287
287
  createTextVNode(" " + toDisplayString(tab.label) + " ", 1),
288
288
  tab.badge !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_4$44, toDisplayString(tab.badge), 1)) : createCommentVNode("", true)
289
- ])], 10, _hoisted_1$62);
289
+ ])], 10, _hoisted_1$63);
290
290
  }), 128))], 2);
291
291
  };
292
292
  }
293
293
  });
294
294
  //#endregion
295
295
  //#region src/components/BaseModal.vue?vue&type=script&setup=true&lang.ts
296
- var _hoisted_1$61 = {
296
+ var _hoisted_1$62 = {
297
297
  key: 0,
298
298
  class: "mint-modal__grab-hint",
299
299
  "aria-hidden": "true"
300
300
  };
301
- var _hoisted_2$53 = {
301
+ var _hoisted_2$54 = {
302
302
  key: 1,
303
303
  class: "mint-modal__header"
304
304
  };
305
- var _hoisted_3$49 = {
305
+ var _hoisted_3$50 = {
306
306
  key: 0,
307
307
  class: "mint-modal__header-text"
308
308
  };
@@ -430,8 +430,8 @@ var BaseModal_default = /* @__PURE__ */ defineComponent({
430
430
  "aria-modal": "true",
431
431
  tabindex: "-1"
432
432
  }, [
433
- __props.variant === "sheet" ? (openBlock(), createElementBlock("div", _hoisted_1$61)) : createCommentVNode("", true),
434
- __props.title || __props.subtitle || __props.closable || _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_2$53, [__props.title || __props.subtitle || _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_3$49, [renderSlot(_ctx.$slots, "header", {}, () => [__props.title ? (openBlock(), createElementBlock("h3", _hoisted_4$43, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.subtitle ? (openBlock(), createElementBlock("p", _hoisted_5$41, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true)])])) : createCommentVNode("", true), __props.closable ? (openBlock(), createElementBlock("button", {
433
+ __props.variant === "sheet" ? (openBlock(), createElementBlock("div", _hoisted_1$62)) : createCommentVNode("", true),
434
+ __props.title || __props.subtitle || __props.closable || _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_2$54, [__props.title || __props.subtitle || _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_3$50, [renderSlot(_ctx.$slots, "header", {}, () => [__props.title ? (openBlock(), createElementBlock("h3", _hoisted_4$43, toDisplayString(__props.title), 1)) : createCommentVNode("", true), __props.subtitle ? (openBlock(), createElementBlock("p", _hoisted_5$41, toDisplayString(__props.subtitle), 1)) : createCommentVNode("", true)])])) : createCommentVNode("", true), __props.closable ? (openBlock(), createElementBlock("button", {
435
435
  key: 1,
436
436
  type: "button",
437
437
  class: "mint-modal__close",
@@ -456,14 +456,14 @@ var BaseModal_default = /* @__PURE__ */ defineComponent({
456
456
  });
457
457
  //#endregion
458
458
  //#region src/components/SegmentedControl.vue?vue&type=script&setup=true&lang.ts
459
- var _hoisted_1$60 = [
459
+ var _hoisted_1$61 = [
460
460
  "aria-checked",
461
461
  "disabled",
462
462
  "onClick",
463
463
  "onKeydown"
464
464
  ];
465
- var _hoisted_2$52 = { class: "mint-segmented-control__label" };
466
- var _hoisted_3$48 = {
465
+ var _hoisted_2$53 = { class: "mint-segmented-control__label" };
466
+ var _hoisted_3$49 = {
467
467
  key: 0,
468
468
  class: "mint-segmented-control__description"
469
469
  };
@@ -526,18 +526,18 @@ var SegmentedControl_default = /* @__PURE__ */ defineComponent({
526
526
  ]),
527
527
  onClick: ($event) => handleSelect(option),
528
528
  onKeydown: ($event) => handleKeydown($event, option)
529
- }, [createElementVNode("span", _hoisted_2$52, toDisplayString(option.label), 1), option.description && __props.variant === "card" ? (openBlock(), createElementBlock("span", _hoisted_3$48, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 42, _hoisted_1$60);
529
+ }, [createElementVNode("span", _hoisted_2$53, toDisplayString(option.label), 1), option.description && __props.variant === "card" ? (openBlock(), createElementBlock("span", _hoisted_3$49, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 42, _hoisted_1$61);
530
530
  }), 128))], 2);
531
531
  };
532
532
  }
533
533
  });
534
534
  //#endregion
535
535
  //#region src/components/BasePill.vue?vue&type=script&setup=true&lang.ts
536
- var _hoisted_1$59 = {
536
+ var _hoisted_1$60 = {
537
537
  key: 0,
538
538
  class: "mint-pill__icon"
539
539
  };
540
- var _hoisted_2$51 = { class: "mint-pill__label" };
540
+ var _hoisted_2$52 = { class: "mint-pill__label" };
541
541
  //#endregion
542
542
  //#region src/components/BasePill.vue
543
543
  var BasePill_default = /* @__PURE__ */ defineComponent({
@@ -582,8 +582,8 @@ var BasePill_default = /* @__PURE__ */ defineComponent({
582
582
  "mint-pill--with-icon": __props.icon
583
583
  }
584
584
  ]) }, [
585
- __props.icon ? (openBlock(), createElementBlock("span", _hoisted_1$59, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
586
- createElementVNode("span", _hoisted_2$51, [renderSlot(_ctx.$slots, "default")]),
585
+ __props.icon ? (openBlock(), createElementBlock("span", _hoisted_1$60, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
586
+ createElementVNode("span", _hoisted_2$52, [renderSlot(_ctx.$slots, "default")]),
587
587
  __props.removable && !__props.disabled ? (openBlock(), createElementBlock("button", {
588
588
  key: 1,
589
589
  type: "button",
@@ -605,15 +605,15 @@ var BasePill_default = /* @__PURE__ */ defineComponent({
605
605
  });
606
606
  //#endregion
607
607
  //#region src/components/DropdownButton.vue?vue&type=script&setup=true&lang.ts
608
- var _hoisted_1$58 = ["disabled", "aria-expanded"];
609
- var _hoisted_2$50 = {
608
+ var _hoisted_1$59 = ["disabled", "aria-expanded"];
609
+ var _hoisted_2$51 = {
610
610
  key: 0,
611
611
  class: "mint-dropdown-button__spinner",
612
612
  viewBox: "0 0 24 24",
613
613
  fill: "none",
614
614
  "aria-hidden": "true"
615
615
  };
616
- var _hoisted_3$47 = { class: "mint-dropdown-button__label" };
616
+ var _hoisted_3$48 = { class: "mint-dropdown-button__label" };
617
617
  var _hoisted_4$42 = ["aria-activedescendant"];
618
618
  var _hoisted_5$40 = [
619
619
  "id",
@@ -715,7 +715,7 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
715
715
  "aria-haspopup": "listbox",
716
716
  onClick: toggle
717
717
  }, [
718
- __props.loading ? (openBlock(), createElementBlock("svg", _hoisted_2$50, [..._cache[0] || (_cache[0] = [createElementVNode("circle", {
718
+ __props.loading ? (openBlock(), createElementBlock("svg", _hoisted_2$51, [..._cache[0] || (_cache[0] = [createElementVNode("circle", {
719
719
  cx: "12",
720
720
  cy: "12",
721
721
  r: "10",
@@ -728,7 +728,7 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
728
728
  "stroke-width": "3",
729
729
  "stroke-linecap": "round"
730
730
  }, null, -1)])])) : createCommentVNode("", true),
731
- createElementVNode("span", _hoisted_3$47, toDisplayString(selectedLabel.value), 1),
731
+ createElementVNode("span", _hoisted_3$48, toDisplayString(selectedLabel.value), 1),
732
732
  (openBlock(), createElementBlock("svg", {
733
733
  class: normalizeClass(["mint-dropdown-button__chevron", { "mint-dropdown-button__chevron--open": isOpen.value }]),
734
734
  viewBox: "0 0 24 24",
@@ -738,7 +738,7 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
738
738
  "stroke-linecap": "round",
739
739
  "stroke-linejoin": "round"
740
740
  }, [..._cache[1] || (_cache[1] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))
741
- ], 10, _hoisted_1$58), createVNode(Transition, { name: "mint-dropdown-button-menu" }, {
741
+ ], 10, _hoisted_1$59), createVNode(Transition, { name: "mint-dropdown-button-menu" }, {
742
742
  default: withCtx(() => [isOpen.value ? (openBlock(), createElementBlock("ul", {
743
743
  key: 0,
744
744
  class: "mint-dropdown-button__menu",
@@ -769,12 +769,12 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
769
769
  });
770
770
  //#endregion
771
771
  //#region src/components/Calendar.vue?vue&type=script&setup=true&lang.ts
772
- var _hoisted_1$57 = { class: "mint-calendar" };
773
- var _hoisted_2$49 = {
772
+ var _hoisted_1$58 = { class: "mint-calendar" };
773
+ var _hoisted_2$50 = {
774
774
  key: 0,
775
775
  class: "mint-calendar__header"
776
776
  };
777
- var _hoisted_3$46 = { class: "mint-calendar__title" };
777
+ var _hoisted_3$47 = { class: "mint-calendar__title" };
778
778
  var _hoisted_4$41 = { class: "mint-calendar__weekdays" };
779
779
  var _hoisted_5$39 = { class: "mint-calendar__grid" };
780
780
  var _hoisted_6$38 = [
@@ -1002,8 +1002,8 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
1002
1002
  emit("navigate", "next", currentMonth.value, currentYear.value);
1003
1003
  }
1004
1004
  return (_ctx, _cache) => {
1005
- return openBlock(), createElementBlock("div", _hoisted_1$57, [
1006
- __props.showNavigation ? (openBlock(), createElementBlock("div", _hoisted_2$49, [
1005
+ return openBlock(), createElementBlock("div", _hoisted_1$58, [
1006
+ __props.showNavigation ? (openBlock(), createElementBlock("div", _hoisted_2$50, [
1007
1007
  createElementVNode("button", {
1008
1008
  type: "button",
1009
1009
  class: "mint-calendar__nav-btn",
@@ -1022,7 +1022,7 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
1022
1022
  year: currentYear.value,
1023
1023
  prevMonth,
1024
1024
  nextMonth
1025
- }, () => [createElementVNode("span", _hoisted_3$46, toDisplayString(monthLabel.value), 1)]),
1025
+ }, () => [createElementVNode("span", _hoisted_3$47, toDisplayString(monthLabel.value), 1)]),
1026
1026
  createElementVNode("button", {
1027
1027
  type: "button",
1028
1028
  class: "mint-calendar__nav-btn",
@@ -1076,12 +1076,12 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
1076
1076
  });
1077
1077
  //#endregion
1078
1078
  //#region src/components/DataFrame.vue?vue&type=script&setup=true&lang.ts
1079
- var _hoisted_1$56 = {
1079
+ var _hoisted_1$57 = {
1080
1080
  key: 0,
1081
1081
  class: "mint-dataframe__header"
1082
1082
  };
1083
- var _hoisted_2$48 = { class: "mint-dataframe__search-wrapper" };
1084
- var _hoisted_3$45 = ["placeholder"];
1083
+ var _hoisted_2$49 = { class: "mint-dataframe__search-wrapper" };
1084
+ var _hoisted_3$46 = ["placeholder"];
1085
1085
  var _hoisted_4$40 = { class: "mint-dataframe__table" };
1086
1086
  var _hoisted_5$38 = {
1087
1087
  key: 0,
@@ -1102,19 +1102,19 @@ var _hoisted_13$25 = {
1102
1102
  class: "mint-dataframe__empty"
1103
1103
  };
1104
1104
  var _hoisted_14$24 = { class: "mint-dataframe__empty-text" };
1105
- var _hoisted_15$22 = {
1105
+ var _hoisted_15$23 = {
1106
1106
  key: 1,
1107
1107
  class: "mint-dataframe__loading"
1108
1108
  };
1109
- var _hoisted_16$21 = {
1109
+ var _hoisted_16$22 = {
1110
1110
  key: 1,
1111
1111
  class: "mint-dataframe__footer"
1112
1112
  };
1113
- var _hoisted_17$21 = { class: "mint-dataframe__page-info" };
1114
- var _hoisted_18$21 = { class: "mint-dataframe__page-controls" };
1115
- var _hoisted_19$19 = ["disabled"];
1116
- var _hoisted_20$18 = { class: "mint-dataframe__page-number" };
1117
- var _hoisted_21$15 = ["disabled"];
1113
+ var _hoisted_17$22 = { class: "mint-dataframe__page-info" };
1114
+ var _hoisted_18$22 = { class: "mint-dataframe__page-controls" };
1115
+ var _hoisted_19$20 = ["disabled"];
1116
+ var _hoisted_20$19 = { class: "mint-dataframe__page-number" };
1117
+ var _hoisted_21$16 = ["disabled"];
1118
1118
  //#endregion
1119
1119
  //#region src/components/DataFrame.vue
1120
1120
  var DataFrame_default = /* @__PURE__ */ defineComponent({
@@ -1291,7 +1291,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1291
1291
  });
1292
1292
  return (_ctx, _cache) => {
1293
1293
  return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-dataframe", { "mint-dataframe--bordered": __props.bordered }]) }, [
1294
- __props.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$56, [createElementVNode("div", _hoisted_2$48, [_cache[4] || (_cache[4] = createElementVNode("svg", {
1294
+ __props.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$57, [createElementVNode("div", _hoisted_2$49, [_cache[4] || (_cache[4] = createElementVNode("svg", {
1295
1295
  class: "mint-dataframe__search-icon",
1296
1296
  viewBox: "0 0 24 24",
1297
1297
  fill: "none",
@@ -1308,7 +1308,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1308
1308
  type: "text",
1309
1309
  class: "mint-dataframe__search",
1310
1310
  placeholder: __props.searchPlaceholder
1311
- }, null, 8, _hoisted_3$45), [[vModelText, searchQuery.value]])])])) : createCommentVNode("", true),
1311
+ }, null, 8, _hoisted_3$46), [[vModelText, searchQuery.value]])])])) : createCommentVNode("", true),
1312
1312
  createElementVNode("div", {
1313
1313
  class: "mint-dataframe__table-wrapper",
1314
1314
  style: normalizeStyle(wrapperStyle.value)
@@ -1395,7 +1395,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1395
1395
  "stroke-linecap": "round",
1396
1396
  "stroke-linejoin": "round"
1397
1397
  }, [createElementVNode("polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12" }), createElementVNode("path", { d: "M5.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" })], -1)), createElementVNode("p", _hoisted_14$24, toDisplayString(__props.emptyText), 1)])])) : createCommentVNode("", true),
1398
- __props.loading ? (openBlock(), createElementBlock("div", _hoisted_15$22, [renderSlot(_ctx.$slots, "loading", {}, () => [_cache[7] || (_cache[7] = createElementVNode("svg", {
1398
+ __props.loading ? (openBlock(), createElementBlock("div", _hoisted_15$23, [renderSlot(_ctx.$slots, "loading", {}, () => [_cache[7] || (_cache[7] = createElementVNode("svg", {
1399
1399
  class: "mint-dataframe__loading-spinner",
1400
1400
  viewBox: "0 0 24 24",
1401
1401
  fill: "none",
@@ -1414,7 +1414,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1414
1414
  "stroke-linecap": "round"
1415
1415
  })], -1))])])) : createCommentVNode("", true)
1416
1416
  ], 4),
1417
- __props.pagination ? (openBlock(), createElementBlock("div", _hoisted_16$21, [renderSlot(_ctx.$slots, "footer", {}, () => [createElementVNode("span", _hoisted_17$21, toDisplayString((__props.pagination.page - 1) * __props.pagination.pageSize + 1) + "–" + toDisplayString(Math.min(__props.pagination.page * __props.pagination.pageSize, sortedData.value.length)) + " of " + toDisplayString(sortedData.value.length), 1), createElementVNode("div", _hoisted_18$21, [
1417
+ __props.pagination ? (openBlock(), createElementBlock("div", _hoisted_16$22, [renderSlot(_ctx.$slots, "footer", {}, () => [createElementVNode("span", _hoisted_17$22, toDisplayString((__props.pagination.page - 1) * __props.pagination.pageSize + 1) + "–" + toDisplayString(Math.min(__props.pagination.page * __props.pagination.pageSize, sortedData.value.length)) + " of " + toDisplayString(sortedData.value.length), 1), createElementVNode("div", _hoisted_18$22, [
1418
1418
  createElementVNode("button", {
1419
1419
  type: "button",
1420
1420
  class: "mint-dataframe__page-btn",
@@ -1427,8 +1427,8 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1427
1427
  "stroke-width": "2",
1428
1428
  "stroke-linecap": "round",
1429
1429
  "stroke-linejoin": "round"
1430
- }, [createElementVNode("path", { d: "m15 18-6-6 6-6" })], -1)])], 8, _hoisted_19$19),
1431
- createElementVNode("span", _hoisted_20$18, toDisplayString(__props.pagination.page) + " / " + toDisplayString(totalPages.value), 1),
1430
+ }, [createElementVNode("path", { d: "m15 18-6-6 6-6" })], -1)])], 8, _hoisted_19$20),
1431
+ createElementVNode("span", _hoisted_20$19, toDisplayString(__props.pagination.page) + " / " + toDisplayString(totalPages.value), 1),
1432
1432
  createElementVNode("button", {
1433
1433
  type: "button",
1434
1434
  class: "mint-dataframe__page-btn",
@@ -1441,7 +1441,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1441
1441
  "stroke-width": "2",
1442
1442
  "stroke-linecap": "round",
1443
1443
  "stroke-linejoin": "round"
1444
- }, [createElementVNode("path", { d: "m9 18 6-6-6-6" })], -1)])], 8, _hoisted_21$15)
1444
+ }, [createElementVNode("path", { d: "m9 18 6-6-6-6" })], -1)])], 8, _hoisted_21$16)
1445
1445
  ])])])) : createCommentVNode("", true)
1446
1446
  ], 2);
1447
1447
  };
@@ -1449,12 +1449,12 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1449
1449
  });
1450
1450
  //#endregion
1451
1451
  //#region src/components/FormField.vue?vue&type=script&setup=true&lang.ts
1452
- var _hoisted_1$55 = { class: "mint-form-field" };
1453
- var _hoisted_2$47 = {
1452
+ var _hoisted_1$56 = { class: "mint-form-field" };
1453
+ var _hoisted_2$48 = {
1454
1454
  key: 0,
1455
1455
  class: "mint-form-field__label-row"
1456
1456
  };
1457
- var _hoisted_3$44 = ["for"];
1457
+ var _hoisted_3$45 = ["for"];
1458
1458
  var _hoisted_4$39 = {
1459
1459
  key: 0,
1460
1460
  class: "mint-form-field__required",
@@ -1486,11 +1486,11 @@ var FormField_default = /* @__PURE__ */ defineComponent({
1486
1486
  const hintId = computed(() => !props.error && props.hint && props.fieldId ? `${props.fieldId}-hint` : void 0);
1487
1487
  const describedBy = computed(() => errorId.value ?? hintId.value);
1488
1488
  return (_ctx, _cache) => {
1489
- return openBlock(), createElementBlock("div", _hoisted_1$55, [
1490
- __props.label ? (openBlock(), createElementBlock("div", _hoisted_2$47, [createElementVNode("label", {
1489
+ return openBlock(), createElementBlock("div", _hoisted_1$56, [
1490
+ __props.label ? (openBlock(), createElementBlock("div", _hoisted_2$48, [createElementVNode("label", {
1491
1491
  for: __props.htmlFor,
1492
1492
  class: "mint-form-field__label"
1493
- }, [createTextVNode(toDisplayString(__props.label) + " ", 1), __props.required ? (openBlock(), createElementBlock("span", _hoisted_4$39, "*")) : createCommentVNode("", true)], 8, _hoisted_3$44), !__props.required && __props.showOptional ? (openBlock(), createElementBlock("span", _hoisted_5$37, " optional ")) : createCommentVNode("", true)])) : createCommentVNode("", true),
1493
+ }, [createTextVNode(toDisplayString(__props.label) + " ", 1), __props.required ? (openBlock(), createElementBlock("span", _hoisted_4$39, "*")) : createCommentVNode("", true)], 8, _hoisted_3$45), !__props.required && __props.showOptional ? (openBlock(), createElementBlock("span", _hoisted_5$37, " optional ")) : createCommentVNode("", true)])) : createCommentVNode("", true),
1494
1494
  renderSlot(_ctx.$slots, "default", { describedBy: describedBy.value }),
1495
1495
  __props.error ? (openBlock(), createElementBlock("p", {
1496
1496
  key: 1,
@@ -1508,7 +1508,7 @@ var FormField_default = /* @__PURE__ */ defineComponent({
1508
1508
  });
1509
1509
  //#endregion
1510
1510
  //#region src/components/AlertBox.vue?vue&type=script&setup=true&lang.ts
1511
- var _hoisted_1$54 = {
1511
+ var _hoisted_1$55 = {
1512
1512
  key: 0,
1513
1513
  class: "mint-alert__icon mint-alert__icon--success",
1514
1514
  viewBox: "0 0 24 24",
@@ -1518,7 +1518,7 @@ var _hoisted_1$54 = {
1518
1518
  "stroke-linecap": "round",
1519
1519
  "stroke-linejoin": "round"
1520
1520
  };
1521
- var _hoisted_2$46 = {
1521
+ var _hoisted_2$47 = {
1522
1522
  key: 1,
1523
1523
  class: "mint-alert__icon mint-alert__icon--error",
1524
1524
  viewBox: "0 0 24 24",
@@ -1528,7 +1528,7 @@ var _hoisted_2$46 = {
1528
1528
  "stroke-linecap": "round",
1529
1529
  "stroke-linejoin": "round"
1530
1530
  };
1531
- var _hoisted_3$43 = {
1531
+ var _hoisted_3$44 = {
1532
1532
  key: 2,
1533
1533
  class: "mint-alert__icon mint-alert__icon--warning",
1534
1534
  viewBox: "0 0 24 24",
@@ -1583,11 +1583,11 @@ var AlertBox_default = /* @__PURE__ */ defineComponent({
1583
1583
  class: normalizeClass(["mint-alert", `mint-alert--${props.type}`]),
1584
1584
  role: "alert"
1585
1585
  }, [
1586
- props.type === "success" ? (openBlock(), createElementBlock("svg", _hoisted_1$54, [..._cache[2] || (_cache[2] = [createElementVNode("circle", {
1586
+ props.type === "success" ? (openBlock(), createElementBlock("svg", _hoisted_1$55, [..._cache[2] || (_cache[2] = [createElementVNode("circle", {
1587
1587
  cx: "12",
1588
1588
  cy: "12",
1589
1589
  r: "10"
1590
- }, null, -1), createElementVNode("path", { d: "m9 12 2 2 4-4" }, null, -1)])])) : props.type === "error" ? (openBlock(), createElementBlock("svg", _hoisted_2$46, [..._cache[3] || (_cache[3] = [
1590
+ }, null, -1), createElementVNode("path", { d: "m9 12 2 2 4-4" }, null, -1)])])) : props.type === "error" ? (openBlock(), createElementBlock("svg", _hoisted_2$47, [..._cache[3] || (_cache[3] = [
1591
1591
  createElementVNode("circle", {
1592
1592
  cx: "12",
1593
1593
  cy: "12",
@@ -1595,7 +1595,7 @@ var AlertBox_default = /* @__PURE__ */ defineComponent({
1595
1595
  }, null, -1),
1596
1596
  createElementVNode("path", { d: "m15 9-6 6" }, null, -1),
1597
1597
  createElementVNode("path", { d: "m9 9 6 6" }, null, -1)
1598
- ])])) : props.type === "warning" ? (openBlock(), createElementBlock("svg", _hoisted_3$43, [..._cache[4] || (_cache[4] = [
1598
+ ])])) : props.type === "warning" ? (openBlock(), createElementBlock("svg", _hoisted_3$44, [..._cache[4] || (_cache[4] = [
1599
1599
  createElementVNode("path", { d: "m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" }, null, -1),
1600
1600
  createElementVNode("path", { d: "M12 9v4" }, null, -1),
1601
1601
  createElementVNode("path", { d: "M12 17h.01" }, null, -1)
@@ -1635,9 +1635,9 @@ var AlertBox_default = /* @__PURE__ */ defineComponent({
1635
1635
  });
1636
1636
  //#endregion
1637
1637
  //#region src/components/ToastNotification.vue?vue&type=script&setup=true&lang.ts
1638
- var _hoisted_1$53 = { class: "mint-toast__container" };
1639
- var _hoisted_2$45 = ["onClick"];
1640
- var _hoisted_3$42 = { class: "mint-toast__message" };
1638
+ var _hoisted_1$54 = { class: "mint-toast__container" };
1639
+ var _hoisted_2$46 = ["onClick"];
1640
+ var _hoisted_3$43 = { class: "mint-toast__message" };
1641
1641
  //#endregion
1642
1642
  //#region src/components/ToastNotification.vue
1643
1643
  var ToastNotification_default = /* @__PURE__ */ defineComponent({
@@ -1652,7 +1652,7 @@ var ToastNotification_default = /* @__PURE__ */ defineComponent({
1652
1652
  info: "#3B82F6"
1653
1653
  };
1654
1654
  return (_ctx, _cache) => {
1655
- return openBlock(), createBlock(Teleport, { to: "body" }, [createElementVNode("div", _hoisted_1$53, [createVNode(TransitionGroup, { name: "toast" }, {
1655
+ return openBlock(), createBlock(Teleport, { to: "body" }, [createElementVNode("div", _hoisted_1$54, [createVNode(TransitionGroup, { name: "toast" }, {
1656
1656
  default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(toasts), (toast) => {
1657
1657
  return openBlock(), createElementBlock("div", {
1658
1658
  key: toast.id,
@@ -1726,7 +1726,7 @@ var ToastNotification_default = /* @__PURE__ */ defineComponent({
1726
1726
  createElementVNode("path", { d: "M12 16v-4" }, null, -1),
1727
1727
  createElementVNode("path", { d: "M12 8h.01" }, null, -1)
1728
1728
  ])], 4)),
1729
- createElementVNode("span", _hoisted_3$42, toDisplayString(toast.message), 1),
1729
+ createElementVNode("span", _hoisted_3$43, toDisplayString(toast.message), 1),
1730
1730
  createElementVNode("span", {
1731
1731
  class: "mint-toast__progress",
1732
1732
  style: normalizeStyle({
@@ -1734,7 +1734,7 @@ var ToastNotification_default = /* @__PURE__ */ defineComponent({
1734
1734
  animationDuration: `${toast.duration ?? 3500}ms`
1735
1735
  })
1736
1736
  }, null, 4)
1737
- ], 14, _hoisted_2$45);
1737
+ ], 14, _hoisted_2$46);
1738
1738
  }), 128))]),
1739
1739
  _: 1
1740
1740
  })])]);
@@ -1743,7 +1743,7 @@ var ToastNotification_default = /* @__PURE__ */ defineComponent({
1743
1743
  });
1744
1744
  //#endregion
1745
1745
  //#region src/components/IconButton.vue?vue&type=script&setup=true&lang.ts
1746
- var _hoisted_1$52 = [
1746
+ var _hoisted_1$53 = [
1747
1747
  "disabled",
1748
1748
  "aria-label",
1749
1749
  "title"
@@ -1805,13 +1805,13 @@ var IconButton_default = /* @__PURE__ */ defineComponent({
1805
1805
  }, null, -1)])], 2)) : (openBlock(), createElementBlock("span", {
1806
1806
  key: 1,
1807
1807
  class: normalizeClass(`mint-icon-button__icon--${__props.size}`)
1808
- }, [renderSlot(_ctx.$slots, "default")], 2))], 10, _hoisted_1$52);
1808
+ }, [renderSlot(_ctx.$slots, "default")], 2))], 10, _hoisted_1$53);
1809
1809
  };
1810
1810
  }
1811
1811
  });
1812
1812
  //#endregion
1813
1813
  //#region src/components/ThemeToggle.vue?vue&type=script&setup=true&lang.ts
1814
- var _hoisted_1$51 = ["aria-label"];
1814
+ var _hoisted_1$52 = ["aria-label"];
1815
1815
  //#endregion
1816
1816
  //#region src/components/ThemeToggle.vue
1817
1817
  var ThemeToggle_default = /* @__PURE__ */ defineComponent({
@@ -1844,13 +1844,13 @@ var ThemeToggle_default = /* @__PURE__ */ defineComponent({
1844
1844
  "stroke-width": "2",
1845
1845
  "stroke-linecap": "round",
1846
1846
  "stroke-linejoin": "round"
1847
- }, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" }, null, -1)])], 2))], 10, _hoisted_1$51);
1847
+ }, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401" }, null, -1)])], 2))], 10, _hoisted_1$52);
1848
1848
  };
1849
1849
  }
1850
1850
  });
1851
1851
  //#endregion
1852
1852
  //#region src/components/SettingsButton.vue?vue&type=script&setup=true&lang.ts
1853
- var _hoisted_1$50 = { class: "mint-settings-dropdown" };
1853
+ var _hoisted_1$51 = { class: "mint-settings-dropdown" };
1854
1854
  //#endregion
1855
1855
  //#region src/components/SettingsButton.vue
1856
1856
  var SettingsButton_default = /* @__PURE__ */ defineComponent({
@@ -1898,15 +1898,15 @@ var SettingsButton_default = /* @__PURE__ */ defineComponent({
1898
1898
  cx: "12",
1899
1899
  cy: "12",
1900
1900
  r: "3"
1901
- }, null, -1)])], 2))], 2), withDirectives(createElementVNode("div", _hoisted_1$50, [renderSlot(_ctx.$slots, "default", {}, () => [_cache[1] || (_cache[1] = createElementVNode("div", { class: "mint-settings-dropdown__empty" }, " No settings configured ", -1))])], 512), [[vShow, isOpen.value]])], 512);
1901
+ }, null, -1)])], 2))], 2), withDirectives(createElementVNode("div", _hoisted_1$51, [renderSlot(_ctx.$slots, "default", {}, () => [_cache[1] || (_cache[1] = createElementVNode("div", { class: "mint-settings-dropdown__empty" }, " No settings configured ", -1))])], 512), [[vShow, isOpen.value]])], 512);
1902
1902
  };
1903
1903
  }
1904
1904
  });
1905
1905
  //#endregion
1906
1906
  //#region src/components/CollapsibleCard.vue?vue&type=script&setup=true&lang.ts
1907
- var _hoisted_1$49 = ["disabled", "aria-expanded"];
1908
- var _hoisted_2$44 = { class: "mint-collapsible-card__title-section" };
1909
- var _hoisted_3$41 = ["d"];
1907
+ var _hoisted_1$50 = ["disabled", "aria-expanded"];
1908
+ var _hoisted_2$45 = { class: "mint-collapsible-card__title-section" };
1909
+ var _hoisted_3$42 = ["d"];
1910
1910
  var _hoisted_4$37 = ["d"];
1911
1911
  var _hoisted_5$35 = { class: "mint-collapsible-card__titles" };
1912
1912
  var _hoisted_6$34 = { class: "mint-collapsible-card__title" };
@@ -1984,7 +1984,7 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
1984
1984
  disabled: __props.disabled,
1985
1985
  "aria-expanded": isOpen.value,
1986
1986
  onClick: toggle
1987
- }, [createElementVNode("div", _hoisted_2$44, [__props.icon ? (openBlock(), createElementBlock("div", {
1987
+ }, [createElementVNode("div", _hoisted_2$45, [__props.icon ? (openBlock(), createElementBlock("div", {
1988
1988
  key: 0,
1989
1989
  class: "mint-collapsible-card__icon-badge",
1990
1990
  style: normalizeStyle(iconBgStyle.value)
@@ -2002,7 +2002,7 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
2002
2002
  return openBlock(), createElementBlock("path", {
2003
2003
  key: i,
2004
2004
  d
2005
- }, null, 8, _hoisted_3$41);
2005
+ }, null, 8, _hoisted_3$42);
2006
2006
  }), 128)) : (openBlock(), createElementBlock("path", {
2007
2007
  key: 1,
2008
2008
  d: __props.icon
@@ -2029,7 +2029,7 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
2029
2029
  "stroke-linecap": "round",
2030
2030
  "stroke-linejoin": "round",
2031
2031
  viewBox: "0 0 24 24"
2032
- }, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))])], 10, _hoisted_1$49), createVNode(Transition, { name: "collapse" }, {
2032
+ }, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))])], 10, _hoisted_1$50), createVNode(Transition, { name: "collapse" }, {
2033
2033
  default: withCtx(() => [withDirectives(createElementVNode("div", _hoisted_10$27, [createElementVNode("div", _hoisted_11$27, [renderSlot(_ctx.$slots, "default")])], 512), [[vShow, isOpen.value]])]),
2034
2034
  _: 3
2035
2035
  })], 2);
@@ -2037,24 +2037,108 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
2037
2037
  }
2038
2038
  });
2039
2039
  //#endregion
2040
+ //#region src/components/FormFieldRenderer.vue
2041
+ var FormFieldRenderer_default = /* @__PURE__ */ defineComponent({
2042
+ __name: "FormFieldRenderer",
2043
+ props: {
2044
+ field: {},
2045
+ resolvedProps: {},
2046
+ form: {}
2047
+ },
2048
+ setup(__props) {
2049
+ /**
2050
+ * Renders a single form field inside a FormField wrapper.
2051
+ *
2052
+ * Resolves the SDK component for the field type from the registry, shows
2053
+ * validation errors only after the field has been touched, and handles the
2054
+ * FileUploader's event-based upload pattern via `handleUpload`. Consumers can
2055
+ * override rendering via the `field:<name>` slot.
2056
+ */
2057
+ const props = __props;
2058
+ const entry = computed(() => getFieldRegistryEntry(props.field.type));
2059
+ const errorMessage = computed(() => {
2060
+ const name = props.field.name;
2061
+ return props.form.touched[name] ? props.form.errors[name] : null;
2062
+ });
2063
+ function handleUpload(files) {
2064
+ props.form.setFieldValue(props.field.name, files);
2065
+ }
2066
+ return (_ctx, _cache) => {
2067
+ return openBlock(), createBlock(FormField_default, {
2068
+ label: __props.field.label,
2069
+ error: errorMessage.value ?? void 0,
2070
+ hint: __props.field.hint,
2071
+ required: !!__props.field.validation?.required,
2072
+ "html-for": __props.field.name
2073
+ }, {
2074
+ default: withCtx(() => [renderSlot(_ctx.$slots, `field:${__props.field.name}`, {
2075
+ field: __props.field,
2076
+ form: __props.form,
2077
+ fieldProps: __props.form.getFieldProps(__props.field.name)
2078
+ }, () => [entry.value.vModel ? (openBlock(), createBlock(resolveDynamicComponent(entry.value.component), normalizeProps(mergeProps({ key: 0 }, __props.resolvedProps)), null, 16)) : (openBlock(), createBlock(resolveDynamicComponent(entry.value.component), mergeProps({ key: 1 }, __props.resolvedProps, { onUpload: handleUpload }), null, 16))])]),
2079
+ _: 3
2080
+ }, 8, [
2081
+ "label",
2082
+ "error",
2083
+ "hint",
2084
+ "required",
2085
+ "html-for"
2086
+ ]);
2087
+ };
2088
+ }
2089
+ });
2090
+ //#endregion
2040
2091
  //#region src/components/SettingsModal.vue?vue&type=script&setup=true&lang.ts
2041
- var _hoisted_1$48 = { class: "mint-settings-modal" };
2042
- var _hoisted_2$43 = {
2092
+ var _hoisted_1$49 = {
2043
2093
  key: 0,
2044
2094
  class: "mint-settings-modal__tabs"
2045
2095
  };
2046
- var _hoisted_3$40 = ["onClick"];
2047
- var _hoisted_4$36 = { class: "mint-settings-modal__content" };
2048
- var _hoisted_5$34 = { key: 0 };
2049
- var _hoisted_6$33 = { class: "mint-settings-modal__section" };
2050
- var _hoisted_7$29 = { class: "mint-settings-modal__option-group" };
2051
- var _hoisted_8$27 = ["onClick"];
2052
- var _hoisted_9$27 = { class: "mint-settings-modal__section" };
2053
- var _hoisted_10$26 = { class: "mint-settings-modal__option-group" };
2054
- var _hoisted_11$26 = ["onClick"];
2055
- var _hoisted_12$24 = { class: "mint-settings-modal__section" };
2056
- var _hoisted_13$24 = { class: "mint-settings-modal__option-group" };
2057
- var _hoisted_14$23 = ["onClick"];
2096
+ var _hoisted_2$44 = ["onClick"];
2097
+ var _hoisted_3$41 = {
2098
+ key: 1,
2099
+ class: "mint-settings-modal__rail",
2100
+ role: "tablist",
2101
+ "aria-orientation": "vertical",
2102
+ "aria-label": "Settings sections"
2103
+ };
2104
+ var _hoisted_4$36 = [
2105
+ "id",
2106
+ "aria-selected",
2107
+ "aria-controls",
2108
+ "tabindex",
2109
+ "onClick"
2110
+ ];
2111
+ var _hoisted_5$34 = {
2112
+ class: "mint-settings-modal__rail-item-icon",
2113
+ "aria-hidden": "true"
2114
+ };
2115
+ var _hoisted_6$33 = ["innerHTML"];
2116
+ var _hoisted_7$29 = { class: "mint-settings-modal__rail-item-text" };
2117
+ var _hoisted_8$27 = { class: "mint-settings-modal__rail-item-label" };
2118
+ var _hoisted_9$27 = {
2119
+ key: 0,
2120
+ class: "mint-settings-modal__rail-item-description"
2121
+ };
2122
+ var _hoisted_10$26 = {
2123
+ key: 0,
2124
+ class: "mint-settings-modal__pane-header"
2125
+ };
2126
+ var _hoisted_11$26 = { class: "mint-settings-modal__pane-title" };
2127
+ var _hoisted_12$24 = {
2128
+ key: 0,
2129
+ class: "mint-settings-modal__pane-subtitle"
2130
+ };
2131
+ var _hoisted_13$24 = { key: 2 };
2132
+ var _hoisted_14$23 = { class: "mint-settings-modal__section" };
2133
+ var _hoisted_15$22 = { class: "mint-settings-modal__option-group" };
2134
+ var _hoisted_16$21 = ["onClick"];
2135
+ var _hoisted_17$21 = { class: "mint-settings-modal__section" };
2136
+ var _hoisted_18$21 = { class: "mint-settings-modal__option-group" };
2137
+ var _hoisted_19$19 = ["onClick"];
2138
+ var _hoisted_20$18 = { class: "mint-settings-modal__section" };
2139
+ var _hoisted_21$15 = { class: "mint-settings-modal__option-group" };
2140
+ var _hoisted_22$13 = ["onClick"];
2141
+ var APPEARANCE_TAB_ID = "appearance";
2058
2142
  //#endregion
2059
2143
  //#region src/components/SettingsModal.vue
2060
2144
  var SettingsModal_default = /* @__PURE__ */ defineComponent({
@@ -2067,19 +2151,79 @@ var SettingsModal_default = /* @__PURE__ */ defineComponent({
2067
2151
  type: Boolean,
2068
2152
  default: true
2069
2153
  },
2070
- size: { default: "lg" }
2154
+ size: { default: "lg" },
2155
+ layout: { default: "horizontal" },
2156
+ schema: {},
2157
+ values: {},
2158
+ enhancements: {}
2071
2159
  },
2072
- emits: ["update:modelValue", "close"],
2160
+ emits: [
2161
+ "update:modelValue",
2162
+ "update:values",
2163
+ "close"
2164
+ ],
2073
2165
  setup(__props, { emit: __emit }) {
2074
- /** Tabbed settings modal with a built-in appearance tab (theme, color palette, table density) and extensible custom tabs. */
2166
+ /**
2167
+ * Tabbed settings modal with three usage modes:
2168
+ *
2169
+ * 1. Schema-driven (recommended) — pass `schema` + `v-model:values`. Each
2170
+ * group becomes a tab; fields auto-render via the SDK's FormFieldRenderer
2171
+ * registry (text, select, number, toggle, molecule, concentration, …).
2172
+ * Conditional visibility, validation, and dynamic options come for free.
2173
+ *
2174
+ * 2. Manual tabs + slots — pass `tabs` and a `<template #tab-{id}>` slot
2175
+ * per tab. Use this when you need bespoke widgets the form-builder
2176
+ * registry doesn't cover (or for legacy plugins).
2177
+ *
2178
+ * 3. Appearance only — `showAppearance` (default true) renders the built-in
2179
+ * theme / palette / table-density tab. Works alongside both modes above.
2180
+ *
2181
+ * Layout: `horizontal` (underline tabs, default) or `vertical` (sidebar rail
2182
+ * with optional icons + descriptions, recommended for 5+ groups).
2183
+ */
2184
+ function buildFlatSchema(schema) {
2185
+ return { sections: schema.groups.map((g) => ({
2186
+ id: g.id,
2187
+ title: "",
2188
+ fields: g.fields,
2189
+ columns: g.columns,
2190
+ condition: g.condition
2191
+ })) };
2192
+ }
2075
2193
  const props = __props;
2076
2194
  const emit = __emit;
2077
2195
  const settings = useSettingsStore();
2078
- const allTabs = computed(() => props.showAppearance ? [...props.tabs, {
2079
- id: "appearance",
2080
- label: "Appearance"
2081
- }] : props.tabs);
2082
- const activeTab = ref(allTabs.value[0]?.id || "appearance");
2196
+ const APPEARANCE_TAB = {
2197
+ id: APPEARANCE_TAB_ID,
2198
+ label: "Appearance",
2199
+ description: "Theme, color palette, and table density"
2200
+ };
2201
+ const isVertical = computed(() => props.layout === "vertical");
2202
+ const uid = `mint-settings-${Math.random().toString(36).slice(2, 9)}`;
2203
+ const tabId = (id) => `${uid}-tab-${id}`;
2204
+ const panelId = (id) => `${uid}-panel-${id}`;
2205
+ const builder = props.schema ? useFormBuilder(buildFlatSchema(props.schema), props.values, props.enhancements) : null;
2206
+ if (builder) watch(() => ({ ...builder.form.data }), (data) => emit("update:values", data), { deep: true });
2207
+ const visibleSchemaGroups = computed(() => builder && props.schema ? props.schema.groups.filter((g) => builder.isSectionVisible(g.id)) : []);
2208
+ const allTabs = computed(() => {
2209
+ const base = props.schema ? visibleSchemaGroups.value.map((g) => ({
2210
+ id: g.id,
2211
+ label: g.label,
2212
+ icon: g.icon,
2213
+ description: g.description
2214
+ })) : props.tabs;
2215
+ return props.showAppearance ? [...base, APPEARANCE_TAB] : base;
2216
+ });
2217
+ const activeTab = ref(allTabs.value[0]?.id || APPEARANCE_TAB_ID);
2218
+ const activeTabMeta = computed(() => allTabs.value.find((t) => t.id === activeTab.value));
2219
+ watch(allTabs, (tabs) => {
2220
+ if (!tabs.some((t) => t.id === activeTab.value)) activeTab.value = tabs[0]?.id ?? APPEARANCE_TAB_ID;
2221
+ });
2222
+ const activeGroup = computed(() => visibleSchemaGroups.value.find((g) => g.id === activeTab.value));
2223
+ const activeGroupVisibleFields = computed(() => {
2224
+ if (!activeGroup.value || !builder) return [];
2225
+ return activeGroup.value.fields.filter((f) => builder.isFieldVisible(f.name));
2226
+ });
2083
2227
  const themeOptions = [
2084
2228
  {
2085
2229
  value: "light",
@@ -2120,46 +2264,97 @@ var SettingsModal_default = /* @__PURE__ */ defineComponent({
2120
2264
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("update:modelValue", $event)),
2121
2265
  onClose: handleClose
2122
2266
  }, {
2123
- default: withCtx(() => [createElementVNode("div", _hoisted_1$48, [allTabs.value.length > 1 ? (openBlock(), createElementBlock("div", _hoisted_2$43, [(openBlock(true), createElementBlock(Fragment, null, renderList(allTabs.value, (tab) => {
2267
+ default: withCtx(() => [createElementVNode("div", { class: normalizeClass(["mint-settings-modal", `mint-settings-modal--${__props.layout}`]) }, [!isVertical.value && allTabs.value.length > 1 ? (openBlock(), createElementBlock("div", _hoisted_1$49, [(openBlock(true), createElementBlock(Fragment, null, renderList(allTabs.value, (tab) => {
2124
2268
  return openBlock(), createElementBlock("button", {
2125
2269
  key: tab.id,
2126
2270
  type: "button",
2127
2271
  class: normalizeClass(["mint-settings-modal__tab", { "mint-settings-modal__tab--active": activeTab.value === tab.id }]),
2128
2272
  onClick: ($event) => activeTab.value = tab.id
2129
- }, toDisplayString(tab.label), 11, _hoisted_3$40);
2130
- }), 128))])) : createCommentVNode("", true), createElementVNode("div", _hoisted_4$36, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab) => {
2131
- return withDirectives((openBlock(), createElementBlock("div", { key: tab.id }, [renderSlot(_ctx.$slots, `tab-${tab.id}`)], 512)), [[vShow, activeTab.value === tab.id]]);
2132
- }), 128)), __props.showAppearance ? withDirectives((openBlock(), createElementBlock("div", _hoisted_5$34, [
2133
- createElementVNode("div", _hoisted_6$33, [_cache[1] || (_cache[1] = createElementVNode("div", { class: "mint-settings-modal__section-label" }, "Theme", -1)), createElementVNode("div", _hoisted_7$29, [(openBlock(), createElementBlock(Fragment, null, renderList(themeOptions, (opt) => {
2134
- return createElementVNode("button", {
2135
- key: opt.value,
2136
- type: "button",
2137
- class: normalizeClass(["mint-settings-modal__option-btn", { "mint-settings-modal__option-btn--active": unref(settings).theme === opt.value }]),
2138
- onClick: ($event) => unref(settings).theme = opt.value
2139
- }, toDisplayString(opt.label), 11, _hoisted_8$27);
2140
- }), 64))])]),
2141
- createElementVNode("div", _hoisted_9$27, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "mint-settings-modal__section-label" }, "Color Palette", -1)), createElementVNode("div", _hoisted_10$26, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(colorPalettes), (palette, key) => {
2142
- return openBlock(), createElementBlock("button", {
2143
- key,
2144
- type: "button",
2145
- class: normalizeClass(["mint-settings-modal__option-btn", { "mint-settings-modal__option-btn--active": unref(settings).colorPalette === key }]),
2146
- onClick: ($event) => unref(settings).colorPalette = key
2147
- }, toDisplayString(palette.name), 11, _hoisted_11$26);
2148
- }), 128))])]),
2149
- createElementVNode("div", _hoisted_12$24, [
2150
- _cache[3] || (_cache[3] = createElementVNode("div", { class: "mint-settings-modal__section-label" }, "Table Density", -1)),
2151
- createElementVNode("div", _hoisted_13$24, [(openBlock(), createElementBlock(Fragment, null, renderList(densityOptions, (opt) => {
2273
+ }, toDisplayString(tab.label), 11, _hoisted_2$44);
2274
+ }), 128))])) : isVertical.value ? (openBlock(), createElementBlock("div", _hoisted_3$41, [(openBlock(true), createElementBlock(Fragment, null, renderList(allTabs.value, (tab) => {
2275
+ return openBlock(), createElementBlock("button", {
2276
+ id: tabId(tab.id),
2277
+ key: tab.id,
2278
+ type: "button",
2279
+ role: "tab",
2280
+ class: normalizeClass(["mint-settings-modal__rail-item", { "mint-settings-modal__rail-item--active": activeTab.value === tab.id }]),
2281
+ "aria-selected": activeTab.value === tab.id,
2282
+ "aria-controls": panelId(tab.id),
2283
+ tabindex: activeTab.value === tab.id ? 0 : -1,
2284
+ onClick: ($event) => activeTab.value = tab.id
2285
+ }, [createElementVNode("span", _hoisted_5$34, [tab.icon ? (openBlock(), createElementBlock("span", {
2286
+ key: 0,
2287
+ innerHTML: tab.icon
2288
+ }, null, 8, _hoisted_6$33)) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_7$29, [createElementVNode("span", _hoisted_8$27, toDisplayString(tab.label), 1), tab.description ? (openBlock(), createElementBlock("span", _hoisted_9$27, toDisplayString(tab.description), 1)) : createCommentVNode("", true)])], 10, _hoisted_4$36);
2289
+ }), 128))])) : createCommentVNode("", true), (openBlock(), createBlock(resolveDynamicComponent(isVertical.value ? "section" : "div"), {
2290
+ class: normalizeClass(isVertical.value ? "mint-settings-modal__pane" : "mint-settings-modal__content"),
2291
+ id: isVertical.value && activeTabMeta.value ? panelId(activeTabMeta.value.id) : void 0,
2292
+ role: isVertical.value ? "tabpanel" : void 0,
2293
+ "aria-labelledby": isVertical.value && activeTabMeta.value ? tabId(activeTabMeta.value.id) : void 0,
2294
+ tabindex: isVertical.value ? 0 : void 0
2295
+ }, {
2296
+ default: withCtx(() => [isVertical.value && activeTabMeta.value?.label ? (openBlock(), createElementBlock("header", _hoisted_10$26, [createElementVNode("h4", _hoisted_11$26, toDisplayString(activeTabMeta.value.label), 1), activeTabMeta.value.description ? (openBlock(), createElementBlock("p", _hoisted_12$24, toDisplayString(activeTabMeta.value.description), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("div", { class: normalizeClass(isVertical.value ? "mint-settings-modal__pane-body" : null) }, [__props.schema && unref(builder) && activeGroup.value ? (openBlock(), createElementBlock("div", {
2297
+ key: 0,
2298
+ class: "mint-settings-modal__group-grid",
2299
+ style: normalizeStyle({ "--mint-settings-cols": activeGroup.value.columns ?? 1 })
2300
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(activeGroupVisibleFields.value, (field) => {
2301
+ return openBlock(), createElementBlock("div", {
2302
+ key: field.name,
2303
+ style: normalizeStyle(field.colSpan ? { gridColumn: `span ${field.colSpan}` } : void 0)
2304
+ }, [renderSlot(_ctx.$slots, `field:${field.name}`, {
2305
+ field,
2306
+ form: unref(builder).form,
2307
+ fieldProps: unref(builder).form.getFieldProps(field.name)
2308
+ }, () => [createVNode(FormFieldRenderer_default, {
2309
+ field,
2310
+ "resolved-props": unref(builder).getResolvedFieldProps(field),
2311
+ form: unref(builder).form
2312
+ }, null, 8, [
2313
+ "field",
2314
+ "resolved-props",
2315
+ "form"
2316
+ ])])], 4);
2317
+ }), 128))], 4)) : !unref(builder) ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(__props.tabs, (tab) => {
2318
+ return withDirectives((openBlock(), createElementBlock("div", { key: tab.id }, [renderSlot(_ctx.$slots, `tab-${tab.id}`)], 512)), [[vShow, activeTab.value === tab.id]]);
2319
+ }), 128)) : createCommentVNode("", true), __props.showAppearance ? withDirectives((openBlock(), createElementBlock("div", _hoisted_13$24, [
2320
+ createElementVNode("div", _hoisted_14$23, [_cache[1] || (_cache[1] = createElementVNode("div", { class: "mint-settings-modal__section-label" }, "Theme", -1)), createElementVNode("div", _hoisted_15$22, [(openBlock(), createElementBlock(Fragment, null, renderList(themeOptions, (opt) => {
2152
2321
  return createElementVNode("button", {
2153
2322
  key: opt.value,
2154
2323
  type: "button",
2155
- class: normalizeClass(["mint-settings-modal__option-btn", { "mint-settings-modal__option-btn--active": unref(settings).tableDensity === opt.value }]),
2156
- onClick: ($event) => unref(settings).tableDensity = opt.value
2157
- }, toDisplayString(opt.label), 11, _hoisted_14$23);
2158
- }), 64))]),
2159
- _cache[4] || (_cache[4] = createElementVNode("p", { class: "mint-settings-modal__note" }, "Adjusts row height in data tables.", -1))
2160
- ]),
2161
- renderSlot(_ctx.$slots, "appearance")
2162
- ], 512)), [[vShow, activeTab.value === "appearance"]]) : createCommentVNode("", true)])])]),
2324
+ class: normalizeClass(["mint-settings-modal__option-btn", { "mint-settings-modal__option-btn--active": unref(settings).theme === opt.value }]),
2325
+ onClick: ($event) => unref(settings).theme = opt.value
2326
+ }, toDisplayString(opt.label), 11, _hoisted_16$21);
2327
+ }), 64))])]),
2328
+ createElementVNode("div", _hoisted_17$21, [_cache[2] || (_cache[2] = createElementVNode("div", { class: "mint-settings-modal__section-label" }, "Color Palette", -1)), createElementVNode("div", _hoisted_18$21, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(colorPalettes), (palette, key) => {
2329
+ return openBlock(), createElementBlock("button", {
2330
+ key,
2331
+ type: "button",
2332
+ class: normalizeClass(["mint-settings-modal__option-btn", { "mint-settings-modal__option-btn--active": unref(settings).colorPalette === key }]),
2333
+ onClick: ($event) => unref(settings).colorPalette = key
2334
+ }, toDisplayString(palette.name), 11, _hoisted_19$19);
2335
+ }), 128))])]),
2336
+ createElementVNode("div", _hoisted_20$18, [
2337
+ _cache[3] || (_cache[3] = createElementVNode("div", { class: "mint-settings-modal__section-label" }, "Table Density", -1)),
2338
+ createElementVNode("div", _hoisted_21$15, [(openBlock(), createElementBlock(Fragment, null, renderList(densityOptions, (opt) => {
2339
+ return createElementVNode("button", {
2340
+ key: opt.value,
2341
+ type: "button",
2342
+ class: normalizeClass(["mint-settings-modal__option-btn", { "mint-settings-modal__option-btn--active": unref(settings).tableDensity === opt.value }]),
2343
+ onClick: ($event) => unref(settings).tableDensity = opt.value
2344
+ }, toDisplayString(opt.label), 11, _hoisted_22$13);
2345
+ }), 64))]),
2346
+ _cache[4] || (_cache[4] = createElementVNode("p", { class: "mint-settings-modal__note" }, "Adjusts row height in data tables.", -1))
2347
+ ]),
2348
+ renderSlot(_ctx.$slots, "appearance")
2349
+ ], 512)), [[vShow, activeTab.value === APPEARANCE_TAB_ID]]) : createCommentVNode("", true)], 2)]),
2350
+ _: 3
2351
+ }, 8, [
2352
+ "class",
2353
+ "id",
2354
+ "role",
2355
+ "aria-labelledby",
2356
+ "tabindex"
2357
+ ]))], 2)]),
2163
2358
  _: 3
2164
2359
  }, 8, [
2165
2360
  "model-value",
@@ -2171,12 +2366,12 @@ var SettingsModal_default = /* @__PURE__ */ defineComponent({
2171
2366
  });
2172
2367
  //#endregion
2173
2368
  //#region src/components/ConfirmDialog.vue?vue&type=script&setup=true&lang.ts
2174
- var _hoisted_1$47 = { class: "mint-confirm" };
2175
- var _hoisted_2$42 = {
2369
+ var _hoisted_1$48 = { class: "mint-confirm" };
2370
+ var _hoisted_2$43 = {
2176
2371
  key: 1,
2177
2372
  class: "mint-confirm__message"
2178
2373
  };
2179
- var _hoisted_3$39 = { class: "mint-confirm__footer" };
2374
+ var _hoisted_3$40 = { class: "mint-confirm__footer" };
2180
2375
  var _hoisted_4$35 = ["disabled"];
2181
2376
  var _hoisted_5$33 = ["disabled"];
2182
2377
  var _hoisted_6$32 = {
@@ -2228,7 +2423,7 @@ var ConfirmDialog_default = /* @__PURE__ */ defineComponent({
2228
2423
  "close-on-escape": !__props.loading,
2229
2424
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("update:modelValue", $event))
2230
2425
  }, {
2231
- footer: withCtx(() => [createElementVNode("div", _hoisted_3$39, [createElementVNode("button", {
2426
+ footer: withCtx(() => [createElementVNode("div", _hoisted_3$40, [createElementVNode("button", {
2232
2427
  type: "button",
2233
2428
  class: "mint-confirm__btn-cancel",
2234
2429
  disabled: __props.loading,
@@ -2250,12 +2445,12 @@ var ConfirmDialog_default = /* @__PURE__ */ defineComponent({
2250
2445
  fill: "currentColor",
2251
2446
  d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
2252
2447
  }, null, -1)])])) : createCommentVNode("", true), createTextVNode(" " + toDisplayString(__props.confirmLabel), 1)], 10, _hoisted_5$33)])]),
2253
- default: withCtx(() => [createElementVNode("div", _hoisted_1$47, [
2448
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$48, [
2254
2449
  _ctx.$slots.icon ? (openBlock(), createElementBlock("div", {
2255
2450
  key: 0,
2256
2451
  class: normalizeClass(["mint-confirm__icon", `mint-confirm__icon--${__props.variant}`])
2257
2452
  }, [renderSlot(_ctx.$slots, "icon")], 2)) : createCommentVNode("", true),
2258
- __props.message ? (openBlock(), createElementBlock("p", _hoisted_2$42, toDisplayString(__props.message), 1)) : createCommentVNode("", true),
2453
+ __props.message ? (openBlock(), createElementBlock("p", _hoisted_2$43, toDisplayString(__props.message), 1)) : createCommentVNode("", true),
2259
2454
  renderSlot(_ctx.$slots, "default")
2260
2455
  ])]),
2261
2456
  _: 3
@@ -2272,12 +2467,12 @@ var ConfirmDialog_default = /* @__PURE__ */ defineComponent({
2272
2467
  });
2273
2468
  //#endregion
2274
2469
  //#region src/components/ExperimentPopover.vue?vue&type=script&setup=true&lang.ts
2275
- var _hoisted_1$46 = ["title"];
2276
- var _hoisted_2$41 = {
2470
+ var _hoisted_1$47 = ["title"];
2471
+ var _hoisted_2$42 = {
2277
2472
  key: 0,
2278
2473
  class: "mint-experiment-popover__trigger-code"
2279
2474
  };
2280
- var _hoisted_3$38 = {
2475
+ var _hoisted_3$39 = {
2281
2476
  key: 1,
2282
2477
  class: "mint-experiment-popover__trigger-text"
2283
2478
  };
@@ -2450,7 +2645,7 @@ var ExperimentPopover_default = /* @__PURE__ */ defineComponent({
2450
2645
  "stroke-width": "1.75",
2451
2646
  d: "M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"
2452
2647
  })], -1)),
2453
- __props.experimentCode ? (openBlock(), createElementBlock("span", _hoisted_2$41, toDisplayString(__props.experimentCode), 1)) : __props.experimentName ? (openBlock(), createElementBlock("span", _hoisted_3$38, toDisplayString(__props.experimentName), 1)) : (openBlock(), createElementBlock("span", _hoisted_4$34, "No experiment")),
2648
+ __props.experimentCode ? (openBlock(), createElementBlock("span", _hoisted_2$42, toDisplayString(__props.experimentCode), 1)) : __props.experimentName ? (openBlock(), createElementBlock("span", _hoisted_3$39, toDisplayString(__props.experimentName), 1)) : (openBlock(), createElementBlock("span", _hoisted_4$34, "No experiment")),
2454
2649
  _cache[2] || (_cache[2] = createElementVNode("svg", {
2455
2650
  class: "mint-experiment-popover__trigger-chevron",
2456
2651
  viewBox: "0 0 24 24",
@@ -2460,7 +2655,7 @@ var ExperimentPopover_default = /* @__PURE__ */ defineComponent({
2460
2655
  "stroke-linecap": "round",
2461
2656
  "stroke-linejoin": "round"
2462
2657
  }, [createElementVNode("path", { d: "m6 9 6 6 6-6" })], -1))
2463
- ], 10, _hoisted_1$46), __props.showSave && __props.experimentName ? (openBlock(), createElementBlock("button", {
2658
+ ], 10, _hoisted_1$47), __props.showSave && __props.experimentName ? (openBlock(), createElementBlock("button", {
2464
2659
  key: 0,
2465
2660
  type: "button",
2466
2661
  class: normalizeClass([
@@ -2599,9 +2794,9 @@ var Skeleton_default = /* @__PURE__ */ defineComponent({
2599
2794
  });
2600
2795
  //#endregion
2601
2796
  //#region src/components/EmptyState.vue?vue&type=script&setup=true&lang.ts
2602
- var _hoisted_1$45 = ["d"];
2603
- var _hoisted_2$40 = ["d"];
2604
- var _hoisted_3$37 = { class: "mint-empty-state__body" };
2797
+ var _hoisted_1$46 = ["d"];
2798
+ var _hoisted_2$41 = ["d"];
2799
+ var _hoisted_3$38 = { class: "mint-empty-state__body" };
2605
2800
  var _hoisted_4$33 = {
2606
2801
  key: 0,
2607
2802
  class: "mint-empty-state__title"
@@ -2654,13 +2849,13 @@ var EmptyState_default = /* @__PURE__ */ defineComponent({
2654
2849
  }, [__props.iconPath ? (openBlock(), createElementBlock("path", {
2655
2850
  key: 0,
2656
2851
  d: __props.iconPath
2657
- }, null, 8, _hoisted_1$45)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, renderList(defaultIconPaths, (d, i) => {
2852
+ }, null, 8, _hoisted_1$46)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, renderList(defaultIconPaths, (d, i) => {
2658
2853
  return createElementVNode("path", {
2659
2854
  key: i,
2660
2855
  d
2661
- }, null, 8, _hoisted_2$40);
2856
+ }, null, 8, _hoisted_2$41);
2662
2857
  }), 64))], 2))])], 2),
2663
- createElementVNode("div", _hoisted_3$37, [
2858
+ createElementVNode("div", _hoisted_3$38, [
2664
2859
  __props.title ? (openBlock(), createElementBlock("h3", _hoisted_4$33, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
2665
2860
  __props.description ? (openBlock(), createElementBlock("p", _hoisted_5$31, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
2666
2861
  renderSlot(_ctx.$slots, "default")
@@ -2675,7 +2870,7 @@ var EmptyState_default = /* @__PURE__ */ defineComponent({
2675
2870
  });
2676
2871
  //#endregion
2677
2872
  //#region src/components/ExperimentCodeBadge.vue?vue&type=script&setup=true&lang.ts
2678
- var _hoisted_1$44 = [
2873
+ var _hoisted_1$45 = [
2679
2874
  "role",
2680
2875
  "tabindex",
2681
2876
  "title"
@@ -2733,15 +2928,15 @@ var ExperimentCodeBadge_default = /* @__PURE__ */ defineComponent({
2733
2928
  title: __props.copyable ? copied.value ? "Copied!" : "Click to copy" : void 0,
2734
2929
  onClick: handleCopy,
2735
2930
  onKeydown: handleKeydown
2736
- }, toDisplayString(copied.value ? "Copied!" : __props.code), 43, _hoisted_1$44);
2931
+ }, toDisplayString(copied.value ? "Copied!" : __props.code), 43, _hoisted_1$45);
2737
2932
  };
2738
2933
  }
2739
2934
  });
2740
2935
  //#endregion
2741
2936
  //#region src/components/ExperimentSelectorModal.vue?vue&type=script&setup=true&lang.ts
2742
- var _hoisted_1$43 = { class: "mint-experiment-selector__filters-row" };
2743
- var _hoisted_2$39 = { class: "mint-experiment-selector__search" };
2744
- var _hoisted_3$36 = { class: "mint-experiment-selector__filter-select" };
2937
+ var _hoisted_1$44 = { class: "mint-experiment-selector__filters-row" };
2938
+ var _hoisted_2$40 = { class: "mint-experiment-selector__search" };
2939
+ var _hoisted_3$37 = { class: "mint-experiment-selector__filter-select" };
2745
2940
  var _hoisted_4$32 = {
2746
2941
  key: 0,
2747
2942
  class: "mint-experiment-selector__filter-select"
@@ -2909,15 +3104,15 @@ var ExperimentSelectorModal_default = /* @__PURE__ */ defineComponent({
2909
3104
  class: "mint-experiment-selector",
2910
3105
  onKeydown: handleKeydown
2911
3106
  }, [
2912
- createElementVNode("div", _hoisted_1$43, [
2913
- createElementVNode("div", _hoisted_2$39, [createVNode(BaseInput_default, {
3107
+ createElementVNode("div", _hoisted_1$44, [
3108
+ createElementVNode("div", _hoisted_2$40, [createVNode(BaseInput_default, {
2914
3109
  modelValue: unref(filters).search,
2915
3110
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => unref(filters).search = $event),
2916
3111
  placeholder: "Search experiments...",
2917
3112
  size: "sm",
2918
3113
  type: "search"
2919
3114
  }, null, 8, ["modelValue"])]),
2920
- createElementVNode("div", _hoisted_3$36, [createVNode(BaseSelect_default, {
3115
+ createElementVNode("div", _hoisted_3$37, [createVNode(BaseSelect_default, {
2921
3116
  "model-value": unref(filters).status ?? "",
2922
3117
  options: unref(EXPERIMENT_STATUS_OPTIONS),
2923
3118
  size: "sm",
@@ -3117,9 +3312,9 @@ var ExperimentSelectorModal_default = /* @__PURE__ */ defineComponent({
3117
3312
  });
3118
3313
  //#endregion
3119
3314
  //#region src/components/AppPageSelector.vue?vue&type=script&setup=true&lang.ts
3120
- var _hoisted_1$42 = ["aria-expanded"];
3121
- var _hoisted_2$38 = { class: "mint-page-selector__label" };
3122
- var _hoisted_3$35 = {
3315
+ var _hoisted_1$43 = ["aria-expanded"];
3316
+ var _hoisted_2$39 = { class: "mint-page-selector__label" };
3317
+ var _hoisted_3$36 = {
3123
3318
  class: "mint-page-selector__chevron-wrap",
3124
3319
  "aria-hidden": "true"
3125
3320
  };
@@ -3206,7 +3401,7 @@ var AppPageSelector_default = /* @__PURE__ */ defineComponent({
3206
3401
  "aria-expanded": isOpen.value,
3207
3402
  "aria-haspopup": "menu",
3208
3403
  onClick: withModifiers(toggle, ["stop"])
3209
- }, [createElementVNode("span", _hoisted_2$38, toDisplayString(current.value?.label ?? __props.placeholder), 1), createElementVNode("span", _hoisted_3$35, [(openBlock(), createElementBlock("svg", {
3404
+ }, [createElementVNode("span", _hoisted_2$39, toDisplayString(current.value?.label ?? __props.placeholder), 1), createElementVNode("span", _hoisted_3$36, [(openBlock(), createElementBlock("svg", {
3210
3405
  class: normalizeClass(["mint-page-selector__chevron", { "mint-page-selector__chevron--open": isOpen.value }]),
3211
3406
  viewBox: "0 0 24 24",
3212
3407
  fill: "none",
@@ -3214,7 +3409,7 @@ var AppPageSelector_default = /* @__PURE__ */ defineComponent({
3214
3409
  "stroke-width": "2",
3215
3410
  "stroke-linecap": "round",
3216
3411
  "stroke-linejoin": "round"
3217
- }, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))])], 10, _hoisted_1$42), isOpen.value ? (openBlock(), createElementBlock("div", _hoisted_4$31, [_cache[3] || (_cache[3] = createElementVNode("div", { class: "mint-page-selector__menu-title" }, "Go to", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.pages, (page) => {
3412
+ }, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))])], 10, _hoisted_1$43), isOpen.value ? (openBlock(), createElementBlock("div", _hoisted_4$31, [_cache[3] || (_cache[3] = createElementVNode("div", { class: "mint-page-selector__menu-title" }, "Go to", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.pages, (page) => {
3218
3413
  return openBlock(), createElementBlock(Fragment, { key: page.id }, [page.href ? (openBlock(), createElementBlock("a", {
3219
3414
  key: 0,
3220
3415
  href: page.href,
@@ -3268,12 +3463,12 @@ var AppPageSelector_default = /* @__PURE__ */ defineComponent({
3268
3463
  });
3269
3464
  //#endregion
3270
3465
  //#region src/components/AppPillNav.vue?vue&type=script&setup=true&lang.ts
3271
- var _hoisted_1$41 = {
3466
+ var _hoisted_1$42 = {
3272
3467
  class: "mint-pill-nav",
3273
3468
  "aria-label": "Primary"
3274
3469
  };
3275
- var _hoisted_2$37 = ["href"];
3276
- var _hoisted_3$34 = ["disabled", "onClick"];
3470
+ var _hoisted_2$38 = ["href"];
3471
+ var _hoisted_3$35 = ["disabled", "onClick"];
3277
3472
  //#endregion
3278
3473
  //#region src/components/AppPillNav.vue
3279
3474
  var AppPillNav_default = /* @__PURE__ */ defineComponent({
@@ -3292,7 +3487,7 @@ var AppPillNav_default = /* @__PURE__ */ defineComponent({
3292
3487
  }
3293
3488
  return (_ctx, _cache) => {
3294
3489
  const _component_router_link = resolveComponent("router-link");
3295
- return openBlock(), createElementBlock("nav", _hoisted_1$41, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
3490
+ return openBlock(), createElementBlock("nav", _hoisted_1$42, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
3296
3491
  return openBlock(), createElementBlock(Fragment, { key: item.id }, [item.href ? (openBlock(), createElementBlock("a", {
3297
3492
  key: 0,
3298
3493
  href: item.href,
@@ -3301,7 +3496,7 @@ var AppPillNav_default = /* @__PURE__ */ defineComponent({
3301
3496
  { "mint-pill-nav__item--active": item.id === __props.currentItemId },
3302
3497
  { "mint-pill-nav__item--disabled": item.disabled }
3303
3498
  ])
3304
- }, toDisplayString(item.label), 11, _hoisted_2$37)) : item.to ? (openBlock(), createBlock(_component_router_link, {
3499
+ }, toDisplayString(item.label), 11, _hoisted_2$38)) : item.to ? (openBlock(), createBlock(_component_router_link, {
3305
3500
  key: 1,
3306
3501
  to: item.to,
3307
3502
  class: normalizeClass([
@@ -3322,16 +3517,16 @@ var AppPillNav_default = /* @__PURE__ */ defineComponent({
3322
3517
  ]),
3323
3518
  disabled: item.disabled,
3324
3519
  onClick: ($event) => handleClick(item)
3325
- }, toDisplayString(item.label), 11, _hoisted_3$34))], 64);
3520
+ }, toDisplayString(item.label), 11, _hoisted_3$35))], 64);
3326
3521
  }), 128))]);
3327
3522
  };
3328
3523
  }
3329
3524
  });
3330
3525
  //#endregion
3331
3526
  //#region src/components/AppAvatarMenu.vue?vue&type=script&setup=true&lang.ts
3332
- var _hoisted_1$40 = ["aria-expanded", "title"];
3333
- var _hoisted_2$36 = { class: "mint-avatar-menu__avatar" };
3334
- var _hoisted_3$33 = {
3527
+ var _hoisted_1$41 = ["aria-expanded", "title"];
3528
+ var _hoisted_2$37 = { class: "mint-avatar-menu__avatar" };
3529
+ var _hoisted_3$34 = {
3335
3530
  key: 0,
3336
3531
  class: "mint-avatar-menu__name"
3337
3532
  };
@@ -3474,7 +3669,7 @@ var AppAvatarMenu_default = /* @__PURE__ */ defineComponent({
3474
3669
  "aria-haspopup": "menu",
3475
3670
  title: __props.userName ? `${__props.userName} · Account menu` : "Account menu",
3476
3671
  onClick: withModifiers(toggle, ["stop"])
3477
- }, [createElementVNode("span", _hoisted_2$36, [renderSlot(_ctx.$slots, "avatar", { initials: initials.value }, () => [createTextVNode(toDisplayString(initials.value), 1)])]), __props.userName ? (openBlock(), createElementBlock("span", _hoisted_3$33, toDisplayString(__props.userName), 1)) : createCommentVNode("", true)], 10, _hoisted_1$40), isOpen.value ? (openBlock(), createElementBlock("div", _hoisted_4$30, [
3672
+ }, [createElementVNode("span", _hoisted_2$37, [renderSlot(_ctx.$slots, "avatar", { initials: initials.value }, () => [createTextVNode(toDisplayString(initials.value), 1)])]), __props.userName ? (openBlock(), createElementBlock("span", _hoisted_3$34, toDisplayString(__props.userName), 1)) : createCommentVNode("", true)], 10, _hoisted_1$41), isOpen.value ? (openBlock(), createElementBlock("div", _hoisted_4$30, [
3478
3673
  __props.userName || __props.userEmail ? (openBlock(), createElementBlock("div", _hoisted_5$28, [__props.userName ? (openBlock(), createElementBlock("div", _hoisted_6$27, toDisplayString(__props.userName), 1)) : createCommentVNode("", true), __props.userEmail ? (openBlock(), createElementBlock("div", _hoisted_7$25, toDisplayString(__props.userEmail), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true),
3479
3674
  renderSlot(_ctx.$slots, "items", { close: () => isOpen.value = false }, () => [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
3480
3675
  return openBlock(), createElementBlock(Fragment, { key: item.id }, [item.divider ? (openBlock(), createElementBlock("div", _hoisted_8$23)) : item.href ? (openBlock(), createElementBlock("a", {
@@ -3531,9 +3726,9 @@ var AppAvatarMenu_default = /* @__PURE__ */ defineComponent({
3531
3726
  });
3532
3727
  //#endregion
3533
3728
  //#region src/components/AppPluginSwitcher.vue?vue&type=script&setup=true&lang.ts
3534
- var _hoisted_1$39 = ["aria-expanded"];
3535
- var _hoisted_2$35 = { class: "mint-plugin-switcher__label" };
3536
- var _hoisted_3$32 = {
3729
+ var _hoisted_1$40 = ["aria-expanded"];
3730
+ var _hoisted_2$36 = { class: "mint-plugin-switcher__label" };
3731
+ var _hoisted_3$33 = {
3537
3732
  key: 0,
3538
3733
  class: "mint-plugin-switcher__version"
3539
3734
  };
@@ -3667,8 +3862,8 @@ var AppPluginSwitcher_default = /* @__PURE__ */ defineComponent({
3667
3862
  "aria-haspopup": "menu",
3668
3863
  onClick: withModifiers(toggle, ["stop"])
3669
3864
  }, [
3670
- createElementVNode("span", _hoisted_2$35, toDisplayString(__props.current.label), 1),
3671
- __props.current.version ? (openBlock(), createElementBlock("span", _hoisted_3$32, "v" + toDisplayString(__props.current.version), 1)) : createCommentVNode("", true),
3865
+ createElementVNode("span", _hoisted_2$36, toDisplayString(__props.current.label), 1),
3866
+ __props.current.version ? (openBlock(), createElementBlock("span", _hoisted_3$33, "v" + toDisplayString(__props.current.version), 1)) : createCommentVNode("", true),
3672
3867
  createElementVNode("span", _hoisted_4$29, [(openBlock(), createElementBlock("svg", {
3673
3868
  class: normalizeClass(["mint-plugin-switcher__chevron", { "mint-plugin-switcher__chevron--open": isOpen.value }]),
3674
3869
  viewBox: "0 0 24 24",
@@ -3678,7 +3873,7 @@ var AppPluginSwitcher_default = /* @__PURE__ */ defineComponent({
3678
3873
  "stroke-linecap": "round",
3679
3874
  "stroke-linejoin": "round"
3680
3875
  }, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))])
3681
- ], 10, _hoisted_1$39), isOpen.value ? (openBlock(), createElementBlock("div", _hoisted_5$27, [
3876
+ ], 10, _hoisted_1$40), isOpen.value ? (openBlock(), createElementBlock("div", _hoisted_5$27, [
3682
3877
  _cache[6] || (_cache[6] = createElementVNode("div", { class: "mint-plugin-switcher__menu-title" }, "Switch plugin", -1)),
3683
3878
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.plugins, (plugin) => {
3684
3879
  return openBlock(), createElementBlock(Fragment, { key: plugin.id }, [plugin.href ? (openBlock(), createElementBlock("a", {
@@ -3790,78 +3985,116 @@ var AppPluginSwitcher_default = /* @__PURE__ */ defineComponent({
3790
3985
  }
3791
3986
  });
3792
3987
  //#endregion
3793
- //#region src/components/AppTopBar.vue?vue&type=script&setup=true&lang.ts
3794
- var _hoisted_1$38 = { class: "mint-topbar__container" };
3795
- var _hoisted_2$34 = { class: "mint-topbar__brand" };
3796
- var _hoisted_3$31 = ["href"];
3797
- var _hoisted_4$28 = {
3798
- key: 0,
3799
- class: "mint-topbar__logo"
3800
- };
3801
- var _hoisted_5$26 = { class: "mint-topbar__logo-icon" };
3802
- var _hoisted_6$25 = {
3803
- class: "mint-topbar__logo-svg",
3804
- viewBox: "0 0 24 24",
3805
- fill: "none",
3806
- stroke: "currentColor",
3807
- "stroke-width": "2",
3808
- "stroke-linecap": "round",
3809
- "stroke-linejoin": "round"
3810
- };
3811
- var _hoisted_7$23 = ["d"];
3812
- var _hoisted_8$21 = {
3988
+ //#region src/components/PluginIcon.vue?vue&type=script&setup=true&lang.ts
3989
+ var _hoisted_1$39 = {
3813
3990
  key: 0,
3814
- class: "mint-topbar__logo"
3815
- };
3816
- var _hoisted_9$21 = {
3817
- key: 0,
3818
- class: "mint-topbar__logo"
3819
- };
3820
- var _hoisted_10$20 = { class: "mint-topbar__logo-icon" };
3821
- var _hoisted_11$20 = {
3822
- class: "mint-topbar__logo-svg",
3991
+ class: "mint-plugin-icon__svg",
3823
3992
  viewBox: "0 0 24 24",
3824
3993
  fill: "none",
3825
3994
  stroke: "currentColor",
3826
3995
  "stroke-width": "2",
3827
3996
  "stroke-linecap": "round",
3828
- "stroke-linejoin": "round"
3997
+ "stroke-linejoin": "round",
3998
+ "aria-hidden": "true"
3829
3999
  };
3830
- var _hoisted_12$18 = ["d"];
3831
- var _hoisted_13$18 = {
4000
+ var _hoisted_2$35 = ["d"];
4001
+ var _hoisted_3$32 = ["src"];
4002
+ var FALLBACK_PATH = "M14 7v4a1 1 0 0 0 1 1h4M5 3h9l5 5v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z";
4003
+ //#endregion
4004
+ //#region src/components/PluginIcon.vue
4005
+ var PluginIcon_default = /* @__PURE__ */ defineComponent({
4006
+ name: "PluginIcon",
4007
+ __name: "PluginIcon",
4008
+ props: {
4009
+ icon: {},
4010
+ size: { default: "md" },
4011
+ variant: { default: "solid" },
4012
+ tone: {}
4013
+ },
4014
+ setup(__props) {
4015
+ /** Renders a plugin's icon as a sized chip. Auto-detects format:
4016
+ * - SVG path data (e.g. "M13 10V3...") → inline <svg><path>
4017
+ * - Raster data URL (data:image/png|jpeg|jpg|gif|webp;...) → <img>
4018
+ * - https:// URL → <img> with no-referrer + lazy loading
4019
+ * - Anything else → MINT canonical plugin placeholder path
4020
+ *
4021
+ * http:// URLs and data:image/svg+xml URLs are deliberately rejected
4022
+ * (mixed-content + XSS, see spec 2026-05-04-plugin-icon-component-design.md). */
4023
+ const props = __props;
4024
+ const PATH_REGEX = /^[Mm][\s,\d\-.]/;
4025
+ const RASTER_DATA_URL_REGEX = /^data:image\/(png|jpeg|jpg|gif|webp);/;
4026
+ const detected = computed(() => {
4027
+ const raw = (props.icon ?? "").replace(/^[\s]+/, "");
4028
+ if (!raw) return {
4029
+ format: "fallback",
4030
+ value: FALLBACK_PATH
4031
+ };
4032
+ if (PATH_REGEX.test(raw)) return {
4033
+ format: "path",
4034
+ value: raw
4035
+ };
4036
+ if (RASTER_DATA_URL_REGEX.test(raw)) return {
4037
+ format: "data-url",
4038
+ value: raw
4039
+ };
4040
+ if (raw.startsWith("https://")) return {
4041
+ format: "https-url",
4042
+ value: raw
4043
+ };
4044
+ return {
4045
+ format: "fallback",
4046
+ value: FALLBACK_PATH
4047
+ };
4048
+ });
4049
+ const rootClasses = computed(() => [
4050
+ "mint-plugin-icon",
4051
+ `mint-plugin-icon--${props.size}`,
4052
+ `mint-plugin-icon--${props.variant}`
4053
+ ]);
4054
+ const rootStyle = computed(() => props.tone ? { "--mint-plugin-icon-tone": props.tone } : void 0);
4055
+ return (_ctx, _cache) => {
4056
+ return openBlock(), createElementBlock("span", {
4057
+ class: normalizeClass(rootClasses.value),
4058
+ style: normalizeStyle(rootStyle.value)
4059
+ }, [detected.value.format === "path" || detected.value.format === "fallback" ? (openBlock(), createElementBlock("svg", _hoisted_1$39, [createElementVNode("path", { d: detected.value.value }, null, 8, _hoisted_2$35)])) : (openBlock(), createElementBlock("img", {
4060
+ key: 1,
4061
+ class: "mint-plugin-icon__img",
4062
+ src: detected.value.value,
4063
+ alt: "",
4064
+ referrerpolicy: "no-referrer",
4065
+ loading: "lazy"
4066
+ }, null, 8, _hoisted_3$32))], 6);
4067
+ };
4068
+ }
4069
+ });
4070
+ //#endregion
4071
+ //#region src/components/AppTopBar.vue?vue&type=script&setup=true&lang.ts
4072
+ var _hoisted_1$38 = { class: "mint-topbar__container" };
4073
+ var _hoisted_2$34 = { class: "mint-topbar__brand" };
4074
+ var _hoisted_3$31 = ["href"];
4075
+ var _hoisted_4$28 = {
3832
4076
  key: 0,
3833
4077
  class: "mint-topbar__logo"
3834
4078
  };
3835
- var _hoisted_14$17 = {
4079
+ var _hoisted_5$26 = {
3836
4080
  key: 0,
3837
4081
  class: "mint-topbar__logo"
3838
4082
  };
3839
- var _hoisted_15$16 = { class: "mint-topbar__logo-icon" };
3840
- var _hoisted_16$15 = {
3841
- class: "mint-topbar__logo-svg",
3842
- viewBox: "0 0 24 24",
3843
- fill: "none",
3844
- stroke: "currentColor",
3845
- "stroke-width": "2",
3846
- "stroke-linecap": "round",
3847
- "stroke-linejoin": "round"
3848
- };
3849
- var _hoisted_17$15 = ["d"];
3850
- var _hoisted_18$15 = {
4083
+ var _hoisted_6$25 = {
3851
4084
  key: 0,
3852
4085
  class: "mint-topbar__logo"
3853
4086
  };
3854
- var _hoisted_19$15 = {
4087
+ var _hoisted_7$23 = {
3855
4088
  key: 2,
3856
4089
  class: "mint-topbar-title-group"
3857
4090
  };
3858
- var _hoisted_20$15 = { class: "mint-topbar-title" };
3859
- var _hoisted_21$13 = { class: "mint-topbar-subtitle" };
3860
- var _hoisted_22$11 = {
4091
+ var _hoisted_8$21 = { class: "mint-topbar-title" };
4092
+ var _hoisted_9$21 = { class: "mint-topbar-subtitle" };
4093
+ var _hoisted_10$20 = {
3861
4094
  key: 1,
3862
4095
  class: "mint-topbar-plugin-name--static"
3863
4096
  };
3864
- var _hoisted_23$9 = {
4097
+ var _hoisted_11$20 = {
3865
4098
  key: 2,
3866
4099
  class: "mint-topbar-separator",
3867
4100
  width: "16",
@@ -3873,85 +4106,84 @@ var _hoisted_23$9 = {
3873
4106
  "stroke-linecap": "round",
3874
4107
  "stroke-linejoin": "round"
3875
4108
  };
3876
- var _hoisted_24$9 = {
4109
+ var _hoisted_12$18 = {
3877
4110
  key: 3,
3878
4111
  class: "mint-topbar-current-page"
3879
4112
  };
3880
- var _hoisted_25$8 = { class: "mint-topbar-dropdown" };
3881
- var _hoisted_26$8 = ["href"];
3882
- var _hoisted_27$7 = { class: "mint-topbar-dropdown-item__label" };
3883
- var _hoisted_28$6 = {
4113
+ var _hoisted_13$18 = { class: "mint-topbar-dropdown" };
4114
+ var _hoisted_14$17 = ["href"];
4115
+ var _hoisted_15$16 = { class: "mint-topbar-dropdown-item__label" };
4116
+ var _hoisted_16$15 = {
3884
4117
  key: 0,
3885
4118
  class: "mint-topbar-dropdown-item__description"
3886
4119
  };
3887
- var _hoisted_29$6 = { class: "mint-topbar-dropdown-item__label" };
3888
- var _hoisted_30$6 = {
4120
+ var _hoisted_17$15 = { class: "mint-topbar-dropdown-item__label" };
4121
+ var _hoisted_18$15 = {
3889
4122
  key: 0,
3890
4123
  class: "mint-topbar-dropdown-item__description"
3891
4124
  };
3892
- var _hoisted_31$6 = ["onClick"];
3893
- var _hoisted_32$6 = { class: "mint-topbar-dropdown-item__label" };
3894
- var _hoisted_33$6 = {
4125
+ var _hoisted_19$15 = ["onClick"];
4126
+ var _hoisted_20$15 = { class: "mint-topbar-dropdown-item__label" };
4127
+ var _hoisted_21$13 = {
3895
4128
  key: 0,
3896
4129
  class: "mint-topbar-dropdown-item__description"
3897
4130
  };
3898
- var _hoisted_34$6 = {
4131
+ var _hoisted_22$11 = {
3899
4132
  key: 4,
3900
4133
  class: "mint-topbar__title-only"
3901
4134
  };
3902
- var _hoisted_35$6 = {
4135
+ var _hoisted_23$9 = {
3903
4136
  key: 5,
3904
4137
  class: "mint-topbar__center"
3905
4138
  };
3906
- var _hoisted_36$6 = {
4139
+ var _hoisted_24$9 = {
3907
4140
  key: 6,
3908
4141
  class: "mint-topbar__center"
3909
4142
  };
3910
- var _hoisted_37$5 = { class: "mint-topbar__tabs" };
3911
- var _hoisted_38$5 = ["onClick"];
3912
- var _hoisted_39$4 = ["href"];
3913
- var _hoisted_40$4 = ["onClick"];
3914
- var _hoisted_41$4 = {
4143
+ var _hoisted_25$8 = { class: "mint-topbar__tabs" };
4144
+ var _hoisted_26$8 = ["onClick"];
4145
+ var _hoisted_27$7 = ["href"];
4146
+ var _hoisted_28$6 = ["onClick"];
4147
+ var _hoisted_29$6 = {
3915
4148
  key: 4,
3916
4149
  class: "mint-topbar-tab-dropdown"
3917
4150
  };
3918
- var _hoisted_42$3 = ["href"];
3919
- var _hoisted_43$3 = { class: "mint-topbar-dropdown-item__label" };
3920
- var _hoisted_44$3 = {
4151
+ var _hoisted_30$6 = ["href"];
4152
+ var _hoisted_31$6 = { class: "mint-topbar-dropdown-item__label" };
4153
+ var _hoisted_32$6 = {
3921
4154
  key: 0,
3922
4155
  class: "mint-topbar-dropdown-item__description"
3923
4156
  };
3924
- var _hoisted_45$3 = { class: "mint-topbar-dropdown-item__label" };
3925
- var _hoisted_46$3 = {
4157
+ var _hoisted_33$6 = { class: "mint-topbar-dropdown-item__label" };
4158
+ var _hoisted_34$6 = {
3926
4159
  key: 0,
3927
4160
  class: "mint-topbar-dropdown-item__description"
3928
4161
  };
3929
- var _hoisted_47$3 = ["onClick"];
3930
- var _hoisted_48$2 = { class: "mint-topbar-dropdown-item__label" };
3931
- var _hoisted_49$2 = {
4162
+ var _hoisted_35$6 = ["onClick"];
4163
+ var _hoisted_36$6 = { class: "mint-topbar-dropdown-item__label" };
4164
+ var _hoisted_37$5 = {
3932
4165
  key: 0,
3933
4166
  class: "mint-topbar-dropdown-item__description"
3934
4167
  };
3935
- var _hoisted_50$1 = { class: "mint-topbar__right" };
3936
- var _hoisted_51$1 = {
4168
+ var _hoisted_38$5 = { class: "mint-topbar__right" };
4169
+ var _hoisted_39$4 = {
3937
4170
  key: 0,
3938
4171
  class: "mint-topbar__standalone-badge"
3939
4172
  };
3940
- var _hoisted_52 = {
4173
+ var _hoisted_40$4 = {
3941
4174
  key: 2,
3942
4175
  class: "mint-topbar__standalone-badge"
3943
4176
  };
3944
- var _hoisted_53 = {
4177
+ var _hoisted_41$4 = {
3945
4178
  key: 0,
3946
4179
  class: "mint-topbar__icon-btn-dot",
3947
4180
  "aria-hidden": "true"
3948
4181
  };
3949
- var _hoisted_54 = { class: "mint-topbar__profile-avatar" };
3950
- var _hoisted_55 = {
4182
+ var _hoisted_42$3 = { class: "mint-topbar__profile-avatar" };
4183
+ var _hoisted_43$3 = {
3951
4184
  key: 0,
3952
4185
  class: "mint-topbar__profile-name"
3953
4186
  };
3954
- var SVG_PATH_PREFIX = "M";
3955
4187
  //#endregion
3956
4188
  //#region src/components/AppTopBar.vue
3957
4189
  var AppTopBar_default = /* @__PURE__ */ defineComponent({
@@ -4023,7 +4255,8 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4023
4255
  "plugin-switcher-install",
4024
4256
  "account-menu-select",
4025
4257
  "sign-out",
4026
- "notifications-click"
4258
+ "notifications-click",
4259
+ "settings-values-change"
4027
4260
  ],
4028
4261
  setup(__props, { emit: __emit }) {
4029
4262
  /** Full application top bar with brand logo, page selector or plugin switcher, centered pill nav, experiment popover, and avatar menu. */
@@ -4033,10 +4266,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4033
4266
  const { isIntegrated, plugin } = usePlatformContext();
4034
4267
  const isStandalone = computed(() => !isIntegrated.value);
4035
4268
  const appExperiment = inject(APP_EXPERIMENT_KEY, null);
4036
- const pluginIcon = computed(() => {
4037
- const icon = plugin.value?.icon;
4038
- return icon && icon.startsWith(SVG_PATH_PREFIX) ? icon : null;
4039
- });
4269
+ const hasPluginIcon = computed(() => !!plugin.value?.icon);
4040
4270
  const profileInitial = computed(() => {
4041
4271
  if (props.userInitial) return props.userInitial;
4042
4272
  if (props.userName) return props.userName.charAt(0).toUpperCase();
@@ -4104,14 +4334,35 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4104
4334
  key: 0,
4105
4335
  href: __props.homePath,
4106
4336
  class: "mint-topbar-home-link"
4107
- }, [renderSlot(_ctx.$slots, "icon", {}, () => [pluginIcon.value ? (openBlock(), createElementBlock("div", _hoisted_4$28, [createElementVNode("div", _hoisted_5$26, [(openBlock(), createElementBlock("svg", _hoisted_6$25, [createElementVNode("path", { d: pluginIcon.value }, null, 8, _hoisted_7$23)]))])])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_8$21, [..._cache[21] || (_cache[21] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])], 8, _hoisted_3$31)) : __props.homePath ? (openBlock(), createBlock(_component_router_link, {
4337
+ }, [renderSlot(_ctx.$slots, "icon", {}, () => [hasPluginIcon.value ? (openBlock(), createBlock(PluginIcon_default, {
4338
+ key: 0,
4339
+ class: "mint-topbar__plugin-icon",
4340
+ icon: unref(plugin).icon,
4341
+ tone: unref(plugin).color,
4342
+ size: "md",
4343
+ variant: "solid"
4344
+ }, null, 8, ["icon", "tone"])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_4$28, [..._cache[22] || (_cache[22] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])], 8, _hoisted_3$31)) : __props.homePath ? (openBlock(), createBlock(_component_router_link, {
4108
4345
  key: 1,
4109
4346
  to: __props.homePath,
4110
4347
  class: "mint-topbar-home-link"
4111
4348
  }, {
4112
- default: withCtx(() => [renderSlot(_ctx.$slots, "icon", {}, () => [pluginIcon.value ? (openBlock(), createElementBlock("div", _hoisted_9$21, [createElementVNode("div", _hoisted_10$20, [(openBlock(), createElementBlock("svg", _hoisted_11$20, [createElementVNode("path", { d: pluginIcon.value }, null, 8, _hoisted_12$18)]))])])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_13$18, [..._cache[22] || (_cache[22] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])]),
4349
+ default: withCtx(() => [renderSlot(_ctx.$slots, "icon", {}, () => [hasPluginIcon.value ? (openBlock(), createBlock(PluginIcon_default, {
4350
+ key: 0,
4351
+ class: "mint-topbar__plugin-icon",
4352
+ icon: unref(plugin).icon,
4353
+ tone: unref(plugin).color,
4354
+ size: "md",
4355
+ variant: "solid"
4356
+ }, null, 8, ["icon", "tone"])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_5$26, [..._cache[23] || (_cache[23] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])]),
4113
4357
  _: 3
4114
- }, 8, ["to"])) : renderSlot(_ctx.$slots, "icon", { key: 2 }, () => [pluginIcon.value ? (openBlock(), createElementBlock("div", _hoisted_14$17, [createElementVNode("div", _hoisted_15$16, [(openBlock(), createElementBlock("svg", _hoisted_16$15, [createElementVNode("path", { d: pluginIcon.value }, null, 8, _hoisted_17$15)]))])])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_18$15, [..._cache[23] || (_cache[23] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])]),
4358
+ }, 8, ["to"])) : renderSlot(_ctx.$slots, "icon", { key: 2 }, () => [hasPluginIcon.value ? (openBlock(), createBlock(PluginIcon_default, {
4359
+ key: 0,
4360
+ class: "mint-topbar__plugin-icon",
4361
+ icon: unref(plugin).icon,
4362
+ tone: unref(plugin).color,
4363
+ size: "md",
4364
+ variant: "solid"
4365
+ }, null, 8, ["icon", "tone"])) : renderSlot(_ctx.$slots, "logo", { key: 1 }, () => [__props.showLogo ? (openBlock(), createElementBlock("div", _hoisted_6$25, [..._cache[24] || (_cache[24] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)])])]),
4115
4366
  hasPluginSwitcher.value && __props.pluginSwitcher ? (openBlock(), createBlock(AppPluginSwitcher_default, {
4116
4367
  key: 0,
4117
4368
  current: __props.pluginSwitcher.current,
@@ -4139,7 +4390,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4139
4390
  fn: withCtx((slotProps) => [renderSlot(_ctx.$slots, "page-selector-item-icon", normalizeProps(guardReactiveProps(slotProps)))]),
4140
4391
  key: "1"
4141
4392
  } : void 0]), 1032, ["pages", "current-page-id"])) : createCommentVNode("", true),
4142
- hasTitleGroup.value ? (openBlock(), createElementBlock("div", _hoisted_19$15, [createElementVNode("span", _hoisted_20$15, toDisplayString(__props.title), 1), createElementVNode("span", _hoisted_21$13, toDisplayString(__props.subtitle), 1)])) : hasLegacyBreadcrumb.value ? (openBlock(), createElementBlock("div", {
4393
+ hasTitleGroup.value ? (openBlock(), createElementBlock("div", _hoisted_7$23, [createElementVNode("span", _hoisted_8$21, toDisplayString(__props.title), 1), createElementVNode("span", _hoisted_9$21, toDisplayString(__props.subtitle), 1)])) : hasLegacyBreadcrumb.value ? (openBlock(), createElementBlock("div", {
4143
4394
  key: 3,
4144
4395
  ref_key: "dropdownRef",
4145
4396
  ref: dropdownRef,
@@ -4160,10 +4411,10 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4160
4411
  "stroke-width": "2",
4161
4412
  "stroke-linecap": "round",
4162
4413
  "stroke-linejoin": "round"
4163
- }, [..._cache[24] || (_cache[24] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))])) : (openBlock(), createElementBlock("span", _hoisted_22$11, toDisplayString(__props.pluginName), 1)),
4164
- __props.title ? (openBlock(), createElementBlock("svg", _hoisted_23$9, [..._cache[25] || (_cache[25] = [createElementVNode("path", { d: "m9 18 6-6-6-6" }, null, -1)])])) : createCommentVNode("", true),
4165
- __props.title ? (openBlock(), createElementBlock("span", _hoisted_24$9, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
4166
- withDirectives(createElementVNode("div", _hoisted_25$8, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.pages, (page) => {
4414
+ }, [..._cache[25] || (_cache[25] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))])) : (openBlock(), createElementBlock("span", _hoisted_10$20, toDisplayString(__props.pluginName), 1)),
4415
+ __props.title ? (openBlock(), createElementBlock("svg", _hoisted_11$20, [..._cache[26] || (_cache[26] = [createElementVNode("path", { d: "m9 18 6-6-6-6" }, null, -1)])])) : createCommentVNode("", true),
4416
+ __props.title ? (openBlock(), createElementBlock("span", _hoisted_12$18, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
4417
+ withDirectives(createElementVNode("div", _hoisted_13$18, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.pages, (page) => {
4167
4418
  return openBlock(), createElementBlock(Fragment, { key: page.id }, [page.href ? (openBlock(), createElementBlock("a", {
4168
4419
  key: 0,
4169
4420
  href: page.href,
@@ -4172,7 +4423,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4172
4423
  "mint-topbar-dropdown-item--disabled": page.disabled
4173
4424
  }]),
4174
4425
  onClick: _cache[3] || (_cache[3] = ($event) => showPagesDropdown.value = false)
4175
- }, [createElementVNode("span", _hoisted_27$7, toDisplayString(page.label), 1), page.description ? (openBlock(), createElementBlock("span", _hoisted_28$6, toDisplayString(page.description), 1)) : createCommentVNode("", true)], 10, _hoisted_26$8)) : page.to ? (openBlock(), createBlock(_component_router_link, {
4426
+ }, [createElementVNode("span", _hoisted_15$16, toDisplayString(page.label), 1), page.description ? (openBlock(), createElementBlock("span", _hoisted_16$15, toDisplayString(page.description), 1)) : createCommentVNode("", true)], 10, _hoisted_14$17)) : page.to ? (openBlock(), createBlock(_component_router_link, {
4176
4427
  key: 1,
4177
4428
  to: page.to,
4178
4429
  class: normalizeClass(["mint-topbar-dropdown-item", {
@@ -4181,7 +4432,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4181
4432
  }]),
4182
4433
  onClick: _cache[4] || (_cache[4] = ($event) => showPagesDropdown.value = false)
4183
4434
  }, {
4184
- default: withCtx(() => [createElementVNode("span", _hoisted_29$6, toDisplayString(page.label), 1), page.description ? (openBlock(), createElementBlock("span", _hoisted_30$6, toDisplayString(page.description), 1)) : createCommentVNode("", true)]),
4435
+ default: withCtx(() => [createElementVNode("span", _hoisted_17$15, toDisplayString(page.label), 1), page.description ? (openBlock(), createElementBlock("span", _hoisted_18$15, toDisplayString(page.description), 1)) : createCommentVNode("", true)]),
4185
4436
  _: 2
4186
4437
  }, 1032, ["to", "class"])) : (openBlock(), createElementBlock("button", {
4187
4438
  key: 2,
@@ -4191,17 +4442,17 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4191
4442
  "mint-topbar-dropdown-item--disabled": page.disabled
4192
4443
  }]),
4193
4444
  onClick: ($event) => handlePageClick(page)
4194
- }, [createElementVNode("span", _hoisted_32$6, toDisplayString(page.label), 1), page.description ? (openBlock(), createElementBlock("span", _hoisted_33$6, toDisplayString(page.description), 1)) : createCommentVNode("", true)], 10, _hoisted_31$6))], 64);
4445
+ }, [createElementVNode("span", _hoisted_20$15, toDisplayString(page.label), 1), page.description ? (openBlock(), createElementBlock("span", _hoisted_21$13, toDisplayString(page.description), 1)) : createCommentVNode("", true)], 10, _hoisted_19$15))], 64);
4195
4446
  }), 128))], 512), [[vShow, showPagesDropdown.value]])
4196
- ], 512)) : hasTitleOnly.value ? (openBlock(), createElementBlock("span", _hoisted_34$6, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
4447
+ ], 512)) : hasTitleOnly.value ? (openBlock(), createElementBlock("span", _hoisted_22$11, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
4197
4448
  renderSlot(_ctx.$slots, "nav"),
4198
- hasPillNav.value || _ctx.$slots.center ? (openBlock(), createElementBlock("div", _hoisted_35$6, [renderSlot(_ctx.$slots, "center", {}, () => [hasPillNav.value && __props.pillNav ? (openBlock(), createBlock(AppPillNav_default, {
4449
+ hasPillNav.value || _ctx.$slots.center ? (openBlock(), createElementBlock("div", _hoisted_23$9, [renderSlot(_ctx.$slots, "center", {}, () => [hasPillNav.value && __props.pillNav ? (openBlock(), createBlock(AppPillNav_default, {
4199
4450
  key: 0,
4200
4451
  items: __props.pillNav,
4201
4452
  "current-item-id": __props.currentPillId,
4202
4453
  onSelect: _cache[5] || (_cache[5] = ($event) => emit("pill-select", $event))
4203
4454
  }, null, 8, ["items", "current-item-id"])) : createCommentVNode("", true)])])) : createCommentVNode("", true),
4204
- !hasPillNav.value && __props.tabs?.length ? (openBlock(), createElementBlock("div", _hoisted_36$6, [createElementVNode("div", _hoisted_37$5, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab) => {
4455
+ !hasPillNav.value && __props.tabs?.length ? (openBlock(), createElementBlock("div", _hoisted_24$9, [createElementVNode("div", _hoisted_25$8, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.tabs, (tab) => {
4205
4456
  return openBlock(), createElementBlock("div", {
4206
4457
  key: tab.id,
4207
4458
  ref_for: true,
@@ -4226,7 +4477,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4226
4477
  "stroke-width": "2",
4227
4478
  "stroke-linecap": "round",
4228
4479
  "stroke-linejoin": "round"
4229
- }, [..._cache[26] || (_cache[26] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 10, _hoisted_38$5)) : tab.href ? (openBlock(), createElementBlock("a", {
4480
+ }, [..._cache[27] || (_cache[27] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 10, _hoisted_26$8)) : tab.href ? (openBlock(), createElementBlock("a", {
4230
4481
  key: 1,
4231
4482
  href: tab.href,
4232
4483
  class: normalizeClass([
@@ -4234,7 +4485,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4234
4485
  { "mint-topbar-tab--active": tab.id === __props.currentTabId },
4235
4486
  { "mint-topbar-tab--disabled": tab.disabled }
4236
4487
  ])
4237
- }, toDisplayString(tab.label), 11, _hoisted_39$4)) : tab.to ? (openBlock(), createBlock(_component_router_link, {
4488
+ }, toDisplayString(tab.label), 11, _hoisted_27$7)) : tab.to ? (openBlock(), createBlock(_component_router_link, {
4238
4489
  key: 2,
4239
4490
  to: tab.to,
4240
4491
  class: normalizeClass([
@@ -4254,7 +4505,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4254
4505
  { "mint-topbar-tab--disabled": tab.disabled }
4255
4506
  ]),
4256
4507
  onClick: ($event) => handleTabClick(tab)
4257
- }, toDisplayString(tab.label), 11, _hoisted_40$4)), tab.children?.length ? withDirectives((openBlock(), createElementBlock("div", _hoisted_41$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(tab.children, (option) => {
4508
+ }, toDisplayString(tab.label), 11, _hoisted_28$6)), tab.children?.length ? withDirectives((openBlock(), createElementBlock("div", _hoisted_29$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(tab.children, (option) => {
4258
4509
  return openBlock(), createElementBlock(Fragment, { key: option.id }, [option.href ? (openBlock(), createElementBlock("a", {
4259
4510
  key: 0,
4260
4511
  href: option.href,
@@ -4264,7 +4515,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4264
4515
  { "mint-topbar-dropdown-item--disabled": option.disabled }
4265
4516
  ]),
4266
4517
  onClick: _cache[6] || (_cache[6] = ($event) => openTabDropdown.value = null)
4267
- }, [createElementVNode("span", _hoisted_43$3, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_44$3, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 10, _hoisted_42$3)) : option.to ? (openBlock(), createBlock(_component_router_link, {
4518
+ }, [createElementVNode("span", _hoisted_31$6, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_32$6, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 10, _hoisted_30$6)) : option.to ? (openBlock(), createBlock(_component_router_link, {
4268
4519
  key: 1,
4269
4520
  to: option.to,
4270
4521
  class: normalizeClass([
@@ -4274,7 +4525,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4274
4525
  ]),
4275
4526
  onClick: _cache[7] || (_cache[7] = ($event) => openTabDropdown.value = null)
4276
4527
  }, {
4277
- default: withCtx(() => [createElementVNode("span", _hoisted_45$3, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_46$3, toDisplayString(option.description), 1)) : createCommentVNode("", true)]),
4528
+ default: withCtx(() => [createElementVNode("span", _hoisted_33$6, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_34$6, toDisplayString(option.description), 1)) : createCommentVNode("", true)]),
4278
4529
  _: 2
4279
4530
  }, 1032, ["to", "class"])) : (openBlock(), createElementBlock("button", {
4280
4531
  key: 2,
@@ -4285,11 +4536,11 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4285
4536
  { "mint-topbar-dropdown-item--disabled": option.disabled }
4286
4537
  ]),
4287
4538
  onClick: ($event) => handleTabOptionClick(option, tab)
4288
- }, [createElementVNode("span", _hoisted_48$2, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_49$2, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 10, _hoisted_47$3))], 64);
4539
+ }, [createElementVNode("span", _hoisted_36$6, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_37$5, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 10, _hoisted_35$6))], 64);
4289
4540
  }), 128))], 512)), [[vShow, openTabDropdown.value === tab.id]]) : createCommentVNode("", true)], 512);
4290
4541
  }), 128))])])) : createCommentVNode("", true),
4291
- createElementVNode("div", _hoisted_50$1, [
4292
- __props.showStandaloneLabel && isStandalone.value && !unref(appExperiment) ? (openBlock(), createElementBlock("span", _hoisted_51$1, toDisplayString(__props.standaloneLabel), 1)) : createCommentVNode("", true),
4542
+ createElementVNode("div", _hoisted_38$5, [
4543
+ __props.showStandaloneLabel && isStandalone.value && !unref(appExperiment) ? (openBlock(), createElementBlock("span", _hoisted_39$4, toDisplayString(__props.standaloneLabel), 1)) : createCommentVNode("", true),
4293
4544
  unref(appExperiment) && !isStandalone.value ? (openBlock(), createBlock(ExperimentPopover_default, {
4294
4545
  key: 1,
4295
4546
  "experiment-name": unref(appExperiment).experimentName.value,
@@ -4315,7 +4566,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4315
4566
  "save-loading",
4316
4567
  "save-success-message"
4317
4568
  ])) : createCommentVNode("", true),
4318
- unref(appExperiment) && isStandalone.value ? (openBlock(), createElementBlock("span", _hoisted_52, toDisplayString(__props.standaloneLabel), 1)) : createCommentVNode("", true),
4569
+ unref(appExperiment) && isStandalone.value ? (openBlock(), createElementBlock("span", _hoisted_40$4, toDisplayString(__props.standaloneLabel), 1)) : createCommentVNode("", true),
4319
4570
  renderSlot(_ctx.$slots, "actions"),
4320
4571
  __props.showNotifications ? (openBlock(), createElementBlock("button", {
4321
4572
  key: 3,
@@ -4323,7 +4574,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4323
4574
  class: "mint-topbar__icon-btn",
4324
4575
  "aria-label": "Notifications",
4325
4576
  onClick: _cache[11] || (_cache[11] = ($event) => emit("notifications-click"))
4326
- }, [_cache[27] || (_cache[27] = createElementVNode("svg", {
4577
+ }, [_cache[28] || (_cache[28] = createElementVNode("svg", {
4327
4578
  class: "mint-topbar__icon-btn-icon",
4328
4579
  viewBox: "0 0 24 24",
4329
4580
  fill: "none",
@@ -4331,7 +4582,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4331
4582
  "stroke-width": "2",
4332
4583
  "stroke-linecap": "round",
4333
4584
  "stroke-linejoin": "round"
4334
- }, [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_53)) : createCommentVNode("", true)])) : createCommentVNode("", true),
4585
+ }, [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_41$4)) : createCommentVNode("", true)])) : createCommentVNode("", true),
4335
4586
  __props.showThemeToggle ? (openBlock(), createBlock(ThemeToggle_default, {
4336
4587
  key: 4,
4337
4588
  size: "sm"
@@ -4342,7 +4593,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4342
4593
  class: "mint-topbar__settings-btn",
4343
4594
  "aria-label": "Open settings",
4344
4595
  onClick: _cache[12] || (_cache[12] = ($event) => settingsOpen.value = true)
4345
- }, [..._cache[28] || (_cache[28] = [createElementVNode("svg", {
4596
+ }, [..._cache[29] || (_cache[29] = [createElementVNode("svg", {
4346
4597
  class: "mint-topbar__settings-icon",
4347
4598
  viewBox: "0 0 24 24",
4348
4599
  fill: "none",
@@ -4362,7 +4613,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4362
4613
  "aria-label": "Admin Dashboard",
4363
4614
  onClick: _cache[13] || (_cache[13] = ($event) => emit("admin-click"))
4364
4615
  }, {
4365
- default: withCtx(() => [..._cache[29] || (_cache[29] = [createElementVNode("svg", {
4616
+ default: withCtx(() => [..._cache[30] || (_cache[30] = [createElementVNode("svg", {
4366
4617
  class: "mint-topbar__admin-icon",
4367
4618
  viewBox: "0 0 24 24",
4368
4619
  fill: "none",
@@ -4400,7 +4651,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4400
4651
  class: "mint-topbar__profile-btn",
4401
4652
  "aria-label": "Edit profile",
4402
4653
  onClick: _cache[16] || (_cache[16] = ($event) => emit("profile-click"))
4403
- }, [createElementVNode("div", _hoisted_54, toDisplayString(profileInitial.value), 1), __props.userName ? (openBlock(), createElementBlock("span", _hoisted_55, toDisplayString(__props.userName), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true)
4654
+ }, [createElementVNode("div", _hoisted_42$3, toDisplayString(profileInitial.value), 1), __props.userName ? (openBlock(), createElementBlock("span", _hoisted_43$3, toDisplayString(__props.userName), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true)
4404
4655
  ])
4405
4656
  ])], 2),
4406
4657
  __props.showSettings ? (openBlock(), createBlock(SettingsModal_default, {
@@ -4410,7 +4661,12 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4410
4661
  title: __props.settingsConfig?.title,
4411
4662
  tabs: __props.settingsConfig?.tabs,
4412
4663
  "show-appearance": __props.settingsConfig?.showAppearance ?? true,
4413
- size: __props.settingsConfig?.size
4664
+ size: __props.settingsConfig?.size,
4665
+ layout: __props.settingsConfig?.layout,
4666
+ schema: __props.settingsConfig?.schema,
4667
+ values: __props.settingsConfig?.values,
4668
+ enhancements: __props.settingsConfig?.enhancements,
4669
+ "onUpdate:values": _cache[18] || (_cache[18] = ($event) => emit("settings-values-change", $event))
4414
4670
  }, createSlots({
4415
4671
  appearance: withCtx(() => [renderSlot(_ctx.$slots, "settings-appearance")]),
4416
4672
  _: 2
@@ -4424,15 +4680,19 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
4424
4680
  "title",
4425
4681
  "tabs",
4426
4682
  "show-appearance",
4427
- "size"
4683
+ "size",
4684
+ "layout",
4685
+ "schema",
4686
+ "values",
4687
+ "enhancements"
4428
4688
  ])) : createCommentVNode("", true),
4429
4689
  unref(appExperiment) && !isStandalone.value ? (openBlock(), createBlock(ExperimentSelectorModal_default, {
4430
4690
  key: 1,
4431
4691
  "model-value": unref(appExperiment).showModal.value,
4432
4692
  "current-experiment-id": unref(appExperiment).experimentId.value,
4433
- "onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => $event ? unref(appExperiment).openModal() : unref(appExperiment).closeModal()),
4434
- onSelect: _cache[19] || (_cache[19] = ($event) => unref(appExperiment).handleSelect($event)),
4435
- onDeselect: _cache[20] || (_cache[20] = ($event) => unref(appExperiment).handleDetach())
4693
+ "onUpdate:modelValue": _cache[19] || (_cache[19] = ($event) => $event ? unref(appExperiment).openModal() : unref(appExperiment).closeModal()),
4694
+ onSelect: _cache[20] || (_cache[20] = ($event) => unref(appExperiment).handleSelect($event)),
4695
+ onDeselect: _cache[21] || (_cache[21] = ($event) => unref(appExperiment).handleDetach())
4436
4696
  }, null, 8, ["model-value", "current-experiment-id"])) : createCommentVNode("", true)
4437
4697
  ], 64);
4438
4698
  };
@@ -13384,57 +13644,6 @@ var BatchProgressList_default = /* @__PURE__ */ defineComponent({
13384
13644
  }
13385
13645
  });
13386
13646
  //#endregion
13387
- //#region src/components/FormFieldRenderer.vue
13388
- var FormFieldRenderer_default = /* @__PURE__ */ defineComponent({
13389
- __name: "FormFieldRenderer",
13390
- props: {
13391
- field: {},
13392
- resolvedProps: {},
13393
- form: {}
13394
- },
13395
- setup(__props) {
13396
- /**
13397
- * Renders a single form field inside a FormField wrapper.
13398
- *
13399
- * Resolves the SDK component for the field type from the registry, shows
13400
- * validation errors only after the field has been touched, and handles the
13401
- * FileUploader's event-based upload pattern via `handleUpload`. Consumers can
13402
- * override rendering via the `field:<name>` slot.
13403
- */
13404
- const props = __props;
13405
- const entry = computed(() => getFieldRegistryEntry(props.field.type));
13406
- const errorMessage = computed(() => {
13407
- const name = props.field.name;
13408
- return props.form.touched[name] ? props.form.errors[name] : null;
13409
- });
13410
- function handleUpload(files) {
13411
- props.form.setFieldValue(props.field.name, files);
13412
- }
13413
- return (_ctx, _cache) => {
13414
- return openBlock(), createBlock(FormField_default, {
13415
- label: __props.field.label,
13416
- error: errorMessage.value ?? void 0,
13417
- hint: __props.field.hint,
13418
- required: !!__props.field.validation?.required,
13419
- "html-for": __props.field.name
13420
- }, {
13421
- default: withCtx(() => [renderSlot(_ctx.$slots, `field:${__props.field.name}`, {
13422
- field: __props.field,
13423
- form: __props.form,
13424
- fieldProps: __props.form.getFieldProps(__props.field.name)
13425
- }, () => [entry.value.vModel ? (openBlock(), createBlock(resolveDynamicComponent(entry.value.component), normalizeProps(mergeProps({ key: 0 }, __props.resolvedProps)), null, 16)) : (openBlock(), createBlock(resolveDynamicComponent(entry.value.component), mergeProps({ key: 1 }, __props.resolvedProps, { onUpload: handleUpload }), null, 16))])]),
13426
- _: 3
13427
- }, 8, [
13428
- "label",
13429
- "error",
13430
- "hint",
13431
- "required",
13432
- "html-for"
13433
- ]);
13434
- };
13435
- }
13436
- });
13437
- //#endregion
13438
13647
  //#region src/components/FormSection.vue?vue&type=script&setup=true&lang.ts
13439
13648
  var _hoisted_1$7 = {
13440
13649
  key: 0,
@@ -15056,6 +15265,7 @@ var components_exports = /* @__PURE__ */ __exportAll({
15056
15265
  MultiSelect: () => MultiSelect_default,
15057
15266
  NumberInput: () => NumberInput_default,
15058
15267
  PlateMapEditor: () => PlateMapEditor_default,
15268
+ PluginIcon: () => PluginIcon_default,
15059
15269
  ProgressBar: () => ProgressBar_default,
15060
15270
  ProtocolStepEditor: () => ProtocolStepEditor_default,
15061
15271
  RackEditor: () => RackEditor_default,
@@ -15084,6 +15294,6 @@ var components_exports = /* @__PURE__ */ __exportAll({
15084
15294
  WellPlate: () => WellPlate_default
15085
15295
  });
15086
15296
  //#endregion
15087
- export { ExperimentPopover_default as $, SampleLegend_default as A, LoadingSpinner_default as B, deriveShade as C, StepWizard_default as D, AutoGroupModal_default as E, Breadcrumb_default as F, AppPluginSwitcher_default as G, AppLayout_default as H, Avatar_default as I, AppPageSelector_default as J, AppAvatarMenu_default as K, ProgressBar_default as L, WellPlate_default as M, ChartContainer_default as N, ExperimentTimeline_default as O, Tooltip_default as P, Skeleton_default as Q, StatusIndicator_default as R, SampleSelector_default as S, hslToHex as T, AppSidebar_default as U, AppContainer_default as V, AppTopBar_default as W, ExperimentCodeBadge_default as X, ExperimentSelectorModal_default as Y, EmptyState_default as Z, ReagentList_default as _, BaseButton_default as _t, TimeRangeInput_default as a, IconButton_default as at, GroupAssigner_default as b, FormActions_default as c, FormField_default as ct, BatchProgressList_default as d, DropdownButton_default as dt, ConfirmDialog_default as et, AuditTrail_default as f, BasePill_default as ft, SampleHierarchyTree_default as g, ColorSlider_default as gt, ProtocolStepEditor_default as h, BaseTabs_default as ht, ScheduleCalendar_default as i, ThemeToggle_default as it, RackEditor_default as j, PlateMapEditor_default as k, FormSection_default as l, DataFrame_default as lt, ScientificNumber_default as m, BaseModal_default as mt, FitPanel_default as n, CollapsibleCard_default as nt, ExperimentDataViewer_default as o, ToastNotification_default as ot, ChemicalFormula_default as p, SegmentedControl_default as pt, AppPillNav_default as q, ResourceCard_default as r, SettingsButton_default as rt, FormBuilder_default as s, AlertBox_default as st, components_exports as t, SettingsModal_default as tt, FormFieldRenderer_default as u, Calendar_default as ut, ReagentEditor_default as v, hexToHsl as w, GroupingModal_default as x, DoseCalculator_default as y, Divider_default as z };
15297
+ export { ExperimentPopover_default as $, RackEditor_default as A, AppContainer_default as B, hexToHsl as C, ExperimentTimeline_default as D, StepWizard_default as E, Avatar_default as F, AppPluginSwitcher_default as G, AppSidebar_default as H, ProgressBar_default as I, AppPageSelector_default as J, AppAvatarMenu_default as K, StatusIndicator_default as L, ChartContainer_default as M, Tooltip_default as N, PlateMapEditor_default as O, Breadcrumb_default as P, Skeleton_default as Q, Divider_default as R, deriveShade as S, AutoGroupModal_default as T, AppTopBar_default as U, AppLayout_default as V, PluginIcon_default as W, ExperimentCodeBadge_default as X, ExperimentSelectorModal_default as Y, EmptyState_default as Z, ReagentEditor_default as _, ColorSlider_default as _t, TimeRangeInput_default as a, ThemeToggle_default as at, GroupingModal_default as b, FormActions_default as c, AlertBox_default as ct, AuditTrail_default as d, Calendar_default as dt, ConfirmDialog_default as et, ChemicalFormula_default as f, DropdownButton_default as ft, ReagentList_default as g, BaseTabs_default as gt, SampleHierarchyTree_default as h, BaseModal_default as ht, ScheduleCalendar_default as i, SettingsButton_default as it, WellPlate_default as j, SampleLegend_default as k, FormSection_default as l, FormField_default as lt, ProtocolStepEditor_default as m, SegmentedControl_default as mt, FitPanel_default as n, FormFieldRenderer_default as nt, ExperimentDataViewer_default as o, IconButton_default as ot, ScientificNumber_default as p, BasePill_default as pt, AppPillNav_default as q, ResourceCard_default as r, CollapsibleCard_default as rt, FormBuilder_default as s, ToastNotification_default as st, components_exports as t, SettingsModal_default as tt, BatchProgressList_default as u, DataFrame_default as ut, DoseCalculator_default as v, BaseButton_default as vt, hslToHex as w, SampleSelector_default as x, GroupAssigner_default as y, LoadingSpinner_default as z };
15088
15298
 
15089
- //# sourceMappingURL=components-CzbQQPCb.js.map
15299
+ //# sourceMappingURL=components-_XqPEhP9.js.map