@morscherlab/mint-sdk 1.2.0 → 1.2.1

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 (99) hide show
  1. package/dist/{ExperimentSelectorModal-DCXmwKNS.js → ExperimentSelectorModal-DHE9k8TP.js} +3 -3
  2. package/dist/{ExperimentSelectorModal-DCXmwKNS.js.map → ExperimentSelectorModal-DHE9k8TP.js.map} +1 -1
  3. package/dist/{SettingsModal-BYR20I4c.js → SettingsModal-DOcCf0Vo.js} +39 -16
  4. package/dist/SettingsModal-DOcCf0Vo.js.map +1 -0
  5. package/dist/{Skeleton-BAF3CKY7.js → Skeleton-jhF9wUkU.js} +17 -7
  6. package/dist/Skeleton-jhF9wUkU.js.map +1 -0
  7. package/dist/__tests__/components/FormField.test.d.ts +1 -0
  8. package/dist/__tests__/components/NumberInput.test.d.ts +1 -0
  9. package/dist/__tests__/composables/localFiles.test.d.ts +1 -0
  10. package/dist/__tests__/composables/usePickerSelection.test.d.ts +1 -0
  11. package/dist/__tests__/styles/tokenOnlyColors.test.d.ts +1 -0
  12. package/dist/components/AppSidebar.vue.d.ts +7 -7
  13. package/dist/components/BasePill.vue.d.ts +3 -0
  14. package/dist/components/BaseTabs.vue.d.ts +1 -4
  15. package/dist/components/FileUploader.vue.d.ts +3 -0
  16. package/dist/components/FormField.vue.d.ts +8 -1
  17. package/dist/components/PluginWorkspaceView.props.d.ts +3 -3
  18. package/dist/components/index.js +5 -5
  19. package/dist/{components-DIum5hkx.js → components-Cp8DcNrU.js} +472 -259
  20. package/dist/components-Cp8DcNrU.js.map +1 -0
  21. package/dist/composables/index.js +7 -7
  22. package/dist/composables/pluginWorkspaceModel.d.ts +0 -3
  23. package/dist/composables/useToast.d.ts +22 -1
  24. package/dist/{composables-mFXsTA4g.js → composables-D_4qqOlp.js} +6 -6
  25. package/dist/{composables-mFXsTA4g.js.map → composables-D_4qqOlp.js.map} +1 -1
  26. package/dist/index.js +10 -10
  27. package/dist/install.js +2 -2
  28. package/dist/styles.css +560 -303
  29. package/dist/templates/index.js +2 -2
  30. package/dist/{templates-CmGfmBRA.js → templates-Dd9bBSs6.js} +2 -2
  31. package/dist/{templates-CmGfmBRA.js.map → templates-Dd9bBSs6.js.map} +1 -1
  32. package/dist/types/components.d.ts +21 -0
  33. package/dist/types/form-builder.d.ts +2 -0
  34. package/dist/types/generated-ui.d.ts +2 -0
  35. package/dist/types/index.d.ts +1 -1
  36. package/dist/{useControlSchema-DldpxNOP.js → useControlSchema-BB2GRPhW.js} +151 -71
  37. package/dist/useControlSchema-BB2GRPhW.js.map +1 -0
  38. package/dist/{useExperimentSelector-CEcIaueJ.js → useExperimentSelector-G_CAOFTX.js} +2 -2
  39. package/dist/{useExperimentSelector-CEcIaueJ.js.map → useExperimentSelector-G_CAOFTX.js.map} +1 -1
  40. package/dist/{useFormBuilder-z5L_dUIy.js → useFormBuilder-BnGSdSRG.js} +2 -2
  41. package/dist/{useFormBuilder-z5L_dUIy.js.map → useFormBuilder-BnGSdSRG.js.map} +1 -1
  42. package/dist/{validation-uwoJGEb6.js → validation-CTxuzLIX.js} +21 -9
  43. package/dist/validation-CTxuzLIX.js.map +1 -0
  44. package/package.json +1 -1
  45. package/src/__tests__/components/AppSidebar.test.ts +84 -94
  46. package/src/__tests__/components/AppToastContainer.test.ts +55 -1
  47. package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +0 -21
  48. package/src/__tests__/components/ControlWorkspaceView.test.ts +0 -2
  49. package/src/__tests__/components/DoseDesignWorkspaceView.test.ts +0 -2
  50. package/src/__tests__/components/FormBuilder.test.ts +26 -0
  51. package/src/__tests__/components/FormField.test.ts +26 -0
  52. package/src/__tests__/components/GeneratedPathInput.test.ts +18 -0
  53. package/src/__tests__/components/NumberInput.test.ts +105 -0
  54. package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +1 -2
  55. package/src/__tests__/components/PluginWorkspaceView.test.ts +1 -2
  56. package/src/__tests__/composables/localFiles.test.ts +57 -0
  57. package/src/__tests__/composables/usePickerSelection.test.ts +98 -0
  58. package/src/__tests__/generatedUi.test.ts +111 -0
  59. package/src/__tests__/styles/tokenOnlyColors.test.ts +16 -0
  60. package/src/components/AppLayout.story.vue +1 -1
  61. package/src/components/AppSidebar.story.vue +7 -10
  62. package/src/components/AppSidebar.vue +178 -58
  63. package/src/components/AppToastContainer.vue +65 -23
  64. package/src/components/BasePill.story.vue +2 -0
  65. package/src/components/BasePill.vue +4 -0
  66. package/src/components/BaseTabs.story.vue +0 -42
  67. package/src/components/BaseTabs.vue +3 -6
  68. package/src/components/FileUploader.vue +10 -1
  69. package/src/components/FormField.vue +10 -3
  70. package/src/components/GeneratedPathInput.vue +11 -7
  71. package/src/components/NumberInput.story.vue +32 -13
  72. package/src/components/NumberInput.vue +116 -55
  73. package/src/components/PluginWorkspaceView.props.ts +3 -3
  74. package/src/components/internal/FormFieldRendererInternal.vue +17 -0
  75. package/src/components/internal/WorkspaceSidebarInternal.vue +1 -2
  76. package/src/composables/filePicker/localFiles.ts +21 -14
  77. package/src/composables/filePicker/usePickerSelection.ts +15 -4
  78. package/src/composables/pluginWorkspaceModel.ts +0 -3
  79. package/src/composables/usePluginWorkspace.ts +1 -2
  80. package/src/composables/useToast.ts +21 -5
  81. package/src/generated/schema.ts +58 -18
  82. package/src/styles/components/app-sidebar.css +282 -121
  83. package/src/styles/components/form-builder.css +1 -1
  84. package/src/styles/components/form-field.css +28 -0
  85. package/src/styles/components/number-input.css +73 -91
  86. package/src/styles/components/pill.css +49 -51
  87. package/src/styles/components/segmented-control.css +16 -11
  88. package/src/styles/components/tabs.css +18 -34
  89. package/src/styles/components/toast.css +136 -27
  90. package/src/styles/variables.css +25 -5
  91. package/src/types/components.ts +23 -0
  92. package/src/types/form-builder.ts +2 -0
  93. package/src/types/generated-ui.ts +2 -0
  94. package/src/types/index.ts +2 -0
  95. package/dist/SettingsModal-BYR20I4c.js.map +0 -1
  96. package/dist/Skeleton-BAF3CKY7.js.map +0 -1
  97. package/dist/components-DIum5hkx.js.map +0 -1
  98. package/dist/useControlSchema-DldpxNOP.js.map +0 -1
  99. package/dist/validation-uwoJGEb6.js.map +0 -1
