@morscherlab/mint-sdk 1.4.0-beta.2 → 1.4.0-beta.20

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 (330) hide show
  1. package/README.md +14 -3
  2. package/dist/{ActionMenu-CScINahU.js → AlertBox-CzLg0UaL.js} +40 -209
  3. package/dist/AlertBox-CzLg0UaL.js.map +1 -0
  4. package/dist/{AppSidebar-BmiiPfz9.js → AppSidebar-6oTT-gPO.js} +1249 -239
  5. package/dist/AppSidebar-6oTT-gPO.js.map +1 -0
  6. package/dist/{ConfirmDialog-CJ7hqYUP.js → ConfirmDialog-CSls2Nuv.js} +2 -2
  7. package/dist/{ConfirmDialog-CJ7hqYUP.js.map → ConfirmDialog-CSls2Nuv.js.map} +1 -1
  8. package/dist/ExperimentPopover-9l4QZlvQ.js +337 -0
  9. package/dist/ExperimentPopover-9l4QZlvQ.js.map +1 -0
  10. package/dist/{ExperimentSelectorModal-D-9z7cNx.js → ExperimentSelectorModal-pR5fK3pA.js} +244 -211
  11. package/dist/ExperimentSelectorModal-pR5fK3pA.js.map +1 -0
  12. package/dist/{SegmentedControl-DERBN-Xd.js → SegmentedControl-CJ7EAmOq.js} +2 -2
  13. package/dist/{SegmentedControl-DERBN-Xd.js.map → SegmentedControl-CJ7EAmOq.js.map} +1 -1
  14. package/dist/{SettingsModal-CSLE31yg.js → SettingsModal-Dyitgzfp.js} +28 -27
  15. package/dist/SettingsModal-Dyitgzfp.js.map +1 -0
  16. package/dist/__stories__/experiment-helpers.d.ts +10 -0
  17. package/dist/__tests__/components/AppTopBarOnboarding.test.d.ts +1 -0
  18. package/dist/__tests__/composables/useOnboarding.test.d.ts +1 -0
  19. package/dist/__tests__/styles/paletteTokens.test.d.ts +1 -0
  20. package/dist/__tests__/styles/v2AuditRules.test.d.ts +1 -0
  21. package/dist/components/AppSidebar.vue.d.ts +1 -1
  22. package/dist/components/AppTopBar.vue.d.ts +20 -5
  23. package/dist/components/ArtifactSaveDialog.vue.d.ts +9 -1
  24. package/dist/components/AuditTrail.vue.d.ts +1 -1
  25. package/dist/components/BaseButton.vue.d.ts +4 -2
  26. package/dist/components/BaseSelect.vue.d.ts +2 -2
  27. package/dist/components/ChartContainer.vue.d.ts +2 -0
  28. package/dist/components/DatePicker.vue.d.ts +1 -1
  29. package/dist/components/ExperimentPopover.vue.d.ts +18 -0
  30. package/dist/components/ExperimentSelectorModal.vue.d.ts +15 -5
  31. package/dist/components/FilePicker.vue.d.ts +1 -1
  32. package/dist/components/FileUploader.vue.d.ts +2 -2
  33. package/dist/components/JobsStatusTray.vue.d.ts +15 -4
  34. package/dist/components/PluginIcon.vue.d.ts +2 -2
  35. package/dist/components/PluginWorkspaceView.props.d.ts +3 -0
  36. package/dist/components/PluginWorkspaceView.vue.d.ts +3 -0
  37. package/dist/components/SampleSelector.vue.d.ts +6 -6
  38. package/dist/components/SequenceProgressBar.vue.d.ts +3 -0
  39. package/dist/components/SmartGroupFieldRecipe.vue.d.ts +1 -1
  40. package/dist/components/StepWizard.vue.d.ts +3 -0
  41. package/dist/components/internal/AppTopBarOnboardingInternal.vue.d.ts +7 -0
  42. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -1
  43. package/dist/components/internal/AutoGroupModalInternal.vue.d.ts +1 -1
  44. package/dist/components/internal/DatePickerTimeInternal.vue.d.ts +1 -1
  45. package/dist/components/internal/OnboardingLayerInternal.vue.d.ts +7 -0
  46. package/dist/components/internal/ResourcePickerListInternal.vue.d.ts +2 -7
  47. package/dist/components/internal/SelectMultipleInternal.vue.d.ts +4 -0
  48. package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +8 -0
  49. package/dist/composables/createClient.d.ts +2 -0
  50. package/dist/composables/index.d.ts +1 -0
  51. package/dist/composables/pluginIdentity.d.ts +24 -0
  52. package/dist/composables/pluginWorkspaceModel.d.ts +2 -2
  53. package/dist/composables/useAppExperiment.d.ts +8 -0
  54. package/dist/composables/useCalendarGrid.d.ts +1 -1
  55. package/dist/composables/useExperimentSelector.d.ts +6 -2
  56. package/dist/composables/useJobCenter.d.ts +41 -3
  57. package/dist/composables/useOnboarding.d.ts +119 -0
  58. package/dist/composables/usePlatform.d.ts +1 -0
  59. package/dist/{controlSchemaModel-CP5-_nAj.js → controlSchemaModel-DCUOx8ll.js} +2 -2
  60. package/dist/{controlSchemaModel-CP5-_nAj.js.map → controlSchemaModel-DCUOx8ll.js.map} +1 -1
  61. package/dist/{data-C2PwI_dn.js → data-DBnmeBZX.js} +179 -125
  62. package/dist/data-DBnmeBZX.js.map +1 -0
  63. package/dist/data.js +8 -8
  64. package/dist/{experiment-43OJtH7R.js → experiment-DyO54FQB.js} +25 -61
  65. package/dist/experiment-DyO54FQB.js.map +1 -0
  66. package/dist/{experimentStatus-BZmU4czV.js → experimentStatus-BFrKpHAH.js} +3 -3
  67. package/dist/{experimentStatus-BZmU4czV.js.map → experimentStatus-BFrKpHAH.js.map} +1 -1
  68. package/dist/index.js +20 -20
  69. package/dist/{install-DAID6c2-.js → install-qjELyNwc.js} +15 -14
  70. package/dist/{install-DAID6c2-.js.map → install-qjELyNwc.js.map} +1 -1
  71. package/dist/install.js +1 -1
  72. package/dist/{lab-DLwRl_Ql.js → lab-UyTbokQC.js} +136 -148
  73. package/dist/lab-UyTbokQC.js.map +1 -0
  74. package/dist/lab.js +4 -3
  75. package/dist/{records-BzTcxekG.js → records-CR_pYzIP.js} +533 -335
  76. package/dist/records-CR_pYzIP.js.map +1 -0
  77. package/dist/{runtime-D6gVat6r.js → runtime-CoHhBP10.js} +417 -54
  78. package/dist/runtime-CoHhBP10.js.map +1 -0
  79. package/dist/runtime.d.ts +1 -1
  80. package/dist/runtime.js +7 -7
  81. package/dist/{shell-5ju97nOS.js → shell-BDuZf2zb.js} +10 -5
  82. package/dist/{shell-5ju97nOS.js.map → shell-BDuZf2zb.js.map} +1 -1
  83. package/dist/shell.d.ts +1 -0
  84. package/dist/shell.js +6 -6
  85. package/dist/stores/index.d.ts +1 -1
  86. package/dist/stores/index.js +2 -2
  87. package/dist/stores/settings.d.ts +4 -12
  88. package/dist/styles.css +2732 -2083
  89. package/dist/types/componentWorkflowTypes.d.ts +2 -0
  90. package/dist/types/components.d.ts +2 -0
  91. package/dist/types/generated/platformContext.d.ts +1 -0
  92. package/dist/types/generated-ui.d.ts +4 -0
  93. package/dist/types/index.d.ts +1 -1
  94. package/dist/types/jobs.d.ts +9 -0
  95. package/dist/types/platform.d.ts +1 -1
  96. package/dist/{BaseModal-DfRIuVoj.js → useDropdownState-Bb2N4m40.js} +74 -4
  97. package/dist/useDropdownState-Bb2N4m40.js.map +1 -0
  98. package/dist/{useExperimentSamples-CxcnxZ8h.js → useExperimentSamples-Dno1fFMq.js} +4 -4
  99. package/dist/{useExperimentSamples-CxcnxZ8h.js.map → useExperimentSamples-Dno1fFMq.js.map} +1 -1
  100. package/dist/{useListReorder-CcbEYxX-.js → useListReorder-CQ9OCScc.js} +183 -351
  101. package/dist/useListReorder-CQ9OCScc.js.map +1 -0
  102. package/dist/{useRackEditor-BD5NIo5s.js → useRackEditor-wL3kPrRT.js} +73 -59
  103. package/dist/useRackEditor-wL3kPrRT.js.map +1 -0
  104. package/dist/useRealtime-C3whhVvb.js +508 -0
  105. package/dist/useRealtime-C3whhVvb.js.map +1 -0
  106. package/dist/useRequest-CDkrXNU7.js +244 -0
  107. package/dist/useRequest-CDkrXNU7.js.map +1 -0
  108. package/dist/utils/time.d.ts +7 -0
  109. package/package.json +1 -1
  110. package/src/__stories__/experiment-helpers.ts +3 -3
  111. package/src/__tests__/components/AppTopBar.test.ts +257 -3
  112. package/src/__tests__/components/AppTopBarOnboarding.test.ts +160 -0
  113. package/src/__tests__/components/AppTopBarPageSelector.test.ts +125 -9
  114. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  115. package/src/__tests__/components/ArtifactSaveDialog.test.ts +78 -0
  116. package/src/__tests__/components/BaseButton.test.ts +19 -0
  117. package/src/__tests__/components/BaseSelect.multiple.test.ts +87 -32
  118. package/src/__tests__/components/BaseSelect.test.ts +2 -1
  119. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  120. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  121. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  122. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  123. package/src/__tests__/components/DatePicker.datetime.test.ts +6 -0
  124. package/src/__tests__/components/DatePicker.test.ts +21 -0
  125. package/src/__tests__/components/DatePicker.time.test.ts +2 -2
  126. package/src/__tests__/components/EmptyState.test.ts +1 -1
  127. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  128. package/src/__tests__/components/ExperimentSelectorModal.test.ts +153 -14
  129. package/src/__tests__/components/GeneratedPluginView.test.ts +23 -2
  130. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  131. package/src/__tests__/components/JobsStatusTray.test.ts +373 -71
  132. package/src/__tests__/components/PluginWorkspaceView.test.ts +63 -1
  133. package/src/__tests__/components/ResourcePickerListInternal.test.ts +0 -20
  134. package/src/__tests__/components/SampleSelector.test.ts +33 -8
  135. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  136. package/src/__tests__/components/SettingsModal.test.ts +9 -2
  137. package/src/__tests__/components/StepWizard.test.ts +11 -0
  138. package/src/__tests__/components/WellPlate.decoration.test.ts +11 -4
  139. package/src/__tests__/components/deprecationTags.test.ts +1 -1
  140. package/src/__tests__/composables/useAppExperiment.test.ts +27 -1
  141. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  142. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  143. package/src/__tests__/composables/useJobCenter.test.ts +262 -3
  144. package/src/__tests__/composables/useOnboarding.test.ts +317 -0
  145. package/src/__tests__/docs/frontendDocsCatalog.test.ts +4 -3
  146. package/src/__tests__/stores/settings.test.ts +21 -21
  147. package/src/__tests__/styles/baseControlsRules.test.ts +6 -2
  148. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  149. package/src/__tests__/styles/cssTokens.test.ts +6 -3
  150. package/src/__tests__/styles/menusShellRefresh.test.ts +22 -12
  151. package/src/__tests__/styles/paletteTokens.test.ts +44 -0
  152. package/src/__tests__/styles/v2AuditRules.test.ts +104 -0
  153. package/src/__tests__/utils/plotlyTemplate.test.ts +4 -4
  154. package/src/__tests__/utils/time.test.ts +18 -1
  155. package/src/components/AdductText.story.vue +7 -0
  156. package/src/components/AdductText.vue +1 -1
  157. package/src/components/AlertBox.story.vue +2 -2
  158. package/src/components/AlertBox.vue +18 -16
  159. package/src/components/AppSidebar.story.vue +0 -28
  160. package/src/components/AppTopBar.onboarding.story.vue +69 -0
  161. package/src/components/AppTopBar.story.vue +105 -15
  162. package/src/components/AppTopBar.vue +248 -122
  163. package/src/components/ArtifactSaveDialog.story.vue +23 -0
  164. package/src/components/ArtifactSaveDialog.vue +102 -12
  165. package/src/components/AuditTrail.story.vue +2 -1
  166. package/src/components/AuditTrail.vue +2 -21
  167. package/src/components/Avatar.vue +10 -14
  168. package/src/components/BaseButton.vue +16 -2
  169. package/src/components/BaseSelect.multiple.story.vue +13 -2
  170. package/src/components/BaseSelect.vue +4 -3
  171. package/src/components/BatchProgressList.vue +35 -25
  172. package/src/components/ChartContainer.story.vue +2 -1
  173. package/src/components/ChartContainer.vue +8 -6
  174. package/src/components/ConfirmDialog.story.vue +1 -1
  175. package/src/components/EmptyState.vue +1 -1
  176. package/src/components/ExperimentPopover.story.vue +165 -53
  177. package/src/components/ExperimentPopover.vue +169 -187
  178. package/src/components/ExperimentSelectorModal.story.vue +73 -31
  179. package/src/components/ExperimentSelectorModal.vue +144 -111
  180. package/src/components/FormField.story.vue +8 -48
  181. package/src/components/GeneratedPluginView.vue +11 -10
  182. package/src/components/GeneratedResultRenderer.vue +3 -4
  183. package/src/components/InstrumentStateBadge.vue +1 -1
  184. package/src/components/JobsStatusTray.story.vue +97 -43
  185. package/src/components/JobsStatusTray.vue +287 -290
  186. package/src/components/LayoutResizeHandle.story.vue +65 -4
  187. package/src/components/LoadingSpinner.vue +1 -1
  188. package/src/components/NumberInput.vue +3 -6
  189. package/src/components/PluginIcon.story.vue +2 -10
  190. package/src/components/PluginIcon.vue +2 -2
  191. package/src/components/PluginWorkspaceView.props.ts +3 -0
  192. package/src/components/PluginWorkspaceView.story.vue +1 -1
  193. package/src/components/PluginWorkspaceView.vue +17 -0
  194. package/src/components/RuntimeUpdateNotice.vue +1 -1
  195. package/src/components/SampleSelector.story.vue +22 -7
  196. package/src/components/SampleSelector.vue +34 -37
  197. package/src/components/SampleSelectorGroupNode.vue +1 -1
  198. package/src/components/SectionCard.story.vue +35 -2
  199. package/src/components/SequenceProgressBar.story.vue +9 -0
  200. package/src/components/SequenceProgressBar.vue +6 -1
  201. package/src/components/SettingsModal.schema.ts +1 -1
  202. package/src/components/SettingsModal.vue +9 -14
  203. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  204. package/src/components/SmartGroupManual.story.vue +1 -1
  205. package/src/components/StepWizard.story.vue +33 -0
  206. package/src/components/StepWizard.vue +8 -1
  207. package/src/components/WellPlate.story.vue +3 -1
  208. package/src/components/WellPlate.vue +7 -0
  209. package/src/components/internal/AppTopBarOnboardingInternal.vue +172 -0
  210. package/src/components/internal/AppTopBarPageSelectorInternal.vue +140 -72
  211. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  212. package/src/components/internal/DatePickerDateInternal.vue +16 -40
  213. package/src/components/internal/DatePickerDateTimeInternal.vue +3 -13
  214. package/src/components/internal/DatePickerTimeInternal.vue +5 -8
  215. package/src/components/internal/OnboardingLayerInternal.vue +173 -0
  216. package/src/components/internal/ResourcePickerListInternal.vue +45 -85
  217. package/src/components/internal/SelectMultipleInternal.vue +182 -65
  218. package/src/components/internal/SelectSearchableInternal.vue +2 -3
  219. package/src/components/internal/WorkspaceShellInternal.vue +12 -0
  220. package/src/composables/createClient.ts +2 -0
  221. package/src/composables/index.ts +1 -0
  222. package/src/composables/pluginIdentity.ts +31 -0
  223. package/src/composables/pluginWorkspaceModel.ts +2 -2
  224. package/src/composables/useAppExperiment.ts +20 -0
  225. package/src/composables/useCalendarGrid.ts +4 -3
  226. package/src/composables/useExperimentSelector.ts +77 -31
  227. package/src/composables/useJobCenter.ts +188 -6
  228. package/src/composables/useOnboarding.ts +465 -0
  229. package/src/composables/usePluginWorkspace.ts +1 -1
  230. package/src/runtime.ts +2 -1
  231. package/src/shell.ts +17 -0
  232. package/src/stores/index.ts +0 -2
  233. package/src/stores/settings.ts +20 -50
  234. package/src/styles/components/adduct-text.css +13 -5
  235. package/src/styles/components/alert-box.css +39 -58
  236. package/src/styles/components/app-layout.css +7 -5
  237. package/src/styles/components/app-page-selector.css +121 -44
  238. package/src/styles/components/app-pill-nav.css +11 -12
  239. package/src/styles/components/app-sidebar.css +9 -18
  240. package/src/styles/components/app-top-bar.css +219 -55
  241. package/src/styles/components/artifact-save-dialog.css +153 -2
  242. package/src/styles/components/audit-trail.css +16 -19
  243. package/src/styles/components/avatar.css +6 -4
  244. package/src/styles/components/batch-progress-list.css +38 -36
  245. package/src/styles/components/button.css +36 -59
  246. package/src/styles/components/calendar.css +12 -12
  247. package/src/styles/components/chart-container.css +34 -23
  248. package/src/styles/components/checkbox.css +2 -12
  249. package/src/styles/components/collapsible-card.css +27 -29
  250. package/src/styles/components/confirm-dialog.css +13 -14
  251. package/src/styles/components/dataframe.css +13 -5
  252. package/src/styles/components/date-picker.css +80 -92
  253. package/src/styles/components/datetime-picker.css +31 -43
  254. package/src/styles/components/divider.css +20 -20
  255. package/src/styles/components/dose-calculator.css +3 -3
  256. package/src/styles/components/empty-state.css +20 -17
  257. package/src/styles/components/experiment-code-badge.css +2 -0
  258. package/src/styles/components/experiment-popover.css +174 -329
  259. package/src/styles/components/experiment-selector-modal.css +88 -56
  260. package/src/styles/components/file-picker.css +3 -3
  261. package/src/styles/components/file-uploader.css +38 -49
  262. package/src/styles/components/form-builder.css +3 -3
  263. package/src/styles/components/formula-input.css +1 -1
  264. package/src/styles/components/icon-button.css +18 -24
  265. package/src/styles/components/input.css +5 -4
  266. package/src/styles/components/instrument-monitor.css +13 -15
  267. package/src/styles/components/jobs-status-tray.css +140 -296
  268. package/src/styles/components/layout-resize-handle.css +59 -16
  269. package/src/styles/components/modal.css +4 -6
  270. package/src/styles/components/molecule-input.css +2 -2
  271. package/src/styles/components/multi-select.css +65 -117
  272. package/src/styles/components/number-input.css +26 -19
  273. package/src/styles/components/onboarding.css +368 -0
  274. package/src/styles/components/pill.css +3 -2
  275. package/src/styles/components/plate-editor.css +0 -1
  276. package/src/styles/components/plugin-icon.css +26 -23
  277. package/src/styles/components/popover.css +2 -2
  278. package/src/styles/components/presence-avatars.css +1 -1
  279. package/src/styles/components/progress-bar.css +3 -3
  280. package/src/styles/components/protocol-step-editor.css +1 -3
  281. package/src/styles/components/resource-card.css +2 -2
  282. package/src/styles/components/resource-picker-list.css +6 -57
  283. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  284. package/src/styles/components/sample-selector.css +138 -79
  285. package/src/styles/components/schedule-calendar.css +8 -8
  286. package/src/styles/components/searchable-select.css +12 -12
  287. package/src/styles/components/section-card.css +54 -49
  288. package/src/styles/components/segmented-control.css +18 -15
  289. package/src/styles/components/select.css +3 -3
  290. package/src/styles/components/sequence-input.css +2 -2
  291. package/src/styles/components/sequence-progress-bar.css +17 -8
  292. package/src/styles/components/settings-modal.css +7 -2
  293. package/src/styles/components/smart-group.css +18 -18
  294. package/src/styles/components/step-wizard.css +52 -16
  295. package/src/styles/components/tabs.css +2 -2
  296. package/src/styles/components/textarea.css +3 -3
  297. package/src/styles/components/time-picker.css +36 -21
  298. package/src/styles/components/toast.css +12 -10
  299. package/src/styles/components/toggle.css +1 -11
  300. package/src/styles/components/tooltip.css +10 -9
  301. package/src/styles/components/unit-input.css +8 -7
  302. package/src/styles/components/well-plate.css +9 -2
  303. package/src/styles/index.css +1 -0
  304. package/src/styles/variables.css +241 -78
  305. package/src/types/componentWorkflowTypes.ts +2 -0
  306. package/src/types/components.ts +2 -0
  307. package/src/types/generated/platformContext.ts +1 -0
  308. package/src/types/generated-ui.ts +4 -0
  309. package/src/types/index.ts +1 -0
  310. package/src/types/jobs.ts +10 -0
  311. package/src/types/platform.ts +1 -1
  312. package/src/utils/time.ts +21 -0
  313. package/dist/ActionMenu-CScINahU.js.map +0 -1
  314. package/dist/AppSidebar-BmiiPfz9.js.map +0 -1
  315. package/dist/BaseModal-DfRIuVoj.js.map +0 -1
  316. package/dist/ExperimentPopover-C4sGw-is.js +0 -359
  317. package/dist/ExperimentPopover-C4sGw-is.js.map +0 -1
  318. package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +0 -1
  319. package/dist/SettingsModal-CSLE31yg.js.map +0 -1
  320. package/dist/data-C2PwI_dn.js.map +0 -1
  321. package/dist/experiment-43OJtH7R.js.map +0 -1
  322. package/dist/lab-DLwRl_Ql.js.map +0 -1
  323. package/dist/records-BzTcxekG.js.map +0 -1
  324. package/dist/runtime-D6gVat6r.js.map +0 -1
  325. package/dist/useListReorder-CcbEYxX-.js.map +0 -1
  326. package/dist/useRackEditor-BD5NIo5s.js.map +0 -1
  327. package/dist/useRealtime-PalKue84.js +0 -696
  328. package/dist/useRealtime-PalKue84.js.map +0 -1
  329. package/dist/useRequest-D5JDfsgZ.js +0 -76
  330. package/dist/useRequest-D5JDfsgZ.js.map +0 -1
