@morscherlab/mint-sdk 1.4.0-beta.7 → 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
@@ -11,7 +11,7 @@
11
11
  position: relative;
12
12
  }
13
13
 
14
- /* Trigger follows the field rules (1e) + clock icon; value in mono tabular. */
14
+ /* Trigger follows the field rules (1e) + leading clock icon; value in mono tabular. */
15
15
  .mint-time-picker__input {
16
16
  width: 100%;
17
17
  border-radius: var(--radius-md);
@@ -20,10 +20,12 @@
20
20
  color: var(--text-primary);
21
21
  font-family: var(--font-mono);
22
22
  font-variant-numeric: tabular-nums;
23
- transition: border-color 150ms ease, box-shadow 150ms ease;
23
+ transition: border-color var(--mint-transition), box-shadow var(--mint-transition);
24
24
  cursor: pointer;
25
- padding-right: 2.5rem;
25
+ padding-left: 1.875rem;
26
+ padding-right: 2rem;
26
27
  box-sizing: border-box;
28
+ line-height: 1.25;
27
29
  }
28
30
 
29
31
  .mint-time-picker__input::placeholder {
@@ -42,18 +44,24 @@
42
44
  }
43
45
 
44
46
  .mint-time-picker__input--sm {
45
- padding: 0.375rem 0.625rem;
46
- font-size: 0.8125rem;
47
+ padding-top: 0.25rem;
48
+ padding-bottom: 0.25rem;
49
+ font-size: 0.75rem;
50
+ min-height: var(--form-height-sm);
47
51
  }
48
52
 
49
53
  .mint-time-picker__input--md {
50
- padding: 0.5rem 0.75rem;
51
- font-size: 0.8125rem;
54
+ padding-top: 0.375rem;
55
+ padding-bottom: 0.375rem;
56
+ font-size: 0.75rem;
57
+ min-height: var(--form-height-md);
52
58
  }
53
59
 
54
60
  .mint-time-picker__input--lg {
55
- padding: 0.75rem 1rem;
61
+ padding-top: 0.5rem;
62
+ padding-bottom: 0.5rem;
56
63
  font-size: 1rem;
64
+ min-height: var(--form-height-lg);
57
65
  }
58
66
 
59
67
  .mint-time-picker__input--error,
@@ -78,17 +86,17 @@
78
86
  position: absolute;
79
87
  top: 0;
80
88
  bottom: 0;
81
- right: 0;
89
+ left: 0;
82
90
  display: flex;
83
91
  align-items: center;
84
- padding-right: 0.75rem;
92
+ padding-left: 0.625rem;
85
93
  pointer-events: none;
86
94
  }
87
95
 
88
96
  .mint-time-picker__icon svg {
89
97
  width: 0.875rem;
90
98
  height: 0.875rem;
91
- color: var(--text-secondary);
99
+ color: var(--text-muted);
92
100
  }
93
101
 
94
102
  /* Clear button */
@@ -96,7 +104,7 @@
96
104
  position: absolute;
97
105
  top: 0;
98
106
  bottom: 0;
99
- right: 1.75rem;
107
+ right: 0.375rem;
100
108
  display: flex;
101
109
  align-items: center;
102
110
  padding: 0 0.25rem;
@@ -104,7 +112,7 @@
104
112
  border: none;
105
113
  cursor: pointer;
106
114
  color: var(--text-secondary);
107
- transition: color 150ms ease;
115
+ transition: color var(--mint-transition);
108
116
  }
109
117
 
110
118
  .mint-time-picker__clear-btn:hover {
@@ -116,18 +124,21 @@
116
124
  height: 0.875rem;
117
125
  }
118
126
 
119
- /* Dropdown — placement only; the look is .mint-popover. */
127
+ /* Dropdown — placement only; the look is .mint-popover. Spans the field width. */
120
128
  .mint-time-picker__dropdown {
121
129
  position: absolute;
122
130
  z-index: 50;
123
131
  margin-top: 0.25rem;
124
132
  width: 100%;
125
- min-width: 10rem;
133
+ min-width: 100%;
126
134
  overflow: hidden;
127
135
  }
