slexkit 0.2.0

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 (221) hide show
  1. package/AGENTS.slexkit.md +29 -0
  2. package/CHANGELOG.md +90 -0
  3. package/LICENSE +21 -0
  4. package/README.md +165 -0
  5. package/README.zh-CN.md +165 -0
  6. package/dist/ai/llms-authoring.txt +44 -0
  7. package/dist/ai/llms-components.txt +669 -0
  8. package/dist/ai/llms-full.txt +6586 -0
  9. package/dist/ai/llms-runtime.txt +1475 -0
  10. package/dist/ai/llms-toolhost.txt +295 -0
  11. package/dist/ai/llms.txt +69 -0
  12. package/dist/ai/slexkit-ai-manifest.json +2922 -0
  13. package/dist/base.css +621 -0
  14. package/dist/chunks/accordion-5f0nvjjm.js +376 -0
  15. package/dist/chunks/accordion-830dw78f.js +221 -0
  16. package/dist/chunks/accordion-cfjyxw93.js +630 -0
  17. package/dist/chunks/accordion-cw5r75jm.js +424 -0
  18. package/dist/chunks/accordion-ehnhpeca.js +492 -0
  19. package/dist/chunks/accordion-hzyrngd6.js +2377 -0
  20. package/dist/chunks/accordion-nw12ytps.js +6823 -0
  21. package/dist/components/accordion.js +163 -0
  22. package/dist/components/badge.js +80 -0
  23. package/dist/components/button.css +114 -0
  24. package/dist/components/button.js +16 -0
  25. package/dist/components/callout.js +154 -0
  26. package/dist/components/card.js +95 -0
  27. package/dist/components/checkbox.js +114 -0
  28. package/dist/components/choice.css +165 -0
  29. package/dist/components/code-block.js +264 -0
  30. package/dist/components/collapsible.js +111 -0
  31. package/dist/components/column.js +49 -0
  32. package/dist/components/content.css +474 -0
  33. package/dist/components/disclosure.css +162 -0
  34. package/dist/components/display.css +259 -0
  35. package/dist/components/divider.js +98 -0
  36. package/dist/components/feedback.css +219 -0
  37. package/dist/components/grid.js +67 -0
  38. package/dist/components/index.js +13364 -0
  39. package/dist/components/input.css +1247 -0
  40. package/dist/components/input.js +384 -0
  41. package/dist/components/link.js +77 -0
  42. package/dist/components/progress.js +111 -0
  43. package/dist/components/radio-group.js +189 -0
  44. package/dist/components/row.js +200 -0
  45. package/dist/components/section.js +161 -0
  46. package/dist/components/select.css +260 -0
  47. package/dist/components/select.js +16 -0
  48. package/dist/components/slider.css +125 -0
  49. package/dist/components/slider.js +175 -0
  50. package/dist/components/specs.js +1090 -0
  51. package/dist/components/stat.js +178 -0
  52. package/dist/components/submit.css +9 -0
  53. package/dist/components/submit.js +77 -0
  54. package/dist/components/switch.css +114 -0
  55. package/dist/components/switch.js +114 -0
  56. package/dist/components/table.js +157 -0
  57. package/dist/components/tabs.css +192 -0
  58. package/dist/components/tabs.js +17 -0
  59. package/dist/components/text-input.css +245 -0
  60. package/dist/components/text.js +50 -0
  61. package/dist/components/toast.js +240 -0
  62. package/dist/components/tooling.css +1009 -0
  63. package/dist/components/tooling.js +48951 -0
  64. package/dist/runtime.cjs +3728 -0
  65. package/dist/runtime.js +3686 -0
  66. package/dist/slexkit.cjs +18539 -0
  67. package/dist/slexkit.css +4776 -0
  68. package/dist/slexkit.js +18497 -0
  69. package/dist/tooling.js +59141 -0
  70. package/dist/types/components/accordion.d.ts +2 -0
  71. package/dist/types/components/badge.d.ts +2 -0
  72. package/dist/types/components/button.d.ts +2 -0
  73. package/dist/types/components/callout.d.ts +2 -0
  74. package/dist/types/components/card.d.ts +2 -0
  75. package/dist/types/components/checkbox.d.ts +2 -0
  76. package/dist/types/components/code-block.d.ts +2 -0
  77. package/dist/types/components/collapsible.d.ts +2 -0
  78. package/dist/types/components/column.d.ts +2 -0
  79. package/dist/types/components/divider.d.ts +2 -0
  80. package/dist/types/components/entries/accordion.d.ts +3 -0
  81. package/dist/types/components/entries/badge.d.ts +3 -0
  82. package/dist/types/components/entries/button.d.ts +3 -0
  83. package/dist/types/components/entries/callout.d.ts +3 -0
  84. package/dist/types/components/entries/card.d.ts +3 -0
  85. package/dist/types/components/entries/checkbox.d.ts +3 -0
  86. package/dist/types/components/entries/code-block.d.ts +3 -0
  87. package/dist/types/components/entries/collapsible.d.ts +3 -0
  88. package/dist/types/components/entries/column.d.ts +3 -0
  89. package/dist/types/components/entries/divider.d.ts +3 -0
  90. package/dist/types/components/entries/grid.d.ts +3 -0
  91. package/dist/types/components/entries/input.d.ts +3 -0
  92. package/dist/types/components/entries/link.d.ts +3 -0
  93. package/dist/types/components/entries/progress.d.ts +3 -0
  94. package/dist/types/components/entries/radio-group.d.ts +3 -0
  95. package/dist/types/components/entries/row.d.ts +3 -0
  96. package/dist/types/components/entries/section.d.ts +3 -0
  97. package/dist/types/components/entries/select.d.ts +3 -0
  98. package/dist/types/components/entries/slider.d.ts +3 -0
  99. package/dist/types/components/entries/specs.d.ts +1 -0
  100. package/dist/types/components/entries/stat.d.ts +3 -0
  101. package/dist/types/components/entries/submit.d.ts +3 -0
  102. package/dist/types/components/entries/switch.d.ts +3 -0
  103. package/dist/types/components/entries/table.d.ts +3 -0
  104. package/dist/types/components/entries/tabs.d.ts +3 -0
  105. package/dist/types/components/entries/text.d.ts +3 -0
  106. package/dist/types/components/entries/toast.d.ts +3 -0
  107. package/dist/types/components/entries/tooling.d.ts +1 -0
  108. package/dist/types/components/grid.d.ts +2 -0
  109. package/dist/types/components/index.d.ts +6 -0
  110. package/dist/types/components/input.d.ts +2 -0
  111. package/dist/types/components/link.d.ts +2 -0
  112. package/dist/types/components/progress.d.ts +2 -0
  113. package/dist/types/components/radio-group.d.ts +2 -0
  114. package/dist/types/components/row.d.ts +2 -0
  115. package/dist/types/components/section.d.ts +2 -0
  116. package/dist/types/components/select.d.ts +2 -0
  117. package/dist/types/components/slider.d.ts +2 -0
  118. package/dist/types/components/spec-helpers.d.ts +23 -0
  119. package/dist/types/components/spec-registry.d.ts +12 -0
  120. package/dist/types/components/spec-schema.d.ts +74 -0
  121. package/dist/types/components/specs.d.ts +2 -0
  122. package/dist/types/components/stat.d.ts +2 -0
  123. package/dist/types/components/submit.d.ts +2 -0
  124. package/dist/types/components/svelte/adapter.d.ts +3 -0
  125. package/dist/types/components/svelte/bindProps.d.ts +2 -0
  126. package/dist/types/components/svelte/helpers.d.ts +33 -0
  127. package/dist/types/components/svelte/layout/balancedTiles.d.ts +14 -0
  128. package/dist/types/components/svelte/types.d.ts +12 -0
  129. package/dist/types/components/switch.d.ts +2 -0
  130. package/dist/types/components/table.d.ts +2 -0
  131. package/dist/types/components/tabs.d.ts +2 -0
  132. package/dist/types/components/text.d.ts +2 -0
  133. package/dist/types/components/toast.d.ts +2 -0
  134. package/dist/types/components/tooling.d.ts +2 -0
  135. package/dist/types/components-svelte.d.ts +5 -0
  136. package/dist/types/engine/component-scope.d.ts +14 -0
  137. package/dist/types/engine/component-state.d.ts +9 -0
  138. package/dist/types/engine/diagnostics.d.ts +24 -0
  139. package/dist/types/engine/engineering.d.ts +11 -0
  140. package/dist/types/engine/eval.d.ts +5 -0
  141. package/dist/types/engine/index.d.ts +26 -0
  142. package/dist/types/engine/markdown-runtime.d.ts +33 -0
  143. package/dist/types/engine/merge.d.ts +1 -0
  144. package/dist/types/engine/reactive.d.ts +11 -0
  145. package/dist/types/engine/registry.d.ts +4 -0
  146. package/dist/types/engine/renderer.d.ts +6 -0
  147. package/dist/types/engine/sandbox-runner.d.ts +2 -0
  148. package/dist/types/engine/secure-runtime.d.ts +214 -0
  149. package/dist/types/engine/store.d.ts +12 -0
  150. package/dist/types/engine/types.d.ts +58 -0
  151. package/dist/types/icons/manager.d.ts +17 -0
  152. package/dist/types/icons/phosphor.d.ts +45 -0
  153. package/dist/types/index.d.ts +61 -0
  154. package/dist/types/runtime.d.ts +32 -0
  155. package/dist/types/toolhost/index.d.ts +78 -0
  156. package/dist/types/tooling-umd.d.ts +47 -0
  157. package/dist/types/version.d.ts +8 -0
  158. package/dist/umd/slexkit.tooling.umd.js +66553 -0
  159. package/dist/umd/slexkit.umd.js +18552 -0
  160. package/package.json +136 -0
  161. package/scripts/cli.mjs +47 -0
  162. package/skills/slexkit/SKILL.md +27 -0
  163. package/skills/slexkit-author/SKILL.md +50 -0
  164. package/skills/slexkit-host-integration/SKILL.md +33 -0
  165. package/skills/slexkit-secure-runtime/SKILL.md +31 -0
  166. package/skills/slexkit-toolhost/SKILL.md +38 -0
  167. package/skills/slexkit-update/SKILL.md +23 -0
  168. package/src/components/svelte/InlineIcon.svelte +66 -0
  169. package/src/components/svelte/adapter.ts +76 -0
  170. package/src/components/svelte/bindProps.ts +9 -0
  171. package/src/components/svelte/content/Badge.svelte +19 -0
  172. package/src/components/svelte/content/Callout.svelte +57 -0
  173. package/src/components/svelte/content/CodeBlock.svelte +130 -0
  174. package/src/components/svelte/content/Divider.svelte +21 -0
  175. package/src/components/svelte/content/Link.svelte +21 -0
  176. package/src/components/svelte/content/Section.svelte +24 -0
  177. package/src/components/svelte/content/Table.svelte +44 -0
  178. package/src/components/svelte/disclosure/Accordion.svelte +100 -0
  179. package/src/components/svelte/disclosure/Collapsible.svelte +45 -0
  180. package/src/components/svelte/display/Stat.svelte +102 -0
  181. package/src/components/svelte/display/Text.svelte +11 -0
  182. package/src/components/svelte/feedback/Progress.svelte +34 -0
  183. package/src/components/svelte/feedback/Toast.svelte +105 -0
  184. package/src/components/svelte/helpers.ts +148 -0
  185. package/src/components/svelte/input/Button.svelte +78 -0
  186. package/src/components/svelte/input/Checkbox.svelte +52 -0
  187. package/src/components/svelte/input/Input.svelte +202 -0
  188. package/src/components/svelte/input/RadioGroup.svelte +71 -0
  189. package/src/components/svelte/input/Select.svelte +220 -0
  190. package/src/components/svelte/input/Slider.svelte +96 -0
  191. package/src/components/svelte/input/Submit.svelte +32 -0
  192. package/src/components/svelte/input/Switch.svelte +53 -0
  193. package/src/components/svelte/input/Tabs.svelte +188 -0
  194. package/src/components/svelte/layout/Card.svelte +17 -0
  195. package/src/components/svelte/layout/Column.svelte +15 -0
  196. package/src/components/svelte/layout/Grid.svelte +26 -0
  197. package/src/components/svelte/layout/Row.svelte +105 -0
  198. package/src/components/svelte/layout/balancedTiles.ts +85 -0
  199. package/src/components/svelte/tooling/CodeMirror.svelte +91 -0
  200. package/src/components/svelte/tooling/Playground.svelte +765 -0
  201. package/src/components/svelte/tooling/PlaygroundMarkdown.svelte +26 -0
  202. package/src/components/svelte/tooling/PlaygroundSlexCode.svelte +76 -0
  203. package/src/components/svelte/types.ts +17 -0
  204. package/src/styles/animation.css +98 -0
  205. package/src/styles/components/button.css +114 -0
  206. package/src/styles/components/choice.css +165 -0
  207. package/src/styles/components/select.css +260 -0
  208. package/src/styles/components/slider.css +125 -0
  209. package/src/styles/components/submit.css +9 -0
  210. package/src/styles/components/switch.css +114 -0
  211. package/src/styles/components/tabs.css +192 -0
  212. package/src/styles/components/text-input.css +245 -0
  213. package/src/styles/content.css +474 -0
  214. package/src/styles/disclosure.css +162 -0
  215. package/src/styles/display.css +259 -0
  216. package/src/styles/entry.css +34 -0
  217. package/src/styles/feedback.css +219 -0
  218. package/src/styles/input.css +8 -0
  219. package/src/styles/layout.css +365 -0
  220. package/src/styles/theme.css +31 -0
  221. package/src/styles/tooling.css +1009 -0
