@morscherlab/mint-sdk 1.4.0-beta.8 → 1.4.0-beta.9

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 (257) 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-Dq9W1jE2.js} +160 -109
  4. package/dist/AppSidebar-Dq9W1jE2.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-483nyI6b.js} +9 -9
  14. package/dist/SettingsModal-483nyI6b.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/useAppExperiment.d.ts +8 -0
  37. package/dist/composables/useCalendarGrid.d.ts +1 -1
  38. package/dist/composables/useExperimentSelector.d.ts +6 -2
  39. package/dist/composables/usePlatform.d.ts +1 -0
  40. package/dist/{controlSchemaModel-CP5-_nAj.js → controlSchemaModel-B8CTXagP.js} +2 -2
  41. package/dist/{controlSchemaModel-CP5-_nAj.js.map → controlSchemaModel-B8CTXagP.js.map} +1 -1
  42. package/dist/{data-C2PwI_dn.js → data-CgILxDLW.js} +178 -124
  43. package/dist/data-CgILxDLW.js.map +1 -0
  44. package/dist/data.js +8 -8
  45. package/dist/{experimentStatus-BZmU4czV.js → experimentStatus-Cqp6qNrR.js} +3 -3
  46. package/dist/{experimentStatus-BZmU4czV.js.map → experimentStatus-Cqp6qNrR.js.map} +1 -1
  47. package/dist/index.js +19 -19
  48. package/dist/{install-DAID6c2-.js → install-BtLWTk6H.js} +15 -14
  49. package/dist/{install-DAID6c2-.js.map → install-BtLWTk6H.js.map} +1 -1
  50. package/dist/install.js +1 -1
  51. package/dist/{lab-DLwRl_Ql.js → lab-MHzp-_J8.js} +128 -147
  52. package/dist/lab-MHzp-_J8.js.map +1 -0
  53. package/dist/lab.js +4 -3
  54. package/dist/{records-BzTcxekG.js → records-B6gpM_3e.js} +472 -274
  55. package/dist/records-B6gpM_3e.js.map +1 -0
  56. package/dist/{runtime-D6gVat6r.js → runtime-7vfl_bI3.js} +27 -31
  57. package/dist/runtime-7vfl_bI3.js.map +1 -0
  58. package/dist/runtime.js +6 -6
  59. package/dist/{shell-5ju97nOS.js → shell-Cs9OJMnm.js} +5 -5
  60. package/dist/{shell-5ju97nOS.js.map → shell-Cs9OJMnm.js.map} +1 -1
  61. package/dist/shell.js +5 -5
  62. package/dist/styles.css +1606 -1666
  63. package/dist/types/componentWorkflowTypes.d.ts +2 -0
  64. package/dist/types/generated/platformContext.d.ts +1 -0
  65. package/dist/types/generated-ui.d.ts +4 -0
  66. package/dist/{BaseModal-DfRIuVoj.js → useDropdownState-8yWMu-7_.js} +60 -2
  67. package/dist/useDropdownState-8yWMu-7_.js.map +1 -0
  68. package/dist/{useExperimentSamples-CxcnxZ8h.js → useExperimentSamples-DHnxKFAF.js} +3 -3
  69. package/dist/{useExperimentSamples-CxcnxZ8h.js.map → useExperimentSamples-DHnxKFAF.js.map} +1 -1
  70. package/dist/{useListReorder-CcbEYxX-.js → useListReorder-BitdUhxn.js} +109 -277
  71. package/dist/useListReorder-BitdUhxn.js.map +1 -0
  72. package/dist/{useRackEditor-BD5NIo5s.js → useRackEditor-DiwCt77M.js} +71 -57
  73. package/dist/useRackEditor-DiwCt77M.js.map +1 -0
  74. package/dist/{useRealtime-PalKue84.js → useRealtime-C3iy9QkU.js} +7 -4
  75. package/dist/useRealtime-C3iy9QkU.js.map +1 -0
  76. package/dist/useRequest-D506eHi8.js +244 -0
  77. package/dist/useRequest-D506eHi8.js.map +1 -0
  78. package/dist/utils/time.d.ts +7 -0
  79. package/package.json +1 -1
  80. package/src/__tests__/components/AppTopBar.test.ts +51 -2
  81. package/src/__tests__/components/AppTopBarPillNav.test.ts +35 -0
  82. package/src/__tests__/components/ArtifactSaveDialog.test.ts +78 -0
  83. package/src/__tests__/components/BaseSelect.multiple.test.ts +87 -32
  84. package/src/__tests__/components/BaseSelect.test.ts +2 -1
  85. package/src/__tests__/components/BatchProgressList.test.ts +16 -0
  86. package/src/__tests__/components/CalendarGridPanel.test.ts +2 -2
  87. package/src/__tests__/components/ChartContainer.test.ts +11 -0
  88. package/src/__tests__/components/ChemicalFormula.test.ts +6 -3
  89. package/src/__tests__/components/DatePicker.datetime.test.ts +6 -0
  90. package/src/__tests__/components/DatePicker.test.ts +21 -0
  91. package/src/__tests__/components/DatePicker.time.test.ts +2 -2
  92. package/src/__tests__/components/EmptyState.test.ts +1 -1
  93. package/src/__tests__/components/ExperimentPopover.test.ts +125 -16
  94. package/src/__tests__/components/ExperimentSelectorModal.test.ts +119 -13
  95. package/src/__tests__/components/GeneratedPluginView.test.ts +22 -1
  96. package/src/__tests__/components/InstrumentStateBadge.test.ts +4 -4
  97. package/src/__tests__/components/ResourcePickerListInternal.test.ts +0 -20
  98. package/src/__tests__/components/SampleSelector.test.ts +13 -8
  99. package/src/__tests__/components/SequenceProgressBar.test.ts +12 -0
  100. package/src/__tests__/components/StepWizard.test.ts +11 -0
  101. package/src/__tests__/components/WellPlate.decoration.test.ts +11 -4
  102. package/src/__tests__/components/deprecationTags.test.ts +1 -1
  103. package/src/__tests__/composables/useAppExperiment.test.ts +27 -1
  104. package/src/__tests__/composables/useCalendarGrid.test.ts +4 -2
  105. package/src/__tests__/composables/useExperimentSelector.test.ts +111 -0
  106. package/src/__tests__/styles/baseControlsRules.test.ts +6 -2
  107. package/src/__tests__/styles/controlRefreshRules.test.ts +0 -6
  108. package/src/__tests__/styles/cssTokens.test.ts +2 -2
  109. package/src/__tests__/styles/menusShellRefresh.test.ts +14 -10
  110. package/src/__tests__/utils/plotlyTemplate.test.ts +4 -4
  111. package/src/__tests__/utils/time.test.ts +18 -1
  112. package/src/components/AdductText.story.vue +7 -0
  113. package/src/components/AdductText.vue +1 -1
  114. package/src/components/AlertBox.story.vue +2 -2
  115. package/src/components/AlertBox.vue +18 -16
  116. package/src/components/AppSidebar.story.vue +0 -28
  117. package/src/components/AppTopBar.story.vue +47 -12
  118. package/src/components/AppTopBar.vue +118 -114
  119. package/src/components/ArtifactSaveDialog.story.vue +23 -0
  120. package/src/components/ArtifactSaveDialog.vue +102 -12
  121. package/src/components/AuditTrail.story.vue +2 -1
  122. package/src/components/AuditTrail.vue +2 -21
  123. package/src/components/Avatar.vue +10 -14
  124. package/src/components/BaseSelect.multiple.story.vue +13 -2
  125. package/src/components/BaseSelect.vue +4 -3
  126. package/src/components/BatchProgressList.vue +35 -25
  127. package/src/components/ChartContainer.story.vue +2 -1
  128. package/src/components/ChartContainer.vue +8 -6
  129. package/src/components/ConfirmDialog.story.vue +1 -1
  130. package/src/components/EmptyState.vue +1 -1
  131. package/src/components/ExperimentPopover.story.vue +165 -53
  132. package/src/components/ExperimentPopover.vue +169 -187
  133. package/src/components/ExperimentSelectorModal.story.vue +40 -36
  134. package/src/components/ExperimentSelectorModal.vue +124 -110
  135. package/src/components/FormField.story.vue +8 -48
  136. package/src/components/GeneratedPluginView.vue +7 -1
  137. package/src/components/InstrumentStateBadge.vue +1 -1
  138. package/src/components/JobsStatusTray.vue +1 -1
  139. package/src/components/LoadingSpinner.vue +1 -1
  140. package/src/components/NumberInput.vue +3 -6
  141. package/src/components/PluginIcon.story.vue +2 -10
  142. package/src/components/PluginIcon.vue +2 -2
  143. package/src/components/PluginWorkspaceView.story.vue +1 -1
  144. package/src/components/RuntimeUpdateNotice.vue +1 -1
  145. package/src/components/SampleSelector.story.vue +1 -1
  146. package/src/components/SampleSelector.vue +27 -37
  147. package/src/components/SampleSelectorGroupNode.vue +1 -1
  148. package/src/components/SectionCard.story.vue +2 -2
  149. package/src/components/SequenceProgressBar.story.vue +9 -0
  150. package/src/components/SequenceProgressBar.vue +6 -1
  151. package/src/components/SettingsModal.schema.ts +1 -1
  152. package/src/components/SettingsModal.vue +2 -2
  153. package/src/components/SmartGroupFieldRecipe.story.vue +1 -1
  154. package/src/components/SmartGroupManual.story.vue +1 -1
  155. package/src/components/StepWizard.story.vue +33 -0
  156. package/src/components/StepWizard.vue +8 -1
  157. package/src/components/WellPlate.story.vue +3 -1
  158. package/src/components/WellPlate.vue +7 -0
  159. package/src/components/internal/AppTopBarPillNavInternal.vue +33 -2
  160. package/src/components/internal/DatePickerDateInternal.vue +16 -40
  161. package/src/components/internal/DatePickerDateTimeInternal.vue +3 -13
  162. package/src/components/internal/DatePickerTimeInternal.vue +5 -8
  163. package/src/components/internal/ResourcePickerListInternal.vue +45 -85
  164. package/src/components/internal/SelectMultipleInternal.vue +182 -65
  165. package/src/components/internal/SelectSearchableInternal.vue +2 -3
  166. package/src/composables/createClient.ts +2 -0
  167. package/src/composables/index.ts +1 -0
  168. package/src/composables/pluginIdentity.ts +31 -0
  169. package/src/composables/useAppExperiment.ts +20 -0
  170. package/src/composables/useCalendarGrid.ts +4 -3
  171. package/src/composables/useExperimentSelector.ts +77 -31
  172. package/src/styles/components/adduct-text.css +13 -5
  173. package/src/styles/components/alert-box.css +39 -58
  174. package/src/styles/components/app-layout.css +6 -5
  175. package/src/styles/components/app-page-selector.css +3 -1
  176. package/src/styles/components/app-pill-nav.css +11 -12
  177. package/src/styles/components/app-sidebar.css +9 -18
  178. package/src/styles/components/app-top-bar.css +57 -55
  179. package/src/styles/components/artifact-save-dialog.css +153 -2
  180. package/src/styles/components/audit-trail.css +16 -19
  181. package/src/styles/components/avatar.css +6 -4
  182. package/src/styles/components/batch-progress-list.css +38 -36
  183. package/src/styles/components/button.css +28 -59
  184. package/src/styles/components/calendar.css +12 -12
  185. package/src/styles/components/chart-container.css +34 -23
  186. package/src/styles/components/checkbox.css +2 -12
  187. package/src/styles/components/collapsible-card.css +27 -29
  188. package/src/styles/components/confirm-dialog.css +13 -14
  189. package/src/styles/components/dataframe.css +12 -4
  190. package/src/styles/components/date-picker.css +80 -92
  191. package/src/styles/components/datetime-picker.css +31 -43
  192. package/src/styles/components/divider.css +20 -20
  193. package/src/styles/components/dose-calculator.css +3 -3
  194. package/src/styles/components/empty-state.css +20 -17
  195. package/src/styles/components/experiment-code-badge.css +2 -0
  196. package/src/styles/components/experiment-popover.css +174 -329
  197. package/src/styles/components/experiment-selector-modal.css +75 -56
  198. package/src/styles/components/file-picker.css +3 -3
  199. package/src/styles/components/file-uploader.css +38 -49
  200. package/src/styles/components/form-builder.css +3 -3
  201. package/src/styles/components/formula-input.css +1 -1
  202. package/src/styles/components/icon-button.css +18 -24
  203. package/src/styles/components/input.css +5 -4
  204. package/src/styles/components/instrument-monitor.css +13 -15
  205. package/src/styles/components/jobs-status-tray.css +31 -25
  206. package/src/styles/components/modal.css +2 -4
  207. package/src/styles/components/molecule-input.css +2 -2
  208. package/src/styles/components/multi-select.css +65 -117
  209. package/src/styles/components/number-input.css +26 -19
  210. package/src/styles/components/pill.css +3 -2
  211. package/src/styles/components/plate-editor.css +0 -1
  212. package/src/styles/components/plugin-icon.css +26 -23
  213. package/src/styles/components/popover.css +2 -2
  214. package/src/styles/components/presence-avatars.css +1 -1
  215. package/src/styles/components/protocol-step-editor.css +1 -3
  216. package/src/styles/components/resource-card.css +2 -2
  217. package/src/styles/components/resource-picker-list.css +6 -57
  218. package/src/styles/components/sample-hierarchy-tree.css +4 -4
  219. package/src/styles/components/sample-selector.css +95 -79
  220. package/src/styles/components/schedule-calendar.css +8 -8
  221. package/src/styles/components/searchable-select.css +12 -12
  222. package/src/styles/components/section-card.css +28 -47
  223. package/src/styles/components/segmented-control.css +18 -15
  224. package/src/styles/components/select.css +3 -3
  225. package/src/styles/components/sequence-input.css +2 -2
  226. package/src/styles/components/sequence-progress-bar.css +17 -8
  227. package/src/styles/components/smart-group.css +18 -18
  228. package/src/styles/components/step-wizard.css +52 -16
  229. package/src/styles/components/tabs.css +2 -2
  230. package/src/styles/components/textarea.css +3 -3
  231. package/src/styles/components/time-picker.css +36 -21
  232. package/src/styles/components/toast.css +12 -10
  233. package/src/styles/components/toggle.css +1 -11
  234. package/src/styles/components/tooltip.css +10 -9
  235. package/src/styles/components/unit-input.css +8 -7
  236. package/src/styles/components/well-plate.css +9 -2
  237. package/src/styles/variables.css +106 -75
  238. package/src/types/componentWorkflowTypes.ts +2 -0
  239. package/src/types/generated/platformContext.ts +1 -0
  240. package/src/types/generated-ui.ts +4 -0
  241. package/src/utils/time.ts +21 -0
  242. package/dist/ActionMenu-CScINahU.js.map +0 -1
  243. package/dist/AppSidebar-BmiiPfz9.js.map +0 -1
  244. package/dist/BaseModal-DfRIuVoj.js.map +0 -1
  245. package/dist/ExperimentPopover-C4sGw-is.js +0 -359
  246. package/dist/ExperimentPopover-C4sGw-is.js.map +0 -1
  247. package/dist/ExperimentSelectorModal-D-9z7cNx.js.map +0 -1
  248. package/dist/SettingsModal-CSLE31yg.js.map +0 -1
  249. package/dist/data-C2PwI_dn.js.map +0 -1
  250. package/dist/lab-DLwRl_Ql.js.map +0 -1
  251. package/dist/records-BzTcxekG.js.map +0 -1
  252. package/dist/runtime-D6gVat6r.js.map +0 -1
  253. package/dist/useListReorder-CcbEYxX-.js.map +0 -1
  254. package/dist/useRackEditor-BD5NIo5s.js.map +0 -1
  255. package/dist/useRealtime-PalKue84.js.map +0 -1
  256. package/dist/useRequest-D5JDfsgZ.js +0 -76
  257. package/dist/useRequest-D5JDfsgZ.js.map +0 -1