@@ -3,20 +3,105 @@
3
3
  .mint-sample-selector {
4
4
  display: flex;
5
5
  flex-direction: column;
6
- gap: 0.75rem;
6
+ gap: 0.5rem;
7
7
  height: 100%;
8
- /* No padding/background/border - let parent container provide styling */
8
+ box-sizing: border-box;
9
+ padding-bottom: 0.5rem;
10
+ overflow: hidden;
11
+ border: 1px solid var(--border-color);
12
+ border-radius: var(--radius-lg);
13
+ background-color: var(--bg-card);
14
+ }
15
+
16
+ /* Card header: "Samples · N selected" and the grouping actions */
17
+ .mint-sample-selector__header {
18
+ display: flex;
19
+ align-items: center;
20
+ gap: 0.5rem;
21
+ min-height: 2.5rem;
22
+ padding: 0.375rem 0.375rem 0.375rem 0.75rem;
23
+ box-sizing: border-box;
24
+ border-bottom: 1px solid var(--border-light);
25
+ font-size: 0.8125rem;
26
+ /* The header compacts when it is narrow (sidebars); see the query below. */
27
+ container-type: inline-size;
28
+ }
29
+
30
+ .mint-sample-selector__title {
31
+ flex-shrink: 0;
32
+ white-space: nowrap;
33
+ font-weight: 600;
34
+ color: var(--text-primary);
9
35
  }
