@morscherlab/mint-sdk 1.5.0-beta.2 → 1.5.0-beta.3

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 (118) hide show
  1. package/dist/{AlertBox-CIhqsWbN.js → AlertBox-CexONPhA.js} +2 -2
  2. package/dist/{AlertBox-CIhqsWbN.js.map → AlertBox-CexONPhA.js.map} +1 -1
  3. package/dist/{AppSidebar-BDrd7Kwn.js → AppSidebar-FxlF5_dI.js} +55 -40
  4. package/dist/AppSidebar-FxlF5_dI.js.map +1 -0
  5. package/dist/{ConfirmDialog-CjWoxAD1.js → ConfirmDialog-D9QXFpsy.js} +2 -2
  6. package/dist/ConfirmDialog-D9QXFpsy.js.map +1 -0
  7. package/dist/{ExperimentPopover-BM92LlrQ.js → ExperimentPopover-Bbd6RaoH.js} +3 -3
  8. package/dist/{ExperimentPopover-BM92LlrQ.js.map → ExperimentPopover-Bbd6RaoH.js.map} +1 -1
  9. package/dist/{ExperimentSelectorModal-LsB1ABmh.js → ExperimentSelectorModal-CUkKmgfr.js} +35 -6
  10. package/dist/ExperimentSelectorModal-CUkKmgfr.js.map +1 -0
  11. package/dist/{SegmentedControl-Dz41vAFM.js → SegmentedControl-C-sckoJZ.js} +2 -2
  12. package/dist/{SegmentedControl-Dz41vAFM.js.map → SegmentedControl-C-sckoJZ.js.map} +1 -1
  13. package/dist/{SettingsModal-C-MSR-bk.js → SettingsModal-BIC0dAYc.js} +6 -6
  14. package/dist/{SettingsModal-C-MSR-bk.js.map → SettingsModal-BIC0dAYc.js.map} +1 -1
  15. package/dist/components/FormBuilder.vue.d.ts +1 -1
  16. package/dist/components/PluginIcon.vue.d.ts +2 -2
  17. package/dist/components/SectionCard.vue.d.ts +13 -1
  18. package/dist/components/SettingsModal.vue.d.ts +1 -1
  19. package/dist/components/internal/FormSchemaInternal.vue.d.ts +9 -9
  20. package/dist/components/internal/FormSectionRenderer.vue.d.ts +4 -4
  21. package/dist/composables/useExperimentSelector.d.ts +2 -0
  22. package/dist/composables/useOnboarding.d.ts +1 -1
  23. package/dist/{controlSchemaModel-BbXbMgc6.js → controlSchemaModel-C_XqpkgE.js} +2 -2
  24. package/dist/{controlSchemaModel-BbXbMgc6.js.map → controlSchemaModel-C_XqpkgE.js.map} +1 -1
  25. package/dist/{data-LzdkEZJ-.js → data-CfY7o8QC.js} +9 -9
  26. package/dist/{data-LzdkEZJ-.js.map → data-CfY7o8QC.js.map} +1 -1
  27. package/dist/data.js +7 -7
  28. package/dist/index.d.ts +0 -1
  29. package/dist/index.js +14 -19
  30. package/dist/index.js.map +1 -1
  31. package/dist/{install-UTqrAgHe.js → install-QF3Sh82O.js} +15 -39
  32. package/dist/install-QF3Sh82O.js.map +1 -0
  33. package/dist/install.js +1 -1
  34. package/dist/{lab-CbdDLAVr.js → lab-BcX5JBSY.js} +34 -112
  35. package/dist/lab-BcX5JBSY.js.map +1 -0
  36. package/dist/lab.js +4 -4
  37. package/dist/{records-CWRztE5M.js → records-BAymyHAn.js} +10 -110
  38. package/dist/records-BAymyHAn.js.map +1 -0
  39. package/dist/{runtime-DrL6lKAb.js → runtime-DngeJtdq.js} +82 -45
  40. package/dist/runtime-DngeJtdq.js.map +1 -0
  41. package/dist/runtime.js +6 -6
  42. package/dist/{shell-Ch7cJnjo.js → shell-CWZi97nW.js} +4 -4
  43. package/dist/{shell-Ch7cJnjo.js.map → shell-CWZi97nW.js.map} +1 -1
  44. package/dist/shell.js +4 -4
  45. package/dist/styles.css +181 -125
  46. package/dist/styles.d.ts +1 -0
  47. package/dist/types/index.d.ts +1 -1
  48. package/dist/types/instrument.d.ts +5 -17
  49. package/dist/{useExperimentSamples-Cz2v3V_q.js → useExperimentSamples-DEDAKa2E.js} +3 -3
  50. package/dist/{useExperimentSamples-Cz2v3V_q.js.map → useExperimentSamples-DEDAKa2E.js.map} +1 -1
  51. package/dist/{useListReorder-QqJc1dpX.js → useListReorder-W1bzK_bo.js} +15 -3
  52. package/dist/useListReorder-W1bzK_bo.js.map +1 -0
  53. package/dist/{useRackEditor-BHGM1Ngz.js → useRackEditor-Bmtuo0aj.js} +155 -26
  54. package/dist/useRackEditor-Bmtuo0aj.js.map +1 -0
  55. package/dist/{useRealtime-CNQbrS01.js → useRealtime-jOetF2mM.js} +3 -3
  56. package/dist/{useRealtime-CNQbrS01.js.map → useRealtime-jOetF2mM.js.map} +1 -1
  57. package/dist/{useRequest-Bfsh7gIm.js → useRequest-D9-3BS-3.js} +2 -2
  58. package/dist/{useRequest-Bfsh7gIm.js.map → useRequest-D9-3BS-3.js.map} +1 -1
  59. package/package.json +7 -4
  60. package/src/__tests__/components/AppTopBarOnboarding.test.ts +10 -0
  61. package/src/__tests__/components/ConfirmDialog.test.ts +2 -2
  62. package/src/__tests__/components/ExperimentSelectorModal.test.ts +16 -0
  63. package/src/__tests__/components/SectionCard.test.ts +33 -0
  64. package/src/__tests__/components/deprecationTags.test.ts +4 -18
  65. package/src/__tests__/composables/useJobsEndpoint.test.ts +50 -0
  66. package/src/__tests__/composables/useOnboarding.test.ts +2 -2
  67. package/src/__tests__/docs/frontendDocsCatalog.test.ts +3 -3
  68. package/src/components/AppSidebar.vue +2 -2
  69. package/src/components/CollapsibleCard.vue +1 -1
  70. package/src/components/ConfirmDialog.vue +1 -1
  71. package/src/components/ExperimentSelectorModal.vue +35 -0
  72. package/src/components/FileUploader.vue +3 -35
  73. package/src/components/GeneratedPluginView.vue +35 -81
  74. package/src/components/GeneratedResultRenderer.vue +2 -1
  75. package/src/components/InstrumentStatusPanels.vue +3 -3
  76. package/src/components/PlotlyChart.vue +1 -1
  77. package/src/components/PluginIcon.story.vue +2 -2
  78. package/src/components/PluginIcon.vue +2 -2
  79. package/src/components/SectionCard.vue +42 -6
  80. package/src/components/internal/AppTopBarOnboardingInternal.vue +30 -14
  81. package/src/composables/index.ts +1 -2
  82. package/src/composables/useExperimentSelector.ts +4 -0
  83. package/src/composables/useJobsEndpoint.ts +15 -4
  84. package/src/composables/useOnboarding.ts +3 -3
  85. package/src/generated-ui/main.ts +3 -1
  86. package/src/index.ts +0 -3
  87. package/src/styles/components/alert-box.css +1 -1
  88. package/src/styles/components/app-sidebar.css +5 -5
  89. package/src/styles/components/button.css +3 -3
  90. package/src/styles/components/checkbox.css +1 -1
  91. package/src/styles/components/collapsible-card.css +1 -1
  92. package/src/styles/components/confirm-dialog.css +2 -2
  93. package/src/styles/components/file-uploader.css +3 -3
  94. package/src/styles/components/icon-button.css +3 -3
  95. package/src/styles/components/loading-spinner.css +1 -1
  96. package/src/styles/components/onboarding.css +39 -0
  97. package/src/styles/components/pill.css +1 -1
  98. package/src/styles/components/plugin-icon.css +2 -2
  99. package/src/styles/components/presence-avatars.css +4 -4
  100. package/src/styles/components/progress-bar.css +1 -1
  101. package/src/styles/components/section-card.css +65 -6
  102. package/src/styles/components/sequence-input.css +1 -1
  103. package/src/styles/components/slider.css +1 -1
  104. package/src/styles/components/toggle.css +1 -1
  105. package/src/styles/variables.css +10 -4
  106. package/src/types/index.ts +0 -1
  107. package/src/types/instrument.ts +5 -18
  108. package/dist/AppSidebar-BDrd7Kwn.js.map +0 -1
  109. package/dist/ConfirmDialog-CjWoxAD1.js.map +0 -1
  110. package/dist/ExperimentSelectorModal-LsB1ABmh.js.map +0 -1
  111. package/dist/deprecatedRootExports.d.ts +0 -191
  112. package/dist/install-UTqrAgHe.js.map +0 -1
  113. package/dist/lab-CbdDLAVr.js.map +0 -1
  114. package/dist/records-CWRztE5M.js.map +0 -1
  115. package/dist/runtime-DrL6lKAb.js.map +0 -1
  116. package/dist/useListReorder-QqJc1dpX.js.map +0 -1
  117. package/dist/useRackEditor-BHGM1Ngz.js.map +0 -1
  118. package/src/deprecatedRootExports.ts +0 -226