@@ -299,9 +299,9 @@
299
299
  gap: 0.25rem;
300
300
  padding: 0.375rem 0.75rem;
301
301
  background-color: var(--color-primary);
302
- color: white;
302
+ color: var(--text-on-accent);
303
303
  border: none;
304
- border-radius: var(--radius);
304
+ border-radius: var(--radius-md);
305
305
  font-size: 0.8125rem;
306
306
  font-weight: 500;
307
307
  cursor: pointer;
@@ -1,13 +1,12 @@
1
1
  /* ResourcePickerList: shared list for ExperimentSelectorModal and ArtifactSelectorModal.
2
- No frame of its own (the modal is the card); rows are inset and rounded, groups are
3
- pinned bars. */
2
+ No frame of its own (the modal is the card); rows are inset and rounded. */
4
3
 
5
- /* The modal is the only card: the list runs edge to edge, and the toolbar, group
6
- bars and row text keep the modal's 1.25rem gutter themselves. */
4
+ /* The modal is the only card: the list runs edge to edge, and the toolbar and
5
+ row text keep the modal's 1.25rem gutter themselves. */
7
6
  .mint-modal__body:has(> .mint-resource-picker) {
8
7
  padding: 0;
9
8
  }
10
- .mint-modal__container:has(.mint-resource-picker) .mint-modal__header {
9
+ .mint-modal__container:has(.mint-resource-picker:not(.mint-experiment-selector)) .mint-modal__header {
11
10
  border-bottom: none;
12
11
  padding-bottom: 0.75rem;
13
12
  }
@@ -43,57 +42,6 @@
43
42
  scrollbar-width: thin;
44
43
  }
