luaniverse 4.2.4 → 4.2.7
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.
- package/dist/index.cjs +632 -256
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +632 -256
- package/dist/index.js.map +1 -1
- package/dist/safelist.js +469 -52
- package/dist/safelist.txt +397 -54
- package/dist/styles.css +100 -118
- package/dist/tailwind.preset.js +2 -2
- package/dist/theme.css +254 -0
- package/package.json +2 -1
package/dist/styles.css
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Onest:wght@400;500;600;700&display=swap')
|
|
1
|
+
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Onest:wght@400;500;600;700&display=swap')
|
|
2
|
+
layer(base);
|
|
2
3
|
|
|
3
4
|
@import 'react-day-picker/style.css';
|
|
5
|
+
@import './theme.css';
|
|
4
6
|
|
|
5
7
|
@import 'tailwindcss' prefix(lua);
|
|
6
8
|
|
|
@@ -52,21 +54,13 @@
|
|
|
52
54
|
--color-destructive-active: hsl(var(--destructive-active));
|
|
53
55
|
--color-black: #000000;
|
|
54
56
|
--color-black-hover: #333333;
|
|
55
|
-
--color-neutral-50: #
|
|
56
|
-
--color-neutral-100: #
|
|
57
|
-
--color-neutral-200: #
|
|
58
|
-
--color-neutral-300: #
|
|
59
|
-
--color-neutral-400: #
|
|
60
|
-
--color-neutral-500: #
|
|
61
|
-
--color-neutral-600: #
|
|
62
|
-
--color-border: hsl(var(--border));
|
|
63
|
-
--color-input: hsl(var(--input));
|
|
64
|
-
--color-ring: hsl(var(--ring));
|
|
65
|
-
--color-chart-1: hsl(var(--chart-1));
|
|
66
|
-
--color-chart-2: hsl(var(--chart-2));
|
|
67
|
-
--color-chart-3: hsl(var(--chart-3));
|
|
68
|
-
--color-chart-4: hsl(var(--chart-4));
|
|
69
|
-
--color-chart-5: hsl(var(--chart-5));
|
|
57
|
+
--color-neutral-50: #f9fafb;
|
|
58
|
+
--color-neutral-100: #f4f4f4;
|
|
59
|
+
--color-neutral-200: #ebebeb;
|
|
60
|
+
--color-neutral-300: #e6e6e6;
|
|
61
|
+
--color-neutral-400: #e0e0e0;
|
|
62
|
+
--color-neutral-500: #d1d5db;
|
|
63
|
+
--color-neutral-600: #e5e7eb;
|
|
70
64
|
}
|
|
71
65
|
|
|
72
66
|
/*
|
|
@@ -87,10 +81,6 @@
|
|
|
87
81
|
}
|
|
88
82
|
}
|
|
89
83
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
84
|
@utility link-primary {
|
|
95
85
|
/* Responsive breakpoints */
|
|
96
86
|
|
|
@@ -116,70 +106,16 @@
|
|
|
116
106
|
|
|
117
107
|
@layer base {
|
|
118
108
|
:root {
|
|
119
|
-
--background: 0 0% 100%;
|
|
120
109
|
--foreground: 240 10% 3.9%;
|
|
121
|
-
--card: 0 0% 100%;
|
|
122
|
-
--card-foreground: 240 10% 3.9%;
|
|
123
|
-
--popover: 0 0% 100%;
|
|
124
|
-
--popover-foreground: 240 10% 3.9%;
|
|
125
|
-
--primary: 218 100% 59%;
|
|
126
|
-
--primary-foreground: 0 0% 100%;
|
|
127
|
-
--primary-hover: 218 91% 56%;
|
|
128
|
-
--primary-active: 218 85% 52%;
|
|
129
|
-
--secondary: 240 4.8% 95.9%;
|
|
130
|
-
--secondary-foreground: 240 5.9% 10%;
|
|
131
|
-
--secondary-hover: 240 4.8% 90%;
|
|
132
|
-
--secondary-active: 240 4.8% 85%;
|
|
133
|
-
--muted: 240 4.8% 95.9%;
|
|
134
|
-
--muted-foreground: 240 3.8% 46.1%;
|
|
135
|
-
--accent: 240 4.8% 95.9%;
|
|
136
|
-
--accent-foreground: 240 5.9% 10%;
|
|
137
|
-
--destructive: 351 100% 45%;
|
|
138
|
-
--destructive-foreground: 0 0% 100%;
|
|
139
|
-
--destructive-hover: 351 100% 40%;
|
|
140
|
-
--destructive-active: 351 100% 37%;
|
|
141
|
-
--border: 240 5.9% 90%;
|
|
142
|
-
--input: 240 5.9% 90%;
|
|
143
|
-
--ring: 240 5.9% 10%;
|
|
144
|
-
--chart-1: 12 76% 61%;
|
|
145
|
-
--chart-2: 173 58% 39%;
|
|
146
|
-
--chart-3: 197 37% 24%;
|
|
147
|
-
--chart-4: 43 74% 66%;
|
|
148
|
-
--chart-5: 27 87% 67%;
|
|
149
|
-
--radius: 0.5rem;
|
|
150
110
|
}
|
|
151
111
|
|
|
112
|
+
@media (prefers-color-scheme: dark) {
|
|
113
|
+
:root {
|
|
114
|
+
--foreground: 240 10% 3.9%;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
152
117
|
.dark {
|
|
153
|
-
--background: 240 10% 3.9%;
|
|
154
118
|
--foreground: 0 0% 98%;
|
|
155
|
-
--card: 240 10% 3.9%;
|
|
156
|
-
--card-foreground: 0 0% 98%;
|
|
157
|
-
--popover: 240 10% 3.9%;
|
|
158
|
-
--popover-foreground: 0 0% 98%;
|
|
159
|
-
--primary: 218 100% 59%;
|
|
160
|
-
--primary-foreground: 0 0% 100%;
|
|
161
|
-
--primary-hover: 218 91% 56%;
|
|
162
|
-
--primary-active: 218 85% 52%;
|
|
163
|
-
--secondary: 240 3.7% 15.9%;
|
|
164
|
-
--secondary-foreground: 0 0% 98%;
|
|
165
|
-
--secondary-hover: 240 3.7% 20%;
|
|
166
|
-
--secondary-active: 240 3.7% 25%;
|
|
167
|
-
--muted: 240 3.7% 15.9%;
|
|
168
|
-
--muted-foreground: 240 5% 64.9%;
|
|
169
|
-
--accent: 240 3.7% 15.9%;
|
|
170
|
-
--accent-foreground: 0 0% 98%;
|
|
171
|
-
--destructive: 351 100% 45%;
|
|
172
|
-
--destructive-foreground: 0 0% 100%;
|
|
173
|
-
--destructive-hover: 351 100% 40%;
|
|
174
|
-
--destructive-active: 351 100% 37%;
|
|
175
|
-
--border: 240 3.7% 15.9%;
|
|
176
|
-
--input: 240 3.7% 15.9%;
|
|
177
|
-
--ring: 240 4.9% 83.9%;
|
|
178
|
-
--chart-1: 220 70% 50%;
|
|
179
|
-
--chart-2: 160 60% 45%;
|
|
180
|
-
--chart-3: 30 80% 55%;
|
|
181
|
-
--chart-4: 280 65% 60%;
|
|
182
|
-
--chart-5: 340 75% 55%;
|
|
183
119
|
}
|
|
184
120
|
}
|
|
185
121
|
|
|
@@ -190,16 +126,21 @@
|
|
|
190
126
|
body {
|
|
191
127
|
@apply lua:bg-background lua:text-foreground lua:font-sans;
|
|
192
128
|
}
|
|
193
|
-
|
|
129
|
+
|
|
194
130
|
/* Typography base styles */
|
|
195
|
-
h1,
|
|
131
|
+
h1,
|
|
132
|
+
h2,
|
|
133
|
+
h3,
|
|
134
|
+
h4,
|
|
135
|
+
h5,
|
|
136
|
+
h6 {
|
|
196
137
|
@apply lua:font-heading lua:text-foreground;
|
|
197
138
|
}
|
|
198
|
-
|
|
139
|
+
|
|
199
140
|
p {
|
|
200
141
|
@apply lua:text-sm lua:leading-relaxed lua:font-sans lua:text-foreground;
|
|
201
142
|
}
|
|
202
|
-
|
|
143
|
+
|
|
203
144
|
/* Link base styles */
|
|
204
145
|
a {
|
|
205
146
|
@apply lua:text-primary lua:underline-offset-4 lua:hover:underline lua:focus-visible:outline-2 lua:focus-visible:outline-ring lua:focus-visible:outline-offset-2 lua:focus-visible:rounded-sm;
|
|
@@ -207,55 +148,96 @@
|
|
|
207
148
|
}
|
|
208
149
|
}
|
|
209
150
|
|
|
151
|
+
|
|
210
152
|
/* Sheet Animation Keyframes */
|
|
211
153
|
@keyframes slide-in-from-top {
|
|
212
|
-
0% {
|
|
213
|
-
|
|
154
|
+
0% {
|
|
155
|
+
transform: translateY(-100%);
|
|
156
|
+
}
|
|
157
|
+
100% {
|
|
158
|
+
transform: translateY(0);
|
|
159
|
+
}
|
|
214
160
|
}
|
|
215
161
|
|
|
216
162
|
@keyframes slide-in-from-bottom {
|
|
217
|
-
0% {
|
|
218
|
-
|
|
163
|
+
0% {
|
|
164
|
+
transform: translateY(100%);
|
|
165
|
+
}
|
|
166
|
+
100% {
|
|
167
|
+
transform: translateY(0);
|
|
168
|
+
}
|
|
219
169
|
}
|
|
220
170
|
|
|
221
171
|
@keyframes slide-in-from-left {
|
|
222
|
-
0% {
|
|
223
|
-
|
|
172
|
+
0% {
|
|
173
|
+
transform: translateX(-100%);
|
|
174
|
+
}
|
|
175
|
+
100% {
|
|
176
|
+
transform: translateX(0);
|
|
177
|
+
}
|
|
224
178
|
}
|
|
225
179
|
|
|
226
180
|
@keyframes slide-in-from-right {
|
|
227
|
-
0% {
|
|
228
|
-
|
|
181
|
+
0% {
|
|
182
|
+
transform: translateX(100%);
|
|
183
|
+
}
|
|
184
|
+
100% {
|
|
185
|
+
transform: translateX(0);
|
|
186
|
+
}
|
|
229
187
|
}
|
|
230
188
|
|
|
231
189
|
@keyframes slide-out-to-top {
|
|
232
|
-
0% {
|
|
233
|
-
|
|
190
|
+
0% {
|
|
191
|
+
transform: translateY(0);
|
|
192
|
+
}
|
|
193
|
+
100% {
|
|
194
|
+
transform: translateY(-100%);
|
|
195
|
+
}
|
|
234
196
|
}
|
|
235
197
|
|
|
236
198
|
@keyframes slide-out-to-bottom {
|
|
237
|
-
0% {
|
|
238
|
-
|
|
199
|
+
0% {
|
|
200
|
+
transform: translateY(0);
|
|
201
|
+
}
|
|
202
|
+
100% {
|
|
203
|
+
transform: translateY(100%);
|
|
204
|
+
}
|
|
239
205
|
}
|
|
240
206
|
|
|
241
207
|
@keyframes slide-out-to-left {
|
|
242
|
-
0% {
|
|
243
|
-
|
|
208
|
+
0% {
|
|
209
|
+
transform: translateX(0);
|
|
210
|
+
}
|
|
211
|
+
100% {
|
|
212
|
+
transform: translateX(-100%);
|
|
213
|
+
}
|
|
244
214
|
}
|
|
245
215
|
|
|
246
216
|
@keyframes slide-out-to-right {
|
|
247
|
-
0% {
|
|
248
|
-
|
|
217
|
+
0% {
|
|
218
|
+
transform: translateX(0);
|
|
219
|
+
}
|
|
220
|
+
100% {
|
|
221
|
+
transform: translateX(100%);
|
|
222
|
+
}
|
|
249
223
|
}
|
|
250
224
|
|
|
251
225
|
@keyframes fade-in {
|
|
252
|
-
0% {
|
|
253
|
-
|
|
226
|
+
0% {
|
|
227
|
+
opacity: 0;
|
|
228
|
+
}
|
|
229
|
+
100% {
|
|
230
|
+
opacity: 1;
|
|
231
|
+
}
|
|
254
232
|
}
|
|
255
233
|
|
|
256
234
|
@keyframes fade-out {
|
|
257
|
-
0% {
|
|
258
|
-
|
|
235
|
+
0% {
|
|
236
|
+
opacity: 1;
|
|
237
|
+
}
|
|
238
|
+
100% {
|
|
239
|
+
opacity: 0;
|
|
240
|
+
}
|
|
259
241
|
}
|
|
260
242
|
|
|
261
243
|
/* Sheet Animation Classes */
|
|
@@ -308,58 +290,58 @@
|
|
|
308
290
|
}
|
|
309
291
|
|
|
310
292
|
/* Data attribute variants for Sheet animations */
|
|
311
|
-
.lua\:data-\[state\=open\]\:animate-in[data-state=
|
|
293
|
+
.lua\:data-\[state\=open\]\:animate-in[data-state='open'] {
|
|
312
294
|
animation: fade-in 0.2s ease-out;
|
|
313
295
|
}
|
|
314
296
|
|
|
315
|
-
.lua\:data-\[state\=closed\]\:animate-out[data-state=
|
|
297
|
+
.lua\:data-\[state\=closed\]\:animate-out[data-state='closed'] {
|
|
316
298
|
animation: fade-out 0.2s ease-out;
|
|
317
299
|
}
|
|
318
300
|
|
|
319
|
-
.lua\:data-\[state\=open\]\:fade-in-0[data-state=
|
|
301
|
+
.lua\:data-\[state\=open\]\:fade-in-0[data-state='open'] {
|
|
320
302
|
animation: fade-in 0.2s ease-out;
|
|
321
303
|
}
|
|
322
304
|
|
|
323
|
-
.lua\:data-\[state\=closed\]\:fade-out-0[data-state=
|
|
305
|
+
.lua\:data-\[state\=closed\]\:fade-out-0[data-state='closed'] {
|
|
324
306
|
animation: fade-out 0.2s ease-out;
|
|
325
307
|
}
|
|
326
308
|
|
|
327
|
-
.lua\:data-\[state\=open\]\:slide-in-from-top[data-state=
|
|
309
|
+
.lua\:data-\[state\=open\]\:slide-in-from-top[data-state='open'] {
|
|
328
310
|
animation: slide-in-from-top 0.3s ease-out;
|
|
329
311
|
}
|
|
330
312
|
|
|
331
|
-
.lua\:data-\[state\=closed\]\:slide-out-to-top[data-state=
|
|
313
|
+
.lua\:data-\[state\=closed\]\:slide-out-to-top[data-state='closed'] {
|
|
332
314
|
animation: slide-out-to-top 0.3s ease-out;
|
|
333
315
|
}
|
|
334
316
|
|
|
335
|
-
.lua\:data-\[state\=open\]\:slide-in-from-bottom[data-state=
|
|
317
|
+
.lua\:data-\[state\=open\]\:slide-in-from-bottom[data-state='open'] {
|
|
336
318
|
animation: slide-in-from-bottom 0.3s ease-out;
|
|
337
319
|
}
|
|
338
320
|
|
|
339
|
-
.lua\:data-\[state\=closed\]\:slide-out-to-bottom[data-state=
|
|
321
|
+
.lua\:data-\[state\=closed\]\:slide-out-to-bottom[data-state='closed'] {
|
|
340
322
|
animation: slide-out-to-bottom 0.3s ease-out;
|
|
341
323
|
}
|
|
342
324
|
|
|
343
|
-
.lua\:data-\[state\=open\]\:slide-in-from-left[data-state=
|
|
325
|
+
.lua\:data-\[state\=open\]\:slide-in-from-left[data-state='open'] {
|
|
344
326
|
animation: slide-in-from-left 0.3s ease-out;
|
|
345
327
|
}
|
|
346
328
|
|
|
347
|
-
.lua\:data-\[state\=closed\]\:slide-out-to-left[data-state=
|
|
329
|
+
.lua\:data-\[state\=closed\]\:slide-out-to-left[data-state='closed'] {
|
|
348
330
|
animation: slide-out-to-left 0.3s ease-out;
|
|
349
331
|
}
|
|
350
332
|
|
|
351
|
-
.lua\:data-\[state\=open\]\:slide-in-from-right[data-state=
|
|
333
|
+
.lua\:data-\[state\=open\]\:slide-in-from-right[data-state='open'] {
|
|
352
334
|
animation: slide-in-from-right 0.3s ease-out;
|
|
353
335
|
}
|
|
354
336
|
|
|
355
|
-
.lua\:data-\[state\=closed\]\:slide-out-to-right[data-state=
|
|
337
|
+
.lua\:data-\[state\=closed\]\:slide-out-to-right[data-state='closed'] {
|
|
356
338
|
animation: slide-out-to-right 0.3s ease-out;
|
|
357
339
|
}
|
|
358
340
|
|
|
359
|
-
.lua\:data-\[state\=open\]\:duration-500[data-state=
|
|
341
|
+
.lua\:data-\[state\=open\]\:duration-500[data-state='open'] {
|
|
360
342
|
animation-duration: 500ms;
|
|
361
343
|
}
|
|
362
344
|
|
|
363
|
-
.lua\:data-\[state\=closed\]\:duration-300[data-state=
|
|
345
|
+
.lua\:data-\[state\=closed\]\:duration-300[data-state='closed'] {
|
|
364
346
|
animation-duration: 300ms;
|
|
365
|
-
}
|
|
347
|
+
}
|
package/dist/tailwind.preset.js
CHANGED
|
@@ -2,8 +2,8 @@ import { luaniverseSafelist } from './safelist.js';
|
|
|
2
2
|
|
|
3
3
|
/** @type {import('tailwindcss').Config} */
|
|
4
4
|
export const luaniversePreset = {
|
|
5
|
-
// Dark mode
|
|
6
|
-
darkMode:
|
|
5
|
+
// Dark mode enabled using class strategy
|
|
6
|
+
darkMode: 'class',
|
|
7
7
|
// Safelist story-specific arbitrary values that are hard to standardize
|
|
8
8
|
safelist: luaniverseSafelist,
|
|
9
9
|
theme: {
|
package/dist/theme.css
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Luaniverse Semantic Color System
|
|
3
|
+
*
|
|
4
|
+
* This theme uses a two-level token system:
|
|
5
|
+
* 1. @layer base: Raw HSL values (space-separated) for light mode in :root
|
|
6
|
+
* 2. @theme inline: Color tokens that wrap base values with hsl(var(...))
|
|
7
|
+
* 3. @media (prefers-color-scheme: dark): Dark mode HSL values in :root
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* - Use bg-card, text-foreground, bg-primary, etc. as regular Tailwind classes
|
|
11
|
+
* - Tokens automatically switch based on prefers-color-scheme - NO dark: prefixes needed
|
|
12
|
+
* - Example: className="lua:bg-card lua:text-foreground lua:border-border"
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
@layer base {
|
|
16
|
+
:root {
|
|
17
|
+
/* Base Colors */
|
|
18
|
+
--background: 0 0% 100%; /* white */
|
|
19
|
+
--foreground: 222 47% 11%; /* gray-900 */
|
|
20
|
+
|
|
21
|
+
/* Card & Surface */
|
|
22
|
+
--card: 0 0% 100%; /* white */
|
|
23
|
+
--card-foreground: 222 47% 11%; /* gray-900 */
|
|
24
|
+
|
|
25
|
+
/* Popover */
|
|
26
|
+
--popover: 0 0% 100%; /* white */
|
|
27
|
+
--popover-foreground: 222 47% 11%; /* gray-900 */
|
|
28
|
+
|
|
29
|
+
/* Default (Emphasis - Black/Bold) */
|
|
30
|
+
--default: 0 0% 0%; /* black */
|
|
31
|
+
--default-foreground: 0 0% 100%; /* white */
|
|
32
|
+
--default-hover: 0 0% 10%; /* near-black */
|
|
33
|
+
--default-active: 0 0% 10%; /* near-black */
|
|
34
|
+
|
|
35
|
+
/* Primary (Brand - Blue) */
|
|
36
|
+
--primary: 221 83% 53%; /* blue-600 */
|
|
37
|
+
--primary-foreground: 0 0% 100%; /* white */
|
|
38
|
+
--primary-hover: 221 83% 45%; /* blue-700 */
|
|
39
|
+
--primary-active: 221 77% 40%; /* blue-800 */
|
|
40
|
+
|
|
41
|
+
/* Secondary (Neutral) */
|
|
42
|
+
--secondary: 220 13% 95%; /* gray-100 */
|
|
43
|
+
--secondary-foreground: 222 47% 11%; /* gray-900 */
|
|
44
|
+
--secondary-hover: 220 13% 91%; /* gray-200 */
|
|
45
|
+
--secondary-active: 220 13% 82%; /* gray-300 */
|
|
46
|
+
|
|
47
|
+
/* Muted */
|
|
48
|
+
--muted: 220 13% 95%; /* gray-100 */
|
|
49
|
+
--muted-foreground: 215 16% 47%; /* gray-600 */
|
|
50
|
+
|
|
51
|
+
/* Accent */
|
|
52
|
+
--accent: 221 83% 53%; /* blue-600 */
|
|
53
|
+
--accent-foreground: 0 0% 100%; /* white */
|
|
54
|
+
|
|
55
|
+
/* Accent Subtle (for tabs, pills) */
|
|
56
|
+
--accent-subtle: 214 100% 97%; /* blue-50 - very light blue */
|
|
57
|
+
--accent-subtle-foreground: 213 97% 27%; /* blue-800 */
|
|
58
|
+
--accent-subtle-hover: 214 100% 92%; /* blue-100 */
|
|
59
|
+
|
|
60
|
+
/* Destructive (Danger) */
|
|
61
|
+
--destructive: 0 84% 60%; /* red-500 */
|
|
62
|
+
--destructive-foreground: 0 0% 100%; /* white */
|
|
63
|
+
--destructive-hover: 0 72% 51%; /* red-600 */
|
|
64
|
+
--destructive-active: 0 74% 42%; /* red-700 */
|
|
65
|
+
|
|
66
|
+
/* Success */
|
|
67
|
+
--success: 142 71% 45%; /* green-600 */
|
|
68
|
+
--success-foreground: 0 0% 100%; /* white */
|
|
69
|
+
--success-hover: 142 76% 36%; /* green-700 */
|
|
70
|
+
|
|
71
|
+
/* Warning */
|
|
72
|
+
--warning: 38 92% 50%; /* yellow-500 */
|
|
73
|
+
--warning-foreground: 0 0% 100%; /* white */
|
|
74
|
+
--warning-hover: 43 96% 56%; /* yellow-400 */
|
|
75
|
+
|
|
76
|
+
/* Border & Input */
|
|
77
|
+
--border: 220 13% 91%; /* gray-200 */
|
|
78
|
+
--input: 220 13% 91%; /* gray-200 */
|
|
79
|
+
--ring: 221 83% 53%; /* blue-600 */
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
@theme inline {
|
|
84
|
+
/* Base Color Tokens */
|
|
85
|
+
--color-background: hsl(var(--background));
|
|
86
|
+
--color-foreground: hsl(var(--foreground));
|
|
87
|
+
|
|
88
|
+
/* Card & Surface Tokens */
|
|
89
|
+
--color-card: hsl(var(--card));
|
|
90
|
+
--color-card-foreground: hsl(var(--card-foreground));
|
|
91
|
+
|
|
92
|
+
/* Popover Tokens */
|
|
93
|
+
--color-popover: hsl(var(--popover));
|
|
94
|
+
--color-popover-foreground: hsl(var(--popover-foreground));
|
|
95
|
+
|
|
96
|
+
/* Default Tokens (Emphasis - Black/Bold) */
|
|
97
|
+
--color-default: hsl(var(--default));
|
|
98
|
+
--color-default-foreground: hsl(var(--default-foreground));
|
|
99
|
+
--color-default-hover: hsl(var(--default-hover));
|
|
100
|
+
--color-default-active: hsl(var(--default-active));
|
|
101
|
+
|
|
102
|
+
/* Primary Tokens (Brand - Blue) */
|
|
103
|
+
--color-primary: hsl(var(--primary));
|
|
104
|
+
--color-primary-foreground: hsl(var(--primary-foreground));
|
|
105
|
+
--color-primary-hover: hsl(var(--primary-hover));
|
|
106
|
+
--color-primary-active: hsl(var(--primary-active));
|
|
107
|
+
|
|
108
|
+
/* Secondary Tokens (Neutral - Gray) */
|
|
109
|
+
--color-secondary: hsl(var(--secondary));
|
|
110
|
+
--color-secondary-foreground: hsl(var(--secondary-foreground));
|
|
111
|
+
--color-secondary-hover: hsl(var(--secondary-hover));
|
|
112
|
+
--color-secondary-active: hsl(var(--secondary-active));
|
|
113
|
+
|
|
114
|
+
/* Muted Tokens */
|
|
115
|
+
--color-muted: hsl(var(--muted));
|
|
116
|
+
--color-muted-foreground: hsl(var(--muted-foreground));
|
|
117
|
+
|
|
118
|
+
/* Accent Tokens */
|
|
119
|
+
--color-accent: hsl(var(--accent));
|
|
120
|
+
--color-accent-foreground: hsl(var(--accent-foreground));
|
|
121
|
+
|
|
122
|
+
/* Accent Subtle Tokens (for tabs, pills) */
|
|
123
|
+
--color-accent-subtle: hsl(var(--accent-subtle));
|
|
124
|
+
--color-accent-subtle-foreground: hsl(var(--accent-subtle-foreground));
|
|
125
|
+
--color-accent-subtle-hover: hsl(var(--accent-subtle-hover));
|
|
126
|
+
|
|
127
|
+
/* Destructive Tokens (Danger - Red) */
|
|
128
|
+
--color-destructive: hsl(var(--destructive));
|
|
129
|
+
--color-destructive-foreground: hsl(var(--destructive-foreground));
|
|
130
|
+
--color-destructive-hover: hsl(var(--destructive-hover));
|
|
131
|
+
--color-destructive-active: hsl(var(--destructive-active));
|
|
132
|
+
|
|
133
|
+
/* Success Tokens (Green) */
|
|
134
|
+
--color-success: hsl(var(--success));
|
|
135
|
+
--color-success-foreground: hsl(var(--success-foreground));
|
|
136
|
+
--color-success-hover: hsl(var(--success-hover));
|
|
137
|
+
|
|
138
|
+
/* Warning Tokens (Amber) */
|
|
139
|
+
--color-warning: hsl(var(--warning));
|
|
140
|
+
--color-warning-foreground: hsl(var(--warning-foreground));
|
|
141
|
+
--color-warning-hover: hsl(var(--warning-hover));
|
|
142
|
+
|
|
143
|
+
/* Border, Input & Ring Tokens */
|
|
144
|
+
--color-border: hsl(var(--border));
|
|
145
|
+
--color-input: hsl(var(--input));
|
|
146
|
+
--color-ring: hsl(var(--ring));
|
|
147
|
+
}
|
|
148
|
+
@media (prefers-color-scheme: dark) {
|
|
149
|
+
:root {
|
|
150
|
+
/* Base Colors - Dark grays and off-whites */
|
|
151
|
+
--background: 222 47% 11%; /* gray-900 */
|
|
152
|
+
--foreground: 210 20% 98%; /* gray-50 */
|
|
153
|
+
|
|
154
|
+
/* Card & Surface - Slightly lighter than background for depth */
|
|
155
|
+
--card: 217 19% 18%; /* gray-800/850 - elevated surface */
|
|
156
|
+
--card-foreground: 210 20% 98%; /* gray-50 */
|
|
157
|
+
|
|
158
|
+
/* Popover - Slightly lighter than background for depth */
|
|
159
|
+
--popover: 217 19% 18%; /* gray-800/850 - elevated surface */
|
|
160
|
+
--popover-foreground: 210 20% 98%; /* gray-50 */
|
|
161
|
+
|
|
162
|
+
/* Default (Emphasis - Inverted for dark mode) */
|
|
163
|
+
--default: 220 13% 95%; /* gray-100 - light gray for dark bg */
|
|
164
|
+
--default-foreground: 222 47% 11%; /* gray-900 - dark text */
|
|
165
|
+
--default-hover: 210 20% 98%; /* gray-50 - lighter on hover */
|
|
166
|
+
--default-active: 220 13% 91%; /* gray-200 - darker on press */
|
|
167
|
+
|
|
168
|
+
/* Primary (Brand - Blue) - Slightly lighter for visibility */
|
|
169
|
+
--primary: 217 91% 60%; /* blue-500 */
|
|
170
|
+
--primary-foreground: 222 47% 11%; /* gray-900 */
|
|
171
|
+
--primary-hover: 213 94% 68%; /* blue-400 */
|
|
172
|
+
--primary-active: 221 83% 53%; /* blue-600 */
|
|
173
|
+
|
|
174
|
+
/* Secondary (Neutral) - Dark grays */
|
|
175
|
+
--secondary: 217 19% 27%; /* gray-700 */
|
|
176
|
+
--secondary-foreground: 210 20% 98%; /* gray-50 */
|
|
177
|
+
--secondary-hover: 215 25% 27%; /* gray-600 */
|
|
178
|
+
--secondary-active: 215 28% 17%; /* gray-800 */
|
|
179
|
+
|
|
180
|
+
/* Muted */
|
|
181
|
+
--muted: 217 19% 27%; /* gray-700 */
|
|
182
|
+
--muted-foreground: 215 16% 47%; /* gray-400 */
|
|
183
|
+
|
|
184
|
+
/* Accent */
|
|
185
|
+
--accent: 217 91% 60%; /* blue-500 */
|
|
186
|
+
--accent-foreground: 222 47% 11%; /* gray-900 */
|
|
187
|
+
|
|
188
|
+
/* Accent Subtle (for tabs, pills) */
|
|
189
|
+
--accent-subtle: 215 25% 27%; /* gray-700 - dark subtle bg */
|
|
190
|
+
--accent-subtle-foreground: 213 94% 68%; /* blue-400 - bright blue text */
|
|
191
|
+
--accent-subtle-hover: 217 19% 35%; /* gray-600 - lighter hover */
|
|
192
|
+
|
|
193
|
+
/* Destructive (Danger) - Slightly muted */
|
|
194
|
+
--destructive: 0 84% 60%; /* red-500 */
|
|
195
|
+
--destructive-foreground: 0 0% 100%; /* white */
|
|
196
|
+
--destructive-hover: 0 91% 71%; /* red-400 */
|
|
197
|
+
--destructive-active: 0 72% 51%; /* red-600 */
|
|
198
|
+
|
|
199
|
+
/* Success - Slightly lighter */
|
|
200
|
+
--success: 142 71% 45%; /* green-600 */
|
|
201
|
+
--success-foreground: 0 0% 100%; /* white */
|
|
202
|
+
--success-hover: 142 69% 58%; /* green-500 */
|
|
203
|
+
|
|
204
|
+
/* Warning - Amber tones for better dark mode */
|
|
205
|
+
--warning: 38 92% 50%; /* amber-500 */
|
|
206
|
+
--warning-foreground: 222 47% 11%; /* gray-900 */
|
|
207
|
+
--warning-hover: 43 96% 56%; /* amber-400 */
|
|
208
|
+
|
|
209
|
+
/* Border & Input */
|
|
210
|
+
--border: 215 25% 27%; /* gray-700 */
|
|
211
|
+
--input: 215 25% 27%; /* gray-700 */
|
|
212
|
+
--ring: 213 94% 68%; /* blue-400 */
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.rdp-root {
|
|
217
|
+
/* Calendar background */
|
|
218
|
+
--rdp-background-color: hsl(var(--card));
|
|
219
|
+
|
|
220
|
+
/* Use semantic tokens for selected days instead of default blue */
|
|
221
|
+
--rdp-accent-color: hsl(var(--foreground));
|
|
222
|
+
--rdp-accent-background-color: hsl(var(--secondary));
|
|
223
|
+
|
|
224
|
+
/* Range selection colors */
|
|
225
|
+
--rdp-range_middle-background-color: hsl(var(--muted));
|
|
226
|
+
--rdp-range_middle-color: hsl(var(--foreground));
|
|
227
|
+
--rdp-range_start-background: hsl(var(--secondary));
|
|
228
|
+
--rdp-range_start-color: hsl(var(--default-foreground));
|
|
229
|
+
--rdp-range_end-background: hsl(var(--secondary));
|
|
230
|
+
--rdp-range_end-color: hsl(var(--foreground));
|
|
231
|
+
|
|
232
|
+
/* Today indicator - use foreground color with bold font (handled in classNames) */
|
|
233
|
+
--rdp-today-color: hsl(var(--foreground));
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
[data-theme='dark'] .rdp-root {
|
|
237
|
+
/* Calendar background and base colors for dark mode */
|
|
238
|
+
--rdp-background-color: hsl(var(--card));
|
|
239
|
+
|
|
240
|
+
/* Use semantic tokens for selected days in dark mode */
|
|
241
|
+
--rdp-accent-color: hsl(var(--foreground));
|
|
242
|
+
--rdp-accent-background-color: hsl(var(--secondary));
|
|
243
|
+
|
|
244
|
+
/* Range selection colors for dark mode */
|
|
245
|
+
--rdp-range_middle-background-color: hsl(var(--muted));
|
|
246
|
+
--rdp-range_middle-color: hsl(var(--foreground));
|
|
247
|
+
--rdp-range_start-background: hsl(var(--secondary));
|
|
248
|
+
--rdp-range_start-color: hsl(var(--foreground));
|
|
249
|
+
--rdp-range_end-background: hsl(var(--secondary));
|
|
250
|
+
--rdp-range_end-color: hsl(var(--foreground));
|
|
251
|
+
|
|
252
|
+
/* Today indicator for dark mode */
|
|
253
|
+
--rdp-today-color: hsl(var(--foreground));
|
|
254
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "luaniverse",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.7",
|
|
4
4
|
"description": "Lua Design System - A React component library for Lua applications",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
"react-dom": "^18.3.1",
|
|
115
115
|
"semantic-release": "^24.2.0",
|
|
116
116
|
"storybook": "^8.3.6",
|
|
117
|
+
"storybook-dark-mode": "^4.0.2",
|
|
117
118
|
"tailwindcss": "^4.1.11",
|
|
118
119
|
"tailwindcss-animate": "^1.0.7",
|
|
119
120
|
"tsup": "^8.3.5",
|