@forthtilliath/shadcn-ui 0.2.0 → 0.3.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 (32) hide show
  1. package/README.md +22 -12
  2. package/dist/components/blocks/accordion.d.ts.map +1 -1
  3. package/dist/components/blocks/animated-tabs.d.ts.map +1 -1
  4. package/dist/components/blocks/animated-tabs.js +0 -18
  5. package/dist/components/blocks/data-table-ext/pagination.d.ts +2 -2
  6. package/dist/components/blocks/data-table-ext/pagination.d.ts.map +1 -1
  7. package/dist/components/blocks/data-table-ext/pagination.js +6 -10
  8. package/dist/components/blocks/data-table-ext/utils/table-config.d.ts.map +1 -1
  9. package/dist/components/blocks/data-table-ext/utils/table-config.js +1 -16
  10. package/dist/components/blocks/data-table.d.ts +1 -1
  11. package/dist/components/blocks/data-table.js +2 -2
  12. package/dist/components/carousel.d.ts.map +1 -1
  13. package/dist/components/carousel.js +0 -1
  14. package/dist/components/chart.d.ts.map +1 -1
  15. package/dist/components/chart.js +3 -2
  16. package/dist/components/form.d.ts +2 -2
  17. package/dist/components/form.d.ts.map +1 -1
  18. package/dist/components/pagination.d.ts.map +1 -1
  19. package/dist/components/pagination.js +6 -1
  20. package/dist/components/sidebar.d.ts.map +1 -1
  21. package/dist/components/sidebar.js +0 -2
  22. package/dist/hooks/use-mobile.js +1 -1
  23. package/dist/styles/themes/brutalist.css +193 -0
  24. package/dist/styles/themes/crt.css +238 -0
  25. package/dist/styles/themes/default.css +2 -1
  26. package/dist/styles/themes/glass.css +178 -0
  27. package/dist/styles/themes/memphis.css +220 -0
  28. package/dist/styles/themes/newspaper.css +204 -0
  29. package/dist/styles/themes/pixel.css +189 -0
  30. package/dist/styles/themes/sketch.css +214 -0
  31. package/dist/styles/themes/synthwave.css +205 -0
  32. package/package.json +55 -48