45
44
 
46
- .mint-resource-picker__group {
47
- display: flex;
48
- align-items: center;
49
- gap: 0.5rem;
50
- flex-shrink: 0;
51
- width: 100%;
52
- position: sticky;
53
- top: 0;
54
- z-index: 1;
55
- height: 30px;
56
- padding: 0 1.25rem;
57
- border: 0;
58
- border-bottom: 1px solid var(--border-light);
59
- background-color: var(--bg-primary);
60
- font-family: inherit;
61
- font-size: 12px;
62
- font-weight: 600;
63
- color: var(--text-secondary);
64
- text-align: left;
65
- cursor: pointer;
66
- transition: background-color 150ms ease;
67
- }
68
- .mint-resource-picker__group:hover {
69
- background-color: var(--bg-hover);
70
- }
71
- .mint-resource-picker__group:focus-visible {
72
- outline: none;
73
- box-shadow: inset 0 0 0 2px var(--color-primary);
74
- }
75
- .mint-resource-picker__chevron {
76
- width: 12px;
77
- height: 12px;
78
- flex-shrink: 0;
79
- transition: transform 150ms ease;
80
- }
81
- .mint-resource-picker__group[aria-expanded='false'] .mint-resource-picker__chevron {
82
- transform: rotate(-90deg);
83
- }
84
- .mint-resource-picker__group-label {
85
- flex: 1;
86
- min-width: 0;
87
- overflow: hidden;
88
- text-overflow: ellipsis;
89
- white-space: nowrap;
90
- }
91
- .mint-resource-picker__group-count {
92
- font: 11px var(--font-mono);
93
- font-variant-numeric: tabular-nums;
94
- color: var(--text-muted);
95
- }
96
-
97
45
  .mint-resource-picker__row {
98
46
  display: grid;
99
47
  grid-template-columns: minmax(0, 1fr);
@@ -108,7 +56,7 @@
108
56
  padding: 10px 12px;
109
57
  border-radius: var(--radius-md);
110
58
  cursor: pointer;
111
- transition: background-color 150ms ease;
59
+ transition: background-color var(--mint-transition);
112
60
  }