128
136
 
129
- /* Slot list */
137
+ /* Slot list — one column that fills the dropdown. */
130
138
  .mint-time-picker__list {
139
+ display: flex;
140
+ flex-direction: column;
141
+ flex: 1;
131
142
  max-height: 16rem;
132
143
  overflow-y: auto;
133
144
  padding: 0;
@@ -135,8 +146,11 @@
135
146
  list-style: none;
136
147
  }
137
148
 
138
- /* Slot = menu item; the time is mono tabular. Selected = trailing check + primary text. */
149
+ /* Slot = 26px menu item; the time is mono tabular. Selected = soft primary fill + primary ink, no check. */
139
150
  .mint-time-picker__slot {
151
+ width: 100%;
152
+ min-height: 26px;
153
+ flex-shrink: 0;
140
154
  white-space: nowrap;
141
155
  }
142
156
 
@@ -146,12 +160,13 @@
146
160
  font-variant-numeric: tabular-nums;
147
161
  }
148
162
 
149
- .mint-time-picker__slot--active .mint-time-picker__slot-time {
150
- font-weight: 600;
163
+ /* 0,3,0 so the fill also wins over the menu-item hover / highlight (popover.css loads first). */
164
+ .mint-time-picker__list .mint-time-picker__slot--active.mint-menu-item {
165
+ background: var(--color-primary-soft);
151
166
  }
152
167
 
153
- .mint-time-picker__slot .mint-menu-item__check {
154
- margin-left: auto;
168
+ .mint-time-picker__slot--active .mint-time-picker__slot-time {
169
+ font-weight: 500;
155
170
  }
156
171
 
157
172
  /* Unavailable slots stay readable (no opacity). */
@@ -23,7 +23,7 @@
23
23
  border-radius: var(--radius-md);
24
24
  background-color: var(--bg-card);
25
25
  border: 1px solid var(--border-color);
26
- box-shadow: var(--card-shadow);
26
+ box-shadow: var(--mint-shadow-pop);
27
27
  pointer-events: auto;
28
28
  cursor: pointer;
29
29
  overflow: hidden;
@@ -45,7 +45,7 @@ html.dark .mint-toast__item {
45
45
  box-shadow:
46
46
  0 3px 0 -1px var(--bg-card),
47
47
  0 3px 0 0 var(--border-color),
48
- var(--card-shadow);
48
+ var(--mint-shadow-pop);
49
49
  }
50
50
 
51
51
  .mint-toast__icon {
@@ -123,7 +123,7 @@ html.dark .mint-toast__item {
123
123
  .mint-toast__action--primary {
124
124
  background: var(--color-primary);
125
125
  border-color: var(--color-primary);
126
- color: white;
126
+ color: var(--text-on-accent);
127
127
  }
128
128
 
129
129
  .mint-toast__action--primary:hover {
@@ -139,15 +139,16 @@ html.dark .mint-toast__item {
139
139
 
140
140
  .mint-toast__close {
141
141
  position: absolute;
142
- top: 0.3125rem;
143
- right: 0.3125rem;
142
+ top: 0.5rem;
143
+ right: 0.5rem;
144
144
  display: flex;
145
145
  align-items: center;
146
146
  justify-content: center;
147
- width: 1.25rem;
148
- height: 1.25rem;
147
+ width: 1.375rem;
148
+ height: 1.375rem;
149
+ padding: 0;
149
150
  border: 0;
150
- border-radius: var(--radius-sm);
151
+ border-radius: var(--radius);
151
152
  background: transparent;
152
153
  color: var(--text-muted);
153
154
  cursor: pointer;
@@ -160,8 +161,9 @@ html.dark .mint-toast__item {
160
161
  }
161
162
 
162
163
  .mint-toast__close svg {
163
- width: 0.75rem;
164
- height: 0.75rem;
164
+ width: 0.875rem;
165
+ height: 0.875rem;
166
+ flex-shrink: 0;
165
167
  }
166
168
 
167
169
  /* TTL progress bar — shrinks 100% → 0 over duration */
@@ -61,13 +61,7 @@
61
61
  width: 0.875rem;
62
62
  height: 0.875rem;
63
63
  flex-shrink: 0;
64
- transition:
65
- color 0.15s ease,
66
- transform 0.15s ease;
67
- }
68
-
69
- .mint-toggle--row:hover .mint-toggle__row-icon {
70
- transform: scale(1.04);
64
+ transition: color 0.15s ease;
71
65
  }
72
66
 
73
67
  .mint-toggle__row-svg {
@@ -209,8 +203,4 @@
209
203
  .mint-toggle__knob {
210
204
  transition: none;
211
205
  }
212
-
213
- .mint-toggle--row:hover .mint-toggle__row-icon {
214
- transform: none;
215
- }
216
206
  }
@@ -10,15 +10,15 @@
10
10
  display: inline-flex;
11
11
  align-items: center;
12
12
  gap: 0.5rem;
13
- padding: 0.375rem 0.625rem;
13
+ padding: 0.25rem 0.5rem;
14
14
  font-size: 0.75rem;
15
- line-height: 1.2;
15
+ line-height: 1.35;
16
16
  color: var(--bg-card);
17
17
  background: var(--text-primary);
18
- border-radius: var(--radius-sm);
18
+ border-radius: var(--radius);
19
19
  white-space: nowrap;
20
20
  pointer-events: none;
21
- box-shadow: var(--shadow-md);
21
+ box-shadow: var(--mint-shadow-pop);
22
22
  }
23
23
 
24
24
  /* Multi-line opt-in via maxWidth prop */
@@ -35,13 +35,14 @@
35
35
  .mint-tooltip__shortcut {
36
36
  display: inline-flex;
37
37
  align-items: center;
38
- padding: 0.0625rem 0.3125rem;
38
+ padding: 0 0.25rem;
39
39
  font-family: var(--font-mono);
40
40
  font-size: 0.6875rem;
41
- background: color-mix(in srgb, var(--bg-card) 14%, transparent);
42
- border: 1px solid color-mix(in srgb, var(--bg-card) 24%, transparent);
43
- border-radius: 3px;
44
- line-height: 1;
41
+ background: transparent;
42
+ border: 1px solid color-mix(in srgb, var(--bg-card) 22%, transparent);
43
+ border-radius: var(--radius-sm);
44
+ line-height: 1rem;
45
+ opacity: 0.85;
45
46
  }
46
47
 
47
48
  /* Arrow — same color as the tooltip bg */
@@ -14,8 +14,9 @@
14
14
  background-color: var(--bg-secondary);
15
15
  border: 1px solid var(--border-color);
16
16
  border-radius: var(--radius-md);
17
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
17
+ transition: border-color var(--mint-transition), box-shadow var(--mint-transition);
18
18
  overflow: hidden;
19
+ box-sizing: border-box;
19
20
  }
20
21
 
21
22
  .mint-unit-input__controls--sm { min-height: var(--form-height-sm); }
@@ -49,7 +50,7 @@
49
50
  color: var(--text-muted);
50
51
  }
51
52
 
52
- /* ---------- Value input — Fira Code, left-aligned ---------- */
53
+ /* ---------- Value input — mono, left-aligned ---------- */
53
54
 
54
55
  .mint-unit-input__value {
55
56
  flex: 1;
@@ -76,9 +77,9 @@
76
77
 
77
78
  /* Horizontal padding matches BaseInput canonical scale (10/12/16) so FormField's
78
79
  12px label indent aligns with the value text across all input types. */
79
- .mint-unit-input__value--sm { padding: 0.375rem 0.625rem; font-size: 0.875rem; }
80
- .mint-unit-input__value--md { padding: 0.5rem 0.75rem; font-size: 0.875rem; }
81
- .mint-unit-input__value--lg { padding: 0.75rem 1rem; font-size: 1rem; }
80
+ .mint-unit-input__value--sm { padding: 0.25rem 0.625rem; font-size: 0.875rem; }
81
+ .mint-unit-input__value--md { padding: 0.375rem 0.75rem; font-size: 0.75rem; }
82
+ .mint-unit-input__value--lg { padding: 0.5rem 1rem; font-size: 1rem; }
82
83
 
83
84
  /* ---------- Unit segment = BaseInput #suffix look (1e / 4b) ---------- */
84
85
 
@@ -100,7 +101,7 @@
100
101
  font-size: 0.75rem;
101
102
  line-height: 1;
102
103
  white-space: nowrap;
103
- transition: background-color 0.15s ease;
104
+ transition: background-color var(--mint-transition);
104
105
  }
105
106
 
106
107
  button.mint-unit-input__unit {
@@ -128,7 +129,7 @@ button.mint-unit-input__unit:focus-visible {
128
129
  height: 12px;
129
130
  flex-shrink: 0;
130
131
  color: var(--text-secondary);
131
- transition: transform 0.15s ease;
132
+ transition: transform var(--mint-transition);
132
133
  }
133
134
 
134
135
  .mint-unit-input__unit--open .mint-unit-input__chevron {
@@ -81,7 +81,7 @@
81
81
  justify-content: center;
82
82
  font-weight: 500;
83
83
  cursor: pointer;
84
- transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;
84
+ transition: background-color var(--mint-transition), border-color var(--mint-transition), box-shadow var(--mint-transition), opacity var(--mint-transition);
85
85
  background-color: var(--bg-tertiary);
86
86
  border: 1px dashed var(--border-color);
87
87
  }
@@ -164,6 +164,13 @@
164
164
  color: var(--text-primary);
165
165
  }
166
166
 
167
+ /* QC / iQC marker glyph */
168
+ .mint-well-plate__indicator {
169
+ font-family: var(--font-mono);
170
+ pointer-events: none;
171
+ color: var(--text-primary);
172
+ }
173
+
167
174
  /* Condition header - drug label row */
168
175
  .mint-well-plate__condition-label {
169
176
  font-weight: 600;
@@ -184,7 +191,7 @@
184
191
  height: 100%;
185
192
  border-radius: 4px;
186
193
  font-weight: 600;
187
- transition: background-color 0.15s ease;
194
+ transition: background-color var(--mint-transition);
188
195
  }
189
196
 
190
197
  /* Row condition label cell (rotated text) */
@@ -3,7 +3,7 @@
3
3
  * @import '@morscherlab/mint-sdk/styles';
4
4
  */
5
5
 
6
- @import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Fira+Sans:wght@300;400;500;600;700&display=swap');
6
+ @import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500;600&display=swap');
7
7
 
8
8
  /* ==========================================================================
9
9
  CSS Variables - Light Mode
@@ -21,9 +21,9 @@
21
21
  /* Strong control border — unchecked checkbox/radio, toggle off track, dashed outlines (~3.2:1 light, ~4.2:1 dark). */
22
22
  --_control-border-strong: color-mix(in srgb, var(--text-secondary) 75%, var(--border-color));
23
23
  /* Field border on hover. */
24
- --_field-border-hover: color-mix(in srgb, var(--text-secondary) 60%, var(--border-color));
25
- /* Ink: primary / error text on card and tinted surfaces. The -hover tokens
26
- have no dark value, so html.dark lifts these toward --text-primary. */
24
+ --_field-border-hover: var(--border-strong);
25
+ /* Ink: primary / error text on card and tinted surfaces. html.dark lifts
26
+ these toward --text-primary. */
27
27
  --_ink-primary: var(--color-primary-hover);
28
28
  --_ink-error: var(--mint-error-hover);
29
29
 
@@ -33,11 +33,12 @@
33
33
  --bg-tertiary: #F1F5F9;
34
34
  --bg-card: #FFFFFF;
35
35
  --bg-hover: #F1F5F9;
36
- --border-color: #E5E7EB;
37
- --border-light: #F3F4F6;
36
+ --border-color: #E2E8F0;
37
+ --border-light: #F1F5F9;
38
+ --border-strong: #CBD5E1;
38
39
 
39
40
  /* Text colors */
40
- --text-primary: #1E293B;
41
+ --text-primary: #0F172A;
41
42
  --text-secondary: #64748B;
42
43
  --text-muted: #94A3B8;
43
44
  /* De-emphasized label for low-emphasis interactive controls (secondary/ghost
@@ -46,25 +47,36 @@
46
47
  where --text-secondary would drop to ~4.35:1. */
47
48
  --text-secondary-strong: #475569;
48
49
 
49
- /* Brand colors */
50
- --color-primary: #14B8A6;
50
+ /* Brand colors — one teal accent: teal-600 fills, teal-700 hover + ink,
51
+ teal-800 pressed. White on #0D9488 is 3.74:1, a known AA exception. */
52
+ --color-primary: #0D9488;
51
53
  --color-primary-hover: #0F766E;
52
- --color-primary-soft: rgba(20, 184, 166, 0.12);
53
- --color-cta: #06B6D4;
54
- --color-cta-hover: #0891B2;
55
- --color-purple: #8B5CF6;
56
-
57
- /* Entity accent colors — experiments (cyan) and projects (sky), from the
58
- MINT 1.1 card system. -soft backs icon chips and pills, -border outlines
59
- pills that sit on a card surface. */
60
- --color-experiment: #06B6D4;
61
- --color-experiment-hover: #0891B2;
62
- --color-experiment-soft: rgba(6, 182, 212, 0.12);
63
- --color-experiment-border: rgba(6, 182, 212, 0.3);
64
- --color-project: #0EA5E9;
65
- --color-project-hover: #0284C7;
66
- --color-project-soft: rgba(14, 165, 233, 0.12);
67
- --color-project-border: rgba(14, 165, 233, 0.32);
54
+ --color-primary-pressed: #115E59;
55
+ --color-primary-soft: rgba(13, 148, 136, 0.10);
56
+ --color-primary-border: #99F6E4;
57
+ /* Fixed teal scale, the same in both themes. */
58
+ --color-primary-50: #F0FDFA;
59
+ --color-primary-100: #CCFBF1;
60
+ --color-primary-500: #14B8A6;
61
+ --color-primary-600: #0D9488;
62
+ --mint-primary: var(--color-primary);
63
+ /* Text and icons on an accent fill (filled buttons, Save). */
64
+ --text-on-accent: #FFFFFF;
65
+ /* Retired hues, aliased to the accent until 1.5 (mint doctor warns on use). */
66
+ --color-cta: var(--color-primary);
67
+ --color-cta-hover: var(--color-primary-hover);
68
+ --color-purple: var(--color-primary);
69
+
70
+ /* Entity colors — retired hues, aliased to slate until 1.5. Entities are told
71
+ apart by icon and label, not by hue. Only -hover has no neutral token. */
72
+ --color-experiment: var(--text-secondary-strong);
73
+ --color-experiment-hover: #334155;
74
+ --color-experiment-soft: var(--bg-tertiary);
75
+ --color-experiment-border: var(--border-strong);
76
+ --color-project: var(--color-experiment);
77
+ --color-project-hover: var(--color-experiment-hover);
78
+ --color-project-soft: var(--color-experiment-soft);
79
+ --color-project-border: var(--color-experiment-border);
68
80
 
69
81
  /* MINT brand mark — used for browser theme-color, marketing chrome, app icon background */
70
82
  --mint-brand: #7BD0B5;
@@ -76,13 +88,14 @@
76
88
  --scrollbar-thumb: #D1D5DB;
77
89
  --scrollbar-hover: #9CA3AF;
78
90
 
79
- /* Shadows */
80
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
81
- --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
82
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
83
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
84
- /* The MINT 1.1 card system uses exactly one shadow for every card. */
85
- --card-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.04), 0 1px 3px 0 rgb(0 0 0 / 0.06);
91
+ /* Shadows — flat by default (borders, not shadows); only floating layers
92
+ (popovers, menus, dialogs) get one. */
93
+ --shadow-sm: none;
94
+ --shadow: none;
95
+ --card-shadow: none;
96
+ --shadow-md: 0 4px 12px -2px rgba(15, 23, 42, 0.10), 0 1px 3px rgba(15, 23, 42, 0.06);
97
+ --shadow-lg: 0 16px 40px -8px rgba(15, 23, 42, 0.18), 0 2px 6px rgba(15, 23, 42, 0.06);
98
+ --mint-shadow-pop: 0 4px 12px -2px rgba(15, 23, 42, 0.10), 0 1px 3px rgba(15, 23, 42, 0.06);
86
99
 
87
100
  /* Categorical sample scale — mirrored by SAMPLE_COLOR_SCALE in
88
101
  src/utils/color.ts. The JS constant carries the same hexes as a
@@ -106,20 +119,22 @@
106
119
  /* Motion — the SDK's standard easing curve. */
107
120
  --mint-ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
108
121
 
109
- /* Typography — Fira Sans for UI text, Fira Code for data, code and routes. */
110
- --font-sans: 'Fira Sans', system-ui, -apple-system, sans-serif;
111
- --font-mono: 'Fira Code', ui-monospace, SFMono-Regular, Menlo, monospace;
122
+ /* Typography — Geist for UI text, Geist Mono for codes, m/z, RT, counts and timestamps. */
123
+ --font-sans: 'Geist', system-ui, -apple-system, sans-serif;
124
+ --font-mono: 'Geist Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
112
125
 
113
- /* Border radius */
114
- --radius-sm: 0.25rem;
115
- --radius: 0.375rem;
116
- --radius-md: 0.5rem;
117
- --radius-lg: 0.75rem;
126
+ /* Border radius — code badges, tags, buttons/inputs, cards/dialogs. */
127
+ --radius-sm: 3px;
128
+ --radius: 4px;
129
+ --radius-md: 6px;
130
+ --radius-lg: 8px;
118
131
 
119
- /* Form element heights */
120
- --form-height-sm: 2rem;
121
- --form-height-md: 2.25rem;
122
- --form-height-lg: 3rem;
132
+ /* Form element heights and page gutter — compact (normal and compact
133
+ density); [data-density="comfortable"] below restores the larger set. */
134
+ --form-height-sm: 1.75rem;
135
+ --form-height-md: 2rem;
136
+ --form-height-lg: 2.5rem;
137
+ --mint-gutter: 0.5rem;
123
138
 
124
139
  /* Semantic colors */
125
140
  --mint-success: #10B981;
@@ -141,20 +156,20 @@
141
156
  --mint-info-border: rgba(59, 130, 246, 0.3);
142
157
 
143
158
  /* Extended brand tokens */
144
- --color-primary-light: #93C5FD;
159
+ --color-primary-light: #5EEAD4;
145
160
 
146
161
  /* Shared component tokens */
147
162
  --mint-disabled-opacity: 0.6;
148
163
 
149
164
  /* Focus ring tokens */
150
165
  --focus-ring: 0 0 0 2px var(--color-primary);
151
- --focus-ring-offset: 0 0 0 2px white, 0 0 0 4px var(--color-primary);
166
+ --focus-ring-offset: 0 0 0 2px #FFFFFF, 0 0 0 4px var(--color-primary);
152
167
  --focus-ring-error: 0 0 0 2px var(--mint-error);
153
168
 
154
169
  /* Soft focus rings — 3px translucent. Used by all form primitives
155
170
  post-0.16 visual refresh. Solid variants above kept for legacy
156
171
  components that haven't migrated yet. */
157
- --focus-ring-soft: 0 0 0 3px rgba(20, 184, 166, 0.20);
172
+ --focus-ring-soft: 0 0 0 3px rgba(13, 148, 136, 0.18);
158
173
  /* Red is perceptually brighter than teal at equal alpha; drop 2pp to keep visual weight matched. */
159
174
  --focus-ring-soft-error: 0 0 0 3px rgba(239, 68, 68, 0.18);
160
175
 
@@ -174,7 +189,8 @@
174
189
  --mint-text-inverse: #FFFFFF;
175
190
  --mint-border: var(--border-color);
176
191
  --mint-border-focus: var(--color-primary);
177
- --mint-transition: 150ms ease;
192
+ /* Colour-only transitions; no lift, bounce or glow. */
193
+ --mint-transition: 120ms ease;
178
194
  }
179
195
 
180
196
  /* ==========================================================================
@@ -182,24 +198,35 @@
182
198
  ========================================================================== */
183
199
  html.dark {
184
200
  /* Background colors */
185
- --bg-primary: #0F172A;
186
- --bg-secondary: #1E293B;
187
- --bg-tertiary: #334155;
188
- --bg-card: #1E293B;
189
- --bg-hover: #334155;
190
- --border-color: #334155;
191
- --border-light: #1E293B;
201
+ --bg-primary: #0B1120;
202
+ --bg-secondary: #111827;
203
+ --bg-tertiary: #1E293B;
204
+ --bg-card: #111827;
205
+ --bg-hover: #1E293B;
206
+ --border-color: #1F2937;
207
+ --border-light: #172033;
208
+ --border-strong: #334155;
209
+
210
+ /* Brand colors - Dark mode (CTA, purple and entity aliases follow) */
211
+ --color-primary: #2DD4BF;
212
+ --color-primary-hover: #5EEAD4;
213
+ --color-primary-pressed: #99F6E4;
214
+ --color-primary-soft: rgba(45, 212, 191, 0.12);
215
+ --color-primary-border: rgba(45, 212, 191, 0.35);
216
+ /* Dark ink on the light accent fill (10.1:1 on #2DD4BF). */
217
+ --text-on-accent: #0B1120;
218
+ --color-experiment-hover: #E2E8F0;
192
219
 
193
220
  /* Ink aliases (see :root): ~7:1 on --bg-card, tints included. */
194
221
  --_ink-primary: color-mix(in srgb, var(--color-primary) 50%, var(--text-primary));
195
222
  --_ink-error: color-mix(in srgb, var(--mint-error) 50%, var(--text-primary));
196
223
 
197
224
  /* Text colors */
198
- --text-primary: #F8FAFC;
225
+ --text-primary: #F1F5F9;
199
226
  --text-secondary: #94A3B8;
200
227
  --text-muted: #64748B;
201
- /* Dark-mode analog: soft light-gray instead of near-white, AA-safe (7.2:1)
202
- on the dark secondary hover surface (--bg-tertiary #334155). */
228
+ /* Dark-mode analog: soft light-gray instead of near-white, AA-safe (9.9:1)
229
+ on the dark secondary hover surface (--bg-tertiary #1E293B). */
203
230
  --text-secondary-strong: #CBD5E1;
204
231
 
205
232
  /* Scrollbar */
@@ -207,22 +234,10 @@ html.dark {
207
234
  --scrollbar-thumb: #475569;
208
235
  --scrollbar-hover: #64748B;
209
236
 
210
- /* Shadows - Dark mode */
211
- --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.2);
212
- --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.3), 0 1px 2px -1px rgb(0 0 0 / 0.2);
213
- --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.3), 0 2px 4px -2px rgb(0 0 0 / 0.2);
214
- --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.2);
215
- --card-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.24), 0 1px 3px 0 rgb(0 0 0 / 0.32);
216
-
217
- /* Entity accent colors - Dark mode */
218
- --color-experiment: #22D3EE;
219
- --color-experiment-hover: #67E8F9;
220
- --color-experiment-soft: rgba(34, 211, 238, 0.16);
221
- --color-experiment-border: rgba(34, 211, 238, 0.36);
222
- --color-project: #38BDF8;
223
- --color-project-hover: #7DD3FC;
224
- --color-project-soft: rgba(56, 189, 248, 0.16);
225
- --color-project-border: rgba(56, 189, 248, 0.38);
237
+ /* Shadows - Dark mode (floating layers only; --shadow-sm/--shadow/--card-shadow stay none) */
238
+ --shadow-md: 0 6px 16px -4px rgba(0, 0, 0, 0.6);
239
+ --shadow-lg: 0 16px 40px -8px rgba(0, 0, 0, 0.7);
240
+ --mint-shadow-pop: 0 6px 16px -4px rgba(0, 0, 0, 0.6);
226
241
 
