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

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,12 +1,12 @@
1
1
  import { i as useEventListener, o as __exportAll, t as useDropdownState } from "./useDropdownState-uFIz6Yv8.js";
2
2
  import { i as AuthenticationRequiredError, o as useApi } from "./experiment-DyO54FQB.js";
3
- import { L as EmptyState_default, d as isActiveJobStatus, f as isTerminalJobStatus, g as resolveJobCapabilities, h as normalizeJobState, m as normalizeJobPercent, o as resolveCurrentPluginId, p as jobStatusLabel, t as isRecord, v as useAppExperiment } from "./records-CWRztE5M.js";
4
- import { A as useJobsEndpoint, D as _plugin_vue_export_helper_default, E as GeneratedPathInput_default, M as usePlatform, O as GENERATED_JOBS_API_KEY, R as definePluginWorkspaceView, _ as getTypeDefault, g as getFieldRegistryEntry, h as replaceRecord, k as createGeneratedAnalysisTransport } from "./useListReorder-QqJc1dpX.js";
5
- import { r as LoadingSpinner_default, t as AlertBox_default } from "./AlertBox-CIhqsWbN.js";
6
- import { D as DataFrame_default, T as WellPlate_default, a as GeneratedPlotlyResult_default, b as PlateEditor_default, c as downloadEndpoint, d as useEventStream, f as useSettingsEndpoint, i as GeneratedResultRenderer_default, l as pluginFormDataFromPayload, m as resolvePluginBaseUrl, n as ScheduleCalendar_default, o as createClient, p as buildEndpointUrl, t as useRackEditor, u as uploadEndpoint, v as DoseCalculator_default } from "./useRackEditor-BHGM1Ngz.js";
7
- import { A as controlValuesToComponentBindingsById, C as usePluginWorkspace, D as useControlSchema, E as getControlDefaults, F as getDefaultControlView, M as controlsTo, O as controlBindings, S as AppLayout_default, T as defineControls, d as useForm, f as AppTopBar_default, j as controlValuesToComponentProps, k as controlValuesToComponentBindings, l as useFormBuilder, p as providePluginIdentity, t as AppSidebar_default, u as evaluateCondition, w as defineControlComponentBindings } from "./AppSidebar-BDrd7Kwn.js";
8
- import { n as isControlModelBinding } from "./controlSchemaModel-BbXbMgc6.js";
9
- import { i as JobsStatusTray_default, n as subscribeRealtime, r as useRealtime, t as currentPresence } from "./useRealtime-CNQbrS01.js";
3
+ import { L as EmptyState_default, d as isActiveJobStatus, f as isTerminalJobStatus, g as resolveJobCapabilities, h as normalizeJobState, m as normalizeJobPercent, o as resolveCurrentPluginId, p as jobStatusLabel, t as isRecord, v as useAppExperiment } from "./records-BAymyHAn.js";
4
+ import { A as useJobsEndpoint, D as _plugin_vue_export_helper_default, E as GeneratedPathInput_default, M as usePlatform, O as GENERATED_JOBS_API_KEY, R as definePluginWorkspaceView, _ as getTypeDefault, g as getFieldRegistryEntry, h as replaceRecord, k as createGeneratedAnalysisTransport } from "./useListReorder-W1bzK_bo.js";
5
+ import { r as LoadingSpinner_default, t as AlertBox_default } from "./AlertBox-CexONPhA.js";
6
+ import { D as SectionCard_default, O as DataFrame_default, T as WellPlate_default, a as GeneratedPlotlyResult_default, b as PlateEditor_default, c as downloadEndpoint, d as useEventStream, f as useSettingsEndpoint, i as GeneratedResultRenderer_default, l as pluginFormDataFromPayload, m as resolvePluginBaseUrl, n as ScheduleCalendar_default, o as createClient, p as buildEndpointUrl, t as useRackEditor, u as uploadEndpoint, v as DoseCalculator_default } from "./useRackEditor-Bmtuo0aj.js";
7
+ import { A as controlValuesToComponentBindingsById, C as usePluginWorkspace, D as useControlSchema, E as getControlDefaults, F as getDefaultControlView, M as controlsTo, O as controlBindings, S as AppLayout_default, T as defineControls, d as useForm, f as AppTopBar_default, j as controlValuesToComponentProps, k as controlValuesToComponentBindings, l as useFormBuilder, p as providePluginIdentity, t as AppSidebar_default, u as evaluateCondition, w as defineControlComponentBindings } from "./AppSidebar-FxlF5_dI.js";
8
+ import { n as isControlModelBinding } from "./controlSchemaModel-C_XqpkgE.js";
9
+ import { i as JobsStatusTray_default, n as subscribeRealtime, r as useRealtime, t as currentPresence } from "./useRealtime-jOetF2mM.js";
10
10
  import { Fragment, Teleport, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, getCurrentScope, guardReactiveProps, mergeProps, normalizeClass, normalizeProps, normalizeStyle, onMounted, onScopeDispose, onUnmounted, openBlock, provide, reactive, readonly, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toHandlers, toValue, unref, useId, useSlots, useTemplateRef, watch, withCtx, withModifiers } from "vue";