113
61
  .mint-resource-picker__row:hover {
114
62
  background-color: var(--bg-hover);
@@ -116,6 +64,7 @@
116
64
  .mint-resource-picker__row--selected,
117
65
  .mint-resource-picker__row--selected:hover {
118
66
  background-color: var(--color-primary-soft);
67
+ box-shadow: inset 2px 0 0 var(--color-primary);
119
68
  }
120
69
  /* Keyboard focus is the ring alone; it never adds a fill or a bar. */
121
70
  .mint-resource-picker__row--active {
@@ -31,7 +31,7 @@
31
31
  padding: 0 0.5rem 0 0.25rem;
32
32
  border-radius: var(--radius);
33
33
  cursor: pointer;
34
- transition: background-color 0.15s ease;
34
+ transition: background-color var(--mint-transition);
35
35
  }
36
36
 
37
37
  .mint-sample-tree__node-header:hover {
@@ -81,7 +81,7 @@
81
81
  border-radius: var(--radius-sm);
82
82
  color: var(--text-secondary);
83
83
  cursor: pointer;
84
- transition: color 0.15s ease, transform 0.15s ease;
84
+ transition: color var(--mint-transition), transform var(--mint-transition);
85
85
  flex-shrink: 0;
86
86
  }
87
87
 
@@ -98,7 +98,7 @@
98
98
  .mint-sample-tree__toggle svg {
99
99
  width: 0.75rem;
100
100
  height: 0.75rem;
101
- transition: transform 0.15s ease;
101
+ transition: transform var(--mint-transition);
102
102
  }
103
103
 
104
104
  .mint-sample-tree__node--expanded > .mint-sample-tree__node-header .mint-sample-tree__toggle svg {
@@ -199,7 +199,7 @@
199
199
  padding: 0.125rem 0.375rem;
200
200
  font-size: 0.6875rem;
201
201
  font-weight: 600;
202
- border-radius: 9999px;
202
+ border-radius: var(--radius);
203
203
  flex-shrink: 0;
204
204
  }
205
205
 
@@ -3,20 +3,62 @@
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
+ }
27
+
28
+ .mint-sample-selector__title {
29
+ font-weight: 600;
30
+ color: var(--text-primary);
31
+ }
32
+
33
+ .mint-sample-selector__selected {
34
+ font-size: 0.75rem;
35
+ font-weight: 500;
36
+ color: var(--text-muted);
37
+ }
38
+
39
+ .mint-sample-selector__header-actions {
40
+ display: flex;
41
+ align-items: center;
42
+ gap: 0.125rem;
43
+ margin-left: auto;
44
+ }
45
+
46
+ .mint-sample-selector__grouped,
47
+ .mint-sample-selector__flat,
48
+ .mint-sample-selector__state {
49
+ padding: 0 0.5rem;
9
50
  }
