@morscherlab/mint-sdk 1.1.5 → 1.1.7

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 (100) hide show
  1. package/dist/{EmptyState-LMPS3keb.js → EmptyState-p90quq8Z.js} +2 -2
  2. package/dist/{EmptyState-LMPS3keb.js.map → EmptyState-p90quq8Z.js.map} +1 -1
  3. package/dist/{ExperimentPopover-D6_RGzTY.js → ExperimentPopover-tLwJ7XF4.js} +3 -3
  4. package/dist/{ExperimentPopover-D6_RGzTY.js.map → ExperimentPopover-tLwJ7XF4.js.map} +1 -1
  5. package/dist/{ExperimentSelectorModal-DcQ38zua.js → ExperimentSelectorModal-B6P2msT4.js} +12 -5
  6. package/dist/ExperimentSelectorModal-B6P2msT4.js.map +1 -0
  7. package/dist/{SettingsModal-Ccq2z-Ms.js → SettingsModal-D7LFUokT.js} +100 -156
  8. package/dist/SettingsModal-D7LFUokT.js.map +1 -0
  9. package/dist/__tests__/components/ActionMenu.test.d.ts +1 -0
  10. package/dist/__tests__/components/BaseModal.test.d.ts +1 -0
  11. package/dist/components/ActionMenu.vue.d.ts +21 -0
  12. package/dist/components/BaseModal.vue.d.ts +17 -1
  13. package/dist/components/ExperimentTimeline.vue.d.ts +1 -1
  14. package/dist/components/GeneratedPluginView.vue.d.ts +3 -3
  15. package/dist/components/GeneratedResultRenderer.vue.d.ts +3 -3
  16. package/dist/components/RackEditor.vue.d.ts +1 -1
  17. package/dist/components/SampleLegend.vue.d.ts +1 -1
  18. package/dist/components/SmartGroupManual.vue.d.ts +1 -1
  19. package/dist/components/index.d.ts +1 -0
  20. package/dist/components/index.js +8 -8
  21. package/dist/{components-CV5zuWa8.js → components-CDomhGSj.js} +477 -71
  22. package/dist/components-CDomhGSj.js.map +1 -0
  23. package/dist/composables/controlSchemaDoseDesign.d.ts +8 -1
  24. package/dist/composables/controlSchemaModel.d.ts +10 -1
  25. package/dist/composables/index.js +8 -8
  26. package/dist/composables/useAnalysisArtifacts.d.ts +9 -1
  27. package/dist/composables/useAppExperiment.d.ts +7 -0
  28. package/dist/composables/useBioTemplatePackWorkspace.d.ts +9 -1
  29. package/dist/composables/useControlWorkspace.d.ts +9 -1
  30. package/dist/composables/useGeneratedAnalysis.d.ts +9 -0
  31. package/dist/{composables-CW8NRXLB.js → composables-CRR_JxQD.js} +4 -4
  32. package/dist/{composables-CW8NRXLB.js.map → composables-CRR_JxQD.js.map} +1 -1
  33. package/dist/{experiment-utils-7Yw-h0tD.js → experiment-utils-CLnzPPq5.js} +170 -13
  34. package/dist/experiment-utils-CLnzPPq5.js.map +1 -0
  35. package/dist/index.js +13 -13
  36. package/dist/install.js +7 -7
  37. package/dist/styles.css +764 -610
  38. package/dist/templates/index.js +4 -4
  39. package/dist/{templates-CJRFiWUX.js → templates-Cr-48-u2.js} +2 -2
  40. package/dist/{templates-CJRFiWUX.js.map → templates-Cr-48-u2.js.map} +1 -1
  41. package/dist/types/components.d.ts +32 -0
  42. package/dist/types/index.d.ts +1 -1
  43. package/dist/{useControlSchema-BEAgLyyx.js → useControlSchema-BMVb2XIQ.js} +58 -10
  44. package/dist/useControlSchema-BMVb2XIQ.js.map +1 -0
  45. package/dist/{useDropdownState-Be-ug_ci.js → useDropdownState-DSb3BC3N.js} +2 -2
  46. package/dist/{useDropdownState-Be-ug_ci.js.map → useDropdownState-DSb3BC3N.js.map} +1 -1
  47. package/dist/{useExperimentSelector-DFg_iEHI.js → useExperimentSelector-D0pjj9WH.js} +3 -3
  48. package/dist/{useExperimentSelector-DFg_iEHI.js.map → useExperimentSelector-D0pjj9WH.js.map} +1 -1
  49. package/dist/{useFormBuilder-CR9pBApW.js → useFormBuilder-DG3HOFGA.js} +2 -2
  50. package/dist/{useFormBuilder-CR9pBApW.js.map → useFormBuilder-DG3HOFGA.js.map} +1 -1
  51. package/dist/{useProtocolTemplates-DXeIHMwV.js → useProtocolTemplates-BMt0LlXf.js} +21 -6
  52. package/dist/useProtocolTemplates-BMt0LlXf.js.map +1 -0
  53. package/package.json +2 -1
  54. package/src/__tests__/components/ActionMenu.test.ts +120 -0
  55. package/src/__tests__/components/BaseModal.test.ts +133 -0
  56. package/src/__tests__/components/SettingsModal.test.ts +9 -7
  57. package/src/__tests__/docs/extractDocsComponents.test.ts +15 -1
  58. package/src/__tests__/docs/extractDocsParsing.test.ts +22 -0
  59. package/src/__tests__/docs/frontendDocsCatalog.test.ts +80 -0
  60. package/src/components/ActionMenu.story.vue +26 -0
  61. package/src/components/ActionMenu.vue +209 -0
  62. package/src/components/AppSidebar.vue +2 -13
  63. package/src/components/ArtifactSelectorModal.vue +8 -1
  64. package/src/components/BaseModal.story.vue +107 -1
  65. package/src/components/BaseModal.vue +152 -4
  66. package/src/components/BioTemplateExperimentWorkspaceView.vue +8 -1
  67. package/src/components/BioTemplatePackWorkspaceView.vue +8 -1
  68. package/src/components/BioTemplatePresetWorkspaceView.vue +8 -1
  69. package/src/components/BioTemplateRenderer.vue +8 -1
  70. package/src/components/ComponentBindingRenderer.vue +8 -1
  71. package/src/components/ControlWorkspaceView.vue +8 -1
  72. package/src/components/DoseDesignWorkspaceView.vue +8 -1
  73. package/src/components/ExperimentSelectorModal.vue +8 -1
  74. package/src/components/FormBuilder.vue +5 -0
  75. package/src/components/GeneratedPluginView.vue +12 -2
  76. package/src/components/GeneratedResultRenderer.vue +12 -2
  77. package/src/components/JobsStatusTray.vue +8 -1
  78. package/src/components/PluginWorkspaceView.vue +10 -1
  79. package/src/components/SettingsModal.vue +102 -149
  80. package/src/components/index.ts +1 -0
  81. package/src/composables/controlSchemaDoseDesign.ts +8 -1
  82. package/src/composables/controlSchemaModel.ts +10 -1
  83. package/src/composables/useAnalysisArtifacts.ts +9 -1
  84. package/src/composables/useAppExperiment.ts +7 -0
  85. package/src/composables/useBioTemplatePackWorkspace.ts +9 -1
  86. package/src/composables/useControlWorkspace.ts +9 -1
  87. package/src/composables/useGeneratedAnalysis.ts +9 -0
  88. package/src/styles/components/action-menu.css +59 -0
  89. package/src/styles/components/icon-button.css +7 -3
  90. package/src/styles/components/modal.css +293 -0
  91. package/src/styles/components/settings-modal.css +3 -273
  92. package/src/styles/index.css +1 -0
  93. package/src/types/components.ts +38 -0
  94. package/src/types/index.ts +3 -0
  95. package/dist/ExperimentSelectorModal-DcQ38zua.js.map +0 -1
  96. package/dist/SettingsModal-Ccq2z-Ms.js.map +0 -1
  97. package/dist/components-CV5zuWa8.js.map +0 -1
  98. package/dist/experiment-utils-7Yw-h0tD.js.map +0 -1
  99. package/dist/useControlSchema-BEAgLyyx.js.map +0 -1
  100. package/dist/useProtocolTemplates-DXeIHMwV.js.map +0 -1
@@ -1,20 +1,20 @@
1
1
  import { n as __exportAll, r as __toESM } from "./chunk-BoAXSpZd.js";
