@morscherlab/mint-sdk 1.4.0-beta.1 → 1.4.0-beta.10

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 (261) 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/components/AppSidebar.vue.d.ts +1 -1
  16. package/dist/components/ArtifactSaveDialog.vue.d.ts +9 -1
  17. package/dist/components/AuditTrail.vue.d.ts +1 -1
  18. package/dist/components/BaseSelect.vue.d.ts +2 -2
  19. package/dist/components/ChartContainer.vue.d.ts +2 -0
  20. package/dist/components/DatePicker.vue.d.ts +1 -1
  21. package/dist/components/ExperimentPopover.vue.d.ts +18 -0
  22. package/dist/components/ExperimentSelectorModal.vue.d.ts +0 -4
  23. package/dist/components/FilePicker.vue.d.ts +1 -1
  24. package/dist/components/FileUploader.vue.d.ts +2 -2
  25. package/dist/components/PluginIcon.vue.d.ts +2 -2
  26. package/dist/components/SampleSelector.vue.d.ts +6 -6
  27. package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
  28. package/dist/components/StepWizard.vue.d.ts +3 -0
  29. package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +1 -1
  30. package/dist/components/internal/DatePickerTimeInternal.vue.d.ts +1 -1
  31. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +2 -7
  32. package/dist/components/internal/SelectMultipleInternal.vue.d.ts +4 -0
  33. package/dist/composables/createClient.d.ts +2 -0
  34. package/dist/composables/index.d.ts +1 -0
  35. package/dist/composables/pluginIdentity.d.ts +24 -0
  36. package/dist/composables/pluginWorkspaceModel.d.ts +2 -2
  37. package/dist/composables/useAppExperiment.d.ts +8 -0
  38. package/dist/composables/useCalendarGrid.d.ts +1 -1
  39. package/dist/composables/useExperimentSelector.d.ts +6 -2
  40. package/dist/composables/usePlatform.d.ts +1 -0
  41. package/dist/{controlSchemaModel-CP5-_nAj.js → controlSchemaModel-B8CTXagP.js} +2 -2
  42. package/dist/{controlSchemaModel-CP5-_nAj.js.map → controlSchemaModel-B8CTXagP.js.map} +1 -1
  43. package/dist/{data-C2PwI_dn.js → data-CgILxDLW.js} +178 -124
  44. package/dist/data-CgILxDLW.js.map +1 -0
  45. package/dist/data.js +8 -8
  46. package/dist/{experimentStatus-BZmU4czV.js → experimentStatus-Cqp6qNrR.js} +3 -3
  47. package/dist/{experimentStatus-BZmU4czV.js.map → experimentStatus-Cqp6qNrR.js.map} +1 -1
  48. package/dist/index.js +19 -19
  49. package/dist/{install-DAID6c2-.js → install-CsPFJSx3.js} +15 -14
  50. package/dist/{install-DAID6c2-.js.map → install-CsPFJSx3.js.map} +1 -1
  51. package/dist/install.js +1 -1
  52. package/dist/{lab-DLwRl_Ql.js → lab-MHzp-_J8.js} +128 -147
  53. package/dist/lab-MHzp-_J8.js.map +1 -0
  54. package/dist/lab.js +4 -3
  55. package/dist/{records-BzTcxekG.js → records-B6gpM_3e.js} +472 -274
  56. package/dist/records-B6gpM_3e.js.map +1 -0
  57. package/dist/{runtime-D6gVat6r.js → runtime-8bs8EogX.js} +27 -31
  58. package/dist/runtime-8bs8EogX.js.map +1 -0
  59. package/dist/runtime.js +6 -6
  60. package/dist/{shell-5ju97nOS.js → shell-CywENwBT.js} +5 -5
  61. package/dist/{shell-5ju97nOS.js.map → shell-CywENwBT.js.map} +1 -1
  62. package/dist/shell.js +5 -5
  63. package/dist/styles.css +1606 -1666
  64. package/dist/types/componentWorkflowTypes.d.ts +2 -0
  65. package/dist/types/generated/platformContext.d.ts +1 -0
  66. package/dist/types/generated-ui.d.ts +4 -0
  67. package/dist/{BaseModal-DfRIuVoj.js → useDropdownState-8yWMu-7_.js} +60 -2
  68. package/dist/useDropdownState-8yWMu-7_.js.map +1 -0
  69. package/dist/{useExperimentSamples-CxcnxZ8h.js → useExperimentSamples-DHnxKFAF.js} +3 -3
  70. package/dist/{useExperimentSamples-CxcnxZ8h.js.map → useExperimentSamples-DHnxKFAF.js.map} +1 -1
  71. package/dist/{useListReorder-CcbEYxX-.js → useListReorder-BitdUhxn.js} +109 -277
  72. package/dist/useListReorder-BitdUhxn.js.map +1 -0
  73. package/dist/{useRackEditor-BD5NIo5s.js → useRackEditor-DiwCt77M.js} +71 -57
  74. package/dist/useRackEditor-DiwCt77M.js.map +1 -0
  75. package/dist/{useRealtime-PalKue84.js → useRealtime-C3iy9QkU.js} +7 -4
  76. package/dist/useRealtime-C3iy9QkU.js.map +1 -0
  77. package/dist/useRequest-D506eHi8.js +244 -0
  78. package/dist/useRequest-D506eHi8.js.map +1 -0
  79. package/dist/utils/time.d.ts +7 -0
  80. package/package.json +1 -1
  81. package/src/__tests__/components/AppTopBar.test.ts +51 -2
  82. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  83. package/src/__tests__/components/ArtifactSaveDialog.test.ts +78 -0
  84. package/src/__tests__/components/BaseSelect.multiple.test.ts +87 -32
  85. package/src/__tests__/components/BaseSelect.test.ts +2 -1
  86. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  87. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  88. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  89. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  90. package/src/__tests__/components/DatePicker.datetime.test.ts +6 -0
  91. package/src/__tests__/components/DatePicker.test.ts +21 -0
  92. package/src/__tests__/components/DatePicker.time.test.ts +2 -2
  93. package/src/__tests__/components/EmptyState.test.ts +1 -1
  94. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  95. package/src/__tests__/components/ExperimentSelectorModal.test.ts +119 -13
  96. package/src/__tests__/components/GeneratedPluginView.test.ts +22 -1
  97. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  98. package/src/__tests__/components/PluginWorkspaceView.test.ts +7 -0
  99. package/src/__tests__/components/ResourcePickerListInternal.test.ts +0 -20
  100. package/src/__tests__/components/SampleSelector.test.ts +13 -8
  101. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  102. package/src/__tests__/components/StepWizard.test.ts +11 -0
  103. package/src/__tests__/components/WellPlate.decoration.test.ts +11 -4
  104. package/src/__tests__/components/deprecationTags.test.ts +1 -1
  105. package/src/__tests__/composables/useAppExperiment.test.ts +27 -1
  106. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  107. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  108. package/src/__tests__/styles/baseControlsRules.test.ts +6 -2
  109. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  110. package/src/__tests__/styles/cssTokens.test.ts +2 -2
  111. package/src/__tests__/styles/menusShellRefresh.test.ts +14 -10
  112. package/src/__tests__/utils/plotlyTemplate.test.ts +4 -4
  113. package/src/__tests__/utils/time.test.ts +18 -1
  114. package/src/components/AdductText.story.vue +7 -0
  115. package/src/components/AdductText.vue +1 -1
  116. package/src/components/AlertBox.story.vue +2 -2
  117. package/src/components/AlertBox.vue +18 -16
  118. package/src/components/AppSidebar.story.vue +0 -28
  119. package/src/components/AppTopBar.story.vue +47 -12
  120. package/src/components/AppTopBar.vue +118 -114
  121. package/src/components/ArtifactSaveDialog.story.vue +23 -0
  122. package/src/components/ArtifactSaveDialog.vue +102 -12
  123. package/src/components/AuditTrail.story.vue +2 -1
  124. package/src/components/AuditTrail.vue +2 -21
  125. package/src/components/Avatar.vue +10 -14
  126. package/src/components/BaseSelect.multiple.story.vue +13 -2
  127. package/src/components/BaseSelect.vue +4 -3
  128. package/src/components/BatchProgressList.vue +35 -25
  129. package/src/components/ChartContainer.story.vue +2 -1
  130. package/src/components/ChartContainer.vue +8 -6
  131. package/src/components/ConfirmDialog.story.vue +1 -1
  132. package/src/components/EmptyState.vue +1 -1
  133. package/src/components/ExperimentPopover.story.vue +165 -53
  134. package/src/components/ExperimentPopover.vue +169 -187
  135. package/src/components/ExperimentSelectorModal.story.vue +40 -36
  136. package/src/components/ExperimentSelectorModal.vue +124 -110
  137. package/src/components/FormField.story.vue +8 -48
  138. package/src/components/GeneratedPluginView.vue +7 -1
  139. package/src/components/InstrumentStateBadge.vue +1 -1
  140. package/src/components/JobsStatusTray.vue +1 -1
  141. package/src/components/LoadingSpinner.vue +1 -1
  142. package/src/components/NumberInput.vue +3 -6
  143. package/src/components/PluginIcon.story.vue +2 -10
  144. package/src/components/PluginIcon.vue +2 -2
  145. package/src/components/PluginWorkspaceView.story.vue +1 -1
  146. package/src/components/RuntimeUpdateNotice.vue +1 -1
  147. package/src/components/SampleSelector.story.vue +1 -1
  148. package/src/components/SampleSelector.vue +27 -37
  149. package/src/components/SampleSelectorGroupNode.vue +1 -1
  150. package/src/components/SectionCard.story.vue +2 -2
  151. package/src/components/SequenceProgressBar.story.vue +9 -0
  152. package/src/components/SequenceProgressBar.vue +6 -1
  153. package/src/components/SettingsModal.schema.ts +1 -1
  154. package/src/components/SettingsModal.vue +2 -2
  155. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  156. package/src/components/SmartGroupManual.story.vue +1 -1
  157. package/src/components/StepWizard.story.vue +33 -0
  158. package/src/components/StepWizard.vue +8 -1
  159. package/src/components/WellPlate.story.vue +3 -1
  160. package/src/components/WellPlate.vue +7 -0
  161. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  162. package/src/components/internal/DatePickerDateInternal.vue +16 -40
  163. package/src/components/internal/DatePickerDateTimeInternal.vue +3 -13
  164. package/src/components/internal/DatePickerTimeInternal.vue +5 -8
  165. package/src/components/internal/ResourcePickerListInternal.vue +45 -85
  166. package/src/components/internal/SelectMultipleInternal.vue +182 -65
  167. package/src/components/internal/SelectSearchableInternal.vue +2 -3
  168. package/src/composables/createClient.ts +2 -0
  169. package/src/composables/index.ts +1 -0
  170. package/src/composables/pluginIdentity.ts +31 -0
  171. package/src/composables/pluginWorkspaceModel.ts +2 -2
  172. package/src/composables/useAppExperiment.ts +20 -0
  173. package/src/composables/useCalendarGrid.ts +4 -3
  174. package/src/composables/useExperimentSelector.ts +77 -31
  175. package/src/composables/usePluginWorkspace.ts +1 -1
  176. package/src/styles/components/adduct-text.css +13 -5
  177. package/src/styles/components/alert-box.css +39 -58
  178. package/src/styles/components/app-layout.css +6 -5
  179. package/src/styles/components/app-page-selector.css +3 -1
  180. package/src/styles/components/app-pill-nav.css +11 -12
  181. package/src/styles/components/app-sidebar.css +9 -18
  182. package/src/styles/components/app-top-bar.css +57 -55
  183. package/src/styles/components/artifact-save-dialog.css +153 -2
  184. package/src/styles/components/audit-trail.css +16 -19
  185. package/src/styles/components/avatar.css +6 -4
  186. package/src/styles/components/batch-progress-list.css +38 -36
  187. package/src/styles/components/button.css +28 -59
  188. package/src/styles/components/calendar.css +12 -12
  189. package/src/styles/components/chart-container.css +34 -23
  190. package/src/styles/components/checkbox.css +2 -12
  191. package/src/styles/components/collapsible-card.css +27 -29
  192. package/src/styles/components/confirm-dialog.css +13 -14
  193. package/src/styles/components/dataframe.css +12 -4
  194. package/src/styles/components/date-picker.css +80 -92
  195. package/src/styles/components/datetime-picker.css +31 -43
  196. package/src/styles/components/divider.css +20 -20
  197. package/src/styles/components/dose-calculator.css +3 -3
  198. package/src/styles/components/empty-state.css +20 -17
  199. package/src/styles/components/experiment-code-badge.css +2 -0
  200. package/src/styles/components/experiment-popover.css +174 -329
  201. package/src/styles/components/experiment-selector-modal.css +75 -56
  202. package/src/styles/components/file-picker.css +3 -3
  203. package/src/styles/components/file-uploader.css +38 -49
  204. package/src/styles/components/form-builder.css +3 -3
  205. package/src/styles/components/formula-input.css +1 -1
  206. package/src/styles/components/icon-button.css +18 -24
  207. package/src/styles/components/input.css +5 -4
  208. package/src/styles/components/instrument-monitor.css +13 -15
  209. package/src/styles/components/jobs-status-tray.css +31 -25
  210. package/src/styles/components/modal.css +2 -4
  211. package/src/styles/components/molecule-input.css +2 -2
  212. package/src/styles/components/multi-select.css +65 -117
  213. package/src/styles/components/number-input.css +26 -19
  214. package/src/styles/components/pill.css +3 -2
  215. package/src/styles/components/plate-editor.css +0 -1
  216. package/src/styles/components/plugin-icon.css +26 -23
  217. package/src/styles/components/popover.css +2 -2
  218. package/src/styles/components/presence-avatars.css +1 -1
  219. package/src/styles/components/protocol-step-editor.css +1 -3
  220. package/src/styles/components/resource-card.css +2 -2
  221. package/src/styles/components/resource-picker-list.css +6 -57
  222. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  223. package/src/styles/components/sample-selector.css +95 -79
  224. package/src/styles/components/schedule-calendar.css +8 -8
  225. package/src/styles/components/searchable-select.css +12 -12
  226. package/src/styles/components/section-card.css +28 -47
  227. package/src/styles/components/segmented-control.css +18 -15
  228. package/src/styles/components/select.css +3 -3
  229. package/src/styles/components/sequence-input.css +2 -2
  230. package/src/styles/components/sequence-progress-bar.css +17 -8
  231. package/src/styles/components/smart-group.css +18 -18
  232. package/src/styles/components/step-wizard.css +52 -16
  233. package/src/styles/components/tabs.css +2 -2
  234. package/src/styles/components/textarea.css +3 -3
  235. package/src/styles/components/time-picker.css +36 -21
  236. package/src/styles/components/toast.css +12 -10
  237. package/src/styles/components/toggle.css +1 -11
  238. package/src/styles/components/tooltip.css +10 -9
  239. package/src/styles/components/unit-input.css +8 -7
  240. package/src/styles/components/well-plate.css +9 -2
  241. package/src/styles/variables.css +106 -75
  242. package/src/types/componentWorkflowTypes.ts +2 -0
  243. package/src/types/generated/platformContext.ts +1 -0
  244. package/src/types/generated-ui.ts +4 -0
  245. package/src/utils/time.ts +21 -0
  246. package/dist/ActionMenu-CScINahU.js.map +0 -1
  247. package/dist/AppSidebar-BmiiPfz9.js.map +0 -1
  248. package/dist/BaseModal-DfRIuVoj.js.map +0 -1
  249. package/dist/ExperimentPopover-C4sGw-is.js +0 -359
  250. package/dist/ExperimentPopover-C4sGw-is.js.map +0 -1
  251. package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +0 -1
  252. package/dist/SettingsModal-CSLE31yg.js.map +0 -1
  253. package/dist/data-C2PwI_dn.js.map +0 -1
  254. package/dist/lab-DLwRl_Ql.js.map +0 -1
  255. package/dist/records-BzTcxekG.js.map +0 -1
  256. package/dist/runtime-D6gVat6r.js.map +0 -1
  257. package/dist/useListReorder-CcbEYxX-.js.map +0 -1
  258. package/dist/useRackEditor-BD5NIo5s.js.map +0 -1
  259. package/dist/useRealtime-PalKue84.js.map +0 -1
  260. package/dist/useRequest-D5JDfsgZ.js +0 -76
  261. package/dist/useRequest-D5JDfsgZ.js.map +0 -1