10
51
 
11
- /* Select-all header row (7c): a table header, not a button */
52
+ /* Select-all header row (7c): a table header, not a button. The margin matches the
53
+ body inset above, so its columns line up with the tree's. */
12
54
  .mint-sample-selector__select-all {
13
55
  display: flex;
14
56
  align-items: center;
15
57
  gap: 0.625rem;
16
58
  min-height: 2.25rem;
59
+ margin: 0 0.5rem;
17
60
  padding: 0 0.75rem;
18
61
  border-bottom: 1px solid var(--border-color);
19
- background-color: var(--bg-primary);
20
62
  cursor: pointer;
21
63
  }
22
64
 
@@ -24,21 +66,21 @@
24
66
  group checkboxes (header pad + chevron + gap) and its count over the group counts
25
67
  (scroll gutter + header pad + delete button + gap). */
26
68
  .mint-sample-selector__select-all--grouped {
27
- padding-left: 1.875rem;
28
- padding-right: 2.375rem;
69
+ padding-left: 1.75rem;
70
+ padding-right: 2.25rem;
29
71
  }
30
72
 
31
73
  .mint-sample-selector__select-all-label {
32
- font-size: 0.75rem;
74
+ font-size: 0.8125rem;
33
75
  font-weight: 500;
34
- color: var(--text-secondary);
76
+ color: var(--text-primary);
35
77
  }