2
- import { f as BaseModal_default, m as BaseButton_default, p as useEventListener } from "./experiment-utils-7Yw-h0tD.js";
3
- import { a as BaseSelect_default, i as BasePill_default, n as Skeleton_default, o as normalizeOptionInput, r as useRequestSyncState, s as BaseInput_default, t as EmptyState_default } from "./EmptyState-LMPS3keb.js";
4
- import { A as useConcentrationUnits, At as BaseCheckbox_default, Ct as DatePicker_default, Dt as BaseSlider_default, H as getInjectedPlatformContext, I as useChemicalFormula, L as GeneratedPathInput_default, M as SequenceInput_default, Mt as BaseTextarea_default, O as ConcentrationInput_default, Ot as BaseRadioGroup_default, P as FormulaInput_default, Q as normalizeJobPercent, R as _plugin_vue_export_helper_default, T as getDefaultControlView, Tt as useListSelection, W as resolveCurrentExperimentId, Z as jobStatusLabel, _ as controlsToFormSchema, at as TagsInput_default, ct as compareTime, f as resolveControlModel, ft as formatDuration, g as mergeControlWorkspaceOptions, h as controlValuesToComponentProps, it as NumberInput_default, j as MoleculeInput_default, jt as Tooltip_default, k as UnitInput_default, kt as BaseToggle_default, lt as durationMinutes, m as controlValuesToComponentBindingsById, nt as AlertBox_default, o as defineDoseDesignControlModel, ot as TimePicker_default, p as controlValuesToComponentBindings, pt as formatTime, q as useGeneratedAnalysis, r as getControlDefaults, rt as FileUploader_default, tt as DateTimePicker_default, u as useControlWorkspace, w as controlsToViewItems, wt as MultiSelect_default, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as ArtifactSelectorModal_default } from "./useControlSchema-BEAgLyyx.js";
5
- import { a as pickExistingRecordKeys, c as normalizeItemInput, i as formSchemaFieldNames, l as normalizeLabelItemInput, o as recordValuesEqualForKeys, r as FormFieldRendererInternal_default, s as FormField_default, t as SettingsModal_default } from "./SettingsModal-Ccq2z-Ms.js";
6
- import { t as useDropdownState } from "./useDropdownState-Be-ug_ci.js";
7
- import { D as readFileAsText, G as useAppExperiment, H as DEFAULT_MOBILE_VIEWPORT_QUERY, I as DEFAULT_COLORS, K as useTheme, L as useWellPlateEditor, M as parseCSV, Q as useSortedItems, R as useDoseCalculator, U as useMobileSupportGate, V as usePluginJobCenter, W as APP_EXPERIMENT_KEY, X as useTextSearch, _ as useScheduleDrag, a as useReagentSeries, b as useExpansionSet, c as useBioTemplatePresetWorkspace, j as useAutoGroup, l as useBioTemplatePackWorkspace, n as DEFAULT_PRESETS, o as useGroupAssignment, q as useToast, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, v as useExperimentSamples, x as useSampleGroups, y as useExperimentData } from "./useProtocolTemplates-DXeIHMwV.js";
2
+ import { f as BaseModal_default, m as BaseButton_default, p as useEventListener } from "./experiment-utils-CLnzPPq5.js";
3
+ import { a as BaseSelect_default, i as BasePill_default, n as Skeleton_default, o as normalizeOptionInput, r as useRequestSyncState, s as BaseInput_default, t as EmptyState_default } from "./EmptyState-p90quq8Z.js";
4
+ import { A as useConcentrationUnits, At as BaseCheckbox_default, Ct as DatePicker_default, Dt as BaseSlider_default, Ft as shift, H as getInjectedPlatformContext, I as useChemicalFormula, It as BaseTextarea_default, L as GeneratedPathInput_default, M as SequenceInput_default, Mt as computePosition, Nt as flip, O as ConcentrationInput_default, Ot as BaseRadioGroup_default, P as FormulaInput_default, Pt as offset, Q as normalizeJobPercent, R as _plugin_vue_export_helper_default, T as getDefaultControlView, Tt as useListSelection, W as resolveCurrentExperimentId, Z as jobStatusLabel, _ as controlsToFormSchema, at as TagsInput_default, ct as compareTime, f as resolveControlModel, ft as formatDuration, g as mergeControlWorkspaceOptions, h as controlValuesToComponentProps, it as NumberInput_default, j as MoleculeInput_default, jt as Tooltip_default, k as UnitInput_default, kt as BaseToggle_default, lt as durationMinutes, m as controlValuesToComponentBindingsById, nt as AlertBox_default, o as defineDoseDesignControlModel, ot as TimePicker_default, p as controlValuesToComponentBindings, pt as formatTime, q as useGeneratedAnalysis, r as getControlDefaults, rt as FileUploader_default, tt as DateTimePicker_default, u as useControlWorkspace, w as controlsToViewItems, wt as MultiSelect_default, x as controlsToSidebarPanels, y as controlsToSectionFormSchemas, z as ArtifactSelectorModal_default } from "./useControlSchema-BMVb2XIQ.js";
5
+ import { a as pickExistingRecordKeys, c as normalizeItemInput, i as formSchemaFieldNames, l as normalizeLabelItemInput, o as recordValuesEqualForKeys, r as FormFieldRendererInternal_default, s as FormField_default, t as SettingsModal_default } from "./SettingsModal-D7LFUokT.js";
6
+ import { t as useDropdownState } from "./useDropdownState-DSb3BC3N.js";
7
+ import { D as readFileAsText, G as useAppExperiment, H as DEFAULT_MOBILE_VIEWPORT_QUERY, I as DEFAULT_COLORS, K as useTheme, L as useWellPlateEditor, M as parseCSV, Q as useSortedItems, R as useDoseCalculator, U as useMobileSupportGate, V as usePluginJobCenter, W as APP_EXPERIMENT_KEY, X as useTextSearch, _ as useScheduleDrag, a as useReagentSeries, b as useExpansionSet, c as useBioTemplatePresetWorkspace, j as useAutoGroup, l as useBioTemplatePackWorkspace, n as DEFAULT_PRESETS, o as useGroupAssignment, q as useToast, r as DEFAULT_UNITS, s as useRackEditor, t as useProtocolTemplates, v as useExperimentSamples, x as useSampleGroups, y as useExperimentData } from "./useProtocolTemplates-BMt0LlXf.js";
8
8
  import { r as useApi } from "./useApi-CDBq6z23.js";
9
- import { i as usePlatformContext, t as useFormBuilder } from "./useFormBuilder-CR9pBApW.js";
9
+ import { i as usePlatformContext, t as useFormBuilder } from "./useFormBuilder-DG3HOFGA.js";
10
10
  import { t as ANALYSIS_FILE_ARTIFACT_SCHEMA } from "./analysisArtifactTypes-DQ0MjwHZ.js";
11
- import { r as ConfirmDialog_default, t as ExperimentPopover_default } from "./ExperimentPopover-D6_RGzTY.js";
12
- import { B as toBioTemplateComponentProps, F as getBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, V as toBioTemplateComponentPropsByComponent, dn as extractTemplateCollection } from "./templates-CJRFiWUX.js";
13
- import { r as ExperimentCodeBadge_default, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-DcQ38zua.js";
11
+ import { r as ConfirmDialog_default, t as ExperimentPopover_default } from "./ExperimentPopover-tLwJ7XF4.js";
12
+ import { B as toBioTemplateComponentProps, F as getBioTemplateComponentProps, H as toBioTemplateComponentPropsById, L as toBioTemplateComponentBindings, R as toBioTemplateComponentBindingsById, V as toBioTemplateComponentPropsByComponent, dn as extractTemplateCollection } from "./templates-Cr-48-u2.js";
13
+ import { r as ExperimentCodeBadge_default, t as ExperimentSelectorModal_default } from "./ExperimentSelectorModal-B6P2msT4.js";
14
14
  import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createStaticVNode, createTextVNode, createVNode, defineAsyncComponent, defineComponent, effectScope, guardReactiveProps, h, inject, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, onUnmounted, openBlock, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, toRef, unref, useId, useModel, useSlots, vModelCheckbox, vModelSelect, vModelText, vShow, watch, withCtx, withDirectives, withKeys, withModifiers } from "vue";
15
15
  //#region src/components/ColorSlider.vue?vue&type=script&setup=true&lang.ts