10
36
 
11
- /* Select-all header row (7c): a table header, not a button */
37
+ .mint-sample-selector__selected {
38
+ /* Without the query (or with a long count) the count gives way, never the row. */
39
+ min-width: 0;
40
+ overflow: hidden;
41
+ text-overflow: ellipsis;
42
+ white-space: nowrap;
43
+ font-size: 0.75rem;
44
+ font-weight: 500;
45
+ color: var(--text-muted);
46
+ }
47
+
48
+ .mint-sample-selector__header-actions {
49
+ flex-shrink: 0;
50
+ display: flex;
51
+ align-items: center;
52
+ gap: 0.125rem;
53
+ margin-left: auto;
54
+ }
55
+
56
+ .mint-sample-selector__selected-short {
57
+ display: none;
58
+ }
59
+
60
+ /* Narrow selector: the header stays one row and keeps its height. The grouping
61
+ button shows only its icon (the label stays its accessible name and tooltip)
62
+ and the count shortens to "N sel." (screen readers keep "N selected"). */
63
+ /* Measured: the full row (title, "N selected", Smart group, Clear groups) needs
64
+ about 17.55rem of header content width with Fira Sans. */
65
+ @container (max-width: 17.625rem) {
66
+ .mint-sample-selector__group-btn .mint-button__label,
67
+ .mint-sample-selector__selected-full {
68
+ position: absolute;
69
+ width: 1px;
70
+ height: 1px;
71
+ margin: -1px;
72
+ padding: 0;
73
+ overflow: hidden;
74
+ clip: rect(0, 0, 0, 0);
75
+ white-space: nowrap;
76
+ border: 0;
77
+ }
78
+
79
+ .mint-sample-selector__selected-short {
80
+ display: inline;
81
+ }
82
+
83
+ .mint-sample-selector__group-btn {
84
+ min-width: var(--form-height-sm);
85
+ padding-inline: 0.25rem;
86
+ }
87
+ }
88
+
89
+ .mint-sample-selector__grouped,
90
+ .mint-sample-selector__flat,
91
+ .mint-sample-selector__state {
92
+ padding: 0 0.5rem;
93
+ }
94
+
95
+ /* Select-all header row (7c): a table header, not a button. The margin matches the
96
+ body inset above, so its columns line up with the tree's. */
12
97
  .mint-sample-selector__select-all {
13
98
  display: flex;
14
99
  align-items: center;
15
100
  gap: 0.625rem;
16
101
  min-height: 2.25rem;
102
+ margin: 0 0.5rem;
17
103
  padding: 0 0.75rem;
18
104
  border-bottom: 1px solid var(--border-color);
19
- background-color: var(--bg-primary);
20
105
  cursor: pointer;
21
106
  }