36
78
 
37
79
  .mint-sample-selector__select-all-count {
38
80
  margin-left: auto;
39
81
  font-family: var(--font-mono);
40
- font-size: 0.75rem;
41
- color: var(--text-primary);
82
+ font-size: 0.6875rem;
83
+ color: var(--text-muted);
42
84
  font-variant-numeric: tabular-nums;
43
85
  }
44
86
 
@@ -47,42 +89,6 @@
47
89
  flex-shrink: 0;
48
90
  }
49
91
 
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
92
  /* Grouped View */
87
93
  .mint-sample-selector__grouped {
88
94
  display: flex;
@@ -120,7 +126,7 @@
120
126
  border-radius: var(--radius-sm);
121
127
  color: var(--text-muted);
122
128
  cursor: pointer;
123
- transition: background-color 0.15s ease;
129
+ transition: background-color var(--mint-transition);
124
130
  }
125
131
 
126
132
  .mint-sample-selector__expand-btn:hover {
@@ -182,10 +188,11 @@
182
188
  display: flex;
183
189
  align-items: center;
184
190
  gap: 0.5rem;
185
- padding: 0.375rem 0.5rem;
186
- border-radius: var(--radius-sm);
191
+ min-height: 1.75rem;
192
+ padding: 0 0.375rem;
193
+ border-radius: var(--radius-md);
187
194
  cursor: grab;
188
- transition: background-color 0.15s ease, box-shadow 0.12s ease, opacity 0.12s ease;
195
+ transition: background-color var(--mint-transition), box-shadow var(--mint-transition), opacity var(--mint-transition);
189
196
  }
