raft-ui 0.0.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 (134) hide show
  1. package/README.md +24 -0
  2. package/dist/cn.d.mts +2 -0
  3. package/dist/cn.mjs +2 -0
  4. package/dist/index.d.mts +2710 -0
  5. package/dist/index.mjs +4821 -0
  6. package/dist/label-DWq4ia5I.mjs +115 -0
  7. package/dist/styled-props-B3SNekJg.d.mts +16 -0
  8. package/dist/wip.d.mts +1238 -0
  9. package/dist/wip.mjs +1416 -0
  10. package/package.json +70 -0
  11. package/src/components/avatar/avatar.tsx +375 -0
  12. package/src/components/avatar/index.ts +17 -0
  13. package/src/components/badge/badge.tsx +393 -0
  14. package/src/components/badge/index.ts +2 -0
  15. package/src/components/banner/banner.tsx +269 -0
  16. package/src/components/banner/index.ts +8 -0
  17. package/src/components/bottom-sheet/bottom-sheet.tsx +152 -0
  18. package/src/components/bottom-sheet/index.ts +22 -0
  19. package/src/components/button/button.tsx +497 -0
  20. package/src/components/button/index.ts +2 -0
  21. package/src/components/checkbox/checkbox-indicator.tsx +128 -0
  22. package/src/components/checkbox/checkbox.tsx +350 -0
  23. package/src/components/checkbox/index.ts +2 -0
  24. package/src/components/combobox/combobox.tsx +603 -0
  25. package/src/components/combobox/index.ts +52 -0
  26. package/src/components/context-menu/context-menu.tsx +380 -0
  27. package/src/components/context-menu/index.ts +34 -0
  28. package/src/components/conversation-preview-card/conversation-preview-card.tsx +336 -0
  29. package/src/components/conversation-preview-card/index.ts +32 -0
  30. package/src/components/description-list/description-list.tsx +116 -0
  31. package/src/components/description-list/index.ts +14 -0
  32. package/src/components/dropdown-menu/dropdown-menu.tsx +405 -0
  33. package/src/components/dropdown-menu/index.ts +38 -0
  34. package/src/components/empty-state/empty-state.tsx +177 -0
  35. package/src/components/empty-state/index.ts +16 -0
  36. package/src/components/field/field.tsx +125 -0
  37. package/src/components/field/index.ts +18 -0
  38. package/src/components/inline-code/index.ts +2 -0
  39. package/src/components/inline-code/inline-code.tsx +33 -0
  40. package/src/components/input/index.ts +2 -0
  41. package/src/components/input/input.tsx +76 -0
  42. package/src/components/input-group/index.ts +7 -0
  43. package/src/components/input-group/input-group.tsx +215 -0
  44. package/src/components/kbd/index.ts +2 -0
  45. package/src/components/kbd/kbd.tsx +43 -0
  46. package/src/components/label/index.ts +7 -0
  47. package/src/components/label/label.tsx +99 -0
  48. package/src/components/lightbox/index.ts +24 -0
  49. package/src/components/lightbox/lightbox.tsx +245 -0
  50. package/src/components/list-item/index.ts +20 -0
  51. package/src/components/list-item/list-item.tsx +263 -0
  52. package/src/components/media-list-item/index.ts +20 -0
  53. package/src/components/media-list-item/media-list-item.tsx +169 -0
  54. package/src/components/notification-center/index.ts +39 -0
  55. package/src/components/notification-center/notification-center.tsx +558 -0
  56. package/src/components/panel-header/index.ts +22 -0
  57. package/src/components/panel-header/panel-header.tsx +199 -0
  58. package/src/components/popover/index.ts +30 -0
  59. package/src/components/popover/popover.tsx +248 -0
  60. package/src/components/preview-shell/index.ts +2 -0
  61. package/src/components/preview-shell/preview-shell.tsx +51 -0
  62. package/src/components/quoted-message-card/index.ts +36 -0
  63. package/src/components/quoted-message-card/quoted-message-card.tsx +391 -0
  64. package/src/components/radio-group/index.ts +6 -0
  65. package/src/components/radio-group/radio-group.tsx +119 -0
  66. package/src/components/section-header/index.ts +16 -0
  67. package/src/components/section-header/section-header.tsx +117 -0
  68. package/src/components/section-label/index.ts +2 -0
  69. package/src/components/section-label/section-label.tsx +38 -0
  70. package/src/components/segmented-control/index.ts +12 -0
  71. package/src/components/segmented-control/segmented-control.tsx +129 -0
  72. package/src/components/select/index.ts +40 -0
  73. package/src/components/select/select.tsx +382 -0
  74. package/src/components/spinner/index.ts +2 -0
  75. package/src/components/spinner/spinner.tsx +228 -0
  76. package/src/components/status/index.ts +2 -0
  77. package/src/components/status/status.tsx +152 -0
  78. package/src/components/tabs/index.ts +24 -0
  79. package/src/components/tabs/tabs.tsx +417 -0
  80. package/src/components/text/index.ts +2 -0
  81. package/src/components/text/text.tsx +130 -0
  82. package/src/components/textarea/index.ts +2 -0
  83. package/src/components/textarea/textarea.tsx +136 -0
  84. package/src/components/toggle-group/index.ts +12 -0
  85. package/src/components/toggle-group/toggle-group.tsx +111 -0
  86. package/src/components/tooltip/index.ts +14 -0
  87. package/src/components/tooltip/tooltip.tsx +186 -0
  88. package/src/fonts/brutal.css +2 -0
  89. package/src/index.ts +404 -0
  90. package/src/legacy/AttentionDot.tsx +28 -0
  91. package/src/legacy/AvatarListRow.tsx +87 -0
  92. package/src/legacy/AvatarSlot.tsx +157 -0
  93. package/src/legacy/Badge.tsx +95 -0
  94. package/src/legacy/Banner.tsx +74 -0
  95. package/src/legacy/BottomSheet.tsx +76 -0
  96. package/src/legacy/CheckMarker.tsx +72 -0
  97. package/src/legacy/Checkbox.tsx +81 -0
  98. package/src/legacy/ConversationPreviewCard.tsx +169 -0
  99. package/src/legacy/DismissBackdrop.tsx +68 -0
  100. package/src/legacy/EmptyState.tsx +63 -0
  101. package/src/legacy/ExperimentalBadge.tsx +19 -0
  102. package/src/legacy/FormField.tsx +106 -0
  103. package/src/legacy/KeyValueRow.tsx +67 -0
  104. package/src/legacy/Lightbox.tsx +119 -0
  105. package/src/legacy/NotificationCenter.tsx +217 -0
  106. package/src/legacy/PanelHeader.tsx +94 -0
  107. package/src/legacy/PreviewShell.tsx +40 -0
  108. package/src/legacy/QuotedMessageCard.tsx +181 -0
  109. package/src/legacy/ReorderablePanelTabs.tsx +151 -0
  110. package/src/legacy/SandboxedPreviewFrame.tsx +59 -0
  111. package/src/legacy/SearchInput.tsx +23 -0
  112. package/src/legacy/SectionEyebrow.tsx +60 -0
  113. package/src/legacy/SectionHeader.tsx +68 -0
  114. package/src/legacy/SegmentedControl.tsx +74 -0
  115. package/src/legacy/SlugInput.tsx +29 -0
  116. package/src/legacy/Spinner.tsx +89 -0
  117. package/src/legacy/StatusDot.tsx +51 -0
  118. package/src/legacy/SurfaceListItem.tsx +32 -0
  119. package/src/legacy/Textarea.tsx +137 -0
  120. package/src/legacy/button.tsx +100 -0
  121. package/src/legacy/context-menu-divider.tsx +12 -0
  122. package/src/legacy/menu-item.tsx +66 -0
  123. package/src/legacy/selection-popover.tsx +212 -0
  124. package/src/legacy/server-switcher-menu.tsx +203 -0
  125. package/src/legacy/source.css +240 -0
  126. package/src/lib/cn.ts +1 -0
  127. package/src/lib/styled-props.ts +11 -0
  128. package/src/lib/theme/theme-context.ts +28 -0
  129. package/src/lib/theme/theme-provider.tsx +181 -0
  130. package/src/lib/theme/use-theme.ts +12 -0
  131. package/src/lib/tv.ts +29 -0
  132. package/src/lib/without-children.ts +6 -0
  133. package/src/styles.css +467 -0
  134. package/src/wip.ts +255 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Element props without `children` — for leaf components (dots, markers) that