22
107
 
@@ -24,21 +109,21 @@
24
109
  group checkboxes (header pad + chevron + gap) and its count over the group counts
25
110
  (scroll gutter + header pad + delete button + gap). */
26
111
  .mint-sample-selector__select-all--grouped {
27
- padding-left: 1.875rem;
28
- padding-right: 2.375rem;
112
+ padding-left: 1.75rem;
113
+ padding-right: 2.25rem;
29
114
  }
30
115
 
31
116
  .mint-sample-selector__select-all-label {
32
- font-size: 0.75rem;
117
+ font-size: 0.8125rem;
33
118
  font-weight: 500;
34
- color: var(--text-secondary);
119
+ color: var(--text-primary);
35
120
  }
36
121
 
37
122
  .mint-sample-selector__select-all-count {
38
123
  margin-left: auto;
39
124
  font-family: var(--font-mono);
40
- font-size: 0.75rem;
41
- color: var(--text-primary);
125
+ font-size: 0.6875rem;
126
+ color: var(--text-muted);
42
127
  font-variant-numeric: tabular-nums;
43
128
  }
44
129
 
@@ -47,42 +132,6 @@
47
132
  flex-shrink: 0;
48
133
  }
49
134
 
50
- /* Action Buttons Row */
51
- .mint-sample-selector__actions {
52
- position: relative;
53
- }
54
-
55
- .mint-sample-selector__actions-row {
56
- display: grid;
57
- grid-template-columns: minmax(0, 1fr) auto;
58
- align-items: center;
59
- gap: 0.375rem;
60
- min-width: 0;
61
- }
62
-
63
- /* Layout only; BaseButton sm owns size, padding and type. */
64
- .mint-sample-selector__action-btn {
65
- width: 100%;
66
- min-width: 0; /* Allow labels to ellipsize inside tight containers */
67
- }
68
-
69
- .mint-sample-selector__action-btn--reset {
70
- width: auto;
71
- }
72
-
73
- .mint-sample-selector__action-icon {
74
- width: 1rem;
75
- height: 1rem;
76
- flex-shrink: 0;
77
- }
78
-
79
- .mint-sample-selector__action-label {
80
- min-width: 0;
81
- overflow: hidden;
82
- text-overflow: ellipsis;
83
- white-space: nowrap;
84
- }
85
-
86
135
  /* Grouped View */