190
197
 
191
198
  .mint-sample-selector__major-header:active {
@@ -217,7 +224,7 @@
217
224
  height: 0.875rem;
218
225
  color: var(--text-muted);
219
226
  flex-shrink: 0;
220
- transition: transform 0.2s ease;
227
+ transition: transform var(--mint-transition);
221
228
  }
222
229
 
223
230
  .mint-sample-selector__chevron--small {
@@ -246,14 +253,13 @@
246
253
 
247
254
  .mint-sample-selector__color-dot--clickable {
248
255
  cursor: pointer;
249
- transition: transform 0.15s ease;
256
+ transition: box-shadow var(--mint-transition);
250
257
  border: none;
251
258
  padding: 0;
252
259
  background: none;
253
260
  }
254
261
 
255
262
  .mint-sample-selector__color-dot--clickable:hover {
256
- transform: scale(1.25);
257
263
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.08), 0 0 0 3px rgba(0, 0, 0, 0.06);
258
264
  }
259
265
 
@@ -267,7 +273,7 @@
267
273
  .mint-sample-selector__count-badge {
268
274
  font-family: var(--font-mono);
269
275
  font-size: 0.6875rem;
270
- color: var(--text-secondary);
276
+ color: var(--text-muted);
271
277
  font-variant-numeric: tabular-nums;
272
278
  white-space: nowrap;
273
279
  }
@@ -283,7 +289,7 @@
283
289
  border-radius: var(--radius-sm);
284
290
  color: var(--mint-error);
285
291
  cursor: pointer;
286
- transition: all 0.15s ease;
292
+ transition: all var(--mint-transition);
287
293
  }
288
294
 
289
295
  .mint-sample-selector__delete-btn:hover {
@@ -317,7 +323,7 @@
317
323
  .mint-sample-selector__sub-group {
318
324
  margin-bottom: 0.125rem;
319
325
  border-radius: var(--radius);
320
- transition: background-color 0.15s ease, box-shadow 0.15s ease;
326
+ transition: background-color var(--mint-transition), box-shadow var(--mint-transition);
321
327
  }
322
328
 
323
329
  .mint-sample-selector__sub-group--drag-over {
@@ -329,10 +335,11 @@
329
335
  display: flex;
330
336
  align-items: center;
331
337
  gap: 0.5rem;
332
- padding: 0.25rem 0.5rem;
333
- border-radius: var(--radius-sm);
338
+ min-height: 1.75rem;
339
+ padding: 0 0.375rem;
340
+ border-radius: var(--radius-md);
334
341
  cursor: grab;
335
- transition: background-color 0.15s ease, box-shadow 0.12s ease, opacity 0.12s ease;
342
+ transition: background-color var(--mint-transition), box-shadow var(--mint-transition), opacity var(--mint-transition);
336
343
  }
337
344
 
338
345
  .mint-sample-selector__sub-header:active {
@@ -369,9 +376,9 @@
369
376
  display: flex;
370
377
  align-items: center;
371
378
  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;
379
+ padding: 0.125rem 0.375rem;
380
+ border-radius: var(--radius-md);
381
+ transition: background-color var(--mint-transition), opacity var(--mint-transition);
375
382
  cursor: grab;
376
383
  }
377
384
 
@@ -399,7 +406,7 @@
399
406
  flex-shrink: 0;
400
407
  color: var(--text-muted);
401
408
  opacity: 0;
402
- transition: opacity 0.15s ease;
409
+ transition: opacity var(--mint-transition);
403
410
  cursor: grab;
404
411
  }