@@ -0,0 +1,1009 @@
1
+ .slex-playground {
2
+ --slex-playground-toolbar-height: var(--slex-control-height, 2.25rem);
3
+ position: relative;
4
+ overflow: hidden;
5
+ border: 1px solid color-mix(in oklab, var(--border) 64%, transparent);
6
+ border-radius: 1rem;
7
+ background: var(--background);
8
+ color: var(--card-foreground);
9
+ box-shadow: none;
10
+ }
11
+
12
+ .slex-playground-heading {
13
+ min-width: 0;
14
+ }
15
+
16
+ .slex-playground-title {
17
+ margin: 0;
18
+ font-size: 1rem;
19
+ font-weight: 600;
20
+ line-height: 1.3;
21
+ letter-spacing: 0;
22
+ }
23
+
24
+ .slex-playground-meta {
25
+ display: flex;
26
+ flex-wrap: wrap;
27
+ align-items: center;
28
+ gap: 0.5rem;
29
+ margin-top: 0.25rem;
30
+ color: var(--muted-foreground);
31
+ font-size: 0.8125rem;
32
+ line-height: 1.25rem;
33
+ }
34
+
35
+ .slex-playground-status {
36
+ display: inline-flex;
37
+ align-items: center;
38
+ min-height: 1.25rem;
39
+ padding: 0 0.375rem;
40
+ border: 1px solid var(--border);
41
+ border-radius: calc(var(--radius) - 2px);
42
+ background: var(--muted);
43
+ font-size: 0.75rem;
44
+ font-weight: 500;
45
+ }
46
+
47
+ .slex-playground-chrome {
48
+ position: absolute;
49
+ top: 0;
50
+ left: 0;
51
+ right: 0;
52
+ z-index: 4;
53
+ display: flex;
54
+ align-items: center;
55
+ justify-content: flex-end;
56
+ gap: 0;
57
+ height: var(--slex-playground-toolbar-height);
58
+ min-height: var(--slex-playground-toolbar-height);
59
+ padding: 0;
60
+ border-bottom: 1px solid color-mix(in oklab, var(--border) 46%, transparent);
61
+ background: color-mix(in oklab, var(--muted) 22%, var(--background));
62
+ pointer-events: none;
63
+ backdrop-filter: blur(12px);
64
+ overflow: visible;
65
+ scrollbar-width: none;
66
+ }
67
+
68
+ .slex-playground-chrome::-webkit-scrollbar {
69
+ display: none;
70
+ }
71
+
72
+ .slex-playground-source-picker {
73
+ position: relative;
74
+ z-index: 60;
75
+ width: 8rem;
76
+ min-width: 8rem;
77
+ height: var(--slex-playground-toolbar-height);
78
+ align-self: stretch;
79
+ }
80
+
81
+ .slex-playground-source-picker .slex-select {
82
+ height: 100%;
83
+ }
84
+
85
+ .slex-playground-tabs,
86
+ .slex-playground-actions {
87
+ display: inline-flex;
88
+ height: var(--slex-playground-toolbar-height);
89
+ align-self: stretch;
90
+ gap: 0;
91
+ padding: 0;
92
+ border: 0;
93
+ border-radius: 0;
94
+ background: transparent;
95
+ box-shadow: none;
96
+ pointer-events: auto;
97
+ }
98
+
99
+ .slex-playground-tabs {
100
+ margin-right: auto;
101
+ }
102
+
103
+ .slex-playground-tabs .slex-tabs {
104
+ width: auto;
105
+ height: 100%;
106
+ }
107
+
108
+ .slex-playground-tabs .slex-tabs-list {
109
+ height: 100%;
110
+ border-bottom: 0;
111
+ }
112
+
113
+ .slex-playground-tabs .slex-tabs-trigger {
114
+ width: var(--slex-playground-toolbar-height);
115
+ min-height: var(--slex-playground-toolbar-height);
116
+ height: var(--slex-playground-toolbar-height);
117
+ padding: 0;
118
+ color: var(--muted-foreground);
119
+ }
120
+
121
+ .slex-playground-tabs .slex-tabs-trigger:hover:not([data-disabled]),
122
+ .slex-playground-tabs .slex-tabs-trigger.slex-tabs-trigger--selected {
123
+ background: color-mix(in oklab, var(--muted) 32%, transparent);
124
+ color: var(--foreground);
125
+ }
126
+
127
+ .slex-playground-tabs .slex-tabs-trigger-icon {
128
+ width: 1rem;
129
+ height: 1rem;
130
+ }
131
+
132
+ .slex-playground-editor:focus-visible {
133
+ outline: 2px solid var(--ring);
134
+ outline-offset: 2px;
135
+ }
136
+
137
+ .slex-playground-actions .slex-button {
138
+ width: var(--slex-playground-toolbar-height);
139
+ height: var(--slex-playground-toolbar-height);
140
+ border: 0;
141
+ border-radius: 0;
142
+ background: transparent;
143
+ color: var(--muted-foreground);
144
+ box-shadow: none;
145
+ }
146
+
147
+ .slex-playground-actions .slex-button:hover {
148
+ background: color-mix(in oklab, var(--muted) 44%, var(--background));
149
+ color: var(--foreground);
150
+ transform: none;
151
+ box-shadow: none;
152
+ }
153
+
154
+ .slex-playground-actions {
155
+ border-left: 1px solid color-mix(in oklab, var(--border) 58%, transparent);
156
+ }
157
+
158
+ .slex-playground--workbench {
159
+ height: auto;
160
+ min-height: var(--slex-playground-min-height, 16rem);
161
+ }
162
+
163
+ .slex-playground--embedded {
164
+ height: 100svh;
165
+ box-shadow: none;
166
+ }
167
+
168
+ .slex-playground--standalone {
169
+ height: var(--slex-playground-min-height, calc(100svh - 2rem));
170
+ min-height: var(--slex-playground-min-height, calc(100svh - 2rem));
171
+ }
172
+
173
+ .slex-playground--embedded .slex-playground-preview-pane,
174
+ .slex-playground--embedded .slex-playground-code-pane,
175
+ .slex-playground--embedded .slex-playground-live-pane,
176
+ .slex-playground--standalone .slex-playground-preview-pane,
177
+ .slex-playground--standalone .slex-playground-code-pane,
178
+ .slex-playground--standalone .slex-playground-live-pane {
179
+ height: 100%;
180
+ min-height: 0;
181
+ }
182
+
183
+ .slex-playground--embedded .slex-playground-code,
184
+ .slex-playground--embedded .slex-playground-editor,
185
+ .slex-playground--embedded .slex-playground-editor.codemirror,
186
+ .slex-playground--embedded .slex-playground-editor .cm-editor,
187
+ .slex-playground--embedded .slex-playground-editor .cm-scroller,
188
+ .slex-playground--standalone .slex-playground-code,
189
+ .slex-playground--standalone .slex-playground-editor,
190
+ .slex-playground--standalone .slex-playground-editor.codemirror,
191
+ .slex-playground--standalone .slex-playground-editor .cm-editor,
192
+ .slex-playground--standalone .slex-playground-editor .cm-scroller {
193
+ height: 100%;
194
+ }
195
+
196
+ .slex-playground-preview-pane {
197
+ display: grid;
198
+ align-items: safe center;
199
+ overflow: auto;
200
+ scrollbar-gutter: stable both-edges;
201
+ min-height: var(--slex-playground-min-height, 16rem);
202
+ padding: calc(var(--slex-playground-toolbar-height) + 1.25rem) 2.25rem 2.25rem;
203
+ background-color: var(--background);
204
+ background-image: radial-gradient(color-mix(in oklab, var(--border) 58%, transparent) 1px, transparent 1px);
205
+ background-position: 0 0;
206
+ background-size: 18px 18px;
207
+ }
208
+
209
+ .slex-playground-preview-pane[hidden],
210
+ .slex-playground-code-pane[hidden] {
211
+ display: none;
212
+ }
213
+
214
+ .slex-playground-preview {
215
+ width: 100%;
216
+ margin: 0 auto;
217
+ }
218
+
219
+ .slex-playground[data-preview-align="start"] .slex-playground-preview-pane {
220
+ align-items: start;
221
+ }
222
+
223
+ .slex-playground[data-source-type="markdown"] .slex-playground-preview-pane {
224
+ align-items: start;
225
+ }
226
+
227
+ .slex-playground[data-preview-overflow="true"] .slex-playground-preview-pane {
228
+ align-items: start;
229
+ }
230
+
231
+ .slex-playground[data-preview-align="center"][data-preview-anchor="fixed"]:not([data-preview-overflow="true"]) .slex-playground-preview-pane {
232
+ align-items: start;
233
+ }
234
+
235
+ .slex-playground[data-preview-align="center"][data-preview-anchor="fixed"]:not([data-preview-overflow="true"]) .slex-playground-preview {
236
+ margin-top: var(--slex-preview-anchor-offset, 0);
237
+ }
238
+
239
+ .slex-playground[data-preview-align="start"] .slex-playground-live-preview {
240
+ align-items: start;
241
+ }
242
+
243
+ .slex-playground[data-source-type="markdown"] .slex-playground-live-preview {
244
+ align-items: start;
245
+ }
246
+
247
+ .slex-playground[data-preview-overflow="true"] .slex-playground-live-preview {
248
+ align-items: start;
249
+ }
250
+
251
+ .slex-playground[data-preview-align="center"][data-preview-anchor="fixed"]:not([data-preview-overflow="true"]) .slex-playground-live-preview {
252
+ align-items: start;
253
+ }
254
+
255
+ .slex-playground[data-preview-align="center"][data-preview-anchor="fixed"]:not([data-preview-overflow="true"]) .slex-playground-live-preview > .slex-standalone-playground-preview-inner {
256
+ margin-top: var(--slex-preview-anchor-offset, 0);
257
+ }
258
+
259
+ .slex-playground-code-pane {
260
+ display: flex;
261
+ min-width: 0;
262
+ min-height: var(--slex-playground-min-height, 16rem);
263
+ overflow: hidden;
264
+ background: var(--background);
265
+ }
266
+
267
+ .slex-playground-code {
268
+ flex: 1 1 auto;
269
+ width: 100%;
270
+ min-width: 0;
271
+ min-height: var(--slex-playground-min-height, 16rem);
272
+ overflow: hidden;
273
+ }
274
+
275
+ .slex-playground-code-scroll {
276
+ box-sizing: border-box;
277
+ width: 100%;
278
+ overflow: auto;
279
+ background: var(--background);
280
+ color: var(--foreground);
281
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
282
+ font-size: 0.8125rem;
283
+ line-height: 1.55;
284
+ }
285
+
286
+ .slex-playground-code-lines {
287
+ min-width: max-content;
288
+ padding: 3.75rem 0 1.25rem;
289
+ }
290
+
291
+ .slex-playground-live-pane {
292
+ display: grid;
293
+ grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
294
+ min-height: var(--slex-playground-min-height, 16rem);
295
+ background: var(--background);
296
+ }
297
+
298
+ .slex-playground-live-code {
299
+ min-width: 0;
300
+ min-height: var(--slex-playground-min-height, 16rem);
301
+ overflow: hidden;
302
+ border-right: 1px solid color-mix(in oklab, var(--border) 58%, transparent);
303
+ }
304
+
305
+ .slex-playground-live-preview {
306
+ display: grid;
307
+ align-items: safe center;
308
+ min-width: 0;
309
+ min-height: var(--slex-playground-min-height, 16rem);
310
+ overflow: auto;
311
+ padding: calc(var(--slex-playground-toolbar-height) + 1.25rem) 1.5rem 1.5rem;
312
+ background-color: var(--background);
313
+ background-image: radial-gradient(color-mix(in oklab, var(--border) 52%, transparent) 1px, transparent 1px);
314
+ background-position: 0 0;
315
+ background-size: 18px 18px;
316
+ }
317
+
318
+ .slex-playground-live-pane.vertical {
319
+ grid-template-columns: 1fr;
320
+ }
321
+
322
+ .slex-playground-live-pane.vertical .slex-playground-live-code {
323
+ border-right: 0;
324
+ border-bottom: 1px solid color-mix(in oklab, var(--border) 58%, transparent);
325
+ }
326
+
327
+ .slex-playground-splitter {
328
+ position: relative;
329
+ background: color-mix(in oklab, var(--border) 76%, transparent);
330
+ touch-action: none;
331
+ transition: background-color 120ms ease;
332
+ }
333
+
334
+ .slex-playground-splitter:focus-visible {
335
+ background: color-mix(in oklab, var(--ring) 28%, var(--border));
336
+ outline: 2px solid var(--ring);
337
+ outline-offset: -2px;
338
+ }
339
+
340
+ .slex-playground-splitter.dragging {
341
+ background: var(--ring);
342
+ outline: none;
343
+ }
344
+
345
+ .slex-playground-live-pane.horizontal .slex-playground-splitter {
346
+ width: 8px;
347
+ cursor: col-resize;
348
+ }
349
+
350
+ .slex-playground-live-pane.vertical .slex-playground-splitter {
351
+ height: 8px;
352
+ cursor: row-resize;
353
+ }
354
+
355
+ .slex-playground-code-line {
356
+ display: grid;
357
+ grid-template-columns: 3.75rem minmax(0, 1fr);
358
+ min-height: 1.55em;
359
+ }
360
+
361
+ .slex-playground-code-line-number {
362
+ user-select: none;
363
+ border-right: 1px solid var(--border);
364
+ background: var(--muted);
365
+ color: var(--muted-foreground);
366
+ padding: 0 0.75rem;
367
+ text-align: right;
368
+ font-variant-numeric: tabular-nums;
369
+ }
370
+
371
+ .slex-playground-code-line-text {
372
+ display: block;
373
+ min-width: max-content;
374
+ white-space: pre;
375
+ padding: 0 1rem;
376
+ border: 0;
377
+ border-radius: 0;
378
+ background: transparent;
379
+ color: inherit;
380
+ font: inherit;
381
+ }
382
+
383
+ .slex-playground-code-scroll .hljs {
384
+ background: transparent;
385
+ color: var(--foreground);
386
+ }
387
+
388
+ .slex-playground-code-scroll pre,
389
+ .slex-playground-code-scroll code {
390
+ margin: 0;
391
+ border: 0;
392
+ background: transparent;
393
+ padding: 0;
394
+ font: inherit;
395
+ }
396
+
397
+ .slex-playground-editor {
398
+ --slex-code-keyword: color-mix(in oklab, var(--info) 82%, var(--foreground));
399
+ --slex-code-name: color-mix(in oklab, var(--foreground) 84%, var(--muted-foreground));
400
+ --slex-code-string: color-mix(in oklab, var(--success) 82%, var(--foreground));
401
+ --slex-code-literal: color-mix(in oklab, var(--warning) 82%, var(--foreground));
402
+ --slex-code-function: color-mix(in oklab, var(--info) 64%, var(--foreground));
403
+ --slex-code-punctuation: color-mix(in oklab, var(--muted-foreground) 82%, var(--foreground));
404
+ --slex-code-comment: color-mix(in oklab, var(--muted-foreground) 76%, transparent);
405
+ --slex-code-heading: color-mix(in oklab, var(--foreground) 92%, var(--info));
406
+ --slex-code-link: color-mix(in oklab, var(--info) 86%, var(--foreground));
407
+ display: block;
408
+ box-sizing: border-box;
409
+ width: 100%;
410
+ min-height: var(--slex-playground-min-height, 16rem);
411
+ resize: none;
412
+ border: 0;
413
+ background: var(--background);
414
+ color: var(--foreground);
415
+ padding: 0;
416
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
417
+ font-size: 0.75rem;
418
+ line-height: 1.5;
419
+ outline: none;
420
+ }
421
+
422
+ .dark .slex-playground-editor {
423
+ --slex-code-keyword: color-mix(in oklab, var(--info) 72%, var(--foreground));
424
+ --slex-code-name: color-mix(in oklab, var(--foreground) 88%, var(--info));
425
+ --slex-code-string: color-mix(in oklab, var(--success) 76%, var(--foreground));
426
+ --slex-code-literal: color-mix(in oklab, var(--warning) 72%, var(--foreground));
427
+ --slex-code-function: color-mix(in oklab, var(--info) 82%, var(--foreground));
428
+ --slex-code-punctuation: color-mix(in oklab, var(--muted-foreground) 88%, var(--foreground));
429
+ --slex-code-comment: color-mix(in oklab, var(--muted-foreground) 82%, transparent);
430
+ --slex-code-heading: color-mix(in oklab, var(--foreground) 94%, var(--info));
431
+ --slex-code-link: color-mix(in oklab, var(--info) 76%, var(--foreground));
432
+ }
433
+
434
+ .dark :where(.slex-playground-editor, .slex-standalone-playground-editor) .cm-content :where([class~="ͼ5"]) {
435
+ color: var(--slex-code-comment) !important;
436
+ }
437
+
438
+ .dark :where(.slex-playground-editor, .slex-standalone-playground-editor) .cm-content :where([class~="ͼ7"]) {
439
+ color: var(--slex-code-heading) !important;
440
+ }
441
+
442
+ .dark :where(.slex-playground-editor, .slex-standalone-playground-editor) .cm-content :where([class~="ͼb"]) {
443
+ color: var(--slex-code-keyword) !important;
444
+ }
445
+
446
+ .dark :where(.slex-playground-editor, .slex-standalone-playground-editor) .cm-content :where([class~="ͼc"], [class~="ͼg"], [class~="ͼh"], [class~="ͼi"], [class~="ͼj"]) {
447
+ color: var(--slex-code-name) !important;
448
+ }
449
+
450
+ .dark :where(.slex-playground-editor, .slex-standalone-playground-editor) .cm-content :where([class~="ͼd"], [class~="ͼf"]) {
451
+ color: var(--slex-code-literal) !important;
452
+ }
453
+
454
+ .dark :where(.slex-playground-editor, .slex-standalone-playground-editor) .cm-content :where([class~="ͼe"]) {
455
+ color: var(--slex-code-string) !important;
456
+ }
457
+
458
+ .slex-playground-editor.codemirror,
459
+ .slex-playground-editor .cm-editor {
460
+ width: 100% !important;
461
+ max-width: 100% !important;
462
+ min-width: 0 !important;
463
+ height: auto;
464
+ min-height: var(--slex-playground-min-height, 16rem);
465
+ overflow: hidden;
466
+ background: var(--background);
467
+ color: var(--foreground);
468
+ }
469
+
470
+ .slex-playground-editor .cm-editor.cm-focused .cm-cursor {
471
+ border-left-color: var(--foreground);
472
+ }
473
+
474
+ .slex-playground-editor .cm-editor.cm-focused .cm-selectionBackground,
475
+ .slex-playground-editor .cm-editor .cm-selectionBackground,
476
+ .slex-playground-editor .cm-editor.cm-focused .cm-content ::selection {
477
+ background: color-mix(in oklab, var(--foreground) 18%, transparent) !important;
478
+ }
479
+
480
+ .slex-playground-editor .cm-focused {
481
+ outline: none;
482
+ }
483
+
484
+ .slex-playground-editor .cm-scroller {
485
+ box-sizing: border-box;
486
+ flex: 1 1 auto;
487
+ width: 100% !important;
488
+ max-width: 100% !important;
489
+ min-width: 0 !important;
490
+ min-height: var(--slex-playground-min-height, 16rem);
491
+ height: auto;
492
+ overflow: auto;
493
+ padding-top: var(--slex-playground-toolbar-height);
494
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
495
+ font-size: 0.8125rem;
496
+ line-height: 1.55;
497
+ }
498
+
499
+ .slex-playground-code-scroll,
500
+ .slex-playground-live-preview,
501
+ .slex-playground-editor .cm-scroller,
502
+ .slex-standalone-playground-preview,
503
+ .slex-standalone-playground-editor .cm-scroller {
504
+ scrollbar-color: color-mix(in oklab, var(--muted-foreground) 42%, transparent) transparent;
505
+ scrollbar-width: thin;
506
+ }
507
+
508
+ .slex-playground-code-scroll::-webkit-scrollbar,
509
+ .slex-playground-live-preview::-webkit-scrollbar,
510
+ .slex-playground-editor .cm-scroller::-webkit-scrollbar,
511
+ .slex-standalone-playground-preview::-webkit-scrollbar,
512
+ .slex-standalone-playground-editor .cm-scroller::-webkit-scrollbar {
513
+ width: 0.625rem;
514
+ height: 0.625rem;
515
+ }
516
+
517
+ .slex-playground-code-scroll::-webkit-scrollbar-track,
518
+ .slex-playground-live-preview::-webkit-scrollbar-track,
519
+ .slex-playground-editor .cm-scroller::-webkit-scrollbar-track,
520
+ .slex-standalone-playground-preview::-webkit-scrollbar-track,
521
+ .slex-standalone-playground-editor .cm-scroller::-webkit-scrollbar-track {
522
+ background: transparent;
523
+ }
524
+
525
+ .slex-playground-code-scroll::-webkit-scrollbar-thumb,
526
+ .slex-playground-code-scroll::-webkit-scrollbar-thumb:hover,
527
+ .slex-playground-code-scroll::-webkit-scrollbar-thumb:active,
528
+ .slex-playground-live-preview::-webkit-scrollbar-thumb,
529
+ .slex-playground-live-preview::-webkit-scrollbar-thumb:hover,
530
+ .slex-playground-live-preview::-webkit-scrollbar-thumb:active,
531
+ .slex-playground-editor .cm-scroller::-webkit-scrollbar-thumb,
532
+ .slex-playground-editor .cm-scroller::-webkit-scrollbar-thumb:hover,
533
+ .slex-playground-editor .cm-scroller::-webkit-scrollbar-thumb:active,
534
+ .slex-standalone-playground-preview::-webkit-scrollbar-thumb,
535
+ .slex-standalone-playground-preview::-webkit-scrollbar-thumb:hover,
536
+ .slex-standalone-playground-preview::-webkit-scrollbar-thumb:active,
537
+ .slex-standalone-playground-editor .cm-scroller::-webkit-scrollbar-thumb,
538
+ .slex-standalone-playground-editor .cm-scroller::-webkit-scrollbar-thumb:hover,
539
+ .slex-standalone-playground-editor .cm-scroller::-webkit-scrollbar-thumb:active {
540
+ border: 0.1875rem solid transparent;
541
+ border-radius: 999px;
542
+ background: color-mix(in oklab, var(--muted-foreground) 42%, transparent);
543
+ background-clip: content-box;
544
+ }
545
+
546
+ .slex-playground-editor .cm-editor .cm-gutters {
547
+ height: calc(var(--slex-playground-min-height, 16rem) - var(--slex-playground-toolbar-height));
548
+ }
549
+
550
+ .slex-playground-editor .cm-gutters {
551
+ height: calc(var(--slex-playground-min-height, 16rem) - var(--slex-playground-toolbar-height));
552
+ border-right: 1px solid var(--border);
553
+ background: var(--muted);
554
+ color: var(--muted-foreground);
555
+ }
556
+
557
+ .slex-playground-editor .cm-activeLine,
558
+ .slex-playground-editor .cm-activeLineGutter {
559
+ background: color-mix(in oklab, var(--accent) 42%, transparent);
560
+ }
561
+
562
+ .slex-playground-editor .cm-content {
563
+ min-height: calc(var(--slex-playground-min-height, 16rem) - var(--slex-playground-toolbar-height));
564
+ padding: 1rem 1.25rem 1.25rem;
565
+ }
566
+
567
+ .slexkit-root .sr-only,
568
+ .slex-sr-only {
569
+ position: absolute;
570
+ width: 1px;
571
+ height: 1px;
572
+ overflow: hidden;
573
+ clip: rect(0 0 0 0);
574
+ white-space: nowrap;
575
+ clip-path: inset(50%);
576
+ }
577
+
578
+ .slex-playground-error {
579
+ border-top: 1px solid var(--destructive);
580
+ background: color-mix(in oklab, var(--destructive) 10%, transparent);
581
+ color: var(--destructive);
582
+ padding: 0.75rem 1rem;
583
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
584
+ font-size: 0.75rem;
585
+ }
586
+
587
+ .slex-streamdown-block {
588
+ margin-block: 0.75rem;
589
+ }
590
+
591
+ .slex-streamdown-body {
592
+ padding: 0.75rem;
593
+ }
594
+
595
+ .slex-streamdown-error {
596
+ border: 1px dashed var(--destructive);
597
+ border-radius: calc(var(--radius) - 2px);
598
+ color: var(--destructive);
599
+ padding: 1rem;
600
+ text-align: left;
601
+ }
602
+
603
+ .slex-streamdown-error-title {
604
+ font-weight: 700;
605
+ }
606
+
607
+ .slex-streamdown-error-message {
608
+ margin-top: 0.5rem;
609
+ color: var(--foreground);
610
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
611
+ font-size: 0.8125rem;
612
+ line-height: 1.5;
613
+ }
614
+
615
+ .slex-streamdown-error-location,
616
+ .slex-streamdown-error-detail {
617
+ margin-top: 0.5rem;
618
+ color: var(--muted-foreground);
619
+ font-size: 0.8125rem;
620
+ }
621
+
622
+ .slex-streamdown-error-excerpt {
623
+ overflow: auto;
624
+ margin: 0.75rem 0 0;
625
+ border-radius: calc(var(--radius) - 2px);
626
+ background: var(--background);
627
+ color: var(--foreground);
628
+ padding: 0.75rem;
629
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
630
+ font-size: 0.8125rem;
631
+ line-height: 1.55;
632
+ white-space: pre;
633
+ }
634
+
635
+ .slex-standalone-playground {
636
+ box-sizing: border-box;
637
+ width: 100%;
638
+ height: 100svh;
639
+ min-height: 0;
640
+ overflow: hidden;
641
+ padding: 1rem;
642
+ }
643
+
644
+ .slex-playground-embedded-body .slex-standalone-playground {
645
+ height: 100svh;
646
+ padding: 0;
647
+ }
648
+
649
+ .slex-playground-embedded-body {
650
+ background: transparent;
651
+ }
652
+
653
+ .slex-standalone-playground-shell {
654
+ position: relative;
655
+ height: calc(100svh - 2rem);
656
+ min-height: calc(100svh - 2rem);
657
+ overflow: hidden;
658
+ border: 1px solid var(--border);
659
+ border-radius: var(--radius);
660
+ background: var(--background);
661
+ }
662
+
663
+ .slex-standalone-playground-toolbar {
664
+ position: absolute;
665
+ top: 0.75rem;
666
+ right: 0.75rem;
667
+ z-index: 3;
668
+ display: inline-flex;
669
+ gap: 0.25rem;
670
+ padding: 0.25rem;
671
+ border: 1px solid color-mix(in oklab, var(--border) 70%, transparent);
672
+ border-radius: var(--radius);
673
+ background: color-mix(in oklab, var(--muted) 86%, transparent);
674
+ box-shadow: var(--shadow-sm);
675
+ }
676
+
677
+ .slex-standalone-playground-button {
678
+ display: inline-grid;
679
+ width: 2.5rem;
680
+ height: 2.25rem;
681
+ place-items: center;
682
+ padding: 0;
683
+ border: 0;
684
+ border-radius: calc(var(--radius) - 2px);
685
+ background: transparent;
686
+ color: var(--muted-foreground);
687
+ font: inherit;
688
+ font-size: 0.8125rem;
689
+ font-weight: 600;
690
+ letter-spacing: 0;
691
+ cursor: pointer;
692
+ }
693
+
694
+ .slex-standalone-playground-button svg {
695
+ display: block;
696
+ width: 1.125rem;
697
+ height: 1.125rem;
698
+ fill: currentColor;
699
+ }
700
+
701
+ .slex-standalone-playground-icon {
702
+ display: inline-grid;
703
+ place-items: center;
704
+ }
705
+
706
+ .slex-standalone-playground-button:hover {
707
+ color: var(--foreground);
708
+ }
709
+
710
+ .slex-standalone-playground-button:focus-visible,
711
+ .slex-standalone-playground-editor .cm-focused {
712
+ outline: 2px solid var(--ring);
713
+ outline-offset: 2px;
714
+ }
715
+
716
+ .slex-standalone-playground-button--active {
717
+ background: var(--background);
718
+ color: var(--foreground);
719
+ box-shadow: var(--shadow-sm);
720
+ }
721
+
722
+ .slex-standalone-playground-error {
723
+ border: 1px solid var(--destructive);
724
+ border-radius: var(--radius);
725
+ background: color-mix(in oklab, var(--destructive) 6%, var(--background));
726
+ color: var(--destructive);
727
+ padding: 1rem;
728
+ box-shadow: var(--shadow-sm);
729
+ }
730
+
731
+ .slex-standalone-playground-error-title {
732
+ color: var(--destructive);
733
+ font-size: 1rem;
734
+ font-weight: 700;
735
+ }
736
+
737
+ .slex-standalone-playground-error-message {
738
+ margin-top: 0.5rem;
739
+ color: var(--foreground);
740
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
741
+ font-size: 0.8125rem;
742
+ line-height: 1.5;
743
+ }
744
+
745
+ .slex-standalone-playground-error-location,
746
+ .slex-standalone-playground-error-detail {
747
+ margin-top: 0.5rem;
748
+ color: var(--muted-foreground);
749
+ font-size: 0.8125rem;
750
+ }
751
+
752
+ .slex-standalone-playground-error-excerpt {
753
+ overflow: auto;
754
+ margin: 0.75rem 0 0;
755
+ border-radius: calc(var(--radius) - 2px);
756
+ background: var(--background);
757
+ color: var(--foreground);
758
+ padding: 0.75rem;
759
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
760
+ font-size: 0.8125rem;
761
+ line-height: 1.55;
762
+ }
763
+
764
+ .slex-standalone-playground-surface {
765
+ box-sizing: border-box;
766
+ height: calc(100svh - 2rem);
767
+ min-height: calc(100svh - 2rem);
768
+ overflow: hidden;
769
+ }
770
+
771
+ .slex-standalone-playground-surface:not(.slex-standalone-playground-surface--split) {
772
+ display: block;
773
+ }
774
+
775
+ .slex-standalone-playground-pane {
776
+ box-sizing: border-box;
777
+ min-width: 0;
778
+ min-height: 0;
779
+ height: 100%;
780
+ overflow: hidden;
781
+ }
782
+
783
+ .slex-standalone-playground-surface--split,
784
+ .slex-standalone-playground-surface--split > .split-pane-pane {
785
+ display: grid;
786
+ height: 100%;
787
+ min-height: 0;
788
+ }
789
+
790
+ .slex-standalone-playground-splitter {
791
+ position: relative;
792
+ background: var(--border);
793
+ touch-action: none;
794
+ transition: background-color 120ms ease;
795
+ }
796
+
797
+ .slex-standalone-playground-splitter:focus-visible {
798
+ background: color-mix(in oklab, var(--ring) 28%, var(--border));
799
+ outline: 2px solid var(--ring);
800
+ outline-offset: -2px;
801
+ }
802
+
803
+ .slex-standalone-playground-splitter.dragging {
804
+ background: var(--ring);
805
+ outline: none;
806
+ }
807
+
808
+ .slex-standalone-playground-surface--split.horizontal .slex-standalone-playground-splitter {
809
+ width: 100%;
810
+ height: 100%;
811
+ }
812
+
813
+ .slex-standalone-playground-surface--split.vertical .slex-standalone-playground-splitter {
814
+ width: 100%;
815
+ height: 100%;
816
+ }
817
+
818
+ .slex-standalone-playground-code,
819
+ .slex-standalone-playground-preview {
820
+ box-sizing: border-box;
821
+ min-width: 0;
822
+ min-height: 0;
823
+ height: 100%;
824
+ }
825
+
826
+ .slex-standalone-playground-code {
827
+ background: var(--background);
828
+ }
829
+
830
+ .slex-standalone-playground-code .codemirror {
831
+ display: block;
832
+ width: 100%;
833
+ height: 100%;
834
+ }
835
+
836
+ .slex-standalone-playground-editor {
837
+ --slex-code-keyword: color-mix(in oklab, var(--info) 82%, var(--foreground));
838
+ --slex-code-name: color-mix(in oklab, var(--foreground) 84%, var(--muted-foreground));
839
+ --slex-code-string: color-mix(in oklab, var(--success) 82%, var(--foreground));
840
+ --slex-code-literal: color-mix(in oklab, var(--warning) 82%, var(--foreground));
841
+ --slex-code-function: color-mix(in oklab, var(--info) 64%, var(--foreground));
842
+ --slex-code-punctuation: color-mix(in oklab, var(--muted-foreground) 82%, var(--foreground));
843
+ --slex-code-comment: color-mix(in oklab, var(--muted-foreground) 76%, transparent);
844
+ --slex-code-heading: color-mix(in oklab, var(--foreground) 92%, var(--info));
845
+ --slex-code-link: color-mix(in oklab, var(--info) 86%, var(--foreground));
846
+ display: block;
847
+ box-sizing: border-box;
848
+ width: 100%;
849
+ height: 100%;
850
+ min-height: 100%;
851
+ border: 0;
852
+ background: var(--background);
853
+ color: var(--foreground);
854
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
855
+ font-size: 0.8125rem;
856
+ line-height: 1.55;
857
+ outline: none;
858
+ }
859
+
860
+ .dark .slex-standalone-playground-editor {
861
+ --slex-code-keyword: color-mix(in oklab, var(--info) 72%, var(--foreground));
862
+ --slex-code-name: color-mix(in oklab, var(--foreground) 88%, var(--info));
863
+ --slex-code-string: color-mix(in oklab, var(--success) 76%, var(--foreground));
864
+ --slex-code-literal: color-mix(in oklab, var(--warning) 72%, var(--foreground));
865
+ --slex-code-function: color-mix(in oklab, var(--info) 82%, var(--foreground));
866
+ --slex-code-punctuation: color-mix(in oklab, var(--muted-foreground) 88%, var(--foreground));
867
+ --slex-code-comment: color-mix(in oklab, var(--muted-foreground) 82%, transparent);
868
+ --slex-code-heading: color-mix(in oklab, var(--foreground) 94%, var(--info));
869
+ --slex-code-link: color-mix(in oklab, var(--info) 76%, var(--foreground));
870
+ }
871
+
872
+ .slex-standalone-playground-editor .cm-editor {
873
+ height: 100%;
874
+ background: var(--background);
875
+ color: var(--foreground);
876
+ font-size: 0.8125rem;
877
+ }
878
+
879
+ .slex-standalone-playground-editor .cm-editor.cm-focused .cm-cursor {
880
+ border-left-color: var(--foreground);
881
+ }
882
+
883
+ .slex-standalone-playground-editor .cm-editor.cm-focused .cm-selectionBackground,
884
+ .slex-standalone-playground-editor .cm-editor .cm-selectionBackground,
885
+ .slex-standalone-playground-editor .cm-editor.cm-focused .cm-content ::selection {
886
+ background: color-mix(in oklab, var(--foreground) 18%, transparent) !important;
887
+ }
888
+
889
+ .slex-standalone-playground-editor .cm-scroller {
890
+ padding-top: 0.75rem;
891
+ font-family: var(--font-mono, "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code", Consolas, monospace);
892
+ line-height: 1.55;
893
+ }
894
+
895
+ .slex-standalone-playground-editor .cm-gutters {
896
+ border-right: 1px solid var(--border);
897
+ background: var(--muted);
898
+ color: var(--muted-foreground);
899
+ }
900
+
901
+ .slex-standalone-playground-editor .cm-activeLine,
902
+ .slex-standalone-playground-editor .cm-activeLineGutter {
903
+ background: color-mix(in oklab, var(--muted) 58%, transparent);
904
+ }
905
+
906
+ .slex-standalone-playground-editor .cm-content {
907
+ padding: 0 1.25rem 1.25rem;
908
+ }
909
+
910
+ .slex-standalone-playground-preview {
911
+ overflow: auto;
912
+ scrollbar-gutter: stable both-edges;
913
+ padding: 4rem 1.25rem 1.25rem;
914
+ background-color: var(--background);
915
+ background-image: radial-gradient(color-mix(in oklab, var(--border) 78%, transparent) 1px, transparent 1px);
916
+ background-position: 0 0;
917
+ background-size: 18px 18px;
918
+ }
919
+
920
+ .slex-standalone-playground-preview-inner {
921
+ display: grid;
922
+ gap: var(--slex-preview-document-gap, 1rem);
923
+ align-content: center;
924
+ width: 100%;
925
+ max-width: 760px;
926
+ margin: 0 auto;
927
+ }
928
+
929
+ .slex-standalone-playground-shell[data-mode="render"] .slex-standalone-playground-preview-inner {
930
+ max-width: 900px;
931
+ }
932
+
933
+ @media (max-width: 640px) {
934
+ .slex-playground {
935
+ border-radius: 0.75rem;
936
+ }
937
+
938
+ .slex-playground-chrome {
939
+ padding: 0;
940
+ }
941
+
942
+ .slex-playground-actions .slex-button {
943
+ width: var(--slex-playground-toolbar-height);
944
+ height: var(--slex-playground-toolbar-height);
945
+ }
946
+
947
+ .slex-playground-preview-pane {
948
+ padding: 1.25rem;
949
+ padding-top: calc(var(--slex-playground-toolbar-height) + 1.25rem);
950
+ }
951
+
952
+ .slex-playground-live-pane {
953
+ grid-template-columns: 1fr;
954
+ }
955
+
956
+ .slex-playground-live-code {
957
+ border-right: 0;
958
+ border-bottom: 1px solid color-mix(in oklab, var(--border) 58%, transparent);
959
+ }
960
+
961
+ .slex-playground-live-preview {
962
+ padding: calc(var(--slex-playground-toolbar-height) + 1.25rem) 1.25rem 1.25rem;
963
+ }
964
+
965
+ .slex-playground-source-picker {
966
+ width: 6.75rem;
967
+ min-width: 6.75rem;
968
+ }
969
+
970
+ .slex-playground-code-lines {
971
+ padding-top: calc(var(--slex-playground-toolbar-height) + 1rem);
972
+ }
973
+
974
+ .slex-standalone-playground {
975
+ padding: 0;
976
+ }
977
+
978
+ .slex-standalone-playground-shell {
979
+ height: 100svh;
980
+ min-height: 100svh;
981
+ border-width: 0;
982
+ border-radius: 0;
983
+ }
984
+
985
+ .slex-standalone-playground-toolbar {
986
+ right: 0.5rem;
987
+ }
988
+
989
+ .slex-standalone-playground-button {
990
+ width: 2.375rem;
991
+ }
992
+
993
+ .slex-standalone-playground-surface {
994
+ height: 100svh;
995
+ min-height: 100svh;
996
+ }
997
+
998
+ .slex-standalone-playground-editor {
999
+ min-height: 100%;
1000
+ }
1001
+
1002
+ .slex-standalone-playground-editor .cm-scroller {
1003
+ padding-top: 0.75rem;
1004
+ }
1005
+
1006
+ .slex-standalone-playground-editor .cm-content {
1007
+ padding: 0 1rem 1rem;
1008
+ }
1009
+ }