16
- var _hoisted_1$74 = { class: "mint-color-slider__row" };
17
- var _hoisted_2$66 = { class: "mint-color-slider__track" };
16
+ var _hoisted_1$75 = { class: "mint-color-slider__row" };
17
+ var _hoisted_2$67 = { class: "mint-color-slider__track" };
18
18
  var _hoisted_3$60 = [
19
19
  "value",
20
20
  "min",
@@ -130,7 +130,7 @@ var ColorSlider_default = /* @__PURE__ */ defineComponent({
130
130
  emit("update:modelValue", Number(target.value));
131
131
  }
132
132
  return (_ctx, _cache) => {
133
- return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-color-slider", { "mint-color-slider--disabled": __props.disabled }]) }, [createElementVNode("div", _hoisted_1$74, [createElementVNode("div", _hoisted_2$66, [createElementVNode("input", {
133
+ return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-color-slider", { "mint-color-slider--disabled": __props.disabled }]) }, [createElementVNode("div", _hoisted_1$75, [createElementVNode("div", _hoisted_2$67, [createElementVNode("input", {
134
134
  type: "range",
135
135
  value: currentValue.value,
136
136
  min: __props.min,
@@ -166,12 +166,12 @@ var ColorSlider_default = /* @__PURE__ */ defineComponent({
166
166
  });
167
167
  //#endregion
168
168
  //#region src/components/BaseTabs.vue?vue&type=script&setup=true&lang.ts
169
- var _hoisted_1$73 = [
169
+ var _hoisted_1$74 = [
170
170
  "aria-selected",
171
171
  "aria-disabled",
172
172
  "onClick"
173
173
  ];
174
- var _hoisted_2$65 = { class: "mint-tab__content" };
174
+ var _hoisted_2$66 = { class: "mint-tab__content" };
175
175
  var _hoisted_3$59 = {
176
176
  key: 0,
177
177
  class: "mint-tab__icon mint-tab__icon--svg",
@@ -234,7 +234,7 @@ var BaseTabs_default = /* @__PURE__ */ defineComponent({
234
234
  tab.disabled ? "mint-tab--disabled" : ""
235
235
  ]),
236
236
  onClick: ($event) => selectTab(tab.id)
237
- }, [createElementVNode("span", _hoisted_2$65, [
237
+ }, [createElementVNode("span", _hoisted_2$66, [
238
238
  isSvgIcon(tab.icon) ? (openBlock(), createElementBlock("svg", _hoisted_3$59, [Array.isArray(tab.icon) ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(tab.icon, (d, index) => {
239
239
  return openBlock(), createElementBlock("path", {
240
240
  key: index,
@@ -246,20 +246,20 @@ var BaseTabs_default = /* @__PURE__ */ defineComponent({
246
246
  }, null, 8, _hoisted_5$53))])) : tab.icon ? (openBlock(), createElementBlock("span", _hoisted_6$50, toDisplayString(tab.icon), 1)) : createCommentVNode("", true),
247
247
  createTextVNode(" " + toDisplayString(tab.label) + " ", 1),
248
248
  tab.badge !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_7$44, toDisplayString(tab.badge), 1)) : createCommentVNode("", true)
249
- ])], 10, _hoisted_1$73);
249
+ ])], 10, _hoisted_1$74);
250
250
  }), 128))], 2);
251
251
  };
252
252
  }
253
253
  });
254
254
  //#endregion
255
255
  //#region src/components/SegmentedControl.vue?vue&type=script&setup=true&lang.ts
256
- var _hoisted_1$72 = [
256
+ var _hoisted_1$73 = [
257
257
  "aria-checked",
258
258
  "disabled",
259
259
  "onClick",
260
260
  "onKeydown"
261
261
  ];
262
- var _hoisted_2$64 = { class: "mint-segmented-control__label" };
262
+ var _hoisted_2$65 = { class: "mint-segmented-control__label" };
263
263
  var _hoisted_3$58 = {
264
264
  key: 0,
265
265
  class: "mint-segmented-control__description"
@@ -332,15 +332,15 @@ var SegmentedControl_default = /* @__PURE__ */ defineComponent({
332
332
  ]),
333
333
  onClick: ($event) => handleSelect(option),
334
334
  onKeydown: ($event) => handleKeydown($event, option)
335
- }, [createElementVNode("span", _hoisted_2$64, toDisplayString(option.label), 1), option.description && __props.variant === "card" ? (openBlock(), createElementBlock("span", _hoisted_3$58, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 42, _hoisted_1$72);
335
+ }, [createElementVNode("span", _hoisted_2$65, toDisplayString(option.label), 1), option.description && __props.variant === "card" ? (openBlock(), createElementBlock("span", _hoisted_3$58, toDisplayString(option.description), 1)) : createCommentVNode("", true)], 42, _hoisted_1$73);
336
336
  }), 128))], 2);
337
337
  };
338
338
  }
339
339
  });
340
340
  //#endregion
341
341
  //#region src/components/DropdownButton.vue?vue&type=script&setup=true&lang.ts