227
242
  /* Semantic colors - Dark mode */
228
243
  --mint-success-bg: rgba(16, 185, 129, 0.15);
@@ -233,7 +248,7 @@ html.dark {
233
248
 
234
249
  /* Focus ring - dark mode offset uses bg-primary instead of white */
235
250
  --focus-ring-offset: 0 0 0 2px var(--bg-primary), 0 0 0 4px var(--color-primary);
236
- --focus-ring-soft: 0 0 0 3px rgba(129, 140, 248, 0.28);
251
+ --focus-ring-soft: 0 0 0 3px rgba(45, 212, 191, 0.22);
237
252
  --focus-ring-soft-error: 0 0 0 3px rgba(248, 113, 113, 0.26);
238
253
 
239
254
  /* Legacy aliases */
@@ -243,6 +258,15 @@ html.dark {
243
258
  color-scheme: dark;
244
259
  }
245
260
 
261
+ /* Comfortable density (html[data-density], written by the settings store):
262
+ the pre-v2 control heights and a wider gutter. */
263
+ [data-density="comfortable"] {
264
+ --form-height-sm: 2rem;
265
+ --form-height-md: 2.25rem;
266
+ --form-height-lg: 3rem;
267
+ --mint-gutter: 0.75rem;
268
+ }
269
+
246
270
  /* ==========================================================================
247
271
  Base Styles
248
272
  ========================================================================== */
@@ -261,6 +285,13 @@ code, pre {
261
285
  font-family: var(--font-mono);
262
286
  }
263
287
 
288
+ /* Links: accent ink. In the base layer, so Tailwind utilities and component
289
+ rules (both win over a layered element rule) keep their own link colours. */
290
+ @layer base {
291
+ a { color: var(--color-primary-hover); }
292
+ a:hover { color: var(--color-primary-pressed); }
293
+ }
294
+
264
295
  /* Native controls do not inherit the page font; Tailwind preflight covers this
265
296
  in the platform, but SDK consumers without it render buttons and selects in
266
297
  the UA font. */
@@ -184,5 +184,7 @@ export interface ExperimentFilters {
184
184
  project?: string | null
185
185
  experimentType?: string | null
186
186
  datePreset?: DatePreset | null
187
+ /** Only experiments the caller authored (`?mine=true`). */
188
+ mine?: boolean
187
189
  }
188
190
 
@@ -21,6 +21,7 @@ export interface PlatformContextPlugin {
21
21
  route_prefix: string
22
22
  api_prefix: string
23
23
  settings_api: "plugin" | "platform"
24
+ subtitle?: string
24
25
  description?: string
25
26
  icon?: string
26
27
  color?: string
@@ -151,7 +151,11 @@ export interface GeneratedAnalysisManifest {
151
151
  }
152
152
  ui: {
153
153
  title: string
154
+ /** Second top-bar line; the top bar falls back to `description`. */
155
+ subtitle?: string
154
156
  description: string
157
+ /** Plugin icon for the standalone top bar. */
158
+ icon?: string
155
159
  }
156
160
  jobs: GeneratedJobDefinition[]
157
161
  }