@morscherlab/mint-sdk 1.5.0-beta.1 → 1.5.0-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/dist/{AlertBox-CIhqsWbN.js → AlertBox-Cai0w7gF.js} +3 -3
  2. package/dist/{AlertBox-CIhqsWbN.js.map → AlertBox-Cai0w7gF.js.map} +1 -1
  3. package/dist/{AppSidebar-BDrd7Kwn.js → AppSidebar-C-Vq5x4I.js} +410 -127
  4. package/dist/AppSidebar-C-Vq5x4I.js.map +1 -0
  5. package/dist/{ConfirmDialog-CjWoxAD1.js → ConfirmDialog-BjFsOpBe.js} +3 -3
  6. package/dist/ConfirmDialog-BjFsOpBe.js.map +1 -0
  7. package/dist/{ExperimentPopover-BM92LlrQ.js → ExperimentPopover-DYy_s0kI.js} +25 -37
  8. package/dist/ExperimentPopover-DYy_s0kI.js.map +1 -0
  9. package/dist/{ExperimentSelectorModal-LsB1ABmh.js → ExperimentSelectorModal-Bfh5bdkv.js} +37 -8
  10. package/dist/ExperimentSelectorModal-Bfh5bdkv.js.map +1 -0
  11. package/dist/{SegmentedControl-Dz41vAFM.js → SegmentedControl-B8KgyOjd.js} +2 -2
  12. package/dist/{SegmentedControl-Dz41vAFM.js.map → SegmentedControl-B8KgyOjd.js.map} +1 -1
  13. package/dist/{SettingsModal-C-MSR-bk.js → SettingsModal-DwfrD1ER.js} +7 -7
  14. package/dist/{SettingsModal-C-MSR-bk.js.map → SettingsModal-DwfrD1ER.js.map} +1 -1
  15. package/dist/__tests__/components/AppTopBarCompact.test.d.ts +1 -0
  16. package/dist/__tests__/components/AppTopBarCompactReset.test.d.ts +1 -0
  17. package/dist/__tests__/components/AutoGroupModal.experimentLoad.test.d.ts +1 -0
  18. package/dist/components/AppTopBar.compact.d.ts +5 -0
  19. package/dist/components/AppTopBar.vue.d.ts +17 -17
  20. package/dist/components/FormBuilder.vue.d.ts +1 -1
  21. package/dist/components/PluginIcon.vue.d.ts +2 -2
  22. package/dist/components/PluginWorkspaceView.vue.d.ts +4 -0
  23. package/dist/components/SectionCard.vue.d.ts +13 -1
  24. package/dist/components/SettingsModal.vue.d.ts +1 -1
  25. package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -2
  26. package/dist/components/internal/FormSchemaInternal.vue.d.ts +9 -9
  27. package/dist/components/internal/FormSectionRenderer.vue.d.ts +4 -4
  28. package/dist/components/internal/LucideIconInternal.vue.d.ts +17 -0
  29. package/dist/composables/appLayoutSidebar.d.ts +9 -0
  30. package/dist/composables/useExperimentSelector.d.ts +2 -0
  31. package/dist/composables/useOnboarding.d.ts +1 -1
  32. package/dist/composables/usePluginWorkspace.d.ts +2 -0
  33. package/dist/composables/useVersionedSave.d.ts +5 -2
  34. package/dist/{controlSchemaModel-BbXbMgc6.js → controlSchemaModel-BtFNZj8t.js} +2 -2
  35. package/dist/{controlSchemaModel-BbXbMgc6.js.map → controlSchemaModel-BtFNZj8t.js.map} +1 -1
  36. package/dist/{data-LzdkEZJ-.js → data-CJztFns8.js} +31 -15
  37. package/dist/{data-LzdkEZJ-.js.map → data-CJztFns8.js.map} +1 -1
  38. package/dist/data.js +8 -8
  39. package/dist/{experimentStatus-DCn2QKG7.js → experimentStatus-Deokk7Br.js} +2 -2
  40. package/dist/{experimentStatus-DCn2QKG7.js.map → experimentStatus-Deokk7Br.js.map} +1 -1
  41. package/dist/index.d.ts +0 -1
  42. package/dist/index.js +15 -20
  43. package/dist/index.js.map +1 -1
  44. package/dist/{install-UTqrAgHe.js → install-Bk02tJ5M.js} +15 -40
  45. package/dist/install-Bk02tJ5M.js.map +1 -0
  46. package/dist/install.js +1 -1
  47. package/dist/{lab-CbdDLAVr.js → lab-BYhb_cJI.js} +47 -117
  48. package/dist/lab-BYhb_cJI.js.map +1 -0
  49. package/dist/lab.js +4 -4
  50. package/dist/{records-CWRztE5M.js → records-GtiVMlTQ.js} +207 -171
  51. package/dist/records-GtiVMlTQ.js.map +1 -0
  52. package/dist/{runtime-DrL6lKAb.js → runtime-aZPUPxoB.js} +112 -54
  53. package/dist/runtime-aZPUPxoB.js.map +1 -0
  54. package/dist/runtime.js +6 -6
  55. package/dist/{shell-Ch7cJnjo.js → shell-Bk9mD4Lc.js} +5 -5
  56. package/dist/{shell-Ch7cJnjo.js.map → shell-Bk9mD4Lc.js.map} +1 -1
  57. package/dist/shell.js +5 -5
  58. package/dist/styles.css +315 -134
  59. package/dist/styles.d.ts +1 -0
  60. package/dist/types/components.d.ts +22 -2
  61. package/dist/types/generated-ui.d.ts +2 -0
  62. package/dist/types/index.d.ts +2 -2
  63. package/dist/types/instrument.d.ts +5 -17
  64. package/dist/{useDropdownState-uFIz6Yv8.js → useDropdownState-CcBzUYZ6.js} +14 -5
  65. package/dist/useDropdownState-CcBzUYZ6.js.map +1 -0
  66. package/dist/{useExperimentSamples-Cz2v3V_q.js → useExperimentSamples-CpNXvpUn.js} +3 -3
  67. package/dist/{useExperimentSamples-Cz2v3V_q.js.map → useExperimentSamples-CpNXvpUn.js.map} +1 -1
  68. package/dist/{useListReorder-QqJc1dpX.js → useListReorder-Bp4EAI2w.js} +16 -4
  69. package/dist/useListReorder-Bp4EAI2w.js.map +1 -0
  70. package/dist/{useRackEditor-BHGM1Ngz.js → useRackEditor-i2bdPUFf.js} +156 -27
  71. package/dist/useRackEditor-i2bdPUFf.js.map +1 -0
  72. package/dist/{useRealtime-CNQbrS01.js → useRealtime-BLQEjbuq.js} +3 -3
  73. package/dist/{useRealtime-CNQbrS01.js.map → useRealtime-BLQEjbuq.js.map} +1 -1
  74. package/dist/useRequest-CXyPw3eh.js +76 -0
  75. package/dist/useRequest-CXyPw3eh.js.map +1 -0
  76. package/dist/utils/deprecation.d.ts +2 -0
  77. package/dist/utils/lucideIcon.d.ts +4 -0
  78. package/package.json +7 -4
  79. package/src/__tests__/components/AppTopBar.test.ts +102 -20
  80. package/src/__tests__/components/AppTopBarCompact.test.ts +65 -0
  81. package/src/__tests__/components/AppTopBarCompactReset.test.ts +24 -0
  82. package/src/__tests__/components/AppTopBarOnboarding.test.ts +10 -0
  83. package/src/__tests__/components/AutoGroupModal.experimentLoad.test.ts +58 -0
  84. package/src/__tests__/components/BaseModal.test.ts +33 -2
  85. package/src/__tests__/components/ConfirmDialog.test.ts +2 -2
  86. package/src/__tests__/components/ExperimentPopover.test.ts +32 -0
  87. package/src/__tests__/components/ExperimentSelectorModal.test.ts +16 -0
  88. package/src/__tests__/components/PluginWorkspaceView.test.ts +20 -1
  89. package/src/__tests__/components/SectionCard.test.ts +33 -0
  90. package/src/__tests__/components/deprecationTags.test.ts +4 -18
  91. package/src/__tests__/composables/useJobCenter.test.ts +35 -0
  92. package/src/__tests__/composables/useJobsEndpoint.test.ts +50 -0
  93. package/src/__tests__/composables/useOnboarding.test.ts +2 -2
  94. package/src/__tests__/composables/useVersionedSave.test.ts +71 -6
  95. package/src/__tests__/docs/frontendDocsCatalog.test.ts +3 -3
  96. package/src/__tests__/styles/menusShellRefresh.test.ts +10 -0
  97. package/src/components/AppLayout.story.vue +5 -5
  98. package/src/components/AppLayout.vue +13 -1
  99. package/src/components/AppSidebar.vue +2 -2
  100. package/src/components/AppTopBar.compact.ts +60 -0
  101. package/src/components/AppTopBar.story.vue +39 -14
  102. package/src/components/AppTopBar.vue +222 -89
  103. package/src/components/BaseModal.vue +16 -5
  104. package/src/components/CollapsibleCard.vue +1 -1
  105. package/src/components/ConfirmDialog.vue +1 -1
  106. package/src/components/ExperimentPopover.story.vue +2 -2
  107. package/src/components/ExperimentPopover.vue +6 -22
  108. package/src/components/ExperimentSelectorModal.vue +35 -0
  109. package/src/components/FileUploader.vue +3 -35
  110. package/src/components/GeneratedPluginView.vue +34 -81
  111. package/src/components/GeneratedResultRenderer.vue +2 -1
  112. package/src/components/InstrumentStatusPanels.vue +3 -3
  113. package/src/components/PlotlyChart.vue +1 -1
  114. package/src/components/PluginIcon.story.vue +2 -2
  115. package/src/components/PluginIcon.vue +2 -2
  116. package/src/components/PluginWorkspaceView.vue +10 -1
  117. package/src/components/SectionCard.vue +42 -6
  118. package/src/components/internal/AppTopBarOnboardingInternal.vue +30 -14
  119. package/src/components/internal/AppTopBarPageSelectorInternal.vue +12 -0
  120. package/src/components/internal/AutoGroupModalInternal.vue +14 -3
  121. package/src/components/internal/LucideIconInternal.vue +23 -0
  122. package/src/composables/appLayoutSidebar.ts +11 -0
  123. package/src/composables/index.ts +1 -2
  124. package/src/composables/useExperimentSelector.ts +4 -0
  125. package/src/composables/useJobCenter.ts +21 -1
  126. package/src/composables/useJobsEndpoint.ts +15 -4
  127. package/src/composables/useOnboarding.ts +3 -3
  128. package/src/composables/usePluginWorkspace.ts +15 -4
  129. package/src/composables/useVersionedSave.ts +32 -7
  130. package/src/generated-ui/main.ts +3 -1
  131. package/src/index.ts +0 -3
  132. package/src/styles/components/alert-box.css +1 -1
  133. package/src/styles/components/app-layout.css +5 -0
  134. package/src/styles/components/app-sidebar.css +5 -5
  135. package/src/styles/components/app-top-bar.css +130 -9
  136. package/src/styles/components/button.css +3 -3
  137. package/src/styles/components/checkbox.css +1 -1
  138. package/src/styles/components/collapsible-card.css +1 -1
  139. package/src/styles/components/confirm-dialog.css +2 -2
  140. package/src/styles/components/file-uploader.css +3 -3
  141. package/src/styles/components/icon-button.css +3 -3
  142. package/src/styles/components/loading-spinner.css +1 -1
  143. package/src/styles/components/onboarding.css +39 -0
  144. package/src/styles/components/pill.css +1 -1
  145. package/src/styles/components/plugin-icon.css +2 -2
  146. package/src/styles/components/presence-avatars.css +4 -4
  147. package/src/styles/components/progress-bar.css +1 -1
  148. package/src/styles/components/section-card.css +65 -6
  149. package/src/styles/components/sequence-input.css +1 -1
  150. package/src/styles/components/slider.css +1 -1
  151. package/src/styles/components/toggle.css +1 -1
  152. package/src/styles/variables.css +10 -4
  153. package/src/types/components.ts +23 -2
  154. package/src/types/generated-ui.ts +2 -0
  155. package/src/types/index.ts +1 -1
  156. package/src/types/instrument.ts +5 -18
  157. package/src/utils/deprecation.ts +8 -0
  158. package/src/utils/lucideIcon.ts +25 -0
  159. package/src/utils/lucideIconIndex.d.ts +2 -0
  160. package/dist/AppSidebar-BDrd7Kwn.js.map +0 -1
  161. package/dist/ConfirmDialog-CjWoxAD1.js.map +0 -1
  162. package/dist/ExperimentPopover-BM92LlrQ.js.map +0 -1
  163. package/dist/ExperimentSelectorModal-LsB1ABmh.js.map +0 -1
  164. package/dist/deprecatedRootExports.d.ts +0 -191
  165. package/dist/install-UTqrAgHe.js.map +0 -1
  166. package/dist/lab-CbdDLAVr.js.map +0 -1
  167. package/dist/records-CWRztE5M.js.map +0 -1
  168. package/dist/runtime-DrL6lKAb.js.map +0 -1
  169. package/dist/useDropdownState-uFIz6Yv8.js.map +0 -1
  170. package/dist/useListReorder-QqJc1dpX.js.map +0 -1
  171. package/dist/useRackEditor-BHGM1Ngz.js.map +0 -1
  172. package/dist/useRequest-Bfsh7gIm.js +0 -215
  173. package/dist/useRequest-Bfsh7gIm.js.map +0 -1
  174. package/src/deprecatedRootExports.ts +0 -226