342
- var _hoisted_1$71 = ["disabled", "aria-expanded"];
343
- var _hoisted_2$63 = {
342
+ var _hoisted_1$72 = ["disabled", "aria-expanded"];
343
+ var _hoisted_2$64 = {
344
344
  key: 0,
345
345
  class: "mint-dropdown-button__spinner",
346
346
  viewBox: "0 0 24 24",
@@ -435,7 +435,7 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
435
435
  "aria-haspopup": "listbox",
436
436
  onClick: toggle
437
437
  }, [
438
- __props.loading ? (openBlock(), createElementBlock("svg", _hoisted_2$63, [..._cache[0] || (_cache[0] = [createElementVNode("circle", {
438
+ __props.loading ? (openBlock(), createElementBlock("svg", _hoisted_2$64, [..._cache[0] || (_cache[0] = [createElementVNode("circle", {
439
439
  cx: "12",
440
440
  cy: "12",
441
441
  r: "10",
@@ -458,7 +458,7 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
458
458
  "stroke-linecap": "round",
459
459
  "stroke-linejoin": "round"
460
460
  }, [..._cache[1] || (_cache[1] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))
461
- ], 10, _hoisted_1$71), createVNode(Transition, { name: "mint-dropdown-button-menu" }, {
461
+ ], 10, _hoisted_1$72), createVNode(Transition, { name: "mint-dropdown-button-menu" }, {
462
462
  default: withCtx(() => [unref(isOpen) ? (openBlock(), createElementBlock("ul", {
463
463
  key: 0,
464
464
  class: "mint-dropdown-button__menu",
@@ -489,8 +489,8 @@ var DropdownButton_default = /* @__PURE__ */ defineComponent({
489
489
  });
490
490
  //#endregion
491
491
  //#region src/components/Calendar.vue?vue&type=script&setup=true&lang.ts
492
- var _hoisted_1$70 = { class: "mint-calendar" };
493
- var _hoisted_2$62 = {
492
+ var _hoisted_1$71 = { class: "mint-calendar" };
493
+ var _hoisted_2$63 = {
494
494
  key: 0,
495
495
  class: "mint-calendar__header"
496
496
  };
@@ -723,8 +723,8 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
723
723
  emit("navigate", "next", currentMonth.value, currentYear.value);
724
724
  }
725
725
  return (_ctx, _cache) => {
726
- return openBlock(), createElementBlock("div", _hoisted_1$70, [
727
- __props.showNavigation ? (openBlock(), createElementBlock("div", _hoisted_2$62, [
726
+ return openBlock(), createElementBlock("div", _hoisted_1$71, [
727
+ __props.showNavigation ? (openBlock(), createElementBlock("div", _hoisted_2$63, [
728
728
  createElementVNode("button", {
729
729
  type: "button",
730
730
  class: "mint-calendar__nav-btn",
@@ -797,11 +797,11 @@ var Calendar_default = /* @__PURE__ */ defineComponent({
797
797
  });
798
798
  //#endregion
799
799
  //#region src/components/DataFrame.vue?vue&type=script&setup=true&lang.ts
800
- var _hoisted_1$69 = {
800
+ var _hoisted_1$70 = {
801
801
  key: 0,
802
802
  class: "mint-dataframe__header"
803
803
  };
804
- var _hoisted_2$61 = { class: "mint-dataframe__search-wrapper" };
804
+ var _hoisted_2$62 = { class: "mint-dataframe__search-wrapper" };
805
805
  var _hoisted_3$55 = ["placeholder"];
806
806
  var _hoisted_4$52 = { class: "mint-dataframe__table" };
807
807
  var _hoisted_5$50 = {
@@ -1092,7 +1092,7 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1092
1092
  });
1093
1093
  return (_ctx, _cache) => {
1094
1094
  return openBlock(), createElementBlock("div", { class: normalizeClass(["mint-dataframe", { "mint-dataframe--bordered": __props.bordered }]) }, [
1095
- __props.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$69, [createElementVNode("div", _hoisted_2$61, [_cache[5] || (_cache[5] = createElementVNode("svg", {
1095
+ __props.searchable ? (openBlock(), createElementBlock("div", _hoisted_1$70, [createElementVNode("div", _hoisted_2$62, [_cache[5] || (_cache[5] = createElementVNode("svg", {
1096
1096
  class: "mint-dataframe__search-icon",
1097
1097
  viewBox: "0 0 24 24",
1098
1098
  fill: "none",
@@ -1289,8 +1289,8 @@ var DataFrame_default = /* @__PURE__ */ defineComponent({
1289
1289
  });
1290
1290
  //#endregion
1291
1291
  //#region src/components/AppToastContainer.vue?vue&type=script&setup=true&lang.ts
1292
- var _hoisted_1$68 = { class: "mint-toast__container" };
1293
- var _hoisted_2$60 = ["onClick"];
1292
+ var _hoisted_1$69 = { class: "mint-toast__container" };
1293
+ var _hoisted_2$61 = ["onClick"];
1294
1294
  var _hoisted_3$54 = { class: "mint-toast__message" };
1295
1295
  //#endregion
1296
1296
  //#region src/components/AppToastContainer.vue
@@ -1306,7 +1306,7 @@ var AppToastContainer_default = /* @__PURE__ */ defineComponent({
1306
1306
  info: "#3B82F6"
1307
1307
  };
1308
1308
  return (_ctx, _cache) => {
1309
- return openBlock(), createBlock(Teleport, { to: "body" }, [createElementVNode("div", _hoisted_1$68, [createVNode(TransitionGroup, { name: "toast" }, {
1309
+ return openBlock(), createBlock(Teleport, { to: "body" }, [createElementVNode("div", _hoisted_1$69, [createVNode(TransitionGroup, { name: "toast" }, {
1310
1310
  default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(toasts), (toast) => {
1311
1311
  return openBlock(), createElementBlock("div", {
1312
1312
  key: toast.id,
@@ -1388,7 +1388,7 @@ var AppToastContainer_default = /* @__PURE__ */ defineComponent({
1388
1388
  animationDuration: `${toast.duration ?? 3500}ms`
1389
1389
  })
1390
1390
  }, null, 4)
1391
- ], 14, _hoisted_2$60);
1391
+ ], 14, _hoisted_2$61);
1392
1392
  }), 128))]),
1393
1393
  _: 1
1394
1394
  })])]);
@@ -1396,8 +1396,151 @@ var AppToastContainer_default = /* @__PURE__ */ defineComponent({
1396
1396
  }
1397
1397
  });
1398
1398
  //#endregion
1399
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/shared/src/utils/hasA11yProp.js
1400
+ /**
1401
+ * @license lucide-vue-next v1.0.0 - ISC
1402
+ *
1403
+ * This source code is licensed under the ISC license.
1404
+ * See the LICENSE file in the root directory of this source tree.
1405
+ */
1406
+ var hasA11yProp = (props) => {
1407
+ for (const prop in props) if (prop.startsWith("aria-") || prop === "role" || prop === "title") return true;
1408
+ return false;
1409
+ };
1410
+ //#endregion
1411
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/shared/src/utils/isEmptyString.js
1412
+ /**
1413
+ * @license lucide-vue-next v1.0.0 - ISC
1414
+ *
1415
+ * This source code is licensed under the ISC license.
1416
+ * See the LICENSE file in the root directory of this source tree.
1417
+ */
1418
+ var isEmptyString = (value) => value === "";
1419
+ //#endregion
1420
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/shared/src/utils/mergeClasses.js
1421
+ /**
1422
+ * @license lucide-vue-next v1.0.0 - ISC
1423
+ *
1424
+ * This source code is licensed under the ISC license.
1425
+ * See the LICENSE file in the root directory of this source tree.
1426
+ */
1427
+ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
1428
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
1429
+ }).join(" ").trim();
1430
+ //#endregion
1431
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/shared/src/utils/toKebabCase.js
1432
+ /**
1433
+ * @license lucide-vue-next v1.0.0 - ISC
1434
+ *
1435
+ * This source code is licensed under the ISC license.
1436
+ * See the LICENSE file in the root directory of this source tree.
1437
+ */
1438
+ var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
1439
+ //#endregion
1440
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/shared/src/utils/toCamelCase.js
1441
+ /**
1442
+ * @license lucide-vue-next v1.0.0 - ISC
1443
+ *
1444
+ * This source code is licensed under the ISC license.
1445
+ * See the LICENSE file in the root directory of this source tree.
1446
+ */
1447
+ var toCamelCase = (string) => string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase());
1448
+ //#endregion
1449
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/shared/src/utils/toPascalCase.js
1450
+ /**
1451
+ * @license lucide-vue-next v1.0.0 - ISC
1452
+ *
1453
+ * This source code is licensed under the ISC license.
1454
+ * See the LICENSE file in the root directory of this source tree.
1455
+ */
1456
+ var toPascalCase = (string) => {
1457
+ const camelCase = toCamelCase(string);
1458
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
1459
+ };
1460
+ //#endregion
1461
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/defaultAttributes.js
1462
+ /**
1463
+ * @license lucide-vue-next v1.0.0 - ISC
1464
+ *
1465
+ * This source code is licensed under the ISC license.
1466
+ * See the LICENSE file in the root directory of this source tree.
1467
+ */
1468
+ var defaultAttributes = {
1469
+ xmlns: "http://www.w3.org/2000/svg",
1470
+ width: 24,
1471
+ height: 24,
1472
+ viewBox: "0 0 24 24",
1473
+ fill: "none",
1474
+ stroke: "currentColor",
1475
+ "stroke-width": 2,
1476
+ "stroke-linecap": "round",
1477
+ "stroke-linejoin": "round"
1478
+ };
1479
+ //#endregion
1480
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/Icon.js
1481
+ /**
1482
+ * @license lucide-vue-next v1.0.0 - ISC
1483
+ *
1484
+ * This source code is licensed under the ISC license.
1485
+ * See the LICENSE file in the root directory of this source tree.
1486
+ */
1487
+ var Icon = ({ name, iconNode, absoluteStrokeWidth, "absolute-stroke-width": absoluteStrokeWidthKebabCase, strokeWidth, "stroke-width": strokeWidthKebabCase, size = defaultAttributes.width, color = defaultAttributes.stroke, ...props }, { slots }) => {
1488
+ return h("svg", {
1489
+ ...defaultAttributes,
1490
+ ...props,
1491
+ width: size,
1492
+ height: size,
1493
+ stroke: color,
1494
+ "stroke-width": isEmptyString(absoluteStrokeWidth) || isEmptyString(absoluteStrokeWidthKebabCase) || absoluteStrokeWidth === true || absoluteStrokeWidthKebabCase === true ? Number(strokeWidth || strokeWidthKebabCase || defaultAttributes["stroke-width"]) * 24 / Number(size) : strokeWidth || strokeWidthKebabCase || defaultAttributes["stroke-width"],
1495
+ class: mergeClasses("lucide", props.class, ...name ? [`lucide-${toKebabCase(toPascalCase(name))}-icon`, `lucide-${toKebabCase(name)}`] : ["lucide-icon"]),
1496
+ ...!slots.default && !hasA11yProp(props) && { "aria-hidden": "true" }
1497
+ }, [...iconNode.map((child) => h(...child)), ...slots.default ? [slots.default()] : []]);
1498
+ };
1499
+ //#endregion
1500
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/createLucideIcon.js
1501
+ /**
1502
+ * @license lucide-vue-next v1.0.0 - ISC
1503
+ *
1504
+ * This source code is licensed under the ISC license.
1505
+ * See the LICENSE file in the root directory of this source tree.
1506
+ */
1507
+ var createLucideIcon = (iconName, iconNode) => (props, { slots, attrs }) => h(Icon, {
1508
+ ...attrs,
1509
+ ...props,
1510
+ iconNode,
1511
+ name: iconName
1512
+ }, slots);
1513
+ //#endregion
1514
+ //#region ../../node_modules/.bun/lucide-vue-next@1.0.0+710994de3992b4e0/node_modules/lucide-vue-next/dist/esm/icons/ellipsis.js
1515
+ /**
1516
+ * @license lucide-vue-next v1.0.0 - ISC
1517
+ *
1518
+ * This source code is licensed under the ISC license.
1519
+ * See the LICENSE file in the root directory of this source tree.
1520
+ */
1521
+ var Ellipsis = createLucideIcon("ellipsis", [
1522
+ ["circle", {
1523
+ cx: "12",
1524
+ cy: "12",
1525
+ r: "1",
1526
+ key: "41hilf"
1527
+ }],
1528
+ ["circle", {
1529
+ cx: "19",
1530
+ cy: "12",
1531
+ r: "1",
1532
+ key: "1wjl8i"
1533
+ }],
1534
+ ["circle", {
1535
+ cx: "5",
1536
+ cy: "12",
1537
+ r: "1",
1538
+ key: "1pcz8c"
1539
+ }]
1540
+ ]);
1541
+ //#endregion
1399
1542
  //#region src/components/IconButton.vue?vue&type=script&setup=true&lang.ts
1400
- var _hoisted_1$67 = [
1543
+ var _hoisted_1$68 = [
1401
1544
  "disabled",
1402
1545
  "aria-label",
1403
1546
  "title"
@@ -1459,7 +1602,194 @@ var IconButton_default = /* @__PURE__ */ defineComponent({
1459
1602
  }, null, -1)])], 2)) : (openBlock(), createElementBlock("span", {
1460
1603
  key: 1,
1461
1604
  class: normalizeClass(`mint-icon-button__icon--${__props.size}`)
1462
- }, [renderSlot(_ctx.$slots, "default")], 2))], 10, _hoisted_1$67);
1605
+ }, [renderSlot(_ctx.$slots, "default")], 2))], 10, _hoisted_1$68);
1606
+ };
1607
+ }
1608
+ });
1609
+ //#endregion
1610
+ //#region src/components/ActionMenu.vue?vue&type=script&setup=true&lang.ts
1611
+ var _hoisted_1$67 = [
1612
+ "href",
1613
+ "target",
1614
+ "rel",
1615
+ "onClick"
1616
+ ];
1617
+ var _hoisted_2$60 = ["disabled", "onClick"];
1618
+ //#endregion
1619
+ //#region src/components/ActionMenu.vue
1620
+ var ActionMenu_default = /* @__PURE__ */ defineComponent({
1621
+ __name: "ActionMenu",
1622
+ props: {
1623
+ label: {},
1624
+ items: {},
1625
+ disabled: {
1626
+ type: Boolean,
1627
+ default: false
1628
+ }
1629
+ },
1630
+ emits: [
1631
+ "select",
1632
+ "open",
1633
+ "close"
1634
+ ],
1635
+ setup(__props, { emit: __emit }) {
1636
+ /** Compact overflow actions with an IconButton trigger and a viewport-safe teleported menu. */
1637
+ const props = __props;
1638
+ const emit = __emit;
1639
+ const isOpen = ref(false);
1640
+ const triggerRootRef = ref(null);
1641
+ const panelRef = ref(null);
1642
+ const panelStyle = ref({ visibility: "hidden" });
1643
+ function triggerElement() {
1644
+ return triggerRootRef.value?.querySelector("button") ?? null;
1645
+ }
1646
+ function menuItems() {
1647
+ if (!panelRef.value) return [];
1648
+ return Array.from(panelRef.value.querySelectorAll(".mint-action-menu__item:not(:disabled)"));
1649
+ }
1650
+ async function positionPanel() {
1651
+ const trigger = triggerElement();
1652
+ const panel = panelRef.value;
1653
+ if (!trigger || !panel) return;
1654
+ const position = await computePosition(trigger, panel, {
1655
+ placement: "bottom-end",
1656
+ strategy: "fixed",
1657
+ middleware: [
1658
+ offset(4),
1659
+ flip(),
1660
+ shift({ padding: 8 })
1661
+ ]
1662
+ });
1663
+ panelStyle.value = {
1664
+ left: `${position.x}px`,
1665
+ top: `${position.y}px`,
1666
+ visibility: "visible"
1667
+ };
1668
+ }
1669
+ function addGlobalListeners() {
1670
+ document.addEventListener("pointerdown", handleDocumentPointerDown, true);
1671
+ window.addEventListener("resize", handleViewportChange);
1672
+ window.addEventListener("scroll", handleViewportChange, true);
1673
+ }
1674
+ function removeGlobalListeners() {
1675
+ document.removeEventListener("pointerdown", handleDocumentPointerDown, true);
1676
+ window.removeEventListener("resize", handleViewportChange);
1677
+ window.removeEventListener("scroll", handleViewportChange, true);
1678
+ }
1679
+ async function openMenu() {
1680
+ if (props.disabled || isOpen.value) return;
1681
+ panelStyle.value = { visibility: "hidden" };
1682
+ isOpen.value = true;
1683
+ emit("open");
1684
+ addGlobalListeners();
1685
+ await nextTick();
1686
+ await positionPanel();
1687
+ menuItems()[0]?.focus();
1688
+ }
1689
+ function closeMenu(returnFocus = false) {
1690
+ if (!isOpen.value) return;
1691
+ isOpen.value = false;
1692
+ removeGlobalListeners();
1693
+ emit("close");
1694
+ if (returnFocus) nextTick(() => triggerElement()?.focus());
1695
+ }
1696
+ function toggleMenu() {
1697
+ if (isOpen.value) closeMenu();
1698
+ else openMenu();
1699
+ }
1700
+ function handleSelect(item) {
1701
+ if (item.disabled) return;
1702
+ emit("select", item);
1703
+ closeMenu();
1704
+ }
1705
+ function handleDocumentPointerDown(event) {
1706
+ const target = event.target;
1707
+ if (!(target instanceof Node)) return;
1708
+ if (triggerRootRef.value?.contains(target) || panelRef.value?.contains(target)) return;
1709
+ closeMenu();
1710
+ }
1711
+ function handleViewportChange() {
1712
+ closeMenu();
1713
+ }
1714
+ function handleMenuKeydown(event) {
1715
+ const items = menuItems();
1716
+ const currentIndex = items.indexOf(document.activeElement);
1717
+ if (event.key === "Escape") {
1718
+ event.preventDefault();
1719
+ closeMenu(true);
1720
+ return;
1721
+ }
1722
+ if (event.key === "Tab") {
1723
+ closeMenu();
1724
+ return;
1725
+ }
1726
+ if (event.key === "Home") {
1727
+ event.preventDefault();
1728
+ items[0]?.focus();
1729
+ return;
1730
+ }
1731
+ if (event.key === "End") {
1732
+ event.preventDefault();
1733
+ items[items.length - 1]?.focus();
1734
+ return;
1735
+ }
1736
+ if (event.key !== "ArrowDown" && event.key !== "ArrowUp") return;
1737
+ event.preventDefault();
1738
+ const direction = event.key === "ArrowDown" ? 1 : -1;
1739
+ items[(Math.max(currentIndex, 0) + direction + items.length) % items.length]?.focus();
1740
+ }
1741
+ onBeforeUnmount(removeGlobalListeners);
1742
+ return (_ctx, _cache) => {
1743
+ return openBlock(), createElementBlock(Fragment, null, [createElementVNode("span", {
1744
+ ref_key: "triggerRootRef",
1745
+ ref: triggerRootRef,
1746
+ class: "mint-action-menu"
1747
+ }, [createVNode(IconButton_default, {
1748
+ variant: "secondary",
1749
+ size: "sm",
1750
+ label: __props.label,
1751
+ disabled: __props.disabled,
1752
+ "aria-haspopup": "menu",
1753
+ "aria-expanded": isOpen.value,
1754
+ onClick: toggleMenu
1755
+ }, {
1756
+ default: withCtx(() => [createVNode(unref(Ellipsis), {
1757
+ class: "mint-action-menu__trigger-icon",
1758
+ size: 16,
1759
+ "stroke-width": 2,
1760
+ "aria-hidden": "true"
1761
+ })]),
1762
+ _: 1
1763
+ }, 8, [
1764
+ "label",
1765
+ "disabled",
1766
+ "aria-expanded"
1767
+ ])], 512), (openBlock(), createBlock(Teleport, { to: "body" }, [isOpen.value ? (openBlock(), createElementBlock("div", {
1768
+ key: 0,
1769
+ ref_key: "panelRef",
1770
+ ref: panelRef,
1771
+ class: "mint-action-menu__panel",
1772
+ style: normalizeStyle(panelStyle.value),
1773
+ role: "menu",
1774
+ onKeydown: handleMenuKeydown
1775
+ }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
1776
+ return openBlock(), createElementBlock(Fragment, { key: item.id }, [item.href !== void 0 && !item.disabled ? (openBlock(), createElementBlock("a", {
1777
+ key: 0,
1778
+ href: item.href,
1779
+ target: item.target,
1780
+ rel: item.target === "_blank" ? "noopener noreferrer" : void 0,
1781
+ class: normalizeClass(["mint-action-menu__item", { "mint-action-menu__item--danger": item.danger }]),
1782
+ role: "menuitem",
1783
+ onClick: ($event) => handleSelect(item)
1784
+ }, toDisplayString(item.label), 11, _hoisted_1$67)) : (openBlock(), createElementBlock("button", {
1785
+ key: 1,
1786
+ type: "button",
1787
+ class: normalizeClass(["mint-action-menu__item", { "mint-action-menu__item--danger": item.danger }]),
1788
+ role: "menuitem",
1789
+ disabled: item.disabled,
1790
+ onClick: ($event) => handleSelect(item)
1791
+ }, toDisplayString(item.label), 11, _hoisted_2$60))], 64);
1792
+ }), 128))], 36)) : createCommentVNode("", true)]))], 64);
1463
1793
  };
1464
1794
  }
1465
1795
  });
@@ -2878,9 +3208,9 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
2878
3208
  setup(__props, { emit: __emit }) {
2879
3209
  /** Full application top bar with brand logo, page selector or plugin switcher, centered pill nav, experiment popover, and avatar menu. */
2880
3210
  const props = __props;
2881
- const SettingsModal = defineAsyncComponent(() => import("./SettingsModal-Ccq2z-Ms.js").then((n) => n.n));
2882
- const ExperimentPopover = defineAsyncComponent(() => import("./ExperimentPopover-D6_RGzTY.js").then((n) => n.n));
2883
- const ExperimentSelectorModal = defineAsyncComponent(() => import("./ExperimentSelectorModal-DcQ38zua.js").then((n) => n.n));
3211
+ const SettingsModal = defineAsyncComponent(() => import("./SettingsModal-D7LFUokT.js").then((n) => n.n));
3212
+ const ExperimentPopover = defineAsyncComponent(() => import("./ExperimentPopover-tLwJ7XF4.js").then((n) => n.n));
3213
+ const ExperimentSelectorModal = defineAsyncComponent(() => import("./ExperimentSelectorModal-B6P2msT4.js").then((n) => n.n));
2884
3214
  const emit = __emit;
2885
3215
  const settingsOpen = ref(false);
2886
3216
  const { isIntegrated, plugin } = usePlatformContext();
@@ -3558,6 +3888,11 @@ var FormBuilder_default = /* @__PURE__ */ defineComponent({
3558
3888
  * - `section:<id>` — replace an entire section body
3559
3889
  * - `section:<id>:after` — inject content after a section
3560
3890
  * - `actions` — replace the default FormActions bar when `showActions` is true
3891
+ *
3892
+ * @example Recommended
3893
+ * ```vue
3894
+ * <FormBuilder v-model="values" :model="formModel" />
3895
+ * ```
3561
3896
  */
3562
3897
  const props = __props;
3563
3898
  const emit = __emit;
@@ -3878,20 +4213,9 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
3878
4213
  * When activeView is omitted, the first non-empty panel view is selected.
3879
4214
  * When no view has matching panels, the sidebar hides entirely.
3880
4215
  *
3881
- * @example
4216
+ * @example Recommended
3882
4217
  * ```vue
3883
- * <AppSidebar :panels="toolPanels" :active-view="activeTab">
3884
- * <template #section-parameters>
3885
- * <BaseSlider v-model="threshold" label="Threshold" />
3886
- * </template>
3887
- * <template #section-display>
3888
- * <BaseToggle v-model="showOutliers" label="Show outliers" />
3889
- * </template>
3890
- * <template #header>Plugin Tools</template>
3891
- * </AppSidebar>
3892
- *
3893
- * <!-- Direct schema-driven controls -->
3894
- * <AppSidebar :controls="controls" :active-view="activeTab" v-model="values" />
4218
+ * <AppSidebar v-model="values" :model="sidebarModel" />
3895
4219
  * ```
3896
4220
  */
3897
4221
  const props = __props;
@@ -4660,7 +4984,16 @@ var PluginWorkspaceView_default = /* @__PURE__ */ defineComponent({
4660
4984
  "form-cancel"
4661
4985
  ],
4662
4986
  setup(__props, { emit: __emit }) {
4663
- /** Standard plugin workspace shell that combines AppLayout, AppTopBar, and AppSidebar with LEAF-style defaults. */
4987
+ /**
4988
+ * Standard plugin workspace shell that combines AppLayout, AppTopBar, and AppSidebar with LEAF-style defaults.
4989
+ *
4990
+ * @example Recommended
4991
+ * ```vue
4992
+ * <PluginWorkspaceView title="Analysis" experiment-shell>
4993
+ * <router-view />
4994
+ * </PluginWorkspaceView>
4995
+ * ```
4996
+ */
4664
4997
  const props = __props;
4665
4998
  const emit = __emit;
4666
4999
  const slots = useSlots();
@@ -5205,6 +5538,14 @@ var GeneratedResultRenderer_default = /* @__PURE__ */ _plugin_vue_export_helper_
5205
5538
  __name: "GeneratedResultRenderer",
5206
5539
  props: { result: {} },
5207
5540
  setup(__props) {
5541
+ /**
5542
+ * Render standardized text, table, image, Plotly, JSON, and artifact job results.
5543
+ *
5544
+ * @example Recommended
5545
+ * ```vue
5546
+ * <GeneratedResultRenderer :result="result" />
5547
+ * ```
5548
+ */
5208
5549
  const props = __props;
5209
5550
  const tableColumns = computed(() => {
5210
5551
  if (props.result.kind !== "table") return [];
@@ -5254,7 +5595,7 @@ var GeneratedResultRenderer_default = /* @__PURE__ */ _plugin_vue_export_helper_
5254
5595
  }, [createElementVNode("span", null, toDisplayString(__props.result.name), 1), createElementVNode("small", null, toDisplayString(__props.result.media_type), 1)], 8, _hoisted_5$36))]);
5255
5596
  };
5256
5597
  }
5257
- }), [["__scopeId", "data-v-148258e9"]]);
5598
+ }), [["__scopeId", "data-v-a3757b3e"]]);
5258
5599
  //#endregion
5259
5600
  //#region src/components/JobsStatusTray.vue?vue&type=script&setup=true&lang.ts
5260
5601
  var _hoisted_1$46 = { class: "mint-jobs-tray" };
@@ -5332,7 +5673,14 @@ var JobsStatusTray_default = /* @__PURE__ */ defineComponent({
5332
5673
  },
5333
5674
  emits: ["select", "error"],
5334
5675
  setup(__props, { emit: __emit }) {
5335
- /** Floating, source-driven job status tray for plugin and platform workflows. */
5676
+ /**
5677
+ * Floating, source-driven job status tray for plugin and platform workflows.
5678
+ *
5679
+ * @example Recommended
5680
+ * ```vue
5681
+ * <JobsStatusTray :source="jobs" />
5682
+ * ```
5683
+ */
5336
5684
  const props = __props;
5337
5685
  const emit = __emit;
5338
5686
  const panelId = `mint-jobs-tray-${useId().replace(/:/g, "")}`;
@@ -5610,6 +5958,14 @@ var GeneratedPluginView_default = /* @__PURE__ */ _plugin_vue_export_helper_defa
5610
5958
  transport: {}
5611
5959
  },
5612
5960
  setup(__props) {
5961
+ /**
5962
+ * Standard generated workspace for a plugin that exposes an SDK job manifest.
5963
+ *
5964
+ * @example Recommended
5965
+ * ```vue
5966
+ * <GeneratedPluginView base-url="/api/peak-qc" />
5967
+ * ```
5968
+ */
5613
5969
  const props = __props;
5614
5970
  const generated = useGeneratedAnalysis({
5615
5971
  baseUrl: props.baseUrl,
@@ -5727,7 +6083,7 @@ var GeneratedPluginView_default = /* @__PURE__ */ _plugin_vue_export_helper_defa
5727
6083
  ]);
5728
6084
  };
5729
6085
  }
5730
- }), [["__scopeId", "data-v-6219e939"]]);
6086
+ }), [["__scopeId", "data-v-6c599fd1"]]);
5731
6087
  //#endregion
5732
6088
  //#region src/components/DoseCalculatorVolumeField.vue?vue&type=script&setup=true&lang.ts
5733
6089
  var _hoisted_1$44 = { class: "mint-dose-calculator__field" };
@@ -12022,7 +12378,14 @@ var ComponentBindingRenderer_default = /* @__PURE__ */ _plugin_vue_export_helper
12022
12378
  emptyText: { default: "No renderable SDK component bindings." }
12023
12379
  },
12024
12380
  setup(__props) {
12025
- /** Render generated SDK component bindings such as WellPlate, DoseCalculator, DataFrame, and PlateMapEditor. */
12381
+ /**
12382
+ * Render generated SDK component bindings such as WellPlate, DoseCalculator, DataFrame, and PlateMapEditor.
12383
+ *
12384
+ * @example Recommended
12385
+ * ```vue
12386
+ * <ComponentBindingRenderer :bindings="workspace.componentBindings.value" />
12387
+ * ```
12388
+ */
12026
12389
  const props = __props;
12027
12390
  const componentRegistry = {
12028
12391
  DataFrame: DataFrame_default,
@@ -12118,7 +12481,7 @@ var ComponentBindingRenderer_default = /* @__PURE__ */ _plugin_vue_export_helper
12118
12481
  }), 128)), renderableBindings.value.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_8$15, toDisplayString(__props.emptyText), 1)) : createCommentVNode("", true)], 2);
12119
12482
  };
12120
12483
  }
12121
- }), [["__scopeId", "data-v-93f5795f"]]);
12484
+ }), [["__scopeId", "data-v-ec0e5797"]]);
12122
12485
  //#endregion
