@morscherlab/mint-sdk 1.5.0-beta.2 → 1.5.0-beta.3

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 (118) hide show
  1. package/dist/{AlertBox-CIhqsWbN.js → AlertBox-CexONPhA.js} +2 -2
  2. package/dist/{AlertBox-CIhqsWbN.js.map → AlertBox-CexONPhA.js.map} +1 -1
  3. package/dist/{AppSidebar-BDrd7Kwn.js → AppSidebar-FxlF5_dI.js} +55 -40
  4. package/dist/AppSidebar-FxlF5_dI.js.map +1 -0
  5. package/dist/{ConfirmDialog-CjWoxAD1.js → ConfirmDialog-D9QXFpsy.js} +2 -2
  6. package/dist/ConfirmDialog-D9QXFpsy.js.map +1 -0
  7. package/dist/{ExperimentPopover-BM92LlrQ.js → ExperimentPopover-Bbd6RaoH.js} +3 -3
  8. package/dist/{ExperimentPopover-BM92LlrQ.js.map → ExperimentPopover-Bbd6RaoH.js.map} +1 -1
  9. package/dist/{ExperimentSelectorModal-LsB1ABmh.js → ExperimentSelectorModal-CUkKmgfr.js} +35 -6
  10. package/dist/ExperimentSelectorModal-CUkKmgfr.js.map +1 -0
  11. package/dist/{SegmentedControl-Dz41vAFM.js → SegmentedControl-C-sckoJZ.js} +2 -2
  12. package/dist/{SegmentedControl-Dz41vAFM.js.map → SegmentedControl-C-sckoJZ.js.map} +1 -1
  13. package/dist/{SettingsModal-C-MSR-bk.js → SettingsModal-BIC0dAYc.js} +6 -6
  14. package/dist/{SettingsModal-C-MSR-bk.js.map → SettingsModal-BIC0dAYc.js.map} +1 -1
  15. package/dist/components/FormBuilder.vue.d.ts +1 -1
  16. package/dist/components/PluginIcon.vue.d.ts +2 -2
  17. package/dist/components/SectionCard.vue.d.ts +13 -1
  18. package/dist/components/SettingsModal.vue.d.ts +1 -1
  19. package/dist/components/internal/FormSchemaInternal.vue.d.ts +9 -9
  20. package/dist/components/internal/FormSectionRenderer.vue.d.ts +4 -4
  21. package/dist/composables/useExperimentSelector.d.ts +2 -0
  22. package/dist/composables/useOnboarding.d.ts +1 -1
  23. package/dist/{controlSchemaModel-BbXbMgc6.js → controlSchemaModel-C_XqpkgE.js} +2 -2
  24. package/dist/{controlSchemaModel-BbXbMgc6.js.map → controlSchemaModel-C_XqpkgE.js.map} +1 -1
  25. package/dist/{data-LzdkEZJ-.js → data-CfY7o8QC.js} +9 -9
  26. package/dist/{data-LzdkEZJ-.js.map → data-CfY7o8QC.js.map} +1 -1
  27. package/dist/data.js +7 -7
  28. package/dist/index.d.ts +0 -1
  29. package/dist/index.js +14 -19
  30. package/dist/index.js.map +1 -1
  31. package/dist/{install-UTqrAgHe.js → install-QF3Sh82O.js} +15 -39
  32. package/dist/install-QF3Sh82O.js.map +1 -0
  33. package/dist/install.js +1 -1
  34. package/dist/{lab-CbdDLAVr.js → lab-BcX5JBSY.js} +34 -112
  35. package/dist/lab-BcX5JBSY.js.map +1 -0
  36. package/dist/lab.js +4 -4
  37. package/dist/{records-CWRztE5M.js → records-BAymyHAn.js} +10 -110
  38. package/dist/records-BAymyHAn.js.map +1 -0
  39. package/dist/{runtime-DrL6lKAb.js → runtime-DngeJtdq.js} +82 -45
  40. package/dist/runtime-DngeJtdq.js.map +1 -0
  41. package/dist/runtime.js +6 -6
  42. package/dist/{shell-Ch7cJnjo.js → shell-CWZi97nW.js} +4 -4
  43. package/dist/{shell-Ch7cJnjo.js.map → shell-CWZi97nW.js.map} +1 -1
  44. package/dist/shell.js +4 -4
  45. package/dist/styles.css +181 -125
  46. package/dist/styles.d.ts +1 -0
  47. package/dist/types/index.d.ts +1 -1
  48. package/dist/types/instrument.d.ts +5 -17
  49. package/dist/{useExperimentSamples-Cz2v3V_q.js → useExperimentSamples-DEDAKa2E.js} +3 -3
  50. package/dist/{useExperimentSamples-Cz2v3V_q.js.map → useExperimentSamples-DEDAKa2E.js.map} +1 -1
  51. package/dist/{useListReorder-QqJc1dpX.js → useListReorder-W1bzK_bo.js} +15 -3
  52. package/dist/useListReorder-W1bzK_bo.js.map +1 -0
  53. package/dist/{useRackEditor-BHGM1Ngz.js → useRackEditor-Bmtuo0aj.js} +155 -26
  54. package/dist/useRackEditor-Bmtuo0aj.js.map +1 -0
  55. package/dist/{useRealtime-CNQbrS01.js → useRealtime-jOetF2mM.js} +3 -3
  56. package/dist/{useRealtime-CNQbrS01.js.map → useRealtime-jOetF2mM.js.map} +1 -1
  57. package/dist/{useRequest-Bfsh7gIm.js → useRequest-D9-3BS-3.js} +2 -2
  58. package/dist/{useRequest-Bfsh7gIm.js.map → useRequest-D9-3BS-3.js.map} +1 -1
  59. package/package.json +7 -4
  60. package/src/__tests__/components/AppTopBarOnboarding.test.ts +10 -0
  61. package/src/__tests__/components/ConfirmDialog.test.ts +2 -2
  62. package/src/__tests__/components/ExperimentSelectorModal.test.ts +16 -0
  63. package/src/__tests__/components/SectionCard.test.ts +33 -0
  64. package/src/__tests__/components/deprecationTags.test.ts +4 -18
  65. package/src/__tests__/composables/useJobsEndpoint.test.ts +50 -0
  66. package/src/__tests__/composables/useOnboarding.test.ts +2 -2
  67. package/src/__tests__/docs/frontendDocsCatalog.test.ts +3 -3
  68. package/src/components/AppSidebar.vue +2 -2
  69. package/src/components/CollapsibleCard.vue +1 -1
  70. package/src/components/ConfirmDialog.vue +1 -1
  71. package/src/components/ExperimentSelectorModal.vue +35 -0
  72. package/src/components/FileUploader.vue +3 -35
  73. package/src/components/GeneratedPluginView.vue +35 -81
  74. package/src/components/GeneratedResultRenderer.vue +2 -1
  75. package/src/components/InstrumentStatusPanels.vue +3 -3
  76. package/src/components/PlotlyChart.vue +1 -1
  77. package/src/components/PluginIcon.story.vue +2 -2
  78. package/src/components/PluginIcon.vue +2 -2
  79. package/src/components/SectionCard.vue +42 -6
  80. package/src/components/internal/AppTopBarOnboardingInternal.vue +30 -14
  81. package/src/composables/index.ts +1 -2
  82. package/src/composables/useExperimentSelector.ts +4 -0
  83. package/src/composables/useJobsEndpoint.ts +15 -4
  84. package/src/composables/useOnboarding.ts +3 -3
  85. package/src/generated-ui/main.ts +3 -1
  86. package/src/index.ts +0 -3
  87. package/src/styles/components/alert-box.css +1 -1
  88. package/src/styles/components/app-sidebar.css +5 -5
  89. package/src/styles/components/button.css +3 -3
  90. package/src/styles/components/checkbox.css +1 -1
  91. package/src/styles/components/collapsible-card.css +1 -1
  92. package/src/styles/components/confirm-dialog.css +2 -2
  93. package/src/styles/components/file-uploader.css +3 -3
  94. package/src/styles/components/icon-button.css +3 -3
  95. package/src/styles/components/loading-spinner.css +1 -1
  96. package/src/styles/components/onboarding.css +39 -0
  97. package/src/styles/components/pill.css +1 -1
  98. package/src/styles/components/plugin-icon.css +2 -2
  99. package/src/styles/components/presence-avatars.css +4 -4
  100. package/src/styles/components/progress-bar.css +1 -1
  101. package/src/styles/components/section-card.css +65 -6
  102. package/src/styles/components/sequence-input.css +1 -1
  103. package/src/styles/components/slider.css +1 -1
  104. package/src/styles/components/toggle.css +1 -1
  105. package/src/styles/variables.css +10 -4
  106. package/src/types/index.ts +0 -1
  107. package/src/types/instrument.ts +5 -18
  108. package/dist/AppSidebar-BDrd7Kwn.js.map +0 -1
  109. package/dist/ConfirmDialog-CjWoxAD1.js.map +0 -1
  110. package/dist/ExperimentSelectorModal-LsB1ABmh.js.map +0 -1
  111. package/dist/deprecatedRootExports.d.ts +0 -191
  112. package/dist/install-UTqrAgHe.js.map +0 -1
  113. package/dist/lab-CbdDLAVr.js.map +0 -1
  114. package/dist/records-CWRztE5M.js.map +0 -1
  115. package/dist/runtime-DrL6lKAb.js.map +0 -1
  116. package/dist/useListReorder-QqJc1dpX.js.map +0 -1
  117. package/dist/useRackEditor-BHGM1Ngz.js.map +0 -1
  118. package/src/deprecatedRootExports.ts +0 -226
