@morscherlab/mint-sdk 1.4.11 → 1.4.13

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 (77) 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-DbftYDAY.js → AppSidebar-CIBehlYL.js} +16 -9
  4. package/dist/{AppSidebar-DbftYDAY.js.map → AppSidebar-CIBehlYL.js.map} +1 -1
  5. package/dist/{ExperimentPopover-BM92LlrQ.js → ExperimentPopover-CzV1--OY.js} +2 -2
  6. package/dist/{ExperimentPopover-BM92LlrQ.js.map → ExperimentPopover-CzV1--OY.js.map} +1 -1
  7. package/dist/{ExperimentSelectorModal-BOLK-Gl4.js → ExperimentSelectorModal-CUkKmgfr.js} +3 -3
  8. package/dist/{ExperimentSelectorModal-BOLK-Gl4.js.map → ExperimentSelectorModal-CUkKmgfr.js.map} +1 -1
  9. package/dist/{SegmentedControl-Dz41vAFM.js → SegmentedControl-C-sckoJZ.js} +2 -2
  10. package/dist/{SegmentedControl-Dz41vAFM.js.map → SegmentedControl-C-sckoJZ.js.map} +1 -1
  11. package/dist/{SettingsModal-CKWC1JNV.js → SettingsModal-jW7Z4i_1.js} +6 -6
  12. package/dist/{SettingsModal-CKWC1JNV.js.map → SettingsModal-jW7Z4i_1.js.map} +1 -1
  13. package/dist/composables/usePluginWorkspace.d.ts +2 -0
  14. package/dist/{controlSchemaModel-C20f-1_T.js → controlSchemaModel-C_XqpkgE.js} +2 -2
  15. package/dist/{controlSchemaModel-C20f-1_T.js.map → controlSchemaModel-C_XqpkgE.js.map} +1 -1
  16. package/dist/{data-C72M20rh.js → data-8G-U6Pb0.js} +9 -9
  17. package/dist/{data-C72M20rh.js.map → data-8G-U6Pb0.js.map} +1 -1
  18. package/dist/data.js +7 -7
  19. package/dist/index.js +16 -16
  20. package/dist/{install-DbF7ddGl.js → install-CM33AZhf.js} +14 -38
  21. package/dist/install-CM33AZhf.js.map +1 -0
  22. package/dist/install.js +1 -1
  23. package/dist/{lab-B5sKmlWF.js → lab-CPJ7n7e5.js} +37 -166
  24. package/dist/lab-CPJ7n7e5.js.map +1 -0
  25. package/dist/lab.js +4 -4
  26. package/dist/{records-CWRztE5M.js → records-BAymyHAn.js} +10 -110
  27. package/dist/records-BAymyHAn.js.map +1 -0
  28. package/dist/{runtime-OBeh3Knt.js → runtime-PntKXQ7K.js} +93 -52
  29. package/dist/runtime-PntKXQ7K.js.map +1 -0
  30. package/dist/runtime.js +6 -6
  31. package/dist/{shell-DDgF2bug.js → shell-B-woqThX.js} +4 -4
  32. package/dist/{shell-DDgF2bug.js.map → shell-B-woqThX.js.map} +1 -1
  33. package/dist/shell.js +4 -4
  34. package/dist/styles.css +61 -105
  35. package/dist/{useExperimentSamples-Cz2v3V_q.js → useExperimentSamples-DEDAKa2E.js} +3 -3
  36. package/dist/{useExperimentSamples-Cz2v3V_q.js.map → useExperimentSamples-DEDAKa2E.js.map} +1 -1
  37. package/dist/{useListReorder-C--K06el.js → useListReorder-W1bzK_bo.js} +2 -2
  38. package/dist/{useListReorder-C--K06el.js.map → useListReorder-W1bzK_bo.js.map} +1 -1
  39. package/dist/{useRackEditor-Cba_0OfI.js → useRackEditor-BWOnob3i.js} +154 -25
  40. package/dist/useRackEditor-BWOnob3i.js.map +1 -0
  41. package/dist/{useRealtime-CNQbrS01.js → useRealtime-B0u_FvEH.js} +2 -2
  42. package/dist/{useRealtime-CNQbrS01.js.map → useRealtime-B0u_FvEH.js.map} +1 -1
  43. package/dist/{useRequest-Bfsh7gIm.js → useRequest-D9-3BS-3.js} +2 -2
  44. package/dist/{useRequest-Bfsh7gIm.js.map → useRequest-D9-3BS-3.js.map} +1 -1
  45. package/package.json +1 -1
  46. package/src/__tests__/components/PluginWorkspaceView.test.ts +19 -0
  47. package/src/__tests__/styles/menusShellRefresh.test.ts +5 -0
  48. package/src/components/FileUploader.vue +3 -35
  49. package/src/components/GeneratedPluginView.vue +35 -81
  50. package/src/components/GeneratedResultRenderer.vue +2 -1
  51. package/src/components/PlotlyChart.vue +1 -1
  52. package/src/components/PluginWorkspaceView.vue +2 -1
  53. package/src/composables/usePluginWorkspace.ts +14 -3
  54. package/src/generated-ui/main.ts +3 -1
  55. package/src/styles/components/alert-box.css +1 -1
  56. package/src/styles/components/app-sidebar.css +5 -5
  57. package/src/styles/components/app-top-bar.css +2 -1
  58. package/src/styles/components/button.css +3 -3
  59. package/src/styles/components/checkbox.css +1 -1
  60. package/src/styles/components/collapsible-card.css +1 -1
  61. package/src/styles/components/confirm-dialog.css +2 -2
  62. package/src/styles/components/file-uploader.css +3 -3
  63. package/src/styles/components/icon-button.css +3 -3
  64. package/src/styles/components/loading-spinner.css +1 -1
  65. package/src/styles/components/pill.css +1 -1
  66. package/src/styles/components/plugin-icon.css +1 -1
  67. package/src/styles/components/presence-avatars.css +4 -4
  68. package/src/styles/components/progress-bar.css +1 -1
  69. package/src/styles/components/sequence-input.css +1 -1
  70. package/src/styles/components/slider.css +1 -1
  71. package/src/styles/components/toggle.css +1 -1
  72. package/src/styles/variables.css +4 -0
  73. package/dist/install-DbF7ddGl.js.map +0 -1
  74. package/dist/lab-B5sKmlWF.js.map +0 -1
  75. package/dist/records-CWRztE5M.js.map +0 -1
  76. package/dist/runtime-OBeh3Knt.js.map +0 -1
  77. package/dist/useRackEditor-Cba_0OfI.js.map +0 -1
