@morscherlab/mint-sdk 1.4.0-beta.1 → 1.4.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.
Files changed (266) hide show
  1. package/dist/{ActionMenu-CScINahU.js → AlertBox-B2Bgr3ei.js} +40 -209
  2. package/dist/AlertBox-B2Bgr3ei.js.map +1 -0
  3. package/dist/{AppSidebar-BmiiPfz9.js → AppSidebar-mvm--GxN.js} +161 -110
  4. package/dist/AppSidebar-mvm--GxN.js.map +1 -0
  5. package/dist/{ConfirmDialog-CJ7hqYUP.js → ConfirmDialog-nbJj51is.js} +2 -2
  6. package/dist/{ConfirmDialog-CJ7hqYUP.js.map → ConfirmDialog-nbJj51is.js.map} +1 -1
  7. package/dist/ExperimentPopover-5T1fAq2L.js +337 -0
  8. package/dist/ExperimentPopover-5T1fAq2L.js.map +1 -0
  9. package/dist/{ExperimentSelectorModal-D-9z7cNx.js → ExperimentSelectorModal-65peG4Up.js} +198 -181
  10. package/dist/ExperimentSelectorModal-65peG4Up.js.map +1 -0
  11. package/dist/{SegmentedControl-DERBN-Xd.js → SegmentedControl-BtnnjWzs.js} +2 -2
  12. package/dist/{SegmentedControl-DERBN-Xd.js.map → SegmentedControl-BtnnjWzs.js.map} +1 -1
  13. package/dist/{SettingsModal-CSLE31yg.js → SettingsModal-DO3IZ7qz.js} +9 -9
  14. package/dist/SettingsModal-DO3IZ7qz.js.map +1 -0
  15. package/dist/__tests__/styles/v2AuditRules.test.d.ts +1 -0
  16. package/dist/components/AppSidebar.vue.d.ts +1 -1
  17. package/dist/components/ArtifactSaveDialog.vue.d.ts +9 -1
  18. package/dist/components/AuditTrail.vue.d.ts +1 -1
  19. package/dist/components/BaseSelect.vue.d.ts +2 -2
  20. package/dist/components/ChartContainer.vue.d.ts +2 -0
  21. package/dist/components/DatePicker.vue.d.ts +1 -1
  22. package/dist/components/ExperimentPopover.vue.d.ts +18 -0
  23. package/dist/components/ExperimentSelectorModal.vue.d.ts +0 -4
  24. package/dist/components/FilePicker.vue.d.ts +1 -1
  25. package/dist/components/FileUploader.vue.d.ts +2 -2
  26. package/dist/components/PluginIcon.vue.d.ts +2 -2
  27. package/dist/components/SampleSelector.vue.d.ts +6 -6
  28. package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
  29. package/dist/components/StepWizard.vue.d.ts +3 -0
  30. package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +1 -1
  31. package/dist/components/internal/DatePickerTimeInternal.vue.d.ts +1 -1
  32. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +2 -7
  33. package/dist/components/internal/SelectMultipleInternal.vue.d.ts +4 -0
  34. package/dist/composables/createClient.d.ts +2 -0
  35. package/dist/composables/index.d.ts +1 -0
  36. package/dist/composables/pluginIdentity.d.ts +24 -0
  37. package/dist/composables/pluginWorkspaceModel.d.ts +2 -2
  38. package/dist/composables/useAppExperiment.d.ts +8 -0
  39. package/dist/composables/useCalendarGrid.d.ts +1 -1
  40. package/dist/composables/useExperimentSelector.d.ts +6 -2
  41. package/dist/composables/usePlatform.d.ts +1 -0
  42. package/dist/{controlSchemaModel-CP5-_nAj.js → controlSchemaModel-B8CTXagP.js} +2 -2
  43. package/dist/{controlSchemaModel-CP5-_nAj.js.map → controlSchemaModel-B8CTXagP.js.map} +1 -1
  44. package/dist/{data-C2PwI_dn.js → data-CgILxDLW.js} +178 -124
  45. package/dist/data-CgILxDLW.js.map +1 -0
  46. package/dist/data.js +8 -8
  47. package/dist/{experimentStatus-BZmU4czV.js → experimentStatus-Cqp6qNrR.js} +3 -3
  48. package/dist/{experimentStatus-BZmU4czV.js.map → experimentStatus-Cqp6qNrR.js.map} +1 -1
  49. package/dist/index.js +19 -19
  50. package/dist/{install-DAID6c2-.js → install-mB8-IyvO.js} +15 -14
  51. package/dist/{install-DAID6c2-.js.map → install-mB8-IyvO.js.map} +1 -1
  52. package/dist/install.js +1 -1
  53. package/dist/{lab-DLwRl_Ql.js → lab-D5bIX426.js} +128 -147
  54. package/dist/lab-D5bIX426.js.map +1 -0
  55. package/dist/lab.js +4 -3
  56. package/dist/{records-BzTcxekG.js → records-B6gpM_3e.js} +472 -274
  57. package/dist/records-B6gpM_3e.js.map +1 -0
  58. package/dist/{runtime-D6gVat6r.js → runtime-D7vKpfbF.js} +27 -31
  59. package/dist/runtime-D7vKpfbF.js.map +1 -0
  60. package/dist/runtime.js +6 -6
  61. package/dist/{shell-5ju97nOS.js → shell-CywENwBT.js} +5 -5
  62. package/dist/{shell-5ju97nOS.js.map → shell-CywENwBT.js.map} +1 -1
  63. package/dist/shell.js +5 -5
  64. package/dist/styles.css +1644 -1688
  65. package/dist/types/componentWorkflowTypes.d.ts +2 -0
  66. package/dist/types/generated/platformContext.d.ts +1 -0
  67. package/dist/types/generated-ui.d.ts +4 -0
  68. package/dist/{BaseModal-DfRIuVoj.js → useDropdownState-8yWMu-7_.js} +60 -2
  69. package/dist/useDropdownState-8yWMu-7_.js.map +1 -0
  70. package/dist/{useExperimentSamples-CxcnxZ8h.js → useExperimentSamples-DHnxKFAF.js} +3 -3
  71. package/dist/{useExperimentSamples-CxcnxZ8h.js.map → useExperimentSamples-DHnxKFAF.js.map} +1 -1
  72. package/dist/{useListReorder-CcbEYxX-.js → useListReorder-BitdUhxn.js} +109 -277
  73. package/dist/useListReorder-BitdUhxn.js.map +1 -0
  74. package/dist/{useRackEditor-BD5NIo5s.js → useRackEditor-Q8xO-cCy.js} +72 -58
  75. package/dist/useRackEditor-Q8xO-cCy.js.map +1 -0
  76. package/dist/{useRealtime-PalKue84.js → useRealtime-C3iy9QkU.js} +7 -4
  77. package/dist/useRealtime-C3iy9QkU.js.map +1 -0
  78. package/dist/useRequest-D506eHi8.js +244 -0
  79. package/dist/useRequest-D506eHi8.js.map +1 -0
  80. package/dist/utils/time.d.ts +7 -0
  81. package/package.json +1 -1
  82. package/src/__tests__/components/AppTopBar.test.ts +51 -2
  83. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  84. package/src/__tests__/components/ArtifactSaveDialog.test.ts +78 -0
  85. package/src/__tests__/components/BaseSelect.multiple.test.ts +87 -32
  86. package/src/__tests__/components/BaseSelect.test.ts +2 -1
  87. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  88. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  89. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  90. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  91. package/src/__tests__/components/DatePicker.datetime.test.ts +6 -0
  92. package/src/__tests__/components/DatePicker.test.ts +21 -0
  93. package/src/__tests__/components/DatePicker.time.test.ts +2 -2
  94. package/src/__tests__/components/EmptyState.test.ts +1 -1
  95. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  96. package/src/__tests__/components/ExperimentSelectorModal.test.ts +119 -13
  97. package/src/__tests__/components/GeneratedPluginView.test.ts +22 -1
  98. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  99. package/src/__tests__/components/PluginWorkspaceView.test.ts +7 -0
  100. package/src/__tests__/components/ResourcePickerListInternal.test.ts +0 -20
  101. package/src/__tests__/components/SampleSelector.test.ts +13 -8
  102. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  103. package/src/__tests__/components/StepWizard.test.ts +11 -0
  104. package/src/__tests__/components/WellPlate.decoration.test.ts +11 -4
  105. package/src/__tests__/components/deprecationTags.test.ts +1 -1
  106. package/src/__tests__/composables/useAppExperiment.test.ts +27 -1
  107. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  108. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  109. package/src/__tests__/styles/baseControlsRules.test.ts +6 -2
  110. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  111. package/src/__tests__/styles/cssTokens.test.ts +2 -2
  112. package/src/__tests__/styles/menusShellRefresh.test.ts +14 -10
  113. package/src/__tests__/styles/v2AuditRules.test.ts +96 -0
  114. package/src/__tests__/utils/plotlyTemplate.test.ts +4 -4
  115. package/src/__tests__/utils/time.test.ts +18 -1
  116. package/src/components/AdductText.story.vue +7 -0
  117. package/src/components/AdductText.vue +1 -1
  118. package/src/components/AlertBox.story.vue +2 -2
  119. package/src/components/AlertBox.vue +18 -16
  120. package/src/components/AppSidebar.story.vue +0 -28
  121. package/src/components/AppTopBar.story.vue +47 -12
  122. package/src/components/AppTopBar.vue +118 -114
  123. package/src/components/ArtifactSaveDialog.story.vue +23 -0
  124. package/src/components/ArtifactSaveDialog.vue +102 -12
  125. package/src/components/AuditTrail.story.vue +2 -1
  126. package/src/components/AuditTrail.vue +2 -21
  127. package/src/components/Avatar.vue +10 -14
  128. package/src/components/BaseSelect.multiple.story.vue +13 -2
  129. package/src/components/BaseSelect.vue +4 -3
  130. package/src/components/BatchProgressList.vue +35 -25
  131. package/src/components/ChartContainer.story.vue +2 -1
  132. package/src/components/ChartContainer.vue +8 -6
  133. package/src/components/ConfirmDialog.story.vue +1 -1
  134. package/src/components/EmptyState.vue +1 -1
  135. package/src/components/ExperimentPopover.story.vue +165 -53
  136. package/src/components/ExperimentPopover.vue +169 -187
  137. package/src/components/ExperimentSelectorModal.story.vue +40 -36
  138. package/src/components/ExperimentSelectorModal.vue +124 -110
  139. package/src/components/FormField.story.vue +8 -48
  140. package/src/components/GeneratedPluginView.vue +7 -1
  141. package/src/components/GeneratedResultRenderer.vue +3 -4
  142. package/src/components/InstrumentStateBadge.vue +1 -1
  143. package/src/components/JobsStatusTray.vue +1 -1
  144. package/src/components/LoadingSpinner.vue +1 -1
  145. package/src/components/NumberInput.vue +3 -6
  146. package/src/components/PluginIcon.story.vue +2 -10
  147. package/src/components/PluginIcon.vue +2 -2
  148. package/src/components/PluginWorkspaceView.story.vue +1 -1
  149. package/src/components/RuntimeUpdateNotice.vue +1 -1
  150. package/src/components/SampleSelector.story.vue +1 -1
  151. package/src/components/SampleSelector.vue +27 -37
  152. package/src/components/SampleSelectorGroupNode.vue +1 -1
  153. package/src/components/SectionCard.story.vue +2 -2
  154. package/src/components/SequenceProgressBar.story.vue +9 -0
  155. package/src/components/SequenceProgressBar.vue +6 -1
  156. package/src/components/SettingsModal.schema.ts +1 -1
  157. package/src/components/SettingsModal.vue +2 -2
  158. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  159. package/src/components/SmartGroupManual.story.vue +1 -1
  160. package/src/components/StepWizard.story.vue +33 -0
  161. package/src/components/StepWizard.vue +8 -1
  162. package/src/components/WellPlate.story.vue +3 -1
  163. package/src/components/WellPlate.vue +7 -0
  164. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  165. package/src/components/internal/DatePickerDateInternal.vue +16 -40
  166. package/src/components/internal/DatePickerDateTimeInternal.vue +3 -13
  167. package/src/components/internal/DatePickerTimeInternal.vue +5 -8
  168. package/src/components/internal/ResourcePickerListInternal.vue +45 -85
  169. package/src/components/internal/SelectMultipleInternal.vue +182 -65
  170. package/src/components/internal/SelectSearchableInternal.vue +2 -3
  171. package/src/composables/createClient.ts +2 -0
  172. package/src/composables/index.ts +1 -0
  173. package/src/composables/pluginIdentity.ts +31 -0
  174. package/src/composables/pluginWorkspaceModel.ts +2 -2
  175. package/src/composables/useAppExperiment.ts +20 -0
  176. package/src/composables/useCalendarGrid.ts +4 -3
  177. package/src/composables/useExperimentSelector.ts +77 -31
  178. package/src/composables/usePluginWorkspace.ts +1 -1
  179. package/src/styles/components/adduct-text.css +13 -5
  180. package/src/styles/components/alert-box.css +39 -58
  181. package/src/styles/components/app-layout.css +7 -5
  182. package/src/styles/components/app-page-selector.css +3 -1
  183. package/src/styles/components/app-pill-nav.css +11 -12
  184. package/src/styles/components/app-sidebar.css +9 -18
  185. package/src/styles/components/app-top-bar.css +57 -55
  186. package/src/styles/components/artifact-save-dialog.css +153 -2
  187. package/src/styles/components/audit-trail.css +16 -19
  188. package/src/styles/components/avatar.css +6 -4
  189. package/src/styles/components/batch-progress-list.css +38 -36
  190. package/src/styles/components/button.css +28 -59
  191. package/src/styles/components/calendar.css +12 -12
  192. package/src/styles/components/chart-container.css +34 -23
  193. package/src/styles/components/checkbox.css +2 -12
  194. package/src/styles/components/collapsible-card.css +27 -29
  195. package/src/styles/components/confirm-dialog.css +13 -14
  196. package/src/styles/components/dataframe.css +13 -5
  197. package/src/styles/components/date-picker.css +80 -92
  198. package/src/styles/components/datetime-picker.css +31 -43
  199. package/src/styles/components/divider.css +20 -20
  200. package/src/styles/components/dose-calculator.css +3 -3
  201. package/src/styles/components/empty-state.css +20 -17
  202. package/src/styles/components/experiment-code-badge.css +2 -0
  203. package/src/styles/components/experiment-popover.css +174 -329
  204. package/src/styles/components/experiment-selector-modal.css +75 -56
  205. package/src/styles/components/file-picker.css +3 -3
  206. package/src/styles/components/file-uploader.css +38 -49
  207. package/src/styles/components/form-builder.css +3 -3
  208. package/src/styles/components/formula-input.css +1 -1
  209. package/src/styles/components/icon-button.css +18 -24
  210. package/src/styles/components/input.css +5 -4
  211. package/src/styles/components/instrument-monitor.css +13 -15
  212. package/src/styles/components/jobs-status-tray.css +31 -25
  213. package/src/styles/components/modal.css +4 -6
  214. package/src/styles/components/molecule-input.css +2 -2
  215. package/src/styles/components/multi-select.css +65 -117
  216. package/src/styles/components/number-input.css +26 -19
  217. package/src/styles/components/pill.css +3 -2
  218. package/src/styles/components/plate-editor.css +0 -1
  219. package/src/styles/components/plugin-icon.css +26 -23
  220. package/src/styles/components/popover.css +2 -2
  221. package/src/styles/components/presence-avatars.css +1 -1
  222. package/src/styles/components/progress-bar.css +3 -3
  223. package/src/styles/components/protocol-step-editor.css +1 -3
  224. package/src/styles/components/resource-card.css +2 -2
  225. package/src/styles/components/resource-picker-list.css +6 -57
  226. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  227. package/src/styles/components/sample-selector.css +95 -79
  228. package/src/styles/components/schedule-calendar.css +8 -8
  229. package/src/styles/components/searchable-select.css +12 -12
  230. package/src/styles/components/section-card.css +30 -47
  231. package/src/styles/components/segmented-control.css +18 -15
  232. package/src/styles/components/select.css +3 -3
  233. package/src/styles/components/sequence-input.css +2 -2
  234. package/src/styles/components/sequence-progress-bar.css +17 -8
  235. package/src/styles/components/settings-modal.css +7 -2
  236. package/src/styles/components/smart-group.css +18 -18
  237. package/src/styles/components/step-wizard.css +52 -16
  238. package/src/styles/components/tabs.css +2 -2
  239. package/src/styles/components/textarea.css +3 -3
  240. package/src/styles/components/time-picker.css +36 -21
  241. package/src/styles/components/toast.css +12 -10
  242. package/src/styles/components/toggle.css +1 -11
  243. package/src/styles/components/tooltip.css +10 -9
  244. package/src/styles/components/unit-input.css +8 -7
  245. package/src/styles/components/well-plate.css +9 -2
  246. package/src/styles/variables.css +118 -77
  247. package/src/types/componentWorkflowTypes.ts +2 -0
  248. package/src/types/generated/platformContext.ts +1 -0
  249. package/src/types/generated-ui.ts +4 -0
  250. package/src/utils/time.ts +21 -0
  251. package/dist/ActionMenu-CScINahU.js.map +0 -1
  252. package/dist/AppSidebar-BmiiPfz9.js.map +0 -1
  253. package/dist/BaseModal-DfRIuVoj.js.map +0 -1
  254. package/dist/ExperimentPopover-C4sGw-is.js +0 -359
  255. package/dist/ExperimentPopover-C4sGw-is.js.map +0 -1
  256. package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +0 -1
  257. package/dist/SettingsModal-CSLE31yg.js.map +0 -1
  258. package/dist/data-C2PwI_dn.js.map +0 -1
  259. package/dist/lab-DLwRl_Ql.js.map +0 -1
  260. package/dist/records-BzTcxekG.js.map +0 -1
  261. package/dist/runtime-D6gVat6r.js.map +0 -1
  262. package/dist/useListReorder-CcbEYxX-.js.map +0 -1
  263. package/dist/useRackEditor-BD5NIo5s.js.map +0 -1
  264. package/dist/useRealtime-PalKue84.js.map +0 -1
  265. package/dist/useRequest-D5JDfsgZ.js +0 -76
  266. package/dist/useRequest-D5JDfsgZ.js.map +0 -1