package/dist/styles.css CHANGED
@@ -1,4 +1,4 @@
1
- @import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500;600&display=swap');
1
+
2
2
  .mint-generated-path-input[data-v-85f805b3] {
3
3
  display: grid;
4
4
  gap: 0.75rem;
@@ -18,7 +18,7 @@
18
18
  background: transparent;
19
19
  }
20
20
 
21
- .mint-plotly-chart__plot[data-v-ec8df4f1] {
21
+ .mint-plotly-chart__plot[data-v-8d1b6790] {
22
22
  width: 100%;
23
23
  min-height: 24rem;
24
24
  }
@@ -26,18 +26,18 @@
26
26
  /* Plotly fills the hover label's trace-name box from plot/paper bgcolor combined over
27
27
  white (inline style, no hoverlabel option), so it stays light in dark mode. The token
28
28
  follows the theme; in light mode it resolves to the same white. */
29
- .mint-plotly-chart__plot[data-v-ec8df4f1] .hovertext rect {
29
+ .mint-plotly-chart__plot[data-v-8d1b6790] .hovertext rect {
30
30
  fill: var(--bg-card) !important;
31
31
  }
32
- .mint-plotly-chart__error[data-v-ec8df4f1] {
32
+ .mint-plotly-chart__error[data-v-8d1b6790] {
33
33
  margin: 0;
34
34
  padding: 1rem;
35
35
  border: 1px solid var(--mint-error-border);
36
- border-radius: 0.75rem;
36
+ border-radius: var(--radius-lg);
37
37
  background: var(--mint-error-bg);
38
38
  color: var(--mint-error-hover);
39
39
  }
40
- .mint-plotly-chart__error[data-v-ec8df4f1] p {
40
+ .mint-plotly-chart__error[data-v-8d1b6790] p {
41
41
  margin: 0;
42
42
  }
43
43
 
@@ -48,57 +48,58 @@
48
48
  margin: 0 auto;
49
49
  }
50
50
 
51
- .mint-generated-result[data-v-f242a75c] {
51
+ .mint-generated-result[data-v-2406c0cc] {
52
52
  width: 100%;
53
53
  }
54
- .mint-generated-result__text[data-v-f242a75c],
55
- .mint-generated-result__json[data-v-f242a75c] {
54
+ .mint-generated-result__text[data-v-2406c0cc],
55
+ .mint-generated-result__json[data-v-2406c0cc] {
56
56
  margin: 0;
57
57
  color: var(--text-primary);
58
58
  }
59
- .mint-generated-result__text[data-v-f242a75c] {
59
+ .mint-generated-result__text[data-v-2406c0cc] {
60
60
  max-width: 72ch;
61
61
  white-space: pre-wrap;
62
62
  line-height: 1.65;
63
63
  }
64
- .mint-generated-result__json[data-v-f242a75c] {
64
+ .mint-generated-result__json[data-v-2406c0cc] {
65
65
  overflow: auto;
66
66
  padding: 0.75rem 1rem;
67
67
  border-radius: var(--radius-md);
68
68
  background: var(--bg-tertiary);
69
+ font-family: var(--font-mono);
69
70
  font-size: 0.8125rem;
70
71
  line-height: 1.55;
71
72
  white-space: pre-wrap;
72
73
  }
73
- .mint-generated-result__image[data-v-f242a75c] {
74
+ .mint-generated-result__image[data-v-2406c0cc] {
74
75
  display: block;
75
76
  max-width: 100%;
76
77
  height: auto;
77
78
  margin: 0 auto;
78
79
  }
79
- .mint-generated-result__artifact[data-v-f242a75c] {
80
+ .mint-generated-result__artifact[data-v-2406c0cc] {
80
81
  display: flex;
81
82
  align-items: center;
82
83
  justify-content: space-between;
83
84
  gap: 1rem;
84
85
  padding: 1rem;
85
86
  border: 1px solid var(--border-color);
86
- border-radius: 0.75rem;
87
+ border-radius: var(--radius-lg);
87
88
  color: var(--color-primary);
88
89
  text-decoration: none;
89
90
  }
90
91
 
91
- .mint-status-panels__tabs[data-v-3c05755e] { padding: 0 1rem;
92
+ .mint-status-panels__tabs[data-v-1a9246f6] { padding: 0 var(--mint-section-card-inset);
92
93
  }
93
- .mint-status-panels__body[data-v-3c05755e] { padding: 0.75rem 1rem;
94
+ .mint-status-panels__body[data-v-1a9246f6] { padding: 0.75rem var(--mint-section-card-inset);
94
95
  }
95
- .mint-status-panels__bar[data-v-3c05755e] { display: flex; flex-direction: column; gap: 0.5rem;
96
+ .mint-status-panels__bar[data-v-1a9246f6] { display: flex; flex-direction: column; gap: 0.5rem;
96
97
  }
97
- .mint-status-panels__series[data-v-3c05755e] { align-self: flex-end;
98
+ .mint-status-panels__series[data-v-1a9246f6] { align-self: flex-end;
98
99
  }
99
- .mint-status-panels__kv[data-v-3c05755e] { margin: 0; padding: 0.25rem 1rem 0.5rem;
100
+ .mint-status-panels__kv[data-v-1a9246f6] { margin: 0; padding: 0.25rem var(--mint-section-card-inset) 0.5rem;
100
101
  }
101
- .mint-status-panels__kv-row[data-v-3c05755e] {
102
+ .mint-status-panels__kv-row[data-v-1a9246f6] {
102
103
  display: flex;
103
104
  align-items: baseline;
104
105
  justify-content: space-between;
@@ -106,11 +107,11 @@
106
107
  padding: 0.4375rem 0;
107
108
  border-bottom: 1px solid var(--border-light);
108
109
  }
109
- .mint-status-panels__kv-row[data-v-3c05755e]:last-child { border-bottom: 0;
110
+ .mint-status-panels__kv-row[data-v-1a9246f6]:last-child { border-bottom: 0;
110
111
  }
111
- .mint-status-panels__kv-key[data-v-3c05755e] { font-size: 0.75rem; color: var(--text-secondary);
112
+ .mint-status-panels__kv-key[data-v-1a9246f6] { font-size: 0.75rem; color: var(--text-secondary);
112
113
  }
113
- .mint-status-panels__kv-value[data-v-3c05755e] {
114
+ .mint-status-panels__kv-value[data-v-1a9246f6] {
114
115
  margin: 0;
115
116
  min-width: 0;
116
117
  font-family: var(--font-mono);
@@ -121,77 +122,27 @@
121
122
  overflow-wrap: anywhere;
122
123
  }
123
124
 
124
- .mint-generated-workspace[data-v-c8ff991b] {
125
- position: relative;
125
+ .mint-generated-workspace[data-v-7ba9e342] {
126
126
  min-width: 0;
127
- min-height: calc(100vh - 5rem);
128
- padding: clamp(1rem, 2.5vw, 2.5rem);
129
- background: var(--bg-primary);
127
+ min-height: 0;
128
+ overflow-y: auto;
130
129
  }
131
- .mint-generated-workspace__loading[data-v-c8ff991b] {
130
+ .mint-generated-workspace__loading[data-v-7ba9e342] {
132
131
  display: flex;
133
- min-height: 24rem;
132
+ flex: 1;
134
133
  align-items: center;
135
134
  justify-content: center;
136
135
  gap: 0.75rem;
137
136
  color: var(--text-secondary);
138
137
  }
139
- .mint-generated-workspace__header[data-v-c8ff991b] {
140
- display: flex;
141
- align-items: flex-start;
142
- justify-content: space-between;
143
- gap: 1.5rem;
144
- max-width: 76rem;
145
- margin: 0 auto 1.25rem;
146
- }
147
- .mint-generated-workspace__header h1[data-v-c8ff991b] {
148
- margin: 0;
149
- color: var(--text-primary);
150
- font-size: clamp(1.35rem, 2vw, 1.8rem);
151
- line-height: 1.2;
152
- }
153
- .mint-generated-workspace__header p[data-v-c8ff991b]:not(.mint-generated-workspace__eyebrow) {
154
- margin: 0.4rem 0 0;
155
- color: var(--text-secondary);
156
- }
157
- .mint-generated-workspace__eyebrow[data-v-c8ff991b] {
158
- margin: 0 0 0.35rem;
159
- color: var(--text-secondary);
160
- font-size: 0.72rem;
161
- font-weight: 700;
162
- }
163
- .mint-generated-workspace__resources[data-v-c8ff991b] {
164
- display: flex;
165
- flex-wrap: wrap;
166
- justify-content: flex-end;
167
- gap: 0.4rem;
168
- }
169
- .mint-generated-workspace__resources span[data-v-c8ff991b] {
170
- padding: 0.3rem 0.55rem;
171
- border: 1px solid var(--border-color);
172
- border-radius: 999px;
173
- background: var(--bg-secondary);
174
- color: var(--text-secondary);
138
+ .mint-generated-workspace__resources[data-v-7ba9e342] {
139
+ color: var(--text-muted);
140
+ font-family: var(--font-mono);
175
141
  font-size: 0.75rem;
176
- font-weight: 600;
177
- }
178
- .mint-generated-workspace__result[data-v-c8ff991b] {
179
- max-width: 76rem;
180
- min-height: 24rem;
181
- margin: 0 auto;
182
- padding: clamp(1rem, 2vw, 1.75rem);
183
- border: 1px solid var(--border-color);
184
- border-radius: 1rem;
185
- background: var(--bg-secondary);
186
- box-shadow: var(--shadow-sm);
187
- }
188
- @media (max-width: 640px) {
189
- .mint-generated-workspace__header[data-v-c8ff991b] {
190
- flex-direction: column;
191
- }
192
- .mint-generated-workspace__resources[data-v-c8ff991b] {
193
- justify-content: flex-start;
194
142
  }
143
+ .mint-generated-workspace__description[data-v-7ba9e342] {
144
+ margin: 0 0 var(--mint-gutter);
145
+ color: var(--text-secondary);
195
146
  }
196
147
 
197
148
  .mint-component-binding-renderer[data-v-eeb93cc7] {
@@ -300,9 +251,8 @@
300
251
  cursor: pointer;
301
252
  }
302
253
 
303
-
304
-
305
254
  @layer theme, base, components, utilities;
255
+
306
256
  /* MINT SDK Styles - Main entry point
307
257
  * This file combines all SDK styles for proper bundling
308
258
  */
@@ -369,12 +319,16 @@
369
319
  --mint-primary: var(--color-primary);
370
320
  /* Text and icons on an accent fill (filled buttons, Save). */
371
321
  --text-on-accent: #FFFFFF;
372
- /* Retired hues, aliased to the accent until 1.5 (mint doctor warns on use). */
322
+ /* Text on a --mint-error fill (danger buttons); white in both themes, 3.76:1 on #EF4444. */
323
+ --text-on-danger: #FFFFFF;
324
+ /* Knob of a toggle or slider, and the mark of a disabled checkbox; white in both themes. */
325
+ --control-knob: #FFFFFF;
326
+ /* Retired hues, aliased to the accent until 2.0 (mint doctor warns on use). */
373
327
  --color-cta: var(--color-primary);
374
328
  --color-cta-hover: var(--color-primary-hover);
375
329
  --color-purple: var(--color-primary);
376
330
 
377
- /* Entity colors — retired hues, aliased to slate until 1.5. Entities are told
331
+ /* Entity colors — retired hues, aliased to slate until 2.0. Entities are told
378
332
  apart by icon and label, not by hue. Only -hover has no neutral token. */
379
333
  --color-experiment: var(--text-secondary-strong);
380
334
  --color-experiment-hover: #334155;
@@ -444,6 +398,9 @@
444
398
  --mint-gutter: 0.5rem;
445
399
  /* Distance from the outermost cards to the window edge, in every density. */
446
400
  --mint-page-inset: 1rem;
401
+ /* Text inset of a SectionCard: its title, row text and table edge columns
402
+ start here, and page chrome over a card (breadcrumbs) can line up with it. */
403
+ --mint-section-card-inset: 0.75rem;
447
404
 
448
405
  /* Semantic colors */
449
406
  --mint-success: #10B981;
@@ -687,6 +644,7 @@ html.dark [data-palette="forest"] {
687
644
  /* Comfortable density (html[data-density], written by the settings store):
688
645
  the pre-v2 control heights and a wider gutter. */
689
646
  [data-density="comfortable"] {
647
+ --mint-section-card-inset: 0.875rem;
690
648
  --form-height-sm: 2rem;
691
649
  --form-height-md: 2.25rem;
692
650
  --form-height-lg: 3rem;
@@ -1464,7 +1422,7 @@ button, input, select, textarea {
1464
1422
  .mint-alert__icon--info { background-color: var(--mint-info-bg); color: var(--mint-info); }
1465
1423
  .mint-alert__icon--neutral { background-color: var(--bg-tertiary); color: var(--text-secondary); }
1466
1424
  .mint-alert__icon--primary { background-color: var(--color-primary-soft); color: var(--color-primary); }
1467
- .mint-alert__icon--cta { background-color: var(--color-primary-soft); color: var(--color-cta-hover); }
1425
+ .mint-alert__icon--cta { background-color: var(--color-primary-soft); color: var(--_ink-primary); }
1468
1426
 
1469
1427
  .mint-alert__content {
1470
1428
  flex: 1;
@@ -1749,6 +1707,10 @@ button, input, select, textarea {
1749
1707
  }
1750
1708
  }
1751
1709
 
1710
+ /* An AppTopBar in the layout renders the drawer button itself. */
1711
+ .mint-layout--responsive-sidebar:has(.mint-topbar__sidebar-toggle) .mint-layout__sidebar-toggle {
1712
+ display: none;
1713
+ }
1752
1714
  /* AppSidebar Component Styles */
1753
1715
 
1754
1716
  .mint-sidebar {
@@ -1848,8 +1810,8 @@ button, input, select, textarea {
1848
1810
  min-width: 1.375rem;
1849
1811
  padding: 0.125rem 0.375rem;
1850
1812
  border-radius: var(--radius);
1851
- background: color-mix(in srgb, var(--color-cta) 14%, transparent);
1852
- color: var(--color-cta);
1813
+ background: color-mix(in srgb, var(--color-primary) 14%, transparent);
1814
+ color: var(--color-primary);
1853
1815
  font-size: 0.6875rem;
1854
1816
  font-weight: 700;
1855
1817
  line-height: 1.1;
@@ -2120,7 +2082,7 @@ button, input, select, textarea {
2120
2082
  width: 11px;
2121
2083
  height: 11px;
2122
2084
  border-radius: 9999px;
2123
- background: white;
2085
+ background: var(--control-knob);
2124
2086
  box-shadow: var(--shadow-sm);
2125
2087
  transition: left 180ms var(--mint-ease-out-quart);
2126
2088
  }
@@ -2220,7 +2182,7 @@ button, input, select, textarea {
2220
2182
  padding: 0 0.25rem;
2221
2183
  border-radius: var(--radius);
2222
2184
  background: var(--mint-sidebar-tone);
2223
- color: white;
2185
+ color: var(--text-on-accent);
2224
2186
  font-size: 0.6875rem;
2225
2187
  font-weight: 700;
2226
2188
  line-height: 1rem;
@@ -2243,7 +2205,7 @@ button, input, select, textarea {
2243
2205
  .mint-sidebar__rail-badge--cta,
2244
2206
  .mint-sidebar__tag--cta,
2245
2207
  .mint-sidebar__group-action--cta {
2246
- --mint-sidebar-tone: var(--color-cta);
2208
+ --mint-sidebar-tone: var(--color-primary);
2247
2209
  }
2248
2210
 
2249
2211
  .mint-sidebar__rail-badge--success,
@@ -2308,6 +2270,8 @@ button, input, select, textarea {
2308
2270
  padding: 0.75rem 1rem;
2309
2271
  background-color: var(--bg-secondary);
2310
2272
  box-sizing: border-box;
2273
+ /* The two-row layout follows the bar's own width, not the window's. */
2274
+ container: mint-topbar / inline-size;
2311
2275
  }
2312
2276
 
2313
2277
  /* Main container layout — equal side columns keep the centre nav on the bar
@@ -2368,11 +2332,62 @@ button, input, select, textarea {
2368
2332
  grid-column: 3;
2369
2333
  display: flex;
2370
2334
  align-items: center;
2371
- gap: 0.125rem;
2335
+ gap: 0.375rem;
2372
2336
  min-width: 0;
2373
2337
  justify-content: flex-end;
2374
2338
  }
2375
2339
 
2340
+ /* Context group (standalone badge, run slot, onboarding, plugin buttons), then
2341
+ the fixed tail: theme, settings and the host's account controls, always last. */
2342
+ .mint-topbar__context,
2343
+ .mint-topbar__tail {
2344
+ display: flex;
2345
+ align-items: center;
2346
+ gap: 0.125rem;
2347
+ min-width: 0;
2348
+ }
2349
+
2350
+ .mint-topbar__tail {
2351
+ flex-shrink: 0;
2352
+ }
2353
+
2354
+ /* The deprecated #actions slot keeps a fixed width, so its content cannot push the bar. */
2355
+ .mint-topbar__legacy-actions {
2356
+ display: inline-flex;
2357
+ align-items: center;
2358
+ max-width: 16rem;
2359
+ overflow: hidden;
2360
+ }
2361
+
2362
+ /* Below 1024px of bar width: row 1 is identity + tail, row 2 the pills + context.
2363
+ Row 1 never holds more than the identity, so the tail never moves. */
2364
+ @container mint-topbar (max-width: 1023.98px) {
2365
+ .mint-topbar__container--stackable {
2366
+ /* The pills keep their width while it fits; the context group takes the rest and its experiment
2367
+ name truncates. On a bar narrower than the pills they overflow their cell, never the tail. */
2368
+ grid-template-columns: minmax(0, max-content) minmax(0, 1fr) auto;
2369
+ grid-template-areas:
2370
+ "start start tail"
2371
+ "center context context";
2372
+ row-gap: 0.375rem;
2373
+ }
2374
+
2375
+ .mint-topbar__container--stackable .mint-topbar__start { grid-area: start; }
2376
+ .mint-topbar__container--stackable .mint-topbar__right { display: contents; }
2377
+ .mint-topbar__container--stackable .mint-topbar__tail { grid-area: tail; }
2378
+
2379
+ .mint-topbar__container--stackable .mint-topbar__center {
2380
+ grid-area: center;
2381
+ justify-content: flex-start;
2382
+ }
2383
+
2384
+ .mint-topbar__container--stackable .mint-topbar__context {
2385
+ /* Stretch, not justify-self: end, which would size the group to its nowrap min-content. */
2386
+ grid-area: context;
2387
+ justify-content: flex-end;
2388
+ }
2389
+ }
2390
+
2376
2391
  /* Logo styles */
2377
2392
  .mint-topbar__logo {
2378
2393
  display: flex;
@@ -2466,17 +2481,20 @@ button, input, select, textarea {
2466
2481
  .mint-topbar__plugin-name,
2467
2482
  .mint-topbar__plugin-subtitle,
2468
2483
  .mint-topbar-title,
2469
- .mint-topbar-subtitle {
2484
+ .mint-topbar-subtitle,
2485
+ .mint-topbar__title-only {
2470
2486
  overflow: hidden;
2471
2487
  text-overflow: ellipsis;
2472
2488
  white-space: nowrap;
2473
2489
  }
2474
2490
 
2475
- /* The settings button has the IconButton ghost look: 32px, --radius-md,
2476
- 16px icon, neutral ink, offset focus ring. */
2477
- .mint-topbar__settings-btn {
2491
+ /* The settings button, plugin icon buttons and the drawer button have the
2492
+ IconButton ghost look: 32px, --radius-md, 16px icon, neutral ink, offset focus ring. */
2493
+ .mint-topbar__settings-btn,
2494
+ .mint-topbar__icon-btn {
2478
2495
  position: relative;
2479
2496
  display: inline-flex;
2497
+ flex-shrink: 0;
2480
2498
  align-items: center;
2481
2499
  justify-content: center;
2482
2500
  width: 2rem;
@@ -2491,23 +2509,62 @@ button, input, select, textarea {
2491
2509
  transition: background-color var(--mint-transition), color var(--mint-transition);
2492
2510
  }
2493
2511
 
2494
- .mint-topbar__settings-btn:hover {
2512
+ .mint-topbar__settings-btn:hover,
2513
+ .mint-topbar__icon-btn:hover:not(:disabled) {
2495
2514
  background: var(--bg-hover);
2496
2515
  color: var(--text-primary);
2497
2516
  }
2498
2517
 
2499
- .mint-topbar__settings-btn:focus-visible {
2518
+ .mint-topbar__settings-btn:focus-visible,
2519
+ .mint-topbar__icon-btn:focus-visible {
2500
2520
  outline: none;
2501
2521
  box-shadow: var(--focus-ring-offset);
2502
2522
  }
2503
2523
 
2504
- .mint-topbar__settings-icon {
2524
+ .mint-topbar__icon-btn:disabled {
2525
+ cursor: not-allowed;
2526
+ opacity: 0.5;
2527
+ }
2528
+
2529
+ .mint-topbar__settings-icon,
2530
+ .mint-topbar__icon-btn-icon {
2505
2531
  width: 1rem;
2506
2532
  height: 1rem;
2507
2533
  }
2508
2534
 
2535
+ /* Status dot of a plugin icon button (TopBarAction.dot). */
2536
+ .mint-topbar__icon-btn-dot {
2537
+ position: absolute;
2538
+ top: 0.3125rem;
2539
+ right: 0.3125rem;
2540
+ width: 0.4375rem;
2541
+ height: 0.4375rem;
2542
+ border-radius: 50%;
2543
+ box-shadow: 0 0 0 2px var(--bg-secondary);
2544
+ background: var(--text-muted);
2545
+ }
2546
+
2547
+ .mint-topbar__icon-btn-dot--primary,
2548
+ .mint-topbar__icon-btn-dot--cta { background: var(--color-primary); }
2549
+ .mint-topbar__icon-btn-dot--success { background: var(--mint-success); }
2550
+ .mint-topbar__icon-btn-dot--warning { background: var(--mint-warning); }
2551
+ .mint-topbar__icon-btn-dot--error { background: var(--mint-error); }
2552
+ .mint-topbar__icon-btn-dot--info { background: var(--mint-info); }
2553
+
2554
+ /* The drawer button shows only while the AppLayout sidebar is a drawer. */
2555
+ .mint-topbar__sidebar-toggle {
2556
+ display: none;
2557
+ }
2558
+
2559
+ @media (max-width: 1023.98px) {
2560
+ .mint-topbar__sidebar-toggle {
2561
+ display: inline-flex;
2562
+ }
2563
+ }
2564
+
2509
2565
  @media (prefers-reduced-motion: reduce) {
2510
- .mint-topbar__settings-btn {
2566
+ .mint-topbar__settings-btn,
2567
+ .mint-topbar__icon-btn {
2511
2568
  transition: none;
2512
2569
  }
2513
2570
  }
@@ -2689,6 +2746,32 @@ button, input, select, textarea {
2689
2746
  clip-path: inset(50%);
2690
2747
  white-space: nowrap;
2691
2748
  }
2749
+
2750
+ /* ─── Labels or icons, by fit ───
2751
+ Save and Jobs show their words while the content fits; AppTopBar.compact.ts
2752
+ sets --compact when it does not (a name is cut, the experiment chip is
2753
+ squeezed or a group overflows), and they keep only their icons. Plugin
2754
+ buttons with an icon are always icon-only. Accessible names and tooltips
2755
+ keep the words. */
2756
+ .mint-topbar--compact .mint-experiment-popover__save {
2757
+ width: 32px;
2758
+ padding: 0;
2759
+ justify-content: center;
2760
+ }
2761
+
2762
+ .mint-topbar--compact .mint-experiment-popover__save-label,
2763
+ .mint-topbar--compact .mint-topbar__job-label {
2764
+ display: none;
2765
+ }
2766
+
2767
+ .mint-topbar--compact .mint-topbar__job--idle {
2768
+ padding-inline: 0.5rem;
2769
+ }
2770
+
2771
+ /* One total width cap for the experiment chip, code and chevron included. */
2772
+ .mint-topbar .mint-experiment-popover__trigger {
2773
+ max-width: 16rem;
2774
+ }
2692
2775
  /* BaseButton Component Styles */
2693
2776
 
2694
2777
  .mint-button {
@@ -2759,17 +2842,17 @@ button, input, select, textarea {
2759
2842
  }
2760
2843
 
2761
2844
  .mint-button--cta {
2762
- background-color: var(--color-cta);
2845
+ background-color: var(--color-primary);
2763
2846
  color: var(--text-on-accent);
2764
2847
  }
2765
2848
 
2766
2849
  .mint-button--cta:hover:not(.mint-button--disabled) {
2767
- background-color: var(--color-cta-hover);
2850
+ background-color: var(--color-primary-hover);
2768
2851
  }
2769
2852
 
2770
2853
  .mint-button--danger {
2771
2854
  background-color: var(--mint-error);
2772
- color: white;
2855
+ color: var(--text-on-danger);
2773
2856
  }
2774
2857
 
2775
2858
  .mint-button--danger:hover:not(.mint-button--disabled) {
@@ -3006,7 +3089,7 @@ button, input, select, textarea {
3006
3089
  .mint-checkbox__native:disabled + .mint-checkbox__box.mint-checkbox__box--indeterminate {
3007
3090
  background-color: var(--text-muted);
3008
3091
  border-color: var(--text-muted);
3009
- color: #FFFFFF;
3092
+ color: var(--control-knob);
3010
3093
  }
3011
3094
 
3012
3095
  .mint-checkbox__box--sm {
@@ -3235,7 +3318,7 @@ button, input, select, textarea {
3235
3318
 
3236
3319
  .mint-collapsible-card__badge--cta,
3237
3320
  .mint-collapsible-card__action--cta {
3238
- --mint-sidebar-badge-color: var(--color-cta);
3321
+ --mint-sidebar-badge-color: var(--color-primary);
3239
3322
  }
3240
3323
 
3241
3324
  .mint-collapsible-card__badge--success,
@@ -3884,9 +3967,9 @@ button, input, select, textarea {
3884
3967
  font-size: 0.6875rem;
3885
3968
  font-weight: 700;
3886
3969
  font-family: var(--font-mono);
3887
- color: var(--badge-color);
3888
- background-color: color-mix(in srgb, var(--badge-color) 10%, transparent);
3889
- border: 1px solid color-mix(in srgb, var(--badge-color) 20%, transparent);
3970
+ color: var(--text-secondary);
3971
+ background-color: var(--bg-tertiary);
3972
+ border: 1px solid var(--border-color);
3890
3973
  }
3891
3974
 
3892
3975
  .mint-file-uploader__file-meta {
@@ -4158,17 +4241,17 @@ button, input, select, textarea {
4158
4241
  }
4159
4242
 
4160
4243
  .mint-icon-button--cta {
4161
- background-color: var(--color-cta);
4244
+ background-color: var(--color-primary);
4162
4245
  color: var(--text-on-accent);
4163
4246
  }
4164
4247
 
4165
4248
  .mint-icon-button--cta:hover:not(.mint-icon-button--disabled) {
4166
- background-color: var(--color-cta-hover);
4249
+ background-color: var(--color-primary-hover);
4167
4250
  }
4168
4251
 
4169
4252
  .mint-icon-button--danger {
4170
4253
  background-color: var(--mint-error);
4171
- color: white;
4254
+ color: var(--text-on-danger);
4172
4255
  }
4173
4256
 
4174
4257
  .mint-icon-button--danger:hover:not(.mint-icon-button--disabled) {
@@ -5776,6 +5859,44 @@ html.dark {
5776
5859
  transition: background-color var(--mint-transition), border-color var(--mint-transition);
5777
5860
  }
5778
5861
 
5862
+ /* The close button sits inside the chip border, so the chip keeps room for it. */
5863
+ .mint-onboarding-help__chip-group {
5864
+ position: relative;
5865
+ display: inline-flex;
5866
+ }
5867
+
5868
+ .mint-onboarding-help__chip-group .mint-onboarding-help__chip {
5869
+ padding-right: 2rem;
5870
+ }
5871
+
5872
+ .mint-onboarding-help__chip-close {
5873
+ position: absolute;
5874
+ top: 50%;
5875
+ right: 0.25rem;
5876
+ display: grid;
5877
+ place-items: center;
5878
+ width: 1.5rem;
5879
+ height: 1.5rem;
5880
+ padding: 0;
5881
+ border: 0;
5882
+ border-radius: var(--radius-sm);
5883
+ background: transparent;
5884
+ color: var(--text-muted);
5885
+ cursor: pointer;
5886
+ transform: translateY(-50%);
5887
+ transition: background-color var(--mint-transition), color var(--mint-transition);
5888
+ }
5889
+
5890
+ .mint-onboarding-help__chip-close:hover {
5891
+ background: var(--bg-tertiary);
5892
+ color: var(--text-primary);
5893
+ }
5894
+
5895
+ .mint-onboarding-help__chip-close:focus-visible {
5896
+ outline: none;
5897
+ box-shadow: var(--focus-ring-offset);
5898
+ }
5899
+
5779
5900
  .mint-onboarding-help__chip:hover {
5780
5901
  background: var(--bg-hover);
5781
5902
  }
@@ -6097,6 +6218,7 @@ html.dark {
6097
6218
 
6098
6219
  @media (prefers-reduced-motion: reduce) {
6099
6220
  .mint-onboarding-help__chip,
6221
+ .mint-onboarding-help__chip-close,
6100
6222
  .mint-onboarding-help__bar > span,
6101
6223
  .mint-onboarding-help__progress > span,
6102
6224
  .mint-onboarding__hole {
@@ -6862,6 +6984,11 @@ html.dark {
6862
6984
  min-height: 0;
6863
6985
  }
6864
6986
 
6987
+ /* A collapsed fill card gives its track back to its siblings. */
6988
+ .mint-section-card--fill.mint-section-card--collapsed {
6989
+ flex: none;
6990
+ }
6991
+
6865
6992
  .mint-section-card--fill .mint-section-card__body {
6866
6993
  flex: 1;
6867
6994
  min-height: 0;
@@ -6876,7 +7003,7 @@ html.dark {
6876
7003
  min-height: 2.5rem;
6877
7004
  /* 4px block padding: a 28px header control plus padding plus the 1px rule
6878
7005
  stays inside the 40px strip (6px made it 41px). */
6879
- padding: 0.25rem 0.625rem 0.25rem 0.75rem;
7006
+ padding: 0.25rem 0.625rem 0.25rem var(--mint-section-card-inset);
6880
7007
  border-bottom: 1px solid var(--border-color);
6881
7008
  flex-shrink: 0;
6882
7009
  }
@@ -6885,6 +7012,45 @@ html.dark {
6885
7012
  border-bottom-color: var(--border-light);
6886
7013
  }
6887
7014
 
7015
+ /* A collapsed card is its header alone: no rule under it. */
7016
+ .mint-section-card__header--collapsed {
7017
+ border-bottom-color: transparent;
7018
+ }
7019
+
7020
+ .mint-section-card__toggle {
7021
+ display: inline-flex;
7022
+ align-items: center;
7023
+ gap: var(--mint-section-card-gap);
7024
+ margin: 0;
7025
+ padding: 0;
7026
+ border: 0;
7027
+ background: none;
7028
+ color: inherit;
7029
+ font: inherit;
7030
+ cursor: pointer;
7031
+ }
7032
+
7033
+ .mint-section-card__toggle:focus-visible {
7034
+ outline: none;
7035
+ box-shadow: var(--focus-ring-offset);
7036
+ border-radius: var(--radius-sm);
7037
+ }
7038
+
7039
+ .mint-section-card__chevron {
7040
+ width: 0.875rem;
7041
+ height: 0.875rem;
7042
+ color: var(--text-muted);
7043
+ transition: transform var(--mint-transition);
7044
+ }
7045
+
7046
+ .mint-section-card__toggle[aria-expanded="false"] .mint-section-card__chevron {
7047
+ transform: rotate(-90deg);
7048
+ }
7049
+
7050
+ .mint-section-card__toggle:hover .mint-section-card__chevron {
7051
+ color: var(--text-secondary);
7052
+ }
7053
+
6888
7054
  /* Muted icon, no tinted chip: every accent renders the same. */
6889
7055
  .mint-section-card__icon-chip {
6890
7056
  display: inline-flex;
@@ -6932,7 +7098,8 @@ html.dark {
6932
7098
  display: flex;
6933
7099
  align-items: center;
6934
7100
  justify-content: space-between;
6935
- padding: 0.5rem 1rem;
7101
+ /* Text starts on the card inset; controls end where the header's do. */
7102
+ padding: 0.5rem 0.625rem 0.5rem var(--mint-section-card-inset);
6936
7103
  border-top: 1px solid var(--border-color);
6937
7104
  background: var(--bg-primary);
6938
7105
  font-size: 0.75rem;
@@ -6953,7 +7120,7 @@ html.dark {
6953
7120
  display: flex;
6954
7121
  align-items: center;
6955
7122
  gap: var(--mint-section-card-gap);
6956
- padding: 0.375rem 0.75rem;
7123
+ padding: 0.375rem var(--mint-section-card-inset);
6957
7124
  background: var(--bg-secondary);
6958
7125
  transition: background-color var(--mint-transition);
6959
7126
  }
@@ -6988,14 +7155,28 @@ button.mint-section-card__row:hover {
6988
7155
  /* Comfortable density gives the header and rows back their height. */
6989
7156
  [data-density="comfortable"] .mint-section-card__header {
6990
7157
  min-height: 2.75rem;
6991
- padding: 0.25rem 0.75rem 0.25rem 0.875rem;
7158
+ padding-right: 0.75rem;
7159
+ }
7160
+
7161
+ [data-density="comfortable"] .mint-section-card__footer {
7162
+ padding-right: 0.75rem;
6992
7163
  }
6993
7164
 
6994
7165
  [data-density="comfortable"] .mint-section-card__row {
6995
7166
  padding-top: 0.5rem;
6996
7167
  padding-bottom: 0.5rem;
6997
- /* Same left inset as the header, so row content lines up under the header. */
6998
- padding-left: 0.875rem;
7168
+ }
7169
+
7170
+ /* A table that is the card body's own child starts and ends on the card's text
7171
+ inset, so its first column lines up under the header title. A table inside a
7172
+ padded wrapper keeps its padding, and the checkbox and actions columns stay
7173
+ centred controls. The table's size padding uses !important, so this must too. */
7174
+ .mint-section-card__body > .mint-dataframe :is(.mint-dataframe__th, .mint-dataframe__td):first-child:not(.mint-dataframe__th--checkbox, .mint-dataframe__td--checkbox) {
7175
+ padding-left: var(--mint-section-card-inset) !important;
7176
+ }
7177
+
7178
+ .mint-section-card__body > .mint-dataframe :is(.mint-dataframe__th, .mint-dataframe__td):last-child:not(.mint-dataframe__th--actions, .mint-dataframe__td--actions) {
7179
+ padding-right: var(--mint-section-card-inset) !important;
6999
7180
  }
7000
7181
 
7001
7182
  /* SecretInput — plugin secret settings field with a set / not set / environment status.
@@ -7307,7 +7488,7 @@ button.mint-section-card__row:hover {
7307
7488
  box-sizing: border-box;
7308
7489
  transform: translateX(-50%) translateY(-50%);
7309
7490
  border-radius: 9999px;
7310
- background-color: #FFFFFF;
7491
+ background-color: var(--control-knob);
7311
7492
  border: 1px solid color-mix(in srgb, var(--text-secondary) 40%, transparent);
7312
7493
  box-shadow: var(--shadow-sm);
7313
7494
  pointer-events: none;
@@ -8118,7 +8299,7 @@ html.dark .mint-toast__item {
8118
8299
  top: 50%;
8119
8300
  left: 2px;
8120
8301
  border-radius: 9999px;
8121
- background-color: #FFFFFF;
8302
+ background-color: var(--control-knob);
8122
8303
  box-shadow: var(--shadow-sm);
8123
8304
  transition: transform 180ms cubic-bezier(0.25, 1, 0.5, 1);
8124
8305
  pointer-events: none;
@@ -11123,7 +11304,7 @@ html.dark .sg-summary code { background: rgba(255, 255, 255, 0.1); }
11123
11304
  (soft-tint background, dot, outline border); `--mint-pill-ink` the text. A
11124
11305
  `color` prop sets `--mint-pill-tone` inline. */
11125
11306
  .mint-pill--primary { --mint-pill-tone: var(--color-primary); --mint-pill-ink: var(--color-primary-hover); }
11126
- .mint-pill--cta { --mint-pill-tone: var(--color-cta); --mint-pill-ink: var(--color-cta-hover); }
11307
+ .mint-pill--cta { --mint-pill-tone: var(--color-primary); --mint-pill-ink: var(--color-primary-hover); }
11127
11308
  .mint-pill--success { --mint-pill-tone: var(--mint-success); --mint-pill-ink: var(--mint-success-hover); }
11128
11309
  .mint-pill--warning { --mint-pill-tone: var(--mint-warning); --mint-pill-ink: var(--mint-warning-text); }
11129
11310
  .mint-pill--error { --mint-pill-tone: var(--mint-error); --mint-pill-ink: var(--mint-error-hover); }
@@ -12247,7 +12428,7 @@ html.dark .mint-dataframe__loading {
12247
12428
 
12248
12429
  /* Tones */
12249
12430
  .mint-spinner--primary { color: var(--color-primary); }
12250
- .mint-spinner--cta { color: var(--color-cta); }
12431
+ .mint-spinner--cta { color: var(--color-primary); }
12251
12432
  .mint-spinner--success { color: var(--mint-success); }
12252
12433
  .mint-spinner--warning { color: var(--mint-warning); }
12253
12434
  .mint-spinner--error { color: var(--mint-error); }
@@ -12404,7 +12585,7 @@ html.dark .mint-dataframe__loading {
12404
12585
  .mint-progress__bar--success { background-color: var(--mint-success); }
12405
12586
  .mint-progress__bar--warning { background-color: var(--mint-warning); }
12406
12587
  .mint-progress__bar--error { background-color: var(--mint-error); }
12407
- .mint-progress__bar--cta { background-color: var(--color-cta); }
12588
+ .mint-progress__bar--cta { background-color: var(--color-primary); }
12408
12589
  .mint-progress__bar--neutral { background-color: var(--text-muted); }
12409
12590
  .mint-progress__bar--info { background-color: var(--color-primary); } /* 6b: progress fill is always primary; --mint-info is for the running dot */
12410
12591
 
@@ -12500,19 +12681,19 @@ html.dark .mint-dataframe__loading {
12500
12681
  .mint-avatar__status--offline { background-color: var(--text-muted); }
12501
12682
  /* PresenceAvatars: an avatar stack that opens a list of who is here.
12502
12683
  * The editing cue is a ring plus a pencil badge, so it does not depend on
12503
- * colour only. Light mode uses --color-cta-hover (3:1 on the card), dark
12504
- * mode --color-cta. --mint-presence-surface is the colour the avatars are
12684
+ * colour only. Light mode uses --color-primary-hover (3:1 on the card), dark
12685
+ * mode --color-primary. --mint-presence-surface is the colour the avatars are
12505
12686
  * cut out of; set it when the stack sits on another surface. */
12506
12687
 
12507
12688
  .mint-presence {
12508
- --mint-presence-editing: var(--color-cta-hover);
12689
+ --mint-presence-editing: var(--color-primary-hover);
12509
12690
  --mint-presence-surface: var(--bg-secondary);
12510
12691
  position: relative;
12511
12692
  display: inline-flex;
12512
12693
  }
12513
12694
 
12514
12695
  :where(html.dark) .mint-presence {
12515
- --mint-presence-editing: var(--color-cta);
12696
+ --mint-presence-editing: var(--color-primary);
12516
12697
  }
12517
12698
 
12518
12699
  .mint-presence__trigger {
@@ -13050,8 +13231,8 @@ html.dark .mint-dataframe__loading {
13050
13231
  }
13051
13232
 
13052
13233
  .mint-confirm__icon--cta {
13053
- background-color: color-mix(in srgb, var(--color-cta) 12%, transparent);
13054
- color: var(--color-cta);
13234
+ background-color: color-mix(in srgb, var(--color-primary) 12%, transparent);
13235
+ color: var(--color-primary);
13055
13236
  }
13056
13237
 
13057
13238
  .mint-confirm__icon--neutral {
@@ -14746,7 +14927,7 @@ html.dark .mint-stale-banner {
14746
14927
  .mint-sequence-input__problem--error .mint-sequence-input__problem-shape { fill: var(--mint-error); }
14747
14928
 
14748
14929
  .mint-sequence-input__problem-mark {
14749
- stroke: white;
14930
+ stroke: var(--text-on-danger);
14750
14931
  stroke-width: 1.6;
14751
14932
  stroke-linecap: round;
14752
14933
  }
@@ -18256,10 +18437,10 @@ button.mint-unit-input__unit:focus-visible {
18256
18437
  .mint-plugin-icon--topbar { width: 2.25rem; height: 2.25rem; }
18257
18438
  .mint-plugin-icon--lg { width: 3rem; height: 3rem; }
18258
18439
 
18259
- /* Tones (deprecated with the tone/color props, removed in 1.5): the v2 tile no longer reads the variable. */
18440
+ /* Tones (deprecated with the tone/color props, removed in 2.0): the v2 tile no longer reads the variable. */
18260
18441
  .mint-plugin-icon--neutral { --mint-plugin-icon-tone: var(--text-secondary); }
18261
18442
  .mint-plugin-icon--primary { --mint-plugin-icon-tone: var(--color-primary); }
18262
- .mint-plugin-icon--cta { --mint-plugin-icon-tone: var(--color-cta); }
18443
+ .mint-plugin-icon--cta { --mint-plugin-icon-tone: var(--color-primary); }
18263
18444
  .mint-plugin-icon--success { --mint-plugin-icon-tone: var(--mint-success); }
18264
18445
  .mint-plugin-icon--warning { --mint-plugin-icon-tone: var(--mint-warning); }
18265
18446
  .mint-plugin-icon--error { --mint-plugin-icon-tone: var(--mint-error); }