@@ -1,93 +1,112 @@
1
- /* ExperimentSelectorModal: filters beside the shared ResourcePickerList search (8b). */
1
+ /* ExperimentSelectorModal: filter triggers beside the shared ResourcePickerList search,
2
+ which wraps the row. */
2
3
 
3
- .mint-experiment-selector__filters-advanced {
4
- display: flex;
5
- align-items: center;
6
- gap: 0.5rem;
7
- flex-wrap: wrap;
8
- padding: 0 1.25rem;
4
+ /* The search and filters sit in a toolbar band under the header hairline; the
5
+ list starts directly below the band's border. */
6
+ .mint-resource-picker.mint-experiment-selector {
7
+ gap: 0;
9
8
  }
10
9
 
11
- .mint-experiment-selector__filter-select {
12
- flex-shrink: 0;
13
- width: 10rem;
10
+ .mint-experiment-selector .mint-resource-picker__toolbar {
11
+ padding: 0.75rem 1rem;
12
+ border-bottom: 1px solid var(--border-color);
13
+ }
14
+
15
+ .mint-experiment-selector .mint-resource-picker__frame {
16
+ border-top: 0;
17
+ }
18
+
19
+ .mint-experiment-selector .mint-resource-picker__error {
20
+ margin-top: 1rem;
14
21
  }
15
22
 
16
- /* "Filters" toggle button */
17
- .mint-experiment-selector__filters-toggle {
23
+ .mint-experiment-selector .mint-resource-picker__search {
24
+ min-height: var(--form-height-md);
25
+ }
26
+
27
+ /* Status / Project / Type menu triggers and the Mine toggle */
28
+ .mint-experiment-selector__toggle {
18
29
  display: inline-flex;
19
30
  align-items: center;
20
31
  gap: 0.375rem;
21
- min-height: 2.25rem;
22
- padding: 0.5rem 0.75rem;
32
+ max-width: 180px;
33
+ height: var(--form-height-sm);
34
+ padding: 0 0.5rem 0 0.625rem;
23
35
  border: 1px solid var(--border-color);
24
36
  border-radius: var(--radius-md);
25
- background: var(--bg-primary);
26
- color: var(--text-secondary);
27
- font-size: 0.8125rem;
37
+ background: var(--bg-card);
38
+ font-family: inherit;
39
+ font-size: 0.75rem;
28
40
  font-weight: 500;
41
+ color: var(--text-secondary-strong);
29
42
  cursor: pointer;
30
43
  white-space: nowrap;
31
- position: relative;
32
44
  transition:
33
- background-color 0.15s ease,
34
- border-color 0.15s ease,
35
- color 0.15s ease,
36
- box-shadow 0.15s ease;
45
+ background-color var(--mint-transition),
46
+ border-color var(--mint-transition),
47
+ color var(--mint-transition);
37
48
  }
38
49
 
39
- .mint-experiment-selector__filters-toggle:hover {
40
- border-color: var(--color-primary);
41
- background-color: var(--bg-hover);
42
- color: var(--text-primary);
50
+ .mint-experiment-selector__toggle:hover {
51
+ border-color: var(--border-strong);
43
52
  }
44
53
 
45
- .mint-experiment-selector__filters-toggle:focus-visible {
54
+ .mint-experiment-selector__toggle:focus-visible {
46
55
  outline: none;
47
56
  box-shadow: var(--focus-ring);
48
57
  }
49
58
 
50
- .mint-experiment-selector__filters-toggle--active {
51
- color: var(--color-primary);
52
- border-color: var(--color-primary);
53
- background-color: color-mix(in srgb, var(--color-primary) 8%, transparent);
59
+ .mint-experiment-selector__toggle--active,
60
+ .mint-experiment-selector__toggle--active:hover {
61
+ background: var(--color-primary-soft);
62
+ border-color: var(--color-primary-border);
63
+ color: var(--text-primary);
54
64
  }
55
65
 
56
- html.dark .mint-experiment-selector__filters-toggle--active {
57
- background-color: color-mix(in srgb, var(--color-primary) 16%, transparent);
66
+ /* A long project name ends in an ellipsis. */
67
+ .mint-experiment-selector__toggle-label {
68
+ overflow: hidden;
69
+ text-overflow: ellipsis;
58
70
  }
59
71
 
60
- /* Active filter badge dot */
61
- .mint-experiment-selector__filters-dot {
62
- width: 6px;
63
- height: 6px;
64
- border-radius: 50%;
65
- background-color: var(--color-primary);
72
+ .mint-experiment-selector__toggle svg {
66
73
  flex-shrink: 0;
67
74
  }
68
75
 
69
- /* Group toggle checkbox label */
70
- .mint-experiment-selector__group-toggle {
71
- display: inline-flex;
72
- align-items: center;
73
- gap: 0.375rem;
74
- min-height: 2.25rem;
75
- font-size: 0.8125rem;
76
- color: var(--text-secondary);
77
- cursor: pointer;
78
- white-space: nowrap;
79
- user-select: none;
80
- margin-left: auto;
76
+ /* Status dot of the active status filter */
77
+ .mint-experiment-selector__dot {
78
+ flex-shrink: 0;
79
+ width: 0.375rem;
80
+ height: 0.375rem;
81
+ margin: 0 1px;
82
+ border-radius: 9999px;
83
+ background-color: var(--text-muted);
81
84
  }
82
85
 
83
- .mint-experiment-selector__group-checkbox {
84
- width: 1rem;
85
- height: 1rem;
86
- accent-color: var(--color-primary);
86
+ .mint-experiment-selector__dot--primary { background-color: var(--color-primary); }
87
+ .mint-experiment-selector__dot--success { background-color: var(--mint-success); }
88
+ .mint-experiment-selector__dot--warning { background-color: var(--mint-warning); }
89
+ .mint-experiment-selector__dot--error { background-color: var(--mint-error); }
90
+ .mint-experiment-selector__dot--info { background-color: var(--mint-info); }
91
+
92
+ /* "Clear N" text button */
93
+ .mint-experiment-selector__clear-filters {
94
+ padding: 0 0.25rem;
95
+ border: none;
96
+ border-radius: var(--radius-sm);
97
+ background: none;
98
+ font-family: inherit;
99
+ font-size: 0.75rem;
100
+ font-weight: 500;
101
+ color: var(--_ink-primary);
87
102
  cursor: pointer;
88
103
  }
89
104
 
90
- .mint-experiment-selector__group-checkbox:focus-visible {
105
+ .mint-experiment-selector__clear-filters:hover {
106
+ text-decoration: underline;
107
+ }
108
+
109
+ .mint-experiment-selector__clear-filters:focus-visible {
91
110
  outline: none;
92
111
  box-shadow: var(--focus-ring);
93
112
  }
@@ -82,7 +82,7 @@
82
82
  color: var(--text-secondary);
83
83
  white-space: nowrap;
84
84
  cursor: pointer;
85
- transition: background-color 150ms ease;
85
+ transition: background-color var(--mint-transition);
86
86
  }
87
87
  .mint-picker__crumb:hover {
88
88
  background: var(--bg-hover);
@@ -115,7 +115,7 @@
115
115
  font: inherit;
116
116
  font-size: 12px;
117
117
  cursor: pointer;
118
- transition: background-color 150ms ease;
118
+ transition: background-color var(--mint-transition);
119
119
  }
120
120
  .mint-picker__scope,
121
121
  .mint-picker__sort {
@@ -213,7 +213,7 @@
213
213
  font-size: 13px;
214
214
  color: var(--text-primary);
215
215
  cursor: pointer;
216
- transition: background-color 150ms ease;
216
+ transition: background-color var(--mint-transition);
217
217
  }
218
218
  .mint-picker__row:hover {
219
219
  background: var(--bg-hover);
@@ -14,16 +14,17 @@
14
14
 
15
15
  .mint-file-uploader__dropzone {
16
16
  position: relative;
17
- border: 2px dashed var(--border-color);
17
+ border: 1px dashed var(--border-strong);
18
18
  border-radius: var(--radius-lg);
19
19
  cursor: pointer;
20
- background: var(--bg-secondary);
21
- transition: border-color 0.15s ease, background-color 0.15s ease;
20
+ background: var(--bg-primary);
21
+ transition: border-color var(--mint-transition), background-color var(--mint-transition);
22
22
  }
23
23
 
24
- .mint-file-uploader__dropzone:hover {
24
+ .mint-file-uploader__dropzone:hover,
25
+ .mint-file-uploader__dropzone--dragover {
25
26
  border-color: var(--color-primary);
26
- background: color-mix(in srgb, var(--color-primary) 3%, var(--bg-secondary));
27
+ background: var(--color-primary-soft);
27
28
  }
28
29
 
29
30
  .mint-file-uploader__dropzone:focus-visible {
@@ -31,11 +32,6 @@
31
32
  outline-offset: 2px;
32
33
  }
33
34
 
34
- .mint-file-uploader__dropzone--dragover {
35
- border-color: var(--color-primary);
36
- background: color-mix(in srgb, var(--color-primary) 5%, var(--bg-secondary));
37
- }
38
-
39
35
  .mint-file-uploader__dropzone--disabled {
40
36
  opacity: var(--mint-disabled-opacity);
41
37
  cursor: not-allowed;
@@ -69,19 +65,14 @@
69
65
  }
70
66
 
71
67
  .mint-file-uploader__icon {
72
- width: 2rem;
73
- height: 2rem;
74
- color: var(--text-muted);
68
+ width: 1.25rem;
69
+ height: 1.25rem;
70
+ color: var(--text-secondary);
75
71
  margin-bottom: 0.5rem;
76
72
  }
77
73
 
78
- .mint-file-uploader__dropzone:hover .mint-file-uploader__icon,
79
- .mint-file-uploader__dropzone--dragover .mint-file-uploader__icon {
80
- color: var(--color-primary);
81
- }
82
-
83
74
  .mint-file-uploader__text {
84
- color: var(--text-secondary);
75
+ color: var(--text-primary);
85
76
  font-size: 0.8125rem;
86
77
  font-weight: 500;
87
78
  margin: 0;
@@ -104,10 +95,12 @@
104
95
  .mint-file-uploader__list {
105
96
  display: flex;
106
97
  flex-direction: column;
107
- gap: 0.375rem;
108
98
  list-style: none;
109
99
  margin: 0;
110
100
  padding: 0;
101
+ border: 1px solid var(--border-color);
102
+ border-radius: var(--radius-lg);
103
+ overflow: hidden;
111
104
  }
112
105
 
113
106
  .mint-file-uploader-item-enter-active {
@@ -132,21 +125,19 @@
132
125
  transition: transform 0.2s ease-out;
133
126
  }
134
127
 
135
- /* File row */
128
+ /* File row — hairline rows inside one bordered list. */
136
129
  .mint-file-uploader__file {
137
130
  display: flex;
138
131
  align-items: center;
139
132
  justify-content: space-between;
140
- gap: 0.5rem;
133
+ gap: 0.625rem;
141
134
  padding: 0.5rem 0.625rem;
142
- border-radius: var(--radius-md);
143
- background-color: var(--bg-secondary);
144
- border: 1px solid var(--border-color);
145
- transition: border-color 0.15s ease;
135
+ background-color: var(--bg-card);
136
+ border-bottom: 1px solid var(--border-light);
146
137
  }
147
138
 
148
- .mint-file-uploader__file:hover {
149
- border-color: color-mix(in srgb, var(--color-primary) 30%, var(--border-color));
139
+ .mint-file-uploader__file:last-child {
140
+ border-bottom: 0;
150
141
  }
151
142
 
152
143
  .mint-file-uploader__file-info {
@@ -182,7 +173,8 @@
182
173
  }
183
174
 
184
175
  .mint-file-uploader__file-name {
185
- font-size: 0.8125rem;
176
+ font-family: var(--font-mono);
177
+ font-size: 0.75rem;
186
178
  font-weight: 500;
187
179
  color: var(--text-primary);
188
180
  white-space: nowrap;
@@ -205,20 +197,20 @@
205
197
  align-items: center;
206
198
  justify-content: center;
207
199
  flex-shrink: 0;
208
- width: 1.75rem;
209
- height: 1.75rem;
200
+ width: 1.5rem;
201
+ height: 1.5rem;
210
202
  padding: 0;
211
- border-radius: var(--radius-sm);
203
+ border-radius: var(--radius);
212
204
  color: var(--text-muted);
213
205
  background: transparent;
214
206
  border: none;
215
207
  cursor: pointer;
216
- transition: color 0.15s ease, background-color 0.15s ease;
208
+ transition: color var(--mint-transition), background-color var(--mint-transition);
217
209
  }
218
210
 
219
211
  .mint-file-uploader__remove-btn:hover {
220
- color: var(--mint-error);
221
- background-color: var(--mint-error-bg);
212
+ color: var(--text-primary);
213
+ background-color: var(--bg-hover);
222
214
  }
223
215
 
224
216
  .mint-file-uploader__remove-icon {
@@ -235,14 +227,9 @@
235
227
  align-items: center;
236
228
  justify-content: space-between;
237
229
  padding: 0.75rem;
238
- border-radius: var(--radius-md);
239
- background-color: var(--bg-secondary);
230
+ border-radius: var(--radius-lg);
231
+ background-color: var(--bg-card);
240
232
  border: 1px solid var(--border-color);
241
- transition: border-color 0.15s ease;
242
- }
243
-
244
- .mint-file-uploader__folder-summary:hover {
245
- border-color: color-mix(in srgb, var(--color-primary) 30%, var(--border-color));
246
233
  }
247
234
 
248
235
  .mint-file-uploader__folder-info {
@@ -256,17 +243,19 @@
256
243
  display: flex;
257
244
  align-items: center;
258
245
  justify-content: center;
259
- width: 2.25rem;
260
- height: 2.25rem;
246
+ width: 2rem;
247
+ height: 2rem;
261
248
  flex-shrink: 0;
262
- border-radius: var(--radius-sm);
263
- background: color-mix(in srgb, var(--color-primary) 8%, transparent);
249
+ box-sizing: border-box;
250
+ border-radius: var(--radius-md);
251
+ border: 1px solid var(--border-color);
252
+ background: var(--bg-card);
264
253
  }
265
254
 
266
255
  .mint-file-uploader__folder-icon {
267
- width: 1.25rem;
268
- height: 1.25rem;
269
- color: var(--color-primary);
256
+ width: 1rem;
257
+ height: 1rem;
258
+ color: var(--text-secondary);
270
259
  }
271
260
 
272
261
  .mint-file-uploader__folder-details {
@@ -63,7 +63,7 @@
63
63
  .mint-form-actions {
64
64
  display: flex;
65
65
  align-items: center;
66
- gap: 0.75rem;
67
- padding-top: 1rem;
68
- border-top: 1px solid var(--border-color);
66
+ gap: 0.5rem;
67
+ padding-top: 0.75rem;
68
+ border-top: 1px solid var(--border-light);
69
69
  }
@@ -17,7 +17,7 @@
17
17
  background-color: var(--bg-secondary);
18
18
  border: 1px solid var(--border-color);
19
19
  border-radius: var(--radius-md);
20
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
20
+ transition: border-color var(--mint-transition), box-shadow var(--mint-transition);
21
21
  }
22
22
 
23
23
  .mint-formula-input__field--sm { min-height: var(--form-height-sm); }
@@ -6,26 +6,16 @@
6
6
  align-items: center;
7
7
  justify-content: center;
8
8
  border-radius: var(--radius-md);
9
- /* Flat surface (1d): no gradient overlay, no hover lift. */
9
+ /* Flat surface (1d): no gradient overlay, no hover lift, no shadow. */
10
10
  transition:
11
- color 0.15s var(--mint-ease-out-quart, cubic-bezier(0.25, 1, 0.5, 1)),
12
- background-color 0.15s var(--mint-ease-out-quart, cubic-bezier(0.25, 1, 0.5, 1)),
13
- border-color 0.15s var(--mint-ease-out-quart, cubic-bezier(0.25, 1, 0.5, 1)),
14
- box-shadow 0.15s var(--mint-ease-out-quart, cubic-bezier(0.25, 1, 0.5, 1));
11
+ color var(--mint-transition),
12
+ background-color var(--mint-transition),
13
+ border-color var(--mint-transition);
15
14
  cursor: pointer;
16
15
  border: none;
17
16
  box-sizing: border-box;
18
17
  }
19
18
 
20
- .mint-icon-button:hover:not(.mint-icon-button--disabled):not(.mint-icon-button--ghost):not(:focus-visible) {
21
- box-shadow: var(--shadow-sm);
22
- }
23
-
24
- .mint-icon-button:active:not(.mint-icon-button--disabled) {
25
- box-shadow: none;
26
- transition-duration: 0.05s;
27
- }
28
-
29
19
  .mint-icon-button:focus-visible {
30
20
  outline: none;
31
21
  box-shadow: var(--focus-ring-offset);
@@ -48,7 +38,7 @@
48
38
  /* Variants */
49
39
  .mint-icon-button--primary {
50
40
  background-color: var(--color-primary);
51
- color: white;
41
+ color: var(--text-on-accent);
52
42
  }
53
43
 
54
44
  .mint-icon-button--primary:hover:not(.mint-icon-button--disabled) {
@@ -63,11 +53,12 @@
63
53
 
64
54
  .mint-icon-button--secondary:hover:not(.mint-icon-button--disabled) {
65
55
  background-color: var(--bg-tertiary);
56
+ border-color: var(--border-strong);
66
57
  }
67
58
 
68
59
  .mint-icon-button--cta {
69
60
  background-color: var(--color-cta);
70
- color: white;
61
+ color: var(--text-on-accent);
71
62
  }
72
63
 
73
64
  .mint-icon-button--cta:hover:not(.mint-icon-button--disabled) {
@@ -83,13 +74,20 @@
83
74
  background-color: var(--mint-error-hover);
84
75
  }
85
76
 
77
+ /* Success shares the accent fill (one accent). */
86
78
  .mint-icon-button--success {
87
- background-color: var(--mint-success);
88
- color: white;
79
+ background-color: var(--color-primary);
80
+ color: var(--text-on-accent);
89
81
  }
90
82
 
91
83
  .mint-icon-button--success:hover:not(.mint-icon-button--disabled) {
92
- background-color: var(--mint-success-hover);
84
+ background-color: var(--color-primary-hover);
85
+ }
86
+
87
+ .mint-icon-button--primary:active:not(.mint-icon-button--disabled),
88
+ .mint-icon-button--cta:active:not(.mint-icon-button--disabled),
89
+ .mint-icon-button--success:active:not(.mint-icon-button--disabled) {
90
+ background-color: var(--color-primary-pressed);
93
91
  }
94
92
 
95
93
  .mint-icon-button--ghost {
@@ -174,10 +172,6 @@
174
172
 
175
173
  @media (prefers-reduced-motion: reduce) {
176
174
  .mint-icon-button {
177
- transition:
178
- color 0.15s ease,
179
- background-color 0.15s ease,
180
- border-color 0.15s ease,
181
- box-shadow 0.15s ease;
175
+ transition: none;
182
176
  }
183
177
  }
@@ -45,21 +45,22 @@
45
45
  cursor: not-allowed;
46
46
  }
47
47
 
48
- /* Size variants */
48
+ /* Size variants — the vertical padding stays under --form-height-*, so the
49
+ density token sets the height (28/32/40px, comfortable 32/36/48px). */
49
50
  .mint-input--sm {
50
- padding: 0.375rem 0.625rem;
51
+ padding: 0.25rem 0.625rem;
51
52
  font-size: 0.8125rem;
52
53
  min-height: var(--form-height-sm);
53
54
  }
54
55
 
55
56
  .mint-input--md {
56
- padding: 0.5rem 0.75rem;
57
+ padding: 0.375rem 0.75rem;
57
58
  font-size: 0.875rem;
58
59
  min-height: var(--form-height-md);
59
60
  }
60
61
 
61
62
  .mint-input--lg {
62
- padding: 0.75rem 1rem;
63
+ padding: 0.5rem 1rem;
63
64
  font-size: 1rem;
64
65
  min-height: var(--form-height-lg);
65
66
  }
@@ -6,46 +6,36 @@
6
6
  gap: 0.375rem;
7
7
  color: var(--text-secondary-strong);
8
8
  font-size: 0.75rem;
9
- font-weight: 400;
9
+ font-weight: 500;
10
10
  line-height: 1.35;
11
11
  white-space: nowrap;
12
12
  }
13
13
 
14
14
  .mint-instrument-state__dot {
15
15
  flex-shrink: 0;
16
- width: 0.375rem;
17
- height: 0.375rem;
16
+ width: 0.5rem;
17
+ height: 0.5rem;
18
18
  border-radius: 9999px;
19
19
  background: var(--mint-instrument-tone);
20
20
  }
21
21
 
22
22
  .mint-instrument-state--success { --mint-instrument-tone: var(--mint-success); }
23
23
  .mint-instrument-state--warning { --mint-instrument-tone: var(--mint-warning); }
24
- .mint-instrument-state--info { --mint-instrument-tone: var(--mint-info); }
25
24
  .mint-instrument-state--muted { --mint-instrument-tone: var(--text-muted); }
26
25
 
27
26
  .mint-instrument-state--error {
28
27
  --mint-instrument-tone: var(--mint-error);
29
28
  color: var(--_ink-error);
30
- font-weight: 600;
31
29
  }
32
30
 
33
31
  /* Offline: hollow dot — shape, not a fainter color. */
34
32
  .mint-instrument-state--offline .mint-instrument-state__dot {
35
33
  background: transparent;
36
- box-shadow: inset 0 0 0 1.5px var(--_control-border-strong);
34
+ box-shadow: inset 0 0 0 1.5px var(--text-muted);
37
35
  }
38
36
 
39
- /* Never reported: a short dash. */
37
+ /* Never reported: a hollow square. */
40
38
  .mint-instrument-state--never .mint-instrument-state__dot {
41
- width: 0.5rem;
42
- height: 2px;
43
- border-radius: 1px;
44
- background: var(--_control-border-strong);
45
- }
46
-
47
- /* Inactive: a hollow square. */
48
- .mint-instrument-state--inactive .mint-instrument-state__dot {
49
39
  width: 7px;
50
40
  height: 7px;
51
41
  border-radius: 1.5px;
@@ -53,6 +43,14 @@
53
43
  box-shadow: inset 0 0 0 1.5px var(--text-muted);
54
44
  }
55
45
 
46
+ /* Inactive: a short dash. */
47
+ .mint-instrument-state--inactive .mint-instrument-state__dot {
48
+ width: 8px;
49
+ height: 2px;
50
+ border-radius: 1px;
51
+ background: var(--text-muted);
52
+ }
53
+
56
54
  .mint-instrument-state--pulse .mint-instrument-state__dot {
57
55
  animation: mint-instrument-pulse 1.6s ease-in-out infinite;
58
56
  }