@morscherlab/mint-sdk 1.4.0-beta.9 → 1.4.0
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/README.md +14 -3
- package/dist/{AlertBox-B2Bgr3ei.js → AlertBox-DwgNTEqf.js} +3 -3
- package/dist/{AlertBox-B2Bgr3ei.js.map → AlertBox-DwgNTEqf.js.map} +1 -1
- package/dist/{AppSidebar-Dq9W1jE2.js → AppSidebar-CZZaxni0.js} +1103 -144
- package/dist/AppSidebar-CZZaxni0.js.map +1 -0
- package/dist/{ConfirmDialog-nbJj51is.js → ConfirmDialog-CjWoxAD1.js} +2 -2
- package/dist/{ConfirmDialog-nbJj51is.js.map → ConfirmDialog-CjWoxAD1.js.map} +1 -1
- package/dist/{ExperimentPopover-5T1fAq2L.js → ExperimentPopover-DujiuQIO.js} +5 -5
- package/dist/{ExperimentPopover-5T1fAq2L.js.map → ExperimentPopover-DujiuQIO.js.map} +1 -1
- package/dist/{ExperimentSelectorModal-65peG4Up.js → ExperimentSelectorModal-B4j4eUOJ.js} +114 -98
- package/dist/ExperimentSelectorModal-B4j4eUOJ.js.map +1 -0
- package/dist/{SegmentedControl-BtnnjWzs.js → SegmentedControl-DyUPH3I5.js} +2 -2
- package/dist/{SegmentedControl-BtnnjWzs.js.map → SegmentedControl-DyUPH3I5.js.map} +1 -1
- package/dist/{SettingsModal-483nyI6b.js → SettingsModal-D2MOOtuO.js} +26 -25
- package/dist/SettingsModal-D2MOOtuO.js.map +1 -0
- package/dist/__stories__/experiment-helpers.d.ts +10 -0
- package/dist/__tests__/components/AppTopBarOnboarding.test.d.ts +1 -0
- package/dist/__tests__/components/FloatingPanelsInModal.test.d.ts +1 -0
- package/dist/__tests__/composables/useFloatingPanel.test.d.ts +1 -0
- package/dist/__tests__/composables/useOnboarding.test.d.ts +1 -0
- package/dist/__tests__/styles/paletteTokens.test.d.ts +1 -0
- package/dist/__tests__/styles/v2AuditRules.test.d.ts +1 -0
- package/dist/components/AppTopBar.vue.d.ts +20 -5
- package/dist/components/BaseButton.vue.d.ts +4 -2
- package/dist/components/ExperimentSelectorModal.vue.d.ts +15 -1
- package/dist/components/JobsStatusTray.vue.d.ts +15 -4
- package/dist/components/PluginWorkspaceView.props.d.ts +3 -0
- package/dist/components/PluginWorkspaceView.vue.d.ts +3 -0
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +3 -3
- package/dist/components/internal/AppTopBarOnboardingInternal.vue.d.ts +7 -0
- package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -1
- package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +2 -2
- package/dist/components/internal/OnboardingLayerInternal.vue.d.ts +7 -0
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +8 -0
- package/dist/composables/pluginWorkspaceModel.d.ts +2 -2
- package/dist/composables/useFileImport.d.ts +7 -0
- package/dist/composables/useFloatingPanel.d.ts +29 -0
- package/dist/composables/useJobCenter.d.ts +41 -3
- package/dist/composables/useOnboarding.d.ts +119 -0
- package/dist/{controlSchemaModel-B8CTXagP.js → controlSchemaModel-Bsg0t5Ab.js} +2 -2
- package/dist/{controlSchemaModel-B8CTXagP.js.map → controlSchemaModel-Bsg0t5Ab.js.map} +1 -1
- package/dist/{data-CgILxDLW.js → data-Boeh4uPI.js} +13 -12
- package/dist/{data-CgILxDLW.js.map → data-Boeh4uPI.js.map} +1 -1
- package/dist/data.d.ts +1 -1
- package/dist/data.js +9 -9
- package/dist/{experiment-43OJtH7R.js → experiment-DyO54FQB.js} +25 -61
- package/dist/experiment-DyO54FQB.js.map +1 -0
- package/dist/{experimentStatus-Cqp6qNrR.js → experimentStatus-DCn2QKG7.js} +2 -2
- package/dist/{experimentStatus-Cqp6qNrR.js.map → experimentStatus-DCn2QKG7.js.map} +1 -1
- package/dist/index.js +20 -20
- package/dist/{install-BtLWTk6H.js → install-BEHp7Mo-.js} +15 -15
- package/dist/{install-BtLWTk6H.js.map → install-BEHp7Mo-.js.map} +1 -1
- package/dist/install.js +1 -1
- package/dist/{lab-MHzp-_J8.js → lab-D61eaX6f.js} +68 -61
- package/dist/{lab-MHzp-_J8.js.map → lab-D61eaX6f.js.map} +1 -1
- package/dist/lab.js +4 -4
- package/dist/{records-B6gpM_3e.js → records-D4aQXyZu.js} +193 -133
- package/dist/records-D4aQXyZu.js.map +1 -0
- package/dist/{runtime-7vfl_bI3.js → runtime-q-R0CNLh.js} +400 -33
- package/dist/runtime-q-R0CNLh.js.map +1 -0
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.js +7 -7
- package/dist/{shell-Cs9OJMnm.js → shell-6CGFvUUw.js} +10 -5
- package/dist/{shell-Cs9OJMnm.js.map → shell-6CGFvUUw.js.map} +1 -1
- package/dist/shell.d.ts +1 -0
- package/dist/shell.js +6 -6
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/index.js +2 -2
- package/dist/stores/settings.d.ts +4 -12
- package/dist/styles.css +1191 -479
- package/dist/types/components.d.ts +2 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/jobs.d.ts +9 -0
- package/dist/types/platform.d.ts +1 -1
- package/dist/{useDropdownState-8yWMu-7_.js → useDropdownState-uFIz6Yv8.js} +16 -4
- package/dist/useDropdownState-uFIz6Yv8.js.map +1 -0
- package/dist/{useExperimentSamples-DHnxKFAF.js → useExperimentSamples-QEFoq4tf.js} +48 -6
- package/dist/useExperimentSamples-QEFoq4tf.js.map +1 -0
- package/dist/{useListReorder-BitdUhxn.js → useListReorder-DsuzwWGS.js} +122 -172
- package/dist/useListReorder-DsuzwWGS.js.map +1 -0
- package/dist/{useRackEditor-DiwCt77M.js → useRackEditor-KpZ4iJ6o.js} +22 -32
- package/dist/useRackEditor-KpZ4iJ6o.js.map +1 -0
- package/dist/useRealtime-B58Lo-Tm.js +508 -0
- package/dist/useRealtime-B58Lo-Tm.js.map +1 -0
- package/dist/{useRequest-D506eHi8.js → useRequest-BuDmW8Jc.js} +8 -37
- package/dist/useRequest-BuDmW8Jc.js.map +1 -0
- package/package.json +3 -2
- package/src/__stories__/experiment-helpers.ts +3 -3
- package/src/__tests__/components/ActionMenu.test.ts +2 -2
- package/src/__tests__/components/AppTopBar.test.ts +206 -1
- package/src/__tests__/components/AppTopBarOnboarding.test.ts +160 -0
- package/src/__tests__/components/AppTopBarPageSelector.test.ts +125 -9
- package/src/__tests__/components/BaseButton.test.ts +19 -0
- package/src/__tests__/components/BaseModal.test.ts +13 -0
- package/src/__tests__/components/ExperimentSelectorModal.test.ts +34 -1
- package/src/__tests__/components/FloatingPanelsInModal.test.ts +94 -0
- package/src/__tests__/components/GeneratedPluginView.test.ts +1 -1
- package/src/__tests__/components/JobsStatusTray.test.ts +373 -71
- package/src/__tests__/components/PluginWorkspaceView.test.ts +63 -1
- package/src/__tests__/components/SampleSelector.test.ts +20 -0
- package/src/__tests__/components/SettingsModal.test.ts +9 -2
- package/src/__tests__/composables/useFileImport.test.ts +36 -0
- package/src/__tests__/composables/useFloatingPanel.test.ts +68 -0
- package/src/__tests__/composables/useJobCenter.test.ts +262 -3
- package/src/__tests__/composables/useOnboarding.test.ts +317 -0
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +4 -3
- package/src/__tests__/fixtures/table-import/cells.xlsx +0 -0
- package/src/__tests__/fixtures/table-import/samples.xlsx +0 -0
- package/src/__tests__/stores/settings.test.ts +21 -21
- package/src/__tests__/styles/cssTokens.test.ts +4 -1
- package/src/__tests__/styles/menusShellRefresh.test.ts +8 -2
- package/src/__tests__/styles/paletteTokens.test.ts +44 -0
- package/src/__tests__/styles/v2AuditRules.test.ts +104 -0
- package/src/components/ActionMenu.vue +6 -37
- package/src/components/AppTopBar.onboarding.story.vue +69 -0
- package/src/components/AppTopBar.story.vue +59 -4
- package/src/components/AppTopBar.vue +132 -10
- package/src/components/BaseButton.vue +16 -2
- package/src/components/BaseModal.vue +2 -1
- package/src/components/ExperimentSelectorModal.story.vue +38 -0
- package/src/components/ExperimentSelectorModal.vue +20 -1
- package/src/components/GeneratedPluginView.vue +4 -9
- package/src/components/GeneratedResultRenderer.vue +3 -4
- package/src/components/JobsStatusTray.story.vue +97 -43
- package/src/components/JobsStatusTray.vue +287 -290
- package/src/components/LayoutResizeHandle.story.vue +65 -4
- package/src/components/PluginWorkspaceView.props.ts +3 -0
- package/src/components/PluginWorkspaceView.vue +17 -0
- package/src/components/SampleSelector.story.vue +21 -6
- package/src/components/SampleSelector.vue +10 -3
- package/src/components/SectionCard.story.vue +33 -0
- package/src/components/SettingsModal.vue +7 -12
- package/src/components/Tooltip.vue +9 -32
- package/src/components/internal/AppTopBarOnboardingInternal.vue +172 -0
- package/src/components/internal/AppTopBarPageSelectorInternal.vue +140 -72
- package/src/components/internal/DatePickerDateInternal.vue +7 -45
- package/src/components/internal/DatePickerDateTimeInternal.vue +7 -1
- package/src/components/internal/DatePickerTimeInternal.vue +8 -1
- package/src/components/internal/NumberUnitInputInternal.vue +4 -18
- package/src/components/internal/OnboardingLayerInternal.vue +173 -0
- package/src/components/internal/SelectMultipleInternal.vue +6 -1
- package/src/components/internal/SelectSearchableInternal.vue +6 -1
- package/src/components/internal/WellEditPopupInternal.vue +11 -22
- package/src/components/internal/WorkspaceShellInternal.vue +12 -0
- package/src/composables/pluginWorkspaceModel.ts +2 -2
- package/src/composables/useFileImport.ts +51 -1
- package/src/composables/useFloatingPanel.ts +107 -0
- package/src/composables/useJobCenter.ts +188 -6
- package/src/composables/useOnboarding.ts +465 -0
- package/src/composables/usePluginWorkspace.ts +1 -1
- package/src/data.ts +1 -0
- package/src/runtime.ts +2 -1
- package/src/shell.ts +17 -0
- package/src/stores/index.ts +0 -2
- package/src/stores/settings.ts +20 -50
- package/src/styles/components/action-menu.css +1 -1
- package/src/styles/components/app-layout.css +6 -3
- package/src/styles/components/app-page-selector.css +120 -45
- package/src/styles/components/app-top-bar.css +165 -3
- package/src/styles/components/button.css +8 -0
- package/src/styles/components/dataframe.css +1 -1
- package/src/styles/components/date-picker.css +4 -2
- package/src/styles/components/datetime-picker.css +4 -4
- package/src/styles/components/experiment-selector-modal.css +13 -0
- package/src/styles/components/jobs-status-tray.css +134 -296
- package/src/styles/components/layout-resize-handle.css +59 -16
- package/src/styles/components/modal.css +3 -3
- package/src/styles/components/number-input.css +1 -1
- package/src/styles/components/onboarding.css +368 -0
- package/src/styles/components/progress-bar.css +3 -3
- package/src/styles/components/sample-selector.css +43 -0
- package/src/styles/components/searchable-select.css +3 -7
- package/src/styles/components/section-card.css +30 -6
- package/src/styles/components/settings-modal.css +7 -2
- package/src/styles/components/time-picker.css +3 -6
- package/src/styles/components/toast.css +1 -1
- package/src/styles/components/tooltip.css +2 -2
- package/src/styles/components/unit-input.css +1 -1
- package/src/styles/components/well-edit-popup.css +2 -2
- package/src/styles/index.css +1 -0
- package/src/styles/variables.css +153 -15
- package/src/types/components.ts +2 -0
- package/src/types/index.ts +1 -0
- package/src/types/jobs.ts +10 -0
- package/src/types/platform.ts +1 -1
- package/dist/AppSidebar-Dq9W1jE2.js.map +0 -1
- package/dist/ExperimentSelectorModal-65peG4Up.js.map +0 -1
- package/dist/SettingsModal-483nyI6b.js.map +0 -1
- package/dist/experiment-43OJtH7R.js.map +0 -1
- package/dist/records-B6gpM_3e.js.map +0 -1
- package/dist/runtime-7vfl_bI3.js.map +0 -1
- package/dist/useDropdownState-8yWMu-7_.js.map +0 -1
- package/dist/useExperimentSamples-DHnxKFAF.js.map +0 -1
- package/dist/useListReorder-BitdUhxn.js.map +0 -1
- package/dist/useRackEditor-DiwCt77M.js.map +0 -1
- package/dist/useRealtime-C3iy9QkU.js +0 -699
- package/dist/useRealtime-C3iy9QkU.js.map +0 -1
- package/dist/useRequest-D506eHi8.js.map +0 -1
|
@@ -1,51 +1,76 @@
|
|
|
1
|
-
/* AppTopBar page selector —
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
(own card, tinted active row) rather than .mint-popover + .mint-menu-item. */
|
|
1
|
+
/* AppTopBar page selector — design v2 option C: "<plugin> / <page>" as one switcher.
|
|
2
|
+
The crumb holds the plugin name, a slash and the tinted 32px trigger. The menu keeps its own
|
|
3
|
+
card (not .mint-popover): a "<plugin> pages" title, then one row per page with its hint and number key. */
|
|
5
4
|
|
|
6
|
-
/* Shrinks
|
|
5
|
+
/* Shrinks with the bar: the plugin name and the page label truncate instead of overlapping the nav. */
|
|
6
|
+
.mint-page-selector__crumb {
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
gap: 0.375rem;
|
|
10
|
+
min-width: 0;
|
|
11
|
+
flex-shrink: 1;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.mint-page-selector__plugin {
|
|
15
|
+
min-width: 0;
|
|
16
|
+
font-size: 0.875rem;
|
|
17
|
+
font-weight: 600;
|
|
18
|
+
color: var(--text-primary);
|
|
19
|
+
white-space: nowrap;
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
text-overflow: ellipsis;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.mint-page-selector__slash {
|
|
25
|
+
flex-shrink: 0;
|
|
26
|
+
font-size: 1.125rem;
|
|
27
|
+
font-weight: 300;
|
|
28
|
+
line-height: 1;
|
|
29
|
+
color: var(--text-muted);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Anchors the menu under the trigger, not under the plugin name. */
|
|
7
33
|
.mint-page-selector {
|
|
8
34
|
position: relative;
|
|
9
|
-
|
|
35
|
+
display: flex;
|
|
36
|
+
min-width: 0;
|
|
10
37
|
}
|
|
11
38
|
|
|
12
39
|
.mint-page-selector__trigger {
|
|
13
40
|
display: inline-flex;
|
|
14
41
|
align-items: center;
|
|
15
|
-
gap: 0.
|
|
16
|
-
width:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
42
|
+
gap: 0.375rem;
|
|
43
|
+
min-width: 0;
|
|
44
|
+
max-width: 100%;
|
|
45
|
+
height: 2rem;
|
|
46
|
+
padding: 0 0.5rem 0 0.375rem;
|
|
47
|
+
border: 0;
|
|
48
|
+
background: var(--color-primary-soft);
|
|
21
49
|
color: var(--text-primary);
|
|
22
50
|
border-radius: var(--radius-md);
|
|
23
51
|
font-size: 0.8125rem;
|
|
24
|
-
font-weight:
|
|
52
|
+
font-weight: 600;
|
|
25
53
|
font-family: inherit;
|
|
26
54
|
cursor: pointer;
|
|
27
55
|
transition:
|
|
28
56
|
background-color var(--mint-transition),
|
|
29
|
-
border-color var(--mint-transition),
|
|
30
57
|
box-shadow var(--mint-transition);
|
|
31
58
|
}
|
|
32
59
|
|
|
33
|
-
.mint-page-selector__trigger:hover
|
|
34
|
-
background: var(--
|
|
60
|
+
.mint-page-selector__trigger:hover {
|
|
61
|
+
background: color-mix(in srgb, var(--color-primary) 16%, transparent);
|
|
35
62
|
}
|
|
36
63
|
|
|
37
|
-
.mint-page-selector__trigger:focus-visible
|
|
38
|
-
.mint-page-selector__trigger--open {
|
|
64
|
+
.mint-page-selector__trigger:focus-visible {
|
|
39
65
|
outline: none;
|
|
40
|
-
|
|
41
|
-
box-shadow: var(--focus-ring-soft);
|
|
66
|
+
box-shadow: var(--focus-ring-offset);
|
|
42
67
|
}
|
|
43
68
|
|
|
44
69
|
/* Page icon tile is neutral; the plugin carries the color. */
|
|
45
70
|
.mint-page-selector__icon {
|
|
46
71
|
width: 1.25rem;
|
|
47
72
|
height: 1.25rem;
|
|
48
|
-
border-radius: var(--radius
|
|
73
|
+
border-radius: var(--radius);
|
|
49
74
|
background: var(--bg-tertiary);
|
|
50
75
|
color: var(--text-secondary-strong);
|
|
51
76
|
display: grid;
|
|
@@ -66,7 +91,7 @@
|
|
|
66
91
|
.mint-page-selector__trigger-metadata-icon.mint-plugin-icon--sm {
|
|
67
92
|
width: 1.25rem;
|
|
68
93
|
height: 1.25rem;
|
|
69
|
-
border-radius: var(--radius
|
|
94
|
+
border-radius: var(--radius);
|
|
70
95
|
}
|
|
71
96
|
|
|
72
97
|
.mint-page-selector__icon-fallback {
|
|
@@ -76,7 +101,6 @@
|
|
|
76
101
|
}
|
|
77
102
|
|
|
78
103
|
.mint-page-selector__label {
|
|
79
|
-
flex: 1;
|
|
80
104
|
min-width: 0;
|
|
81
105
|
text-align: left;
|
|
82
106
|
white-space: nowrap;
|
|
@@ -84,7 +108,6 @@
|
|
|
84
108
|
text-overflow: ellipsis;
|
|
85
109
|
}
|
|
86
110
|
|
|
87
|
-
/* The chevron sits inline; the wrap no longer draws a tile. */
|
|
88
111
|
.mint-page-selector__chevron-wrap {
|
|
89
112
|
display: inline-flex;
|
|
90
113
|
color: var(--text-secondary);
|
|
@@ -101,38 +124,46 @@
|
|
|
101
124
|
transform: rotate(180deg);
|
|
102
125
|
}
|
|
103
126
|
|
|
127
|
+
/* max-height: 8 two-line hint rows (8 x 68px) + title (~25px) + padding (8px) = ~577px; a 9th row scrolls. A short window caps it. */
|
|
104
128
|
.mint-page-selector__menu {
|
|
105
129
|
position: absolute;
|
|
130
|
+
box-sizing: border-box;
|
|
106
131
|
top: calc(100% + 0.375rem);
|
|
107
132
|
left: 0;
|
|
108
|
-
width:
|
|
133
|
+
width: 18.75rem;
|
|
134
|
+
max-height: min(36.25rem, calc(100vh - 6rem));
|
|
135
|
+
overflow-y: auto;
|
|
109
136
|
background: var(--bg-card);
|
|
110
137
|
border: 1px solid var(--border-color);
|
|
111
138
|
border-radius: var(--radius-lg);
|
|
112
139
|
box-shadow: var(--shadow-md);
|
|
113
|
-
padding: 0.
|
|
140
|
+
padding: 0.25rem;
|
|
114
141
|
z-index: 50;
|
|
115
142
|
}
|
|
116
143
|
|
|
144
|
+
/* The mockup's 10px uppercase eyebrow breaks rules 2a (no uppercase) and 8d (UI text >= 11px): 11px, sentence case. */
|
|
117
145
|
.mint-page-selector__menu-title {
|
|
118
|
-
padding: 0.375rem 0.
|
|
119
|
-
font-
|
|
146
|
+
padding: 0.375rem 0.5rem 0.25rem;
|
|
147
|
+
font-family: var(--font-mono);
|
|
148
|
+
font-size: 0.6875rem;
|
|
120
149
|
font-weight: 500;
|
|
121
|
-
|
|
150
|
+
letter-spacing: 0.06em;
|
|
151
|
+
color: var(--text-muted);
|
|
122
152
|
}
|
|
123
153
|
|
|
124
154
|
.mint-page-selector__item {
|
|
125
155
|
display: flex;
|
|
126
|
-
|
|
156
|
+
box-sizing: border-box;
|
|
157
|
+
align-items: flex-start;
|
|
127
158
|
gap: 0.625rem;
|
|
128
159
|
width: 100%;
|
|
129
|
-
padding: 0.5rem
|
|
160
|
+
padding: 0.5rem;
|
|
130
161
|
border: 0;
|
|
131
162
|
background: transparent;
|
|
132
|
-
border-radius:
|
|
163
|
+
border-radius: var(--radius);
|
|
133
164
|
color: var(--text-primary);
|
|
134
165
|
font-size: 0.8125rem;
|
|
135
|
-
|
|
166
|
+
line-height: 1.4;
|
|
136
167
|
font-family: inherit;
|
|
137
168
|
text-align: left;
|
|
138
169
|
text-decoration: none;
|
|
@@ -140,13 +171,22 @@
|
|
|
140
171
|
transition: background-color var(--mint-transition);
|
|
141
172
|
}
|
|
142
173
|
|
|
143
|
-
|
|
174
|
+
/* A row without a hint has one line: centre it on the icon tile. */
|
|
175
|
+
.mint-page-selector__item:not(:has(.mint-page-selector__item-hint)) {
|
|
176
|
+
align-items: center;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.mint-page-selector__item:hover:not(.mint-page-selector__item--disabled):not(.mint-page-selector__item--active) {
|
|
144
180
|
background: var(--bg-hover);
|
|
145
181
|
}
|
|
146
182
|
|
|
183
|
+
.mint-page-selector__item:focus-visible {
|
|
184
|
+
outline: 2px solid var(--color-primary);
|
|
185
|
+
outline-offset: -2px;
|
|
186
|
+
}
|
|
187
|
+
|
|
147
188
|
.mint-page-selector__item--active {
|
|
148
|
-
background: var(--
|
|
149
|
-
font-weight: 600;
|
|
189
|
+
background: var(--color-primary-soft);
|
|
150
190
|
}
|
|
151
191
|
|
|
152
192
|
.mint-page-selector__item--disabled {
|
|
@@ -155,9 +195,9 @@
|
|
|
155
195
|
}
|
|
156
196
|
|
|
157
197
|
.mint-page-selector__item-icon {
|
|
158
|
-
width: 1.
|
|
159
|
-
height: 1.
|
|
160
|
-
border-radius:
|
|
198
|
+
width: 1.75rem;
|
|
199
|
+
height: 1.75rem;
|
|
200
|
+
border-radius: var(--radius-md);
|
|
161
201
|
background: var(--bg-tertiary);
|
|
162
202
|
color: var(--text-secondary);
|
|
163
203
|
display: grid;
|
|
@@ -165,6 +205,10 @@
|
|
|
165
205
|
flex-shrink: 0;
|
|
166
206
|
}
|
|
167
207
|
|
|
208
|
+
.mint-page-selector__item-icon .mint-page-selector__icon-fallback {
|
|
209
|
+
font-size: 0.8125rem;
|
|
210
|
+
}
|
|
211
|
+
|
|
168
212
|
.mint-page-selector__item--active .mint-page-selector__item-icon {
|
|
169
213
|
background: var(--color-primary-soft);
|
|
170
214
|
color: var(--color-primary);
|
|
@@ -177,24 +221,55 @@
|
|
|
177
221
|
}
|
|
178
222
|
|
|
179
223
|
.mint-page-selector__item-icon svg {
|
|
180
|
-
width: 0.
|
|
181
|
-
height: 0.
|
|
224
|
+
width: 0.9375rem;
|
|
225
|
+
height: 0.9375rem;
|
|
182
226
|
}
|
|
183
227
|
|
|
184
228
|
.mint-page-selector__metadata-icon.mint-plugin-icon--sm {
|
|
185
|
-
width: 1.
|
|
186
|
-
height: 1.
|
|
187
|
-
border-radius:
|
|
229
|
+
width: 1.75rem;
|
|
230
|
+
height: 1.75rem;
|
|
231
|
+
border-radius: var(--radius-md);
|
|
188
232
|
}
|
|
189
233
|
|
|
190
|
-
.mint-page-selector__item-
|
|
234
|
+
.mint-page-selector__item-text {
|
|
191
235
|
flex: 1;
|
|
192
236
|
min-width: 0;
|
|
237
|
+
display: grid;
|
|
238
|
+
gap: 1px;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
.mint-page-selector__item-label {
|
|
242
|
+
font-weight: 600;
|
|
193
243
|
overflow: hidden;
|
|
194
244
|
text-overflow: ellipsis;
|
|
195
245
|
white-space: nowrap;
|
|
196
246
|
}
|
|
197
247
|
|
|
248
|
+
/* --_ink-primary is --color-primary-hover in light mode and stays legible in dark mode. */
|
|
249
|
+
.mint-page-selector__item--active .mint-page-selector__item-label {
|
|
250
|
+
color: var(--_ink-primary);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.mint-page-selector__item-hint {
|
|
254
|
+
font-size: 0.75rem;
|
|
255
|
+
line-height: 1.35;
|
|
256
|
+
color: var(--text-secondary);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
/* 11px, the rule 8d floor (the mockup has 10.5px). */
|
|
260
|
+
.mint-page-selector__item-key {
|
|
261
|
+
flex-shrink: 0;
|
|
262
|
+
margin-top: 0.125rem;
|
|
263
|
+
padding: 0 0.25rem;
|
|
264
|
+
border: 1px solid var(--border-color);
|
|
265
|
+
border-radius: var(--radius);
|
|
266
|
+
font-family: var(--font-mono);
|
|
267
|
+
font-size: 0.6875rem;
|
|
268
|
+
font-weight: 500;
|
|
269
|
+
line-height: 1rem;
|
|
270
|
+
color: var(--text-muted);
|
|
271
|
+
}
|
|
272
|
+
|
|
198
273
|
@media (prefers-reduced-motion: reduce) {
|
|
199
274
|
.mint-page-selector__trigger,
|
|
200
275
|
.mint-page-selector__chevron {
|
|
@@ -110,10 +110,10 @@
|
|
|
110
110
|
padding: 0 0.375rem 0 0;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
/* Variant: card - flat floating card, inset
|
|
113
|
+
/* Variant: card - flat floating card, inset 16px from the window edge */
|
|
114
114
|
.mint-topbar--card {
|
|
115
|
-
width: calc(100% - 2 * var(--mint-
|
|
116
|
-
margin: var(--mint-
|
|
115
|
+
width: calc(100% - 2 * var(--mint-page-inset));
|
|
116
|
+
margin: var(--mint-page-inset) var(--mint-page-inset) 0;
|
|
117
117
|
padding: 0.375rem 0.5rem 0.375rem 0.625rem;
|
|
118
118
|
border-radius: var(--radius-lg);
|
|
119
119
|
border: 1px solid var(--border-color);
|
|
@@ -231,3 +231,165 @@
|
|
|
231
231
|
white-space: nowrap;
|
|
232
232
|
user-select: none;
|
|
233
233
|
}
|
|
234
|
+
|
|
235
|
+
/* ─── Run slot: [ experiment | job ] ───
|
|
236
|
+
While a job shows, one border wraps the experiment chip and the job
|
|
237
|
+
segment, as the experiment popover does for Save. The wrapper does not
|
|
238
|
+
clip: the popover panel and the focus rings reach outside it, so each
|
|
239
|
+
segment rounds its own outer corners. The idle Jobs button stands apart
|
|
240
|
+
with its own border. */
|
|
241
|
+
.mint-topbar__run-slot {
|
|
242
|
+
display: inline-flex;
|
|
243
|
+
align-items: center;
|
|
244
|
+
gap: 0.5rem;
|
|
245
|
+
min-width: 0;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.mint-topbar__run-slot--joined {
|
|
249
|
+
gap: 0;
|
|
250
|
+
border: 1px solid var(--border-color);
|
|
251
|
+
border-radius: var(--radius-md);
|
|
252
|
+
background: var(--bg-card);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
.mint-topbar__run-slot--joined .mint-experiment-popover,
|
|
256
|
+
.mint-topbar__run-slot--joined .mint-experiment-popover__trigger {
|
|
257
|
+
border: 0;
|
|
258
|
+
border-radius: calc(var(--radius-md) - 1px) 0 0 calc(var(--radius-md) - 1px);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* The job takes the name's place: the name folds away while the job grows in,
|
|
262
|
+
and the code badge stays. The name stays in the accessible name. A trigger
|
|
263
|
+
with no code, the empty placeholder and the error text keep their text. */
|
|
264
|
+
.mint-topbar__run-slot .mint-experiment-popover__trigger-text {
|
|
265
|
+
transition:
|
|
266
|
+
max-width 200ms ease,
|
|
267
|
+
opacity 150ms ease,
|
|
268
|
+
margin 200ms ease;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
.mint-topbar__run-slot--joined
|
|
272
|
+
.mint-experiment-popover__trigger:has(.mint-exp-code)
|
|
273
|
+
.mint-experiment-popover__trigger-text {
|
|
274
|
+
max-width: 0 !important; /* beats the inline maxNameWidth */
|
|
275
|
+
margin-inline-start: -0.5rem; /* takes back the trigger gap */
|
|
276
|
+
opacity: 0;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.mint-topbar__job {
|
|
280
|
+
display: inline-flex;
|
|
281
|
+
max-width: 6rem; /* close to the content (icon + bar, or "Jobs"), so the fold is even */
|
|
282
|
+
overflow: hidden;
|
|
283
|
+
align-items: center;
|
|
284
|
+
gap: 0.375rem;
|
|
285
|
+
flex-shrink: 0;
|
|
286
|
+
height: 30px;
|
|
287
|
+
padding: 0 0.625rem;
|
|
288
|
+
border: 0;
|
|
289
|
+
background: transparent;
|
|
290
|
+
color: var(--text-secondary);
|
|
291
|
+
font: inherit;
|
|
292
|
+
font-size: 0.75rem;
|
|
293
|
+
font-weight: 500;
|
|
294
|
+
white-space: nowrap;
|
|
295
|
+
cursor: pointer;
|
|
296
|
+
transition: background-color var(--mint-transition);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.mint-topbar__run-slot--joined .mint-topbar__job {
|
|
300
|
+
border-radius: calc(var(--radius-md) - 1px);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.mint-topbar__run-slot--joined .mint-experiment-popover + .mint-topbar__job {
|
|
304
|
+
border-left: 1px solid var(--border-color);
|
|
305
|
+
border-radius: 0 calc(var(--radius-md) - 1px) calc(var(--radius-md) - 1px) 0;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
.mint-topbar__job--idle {
|
|
309
|
+
height: 32px;
|
|
310
|
+
border: 1px solid var(--border-color);
|
|
311
|
+
border-radius: var(--radius-md);
|
|
312
|
+
background: var(--bg-card);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.mint-topbar__job--idle:hover,
|
|
316
|
+
.mint-topbar__job--neutral:hover {
|
|
317
|
+
background: var(--bg-hover);
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.mint-topbar__job:focus-visible {
|
|
321
|
+
outline: none;
|
|
322
|
+
box-shadow: inset var(--focus-ring);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.mint-topbar__job--primary { background: var(--color-primary-soft); color: var(--_ink-primary); }
|
|
326
|
+
.mint-topbar__job--warning { background: var(--mint-warning-bg); color: var(--mint-warning-text); }
|
|
327
|
+
.mint-topbar__job--success { background: var(--mint-success-bg); color: color-mix(in srgb, var(--mint-success) 50%, var(--text-primary)); }
|
|
328
|
+
.mint-topbar__job--error { background: var(--mint-error-bg); color: var(--_ink-error); }
|
|
329
|
+
|
|
330
|
+
.mint-topbar__job--primary:hover,
|
|
331
|
+
.mint-topbar__job--warning:hover,
|
|
332
|
+
.mint-topbar__job--success:hover,
|
|
333
|
+
.mint-topbar__job--error:hover {
|
|
334
|
+
filter: brightness(0.97);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.mint-topbar__job-icon {
|
|
338
|
+
flex-shrink: 0;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
.mint-topbar__job-count {
|
|
342
|
+
color: var(--text-muted);
|
|
343
|
+
font-family: var(--font-mono);
|
|
344
|
+
font-size: 0.6875rem;
|
|
345
|
+
font-variant-numeric: tabular-nums;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.mint-topbar__job-icon--spin {
|
|
349
|
+
animation: mint-topbar-job-spin 1s linear infinite;
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
@keyframes mint-topbar-job-spin {
|
|
353
|
+
to { transform: rotate(360deg); }
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
.mint-topbar__job-bar {
|
|
357
|
+
width: 2rem;
|
|
358
|
+
height: 4px;
|
|
359
|
+
border-radius: 2px;
|
|
360
|
+
background: var(--border-color);
|
|
361
|
+
overflow: hidden;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
.mint-topbar__job-bar > span {
|
|
365
|
+
display: block;
|
|
366
|
+
height: 100%;
|
|
367
|
+
background: var(--color-primary);
|
|
368
|
+
transition: width var(--mint-transition);
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/* Enter and leave: the job grows in from zero width and folds back out. */
|
|
372
|
+
.mint-topbar-job-enter-active,
|
|
373
|
+
.mint-topbar-job-leave-active {
|
|
374
|
+
transition:
|
|
375
|
+
max-width 200ms ease,
|
|
376
|
+
padding 200ms ease,
|
|
377
|
+
opacity 150ms ease;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.mint-topbar-job-enter-from,
|
|
381
|
+
.mint-topbar-job-leave-to {
|
|
382
|
+
max-width: 0;
|
|
383
|
+
padding-inline: 0;
|
|
384
|
+
opacity: 0;
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
/* Screen-reader only: announces status changes of the shown job. */
|
|
388
|
+
.mint-topbar__job-status {
|
|
389
|
+
position: absolute;
|
|
390
|
+
width: 1px;
|
|
391
|
+
height: 1px;
|
|
392
|
+
overflow: hidden;
|
|
393
|
+
clip-path: inset(50%);
|
|
394
|
+
white-space: nowrap;
|
|
395
|
+
}
|
|
@@ -150,6 +150,14 @@
|
|
|
150
150
|
height: 1.25rem;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
+
/* Flex centring centres the line box, and Geist's ascender puts the caps
|
|
154
|
+
about 1.6px above the middle. Trim the text box to cap height and baseline
|
|
155
|
+
so the caps sit on the centre line. Browsers without text-box keep the
|
|
156
|
+
untrimmed box. */
|
|
157
|
+
.mint-button__label {
|
|
158
|
+
text-box: trim-both cap alphabetic;
|
|
159
|
+
}
|
|
160
|
+
|
|
153
161
|
/* Spinner */
|
|
154
162
|
.mint-button__spinner {
|
|
155
163
|
animation: mint-button-spin 1s linear infinite;
|
|
@@ -130,11 +130,13 @@
|
|
|
130
130
|
height: 0.875rem;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
/* Calendar dropdown (teleported to body, positioned
|
|
133
|
+
/* Calendar dropdown (teleported to body, positioned by useFloatingPanel). */
|
|
134
134
|
.mint-date-picker__dropdown {
|
|
135
135
|
position: fixed;
|
|
136
|
-
z-index:
|
|
136
|
+
z-index: var(--mint-z-popover);
|
|
137
137
|
width: 252px;
|
|
138
|
+
max-height: var(--mint-floating-available-height, none);
|
|
139
|
+
overflow-y: auto;
|
|
138
140
|
padding: 0.5rem;
|
|
139
141
|
}
|
|
140
142
|
|
|
@@ -97,12 +97,12 @@
|
|
|
97
97
|
color: var(--text-muted);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
/* Dropdown —
|
|
100
|
+
/* Dropdown — the look is .mint-popover; useFloatingPanel sets the fixed position. */
|
|
101
101
|
.mint-datetime-picker__dropdown {
|
|
102
|
-
|
|
103
|
-
z-index: 50;
|
|
104
|
-
margin-top: 0.25rem;
|
|
102
|
+
z-index: var(--mint-z-popover);
|
|
105
103
|
width: 18rem;
|
|
104
|
+
max-height: var(--mint-floating-available-height, none);
|
|
105
|
+
overflow-y: auto;
|
|
106
106
|
padding: 0.625rem;
|
|
107
107
|
}
|
|
108
108
|
|
|
@@ -112,13 +112,26 @@
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
/* Footer with clear selection */
|
|
115
|
+
.mint-experiment-selector__description {
|
|
116
|
+
padding: 0 1.25rem 0.75rem;
|
|
117
|
+
font-size: 0.8125rem;
|
|
118
|
+
color: var(--text-secondary);
|
|
119
|
+
}
|
|
120
|
+
|
|
115
121
|
.mint-experiment-selector__footer {
|
|
116
122
|
display: flex;
|
|
123
|
+
align-items: center;
|
|
124
|
+
gap: 0.75rem;
|
|
117
125
|
justify-content: flex-start;
|
|
118
126
|
padding: 0.5rem 1.25rem 0.75rem;
|
|
119
127
|
border-top: 1px solid var(--border-light);
|
|
120
128
|
}
|
|
121
129
|
|
|
130
|
+
.mint-experiment-selector__footer-slot {
|
|
131
|
+
flex: 1;
|
|
132
|
+
min-width: 0;
|
|
133
|
+
}
|
|
134
|
+
|
|
122
135
|
.mint-experiment-selector__clear-btn {
|
|
123
136
|
padding: 0.25rem 0;
|
|
124
137
|
border: none;
|