@@ -14,15 +14,28 @@
14
14
  box-sizing: border-box;
15
15
  }
16
16
 
17
- /* Main container layout — relative so the center can anchor to viewport midline */
17
+ /* Main container layout — equal side columns keep the centre nav on the bar
18
+ midline. The right column never shrinks below its controls: when they no
19
+ longer fit in half the bar, the nav moves left instead of being overlapped.
20
+ The left column keeps the 36px identity tile; the centre column can shrink,
21
+ so a long nav never widens the page (the pill nav folds after four items). */
18
22
  .mint-topbar__container {
19
- display: flex;
23
+ display: grid;
24
+ grid-template-columns: minmax(2.25rem, 1fr) minmax(0, auto) minmax(min-content, 1fr);
20
25
  align-items: center;
21
- gap: 0.5rem;
22
- min-height: 2.375rem;
26
+ gap: 0.75rem;
27
+ min-height: 2rem;
23
28
  position: relative;
24
29
  }
25
30
 
31
+ .mint-topbar__start {
32
+ grid-column: 1;
33
+ display: flex;
34
+ align-items: center;
35
+ gap: 0.75rem;
36
+ min-width: 0;
37
+ }
38
+
26
39
  /* Brand container */
27
40
  .mint-topbar__brand {
28
41
  display: flex;
@@ -45,42 +58,23 @@
45
58
  max-height: 100%;
46
59
  }