87
136
  .mint-sample-selector__grouped {
88
137
  display: flex;
@@ -120,7 +169,7 @@
120
169
  border-radius: var(--radius-sm);
121
170
  color: var(--text-muted);
122
171
  cursor: pointer;
123
- transition: background-color 0.15s ease;
172
+ transition: background-color var(--mint-transition);
124
173
  }
125
174
 
126
175
  .mint-sample-selector__expand-btn:hover {
@@ -182,10 +231,11 @@
182
231
  display: flex;
183
232
  align-items: center;
184
233
  gap: 0.5rem;
185
- padding: 0.375rem 0.5rem;
186
- border-radius: var(--radius-sm);
234
+ min-height: 1.75rem;
235
+ padding: 0 0.375rem;
236
+ border-radius: var(--radius-md);
187
237
  cursor: grab;
188
- transition: background-color 0.15s ease, box-shadow 0.12s ease, opacity 0.12s ease;
238
+ transition: background-color var(--mint-transition), box-shadow var(--mint-transition), opacity var(--mint-transition);
189
239
  }
190
240
 
191
241
  .mint-sample-selector__major-header:active {
@@ -217,7 +267,7 @@
217
267
  height: 0.875rem;
218
268
  color: var(--text-muted);
219
269
  flex-shrink: 0;
220
- transition: transform 0.2s ease;
270
+ transition: transform var(--mint-transition);
221
271
  }
222
272
 
223
273
  .mint-sample-selector__chevron--small {
@@ -246,14 +296,13 @@
246
296
 
247
297
  .mint-sample-selector__color-dot--clickable {
248
298
  cursor: pointer;
249
- transition: transform 0.15s ease;
299
+ transition: box-shadow var(--mint-transition);
250
300
  border: none;
251
301
  padding: 0;
252
302
  background: none;
253
303
  }
254
304
 
255
305
  .mint-sample-selector__color-dot--clickable:hover {
256
- transform: scale(1.25);
257
306
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08), 0 0 0 3px rgba(0, 0, 0, 0.06);
258
307
  }
259
308
 
@@ -267,7 +316,7 @@
267
316
  .mint-sample-selector__count-badge {
268
317
  font-family: var(--font-mono);
269
318
  font-size: 0.6875rem;
270
- color: var(--text-secondary);
319
+ color: var(--text-muted);
271
320
  font-variant-numeric: tabular-nums;
272
321
  white-space: nowrap;
273
322
  }
@@ -283,7 +332,7 @@
283
332
  border-radius: var(--radius-sm);
284
333
  color: var(--mint-error);
285
334
  cursor: pointer;
286
- transition: all 0.15s ease;
335
+ transition: all var(--mint-transition);
287
336
  }
288
337
 
