@stainless-api/ui-primitives 0.1.0-beta.2 → 0.1.0-beta.20

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 (51) hide show
  1. package/.turbo/turbo-build.log +35 -0
  2. package/CHANGELOG.md +112 -0
  3. package/dist/Accordion-CJL9SWwS.d.ts +26 -0
  4. package/dist/Accordion-DLQE3Td6.js +31 -0
  5. package/dist/Button-DBhd6kU7.js +51 -0
  6. package/dist/Button-DwndlytB.d.ts +38 -0
  7. package/dist/Callout-CMz3Yl_5.d.ts +18 -0
  8. package/dist/Callout-UZQRuCQ5.js +28 -0
  9. package/dist/DropdownButton-DoYDi8tB.js +82 -0
  10. package/dist/DropdownButton-zcvep_xH.d.ts +50 -0
  11. package/dist/components/Accordion.d.ts +2 -0
  12. package/dist/components/Accordion.js +3 -0
  13. package/dist/components/Button.d.ts +2 -0
  14. package/dist/components/Button.js +3 -0
  15. package/dist/components/Callout.d.ts +2 -0
  16. package/dist/components/Callout.js +3 -0
  17. package/dist/components/DropdownButton.d.ts +2 -0
  18. package/dist/components/DropdownButton.js +3 -0
  19. package/dist/index.d.ts +5 -0
  20. package/dist/index.js +6 -0
  21. package/dist/scripts/index.d.ts +12 -0
  22. package/dist/scripts/index.js +33 -0
  23. package/dist/styles.css +1181 -0
  24. package/dist/styles.js +1 -0
  25. package/package.json +9 -9
  26. package/src/components/Accordion.tsx +41 -0
  27. package/src/components/Button.tsx +1 -0
  28. package/src/components/accordion.css +145 -0
  29. package/src/components/button.css +165 -135
  30. package/src/components/callout.css +78 -57
  31. package/src/components/dropdown/Dropdown.tsx +51 -0
  32. package/src/components/dropdown/DropdownButton.tsx +54 -0
  33. package/src/components/dropdown/DropdownMenu.tsx +113 -0
  34. package/src/components/dropdown/dropdown.css +231 -0
  35. package/src/index.ts +3 -2
  36. package/src/scripts/dropdown-button.ts +20 -36
  37. package/src/scripts/dropdown.ts +193 -0
  38. package/src/scripts/index.ts +1 -0
  39. package/src/styles/layout.css +3 -1
  40. package/src/styles/scales.css +1 -1
  41. package/src/styles/starlight-compat.css +138 -107
  42. package/src/styles/swatches.css +2 -2
  43. package/src/styles/theme.css +2 -2
  44. package/src/styles/typography.css +117 -147
  45. package/src/styles.css +2 -2
  46. package/tsconfig.json +3 -7
  47. package/.env +0 -1
  48. package/src/components/DetailsGroup.tsx +0 -17
  49. package/src/components/DropdownButton.tsx +0 -98
  50. package/src/components/details.css +0 -126
  51. package/src/components/dropdown-button.css +0 -162