47
60
 
48
- /* Left and right fields share the 36px identity tile height. */
49
- .mint-topbar .mint-experiment-popover__trigger,
50
- .mint-topbar .mint-experiment-popover__save-trigger {
51
- height: 2.25rem;
52
- }
53
-
54
- .mint-topbar .mint-experiment-popover__save-trigger {
55
- width: 2.25rem;
56
- }
57
-
58
- /* Centered section — absolute so asymmetric left/right weight never shifts the
59
- pill-nav off the topbar midline. Pointer-events: none lets the pill-nav
60
- overlay the background while remaining interactive via its own children. */
61
61
  .mint-topbar__center {
62
- position: absolute;
63
- left: 50%;
64
- top: 50%;
65
- transform: translate(-50%, -50%);
62
+ grid-column: 2;
66
63
  display: flex;
67
64
  align-items: center;
68
- pointer-events: none;
69
- z-index: 1;
70
- }
71
-
72
- .mint-topbar__center > * {
73
- pointer-events: auto;
65
+ /* safe: an overflowing nav keeps its first item reachable. No overflow
66
+ clipping here: it would hide the pill dropdowns. */
67
+ justify-content: safe center;
68
+ min-width: 0;
74
69
  }
75
70
 
76
71
  .mint-topbar__right {
72
+ grid-column: 3;
77
73
  display: flex;
78
74
  align-items: center;
79
75
  gap: 0.125rem;
80
76
  min-width: 0;
81
77
  justify-content: flex-end;
82
- flex-shrink: 0;
83
- margin-left: auto;
84
78
  }