@@ -1,21 +1,22 @@
1
- /* NumberInput Component Styles */
1
+ /* NumberInput Component Styles — one object: the field is the slider. */
2
2
 
3
3
  .mint-number-input {
4
4
  display: flex;
5
- flex-direction: column;
6
- gap: 0.375rem;
7
5
  max-width: 100%;
8
6
  }
9
7
 
10
- /* ---------- Field wrapper (numeric input + steppers + optional unit) ---------- */
8
+ /* ---------- Field wrapper (scrub area + steppers) ---------- */
11
9
 
12
10
  .mint-number-input__field {
13
11
  position: relative;
14
12
  display: flex;
15
- align-items: center;
13
+ flex: 1;
14
+ min-width: 0;
15
+ align-items: stretch;
16
+ overflow: hidden;
16
17
  background-color: var(--bg-secondary);
17
18
  border: 1px solid var(--border-color);
18
- border-radius: 0.5rem;
19
+ border-radius: var(--radius);
19
20
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
20
21
  }
21
22
 
@@ -45,18 +46,62 @@
45
46
  background-color: var(--bg-tertiary);
46
47
  }
47
48
 
49
+ /* ---------- Scrub area: range fill (wash + rule) lives under the value ---------- */
50
+
51
+ .mint-number-input__scrub {
52
+ position: relative;
53
+ display: flex;
54
+ flex: 1;
55
+ min-width: 0;
56
+ align-items: center;
57
+ gap: 0.375rem;
58
+ }
59
+
60
+ .mint-number-input--slider .mint-number-input__scrub {
61
+ cursor: ew-resize;
62
+ touch-action: none;
63
+ }
64
+
65
+ .mint-number-input--slider .mint-number-input__scrub:focus-visible {
66
+ outline: none;
67
+ box-shadow: inset var(--focus-ring-soft);
68
+ }
69
+
70
+ .mint-number-input__wash,
71
+ .mint-number-input__rule {
72
+ position: absolute;
73
+ left: 0;
74
+ bottom: 0;
75
+ width: var(--mint-number-input-fill, 0%);
76
+ pointer-events: none;
77
+ transition: width 0.1s ease;
78
+ }
79
+
80
+ .mint-number-input__wash {
81
+ top: 0;
82
+ background: color-mix(in srgb, var(--color-primary) 9%, transparent);
83
+ }
84
+
85
+ .mint-number-input__rule {
86
+ height: 2px;
87
+ background: var(--color-primary);
88
+ }
89
+
48
90
  /* ---------- Numeric input — left-aligned, Fira Code ---------- */