12123
12486
  //#region src/components/ControlWorkspaceView.vue?vue&type=script&setup=true&lang.ts
12124
12487
  var _hoisted_1$29 = { class: "mint-control-workspace-view__content" };
@@ -12188,7 +12551,14 @@ var ControlWorkspaceView_default = /* @__PURE__ */ _plugin_vue_export_helper_def
12188
12551
  "cancel"
12189
12552
  ],
12190
12553
  setup(__props, { emit: __emit }) {
12191
- /** Complete control workspace component that turns a simple controls data model into AppTopBar, AppSidebar, and FormBuilder forms. */
12554
+ /**
12555
+ * Complete control workspace component that turns a simple controls data model into AppTopBar, AppSidebar, and FormBuilder forms.
12556
+ *
12557
+ * @example Recommended
12558
+ * ```vue
12559
+ * <ControlWorkspaceView v-model="values" :model="workspaceModel" title="Analysis" />
12560
+ * ```
12561
+ */
12192
12562
  const emit = __emit;
12193
12563
  const props = __props;
12194
12564
  const externalValues = computed(() => props.modelValue ?? props.values);
@@ -12377,7 +12747,7 @@ var ControlWorkspaceView_default = /* @__PURE__ */ _plugin_vue_export_helper_def
12377
12747
  ]);