85
79
 
86
80
  /* Logo styles */
@@ -101,7 +95,7 @@
101
95
  }
102
96
 
103
97
  .mint-topbar__logo-text {
104
- color: white;
98
+ color: var(--text-on-accent);
105
99
  font-weight: 700;
106
100
  font-size: 0.875rem;
107
101
  }
@@ -111,31 +105,18 @@
111
105
  color: var(--text-primary);
112
106
  }
113
107
 
114
- /* Static plugin identity: name only, not a control (5a) */
108
+ /* Static plugin identity: name over subtitle, not a control (5a) */
115
109
  .mint-topbar__plugin-identity {
116
- display: inline-flex;
117
- align-items: baseline;
118
- gap: 0.5rem;
119
- min-width: 0;
120
110
  padding: 0 0.375rem 0 0;
121
- font-size: 0.8125rem;
122
- white-space: nowrap;
123
111
  }
124
112
 
125
- .mint-topbar__plugin-name {
126
- font-weight: 600;
127
- color: var(--text-primary);
128
- overflow: hidden;
129
- text-overflow: ellipsis;
130
- }
131
-
132
- /* Variant: card - inline card with margins and rounded corners */
113
+ /* Variant: card - flat floating card, inset 16px from the window edge */
133
114
  .mint-topbar--card {
134
- width: calc(100% - 2rem);
135
- margin: 1rem 1rem 0 1rem;
115
+ width: calc(100% - 2 * var(--mint-page-inset));
116
+ margin: var(--mint-page-inset) var(--mint-page-inset) 0;
117
+ padding: 0.375rem 0.5rem 0.375rem 0.625rem;
136
118
  border-radius: var(--radius-lg);
137
119
  border: 1px solid var(--border-color);
138
- box-shadow: var(--card-shadow);
139
120
  flex-shrink: 0;
140
121
  }