289
338
  .mint-sample-selector__delete-btn:hover {
@@ -317,7 +366,7 @@
317
366
  .mint-sample-selector__sub-group {
318
367
  margin-bottom: 0.125rem;
319
368
  border-radius: var(--radius);
320
- transition: background-color 0.15s ease, box-shadow 0.15s ease;
369
+ transition: background-color var(--mint-transition), box-shadow var(--mint-transition);
321
370
  }
322
371
 
323
372
  .mint-sample-selector__sub-group--drag-over {
@@ -329,10 +378,11 @@
329
378
  display: flex;
330
379
  align-items: center;
331
380
  gap: 0.5rem;
332
- padding: 0.25rem 0.5rem;
333
- border-radius: var(--radius-sm);
381
+ min-height: 1.75rem;
382
+ padding: 0 0.375rem;
383
+ border-radius: var(--radius-md);
334
384
  cursor: grab;
335
- transition: background-color 0.15s ease, box-shadow 0.12s ease, opacity 0.12s ease;
385
+ transition: background-color var(--mint-transition), box-shadow var(--mint-transition), opacity var(--mint-transition);
336
386
  }
337
387
 
338
388
  .mint-sample-selector__sub-header:active {
@@ -369,9 +419,9 @@
369
419
  display: flex;
370
420
  align-items: center;
371
421
  gap: 0.5rem;
372
- padding: 0.125rem 0.5rem;
373
- border-radius: var(--radius-sm);
374
- transition: background-color 0.15s ease, opacity 0.15s ease;
422
+ padding: 0.125rem 0.375rem;
423
+ border-radius: var(--radius-md);
424
+ transition: background-color var(--mint-transition), opacity var(--mint-transition);
375
425
  cursor: grab;
376
426
  }
377
427
 
@@ -399,7 +449,7 @@
399
449
  flex-shrink: 0;
400
450
  color: var(--text-muted);
401
451
  opacity: 0;
402
- transition: opacity 0.15s ease;
452
+ transition: opacity var(--mint-transition);
403
453
  cursor: grab;
404
454
  }
405
455
 
@@ -425,7 +475,7 @@
425
475
  color: var(--mint-warning);
426
476
  cursor: pointer;
427
477
  opacity: 0;
428
- transition: all 0.15s ease;
478
+ transition: all var(--mint-transition);
429
479
  }
430
480
 
431
481
  .mint-sample-selector__remove-btn:hover {
@@ -464,10 +514,11 @@
464
514
  display: flex;
465
515
  align-items: center;
466
516
  gap: 0.5rem;
467
- padding: 0.375rem 0.5rem;
468
- border-radius: var(--radius-sm);
517
+ min-height: 1.75rem;
518
+ padding: 0 0.375rem;
519
+ border-radius: var(--radius-md);
469
520
  cursor: pointer;
470
- transition: background-color 0.15s ease;
521
+ transition: background-color var(--mint-transition);
471
522
  }
472
523
 
473
524
  .mint-sample-selector__ungrouped-header:hover {
@@ -484,11 +535,12 @@
484
535
  .mint-sample-selector__ungrouped-count {
485
536
  /* Joins the group count column: the groups' delete button + gap and the tree's scroll gutter. */
486
537
  margin-right: 1.875rem;
538
+ font-family: var(--font-mono);
487
539
  font-size: 0.6875rem;
488
540
  padding: 0.125rem 0.375rem;
489
541
  background-color: var(--bg-tertiary);
490
542
  color: var(--text-secondary);
491
- border-radius: 9999px;
543
+ border-radius: var(--radius);
492
544
  font-variant-numeric: tabular-nums;
493
545
  }
494
546
 
@@ -543,11 +595,11 @@
543
595
 
544
596
  .mint-sample-selector__search-icon {
545
597
  position: absolute;
546
- left: 0.75rem;
598
+ left: 0.625rem;
547
599
  top: 50%;
548
600
  transform: translateY(-50%);
549
- width: 1rem;
550
- height: 1rem;
601
+ width: 0.875rem;
602
+ height: 0.875rem;
551
603
  color: var(--text-muted);
552
604
  pointer-events: none;
553
605
  }
@@ -555,18 +607,24 @@
555
607
  .mint-sample-selector__search-input {
556
608
  width: 100%;
557
609
  box-sizing: border-box;
558
- padding: 0.5rem 0.75rem 0.5rem 2.25rem;
559
- font-size: 0.875rem;
610
+ height: var(--form-height-md);
611
+ padding: 0 0.625rem 0 2rem;
612
+ font-family: inherit;
613
+ font-size: 0.8125rem;
560
614
  color: var(--text-primary);
561
- background-color: var(--bg-tertiary);
615
+ background-color: var(--bg-card);
562
616
  border: 1px solid var(--border-color);
563
617
  border-radius: var(--radius-md);
564
618
  outline: none;
565
- transition: border-color 0.15s ease;
619
+ transition: border-color var(--mint-transition), box-shadow var(--mint-transition);
620
+ }
621
+
622
+ .mint-sample-selector__search-input:hover {
623
+ border-color: var(--border-strong);
566
624
  }
567
625
 
568
626
  .mint-sample-selector__search-input:focus-visible {
569
- box-shadow: var(--focus-ring);
627
+ box-shadow: var(--focus-ring-soft);
570
628
  border-color: var(--color-primary);
571
629
  }
572
630
 
@@ -585,9 +643,10 @@
585
643
  display: flex;
586
644
  align-items: center;
587
645
  gap: 0.5rem;
588
- padding: 0.375rem 0.5rem;
589
- border-radius: var(--radius-sm);
590
- transition: background-color 0.15s ease;
646
+ min-height: 1.75rem;
647
+ padding: 0 0.375rem;
648
+ border-radius: var(--radius-md);
649
+ transition: background-color var(--mint-transition);
591
650
  }
592
651
 
593
652
  .mint-sample-selector__flat-item:hover {
@@ -29,7 +29,7 @@
29
29
  border: none;
30
30
  cursor: pointer;
31
31
  color: var(--text-muted);
32
- transition: background-color 0.15s ease, color 0.15s ease;
32
+ transition: background-color var(--mint-transition), color var(--mint-transition);
33
33
  display: flex;
34
34
  align-items: center;
35
35
  justify-content: center;
@@ -54,7 +54,7 @@
54
54
  color: var(--text-primary);
55
55
  font-size: 0.75rem;
56
56
  font-weight: 500;
57
- transition: background-color 0.15s ease, border-color 0.15s ease;
57
+ transition: background-color var(--mint-transition), border-color var(--mint-transition);
58
58
  margin-left: 0.5rem;
59
59
  }
60
60
 
@@ -85,7 +85,7 @@
85
85
  color: var(--text-muted);
86
86
  font-size: 0.75rem;
87
87
  font-weight: 500;
88
- transition: background-color 0.15s ease, color 0.15s ease;
88
+ transition: background-color var(--mint-transition), color var(--mint-transition);
89
89
  }
90
90
 
