@stainless-api/docs-ui 0.1.0-beta.47 → 0.1.0-beta.49

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 (159) hide show
  1. package/dist/breadcrumbs-nSFZO5Gf.js +63 -0
  2. package/dist/component-DRO8kQSp.js +23 -0
  3. package/dist/{component-generics-F0_Dx7UT.js → component-generics-B6Fn47Mz.js} +1 -1
  4. package/dist/{component-generics-DrrwsjTH.d.ts → component-generics-COP53CRn.d.ts} +2 -2
  5. package/dist/component-generics-fyFHB6qA.d.ts +30 -0
  6. package/dist/components/MaskedInput.d.ts +1 -1
  7. package/dist/components/MaskedInput.js +1 -1
  8. package/dist/components/breadcrumbs.d.ts +1 -1
  9. package/dist/components/breadcrumbs.js +7 -13
  10. package/dist/components/icons.js +1 -1
  11. package/dist/components/index.d.ts +9 -10
  12. package/dist/components/index.js +16 -13
  13. package/dist/components/method.d.ts +1 -1
  14. package/dist/components/method.js +8 -13
  15. package/dist/components/overview.d.ts +1 -1
  16. package/dist/components/overview.js +9 -13
  17. package/dist/components/primitives.d.ts +1 -1
  18. package/dist/components/primitives.js +6 -13
  19. package/dist/components/properties.d.ts +1 -1
  20. package/dist/components/properties.js +7 -13
  21. package/dist/components/sdk.d.ts +1 -2
  22. package/dist/components/sdk.js +8 -13
  23. package/dist/components/sidebar.d.ts +1 -1
  24. package/dist/components/sidebar.js +9 -13
  25. package/dist/components/snippets.d.ts +2 -3
  26. package/dist/components/snippets.js +7 -13
  27. package/dist/components-D7M-BwNI.js +71 -0
  28. package/dist/contexts/component-generics.d.ts +1 -1
  29. package/dist/contexts/component-generics.js +1 -1
  30. package/dist/contexts/component-types.d.ts +10 -11
  31. package/dist/contexts/component.d.ts +13 -14
  32. package/dist/contexts/component.js +25 -13
  33. package/dist/contexts/docs.d.ts +1 -1
  34. package/dist/contexts/docs.js +1 -1
  35. package/dist/contexts/index.d.ts +16 -19
  36. package/dist/contexts/index.js +6 -14
  37. package/dist/contexts/markdown.d.ts +1 -1
  38. package/dist/contexts/markdown.js +2 -2
  39. package/dist/contexts/navigation.d.ts +1 -2
  40. package/dist/contexts/navigation.js +1 -1
  41. package/dist/contexts/use-components.d.ts +9 -10
  42. package/dist/contexts/use-components.js +2 -2
  43. package/dist/contexts-p3rRZDlM.js +39 -0
  44. package/dist/csharp-CDSxfCZE.js +283 -0
  45. package/dist/docs-yYrp-uzs.d.ts +47 -0
  46. package/dist/go-1c3S5ETL.js +303 -0
  47. package/dist/http-2QNWXH9t.js +330 -0
  48. package/dist/{index-CeFeLPGr.d.ts → index-BQpRynot.d.ts} +8 -8
  49. package/dist/index-CnilsjrJ.d.ts +274 -0
  50. package/dist/{index-CTSOZqei.d.ts → index-Ct0NcQUK.d.ts} +1 -1
  51. package/dist/{index-Bt01VI67.d.ts → index-D6NhcxHd.d.ts} +6 -7
  52. package/dist/index-LboM0f0c.d.ts +15 -0
  53. package/dist/index-avtZIGmX.d.ts +13 -0
  54. package/dist/index.d.ts +18 -20
  55. package/dist/index.js +27 -13
  56. package/dist/java-BbjF_oUI.js +403 -0
  57. package/dist/languages/csharp.d.ts +10 -11
  58. package/dist/languages/csharp.js +7 -13
  59. package/dist/languages/go.d.ts +10 -11
  60. package/dist/languages/go.js +7 -13
  61. package/dist/languages/http.d.ts +10 -11
  62. package/dist/languages/http.js +17 -13
  63. package/dist/languages/index.d.ts +10 -11
  64. package/dist/languages/index.js +24 -13
  65. package/dist/languages/java.d.ts +10 -11
  66. package/dist/languages/java.js +7 -13
  67. package/dist/languages/python.d.ts +10 -11
  68. package/dist/languages/python.js +7 -13
  69. package/dist/languages/ruby.d.ts +10 -11
  70. package/dist/languages/ruby.js +7 -13
  71. package/dist/languages/typescript.d.ts +10 -11
  72. package/dist/languages/typescript.js +7 -13
  73. package/dist/languages-BCYZjzuS.js +26 -0
  74. package/dist/markdown/index.d.ts +4 -4
  75. package/dist/markdown/index.js +103 -14
  76. package/dist/markdown/md.js +1 -1
  77. package/dist/markdown/printer.d.ts +2 -0
  78. package/dist/markdown/printer.js +28 -0
  79. package/dist/markdown/utils.d.ts +2 -3
  80. package/dist/markdown/utils.js +1 -1
  81. package/dist/{markdown-Bx-mQFEj.js → markdown-CxdeWgjV.js} +1 -1
  82. package/dist/markdown-DA2cRtlr.d.ts +22 -0
  83. package/dist/method-CE08mUME.js +115 -0
  84. package/dist/{navigation-Cg69h_9U.d.ts → navigation-BfAVGPgw.d.ts} +3 -3
  85. package/dist/navigation-CjBnMcop.d.ts +29 -0
  86. package/dist/overview-DeZSiqFa.d.ts +39 -0
  87. package/dist/overview-S2hUqPXA.js +139 -0
  88. package/dist/primitives-BIWfwN5L.js +258 -0
  89. package/dist/primitives-CbqXZ-5f.d.ts +97 -0
  90. package/dist/printer-DBw4S_Jn.d.ts +13 -0
  91. package/dist/printer-DVZVkqAr.d.ts +13 -0
  92. package/dist/printer-bNxiG6UB.js +74 -0
  93. package/dist/properties-jlGW3USi.js +131 -0
  94. package/dist/python-USOwFDv_.js +279 -0
  95. package/dist/routing-CMqh1cTZ.d.ts +54 -0
  96. package/dist/{routing-BGBmkDBL.js → routing-Wbb7YECB.js} +1 -1
  97. package/dist/routing.d.ts +1 -1
  98. package/dist/routing.js +1 -1
  99. package/dist/ruby-CSvGbSLe.js +387 -0
  100. package/dist/{sdk-Ck0IERc7.d.ts → sdk-BOwYR0k6.d.ts} +1 -1
  101. package/dist/sdk-CSCbbn3O.js +336 -0
  102. package/dist/sdk-CdhDsvo3.d.ts +118 -0
  103. package/dist/sidebar-CWyvCrJ0.js +81 -0
  104. package/dist/snippets-BQLXEIf6.js +161 -0
  105. package/dist/snippets-CbVFNmfq.d.ts +51 -0
  106. package/dist/{snippets-XTXit9Ya.d.ts → snippets-Wjo2dJNw.d.ts} +1 -1
  107. package/dist/spec.d.ts +3 -3
  108. package/dist/spec.js +2 -2
  109. package/dist/style.d.ts +1 -1
  110. package/dist/style.js +1 -1
  111. package/dist/styles/resets.css +2 -1
  112. package/dist/styles.css +1099 -1
  113. package/dist/typescript-DXG9psK3.js +449 -0
  114. package/dist/{use-components-BAHidYIO.js → use-components-RWQbviGq.js} +1 -1
  115. package/dist/{utils-CJElSUwc.d.ts → utils-CTGH5e8c.d.ts} +2 -2
  116. package/dist/utils-DNKOwa7D.d.ts +21 -0
  117. package/dist/{utils-0z34vxY4.js → utils-D_1AWSRX.js} +2 -2
  118. package/dist/utils.d.ts +1 -1
  119. package/dist/utils.js +1 -2
  120. package/package.json +6 -20
  121. package/dist/contexts/search.d.ts +0 -4
  122. package/dist/contexts/search.js +0 -15
  123. package/dist/contexts-D3ClFTt3.js +0 -4117
  124. package/dist/pagefind-BHm6c3fb.js +0 -15
  125. package/dist/search/index.d.ts +0 -26
  126. package/dist/search/index.js +0 -334
  127. package/dist/search/mcp.d.ts +0 -13
  128. package/dist/search/mcp.js +0 -45
  129. package/dist/search/providers/algolia.d.ts +0 -25
  130. package/dist/search/providers/algolia.js +0 -15
  131. package/dist/search/providers/fuse.d.ts +0 -18
  132. package/dist/search/providers/fuse.js +0 -30
  133. package/dist/search/providers/pagefind.d.ts +0 -7
  134. package/dist/search/providers/pagefind.js +0 -3
  135. package/dist/search/providers/walker.d.ts +0 -9
  136. package/dist/search/providers/walker.js +0 -34
  137. package/dist/search/types.d.ts +0 -3
  138. package/dist/search/types.js +0 -3
  139. package/dist/search-B9SJyFXg.d.ts +0 -21
  140. package/dist/types-D7Ipu1J2.d.ts +0 -91
  141. package/dist/types-mRzd9aqe.js +0 -35
  142. /package/dist/{breadcrumbs-Bg3nNgu9.d.ts → breadcrumbs-DEyC9k79.d.ts} +0 -0
  143. /package/dist/{chunk-BWfJHHBp.js → chunk-DRcLgZ1e.js} +0 -0
  144. /package/dist/{docs-DGpIHBGY.d.ts → docs-B8-nCRaa.d.ts} +0 -0
  145. /package/dist/{docs-CNvEp0VL.js → docs-CXqi26jB.js} +0 -0
  146. /package/dist/{icons-DzBceOQw.js → icons-Ckod9aod.js} +0 -0
  147. /package/dist/{markdown-COcowhve.d.ts → markdown-C8o8WrwG.d.ts} +0 -0
  148. /package/dist/{md-D5AxFoS4.js → md-oM2tUaCA.js} +0 -0
  149. /package/dist/{method-DI8ARQ3m.d.ts → method-B6eAtYl2.d.ts} +0 -0
  150. /package/dist/{navigation-bydkHNUW.js → navigation-C5TN0SgC.js} +0 -0
  151. /package/dist/{overview-Bv43Hf_w.d.ts → overview-CswoJHww.d.ts} +0 -0
  152. /package/dist/{primitives-Br-H_CYo.d.ts → primitives-Caj5rKBc.d.ts} +0 -0
  153. /package/dist/{properties-RPXKwEeY.d.ts → properties-BkUlpvU4.d.ts} +0 -0
  154. /package/dist/{routing-nN1nc0jx.d.ts → routing-Dhmv52Fd.d.ts} +0 -0
  155. /package/dist/{sidebar-b3y7VIbU.d.ts → sidebar-BXz93vSy.d.ts} +0 -0
  156. /package/dist/{style-D8hwSwrv.d.ts → style-D7RO5ymE.d.ts} +0 -0
  157. /package/dist/{style-0miv2y38.js → style-gnVEeXFj.js} +0 -0
  158. /package/dist/{utils-CiZXDoFR.js → utils-CqnL9Fc3.js} +0 -0
  159. /package/dist/{utils-BcWczffA.d.ts → utils-d8paVwKN.d.ts} +0 -0
