@reopt-ai/opt-ui 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/COMPONENT_CATALOG.md +3000 -0
  3. package/LICENSE +21 -0
  4. package/README.md +244 -0
  5. package/dist/chunk-3GWWZKX7.js +38 -0
  6. package/dist/chunk-AFF2HPE5.cjs +5008 -0
  7. package/dist/chunk-ELWICXYY.js +4745 -0
  8. package/dist/chunk-N4NDU5ET.cjs +4745 -0
  9. package/dist/chunk-ONE3C5RV.cjs +38 -0
  10. package/dist/chunk-QWBHD54V.js +3218 -0
  11. package/dist/chunk-RBM2RNC2.js +5008 -0
  12. package/dist/chunk-X5WCXJAF.cjs +3218 -0
  13. package/dist/core/index.cjs +324 -0
  14. package/dist/core/index.d.cts +5 -0
  15. package/dist/core/index.d.ts +5 -0
  16. package/dist/core/index.js +324 -0
  17. package/dist/docs/01-getting-started.md +129 -0
  18. package/dist/docs/02-components/01-core.md +1841 -0
  19. package/dist/docs/02-components/02-visuals.md +11 -0
  20. package/dist/docs/02-components/03-shells.md +1361 -0
  21. package/dist/docs/02-components/04-surfaces.md +11 -0
  22. package/dist/docs/02-components/index.md +106 -0
  23. package/dist/docs/03-recipes/01-forms.md +471 -0
  24. package/dist/docs/03-recipes/02-dashboards.md +397 -0
  25. package/dist/docs/03-recipes/03-layouts.md +424 -0
  26. package/dist/docs/04-theming.md +232 -0
  27. package/dist/docs/05-migration/01-breaking-changes.md +117 -0
  28. package/dist/docs/05-migration/02-formstore.md +336 -0
  29. package/dist/docs/06-troubleshooting.md +119 -0
  30. package/dist/docs/index.md +71 -0
  31. package/dist/id-registry.cjs +1875 -0
  32. package/dist/id-registry.d.cts +27 -0
  33. package/dist/id-registry.d.ts +27 -0
  34. package/dist/id-registry.js +1875 -0
  35. package/dist/id-registry.json +3799 -0
  36. package/dist/index-BZ_lBlO1.d.ts +474 -0
  37. package/dist/index-BuvxoWHf.d.cts +474 -0
  38. package/dist/index-DlAcuvQp.d.cts +1686 -0
  39. package/dist/index-Slu5hOj1.d.ts +1686 -0
  40. package/dist/index.cjs +9959 -0
  41. package/dist/index.d.cts +2351 -0
  42. package/dist/index.d.ts +2351 -0
  43. package/dist/index.js +9959 -0
  44. package/dist/meta.cjs +6898 -0
  45. package/dist/meta.d.cts +36 -0
  46. package/dist/meta.d.ts +36 -0
  47. package/dist/meta.js +6869 -0
  48. package/dist/shells/index.cjs +65 -0
  49. package/dist/shells/index.d.cts +5 -0
  50. package/dist/shells/index.d.ts +5 -0
  51. package/dist/shells/index.js +65 -0
  52. package/dist/tailwind.css +401 -0
  53. package/dist/theme/presets/default.css +355 -0
  54. package/dist/theme/presets/minimal.css +354 -0
  55. package/dist/theme/presets/mono-dark.css +354 -0
  56. package/dist/theme/presets/natural.css +181 -0
  57. package/dist/theme/presets/pro.css +354 -0
  58. package/dist/types-D4-0lwaE.d.cts +298 -0
  59. package/dist/types-D4-0lwaE.d.ts +298 -0
  60. package/dist/visuals/index.cjs +4 -0
  61. package/dist/visuals/index.d.cts +1 -0
  62. package/dist/visuals/index.d.ts +1 -0
  63. package/dist/visuals/index.js +4 -0
  64. package/package.json +165 -0