package/dist/shell.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { i as useEventListener, r as useFocusTrap } from "./useDropdownState-uFIz6Yv8.js";
2
- import { E as useMenuKeyboard, H as useListSelection, R as useRovingFocus, U as useSelectionLimit } from "./records-CWRztE5M.js";
3
- import { B as compareSortValues, V as useSortedItems, i as useReorderAnnouncer, n as reorderList, r as useListReorder, t as REORDER_ANNOUNCER_STYLE } from "./useListReorder-QqJc1dpX.js";
4
- import { C as usePluginWorkspace, S as AppLayout_default, _ as provideOnboarding, f as AppTopBar_default, g as defineOnboarding, h as ONBOARDING_KEY, m as ANCHOR_WAIT_MS, t as AppSidebar_default, v as useOnboarding } from "./AppSidebar-BDrd7Kwn.js";
2
+ import { E as useMenuKeyboard, H as useListSelection, R as useRovingFocus, U as useSelectionLimit } from "./records-BAymyHAn.js";
3
+ import { B as compareSortValues, V as useSortedItems, i as useReorderAnnouncer, n as reorderList, r as useListReorder, t as REORDER_ANNOUNCER_STYLE } from "./useListReorder-W1bzK_bo.js";
4
+ import { C as usePluginWorkspace, S as AppLayout_default, _ as provideOnboarding, f as AppTopBar_default, g as defineOnboarding, h as ONBOARDING_KEY, m as ANCHOR_WAIT_MS, t as AppSidebar_default, v as useOnboarding } from "./AppSidebar-FxlF5_dI.js";
5
5
  import { t as useDebouncedWatch } from "./useDebouncedWatch-BPwyl6eS.js";