@@ -1,29 +1,29 @@
1
1
  import { a as BaseButton_default, i as useEventListener, o as __exportAll, r as useFocusTrap } from "./useDropdownState-uFIz6Yv8.js";
2
2
  import { a as authenticationRequiredError, c as tableDensityToSize, f as mintApiErrorFromResponse, i as AuthenticationRequiredError, l as tryUseSettingsStore, o as useApi, t as useExperimentStore } from "./experiment-DyO54FQB.js";
3
- import { H as useListSelection, I as FormField_default, K as BaseInput_default, R as useRovingFocus, W as useFloatingPanel, i as getInjectedPlatformContext, j as formatTime, l as FORMAT_KEY, z as BaseCheckbox_default } from "./records-CWRztE5M.js";
4
- import { D as _plugin_vue_export_helper_default, F as applySpecDefaults, I as defineDataFrame, M as usePlatform, N as NumberInput_default, V as useSortedItems, i as useReorderAnnouncer, j as createEventStream, k as createGeneratedAnalysisTransport, n as reorderList, r as useListReorder, v as ConcentrationInput_default, y as useConcentrationUnits, z as defineWellPlate } from "./useListReorder-QqJc1dpX.js";
5
- import { t as SegmentedControl_default } from "./SegmentedControl-Dz41vAFM.js";
6
- import { n as DataStateInternal_default, o as useTextSearch, r as LoadingSpinner_default } from "./AlertBox-CIhqsWbN.js";
7
- import { n as ActionMenu_default, t as useRequest } from "./useRequest-Bfsh7gIm.js";
3
+ import { H as useListSelection, I as FormField_default, K as BaseInput_default, R as useRovingFocus, W as useFloatingPanel, i as getInjectedPlatformContext, j as formatTime, l as FORMAT_KEY, z as BaseCheckbox_default } from "./records-BAymyHAn.js";
4
+ import { D as _plugin_vue_export_helper_default, F as applySpecDefaults, I as defineDataFrame, M as usePlatform, N as NumberInput_default, V as useSortedItems, i as useReorderAnnouncer, j as createEventStream, k as createGeneratedAnalysisTransport, n as reorderList, r as useListReorder, v as ConcentrationInput_default, y as useConcentrationUnits, z as defineWellPlate } from "./useListReorder-W1bzK_bo.js";
5
+ import { t as SegmentedControl_default } from "./SegmentedControl-C-sckoJZ.js";
6
+ import { n as DataStateInternal_default, o as useTextSearch, r as LoadingSpinner_default } from "./AlertBox-CexONPhA.js";
7
+ import { n as ActionMenu_default, t as useRequest } from "./useRequest-D9-3BS-3.js";
8
8
  import { r as useAuthStore } from "./auth-SliLnFre.js";