@@ -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-C--K06el.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-Cba_0OfI.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-DbftYDAY.js";
8
- import { n as isControlModelBinding } from "./controlSchemaModel-C20f-1_T.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-BWOnob3i.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-CIBehlYL.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-B0u_FvEH.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",
@@ -932,7 +932,7 @@ var PluginWorkspaceView_default = /* @__PURE__ */ defineComponent({
932
932
  function handleJobSelect(job) {
933
933
  emit("job-select", job);
934
934
  }
935
- const { shell, sidebar, controls, handleControlValuesUpdate, handlePillSelect } = usePluginWorkspace({
935
+ const { shell, sidebar, controls, handleControlValuesUpdate, handlePillSelect, handleSidebarCollapsedUpdate } = usePluginWorkspace({
936
936
  props,
937
937
  slots,
938
938
  emit
@@ -953,10 +953,10 @@ var PluginWorkspaceView_default = /* @__PURE__ */ defineComponent({
953
953
  "jobs-done": unref(jobCenter)?.completedCount.value,
954
954
  "jobs-open": unref(jobCenter)?.isOpen.value,
955
955
  "jobs-panel-id": unref(jobCenter)?.panelId,
956
- onJobClick: _cache[2] || (_cache[2] = ($event) => unref(jobCenter)?.handleTopBarClick(handleJobSelect)),
956
+ onJobClick: _cache[1] || (_cache[1] = ($event) => unref(jobCenter)?.handleTopBarClick(handleJobSelect)),
957
957
  onPillSelect: unref(handlePillSelect),
958
- onPillOptionSelect: _cache[3] || (_cache[3] = (option, item) => emit("pill-option-select", option, item)),
959
- onSettingsValuesChange: _cache[4] || (_cache[4] = ($event) => emit("settings-values-change", $event))
958
+ onPillOptionSelect: _cache[2] || (_cache[2] = (option, item) => emit("pill-option-select", option, item)),
959
+ onSettingsValuesChange: _cache[3] || (_cache[3] = ($event) => emit("settings-values-change", $event))
960
960
  }, createSlots({
961
961
  default: withCtx(() => [
962
962
  createVNode(WorkspaceControlsInternal_default, { controls: unref(controls) }, {
@@ -988,9 +988,9 @@ var PluginWorkspaceView_default = /* @__PURE__ */ defineComponent({
988
988
  fn: withCtx((scope) => [renderSlot(_ctx.$slots, "sidebar", normalizeProps(guardReactiveProps(scope)), () => [createVNode(WorkspaceSidebarInternal_default, {
989
989
  sidebar: unref(sidebar),
990
990
  "onUpdate:values": unref(handleControlValuesUpdate),
991
- "onUpdate:collapsed": _cache[0] || (_cache[0] = ($event) => emit("update:sidebarCollapsed", $event)),
991
+ "onUpdate:collapsed": unref(handleSidebarCollapsedUpdate),
992
992
  "onUpdate:toggle": handleToggle,
993
- onSectionAction: _cache[1] || (_cache[1] = (sectionId, actionId) => emit("section-action", sectionId, actionId)),
993
+ onSectionAction: _cache[0] || (_cache[0] = (sectionId, actionId) => emit("section-action", sectionId, actionId)),
994
994
  onFormSubmit: handleFormSubmit,
995
995
  onFormCancel: handleFormCancel
996
996
  }, createSlots({ _: 2 }, [renderList(unref(sidebar).slotNames, (slotName) => {
@@ -998,7 +998,11 @@ var PluginWorkspaceView_default = /* @__PURE__ */ defineComponent({
998
998
  name: slotName,
999
999
  fn: withCtx((slotProps) => [renderSlot(_ctx.$slots, slotName, normalizeProps(guardReactiveProps(slotProps ?? {})))])
1000
1000
  };
1001
- })]), 1032, ["sidebar", "onUpdate:values"])])]),
1001
+ })]), 1032, [
1002
+ "sidebar",
1003
+ "onUpdate:values",
1004
+ "onUpdate:collapsed"
1005
+ ])])]),
1002
1006
  key: "1"
1003
1007
  } : void 0
1004
1008
  ]), 1032, [
@@ -1013,6 +1017,30 @@ var PluginWorkspaceView_default = /* @__PURE__ */ defineComponent({
1013
1017
  }
1014
1018
  });
1015
1019
  //#endregion
1020
+ //#region src/components/AppContainer.vue
1021
+ var AppContainer_default = /* @__PURE__ */ defineComponent({
1022
+ __name: "AppContainer",
1023
+ props: {
1024
+ scrollable: {
1025
+ type: Boolean,
1026
+ default: false
1027
+ },
1028
+ direction: {},
1029
+ gap: { default: "1rem" }
1030
+ },
1031
+ setup(__props) {
1032
+ /** Content card with optional scroll lock, or a transparent flex layout shell with configurable direction and gap. */
1033
+ const props = __props;
1034
+ const isLayout = computed(() => !!props.direction);
1035
+ return (_ctx, _cache) => {
1036
+ return openBlock(), createElementBlock("div", {
1037
+ 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" : ""]]),
1038
+ style: normalizeStyle(isLayout.value ? { gap: __props.gap } : void 0)
1039
+ }, [renderSlot(_ctx.$slots, "default")], 6);
1040
+ };
1041
+ }
1042
+ });
1043
+ //#endregion
1016
1044
  //#region src/components/Avatar.vue?vue&type=script&setup=true&lang.ts
1017
1045
  var _hoisted_1$4 = ["aria-label"];
1018
1046
  var _hoisted_2$3 = ["src", "alt"];
@@ -1020,7 +1048,7 @@ var _hoisted_3$3 = {
1020
1048
  key: 1,
1021
1049
  class: "mint-avatar__initials"
1022
1050
  };
1023
- var _hoisted_4$3 = {
1051
+ var _hoisted_4$2 = {
1024
1052
  key: 2,
1025
1053
  class: "mint-avatar__fallback",
1026
1054
  viewBox: "0 0 24 24",
@@ -1061,7 +1089,7 @@ var Avatar_default = /* @__PURE__ */ defineComponent({
1061
1089
  src: __props.src,
1062
1090
  alt: __props.alt || __props.name || "",
1063
1091
  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", {
1092
+ }, 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
1093
  key: 0,
1066
1094
  class: normalizeClass(["mint-avatar__status", `mint-avatar__status--${__props.status}`]),
1067
1095
  "aria-hidden": "true"
@@ -1195,21 +1223,18 @@ function humanize(value) {
1195
1223
  }
1196
1224
  //#endregion
1197
1225
  //#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 = {
1226
+ var _hoisted_1$3 = {
1200
1227
  key: 0,
1201
1228
  class: "mint-generated-workspace__loading"
1202
1229
  };
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 = {
1230
+ var _hoisted_2$2 = {
1209
1231
  class: "mint-generated-workspace__resources",
1210
1232
  "aria-label": "Job resource requirements"
1211
1233
  };
1212
- var _hoisted_6$2 = { class: "mint-generated-workspace__result" };
1234
+ var _hoisted_3$2 = {
1235
+ key: 0,
1236
+ class: "mint-generated-workspace__description"
1237
+ };
1213
1238
  //#endregion
1214
1239
  //#region src/components/GeneratedPluginView.vue
1215
1240
  var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1243,6 +1268,7 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1243
1268
  });
1244
1269
  const activeDefinitionId = ref("");
1245
1270
  const selectedJobId = ref("");
1271
+ const sidebarCollapsed = ref(false);
1246
1272
  const valuesByDefinition = reactive({});
1247
1273
  const definitions = computed(() => generated.manifest.value?.jobs ?? []);
1248
1274
  const activeDefinition = computed(() => definitions.value.find((definition) => definition.id === activeDefinitionId.value) ?? null);
@@ -1261,13 +1287,19 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1261
1287
  title: generated.manifest.value?.ui.title ?? "Analysis",
1262
1288
  subtitle: generated.manifest.value?.ui.subtitle || generated.manifest.value?.ui.description,
1263
1289
  toasts: false,
1290
+ floating: true,
1264
1291
  topBar: {
1292
+ variant: "card",
1265
1293
  pills: pillNav.value,
1294
+ themeToggle: true,
1266
1295
  settings: false,
1267
1296
  standaloneLabel: props.showStandaloneLabel ? "Standalone" : false
1268
1297
  },
1269
1298
  sidebar: {
1270
1299
  title: "Parameters",
1300
+ width: "300px",
1301
+ collapsible: true,
1302
+ collapsedWidth: "3rem",
1271
1303
  panels: panels.value,
1272
1304
  forms: forms.value
1273
1305
  },
@@ -1321,6 +1353,8 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1321
1353
  return openBlock(), createBlock(PluginWorkspaceView_default, {
1322
1354
  view: activeDefinitionId.value,
1323
1355
  "onUpdate:view": _cache[0] || (_cache[0] = ($event) => activeDefinitionId.value = $event),
1356
+ "sidebar-collapsed": sidebarCollapsed.value,
1357
+ "onUpdate:sidebarCollapsed": _cache[1] || (_cache[1] = ($event) => sidebarCollapsed.value = $event),
1324
1358
  spec: workspace.value,
1325
1359
  values: currentValues.value,
1326
1360
  "form-loading": unref(generated).isSubmitting.value,
@@ -1329,32 +1363,39 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1329
1363
  onFormSubmit: submitJob,
1330
1364
  onJobSelect: selectJob
1331
1365
  }, {
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, {
1366
+ default: withCtx(() => [createVNode(AppContainer_default, {
1367
+ direction: "column",
1368
+ gap: "var(--mint-gutter)",
1369
+ class: "mint-generated-workspace"
1370
+ }, {
1371
+ 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
1372
  key: 0,
1335
1373
  tone: "error"
1336
1374
  }, {
1337
1375
  default: withCtx(() => [createTextVNode(toDisplayString(unref(generated).error.value), 1)]),
1338
1376
  _: 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))])]),
1377
+ })) : createCommentVNode("", true), createVNode(SectionCard_default, { title: activeDefinition.value?.title ?? "Result" }, createSlots({
1378
+ default: withCtx(() => [activeDefinition.value?.description ? (openBlock(), createElementBlock("p", _hoisted_3$2, toDisplayString(activeDefinition.value.description), 1)) : createCommentVNode("", true), currentResult.value ? (openBlock(), createBlock(GeneratedResultRenderer_default, {
1379
+ key: 1,
1380
+ result: currentResult.value
1381
+ }, null, 8, ["result"])) : (openBlock(), createBlock(EmptyState_default, {
1382
+ key: 2,
1383
+ title: "No result yet",
1384
+ description: "Set the parameters and run the analysis. Jobs continue independently if you switch tabs.",
1385
+ size: "md"
1386
+ }))]),
1387
+ _: 2
1388
+ }, [activeDefinition.value ? {
1389
+ name: "actions",
1390
+ fn: withCtx(() => [createElementVNode("span", _hoisted_2$2, toDisplayString(resourceSummary(activeDefinition.value)), 1)]),
1391
+ key: "0"
1392
+ } : void 0]), 1032, ["title"])], 64))]),
1393
+ _: 1
1394
+ })]),
1355
1395
  _: 1
1356
1396
  }, 8, [
1357
1397
  "view",
1398
+ "sidebar-collapsed",
1358
1399
  "spec",
1359
1400
  "values",
1360
1401
  "form-loading",
@@ -1362,7 +1403,7 @@ var GeneratedPluginView_default = /*#__PURE__*/ _plugin_vue_export_helper_defaul
1362
1403
  ]);
1363
1404
  };
1364
1405
  }
1365
- }), [["__scopeId", "data-v-c8ff991b"]]);
1406
+ }), [["__scopeId", "data-v-90271c34"]]);
1366
1407
  //#endregion
1367
1408
  //#region src/components/internal/PlateEditorBindingInternal.vue
1368
1409
  var PlateEditorBindingInternal_default = /* @__PURE__ */ defineComponent({
@@ -1853,6 +1894,6 @@ var runtime_exports = /* @__PURE__ */ __exportAll({
1853
1894
  useSettingsEndpoint: () => useSettingsEndpoint
1854
1895
  });
1855
1896
  //#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 };
1897
+ 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
1898
 
1858
- //# sourceMappingURL=runtime-OBeh3Knt.js.map
1899
+ //# sourceMappingURL=runtime-PntKXQ7K.js.map