11
11
  import { ChartColumn, Eye, FlaskConical, Pencil, RefreshCw } from "lucide-vue-next";
12
12
  //#region src/composables/useToast.ts
@@ -81,7 +81,7 @@ var _hoisted_3$4 = {
81
81
  "stroke-linejoin": "round",
82
82
  "aria-hidden": "true"
83
83
  };
84
- var _hoisted_4$4 = {
84
+ var _hoisted_4$3 = {
85
85
  key: 1,
86
86
  class: "mint-toast__icon",
87
87
  viewBox: "0 0 24 24",
@@ -92,7 +92,7 @@ var _hoisted_4$4 = {
92
92
  "stroke-linejoin": "round",
93
93
  "aria-hidden": "true"
94
94
  };
95
- var _hoisted_5$3 = {
95
+ var _hoisted_5$2 = {
96
96
  key: 2,
97
97
  class: "mint-toast__icon",
98
98
  viewBox: "0 0 24 24",
@@ -103,7 +103,7 @@ var _hoisted_5$3 = {
103
103
  "stroke-linejoin": "round",
104
104
  "aria-hidden": "true"
105
105
  };
106
- var _hoisted_6$3 = {
106
+ var _hoisted_6$2 = {
107
107
  key: 3,
108
108
  class: "mint-toast__icon",
109
109
  viewBox: "0 0 24 24",
@@ -172,7 +172,7 @@ var AppToastContainer_default = /* @__PURE__ */ defineComponent({
172
172
  cx: "12",
173
173
  cy: "12",
174
174
  r: "10"
175
- }, null, -1), createElementVNode("path", { d: "m9 12 2 2 4-4" }, null, -1)])])) : toast.type === "error" ? (openBlock(), createElementBlock("svg", _hoisted_4$4, [..._cache[1] || (_cache[1] = [
175
+ }, null, -1), createElementVNode("path", { d: "m9 12 2 2 4-4" }, null, -1)])])) : toast.type === "error" ? (openBlock(), createElementBlock("svg", _hoisted_4$3, [..._cache[1] || (_cache[1] = [
176
176
  createElementVNode("circle", {
177
177
  cx: "12",
178
178
  cy: "12",
@@ -180,11 +180,11 @@ var AppToastContainer_default = /* @__PURE__ */ defineComponent({
180
180
  }, null, -1),
181
181
  createElementVNode("path", { d: "m15 9-6 6" }, null, -1),
182
182
  createElementVNode("path", { d: "m9 9 6 6" }, null, -1)
183
- ])])) : toast.type === "warning" ? (openBlock(), createElementBlock("svg", _hoisted_5$3, [..._cache[2] || (_cache[2] = [
183
+ ])])) : toast.type === "warning" ? (openBlock(), createElementBlock("svg", _hoisted_5$2, [..._cache[2] || (_cache[2] = [
184
184
  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),
185
185
  createElementVNode("path", { d: "M12 9v4" }, null, -1),
186
186
  createElementVNode("path", { d: "M12 17h.01" }, null, -1)
187
- ])])) : (openBlock(), createElementBlock("svg", _hoisted_6$3, [..._cache[3] || (_cache[3] = [
187
+ ])])) : (openBlock(), createElementBlock("svg", _hoisted_6$2, [..._cache[3] || (_cache[3] = [
188
188
  createElementVNode("circle", {
189
189
  cx: "12",
190
190
  cy: "12",
@@ -1013,6 +1013,30 @@ var PluginWorkspaceView_default = /* @__PURE__ */ defineComponent({
1013
1013
  }
1014
1014
  });
1015
1015
  //#endregion
1016
+ //#region src/components/AppContainer.vue
1017
+ var AppContainer_default = /* @__PURE__ */ defineComponent({
1018
+ __name: "AppContainer",
1019
+ props: {
1020
+ scrollable: {
1021
+ type: Boolean,
1022
+ default: false
1023
+ },
1024
+ direction: {},
1025
+ gap: { default: "1rem" }
1026
+ },
1027
+ setup(__props) {
1028
+ /** Content card with optional scroll lock, or a transparent flex layout shell with configurable direction and gap. */
1029
+ const props = __props;
1030
+ const isLayout = computed(() => !!props.direction);
1031
+ return (_ctx, _cache) => {
1032
+ return openBlock(), createElementBlock("div", {
1033
+ class: normalizeClass(["mint-container", isLayout.value ? ["mint-container--layout", __props.direction === "row" ? "mint-container--row" : "mint-container--column"] : ["mint-container--card", __props.scrollable ? "mint-container--scrollable" : ""]]),
1034
+ style: normalizeStyle(isLayout.value ? { gap: __props.gap } : void 0)
1035
+ }, [renderSlot(_ctx.$slots, "default")], 6);
1036
+ };
1037
+ }
1038
+ });
1039
+ //#endregion
1016
1040
  //#region src/components/Avatar.vue?vue&type=script&setup=true&lang.ts
1017
1041
  var _hoisted_1$4 = ["aria-label"];
1018
1042
  var _hoisted_2$3 = ["src", "alt"];
@@ -1020,7 +1044,7 @@ var _hoisted_3$3 = {
1020
1044
  key: 1,
1021
1045
  class: "mint-avatar__initials"
1022
1046
  };
1023
- var _hoisted_4$3 = {
1047
+ var _hoisted_4$2 = {
1024
1048
  key: 2,
1025
1049
  class: "mint-avatar__fallback",
1026
1050
  viewBox: "0 0 24 24",
@@ -1061,7 +1085,7 @@ var Avatar_default = /* @__PURE__ */ defineComponent({
1061
1085
  src: __props.src,
1062
1086
  alt: __props.alt || __props.name || "",
1063
1087
  class: "mint-avatar__image"
1064
- }, null, 8, _hoisted_2$3)) : computedInitials.value ? (openBlock(), createElementBlock("span", _hoisted_3$3, toDisplayString(computedInitials.value), 1)) : (openBlock(), createElementBlock("svg", _hoisted_4$3, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" }, null, -1)])]))], 4), __props.status ? (openBlock(), createElementBlock("span", {
1088
+ }, null, 8, _hoisted_2$3)) : computedInitials.value ? (openBlock(), createElementBlock("span", _hoisted_3$3, toDisplayString(computedInitials.value), 1)) : (openBlock(), createElementBlock("svg", _hoisted_4$2, [..._cache[0] || (_cache[0] = [createElementVNode("path", { d: "M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" }, null, -1)])]))], 4), __props.status ? (openBlock(), createElementBlock("span", {
1065
1089
  key: 0,
1066
1090
  class: normalizeClass(["mint-avatar__status", `mint-avatar__status--${__props.status}`]),
1067
1091
  "aria-hidden": "true"
@@ -1195,21 +1219,18 @@ function humanize(value) {
1195
1219
  }
1196
1220
  //#endregion
1197
1221
  //#region src/components/GeneratedPluginView.vue?vue&type=script&setup=true&lang.ts
1198
- var _hoisted_1$3 = { class: "mint-generated-workspace" };
1199
- var _hoisted_2$2 = {
1222
+ var _hoisted_1$3 = {
1200
1223
  key: 0,
1201
1224
  class: "mint-generated-workspace__loading"
1202
1225
  };
1203
- var _hoisted_3$2 = {
1204
- key: 1,
1205
- class: "mint-generated-workspace__header"
1206
- };
1207
- var _hoisted_4$2 = { key: 0 };
1208
- var _hoisted_5$2 = {
1226
+ var _hoisted_2$2 = {
1209
1227
  class: "mint-generated-workspace__resources",
1210
1228
  "aria-label": "Job resource requirements"
1211
1229
  };
1212
- var _hoisted_6$2 = { class: "mint-generated-workspace__result" };
1230
+ var _hoisted_3$2 = {
1231
+ key: 0,
1232
+ class: "mint-generated-workspace__description"
1233
+ };
1213
1234
  //#endregion
1214
1235
  //#region src/components/GeneratedPluginView.vue
1215
1236
  var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1243,6 +1264,7 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1243
1264
  });
1244
1265
  const activeDefinitionId = ref("");
1245
1266
  const selectedJobId = ref("");
1267
+ const sidebarCollapsed = ref(false);
1246
1268
  const valuesByDefinition = reactive({});
1247
1269
  const definitions = computed(() => generated.manifest.value?.jobs ?? []);
1248
1270
  const activeDefinition = computed(() => definitions.value.find((definition) => definition.id === activeDefinitionId.value) ?? null);
@@ -1261,13 +1283,19 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1261
1283
  title: generated.manifest.value?.ui.title ?? "Analysis",
1262
1284
  subtitle: generated.manifest.value?.ui.subtitle || generated.manifest.value?.ui.description,
1263
1285
  toasts: false,
1286
+ floating: true,
1264
1287
  topBar: {
1288
+ variant: "card",
1265
1289
  pills: pillNav.value,
1290
+ themeToggle: true,
1266
1291
  settings: false,
1267
1292
  standaloneLabel: props.showStandaloneLabel ? "Standalone" : false
1268
1293
  },
1269
1294
  sidebar: {
1270
1295
  title: "Parameters",
1296
+ width: "300px",
1297
+ collapsible: true,
1298
+ collapsedWidth: "3rem",
1271
1299
  panels: panels.value,
1272
1300
  forms: forms.value
1273
1301
  },
@@ -1321,6 +1349,8 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1321
1349
  return openBlock(), createBlock(PluginWorkspaceView_default, {
1322
1350
  view: activeDefinitionId.value,
1323
1351
  "onUpdate:view": _cache[0] || (_cache[0] = ($event) => activeDefinitionId.value = $event),
1352
+ "sidebar-collapsed": sidebarCollapsed.value,
1353
+ "onUpdate:sidebarCollapsed": _cache[1] || (_cache[1] = ($event) => sidebarCollapsed.value = $event),
1324
1354
  spec: workspace.value,
1325
1355
  values: currentValues.value,
1326
1356
  "form-loading": unref(generated).isSubmitting.value,
@@ -1329,32 +1359,39 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1329
1359
  onFormSubmit: submitJob,
1330
1360
  onJobSelect: selectJob
1331
1361
  }, {
1332
- default: withCtx(() => [createElementVNode("main", _hoisted_1$3, [unref(generated).isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_2$2, [createVNode(LoadingSpinner_default, { size: "lg" }), _cache[1] || (_cache[1] = createElementVNode("span", null, "Loading analysis workspace", -1))])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
1333
- unref(generated).error.value ? (openBlock(), createBlock(AlertBox_default, {
1362
+ default: withCtx(() => [createVNode(AppContainer_default, {
1363
+ direction: "column",
1364
+ gap: "var(--mint-gutter)",
1365
+ class: "mint-generated-workspace"
1366
+ }, {
1367
+ default: withCtx(() => [unref(generated).isLoading.value ? (openBlock(), createElementBlock("div", _hoisted_1$3, [createVNode(LoadingSpinner_default, { size: "lg" }), _cache[2] || (_cache[2] = createElementVNode("span", null, "Loading analysis workspace", -1))])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [unref(generated).error.value ? (openBlock(), createBlock(AlertBox_default, {
1334
1368
  key: 0,
1335
1369
  tone: "error"
1336
1370
  }, {
1337
1371
  default: withCtx(() => [createTextVNode(toDisplayString(unref(generated).error.value), 1)]),
1338
1372
  _: 1
1339
- })) : createCommentVNode("", true),
1340
- activeDefinition.value ? (openBlock(), createElementBlock("header", _hoisted_3$2, [createElementVNode("div", null, [
1341
- _cache[2] || (_cache[2] = createElementVNode("p", { class: "mint-generated-workspace__eyebrow" }, "Analysis result", -1)),
1342
- createElementVNode("h1", null, toDisplayString(activeDefinition.value.title), 1),
1343
- activeDefinition.value.description ? (openBlock(), createElementBlock("p", _hoisted_4$2, toDisplayString(activeDefinition.value.description), 1)) : createCommentVNode("", true)
1344
- ]), createElementVNode("div", _hoisted_5$2, [createElementVNode("span", null, toDisplayString(resourceSummary(activeDefinition.value)), 1)])])) : createCommentVNode("", true),
1345
- createElementVNode("section", _hoisted_6$2, [currentResult.value ? (openBlock(), createBlock(GeneratedResultRenderer_default, {
1346
- key: 0,
1347
- result: currentResult.value
1348
- }, null, 8, ["result"])) : (openBlock(), createBlock(EmptyState_default, {
1349
- key: 1,
1350
- title: "No result yet",
1351
- description: "Set the parameters and run the analysis. Jobs continue independently if you switch tabs.",
1352
- size: "md"
1353
- }))])
1354
- ], 64))])]),
1373
+ })) : createCommentVNode("", true), createVNode(SectionCard_default, { title: activeDefinition.value?.title ?? "Result" }, createSlots({
1374
+ default: withCtx(() => [activeDefinition.value?.description ? (openBlock(), createElementBlock("p", _hoisted_3$2, toDisplayString(activeDefinition.value.description), 1)) : createCommentVNode("", true), currentResult.value ? (openBlock(), createBlock(GeneratedResultRenderer_default, {
1375
+ key: 1,
1376
+ result: currentResult.value
1377
+ }, null, 8, ["result"])) : (openBlock(), createBlock(EmptyState_default, {
1378
+ key: 2,
1379
+ title: "No result yet",
1380
+ description: "Set the parameters and run the analysis. Jobs continue independently if you switch tabs.",
1381
+ size: "md"
1382
+ }))]),
1383
+ _: 2
1384
+ }, [activeDefinition.value ? {
1385
+ name: "actions",
1386
+ fn: withCtx(() => [createElementVNode("span", _hoisted_2$2, toDisplayString(resourceSummary(activeDefinition.value)), 1)]),
1387
+ key: "0"
1388
+ } : void 0]), 1032, ["title"])], 64))]),
1389
+ _: 1
1390
+ })]),
1355
1391
  _: 1
1356
1392
  }, 8, [
1357
1393
  "view",
1394
+ "sidebar-collapsed",
1358
1395
  "spec",
1359
1396
  "values",
1360
1397
  "form-loading",
@@ -1362,7 +1399,7 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1362
1399
  ]);
1363
1400
  };
1364
1401
  }
1365
- }), [["__scopeId", "data-v-c8ff991b"]]);
1402
+ }), [["__scopeId", "data-v-90271c34"]]);
1366
1403
  //#endregion