9
- import { t as ConfirmDialog_default } from "./ConfirmDialog-CjWoxAD1.js";
10
- import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineComponent, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onUnmounted, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, unref, vModelText, vShow, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
9
+ import { t as ConfirmDialog_default } from "./ConfirmDialog-D9QXFpsy.js";
10
+ import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineComponent, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onUnmounted, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, unref, useId, useModel, vModelText, vShow, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
11
11
  import { ChartLine, ChevronRight, Download, Move, Plus, Redo2, Trash2, Undo2, Upload, X } from "lucide-vue-next";
12
12
  //#region src/components/DataFrame.vue?vue&type=script&setup=true&lang.ts
13
- var _hoisted_1$9 = {
13
+ var _hoisted_1$10 = {
14
14
  key: 0,
15
15
  class: "mint-dataframe__header"
16
16
  };
17
- var _hoisted_2$7 = { class: "mint-dataframe__search-wrapper" };
18
- var _hoisted_3$7 = ["placeholder"];
19
- var _hoisted_4$7 = { class: "mint-dataframe__table" };
20
- var _hoisted_5$7 = {
17
+ var _hoisted_2$8 = { class: "mint-dataframe__search-wrapper" };
18
+ var _hoisted_3$8 = ["placeholder"];
19
+ var _hoisted_4$8 = { class: "mint-dataframe__table" };
20
+ var _hoisted_5$8 = {
21
21
  key: 0,
22
22
  class: "mint-dataframe__th mint-dataframe__th--checkbox"
23
23
  };
24
- var _hoisted_6$6 = ["aria-sort"];
25
- var _hoisted_7$6 = { class: "mint-dataframe__th-content" };
26
- var _hoisted_8$6 = { class: "mint-dataframe__th-label" };
24
+ var _hoisted_6$7 = ["aria-sort"];
25
+ var _hoisted_7$7 = { class: "mint-dataframe__th-content" };
26
+ var _hoisted_8$7 = { class: "mint-dataframe__th-label" };
27
27
  var _hoisted_9$5 = {
28
28
  key: 0,
29
29
  class: "mint-dataframe__th-unit"
@@ -344,7 +344,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
344
344
  });
345
345
  return (_ctx, _cache) => {
346
346
  return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-dataframe", { "mint-dataframe--bordered": config.value.bordered }]) }, [
347
- config.value.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$9, [createElementVNode("div", _hoisted_2$7, [_cache[5] || (_cache[5] = createElementVNode("svg", {
347
+ config.value.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$10, [createElementVNode("div", _hoisted_2$8, [_cache[5] || (_cache[5] = createElementVNode("svg", {
348
348
  class: "mint-dataframe__search-icon",
349
349
  viewBox: "0 0 24 24",
350
350
  fill: "none",
@@ -361,13 +361,13 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
361
361
  type: "text",
362
362
  class: "mint-dataframe__search",
363
363
  placeholder: config.value.searchPlaceholder
364
- }, null, 8, _hoisted_3$7), [[vModelText, searchQuery.value]])])])) : createCommentVNode("", true),
364
+ }, null, 8, _hoisted_3$8), [[vModelText, searchQuery.value]])])])) : createCommentVNode("", true),
365
365
  createElementVNode("div", {
366
366
  class: "mint-dataframe__table-wrapper",
367
367
  style: normalizeStyle(wrapperStyle.value)
368
368
  }, [
369
- createElementVNode("table", _hoisted_4$7, [createElementVNode("thead", { class: normalizeClass(["mint-dataframe__thead", { "mint-dataframe__thead--sticky": config.value.stickyHeader }]) }, [createElementVNode("tr", null, [
370
- config.value.selectable ? (openBlock(), createElementBlock("th", _hoisted_5$7, [createVNode(BaseCheckbox_default, {
369
+ createElementVNode("table", _hoisted_4$8, [createElementVNode("thead", { class: normalizeClass(["mint-dataframe__thead", { "mint-dataframe__thead--sticky": config.value.stickyHeader }]) }, [createElementVNode("tr", null, [
370
+ config.value.selectable ? (openBlock(), createElementBlock("th", _hoisted_5$8, [createVNode(BaseCheckbox_default, {
371
371
  "model-value": allSelected.value,
372
372
  indeterminate: selectIndeterminate.value,
373
373
  size: "sm",
@@ -396,8 +396,8 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
396
396
  onClick: ($event) => isColumnSortable(col) ? handleSort(col) : void 0,
397
397
  onKeydown: ($event) => isColumnSortable(col) ? handleSortKeydown($event, col) : void 0
398
398
  }, {
399
- default: withCtx(() => [renderSlot(_ctx.$slots, `header-${col.key}`, { column: col }, () => [createElementVNode("div", _hoisted_7$6, [
400
- createElementVNode("span", _hoisted_8$6, toDisplayString(col.label), 1),
399
+ default: withCtx(() => [renderSlot(_ctx.$slots, `header-${col.key}`, { column: col }, () => [createElementVNode("div", _hoisted_7$7, [
400
+ createElementVNode("span", _hoisted_8$7, toDisplayString(col.label), 1),
401
401
  col.unit ? (openBlock(), createElementBlock("span", _hoisted_9$5, toDisplayString(col.unit), 1)) : createCommentVNode("", true),
402
402
  isColumnSortable(col) ? (openBlock(), createElementBlock("svg", {
403
403
  key: 1,
@@ -435,7 +435,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
435
435
  onMousedown: ($event) => startResize(col, $event),
436
436
  onKeydown: ($event) => handleResizeKeydown($event, col),
437
437
  onClick: _cache[1] || (_cache[1] = withModifiers(() => {}, ["stop"]))
438
- }, null, 40, _hoisted_13$5)) : createCommentVNode("", true)], 14, _hoisted_6$6);
438
+ }, null, 40, _hoisted_13$5)) : createCommentVNode("", true)], 14, _hoisted_6$7);
439
439
  }), 128)),
440
440
  config.value.deletable ? (openBlock(), createElementBlock("th", {
441
441
  key: 1,
@@ -547,6 +547,135 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
547
547
  }
548
548
  });
549
549
  //#endregion
550
+ //#region src/components/SectionCard.vue?vue&type=script&setup=true&lang.ts
551
+ var _hoisted_1$9 = {
552
+ class: "mint-section-card__icon",
553
+ viewBox: "0 0 24 24",
554
+ fill: "none",
555
+ stroke: "currentColor",
556
+ "stroke-width": "2",
557
+ "stroke-linecap": "round",
558
+ "stroke-linejoin": "round",
559
+ "aria-hidden": "true"
560
+ };
561
+ var _hoisted_2$7 = ["d"];
562
+ var _hoisted_3$7 = ["aria-expanded", "aria-controls"];
563
+ var _hoisted_4$7 = {
564
+ key: 0,
565
+ class: "mint-section-card__count"
566
+ };
567
+ var _hoisted_5$7 = {
568
+ key: 1,
569
+ class: "mint-section-card__count"
570
+ };
571
+ var _hoisted_6$6 = {
572
+ key: 0,
573
+ class: "mint-section-card__toolbar"
574
+ };
575
+ var _hoisted_7$6 = ["id"];
576
+ var _hoisted_8$6 = {
577
+ key: 1,
578
+ class: "mint-section-card__footer"
579
+ };
580
+ //#endregion
581
+ //#region src/components/SectionCard.vue
582
+ var SectionCard_default = /* @__PURE__ */ defineComponent({
583
+ __name: "SectionCard",
584
+ props: /*@__PURE__*/ mergeModels({
585
+ title: {},
586
+ count: { default: void 0 },
587
+ icon: { default: void 0 },
588
+ accent: { default: "primary" },
589
+ uppercase: {
590
+ type: Boolean,
591
+ default: false
592
+ },
593
+ divider: { default: "strong" },
594
+ fill: {
595
+ type: Boolean,
596
+ default: false
597
+ },
598
+ collapsible: {
599
+ type: Boolean,
600
+ default: false
601
+ }
602
+ }, {
603
+ "collapsed": {
604
+ type: Boolean,
605
+ default: false
606
+ },
607
+ "collapsedModifiers": {}
608
+ }),
609
+ emits: ["update:collapsed"],
610
+ setup(__props) {
611
+ /** One-card page region from the MINT 1.1 card system: 12px radius, the
612
+ * single --card-shadow token, a header strip (icon chip, title, mono count,
613
+ * actions), and hairline-separated content — no card-in-card. */
614
+ const props = __props;
615
+ const collapsed = useModel(__props, "collapsed");
616
+ const bodyId = useId();
617
+ /** `collapsed` hides content only on a card that also shows the toggle to open it again. */
618
+ const hidden = computed(() => props.collapsible && collapsed.value);
619
+ const iconPaths = computed(() => props.icon === void 0 ? [] : Array.isArray(props.icon) ? props.icon : [props.icon]);
620
+ const headerClasses = computed(() => [
621
+ "mint-section-card__header",
622
+ props.divider === "light" ? "mint-section-card__header--divider-light" : "",
623
+ hidden.value ? "mint-section-card__header--collapsed" : ""
624
+ ]);
625
+ const titleClasses = computed(() => ["mint-section-card__title", props.uppercase ? "mint-section-card__title--uppercase" : ""]);
626
+ const cardClasses = computed(() => [
627
+ "mint-section-card",
628
+ props.fill ? "mint-section-card--fill" : "",
629
+ hidden.value ? "mint-section-card--collapsed" : ""
630
+ ]);
631
+ return (_ctx, _cache) => {
632
+ return openBlock(), createElementBlock("section", { class: normalizeClass(cardClasses.value) }, [
633
+ createElementVNode("div", { class: normalizeClass(headerClasses.value) }, [
634
+ iconPaths.value.length ? (openBlock(), createElementBlock("span", {
635
+ key: 0,
636
+ class: normalizeClass(["mint-section-card__icon-chip", `mint-section-card__icon-chip--${__props.accent}`])
637
+ }, [(openBlock(), createElementBlock("svg", _hoisted_1$9, [(openBlock(true), createElementBlock(Fragment, null, renderList(iconPaths.value, (d, i) => {
638
+ return openBlock(), createElementBlock("path", {
639
+ key: i,
640
+ d
641
+ }, null, 8, _hoisted_2$7);
642
+ }), 128))]))], 2)) : createCommentVNode("", true),
643
+ createElementVNode("h2", { class: normalizeClass(titleClasses.value) }, [__props.collapsible ? (openBlock(), createElementBlock("button", {
644
+ key: 0,
645
+ type: "button",
646
+ class: "mint-section-card__toggle",
647
+ "aria-expanded": !collapsed.value,
648
+ "aria-controls": unref(bodyId),
649
+ onClick: _cache[0] || (_cache[0] = ($event) => collapsed.value = !collapsed.value)
650
+ }, [
651
+ createTextVNode(toDisplayString(__props.title) + " ", 1),
652
+ __props.count !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_4$7, toDisplayString(__props.count), 1)) : createCommentVNode("", true),
653
+ _cache[1] || (_cache[1] = createElementVNode("svg", {
654
+ class: "mint-section-card__chevron",
655
+ viewBox: "0 0 24 24",
656
+ fill: "none",
657
+ stroke: "currentColor",
658
+ "stroke-width": "2",
659
+ "stroke-linecap": "round",
660
+ "stroke-linejoin": "round",
661
+ "aria-hidden": "true"
662
+ }, [createElementVNode("path", { d: "m6 9 6 6 6-6" })], -1))
663
+ ], 8, _hoisted_3$7)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(__props.title), 1)], 64))], 2),
664
+ __props.count !== void 0 && !__props.collapsible ? (openBlock(), createElementBlock("span", _hoisted_5$7, toDisplayString(__props.count), 1)) : createCommentVNode("", true),
665
+ _cache[2] || (_cache[2] = createElementVNode("div", { class: "mint-section-card__spacer" }, null, -1)),
666
+ renderSlot(_ctx.$slots, "actions")
667
+ ], 2),
668
+ _ctx.$slots.toolbar ? withDirectives((openBlock(), createElementBlock("div", _hoisted_6$6, [renderSlot(_ctx.$slots, "toolbar")], 512)), [[vShow, !hidden.value]]) : createCommentVNode("", true),
669
+ withDirectives(createElementVNode("div", {
670
+ id: unref(bodyId),
671
+ class: "mint-section-card__body"
672
+ }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_7$6), [[vShow, !hidden.value]]),
673
+ _ctx.$slots.footer ? withDirectives((openBlock(), createElementBlock("div", _hoisted_8$6, [renderSlot(_ctx.$slots, "footer")], 512)), [[vShow, !hidden.value]]) : createCommentVNode("", true)
674
+ ], 2);
675
+ };
676
+ }
677
+ });
678
+ //#endregion
550
679
  //#region src/utils/sampleTypeMarker.ts
551
680
  /** `type` is matched case-insensitively; anything unrecognised renders as a sample. */
552
681
  function sampleTypeMarker(type, groupColor) {
@@ -4079,7 +4208,7 @@ var PlotlyChart_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
4079
4208
  ]);
4080
4209
  };
4081
4210
  }
4082
- }), [["__scopeId", "data-v-ec8df4f1"]]);
4211
+ }), [["__scopeId", "data-v-8d1b6790"]]);
4083
4212
  //#endregion
4084
4213
  //#region src/composables/pluginEndpointBuilder.ts
4085
4214
  function normalizeApiBaseUrl(baseUrl) {
@@ -4754,7 +4883,7 @@ var GeneratedResultRenderer_default = /*#__PURE__*/ _plugin_vue_export_helper_de
4754
4883
  }, [createElementVNode("span", null, toDisplayString(__props.result.name), 1), createElementVNode("small", null, toDisplayString(__props.result.media_type), 1)], 8, _hoisted_5$1))]);
4755
4884
  };
4756
4885
  }
4757
- }), [["__scopeId", "data-v-f242a75c"]]);
4886
+ }), [["__scopeId", "data-v-2406c0cc"]]);
4758
4887
  //#endregion
