@morscherlab/mint-sdk 1.5.0-beta.1 → 1.5.0-beta.11
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.
- package/dist/{AlertBox-CIhqsWbN.js → AlertBox-Cai0w7gF.js} +3 -3
- package/dist/{AlertBox-CIhqsWbN.js.map → AlertBox-Cai0w7gF.js.map} +1 -1
- package/dist/{AppSidebar-BDrd7Kwn.js → AppSidebar-C-Vq5x4I.js} +410 -127
- package/dist/AppSidebar-C-Vq5x4I.js.map +1 -0
- package/dist/{ConfirmDialog-CjWoxAD1.js → ConfirmDialog-BjFsOpBe.js} +3 -3
- package/dist/ConfirmDialog-BjFsOpBe.js.map +1 -0
- package/dist/{ExperimentPopover-BM92LlrQ.js → ExperimentPopover-DYy_s0kI.js} +25 -37
- package/dist/ExperimentPopover-DYy_s0kI.js.map +1 -0
- package/dist/{ExperimentSelectorModal-LsB1ABmh.js → ExperimentSelectorModal-Bfh5bdkv.js} +37 -8
- package/dist/ExperimentSelectorModal-Bfh5bdkv.js.map +1 -0
- package/dist/{SegmentedControl-Dz41vAFM.js → SegmentedControl-B8KgyOjd.js} +2 -2
- package/dist/{SegmentedControl-Dz41vAFM.js.map → SegmentedControl-B8KgyOjd.js.map} +1 -1
- package/dist/{SettingsModal-C-MSR-bk.js → SettingsModal-DwfrD1ER.js} +7 -7
- package/dist/{SettingsModal-C-MSR-bk.js.map → SettingsModal-DwfrD1ER.js.map} +1 -1
- package/dist/__tests__/components/AppTopBarCompact.test.d.ts +1 -0
- package/dist/__tests__/components/AppTopBarCompactReset.test.d.ts +1 -0
- package/dist/__tests__/components/AutoGroupModal.experimentLoad.test.d.ts +1 -0
- package/dist/components/AppTopBar.compact.d.ts +5 -0
- package/dist/components/AppTopBar.vue.d.ts +17 -17
- package/dist/components/FormBuilder.vue.d.ts +1 -1
- package/dist/components/PluginIcon.vue.d.ts +2 -2
- package/dist/components/PluginWorkspaceView.vue.d.ts +4 -0
- package/dist/components/SectionCard.vue.d.ts +13 -1
- package/dist/components/SettingsModal.vue.d.ts +1 -1
- package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -2
- package/dist/components/internal/FormSchemaInternal.vue.d.ts +9 -9
- package/dist/components/internal/FormSectionRenderer.vue.d.ts +4 -4
- package/dist/components/internal/LucideIconInternal.vue.d.ts +17 -0
- package/dist/composables/appLayoutSidebar.d.ts +9 -0
- package/dist/composables/useExperimentSelector.d.ts +2 -0
- package/dist/composables/useOnboarding.d.ts +1 -1
- package/dist/composables/usePluginWorkspace.d.ts +2 -0
- package/dist/composables/useVersionedSave.d.ts +5 -2
- package/dist/{controlSchemaModel-BbXbMgc6.js → controlSchemaModel-BtFNZj8t.js} +2 -2
- package/dist/{controlSchemaModel-BbXbMgc6.js.map → controlSchemaModel-BtFNZj8t.js.map} +1 -1
- package/dist/{data-LzdkEZJ-.js → data-CJztFns8.js} +31 -15
- package/dist/{data-LzdkEZJ-.js.map → data-CJztFns8.js.map} +1 -1
- package/dist/data.js +8 -8
- package/dist/{experimentStatus-DCn2QKG7.js → experimentStatus-Deokk7Br.js} +2 -2
- package/dist/{experimentStatus-DCn2QKG7.js.map → experimentStatus-Deokk7Br.js.map} +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +15 -20
- package/dist/index.js.map +1 -1
- package/dist/{install-UTqrAgHe.js → install-Bk02tJ5M.js} +15 -40
- package/dist/install-Bk02tJ5M.js.map +1 -0
- package/dist/install.js +1 -1
- package/dist/{lab-CbdDLAVr.js → lab-BYhb_cJI.js} +47 -117
- package/dist/lab-BYhb_cJI.js.map +1 -0
- package/dist/lab.js +4 -4
- package/dist/{records-CWRztE5M.js → records-GtiVMlTQ.js} +207 -171
- package/dist/records-GtiVMlTQ.js.map +1 -0
- package/dist/{runtime-DrL6lKAb.js → runtime-aZPUPxoB.js} +112 -54
- package/dist/runtime-aZPUPxoB.js.map +1 -0
- package/dist/runtime.js +6 -6
- package/dist/{shell-Ch7cJnjo.js → shell-Bk9mD4Lc.js} +5 -5
- package/dist/{shell-Ch7cJnjo.js.map → shell-Bk9mD4Lc.js.map} +1 -1
- package/dist/shell.js +5 -5
- package/dist/styles.css +315 -134
- package/dist/styles.d.ts +1 -0
- package/dist/types/components.d.ts +22 -2
- package/dist/types/generated-ui.d.ts +2 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/instrument.d.ts +5 -17
- package/dist/{useDropdownState-uFIz6Yv8.js → useDropdownState-CcBzUYZ6.js} +14 -5
- package/dist/useDropdownState-CcBzUYZ6.js.map +1 -0
- package/dist/{useExperimentSamples-Cz2v3V_q.js → useExperimentSamples-CpNXvpUn.js} +3 -3
- package/dist/{useExperimentSamples-Cz2v3V_q.js.map → useExperimentSamples-CpNXvpUn.js.map} +1 -1
- package/dist/{useListReorder-QqJc1dpX.js → useListReorder-Bp4EAI2w.js} +16 -4
- package/dist/useListReorder-Bp4EAI2w.js.map +1 -0
- package/dist/{useRackEditor-BHGM1Ngz.js → useRackEditor-i2bdPUFf.js} +156 -27
- package/dist/useRackEditor-i2bdPUFf.js.map +1 -0
- package/dist/{useRealtime-CNQbrS01.js → useRealtime-BLQEjbuq.js} +3 -3
- package/dist/{useRealtime-CNQbrS01.js.map → useRealtime-BLQEjbuq.js.map} +1 -1
- package/dist/useRequest-CXyPw3eh.js +76 -0
- package/dist/useRequest-CXyPw3eh.js.map +1 -0
- package/dist/utils/deprecation.d.ts +2 -0
- package/dist/utils/lucideIcon.d.ts +4 -0
- package/package.json +7 -4
- package/src/__tests__/components/AppTopBar.test.ts +102 -20
- package/src/__tests__/components/AppTopBarCompact.test.ts +65 -0
- package/src/__tests__/components/AppTopBarCompactReset.test.ts +24 -0
- package/src/__tests__/components/AppTopBarOnboarding.test.ts +10 -0
- package/src/__tests__/components/AutoGroupModal.experimentLoad.test.ts +58 -0
- package/src/__tests__/components/BaseModal.test.ts +33 -2
- package/src/__tests__/components/ConfirmDialog.test.ts +2 -2
- package/src/__tests__/components/ExperimentPopover.test.ts +32 -0
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +16 -0
- package/src/__tests__/components/PluginWorkspaceView.test.ts +20 -1
- package/src/__tests__/components/SectionCard.test.ts +33 -0
- package/src/__tests__/components/deprecationTags.test.ts +4 -18
- package/src/__tests__/composables/useJobCenter.test.ts +35 -0
- package/src/__tests__/composables/useJobsEndpoint.test.ts +50 -0
- package/src/__tests__/composables/useOnboarding.test.ts +2 -2
- package/src/__tests__/composables/useVersionedSave.test.ts +71 -6
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +3 -3
- package/src/__tests__/styles/menusShellRefresh.test.ts +10 -0
- package/src/components/AppLayout.story.vue +5 -5
- package/src/components/AppLayout.vue +13 -1
- package/src/components/AppSidebar.vue +2 -2
- package/src/components/AppTopBar.compact.ts +60 -0
- package/src/components/AppTopBar.story.vue +39 -14
- package/src/components/AppTopBar.vue +222 -89
- package/src/components/BaseModal.vue +16 -5
- package/src/components/CollapsibleCard.vue +1 -1
- package/src/components/ConfirmDialog.vue +1 -1
- package/src/components/ExperimentPopover.story.vue +2 -2
- package/src/components/ExperimentPopover.vue +6 -22
- package/src/components/ExperimentSelectorModal.vue +35 -0
- package/src/components/FileUploader.vue +3 -35
- package/src/components/GeneratedPluginView.vue +34 -81
- package/src/components/GeneratedResultRenderer.vue +2 -1
- package/src/components/InstrumentStatusPanels.vue +3 -3
- package/src/components/PlotlyChart.vue +1 -1
- package/src/components/PluginIcon.story.vue +2 -2
- package/src/components/PluginIcon.vue +2 -2
- package/src/components/PluginWorkspaceView.vue +10 -1
- package/src/components/SectionCard.vue +42 -6
- package/src/components/internal/AppTopBarOnboardingInternal.vue +30 -14
- package/src/components/internal/AppTopBarPageSelectorInternal.vue +12 -0
- package/src/components/internal/AutoGroupModalInternal.vue +14 -3
- package/src/components/internal/LucideIconInternal.vue +23 -0
- package/src/composables/appLayoutSidebar.ts +11 -0
- package/src/composables/index.ts +1 -2
- package/src/composables/useExperimentSelector.ts +4 -0
- package/src/composables/useJobCenter.ts +21 -1
- package/src/composables/useJobsEndpoint.ts +15 -4
- package/src/composables/useOnboarding.ts +3 -3
- package/src/composables/usePluginWorkspace.ts +15 -4
- package/src/composables/useVersionedSave.ts +32 -7
- package/src/generated-ui/main.ts +3 -1
- package/src/index.ts +0 -3
- package/src/styles/components/alert-box.css +1 -1
- package/src/styles/components/app-layout.css +5 -0
- package/src/styles/components/app-sidebar.css +5 -5
- package/src/styles/components/app-top-bar.css +130 -9
- package/src/styles/components/button.css +3 -3
- package/src/styles/components/checkbox.css +1 -1
- package/src/styles/components/collapsible-card.css +1 -1
- package/src/styles/components/confirm-dialog.css +2 -2
- package/src/styles/components/file-uploader.css +3 -3
- package/src/styles/components/icon-button.css +3 -3
- package/src/styles/components/loading-spinner.css +1 -1
- package/src/styles/components/onboarding.css +39 -0
- package/src/styles/components/pill.css +1 -1
- package/src/styles/components/plugin-icon.css +2 -2
- package/src/styles/components/presence-avatars.css +4 -4
- package/src/styles/components/progress-bar.css +1 -1
- package/src/styles/components/section-card.css +65 -6
- package/src/styles/components/sequence-input.css +1 -1
- package/src/styles/components/slider.css +1 -1
- package/src/styles/components/toggle.css +1 -1
- package/src/styles/variables.css +10 -4
- package/src/types/components.ts +23 -2
- package/src/types/generated-ui.ts +2 -0
- package/src/types/index.ts +1 -1
- package/src/types/instrument.ts +5 -18
- package/src/utils/deprecation.ts +8 -0
- package/src/utils/lucideIcon.ts +25 -0
- package/src/utils/lucideIconIndex.d.ts +2 -0
- package/dist/AppSidebar-BDrd7Kwn.js.map +0 -1
- package/dist/ConfirmDialog-CjWoxAD1.js.map +0 -1
- package/dist/ExperimentPopover-BM92LlrQ.js.map +0 -1
- package/dist/ExperimentSelectorModal-LsB1ABmh.js.map +0 -1
- package/dist/deprecatedRootExports.d.ts +0 -191
- package/dist/install-UTqrAgHe.js.map +0 -1
- package/dist/lab-CbdDLAVr.js.map +0 -1
- package/dist/records-CWRztE5M.js.map +0 -1
- package/dist/runtime-DrL6lKAb.js.map +0 -1
- package/dist/useDropdownState-uFIz6Yv8.js.map +0 -1
- package/dist/useListReorder-QqJc1dpX.js.map +0 -1
- package/dist/useRackEditor-BHGM1Ngz.js.map +0 -1
- package/dist/useRequest-Bfsh7gIm.js +0 -215
- package/dist/useRequest-Bfsh7gIm.js.map +0 -1
- package/src/deprecatedRootExports.ts +0 -226
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as BaseButton_default, i as useEventListener, t as useDropdownState } from "./useDropdownState-
|
|
1
|
+
import { a as BaseButton_default, i as useEventListener, t as useDropdownState } from "./useDropdownState-CcBzUYZ6.js";
|
|
2
2
|
import { n as integrationHost, u as useSettingsStore } from "./experiment-DyO54FQB.js";
|
|
3
|
-
import {
|
|
4
|
-
import { F as applySpecDefaults, M as usePlatform, _ as getTypeDefault, a as StepWizard_default, c as normalizeControls, d as numericValue, g as getFieldRegistryEntry, l as normalizeOption, o as defaultValueForControl, p as orderedUnique, u as humanize } from "./useListReorder-
|
|
5
|
-
import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineAsyncComponent, defineComponent, guardReactiveProps, inject, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, provide, reactive, readonly, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, toValue, unref, useId, useSlots, useTemplateRef, vShow, watch, withCtx, withDirectives, withModifiers } from "vue";
|
|
6
|
-
import { Check, CircleAlert, CircleCheck, CircleHelp, CircleX, ListChecks, LoaderCircle, Moon, Play, Sun, X } from "lucide-vue-next";
|
|
3
|
+
import { B as BaseCheckbox_default, D as useMenuKeyboard, L as FormField_default, T as ActionMenu_default, _ as APP_EXPERIMENT_KEY, t as isRecord } from "./records-GtiVMlTQ.js";
|
|
4
|
+
import { F as applySpecDefaults, M as usePlatform, _ as getTypeDefault, a as StepWizard_default, c as normalizeControls, d as numericValue, g as getFieldRegistryEntry, l as normalizeOption, o as defaultValueForControl, p as orderedUnique, u as humanize } from "./useListReorder-Bp4EAI2w.js";
|
|
5
|
+
import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineAsyncComponent, defineComponent, guardReactiveProps, inject, mergeProps, nextTick, normalizeClass, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, provide, reactive, readonly, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, toValue, unref, useId, useSlots, useTemplateRef, vShow, watch, watchEffect, withCtx, withDirectives, withModifiers } from "vue";
|
|
6
|
+
import { Check, CircleAlert, CircleCheck, CircleHelp, CircleX, Ellipsis, ListChecks, LoaderCircle, Menu, Moon, Play, Sun, X } from "lucide-vue-next";
|
|
7
7
|
import { autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
|
|
8
8
|
//#region src/composables/useTheme.ts
|
|
9
9
|
/** Reads and toggles the active theme (light/dark/system) with reactivity to OS preference changes. */
|
|
@@ -81,16 +81,16 @@ var _hoisted_11$6 = {
|
|
|
81
81
|
};
|
|
82
82
|
var _hoisted_12$5 = ["d"];
|
|
83
83
|
var _hoisted_13$5 = ["d"];
|
|
84
|
-
var _hoisted_14$
|
|
84
|
+
var _hoisted_14$4 = {
|
|
85
85
|
key: 1,
|
|
86
86
|
class: "mint-collapsible-card__action-text-icon"
|
|
87
87
|
};
|
|
88
|
-
var _hoisted_15$
|
|
88
|
+
var _hoisted_15$4 = [
|
|
89
89
|
"disabled",
|
|
90
90
|
"aria-label",
|
|
91
91
|
"aria-expanded"
|
|
92
92
|
];
|
|
93
|
-
var _hoisted_16$
|
|
93
|
+
var _hoisted_16$3 = { class: "mint-collapsible-card__body" };
|
|
94
94
|
var _hoisted_17$2 = { class: "mint-collapsible-card__content" };
|
|
95
95
|
//#endregion
|
|
96
96
|
//#region src/components/CollapsibleCard.vue
|
|
@@ -100,7 +100,7 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
|
|
|
100
100
|
title: {},
|
|
101
101
|
subtitle: {},
|
|
102
102
|
badge: { default: void 0 },
|
|
103
|
-
badgeTone: { default: "
|
|
103
|
+
badgeTone: { default: "primary" },
|
|
104
104
|
defaultOpen: {
|
|
105
105
|
type: Boolean,
|
|
106
106
|
default: false
|
|
@@ -216,7 +216,7 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
|
|
|
216
216
|
}), 128)) : (openBlock(), createElementBlock("path", {
|
|
217
217
|
key: 1,
|
|
218
218
|
d: action.icon
|
|
219
|
-
}, null, 8, _hoisted_13$5))])) : action.icon ? (openBlock(), createElementBlock("span", _hoisted_14$
|
|
219
|
+
}, null, 8, _hoisted_13$5))])) : action.icon ? (openBlock(), createElementBlock("span", _hoisted_14$4, toDisplayString(action.icon), 1)) : createCommentVNode("", true)], 14, _hoisted_10$6);
|
|
220
220
|
}), 128)),
|
|
221
221
|
__props.showToggle ? (openBlock(), createElementBlock("div", {
|
|
222
222
|
key: 1,
|
|
@@ -245,9 +245,9 @@ var CollapsibleCard_default = /* @__PURE__ */ defineComponent({
|
|
|
245
245
|
"stroke-linejoin": "round",
|
|
246
246
|
viewBox: "0 0 24 24",
|
|
247
247
|
"aria-hidden": "true"
|
|
248
|
-
}, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 8, _hoisted_15$
|
|
248
|
+
}, [..._cache[2] || (_cache[2] = [createElementVNode("path", { d: "m6 9 6 6 6-6" }, null, -1)])], 2))], 8, _hoisted_15$4)
|
|
249
249
|
])]), createVNode(Transition, { name: "collapse" }, {
|
|
250
|
-
default: withCtx(() => [withDirectives(createElementVNode("div", _hoisted_16$
|
|
250
|
+
default: withCtx(() => [withDirectives(createElementVNode("div", _hoisted_16$3, [createElementVNode("div", _hoisted_17$2, [renderSlot(_ctx.$slots, "default")])], 512), [[vShow, isOpen.value]])]),
|
|
251
251
|
_: 3
|
|
252
252
|
})], 2);
|
|
253
253
|
};
|
|
@@ -763,7 +763,6 @@ function usePluginWorkspace(options) {
|
|
|
763
763
|
const { props, slots, emit } = options;
|
|
764
764
|
const sidebarSpec = computed(() => props.spec?.sidebar ?? {});
|
|
765
765
|
const topBarSpec = computed(() => props.spec?.topBar === false ? false : applySpecDefaults({
|
|
766
|
-
themeToggle: true,
|
|
767
766
|
settings: {},
|
|
768
767
|
standaloneLabel: false
|
|
769
768
|
}, props.spec?.topBar));
|
|
@@ -787,6 +786,12 @@ function usePluginWorkspace(options) {
|
|
|
787
786
|
});
|
|
788
787
|
const topBarSlotNames = computed(() => getPluginWorkspaceTopBarSlotNames(slots));
|
|
789
788
|
const sidebarSlotNames = computed(() => getPluginWorkspaceSidebarSlotNames(slots));
|
|
789
|
+
const internalCollapsed = ref(false);
|
|
790
|
+
const sidebarCollapsed = computed(() => props.sidebarCollapsed ?? internalCollapsed.value);
|
|
791
|
+
function handleSidebarCollapsedUpdate(value) {
|
|
792
|
+
internalCollapsed.value = value;
|
|
793
|
+
emit("update:sidebarCollapsed", value);
|
|
794
|
+
}
|
|
790
795
|
const hasSidebarSurface = computed(() => hasPluginWorkspaceSidebarSurface({
|
|
791
796
|
sidebar: sidebarSpec.value,
|
|
792
797
|
hasSidebarSlot: Boolean(slots.sidebar),
|
|
@@ -806,7 +811,7 @@ function usePluginWorkspace(options) {
|
|
|
806
811
|
const sidebar = sidebarSpec.value === false ? {} : sidebarSpec.value;
|
|
807
812
|
return {
|
|
808
813
|
sidebarPosition: sidebar.position ?? "left",
|
|
809
|
-
sidebarWidth: sidebar.width,
|
|
814
|
+
sidebarWidth: sidebarCollapsed.value ? sidebar.collapsedWidth ?? "3rem" : sidebar.width,
|
|
810
815
|
floating: props.spec?.floating ?? true,
|
|
811
816
|
responsiveSidebar: sidebar.responsive ?? true,
|
|
812
817
|
sidebarToggleLabel: sidebar.toggleLabel ?? "Open workspace sidebar",
|
|
@@ -834,7 +839,7 @@ function usePluginWorkspace(options) {
|
|
|
834
839
|
},
|
|
835
840
|
activeView: navigationState.resolvedActiveView.value,
|
|
836
841
|
values: controlsState.internalControlValues,
|
|
837
|
-
collapsed:
|
|
842
|
+
collapsed: sidebarCollapsed.value,
|
|
838
843
|
formLoading: props.formLoading ?? false,
|
|
839
844
|
formDisabled: props.formDisabled ?? false,
|
|
840
845
|
formReadonly: props.formReadonly ?? false,
|
|
@@ -844,10 +849,23 @@ function usePluginWorkspace(options) {
|
|
|
844
849
|
controls,
|
|
845
850
|
hasSidebarSurface,
|
|
846
851
|
handleControlValuesUpdate: controlsState.handleControlValuesUpdate,
|
|
847
|
-
handlePillSelect: navigationState.handlePillSelect
|
|
852
|
+
handlePillSelect: navigationState.handlePillSelect,
|
|
853
|
+
handleSidebarCollapsedUpdate
|
|
848
854
|
};
|
|
849
855
|
}
|
|
850
856
|
//#endregion
|
|
857
|
+
//#region src/utils/deprecation.ts
|
|
858
|
+
var warned = /* @__PURE__ */ new Set();
|
|
859
|
+
/** Warn once per page load that a deprecated SDK option or slot is in use. */
|
|
860
|
+
function warnDeprecatedOnce(key, message) {
|
|
861
|
+
if (warned.has(key)) return;
|
|
862
|
+
warned.add(key);
|
|
863
|
+
console.warn(`[mint-sdk] ${message}`);
|
|
864
|
+
}
|
|
865
|
+
//#endregion
|
|
866
|
+
//#region src/composables/appLayoutSidebar.ts
|
|
867
|
+
var APP_LAYOUT_SIDEBAR_KEY = Symbol("mint-app-layout-sidebar");
|
|
868
|
+
//#endregion
|
|
851
869
|
//#region src/components/AppLayout.vue?vue&type=script&setup=true&lang.ts
|
|
852
870
|
var _hoisted_1$11 = {
|
|
853
871
|
key: 0,
|
|
@@ -930,6 +948,7 @@ var AppLayout_default = /* @__PURE__ */ defineComponent({
|
|
|
930
948
|
*/
|
|
931
949
|
const props = __props;
|
|
932
950
|
const emit = __emit;
|
|
951
|
+
const slots = useSlots();
|
|
933
952
|
const internalSidebarOpen = ref(props.defaultSidebarOpen);
|
|
934
953
|
const sidebarOpenModel = computed({
|
|
935
954
|
get: () => props.sidebarOpen ?? internalSidebarOpen.value,
|
|
@@ -951,6 +970,12 @@ var AppLayout_default = /* @__PURE__ */ defineComponent({
|
|
|
951
970
|
function toggleSidebar() {
|
|
952
971
|
sidebarOpenModel.value = !sidebarOpenModel.value;
|
|
953
972
|
}
|
|
973
|
+
if (props.responsiveSidebar && slots.sidebar) provide(APP_LAYOUT_SIDEBAR_KEY, {
|
|
974
|
+
open: computed(() => sidebarOpenModel.value),
|
|
975
|
+
toggle: toggleSidebar,
|
|
976
|
+
openLabel: computed(() => props.sidebarToggleLabel),
|
|
977
|
+
closeLabel: computed(() => props.sidebarCloseLabel)
|
|
978
|
+
});
|
|
954
979
|
function closeSidebar() {
|
|
955
980
|
sidebarOpenModel.value = false;
|
|
956
981
|
}
|
|
@@ -980,6 +1005,51 @@ var AppLayout_default = /* @__PURE__ */ defineComponent({
|
|
|
980
1005
|
}
|
|
981
1006
|
});
|
|
982
1007
|
//#endregion
|
|
1008
|
+
//#region src/utils/lucideIcon.ts
|
|
1009
|
+
/** A Lucide icon name in kebab case, such as `activity` or `flask-conical`. */
|
|
1010
|
+
var LUCIDE_NAME = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
|
|
1011
|
+
function isLucideIconName(value) {
|
|
1012
|
+
return !!value && LUCIDE_NAME.test(value);
|
|
1013
|
+
}
|
|
1014
|
+
function pascalCase(name) {
|
|
1015
|
+
return name.replace(/(^|-)([a-z0-9])/g, (_, __, char) => char.toUpperCase());
|
|
1016
|
+
}
|
|
1017
|
+
var iconSet;
|
|
1018
|
+
/** The Lucide component for `name`, or undefined when Lucide has no such icon. */
|
|
1019
|
+
async function loadLucideIcon(name) {
|
|
1020
|
+
iconSet ??= import("lucide-vue-next/dist/esm/icons/index.js");
|
|
1021
|
+
return (await iconSet)[pascalCase(name)];
|
|
1022
|
+
}
|
|
1023
|
+
//#endregion
|
|
1024
|
+
//#region src/components/internal/LucideIconInternal.vue
|
|
1025
|
+
var LucideIconInternal_default = /* @__PURE__ */ defineComponent({
|
|
1026
|
+
__name: "LucideIconInternal",
|
|
1027
|
+
props: {
|
|
1028
|
+
name: {},
|
|
1029
|
+
size: {}
|
|
1030
|
+
},
|
|
1031
|
+
setup(__props) {
|
|
1032
|
+
/** Internal: renders a Lucide icon by name; shows `fallback` until it loads or when the name is unknown. */
|
|
1033
|
+
const props = __props;
|
|
1034
|
+
const icon = shallowRef();
|
|
1035
|
+
watchEffect(async (onCleanup) => {
|
|
1036
|
+
let stale = false;
|
|
1037
|
+
onCleanup(() => {
|
|
1038
|
+
stale = true;
|
|
1039
|
+
});
|
|
1040
|
+
const loaded = await loadLucideIcon(props.name);
|
|
1041
|
+
if (!stale) icon.value = loaded;
|
|
1042
|
+
});
|
|
1043
|
+
return (_ctx, _cache) => {
|
|
1044
|
+
return icon.value ? (openBlock(), createBlock(resolveDynamicComponent(icon.value), {
|
|
1045
|
+
key: 0,
|
|
1046
|
+
size: __props.size ?? 14,
|
|
1047
|
+
"aria-hidden": "true"
|
|
1048
|
+
}, null, 8, ["size"])) : renderSlot(_ctx.$slots, "fallback", {}, void 0, void 0, 1);
|
|
1049
|
+
};
|
|
1050
|
+
}
|
|
1051
|
+
});
|
|
1052
|
+
//#endregion
|
|
983
1053
|
//#region src/utils/items.ts
|
|
984
1054
|
function normalizeItemInput(item) {
|
|
985
1055
|
if (typeof item === "object") return item;
|
|
@@ -1374,31 +1444,33 @@ var _hoisted_1$8 = {
|
|
|
1374
1444
|
};
|
|
1375
1445
|
var _hoisted_2$6 = { class: "mint-page-selector__plugin" };
|
|
1376
1446
|
var _hoisted_3$6 = ["aria-expanded"];
|
|
1377
|
-
var _hoisted_4$6 = {
|
|
1378
|
-
|
|
1447
|
+
var _hoisted_4$6 = { class: "mint-page-selector__icon-fallback" };
|
|
1448
|
+
var _hoisted_5$6 = {
|
|
1449
|
+
key: 2,
|
|
1379
1450
|
class: "mint-page-selector__icon-fallback"
|
|
1380
1451
|
};
|
|
1381
|
-
var
|
|
1382
|
-
var
|
|
1452
|
+
var _hoisted_6$5 = { class: "mint-page-selector__label" };
|
|
1453
|
+
var _hoisted_7$5 = {
|
|
1383
1454
|
class: "mint-page-selector__chevron-wrap",
|
|
1384
1455
|
"aria-hidden": "true"
|
|
1385
1456
|
};
|
|
1386
|
-
var
|
|
1387
|
-
var
|
|
1457
|
+
var _hoisted_8$5 = ["aria-label"];
|
|
1458
|
+
var _hoisted_9$5 = {
|
|
1388
1459
|
class: "mint-page-selector__menu-title",
|
|
1389
1460
|
"aria-hidden": "true"
|
|
1390
1461
|
};
|
|
1391
|
-
var
|
|
1392
|
-
|
|
1462
|
+
var _hoisted_10$5 = { class: "mint-page-selector__icon-fallback" };
|
|
1463
|
+
var _hoisted_11$5 = {
|
|
1464
|
+
key: 2,
|
|
1393
1465
|
class: "mint-page-selector__icon-fallback"
|
|
1394
1466
|
};
|
|
1395
|
-
var
|
|
1396
|
-
var
|
|
1397
|
-
var
|
|
1467
|
+
var _hoisted_12$4 = { class: "mint-page-selector__item-text" };
|
|
1468
|
+
var _hoisted_13$4 = { class: "mint-page-selector__item-label" };
|
|
1469
|
+
var _hoisted_14$3 = {
|
|
1398
1470
|
key: 0,
|
|
1399
1471
|
class: "mint-page-selector__item-hint"
|
|
1400
1472
|
};
|
|
1401
|
-
var
|
|
1473
|
+
var _hoisted_15$3 = {
|
|
1402
1474
|
key: 0,
|
|
1403
1475
|
class: "mint-page-selector__item-key",
|
|
1404
1476
|
"aria-hidden": "true"
|
|
@@ -1503,9 +1575,15 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
1503
1575
|
icon: current.value.icon,
|
|
1504
1576
|
size: "sm",
|
|
1505
1577
|
variant: "solid"
|
|
1506
|
-
}, null, 8, ["icon"])) : (
|
|
1507
|
-
|
|
1508
|
-
|
|
1578
|
+
}, null, 8, ["icon"])) : unref(isLucideIconName)(current.value.icon) ? (openBlock(), createBlock(LucideIconInternal_default, {
|
|
1579
|
+
key: 1,
|
|
1580
|
+
name: current.value.icon
|
|
1581
|
+
}, {
|
|
1582
|
+
fallback: withCtx(() => [createElementVNode("span", _hoisted_4$6, toDisplayString(current.value.label.charAt(0)), 1)]),
|
|
1583
|
+
_: 1
|
|
1584
|
+
}, 8, ["name"])) : (openBlock(), createElementBlock("span", _hoisted_5$6, toDisplayString(current.value.label.charAt(0)), 1))])], 2)) : createCommentVNode("", true),
|
|
1585
|
+
createElementVNode("span", _hoisted_6$5, toDisplayString(current.value?.label ?? __props.placeholder), 1),
|
|
1586
|
+
createElementVNode("span", _hoisted_7$5, [(openBlock(), createElementBlock("svg", {
|
|
1509
1587
|
class: normalizeClass(["mint-page-selector__chevron", { "mint-page-selector__chevron--open": unref(isOpen) }]),
|
|
1510
1588
|
viewBox: "0 0 24 24",
|
|
1511
1589
|
fill: "none",
|
|
@@ -1521,7 +1599,7 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
1521
1599
|
role: "menu",
|
|
1522
1600
|
"aria-label": menuTitle.value,
|
|
1523
1601
|
onKeydown: handleMenuKeydown
|
|
1524
|
-
}, [createElementVNode("div",
|
|
1602
|
+
}, [createElementVNode("div", _hoisted_9$5, toDisplayString(menuTitle.value), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(normalizedPages.value, (page, index) => {
|
|
1525
1603
|
return openBlock(), createBlock(ActionItemInternal_default, {
|
|
1526
1604
|
key: page.id,
|
|
1527
1605
|
href: page.href,
|
|
@@ -1544,9 +1622,15 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
1544
1622
|
icon: page.icon,
|
|
1545
1623
|
size: "sm",
|
|
1546
1624
|
variant: "solid"
|
|
1547
|
-
}, null, 8, ["icon"])) : (
|
|
1548
|
-
|
|
1549
|
-
|
|
1625
|
+
}, null, 8, ["icon"])) : unref(isLucideIconName)(page.icon) ? (openBlock(), createBlock(LucideIconInternal_default, {
|
|
1626
|
+
key: 1,
|
|
1627
|
+
name: page.icon
|
|
1628
|
+
}, {
|
|
1629
|
+
fallback: withCtx(() => [createElementVNode("span", _hoisted_10$5, toDisplayString(page.label.charAt(0)), 1)]),
|
|
1630
|
+
_: 2
|
|
1631
|
+
}, 1032, ["name"])) : (openBlock(), createElementBlock("span", _hoisted_11$5, toDisplayString(page.label.charAt(0)), 1))])], 2),
|
|
1632
|
+
createElementVNode("span", _hoisted_12$4, [createElementVNode("span", _hoisted_13$4, toDisplayString(page.label), 1), page.hint ? (openBlock(), createElementBlock("span", _hoisted_14$3, toDisplayString(page.hint), 1)) : createCommentVNode("", true)]),
|
|
1633
|
+
index < 9 ? (openBlock(), createElementBlock("span", _hoisted_15$3, toDisplayString(index + 1), 1)) : createCommentVNode("", true)
|
|
1550
1634
|
]),
|
|
1551
1635
|
_: 2
|
|
1552
1636
|
}, 1032, [
|
|
@@ -1558,7 +1642,7 @@ var AppTopBarPageSelectorInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
1558
1642
|
"aria-keyshortcuts",
|
|
1559
1643
|
"onClick"
|
|
1560
1644
|
]);
|
|
1561
|
-
}), 128))], 40,
|
|
1645
|
+
}), 128))], 40, _hoisted_8$5)) : createCommentVNode("", true)], 4)], 512);
|
|
1562
1646
|
};
|
|
1563
1647
|
}
|
|
1564
1648
|
});
|
|
@@ -2052,31 +2136,35 @@ var OnboardingLayerInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
2052
2136
|
});
|
|
2053
2137
|
//#endregion
|
|
2054
2138
|
//#region src/components/internal/AppTopBarOnboardingInternal.vue?vue&type=script&setup=true&lang.ts
|
|
2055
|
-
var _hoisted_1$5 =
|
|
2056
|
-
|
|
2057
|
-
|
|
2139
|
+
var _hoisted_1$5 = {
|
|
2140
|
+
key: 0,
|
|
2141
|
+
class: "mint-onboarding-help__chip-group"
|
|
2142
|
+
};
|
|
2143
|
+
var _hoisted_2$3 = ["aria-expanded"];
|
|
2144
|
+
var _hoisted_3$3 = { class: "mint-onboarding-help__count" };
|
|
2145
|
+
var _hoisted_4$3 = {
|
|
2058
2146
|
class: "mint-onboarding-help__bar",
|
|
2059
2147
|
"aria-hidden": "true"
|
|
2060
2148
|
};
|
|
2061
|
-
var
|
|
2062
|
-
var
|
|
2149
|
+
var _hoisted_5$3 = ["aria-label", "aria-expanded"];
|
|
2150
|
+
var _hoisted_6$2 = {
|
|
2063
2151
|
key: 0,
|
|
2064
2152
|
class: "mint-onboarding-help__badge",
|
|
2065
2153
|
"aria-hidden": "true"
|
|
2066
2154
|
};
|
|
2067
|
-
var
|
|
2068
|
-
var
|
|
2069
|
-
var
|
|
2155
|
+
var _hoisted_7$2 = { class: "mint-onboarding-help__header" };
|
|
2156
|
+
var _hoisted_8$2 = { class: "mint-onboarding-help__count" };
|
|
2157
|
+
var _hoisted_9$2 = {
|
|
2070
2158
|
class: "mint-onboarding-help__progress",
|
|
2071
2159
|
"aria-hidden": "true"
|
|
2072
2160
|
};
|
|
2073
|
-
var
|
|
2074
|
-
var
|
|
2075
|
-
var
|
|
2076
|
-
var _hoisted_12$2 = ["onClick"];
|
|
2161
|
+
var _hoisted_10$2 = { class: "mint-onboarding-help__todos" };
|
|
2162
|
+
var _hoisted_11$2 = ["aria-label"];
|
|
2163
|
+
var _hoisted_12$2 = { class: "mint-onboarding-help__todo-title" };
|
|
2077
2164
|
var _hoisted_13$2 = ["onClick"];
|
|
2078
2165
|
var _hoisted_14$2 = ["onClick"];
|
|
2079
|
-
var _hoisted_15$2 =
|
|
2166
|
+
var _hoisted_15$2 = ["onClick"];
|
|
2167
|
+
var _hoisted_16$2 = {
|
|
2080
2168
|
key: 0,
|
|
2081
2169
|
class: "mint-onboarding-help__new"
|
|
2082
2170
|
};
|
|
@@ -2130,6 +2218,10 @@ var AppTopBarOnboardingInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
2130
2218
|
});
|
|
2131
2219
|
});
|
|
2132
2220
|
onBeforeUnmount(() => stopAutoUpdate?.());
|
|
2221
|
+
function hideChecklist() {
|
|
2222
|
+
props.state.setChecklistHidden(true);
|
|
2223
|
+
nextTick(() => helpButton.value?.focus());
|
|
2224
|
+
}
|
|
2133
2225
|
function run(action) {
|
|
2134
2226
|
open.value = false;
|
|
2135
2227
|
action();
|
|
@@ -2148,8 +2240,7 @@ var AppTopBarOnboardingInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
2148
2240
|
ref: root,
|
|
2149
2241
|
class: "mint-onboarding-help"
|
|
2150
2242
|
}, [
|
|
2151
|
-
__props.state.checklistVisible.value ? (openBlock(), createElementBlock("button", {
|
|
2152
|
-
key: 0,
|
|
2243
|
+
__props.state.checklistVisible.value ? (openBlock(), createElementBlock("span", _hoisted_1$5, [createElementVNode("button", {
|
|
2153
2244
|
type: "button",
|
|
2154
2245
|
class: normalizeClass(["mint-onboarding-help__chip", { "mint-onboarding-help__chip--open": open.value }]),
|
|
2155
2246
|
"data-onboarding": "topbar-checklist",
|
|
@@ -2157,9 +2248,18 @@ var AppTopBarOnboardingInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
2157
2248
|
onClick: toggle
|
|
2158
2249
|
}, [
|
|
2159
2250
|
_cache[1] || (_cache[1] = createTextVNode(" Getting started ", -1)),
|
|
2160
|
-
createElementVNode("span",
|
|
2161
|
-
createElementVNode("span",
|
|
2162
|
-
], 10,
|
|
2251
|
+
createElementVNode("span", _hoisted_3$3, toDisplayString(__props.state.tasksDone.value) + "/" + toDisplayString(__props.state.tasks.value.length), 1),
|
|
2252
|
+
createElementVNode("span", _hoisted_4$3, [createElementVNode("span", { style: normalizeStyle({ width: `${progress.value}%` }) }, null, 4)])
|
|
2253
|
+
], 10, _hoisted_2$3), createElementVNode("button", {
|
|
2254
|
+
type: "button",
|
|
2255
|
+
class: "mint-onboarding-help__chip-close",
|
|
2256
|
+
"aria-label": "Hide checklist",
|
|
2257
|
+
title: "Hide checklist (Help can show it again)",
|
|
2258
|
+
onClick: hideChecklist
|
|
2259
|
+
}, [createVNode(unref(X), {
|
|
2260
|
+
size: 12,
|
|
2261
|
+
"aria-hidden": "true"
|
|
2262
|
+
})])])) : createCommentVNode("", true),
|
|
2163
2263
|
createElementVNode("button", {
|
|
2164
2264
|
ref_key: "helpButton",
|
|
2165
2265
|
ref: helpButton,
|
|
@@ -2172,7 +2272,7 @@ var AppTopBarOnboardingInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
2172
2272
|
}, [createVNode(unref(CircleHelp), {
|
|
2173
2273
|
class: "mint-topbar__settings-icon",
|
|
2174
2274
|
"aria-hidden": "true"
|
|
2175
|
-
}), __props.state.unseenNews.value ? (openBlock(), createElementBlock("span",
|
|
2275
|
+
}), __props.state.unseenNews.value ? (openBlock(), createElementBlock("span", _hoisted_6$2, toDisplayString(__props.state.unseenNews.value), 1)) : createCommentVNode("", true)], 10, _hoisted_5$3),
|
|
2176
2276
|
(openBlock(), createBlock(Teleport, { to: "body" }, [open.value ? (openBlock(), createElementBlock("div", {
|
|
2177
2277
|
key: 0,
|
|
2178
2278
|
ref_key: "panel",
|
|
@@ -2186,9 +2286,9 @@ var AppTopBarOnboardingInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
2186
2286
|
})
|
|
2187
2287
|
}, [
|
|
2188
2288
|
__props.state.tasks.value.length ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
|
|
2189
|
-
createElementVNode("div",
|
|
2190
|
-
createElementVNode("div",
|
|
2191
|
-
createElementVNode("ul",
|
|
2289
|
+
createElementVNode("div", _hoisted_7$2, [_cache[2] || (_cache[2] = createElementVNode("span", { class: "mint-onboarding-help__heading" }, "Getting started", -1)), createElementVNode("span", _hoisted_8$2, toDisplayString(__props.state.tasksDone.value) + "/" + toDisplayString(__props.state.tasks.value.length), 1)]),
|
|
2290
|
+
createElementVNode("div", _hoisted_9$2, [createElementVNode("span", { style: normalizeStyle({ width: `${progress.value}%` }) }, null, 4)]),
|
|
2291
|
+
createElementVNode("ul", _hoisted_10$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.state.tasks.value, (task) => {
|
|
2192
2292
|
return openBlock(), createElementBlock("li", {
|
|
2193
2293
|
key: task.id,
|
|
2194
2294
|
class: normalizeClass(["mint-onboarding-help__todo", { "mint-onboarding-help__todo--done": task.done }])
|
|
@@ -2202,14 +2302,14 @@ var AppTopBarOnboardingInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
2202
2302
|
size: 10,
|
|
2203
2303
|
"stroke-width": 3,
|
|
2204
2304
|
"aria-hidden": "true"
|
|
2205
|
-
})) : createCommentVNode("", true)], 8,
|
|
2206
|
-
createElementVNode("span",
|
|
2305
|
+
})) : createCommentVNode("", true)], 8, _hoisted_11$2),
|
|
2306
|
+
createElementVNode("span", _hoisted_12$2, toDisplayString(task.title), 1),
|
|
2207
2307
|
task.action && !task.done ? (openBlock(), createElementBlock("button", {
|
|
2208
2308
|
key: 0,
|
|
2209
2309
|
type: "button",
|
|
2210
2310
|
class: "mint-onboarding-help__link",
|
|
2211
2311
|
onClick: ($event) => run(task.action.run)
|
|
2212
|
-
}, toDisplayString(task.action.label), 9,
|
|
2312
|
+
}, toDisplayString(task.action.label), 9, _hoisted_13$2)) : createCommentVNode("", true)
|
|
2213
2313
|
], 2);
|
|
2214
2314
|
}), 128))]),
|
|
2215
2315
|
__props.state.tasksDone.value < __props.state.tasks.value.length ? (openBlock(), createElementBlock("button", {
|
|
@@ -2228,7 +2328,7 @@ var AppTopBarOnboardingInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
2228
2328
|
}, [createVNode(unref(Play), {
|
|
2229
2329
|
class: "mint-onboarding-help__icon",
|
|
2230
2330
|
"aria-hidden": "true"
|
|
2231
|
-
}), createTextVNode(" " + toDisplayString(tour.title), 1)], 8,
|
|
2331
|
+
}), createTextVNode(" " + toDisplayString(tour.title), 1)], 8, _hoisted_14$2);
|
|
2232
2332
|
}), 128))], 64)) : createCommentVNode("", true),
|
|
2233
2333
|
__props.state.news.value.length ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [_cache[4] || (_cache[4] = createElementVNode("div", { class: "mint-onboarding-help__section" }, "What's new", -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.state.news.value, (item) => {
|
|
2234
2334
|
return openBlock(), createElementBlock("button", {
|
|
@@ -2236,7 +2336,7 @@ var AppTopBarOnboardingInternal_default = /* @__PURE__ */ defineComponent({
|
|
|
2236
2336
|
type: "button",
|
|
2237
2337
|
class: "mint-menu-item",
|
|
2238
2338
|
onClick: ($event) => run(() => __props.state.showNews(item.id))
|
|
2239
|
-
}, [createTextVNode(toDisplayString(item.title) + " ", 1), item.unseen ? (openBlock(), createElementBlock("span",
|
|
2339
|
+
}, [createTextVNode(toDisplayString(item.title) + " ", 1), item.unseen ? (openBlock(), createElementBlock("span", _hoisted_16$2, "New")) : createCommentVNode("", true)], 8, _hoisted_15$2);
|
|
2240
2340
|
}), 128))], 64)) : createCommentVNode("", true)
|
|
2241
2341
|
], 4)) : createCommentVNode("", true)]))
|
|
2242
2342
|
], 512)) : createCommentVNode("", true), createVNode(OnboardingLayerInternal_default, { state: __props.state }, null, 8, ["state"])], 64);
|
|
@@ -2493,8 +2593,7 @@ function provideOnboarding(definition, options) {
|
|
|
2493
2593
|
}
|
|
2494
2594
|
function dismiss() {
|
|
2495
2595
|
autoStartAbort?.abort();
|
|
2496
|
-
|
|
2497
|
-
if (tour) markSeen(...tour.steps.map((step) => stepKey(tour, step)));
|
|
2596
|
+
if (run?.tour) markSeen(...(definition.tours ?? []).flatMap((tour) => tour.steps.map((step) => stepKey(tour, step))));
|
|
2498
2597
|
stop();
|
|
2499
2598
|
}
|
|
2500
2599
|
function complete(taskId) {
|
|
@@ -2632,9 +2731,53 @@ function trackTopBarForToasts(el) {
|
|
|
2632
2731
|
};
|
|
2633
2732
|
}
|
|
2634
2733
|
//#endregion
|
|
2734
|
+
//#region src/components/AppTopBar.compact.ts
|
|
2735
|
+
var CHIP_MIN_PX = 192;
|
|
2736
|
+
var LABELS = ".mint-experiment-popover__save-label, .mint-topbar__job-label";
|
|
2737
|
+
/** Identity text that truncates when the left side is squeezed. */
|
|
2738
|
+
var IDENTITY_TEXT = ".mint-page-selector__plugin, .mint-page-selector__label, .mint-topbar__plugin-name, .mint-topbar-title, .mint-topbar__title-only";
|
|
2739
|
+
function overflows(el) {
|
|
2740
|
+
return !!el && el.scrollWidth > el.clientWidth + 1;
|
|
2741
|
+
}
|
|
2742
|
+
function trackTopBarCompact(header, compact) {
|
|
2743
|
+
if (typeof ResizeObserver === "undefined") return {
|
|
2744
|
+
reset: () => {},
|
|
2745
|
+
stop: () => {}
|
|
2746
|
+
};
|
|
2747
|
+
let expandAt = 0;
|
|
2748
|
+
function check() {
|
|
2749
|
+
const width = header.clientWidth;
|
|
2750
|
+
if (compact.value) {
|
|
2751
|
+
if (width >= expandAt) compact.value = false;
|
|
2752
|
+
return;
|
|
2753
|
+
}
|
|
2754
|
+
const chip = header.querySelector(".mint-experiment-popover__trigger");
|
|
2755
|
+
if (!(chip && chip.getBoundingClientRect().width < CHIP_MIN_PX && overflows(chip.querySelector(".mint-experiment-popover__trigger-text")) || [...header.querySelectorAll(IDENTITY_TEXT)].some(overflows) || overflows(header.querySelector(".mint-topbar__center")) || overflows(header.querySelector(".mint-topbar__context")))) return;
|
|
2756
|
+
const labelsWidth = [...header.querySelectorAll(LABELS)].reduce((sum, el) => sum + el.getBoundingClientRect().width, 0);
|
|
2757
|
+
if (labelsWidth === 0) return;
|
|
2758
|
+
expandAt = width + labelsWidth;
|
|
2759
|
+
compact.value = true;
|
|
2760
|
+
}
|
|
2761
|
+
const observer = new ResizeObserver(check);
|
|
2762
|
+
function observe() {
|
|
2763
|
+
observer.disconnect();
|
|
2764
|
+
observer.observe(header);
|
|
2765
|
+
for (const el of header.querySelectorAll(".mint-topbar__center, .mint-topbar__context")) observer.observe(el);
|
|
2766
|
+
}
|
|
2767
|
+
observe();
|
|
2768
|
+
return {
|
|
2769
|
+
reset: () => {
|
|
2770
|
+
compact.value = false;
|
|
2771
|
+
expandAt = 0;
|
|
2772
|
+
requestAnimationFrame(observe);
|
|
2773
|
+
},
|
|
2774
|
+
stop: () => observer.disconnect()
|
|
2775
|
+
};
|
|
2776
|
+
}
|
|
2777
|
+
//#endregion
|
|
2635
2778
|
//#region src/components/AppTopBar.vue?vue&type=script&setup=true&lang.ts
|
|
2636
|
-
var _hoisted_1$4 = { class: "mint-
|
|
2637
|
-
var _hoisted_2$2 =
|
|
2779
|
+
var _hoisted_1$4 = { class: "mint-topbar__start" };
|
|
2780
|
+
var _hoisted_2$2 = ["aria-label", "aria-expanded"];
|
|
2638
2781
|
var _hoisted_3$2 = { class: "mint-topbar__brand" };
|
|
2639
2782
|
var _hoisted_4$2 = ["href"];
|
|
2640
2783
|
var _hoisted_5$2 = {
|
|
@@ -2662,7 +2805,7 @@ var _hoisted_10$1 = {
|
|
|
2662
2805
|
class: "mint-topbar__logo"
|
|
2663
2806
|
};
|
|
2664
2807
|
var _hoisted_11$1 = {
|
|
2665
|
-
key:
|
|
2808
|
+
key: 1,
|
|
2666
2809
|
class: "mint-topbar__plugin-identity"
|
|
2667
2810
|
};
|
|
2668
2811
|
var _hoisted_12$1 = { class: "mint-topbar__plugin-name" };
|
|
@@ -2671,13 +2814,13 @@ var _hoisted_13$1 = {
|
|
|
2671
2814
|
class: "mint-topbar__plugin-subtitle"
|
|
2672
2815
|
};
|
|
2673
2816
|
var _hoisted_14$1 = {
|
|
2674
|
-
key:
|
|
2817
|
+
key: 4,
|
|
2675
2818
|
class: "mint-topbar-title-group"
|
|
2676
2819
|
};
|
|
2677
2820
|
var _hoisted_15$1 = { class: "mint-topbar-title" };
|
|
2678
2821
|
var _hoisted_16$1 = { class: "mint-topbar-subtitle" };
|
|
2679
2822
|
var _hoisted_17$1 = {
|
|
2680
|
-
key:
|
|
2823
|
+
key: 5,
|
|
2681
2824
|
class: "mint-topbar__title-only"
|
|
2682
2825
|
};
|
|
2683
2826
|
var _hoisted_18$1 = {
|
|
@@ -2688,33 +2831,56 @@ var _hoisted_18$1 = {
|
|
|
2688
2831
|
var _hoisted_19$1 = { class: "mint-topbar__right" };
|
|
2689
2832
|
var _hoisted_20$1 = {
|
|
2690
2833
|
key: 0,
|
|
2691
|
-
class: "mint-
|
|
2834
|
+
class: "mint-topbar__context"
|
|
2692
2835
|
};
|
|
2693
2836
|
var _hoisted_21$1 = {
|
|
2837
|
+
key: 0,
|
|
2838
|
+
class: "mint-topbar__standalone-badge"
|
|
2839
|
+
};
|
|
2840
|
+
var _hoisted_22$1 = {
|
|
2694
2841
|
class: "mint-topbar__job-status",
|
|
2695
2842
|
"aria-live": "polite"
|
|
2696
2843
|
};
|
|
2697
|
-
var
|
|
2844
|
+
var _hoisted_23$1 = [
|
|
2698
2845
|
"title",
|
|
2699
2846
|
"aria-label",
|
|
2700
2847
|
"aria-expanded",
|
|
2701
2848
|
"aria-controls"
|
|
2702
2849
|
];
|
|
2703
|
-
var
|
|
2850
|
+
var _hoisted_24$1 = {
|
|
2704
2851
|
key: 0,
|
|
2705
2852
|
class: "mint-topbar__job-bar",
|
|
2706
2853
|
"aria-hidden": "true"
|
|
2707
2854
|
};
|
|
2708
|
-
var
|
|
2855
|
+
var _hoisted_25$1 = [
|
|
2709
2856
|
"aria-label",
|
|
2710
2857
|
"aria-expanded",
|
|
2711
2858
|
"aria-controls"
|
|
2712
2859
|
];
|
|
2713
|
-
var
|
|
2860
|
+
var _hoisted_26$1 = {
|
|
2714
2861
|
key: 0,
|
|
2715
2862
|
class: "mint-topbar__job-count",
|
|
2716
2863
|
"aria-hidden": "true"
|
|
2717
2864
|
};
|
|
2865
|
+
var _hoisted_27$1 = [
|
|
2866
|
+
"aria-label",
|
|
2867
|
+
"title",
|
|
2868
|
+
"disabled",
|
|
2869
|
+
"aria-busy",
|
|
2870
|
+
"data-action",
|
|
2871
|
+
"onClick"
|
|
2872
|
+
];
|
|
2873
|
+
var _hoisted_28$1 = [
|
|
2874
|
+
"aria-expanded",
|
|
2875
|
+
"onClick",
|
|
2876
|
+
"onKeydown"
|
|
2877
|
+
];
|
|
2878
|
+
var _hoisted_29$1 = {
|
|
2879
|
+
key: 4,
|
|
2880
|
+
class: "mint-topbar__legacy-actions"
|
|
2881
|
+
};
|
|
2882
|
+
var _hoisted_30$1 = { class: "mint-topbar__tail" };
|
|
2883
|
+
var MAX_VISIBLE_ACTIONS = 2;
|
|
2718
2884
|
//#endregion
|
|
2719
2885
|
//#region src/components/AppTopBar.vue
|
|
2720
2886
|
var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
@@ -2747,29 +2913,50 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2747
2913
|
* Full application top bar with brand logo, static plugin identity, page selector, centered pill nav, experiment popover, and an account slot.
|
|
2748
2914
|
*
|
|
2749
2915
|
* The `#icon` slot applies in standalone mode only; integrated branding comes from `Metadata.icon`.
|
|
2916
|
+
*
|
|
2917
|
+
* The order is fixed: identity or page selector, pills, the context group (standalone badge, run slot,
|
|
2918
|
+
* onboarding, `spec.actions`), then the tail: theme toggle, settings, `#account`. Below 1024px of bar
|
|
2919
|
+
* width the pills and the context group move to a second row. Inside a responsive AppLayout the bar
|
|
2920
|
+
* holds the sidebar drawer button.
|
|
2750
2921
|
*/
|
|
2751
2922
|
const props = __props;
|
|
2752
2923
|
const config = computed(() => applySpecDefaults({
|
|
2753
2924
|
variant: "card",
|
|
2754
2925
|
homePath: "/",
|
|
2755
2926
|
logo: true,
|
|
2756
|
-
themeToggle: false,
|
|
2757
|
-
settings: false,
|
|
2758
2927
|
standaloneLabel: "Standalone"
|
|
2759
2928
|
}, props.spec));
|
|
2760
|
-
const settingsConfig = computed(() => toValue(config.value.settings) ||
|
|
2761
|
-
|
|
2762
|
-
const
|
|
2763
|
-
const
|
|
2764
|
-
const
|
|
2929
|
+
const settingsConfig = computed(() => toValue(config.value.settings) || {});
|
|
2930
|
+
/** Plugin buttons: two show, the rest fold into the More menu. */
|
|
2931
|
+
const visibleActions = computed(() => (config.value.actions ?? []).slice(0, MAX_VISIBLE_ACTIONS));
|
|
2932
|
+
const overflowActions = computed(() => (config.value.actions ?? []).slice(MAX_VISIBLE_ACTIONS));
|
|
2933
|
+
const overflowMenuItems = computed(() => overflowActions.value.map(({ id, label, disabled, loading }) => ({
|
|
2934
|
+
id,
|
|
2935
|
+
label,
|
|
2936
|
+
disabled: disabled || loading
|
|
2937
|
+
})));
|
|
2938
|
+
function selectOverflowAction(item) {
|
|
2939
|
+
overflowActions.value.find((action) => action.id === item.id)?.onSelect();
|
|
2940
|
+
}
|
|
2941
|
+
const drawer = inject(APP_LAYOUT_SIDEBAR_KEY, null);
|
|
2942
|
+
const SettingsModal = defineAsyncComponent(() => import("./SettingsModal-DwfrD1ER.js").then((n) => n.n));
|
|
2943
|
+
const ExperimentPopover = defineAsyncComponent(() => import("./ExperimentPopover-DYy_s0kI.js").then((n) => n.n));
|
|
2944
|
+
const ExperimentSelectorModal = defineAsyncComponent(() => import("./ExperimentSelectorModal-Bfh5bdkv.js").then((n) => n.n));
|
|
2765
2945
|
const emit = __emit;
|
|
2766
2946
|
const settingsOpen = ref(false);
|
|
2767
2947
|
const headerEl = ref(null);
|
|
2768
2948
|
let untrackToastOffset;
|
|
2949
|
+
const compact = ref(false);
|
|
2950
|
+
let compactTracker;
|
|
2769
2951
|
onMounted(() => {
|
|
2770
|
-
if (headerEl.value)
|
|
2952
|
+
if (!headerEl.value) return;
|
|
2953
|
+
untrackToastOffset = trackTopBarForToasts(headerEl.value);
|
|
2954
|
+
compactTracker = trackTopBarCompact(headerEl.value, compact);
|
|
2955
|
+
});
|
|
2956
|
+
onBeforeUnmount(() => {
|
|
2957
|
+
untrackToastOffset?.();
|
|
2958
|
+
compactTracker?.stop();
|
|
2771
2959
|
});
|
|
2772
|
-
onBeforeUnmount(() => untrackToastOffset?.());
|
|
2773
2960
|
const { integrated: isIntegrated, plugin } = usePlatform();
|
|
2774
2961
|
const isStandalone = computed(() => !isIntegrated.value);
|
|
2775
2962
|
const appExperiment = inject(APP_EXPERIMENT_KEY, null);
|
|
@@ -2807,6 +2994,14 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2807
2994
|
cancelled: CircleX
|
|
2808
2995
|
};
|
|
2809
2996
|
const slots = useSlots();
|
|
2997
|
+
if (props.spec.themeToggle !== void 0) warnDeprecatedOnce("topbar.themeToggle", "AppTopBar spec.themeToggle is ignored: the theme toggle always shows. Remove it; it is removed in 2.0.");
|
|
2998
|
+
for (const name of [
|
|
2999
|
+
"nav",
|
|
3000
|
+
"center",
|
|
3001
|
+
"actions",
|
|
3002
|
+
"page-selector-icon",
|
|
3003
|
+
"page-selector-item-icon"
|
|
3004
|
+
]) if (slots[name]) warnDeprecatedOnce(`topbar.slot.${name}`, name.startsWith("page-selector") ? `AppTopBar #${name} is deprecated: give the page an icon (a Lucide name). It is removed in 2.0.` : `AppTopBar #${name} is deprecated${name === "actions" ? ": use spec.actions" : ""}. It is removed in 2.0.`);
|
|
2810
3005
|
const pluginIcon = computed(() => plugin.value?.icon || (slots.logo ? void 0 : pluginIdentity.icon));
|
|
2811
3006
|
const seeded = computed(() => isStandalone.value && !props.title && !props.subtitle);
|
|
2812
3007
|
const titleText = computed(() => props.title || (seeded.value ? pluginIdentity.name : void 0));
|
|
@@ -2825,6 +3020,17 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2825
3020
|
const pageSelectorPluginName = computed(() => isIntegrated.value ? plugin.value?.display_name || plugin.value?.name : props.title || pluginIdentity.name);
|
|
2826
3021
|
const identitySubtitle = computed(() => plugin.value?.subtitle || plugin.value?.description);
|
|
2827
3022
|
const hasPillNav = computed(() => !!config.value.pills?.length);
|
|
3023
|
+
const showStandaloneBadge = computed(() => config.value.standaloneLabel !== false && isStandalone.value);
|
|
3024
|
+
const showRunSlot = computed(() => showExperiment.value || props.job !== void 0 || runSlotJoined.value);
|
|
3025
|
+
/** The context group: standalone badge, run slot, onboarding and plugin buttons. Below 1024px it is row 2. */
|
|
3026
|
+
watch([
|
|
3027
|
+
() => config.value.actions?.map((action) => action.label).join(),
|
|
3028
|
+
() => props.job === void 0,
|
|
3029
|
+
() => props.job === null,
|
|
3030
|
+
showExperiment,
|
|
3031
|
+
() => config.value.pills?.length
|
|
3032
|
+
], () => compactTracker?.reset());
|
|
3033
|
+
const hasContext = computed(() => showStandaloneBadge.value || showRunSlot.value || !!config.value.actions?.length || !!slots.actions || !!onboarding?.enabled.value);
|
|
2828
3034
|
const hasTitleGroup = computed(() => !hasPageSelector.value && !identityName.value && !!titleText.value && !!subtitleText.value);
|
|
2829
3035
|
const hasTitleOnly = computed(() => !hasPageSelector.value && !identityName.value && !hasTitleGroup.value && !!titleText.value);
|
|
2830
3036
|
const normalizedPageSelector = computed(() => props.pageSelector?.map(normalizeItemInput) ?? []);
|
|
@@ -2840,9 +3046,24 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2840
3046
|
createElementVNode("header", {
|
|
2841
3047
|
ref_key: "headerEl",
|
|
2842
3048
|
ref: headerEl,
|
|
2843
|
-
class: normalizeClass([
|
|
2844
|
-
|
|
2845
|
-
|
|
3049
|
+
class: normalizeClass([
|
|
3050
|
+
"mint-topbar",
|
|
3051
|
+
`mint-topbar--${config.value.variant}`,
|
|
3052
|
+
{ "mint-topbar--compact": compact.value }
|
|
3053
|
+
])
|
|
3054
|
+
}, [createElementVNode("div", { class: normalizeClass(["mint-topbar__container", { "mint-topbar__container--stackable": hasPillNav.value || _ctx.$slots.center || hasContext.value }]) }, [
|
|
3055
|
+
createElementVNode("div", _hoisted_1$4, [
|
|
3056
|
+
unref(drawer) ? (openBlock(), createElementBlock("button", {
|
|
3057
|
+
key: 0,
|
|
3058
|
+
type: "button",
|
|
3059
|
+
class: "mint-topbar__icon-btn mint-topbar__sidebar-toggle",
|
|
3060
|
+
"aria-label": unref(drawer).open.value ? unref(drawer).closeLabel.value : unref(drawer).openLabel.value,
|
|
3061
|
+
"aria-expanded": unref(drawer).open.value,
|
|
3062
|
+
onClick: _cache[0] || (_cache[0] = ($event) => unref(drawer).toggle())
|
|
3063
|
+
}, [(openBlock(), createBlock(resolveDynamicComponent(unref(drawer).open.value ? unref(X) : unref(Menu)), {
|
|
3064
|
+
class: "mint-topbar__icon-btn-icon",
|
|
3065
|
+
"aria-hidden": "true"
|
|
3066
|
+
}))], 8, _hoisted_2$2)) : createCommentVNode("", true),
|
|
2846
3067
|
createElementVNode("div", _hoisted_3$2, [config.value.homePath && (config.value.homePath.startsWith("http") || config.value.homePath.startsWith("/")) ? (openBlock(), createElementBlock("a", {
|
|
2847
3068
|
key: 0,
|
|
2848
3069
|
href: config.value.homePath,
|
|
@@ -2859,7 +3080,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2859
3080
|
icon: pluginIcon.value,
|
|
2860
3081
|
size: "topbar",
|
|
2861
3082
|
variant: "solid"
|
|
2862
|
-
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_6$1, [..._cache[
|
|
3083
|
+
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_6$1, [..._cache[12] || (_cache[12] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)], void 0, 1)], void 0, 1)])) : createCommentVNode("", true)], 8, _hoisted_4$2)) : config.value.homePath ? (openBlock(), createBlock(_component_router_link, {
|
|
2863
3084
|
key: 1,
|
|
2864
3085
|
to: config.value.homePath,
|
|
2865
3086
|
class: "mint-topbar-home-link"
|
|
@@ -2876,7 +3097,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2876
3097
|
icon: pluginIcon.value,
|
|
2877
3098
|
size: "topbar",
|
|
2878
3099
|
variant: "solid"
|
|
2879
|
-
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_8$1, [..._cache[
|
|
3100
|
+
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_8$1, [..._cache[13] || (_cache[13] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)], void 0, 1)], void 0, 1)])) : createCommentVNode("", true)]),
|
|
2880
3101
|
_: 3
|
|
2881
3102
|
}, 8, ["to"])) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [unref(isIntegrated) || _ctx.$slots.icon || _ctx.$slots.logo || pluginIcon.value || config.value.logo ? (openBlock(), createElementBlock("span", _hoisted_9$1, [unref(isIntegrated) ? (openBlock(), createBlock(PluginIcon_default, {
|
|
2882
3103
|
key: 0,
|
|
@@ -2890,21 +3111,21 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2890
3111
|
icon: pluginIcon.value,
|
|
2891
3112
|
size: "topbar",
|
|
2892
3113
|
variant: "solid"
|
|
2893
|
-
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_10$1, [..._cache[
|
|
3114
|
+
}, null, 8, ["icon"])) : renderSlot(_ctx.$slots, "logo", {}, () => [config.value.logo ? (openBlock(), createElementBlock("div", _hoisted_10$1, [..._cache[14] || (_cache[14] = [createElementVNode("div", { class: "mint-topbar__logo-icon" }, [createElementVNode("span", { class: "mint-topbar__logo-text" }, "M")], -1)])])) : createCommentVNode("", true)], void 0, 1)], void 0, 1)])) : createCommentVNode("", true)], 64))]),
|
|
2894
3115
|
identityName.value ? (openBlock(), createElementBlock("span", _hoisted_11$1, [createElementVNode("span", _hoisted_12$1, toDisplayString(identityName.value), 1), identitySubtitle.value ? (openBlock(), createElementBlock("span", _hoisted_13$1, toDisplayString(identitySubtitle.value), 1)) : createCommentVNode("", true)])) : createCommentVNode("", true),
|
|
2895
3116
|
hasPlatformPageSelector.value ? (openBlock(), createElementBlock("span", {
|
|
2896
|
-
key:
|
|
3117
|
+
key: 2,
|
|
2897
3118
|
ref_key: "platformPageSelectorEl",
|
|
2898
3119
|
ref: platformPageSelectorEl,
|
|
2899
3120
|
class: "mint-topbar__platform-page-selector",
|
|
2900
3121
|
"data-onboarding": "topbar-page-selector"
|
|
2901
3122
|
}, null, 512)) : hasPropPageSelector.value ? (openBlock(), createBlock(AppTopBarPageSelectorInternal_default, {
|
|
2902
|
-
key:
|
|
3123
|
+
key: 3,
|
|
2903
3124
|
"data-onboarding": "topbar-page-selector",
|
|
2904
3125
|
pages: normalizedPageSelector.value,
|
|
2905
3126
|
"current-page-id": __props.currentPageSelectorId,
|
|
2906
3127
|
"plugin-name": pageSelectorPluginName.value,
|
|
2907
|
-
onSelect: _cache[
|
|
3128
|
+
onSelect: _cache[1] || (_cache[1] = ($event) => emit("page-selector-select", $event))
|
|
2908
3129
|
}, createSlots({ _: 2 }, [_ctx.$slots["page-selector-icon"] ? {
|
|
2909
3130
|
name: "icon",
|
|
2910
3131
|
fn: withCtx((slotProps) => [renderSlot(_ctx.$slots, "page-selector-icon", normalizeProps(guardReactiveProps(slotProps)))]),
|
|
@@ -2926,11 +3147,11 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2926
3147
|
items: normalizedPillNav.value,
|
|
2927
3148
|
"current-item-id": __props.pill,
|
|
2928
3149
|
onSelect: handlePillSelect,
|
|
2929
|
-
onOptionSelect: _cache[
|
|
3150
|
+
onOptionSelect: _cache[2] || (_cache[2] = (option, item) => emit("pill-option-select", option, item))
|
|
2930
3151
|
}, null, 8, ["items", "current-item-id"])) : createCommentVNode("", true)])])) : createCommentVNode("", true),
|
|
2931
|
-
createElementVNode("div", _hoisted_19$1, [
|
|
2932
|
-
|
|
2933
|
-
|
|
3152
|
+
createElementVNode("div", _hoisted_19$1, [hasContext.value ? (openBlock(), createElementBlock("div", _hoisted_20$1, [
|
|
3153
|
+
showStandaloneBadge.value ? (openBlock(), createElementBlock("span", _hoisted_21$1, toDisplayString(config.value.standaloneLabel), 1)) : createCommentVNode("", true),
|
|
3154
|
+
showRunSlot.value ? (openBlock(), createElementBlock("div", {
|
|
2934
3155
|
key: 1,
|
|
2935
3156
|
class: normalizeClass(["mint-topbar__run-slot", { "mint-topbar__run-slot--joined": runSlotJoined.value }]),
|
|
2936
3157
|
"data-onboarding": "topbar-run"
|
|
@@ -2939,11 +3160,11 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2939
3160
|
...unref(appExperiment).popover.value,
|
|
2940
3161
|
showSave: false
|
|
2941
3162
|
} : unref(appExperiment).popover.value, {
|
|
2942
|
-
onSelect: _cache[
|
|
2943
|
-
onSave: _cache[
|
|
2944
|
-
onDetach: _cache[
|
|
3163
|
+
onSelect: _cache[3] || (_cache[3] = ($event) => unref(appExperiment).openModal()),
|
|
3164
|
+
onSave: _cache[4] || (_cache[4] = ($event) => unref(appExperiment).handleSave()),
|
|
3165
|
+
onDetach: _cache[5] || (_cache[5] = ($event) => unref(appExperiment).handleDetach())
|
|
2945
3166
|
}), null, 16)) : createCommentVNode("", true),
|
|
2946
|
-
createElementVNode("span",
|
|
3167
|
+
createElementVNode("span", _hoisted_22$1, toDisplayString(__props.job ? JOB_STATUS_TEXT[__props.job.status] : ""), 1),
|
|
2947
3168
|
createVNode(Transition, {
|
|
2948
3169
|
name: "mint-topbar-job",
|
|
2949
3170
|
mode: "out-in",
|
|
@@ -2959,48 +3180,110 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
2959
3180
|
"aria-label": jobName.value,
|
|
2960
3181
|
"aria-expanded": __props.jobsOpen,
|
|
2961
3182
|
"aria-controls": __props.jobsPanelId,
|
|
2962
|
-
onClick: _cache[
|
|
3183
|
+
onClick: _cache[6] || (_cache[6] = ($event) => emit("job-click"))
|
|
2963
3184
|
}, [(openBlock(), createBlock(resolveDynamicComponent(JOB_ICONS[__props.job.status]), {
|
|
2964
3185
|
class: normalizeClass(["mint-topbar__job-icon", { "mint-topbar__job-icon--spin": __props.job.status === "running" || __props.job.status === "queued" }]),
|
|
2965
3186
|
size: 14,
|
|
2966
3187
|
"aria-hidden": "true"
|
|
2967
|
-
}, null, 8, ["class"])), jobPercent.value != null ? (openBlock(), createElementBlock("span",
|
|
3188
|
+
}, null, 8, ["class"])), jobPercent.value != null ? (openBlock(), createElementBlock("span", _hoisted_24$1, [createElementVNode("span", { style: normalizeStyle({ width: `${jobPercent.value}%` }) }, null, 4)])) : createCommentVNode("", true)], 10, _hoisted_23$1)) : __props.job === null ? (openBlock(), createElementBlock("button", {
|
|
2968
3189
|
key: "idle",
|
|
2969
3190
|
type: "button",
|
|
2970
3191
|
class: "mint-topbar__job mint-topbar__job--idle",
|
|
2971
|
-
"aria-label": __props.jobsDone ? `Jobs, ${__props.jobsDone} completed` :
|
|
3192
|
+
"aria-label": __props.jobsDone ? `Jobs, ${__props.jobsDone} completed` : "Jobs",
|
|
3193
|
+
title: "Jobs",
|
|
2972
3194
|
"aria-expanded": __props.jobsOpen,
|
|
2973
3195
|
"aria-controls": __props.jobsPanelId,
|
|
2974
|
-
onClick: _cache[
|
|
3196
|
+
onClick: _cache[7] || (_cache[7] = ($event) => emit("job-click"))
|
|
2975
3197
|
}, [
|
|
2976
3198
|
createVNode(unref(ListChecks), {
|
|
2977
3199
|
class: "mint-topbar__job-icon",
|
|
2978
3200
|
size: 14,
|
|
2979
3201
|
"aria-hidden": "true"
|
|
2980
3202
|
}),
|
|
2981
|
-
_cache[
|
|
2982
|
-
__props.jobsDone ? (openBlock(), createElementBlock("span",
|
|
2983
|
-
], 8,
|
|
3203
|
+
_cache[15] || (_cache[15] = createElementVNode("span", { class: "mint-topbar__job-label" }, "Jobs", -1)),
|
|
3204
|
+
__props.jobsDone ? (openBlock(), createElementBlock("span", _hoisted_26$1, toDisplayString(__props.jobsDone), 1)) : createCommentVNode("", true)
|
|
3205
|
+
], 8, _hoisted_25$1)) : createCommentVNode("", true)]),
|
|
2984
3206
|
_: 1
|
|
2985
3207
|
})
|
|
2986
3208
|
], 2)) : createCommentVNode("", true),
|
|
2987
|
-
renderSlot(_ctx.$slots, "actions"),
|
|
2988
3209
|
unref(onboarding)?.enabled.value ? (openBlock(), createBlock(AppTopBarOnboardingInternal_default, {
|
|
2989
3210
|
key: 2,
|
|
2990
3211
|
state: unref(onboarding)
|
|
2991
3212
|
}, null, 8, ["state"])) : createCommentVNode("", true),
|
|
2992
|
-
|
|
3213
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(visibleActions.value, (action) => {
|
|
3214
|
+
return openBlock(), createElementBlock(Fragment, { key: action.id }, [action.icon ? (openBlock(), createElementBlock("button", {
|
|
3215
|
+
key: 0,
|
|
3216
|
+
type: "button",
|
|
3217
|
+
class: "mint-topbar__icon-btn",
|
|
3218
|
+
"aria-label": action.label,
|
|
3219
|
+
title: action.title ?? action.label,
|
|
3220
|
+
disabled: action.disabled || action.loading,
|
|
3221
|
+
"aria-busy": action.loading || void 0,
|
|
3222
|
+
"data-action": action.id,
|
|
3223
|
+
onClick: ($event) => action.onSelect()
|
|
3224
|
+
}, [action.loading ? (openBlock(), createBlock(unref(LoaderCircle), {
|
|
3225
|
+
key: 0,
|
|
3226
|
+
class: "mint-topbar__icon-btn-icon mint-topbar__job-icon--spin",
|
|
3227
|
+
"aria-hidden": "true"
|
|
3228
|
+
})) : (openBlock(), createBlock(LucideIconInternal_default, {
|
|
3229
|
+
key: 1,
|
|
3230
|
+
name: action.icon,
|
|
3231
|
+
size: 16
|
|
3232
|
+
}, null, 8, ["name"])), action.dot ? (openBlock(), createElementBlock("span", {
|
|
3233
|
+
key: 2,
|
|
3234
|
+
class: normalizeClass(["mint-topbar__icon-btn-dot", `mint-topbar__icon-btn-dot--${action.dot}`]),
|
|
3235
|
+
"aria-hidden": "true"
|
|
3236
|
+
}, null, 2)) : createCommentVNode("", true)], 8, _hoisted_27$1)) : (openBlock(), createBlock(BaseButton_default, {
|
|
3237
|
+
key: 1,
|
|
3238
|
+
variant: "secondary",
|
|
3239
|
+
size: "sm",
|
|
3240
|
+
title: action.title,
|
|
3241
|
+
loading: action.loading,
|
|
3242
|
+
disabled: action.disabled,
|
|
3243
|
+
"data-action": action.id,
|
|
3244
|
+
onClick: ($event) => action.onSelect()
|
|
3245
|
+
}, {
|
|
3246
|
+
default: withCtx(() => [createTextVNode(toDisplayString(action.label), 1)]),
|
|
3247
|
+
_: 2
|
|
3248
|
+
}, 1032, [
|
|
3249
|
+
"title",
|
|
3250
|
+
"loading",
|
|
3251
|
+
"disabled",
|
|
3252
|
+
"data-action",
|
|
3253
|
+
"onClick"
|
|
3254
|
+
]))], 64);
|
|
3255
|
+
}), 128)),
|
|
3256
|
+
overflowMenuItems.value.length ? (openBlock(), createBlock(ActionMenu_default, {
|
|
2993
3257
|
key: 3,
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
3258
|
+
label: "More actions",
|
|
3259
|
+
items: overflowMenuItems.value,
|
|
3260
|
+
onSelect: selectOverflowAction
|
|
3261
|
+
}, {
|
|
3262
|
+
trigger: withCtx(({ open, toggle, keydown }) => [createElementVNode("button", {
|
|
3263
|
+
type: "button",
|
|
3264
|
+
class: "mint-topbar__icon-btn",
|
|
3265
|
+
"aria-label": "More actions",
|
|
3266
|
+
title: "More actions",
|
|
3267
|
+
"aria-haspopup": "menu",
|
|
3268
|
+
"aria-expanded": open,
|
|
3269
|
+
onClick: toggle,
|
|
3270
|
+
onKeydown: keydown
|
|
3271
|
+
}, [createVNode(unref(Ellipsis), {
|
|
3272
|
+
class: "mint-topbar__icon-btn-icon",
|
|
3273
|
+
"aria-hidden": "true"
|
|
3274
|
+
})], 40, _hoisted_28$1)]),
|
|
3275
|
+
_: 1
|
|
3276
|
+
}, 8, ["items"])) : createCommentVNode("", true),
|
|
3277
|
+
_ctx.$slots.actions ? (openBlock(), createElementBlock("span", _hoisted_29$1, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true)
|
|
3278
|
+
])) : createCommentVNode("", true), createElementVNode("div", _hoisted_30$1, [
|
|
3279
|
+
createVNode(ThemeToggle_default, { size: "sm" }),
|
|
3280
|
+
createElementVNode("button", {
|
|
2998
3281
|
type: "button",
|
|
2999
3282
|
class: "mint-topbar__settings-btn",
|
|
3000
3283
|
"aria-label": "Open settings",
|
|
3001
3284
|
"data-onboarding": "topbar-settings",
|
|
3002
|
-
onClick: _cache[
|
|
3003
|
-
}, [..._cache[
|
|
3285
|
+
onClick: _cache[8] || (_cache[8] = ($event) => settingsOpen.value = true)
|
|
3286
|
+
}, [..._cache[16] || (_cache[16] = [createElementVNode("svg", {
|
|
3004
3287
|
class: "mint-topbar__settings-icon",
|
|
3005
3288
|
viewBox: "0 0 24 24",
|
|
3006
3289
|
fill: "none",
|
|
@@ -3012,14 +3295,14 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
3012
3295
|
cx: "12",
|
|
3013
3296
|
cy: "12",
|
|
3014
3297
|
r: "3"
|
|
3015
|
-
})], -1)])])
|
|
3298
|
+
})], -1)])]),
|
|
3016
3299
|
renderSlot(_ctx.$slots, "account")
|
|
3017
|
-
])
|
|
3018
|
-
])], 2),
|
|
3019
|
-
|
|
3300
|
+
])])
|
|
3301
|
+
], 2)], 2),
|
|
3302
|
+
settingsOpen.value ? (openBlock(), createBlock(unref(SettingsModal), {
|
|
3020
3303
|
key: 0,
|
|
3021
3304
|
open: settingsOpen.value,
|
|
3022
|
-
"onUpdate:open": _cache[
|
|
3305
|
+
"onUpdate:open": _cache[9] || (_cache[9] = ($event) => settingsOpen.value = $event),
|
|
3023
3306
|
title: settingsConfig.value?.title,
|
|
3024
3307
|
tabs: normalizedSettingsTabs.value,
|
|
3025
3308
|
"show-appearance": settingsConfig.value?.showAppearance ?? true,
|
|
@@ -3029,7 +3312,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
3029
3312
|
spec: settingsConfig.value?.spec,
|
|
3030
3313
|
values: settingsConfig.value?.values,
|
|
3031
3314
|
"user-type": settingsConfig.value?.userType,
|
|
3032
|
-
"onUpdate:values": _cache[
|
|
3315
|
+
"onUpdate:values": _cache[10] || (_cache[10] = ($event) => emit("settings-values-change", $event))
|
|
3033
3316
|
}, createSlots({
|
|
3034
3317
|
appearance: withCtx(() => [renderSlot(_ctx.$slots, "settings-appearance")]),
|
|
3035
3318
|
_: 2
|
|
@@ -3050,7 +3333,7 @@ var AppTopBar_default = /* @__PURE__ */ defineComponent({
|
|
|
3050
3333
|
"values",
|
|
3051
3334
|
"user-type"
|
|
3052
3335
|
])) : createCommentVNode("", true),
|
|
3053
|
-
unref(appExperiment) && !isStandalone.value && canBindExperiment.value && unref(appExperiment).selectorModal.value.open ? (openBlock(), createBlock(unref(ExperimentSelectorModal), mergeProps({ key: 1 }, unref(appExperiment).selectorModal.value, { "onUpdate:open": _cache[
|
|
3336
|
+
unref(appExperiment) && !isStandalone.value && canBindExperiment.value && unref(appExperiment).selectorModal.value.open ? (openBlock(), createBlock(unref(ExperimentSelectorModal), mergeProps({ key: 1 }, unref(appExperiment).selectorModal.value, { "onUpdate:open": _cache[11] || (_cache[11] = ($event) => $event ? unref(appExperiment).openModal() : unref(appExperiment).closeModal()) }), null, 16)) : createCommentVNode("", true)
|
|
3054
3337
|
], 64);
|
|
3055
3338
|
};
|
|
3056
3339
|
}
|
|
@@ -4333,10 +4616,10 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
|
|
|
4333
4616
|
};
|
|
4334
4617
|
}
|
|
4335
4618
|
function badgeToneClass(section) {
|
|
4336
|
-
return `mint-sidebar__rail-badge--${section.badgeTone ?? "
|
|
4619
|
+
return `mint-sidebar__rail-badge--${section.badgeTone ?? "primary"}`;
|
|
4337
4620
|
}
|
|
4338
4621
|
function tagToneClass(section) {
|
|
4339
|
-
return `mint-sidebar__tag--${section.badgeTone ?? "
|
|
4622
|
+
return `mint-sidebar__tag--${section.badgeTone ?? "primary"}`;
|
|
4340
4623
|
}
|
|
4341
4624
|
function actionClasses(action) {
|
|
4342
4625
|
return ["mint-sidebar__group-action", action.tone ? `mint-sidebar__group-action--${action.tone}` : ""];
|
|
@@ -4519,6 +4802,6 @@ var AppSidebar_default = /* @__PURE__ */ defineComponent({
|
|
|
4519
4802
|
}
|
|
4520
4803
|
});
|
|
4521
4804
|
//#endregion
|
|
4522
|
-
export {
|
|
4805
|
+
export { controlValuesToComponentBindings as A, warnDeprecatedOnce as C, getControlDefaults as D, defineControls as E, controlsToSettingsSchema as F, getDefaultControlView as I, CollapsibleCard_default as L, controlValuesToComponentProps as M, controlsTo as N, useControlSchema as O, controlsToFormSchema as P, ThemeToggle_default as R, AppLayout_default as S, defineControlComponentBindings as T, provideOnboarding as _, pickExistingRecordKeys as a, normalizeItemInput as b, valuesEqual as c, useForm as d, AppTopBar_default as f, defineOnboarding as g, ONBOARDING_KEY as h, formSchemaFieldNames as i, controlValuesToComponentBindingsById as j, controlBindings as k, useFormBuilder as l, ANCHOR_WAIT_MS as m, FormSchemaInternal_default as n, pickRecordKeys as o, providePluginIdentity as p, FormFieldRendererInternal_default as r, recordValuesEqualForKeys as s, AppSidebar_default as t, evaluateCondition as u, useOnboarding as v, usePluginWorkspace as w, normalizeLabelItemInput as x, PluginIcon_default as y, useTheme as z };
|
|
4523
4806
|
|
|
4524
|
-
//# sourceMappingURL=AppSidebar-
|
|
4807
|
+
//# sourceMappingURL=AppSidebar-C-Vq5x4I.js.map
|