3
+ * render no caller content. React ships `ComponentPropsWithoutRef` but no
4
+ * equivalent that subtracts children, so this names the one-off `Omit`.
5
+ */
6
+ export type WithoutChildren<P> = Omit<P, "children">;
package/src/styles.css ADDED
@@ -0,0 +1,467 @@
1
+ @import "tailwindcss";
2
+ @import "./fonts/brutal.css";
3
+
4
+ /* Pure token contract. No legacy action/surface/destructive/component aliases. */
5
+
6
+ @source "./components";
7
+
8
+ @theme {
9
+ --shadow-*: initial;
10
+
11
+ --color-black: oklch(0 0 0);
12
+ --color-white: oklch(1 0 0);
13
+
14
+ --color-brutal-yellow-50: oklch(0.984 0.017 84.56);
15
+ --color-brutal-yellow-100: oklch(0.975 0.027 85.64);
16
+ --color-brutal-yellow-200: oklch(0.94 0.066 86.23);
17
+ --color-brutal-yellow-300: oklch(0.913 0.103 88.02);
18
+ --color-brutal-yellow-400: oklch(0.883 0.162 91.89);
19
+ --color-brutal-yellow-500: oklch(0.759 0.155 92.93);
20
+ --color-brutal-yellow-600: oklch(0.637 0.13 92.64);
21
+ --color-brutal-yellow-700: oklch(0.508 0.104 92.9);
22
+ --color-brutal-yellow-800: oklch(0.388 0.08 93.41);
23
+ --color-brutal-yellow-900: oklch(0.26 0.053 92.86);
24
+ --color-brutal-yellow-950: oklch(0.199 0.041 93.21);
25
+ --color-brutal-yellow: var(--color-brutal-yellow-400);
26
+
27
+ --color-brutal-purple-50: oklch(0.976 0.008 294.09);
28
+ --color-brutal-purple-100: oklch(0.949 0.018 296.72);
29
+ --color-brutal-purple-200: oklch(0.891 0.037 294.17);
30
+ --color-brutal-purple-300: oklch(0.84 0.056 294.36);
31
+ --color-brutal-purple-400: oklch(0.783 0.078 294.55);
32
+ --color-brutal-purple-500: oklch(0.682 0.117 294);
33
+ --color-brutal-purple-600: oklch(0.575 0.157 293.61);
34
+ --color-brutal-purple-700: oklch(0.475 0.168 293);
35
+ --color-brutal-purple-800: oklch(0.367 0.131 293.06);
36
+ --color-brutal-purple-900: oklch(0.25 0.09 293.19);
37
+ --color-brutal-purple-950: oklch(0.195 0.07 292.41);
38
+ --color-brutal-purple: var(--color-brutal-purple-400);
39
+
40
+ --color-brutal-pink-50: oklch(0.968 0.017 359.4);
41
+ --color-brutal-pink-100: oklch(0.936 0.034 2.02);
42
+ --color-brutal-pink-200: oklch(0.871 0.073 0.34);
43
+ --color-brutal-pink-300: oklch(0.808 0.116 0.76);
44
+ --color-brutal-pink-400: oklch(0.749 0.162 0.71);
45
+ --color-brutal-pink-500: oklch(0.662 0.244 0.59);
46
+ --color-brutal-pink-600: oklch(0.565 0.226 0.56);
47
+ --color-brutal-pink-700: oklch(0.456 0.182 0.91);
48
+ --color-brutal-pink-800: oklch(0.354 0.142 0.38);
49
+ --color-brutal-pink-900: oklch(0.246 0.098 0.96);
50
+ --color-brutal-pink-950: oklch(0.198 0.08 359.99);
51
+ --color-brutal-pink: var(--color-brutal-pink-400);
52
+
53
+ --color-brutal-cyan-50: oklch(0.974 0.016 226.9);
54
+ --color-brutal-cyan-100: oklch(0.945 0.033 226.27);
55
+ --color-brutal-cyan-200: oklch(0.892 0.07 224.23);
56
+ --color-brutal-cyan-300: oklch(0.835 0.114 220.86);
57
+ --color-brutal-cyan-400: oklch(0.783 0.135 219.2);
58
+ --color-brutal-cyan-500: oklch(0.672 0.116 219.07);
59
+ --color-brutal-cyan-600: oklch(0.569 0.099 219.95);
60
+ --color-brutal-cyan-700: oklch(0.46 0.079 219.13);
61
+ --color-brutal-cyan-800: oklch(0.348 0.06 219.02);
62
+ --color-brutal-cyan-900: oklch(0.246 0.043 221.18);
63
+ --color-brutal-cyan-950: oklch(0.185 0.032 217.82);
64
+ --color-brutal-cyan: var(--color-brutal-cyan-400);
65
+
66
+ --color-brutal-orange-50: oklch(0.976 0.011 45.81);
67
+ --color-brutal-orange-100: oklch(0.941 0.028 40.23);
68
+ --color-brutal-orange-200: oklch(0.892 0.053 43.23);
69
+ --color-brutal-orange-300: oklch(0.835 0.087 46.56);
70
+ --color-brutal-orange-400: oklch(0.785 0.123 50.11);
71
+ --color-brutal-orange-500: oklch(0.685 0.145 54.68);
72
+ --color-brutal-orange-600: oklch(0.57 0.121 54.53);
73
+ --color-brutal-orange-700: oklch(0.465 0.099 54.58);
74
+ --color-brutal-orange-800: oklch(0.361 0.076 55.55);
75
+ --color-brutal-orange-900: oklch(0.246 0.052 55.54);
76
+ --color-brutal-orange-950: oklch(0.191 0.042 54.31);
77
+ --color-brutal-orange: var(--color-brutal-orange-400);
78
+
79
+ --color-brutal-lime-50: oklch(0.98 0.029 132.52);
80
+ --color-brutal-lime-100: oklch(0.949 0.081 130.41);
81
+ --color-brutal-lime-200: oklch(0.91 0.149 130.12);
82
+ --color-brutal-lime-300: oklch(0.867 0.142 130.1);
83
+ --color-brutal-lime-400: oklch(0.827 0.135 130.07);
84
+ --color-brutal-lime-500: oklch(0.715 0.118 130.4);
85
+ --color-brutal-lime-600: oklch(0.596 0.099 130.36);
86
+ --color-brutal-lime-700: oklch(0.485 0.08 129.92);
87
+ --color-brutal-lime-800: oklch(0.366 0.06 130.11);
88
+ --color-brutal-lime-900: oklch(0.256 0.041 130.57);
89
+ --color-brutal-lime-950: oklch(0.196 0.032 130.49);
90
+ --color-brutal-lime: var(--color-brutal-lime-400);
91
+
92
+ --color-brutal-red-50: oklch(0.968 0.014 22.88);
93
+ --color-brutal-red-100: oklch(0.926 0.034 20.05);
94
+ --color-brutal-red-200: oklch(0.854 0.072 22.92);
95
+ --color-brutal-red-300: oklch(0.781 0.118 25.18);
96
+ --color-brutal-red-400: oklch(0.711 0.168 28.04);
97
+ --color-brutal-red-500: oklch(0.627 0.209 32.98);
98
+ --color-brutal-red-600: oklch(0.528 0.176 33.04);
99
+ --color-brutal-red-700: oklch(0.431 0.144 33.03);
100
+ --color-brutal-red-800: oklch(0.331 0.11 33.1);
101
+ --color-brutal-red-900: oklch(0.243 0.081 33.19);
102
+ --color-brutal-red-950: oklch(0.185 0.061 34.2);
103
+ --color-brutal-red: var(--color-brutal-red-400);
104
+
105
+ --color-brutal-stone-50: oklch(0.974 0.002 67.9);
106
+ --color-brutal-stone-100: oklch(0.947 0.003 67.83);
107
+ --color-brutal-stone-200: oklch(0.896 0.008 73.73);
108
+ --color-brutal-stone-300: oklch(0.845 0.014 71.31);
109
+ --color-brutal-stone-400: oklch(0.789 0.014 71.29);
110
+ --color-brutal-stone-500: oklch(0.682 0.012 76.55);
111
+ --color-brutal-stone-600: oklch(0.569 0.01 67.63);
112
+ --color-brutal-stone-700: oklch(0.466 0.008 67.63);
113
+ --color-brutal-stone-800: oklch(0.354 0.007 67.62);
114
+ --color-brutal-stone-900: oklch(0.249 0.005 67.61);
115
+ --color-brutal-stone-950: oklch(0.187 0.003 67.68);
116
+ --color-brutal-stone: var(--color-brutal-stone-400);
117
+
118
+ --color-brutal-cream-50: oklch(1 0 0);
119
+ --color-brutal-cream-100: oklch(0.991 0.01 87.41);
120
+ --color-brutal-cream-200: oklch(0.986 0.015 86.39);
121
+ --color-brutal-cream-300: oklch(0.878 0.18 95.13);
122
+ --color-brutal-cream-400: oklch(0.777 0.16 95.27);
123
+ --color-brutal-cream-500: oklch(0.663 0.136 95.2);
124
+ --color-brutal-cream-600: oklch(0.561 0.115 95.02);
125
+ --color-brutal-cream-700: oklch(0.457 0.094 95.72);
126
+ --color-brutal-cream-800: oklch(0.352 0.072 94.83);
127
+ --color-brutal-cream-900: oklch(0.242 0.05 95.07);
128
+ --color-brutal-cream-950: oklch(0.189 0.039 94.73);
129
+ --color-brutal-cream: var(--color-brutal-cream-200);
130
+ }
131
+
132
+ @theme inline {
133
+ --color-background: var(--layer-page);
134
+ --color-foreground: var(--foreground);
135
+ --color-foreground-strong: var(--foreground-strong);
136
+ --color-foreground-muted: var(--foreground-muted);
137
+ --color-foreground-placeholder: var(--foreground-placeholder);
138
+ --color-foreground-disabled: var(--foreground-disabled);
139
+ --color-foreground-inverse: var(--foreground-inverse);
140
+
141
+ --color-layer-page: var(--layer-page);
142
+ --color-layer-panel: var(--layer-panel);
143
+ --color-layer-muted: var(--layer-muted);
144
+ --color-layer-field: var(--layer-field);
145
+ --color-layer-popover: var(--layer-popover);
146
+ --color-layer-backdrop: var(--layer-backdrop);
147
+
148
+ --color-line-strong: var(--line-strong);
149
+ --color-line: var(--line);
150
+ --color-line-subtle: var(--line-subtle);
151
+ --color-line-muted: var(--line-muted);
152
+ --color-line-focus: var(--line-focus);
153
+
154
+ --color-primary-50: var(--primary-50);
155
+ --color-primary-100: var(--primary-100);
156
+ --color-primary-200: var(--primary-200);
157
+ --color-primary-300: var(--primary-300);
158
+ --color-primary-400: var(--primary-400);
159
+ --color-primary-500: var(--primary-500);
160
+ --color-primary-600: var(--primary-600);
161
+ --color-primary-700: var(--primary-700);
162
+ --color-primary-800: var(--primary-800);
163
+ --color-primary-900: var(--primary-900);
164
+ --color-primary-950: var(--primary-950);
165
+
166
+ --color-accent-50: var(--accent-50);
167
+ --color-accent-100: var(--accent-100);
168
+ --color-accent-200: var(--accent-200);
169
+ --color-accent-300: var(--accent-300);
170
+ --color-accent-400: var(--accent-400);
171
+ --color-accent-500: var(--accent-500);
172
+ --color-accent-600: var(--accent-600);
173
+ --color-accent-700: var(--accent-700);
174
+ --color-accent-800: var(--accent-800);
175
+ --color-accent-900: var(--accent-900);
176
+ --color-accent-950: var(--accent-950);
177
+
178
+ --color-secondary-50: var(--secondary-50);
179
+ --color-secondary-100: var(--secondary-100);
180
+ --color-secondary-200: var(--secondary-200);
181
+ --color-secondary-300: var(--secondary-300);
182
+ --color-secondary-400: var(--secondary-400);
183
+ --color-secondary-500: var(--secondary-500);
184
+ --color-secondary-600: var(--secondary-600);
185
+ --color-secondary-700: var(--secondary-700);
186
+ --color-secondary-800: var(--secondary-800);
187
+ --color-secondary-900: var(--secondary-900);
188
+ --color-secondary-950: var(--secondary-950);
189
+
190
+ --color-info-dark: var(--state-info-dark);
191
+ --color-info-base: var(--state-info-base);
192
+ --color-info-light: var(--state-info-light);
193
+ --color-info-lighter: var(--state-info-lighter);
194
+
195
+ --color-success-dark: var(--state-success-dark);
196
+ --color-success-base: var(--state-success-base);
197
+ --color-success-light: var(--state-success-light);
198
+ --color-success-lighter: var(--state-success-lighter);
199
+
200
+ --color-warning-dark: var(--state-warning-dark);
201
+ --color-warning-base: var(--state-warning-base);
202
+ --color-warning-light: var(--state-warning-light);
203
+ --color-warning-lighter: var(--state-warning-lighter);
204
+
205
+ --color-danger-dark: var(--state-danger-dark);
206
+ --color-danger-base: var(--state-danger-base);
207
+ --color-danger-light: var(--state-danger-light);
208
+ --color-danger-lighter: var(--state-danger-lighter);
209
+
210
+ --shadow-xs: var(--theme-shadow-xs);
211
+ --shadow-sm: var(--theme-shadow-sm);
212
+ --shadow-md: var(--theme-shadow-md);
213
+ --shadow-lg: var(--theme-shadow-lg);
214
+ --shadow-xl: var(--theme-shadow-xl);
215
+
216
+ --font-heading: var(--heading-font);
217
+ --font-sans: var(--sans-font);
218
+ --font-mono: var(--mono-font);
219
+ }
220
+
221
+ :where(:root),
222
+ [data-theme="brutal"] {
223
+ --layer-page: oklch(1 0 0);
224
+ --foreground: oklch(0.18 0.006 25);
225
+ --foreground-strong: oklch(0.18 0.006 25);
226
+ --foreground-muted: oklch(0.18 0.006 25 / 0.6);
227
+ --foreground-placeholder: oklch(0.18 0.006 25 / 0.5);
228
+ --foreground-disabled: oklch(0.18 0.006 25 / 0.3);
229
+ --foreground-inverse: oklch(1 0 0);
230
+
231
+ --layer-panel: oklch(1 0 0);
232
+ --layer-muted: oklch(0.18 0.006 25 / 0.05);
233
+ --layer-field: oklch(1 0 0);
234
+ --layer-popover: oklch(1 0 0);
235
+ --layer-backdrop: oklch(0 0 0 / 0.75);
236
+
237
+ --line-strong: oklch(0.18 0.006 25);
238
+ --line: oklch(0.18 0.006 25);
239
+ --line-subtle: oklch(0.18 0.006 25 / 0.3);
240
+ --line-muted: oklch(0.18 0.006 25 / 0.15);
241
+ --line-focus: oklch(0.18 0.006 25);
242
+
243
+ --primary-50: var(--color-brutal-yellow-50);
244
+ --primary-100: var(--color-brutal-yellow-100);
245
+ --primary-200: var(--color-brutal-yellow-200);
246
+ --primary-300: var(--color-brutal-yellow-300);
247
+ --primary-400: var(--color-brutal-yellow);
248
+ --primary-500: var(--color-brutal-yellow-500);
249
+ --primary-600: var(--color-brutal-yellow-600);
250
+ --primary-700: var(--color-brutal-yellow-700);
251
+ --primary-800: var(--color-brutal-yellow-800);
252
+ --primary-900: var(--color-brutal-yellow-900);
253
+ --primary-950: var(--color-brutal-yellow-950);
254
+
255
+ --accent-50: var(--color-brutal-pink-50);
256
+ --accent-100: var(--color-brutal-pink-100);
257
+ --accent-200: var(--color-brutal-pink-200);
258
+ --accent-300: var(--color-brutal-pink-300);
259
+ --accent-400: var(--color-brutal-pink);
260
+ --accent-500: var(--color-brutal-pink-500);
261
+ --accent-600: var(--color-brutal-pink-600);
262
+ --accent-700: var(--color-brutal-pink-700);
263
+ --accent-800: var(--color-brutal-pink-800);
264
+ --accent-900: var(--color-brutal-pink-900);
265
+ --accent-950: var(--color-brutal-pink-950);
266
+
267
+ --secondary-50: var(--color-brutal-stone-50);
268
+ --secondary-100: var(--color-brutal-stone-100);
269
+ --secondary-200: var(--color-brutal-stone-200);
270
+ --secondary-300: var(--color-brutal-stone-300);
271
+ --secondary-400: var(--color-brutal-stone);
272
+ --secondary-500: var(--color-brutal-stone-500);
273
+ --secondary-600: var(--color-brutal-stone-600);
274
+ --secondary-700: var(--color-brutal-stone-700);
275
+ --secondary-800: var(--color-brutal-stone-800);
276
+ --secondary-900: var(--color-brutal-stone-900);
277
+ --secondary-950: var(--color-brutal-stone-950);
278
+
279
+ --state-info-dark: var(--color-brutal-cyan-800);
280
+ --state-info-base: var(--color-brutal-cyan);
281
+ --state-info-light: var(--color-brutal-cyan-200);
282
+ --state-info-lighter: var(--color-brutal-cyan-100);
283
+
284
+ --state-success-dark: oklch(0.366 0.09 153.079);
285
+ --state-success-base: oklch(0.714 0.176 153.079);
286
+ --state-success-light: oklch(0.91 0.149 153.079);
287
+ --state-success-lighter: oklch(0.949 0.079 153.079);
288
+
289
+ --state-warning-dark: oklch(0.366 0.106 44.441);
290
+ --state-warning-base: oklch(0.7 0.202 44.441);
291
+ --state-warning-light: oklch(0.91 0.05 44.441);
292
+ --state-warning-lighter: oklch(0.949 0.027 44.441);
293
+
294
+ --state-danger-dark: var(--color-brutal-red-800);
295
+ --state-danger-base: oklch(0.616 0.249 26.758);
296
+ --state-danger-light: var(--color-brutal-red-200);
297
+ --state-danger-lighter: var(--color-brutal-red-100);
298
+
299
+ /* xs: pressed · sm: resting · md: hover/focus · lg: floating overlay · xl: modal */
300
+ --theme-shadow-xs: 1px 1px 0px var(--line-strong);
301
+ --theme-shadow-sm: 2px 2px 0px var(--line-strong);
302
+ --theme-shadow-md: 4px 4px 0px var(--line-strong);
303
+ --theme-shadow-lg: 4px 4px 0px var(--color-black);
304
+ --theme-shadow-xl: 6px 6px 0px var(--line-strong);
305
+
306
+ --heading-font: "Space Grotesk Variable", "Space Grotesk", system-ui, sans-serif;
307
+ --sans-font: "Space Grotesk Variable", "Space Grotesk", system-ui, sans-serif;
308
+ --mono-font: "Geist Mono Variable", "Geist Mono", ui-monospace, monospace;
309
+ }
310
+
311
+ [data-theme="elegant"] {
312
+ --layer-page: oklch(1 0 0);
313
+ --foreground: oklch(0.145 0 0);
314
+ --foreground-strong: oklch(0.21 0.006 285);
315
+ --foreground-muted: oklch(0.36 0.006 285);
316
+ --foreground-placeholder: oklch(0.58 0.006 285);
317
+ --foreground-disabled: oklch(0.7 0.006 286);
318
+ --foreground-inverse: oklch(1 0 0);
319
+
320
+ --layer-panel: oklch(1 0 0);
321
+ --layer-muted: oklch(0.967 0.001 286);
322
+ --layer-field: oklch(1 0 0);
323
+ --layer-popover: oklch(1 0 0);
324
+ --layer-backdrop: oklch(0 0 0 / 0.75);
325
+
326
+ --line-strong: oklch(0.21 0.006 285);
327
+ --line: oklch(0.84 0.006 285);
328
+ --line-subtle: oklch(0.92 0.004 286);
329
+ --line-muted: oklch(25.42% 0 89.37 / 0.08);
330
+ --line-focus: oklch(0.21 0.006 285);
331
+
332
+ --primary-50: var(--color-brutal-yellow-50);
333
+ --primary-100: var(--color-brutal-yellow-100);
334
+ --primary-200: var(--color-brutal-yellow-200);
335
+ --primary-300: var(--color-brutal-yellow-300);
336
+ --primary-400: var(--color-brutal-yellow);
337
+ --primary-500: var(--color-brutal-yellow-500);
338
+ --primary-600: var(--color-brutal-yellow-600);
339
+ --primary-700: var(--color-brutal-yellow-700);
340
+ --primary-800: var(--color-brutal-yellow-800);
341
+ --primary-900: var(--color-brutal-yellow-900);
342
+ --primary-950: var(--color-brutal-yellow-950);
343
+
344
+ --accent-50: var(--color-brutal-pink-50);
345
+ --accent-100: var(--color-brutal-pink-100);
346
+ --accent-200: var(--color-brutal-pink-200);
347
+ --accent-300: var(--color-brutal-pink-300);
348
+ --accent-400: var(--color-brutal-pink);
349
+ --accent-500: var(--color-brutal-pink-500);
350
+ --accent-600: var(--color-brutal-pink-600);
351
+ --accent-700: var(--color-brutal-pink-700);
352
+ --accent-800: var(--color-brutal-pink-800);
353
+ --accent-900: var(--color-brutal-pink-900);
354
+ --accent-950: var(--color-brutal-pink-950);
355
+
356
+ --secondary-50: var(--color-brutal-stone-50);
357
+ --secondary-100: var(--color-brutal-stone-100);
358
+ --secondary-200: var(--color-brutal-stone-200);
359
+ --secondary-300: var(--color-brutal-stone-300);
360
+ --secondary-400: var(--color-brutal-stone);
361
+ --secondary-500: var(--color-brutal-stone-500);
362
+ --secondary-600: var(--color-brutal-stone-600);
363
+ --secondary-700: var(--color-brutal-stone-700);
364
+ --secondary-800: var(--color-brutal-stone-800);
365
+ --secondary-900: var(--color-brutal-stone-900);
366
+ --secondary-950: var(--color-brutal-stone-950);
367
+
368
+ --state-info-dark: var(--color-brutal-cyan-800);
369
+ --state-info-base: var(--color-brutal-cyan);
370
+ --state-info-light: var(--color-brutal-cyan-200);
371
+ --state-info-lighter: var(--color-brutal-cyan-100);
372
+
373
+ --state-success-dark: oklch(0.366 0.09 153.079);
374
+ --state-success-base: oklch(0.714 0.176 153.079);
375
+ --state-success-light: oklch(0.91 0.149 153.079);
376
+ --state-success-lighter: oklch(0.949 0.079 153.079);
377
+
378
+ --state-warning-dark: oklch(0.366 0.106 44.441);
379
+ --state-warning-base: oklch(0.7 0.202 44.441);
380
+ --state-warning-light: oklch(0.91 0.05 44.441);
381
+ --state-warning-lighter: oklch(0.949 0.027 44.441);
382
+
383
+ --state-danger-dark: var(--color-brutal-red-800);
384
+ --state-danger-base: oklch(0.616 0.249 26.758);
385
+ --state-danger-light: var(--color-brutal-red-200);
386
+ --state-danger-lighter: var(--color-brutal-red-100);
387
+
388
+ /* xs: pressed · sm: resting · md: hover/focus · lg: floating overlay · xl: modal */
389
+ --theme-shadow-xs: oklch(0.145 0.002 286.131 / 0.071) 0px 0.5px 0px;
390
+ --theme-shadow-sm:
391
+ oklch(0.145 0.002 286.131 / 0.071) 0px 0.5px 0px,
392
+ oklch(0.145 0.002 286.131 / 0.012) 0px 5px 4px -2px,
393
+ oklch(0.145 0.002 286.131 / 0.02) 0px 3px 3px -1px,
394
+ oklch(0.145 0.002 286.131 / 0.039) 0px 1px 2px -1px;
395
+ --theme-shadow-md:
396
+ oklch(0.145 0.002 286.131 / 0.071) 0px 0.5px 0px,
397
+ oklch(0.145 0.002 286.131 / 0.02) 0px 8px 8px -4px,
398
+ oklch(0.145 0.002 286.131 / 0.027) 0px 5px 5px -2px,
399
+ oklch(0.145 0.002 286.131 / 0.039) 0px 2px 3px -1px;
400
+ --theme-shadow-lg:
401
+ 0px 1px 1px oklch(0.21 0.006 285 / 0.1), 0px 0px 0px 1px oklch(0.21 0.006 285 / 0.04),
402
+ 0px 2px 12px -4px oklch(0.21 0.006 285 / 0.16);
403
+ --theme-shadow-xl:
404
+ oklch(0.145 0.002 286.131 / 0.071) 0px 0.5px 0px, 0px 0px 0px 1px oklch(0.21 0.006 285 / 0.08),
405
+ oklch(0.145 0.002 286.131 / 0.031) 0px 18px 24px -12px,
406
+ oklch(0.145 0.002 286.131 / 0.039) 0px 12px 12px -6px,
407
+ oklch(0.145 0.002 286.131 / 0.039) 0px 4px 6px -3px;
408
+
409
+ --heading-font: "Inter", system-ui, sans-serif;
410
+ --sans-font: "Geist", system-ui, sans-serif;
411
+ --mono-font: "Geist Mono Variable", "Geist Mono", ui-monospace, monospace;
412
+ }
413
+
414
+ @media (prefers-color-scheme: dark) {
415
+ [data-theme="elegant"]:not(.light) {
416
+ --layer-page: oklch(0.145 0 0);
417
+ --foreground: oklch(0.985 0 0);
418
+ --foreground-strong: oklch(0.95 0 0);
419
+ --foreground-muted: oklch(0.82 0 0);
420
+ --foreground-placeholder: oklch(0.72 0.006 286);
421
+ --foreground-disabled: oklch(0.65 0.006 286);
422
+ --foreground-inverse: oklch(0.145 0 0);
423
+
424
+ --layer-panel: oklch(0.21 0.006 285);
425
+ --layer-muted: oklch(0.274 0.006 286);
426
+ --layer-field: oklch(0.21 0.006 285);
427
+ --layer-popover: oklch(0.145 0 0);
428
+
429
+ --line-strong: oklch(0.95 0 0);
430
+ --line: oklch(0.56 0.006 286);
431
+ --line-subtle: oklch(0.4 0.006 286);
432
+ --line-muted: oklch(96% 0 89.37 / 0.08);
433
+ --line-focus: oklch(0.95 0 0);
434
+ }
435
+ }
436
+
437
+ [data-theme="elegant"].dark {
438
+ --layer-page: oklch(0.145 0 0);
439
+ --foreground: oklch(0.985 0 0);
440
+ --foreground-strong: oklch(0.95 0 0);
441
+ --foreground-muted: oklch(0.82 0 0);
442
+ --foreground-placeholder: oklch(0.72 0.006 286);
443
+ --foreground-disabled: oklch(0.65 0.006 286);
444
+ --foreground-inverse: oklch(0.145 0 0);
445
+
446
+ --layer-panel: oklch(0.21 0.006 285);
447
+ --layer-muted: oklch(0.274 0.006 286);
448
+ --layer-field: oklch(0.21 0.006 285);
449
+ --layer-popover: oklch(0.145 0 0);
450
+
451
+ --line-strong: oklch(0.95 0 0);
452
+ --line: oklch(0.56 0.006 286);
453
+ --line-subtle: oklch(0.4 0.006 286);
454
+ --line-muted: oklch(96% 0 89.37 / 0.08);
455
+ --line-focus: oklch(0.95 0 0);
456
+ }
457
+
458
+ *,
459
+ ::before,
460
+ ::after {
461
+ -webkit-font-smoothing: antialiased;
462
+ -moz-osx-font-smoothing: grayscale;
463
+ }
464
+
465
+ body {
466
+ position: relative;
467
+ }