@@ -0,0 +1,354 @@
1
+ /* AUTOGENERATED by scripts/gen-theme-css.ts — DO NOT EDIT.
2
+ Edit the source token map in presets/tokens.ts and re-run:
3
+ bun run --filter @reopt-ai/opt-ui gen:theme-css
4
+ */
5
+
6
+ /* ── Mono Dark Theme ── */
7
+
8
+ [data-theme="mono-dark"] {
9
+ /* Surface */
10
+ --opt-surface: #ffffff;
11
+ --opt-surface-raised: #ffffff;
12
+ --opt-surface-overlay: #ffffff;
13
+ --opt-surface-input: hsl(220 15% 95%);
14
+ --opt-surface-input-hover: hsl(220 15% 92%);
15
+ --opt-surface-inset: hsl(220 12% 97%);
16
+
17
+ /* Accent */
18
+ --opt-accent: hsl(190 100% 38%);
19
+ --opt-accent-hover: hsl(190 100% 32%);
20
+ --opt-accent-active: hsl(190 100% 26%);
21
+ --opt-accent-subtle: hsl(190 100% 38% / 0.08);
22
+ --opt-accent-fg: #ffffff;
23
+
24
+ /* Text */
25
+ --opt-text-body-size: var(--opt-font-size-sm);
26
+ --opt-text-body-weight: var(--opt-font-weight-normal);
27
+ --opt-text-body-leading: 1.5;
28
+ --opt-text-label-size: var(--opt-font-size-sm);
29
+ --opt-text-label-weight: var(--opt-font-weight-medium);
30
+ --opt-text-label-leading: 1.25;
31
+ --opt-text-supporting-size: var(--opt-font-size-xs);
32
+ --opt-text-supporting-weight: var(--opt-font-weight-normal);
33
+ --opt-text-supporting-leading: 1.5;
34
+ --opt-text-code-size: var(--opt-font-size-sm);
35
+ --opt-text-code-weight: var(--opt-font-weight-normal);
36
+ --opt-text-code-leading: 1.5;
37
+ --opt-text-heading-1-size: var(--opt-font-size-3xl);
38
+ --opt-text-heading-1-weight: var(--opt-font-weight-semibold);
39
+ --opt-text-heading-1-leading: 1.2;
40
+ --opt-text-heading-2-size: var(--opt-font-size-2xl);
41
+ --opt-text-heading-2-weight: var(--opt-font-weight-semibold);
42
+ --opt-text-heading-2-leading: 1.25;
43
+ --opt-text-heading-3-size: var(--opt-font-size-xl);
44
+ --opt-text-heading-3-weight: var(--opt-font-weight-semibold);
45
+ --opt-text-heading-3-leading: 1.3;
46
+ --opt-text-heading-4-size: var(--opt-font-size-lg);
47
+ --opt-text-heading-4-weight: var(--opt-font-weight-semibold);
48
+ --opt-text-heading-4-leading: 1.35;
49
+ --opt-text-heading-5-size: var(--opt-font-size-base);
50
+ --opt-text-heading-5-weight: var(--opt-font-weight-semibold);
51
+ --opt-text-heading-5-leading: 1.4;
52
+ --opt-text-heading-6-size: var(--opt-font-size-sm);
53
+ --opt-text-heading-6-weight: var(--opt-font-weight-semibold);
54
+ --opt-text-heading-6-leading: 1.5;
55
+ --opt-text-display-1-size: var(--opt-font-size-4xl);
56
+ --opt-text-display-1-weight: var(--opt-font-weight-normal);
57
+ --opt-text-display-1-leading: 1.1;
58
+ --opt-text-display-2-size: var(--opt-font-size-3xl);
59
+ --opt-text-display-2-weight: var(--opt-font-weight-normal);
60
+ --opt-text-display-2-leading: 1.15;
61
+ --opt-text-display-3-size: var(--opt-font-size-2xl);
62
+ --opt-text-display-3-weight: var(--opt-font-weight-normal);
63
+ --opt-text-display-3-leading: 1.2;
64
+ --opt-text: hsl(220 15% 12%);
65
+ --opt-text-secondary: hsl(220 10% 38%);
66
+ --opt-text-tertiary: hsl(220 8% 52%);
67
+
68
+ /* Border */
69
+ --opt-border-width: 1px;
70
+ --opt-border: hsl(220 12% 88%);
71
+ --opt-border-hover: hsl(220 12% 70%);
72
+ --opt-border-subtle: hsl(220 12% 93%);
73
+
74
+ /* Focus */
75
+ --opt-ring: hsl(190 100% 38%);
76
+ --opt-ring-offset: #ffffff;
77
+
78
+ /* Background */
79
+ --opt-bg: hsl(220 15% 98%);
80
+ --opt-bg-subtle: hsl(220 15% 95%);
81
+ --opt-bg-muted: hsl(220 15% 90%);
82
+
83
+ /* Status */
84
+ --opt-success: hsl(155 80% 38%);
85
+ --opt-success-subtle: hsl(155 60% 94%);
86
+ --opt-success-fg: hsl(155 80% 24%);
87
+ --opt-warning: hsl(38 95% 48%);
88
+ --opt-warning-subtle: hsl(45 90% 93%);
89
+ --opt-warning-fg: hsl(38 95% 30%);
90
+ --opt-danger: hsl(355 80% 52%);
91
+ --opt-danger-subtle: hsl(355 75% 95%);
92
+ --opt-danger-fg: hsl(355 80% 36%);
93
+ --opt-info: hsl(190 100% 38%);
94
+ --opt-info-subtle: hsl(190 90% 94%);
95
+ --opt-info-fg: hsl(190 100% 26%);
96
+
97
+ /* Chart */
98
+ --opt-chart-6: color-mix(in oklch, var(--opt-chart-1) 62%, var(--opt-chart-2));
99
+ --opt-chart-7: color-mix(in oklch, var(--opt-chart-2) 62%, var(--opt-chart-3));
100
+ --opt-chart-8: color-mix(in oklch, var(--opt-chart-3) 62%, var(--opt-chart-4));
101
+ --opt-chart-9: color-mix(in oklch, var(--opt-chart-4) 62%, var(--opt-chart-5));
102
+ --opt-chart-10: color-mix(in oklch, var(--opt-chart-5) 62%, var(--opt-chart-1));
103
+ --opt-chart-11: color-mix(in oklch, var(--opt-chart-1) 55%, var(--opt-chart-3));
104
+ --opt-chart-12: color-mix(in oklch, var(--opt-chart-2) 55%, var(--opt-chart-4));
105
+ --opt-chart-13: color-mix(in oklch, var(--opt-chart-3) 55%, var(--opt-chart-5));
106
+ --opt-chart-14: color-mix(in oklch, var(--opt-chart-4) 55%, var(--opt-chart-1));
107
+ --opt-chart-15: color-mix(in oklch, var(--opt-chart-5) 55%, var(--opt-chart-2));
108
+ --opt-chart-16: color-mix(in oklch, var(--opt-chart-1) 35%, var(--opt-chart-4));
109
+ --opt-chart-sequential-1: color-mix(in oklch, var(--opt-chart-1) 18%, var(--opt-surface));
110
+ --opt-chart-sequential-2: color-mix(in oklch, var(--opt-chart-1) 36%, var(--opt-surface));
111
+ --opt-chart-sequential-3: color-mix(in oklch, var(--opt-chart-1) 54%, var(--opt-surface));
112
+ --opt-chart-sequential-4: color-mix(in oklch, var(--opt-chart-1) 76%, var(--opt-surface));
113
+ --opt-chart-sequential-5: var(--opt-chart-1);
114
+ --opt-chart-diverging-negative: var(--opt-danger);
115
+ --opt-chart-diverging-neutral: var(--opt-text-tertiary);
116
+ --opt-chart-diverging-positive: var(--opt-success);
117
+ --opt-chart-1: hsl(190 100% 42%);
118
+ --opt-chart-2: hsl(280 90% 60%);
119
+ --opt-chart-3: hsl(155 80% 42%);
120
+ --opt-chart-4: hsl(38 95% 48%);
121
+ --opt-chart-5: hsl(330 85% 55%);
122
+
123
+ /* Radius */
124
+ --opt-radius-sm: 0.125rem;
125
+ --opt-radius-md: 0.25rem;
126
+ --opt-radius-lg: 0.375rem;
127
+ --opt-radius-xl: 0.5rem;
128
+
129
+ /* Shadow */
130
+ --opt-shadow-sm: 0 1px 2px rgba(0, 90, 130, 0.05);
131
+ --opt-shadow-md: 0 2px 5px rgba(0, 90, 130, 0.07);
132
+ --opt-shadow-lg: 0 6px 14px rgba(0, 90, 130, 0.09);
133
+
134
+ /* Spacing */
135
+ --opt-space-0: 0px;
136
+ --opt-space-0-5: 0.125rem;
137
+ --opt-space-1: 0.25rem;
138
+ --opt-space-1-5: 0.375rem;
139
+ --opt-space-2: 0.5rem;
140
+ --opt-space-3: 0.75rem;
141
+ --opt-space-4: 1rem;
142
+ --opt-space-5: 1.25rem;
143
+ --opt-space-6: 1.5rem;
144
+ --opt-space-8: 2rem;
145
+ --opt-space-section: 0.75rem;
146
+ --opt-space-group: 0.5rem;
147
+ --opt-space-element: 0.25rem;
148
+
149
+ /* Typography */
150
+ --opt-font-code: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
151
+ --opt-font-size-xs: 0.75rem;
152
+ --opt-font-size-sm: 0.875rem;
153
+ --opt-font-size-base: 1rem;
154
+ --opt-font-size-lg: 1.125rem;
155
+ --opt-font-size-xl: 1.25rem;
156
+ --opt-font-size-2xl: 1.5rem;
157
+ --opt-font-size-3xl: 1.875rem;
158
+ --opt-font-size-4xl: 2.25rem;
159
+ --opt-font-weight-normal: 400;
160
+ --opt-font-weight-medium: 500;
161
+ --opt-font-weight-semibold: 600;
162
+ --opt-font-weight-bold: 700;
163
+ --opt-font-heading: var(--font-geist-mono), ui-monospace, monospace;
164
+ --opt-font-body: var(--font-geist-sans), system-ui, sans-serif;
165
+ --opt-tracking-heading: 0.02em;
166
+ --opt-weight-heading: 500;
167
+
168
+ /* Other */
169
+ --opt-control-sm: 2rem;
170
+ --opt-control-md: 2.5rem;
171
+ --opt-control-lg: 3rem;
172
+ --opt-control-padding-sm: 0.75rem;
173
+ --opt-control-padding-md: 1rem;
174
+ --opt-control-padding-lg: 1.5rem;
175
+ --opt-duration-fast: 150ms;
176
+ --opt-duration-medium: 250ms;
177
+ --opt-duration-slow: 400ms;
178
+ --opt-ease-standard: cubic-bezier(0.2, 0, 0, 1);
179
+ --opt-ease-emphasized: cubic-bezier(0.2, 0.8, 0.2, 1);
180
+ }
181
+
182
+ [data-theme="mono-dark-dark"] {
183
+ /* Surface */
184
+ --opt-surface: #0a0a0a;
185
+ --opt-surface-raised: #111111;
186
+ --opt-surface-overlay: #161616;
187
+ --opt-surface-input: #050505;
188
+ --opt-surface-input-hover: #030303;
189
+ --opt-surface-inset: rgba(0, 200, 255, 0.025);
190
+
191
+ /* Accent */
192
+ --opt-accent: hsl(190 100% 55%);
193
+ --opt-accent-hover: hsl(190 100% 65%);
194
+ --opt-accent-active: hsl(190 100% 72%);
195
+ --opt-accent-subtle: hsl(190 100% 55% / 0.15);
196
+ --opt-accent-fg: #000000;
197
+
198
+ /* Text */
199
+ --opt-text-body-size: var(--opt-font-size-sm);
200
+ --opt-text-body-weight: var(--opt-font-weight-normal);
201
+ --opt-text-body-leading: 1.5;
202
+ --opt-text-label-size: var(--opt-font-size-sm);
203
+ --opt-text-label-weight: var(--opt-font-weight-medium);
204
+ --opt-text-label-leading: 1.25;
205
+ --opt-text-supporting-size: var(--opt-font-size-xs);
206
+ --opt-text-supporting-weight: var(--opt-font-weight-normal);
207
+ --opt-text-supporting-leading: 1.5;
208
+ --opt-text-code-size: var(--opt-font-size-sm);
209
+ --opt-text-code-weight: var(--opt-font-weight-normal);
210
+ --opt-text-code-leading: 1.5;
211
+ --opt-text-heading-1-size: var(--opt-font-size-3xl);
212
+ --opt-text-heading-1-weight: var(--opt-font-weight-semibold);
213
+ --opt-text-heading-1-leading: 1.2;
214
+ --opt-text-heading-2-size: var(--opt-font-size-2xl);
215
+ --opt-text-heading-2-weight: var(--opt-font-weight-semibold);
216
+ --opt-text-heading-2-leading: 1.25;
217
+ --opt-text-heading-3-size: var(--opt-font-size-xl);
218
+ --opt-text-heading-3-weight: var(--opt-font-weight-semibold);
219
+ --opt-text-heading-3-leading: 1.3;
220
+ --opt-text-heading-4-size: var(--opt-font-size-lg);
221
+ --opt-text-heading-4-weight: var(--opt-font-weight-semibold);
222
+ --opt-text-heading-4-leading: 1.35;
223
+ --opt-text-heading-5-size: var(--opt-font-size-base);
224
+ --opt-text-heading-5-weight: var(--opt-font-weight-semibold);
225
+ --opt-text-heading-5-leading: 1.4;
226
+ --opt-text-heading-6-size: var(--opt-font-size-sm);
227
+ --opt-text-heading-6-weight: var(--opt-font-weight-semibold);
228
+ --opt-text-heading-6-leading: 1.5;
229
+ --opt-text-display-1-size: var(--opt-font-size-4xl);
230
+ --opt-text-display-1-weight: var(--opt-font-weight-normal);
231
+ --opt-text-display-1-leading: 1.1;
232
+ --opt-text-display-2-size: var(--opt-font-size-3xl);
233
+ --opt-text-display-2-weight: var(--opt-font-weight-normal);
234
+ --opt-text-display-2-leading: 1.15;
235
+ --opt-text-display-3-size: var(--opt-font-size-2xl);
236
+ --opt-text-display-3-weight: var(--opt-font-weight-normal);
237
+ --opt-text-display-3-leading: 1.2;
238
+ --opt-text: hsl(220 12% 94%);
239
+ --opt-text-secondary: hsl(220 10% 64%);
240
+ --opt-text-tertiary: hsl(220 8% 44%);
241
+
242
+ /* Border */
243
+ --opt-border-width: 1px;
244
+ --opt-border: rgba(255, 255, 255, 0.1);
245
+ --opt-border-hover: rgba(255, 255, 255, 0.25);
246
+ --opt-border-subtle: rgba(255, 255, 255, 0.05);
247
+
248
+ /* Focus */
249
+ --opt-ring: hsl(190 100% 55%);
250
+ --opt-ring-offset: #0a0a0a;
251
+
252
+ /* Background */
253
+ --opt-bg: #000000;
254
+ --opt-bg-subtle: #050505;
255
+ --opt-bg-muted: #0d0d0d;
256
+
257
+ /* Status */
258
+ --opt-success: hsl(150 90% 50%);
259
+ --opt-success-subtle: hsl(150 90% 50% / 0.15);
260
+ --opt-success-fg: hsl(150 80% 75%);
261
+ --opt-warning: hsl(38 100% 55%);
262
+ --opt-warning-subtle: hsl(38 100% 55% / 0.15);
263
+ --opt-warning-fg: hsl(48 100% 78%);
264
+ --opt-danger: hsl(355 90% 60%);
265
+ --opt-danger-subtle: hsl(355 90% 60% / 0.15);
266
+ --opt-danger-fg: hsl(355 90% 78%);
267
+ --opt-info: hsl(190 100% 55%);
268
+ --opt-info-subtle: hsl(190 100% 55% / 0.15);
269
+ --opt-info-fg: hsl(190 100% 78%);
270
+
271
+ /* Chart */
272
+ --opt-chart-6: color-mix(in oklch, var(--opt-chart-1) 62%, var(--opt-chart-2));
273
+ --opt-chart-7: color-mix(in oklch, var(--opt-chart-2) 62%, var(--opt-chart-3));
274
+ --opt-chart-8: color-mix(in oklch, var(--opt-chart-3) 62%, var(--opt-chart-4));
275
+ --opt-chart-9: color-mix(in oklch, var(--opt-chart-4) 62%, var(--opt-chart-5));
276
+ --opt-chart-10: color-mix(in oklch, var(--opt-chart-5) 62%, var(--opt-chart-1));
277
+ --opt-chart-11: color-mix(in oklch, var(--opt-chart-1) 55%, var(--opt-chart-3));
278
+ --opt-chart-12: color-mix(in oklch, var(--opt-chart-2) 55%, var(--opt-chart-4));
279
+ --opt-chart-13: color-mix(in oklch, var(--opt-chart-3) 55%, var(--opt-chart-5));
280
+ --opt-chart-14: color-mix(in oklch, var(--opt-chart-4) 55%, var(--opt-chart-1));
281
+ --opt-chart-15: color-mix(in oklch, var(--opt-chart-5) 55%, var(--opt-chart-2));
282
+ --opt-chart-16: color-mix(in oklch, var(--opt-chart-1) 35%, var(--opt-chart-4));
283
+ --opt-chart-sequential-1: color-mix(in oklch, var(--opt-chart-1) 18%, var(--opt-surface));
284
+ --opt-chart-sequential-2: color-mix(in oklch, var(--opt-chart-1) 36%, var(--opt-surface));
285
+ --opt-chart-sequential-3: color-mix(in oklch, var(--opt-chart-1) 54%, var(--opt-surface));
286
+ --opt-chart-sequential-4: color-mix(in oklch, var(--opt-chart-1) 76%, var(--opt-surface));
287
+ --opt-chart-sequential-5: var(--opt-chart-1);
288
+ --opt-chart-diverging-negative: var(--opt-danger);
289
+ --opt-chart-diverging-neutral: var(--opt-text-tertiary);
290
+ --opt-chart-diverging-positive: var(--opt-success);
291
+ --opt-chart-1: hsl(190 100% 60%);
292
+ --opt-chart-2: hsl(280 95% 70%);
293
+ --opt-chart-3: hsl(150 90% 55%);
294
+ --opt-chart-4: hsl(38 100% 58%);
295
+ --opt-chart-5: hsl(330 90% 65%);
296
+
297
+ /* Radius */
298
+ --opt-radius-sm: 0.125rem;
299
+ --opt-radius-md: 0.25rem;
300
+ --opt-radius-lg: 0.375rem;
301
+ --opt-radius-xl: 0.5rem;
302
+
303
+ /* Shadow */
304
+ --opt-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5);
305
+ --opt-shadow-md: 0 4px 8px rgba(0, 0, 0, 0.6);
306
+ --opt-shadow-lg: 0 10px 20px rgba(0, 0, 0, 0.7);
307
+
308
+ /* Spacing */
309
+ --opt-space-0: 0px;
310
+ --opt-space-0-5: 0.125rem;
311
+ --opt-space-1: 0.25rem;
312
+ --opt-space-1-5: 0.375rem;
313
+ --opt-space-2: 0.5rem;
314
+ --opt-space-3: 0.75rem;
315
+ --opt-space-4: 1rem;
316
+ --opt-space-5: 1.25rem;
317
+ --opt-space-6: 1.5rem;
318
+ --opt-space-8: 2rem;
319
+ --opt-space-section: 0.75rem;
320
+ --opt-space-group: 0.5rem;
321
+ --opt-space-element: 0.25rem;
322
+
323
+ /* Typography */
324
+ --opt-font-code: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
325
+ --opt-font-size-xs: 0.75rem;
326
+ --opt-font-size-sm: 0.875rem;
327
+ --opt-font-size-base: 1rem;
328
+ --opt-font-size-lg: 1.125rem;
329
+ --opt-font-size-xl: 1.25rem;
330
+ --opt-font-size-2xl: 1.5rem;
331
+ --opt-font-size-3xl: 1.875rem;
332
+ --opt-font-size-4xl: 2.25rem;
333
+ --opt-font-weight-normal: 400;
334
+ --opt-font-weight-medium: 500;
335
+ --opt-font-weight-semibold: 600;
336
+ --opt-font-weight-bold: 700;
337
+ --opt-font-heading: var(--font-geist-mono), ui-monospace, monospace;
338
+ --opt-font-body: var(--font-geist-sans), system-ui, sans-serif;
339
+ --opt-tracking-heading: 0.02em;
340
+ --opt-weight-heading: 500;
341
+
342
+ /* Other */
343
+ --opt-control-sm: 2rem;
344
+ --opt-control-md: 2.5rem;
345
+ --opt-control-lg: 3rem;
346
+ --opt-control-padding-sm: 0.75rem;
347
+ --opt-control-padding-md: 1rem;
348
+ --opt-control-padding-lg: 1.5rem;
349
+ --opt-duration-fast: 150ms;
350
+ --opt-duration-medium: 250ms;
351
+ --opt-duration-slow: 400ms;
352
+ --opt-ease-standard: cubic-bezier(0.2, 0, 0, 1);
353
+ --opt-ease-emphasized: cubic-bezier(0.2, 0.8, 0.2, 1);
354
+ }
@@ -0,0 +1,181 @@
1
+ /* AUTOGENERATED by scripts/gen-theme-css.ts — DO NOT EDIT.
2
+ Edit the source token map in presets/tokens.ts and re-run:
3
+ bun run --filter @reopt-ai/opt-ui gen:theme-css
4
+ */
5
+
6
+ /* ── Natural Theme ── */
7
+ /* force-light: no dark variant */
8
+
9
+ [data-theme="natural"] {
10
+ /* Surface */
11
+ --opt-surface: #faf6f0;
12
+ --opt-surface-raised: #fffdf9;
13
+ --opt-surface-overlay: #fffdf9;
14
+ --opt-surface-input: hsl(35 35% 93%);
15
+ --opt-surface-input-hover: hsl(35 35% 90%);
16
+ --opt-surface-inset: hsl(35 25% 95%);
17
+
18
+ /* Accent */
19
+ --opt-accent: hsl(155 38% 45%);
20
+ --opt-accent-hover: hsl(155 38% 38%);
21
+ --opt-accent-active: hsl(155 38% 32%);
22
+ --opt-accent-subtle: hsl(155 38% 45% / 0.1);
23
+ --opt-accent-fg: #ffffff;
24
+
25
+ /* Text */
26
+ --opt-text-body-size: var(--opt-font-size-sm);
27
+ --opt-text-body-weight: var(--opt-font-weight-normal);
28
+ --opt-text-body-leading: 1.5;
29
+ --opt-text-label-size: var(--opt-font-size-sm);
30
+ --opt-text-label-weight: var(--opt-font-weight-medium);
31
+ --opt-text-label-leading: 1.25;
32
+ --opt-text-supporting-size: var(--opt-font-size-xs);
33
+ --opt-text-supporting-weight: var(--opt-font-weight-normal);
34
+ --opt-text-supporting-leading: 1.5;
35
+ --opt-text-code-size: var(--opt-font-size-sm);
36
+ --opt-text-code-weight: var(--opt-font-weight-normal);
37
+ --opt-text-code-leading: 1.5;
38
+ --opt-text-heading-1-size: var(--opt-font-size-3xl);
39
+ --opt-text-heading-1-weight: var(--opt-font-weight-semibold);
40
+ --opt-text-heading-1-leading: 1.2;
41
+ --opt-text-heading-2-size: var(--opt-font-size-2xl);
42
+ --opt-text-heading-2-weight: var(--opt-font-weight-semibold);
43
+ --opt-text-heading-2-leading: 1.25;
44
+ --opt-text-heading-3-size: var(--opt-font-size-xl);
45
+ --opt-text-heading-3-weight: var(--opt-font-weight-semibold);
46
+ --opt-text-heading-3-leading: 1.3;
47
+ --opt-text-heading-4-size: var(--opt-font-size-lg);
48
+ --opt-text-heading-4-weight: var(--opt-font-weight-semibold);
49
+ --opt-text-heading-4-leading: 1.35;
50
+ --opt-text-heading-5-size: var(--opt-font-size-base);
51
+ --opt-text-heading-5-weight: var(--opt-font-weight-semibold);
52
+ --opt-text-heading-5-leading: 1.4;
53
+ --opt-text-heading-6-size: var(--opt-font-size-sm);
54
+ --opt-text-heading-6-weight: var(--opt-font-weight-semibold);
55
+ --opt-text-heading-6-leading: 1.5;
56
+ --opt-text-display-1-size: var(--opt-font-size-4xl);
57
+ --opt-text-display-1-weight: var(--opt-font-weight-normal);
58
+ --opt-text-display-1-leading: 1.1;
59
+ --opt-text-display-2-size: var(--opt-font-size-3xl);
60
+ --opt-text-display-2-weight: var(--opt-font-weight-normal);
61
+ --opt-text-display-2-leading: 1.15;
62
+ --opt-text-display-3-size: var(--opt-font-size-2xl);
63
+ --opt-text-display-3-weight: var(--opt-font-weight-normal);
64
+ --opt-text-display-3-leading: 1.2;
65
+ --opt-text: hsl(25 15% 18%);
66
+ --opt-text-secondary: hsl(25 10% 40%);
67
+ --opt-text-tertiary: hsl(25 8% 55%);
68
+
69
+ /* Border */
70
+ --opt-border-width: 1px;
71
+ --opt-border: hsl(30 15% 85%);
72
+ --opt-border-hover: hsl(30 12% 70%);
73
+ --opt-border-subtle: hsl(30 15% 90%);
74
+
75
+ /* Focus */
76
+ --opt-ring: hsl(155 38% 45%);
77
+ --opt-ring-offset: #fffdf9;
78
+
79
+ /* Background */
80
+ --opt-bg: hsl(38 45% 95%);
81
+ --opt-bg-subtle: hsl(35 30% 92%);
82
+ --opt-bg-muted: hsl(35 25% 88%);
83
+
84
+ /* Status */
85
+ --opt-success: hsl(145 55% 42%);
86
+ --opt-success-subtle: hsl(145 45% 94%);
87
+ --opt-success-fg: hsl(145 55% 28%);
88
+ --opt-warning: hsl(35 85% 52%);
89
+ --opt-warning-subtle: hsl(40 80% 93%);
90
+ --opt-warning-fg: hsl(35 85% 34%);
91
+ --opt-danger: hsl(8 72% 55%);
92
+ --opt-danger-subtle: hsl(8 65% 95%);
93
+ --opt-danger-fg: hsl(8 72% 38%);
94
+ --opt-info: hsl(195 60% 46%);
95
+ --opt-info-subtle: hsl(195 55% 94%);
96
+ --opt-info-fg: hsl(195 60% 32%);
97
+
98
+ /* Chart */
99
+ --opt-chart-6: color-mix(in oklch, var(--opt-chart-1) 62%, var(--opt-chart-2));
100
+ --opt-chart-7: color-mix(in oklch, var(--opt-chart-2) 62%, var(--opt-chart-3));
101
+ --opt-chart-8: color-mix(in oklch, var(--opt-chart-3) 62%, var(--opt-chart-4));
102
+ --opt-chart-9: color-mix(in oklch, var(--opt-chart-4) 62%, var(--opt-chart-5));
103
+ --opt-chart-10: color-mix(in oklch, var(--opt-chart-5) 62%, var(--opt-chart-1));
104
+ --opt-chart-11: color-mix(in oklch, var(--opt-chart-1) 55%, var(--opt-chart-3));
105
+ --opt-chart-12: color-mix(in oklch, var(--opt-chart-2) 55%, var(--opt-chart-4));
106
+ --opt-chart-13: color-mix(in oklch, var(--opt-chart-3) 55%, var(--opt-chart-5));
107
+ --opt-chart-14: color-mix(in oklch, var(--opt-chart-4) 55%, var(--opt-chart-1));
108
+ --opt-chart-15: color-mix(in oklch, var(--opt-chart-5) 55%, var(--opt-chart-2));
109
+ --opt-chart-16: color-mix(in oklch, var(--opt-chart-1) 35%, var(--opt-chart-4));
110
+ --opt-chart-sequential-1: color-mix(in oklch, var(--opt-chart-1) 18%, var(--opt-surface));
111
+ --opt-chart-sequential-2: color-mix(in oklch, var(--opt-chart-1) 36%, var(--opt-surface));
112
+ --opt-chart-sequential-3: color-mix(in oklch, var(--opt-chart-1) 54%, var(--opt-surface));
113
+ --opt-chart-sequential-4: color-mix(in oklch, var(--opt-chart-1) 76%, var(--opt-surface));
114
+ --opt-chart-sequential-5: var(--opt-chart-1);
115
+ --opt-chart-diverging-negative: var(--opt-danger);
116
+ --opt-chart-diverging-neutral: var(--opt-text-tertiary);
117
+ --opt-chart-diverging-positive: var(--opt-success);
118
+ --opt-chart-1: hsl(155 38% 45%);
119
+ --opt-chart-2: hsl(25 65% 55%);
120
+ --opt-chart-3: hsl(45 75% 50%);
121
+ --opt-chart-4: hsl(195 60% 46%);
122
+ --opt-chart-5: hsl(340 45% 55%);
123
+
124
+ /* Radius */
125
+ --opt-radius-sm: 0.375rem;
126
+ --opt-radius-md: 0.5rem;
127
+ --opt-radius-lg: 0.75rem;
128
+ --opt-radius-xl: 1rem;
129
+
130
+ /* Shadow */
131
+ --opt-shadow-sm: 0 1px 2px hsl(30 20% 50% / 0.06);
132
+ --opt-shadow-md: 0 4px 8px hsl(30 20% 50% / 0.08);
133
+ --opt-shadow-lg: 0 10px 20px hsl(30 20% 50% / 0.1);
134
+
135
+ /* Spacing */
136
+ --opt-space-0: 0px;
137
+ --opt-space-0-5: 0.125rem;
138
+ --opt-space-1: 0.25rem;
139
+ --opt-space-1-5: 0.375rem;
140
+ --opt-space-2: 0.5rem;
141
+ --opt-space-3: 0.75rem;
142
+ --opt-space-4: 1rem;
143
+ --opt-space-5: 1.25rem;
144
+ --opt-space-6: 1.5rem;
145
+ --opt-space-8: 2rem;
146
+ --opt-space-section: 1.75rem;
147
+ --opt-space-group: 1.25rem;
148
+ --opt-space-element: 0.625rem;
149
+
150
+ /* Typography */
151
+ --opt-font-code: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
152
+ --opt-font-size-xs: 0.75rem;
153
+ --opt-font-size-sm: 0.875rem;
154
+ --opt-font-size-base: 1rem;
155
+ --opt-font-size-lg: 1.125rem;
156
+ --opt-font-size-xl: 1.25rem;
157
+ --opt-font-size-2xl: 1.5rem;
158
+ --opt-font-size-3xl: 1.875rem;
159
+ --opt-font-size-4xl: 2.25rem;
160
+ --opt-font-weight-normal: 400;
161
+ --opt-font-weight-medium: 500;
162
+ --opt-font-weight-semibold: 600;
163
+ --opt-font-weight-bold: 700;
164
+ --opt-font-heading: var(--font-playfair-display), Georgia, serif;
165
+ --opt-font-body: var(--font-lora), Georgia, serif;
166
+ --opt-tracking-heading: 0.005em;
167
+ --opt-weight-heading: 600;
168
+
169
+ /* Other */
170
+ --opt-control-sm: 2rem;
171
+ --opt-control-md: 2.5rem;
172
+ --opt-control-lg: 3rem;
173
+ --opt-control-padding-sm: 0.75rem;
174
+ --opt-control-padding-md: 1rem;
175
+ --opt-control-padding-lg: 1.5rem;
176
+ --opt-duration-fast: 150ms;
177
+ --opt-duration-medium: 250ms;
178
+ --opt-duration-slow: 400ms;
179
+ --opt-ease-standard: cubic-bezier(0.2, 0, 0, 1);
180
+ --opt-ease-emphasized: cubic-bezier(0.2, 0.8, 0.2, 1);
181
+ }