@@ -0,0 +1,1181 @@
1
+ @layer stl-ui.tokens {
2
+ /* Scales - Default */
3
+ :root {
4
+ --stl-ui-gray-50: rgba(250, 250, 250, 1);
5
+ --stl-ui-gray-100: rgba(245, 245, 245, 1);
6
+ --stl-ui-gray-200: rgba(229, 229, 229, 1);
7
+ --stl-ui-gray-300: rgba(212, 212, 212, 1);
8
+ --stl-ui-gray-400: rgba(163, 163, 163, 1);
9
+ --stl-ui-gray-500: rgba(115, 115, 115, 1);
10
+ --stl-ui-gray-600: rgba(82, 82, 82, 1);
11
+ --stl-ui-gray-700: rgba(64, 64, 64, 1);
12
+ --stl-ui-gray-800: rgba(38, 38, 38, 1);
13
+ --stl-ui-gray-900: rgba(23, 23, 23, 1);
14
+ --stl-ui-gray-950: rgba(10, 10, 10, 1);
15
+ --stl-ui-accent-50: #eff6ffff;
16
+ --stl-ui-accent-100: #dbeafeff;
17
+ --stl-ui-accent-200: #bedbffff;
18
+ --stl-ui-accent-300: #8ec5ffff;
19
+ --stl-ui-accent-400: #51a2ffff;
20
+ --stl-ui-accent-500: #2b7fffff;
21
+ --stl-ui-accent-600: #155dfcff;
22
+ --stl-ui-accent-700: #1447e6ff;
23
+ --stl-ui-accent-800: #193cb8ff;
24
+ --stl-ui-accent-900: #132762ff;
25
+ --stl-ui-accent-950: #0b1128ff;
26
+ --stl-ui-red-50: rgba(252, 243, 243, 1);
27
+ --stl-ui-red-100: rgba(249, 227, 227, 1);
28
+ --stl-ui-red-200: rgba(246, 203, 203, 1);
29
+ --stl-ui-red-300: rgba(242, 166, 165, 1);
30
+ --stl-ui-red-400: rgba(235, 109, 108, 1);
31
+ --stl-ui-red-500: rgba(227, 64, 65, 1);
32
+ --stl-ui-red-600: rgba(208, 30, 34, 1);
33
+ --stl-ui-red-700: rgba(174, 25, 26, 1);
34
+ --stl-ui-red-800: rgba(143, 28, 27, 1);
35
+ --stl-ui-red-900: rgba(85, 24, 22, 1);
36
+ --stl-ui-red-950: rgba(43, 9, 8, 1);
37
+ --stl-ui-blue-50: rgba(239, 246, 255, 1);
38
+ --stl-ui-blue-100: rgba(219, 234, 254, 1);
39
+ --stl-ui-blue-200: rgba(190, 219, 255, 1);
40
+ --stl-ui-blue-300: rgba(142, 197, 255, 1);
41
+ --stl-ui-blue-400: rgba(81, 162, 255, 1);
42
+ --stl-ui-blue-500: rgba(43, 127, 255, 1);
43
+ --stl-ui-blue-600: rgba(21, 93, 252, 1);
44
+ --stl-ui-blue-700: rgba(20, 71, 230, 1);
45
+ --stl-ui-blue-800: rgba(25, 60, 184, 1);
46
+ --stl-ui-blue-900: rgba(19, 39, 98, 1);
47
+ --stl-ui-blue-950: rgba(11, 17, 40, 1);
48
+ --stl-ui-green-50: rgba(240, 253, 244, 1);
49
+ --stl-ui-green-100: rgba(220, 252, 231, 1);
50
+ --stl-ui-green-200: rgba(187, 247, 208, 1);
51
+ --stl-ui-green-300: rgba(134, 239, 172, 1);
52
+ --stl-ui-green-400: rgba(74, 222, 128, 1);
53
+ --stl-ui-green-500: rgba(34, 197, 94, 1);
54
+ --stl-ui-green-600: rgba(22, 163, 74, 1);
55
+ --stl-ui-green-700: rgba(21, 128, 61, 1);
56
+ --stl-ui-green-800: rgba(22, 101, 52, 1);
57
+ --stl-ui-green-900: rgba(15, 62, 33, 1);
58
+ --stl-ui-green-950: rgba(4, 32, 15, 1);
59
+ --stl-ui-orange-50: rgba(255, 247, 237, 1);
60
+ --stl-ui-orange-100: rgba(255, 237, 213, 1);
61
+ --stl-ui-orange-200: rgba(254, 215, 170, 1);
62
+ --stl-ui-orange-300: rgba(253, 186, 116, 1);
63
+ --stl-ui-orange-400: rgba(251, 146, 60, 1);
64
+ --stl-ui-orange-500: rgba(249, 115, 22, 1);
65
+ --stl-ui-orange-600: rgba(234, 88, 12, 1);
66
+ --stl-ui-orange-700: rgba(194, 65, 12, 1);
67
+ --stl-ui-orange-800: rgba(154, 52, 18, 1);
68
+ --stl-ui-orange-900: rgba(89, 32, 13, 1);
69
+ --stl-ui-orange-950: rgba(46, 14, 5, 1);
70
+ --stl-ui-purple-50: rgba(250, 245, 255, 1);
71
+ --stl-ui-purple-100: rgba(243, 232, 255, 1);
72
+ --stl-ui-purple-200: rgba(233, 213, 255, 1);
73
+ --stl-ui-purple-300: rgba(216, 180, 254, 1);
74
+ --stl-ui-purple-400: rgba(192, 132, 252, 1);
75
+ --stl-ui-purple-500: rgba(168, 85, 247, 1);
76
+ --stl-ui-purple-600: rgba(147, 51, 234, 1);
77
+ --stl-ui-purple-700: rgba(126, 34, 206, 1);
78
+ --stl-ui-purple-800: rgba(107, 33, 168, 1);
79
+ --stl-ui-purple-900: rgba(72, 23, 110, 1);
80
+ --stl-ui-purple-950: rgba(39, 5, 67, 1);
81
+ --stl-ui-cyan-50: rgba(236, 254, 255, 1);
82
+ --stl-ui-cyan-100: rgba(207, 250, 254, 1);
83
+ --stl-ui-cyan-200: rgba(165, 243, 252, 1);
84
+ --stl-ui-cyan-300: rgba(103, 232, 249, 1);
85
+ --stl-ui-cyan-400: rgba(34, 211, 238, 1);
86
+ --stl-ui-cyan-500: rgba(6, 182, 212, 1);
87
+ --stl-ui-cyan-600: rgba(8, 145, 178, 1);
88
+ --stl-ui-cyan-700: rgba(14, 116, 144, 1);
89
+ --stl-ui-cyan-800: rgba(21, 94, 117, 1);
90
+ --stl-ui-cyan-900: rgba(18, 62, 79, 1);
91
+ --stl-ui-cyan-950: rgba(5, 34, 46, 1);
92
+ --stl-ui-pink-50: rgba(253, 242, 248, 1);
93
+ --stl-ui-pink-100: rgba(252, 231, 243, 1);
94
+ --stl-ui-pink-200: rgba(251, 207, 232, 1);
95
+ --stl-ui-pink-300: rgba(249, 168, 212, 1);
96
+ --stl-ui-pink-400: rgba(244, 114, 182, 1);
97
+ --stl-ui-pink-500: rgba(236, 72, 153, 1);
98
+ --stl-ui-pink-600: rgba(219, 39, 119, 1);
99
+ --stl-ui-pink-700: rgba(190, 24, 93, 1);
100
+ --stl-ui-pink-800: rgba(157, 23, 77, 1);
101
+ --stl-ui-pink-900: rgba(103, 19, 53, 1);
102
+ --stl-ui-pink-950: rgba(56, 5, 25, 1);
103
+ --stl-ui-yellow-50: rgba(254, 252, 232, 1);
104
+ --stl-ui-yellow-100: rgba(254, 249, 195, 1);
105
+ --stl-ui-yellow-200: rgba(254, 240, 138, 1);
106
+ --stl-ui-yellow-300: rgba(253, 224, 71, 1);
107
+ --stl-ui-yellow-400: rgba(250, 204, 21, 1);
108
+ --stl-ui-yellow-500: rgba(234, 179, 8, 1);
109
+ --stl-ui-yellow-600: rgba(202, 138, 4, 1);
110
+ --stl-ui-yellow-700: rgba(161, 98, 7, 1);
111
+ --stl-ui-yellow-800: rgba(133, 77, 14, 1);
112
+ --stl-ui-yellow-900: rgba(88, 49, 14, 1);
113
+ --stl-ui-yellow-950: rgba(47, 23, 4, 1);
114
+
115
+ /* TODO support accent generation */
116
+ /* --stl-ui-accent-base: rgb(21, 93, 252);
117
+ --stl-ui-accent-50: color-mix(in oklch, white 95%, var(--stl-ui-accent-base));
118
+ --stl-ui-accent-100: color-mix(in oklch, white 85%, var(--stl-ui-accent-base));
119
+ --stl-ui-accent-200: color-mix(in oklch, white 70%, var(--stl-ui-accent-base));
120
+ --stl-ui-accent-300: color-mix(in oklch, white 55%, var(--stl-ui-accent-base));
121
+ --stl-ui-accent-400: color-mix(in oklch, white 40%, var(--stl-ui-accent-base));
122
+ --stl-ui-accent-500: color-mix(in oklch, white 25%, var(--stl-ui-accent-base));
123
+ --stl-ui-accent-600: var(--stl-ui-accent-base);
124
+ --stl-ui-accent-700: color-mix(in oklch, black 15%, var(--stl-ui-accent-base));
125
+ --stl-ui-accent-800: color-mix(in oklch, black 30%, var(--stl-ui-accent-base));
126
+ --stl-ui-accent-900: color-mix(in oklch, black 45%, var(--stl-ui-accent-base));
127
+ --stl-ui-accent-950: color-mix(in oklch, black 60%, var(--stl-ui-accent-base)); */
128
+ }
129
+ }
130
+
131
+ @layer stl-ui.tokens {
132
+ /* --stl-ui-swatch-es - Light */
133
+ :root {
134
+ --stl-ui-swatch-gray-gray-1: var(--stl-ui-gray-800);
135
+ --stl-ui-swatch-gray-gray-2: var(--stl-ui-gray-700);
136
+ --stl-ui-swatch-gray-gray-3: var(--stl-ui-gray-600);
137
+ --stl-ui-swatch-gray-gray-4: var(--stl-ui-gray-500);
138
+ --stl-ui-swatch-gray-gray-5: var(--stl-ui-gray-400);
139
+ --stl-ui-swatch-gray-gray-6: var(--stl-ui-gray-300);
140
+ --stl-ui-swatch-gray-gray-7: var(--stl-ui-gray-200);
141
+ --stl-ui-swatch-gray-gray-8: var(--stl-ui-gray-100);
142
+ --stl-ui-swatch-gray-gray-9: var(--stl-ui-gray-50);
143
+ --stl-ui-swatch-gray-black: var(--stl-ui-gray-950);
144
+ --stl-ui-swatch-gray-white: rgb(255, 255, 255);
145
+
146
+ --stl-ui-swatch-accent-base: var(--stl-ui-accent-600);
147
+ --stl-ui-swatch-accent-muted: var(--stl-ui-accent-200);
148
+ --stl-ui-swatch-accent-faint: var(--stl-ui-accent-50);
149
+ --stl-ui-swatch-red-base: var(--stl-ui-red-600);
150
+ --stl-ui-swatch-red-muted: var(--stl-ui-red-200);
151
+ --stl-ui-swatch-red-faint: var(--stl-ui-red-50);
152
+ --stl-ui-swatch-green-base: var(--stl-ui-green-600);
153
+ --stl-ui-swatch-green-muted: var(--stl-ui-green-200);
154
+ --stl-ui-swatch-green-faint: var(--stl-ui-green-50);
155
+ --stl-ui-swatch-blue-base: var(--stl-ui-blue-600);
156
+ --stl-ui-swatch-blue-muted: var(--stl-ui-blue-200);
157
+ --stl-ui-swatch-blue-faint: var(--stl-ui-blue-50);
158
+ --stl-ui-swatch-orange-base: var(--stl-ui-orange-600);
159
+ --stl-ui-swatch-orange-muted: var(--stl-ui-orange-200);
160
+ --stl-ui-swatch-orange-faint: var(--stl-ui-orange-50);
161
+ --stl-ui-swatch-purple-base: var(--stl-ui-purple-600);
162
+ --stl-ui-swatch-purple-muted: var(--stl-ui-purple-200);
163
+ --stl-ui-swatch-purple-faint: var(--stl-ui-purple-50);
164
+ --stl-ui-swatch-cyan-base: var(--stl-ui-cyan-600);
165
+ --stl-ui-swatch-cyan-muted: var(--stl-ui-cyan-200);
166
+ --stl-ui-swatch-cyan-faint: var(--stl-ui-cyan-50);
167
+ --stl-ui-swatch-pink-base: var(--stl-ui-pink-600);
168
+ --stl-ui-swatch-pink-muted: var(--stl-ui-pink-200);
169
+ --stl-ui-swatch-pink-faint: var(--stl-ui-pink-50);
170
+ --stl-ui-swatch-yellow-base: var(--stl-ui-yellow-600);
171
+ --stl-ui-swatch-yellow-muted: var(--stl-ui-yellow-200);
172
+ --stl-ui-swatch-yellow-faint: var(--stl-ui-yellow-50);
173
+ }
174
+
175
+ /* --stl-ui-swatch-es - Dark */
176
+ :root[data-theme='dark'] {
177
+ --stl-ui-swatch-gray-gray-1: var(--stl-ui-gray-100);
178
+ --stl-ui-swatch-gray-gray-2: var(--stl-ui-gray-200);
179
+ --stl-ui-swatch-gray-gray-3: var(--stl-ui-gray-300);
180
+ --stl-ui-swatch-gray-gray-4: var(--stl-ui-gray-400);
181
+ --stl-ui-swatch-gray-gray-5: var(--stl-ui-gray-500);
182
+ --stl-ui-swatch-gray-gray-6: var(--stl-ui-gray-600);
183
+ --stl-ui-swatch-gray-gray-7: var(--stl-ui-gray-700);
184
+ --stl-ui-swatch-gray-gray-8: var(--stl-ui-gray-800);
185
+ --stl-ui-swatch-gray-gray-9: var(--stl-ui-gray-900);
186
+ --stl-ui-swatch-gray-black: var(--stl-ui-gray-950);
187
+ --stl-ui-swatch-gray-white: rgb(255, 255, 255);
188
+
189
+ --stl-ui-swatch-accent-base: var(--stl-ui-accent-500);
190
+ --stl-ui-swatch-accent-muted: var(--stl-ui-accent-900);
191
+ --stl-ui-swatch-accent-faint: var(--stl-ui-accent-950);
192
+ --stl-ui-swatch-red-base: var(--stl-ui-red-500);
193
+ --stl-ui-swatch-red-muted: var(--stl-ui-red-900);
194
+ --stl-ui-swatch-red-faint: var(--stl-ui-red-950);
195
+ --stl-ui-swatch-green-base: var(--stl-ui-green-500);
196
+ --stl-ui-swatch-green-muted: var(--stl-ui-green-900);
197
+ --stl-ui-swatch-green-faint: var(--stl-ui-green-950);
198
+ --stl-ui-swatch-blue-base: var(--stl-ui-blue-500);
199
+ --stl-ui-swatch-blue-muted: var(--stl-ui-blue-900);
200
+ --stl-ui-swatch-blue-faint: var(--stl-ui-blue-950);
201
+ --stl-ui-swatch-orange-base: var(--stl-ui-orange-500);
202
+ --stl-ui-swatch-orange-muted: var(--stl-ui-orange-900);
203
+ --stl-ui-swatch-orange-faint: var(--stl-ui-orange-950);
204
+ --stl-ui-swatch-purple-base: var(--stl-ui-purple-500);
205
+ --stl-ui-swatch-purple-muted: var(--stl-ui-purple-900);
206
+ --stl-ui-swatch-purple-faint: var(--stl-ui-purple-950);
207
+ --stl-ui-swatch-cyan-base: var(--stl-ui-cyan-500);
208
+ --stl-ui-swatch-cyan-muted: var(--stl-ui-cyan-900);
209
+ --stl-ui-swatch-cyan-faint: var(--stl-ui-cyan-950);
210
+ --stl-ui-swatch-pink-base: var(--stl-ui-pink-500);
211
+ --stl-ui-swatch-pink-muted: var(--stl-ui-pink-900);
212
+ --stl-ui-swatch-pink-faint: var(--stl-ui-pink-950);
213
+ --stl-ui-swatch-yellow-base: var(--stl-ui-yellow-500);
214
+ --stl-ui-swatch-yellow-muted: var(--stl-ui-yellow-900);
215
+ --stl-ui-swatch-yellow-faint: var(--stl-ui-yellow-950);
216
+ }
217
+ }
218
+
219
+ /* Typography - Stainless */
220
+ @layer stl-ui.tokens {
221
+ :root {
222
+ --stl-ui-typography-font: 'Geist', system-ui, sans-serif;
223
+ --stl-ui-typography-font-mono: 'Geist Mono', ui-monospace, monospace;
224
+ --stl-ui-typography-line-height: 1.5;
225
+ --stl-ui-typography-line-height-headings: 1.2;
226
+
227
+ --stl-ui-typography-text-body: var(--stl-ui-type-scale-text);
228
+ --stl-ui-typography-text-body-sm: var(--stl-ui-type-scale-text-sm);
229
+ --stl-ui-typography-text-body-xs: var(--stl-ui-type-scale-text-xs);
230
+
231
+ --stl-ui-typography-text-code: var(--stl-ui-type-scale-text-sm);
232
+ --stl-ui-typography-text-code-sm: var(--stl-ui-type-scale-text-xs);
233
+
234
+ --stl-ui-typography-text-h1: var(--stl-ui-type-scale-text-5xl);
235
+ --stl-ui-typography-text-h2: var(--stl-ui-type-scale-text-4xl);
236
+ --stl-ui-typography-text-h3: var(--stl-ui-type-scale-text-3xl);
237
+ --stl-ui-typography-text-h4: var(--stl-ui-type-scale-text-2xl);
238
+ --stl-ui-typography-text-h5: var(--stl-ui-type-scale-text-xl);
239
+
240
+ --stl-ui-type-scale-text-xs: 12px;
241
+ --stl-ui-type-scale-text-sm: 14px;
242
+ --stl-ui-type-scale-text: 16px;
243
+ --stl-ui-type-scale-text-lg: 18px;
244
+ --stl-ui-type-scale-text-xl: 20px;
245
+ --stl-ui-type-scale-text-2xl: 24px;
246
+ --stl-ui-type-scale-text-3xl: 29px;
247
+ --stl-ui-type-scale-text-4xl: 35px;
248
+ --stl-ui-type-scale-text-5xl: 42px;
249
+ --stl-ui-type-scale-text-6xl: 64px;
250
+ }
251
+ }
252
+
253
+ /* Prose exists in its own sub-layer for easy reverting */
254
+ body {
255
+ font-family: var(--stl-ui-typography-font);
256
+ font-feature-settings:
257
+ 'ss01' on,
258
+ 'ss03' on,
259
+ 'ss04' on,
260
+ 'ss06' on,
261
+ 'ss08' on;
262
+ }
263
+
264
+ .stl-ui-prose {
265
+ letter-spacing: -0.01em;
266
+ font-weight: 400;
267
+ line-height: var(--stl-ui-typography-line-height);
268
+ font-size: var(--stl-ui-typography-text-body);
269
+ color: var(--stl-ui-foreground-secondary);
270
+
271
+ :where(.stl-ui-not-prose) {
272
+ letter-spacing: initial;
273
+ font-weight: initial;
274
+ line-height: initial;
275
+ font-size: initial;
276
+ color: initial;
277
+ }
278
+
279
+ :where(p):not(.stl-ui-not-prose *) {
280
+ margin-top: 16px;
281
+ }
282
+
283
+ :where(p, li) {
284
+ &:not(.stl-ui-not-prose *) {
285
+ color: var(--stl-ui-foreground-secondary);
286
+ }
287
+ }
288
+
289
+ :where(strong):not(.stl-ui-not-prose *) {
290
+ color: var(--stl-ui-foreground);
291
+ }
292
+
293
+ :where(aside):not(.stl-ui-not-prose *) {
294
+ color: var(--stl-ui-foreground);
295
+ }
296
+
297
+ :is(h1, h2, h3, h4, h5, h6):not(.stl-ui-not-prose *) {
298
+ color: var(--stl-ui-foreground);
299
+ font-weight: 500;
300
+ line-height: var(--stl-ui-typography-line-height-headings);
301
+ }
302
+
303
+ h1:not(.stl-ui-not-prose *) {
304
+ /* Heading 1/Medium */
305
+ font-size: var(--stl-ui-typography-text-h1);
306
+ letter-spacing: -0.03em;
307
+
308
+ margin-top: 64px;
309
+ }
310
+
311
+ h2:not(.stl-ui-not-prose *) {
312
+ /* Heading 2/Medium */
313
+ font-size: var(--stl-ui-typography-text-h2);
314
+ letter-spacing: -0.03em;
315
+
316
+ margin-top: 48px;
317
+ }
318
+
319
+ h3:not(.stl-ui-not-prose *) {
320
+ /* Heading 3/Medium */
321
+ font-size: var(--stl-ui-typography-text-h3);
322
+ letter-spacing: -0.02em;
323
+ margin-top: 40px;
324
+ }
325
+
326
+ h4:not(.stl-ui-not-prose *) {
327
+ /* Heading 4/Medium */
328
+ font-size: var(--stl-ui-typography-text-h4);
329
+ letter-spacing: -0.02em;
330
+ margin-top: 32px;
331
+ }
332
+
333
+ h5:not(.stl-ui-not-prose *) {
334
+ /* Heading 5/Medium */
335
+ font-size: var(--stl-ui-typography-text-h5);
336
+ letter-spacing: -0.02em;
337
+ margin-top: 24px;
338
+ }
339
+
340
+ li:not(.stl-ui-not-prose *) {
341
+ &:not(:last-child) {
342
+ margin-bottom: 8px;
343
+ }
344
+
345
+ h1,
346
+ h2,
347
+ h3,
348
+ h4,
349
+ h5,
350
+ p,
351
+ a {
352
+ &:first-child {
353
+ display: inline;
354
+ }
355
+ }
356
+ }
357
+
358
+ :where(ol, ul) {
359
+ &:not(.stl-ui-not-prose *) {
360
+ padding-left: 26px;
361
+ }
362
+ }
363
+
364
+ :where(ol, ul, aside, img, figure, details) {
365
+ &:not(.stl-ui-not-prose *) {
366
+ margin-top: 16px;
367
+ }
368
+ }
369
+
370
+ :where(:not(pre) > code):not(.stl-ui-not-prose *) {
371
+ color: var(--stl-ui-foreground);
372
+ font-feature-settings:
373
+ 'ss01' on,
374
+ 'ss03' on,
375
+ 'ss04' on,
376
+ 'ss06' on;
377
+
378
+ /* Code/Regular */
379
+ font-family: var(--stl-ui-typography-font-mono);
380
+ font-size: 0.9em;
381
+ font-weight: inherit;
382
+
383
+ padding: 0 0.2em;
384
+ background-color: oklch(from var(--stl-ui-foreground) l c h / 0.1);
385
+ border-radius: 0.2em;
386
+ }
387
+ }
388
+
389
+ @layer stl-ui.tokens {
390
+ /* Layout - Stainless */
391
+ :root {
392
+ --stl-ui-layout-border-radius-xs: 4px;
393
+ --stl-ui-layout-border-radius-sml: 8px;
394
+ --stl-ui-layout-border-radius: 12px;
395
+ --stl-ui-layout-border-radius-med: 16px;
396
+ --stl-ui-layout-border-radius-max: 9999px;
397
+ --stl-ui-left-content-indent: 24px;
398
+
399
+ --stl-ui-page-padding-inline: 20px;
400
+ }
401
+ }
402
+
403
+ @layer stl-ui.tokens {
404
+ /* Swatches - Light */
405
+ :root {
406
+ --stl-ui-background: var(--stl-ui-swatch-gray-white);
407
+ --stl-ui-card-background: var(--stl-ui-swatch-gray-white);
408
+ --stl-ui-muted-background: var(--stl-ui-swatch-gray-gray-8);
409
+ --stl-ui-foreground: var(--stl-ui-swatch-gray-gray-1);
410
+ --stl-ui-foreground-secondary: var(--stl-ui-swatch-gray-gray-3);
411
+ --stl-ui-foreground-muted: var(--stl-ui-swatch-gray-gray-4);
412
+ --stl-ui-foreground-accent: var(--stl-ui-swatch-accent-base);
413
+ --stl-ui-border: var(--stl-ui-swatch-gray-gray-7);
414
+ --stl-ui-border-muted: var(--stl-ui-swatch-gray-gray-8);
415
+ --stl-ui-border-emphasis: var(--stl-ui-swatch-gray-gray-6);
416
+ --stl-ui-inverse-background: var(--stl-ui-swatch-gray-gray-1);
417
+ --stl-ui-inverse-foreground: var(--stl-ui-swatch-gray-white);
418
+ --stl-ui-accent-background: var(--stl-ui-swatch-accent-base);
419
+ --stl-ui-accent-foreground: var(--stl-ui-swatch-gray-white);
420
+ --stl-ui-accent-muted-background: var(--stl-ui-swatch-accent-faint);
421
+ --stl-ui-accent-muted-foreground: var(--stl-ui-swatch-accent-base);
422
+ --stl-ui-accent-border: var(--stl-ui-swatch-accent-muted);
423
+ --stl-ui-accent-border-muted: var(--stl-ui-swatch-accent-faint);
424
+ --stl-ui-accent-border-emphasis: var(--stl-ui-swatch-accent-base);
425
+ --stl-ui-overlay-background: #0000000d;
426
+ }
427
+
428
+ /* Swatches - Dark */
429
+ :root[data-theme='dark'] {
430
+ --stl-ui-background: var(--stl-ui-swatch-gray-black);
431
+ --stl-ui-card-background: var(--stl-ui-swatch-gray-gray-9);
432
+ --stl-ui-muted-background: var(--stl-ui-swatch-gray-gray-9);
433
+ --stl-ui-foreground: var(--stl-ui-swatch-gray-gray-1);
434
+ --stl-ui-foreground-secondary: var(--stl-ui-swatch-gray-gray-3);
435
+ --stl-ui-foreground-muted: var(--stl-ui-swatch-gray-gray-4);
436
+ --stl-ui-foreground-accent: var(--stl-ui-swatch-accent-base);
437
+ --stl-ui-border: var(--stl-ui-swatch-gray-gray-8);
438
+ --stl-ui-border-muted: var(--stl-ui-swatch-gray-gray-9);
439
+ --stl-ui-border-emphasis: var(--stl-ui-swatch-gray-gray-7);
440
+ --stl-ui-inverse-background: var(--stl-ui-swatch-gray-gray-1);
441
+ --stl-ui-inverse-foreground: var(--stl-ui-swatch-gray-black);
442
+ --stl-ui-accent-background: var(--stl-ui-swatch-accent-base);
443
+ --stl-ui-accent-foreground: var(--stl-ui-swatch-gray-white);
444
+ --stl-ui-accent-muted-background: var(--stl-ui-swatch-accent-faint);
445
+ --stl-ui-accent-muted-foreground: var(--stl-ui-swatch-accent-base);
446
+ --stl-ui-accent-border: var(--stl-ui-swatch-accent-muted);
447
+ --stl-ui-accent-border-muted: var(--stl-ui-swatch-accent-faint);
448
+ --stl-ui-accent-border-emphasis: var(--stl-ui-swatch-accent-base);
449
+ --stl-ui-overlay-background: #00000080;
450
+ }
451
+ }
452
+
453
+ :root {
454
+ /* Layout and Typography */
455
+ --sl-font: var(--stl-ui-typography-font);
456
+ --sl-font-mono: var(--stl-ui-typography-font-mono);
457
+ --sl-line-height: var(--stl-ui-typography-line-height);
458
+
459
+ /* Headings */
460
+ --sl-text-h1: var(--stl-ui-typography-text-h1);
461
+ --sl-text-h2: var(--stl-ui-typography-text-h2);
462
+ --sl-text-h3: var(--stl-ui-typography-text-h3);
463
+ --sl-text-h4: var(--stl-ui-typography-text-h4);
464
+ --sl-text-h5: var(--stl-ui-typography-text-h5);
465
+
466
+ /* Colors */
467
+ --sl-color-bg: var(--stl-ui-background);
468
+ --sl-color-bg-sidebar: var(--stl-ui-background);
469
+ --sl-color-bg-ui: var(--stl-ui-card-background);
470
+ --sl-color-bg-nav: var(--stl-ui-background);
471
+ --sl-color-bg-inline-code: var(--stl-ui-muted-background);
472
+ --sl-color-bg-accent: var(--stl-ui-accent-background);
473
+
474
+ --sl-color-text: var(--stl-ui-foreground);
475
+ --sl-color-text-secondary: var(--stl-ui-foreground-secondary);
476
+ --sl-color-text-tertiary: var(--stl-ui-foreground-muted);
477
+ --sl-color-text-accent: var(--stl-ui-foreground-accent);
478
+ --sl-color-hairline: var(--stl-ui-border);
479
+ --sl-color-hairline-light: var(--stl-ui-border-muted);
480
+ --sl-color-hairline-shade: var(--stl-ui-border-emphasis);
481
+ --sl-color-text-invert: var(--stl-ui-inverse-foreground);
482
+
483
+ /* Primary colors */
484
+ --sl-color-red-low: var(--stl-ui-swatch-red-faint);
485
+ --sl-color-red: var(--stl-ui-swatch-red-base);
486
+ --sl-color-red-high: var(--stl-ui-swatch-red-base);
487
+
488
+ --sl-color-green-low: var(--stl-ui-swatch-green-faint);
489
+ --sl-color-green: var(--stl-ui-swatch-green-base);
490
+ --sl-color-green-high: var(--stl-ui-swatch-green-base);
491
+
492
+ --sl-color-blue-low: var(--stl-ui-swatch-blue-faint);
493
+ --sl-color-blue: var(--stl-ui-swatch-blue-base);
494
+ --sl-color-blue-high: var(--stl-ui-swatch-blue-base);
495
+
496
+ --sl-color-orange-low: var(--stl-ui-swatch-orange-faint);
497
+ --sl-color-orange: var(--stl-ui-swatch-orange-base);
498
+ --sl-color-orange-high: var(--stl-ui-swatch-orange-base);
499
+
500
+ --sl-color-purple-low: var(--stl-ui-swatch-purple-faint);
501
+ --sl-color-purple: var(--stl-ui-swatch-purple-base);
502
+ --sl-color-purple-high: var(--stl-ui-swatch-purple-base);
503
+
504
+ --sl-color-teal-low: var(--stl-ui-swatch-teal-faint);
505
+ --sl-color-teal: var(--stl-ui-swatch-teal-base);
506
+ --sl-color-teal-high: var(--stl-ui-swatch-teal-base);
507
+
508
+ --sl-color-magenta-low: var(--stl-ui-swatch-pink-faint);
509
+ --sl-color-magenta: var(--stl-ui-swatch-pink-base);
510
+ --sl-color-magenta-high: var(--stl-ui-swatch-pink-base);
511
+
512
+ --sl-color-yellow-low: var(--stl-ui-swatch-yellow-faint);
513
+ --sl-color-yellow: var(--stl-ui-swatch-yellow-base);
514
+ --sl-color-yellow-high: var(--stl-ui-swatch-yellow-base);
515
+ }
516
+
517
+ /* Starlight Compatibility */
518
+ .stl-ui-prose {
519
+ /* TODO: Disable starlight headingLinks and replace with our own */
520
+ /* Duplicate styles from h1–5 in typography; TODO: move to mixins after adopting preprocessor */
521
+ .sl-heading-wrapper.level-h1 {
522
+ font-size: var(--stl-ui-typography-text-h1);
523
+ letter-spacing: -0.03em;
524
+ margin-top: 64px;
525
+ line-height: var(--stl-ui-typography-line-height-headings);
526
+ }
527
+ .sl-heading-wrapper.level-h2 {
528
+ font-size: var(--stl-ui-typography-text-h2);
529
+ letter-spacing: -0.03em;
530
+ margin-top: 48px;
531
+ line-height: var(--stl-ui-typography-line-height-headings);
532
+ }
533
+
534
+ .sl-heading-wrapper.level-h3 {
535
+ font-size: var(--stl-ui-typography-text-h3);
536
+ letter-spacing: -0.02em;
537
+ margin-top: 40px;
538
+ line-height: var(--stl-ui-typography-line-height-headings);
539
+ }
540
+ .sl-heading-wrapper.level-h4 {
541
+ font-size: var(--stl-ui-typography-text-h4);
542
+ letter-spacing: -0.02em;
543
+ margin-top: 32px;
544
+ line-height: var(--stl-ui-typography-line-height-headings);
545
+ }
546
+ .sl-heading-wrapper.level-h5 {
547
+ font-size: var(--stl-ui-typography-text-h5);
548
+ letter-spacing: -0.02em;
549
+ margin-top: 24px;
550
+ line-height: var(--stl-ui-typography-line-height-headings);
551
+ }
552
+ .sl-heading-wrapper {
553
+ --sl-anchor-icon-size: 0.8em;
554
+ }
555
+ /* TODO: replace with an icon that matches Stainless branding */
556
+ .sl-anchor-link svg {
557
+ margin-top: 0;
558
+ }
559
+ }
560
+
561
+ /* TODO: remove these */
562
+ .stl-ui-prose {
563
+ /* Tab component */
564
+ starlight-tabs {
565
+ a {
566
+ text-decoration: none;
567
+ line-height: unset;
568
+ color: var(--stl-ui-foreground);
569
+
570
+ &[aria-selected='true'] {
571
+ color: var(--stl-ui-foreground-accent);
572
+ font-weight: normal;
573
+ }
574
+ }
575
+
576
+ ol,
577
+ ul {
578
+ &:not(.stl-ui-not-prose *) {
579
+ padding-left: 0;
580
+ }
581
+ }
582
+
583
+ li:not(.stl-ui-not-prose *) {
584
+ margin-bottom: -2px;
585
+ &:not(:last-child) {
586
+ margin-bottom: -2px;
587
+ }
588
+
589
+ a:first-child {
590
+ display: flex;
591
+ }
592
+ }
593
+ }
594
+
595
+ /* Pagination Links */
596
+
597
+ .pagination-links {
598
+ a {
599
+ color: var(--stl-ui-foreground);
600
+ }
601
+ }
602
+
603
+ .starlight-aside {
604
+ svg {
605
+ margin-top: 0;
606
+ }
607
+ }
608
+ }
609
+
610
+ .stl-ui-button {
611
+ --stl-ui-button-color: var(--stl-ui-inverse-foreground);
612
+ --stl-ui-button-background-color: var(--stl-ui-inverse-background);
613
+ --stl-ui-button-background-color-hover: color-mix(
614
+ in oklch,
615
+ var(--stl-ui-inverse-background) 90%,
616
+ var(--stl-ui-background)
617
+ );
618
+
619
+ --stl-ui-button-border-color: transparent;
620
+ --stl-ui-button-border-color-hover: transparent;
621
+
622
+ --stl-ui-button-height: 32px;
623
+ --stl-ui-button-padding: 8px 10px;
624
+ --stl-ui-button-border-radius: var(--stl-ui-layout-border-radius-sml);
625
+ --stl-ui-button-line-height: 150%;
626
+ --stl-ui-button-font-weight: 500;
627
+ --stl-ui-button-font-size: var(--stl-ui-type-scale-text-sm);
628
+ --stl-ui-button-font-family: var(--stl-ui-typography-font);
629
+
630
+ cursor: pointer;
631
+ display: inline-flex;
632
+ align-items: center;
633
+ justify-content: center;
634
+ gap: 2px;
635
+ white-space: nowrap;
636
+ flex-shrink: 0;
637
+
638
+ height: var(--stl-ui-button-height);
639
+ padding: var(--stl-ui-button-padding);
640
+ border-radius: var(--stl-ui-button-border-radius);
641
+ line-height: var(--stl-ui-button-line-height);
642
+ font-weight: var(--stl-ui-button-font-weight);
643
+ font-size: var(--stl-ui-button-font-size);
644
+
645
+ border: 1px solid var(--stl-ui-button-border-color);
646
+ font-family: var(--stl-ui-button-font-family);
647
+
648
+ color: var(--stl-ui-button-color);
649
+ background-color: var(--stl-ui-button-background-color);
650
+
651
+ &:hover {
652
+ background-color: var(--stl-ui-button-background-color-hover);
653
+ border-color: var(--stl-ui-button-border-color-hover);
654
+ }
655
+ }
656
+
657
+ /* --- COLOR VARIANTS --- */
658
+ .stl-ui-button--accent {
659
+ --stl-ui-button-color: var(--stl-ui-accent-foreground);
660
+ --stl-ui-button-background-color: var(--stl-ui-accent-background);
661
+ --stl-ui-button-background-color-hover: color-mix(
662
+ in oklch,
663
+ var(--stl-ui-accent-background) 90%,
664
+ var(--stl-ui-inverse-foreground)
665
+ );
666
+ }
667
+
668
+ .stl-ui-button--accent-muted {
669
+ --stl-ui-button-color: var(--stl-ui-accent-muted-foreground);
670
+ --stl-ui-button-background-color: var(--stl-ui-accent-muted-background);
671
+ --stl-ui-button-background-color-hover: color-mix(
672
+ in oklch,
673
+ var(--stl-ui-accent-background) 10%,
674
+ var(--stl-ui-inverse-foreground)
675
+ );
676
+ }
677
+
678
+ .stl-ui-button--muted {
679
+ --stl-ui-button-color: var(--stl-ui-foreground);
680
+ --stl-ui-button-background-color: var(--stl-ui-muted-background);
681
+ --stl-ui-button-background-color-hover: color-mix(
682
+ in oklch,
683
+ var(--stl-ui-foreground) 10%,
684
+ var(--stl-ui-inverse-foreground)
685
+ );
686
+ }
687
+
688
+ .stl-ui-button--outline {
689
+ --stl-ui-button-color: var(--stl-ui-foreground);
690
+ --stl-ui-button-background-color: var(--stl-ui-card-background);
691
+ --stl-ui-button-background-color-hover: color-mix(
692
+ in oklch,
693
+ var(--stl-ui-foreground) 5%,
694
+ var(--stl-ui-inverse-foreground)
695
+ );
696
+ --stl-ui-button-border-color: var(--stl-ui-border);
697
+ --stl-ui-button-border-color-hover: var(--stl-ui-border-emphasis);
698
+ }
699
+
700
+ .stl-ui-button--ghost {
701
+ --stl-ui-button-color: var(--stl-ui-foreground);
702
+ --stl-ui-button-background-color: transparent;
703
+ --stl-ui-button-background-color-hover: color-mix(
704
+ in oklch,
705
+ var(--stl-ui-foreground) 5%,
706
+ var(--stl-ui-inverse-foreground)
707
+ );
708
+ }
709
+
710
+ .stl-ui-button--success {
711
+ --stl-ui-button-color: var(--stl-ui-swatch-gray-white);
712
+ --stl-ui-button-background-color: var(--stl-ui-swatch-green-base);
713
+ --stl-ui-button-background-color-hover: color-mix(
714
+ in oklch,
715
+ var(--stl-ui-swatch-green-base) 90%,
716
+ var(--stl-ui-inverse-foreground)
717
+ );
718
+ }
719
+
720
+ .stl-ui-button--destructive {
721
+ --stl-ui-button-color: var(--stl-ui-swatch-gray-white);
722
+ --stl-ui-button-background-color: var(--stl-ui-swatch-red-base);
723
+ --stl-ui-button-background-color-hover: color-mix(
724
+ in oklch,
725
+ var(--stl-ui-swatch-red-base) 90%,
726
+ var(--stl-ui-inverse-foreground)
727
+ );
728
+ }
729
+
730
+ /* --- SIZE VARIANTS --- */
731
+ .stl-ui-button--size-sm {
732
+ --stl-ui-button-height: 24px;
733
+ --stl-ui-button-padding: 0 6px;
734
+ --stl-ui-button-border-radius: var(--stl-ui-layout-border-radius-xs);
735
+ --stl-ui-button-line-height: 100%;
736
+ --stl-ui-button-font-weight: 500;
737
+ --stl-ui-button-font-size: var(--stl-ui-typography-text-body-xs);
738
+ }
739
+
740
+ .stl-ui-button--size-lg {
741
+ --stl-ui-button-height: 40px;
742
+ --stl-ui-button-padding: 8px 14px;
743
+ --stl-ui-button-border-radius: var(--stl-ui-layout-border-radius);
744
+ --stl-ui-button-line-height: 150%;
745
+ --stl-ui-button-font-weight: 500;
746
+ --stl-ui-button-font-size: var(--stl-ui-typography-text-body);
747
+ }
748
+
749
+ /* --- ICONS --- */
750
+ .stl-ui-button__icon {
751
+ flex-shrink: 0;
752
+ display: flex;
753
+ align-items: center;
754
+ justify-content: center;
755
+
756
+ svg {
757
+ margin-top: 0;
758
+ }
759
+ }
760
+
761
+ /* Left Icon */
762
+ .stl-ui-button:has(.stl-ui-button__icon:first-child) .stl-ui-button__icon {
763
+ margin-left: -4px;
764
+ margin-right: 4px;
765
+ }
766
+
767
+ .stl-ui-button:has(.stl-ui-button__icon:last-child) .stl-ui-button__icon {
768
+ /* Right Icon */
769
+ margin-right: -4px;
770
+ margin-left: 4px;
771
+
772
+ /* Right & Left Icon */
773
+ &:first-child {
774
+ margin-left: -4px;
775
+ margin-right: 4px;
776
+ }
777
+ }
778
+
779
+ /* Only Icon */
780
+ .stl-ui-button:not(:has(.stl-ui-button-label)):has(.stl-ui-button__icon:last-child):has(
781
+ .stl-ui-button__icon:first-child
782
+ ) {
783
+ width: var(--stl-ui-button-height);
784
+
785
+ .stl-ui-button__icon {
786
+ margin-left: -4px;
787
+ margin-right: -4px;
788
+ }
789
+ }
790
+
791
+ /* --- LINKS --- */
792
+
793
+ a.stl-ui-button {
794
+ text-decoration: none;
795
+ text-align: center;
796
+ }
797
+
798
+ .stl-ui-dropdown-button {
799
+ --stl-ui-dropdown-button-color: var(--stl-ui-foreground);
800
+ --stl-ui-dropdown-button-background-color: var(--stl-ui-card-background);
801
+ --stl-ui-dropdown-button-border-color: var(--stl-ui-border);
802
+ --stl-ui-dropdown-button-border-radius: var(--stl-ui-layout-border-radius-sml);
803
+ --stl-ui-dropdown-button-font-size: var(--stl-ui-type-scale-text-sm);
804
+
805
+ --stl-ui-dropdown-button-height: 32px;
806
+ --stl-ui-dropdown-button-padding: 8px 10px;
807
+ --stl-ui-dropdown-button-line-height: 100%;
808
+ --stl-ui-dropdown-button-font-weight: 500;
809
+
810
+ position: relative;
811
+ display: inline-flex;
812
+ align-items: center;
813
+
814
+ background-color: var(--stl-ui-dropdown-button-background-color);
815
+ border: 1px solid var(--stl-ui-dropdown-button-border-color);
816
+ border-radius: var(--stl-ui-dropdown-button-border-radius);
817
+ color: var(--stl-ui-dropdown-button-color);
818
+ gap: 0;
819
+ font-size: var(--stl-ui-dropdown-button-font-size);
820
+
821
+ .stl-ui-dropdown-button__button {
822
+ border: none;
823
+ background: none;
824
+ height: var(--stl-ui-dropdown-button-height);
825
+ padding: var(--stl-ui-dropdown-button-padding);
826
+ line-height: var(--stl-ui-dropdown-button-line-height);
827
+ font-weight: var(--stl-ui-dropdown-button-font-weight);
828
+ cursor: pointer;
829
+ display: flex;
830
+ align-items: center;
831
+ justify-content: center;
832
+
833
+ &:hover {
834
+ background-color: oklch(from var(--stl-ui-foreground) l c h / 0.05);
835
+ border-color: var(--stl-ui-border-emphasis);
836
+ }
837
+ }
838
+
839
+ .stl-ui-dropdown-button--action {
840
+ display: flex;
841
+ align-items: center;
842
+ gap: 8px;
843
+
844
+ &:hover {
845
+ background-color: oklch(from var(--stl-ui-foreground) l c h / 0.05);
846
+ border-color: var(--stl-ui-border-emphasis);
847
+ }
848
+
849
+ &.disabled {
850
+ cursor: not-allowed;
851
+ background-color: oklch(from var(--stl-ui-foreground) l c h / 0.05);
852
+ }
853
+ }
854
+
855
+ .stl-ui-dropdown-button__trigger {
856
+ border-left: 1px solid var(--stl-ui-border);
857
+ border-radius: 0;
858
+
859
+ &:hover {
860
+ background-color: oklch(from var(--stl-ui-foreground) l c h / 0.05);
861
+ border-color: var(--stl-ui-border-emphasis);
862
+ }
863
+ }
864
+
865
+ .stl-ui-dropdown-button__menu {
866
+ --stl-ui-dropdown-button__menu-background-color: var(--stl-ui-card-background);
867
+ --stl-ui-dropdown-button__menu-border-color: var(--stl-ui-border);
868
+ --stl-ui-dropdown-button__menu-box-shadow: var(--stl-ui-shadow-md);
869
+ --stl-ui-dropdown-button__menu-border-radius: var(--stl-ui-layout-border-radius-sml);
870
+
871
+ background-color: var(--stl-ui-dropdown-button__menu-background-color);
872
+ border: 1px solid var(--stl-ui-dropdown-button__menu-border-color);
873
+ box-shadow: var(--stl-ui-dropdown-button__menu-box-shadow);
874
+ border-radius: var(--stl-ui-dropdown-button__menu-border-radius);
875
+
876
+ position: absolute;
877
+ top: 100%;
878
+ right: 0;
879
+ margin-top: 4px;
880
+ z-index: 1000;
881
+ min-width: 100%;
882
+ padding: 4px;
883
+ display: none;
884
+
885
+ &[data-state='open'] {
886
+ display: block;
887
+ }
888
+ }
889
+
890
+ .stl-ui-dropdown-button__menu-item {
891
+ --stl-ui-dropdown-button__menu-item-border-radius: var(--stl-ui-dropdown-button-border-radius);
892
+ --stl-ui-dropdown-button__menu-item-height: var(--stl-ui-dropdown-button-height);
893
+ --stl-ui-dropdown-button__menu-item-line-height: var(--stl-ui-dropdown-button-line-height);
894
+ --stl-ui-dropdown-button__menu-item-hover-background-color: oklch(
895
+ from var(--stl-ui-foreground) l c h / 0.05
896
+ );
897
+
898
+ border-radius: var(--stl-ui-dropdown-button__menu-item-border-radius);
899
+ height: var(--stl-ui-dropdown-button__menu-item-height);
900
+ line-height: var(--stl-ui-dropdown-button__menu-item-line-height);
901
+
902
+ padding: 8px;
903
+ cursor: pointer;
904
+ display: flex;
905
+ align-items: center;
906
+ justify-content: space-between;
907
+ gap: 16px;
908
+
909
+ &:hover {
910
+ background-color: var(--stl-ui-dropdown-button__menu-item-hover-background-color);
911
+ }
912
+
913
+ .stl-ui-dropdown-button__menu-item-content {
914
+ display: flex;
915
+ align-items: center;
916
+ gap: 8px;
917
+ }
918
+
919
+ .stl-ui-dropdown-button__menu-item-text {
920
+ white-space: nowrap;
921
+ }
922
+
923
+ .stl-ui-dropdown-button__menu-item-text--subtle {
924
+ color: var(--stl-ui-foreground-muted);
925
+ }
926
+
927
+ strong {
928
+ color: var(--stl-ui-foreground);
929
+ font-weight: 500;
930
+ }
931
+
932
+ .stl-ui-dropdown-button__menu-item-icon {
933
+ display: flex;
934
+ align-items: center;
935
+ justify-content: center;
936
+ }
937
+
938
+ .stl-ui-dropdown-button__menu-item-external-link-icon {
939
+ --stl-ui-dropdown-button__menu-item-external-link-icon-color: oklch(
940
+ from var(--stl-ui-foreground) l c h / 0.25
941
+ );
942
+
943
+ svg {
944
+ color: var(--stl-ui-dropdown-button__menu-item-external-link-icon-color);
945
+ }
946
+ }
947
+ }
948
+
949
+ hr {
950
+ --stl-ui-dropdown-button__divider-height: 1px;
951
+ --stl-ui-dropdown-button__divider-color: var(--stl-ui-border);
952
+
953
+ height: var(--stl-ui-dropdown-button__divider-height);
954
+ background-color: var(--stl-ui-dropdown-button__divider-color);
955
+ border: none;
956
+
957
+ margin: 4px 0;
958
+ width: calc(100% + 8px);
959
+ transform: translateX(-4px);
960
+ }
961
+ }
962
+
963
+ .stl-ui-callout {
964
+ --stl-ui-callout-background-color: var(--stl-ui-muted-background);
965
+ --stl-ui-callout-border-color: var(--stl-ui-border);
966
+ --stl-ui-callout-accent-color: var(--stl-ui-foreground-muted);
967
+
968
+ border: 1px solid var(--stl-ui-callout-border-color);
969
+ background-color: var(--stl-ui-callout-background-color);
970
+ border-radius: var(--stl-ui-layout-border-radius);
971
+ padding: 12px;
972
+ line-height: var(--stl-ui-typography-line-height);
973
+ font-weight: 400;
974
+ font-size: var(--stl-ui-typography-text-body);
975
+
976
+ display: flex;
977
+ align-items: flex-start;
978
+ gap: 8px;
979
+ }
980
+
981
+ .stl-ui-callout--info {
982
+ --stl-ui-callout-background-color: var(--stl-ui-muted-background);
983
+ --stl-ui-callout-border-color: var(--stl-ui-border);
984
+ --stl-ui-callout-accent-color: var(--stl-ui-foreground-muted);
985
+ }
986
+
987
+ .stl-ui-callout--note {
988
+ --stl-ui-callout-background-color: var(--stl-ui-swatch-blue-faint);
989
+ --stl-ui-callout-border-color: var(--stl-ui-swatch-blue-muted);
990
+ --stl-ui-callout-accent-color: var(--stl-ui-swatch-blue-base);
991
+ }
992
+
993
+ .stl-ui-callout--tip {
994
+ --stl-ui-callout-background-color: var(--stl-ui-swatch-purple-faint);
995
+ --stl-ui-callout-border-color: var(--stl-ui-swatch-purple-muted);
996
+ --stl-ui-callout-accent-color: var(--stl-ui-swatch-purple-base);
997
+ }
998
+
999
+ .stl-ui-callout--success {
1000
+ --stl-ui-callout-background-color: var(--stl-ui-swatch-green-faint);
1001
+ --stl-ui-callout-border-color: var(--stl-ui-swatch-green-muted);
1002
+ --stl-ui-callout-accent-color: var(--stl-ui-swatch-green-base);
1003
+ }
1004
+
1005
+ .stl-ui-callout--warning {
1006
+ --stl-ui-callout-background-color: var(--stl-ui-swatch-yellow-faint);
1007
+ --stl-ui-callout-border-color: var(--stl-ui-swatch-yellow-muted);
1008
+ --stl-ui-callout-accent-color: var(--stl-ui-swatch-yellow-base);
1009
+ }
1010
+
1011
+ .stl-ui-callout--danger {
1012
+ --stl-ui-callout-background-color: var(--stl-ui-swatch-red-faint);
1013
+ --stl-ui-callout-border-color: var(--stl-ui-swatch-red-muted);
1014
+ --stl-ui-callout-accent-color: var(--stl-ui-swatch-red-base);
1015
+ }
1016
+
1017
+ .stl-ui-callout__icon {
1018
+ color: var(--stl-ui-callout-accent-color);
1019
+ flex-shrink: 0;
1020
+ width: 1em;
1021
+ height: 1em;
1022
+ margin: calc((1lh - 1em) / 2);
1023
+ }
1024
+
1025
+ .stl-ui-callout__content {
1026
+ flex: 1;
1027
+ margin-top: 0;
1028
+
1029
+ & > :first-child {
1030
+ margin-top: 0;
1031
+ }
1032
+ }
1033
+
1034
+ /* revert starlight details styles */
1035
+ @layer starlight.content {
1036
+ /* artificially increase specificity to outcompete selectors in the same layer whose styles we want to revert */
1037
+ .stl-ui-prose .sl-markdown-content.sl-markdown-content.sl-markdown-content {
1038
+ details,
1039
+ summary,
1040
+ summary::before,
1041
+ summary::marker {
1042
+ all: revert-layer;
1043
+ }
1044
+ }
1045
+ }
1046
+
1047
+ .stl-ui-accordion {
1048
+ --stl-ui-accordion-padding: 12px;
1049
+ --stl-ui-accordion-content-padding-bottom: 4px;
1050
+ --stl-ui-accordion-marker-size: 1em;
1051
+ --stl-ui-accordion-marker-margin: calc((1lh - var(--stl-ui-accordion-marker-size)) / 2);
1052
+ --stl-ui-accordion-row-gap: 8px;
1053
+ --stl-ui-accordion-summary-column-gap: 8px;
1054
+ --stl-ui-accordion-border-radius: var(--stl-ui-layout-border-radius);
1055
+ --stl-ui-accordion-hover-film-color: oklch(from var(--stl-ui-foreground) l c h / 0.03);
1056
+ /* left inset to make content line up with summary content (after chevron) */
1057
+ --stl-ui--internal--accordion-padding-start: calc(
1058
+ var(--stl-ui-accordion-padding) + var(--stl-ui-accordion-marker-size) +
1059
+ var(--stl-ui-accordion-marker-margin) * 2 + var(--stl-ui-accordion-summary-column-gap)
1060
+ );
1061
+
1062
+ background-color: var(--stl-ui-card-background);
1063
+ border: 1px solid var(--stl-ui-border);
1064
+ border-radius: var(--stl-ui-accordion-border-radius);
1065
+ font-size: var(--stl-ui-typography-text-body);
1066
+
1067
+ padding: var(--stl-ui-accordion-padding);
1068
+ /* indent content to line up with left edge of summary content */
1069
+ padding-inline-start: var(--stl-ui--internal--accordion-padding-start);
1070
+
1071
+ & > .stl-ui-accordion__summary {
1072
+ display: block;
1073
+ list-style: none;
1074
+
1075
+ /* summary extends to the edges of the element in order to increase click target */
1076
+ padding: var(--stl-ui-accordion-padding);
1077
+ padding-inline-start: var(--stl-ui--internal--accordion-padding-start);
1078
+ margin: calc(-1 * var(--stl-ui-accordion-padding));
1079
+ margin-inline-start: calc(-1 * var(--stl-ui--internal--accordion-padding-start));
1080
+
1081
+ cursor: pointer;
1082
+ font-weight: 500;
1083
+
1084
+ border-radius: var(--stl-ui-accordion-border-radius);
1085
+
1086
+ &::before {
1087
+ content: '';
1088
+ width: var(--stl-ui-accordion-marker-size);
1089
+ height: var(--stl-ui-accordion-marker-size);
1090
+ margin: var(--stl-ui-accordion-marker-margin);
1091
+ background-color: currentColor;
1092
+ display: block;
1093
+ position: absolute;
1094
+ --stl-ui-accordion--internal--marker-width: calc(
1095
+ var(--stl-ui-accordion-marker-size) + var(--stl-ui-accordion-marker-margin) * 2
1096
+ );
1097
+ --stl-ui-accordion--internal--summary-marker-transform: translateX(
1098
+ calc(
1099
+ -1 * var(--stl-ui-accordion--internal--marker-width) - var(--stl-ui-accordion-summary-column-gap)
1100
+ )
1101
+ );
1102
+ transform: var(--stl-ui-accordion--internal--summary-marker-transform);
1103
+
1104
+ --lucide-chevron-right: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNoZXZyb24tcmlnaHQtaWNvbiBsdWNpZGUtY2hldnJvbi1yaWdodCI+PHBhdGggZD0ibTkgMTggNi02LTYtNiIvPjwvc3ZnPg==');
1105
+ mask-image: var(--lucide-chevron-right);
1106
+ mask-size: contain;
1107
+ mask-repeat: no-repeat;
1108
+
1109
+ transition: transform 0.1s ease-out;
1110
+ }
1111
+
1112
+ & > :first-child {
1113
+ margin-top: 0;
1114
+ }
1115
+ }
1116
+
1117
+ &[open] {
1118
+ border-color: var(--stl-ui-border-emphasis);
1119
+ padding-bottom: calc(var(--stl-ui-accordion-padding) + var(--stl-ui-accordion-content-padding-bottom));
1120
+
1121
+ & > .stl-ui-accordion__summary {
1122
+ /* padding-bottom shouldn’t extend beyond the row gap while open, i.e. we shouldn’t be negative-margin-placing content overlapping summary */
1123
+ --stl-ui--internal--summary-padding-bottom: min(
1124
+ var(--stl-ui-accordion-padding),
1125
+ var(--stl-ui-accordion-row-gap)
1126
+ );
1127
+ padding-bottom: var(--stl-ui--internal--summary-padding-bottom);
1128
+ margin-bottom: calc(var(--stl-ui-accordion-row-gap) - var(--stl-ui--internal--summary-padding-bottom));
1129
+ border-bottom-left-radius: 0;
1130
+ border-bottom-right-radius: 0;
1131
+
1132
+ &::before {
1133
+ transform: var(--stl-ui-accordion--internal--summary-marker-transform) rotate(90deg);
1134
+ }
1135
+ }
1136
+ }
1137
+
1138
+ &:has(> .stl-ui-accordion__summary:hover) {
1139
+ background-image: linear-gradient(
1140
+ to bottom,
1141
+ var(--stl-ui-accordion-hover-film-color),
1142
+ var(--stl-ui-accordion-hover-film-color)
1143
+ );
1144
+ border-color: var(--stl-ui-border-emphasis);
1145
+ }
1146
+
1147
+ & > .stl-ui-accordion__summary + * {
1148
+ margin-top: 0;
1149
+ }
1150
+ }
1151
+
1152
+ .stl-ui-accordion-group {
1153
+ & > .stl-ui-accordion:has(+ .stl-ui-accordion) {
1154
+ border-bottom-left-radius: 0;
1155
+ border-bottom-right-radius: 0;
1156
+ & > .stl-ui-accordion__summary {
1157
+ border-bottom-left-radius: 0;
1158
+ border-bottom-right-radius: 0;
1159
+ }
1160
+ }
1161
+
1162
+ & > .stl-ui-accordion + .stl-ui-accordion {
1163
+ margin-top: 0;
1164
+ border-top-width: 0;
1165
+ border-top-left-radius: 0;
1166
+ border-top-right-radius: 0;
1167
+
1168
+ & > .stl-ui-accordion__summary {
1169
+ border-top-left-radius: 0;
1170
+ border-top-right-radius: 0;
1171
+ }
1172
+ }
1173
+
1174
+ .stl-ui-accordion:not(:is([open], :hover)) + .stl-ui-accordion:is([open], :hover) {
1175
+ border-top-width: 1px;
1176
+ margin-top: -1px;
1177
+ }
1178
+ }
1179
+
1180
+
1181
+