12378
12748
  };
12379
12749
  }
12380
- }), [["__scopeId", "data-v-83e93e6c"]]);
12750
+ }), [["__scopeId", "data-v-8121a7e6"]]);
12381
12751
  //#endregion
12382
12752
  //#region src/components/DoseDesignWorkspaceView.vue?vue&type=script&setup=true&lang.ts
12383
12753
  var _hoisted_1$28 = { class: "mint-dose-design-workspace" };
@@ -12448,7 +12818,14 @@ var DoseDesignWorkspaceView_default = /* @__PURE__ */ _plugin_vue_export_helper_
12448
12818
  "cancel"
12449
12819
  ],
12450
12820
  setup(__props, { emit: __emit }) {
12451
- /** Complete ControlWorkspaceView page shell for WellPlate + DoseCalculator dose design. */
12821
+ /**
12822
+ * Complete ControlWorkspaceView page shell for WellPlate + DoseCalculator dose design.
12823
+ *
12824
+ * @example Recommended
12825
+ * ```vue
12826
+ * <DoseDesignWorkspaceView v-model="values" title="Dose Design" />
12827
+ * ```
12828
+ */
12452
12829
  const props = __props;
12453
12830
  const emit = __emit;
12454
12831
  const resolvedModel = computed(() => props.model ?? defineDoseDesignControlModel(props.doseDesignOptions));
@@ -12542,7 +12919,7 @@ var DoseDesignWorkspaceView_default = /* @__PURE__ */ _plugin_vue_export_helper_
12542
12919
  ]);