@@ -0,0 +1,238 @@
1
+ /*
2
+ * crt — CRT monitor: amber phosphor, scanlines and vignette, glowing text, blinking cursor.
3
+ *
4
+ * Tokens plus signature effects: plain CSS rules on shadcn's data-slot
5
+ * attributes, active only while this theme is imported. Fonts fall back to
6
+ * system stacks; for the full look, load IBM Plex Mono
7
+ * (e.g. from Google Fonts, or next/font).
8
+ */
9
+
10
+ :root {
11
+ --background: oklch(0.96 0.025 85);
12
+ --foreground: oklch(0.3 0.06 60);
13
+ --card: oklch(0.98 0.015 85);
14
+ --card-foreground: oklch(0.3 0.06 60);
15
+ --popover: oklch(0.98 0.015 85);
16
+ --popover-foreground: oklch(0.3 0.06 60);
17
+ --primary: oklch(0.48 0.12 60);
18
+ --primary-foreground: oklch(0.98 0.015 85);
19
+ --secondary: oklch(0.91 0.04 80);
20
+ --secondary-foreground: oklch(0.3 0.06 60);
21
+ --muted: oklch(0.92 0.03 85);
22
+ --muted-foreground: oklch(0.44 0.07 60);
23
+ --accent: oklch(0.88 0.09 85);
24
+ --accent-foreground: oklch(0.3 0.06 60);
25
+ --destructive: oklch(0.5 0.19 27);
26
+ --destructive-foreground: oklch(0.98 0 0);
27
+ --border: oklch(0.72 0.07 70);
28
+ --input: oklch(0.72 0.07 70);
29
+ --ring: oklch(0.48 0.12 60);
30
+ --chart-1: oklch(0.48 0.12 60);
31
+ --chart-2: oklch(0.62 0.14 75);
32
+ --chart-3: oklch(0.4 0.08 60);
33
+ --chart-4: oklch(0.5 0.19 27);
34
+ --chart-5: oklch(0.7 0.12 85);
35
+ --sidebar: oklch(0.98 0.015 85);
36
+ --sidebar-foreground: oklch(0.3 0.06 60);
37
+ --sidebar-primary: oklch(0.48 0.12 60);
38
+ --sidebar-primary-foreground: oklch(0.98 0.015 85);
39
+ --sidebar-accent: oklch(0.88 0.09 85);
40
+ --sidebar-accent-foreground: oklch(0.3 0.06 60);
41
+ --sidebar-border: oklch(0.72 0.07 70);
42
+ --sidebar-ring: oklch(0.48 0.12 60);
43
+ --font-sans:
44
+ "IBM Plex Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo,
45
+ Consolas, "Liberation Mono", monospace;
46
+ --font-serif:
47
+ "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
48
+ "Liberation Mono", monospace;
49
+ --font-mono:
50
+ "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
51
+ "Liberation Mono", monospace;
52
+ --radius: 0rem;
53
+ --shadow-2xs: 0 0 #0000;
54
+ --shadow-xs: 0 0 #0000;
55
+ --shadow-sm: 0 0 #0000;
56
+ --shadow: 0 0 #0000;
57
+ --shadow-md: 0 0 #0000;
58
+ --shadow-lg: 0 0 #0000;
59
+ --shadow-xl: 0 0 #0000;
60
+ --shadow-2xl: 0 0 #0000;
61
+ --crt-scanline: oklch(0.3 0.06 60 / 0.06);
62
+ --crt-glow: 0 0 #0000;
63
+ }
64
+
65
+ .dark {
66
+ --background: oklch(0.15 0.018 60);
67
+ --foreground: oklch(0.84 0.16 72);
68
+ --card: oklch(0.19 0.025 60);
69
+ --card-foreground: oklch(0.84 0.16 72);
70
+ --popover: oklch(0.19 0.025 60);
71
+ --popover-foreground: oklch(0.84 0.16 72);
72
+ --primary: oklch(0.84 0.16 72);
73
+ --primary-foreground: oklch(0.15 0.018 60);
74
+ --secondary: oklch(0.27 0.045 60);
75
+ --secondary-foreground: oklch(0.84 0.16 72);
76
+ --muted: oklch(0.23 0.035 60);
77
+ --muted-foreground: oklch(0.72 0.13 70);
78
+ --accent: oklch(0.91 0.13 88);
79
+ --accent-foreground: oklch(0.15 0.018 60);
80
+ --destructive: oklch(0.7 0.19 30);
81
+ --destructive-foreground: oklch(0.15 0.018 60);
82
+ --border: oklch(0.42 0.08 70);
83
+ --input: oklch(0.42 0.08 70);
84
+ --ring: oklch(0.84 0.16 72);
85
+ --chart-1: oklch(0.84 0.16 72);
86
+ --chart-2: oklch(0.91 0.13 88);
87
+ --chart-3: oklch(0.65 0.12 65);
88
+ --chart-4: oklch(0.7 0.19 30);
89
+ --chart-5: oklch(0.55 0.1 70);
90
+ --sidebar: oklch(0.19 0.025 60);
91
+ --sidebar-foreground: oklch(0.84 0.16 72);
92
+ --sidebar-primary: oklch(0.84 0.16 72);
93
+ --sidebar-primary-foreground: oklch(0.15 0.018 60);
94
+ --sidebar-accent: oklch(0.91 0.13 88);
95
+ --sidebar-accent-foreground: oklch(0.15 0.018 60);
96
+ --sidebar-border: oklch(0.42 0.08 70);
97
+ --sidebar-ring: oklch(0.84 0.16 72);
98
+ --font-sans:
99
+ "IBM Plex Mono", "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo,
100
+ Consolas, "Liberation Mono", monospace;
101
+ --font-serif:
102
+ "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
103
+ "Liberation Mono", monospace;
104
+ --font-mono:
105
+ "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
106
+ "Liberation Mono", monospace;
107
+ --radius: 0rem;
108
+ --shadow-2xs: 0 0 4px 0 oklch(0.84 0.16 72 / 0.22);
109
+ --shadow-xs: 0 0 7px 0 oklch(0.84 0.16 72 / 0.22);
110
+ --shadow-sm: 0 0 10px 0 oklch(0.84 0.16 72 / 0.22);
111
+ --shadow: 0 0 13px 0 oklch(0.84 0.16 72 / 0.22);
112
+ --shadow-md: 0 0 16px 0 oklch(0.84 0.16 72 / 0.22);
113
+ --shadow-lg: 0 0 19px 0 oklch(0.84 0.16 72 / 0.22);
114
+ --shadow-xl: 0 0 22px 0 oklch(0.84 0.16 72 / 0.22);
115
+ --shadow-2xl: 0 0 25px 0 oklch(0.84 0.16 72 / 0.22);
116
+ --crt-scanline: oklch(0 0 0 / 0.28);
117
+ --crt-glow: 0 0 6px color-mix(in oklab, currentColor 55%, transparent);
118
+ }
119
+
120
+ /* Signature effects */
121
+
122
+ :where([data-slot="button"][class*="shadow-xs"]):focus-visible {
123
+ outline: 2px solid var(--ring);
124
+ outline-offset: 2px;
125
+ }
126
+
127
+ body {
128
+ text-shadow: var(--crt-glow);
129
+ background-image: radial-gradient(
130
+ ellipse at center,
131
+ transparent 55%,
132
+ oklch(0 0 0 / 0.35)
133
+ );
134
+ background-attachment: fixed;
135
+ }
136
+
137
+ /* Scanlines over the whole screen, click-through. */
138
+ body::after {
139
+ content: "";
140
+ position: fixed;
141
+ inset: 0;
142
+ z-index: 2147483647;
143
+ pointer-events: none;
144
+ background: repeating-linear-gradient(
145
+ to bottom,
146
+ transparent 0 2px,
147
+ var(--crt-scanline) 2px 3px
148
+ );
149
+ }
150
+
151
+ [data-slot="card"],
152
+ [data-slot="alert"],
153
+ [data-slot="dialog-content"],
154
+ [data-slot="alert-dialog-content"],
155
+ [data-slot="sheet-content"],
156
+ [data-slot="drawer-content"],
157
+ [data-slot="popover-content"],
158
+ [data-slot="hover-card-content"],
159
+ [data-slot="dropdown-menu-content"],
160
+ [data-slot="select-content"],
161
+ [data-slot="menubar-content"],
162
+ [data-slot="input"],
163
+ [data-slot="textarea"],
164
+ [data-slot="select-trigger"],
165
+ [data-slot="input-otp-slot"],
166
+ [data-slot="button"][class*="shadow-xs"],
167
+ [data-slot="badge"] {
168
+ border-radius: 0;
169
+ }
170
+
171
+ [data-slot="button"][class*="shadow-xs"] {
172
+ text-transform: uppercase;
173
+ letter-spacing: 0.08em;
174
+ }
175
+
176
+ [data-slot="button"]:is(
177
+ [class*="bg-primary"],
178
+ [class*="bg-destructive"],
179
+ [class*="bg-secondary"]
180
+ )::before {
181
+ content: "[" / "";
182
+ }
183
+
184
+ [data-slot="button"]:is(
185
+ [class*="bg-primary"],
186
+ [class*="bg-destructive"],
187
+ [class*="bg-secondary"]
188
+ )::after {
189
+ content: "]" / "";
190
+ }
191
+
192
+ [data-slot="card-title"],
193
+ [data-slot="dialog-title"],
194
+ [data-slot="alert-dialog-title"],
195
+ [data-slot="sheet-title"],
196
+ [data-slot="drawer-title"] {
197
+ text-transform: uppercase;
198
+ letter-spacing: 0.06em;
199
+ }
200
+
201
+ [data-slot="card-title"],
202
+ [data-slot="dialog-title"],
203
+ [data-slot="alert-dialog-title"],
204
+ [data-slot="sheet-title"],
205
+ [data-slot="drawer-title"]::after {
206
+ content: "_" / "";
207
+ animation: crt-blink 1s steps(1) infinite;
208
+ }
209
+
210
+ [data-slot="input"],
211
+ [data-slot="textarea"],
212
+ [data-slot="select-trigger"],
213
+ [data-slot="input-otp-slot"] {
214
+ caret-color: var(--primary);
215
+ caret-shape: block;
216
+ }
217
+
218
+ ::selection {
219
+ background: var(--primary);
220
+ color: var(--primary-foreground);
221
+ text-shadow: none;
222
+ }
223
+
224
+ @keyframes crt-blink {
225
+ 50% {
226
+ opacity: 0;
227
+ }
228
+ }
229
+
230
+ @media (prefers-reduced-motion: reduce) {
231
+ [data-slot="card-title"]::after,
232
+ [data-slot="dialog-title"]::after,
233
+ [data-slot="alert-dialog-title"]::after,
234
+ [data-slot="sheet-title"]::after,
235
+ [data-slot="drawer-title"]::after {
236
+ animation: none;
237
+ }
238
+ }
@@ -11,7 +11,8 @@
11
11
  --secondary: oklch(0.97 0 0);