141
122
 
@@ -155,23 +136,44 @@
155
136
  opacity: 0.8;
156
137
  }
157
138
 
158
- /* Title + subtitle stay inside the 36px control row. */
139
+ /* Name over subtitle fill the 36px icon tile, top and bottom aligned;
140
+ a name without a second line sits on the tile midline. */
141
+ .mint-topbar__plugin-identity,
159
142
  .mint-topbar-title-group {
160
143
  display: flex;
144
+ flex: 0 1 auto;
161
145
  flex-direction: column;
146
+ justify-content: space-between;
147
+ height: 2.25rem;
148
+ min-width: 0;
149
+ }
150
+
151
+ .mint-topbar__plugin-identity > :only-child {
152
+ margin-block: auto;
162
153
  }
163
154
 
155
+ .mint-topbar__plugin-name,
164
156
  .mint-topbar-title {
165
157
  font-weight: 600;
166
158
  color: var(--text-primary);
167
159
  font-size: 0.9375rem;
168
- line-height: 1.15;
160
+ line-height: 1.125rem;
169
161
  }
170
162
 
163
+ .mint-topbar__plugin-subtitle,
171
164
  .mint-topbar-subtitle {
172
165
  font-size: 0.75rem;
173
166
  color: var(--text-secondary);
174
- line-height: 1.2;
167
+ line-height: 0.9375rem;
168
+ }
169
+
170
+ .mint-topbar__plugin-name,
171
+ .mint-topbar__plugin-subtitle,
172
+ .mint-topbar-title,
173
+ .mint-topbar-subtitle {
174
+ overflow: hidden;
175
+ text-overflow: ellipsis;
176
+ white-space: nowrap;
175
177
  }
176
178
 