12543
12920
  };
12544
12921
  }
12545
- }), [["__scopeId", "data-v-99145924"]]);
12922
+ }), [["__scopeId", "data-v-9923dd0b"]]);
12546
12923
  //#endregion
12547
12924
  //#region src/components/AppContainer.vue
12548
12925
  var AppContainer_default = /* @__PURE__ */ defineComponent({
@@ -12937,7 +13314,14 @@ var BioTemplateRenderer_default = /* @__PURE__ */ defineComponent({
12937
13314
  emptyText: { default: "No renderable biology template components." }
12938
13315
  },
12939
13316
  setup(__props) {
12940
- /** Render biology template envelopes with matching SDK components such as WellPlate, DoseCalculator, and DataFrame. */
13317
+ /**
13318
+ * Render biology template envelopes with matching SDK components such as WellPlate, DoseCalculator, and DataFrame.
13319
+ *
13320
+ * @example Recommended
13321
+ * ```vue
13322
+ * <BioTemplateRenderer :target="collection" />
13323
+ * ```
13324
+ */
12941
13325
  const props = __props;
12942
13326
  const componentBindings = computed(() => toBioTemplateComponentBindings(props.target));
12943
13327
  return (_ctx, _cache) => {
@@ -13029,7 +13413,14 @@ var BioTemplateExperimentWorkspaceView_default = /* @__PURE__ */ _plugin_vue_exp
13029
13413
  "save"
13030
13414
  ],
13031
13415
  setup(__props, { emit: __emit }) {
13032
- /** Current-experiment template workspace with load/save/reset controls and WellPlate/DataFrame/DoseCalculator previews. */
13416
+ /**
13417
+ * Current-experiment template workspace with load/save/reset controls and WellPlate/DataFrame/DoseCalculator previews.
13418
+ *
13419
+ * @example Recommended
13420
+ * ```vue
13421
+ * <BioTemplateExperimentWorkspaceView :target="collection" label="Assay" kind="collection" />
13422
+ * ```
13423
+ */
13033
13424
  const props = __props;
13034
13425
  const emit = __emit;
13035
13426
  const statusMessage = computed(() => {
@@ -13149,7 +13540,7 @@ var BioTemplateExperimentWorkspaceView_default = /* @__PURE__ */ _plugin_vue_exp
13149
13540
  ]);
13150
13541
  };
13151
13542
  }
13152
- }), [["__scopeId", "data-v-9eb2d454"]]);
13543
+ }), [["__scopeId", "data-v-319cba33"]]);
13153
13544
  //#endregion
13154
13545
  //#region src/components/BioTemplatePackWorkspaceView.vue
13155
13546
  var BioTemplatePackWorkspaceView_default = /* @__PURE__ */ defineComponent({
@@ -13183,7 +13574,14 @@ var BioTemplatePackWorkspaceView_default = /* @__PURE__ */ defineComponent({
13183
13574
  saveLabel: { default: "Save" }
13184
13575
  },
13185
13576
  setup(__props) {
13186
- /** Complete current-experiment workspace for a curated biology template pack with save/load controls and component-prop slots. */
13577
+ /**
13578
+ * Complete current-experiment workspace for a curated biology template pack with save/load controls and component-prop slots.
13579
+ *
13580
+ * @example Recommended
13581
+ * ```vue
13582
+ * <BioTemplatePackWorkspaceView pack="cell-culture-screen" />
13583
+ * ```
13584
+ */
13187
13585
  const props = __props;
13188
13586
  const slots = useSlots();
13189
13587
  const hasDefaultSlot = computed(() => Boolean(slots.default));
@@ -13326,7 +13724,14 @@ var BioTemplatePresetWorkspaceView_default = /* @__PURE__ */ _plugin_vue_export_
13326
13724
  },
13327
13725
  emits: ["update:modelValue", "update:values"],
13328
13726
  setup(__props, { emit: __emit }) {
13329
- /** Complete editable biology template preset workspace for WellPlate/DoseCalculator, LC-MS, qPCR, generated controls, preview components, and current-experiment save wiring. */
13727
+ /**
13728
+ * Complete editable biology template preset workspace for WellPlate/DoseCalculator, LC-MS, qPCR, generated controls, preview components, and current-experiment save wiring.
13729
+ *
13730
+ * @example Recommended
13731
+ * ```vue
13732
+ * <BioTemplatePresetWorkspaceView v-model="values" preset="wellplate-screen" />
13733
+ * ```
13734
+ */
13330
13735
  const emit = __emit;
13331
13736
  const props = __props;
13332
13737
  const externalValues = computed(() => props.modelValue ?? props.values);
@@ -13500,7 +13905,7 @@ var BioTemplatePresetWorkspaceView_default = /* @__PURE__ */ _plugin_vue_export_
13500
13905
  ]);
13501
13906
  };
13502
13907
  }