91
91
  .mint-schedule__view-btn:not(:last-child) {
@@ -99,12 +99,12 @@
99
99
 
100
100
  .mint-schedule__view-btn--active {
101
101
  background-color: var(--color-primary);
102
- color: white;
102
+ color: var(--text-on-accent);
103
103
  }
104
104
 
105
105
  .mint-schedule__view-btn--active:hover {
106
106
  background-color: var(--color-primary);
107
- color: white;
107
+ color: var(--text-on-accent);
108
108
  }
109
109
 
110
110
  /* Body (week/day view) */
@@ -202,7 +202,7 @@
202
202
 
203
203
  .mint-schedule__day-header--today .mint-schedule__day-header-number {
204
204
  background-color: var(--color-primary);
205
- color: white;
205
+ color: var(--text-on-accent);
206
206
  }
207
207
 
208
208
  .mint-schedule__slot {
@@ -239,7 +239,7 @@
239
239
  color: var(--text-primary);
240
240
  background-color: color-mix(in srgb, var(--event-color) 16%, var(--bg-card));
241
241
  border: 1px solid color-mix(in srgb, var(--event-color) 35%, transparent);
242
- transition: box-shadow 0.15s ease;
242
+ transition: box-shadow var(--mint-transition);
243
243
  }
244
244
 
245
245
  .mint-schedule__event:hover {
@@ -395,7 +395,7 @@
395
395
  border-right: 1px solid var(--border-color);
396
396
  padding: 0.25rem;
397
397
  cursor: pointer;
398
- transition: background-color 0.15s ease;
398
+ transition: background-color var(--mint-transition);
399
399
  }
400
400
 
401
401
  .mint-schedule__month-cell:nth-child(7n) {
@@ -6,7 +6,7 @@
6
6
  width: 100%;
7
7
  min-height: var(--form-height-md);
8
8
  gap: 0.5rem;
9
- padding: 0.5rem 0.75rem;
9
+ padding: 0.375rem 0.75rem;
10
10
  border: 1px solid var(--border-color);
11
11
  border-radius: var(--radius-md);
12
12
  background: var(--bg-secondary);
@@ -14,11 +14,11 @@
14
14
  font: inherit;
15
15
  font-size: 0.8125rem;
16
16
  cursor: pointer;
17
- transition: border-color 150ms ease, box-shadow 150ms ease;
17
+ transition: border-color var(--mint-transition), box-shadow var(--mint-transition);
18
18
  }
19
19
 
20
- .mint-searchable-select--sm .mint-searchable-select__trigger { min-height: var(--form-height-sm); padding: 0.3rem 0.5rem; font-size: 0.75rem; }
21
- .mint-searchable-select--lg .mint-searchable-select__trigger { min-height: var(--form-height-lg); padding: 0.75rem 1rem; font-size: 1rem; }
20
+ .mint-searchable-select--sm .mint-searchable-select__trigger { min-height: var(--form-height-sm); padding: 0.25rem 0.5rem; font-size: 0.75rem; }
21
+ .mint-searchable-select--lg .mint-searchable-select__trigger { min-height: var(--form-height-lg); padding: 0.5rem 1rem; font-size: 1rem; }
22
22
  .mint-searchable-select__trigger:hover:not(:disabled) { border-color: var(--_field-border-hover); }
23
23
  .mint-searchable-select__trigger:focus-visible,
24
24
  .mint-searchable-select__trigger[aria-expanded='true'] { outline: none; border-color: var(--color-primary); box-shadow: var(--focus-ring-soft); }
@@ -41,17 +41,17 @@
41
41
  overflow: hidden;
42
42
  }
43
43
 
44
- .mint-searchable-select__search-wrap { position: relative; margin: 0 0 0.25rem; padding: 0.25rem 0.25rem 0.5rem; border-bottom: 1px solid var(--border-light); }
45
- .mint-searchable-select__search-wrap svg { position: absolute; top: calc(50% - 0.125rem); left: 0.75rem; width: 0.875rem; height: 0.875rem; color: var(--text-secondary); transform: translateY(-50%); pointer-events: none; }
46
- .mint-searchable-select__search { width: 100%; min-height: var(--form-height-sm); padding: 0.375rem 0.625rem 0.375rem 1.75rem; border: 1px solid var(--border-color); border-radius: var(--radius-md); background: var(--bg-secondary); color: var(--text-primary); font: inherit; font-size: 0.8125rem; box-sizing: border-box; transition: border-color 150ms ease, box-shadow 150ms ease; }
47
- .mint-searchable-select__search:hover { border-color: var(--_field-border-hover); }
48
- .mint-searchable-select__search:focus-visible { outline: none; border-color: var(--color-primary); box-shadow: var(--focus-ring-soft); }
44
+ .mint-searchable-select__search-wrap { position: relative; margin: 0 0 0.25rem; padding: 0 0 0.25rem; border-bottom: 1px solid var(--border-light); }
45
+ .mint-searchable-select__search-wrap svg { position: absolute; top: calc(50% - 0.125rem); left: 0.5rem; width: 0.875rem; height: 0.875rem; color: var(--text-muted); transform: translateY(-50%); pointer-events: none; }
46
+ /* Borderless search row; the open popover is the focus context. */
47
+ .mint-searchable-select__search { width: 100%; min-height: 28px; padding: 0 0.5rem 0 1.75rem; border: 0; background: transparent; color: var(--text-primary); font: inherit; font-size: 0.8125rem; box-sizing: border-box; }
48
+ .mint-searchable-select__search:focus-visible { outline: none; }
49
+ .mint-searchable-select__search::placeholder { color: var(--text-muted); }
49
50
  .mint-searchable-select__list { min-height: 0; margin: 0; padding: 0; overflow-y: auto; list-style: none; }
50
51
  /* Rows = .mint-menu-item (2d); __option* stay as aliases. */
51
- .mint-searchable-select__empty { padding: 1rem; text-align: center; color: var(--text-secondary); font-size: 0.75rem; }
52
+ .mint-searchable-select__empty { padding: 0.5rem; color: var(--text-muted); font-size: 0.75rem; }
52
53
  .mint-searchable-select__footer { margin: 0.25rem -0.25rem -0.25rem; padding: 0.625rem; border-top: 1px solid var(--border-light); color: var(--text-secondary); font-size: 0.75rem; }
53
54
 
54
55
  @media (prefers-reduced-motion: reduce) {
55
- .mint-searchable-select__trigger,
56
- .mint-searchable-select__search { transition: none; }
56
+ .mint-searchable-select__trigger { transition: none; }
57
57
  }