177
179
  /* The settings button has the IconButton ghost look: 32px, --radius-md,
@@ -222,10 +224,10 @@
222
224
  font-size: 0.6875rem;
223
225
  font-weight: 600;
224
226
  line-height: 1.25;
225
- color: var(--mint-warning-text);
226
- background: var(--mint-warning-bg);
227
- border: 1px solid var(--mint-warning-border);
228
- border-radius: 9999px;
227
+ color: var(--text-secondary-strong);
228
+ background: var(--bg-tertiary);
229
+ border: 1px solid transparent;
230
+ border-radius: var(--radius);
229
231
  white-space: nowrap;
230
232
  user-select: none;
231
233
  }
@@ -1,7 +1,7 @@
1
1
  .mint-artifact-save-dialog {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- gap: 1rem;
4
+ gap: 0.75rem;
5
5
  }
6
6
 
7
7
  .mint-artifact-save-dialog__immutable {
@@ -11,7 +11,158 @@
11
11
  }
12
12
 
13
13
  .mint-artifact-save-dialog__immutable code {
14
- font-family: var(--font-mono, 'Fira Code', monospace);
14
+ font-family: var(--font-mono);
15
15
  font-size: 0.75rem;
16
16
  color: var(--text-secondary);
17
17
  }
18
+
19
+ /* Dark --border-light equals --bg-card; row and band hairlines need --border-color there. */
20
+ :where(html.dark) .mint-artifact-save-dialog {
21
+ --border-light: var(--border-color);
22
+ }
23
+
24
+ /* Experiment strip: code chip, name, optional Change link. */
25
+ .mint-artifact-save-dialog__experiment {
26
+ display: flex;
27
+ align-items: center;
28
+ gap: 0.5rem;
29
+ padding: 0 0 0.625rem;
30
+ border-bottom: 1px solid var(--border-light);
31
+ }
32
+
33
+ .mint-artifact-save-dialog__experiment-name {
34
+ flex: 1;
35
+ min-width: 0;
36
+ overflow: hidden;
37
+ font-size: 0.8125rem;
38
+ font-weight: 500;
39
+ text-overflow: ellipsis;
40
+ white-space: nowrap;
41
+ }
42
+
43
+ .mint-artifact-save-dialog__change {
44
+ padding: 0;
45
+ border: 0;
46
+ background: none;
47
+ font: 500 0.75rem/1 var(--font-sans);
48
+ color: var(--_ink-primary);
49
+ cursor: pointer;
50
+ }
51
+
52
+ .mint-artifact-save-dialog__change:hover {
53
+ text-decoration: underline;
54
+ }
55
+
56
+ .mint-artifact-save-dialog__change:focus-visible,
57
+ .mint-artifact-save-dialog__mode:focus-visible {
58
+ outline: none;
59
+ box-shadow: var(--focus-ring-offset);
60
+ }
61
+
62
+ /* Replace / Save as new: radio cards. */
63
+ .mint-artifact-save-dialog__modes {
64
+ display: grid;
65
+ grid-template-columns: 1fr 1fr;
66
+ gap: 0.5rem;
67
+ }
68
+
69
+ .mint-artifact-save-dialog__mode {
70
+ display: flex;
71
+ align-items: flex-start;
72
+ gap: 0.5rem;
73
+ padding: 0.625rem;
74
+ border: 1px solid var(--border-color);
75
+ border-radius: var(--radius-md);
76
+ background: var(--bg-card);
77
+ font: inherit;
78
+ text-align: left;
79
+ cursor: pointer;
80
+ transition: background-color var(--mint-transition), border-color var(--mint-transition);
81
+ }
82
+
83
+ .mint-artifact-save-dialog__mode[aria-checked='true'] {
84
+ border-color: var(--color-primary);
85
+ background: var(--color-primary-soft);
86
+ }
87
+
88
+ .mint-artifact-save-dialog__mode-dot {
89
+ flex-shrink: 0;
90
+ box-sizing: border-box;
91
+ width: 14px;
92
+ height: 14px;
93
+ margin-top: 1px;
94
+ border: 1px solid var(--border-strong);
95
+ border-radius: 50%;
96
+ background: var(--bg-card);
97
+ }
98
+
99
+ .mint-artifact-save-dialog__mode[aria-checked='true'] .mint-artifact-save-dialog__mode-dot {
100
+ border: 4px solid var(--color-primary);
101
+ }
102
+
103
+ .mint-artifact-save-dialog__mode-text {
104
+ display: flex;
105
+ flex-direction: column;
106
+ gap: 2px;
107
+ font-size: 0.75rem;
108
+ color: var(--text-secondary);
109
+ }
110
+
111
+ .mint-artifact-save-dialog__mode-text b {
112
+ font-size: 0.8125rem;
113
+ font-weight: 600;
114
+ color: var(--text-primary);
115
+ }
116
+
117
+ /* The artifact being replaced: a selected row bleeding to the dialog edges. */
118
+ .mint-artifact-save-dialog__list {
119
+ margin: 0 -1.25rem;
120
+ border-top: 1px solid var(--border-light);
121
+ border-bottom: 1px solid var(--border-light);
122
+ }
123
+
124
+ .mint-artifact-save-dialog__row {
125
+ display: flex;
126
+ align-items: center;
127
+ gap: 0.625rem;
128
+ min-height: 2.5rem;
129
+ padding: 0.375rem 1.25rem;
130
+ color: var(--text-primary);
131
+ }
132
+
133
+ .mint-artifact-save-dialog__row--selected {
134
+ background: var(--color-primary-soft);
135
+ box-shadow: inset 2px 0 0 var(--color-primary);
136
+ }
137
+
138
+ .mint-artifact-save-dialog__row-icon {
139
+ flex-shrink: 0;
140
+ color: var(--text-muted);
141
+ }
142
+
143
+ .mint-artifact-save-dialog__row-name {
144
+ display: flex;
145
+ flex: 1;
146
+ flex-direction: column;
147
+ min-width: 0;
148
+ font-size: 0.8125rem;
149
+ font-weight: 500;
150
+ }
151
+
152
+ .mint-artifact-save-dialog__row-name span,
153
+ .mint-artifact-save-dialog__row-meta {
154
+ font-family: var(--font-mono);
155
+ font-size: 0.6875rem;
156
+ font-weight: 400;
157
+ color: var(--text-muted);
158
+ }
159
+
160
+ .mint-artifact-save-dialog__row-meta {
161
+ white-space: nowrap;
162
+ }
163
+
164
+ @media (prefers-reduced-motion: reduce) {
165
+ .mint-artifact-save-dialog__mode {
166
+ transition: none;
167
+ }
168
+ }
@@ -14,7 +14,7 @@
14
14
  width: auto;
15
15
  }
16
16
 
17
- /* 1px rail; dots ringed in the card color so they sit cleanly on --bg-card (4d). */
17
+ /* 1px rail; hollow dots ringed in the event tone, filled with the card colour (v2). */
18
18
  .mint-audit-trail__list {
19
19
  position: relative;
20
20
  padding-left: 1.375rem;
@@ -31,7 +31,7 @@
31
31
 
32
32
  .mint-audit-trail__entry {
33
33
  position: relative;
34
- padding-bottom: 1.125rem;
34
+ padding-bottom: 0.875rem;
35
35
  cursor: pointer;
36
36
  }
37
37
 
@@ -45,16 +45,18 @@
45
45
  top: 5px;
46
46
  width: 9px;
47
47
  height: 9px;
48
+ box-sizing: border-box;
49
+ border: 2px solid var(--border-strong);
48
50
  border-radius: 9999px;
49
- box-shadow: 0 0 0 3px var(--bg-card);
51
+ background-color: var(--bg-card);
50
52
  z-index: 1;
51
53
  }