4759
4888
  //#region src/composables/useScheduleDrag.ts
4760
4889
  /** Handles pointer-driven create, move, and resize drag interactions for the ScheduleCalendar grid. */
@@ -5915,6 +6044,6 @@ function useRackEditor(initialRacks, options) {
5915
6044
  };
5916
6045
  }
5917
6046
  //#endregion
5918
- export { hexToHsl as C, DataFrame_default as D, sampleTypeMarker as E, deriveShade as S, WellPlate_default as T, mintPlotlyTemplate as _, GeneratedPlotlyResult_default as a, PlateEditor_default as b, downloadEndpoint as c, useEventStream as d, useSettingsEndpoint as f, ChartContainer_default as g, PlotlyChart_default as h, GeneratedResultRenderer_default as i, pluginFormDataFromPayload as l, resolvePluginBaseUrl as m, ScheduleCalendar_default as n, createClient as o, buildEndpointUrl as p, useScheduleDrag as r, downloadBlob as s, useRackEditor as t, uploadEndpoint as u, DoseCalculator_default as v, hslToHex as w, SAMPLE_GROUP_TOKENS as x, dose_exports as y };
6047
+ export { hexToHsl as C, SectionCard_default as D, sampleTypeMarker as E, DataFrame_default as O, deriveShade as S, WellPlate_default as T, mintPlotlyTemplate as _, GeneratedPlotlyResult_default as a, PlateEditor_default as b, downloadEndpoint as c, useEventStream as d, useSettingsEndpoint as f, ChartContainer_default as g, PlotlyChart_default as h, GeneratedResultRenderer_default as i, pluginFormDataFromPayload as l, resolvePluginBaseUrl as m, ScheduleCalendar_default as n, createClient as o, buildEndpointUrl as p, useScheduleDrag as r, downloadBlob as s, useRackEditor as t, uploadEndpoint as u, DoseCalculator_default as v, hslToHex as w, SAMPLE_GROUP_TOKENS as x, dose_exports as y };
5919
6048
 
5920
- //# sourceMappingURL=useRackEditor-BHGM1Ngz.js.map
6049
+ //# sourceMappingURL=useRackEditor-Bmtuo0aj.js.map