405
412
 
@@ -425,7 +432,7 @@
425
432
  color: var(--mint-warning);
426
433
  cursor: pointer;
427
434
  opacity: 0;
428
- transition: all 0.15s ease;
435
+ transition: all var(--mint-transition);
429
436
  }
430
437
 
431
438
  .mint-sample-selector__remove-btn:hover {
@@ -464,10 +471,11 @@
464
471
  display: flex;
465
472
  align-items: center;
466
473
  gap: 0.5rem;
467
- padding: 0.375rem 0.5rem;
468
- border-radius: var(--radius-sm);
474
+ min-height: 1.75rem;
475
+ padding: 0 0.375rem;
476
+ border-radius: var(--radius-md);
469
477
  cursor: pointer;
470
- transition: background-color 0.15s ease;
478
+ transition: background-color var(--mint-transition);
471
479
  }
472
480
 
473
481
  .mint-sample-selector__ungrouped-header:hover {
@@ -484,11 +492,12 @@
484
492
  .mint-sample-selector__ungrouped-count {
485
493
  /* Joins the group count column: the groups' delete button + gap and the tree's scroll gutter. */
486
494
  margin-right: 1.875rem;
495
+ font-family: var(--font-mono);
487
496
  font-size: 0.6875rem;
488
497
  padding: 0.125rem 0.375rem;
489
498
  background-color: var(--bg-tertiary);
490
499
  color: var(--text-secondary);
491
- border-radius: 9999px;
500
+ border-radius: var(--radius);
492
501
  font-variant-numeric: tabular-nums;
493
502
  }
494
503
 
@@ -543,11 +552,11 @@
543
552
 
544
553
  .mint-sample-selector__search-icon {
545
554
  position: absolute;
546
- left: 0.75rem;
555
+ left: 0.625rem;
547
556
  top: 50%;
548
557
  transform: translateY(-50%);
549
- width: 1rem;
550
- height: 1rem;
558
+ width: 0.875rem;
559
+ height: 0.875rem;
551
560
  color: var(--text-muted);
552
561
  pointer-events: none;
553
562
  }
@@ -555,18 +564,24 @@
555
564
  .mint-sample-selector__search-input {
556
565
  width: 100%;
557
566
  box-sizing: border-box;
558
- padding: 0.5rem 0.75rem 0.5rem 2.25rem;
559
- font-size: 0.875rem;
567
+ height: var(--form-height-md);
568
+ padding: 0 0.625rem 0 2rem;
569
+ font-family: inherit;
570
+ font-size: 0.8125rem;
560
571
  color: var(--text-primary);
561
- background-color: var(--bg-tertiary);
572
+ background-color: var(--bg-card);
562
573
  border: 1px solid var(--border-color);
563
574
  border-radius: var(--radius-md);
564
575
  outline: none;
565
- transition: border-color 0.15s ease;
576
+ transition: border-color var(--mint-transition), box-shadow var(--mint-transition);
577
+ }
578
+
579
+ .mint-sample-selector__search-input:hover {
580
+ border-color: var(--border-strong);
566
581
  }
567
582
 
568
583
  .mint-sample-selector__search-input:focus-visible {
569
- box-shadow: var(--focus-ring);
584
+ box-shadow: var(--focus-ring-soft);
570
585
  border-color: var(--color-primary);
571
586
  }
572
587
 
@@ -585,9 +600,10 @@
585
600
  display: flex;
586
601
  align-items: center;
587
602
  gap: 0.5rem;
588
- padding: 0.375rem 0.5rem;
589
- border-radius: var(--radius-sm);
590
- transition: background-color 0.15s ease;
603
+ min-height: 1.75rem;
604
+ padding: 0 0.375rem;
605
+ border-radius: var(--radius-md);
606
+ transition: background-color var(--mint-transition);
591
607
  }
592
608
 
593
609
  .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
  }