52
54
 
53
- /* Dot colors by type */
54
- .mint-audit-trail__entry--create .mint-audit-trail__dot { background-color: var(--mint-success); }
55
- .mint-audit-trail__entry--update .mint-audit-trail__dot { background-color: var(--color-primary); }
56
- .mint-audit-trail__entry--delete .mint-audit-trail__dot { background-color: var(--mint-error); }
57
- .mint-audit-trail__entry--system .mint-audit-trail__dot { background-color: var(--text-muted); }
55
+ /* Ring colors by type */
56
+ .mint-audit-trail__entry--create .mint-audit-trail__dot { border-color: var(--mint-success); }
57
+ .mint-audit-trail__entry--update .mint-audit-trail__dot { border-color: var(--color-primary); }
58
+ .mint-audit-trail__entry--delete .mint-audit-trail__dot { border-color: var(--mint-error); }
59
+ .mint-audit-trail__entry--system .mint-audit-trail__dot { border-color: var(--text-muted); }
58
60
 
59
61
  .mint-audit-trail__content {
60
62
  display: flex;
@@ -92,24 +94,20 @@
92
94
  font-weight: 600;
93
95
  }
94
96
 
95
- /* With a user, the action is the verb of the sentence. */
96
- .mint-audit-trail__user + .mint-audit-trail__action {
97
- color: var(--text-secondary);
98
- }
99
-
100
97
  .mint-audit-trail__timestamp {
101
98
  flex-shrink: 0;
102
99
  font-family: var(--font-mono);
103
100
  font-size: 0.6875rem;
104
- color: var(--text-secondary);
101
+ color: var(--text-muted);
105
102
  margin-left: auto;
106
103
  }
107
104
 
108
- /* Detail renders as-is, aligned with the sentence text. */
105
+ /* Detail renders as-is, aligned with the sentence text, in mono (v2). */
109
106
  .mint-audit-trail__detail {
110
- font-size: 0.75rem;
107
+ font-family: var(--font-mono);
108
+ font-size: 0.6875rem;
111
109
  line-height: 1.55;
112
- color: var(--text-secondary-strong);
110
+ color: var(--text-secondary);
113
111
  }
114
112
 
115
113
  .mint-audit-trail__content:has(.mint-audit-trail__avatar) > .mint-audit-trail__detail,
@@ -142,9 +140,8 @@
142
140
 
143
141
  /* Size variants */
144
142
  .mint-audit-trail--sm .mint-audit-trail__sentence { font-size: 0.75rem; }
145
- .mint-audit-trail--sm .mint-audit-trail__detail { font-size: 0.75rem; }
146
143
  .mint-audit-trail--sm .mint-audit-trail__entry { padding-bottom: 0.75rem; }
147
144
 
148
145
  .mint-audit-trail--lg .mint-audit-trail__sentence { font-size: 0.9375rem; }
149
- .mint-audit-trail--lg .mint-audit-trail__detail { font-size: 0.8125rem; }
146
+ .mint-audit-trail--lg .mint-audit-trail__detail { font-size: 0.75rem; }
150
147
  .mint-audit-trail--lg .mint-audit-trail__entry { padding-bottom: 1.5rem; }
@@ -17,11 +17,13 @@
17
17
  height: 100%;
18
18
  border-radius: 50%;
19
19
  overflow: hidden;
20
- /* font-weight 500 (medium) matches the platform's inline avatar typography
21
- — text-sm font-medium text-white in admin/UserTable.vue:292. */
20
+ /* font-weight 500 (medium) matches the platform's inline avatar typography. */
22
21
  font-weight: 500;
23
- color: white;
24
- background: var(--bg-tertiary);
22
+ /* One quiet accent treatment instead of a hashed rainbow; an explicit
23
+ `color` prop still sets the background inline. */
24
+ color: var(--_ink-primary);
25
+ background: var(--color-primary-soft);
26
+ box-shadow: inset 0 0 0 1px var(--color-primary-border);
25
27
  }
26
28
 
27
29
  /* Sizes — applied on the wrapper so face fills 100%.
@@ -1,6 +1,6 @@
1
1
  /* BatchProgressList Component Styles (6b)
2
- Rows + hairlines, status by shape, counts in mono. Progress fill is
3
- --color-primary; --mint-info appears only on the "processing" dot. */
2
+ Rows + hairlines, status by icon, counts in mono. Progress and the
3
+ "processing" state are --color-primary. */
4
4
 
5
5
  .mint-batch-progress {
6
6
  display: flex;
@@ -45,14 +45,14 @@
45
45
  width: 100%;
46
46
  height: 4px;
47
47
  background-color: var(--bg-tertiary);
48
- border-radius: 9999px;
48
+ border-radius: 2px;
49
49
  overflow: hidden;
50
50
  }
51
51
 
52
52
  .mint-batch-progress__overall-bar {
53
53
  height: 100%;
54
54
  background-color: var(--color-primary);
55
- transition: width 0.18s ease;
55
+ transition: width var(--mint-transition);
56
56
  }
57
57
 
58
58
  /* One line of shape + mono count + word. */