13503
- }), [["__scopeId", "data-v-0cb9aa98"]]);
13908
+ }), [["__scopeId", "data-v-f889ed9c"]]);
13504
13909
  //#endregion
13505
13910
  //#region src/components/RackEditor.vue?vue&type=script&setup=true&lang.ts
13506
13911
  var _hoisted_1$20 = { class: "mint-rack-editor__tabs" };
@@ -17762,6 +18167,7 @@ var FitPanel_default = /* @__PURE__ */ defineComponent({
17762
18167
  //#endregion
17763
18168
  //#region src/components/index.ts
17764
18169
  var components_exports = /* @__PURE__ */ __exportAll({
18170
+ ActionMenu: () => ActionMenu_default,
17765
18171
  AlertBox: () => AlertBox_default,
17766
18172
  AppAvatarMenu: () => AppAvatarMenu_default,
17767
18173
  AppContainer: () => AppContainer_default,
@@ -17870,6 +18276,6 @@ var components_exports = /* @__PURE__ */ __exportAll({
17870
18276
  WellPlate: () => WellPlate_default
17871
18277
  });
17872
18278
  //#endregion
17873
- export { SmartGroupFieldRecipe_default as $, ProtocolStepEditor_default as A, DataFrame_default as At, Breadcrumb_default as B, estimateSequenceRemainingSeconds as C, AppPluginSwitcher_default as Ct, sequenceSamplesRemaining as D, ThemeToggle_default as Dt, sequenceProgressPercent as E, CollapsibleCard_default as Et, RackEditor_default as F, ColorSlider_default as Ft, AppContainer_default as G, ProgressBar_default as H, BioTemplatePresetWorkspaceView_default as I, ComponentBindingRenderer_default as J, DoseDesignWorkspaceView_default as K, BioTemplatePackWorkspaceView_default as L, ReagentEditor_default as M, DropdownButton_default as Mt, SmartGroupModal_default as N, SegmentedControl_default as Nt, ChemicalFormula_default as O, IconButton_default as Ot, GroupAssigner_default as P, BaseTabs_default as Pt, SmartGroupManual_default as Q, BioTemplateExperimentWorkspaceView_default as R, estimateSequenceFinishDate as S, AppTopBar_default as St, formatSequenceRemaining as T, PluginIcon_default as Tt, StatusIndicator_default as U, Avatar_default as V, Divider_default as W, SampleSelector_default as X, ScheduleCalendar_default as Y, AutoGroupModal_default as Z, reconstructLcmsPlateCellsFromSequenceItems as _, AppLayout_default as _t, ResourceCard_default as a, DoseCalculator_default as at, InstrumentAlertLog_default as b, FormActions_default as bt, BatchProgressList_default as c, GeneratedResultRenderer_default as ct, DEFAULT_LCMS_SEQUENCE_COLUMNS as d, LoadingSpinner_default as dt, ReagentList_default as et, basenameFromWindowsPath as f, generatedJobDefaults as ft, lcmsWellIdFromPosition as g, MobileSupportGate_default as gt, inferLcmsPlateTypeFromWellIds as h, PluginWorkspaceView_default as ht, SectionCard_default as i, ExperimentTimeline_default as it, SampleHierarchyTree_default as j, Calendar_default as jt, ScientificNumber_default as k, AppToastContainer_default as kt, AuditTrail_default as l, GeneratedPlotlyResult_default as lt, extractLcmsSampleName as m, normalizeGeneratedJobInput as mt, FitPanel_default as n, SampleLegend_default as nt, TimeRangeInput_default as o, GeneratedPluginView_default as ot, extractLcmsCommonPrefix as p, generatedJobFormSchema as pt, ControlWorkspaceView_default as q, ArtifactSaveDialog_default as r, WellPlate_default as rt, ExperimentDataViewer_default as s, JobsStatusTray_default as st, components_exports as t, PlateMapEditor_default as tt, LcmsSequenceTable_default as u, ChartContainer_default as ut, InstrumentStatusCard_default as v, AppSidebar_default as vt, formatSequenceEta as w, AppAvatarMenu_default as wt, SequenceProgressBar_default as x, StepWizard_default as xt, InstrumentStateBadge_default as y, FormBuilder_default as yt, BioTemplateRenderer_default as z };
18279
+ export { SmartGroupFieldRecipe_default as $, ProtocolStepEditor_default as A, AppToastContainer_default as At, Breadcrumb_default as B, estimateSequenceRemainingSeconds as C, AppPluginSwitcher_default as Ct, sequenceSamplesRemaining as D, ThemeToggle_default as Dt, sequenceProgressPercent as E, CollapsibleCard_default as Et, RackEditor_default as F, BaseTabs_default as Ft, AppContainer_default as G, ProgressBar_default as H, BioTemplatePresetWorkspaceView_default as I, ColorSlider_default as It, ComponentBindingRenderer_default as J, DoseDesignWorkspaceView_default as K, BioTemplatePackWorkspaceView_default as L, ReagentEditor_default as M, Calendar_default as Mt, SmartGroupModal_default as N, DropdownButton_default as Nt, ChemicalFormula_default as O, ActionMenu_default as Ot, GroupAssigner_default as P, SegmentedControl_default as Pt, SmartGroupManual_default as Q, BioTemplateExperimentWorkspaceView_default as R, estimateSequenceFinishDate as S, AppTopBar_default as St, formatSequenceRemaining as T, PluginIcon_default as Tt, StatusIndicator_default as U, Avatar_default as V, Divider_default as W, SampleSelector_default as X, ScheduleCalendar_default as Y, AutoGroupModal_default as Z, reconstructLcmsPlateCellsFromSequenceItems as _, AppLayout_default as _t, ResourceCard_default as a, DoseCalculator_default as at, InstrumentAlertLog_default as b, FormActions_default as bt, BatchProgressList_default as c, GeneratedResultRenderer_default as ct, DEFAULT_LCMS_SEQUENCE_COLUMNS as d, LoadingSpinner_default as dt, ReagentList_default as et, basenameFromWindowsPath as f, generatedJobDefaults as ft, lcmsWellIdFromPosition as g, MobileSupportGate_default as gt, inferLcmsPlateTypeFromWellIds as h, PluginWorkspaceView_default as ht, SectionCard_default as i, ExperimentTimeline_default as it, SampleHierarchyTree_default as j, DataFrame_default as jt, ScientificNumber_default as k, IconButton_default as kt, AuditTrail_default as l, GeneratedPlotlyResult_default as lt, extractLcmsSampleName as m, normalizeGeneratedJobInput as mt, FitPanel_default as n, SampleLegend_default as nt, TimeRangeInput_default as o, GeneratedPluginView_default as ot, extractLcmsCommonPrefix as p, generatedJobFormSchema as pt, ControlWorkspaceView_default as q, ArtifactSaveDialog_default as r, WellPlate_default as rt, ExperimentDataViewer_default as s, JobsStatusTray_default as st, components_exports as t, PlateMapEditor_default as tt, LcmsSequenceTable_default as u, ChartContainer_default as ut, InstrumentStatusCard_default as v, AppSidebar_default as vt, formatSequenceEta as w, AppAvatarMenu_default as wt, SequenceProgressBar_default as x, StepWizard_default as xt, InstrumentStateBadge_default as y, FormBuilder_default as yt, BioTemplateRenderer_default as z };
17874
18280
 
17875
- //# sourceMappingURL=components-CV5zuWa8.js.map
18281
+ //# sourceMappingURL=components-CDomhGSj.js.map