49
91
 
50
92
  .mint-number-input__input {
93
+ position: relative;
51
94
  flex: 1;
52
95
  min-width: 0;
96
+ width: 100%;
53
97
  text-align: left;
54
98
  background-color: transparent;
55
99
  color: var(--text-primary);
56
100
  border: none;
57
101
  outline: none;
58
102
  line-height: 1.25;
59
- font-family: var(--font-mono, 'Fira Code', monospace);
103
+ font-family: var(--font-mono);
104
+ font-variant-numeric: tabular-nums;
60
105
  -webkit-appearance: textfield;
61
106
  -moz-appearance: textfield;
62
107
  appearance: textfield;
@@ -72,128 +117,65 @@
72
117
 
73
118
  /* Horizontal padding matches BaseInput canonical scale (10/12/16) so FormField's
74
119
  12px label indent aligns with the numeric text across all input types. */
75
- .mint-number-input__input--sm { padding: 0.375rem 0.625rem; font-size: 0.875rem; }
120
+ .mint-number-input__input--sm { padding: 0.375rem 0.625rem; font-size: 0.8125rem; }
76
121
  .mint-number-input__input--md { padding: 0.5rem 0.75rem; font-size: 0.875rem; }
77
122
  .mint-number-input__input--lg { padding: 0.75rem 1rem; font-size: 1rem; }
78
123
 
79
124
  /* ---------- Unit suffix ---------- */
80
125
 
81
126
  .mint-number-input__unit {
82
- padding: 0 0.625rem 0 0;
127
+ position: relative;
128
+ flex-shrink: 0;
129
+ padding-right: 0.5rem;
83
130
  color: var(--text-muted);
84
- font-size: 0.8125rem;
85
- font-family: var(--font-mono, 'Fira Code', monospace);
131
+ font-size: 0.6875rem;
132
+ font-family: var(--font-mono);
86
133
  user-select: none;
87
134
  white-space: nowrap;
88
135
  }
89
136
 
90
- /* ---------- Steppers — hover/focus reveal ---------- */
137
+ /* ---------- Steppers — always visible, horizontal, hairline-divided ---------- */
91
138
 
92
139
  .mint-number-input__steppers {
93
140
  display: flex;
94
- flex-direction: column;
95
- margin-right: 0.25rem;
96
- opacity: 0;
97
- transform: translateX(-2px);
98
- transition: opacity 0.15s ease, transform 0.15s ease;
99
- pointer-events: none;
100
- }
101
-
102
- .mint-number-input__field:hover .mint-number-input__steppers,
103
- .mint-number-input__field:focus-within .mint-number-input__steppers {
104
- opacity: 1;
105
- transform: translateX(0);
106
- pointer-events: auto;
141
+ flex-shrink: 0;
107
142
  }
108
143
 
109
144
  .mint-number-input__stepper {
110
145
  display: flex;
111
146
  align-items: center;
112
147
  justify-content: center;
113
- width: 1.125rem;
114
- height: 0.875rem;
148
+ width: 1.625rem;
115
149
  padding: 0;
116
150
  background: transparent;
117
- color: var(--text-muted);
151
+ color: var(--text-secondary-strong);
118
152
  border: none;
153
+ border-left: 1px solid var(--border-color);
119
154
  cursor: pointer;
120
- transition: color 0.1s ease;
155
+ transition: background-color 0.12s ease, color 0.12s ease;
121
156
  }
122
157
 
123
158
  .mint-number-input__stepper:hover:not(:disabled) {
124
- color: var(--color-primary);
159
+ background: var(--color-primary-soft);
160
+ color: var(--color-primary-hover);
125
161
  }
126
162
 
127
163
  .mint-number-input__stepper:disabled {
128
- opacity: 0.35;
164
+ color: var(--text-muted);
165
+ opacity: 0.45;
129
166
  cursor: not-allowed;
130
167
  }
131
168
 
132
169
  .mint-number-input__stepper svg {
133
170
  width: 0.625rem;
134
- height: 0.375rem;
171
+ height: 0.625rem;
135
172
  }
136
173
 
137
174
  @media (prefers-reduced-motion: reduce) {
138
- .mint-number-input__steppers {
175
+ .mint-number-input__field,
176
+ .mint-number-input__wash,
177
+ .mint-number-input__rule,
178
+ .mint-number-input__stepper {
139
179
  transition: none;
140
- opacity: 1;
141
- transform: none;
142
- pointer-events: auto;
143
180
  }
144
181
  }
145
-
146
- /* ---------- Slider (variant="slider" auto-activated by min+max) ---------- */
147
-
148
- .mint-number-input__slider {
149
- -webkit-appearance: none;
150
- appearance: none;
151
- width: 100%;
152
- height: 4px;
153
- background: linear-gradient(
154
- to right,
155
- var(--color-primary) 0%,
156
- var(--color-primary) var(--mint-slider-fill, 0%),
157
- var(--bg-tertiary) var(--mint-slider-fill, 0%),
158
- var(--bg-tertiary) 100%
159
- );
160
- border-radius: 9999px;
161
- outline: none;
162
- cursor: pointer;
163
- }
164
-
165
- .mint-number-input__slider::-webkit-slider-thumb {
166
- -webkit-appearance: none;
167
- appearance: none;
168
- width: 14px;
169
- height: 14px;
170
- background: var(--bg-secondary);
171
- border: 2px solid var(--color-primary);
172
- border-radius: 50%;
173
- cursor: pointer;
174
- box-shadow: var(--shadow-sm);
175
- transition: transform 0.1s ease;
176
- }
177
-
178
- .mint-number-input__slider::-webkit-slider-thumb:hover {
179
- transform: scale(1.12);
180
- }
181
-
182
- .mint-number-input__slider::-moz-range-thumb {
183
- width: 14px;
184
- height: 14px;
185
- background: var(--bg-secondary);
186
- border: 2px solid var(--color-primary);
187
- border-radius: 50%;
188
- cursor: pointer;
189
- box-shadow: var(--shadow-sm);
190
- }
191
-
192
- .mint-number-input__slider:focus-visible {
193
- box-shadow: var(--focus-ring-soft);
194
- }
195
-
196
- .mint-number-input__slider:disabled {
197
- cursor: not-allowed;
198
- opacity: var(--mint-disabled-opacity);
199
- }
@@ -28,6 +28,23 @@
28
28
  font-size: 0.8125rem;
29
29
  }
30
30
 
31
+ /* Semantic tones — every color resolves from a token. `--mint-pill-tone` is the
32
+ accent (soft-tint background, dot, outline border); `--mint-pill-ink` the text. */
33
+ .mint-pill--primary { --mint-pill-tone: var(--color-primary); --mint-pill-ink: var(--color-primary-hover); }
34
+ .mint-pill--success { --mint-pill-tone: var(--mint-success); --mint-pill-ink: var(--mint-success-hover); }
35
+ .mint-pill--warning { --mint-pill-tone: var(--mint-warning); --mint-pill-ink: var(--mint-warning-text); }
36
+ .mint-pill--error { --mint-pill-tone: var(--mint-error); --mint-pill-ink: var(--mint-error-hover); }
37
+ .mint-pill--info { --mint-pill-tone: var(--mint-info); --mint-pill-ink: color-mix(in srgb, var(--mint-info) 78%, black); }
38
+ .mint-pill--neutral { --mint-pill-tone: var(--text-secondary); --mint-pill-ink: var(--text-secondary-strong); }
39
+
40
+ html.dark .mint-pill--primary,
41
+ html.dark .mint-pill--success,
42
+ html.dark .mint-pill--warning,
43
+ html.dark .mint-pill--error,
44
+ html.dark .mint-pill--info {
45
+ --mint-pill-ink: var(--mint-pill-tone);
46
+ }
47
+
31
48
  /* Variants */
32
49
  .mint-pill--default,
33
50
  .mint-pill--neutral {
@@ -35,49 +52,30 @@
35
52
  color: var(--text-secondary);
36
53
  }
37
54
 
38
- .mint-pill--primary {
39
- background-color: rgba(59, 130, 246, 0.1);
40
- color: var(--color-primary);
41
- }
42
-
43
- html.dark .mint-pill--primary {
44
- background-color: rgba(59, 130, 246, 0.2);
45
- }
46
-
47
- .mint-pill--success {
48
- background-color: rgba(16, 185, 129, 0.1);
49
- color: var(--mint-success);
50
- }
51
-
52
- html.dark .mint-pill--success {
53
- background-color: rgba(16, 185, 129, 0.2);
54
- }
55
-
56
- .mint-pill--warning {
57
- background-color: rgba(245, 158, 11, 0.1);
58
- color: var(--mint-warning);
59
- }
60
-
61
- html.dark .mint-pill--warning {
62
- background-color: rgba(245, 158, 11, 0.2);
63
- }
64
-
65
- .mint-pill--error {
66
- background-color: rgba(239, 68, 68, 0.1);
67
- color: var(--mint-error);
68
- }
69
-
70
- html.dark .mint-pill--error {
71
- background-color: rgba(239, 68, 68, 0.2);
72
- }
73
-
55
+ .mint-pill--primary,
56
+ .mint-pill--success,
57
+ .mint-pill--warning,
58
+ .mint-pill--error,
74
59
  .mint-pill--info {
75
- background-color: rgba(59, 130, 246, 0.1);
76
- color: var(--mint-info);
60
+ background-color: color-mix(in srgb, var(--mint-pill-tone) 12%, transparent);
61
+ color: var(--mint-pill-ink);
77
62
  }
78
63
 
64
+ html.dark .mint-pill--primary,
65
+ html.dark .mint-pill--success,
66
+ html.dark .mint-pill--warning,
67
+ html.dark .mint-pill--error,
79
68
  html.dark .mint-pill--info {
80
- background-color: rgba(59, 130, 246, 0.2);
69
+ background-color: color-mix(in srgb, var(--mint-pill-tone) 22%, transparent);
70
+ }
71
+
72
+ /* Status dot */
73
+ .mint-pill__dot {
74
+ flex-shrink: 0;
75
+ width: 0.375rem;
76
+ height: 0.375rem;
77
+ border-radius: 9999px;
78
+ background-color: var(--mint-pill-tone, currentColor);
81
79
  }
82
80
 
83
81
  /* ========================================================================
@@ -94,13 +92,17 @@ html.dark .mint-pill--info {
94
92
  color: var(--text-secondary);
95
93
  }
96
94
 
97
- .mint-pill--outline.mint-pill--neutral { border-color: var(--text-muted); color: var(--text-primary); }
98
- .mint-pill--outline.mint-pill--primary { border-color: var(--color-primary); color: var(--color-primary); }
99
- .mint-pill--outline.mint-pill--success { border-color: var(--mint-success); color: var(--mint-success); }
100
- /* Warning text uses -hover (darker) so AA contrast holds on white; border uses the lighter primary warning tone. */
101
- .mint-pill--outline.mint-pill--warning { border-color: var(--mint-warning); color: var(--mint-warning-hover); }
102
- .mint-pill--outline.mint-pill--error { border-color: var(--mint-error); color: var(--mint-error); }
103
- .mint-pill--outline.mint-pill--info { border-color: var(--mint-info); color: var(--mint-info); }
95
+ .mint-pill--outline.mint-pill--neutral { border-color: var(--text-muted); color: var(--text-primary); }
96
+
97
+ .mint-pill--outline.mint-pill--primary,
98
+ .mint-pill--outline.mint-pill--success,
99
+ .mint-pill--outline.mint-pill--warning,
100
+ .mint-pill--outline.mint-pill--error,
101
+ .mint-pill--outline.mint-pill--info {
102
+ background-color: transparent;
103
+ border-color: var(--mint-pill-tone);
104
+ color: var(--mint-pill-ink);
105
+ }
104
106
 
105
107
  /* Disabled */
106
108
  .mint-pill--disabled {
@@ -160,11 +162,7 @@ html.dark .mint-pill--info {
160
162
 
161
163
  .mint-pill__remove:hover {
162
164
  opacity: 1;
163
- background-color: rgba(0, 0, 0, 0.1);
164
- }
165
-
166
- html.dark .mint-pill__remove:hover {
167
- background-color: rgba(255, 255, 255, 0.1);
165
+ background-color: color-mix(in srgb, currentColor 12%, transparent);
168
166
  }
169
167
 
170
168
  .mint-pill__remove:focus-visible {
@@ -6,13 +6,17 @@
6
6
  overflow: hidden;
7
7
  }
8
8
 
9
- /* Card variant container - matches RFA design */
9
+ /* Card variant container - matches RFA design.
10
+ `width: fit-content` is load-bearing: `inline-grid` alone gets blockified and
11
+ stretched when the control is a stretching flex/grid item. */
10
12
  .mint-segmented-control--card {
11
- display: grid;
13
+ display: inline-grid;
12
14
  grid-auto-flow: column;
13
15
  grid-auto-columns: 1fr;
14
- gap: 0.25rem;
15
- padding: 0.25rem;
16
+ width: fit-content;
17
+ max-width: 100%;
18
+ gap: 0.1875rem;
19
+ padding: 0.1875rem;
16
20
  border-radius: var(--radius-md);
17
21
  background-color: var(--bg-tertiary);
18
22
  overflow: visible;
@@ -24,6 +28,7 @@
24
28
  }
25
29
 
26
30
  .mint-segmented-control--card.mint-segmented-control--full-width {
31
+ display: grid;
27
32
  width: 100%;
28
33
  }
29
34
 
@@ -95,8 +100,8 @@
95
100
  /* Card variant - matches RFA raised card design */
96
101
  .mint-segmented-control__option--card {
97
102
  flex: 1;
98
- padding: 0.75rem 1rem;
99
- gap: 0.25rem;
103
+ padding: 0.5rem 0.75rem;
104
+ gap: 0.0625rem;
100
105
  border: none;
101
106
  border-radius: var(--radius);
102
107
  background-color: transparent;
@@ -111,7 +116,7 @@
111
116
  .mint-segmented-control__option--card.mint-segmented-control__option--active {
112
117
  background-color: var(--bg-card);
113
118
  color: var(--text-primary);
114
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
119
+ box-shadow: var(--shadow-sm);
115
120
  }
116
121
 
117
122
  /* Size variants - simple */
@@ -135,15 +140,15 @@
135
140
 
136
141
  /* Size variants - card */
137
142
  .mint-segmented-control__option--card.mint-segmented-control__option--sm {
138
- padding: 0.5rem 0.75rem;
143
+ padding: 0.3125rem 0.625rem;
139
144
  }
140
145
 
141
146
  .mint-segmented-control__option--card.mint-segmented-control__option--md {
142
- padding: 0.75rem 1rem;
147
+ padding: 0.5rem 0.75rem;
143
148
  }
144
149
 
145
150
  .mint-segmented-control__option--card.mint-segmented-control__option--lg {
146
- padding: 1rem 1.25rem;
151
+ padding: 0.75rem 1rem;
147
152
  }
148
153
 
149
154
  /* Label */
@@ -174,7 +179,7 @@
174
179
 
175
180
  /* Description color in active state - use text-muted for card variant, primary for simple */
176
181
  .mint-segmented-control__option--simple.mint-segmented-control__option--active .mint-segmented-control__description {
177
- color: rgba(255, 255, 255, 0.8);
182
+ color: color-mix(in srgb, white 80%, transparent);
178
183
  }
179
184
 
180
185
  .mint-segmented-control__option--card.mint-segmented-control__option--active .mint-segmented-control__description {
@@ -1,4 +1,4 @@
1
- /* BaseTabs Component Styles */
1
+ /* BaseTabs Component Styles — underline only; SegmentedControl owns the card look */
2
2
 
3
3
  .mint-tabs {
4
4
  display: flex;
@@ -8,16 +8,6 @@
8
8
  border-bottom: 1px solid var(--border-color);
9
9
  }
10
10
 
11
- .mint-tabs--pills {
12
- width: fit-content;
13
- max-width: 100%;
14
- gap: 0.5rem;
15
- padding: 0.25rem;
16
- background-color: var(--bg-tertiary);
17
- border-radius: var(--radius-md);
18
- overflow-x: auto;
19
- }
20
-
21
11
  .mint-tab {
22
12
  padding: 0.5rem 1rem;
23
13
  font-size: 0.875rem;
@@ -58,24 +48,6 @@
58
48
  color: var(--color-primary);
59
49
  }
60
50
 
61
- /* Pills variant — visually identical to SegmentedControl card */
62
- .mint-tabs--pills .mint-tab {
63
- border-radius: var(--radius);
64
- color: var(--text-muted);
65
- background-color: transparent;
66
- }
67
-
68
- .mint-tabs--pills .mint-tab:hover:not(.mint-tab--disabled):not(.mint-tab--active) {
69
- color: var(--text-primary);
70
- background-color: var(--bg-hover);
71
- }
72
-
73
- .mint-tabs--pills .mint-tab--active {
74
- background-color: var(--bg-card);
75
- color: var(--text-primary);
76
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
77
- }
78
-
79
51
  /* Tab content */
80
52
  .mint-tab__content {
81
53
  display: flex;
@@ -93,11 +65,23 @@
93
65
  flex-shrink: 0;
94
66
  }
95
67
 
68
+ /* Mono count block */
96
69
  .mint-tab__badge {
97
- margin-left: 0.25rem;
98
- padding: 0.125rem 0.375rem;
99
- font-size: 0.75rem;
100
- border-radius: 9999px;
101
- background-color: var(--color-primary-soft, rgba(99, 102, 241, 0.12));
70
+ padding: 0.0625rem 0.25rem;
71
+ border-radius: 0.1875rem;
72
+ background-color: var(--bg-tertiary);
73
+ color: var(--text-secondary);
74
+ font-family: var(--font-mono);
75
+ font-size: 0.625rem;
76
+ font-weight: 600;
77
+ font-variant-numeric: tabular-nums;
78
+ }
79
+
80
+ .mint-tab--active .mint-tab__badge {
81
+ background-color: var(--color-primary-soft);
82
+ color: var(--color-primary-hover);
83
+ }
84
+
85
+ html.dark .mint-tab--active .mint-tab__badge {
102
86
  color: var(--color-primary);
103
87
  }