6
6
  import { t as useExpansionSet } from "./useExpansionSet-CvoNMZJi.js";
7
- import { a as useManualLayoutResize, i as resizedVerticalSplitPercent, n as resizedLeadingPanelWidth, o as LayoutResizeHandle_default, r as resizedTrailingPanelWidth } from "./shell-Ch7cJnjo.js";
7
+ import { a as useManualLayoutResize, i as resizedVerticalSplitPercent, n as resizedLeadingPanelWidth, o as LayoutResizeHandle_default, r as resizedTrailingPanelWidth } from "./shell-CWZi97nW.js";
8
8
  export { ANCHOR_WAIT_MS, AppLayout_default as AppLayout, AppSidebar_default as AppSidebar, AppTopBar_default as AppTopBar, LayoutResizeHandle_default as LayoutResizeHandle, ONBOARDING_KEY, REORDER_ANNOUNCER_STYLE, compareSortValues, defineOnboarding, provideOnboarding, reorderList, resizedLeadingPanelWidth, resizedTrailingPanelWidth, resizedVerticalSplitPercent, useDebouncedWatch, useEventListener, useExpansionSet, useFocusTrap, useListReorder, useListSelection, useManualLayoutResize, useMenuKeyboard, useOnboarding, usePluginWorkspace, useReorderAnnouncer, useRovingFocus, useSelectionLimit, useSortedItems };
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-90271c34] {
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-90271c34] {
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-90271c34] {
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-90271c34] {
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;
@@ -1848,8 +1806,8 @@ button, input, select, textarea {
1848
1806
  min-width: 1.375rem;
1849
1807
  padding: 0.125rem 0.375rem;
1850
1808
  border-radius: var(--radius);
1851
- background: color-mix(in srgb, var(--color-cta) 14%, transparent);
1852
- color: var(--color-cta);
1809
+ background: color-mix(in srgb, var(--color-primary) 14%, transparent);
1810
+ color: var(--color-primary);
1853
1811
  font-size: 0.6875rem;
1854
1812
  font-weight: 700;
1855
1813
  line-height: 1.1;
@@ -2120,7 +2078,7 @@ button, input, select, textarea {
2120
2078
  width: 11px;
2121
2079
  height: 11px;
2122
2080
  border-radius: 9999px;
2123
- background: white;
2081
+ background: var(--control-knob);
2124
2082
  box-shadow: var(--shadow-sm);
2125
2083
  transition: left 180ms var(--mint-ease-out-quart);
2126
2084
  }
@@ -2220,7 +2178,7 @@ button, input, select, textarea {
2220
2178
  padding: 0 0.25rem;
2221
2179
  border-radius: var(--radius);
2222
2180
  background: var(--mint-sidebar-tone);
2223
- color: white;
2181
+ color: var(--text-on-accent);
2224
2182
  font-size: 0.6875rem;
2225
2183
  font-weight: 700;
2226
2184
  line-height: 1rem;
@@ -2243,7 +2201,7 @@ button, input, select, textarea {
2243
2201
  .mint-sidebar__rail-badge--cta,
2244
2202
  .mint-sidebar__tag--cta,
2245
2203
  .mint-sidebar__group-action--cta {
2246
- --mint-sidebar-tone: var(--color-cta);
2204
+ --mint-sidebar-tone: var(--color-primary);
2247
2205
  }
2248
2206
 
2249
2207
  .mint-sidebar__rail-badge--success,
@@ -2759,17 +2717,17 @@ button, input, select, textarea {
2759
2717
  }
2760
2718
 
2761
2719
  .mint-button--cta {
2762
- background-color: var(--color-cta);
2720
+ background-color: var(--color-primary);
2763
2721
  color: var(--text-on-accent);
2764
2722
  }
2765
2723
 
2766
2724
  .mint-button--cta:hover:not(.mint-button--disabled) {
2767
- background-color: var(--color-cta-hover);
2725
+ background-color: var(--color-primary-hover);
2768
2726
  }
2769
2727
 
2770
2728
  .mint-button--danger {
2771
2729
  background-color: var(--mint-error);
2772
- color: white;
2730
+ color: var(--text-on-danger);
2773
2731
  }
2774
2732
 
2775
2733
  .mint-button--danger:hover:not(.mint-button--disabled) {
@@ -3006,7 +2964,7 @@ button, input, select, textarea {
3006
2964
  .mint-checkbox__native:disabled + .mint-checkbox__box.mint-checkbox__box--indeterminate {
3007
2965
  background-color: var(--text-muted);
3008
2966
  border-color: var(--text-muted);
3009
- color: #FFFFFF;
2967
+ color: var(--control-knob);
3010
2968
  }
3011
2969
 
3012
2970
  .mint-checkbox__box--sm {
@@ -3235,7 +3193,7 @@ button, input, select, textarea {
3235
3193
 
3236
3194
  .mint-collapsible-card__badge--cta,
3237
3195
  .mint-collapsible-card__action--cta {
3238
- --mint-sidebar-badge-color: var(--color-cta);
3196
+ --mint-sidebar-badge-color: var(--color-primary);
3239
3197
  }
3240
3198
 
3241
3199
  .mint-collapsible-card__badge--success,
@@ -3884,9 +3842,9 @@ button, input, select, textarea {
3884
3842
  font-size: 0.6875rem;
3885
3843
  font-weight: 700;
3886
3844
  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);
3845
+ color: var(--text-secondary);
3846
+ background-color: var(--bg-tertiary);
3847
+ border: 1px solid var(--border-color);
3890
3848
  }
3891
3849
 
3892
3850
  .mint-file-uploader__file-meta {
@@ -4158,17 +4116,17 @@ button, input, select, textarea {
4158
4116
  }
4159
4117
 
4160
4118
  .mint-icon-button--cta {
4161
- background-color: var(--color-cta);
4119
+ background-color: var(--color-primary);
4162
4120
  color: var(--text-on-accent);
4163
4121
  }
4164
4122
 
4165
4123
  .mint-icon-button--cta:hover:not(.mint-icon-button--disabled) {
4166
- background-color: var(--color-cta-hover);
4124
+ background-color: var(--color-primary-hover);
4167
4125
  }
4168
4126
 
4169
4127
  .mint-icon-button--danger {
4170
4128
  background-color: var(--mint-error);
4171
- color: white;
4129
+ color: var(--text-on-danger);
4172
4130
  }
4173
4131
 
4174
4132
  .mint-icon-button--danger:hover:not(.mint-icon-button--disabled) {
@@ -5776,6 +5734,44 @@ html.dark {
5776
5734
  transition: background-color var(--mint-transition), border-color var(--mint-transition);
5777
5735
  }
5778
5736
 
5737
+ /* The close button sits inside the chip border, so the chip keeps room for it. */
5738
+ .mint-onboarding-help__chip-group {
5739
+ position: relative;
5740
+ display: inline-flex;
5741
+ }
5742
+
5743
+ .mint-onboarding-help__chip-group .mint-onboarding-help__chip {
5744
+ padding-right: 2rem;
5745
+ }
5746
+
5747
+ .mint-onboarding-help__chip-close {
5748
+ position: absolute;
5749
+ top: 50%;
5750
+ right: 0.25rem;
5751
+ display: grid;
5752
+ place-items: center;
5753
+ width: 1.5rem;
5754
+ height: 1.5rem;
5755
+ padding: 0;
5756
+ border: 0;
5757
+ border-radius: var(--radius-sm);
5758
+ background: transparent;
5759
+ color: var(--text-muted);
5760
+ cursor: pointer;
5761
+ transform: translateY(-50%);
5762
+ transition: background-color var(--mint-transition), color var(--mint-transition);
5763
+ }
5764
+
5765
+ .mint-onboarding-help__chip-close:hover {
5766
+ background: var(--bg-tertiary);
5767
+ color: var(--text-primary);
5768
+ }
5769
+
5770
+ .mint-onboarding-help__chip-close:focus-visible {
5771
+ outline: none;
5772
+ box-shadow: var(--focus-ring-offset);
5773
+ }
5774
+
5779
5775
  .mint-onboarding-help__chip:hover {
5780
5776
  background: var(--bg-hover);
5781
5777
  }
@@ -6097,6 +6093,7 @@ html.dark {
6097
6093
 
6098
6094
  @media (prefers-reduced-motion: reduce) {
6099
6095
  .mint-onboarding-help__chip,
6096
+ .mint-onboarding-help__chip-close,
6100
6097
  .mint-onboarding-help__bar > span,
6101
6098
  .mint-onboarding-help__progress > span,
6102
6099
  .mint-onboarding__hole {
@@ -6862,6 +6859,11 @@ html.dark {
6862
6859
  min-height: 0;
6863
6860
  }
6864
6861
 
6862
+ /* A collapsed fill card gives its track back to its siblings. */
6863
+ .mint-section-card--fill.mint-section-card--collapsed {
6864
+ flex: none;
6865
+ }
6866
+
6865
6867
  .mint-section-card--fill .mint-section-card__body {
6866
6868
  flex: 1;
6867
6869
  min-height: 0;
@@ -6876,7 +6878,7 @@ html.dark {
6876
6878
  min-height: 2.5rem;
6877
6879
  /* 4px block padding: a 28px header control plus padding plus the 1px rule
6878
6880
  stays inside the 40px strip (6px made it 41px). */
6879
- padding: 0.25rem 0.625rem 0.25rem 0.75rem;
6881
+ padding: 0.25rem 0.625rem 0.25rem var(--mint-section-card-inset);
6880
6882
  border-bottom: 1px solid var(--border-color);
6881
6883
  flex-shrink: 0;
6882
6884
  }
@@ -6885,6 +6887,45 @@ html.dark {
6885
6887
  border-bottom-color: var(--border-light);
6886
6888
  }
6887
6889
 
6890
+ /* A collapsed card is its header alone: no rule under it. */
6891
+ .mint-section-card__header--collapsed {
6892
+ border-bottom-color: transparent;
6893
+ }
6894
+
6895
+ .mint-section-card__toggle {
6896
+ display: inline-flex;
6897
+ align-items: center;
6898
+ gap: var(--mint-section-card-gap);
6899
+ margin: 0;
6900
+ padding: 0;
6901
+ border: 0;
6902
+ background: none;
6903
+ color: inherit;
6904
+ font: inherit;
6905
+ cursor: pointer;
6906
+ }
6907
+
6908
+ .mint-section-card__toggle:focus-visible {
6909
+ outline: none;
6910
+ box-shadow: var(--focus-ring-offset);
6911
+ border-radius: var(--radius-sm);
6912
+ }
6913
+
6914
+ .mint-section-card__chevron {
6915
+ width: 0.875rem;
6916
+ height: 0.875rem;
6917
+ color: var(--text-muted);
6918
+ transition: transform var(--mint-transition);
6919
+ }
6920
+
6921
+ .mint-section-card__toggle[aria-expanded="false"] .mint-section-card__chevron {
6922
+ transform: rotate(-90deg);
6923
+ }
6924
+
6925
+ .mint-section-card__toggle:hover .mint-section-card__chevron {
6926
+ color: var(--text-secondary);
6927
+ }
6928
+
6888
6929
  /* Muted icon, no tinted chip: every accent renders the same. */
6889
6930
  .mint-section-card__icon-chip {
6890
6931
  display: inline-flex;
@@ -6932,7 +6973,8 @@ html.dark {
6932
6973
  display: flex;
6933
6974
  align-items: center;
6934
6975
  justify-content: space-between;
6935
- padding: 0.5rem 1rem;
6976
+ /* Text starts on the card inset; controls end where the header's do. */
6977
+ padding: 0.5rem 0.625rem 0.5rem var(--mint-section-card-inset);
6936
6978
  border-top: 1px solid var(--border-color);
6937
6979
  background: var(--bg-primary);
6938
6980
  font-size: 0.75rem;
@@ -6953,7 +6995,7 @@ html.dark {
6953
6995
  display: flex;
6954
6996
  align-items: center;
6955
6997
  gap: var(--mint-section-card-gap);
6956
- padding: 0.375rem 0.75rem;
6998
+ padding: 0.375rem var(--mint-section-card-inset);
6957
6999
  background: var(--bg-secondary);
6958
7000
  transition: background-color var(--mint-transition);
6959
7001
  }
@@ -6988,14 +7030,28 @@ button.mint-section-card__row:hover {
6988
7030
  /* Comfortable density gives the header and rows back their height. */
6989
7031
  [data-density="comfortable"] .mint-section-card__header {
6990
7032
  min-height: 2.75rem;
6991
- padding: 0.25rem 0.75rem 0.25rem 0.875rem;
7033
+ padding-right: 0.75rem;
7034
+ }
7035
+
7036
+ [data-density="comfortable"] .mint-section-card__footer {
7037
+ padding-right: 0.75rem;
6992
7038
  }
6993
7039
 
6994
7040
  [data-density="comfortable"] .mint-section-card__row {
6995
7041
  padding-top: 0.5rem;
6996
7042
  padding-bottom: 0.5rem;
6997
- /* Same left inset as the header, so row content lines up under the header. */
6998
- padding-left: 0.875rem;
7043
+ }
7044
+
7045
+ /* A table that is the card body's own child starts and ends on the card's text
7046
+ inset, so its first column lines up under the header title. A table inside a
7047
+ padded wrapper keeps its padding, and the checkbox and actions columns stay
7048
+ centred controls. The table's size padding uses !important, so this must too. */
7049
+ .mint-section-card__body > .mint-dataframe :is(.mint-dataframe__th, .mint-dataframe__td):first-child:not(.mint-dataframe__th--checkbox, .mint-dataframe__td--checkbox) {
7050
+ padding-left: var(--mint-section-card-inset) !important;
7051
+ }
7052
+
7053
+ .mint-section-card__body > .mint-dataframe :is(.mint-dataframe__th, .mint-dataframe__td):last-child:not(.mint-dataframe__th--actions, .mint-dataframe__td--actions) {
7054
+ padding-right: var(--mint-section-card-inset) !important;
6999
7055
  }
7000
7056
 
7001
7057
  /* SecretInput — plugin secret settings field with a set / not set / environment status.
@@ -7307,7 +7363,7 @@ button.mint-section-card__row:hover {
7307
7363
  box-sizing: border-box;
7308
7364
  transform: translateX(-50%) translateY(-50%);
7309
7365
  border-radius: 9999px;
7310
- background-color: #FFFFFF;
7366
+ background-color: var(--control-knob);
7311
7367
  border: 1px solid color-mix(in srgb, var(--text-secondary) 40%, transparent);
7312
7368
  box-shadow: var(--shadow-sm);
7313
7369
  pointer-events: none;
@@ -8118,7 +8174,7 @@ html.dark .mint-toast__item {
8118
8174
  top: 50%;
8119
8175
  left: 2px;
8120
8176
  border-radius: 9999px;
8121
- background-color: #FFFFFF;
8177
+ background-color: var(--control-knob);
8122
8178
  box-shadow: var(--shadow-sm);
8123
8179
  transition: transform 180ms cubic-bezier(0.25, 1, 0.5, 1);
8124
8180
  pointer-events: none;
@@ -11123,7 +11179,7 @@ html.dark .sg-summary code { background: rgba(255, 255, 255, 0.1); }
11123
11179
  (soft-tint background, dot, outline border); `--mint-pill-ink` the text. A
11124
11180
  `color` prop sets `--mint-pill-tone` inline. */
11125
11181
  .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); }
11182
+ .mint-pill--cta { --mint-pill-tone: var(--color-primary); --mint-pill-ink: var(--color-primary-hover); }
11127
11183
  .mint-pill--success { --mint-pill-tone: var(--mint-success); --mint-pill-ink: var(--mint-success-hover); }
11128
11184
  .mint-pill--warning { --mint-pill-tone: var(--mint-warning); --mint-pill-ink: var(--mint-warning-text); }
11129
11185
  .mint-pill--error { --mint-pill-tone: var(--mint-error); --mint-pill-ink: var(--mint-error-hover); }
@@ -12247,7 +12303,7 @@ html.dark .mint-dataframe__loading {
12247
12303
 
12248
12304
  /* Tones */
12249
12305
  .mint-spinner--primary { color: var(--color-primary); }
12250
- .mint-spinner--cta { color: var(--color-cta); }
12306
+ .mint-spinner--cta { color: var(--color-primary); }
12251
12307
  .mint-spinner--success { color: var(--mint-success); }
12252
12308
  .mint-spinner--warning { color: var(--mint-warning); }
12253
12309
  .mint-spinner--error { color: var(--mint-error); }
@@ -12404,7 +12460,7 @@ html.dark .mint-dataframe__loading {
12404
12460
  .mint-progress__bar--success { background-color: var(--mint-success); }
12405
12461
  .mint-progress__bar--warning { background-color: var(--mint-warning); }
12406
12462
  .mint-progress__bar--error { background-color: var(--mint-error); }
12407
- .mint-progress__bar--cta { background-color: var(--color-cta); }
12463
+ .mint-progress__bar--cta { background-color: var(--color-primary); }
12408
12464
  .mint-progress__bar--neutral { background-color: var(--text-muted); }
12409
12465
  .mint-progress__bar--info { background-color: var(--color-primary); } /* 6b: progress fill is always primary; --mint-info is for the running dot */
12410
12466
 
@@ -12500,19 +12556,19 @@ html.dark .mint-dataframe__loading {
12500
12556
  .mint-avatar__status--offline { background-color: var(--text-muted); }
12501
12557
  /* PresenceAvatars: an avatar stack that opens a list of who is here.
12502
12558
  * 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
12559
+ * colour only. Light mode uses --color-primary-hover (3:1 on the card), dark
12560
+ * mode --color-primary. --mint-presence-surface is the colour the avatars are
12505
12561
  * cut out of; set it when the stack sits on another surface. */
12506
12562
 
12507
12563
  .mint-presence {
12508
- --mint-presence-editing: var(--color-cta-hover);
12564
+ --mint-presence-editing: var(--color-primary-hover);
12509
12565
  --mint-presence-surface: var(--bg-secondary);
12510
12566
  position: relative;
12511
12567
  display: inline-flex;
12512
12568
  }
12513
12569
 
12514
12570
  :where(html.dark) .mint-presence {
12515
- --mint-presence-editing: var(--color-cta);
12571
+ --mint-presence-editing: var(--color-primary);
12516
12572
  }
12517
12573
 
12518
12574
  .mint-presence__trigger {
@@ -13050,8 +13106,8 @@ html.dark .mint-dataframe__loading {
13050
13106
  }
13051
13107
 
13052
13108
  .mint-confirm__icon--cta {
13053
- background-color: color-mix(in srgb, var(--color-cta) 12%, transparent);
13054
- color: var(--color-cta);
13109
+ background-color: color-mix(in srgb, var(--color-primary) 12%, transparent);
13110
+ color: var(--color-primary);
13055
13111
  }
13056
13112
 
13057
13113
  .mint-confirm__icon--neutral {
@@ -14746,7 +14802,7 @@ html.dark .mint-stale-banner {
14746
14802
  .mint-sequence-input__problem--error .mint-sequence-input__problem-shape { fill: var(--mint-error); }
14747
14803
 
14748
14804
  .mint-sequence-input__problem-mark {
14749
- stroke: white;
14805
+ stroke: var(--text-on-danger);
14750
14806
  stroke-width: 1.6;
14751
14807
  stroke-linecap: round;
14752
14808
  }
@@ -18256,10 +18312,10 @@ button.mint-unit-input__unit:focus-visible {
18256
18312
  .mint-plugin-icon--topbar { width: 2.25rem; height: 2.25rem; }
18257
18313
  .mint-plugin-icon--lg { width: 3rem; height: 3rem; }
18258
18314
 
18259
- /* Tones (deprecated with the tone/color props, removed in 1.5): the v2 tile no longer reads the variable. */
18315
+ /* Tones (deprecated with the tone/color props, removed in 2.0): the v2 tile no longer reads the variable. */
18260
18316
  .mint-plugin-icon--neutral { --mint-plugin-icon-tone: var(--text-secondary); }
18261
18317
  .mint-plugin-icon--primary { --mint-plugin-icon-tone: var(--color-primary); }
18262
- .mint-plugin-icon--cta { --mint-plugin-icon-tone: var(--color-cta); }
18318
+ .mint-plugin-icon--cta { --mint-plugin-icon-tone: var(--color-primary); }
18263
18319
  .mint-plugin-icon--success { --mint-plugin-icon-tone: var(--mint-success); }
18264
18320
  .mint-plugin-icon--warning { --mint-plugin-icon-tone: var(--mint-warning); }
18265
18321
  .mint-plugin-icon--error { --mint-plugin-icon-tone: var(--mint-error); }
@@ -0,0 +1 @@
1
+ export {}
@@ -4,7 +4,7 @@ export type { AnalysisArtifactStatus, AnalysisArtifactStatusFilter, AnalysisArti
4
4
  export { ANALYSIS_FILE_ARTIFACT_SCHEMA } from './analysisArtifactTypes';
5
5
  export type { FileBrowserLocation, FileBrowserSortKey, FileDirectoryListing, FileDirectoryTree, FileEntry, FileEntryKind, FilePathCrumb, FileSearchResult, FileSelection, ServerMount, } from './fileBrowserTypes';
6
6
  export type { JobListPayload, JobProgress, JobSnapshotPayload, JobState, JobStateInput, JobStatus, JobStreamData, TopBarJob, } from './jobs';
7
- export type { InjectionMetricSeries, InstrumentAlert, InstrumentAlertLevel, InstrumentAlertList, InstrumentBadgeState, InstrumentLiveProgress, InstrumentLiveStatus, InstrumentState, InstrumentStatus, InstrumentStatusReporter, SampleInfo, SampleInfo as InstrumentSampleInfo, SequenceProgress, StatusPanel, } from './instrument';
7
+ export type { InjectionMetricSeries, InstrumentAlert, InstrumentAlertLevel, InstrumentAlertList, InstrumentBadgeState, InstrumentLiveProgress, InstrumentLiveStatus, InstrumentState, InstrumentStatusReporter, SampleInfo, SampleInfo as InstrumentSampleInfo, SequenceProgress, StatusPanel, } from './instrument';
8
8
  export type { AccessAudience, AccessAudienceInput, AccessPolicy, AccessControlled, PermissionUser, RoleInfo, } from '../permissions';
9
9
  export type { FormFieldType, FieldCondition, FieldValidation, FormFieldSchema, FormOptionInput, FormSectionSchema, FormStepSchema, FormSchema, FieldEnhancement, FormEnhancements, UseFormBuilderReturn, } from './form-builder';
10
10
  export type { OutlierAction, InputMode, OutlierInfo, ColumnInfo, MetadataRow, AutoGroupResult, ParsedCsvData, } from './auto-group';