12
12
  --secondary-foreground: oklch(0.205 0 0);
13
13
  --muted: oklch(0.97 0 0);
14
- --muted-foreground: oklch(0.556 0 0);
14
+ /* 0.545 (shadcn: 0.556) reaches 4.5:1 on --muted, for WCAG AA. */
15
+ --muted-foreground: oklch(0.545 0 0);
15
16
  --accent: oklch(0.97 0 0);
16
17
  --accent-foreground: oklch(0.205 0 0);
17
18
  --destructive: oklch(0.577 0.245 27.325);
@@ -0,0 +1,178 @@
1
+ /*
2
+ * glass — Glassmorphism: frosted translucent surfaces floating over a colorful gradient mesh.
3
+ *
4
+ * Tokens plus signature effects: plain CSS rules on shadcn's data-slot
5
+ * attributes, active only while this theme is imported. Fonts fall back to
6
+ * system stacks; for the full look, load Plus Jakarta Sans
7
+ * (e.g. from Google Fonts, or next/font).
8
+ */
9
+
10
+ :root {
11
+ --background: oklch(0.97 0.012 260);
12
+ --foreground: oklch(0.22 0.03 265);
13
+ --card: oklch(0.99 0.006 260);
14
+ --card-foreground: oklch(0.22 0.03 265);
15
+ --popover: oklch(0.99 0.006 260);
16
+ --popover-foreground: oklch(0.22 0.03 265);
17
+ --primary: oklch(0.5 0.2 265);
18
+ --primary-foreground: oklch(1 0 0);
19
+ --secondary: oklch(0.94 0.02 260);
20
+ --secondary-foreground: oklch(0.3 0.04 265);
21
+ --muted: oklch(0.94 0.015 260);
22
+ --muted-foreground: oklch(0.45 0.03 265);
23
+ --accent: oklch(0.92 0.04 200);
24
+ --accent-foreground: oklch(0.3 0.05 220);
25
+ --destructive: oklch(0.54 0.2 25);
26
+ --destructive-foreground: oklch(1 0 0);
27
+ --border: oklch(0.9 0.02 260);
28
+ --input: oklch(0.9 0.02 260);
29
+ --ring: oklch(0.5 0.2 265);
30
+ --chart-1: oklch(0.5 0.2 265);
31
+ --chart-2: oklch(0.65 0.14 200);
32
+ --chart-3: oklch(0.65 0.2 350);
33
+ --chart-4: oklch(0.75 0.14 90);
34
+ --chart-5: oklch(0.6 0.16 300);
35
+ --sidebar: oklch(0.99 0.006 260);
36
+ --sidebar-foreground: oklch(0.22 0.03 265);
37
+ --sidebar-primary: oklch(0.5 0.2 265);
38
+ --sidebar-primary-foreground: oklch(1 0 0);
39
+ --sidebar-accent: oklch(0.92 0.04 200);
40
+ --sidebar-accent-foreground: oklch(0.3 0.05 220);
41
+ --sidebar-border: oklch(0.9 0.02 260);
42
+ --sidebar-ring: oklch(0.5 0.2 265);
43
+ --font-sans:
44
+ "Plus Jakarta Sans", "Manrope", ui-sans-serif, system-ui, -apple-system,
45
+ "Segoe UI", sans-serif;
46
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", serif;
47
+ --font-mono:
48
+ "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
49
+ "Liberation Mono", monospace;
50
+ --radius: 1.25rem;
51
+ --shadow-2xs: 0 2px 10px -4px oklch(0.4 0.1 265 / 0.08);
52
+ --shadow-xs: 0 4px 16px -4px oklch(0.4 0.1 265 / 0.1);
53
+ --shadow-sm: 0 6px 22px -4px oklch(0.4 0.1 265 / 0.12);
54
+ --shadow: 0 8px 28px -4px oklch(0.4 0.1 265 / 0.14);
55
+ --shadow-md: 0 10px 34px -4px oklch(0.4 0.1 265 / 0.16);
56
+ --shadow-lg: 0 12px 40px -4px oklch(0.4 0.1 265 / 0.18);
57
+ --shadow-xl: 0 14px 46px -4px oklch(0.4 0.1 265 / 0.2);
58
+ --shadow-2xl: 0 16px 52px -4px oklch(0.4 0.1 265 / 0.22);
59
+ --mesh-1: oklch(0.82 0.12 300 / 0.75);
60
+ --mesh-2: oklch(0.85 0.11 200 / 0.75);
61
+ --mesh-3: oklch(0.86 0.12 350 / 0.7);
62
+ --mesh-4: oklch(0.9 0.1 90 / 0.65);
63
+ --glass-edge: oklch(1 0 0 / 0.65);
64
+ }
65
+
66
+ .dark {
67
+ --background: oklch(0.17 0.03 270);
68
+ --foreground: oklch(0.96 0.01 260);
69
+ --card: oklch(0.23 0.035 270);
70
+ --card-foreground: oklch(0.96 0.01 260);
71
+ --popover: oklch(0.23 0.035 270);
72
+ --popover-foreground: oklch(0.96 0.01 260);
73
+ --primary: oklch(0.74 0.14 265);
74
+ --primary-foreground: oklch(0.17 0.03 270);
75
+ --secondary: oklch(0.3 0.04 270);
76
+ --secondary-foreground: oklch(0.96 0.01 260);
77
+ --muted: oklch(0.27 0.035 270);
78
+ --muted-foreground: oklch(0.78 0.03 265);
79
+ --accent: oklch(0.35 0.05 220);
80
+ --accent-foreground: oklch(0.96 0.01 260);
81
+ --destructive: oklch(0.69 0.19 25);
82
+ --destructive-foreground: oklch(0.17 0.03 270);
83
+ --border: oklch(0.4 0.04 270);
84
+ --input: oklch(0.4 0.04 270);
85
+ --ring: oklch(0.74 0.14 265);
86
+ --chart-1: oklch(0.74 0.14 265);
87
+ --chart-2: oklch(0.75 0.12 200);
88
+ --chart-3: oklch(0.72 0.17 350);
89
+ --chart-4: oklch(0.8 0.12 90);
90
+ --chart-5: oklch(0.7 0.15 300);
91
+ --sidebar: oklch(0.23 0.035 270);
92
+ --sidebar-foreground: oklch(0.96 0.01 260);
93
+ --sidebar-primary: oklch(0.74 0.14 265);
94
+ --sidebar-primary-foreground: oklch(0.17 0.03 270);
95
+ --sidebar-accent: oklch(0.35 0.05 220);
96
+ --sidebar-accent-foreground: oklch(0.96 0.01 260);
97
+ --sidebar-border: oklch(0.4 0.04 270);
98
+ --sidebar-ring: oklch(0.74 0.14 265);
99
+ --font-sans:
100
+ "Plus Jakarta Sans", "Manrope", ui-sans-serif, system-ui, -apple-system,
101
+ "Segoe UI", sans-serif;
102
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", serif;
103
+ --font-mono:
104
+ "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas,
105
+ "Liberation Mono", monospace;
106
+ --radius: 1.25rem;
107
+ --shadow-2xs: 0 2px 10px -4px oklch(0 0 0 / 0.3);
108
+ --shadow-xs: 0 4px 16px -4px oklch(0 0 0 / 0.34);
109
+ --shadow-sm: 0 6px 22px -4px oklch(0 0 0 / 0.38);
110
+ --shadow: 0 8px 28px -4px oklch(0 0 0 / 0.42);
111
+ --shadow-md: 0 10px 34px -4px oklch(0 0 0 / 0.46);
112
+ --shadow-lg: 0 12px 40px -4px oklch(0 0 0 / 0.5);
113
+ --shadow-xl: 0 14px 46px -4px oklch(0 0 0 / 0.54);
114
+ --shadow-2xl: 0 16px 52px -4px oklch(0 0 0 / 0.58);
115
+ --mesh-1: oklch(0.45 0.2 300 / 0.8);
116
+ --mesh-2: oklch(0.42 0.14 220 / 0.8);
117
+ --mesh-3: oklch(0.42 0.18 350 / 0.7);
118
+ --mesh-4: oklch(0.38 0.12 170 / 0.7);
119
+ --glass-edge: oklch(1 0 0 / 0.14);
120
+ }
121
+
122
+ /* Signature effects */
123
+
124
+ :where([data-slot="button"][class*="shadow-xs"]):focus-visible {
125
+ outline: 2px solid var(--ring);
126
+ outline-offset: 2px;
127
+ }
128
+
129
+ body {
130
+ background-color: var(--background);
131
+ background-image:
132
+ radial-gradient(at 12% 18%, var(--mesh-1) 0, transparent 45%),
133
+ radial-gradient(at 88% 8%, var(--mesh-2) 0, transparent 42%),
134
+ radial-gradient(at 72% 88%, var(--mesh-3) 0, transparent 46%),
135
+ radial-gradient(at 8% 92%, var(--mesh-4) 0, transparent 40%);
136
+ background-attachment: fixed;
137
+ }
138
+
139
+ [data-slot="card"],
140
+ [data-slot="alert"],
141
+ [data-slot="dialog-content"],
142
+ [data-slot="alert-dialog-content"],
143
+ [data-slot="sheet-content"],
144
+ [data-slot="drawer-content"],
145
+ [data-slot="popover-content"],
146
+ [data-slot="hover-card-content"],
147
+ [data-slot="dropdown-menu-content"],
148
+ [data-slot="select-content"],
149
+ [data-slot="menubar-content"] {
150
+ background-color: color-mix(in oklab, var(--card) 62%, transparent);
151
+ backdrop-filter: blur(20px) saturate(1.6);
152
+ -webkit-backdrop-filter: blur(20px) saturate(1.6);
153
+ border: 1px solid var(--glass-edge);
154
+ }
155
+
156
+ [data-slot="input"],
157
+ [data-slot="textarea"],
158
+ [data-slot="select-trigger"],
159
+ [data-slot="input-otp-slot"],
160
+ [data-slot="button"][class*="border-input"] {
161
+ background-color: color-mix(in oklab, var(--card) 45%, transparent);
162
+ border-color: var(--glass-edge);
163
+ backdrop-filter: blur(8px);
164
+ -webkit-backdrop-filter: blur(8px);
165
+ }
166
+
167
+ /* A light sheen across filled buttons. */
168
+ [data-slot="button"]:is(
169
+ [class*="bg-primary"],
170
+ [class*="bg-destructive"],
171
+ [class*="bg-secondary"]
172
+ ) {
173
+ background-image: linear-gradient(
174
+ 180deg,
175
+ oklch(1 0 0 / 0.28),
176
+ oklch(1 0 0 / 0) 60%
177
+ );
178
+ }
@@ -0,0 +1,220 @@
1
+ /*
2
+ * memphis — Memphis pop: confetti pattern, asymmetric corners, squiggly underlined titles, colored hard shadows.
3
+ *
4
+ * Tokens plus signature effects: plain CSS rules on shadcn's data-slot
5
+ * attributes, active only while this theme is imported. Fonts fall back to
6
+ * system stacks; for the full look, load Rubik
7
+ * (e.g. from Google Fonts, or next/font).
8
+ */
9
+
10
+ :root {
11
+ --background: oklch(0.97 0.02 90);
12
+ --foreground: oklch(0.2 0.02 280);
13
+ --card: oklch(1 0 0);
14
+ --card-foreground: oklch(0.2 0.02 280);
15
+ --popover: oklch(1 0 0);
16
+ --popover-foreground: oklch(0.2 0.02 280);
17
+ --primary: oklch(0.56 0.23 350);
18
+ --primary-foreground: oklch(1 0 0);
19
+ --secondary: oklch(0.78 0.12 185);
20
+ --secondary-foreground: oklch(0.2 0.02 280);
21
+ --muted: oklch(0.94 0.03 90);
22
+ --muted-foreground: oklch(0.42 0.03 280);
23
+ --accent: oklch(0.9 0.16 95);
24
+ --accent-foreground: oklch(0.2 0.02 280);
25
+ --destructive: oklch(0.53 0.21 27);
26
+ --destructive-foreground: oklch(1 0 0);
27
+ --border: oklch(0.2 0.02 280);
28
+ --input: oklch(0.2 0.02 280);
29
+ --ring: oklch(0.56 0.23 350);
30
+ --chart-1: oklch(0.56 0.23 350);
31
+ --chart-2: oklch(0.78 0.12 185);
32
+ --chart-3: oklch(0.9 0.16 95);
33
+ --chart-4: oklch(0.55 0.2 295);
34
+ --chart-5: oklch(0.7 0.18 40);
35
+ --sidebar: oklch(1 0 0);
36
+ --sidebar-foreground: oklch(0.2 0.02 280);
37
+ --sidebar-primary: oklch(0.56 0.23 350);
38
+ --sidebar-primary-foreground: oklch(1 0 0);
39
+ --sidebar-accent: oklch(0.9 0.16 95);
40
+ --sidebar-accent-foreground: oklch(0.2 0.02 280);
41
+ --sidebar-border: oklch(0.2 0.02 280);
42
+ --sidebar-ring: oklch(0.56 0.23 350);
43
+ --font-sans:
44
+ "Rubik", "Poppins", ui-sans-serif, system-ui, -apple-system, "Segoe UI",
45
+ sans-serif;
46
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", serif;
47
+ --font-mono:
48
+ ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
49
+ --font-display:
50
+ "Rubik", "Poppins", ui-sans-serif, system-ui, -apple-system, "Segoe UI",
51
+ sans-serif;
52
+ --radius: 1rem;
53
+ --shadow-2xs: 2px 2px 0px 0px oklch(0.78 0.12 185);
54
+ --shadow-xs: 2px 2px 0px 0px oklch(0.78 0.12 185);
55
+ --shadow-sm: 3px 3px 0px 0px oklch(0.78 0.12 185);
56
+ --shadow: 4px 4px 0px 0px oklch(0.78 0.12 185);
57
+ --shadow-md: 5px 5px 0px 0px oklch(0.78 0.12 185);
58
+ --shadow-lg: 6px 6px 0px 0px oklch(0.78 0.12 185);
59
+ --shadow-xl: 8px 8px 0px 0px oklch(0.78 0.12 185);
60
+ --shadow-2xl: 12px 12px 0px 0px oklch(0.78 0.12 185);
61
+ --memphis-a: oklch(0.62 0.23 350 / 0.45);
62
+ --memphis-b: oklch(0.78 0.12 185 / 0.55);
63
+ --memphis-c: oklch(0.2 0.02 280 / 0.07);
64
+ }
65
+
66
+ .dark {
67
+ --background: oklch(0.22 0.05 285);
68
+ --foreground: oklch(0.97 0.02 90);
69
+ --card: oklch(0.27 0.06 285);
70
+ --card-foreground: oklch(0.97 0.02 90);
71
+ --popover: oklch(0.27 0.06 285);
72
+ --popover-foreground: oklch(0.97 0.02 90);
73
+ --primary: oklch(0.75 0.19 350);
74
+ --primary-foreground: oklch(0.2 0.04 285);
75
+ --secondary: oklch(0.8 0.12 185);
76
+ --secondary-foreground: oklch(0.2 0.04 285);
77
+ --muted: oklch(0.3 0.06 285);
78
+ --muted-foreground: oklch(0.8 0.03 90);
79
+ --accent: oklch(0.9 0.16 95);
80
+ --accent-foreground: oklch(0.2 0.04 285);
81
+ --destructive: oklch(0.7 0.2 27);
82
+ --destructive-foreground: oklch(0.2 0.04 285);
83
+ --border: oklch(0.97 0.02 90);
84
+ --input: oklch(0.97 0.02 90);
85
+ --ring: oklch(0.75 0.19 350);
86
+ --chart-1: oklch(0.75 0.19 350);
87
+ --chart-2: oklch(0.8 0.12 185);
88
+ --chart-3: oklch(0.9 0.16 95);
89
+ --chart-4: oklch(0.7 0.18 295);
90
+ --chart-5: oklch(0.75 0.17 40);
91
+ --sidebar: oklch(0.27 0.06 285);
92
+ --sidebar-foreground: oklch(0.97 0.02 90);
93
+ --sidebar-primary: oklch(0.75 0.19 350);
94
+ --sidebar-primary-foreground: oklch(0.2 0.04 285);
95
+ --sidebar-accent: oklch(0.9 0.16 95);
96
+ --sidebar-accent-foreground: oklch(0.2 0.04 285);
97
+ --sidebar-border: oklch(0.97 0.02 90);
98
+ --sidebar-ring: oklch(0.75 0.19 350);
99
+ --font-sans:
100
+ "Rubik", "Poppins", ui-sans-serif, system-ui, -apple-system, "Segoe UI",
101
+ sans-serif;
102
+ --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", serif;
103
+ --font-mono:
104
+ ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
105
+ --font-display:
106
+ "Rubik", "Poppins", ui-sans-serif, system-ui, -apple-system, "Segoe UI",
107
+ sans-serif;
108
+ --radius: 1rem;
109
+ --shadow-2xs: 2px 2px 0px 0px oklch(0.75 0.19 350);
110
+ --shadow-xs: 2px 2px 0px 0px oklch(0.75 0.19 350);
111
+ --shadow-sm: 3px 3px 0px 0px oklch(0.75 0.19 350);
112
+ --shadow: 4px 4px 0px 0px oklch(0.75 0.19 350);
113
+ --shadow-md: 5px 5px 0px 0px oklch(0.75 0.19 350);
114
+ --shadow-lg: 6px 6px 0px 0px oklch(0.75 0.19 350);
115
+ --shadow-xl: 8px 8px 0px 0px oklch(0.75 0.19 350);
116
+ --shadow-2xl: 12px 12px 0px 0px oklch(0.75 0.19 350);
117
+ --memphis-a: oklch(0.75 0.19 350 / 0.45);
118
+ --memphis-b: oklch(0.8 0.12 185 / 0.4);
119
+ --memphis-c: oklch(0.97 0.02 90 / 0.06);
120
+ }
121
+
122
+ /* Signature effects */
123
+
124
+ :where([data-slot="button"][class*="shadow-xs"]):focus-visible {
125
+ outline: 2px solid var(--ring);
126
+ outline-offset: 2px;
127
+ }
128
+
129
+ /* Confetti: dots, rings and dashes. */
130
+ body {
131
+ background-image:
132
+ radial-gradient(circle at 20% 30%, var(--memphis-a) 3px, transparent 3.5px),
133
+ radial-gradient(
134
+ circle at 70% 75%,
135
+ transparent 4px,
136
+ var(--memphis-b) 4.5px 6px,
137
+ transparent 6.5px
138
+ ),
139
+ linear-gradient(
140
+ 45deg,
141
+ transparent 48%,
142
+ var(--memphis-c) 48% 52%,
143
+ transparent 52%
144
+ );
145
+ background-size:
146
+ 64px 64px,
147
+ 96px 96px,
148
+ 52px 52px;
149
+ }
150
+
151
+ [data-slot="card"],
152
+ [data-slot="alert"],
153
+ [data-slot="dialog-content"],
154
+ [data-slot="alert-dialog-content"],
155
+ [data-slot="sheet-content"],
156
+ [data-slot="drawer-content"],
157
+ [data-slot="popover-content"],
158
+ [data-slot="hover-card-content"],
159
+ [data-slot="dropdown-menu-content"],
160
+ [data-slot="select-content"],
161
+ [data-slot="menubar-content"],
162
+ [data-slot="input"],
163
+ [data-slot="textarea"],
164
+ [data-slot="select-trigger"],
165
+ [data-slot="input-otp-slot"],
166
+ [data-slot="button"][class*="shadow-xs"],
167
+ [data-slot="badge"] {
168
+ border: 2px solid var(--border);
169
+ }
170
+
171
+ [data-slot="card"],
172
+ [data-slot="alert"],
173
+ [data-slot="dialog-content"],
174
+ [data-slot="alert-dialog-content"],
175
+ [data-slot="sheet-content"],
176
+ [data-slot="drawer-content"],
177
+ [data-slot="popover-content"],
178
+ [data-slot="hover-card-content"],
179
+ [data-slot="dropdown-menu-content"],
180
+ [data-slot="select-content"],
181
+ [data-slot="menubar-content"] {
182
+ border-radius: 1.75rem 0.25rem 1.75rem 0.25rem;
183
+ box-shadow: var(--shadow-lg);
184
+ }
185
+
186
+ [data-slot="button"][class*="shadow-xs"],
187
+ [data-slot="badge"] {
188
+ border-radius: 999px;
189
+ font-weight: 700;
190
+ }
191
+
192
+ [data-slot="button"][class*="shadow-xs"] {
193
+ box-shadow: var(--shadow-sm);
194
+ transition: transform 100ms ease;
195
+ }
196
+
197
+ [data-slot="button"][class*="shadow-xs"]:hover {
198
+ transform: translateY(-2px) rotate(-1deg);
199
+ }
200
+
201
+ [data-slot="badge"] {
202
+ transform: rotate(-2deg);
203
+ }
204
+
205
+ [data-slot="card-title"],
206
+ [data-slot="dialog-title"],
207
+ [data-slot="alert-dialog-title"],
208
+ [data-slot="sheet-title"],
209
+ [data-slot="drawer-title"] {
210
+ font-family: var(--font-display);
211
+ font-weight: 800;
212
+ text-decoration: underline wavy var(--primary) 2px;
213
+ text-underline-offset: 6px;
214
+ }
215
+
216
+ @media (prefers-reduced-motion: reduce) {
217
+ [data-slot="button"][class*="shadow-xs"] {
218
+ transition: none;
219
+ }
220
+ }