@@ -98,22 +98,11 @@
98
98
  .mint-batch-progress__error-disc { fill: var(--mint-error); }
99
99
 
100
100
  .mint-batch-progress__error-mark {
101
- stroke: white;
101
+ stroke: var(--bg-card);
102
102
  stroke-width: 1.8;
103
103
  stroke-linecap: round;
104
104
  }
105
105
 
106
- .mint-batch-progress__arc-track {
107
- stroke: var(--bg-tertiary);
108
- stroke-width: 2;
109
- }
110
-
111
- .mint-batch-progress__arc {
112
- stroke: var(--color-primary);
113
- stroke-width: 2;
114
- stroke-linecap: round;
115
- }
116
-
117
106
  .mint-batch-progress__dash {
118
107
  stroke: var(--text-secondary);
119
108
  stroke-width: 2;
@@ -124,7 +113,7 @@
124
113
  width: 0.375rem;
125
114
  height: 0.375rem;
126
115
  border-radius: 9999px;
127
- background: var(--mint-info);
116
+ background: var(--color-primary);
128
117
  }
129
118
 
130
119
  .mint-batch-progress__pending-ring {
@@ -152,44 +141,53 @@
152
141
  .mint-batch-progress__item-row {
153
142
  display: grid;
154
143
  grid-template-columns: 1rem minmax(0, 1fr) auto;
144
+ grid-template-areas:
145
+ "icon name pct"
146
+ ". bar bar";
155
147
  align-items: center;
156
- gap: 0.625rem;
157
- min-height: 2.25rem;
158
- padding: 0.5rem 0;
148
+ column-gap: 0.625rem;
149
+ row-gap: 0.3125rem;
150
+ padding: 0.4375rem 0;
159
151
  }
160
152
 
161
153
  .mint-batch-progress__item-icon {
162
- display: flex;
163
- align-items: center;
164
- justify-content: center;
154
+ grid-area: icon;
155
+ display: block;
165
156
  }
166
157
 
167
- .mint-batch-progress__item-icon--processing .mint-batch-progress__shape {
168
- animation: mint-batch-spin 1s linear infinite;
158
+ .mint-batch-progress__item-icon--completed { color: var(--mint-success); }
159
+ .mint-batch-progress__item-icon--processing {
160
+ color: var(--color-primary);
161
+ animation: mint-batch-spin 1.6s linear infinite;
169
162
  }
163
+ .mint-batch-progress__item-icon--pending,
164
+ .mint-batch-progress__item-icon--skipped { color: var(--text-muted); }
165
+ .mint-batch-progress__item-icon--error { color: var(--mint-error); }
170
166
 
171
167
  @keyframes mint-batch-spin {
172
168
  to { transform: rotate(360deg); }
173
169
  }
174
170
 
175
171
  .mint-batch-progress__item-label {
172
+ grid-area: name;
176
173
  min-width: 0;
177
174
  overflow: hidden;
178
- font-family: var(--font-mono);
179
- font-size: 0.75rem;
175
+ font-size: 0.8125rem;
180
176
  color: var(--text-primary);
181
177
  text-overflow: ellipsis;
182
178
  white-space: nowrap;
183
179
  }
184
180
 
185
- .mint-batch-progress__item--processing .mint-batch-progress__item-label,
186
- .mint-batch-progress__item--error .mint-batch-progress__item-label {
187
- font-weight: 600;
181
+ .mint-batch-progress__item--pending .mint-batch-progress__item-label,
182
+ .mint-batch-progress__item--skipped .mint-batch-progress__item-label {
183
+ color: var(--text-muted);
188
184
  }
189
185
 
190
186
  .mint-batch-progress__item-meta {
187
+ grid-area: pct;
191
188
  display: flex;
192
189
  align-items: center;
190
+ justify-content: flex-end;
193
191
  gap: 0.625rem;
194
192
  font-family: var(--font-mono);
195
193
  font-size: 0.6875rem;
@@ -198,10 +196,10 @@
198
196
  }
199
197
 
200
198
  .mint-batch-progress__item-progress {
201
- width: 4.5rem;
202
- height: 2px;
199
+ grid-area: bar;
200
+ height: 4px;
203
201
  background-color: var(--bg-tertiary);
204
- border-radius: 9999px;
202
+ border-radius: 2px;
205
203
  overflow: hidden;
206
204
  }
207
205
 
@@ -209,7 +207,11 @@
209
207
  display: block;
210
208
  height: 100%;
211
209
  background-color: var(--color-primary);
212
- transition: width 0.18s ease;
210
+ transition: width var(--mint-transition);
211
+ }
212
+
213
+ .mint-batch-progress__item--error .mint-batch-progress__item-progress-bar {
214
+ background-color: var(--mint-error);
213
215
  }
214
216
 
215
217
  /* Failed rows show the error in place. */
@@ -237,7 +239,7 @@
237
239
  font-size: 0.75rem;
238
240
  font-weight: 500;
239
241
  cursor: pointer;
240
- transition: background-color 0.15s ease;
242
+ transition: background-color var(--mint-transition);
241
243
  }
242
244
 
243
245
  .mint-batch-progress__retry-btn,
@@ -269,7 +271,7 @@
269
271
  }
270
272
 
271
273
  @media (prefers-reduced-motion: reduce) {
272
- .mint-batch-progress__item-icon--processing .mint-batch-progress__shape {
274
+ .mint-batch-progress__item-icon--processing {
273
275
  animation: none;
274
276
  }
275
277