@@ -1,17 +1,21 @@
1
- /* SectionCard — the MINT 1.1 one-card system.
1
+ /* SectionCard — the one-card system.
2
2
  *
3
- * One card per page region: 12px radius, one shadow token (--card-shadow),
4
- * a single header strip, and hairline-separated regions inside — never a
5
- * card nested in a card.
3
+ * One card per page region: 1px border, 8px radius, no shadow, a single
4
+ * header strip (muted icon, title, mono count, tools on the right), and
5
+ * hairline-separated regions inside — never a card nested in a card.
6
6
  */
7
7
 
8
8
  .mint-section-card {
9
+ /* The left grid that the header and the rows share: header icon (or row
10
+ lead) width, then this gap. Set --mint-section-card-gap on the card to
11
+ change both. */
12
+ --mint-section-card-lead-width: 1rem;
13
+ --mint-section-card-gap: 0.625rem;
9
14
  display: flex;
10
15
  flex-direction: column;
11
16
  border-radius: var(--radius-lg);
12
17
  border: 1px solid var(--border-color);
13
18
  background: var(--bg-secondary);
14
- box-shadow: var(--card-shadow);
15
19
  overflow: hidden;
16
20
  transition: background-color var(--mint-transition), border-color var(--mint-transition);
17
21
  }
@@ -32,8 +36,12 @@
32
36
  .mint-section-card__header {
33
37
  display: flex;
34
38
  align-items: center;
35
- gap: 0.625rem;
36
- padding: 0.6875rem 1rem;
39
+ gap: var(--mint-section-card-gap);
40
+ box-sizing: border-box;
41
+ min-height: 2.5rem;
42
+ /* 4px block padding: a 28px header control plus padding plus the 1px rule
43
+ stays inside the 40px strip (6px made it 41px). */
44
+ padding: 0.25rem 0.625rem 0.25rem 0.75rem;
37
45
  border-bottom: 1px solid var(--border-color);
38
46
  flex-shrink: 0;
39
47
  }
@@ -42,14 +50,15 @@
42
50
  border-bottom-color: var(--border-light);
43
51
  }
44
52
 
53
+ /* Muted icon, no tinted chip: every accent renders the same. */
45
54
  .mint-section-card__icon-chip {
46
55
  display: inline-flex;
47
56
  align-items: center;
48
57
  justify-content: center;
49
58
  flex-shrink: 0;
50
- width: 1.375rem;
51
- height: 1.375rem;
52
- border-radius: var(--radius);
59
+ width: var(--mint-section-card-lead-width);
60
+ height: var(--mint-section-card-lead-width);
61
+ color: var(--text-muted);
53
62
  }
54
63
 
55
64
  .mint-section-card__icon {
@@ -57,41 +66,6 @@
57
66
  height: 0.8125rem;
58
67
  }
59
68
 
60
- .mint-section-card__icon-chip--primary {
61
- background: var(--color-primary-soft);
62
- color: var(--color-primary);
63
- }
64
-
65
- .mint-section-card__icon-chip--experiment {
66
- background: var(--color-experiment-soft);
67
- color: var(--color-experiment);
68
- }
69
-
70
- .mint-section-card__icon-chip--project {
71
- background: var(--color-project-soft);
72
- color: var(--color-project);
73
- }
74
-
75
- .mint-section-card__icon-chip--success {
76
- background: var(--mint-success-bg);
77
- color: var(--mint-success);
78
- }
79
-
80
- .mint-section-card__icon-chip--error {
81
- background: var(--mint-error-bg);
82
- color: var(--mint-error);
83
- }
84
-
85
- .mint-section-card__icon-chip--warning {
86
- background: var(--mint-warning-bg);
87
- color: var(--mint-warning);
88
- }
89
-
90
- .mint-section-card__icon-chip--info {
91
- background: var(--mint-info-bg);
92
- color: var(--mint-info);
93
- }
94
-
95
69
  .mint-section-card__title {
96
70
  margin: 0;
97
71
  font-size: 0.8125rem;
@@ -99,9 +73,10 @@
99
73
  color: var(--text-primary);
100
74
  }
101
75
 
76
+ /* Captions are for column and section labels; a card title stays sentence case. */
102
77
  .mint-section-card__title--uppercase {
103
- font-size: 0.75rem;
104
- color: var(--text-secondary);
78
+ text-transform: none;
79
+ letter-spacing: 0;
105
80
  }
106
81
 
107
82
  .mint-section-card__count {
@@ -125,6 +100,8 @@
125
100
  padding: 0.5rem 1rem;
126
101
  border-top: 1px solid var(--border-color);
127
102
  background: var(--bg-primary);
103
+ font-size: 0.75rem;
104
+ color: var(--text-secondary);
128
105
  flex-shrink: 0;
129
106
  }
130
107
 
@@ -140,12 +117,27 @@
140
117
  .mint-section-card__row {
141
118
  display: flex;
142
119
  align-items: center;
143
- gap: 0.625rem;
144
- padding: 0.5625rem 1rem;
120
+ gap: var(--mint-section-card-gap);
121
+ padding: 0.375rem 0.75rem;
145
122
  background: var(--bg-secondary);
146
123
  transition: background-color var(--mint-transition);
147
124
  }
148
125
 
126
+ /* Leading glyph slot of a row: as wide as the header icon, so the glyph
127
+ * centres under it and the row text starts at the header title. Leave it
128
+ * empty to keep the text on the grid. It is one title line high (1lh at the
129
+ * title size), so a two-line row keeps its glyph on the first line. */
130
+ .mint-section-card__row-lead {
131
+ display: inline-flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ flex-shrink: 0;
135
+ align-self: flex-start;
136
+ width: var(--mint-section-card-lead-width);
137
+ height: 1lh;
138
+ font-size: 0.8125rem;
139
+ }
140
+
149
141
  a.mint-section-card__row,
150
142
  button.mint-section-card__row {
151
143
  cursor: pointer;
@@ -157,3 +149,16 @@ a.mint-section-card__row:hover,
157
149
  button.mint-section-card__row:hover {
158
150
  background: var(--bg-primary);
159
151
  }
152
+
153
+ /* Comfortable density gives the header and rows back their height. */
154
+ [data-density="comfortable"] .mint-section-card__header {
155
+ min-height: 2.75rem;
156
+ padding: 0.25rem 0.75rem 0.25rem 0.875rem;
157
+ }
158
+
159
+ [data-density="comfortable"] .mint-section-card__row {
160
+ padding-top: 0.5rem;
161
+ padding-bottom: 0.5rem;
162
+ /* Same left inset as the header, so row content lines up under the header. */
163
+ padding-left: 0.875rem;
164
+ }