package/dist/styles.css CHANGED
@@ -1,3 +1,1096 @@
1
+ /* Typography - Stainless */
2
+ @layer stl-ui.tokens {
3
+ :root {
4
+ --stl-typography-font: 'Geist', system-ui, sans-serif;
5
+ --stl-typography-font-mono: 'Geist Mono', ui-monospace, monospace;
6
+ --stl-typography-font-heading: var(--stl-typography-font);
7
+
8
+ --stl-typography-line-height: 1.5;
9
+ --stl-typography-line-height-heading: 1.2;
10
+
11
+ --stl-typography-text-body: var(--stl-typography-scale-base);
12
+ --stl-typography-text-body-sm: var(--stl-typography-scale-sm);
13
+ --stl-typography-text-body-xs: var(--stl-typography-scale-xs);
14
+
15
+ --stl-typography-text-code: max(0.875em, var(--stl-typography-scale-sm));
16
+
17
+ --stl-typography-text-h1: var(--stl-typography-scale-5xl);
18
+ --stl-typography-text-h2: var(--stl-typography-scale-4xl);
19
+ --stl-typography-text-h3: var(--stl-typography-scale-3xl);
20
+ --stl-typography-text-h4: var(--stl-typography-scale-2xl);
21
+ --stl-typography-text-h5: var(--stl-typography-scale-xl);
22
+
23
+ --stl-typography-scale-xs: 12px;
24
+ --stl-typography-scale-sm: 14px;
25
+ --stl-typography-scale-base: 16px;
26
+ --stl-typography-scale-lg: 18px;
27
+ --stl-typography-scale-xl: 20px;
28
+ --stl-typography-scale-2xl: 24px;
29
+ --stl-typography-scale-3xl: 29px;
30
+ --stl-typography-scale-4xl: 35px;
31
+ --stl-typography-scale-5xl: 42px;
32
+ --stl-typography-scale-6xl: 64px;
33
+
34
+ --stl-color-text-selection-foreground: /* unset by default; text colors are unchanged */;
35
+ --stl-color-text-selection-background: light-dark(
36
+ rgb(from var(--stl-color-text-selection) r g b / calc(alpha * 0.2)),
37
+ rgb(from var(--stl-color-text-selection) r g b / calc(alpha * 0.35))
38
+ );
39
+ }
40
+ }
41
+
42
+ /* Prose exists in its own sub-layer for easy reverting */
43
+ body {
44
+ font-family: var(--stl-typography-font);
45
+ font-feature-settings:
46
+ 'ss01' on,
47
+ 'ss03' on,
48
+ 'ss04' on,
49
+ 'ss06' on,
50
+ 'ss08' on;
51
+ }
52
+
53
+ .stl-ui-prose {
54
+ letter-spacing: -0.01em;
55
+ font-weight: 400;
56
+ line-height: var(--stl-typography-line-height);
57
+ font-size: var(--stl-typography-text-body);
58
+ color: var(--stl-color-foreground-reduced);
59
+
60
+ :where(.stl-ui-not-prose) {
61
+ letter-spacing: initial;
62
+ font-weight: initial;
63
+ line-height: initial;
64
+ font-size: initial;
65
+ color: initial;
66
+ }
67
+
68
+ :where(strong:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose strong) {
69
+ color: var(--stl-color-foreground);
70
+ }
71
+
72
+ :where(a:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose a) {
73
+ color: var(--stl-color-link-foreground);
74
+ text-decoration-color: rgb(from currentColor r g b / calc(alpha * var(--stl-opacity-level-040)));
75
+ transition: text-decoration-color 0.1s ease-out;
76
+ &:hover {
77
+ text-decoration-color: currentColor;
78
+ }
79
+ }
80
+
81
+ :where(h1, h2, h3, h4, h5, h6):where(:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose *) {
82
+ color: var(--stl-color-foreground);
83
+ font-weight: 500;
84
+ line-height: var(--stl-typography-line-height-heading);
85
+ font-family: var(--stl-typography-font-heading);
86
+ }
87
+
88
+ :where(h1:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose h1) {
89
+ /* Heading 1/Medium */
90
+ font-size: var(--stl-typography-text-h1);
91
+ letter-spacing: -0.03em;
92
+ margin-top: 64px;
93
+ }
94
+
95
+ :where(h2:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose h2) {
96
+ /* Heading 2/Medium */
97
+ font-size: var(--stl-typography-text-h2);
98
+ letter-spacing: -0.03em;
99
+ margin-top: 48px;
100
+ }
101
+
102
+ :where(h3:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose h3) {
103
+ /* Heading 3/Medium */
104
+ font-size: var(--stl-typography-text-h3);
105
+ letter-spacing: -0.02em;
106
+ margin-top: 40px;
107
+ }
108
+
109
+ :where(h4:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose h4) {
110
+ /* Heading 4/Medium */
111
+ font-size: var(--stl-typography-text-h4);
112
+ letter-spacing: -0.02em;
113
+ margin-top: 32px;
114
+ }
115
+
116
+ :where(h5:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose h5) {
117
+ /* Heading 5/Medium */
118
+ font-size: var(--stl-typography-text-h5);
119
+ letter-spacing: -0.02em;
120
+ margin-top: 24px;
121
+ }
122
+
123
+ :where(li:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose li) {
124
+ &:where(:not(:last-child)) {
125
+ margin-bottom: 8px;
126
+ }
127
+ }
128
+
129
+ :where(
130
+ pre:not(.stl-ui-not-prose *, .expressive-code *),
131
+ .stl-ui-not-prose .stl-ui-prose pre:not(.expressive-code *)
132
+ ) {
133
+ padding: 12px 20px;
134
+ border-radius: var(--stl-ui-layout-border-radius-sml);
135
+ border: 1px solid var(--stl-color-border-faint);
136
+ background-color: var(--stl-color-faint-background);
137
+ overflow: scroll;
138
+ margin-bottom: 1rem;
139
+ }
140
+
141
+ :where(ol, ul) {
142
+ &:where(:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose *) {
143
+ padding-left: 26px;
144
+ }
145
+ }
146
+
147
+ :where(ol, ul, aside, img, figure, details):where(
148
+ :not(.stl-ui-not-prose *),
149
+ .stl-ui-not-prose .stl-ui-prose *
150
+ ) {
151
+ margin-top: 16px;
152
+ }
153
+
154
+ /* all code (inline + block) */
155
+ :where(code):where(:not(.stl-ui-not-prose *), .stl-ui-not-prose .stl-ui-prose *) {
156
+ font-family: var(--stl-typography-font-mono);
157
+ font-feature-settings:
158
+ 'ss01' on,
159
+ 'ss03' on,
160
+ 'ss04' on,
161
+ 'ss06' on;
162
+
163
+ font-size: var(--stl-typography-text-code);
164
+ font-weight: inherit;
165
+ letter-spacing: normal;
166
+
167
+ /* inline code */
168
+ &:where(:not(pre > &)) {
169
+ color: var(--stl-color-foreground);
170
+ padding: 0 0.2em;
171
+ background-color: rgb(from var(--stl-color-foreground) r g b / 0.1);
172
+ border-radius: 0.2em;
173
+ }
174
+
175
+ /* code blocks */
176
+ &:where(pre > &) {
177
+ font-size: var(--stl-typography-text-body-sm);
178
+ }
179
+ }
180
+ }
181
+
182
+ /* _direct_ children of stl-ui-prose should get a margin-top by default for spacing. */
183
+ :where(.stl-ui-prose, .stl-ui-prose > .sl-markdown-content) > :where(:not(:first-child)) {
184
+ margin-top: 16px;
185
+ }
186
+
187
+ @layer starlight.content {
188
+ .stl-ui-prose .sl-markdown-content {
189
+ a,
190
+ a:hover {
191
+ color: revert-layer;
192
+ }
193
+ }
194
+ }
195
+
196
+ ::selection {
197
+ background-color: var(--stl-color-text-selection-background);
198
+ color: var(--stl-color-text-selection-foreground);
199
+ }
200
+
201
+ @layer stl-ui.tokens {
202
+ /* Layout - Stainless */
203
+ :root {
204
+ --stl-ui-layout-border-radius-xs: 4px;
205
+ --stl-ui-layout-border-radius-sml: 8px;
206
+ --stl-ui-layout-border-radius: 12px;
207
+ --stl-ui-layout-border-radius-med: 16px;
208
+ --stl-ui-layout-border-radius-max: 9999px;
209
+ --stl-ui-left-content-indent: 24px;
210
+
211
+ --stl-ui-page-padding-inline: 20px;
212
+ }
213
+ }
214
+
215
+ /* 1. Base colors */
216
+ @layer stl-ui.tokens {
217
+ :root {
218
+ --stl-opacity-level-080: 0.80;
219
+ --stl-opacity-level-040: 0.40;
220
+ --stl-opacity-level-016: 0.16;
221
+ --stl-opacity-level-008: 0.08;
222
+ --stl-opacity-level-004: 0.04;
223
+ /* background */
224
+ --stl-color-background: light-dark(rgb(255 255 255), rgb(10 10 10));
225
+ --stl-color-background-hover: light-dark(rgb(from var(--stl-color-foreground) r g b/calc(alpha * var(--stl-opacity-level-004))), rgb(from var(--stl-color-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))));
226
+ /* background shades */
227
+ /* muted background */
228
+ --stl-color-muted-background: light-dark(rgb(from var(--stl-color-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
229
+ --stl-color-muted-background-hover: rgb(from var(--stl-color-muted-background) r g b/calc(alpha * 2));
230
+ /* faint background */
231
+ --stl-color-faint-background: rgb(from var(--stl-color-foreground) r g b/calc(alpha * var(--stl-opacity-level-004)));
232
+ --stl-color-faint-background-hover: rgb(from var(--stl-color-faint-background) r g b/calc(alpha * 2));
233
+ /* ui elements like cards and buttons match --stl-color-background in light mode, but have a slight tint in dark mode */
234
+ --stl-color-ui-background: light-dark(
235
+ var(--stl-color-background),
236
+ rgb(from var(--stl-color-foreground) r g b/calc(alpha * var(--stl-opacity-level-004)))
237
+ );
238
+ --stl-color-ui-background-hover: light-dark(
239
+ var(--stl-color-background-hover),
240
+ rgb(from var(--stl-color-ui-background) r g b/calc(alpha * 2))
241
+ );
242
+ /* foreground */
243
+ --stl-color-foreground: light-dark(rgb(38 38 38), rgb(245 245 245));
244
+ --stl-color-foreground-reduced: rgb(from var(--stl-color-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
245
+ --stl-color-foreground-muted: rgb(from var(--stl-color-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
246
+ /* inverse */
247
+ --stl-color-inverse-background: var(--stl-color-foreground);
248
+ --stl-color-inverse-background-hover: rgb(from var(--stl-color-inverse-background) r g b/calc(alpha * 0.9));
249
+ --stl-color-inverse-foreground: var(--stl-color-background);
250
+ /* default border (“foreground border”) */
251
+ --stl-color-border: rgb(from var(--stl-color-foreground) r g b/calc(alpha * var(--stl-opacity-level-016)));
252
+ --stl-color-border-faint: rgb(from var(--stl-color-border) r g b/calc(alpha * 0.5));
253
+ --stl-color-border-strong: rgb(from var(--stl-color-border) r g b/calc(alpha * 2.5));
254
+ }
255
+ }
256
+ /* 2. Color palettes (accent, red, green, etc) */
257
+ @layer stl-ui.tokens {
258
+ :root {
259
+ /* accent */
260
+ --stl-color-accent: light-dark(#155dfc, #2b7fff);
261
+ --stl-color-accent-foreground: var(--stl-color-accent);
262
+ --stl-color-accent-foreground-reduced: rgb(from var(--stl-color-accent-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
263
+ --stl-color-accent-foreground-muted: rgb(from var(--stl-color-accent-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
264
+ --stl-color-accent-muted-background: light-dark(rgb(from var(--stl-color-accent-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-accent-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
265
+ --stl-color-accent-muted-background-hover: rgb(from var(--stl-color-accent-muted-background) r g b/calc(alpha * 2));
266
+ --stl-color-accent-border: light-dark(rgb(from var(--stl-color-accent) r g b/calc(alpha * var(--stl-opacity-level-016))), rgb(from var(--stl-color-accent) r g b/calc(alpha * calc(var(--stl-opacity-level-016) * 1.5))));
267
+ --stl-color-accent-border-faint: rgb(from var(--stl-color-accent-border) r g b/calc(alpha * 0.5));
268
+ --stl-color-accent-border-strong: var(--stl-color-accent);
269
+ --stl-color-accent-inverse-background: var(--stl-color-accent);
270
+ --stl-color-accent-inverse-background-hover: rgb(from var(--stl-color-accent) r g b/calc(alpha * var(--stl-opacity-level-080)));
271
+ --stl-color-accent-inverse-foreground: rgb(255, 255, 255);
272
+ /* red */
273
+ --stl-color-red: light-dark(#d01e22, #e34041);
274
+ --stl-color-red-foreground: var(--stl-color-red);
275
+ --stl-color-red-foreground-reduced: rgb(from var(--stl-color-red-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
276
+ --stl-color-red-foreground-muted: rgb(from var(--stl-color-red-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
277
+ --stl-color-red-muted-background: light-dark(rgb(from var(--stl-color-red-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-red-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
278
+ --stl-color-red-muted-background-hover: rgb(from var(--stl-color-red-muted-background) r g b/calc(alpha * 2));
279
+ --stl-color-red-border: light-dark(rgb(from var(--stl-color-red) r g b/calc(alpha * var(--stl-opacity-level-016))), rgb(from var(--stl-color-red) r g b/calc(alpha * calc(var(--stl-opacity-level-016) * 1.5))));
280
+ --stl-color-red-border-faint: rgb(from var(--stl-color-red-border) r g b/calc(alpha * 0.5));
281
+ --stl-color-red-border-strong: var(--stl-color-red);
282
+ --stl-color-red-inverse-background: var(--stl-color-red);
283
+ --stl-color-red-inverse-background-hover: rgb(from var(--stl-color-red) r g b/calc(alpha * var(--stl-opacity-level-080)));
284
+ --stl-color-red-inverse-foreground: rgb(255, 255, 255);
285
+ /* green */
286
+ --stl-color-green: light-dark(#16a34a, #22c55e);
287
+ --stl-color-green-foreground: var(--stl-color-green);
288
+ --stl-color-green-foreground-reduced: rgb(from var(--stl-color-green-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
289
+ --stl-color-green-foreground-muted: rgb(from var(--stl-color-green-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
290
+ --stl-color-green-muted-background: light-dark(rgb(from var(--stl-color-green-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-green-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
291
+ --stl-color-green-muted-background-hover: rgb(from var(--stl-color-green-muted-background) r g b/calc(alpha * 2));
292
+ --stl-color-green-border: light-dark(rgb(from var(--stl-color-green) r g b/calc(alpha * var(--stl-opacity-level-016))), rgb(from var(--stl-color-green) r g b/calc(alpha * calc(var(--stl-opacity-level-016) * 1.5))));
293
+ --stl-color-green-border-faint: rgb(from var(--stl-color-green-border) r g b/calc(alpha * 0.5));
294
+ --stl-color-green-border-strong: var(--stl-color-green);
295
+ --stl-color-green-inverse-background: var(--stl-color-green);
296
+ --stl-color-green-inverse-background-hover: rgb(from var(--stl-color-green) r g b/calc(alpha * var(--stl-opacity-level-080)));
297
+ --stl-color-green-inverse-foreground: rgb(255, 255, 255);
298
+ /* blue */
299
+ --stl-color-blue: light-dark(#155dfc, #2b7fff);
300
+ --stl-color-blue-foreground: var(--stl-color-blue);
301
+ --stl-color-blue-foreground-reduced: rgb(from var(--stl-color-blue-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
302
+ --stl-color-blue-foreground-muted: rgb(from var(--stl-color-blue-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
303
+ --stl-color-blue-muted-background: light-dark(rgb(from var(--stl-color-blue-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-blue-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
304
+ --stl-color-blue-muted-background-hover: rgb(from var(--stl-color-blue-muted-background) r g b/calc(alpha * 2));
305
+ --stl-color-blue-border: light-dark(rgb(from var(--stl-color-blue) r g b/calc(alpha * var(--stl-opacity-level-016))), rgb(from var(--stl-color-blue) r g b/calc(alpha * calc(var(--stl-opacity-level-016) * 1.5))));
306
+ --stl-color-blue-border-faint: rgb(from var(--stl-color-blue-border) r g b/calc(alpha * 0.5));
307
+ --stl-color-blue-border-strong: var(--stl-color-blue);
308
+ --stl-color-blue-inverse-background: var(--stl-color-blue);
309
+ --stl-color-blue-inverse-background-hover: rgb(from var(--stl-color-blue) r g b/calc(alpha * var(--stl-opacity-level-080)));
310
+ --stl-color-blue-inverse-foreground: rgb(255, 255, 255);
311
+ /* yellow */
312
+ --stl-color-yellow: light-dark(#ca8a04, #eab308);
313
+ --stl-color-yellow-foreground: var(--stl-color-yellow);
314
+ --stl-color-yellow-foreground-reduced: rgb(from var(--stl-color-yellow-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
315
+ --stl-color-yellow-foreground-muted: rgb(from var(--stl-color-yellow-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
316
+ --stl-color-yellow-muted-background: light-dark(rgb(from var(--stl-color-yellow-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-yellow-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
317
+ --stl-color-yellow-muted-background-hover: rgb(from var(--stl-color-yellow-muted-background) r g b/calc(alpha * 2));
318
+ --stl-color-yellow-border: light-dark(rgb(from var(--stl-color-yellow) r g b/calc(alpha * var(--stl-opacity-level-016))), rgb(from var(--stl-color-yellow) r g b/calc(alpha * calc(var(--stl-opacity-level-016) * 1.5))));
319
+ --stl-color-yellow-border-faint: rgb(from var(--stl-color-yellow-border) r g b/calc(alpha * 0.5));
320
+ --stl-color-yellow-border-strong: var(--stl-color-yellow);
321
+ --stl-color-yellow-inverse-background: var(--stl-color-yellow);
322
+ --stl-color-yellow-inverse-background-hover: rgb(from var(--stl-color-yellow) r g b/calc(alpha * var(--stl-opacity-level-080)));
323
+ --stl-color-yellow-inverse-foreground: rgb(255, 255, 255);
324
+ /* orange */
325
+ --stl-color-orange: light-dark(#ea580c, #f97316);
326
+ --stl-color-orange-foreground: var(--stl-color-orange);
327
+ --stl-color-orange-foreground-reduced: rgb(from var(--stl-color-orange-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
328
+ --stl-color-orange-foreground-muted: rgb(from var(--stl-color-orange-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
329
+ --stl-color-orange-muted-background: light-dark(rgb(from var(--stl-color-orange-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-orange-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
330
+ --stl-color-orange-muted-background-hover: rgb(from var(--stl-color-orange-muted-background) r g b/calc(alpha * 2));
331
+ --stl-color-orange-border: light-dark(rgb(from var(--stl-color-orange) r g b/calc(alpha * var(--stl-opacity-level-016))), rgb(from var(--stl-color-orange) r g b/calc(alpha * calc(var(--stl-opacity-level-016) * 1.5))));
332
+ --stl-color-orange-border-faint: rgb(from var(--stl-color-orange-border) r g b/calc(alpha * 0.5));
333
+ --stl-color-orange-border-strong: var(--stl-color-orange);
334
+ --stl-color-orange-inverse-background: var(--stl-color-orange);
335
+ --stl-color-orange-inverse-background-hover: rgb(from var(--stl-color-orange) r g b/calc(alpha * var(--stl-opacity-level-080)));
336
+ --stl-color-orange-inverse-foreground: rgb(255, 255, 255);
337
+ /* purple */
338
+ --stl-color-purple: light-dark(#9333ea, #a855f7);
339
+ --stl-color-purple-foreground: var(--stl-color-purple);
340
+ --stl-color-purple-foreground-reduced: rgb(from var(--stl-color-purple-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
341
+ --stl-color-purple-foreground-muted: rgb(from var(--stl-color-purple-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
342
+ --stl-color-purple-muted-background: light-dark(rgb(from var(--stl-color-purple-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-purple-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
343
+ --stl-color-purple-muted-background-hover: rgb(from var(--stl-color-purple-muted-background) r g b/calc(alpha * 2));
344
+ --stl-color-purple-border: light-dark(rgb(from var(--stl-color-purple) r g b/calc(alpha * var(--stl-opacity-level-016))), rgb(from var(--stl-color-purple) r g b/calc(alpha * calc(var(--stl-opacity-level-016) * 1.5))));
345
+ --stl-color-purple-border-faint: rgb(from var(--stl-color-purple-border) r g b/calc(alpha * 0.5));
346
+ --stl-color-purple-border-strong: var(--stl-color-purple);
347
+ --stl-color-purple-inverse-background: var(--stl-color-purple);
348
+ --stl-color-purple-inverse-background-hover: rgb(from var(--stl-color-purple) r g b/calc(alpha * var(--stl-opacity-level-080)));
349
+ --stl-color-purple-inverse-foreground: rgb(255, 255, 255);
350
+ /* cyan */
351
+ --stl-color-cyan: light-dark(#0891b2, #06b6d4);
352
+ --stl-color-cyan-foreground: var(--stl-color-cyan);
353
+ --stl-color-cyan-foreground-reduced: rgb(from var(--stl-color-cyan-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
354
+ --stl-color-cyan-foreground-muted: rgb(from var(--stl-color-cyan-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
355
+ --stl-color-cyan-muted-background: light-dark(rgb(from var(--stl-color-cyan-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-cyan-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
356
+ --stl-color-cyan-muted-background-hover: rgb(from var(--stl-color-cyan-muted-background) r g b/calc(alpha * 2));
357
+ --stl-color-cyan-border: light-dark(rgb(from var(--stl-color-cyan) r g b/calc(alpha * var(--stl-opacity-level-016))), rgb(from var(--stl-color-cyan) r g b/calc(alpha * calc(var(--stl-opacity-level-016) * 1.5))));
358
+ --stl-color-cyan-border-faint: rgb(from var(--stl-color-cyan-border) r g b/calc(alpha * 0.5));
359
+ --stl-color-cyan-border-strong: var(--stl-color-cyan);
360
+ --stl-color-cyan-inverse-background: var(--stl-color-cyan);
361
+ --stl-color-cyan-inverse-background-hover: rgb(from var(--stl-color-cyan) r g b/calc(alpha * var(--stl-opacity-level-080)));
362
+ --stl-color-cyan-inverse-foreground: rgb(255, 255, 255);
363
+ /* pink */
364
+ --stl-color-pink: light-dark(#ec4899, #ec4899);
365
+ --stl-color-pink-foreground: var(--stl-color-pink);
366
+ --stl-color-pink-foreground-reduced: rgb(from var(--stl-color-pink-foreground) r g b/calc(alpha * var(--stl-opacity-level-080)));
367
+ --stl-color-pink-foreground-muted: rgb(from var(--stl-color-pink-foreground) r g b/calc(alpha * var(--stl-opacity-level-040)));
368
+ --stl-color-pink-muted-background: light-dark(rgb(from var(--stl-color-pink-foreground) r g b/calc(alpha * var(--stl-opacity-level-008))), rgb(from var(--stl-color-pink-foreground) r g b/calc(alpha * var(--stl-opacity-level-016))));
369
+ --stl-color-pink-muted-background-hover: rgb(from var(--stl-color-pink-muted-background) r g b/calc(alpha * 2));
370
+ --stl-color-pink-border: light-dark(rgb(from var(--stl-color-pink) r g b/calc(alpha * var(--stl-opacity-level-016))), rgb(from var(--stl-color-pink) r g b/calc(alpha * calc(var(--stl-opacity-level-016) * 1.5))));
371
+ --stl-color-pink-border-faint: rgb(from var(--stl-color-pink-border) r g b/calc(alpha * 0.5));
372
+ --stl-color-pink-border-strong: var(--stl-color-pink);
373
+ --stl-color-pink-inverse-background: var(--stl-color-pink);
374
+ --stl-color-pink-inverse-background-hover: rgb(from var(--stl-color-pink) r g b/calc(alpha * var(--stl-opacity-level-080)));
375
+ --stl-color-pink-inverse-foreground: rgb(255, 255, 255);
376
+ }
377
+ :root[data-theme=dark],
378
+ .stl-theme-dark {
379
+ color-scheme: dark;
380
+ background: var(--stl-color-background);
381
+ color: var(--stl-color-foreground);
382
+ }
383
+ :root[data-theme=light],
384
+ .stl-theme-light {
385
+ color-scheme: light;
386
+ background: var(--stl-color-background);
387
+ color: var(--stl-color-foreground);
388
+ }
389
+ }
390
+ /* Semantic color roles */
391
+ @layer stl-ui.tokens {
392
+ :root {
393
+ --stl-color-link-foreground: var(--stl-color-accent-foreground);
394
+ --stl-color-text-selection: var(--stl-color-accent-inverse-background);
395
+ }
396
+ }
397
+ .stl-ui-button {
398
+ height: 32px;
399
+ padding: 8px 10px;
400
+ border-radius: var(--stl-ui-layout-border-radius-sml);
401
+ line-height: 150%;
402
+ font-weight: 500;
403
+ font-size: var(--stl-typography-text-body-sm);
404
+ font-family: var(--stl-typography-font);
405
+
406
+ cursor: pointer;
407
+ display: inline-flex;
408
+ align-items: center;
409
+ justify-content: center;
410
+ gap: 2px;
411
+ white-space: nowrap;
412
+ flex-shrink: 0;
413
+
414
+ border: 1px solid transparent;
415
+ color: var(--stl-color-inverse-foreground);
416
+ background-color: var(--stl-color-inverse-background);
417
+
418
+ &:hover {
419
+ background-color: var(--stl-color-inverse-background-hover);
420
+ }
421
+
422
+ &[hidden] {
423
+ display: none;
424
+ }
425
+ }
426
+
427
+ /* --- COLOR VARIANTS --- */
428
+
429
+ .stl-ui-button--accent {
430
+ color: var(--stl-color-accent-inverse-foreground);
431
+ background-color: var(--stl-color-accent-inverse-background);
432
+ &:hover {
433
+ background-color: var(--stl-color-accent-inverse-background-hover);
434
+ }
435
+ }
436
+
437
+ .stl-ui-button--accent-muted {
438
+ color: var(--stl-color-accent-foreground);
439
+ background-color: var(--stl-color-accent-muted-background);
440
+ &:hover {
441
+ background-color: var(--stl-color-accent-muted-background-hover);
442
+ }
443
+ &.stl-ui-button--with-border {
444
+ border-color: var(--stl-color-accent-border);
445
+ }
446
+ }
447
+
448
+ .stl-ui-button--muted {
449
+ color: var(--stl-color-foreground);
450
+ background-color: var(--stl-color-muted-background);
451
+ &:hover {
452
+ background-color: var(--stl-color-muted-background-hover);
453
+ }
454
+ &.stl-ui-button--with-border {
455
+ border-color: var(--stl-color-border);
456
+ }
457
+ }
458
+
459
+ .stl-ui-button--outline {
460
+ color: var(--stl-color-foreground);
461
+ background-color: var(--stl-color-ui-background);
462
+ border-color: var(--stl-color-border);
463
+ &:hover {
464
+ background:
465
+ linear-gradient(var(--stl-color-ui-background-hover), var(--stl-color-ui-background-hover)),
466
+ linear-gradient(var(--stl-color-ui-background), var(--stl-color-ui-background));
467
+ }
468
+ }
469
+
470
+ .stl-ui-button--ghost {
471
+ color: var(--stl-color-foreground);
472
+ background-color: transparent;
473
+ &:hover {
474
+ background-color: var(--stl-color-background-hover);
475
+ }
476
+ &.stl-ui-button--with-border {
477
+ border-color: var(--stl-color-border);
478
+ }
479
+ }
480
+
481
+ .stl-ui-button--success {
482
+ color: var(--stl-color-green-inverse-foreground);
483
+ background-color: var(--stl-color-green-inverse-background);
484
+ &:hover {
485
+ background-color: var(--stl-color-green-inverse-background-hover);
486
+ }
487
+ }
488
+
489
+ .stl-ui-button--destructive {
490
+ color: var(--stl-color-red-inverse-foreground);
491
+ background-color: var(--stl-color-red-inverse-background);
492
+ &:hover {
493
+ background-color: var(--stl-color-red-inverse-background-hover);
494
+ }
495
+ }
496
+
497
+ /* --- LOADING STATE --- */
498
+
499
+ /**
500
+ * When loading, set aria-disabled="true" and aria-label="<Doing action...>"
501
+ * Don't use disabled, it loses focus.
502
+ */
503
+
504
+ .stl-ui-button--loading {
505
+ -webkit-text-fill-color: transparent;
506
+ position: relative;
507
+
508
+ & * {
509
+ color: transparent;
510
+ }
511
+
512
+ &::before {
513
+ content: '';
514
+ animation: stl-ui-button--loading-spin 1s linear infinite;
515
+ position: absolute;
516
+ width: 16px;
517
+ height: 16px;
518
+ mask-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWxvYWRlci1jaXJjbGUtaWNvbiBsdWNpZGUtbG9hZGVyLWNpcmNsZSI+PHBhdGggZD0iTTIxIDEyYTkgOSAwIDEgMS02LjIxOS04LjU2Ii8+PC9zdmc+');
519
+ mask-size: contain;
520
+ mask-position: center;
521
+ mask-repeat: no-repeat;
522
+ background: currentColor;
523
+ }
524
+ }
525
+
526
+ @keyframes stl-ui-button--loading-spin {
527
+ to {
528
+ transform: rotate(360deg);
529
+ }
530
+ }
531
+
532
+ /* --- SIZE VARIANTS --- */
533
+ .stl-ui-button--size-sm {
534
+ height: 24px;
535
+ padding: 0 6px;
536
+ border-radius: var(--stl-ui-layout-border-radius-xs);
537
+ line-height: 100%;
538
+ font-weight: 500;
539
+ font-size: var(--stl-typography-text-body-xs);
540
+ }
541
+
542
+ .stl-ui-button--size-lg {
543
+ height: 40px;
544
+ padding: 8px 14px;
545
+ border-radius: var(--stl-ui-layout-border-radius);
546
+ line-height: 150%;
547
+ font-weight: 500;
548
+ font-size: var(--stl-typography-text-body);
549
+ }
550
+
551
+ /* --- ICONS --- */
552
+ .stl-ui-button__icon {
553
+ flex-shrink: 0;
554
+ display: flex;
555
+ align-items: center;
556
+ justify-content: center;
557
+
558
+ svg {
559
+ margin-top: 0;
560
+ }
561
+ }
562
+
563
+ /* Left Icon */
564
+ .stl-ui-button:has(.stl-ui-button__icon:first-child) .stl-ui-button__icon {
565
+ margin-left: -4px;
566
+ margin-right: 4px;
567
+ }
568
+
569
+ .stl-ui-button:has(.stl-ui-button__icon:last-child) .stl-ui-button__icon {
570
+ /* Right Icon */
571
+ margin-right: -4px;
572
+ margin-left: 4px;
573
+
574
+ /* Right & Left Icon */
575
+ &:first-child {
576
+ margin-left: -4px;
577
+ margin-right: 4px;
578
+ }
579
+ }
580
+
581
+ /* Only Icon */
582
+ .stl-ui-button:not(:has(.stl-ui-button-label)):has(.stl-ui-button__icon:last-child):has(
583
+ .stl-ui-button__icon:first-child
584
+ ) {
585
+ aspect-ratio: 1 / 1;
586
+
587
+ .stl-ui-button__icon {
588
+ margin-left: -4px;
589
+ margin-right: -4px;
590
+ }
591
+ }
592
+
593
+ /* --- LINKS --- */
594
+
595
+ a.stl-ui-button {
596
+ text-decoration: none;
597
+ text-align: center;
598
+ }
599
+
600
+ .stl-ui-dropdown {
601
+ --stl-ui-dropdown-button-color: var(--stl-color-foreground);
602
+ --stl-ui-dropdown-button-background-color: var(--stl-color-ui-background);
603
+ --stl-ui-dropdown-button-border-color: var(--stl-color-border);
604
+
605
+ --stl-ui-dropdown-button-border-radius: var(--stl-ui-layout-border-radius-sml);
606
+ --stl-ui-dropdown-button-font-size: var(--stl-typography-scale-sm);
607
+
608
+ --stl-ui-dropdown-button-height: 32px;
609
+ --stl-ui-dropdown-button-padding: 0 10px;
610
+ --stl-ui-dropdown-button-line-height: 100%;
611
+ --stl-ui-dropdown-button-font-weight: 500;
612
+
613
+ position: relative;
614
+ display: inline-flex;
615
+ align-items: center;
616
+
617
+ color: var(--stl-ui-dropdown-button-color);
618
+ gap: 0;
619
+ font-size: var(--stl-ui-dropdown-button-font-size);
620
+
621
+ hr {
622
+ --stl-ui-dropdown-button__divider-height: 1px;
623
+ --stl-ui-dropdown-button__divider-color: var(--stl-color-border);
624
+
625
+ height: var(--stl-ui-dropdown-button__divider-height);
626
+ background-color: var(--stl-ui-dropdown-button__divider-color);
627
+ border: none;
628
+
629
+ margin: 4px 0;
630
+ width: calc(100% + 8px);
631
+ transform: translateX(-4px);
632
+ }
633
+
634
+ .stl-ui-dropdown__button {
635
+ background-color: var(--stl-ui-dropdown-button-background-color);
636
+
637
+ border: 1px solid var(--stl-ui-dropdown-button-border-color);
638
+ border-radius: var(--stl-ui-dropdown-button-border-radius);
639
+ height: var(--stl-ui-dropdown-button-height);
640
+ padding: var(--stl-ui-dropdown-button-padding);
641
+ line-height: var(--stl-ui-dropdown-button-line-height);
642
+ font-weight: var(--stl-ui-dropdown-button-font-weight);
643
+ cursor: pointer;
644
+ display: flex;
645
+ align-items: center;
646
+ justify-content: center;
647
+ color: inherit;
648
+
649
+ &:focus {
650
+ outline: 1px auto Highlight;
651
+ }
652
+
653
+ &:hover {
654
+ background-color: var(--stl-color-ui-background-hover);
655
+ }
656
+
657
+ .stl-ui-dropdown__trigger-icon {
658
+ margin-right: -4px;
659
+ margin-left: 4px;
660
+ display: flex;
661
+ align-items: center;
662
+ justify-content: center;
663
+ }
664
+ }
665
+
666
+ .stl-ui-dropdown__icon {
667
+ display: flex;
668
+ align-items: center;
669
+ justify-content: center;
670
+
671
+ svg {
672
+ width: 16px;
673
+ height: 16px;
674
+ }
675
+ }
676
+
677
+ /**
678
+ * Dropdown Button
679
+ */
680
+ .stl-ui-dropdown-button--action {
681
+ display: flex;
682
+ align-items: center;
683
+ gap: 8px;
684
+ border-top-right-radius: 0;
685
+ border-bottom-right-radius: 0;
686
+ border-right-width: 0;
687
+
688
+ &:hover {
689
+ background-color: var(--stl-color-ui-background-hover);
690
+ z-index: 1;
691
+ border-right-width: 1px;
692
+ & + .stl-ui-dropdown-button__trigger {
693
+ border-left-width: 0;
694
+ }
695
+ }
696
+
697
+ &.disabled {
698
+ cursor: not-allowed;
699
+ background-color: var(--stl-color-ui-background);
700
+ }
701
+ }
702
+
703
+ .stl-ui-dropdown-button__trigger {
704
+ border-radius: 0;
705
+ border-top-right-radius: var(--stl-ui-dropdown-button-border-radius);
706
+ border-bottom-right-radius: var(--stl-ui-dropdown-button-border-radius);
707
+
708
+ &:hover {
709
+ background-color: var(--stl-color-ui-background-hover);
710
+ }
711
+ }
712
+
713
+ .stl-ui-dropdown__trigger-selected {
714
+ display: flex;
715
+ align-items: center;
716
+ gap: 8px;
717
+ }
718
+
719
+ /**
720
+ * Dropdown Menu
721
+ */
722
+ .stl-ui-dropdown-menu {
723
+ --stl-ui-dropdown-menu-background-color: var(--stl-color-ui-background);
724
+ --stl-ui-dropdown-menu-border-color: var(--stl-color-border);
725
+ --stl-ui-dropdown-menu-box-shadow: 0px 4px 4px -2px #00000014;
726
+ --stl-ui-dropdown-menu-border-radius: var(--stl-ui-layout-border-radius-sml);
727
+
728
+ /* opaque background with sometimes-transparent color on top in image layer*/
729
+ background-color: var(--stl-color-background);
730
+ background-image: linear-gradient(
731
+ to right,
732
+ var(--stl-ui-dropdown-menu-background-color),
733
+ var(--stl-ui-dropdown-menu-background-color)
734
+ );
735
+
736
+ border: 1px solid var(--stl-ui-dropdown-menu-border-color);
737
+ box-shadow: var(--stl-ui-dropdown-menu-box-shadow);
738
+ border-radius: var(--stl-ui-dropdown-menu-border-radius);
739
+
740
+ position: absolute;
741
+ right: 0;
742
+ z-index: 1000;
743
+ min-width: 100%;
744
+ width: max-content;
745
+ padding: 4px;
746
+ display: none;
747
+
748
+ &.stl-ui-dropdown-menu--above {
749
+ top: auto;
750
+ bottom: 100%;
751
+ margin-bottom: 4px;
752
+ }
753
+
754
+ &.stl-ui-dropdown-menu--below {
755
+ top: 100%;
756
+ bottom: auto;
757
+ margin-top: 4px;
758
+ }
759
+
760
+ &[data-state='open'] {
761
+ display: block;
762
+ }
763
+
764
+ .stl-ui-dropdown-menu__item {
765
+ --stl-ui-dropdown-menu__item-border-radius: var(--stl-ui-dropdown-button-border-radius);
766
+ --stl-ui-dropdown-menu__item-height: var(--stl-ui-dropdown-button-height);
767
+ --stl-ui-dropdown-menu__item-line-height: var(--stl-ui-dropdown-button-line-height);
768
+ --stl-ui-dropdown-menu__item-hover-background-color: var(--stl-color-ui-background-hover);
769
+
770
+ border-radius: var(--stl-ui-dropdown-menu__item-border-radius);
771
+ height: var(--stl-ui-dropdown-menu__item-height);
772
+ line-height: var(--stl-ui-dropdown-menu__item-line-height);
773
+
774
+ background: transparent;
775
+ border: none;
776
+
777
+ padding: 8px;
778
+ cursor: pointer;
779
+ display: flex;
780
+ align-items: center;
781
+ justify-content: space-between;
782
+ gap: 16px;
783
+ width: 100%;
784
+
785
+ &:hover,
786
+ &:focus-visible {
787
+ background-color: var(--stl-ui-dropdown-menu__item-hover-background-color);
788
+ }
789
+
790
+ &:hover,
791
+ &:focus-visible,
792
+ &:focus {
793
+ color: var(--stl-color-foreground);
794
+ }
795
+
796
+ &.stl-ui-dropdown-menu__item-link {
797
+ display: flex;
798
+ align-items: center;
799
+ justify-content: space-between;
800
+ gap: 16px;
801
+ width: 100%;
802
+
803
+ &:hover {
804
+ color: var(--stl-color-foreground);
805
+ }
806
+ }
807
+
808
+ .stl-ui-dropdown-menu__item-icon {
809
+ display: flex;
810
+ }
811
+
812
+ .stl-ui-dropdown-menu__item-content {
813
+ display: flex;
814
+ align-items: center;
815
+ gap: 8px;
816
+ }
817
+
818
+ .stl-ui-dropdown-menu__item-text {
819
+ white-space: nowrap;
820
+ }
821
+
822
+ .stl-ui-dropdown-menu__item-text--subtle {
823
+ color: var(--stl-color-foreground-muted);
824
+ }
825
+
826
+ strong {
827
+ color: var(--stl-color-foreground);
828
+ font-weight: 500;
829
+ }
830
+
831
+ .stl-ui-dropdown-menu__item-subtle-icon {
832
+ --stl-ui-dropdown-menu__item-subtle-icon-color: rgb(from var(--stl-color-foreground) r g b / 0.25);
833
+
834
+ svg {
835
+ color: var(--stl-ui-dropdown-menu__item-subtle-icon-color);
836
+ }
837
+ }
838
+ }
839
+ }
840
+ }
841
+
842
+ .stl-ui-callout {
843
+ --stl-ui-callout-background-color: var(--stl-color-faint-background);
844
+ --stl-ui-callout-border-color: var(--stl-color-border);
845
+ --stl-ui-callout-accent-color: var(--stl-color-foreground);
846
+
847
+ border: 1px solid var(--stl-ui-callout-border-color);
848
+ background-color: var(--stl-ui-callout-background-color);
849
+ border-radius: var(--stl-ui-layout-border-radius);
850
+ padding: 12px;
851
+ line-height: var(--stl-typography-line-height);
852
+ font-weight: 400;
853
+ font-size: var(--stl-typography-text-body);
854
+ color: var(--stl-color-foreground);
855
+
856
+ display: flex;
857
+ align-items: flex-start;
858
+ gap: 8px;
859
+
860
+ :where(a, strong) {
861
+ color: var(--stl-ui-callout-strong-color, var(--stl-ui-callout-accent-color));
862
+ }
863
+ :where(a) {
864
+ text-decoration-color: rgba(from currentColor r g b / 0.4);
865
+ transition: text-decoration-color 0.1s ease;
866
+ &:hover {
867
+ text-decoration-color: rgba(from currentColor r g b / 0.8);
868
+ }
869
+ }
870
+
871
+ ::selection {
872
+ background-color: light-dark(
873
+ rgb(from var(--stl-ui-callout-background-color) r g b / 0.2),
874
+ rgb(from var(--stl-ui-callout-background-color) r g b / 0.35)
875
+ );
876
+ color: var(--stl-color-foreground);
877
+ }
878
+ }
879
+
880
+ .stl-ui-callout--info {
881
+ --stl-ui-callout-background-color: var(--stl-color-faint-background);
882
+ --stl-ui-callout-border-color: var(--stl-color-border);
883
+ --stl-ui-callout-accent-color: var(--stl-color-foreground-reduced);
884
+ --stl-ui-callout-strong-color: var(--stl-color-foreground);
885
+ }
886
+
887
+ .stl-ui-callout--note {
888
+ --stl-ui-callout-background-color: var(--stl-color-blue-muted-background);
889
+ --stl-ui-callout-border-color: var(--stl-color-blue-border);
890
+ --stl-ui-callout-accent-color: var(--stl-color-blue-foreground);
891
+ }
892
+
893
+ .stl-ui-callout--tip {
894
+ --stl-ui-callout-background-color: var(--stl-color-purple-muted-background);
895
+ --stl-ui-callout-border-color: var(--stl-color-purple-border);
896
+ --stl-ui-callout-accent-color: var(--stl-color-purple-foreground);
897
+ }
898
+
899
+ .stl-ui-callout--success {
900
+ --stl-ui-callout-background-color: var(--stl-color-green-muted-background);
901
+ --stl-ui-callout-border-color: var(--stl-color-green-border);
902
+ --stl-ui-callout-accent-color: var(--stl-color-green-foreground);
903
+ }
904
+
905
+ .stl-ui-callout--warning {
906
+ --stl-ui-callout-background-color: var(--stl-color-yellow-muted-background);
907
+ --stl-ui-callout-border-color: var(--stl-color-yellow-border);
908
+ --stl-ui-callout-accent-color: var(--stl-color-yellow-foreground);
909
+ }
910
+
911
+ .stl-ui-callout--danger {
912
+ --stl-ui-callout-background-color: var(--stl-color-red-muted-background);
913
+ --stl-ui-callout-border-color: var(--stl-color-red-border);
914
+ --stl-ui-callout-accent-color: var(--stl-color-red-foreground);
915
+ }
916
+
917
+ .stl-ui-callout__icon {
918
+ color: var(--stl-ui-callout-accent-color);
919
+ flex-shrink: 0;
920
+ width: 1em;
921
+ height: 1em;
922
+ margin: calc((1lh - 1em) / 2);
923
+ }
924
+
925
+ .stl-ui-callout__content {
926
+ flex: 1;
927
+ margin-top: 0;
928
+
929
+ & > :first-child {
930
+ margin-top: 0;
931
+ }
932
+ }
933
+
934
+ /* revert starlight details styles */
935
+ @layer starlight.content {
936
+ /* artificially increase specificity to outcompete selectors in the same layer whose styles we want to revert */
937
+ .stl-ui-prose .sl-markdown-content.sl-markdown-content.sl-markdown-content {
938
+ details,
939
+ summary,
940
+ summary::before,
941
+ summary::marker {
942
+ all: revert-layer;
943
+ }
944
+ }
945
+ }
946
+
947
+ .stl-ui-accordion {
948
+ --stl-ui-accordion-padding: 12px;
949
+ --stl-ui-accordion-content-padding-bottom: 4px;
950
+ --stl-ui-accordion-marker-size: 1em;
951
+ --stl-ui-accordion-marker-margin: calc((1lh - var(--stl-ui-accordion-marker-size)) / 2);
952
+ --stl-ui-accordion-marker-color: var(--stl-color-border-strong);
953
+ --stl-ui-accordion-row-gap: 8px;
954
+ --stl-ui-accordion-summary-column-gap: 8px;
955
+ --stl-ui-accordion-border-radius: var(--stl-ui-layout-border-radius);
956
+ /* left inset to make content line up with summary content (after chevron) */
957
+ --stl-ui--internal--accordion-padding-start: calc(
958
+ var(--stl-ui-accordion-padding) + var(--stl-ui-accordion-marker-size) +
959
+ var(--stl-ui-accordion-marker-margin) * 2 + var(--stl-ui-accordion-summary-column-gap)
960
+ );
961
+
962
+ background-color: var(--stl-color-ui-background);
963
+ border: 1px solid var(--stl-color-border);
964
+ border-radius: var(--stl-ui-accordion-border-radius);
965
+ font-size: var(--stl-typography-text-body);
966
+
967
+ padding: var(--stl-ui-accordion-padding);
968
+ /* indent content to line up with left edge of summary content */
969
+ padding-inline-start: var(--stl-ui--internal--accordion-padding-start);
970
+
971
+ & > .stl-ui-accordion__summary {
972
+ display: block;
973
+ list-style: none;
974
+
975
+ /* summary extends to the edges of the element in order to increase click target */
976
+ padding: var(--stl-ui-accordion-padding);
977
+ padding-inline-start: var(--stl-ui--internal--accordion-padding-start);
978
+ margin: calc(-1 * var(--stl-ui-accordion-padding));
979
+ margin-inline-start: calc(-1 * var(--stl-ui--internal--accordion-padding-start));
980
+
981
+ cursor: pointer;
982
+ font-weight: 500;
983
+
984
+ border-radius: var(--stl-ui-accordion-border-radius);
985
+
986
+ &::before {
987
+ content: '';
988
+ width: var(--stl-ui-accordion-marker-size);
989
+ height: var(--stl-ui-accordion-marker-size);
990
+ margin: var(--stl-ui-accordion-marker-margin);
991
+ background-color: var(--stl-ui-accordion-marker-color);
992
+ display: block;
993
+ position: absolute;
994
+ --stl-ui-accordion--internal--marker-width: calc(
995
+ var(--stl-ui-accordion-marker-size) + var(--stl-ui-accordion-marker-margin) * 2
996
+ );
997
+ --stl-ui-accordion--internal--summary-marker-transform: translateX(
998
+ calc(
999
+ -1 * var(--stl-ui-accordion--internal--marker-width) - var(--stl-ui-accordion-summary-column-gap)
1000
+ )
1001
+ );
1002
+ transform: var(--stl-ui-accordion--internal--summary-marker-transform);
1003
+
1004
+ --lucide-chevron-right: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNoZXZyb24tcmlnaHQtaWNvbiBsdWNpZGUtY2hldnJvbi1yaWdodCI+PHBhdGggZD0ibTkgMTggNi02LTYtNiIvPjwvc3ZnPg==');
1005
+ mask-image: var(--lucide-chevron-right);
1006
+ mask-size: contain;
1007
+ mask-repeat: no-repeat;
1008
+
1009
+ transition: transform 0.1s ease-out;
1010
+ }
1011
+
1012
+ & > :first-child {
1013
+ margin-top: 0;
1014
+ }
1015
+ }
1016
+
1017
+ &[open] {
1018
+ border-color: var(--stl-color-border-strong);
1019
+ padding-bottom: calc(var(--stl-ui-accordion-padding) + var(--stl-ui-accordion-content-padding-bottom));
1020
+
1021
+ & > .stl-ui-accordion__summary {
1022
+ /* padding-bottom shouldn’t extend beyond the row gap while open, i.e. we shouldn’t be negative-margin-placing content overlapping summary */
1023
+ --stl-ui--internal--summary-padding-bottom: min(
1024
+ var(--stl-ui-accordion-padding),
1025
+ var(--stl-ui-accordion-row-gap)
1026
+ );
1027
+ padding-bottom: var(--stl-ui--internal--summary-padding-bottom);
1028
+ margin-bottom: calc(var(--stl-ui-accordion-row-gap) - var(--stl-ui--internal--summary-padding-bottom));
1029
+ border-bottom-left-radius: 0;
1030
+ border-bottom-right-radius: 0;
1031
+
1032
+ &::before {
1033
+ transform: var(--stl-ui-accordion--internal--summary-marker-transform) rotate(90deg);
1034
+ }
1035
+ }
1036
+ }
1037
+
1038
+ &:has(> .stl-ui-accordion__summary:hover) {
1039
+ background-color: var(--stl-color-ui-background-hover);
1040
+ }
1041
+
1042
+ & > .stl-ui-accordion__summary + * {
1043
+ margin-top: 0;
1044
+ }
1045
+ }
1046
+
1047
+ /* Groups */
1048
+
1049
+ .stl-ui-accordion-group {
1050
+ & > .stl-ui-accordion:has(+ .stl-ui-accordion) {
1051
+ border-bottom-left-radius: 0;
1052
+ border-bottom-right-radius: 0;
1053
+ & > .stl-ui-accordion__summary {
1054
+ border-bottom-left-radius: 0;
1055
+ border-bottom-right-radius: 0;
1056
+ }
1057
+ }
1058
+
1059
+ & > .stl-ui-accordion + .stl-ui-accordion {
1060
+ margin-top: 0;
1061
+ border-top-width: 0;
1062
+ border-top-left-radius: 0;
1063
+ border-top-right-radius: 0;
1064
+
1065
+ & > .stl-ui-accordion__summary {
1066
+ border-top-left-radius: 0;
1067
+ border-top-right-radius: 0;
1068
+ }
1069
+ }
1070
+
1071
+ /* Ensure the darker border always extends all the way around the active element, instead of
1072
+ * leaving an inactive border-top */
1073
+
1074
+ .stl-ui-accordion:not(:hover, [open]):has(+ .stl-ui-accordion:hover) {
1075
+ border-bottom-width: 0;
1076
+ }
1077
+ .stl-ui-accordion:not(:hover, [open]) + .stl-ui-accordion:hover {
1078
+ border-top-width: 1px;
1079
+ }
1080
+
1081
+ .stl-ui-accordion:not([open]):has(+ .stl-ui-accordion[open]) {
1082
+ border-bottom-width: 0;
1083
+ }
1084
+ .stl-ui-accordion:not([open]) + .stl-ui-accordion[open] {
1085
+ border-top-width: 1px;
1086
+ }
1087
+ }
1088
+
1089
+ /* design system variables */
1090
+
1091
+ /* components */
1092
+
1093
+
1
1094
  /* Resets */
2
1095
  .stldocs-root {
3
1096
  line-height: 100%;
@@ -20,7 +1113,8 @@
20
1113
  display: block;
21
1114
  color: var(--stl-color-foreground);
22
1115
  font-weight: 500;
23
- line-height: var(--stl-typography-line-height-headings);
1116
+ line-height: var(--stl-typography-line-height-heading);
1117
+ font-family: var(--stl-typography-font-heading);
24
1118
  }
25
1119
 
26
1120
  display: block;
@@ -1787,5 +2881,9 @@
1787
2881
 
1788
2882
  /* For standalone usage of docs-ui */
1789
2883
 
2884
+ /*
2885
+ * TODO: replace with real import once rolldown css support matures further
2886
+ * This import gets bundled so this import will should need to be resolved at runtime
2887
+ */
1790
2888
 
1791
2889