1367
1404
  //#region src/components/internal/PlateEditorBindingInternal.vue
1368
1405
  var PlateEditorBindingInternal_default = /* @__PURE__ */ defineComponent({
@@ -1853,6 +1890,6 @@ var runtime_exports = /* @__PURE__ */ __exportAll({
1853
1890
  useSettingsEndpoint: () => useSettingsEndpoint
1854
1891
  });
1855
1892
  //#endregion
1856
- export { ComponentBindingRenderer_default as a, generatedJobFormSchema as c, PluginWorkspaceView_default as d, useControlWorkspace as f, useToast as g, AppToastContainer_default as h, RuntimeUpdateNotice_default as i, normalizeGeneratedJobInput as l, useJobCenter as m, PresenceAvatars_default as n, GeneratedPluginView_default as o, combinePluginJobSources as p, usePresence as r, generatedJobDefaults as s, runtime_exports as t, Avatar_default as u };
1893
+ export { useToast as _, ComponentBindingRenderer_default as a, generatedJobFormSchema as c, AppContainer_default as d, PluginWorkspaceView_default as f, AppToastContainer_default as g, useJobCenter as h, RuntimeUpdateNotice_default as i, normalizeGeneratedJobInput as l, combinePluginJobSources as m, PresenceAvatars_default as n, GeneratedPluginView_default as o, useControlWorkspace as p, usePresence as r, generatedJobDefaults as s, runtime_exports as t, Avatar_default as u };
1857
1894
 
1858
- //# sourceMappingURL=runtime-DrL6lKAb.js.map
1895
+ //# sourceMappingURL=runtime-DngeJtdq.js.map