@sudobility/components 2.0.24 → 2.0.25
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.esm.js +2672 -2645
- package/dist/index.umd.js +12 -12
- package/dist/ui/accordion.d.ts +1 -1
- package/dist/ui/code-display.d.ts +1 -1
- package/dist/ui/copy-button.d.ts +1 -1
- package/dist/ui/gradient-banner.d.ts +1 -1
- package/dist/ui/logo.d.ts +1 -1
- package/dist/ui/logo.d.ts.map +1 -1
- package/dist/utils/storage.d.ts +2 -2
- package/package.json +3 -4
- package/vendor/@johnqh/design-system/colors.d.ts +0 -1064
- package/vendor/@johnqh/design-system/colors.d.ts.map +0 -1
- package/vendor/@johnqh/design-system/index.d.ts +0 -123
- package/vendor/@johnqh/design-system/index.d.ts.map +0 -1
- package/vendor/@johnqh/design-system/index.esm.js +0 -3543
- package/vendor/@johnqh/design-system/index.umd.js +0 -1
- package/vendor/@johnqh/design-system/package.json +0 -9
- package/vendor/@johnqh/design-system/simple-variants.d.ts +0 -72
- package/vendor/@johnqh/design-system/simple-variants.d.ts.map +0 -1
- package/vendor/@johnqh/design-system/tokens.d.ts +0 -307
- package/vendor/@johnqh/design-system/tokens.d.ts.map +0 -1
- package/vendor/@johnqh/design-system/typography.d.ts +0 -112
- package/vendor/@johnqh/design-system/typography.d.ts.map +0 -1
- package/vendor/@johnqh/design-system/variants.d.ts +0 -35
- package/vendor/@johnqh/design-system/variants.d.ts.map +0 -1
|
@@ -1,3543 +0,0 @@
|
|
|
1
|
-
const r = {
|
|
2
|
-
// Blue palette - primary brand color
|
|
3
|
-
blue: {
|
|
4
|
-
50: "#eff6ff",
|
|
5
|
-
100: "#dbeafe",
|
|
6
|
-
200: "#bfdbfe",
|
|
7
|
-
300: "#93c5fd",
|
|
8
|
-
400: "#60a5fa",
|
|
9
|
-
500: "#3b82f6",
|
|
10
|
-
600: "#2563eb",
|
|
11
|
-
700: "#1d4ed8",
|
|
12
|
-
800: "#1e40af",
|
|
13
|
-
900: "#1e3a8a",
|
|
14
|
-
950: "#172554"
|
|
15
|
-
},
|
|
16
|
-
// Purple palette - secondary brand color
|
|
17
|
-
purple: {
|
|
18
|
-
50: "#faf5ff",
|
|
19
|
-
100: "#f3e8ff",
|
|
20
|
-
200: "#e9d5ff",
|
|
21
|
-
300: "#d8b4fe",
|
|
22
|
-
400: "#c084fc",
|
|
23
|
-
500: "#a855f7",
|
|
24
|
-
600: "#9333ea",
|
|
25
|
-
700: "#7c3aed",
|
|
26
|
-
800: "#6b21a8",
|
|
27
|
-
900: "#581c87",
|
|
28
|
-
950: "#3b0764"
|
|
29
|
-
},
|
|
30
|
-
// Neutral palette - backgrounds, text, borders
|
|
31
|
-
neutral: {
|
|
32
|
-
0: "#ffffff",
|
|
33
|
-
50: "#f9fafb",
|
|
34
|
-
100: "#f3f4f6",
|
|
35
|
-
200: "#e5e7eb",
|
|
36
|
-
300: "#d1d5db",
|
|
37
|
-
400: "#9ca3af",
|
|
38
|
-
500: "#6b7280",
|
|
39
|
-
600: "#4b5563",
|
|
40
|
-
700: "#374151",
|
|
41
|
-
800: "#1f2937",
|
|
42
|
-
900: "#111827",
|
|
43
|
-
950: "#030712"
|
|
44
|
-
},
|
|
45
|
-
// Semantic state colors
|
|
46
|
-
red: {
|
|
47
|
-
50: "#fef2f2",
|
|
48
|
-
100: "#fee2e2",
|
|
49
|
-
200: "#fecaca",
|
|
50
|
-
300: "#fca5a5",
|
|
51
|
-
400: "#f87171",
|
|
52
|
-
500: "#ef4444",
|
|
53
|
-
600: "#dc2626",
|
|
54
|
-
700: "#b91c1c",
|
|
55
|
-
800: "#991b1b",
|
|
56
|
-
900: "#7f1d1d",
|
|
57
|
-
950: "#450a0a"
|
|
58
|
-
},
|
|
59
|
-
orange: {
|
|
60
|
-
50: "#fff7ed",
|
|
61
|
-
100: "#ffedd5",
|
|
62
|
-
200: "#fed7aa",
|
|
63
|
-
300: "#fdba74",
|
|
64
|
-
400: "#fb923c",
|
|
65
|
-
500: "#f97316",
|
|
66
|
-
600: "#ea580c",
|
|
67
|
-
700: "#c2410c",
|
|
68
|
-
800: "#9a3412",
|
|
69
|
-
900: "#7c2d12",
|
|
70
|
-
950: "#431407"
|
|
71
|
-
},
|
|
72
|
-
amber: {
|
|
73
|
-
50: "#fffbeb",
|
|
74
|
-
100: "#fef3c7",
|
|
75
|
-
200: "#fde68a",
|
|
76
|
-
300: "#fcd34d",
|
|
77
|
-
400: "#fbbf24",
|
|
78
|
-
500: "#f59e0b",
|
|
79
|
-
600: "#d97706",
|
|
80
|
-
700: "#b45309",
|
|
81
|
-
800: "#92400e",
|
|
82
|
-
900: "#78350f",
|
|
83
|
-
950: "#451a03"
|
|
84
|
-
},
|
|
85
|
-
green: {
|
|
86
|
-
50: "#f0fdf4",
|
|
87
|
-
100: "#dcfce7",
|
|
88
|
-
200: "#bbf7d0",
|
|
89
|
-
300: "#86efac",
|
|
90
|
-
400: "#4ade80",
|
|
91
|
-
500: "#22c55e",
|
|
92
|
-
600: "#16a34a",
|
|
93
|
-
700: "#15803d",
|
|
94
|
-
800: "#166534",
|
|
95
|
-
900: "#14532d",
|
|
96
|
-
950: "#052e16"
|
|
97
|
-
},
|
|
98
|
-
// Web3 specific colors
|
|
99
|
-
web3: {
|
|
100
|
-
ethereum: {
|
|
101
|
-
light: "#627eea",
|
|
102
|
-
DEFAULT: "#627eea",
|
|
103
|
-
dark: "#4c63d2"
|
|
104
|
-
},
|
|
105
|
-
solana: {
|
|
106
|
-
light: "#9945ff",
|
|
107
|
-
DEFAULT: "#9945ff",
|
|
108
|
-
dark: "#7d37d9"
|
|
109
|
-
},
|
|
110
|
-
polygon: {
|
|
111
|
-
light: "#8247e5",
|
|
112
|
-
DEFAULT: "#8247e5",
|
|
113
|
-
dark: "#6a3bc0"
|
|
114
|
-
},
|
|
115
|
-
bitcoin: {
|
|
116
|
-
light: "#f7931a",
|
|
117
|
-
DEFAULT: "#f7931a",
|
|
118
|
-
dark: "#e07f00"
|
|
119
|
-
},
|
|
120
|
-
binance: {
|
|
121
|
-
light: "#f3ba2f",
|
|
122
|
-
DEFAULT: "#f3ba2f",
|
|
123
|
-
dark: "#d4a423"
|
|
124
|
-
},
|
|
125
|
-
cardano: {
|
|
126
|
-
light: "#0033ad",
|
|
127
|
-
DEFAULT: "#0033ad",
|
|
128
|
-
dark: "#002488"
|
|
129
|
-
},
|
|
130
|
-
avalanche: {
|
|
131
|
-
light: "#e84142",
|
|
132
|
-
DEFAULT: "#e84142",
|
|
133
|
-
dark: "#d1383a"
|
|
134
|
-
},
|
|
135
|
-
fantom: {
|
|
136
|
-
light: "#1969ff",
|
|
137
|
-
DEFAULT: "#1969ff",
|
|
138
|
-
dark: "#0052ff"
|
|
139
|
-
},
|
|
140
|
-
arbitrum: {
|
|
141
|
-
light: "#2d374b",
|
|
142
|
-
DEFAULT: "#2d374b",
|
|
143
|
-
dark: "#1e2532"
|
|
144
|
-
},
|
|
145
|
-
optimism: {
|
|
146
|
-
light: "#ff0420",
|
|
147
|
-
DEFAULT: "#ff0420",
|
|
148
|
-
dark: "#e6031c"
|
|
149
|
-
},
|
|
150
|
-
chainlink: {
|
|
151
|
-
light: "#375bd2",
|
|
152
|
-
DEFAULT: "#375bd2",
|
|
153
|
-
dark: "#2d4bb5"
|
|
154
|
-
},
|
|
155
|
-
cosmos: {
|
|
156
|
-
light: "#2e3148",
|
|
157
|
-
DEFAULT: "#2e3148",
|
|
158
|
-
dark: "#1f2030"
|
|
159
|
-
},
|
|
160
|
-
polkadot: {
|
|
161
|
-
light: "#e6007a",
|
|
162
|
-
DEFAULT: "#e6007a",
|
|
163
|
-
dark: "#cc006e"
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}, u = {
|
|
167
|
-
// Text colors
|
|
168
|
-
text: {
|
|
169
|
-
primary: {
|
|
170
|
-
light: r.neutral[900],
|
|
171
|
-
dark: r.neutral[0]
|
|
172
|
-
},
|
|
173
|
-
secondary: {
|
|
174
|
-
light: r.neutral[600],
|
|
175
|
-
dark: r.neutral[400]
|
|
176
|
-
},
|
|
177
|
-
tertiary: {
|
|
178
|
-
light: r.neutral[500],
|
|
179
|
-
dark: r.neutral[500]
|
|
180
|
-
},
|
|
181
|
-
disabled: {
|
|
182
|
-
light: r.neutral[400],
|
|
183
|
-
dark: r.neutral[600]
|
|
184
|
-
},
|
|
185
|
-
inverse: {
|
|
186
|
-
light: r.neutral[0],
|
|
187
|
-
dark: r.neutral[900]
|
|
188
|
-
},
|
|
189
|
-
link: {
|
|
190
|
-
light: r.blue[600],
|
|
191
|
-
dark: r.blue[400]
|
|
192
|
-
},
|
|
193
|
-
linkHover: {
|
|
194
|
-
light: r.blue[700],
|
|
195
|
-
dark: r.blue[300]
|
|
196
|
-
}
|
|
197
|
-
},
|
|
198
|
-
// Background colors
|
|
199
|
-
background: {
|
|
200
|
-
primary: {
|
|
201
|
-
light: r.neutral[0],
|
|
202
|
-
dark: r.neutral[900]
|
|
203
|
-
},
|
|
204
|
-
secondary: {
|
|
205
|
-
light: r.neutral[50],
|
|
206
|
-
dark: r.neutral[800]
|
|
207
|
-
},
|
|
208
|
-
tertiary: {
|
|
209
|
-
light: r.neutral[100],
|
|
210
|
-
dark: r.neutral[700]
|
|
211
|
-
},
|
|
212
|
-
elevated: {
|
|
213
|
-
light: r.neutral[0],
|
|
214
|
-
dark: r.neutral[800]
|
|
215
|
-
},
|
|
216
|
-
overlay: {
|
|
217
|
-
light: "rgba(0, 0, 0, 0.5)",
|
|
218
|
-
dark: "rgba(0, 0, 0, 0.7)"
|
|
219
|
-
},
|
|
220
|
-
page: {
|
|
221
|
-
light: r.neutral[50],
|
|
222
|
-
dark: r.neutral[950]
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
// Border colors
|
|
226
|
-
border: {
|
|
227
|
-
primary: {
|
|
228
|
-
light: r.neutral[200],
|
|
229
|
-
dark: r.neutral[700]
|
|
230
|
-
},
|
|
231
|
-
secondary: {
|
|
232
|
-
light: r.neutral[100],
|
|
233
|
-
dark: r.neutral[800]
|
|
234
|
-
},
|
|
235
|
-
focus: {
|
|
236
|
-
light: r.blue[500],
|
|
237
|
-
dark: r.blue[400]
|
|
238
|
-
},
|
|
239
|
-
error: {
|
|
240
|
-
light: r.red[300],
|
|
241
|
-
dark: r.red[700]
|
|
242
|
-
}
|
|
243
|
-
},
|
|
244
|
-
// Brand colors
|
|
245
|
-
brand: {
|
|
246
|
-
primary: {
|
|
247
|
-
light: r.blue[600],
|
|
248
|
-
dark: r.blue[500]
|
|
249
|
-
},
|
|
250
|
-
primaryHover: {
|
|
251
|
-
light: r.blue[700],
|
|
252
|
-
dark: r.blue[400]
|
|
253
|
-
},
|
|
254
|
-
secondary: {
|
|
255
|
-
light: r.purple[600],
|
|
256
|
-
dark: r.purple[500]
|
|
257
|
-
},
|
|
258
|
-
secondaryHover: {
|
|
259
|
-
light: r.purple[700],
|
|
260
|
-
dark: r.purple[400]
|
|
261
|
-
}
|
|
262
|
-
},
|
|
263
|
-
// State colors
|
|
264
|
-
state: {
|
|
265
|
-
success: {
|
|
266
|
-
light: r.green[600],
|
|
267
|
-
dark: r.green[500]
|
|
268
|
-
},
|
|
269
|
-
successBg: {
|
|
270
|
-
light: r.green[100],
|
|
271
|
-
dark: `${r.green[900]}/30`
|
|
272
|
-
},
|
|
273
|
-
successText: {
|
|
274
|
-
light: r.green[700],
|
|
275
|
-
dark: r.green[300]
|
|
276
|
-
},
|
|
277
|
-
warning: {
|
|
278
|
-
light: r.amber[500],
|
|
279
|
-
dark: r.amber[400]
|
|
280
|
-
},
|
|
281
|
-
warningBg: {
|
|
282
|
-
light: r.amber[100],
|
|
283
|
-
dark: `${r.amber[900]}/30`
|
|
284
|
-
},
|
|
285
|
-
warningText: {
|
|
286
|
-
light: r.amber[700],
|
|
287
|
-
dark: r.amber[300]
|
|
288
|
-
},
|
|
289
|
-
error: {
|
|
290
|
-
light: r.red[600],
|
|
291
|
-
dark: r.red[500]
|
|
292
|
-
},
|
|
293
|
-
errorBg: {
|
|
294
|
-
light: r.red[100],
|
|
295
|
-
dark: `${r.red[900]}/30`
|
|
296
|
-
},
|
|
297
|
-
errorText: {
|
|
298
|
-
light: r.red[700],
|
|
299
|
-
dark: r.red[300]
|
|
300
|
-
},
|
|
301
|
-
info: {
|
|
302
|
-
light: r.blue[600],
|
|
303
|
-
dark: r.blue[500]
|
|
304
|
-
},
|
|
305
|
-
infoBg: {
|
|
306
|
-
light: r.blue[100],
|
|
307
|
-
dark: `${r.blue[900]}/30`
|
|
308
|
-
},
|
|
309
|
-
infoText: {
|
|
310
|
-
light: r.blue[700],
|
|
311
|
-
dark: r.blue[300]
|
|
312
|
-
},
|
|
313
|
-
selected: {
|
|
314
|
-
light: r.blue[100],
|
|
315
|
-
dark: `${r.blue[900]}/30`
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
// Action colors
|
|
319
|
-
action: {
|
|
320
|
-
primary: {
|
|
321
|
-
light: r.blue[600],
|
|
322
|
-
dark: r.blue[600]
|
|
323
|
-
},
|
|
324
|
-
primaryHover: {
|
|
325
|
-
light: r.blue[700],
|
|
326
|
-
dark: r.blue[700]
|
|
327
|
-
},
|
|
328
|
-
secondary: {
|
|
329
|
-
light: r.neutral[100],
|
|
330
|
-
dark: r.neutral[800]
|
|
331
|
-
},
|
|
332
|
-
danger: {
|
|
333
|
-
light: r.red[600],
|
|
334
|
-
dark: r.red[600]
|
|
335
|
-
}
|
|
336
|
-
},
|
|
337
|
-
// Web3 specific colors
|
|
338
|
-
web3: {
|
|
339
|
-
ethereum: {
|
|
340
|
-
light: r.web3.ethereum.light,
|
|
341
|
-
dark: r.web3.ethereum.dark
|
|
342
|
-
},
|
|
343
|
-
ethereumBg: {
|
|
344
|
-
light: `${r.blue[100]}`,
|
|
345
|
-
dark: `${r.blue[900]}/30`
|
|
346
|
-
},
|
|
347
|
-
solana: {
|
|
348
|
-
light: r.web3.solana.light,
|
|
349
|
-
dark: r.web3.solana.dark
|
|
350
|
-
},
|
|
351
|
-
solanaBg: {
|
|
352
|
-
light: `${r.purple[100]}`,
|
|
353
|
-
dark: `${r.purple[900]}/30`
|
|
354
|
-
},
|
|
355
|
-
polygon: {
|
|
356
|
-
light: r.web3.polygon.light,
|
|
357
|
-
dark: r.web3.polygon.dark
|
|
358
|
-
},
|
|
359
|
-
polygonBg: {
|
|
360
|
-
light: `${r.purple[50]}`,
|
|
361
|
-
dark: `${r.purple[900]}/20`
|
|
362
|
-
},
|
|
363
|
-
bitcoin: {
|
|
364
|
-
light: r.web3.bitcoin.light,
|
|
365
|
-
dark: r.web3.bitcoin.dark
|
|
366
|
-
},
|
|
367
|
-
bitcoinBg: {
|
|
368
|
-
light: `${r.orange[100]}`,
|
|
369
|
-
dark: `${r.orange[900]}/30`
|
|
370
|
-
},
|
|
371
|
-
binance: {
|
|
372
|
-
light: r.web3.binance.light,
|
|
373
|
-
dark: r.web3.binance.dark
|
|
374
|
-
},
|
|
375
|
-
binanceBg: {
|
|
376
|
-
light: `${r.amber[100]}`,
|
|
377
|
-
dark: `${r.amber[900]}/30`
|
|
378
|
-
},
|
|
379
|
-
cardano: {
|
|
380
|
-
light: r.web3.cardano.light,
|
|
381
|
-
dark: r.web3.cardano.dark
|
|
382
|
-
},
|
|
383
|
-
cardanoBg: {
|
|
384
|
-
light: `${r.blue[50]}`,
|
|
385
|
-
dark: `${r.blue[900]}/20`
|
|
386
|
-
},
|
|
387
|
-
avalanche: {
|
|
388
|
-
light: r.web3.avalanche.light,
|
|
389
|
-
dark: r.web3.avalanche.dark
|
|
390
|
-
},
|
|
391
|
-
avalancheBg: {
|
|
392
|
-
light: `${r.red[100]}`,
|
|
393
|
-
dark: `${r.red[900]}/30`
|
|
394
|
-
},
|
|
395
|
-
arbitrum: {
|
|
396
|
-
light: r.web3.arbitrum.light,
|
|
397
|
-
dark: r.web3.arbitrum.dark
|
|
398
|
-
},
|
|
399
|
-
arbitrumBg: {
|
|
400
|
-
light: `${r.neutral[100]}`,
|
|
401
|
-
dark: `${r.neutral[800]}/50`
|
|
402
|
-
},
|
|
403
|
-
optimism: {
|
|
404
|
-
light: r.web3.optimism.light,
|
|
405
|
-
dark: r.web3.optimism.dark
|
|
406
|
-
},
|
|
407
|
-
optimismBg: {
|
|
408
|
-
light: `${r.red[50]}`,
|
|
409
|
-
dark: `${r.red[900]}/20`
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
}, g = {
|
|
413
|
-
button: {
|
|
414
|
-
// Primary button - main brand actions
|
|
415
|
-
primary: {
|
|
416
|
-
base: "bg-blue-600 hover:bg-blue-700 active:bg-blue-800 text-white border-transparent",
|
|
417
|
-
dark: "dark:bg-blue-600 dark:hover:bg-blue-700 dark:active:bg-blue-800 dark:text-white",
|
|
418
|
-
focus: "focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 dark:focus-visible:ring-blue-400",
|
|
419
|
-
disabled: "disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-blue-600"
|
|
420
|
-
},
|
|
421
|
-
// Secondary button - alternative actions
|
|
422
|
-
secondary: {
|
|
423
|
-
base: "bg-gray-100 hover:bg-gray-200 active:bg-gray-300 text-gray-900 border-transparent",
|
|
424
|
-
dark: "dark:bg-gray-800 dark:hover:bg-gray-700 dark:active:bg-gray-600 dark:text-gray-50",
|
|
425
|
-
focus: "focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2",
|
|
426
|
-
disabled: "disabled:opacity-50 disabled:cursor-not-allowed"
|
|
427
|
-
},
|
|
428
|
-
// Outline button - secondary emphasis
|
|
429
|
-
outline: {
|
|
430
|
-
base: "bg-transparent hover:bg-gray-50 active:bg-gray-100 text-gray-900 border-gray-300",
|
|
431
|
-
dark: "dark:bg-transparent dark:hover:bg-gray-800 dark:active:bg-gray-700 dark:text-gray-50 dark:border-gray-600",
|
|
432
|
-
focus: "focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2",
|
|
433
|
-
disabled: "disabled:opacity-50 disabled:cursor-not-allowed"
|
|
434
|
-
},
|
|
435
|
-
// Ghost button - minimal emphasis
|
|
436
|
-
ghost: {
|
|
437
|
-
base: "bg-transparent hover:bg-gray-100 active:bg-gray-200 text-gray-700 border-transparent",
|
|
438
|
-
dark: "dark:bg-transparent dark:hover:bg-gray-800 dark:active:bg-gray-700 dark:text-gray-300",
|
|
439
|
-
focus: "focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2",
|
|
440
|
-
disabled: "disabled:opacity-50 disabled:cursor-not-allowed"
|
|
441
|
-
},
|
|
442
|
-
// Destructive button - dangerous actions
|
|
443
|
-
destructive: {
|
|
444
|
-
base: "bg-red-600 hover:bg-red-700 active:bg-red-800 text-white border-transparent",
|
|
445
|
-
dark: "dark:bg-red-600 dark:hover:bg-red-700 dark:active:bg-red-800 dark:text-white",
|
|
446
|
-
focus: "focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-2",
|
|
447
|
-
disabled: "disabled:opacity-50 disabled:cursor-not-allowed"
|
|
448
|
-
},
|
|
449
|
-
// Success button - positive actions
|
|
450
|
-
success: {
|
|
451
|
-
base: "bg-green-600 hover:bg-green-700 active:bg-green-800 text-white border-transparent",
|
|
452
|
-
dark: "dark:bg-green-600 dark:hover:bg-green-700 dark:active:bg-green-800 dark:text-white",
|
|
453
|
-
focus: "focus-visible:ring-2 focus-visible:ring-green-500 focus-visible:ring-offset-2",
|
|
454
|
-
disabled: "disabled:opacity-50 disabled:cursor-not-allowed"
|
|
455
|
-
},
|
|
456
|
-
// Link button - text-like appearance
|
|
457
|
-
link: {
|
|
458
|
-
base: "bg-transparent hover:bg-transparent active:bg-transparent text-blue-600 border-transparent underline-offset-4 hover:underline",
|
|
459
|
-
dark: "dark:text-blue-400",
|
|
460
|
-
focus: "focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2",
|
|
461
|
-
disabled: "disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline"
|
|
462
|
-
},
|
|
463
|
-
// Gradient variants for special emphasis
|
|
464
|
-
gradient: {
|
|
465
|
-
primary: "bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white border-transparent shadow-lg hover:shadow-xl",
|
|
466
|
-
secondary: "bg-gradient-to-r from-gray-100 to-gray-200 hover:from-gray-200 hover:to-gray-300 text-gray-900 border-transparent",
|
|
467
|
-
success: "bg-gradient-to-r from-green-500 to-emerald-600 hover:from-green-600 hover:to-emerald-700 text-white border-transparent"
|
|
468
|
-
}
|
|
469
|
-
},
|
|
470
|
-
card: {
|
|
471
|
-
// Default card styling
|
|
472
|
-
default: {
|
|
473
|
-
base: "bg-white border-gray-200",
|
|
474
|
-
dark: "dark:bg-gray-800 dark:border-gray-700",
|
|
475
|
-
hover: "hover:shadow-md transition-shadow duration-200"
|
|
476
|
-
},
|
|
477
|
-
// Elevated card with shadow
|
|
478
|
-
elevated: {
|
|
479
|
-
base: "bg-white shadow-sm border-gray-200",
|
|
480
|
-
dark: "dark:bg-gray-800 dark:border-gray-700",
|
|
481
|
-
hover: "hover:shadow-lg transition-shadow duration-200"
|
|
482
|
-
},
|
|
483
|
-
// Interactive card that can be clicked
|
|
484
|
-
interactive: {
|
|
485
|
-
base: "bg-white border-gray-200 cursor-pointer",
|
|
486
|
-
dark: "dark:bg-gray-800 dark:border-gray-700",
|
|
487
|
-
hover: "hover:bg-gray-50 hover:shadow-md dark:hover:bg-gray-700 transition-all duration-200",
|
|
488
|
-
focus: "focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
|
|
489
|
-
},
|
|
490
|
-
// Success state card
|
|
491
|
-
success: {
|
|
492
|
-
base: "bg-green-50 border-green-200",
|
|
493
|
-
dark: "dark:bg-green-900/20 dark:border-green-800",
|
|
494
|
-
text: "text-green-800 dark:text-green-200"
|
|
495
|
-
},
|
|
496
|
-
// Warning state card
|
|
497
|
-
warning: {
|
|
498
|
-
base: "bg-amber-50 border-amber-200",
|
|
499
|
-
dark: "dark:bg-amber-900/20 dark:border-amber-800",
|
|
500
|
-
text: "text-amber-800 dark:text-amber-200"
|
|
501
|
-
},
|
|
502
|
-
// Error state card
|
|
503
|
-
error: {
|
|
504
|
-
base: "bg-red-50 border-red-200",
|
|
505
|
-
dark: "dark:bg-red-900/20 dark:border-red-800",
|
|
506
|
-
text: "text-red-800 dark:text-red-200"
|
|
507
|
-
}
|
|
508
|
-
},
|
|
509
|
-
badge: {
|
|
510
|
-
// Default badge
|
|
511
|
-
default: {
|
|
512
|
-
base: "bg-gray-100 text-gray-800",
|
|
513
|
-
dark: "dark:bg-gray-800 dark:text-gray-300"
|
|
514
|
-
},
|
|
515
|
-
// Primary badge
|
|
516
|
-
primary: {
|
|
517
|
-
base: "bg-blue-100 text-blue-800",
|
|
518
|
-
dark: "dark:bg-blue-900/30 dark:text-blue-300"
|
|
519
|
-
},
|
|
520
|
-
// Success badge
|
|
521
|
-
success: {
|
|
522
|
-
base: "bg-green-100 text-green-800",
|
|
523
|
-
dark: "dark:bg-green-900/30 dark:text-green-300"
|
|
524
|
-
},
|
|
525
|
-
// Warning badge
|
|
526
|
-
warning: {
|
|
527
|
-
base: "bg-amber-100 text-amber-800",
|
|
528
|
-
dark: "dark:bg-amber-900/30 dark:text-amber-300"
|
|
529
|
-
},
|
|
530
|
-
// Error badge
|
|
531
|
-
error: {
|
|
532
|
-
base: "bg-red-100 text-red-800",
|
|
533
|
-
dark: "dark:bg-red-900/30 dark:text-red-300"
|
|
534
|
-
},
|
|
535
|
-
// Web3 specific badges
|
|
536
|
-
ethereum: {
|
|
537
|
-
base: "bg-blue-100 text-blue-800",
|
|
538
|
-
dark: "dark:bg-blue-900/30 dark:text-blue-300"
|
|
539
|
-
},
|
|
540
|
-
solana: {
|
|
541
|
-
base: "bg-purple-100 text-purple-800",
|
|
542
|
-
dark: "dark:bg-purple-900/30 dark:text-purple-300"
|
|
543
|
-
},
|
|
544
|
-
polygon: {
|
|
545
|
-
base: "bg-purple-50 text-purple-800",
|
|
546
|
-
dark: "dark:bg-purple-900/20 dark:text-purple-300"
|
|
547
|
-
},
|
|
548
|
-
bitcoin: {
|
|
549
|
-
base: "bg-orange-100 text-orange-800",
|
|
550
|
-
dark: "dark:bg-orange-900/30 dark:text-orange-300"
|
|
551
|
-
},
|
|
552
|
-
binance: {
|
|
553
|
-
base: "bg-amber-100 text-amber-800",
|
|
554
|
-
dark: "dark:bg-amber-900/30 dark:text-amber-300"
|
|
555
|
-
},
|
|
556
|
-
cardano: {
|
|
557
|
-
base: "bg-blue-50 text-blue-900",
|
|
558
|
-
dark: "dark:bg-blue-900/20 dark:text-blue-200"
|
|
559
|
-
},
|
|
560
|
-
avalanche: {
|
|
561
|
-
base: "bg-red-100 text-red-800",
|
|
562
|
-
dark: "dark:bg-red-900/30 dark:text-red-300"
|
|
563
|
-
},
|
|
564
|
-
arbitrum: {
|
|
565
|
-
base: "bg-gray-100 text-gray-800",
|
|
566
|
-
dark: "dark:bg-gray-800/50 dark:text-gray-300"
|
|
567
|
-
},
|
|
568
|
-
optimism: {
|
|
569
|
-
base: "bg-red-50 text-red-900",
|
|
570
|
-
dark: "dark:bg-red-900/20 dark:text-red-200"
|
|
571
|
-
}
|
|
572
|
-
},
|
|
573
|
-
input: {
|
|
574
|
-
// Default input styling
|
|
575
|
-
default: {
|
|
576
|
-
base: "bg-white border-gray-300 text-gray-900 placeholder:text-gray-500",
|
|
577
|
-
dark: "dark:bg-gray-900 dark:border-gray-600 dark:text-gray-100 dark:placeholder:text-gray-400",
|
|
578
|
-
focus: "focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:focus:ring-blue-400 dark:focus:border-blue-400",
|
|
579
|
-
error: "border-red-300 focus:border-red-500 focus:ring-red-500 dark:border-red-700"
|
|
580
|
-
},
|
|
581
|
-
// Search input styling
|
|
582
|
-
search: {
|
|
583
|
-
base: "bg-gray-50 border-gray-200 text-gray-900 placeholder:text-gray-500",
|
|
584
|
-
dark: "dark:bg-gray-800 dark:border-gray-700 dark:text-gray-100 dark:placeholder:text-gray-400",
|
|
585
|
-
focus: "focus:bg-white focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:focus:bg-gray-900"
|
|
586
|
-
}
|
|
587
|
-
},
|
|
588
|
-
alert: {
|
|
589
|
-
// Info alert
|
|
590
|
-
info: {
|
|
591
|
-
base: "bg-blue-50 border-blue-200 text-blue-800",
|
|
592
|
-
dark: "dark:bg-blue-900/20 dark:border-blue-800 dark:text-blue-200",
|
|
593
|
-
icon: "text-blue-600 dark:text-blue-400"
|
|
594
|
-
},
|
|
595
|
-
// Success alert
|
|
596
|
-
success: {
|
|
597
|
-
base: "bg-green-50 border-green-200 text-green-800",
|
|
598
|
-
dark: "dark:bg-green-900/20 dark:border-green-800 dark:text-green-200",
|
|
599
|
-
icon: "text-green-600 dark:text-green-400"
|
|
600
|
-
},
|
|
601
|
-
// Warning alert
|
|
602
|
-
warning: {
|
|
603
|
-
base: "bg-amber-50 border-amber-200 text-amber-800",
|
|
604
|
-
dark: "dark:bg-amber-900/20 dark:border-amber-800 dark:text-amber-200",
|
|
605
|
-
icon: "text-amber-600 dark:text-amber-400"
|
|
606
|
-
},
|
|
607
|
-
// Error alert
|
|
608
|
-
error: {
|
|
609
|
-
base: "bg-red-50 border-red-200 text-red-800",
|
|
610
|
-
dark: "dark:bg-red-900/20 dark:border-red-800 dark:text-red-200",
|
|
611
|
-
icon: "text-red-600 dark:text-red-400"
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
}, x = (i, t, a = ["focus"]) => {
|
|
615
|
-
const d = g[i][t];
|
|
616
|
-
return d ? [
|
|
617
|
-
d.base,
|
|
618
|
-
d.dark,
|
|
619
|
-
...a.map((l) => d[l]).filter(Boolean)
|
|
620
|
-
].join(" ") : (console.warn(`Color variant '${t}' not found for component '${i}'`), "");
|
|
621
|
-
}, c = (i, t, a, o) => {
|
|
622
|
-
const d = [`bg-${i}`, `text-${t}`];
|
|
623
|
-
return a && d.push(`border-${a}`), o?.hover && (o.hover.background && d.push(`hover:bg-${o.hover.background}`), o.hover.text && d.push(`hover:text-${o.hover.text}`), o.hover.border && d.push(`hover:border-${o.hover.border}`)), o?.focus?.ring && d.push(`focus:ring-2 focus:ring-${o.focus.ring}`), o?.dark && (o.dark.background && d.push(`dark:bg-${o.dark.background}`), o.dark.text && d.push(`dark:text-${o.dark.text}`), o.dark.border && d.push(`dark:border-${o.dark.border}`)), d.join(" ");
|
|
624
|
-
}, p = {
|
|
625
|
-
// Raw color palette (use sparingly, prefer semantic tokens)
|
|
626
|
-
raw: r,
|
|
627
|
-
// Semantic color tokens (recommended for most use cases)
|
|
628
|
-
semantic: u,
|
|
629
|
-
// Component-specific colors (use for components)
|
|
630
|
-
component: g,
|
|
631
|
-
// Utilities
|
|
632
|
-
utils: {
|
|
633
|
-
getColorClasses: x,
|
|
634
|
-
buildColorClass: c
|
|
635
|
-
}
|
|
636
|
-
}, e = {
|
|
637
|
-
// Spacing scale (based on 4px grid)
|
|
638
|
-
spacing: {
|
|
639
|
-
xs: "p-1",
|
|
640
|
-
// 4px
|
|
641
|
-
sm: "p-2",
|
|
642
|
-
// 8px
|
|
643
|
-
md: "p-4",
|
|
644
|
-
// 16px
|
|
645
|
-
lg: "p-6",
|
|
646
|
-
// 24px
|
|
647
|
-
xl: "p-8",
|
|
648
|
-
// 32px
|
|
649
|
-
"2xl": "p-12",
|
|
650
|
-
// 48px
|
|
651
|
-
"3xl": "p-16",
|
|
652
|
-
// 64px
|
|
653
|
-
"4xl": "p-20",
|
|
654
|
-
// 80px
|
|
655
|
-
"5xl": "p-24"
|
|
656
|
-
// 96px
|
|
657
|
-
},
|
|
658
|
-
// Margin utilities
|
|
659
|
-
margin: {
|
|
660
|
-
xs: "m-1",
|
|
661
|
-
sm: "m-2",
|
|
662
|
-
md: "m-4",
|
|
663
|
-
lg: "m-6",
|
|
664
|
-
xl: "m-8",
|
|
665
|
-
"2xl": "m-12",
|
|
666
|
-
"3xl": "m-16",
|
|
667
|
-
"4xl": "m-20",
|
|
668
|
-
"5xl": "m-24"
|
|
669
|
-
},
|
|
670
|
-
// Padding utilities
|
|
671
|
-
padding: {
|
|
672
|
-
xs: "p-1",
|
|
673
|
-
sm: "p-2",
|
|
674
|
-
md: "p-4",
|
|
675
|
-
lg: "p-6",
|
|
676
|
-
xl: "p-8",
|
|
677
|
-
"2xl": "p-12",
|
|
678
|
-
"3xl": "p-16"
|
|
679
|
-
},
|
|
680
|
-
// Gap utilities for flex/grid
|
|
681
|
-
gap: {
|
|
682
|
-
xs: "gap-1",
|
|
683
|
-
sm: "gap-2",
|
|
684
|
-
md: "gap-4",
|
|
685
|
-
lg: "gap-6",
|
|
686
|
-
xl: "gap-8",
|
|
687
|
-
"2xl": "gap-12",
|
|
688
|
-
"3xl": "gap-16"
|
|
689
|
-
},
|
|
690
|
-
// Border radius scale
|
|
691
|
-
radius: {
|
|
692
|
-
none: "rounded-none",
|
|
693
|
-
sm: "rounded-sm",
|
|
694
|
-
// 2px
|
|
695
|
-
md: "rounded-md",
|
|
696
|
-
// 6px
|
|
697
|
-
lg: "rounded-lg",
|
|
698
|
-
// 8px
|
|
699
|
-
xl: "rounded-xl",
|
|
700
|
-
// 12px
|
|
701
|
-
"2xl": "rounded-2xl",
|
|
702
|
-
// 16px
|
|
703
|
-
"3xl": "rounded-3xl",
|
|
704
|
-
// 24px
|
|
705
|
-
full: "rounded-full"
|
|
706
|
-
},
|
|
707
|
-
// Shadow scale
|
|
708
|
-
shadow: {
|
|
709
|
-
none: "shadow-none",
|
|
710
|
-
sm: "shadow-sm",
|
|
711
|
-
md: "shadow-md",
|
|
712
|
-
lg: "shadow-lg",
|
|
713
|
-
xl: "shadow-xl",
|
|
714
|
-
"2xl": "shadow-2xl"
|
|
715
|
-
},
|
|
716
|
-
// Typography scale
|
|
717
|
-
typography: {
|
|
718
|
-
// Font families
|
|
719
|
-
family: {
|
|
720
|
-
// Sans-serif fonts (default for UI)
|
|
721
|
-
sans: "font-sans",
|
|
722
|
-
// Inter, system-ui, sans-serif
|
|
723
|
-
// Serif fonts (for editorial content)
|
|
724
|
-
serif: "font-serif",
|
|
725
|
-
// ui-serif, Georgia, serif
|
|
726
|
-
// Monospace fonts (for code)
|
|
727
|
-
mono: "font-mono",
|
|
728
|
-
// ui-monospace, Menlo, Monaco, Consolas
|
|
729
|
-
// Display fonts (for headings)
|
|
730
|
-
display: "font-sans",
|
|
731
|
-
// Same as sans for consistency
|
|
732
|
-
// Body text font
|
|
733
|
-
body: "font-sans"
|
|
734
|
-
// Same as sans for consistency
|
|
735
|
-
},
|
|
736
|
-
// Font sizes with semantic names
|
|
737
|
-
size: {
|
|
738
|
-
// Micro text (10px)
|
|
739
|
-
micro: "text-[10px]",
|
|
740
|
-
// Extra small (12px)
|
|
741
|
-
xs: "text-xs",
|
|
742
|
-
// Small (14px)
|
|
743
|
-
sm: "text-sm",
|
|
744
|
-
// Base/Body (16px) - Default browser size
|
|
745
|
-
base: "text-base",
|
|
746
|
-
md: "text-base",
|
|
747
|
-
// Alias for base
|
|
748
|
-
// Large (18px)
|
|
749
|
-
lg: "text-lg",
|
|
750
|
-
// Extra large (20px)
|
|
751
|
-
xl: "text-xl",
|
|
752
|
-
// 2X large (24px)
|
|
753
|
-
"2xl": "text-2xl",
|
|
754
|
-
// 3X large (30px)
|
|
755
|
-
"3xl": "text-3xl",
|
|
756
|
-
// 4X large (36px)
|
|
757
|
-
"4xl": "text-4xl",
|
|
758
|
-
// 5X large (48px)
|
|
759
|
-
"5xl": "text-5xl",
|
|
760
|
-
// 6X large (60px)
|
|
761
|
-
"6xl": "text-6xl",
|
|
762
|
-
// 7X large (72px)
|
|
763
|
-
"7xl": "text-7xl",
|
|
764
|
-
// 8X large (96px)
|
|
765
|
-
"8xl": "text-8xl",
|
|
766
|
-
// 9X large (128px)
|
|
767
|
-
"9xl": "text-9xl"
|
|
768
|
-
},
|
|
769
|
-
// Semantic font sizes for specific use cases
|
|
770
|
-
semantic: {
|
|
771
|
-
// Caption text
|
|
772
|
-
caption: "text-xs",
|
|
773
|
-
// 12px
|
|
774
|
-
// Small body text
|
|
775
|
-
small: "text-sm",
|
|
776
|
-
// 14px
|
|
777
|
-
// Regular body text
|
|
778
|
-
body: "text-base",
|
|
779
|
-
// 16px
|
|
780
|
-
// Large body text
|
|
781
|
-
bodyLarge: "text-lg",
|
|
782
|
-
// 18px
|
|
783
|
-
// Subheading text
|
|
784
|
-
subheading: "text-xl",
|
|
785
|
-
// 20px
|
|
786
|
-
// Heading 6
|
|
787
|
-
h6: "text-base",
|
|
788
|
-
// 16px
|
|
789
|
-
// Heading 5
|
|
790
|
-
h5: "text-lg",
|
|
791
|
-
// 18px
|
|
792
|
-
// Heading 4
|
|
793
|
-
h4: "text-xl",
|
|
794
|
-
// 20px
|
|
795
|
-
// Heading 3
|
|
796
|
-
h3: "text-2xl",
|
|
797
|
-
// 24px
|
|
798
|
-
// Heading 2
|
|
799
|
-
h2: "text-3xl",
|
|
800
|
-
// 30px
|
|
801
|
-
// Heading 1
|
|
802
|
-
h1: "text-4xl",
|
|
803
|
-
// 36px
|
|
804
|
-
// Display text (hero headings)
|
|
805
|
-
display: "text-6xl",
|
|
806
|
-
// 60px
|
|
807
|
-
// Giant display text
|
|
808
|
-
hero: "text-8xl"
|
|
809
|
-
// 96px
|
|
810
|
-
},
|
|
811
|
-
// Font weights with semantic names
|
|
812
|
-
weight: {
|
|
813
|
-
// Numeric weights
|
|
814
|
-
thin: "font-thin",
|
|
815
|
-
// 100
|
|
816
|
-
extralight: "font-extralight",
|
|
817
|
-
// 200
|
|
818
|
-
light: "font-light",
|
|
819
|
-
// 300
|
|
820
|
-
normal: "font-normal",
|
|
821
|
-
// 400
|
|
822
|
-
medium: "font-medium",
|
|
823
|
-
// 500
|
|
824
|
-
semibold: "font-semibold",
|
|
825
|
-
// 600
|
|
826
|
-
bold: "font-bold",
|
|
827
|
-
// 700
|
|
828
|
-
extrabold: "font-extrabold",
|
|
829
|
-
// 800
|
|
830
|
-
black: "font-black",
|
|
831
|
-
// 900
|
|
832
|
-
// Semantic weights
|
|
833
|
-
body: "font-normal",
|
|
834
|
-
// For body text
|
|
835
|
-
emphasis: "font-medium",
|
|
836
|
-
// For emphasized text
|
|
837
|
-
strong: "font-semibold",
|
|
838
|
-
// For strong text
|
|
839
|
-
heading: "font-bold",
|
|
840
|
-
// For headings
|
|
841
|
-
display: "font-extrabold"
|
|
842
|
-
// For display text
|
|
843
|
-
},
|
|
844
|
-
// Font styles
|
|
845
|
-
style: {
|
|
846
|
-
normal: "not-italic",
|
|
847
|
-
italic: "italic",
|
|
848
|
-
oblique: "italic"
|
|
849
|
-
// Maps to italic (closest approximation)
|
|
850
|
-
},
|
|
851
|
-
// Text decoration
|
|
852
|
-
decoration: {
|
|
853
|
-
none: "no-underline",
|
|
854
|
-
underline: "underline",
|
|
855
|
-
overline: "overline",
|
|
856
|
-
lineThrough: "line-through"
|
|
857
|
-
},
|
|
858
|
-
// Text decoration style
|
|
859
|
-
decorationStyle: {
|
|
860
|
-
solid: "decoration-solid",
|
|
861
|
-
double: "decoration-double",
|
|
862
|
-
dotted: "decoration-dotted",
|
|
863
|
-
dashed: "decoration-dashed",
|
|
864
|
-
wavy: "decoration-wavy"
|
|
865
|
-
},
|
|
866
|
-
// Text decoration thickness
|
|
867
|
-
decorationThickness: {
|
|
868
|
-
auto: "decoration-auto",
|
|
869
|
-
fromFont: "decoration-from-font",
|
|
870
|
-
thin: "decoration-1",
|
|
871
|
-
medium: "decoration-2",
|
|
872
|
-
thick: "decoration-4"
|
|
873
|
-
},
|
|
874
|
-
// Text underline offset
|
|
875
|
-
underlineOffset: {
|
|
876
|
-
auto: "underline-offset-auto",
|
|
877
|
-
small: "underline-offset-1",
|
|
878
|
-
medium: "underline-offset-2",
|
|
879
|
-
large: "underline-offset-4",
|
|
880
|
-
xl: "underline-offset-8"
|
|
881
|
-
},
|
|
882
|
-
// Line heights with semantic names
|
|
883
|
-
leading: {
|
|
884
|
-
// Numeric values
|
|
885
|
-
none: "leading-none",
|
|
886
|
-
// 1
|
|
887
|
-
tight: "leading-tight",
|
|
888
|
-
// 1.25
|
|
889
|
-
snug: "leading-snug",
|
|
890
|
-
// 1.375
|
|
891
|
-
normal: "leading-normal",
|
|
892
|
-
// 1.5
|
|
893
|
-
relaxed: "leading-relaxed",
|
|
894
|
-
// 1.625
|
|
895
|
-
loose: "leading-loose",
|
|
896
|
-
// 2
|
|
897
|
-
// Semantic values
|
|
898
|
-
heading: "leading-tight",
|
|
899
|
-
// For headings
|
|
900
|
-
body: "leading-relaxed",
|
|
901
|
-
// For body text
|
|
902
|
-
caption: "leading-normal",
|
|
903
|
-
// For captions
|
|
904
|
-
display: "leading-none"
|
|
905
|
-
// For display text
|
|
906
|
-
},
|
|
907
|
-
// Letter spacing with semantic names
|
|
908
|
-
tracking: {
|
|
909
|
-
// Numeric values
|
|
910
|
-
tighter: "tracking-tighter",
|
|
911
|
-
// -0.05em
|
|
912
|
-
tight: "tracking-tight",
|
|
913
|
-
// -0.025em
|
|
914
|
-
normal: "tracking-normal",
|
|
915
|
-
// 0em
|
|
916
|
-
wide: "tracking-wide",
|
|
917
|
-
// 0.025em
|
|
918
|
-
wider: "tracking-wider",
|
|
919
|
-
// 0.05em
|
|
920
|
-
widest: "tracking-widest",
|
|
921
|
-
// 0.1em
|
|
922
|
-
// Semantic values
|
|
923
|
-
heading: "tracking-tight",
|
|
924
|
-
// For headings
|
|
925
|
-
body: "tracking-normal",
|
|
926
|
-
// For body text
|
|
927
|
-
caption: "tracking-normal",
|
|
928
|
-
// For captions
|
|
929
|
-
button: "tracking-wide",
|
|
930
|
-
// For button text
|
|
931
|
-
uppercase: "tracking-wider"
|
|
932
|
-
// For uppercase text
|
|
933
|
-
},
|
|
934
|
-
// Text transform
|
|
935
|
-
transform: {
|
|
936
|
-
none: "normal-case",
|
|
937
|
-
uppercase: "uppercase",
|
|
938
|
-
lowercase: "lowercase",
|
|
939
|
-
capitalize: "capitalize"
|
|
940
|
-
},
|
|
941
|
-
// Text alignment
|
|
942
|
-
align: {
|
|
943
|
-
left: "text-left",
|
|
944
|
-
center: "text-center",
|
|
945
|
-
right: "text-right",
|
|
946
|
-
justify: "text-justify",
|
|
947
|
-
start: "text-start",
|
|
948
|
-
end: "text-end"
|
|
949
|
-
},
|
|
950
|
-
// Vertical alignment
|
|
951
|
-
verticalAlign: {
|
|
952
|
-
baseline: "align-baseline",
|
|
953
|
-
top: "align-top",
|
|
954
|
-
middle: "align-middle",
|
|
955
|
-
bottom: "align-bottom",
|
|
956
|
-
textTop: "align-text-top",
|
|
957
|
-
textBottom: "align-text-bottom",
|
|
958
|
-
sub: "align-sub",
|
|
959
|
-
super: "align-super"
|
|
960
|
-
},
|
|
961
|
-
// White space handling
|
|
962
|
-
whitespace: {
|
|
963
|
-
normal: "whitespace-normal",
|
|
964
|
-
nowrap: "whitespace-nowrap",
|
|
965
|
-
pre: "whitespace-pre",
|
|
966
|
-
preLine: "whitespace-pre-line",
|
|
967
|
-
preWrap: "whitespace-pre-wrap",
|
|
968
|
-
break: "whitespace-break-spaces"
|
|
969
|
-
},
|
|
970
|
-
// Word breaking
|
|
971
|
-
wordBreak: {
|
|
972
|
-
normal: "break-normal",
|
|
973
|
-
words: "break-words",
|
|
974
|
-
all: "break-all",
|
|
975
|
-
keep: "break-keep"
|
|
976
|
-
},
|
|
977
|
-
// Text overflow
|
|
978
|
-
overflow: {
|
|
979
|
-
clip: "text-clip",
|
|
980
|
-
ellipsis: "text-ellipsis"
|
|
981
|
-
},
|
|
982
|
-
// Text indent
|
|
983
|
-
indent: {
|
|
984
|
-
none: "indent-0",
|
|
985
|
-
sm: "indent-1",
|
|
986
|
-
md: "indent-4",
|
|
987
|
-
lg: "indent-8"
|
|
988
|
-
}
|
|
989
|
-
},
|
|
990
|
-
// Animation durations
|
|
991
|
-
animation: {
|
|
992
|
-
none: "duration-0",
|
|
993
|
-
fastest: "duration-75",
|
|
994
|
-
fast: "duration-150",
|
|
995
|
-
normal: "duration-200",
|
|
996
|
-
slow: "duration-300",
|
|
997
|
-
slower: "duration-500",
|
|
998
|
-
slowest: "duration-700"
|
|
999
|
-
},
|
|
1000
|
-
// Animation easing
|
|
1001
|
-
ease: {
|
|
1002
|
-
linear: "ease-linear",
|
|
1003
|
-
in: "ease-in",
|
|
1004
|
-
out: "ease-out",
|
|
1005
|
-
inOut: "ease-in-out"
|
|
1006
|
-
},
|
|
1007
|
-
// Z-index scale
|
|
1008
|
-
zIndex: {
|
|
1009
|
-
auto: "z-auto",
|
|
1010
|
-
base: "z-0",
|
|
1011
|
-
docked: "z-10",
|
|
1012
|
-
dropdown: "z-20",
|
|
1013
|
-
sticky: "z-30",
|
|
1014
|
-
banner: "z-40",
|
|
1015
|
-
overlay: "z-50",
|
|
1016
|
-
modal: "z-60",
|
|
1017
|
-
popover: "z-70",
|
|
1018
|
-
skipLink: "z-80",
|
|
1019
|
-
toast: "z-90",
|
|
1020
|
-
tooltip: "z-100"
|
|
1021
|
-
},
|
|
1022
|
-
// Breakpoints (for reference - these are handled by Tailwind)
|
|
1023
|
-
breakpoints: {
|
|
1024
|
-
sm: "640px",
|
|
1025
|
-
md: "768px",
|
|
1026
|
-
lg: "1024px",
|
|
1027
|
-
xl: "1280px",
|
|
1028
|
-
"2xl": "1536px"
|
|
1029
|
-
},
|
|
1030
|
-
// Grid columns
|
|
1031
|
-
grid: {
|
|
1032
|
-
cols1: "grid-cols-1",
|
|
1033
|
-
cols2: "grid-cols-2",
|
|
1034
|
-
cols3: "grid-cols-3",
|
|
1035
|
-
cols4: "grid-cols-4",
|
|
1036
|
-
cols5: "grid-cols-5",
|
|
1037
|
-
cols6: "grid-cols-6",
|
|
1038
|
-
cols12: "grid-cols-12"
|
|
1039
|
-
},
|
|
1040
|
-
// Responsive grid patterns
|
|
1041
|
-
gridResponsive: {
|
|
1042
|
-
responsive2: "grid-cols-1 md:grid-cols-2",
|
|
1043
|
-
responsive3: "grid-cols-1 md:grid-cols-2 lg:grid-cols-3",
|
|
1044
|
-
responsive4: "grid-cols-1 md:grid-cols-2 lg:grid-cols-4",
|
|
1045
|
-
responsive6: "grid-cols-2 md:grid-cols-3 lg:grid-cols-6"
|
|
1046
|
-
},
|
|
1047
|
-
// Flex utilities
|
|
1048
|
-
flex: {
|
|
1049
|
-
center: "flex items-center justify-center",
|
|
1050
|
-
between: "flex items-center justify-between",
|
|
1051
|
-
start: "flex items-center justify-start",
|
|
1052
|
-
end: "flex items-center justify-end",
|
|
1053
|
-
col: "flex flex-col",
|
|
1054
|
-
colCenter: "flex flex-col items-center justify-center",
|
|
1055
|
-
wrap: "flex flex-wrap"
|
|
1056
|
-
},
|
|
1057
|
-
// Common width utilities
|
|
1058
|
-
width: {
|
|
1059
|
-
full: "w-full",
|
|
1060
|
-
screen: "w-screen",
|
|
1061
|
-
auto: "w-auto",
|
|
1062
|
-
fit: "w-fit",
|
|
1063
|
-
container: "w-full max-w-7xl mx-auto",
|
|
1064
|
-
containerSm: "w-full max-w-3xl mx-auto",
|
|
1065
|
-
containerLg: "w-full max-w-full mx-auto"
|
|
1066
|
-
},
|
|
1067
|
-
// Common height utilities
|
|
1068
|
-
height: {
|
|
1069
|
-
full: "h-full",
|
|
1070
|
-
screen: "h-screen",
|
|
1071
|
-
auto: "h-auto",
|
|
1072
|
-
fit: "h-fit",
|
|
1073
|
-
min: "min-h-0",
|
|
1074
|
-
minScreen: "min-h-screen"
|
|
1075
|
-
}
|
|
1076
|
-
}, f = {
|
|
1077
|
-
// =============================================================================
|
|
1078
|
-
// HEADINGS
|
|
1079
|
-
// =============================================================================
|
|
1080
|
-
heading: {
|
|
1081
|
-
// Display headings (hero sections, landing pages)
|
|
1082
|
-
display: {
|
|
1083
|
-
// Massive display text (128px)
|
|
1084
|
-
hero: () => `${e.typography.family.display} ${e.typography.semantic.hero} ${e.typography.weight.display} ${e.typography.leading.display} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1085
|
-
// Large display text (96px)
|
|
1086
|
-
xl: () => `${e.typography.family.display} text-7xl ${e.typography.weight.display} ${e.typography.leading.display} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1087
|
-
// Medium display text (72px)
|
|
1088
|
-
lg: () => `${e.typography.family.display} text-6xl ${e.typography.weight.bold} ${e.typography.leading.display} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1089
|
-
// Small display text (60px)
|
|
1090
|
-
md: () => `${e.typography.family.display} text-5xl ${e.typography.weight.bold} ${e.typography.leading.tight} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1091
|
-
// Extra small display text (48px)
|
|
1092
|
-
sm: () => `${e.typography.family.display} text-4xl ${e.typography.weight.bold} ${e.typography.leading.tight} ${e.typography.tracking.heading} text-gray-900 dark:text-white`
|
|
1093
|
-
},
|
|
1094
|
-
// Standard headings (H1-H6)
|
|
1095
|
-
h1: () => `${e.typography.family.sans} ${e.typography.semantic.h1} ${e.typography.weight.heading} ${e.typography.leading.heading} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1096
|
-
h2: () => `${e.typography.family.sans} ${e.typography.semantic.h2} ${e.typography.weight.heading} ${e.typography.leading.heading} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1097
|
-
h3: () => `${e.typography.family.sans} ${e.typography.semantic.h3} ${e.typography.weight.heading} ${e.typography.leading.heading} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1098
|
-
h4: () => `${e.typography.family.sans} ${e.typography.semantic.h4} ${e.typography.weight.semibold} ${e.typography.leading.heading} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1099
|
-
h5: () => `${e.typography.family.sans} ${e.typography.semantic.h5} ${e.typography.weight.semibold} ${e.typography.leading.heading} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1100
|
-
h6: () => `${e.typography.family.sans} ${e.typography.semantic.h6} ${e.typography.weight.semibold} ${e.typography.leading.heading} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1101
|
-
// Responsive headings that scale with screen size
|
|
1102
|
-
responsive: {
|
|
1103
|
-
h1: () => `${e.typography.family.sans} text-2xl sm:text-3xl md:text-4xl lg:text-5xl ${e.typography.weight.heading} ${e.typography.leading.heading} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1104
|
-
h2: () => `${e.typography.family.sans} text-xl sm:text-2xl md:text-3xl lg:text-4xl ${e.typography.weight.heading} ${e.typography.leading.heading} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1105
|
-
h3: () => `${e.typography.family.sans} text-lg sm:text-xl md:text-2xl lg:text-3xl ${e.typography.weight.semibold} ${e.typography.leading.heading} ${e.typography.tracking.heading} text-gray-900 dark:text-white`,
|
|
1106
|
-
display: () => `${e.typography.family.display} text-4xl sm:text-5xl md:text-6xl lg:text-7xl xl:text-8xl ${e.typography.weight.display} ${e.typography.leading.display} ${e.typography.tracking.heading} text-gray-900 dark:text-white`
|
|
1107
|
-
}
|
|
1108
|
-
},
|
|
1109
|
-
// =============================================================================
|
|
1110
|
-
// BODY TEXT
|
|
1111
|
-
// =============================================================================
|
|
1112
|
-
body: {
|
|
1113
|
-
// Large body text (18px)
|
|
1114
|
-
xl: () => `${e.typography.family.body} ${e.typography.semantic.bodyLarge} ${e.typography.weight.body} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-700 dark:text-gray-300`,
|
|
1115
|
-
// Regular body text (16px) - Default
|
|
1116
|
-
lg: () => `${e.typography.family.body} ${e.typography.semantic.body} ${e.typography.weight.body} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-700 dark:text-gray-300`,
|
|
1117
|
-
// Medium body text (16px) - Alias for lg
|
|
1118
|
-
md: () => `${e.typography.family.body} ${e.typography.semantic.body} ${e.typography.weight.body} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-700 dark:text-gray-300`,
|
|
1119
|
-
// Small body text (14px)
|
|
1120
|
-
sm: () => `${e.typography.family.body} ${e.typography.semantic.small} ${e.typography.weight.body} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-600 dark:text-gray-400`,
|
|
1121
|
-
// Extra small body text (12px)
|
|
1122
|
-
xs: () => `${e.typography.family.body} ${e.typography.semantic.caption} ${e.typography.weight.body} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-600 dark:text-gray-400`,
|
|
1123
|
-
// Emphasized/strong body text variants
|
|
1124
|
-
strong: {
|
|
1125
|
-
xl: () => `${e.typography.family.body} ${e.typography.semantic.bodyLarge} ${e.typography.weight.strong} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-900 dark:text-white`,
|
|
1126
|
-
lg: () => `${e.typography.family.body} ${e.typography.semantic.body} ${e.typography.weight.strong} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-900 dark:text-white`,
|
|
1127
|
-
md: () => `${e.typography.family.body} ${e.typography.semantic.body} ${e.typography.weight.strong} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-900 dark:text-white`,
|
|
1128
|
-
sm: () => `${e.typography.family.body} ${e.typography.semantic.small} ${e.typography.weight.strong} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-900 dark:text-white`
|
|
1129
|
-
},
|
|
1130
|
-
// Emphasized/medium body text variants
|
|
1131
|
-
emphasis: {
|
|
1132
|
-
xl: () => `${e.typography.family.body} ${e.typography.semantic.bodyLarge} ${e.typography.weight.emphasis} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-900 dark:text-white`,
|
|
1133
|
-
lg: () => `${e.typography.family.body} ${e.typography.semantic.body} ${e.typography.weight.emphasis} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-900 dark:text-white`,
|
|
1134
|
-
md: () => `${e.typography.family.body} ${e.typography.semantic.body} ${e.typography.weight.emphasis} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-900 dark:text-white`,
|
|
1135
|
-
sm: () => `${e.typography.family.body} ${e.typography.semantic.small} ${e.typography.weight.emphasis} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-900 dark:text-white`
|
|
1136
|
-
},
|
|
1137
|
-
// Muted/secondary body text variants
|
|
1138
|
-
muted: {
|
|
1139
|
-
xl: () => `${e.typography.family.body} ${e.typography.semantic.bodyLarge} ${e.typography.weight.body} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-600 dark:text-gray-400`,
|
|
1140
|
-
lg: () => `${e.typography.family.body} ${e.typography.semantic.body} ${e.typography.weight.body} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-600 dark:text-gray-400`,
|
|
1141
|
-
md: () => `${e.typography.family.body} ${e.typography.semantic.body} ${e.typography.weight.body} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-600 dark:text-gray-400`,
|
|
1142
|
-
sm: () => `${e.typography.family.body} ${e.typography.semantic.small} ${e.typography.weight.body} ${e.typography.leading.body} ${e.typography.tracking.body} text-gray-600 dark:text-gray-400`
|
|
1143
|
-
}
|
|
1144
|
-
},
|
|
1145
|
-
// =============================================================================
|
|
1146
|
-
// SPECIALIZED TEXT
|
|
1147
|
-
// =============================================================================
|
|
1148
|
-
// Caption and small text
|
|
1149
|
-
caption: {
|
|
1150
|
-
// Default caption (12px)
|
|
1151
|
-
default: () => `${e.typography.family.body} ${e.typography.semantic.caption} ${e.typography.weight.body} ${e.typography.leading.caption} ${e.typography.tracking.caption} text-gray-500 dark:text-gray-500`,
|
|
1152
|
-
// Emphasized caption
|
|
1153
|
-
emphasis: () => `${e.typography.family.body} ${e.typography.semantic.caption} ${e.typography.weight.emphasis} ${e.typography.leading.caption} ${e.typography.tracking.caption} text-gray-600 dark:text-gray-400`,
|
|
1154
|
-
// Uppercase caption (for labels)
|
|
1155
|
-
uppercase: () => `${e.typography.family.body} ${e.typography.semantic.caption} ${e.typography.weight.emphasis} ${e.typography.leading.caption} ${e.typography.tracking.uppercase} ${e.typography.transform.uppercase} text-gray-500 dark:text-gray-500`
|
|
1156
|
-
},
|
|
1157
|
-
// Lead text (introduction paragraphs)
|
|
1158
|
-
lead: {
|
|
1159
|
-
// Large lead text
|
|
1160
|
-
lg: () => `${e.typography.family.body} text-xl ${e.typography.weight.body} ${e.typography.leading.relaxed} ${e.typography.tracking.body} text-gray-700 dark:text-gray-300`,
|
|
1161
|
-
// Medium lead text
|
|
1162
|
-
md: () => `${e.typography.family.body} ${e.typography.semantic.bodyLarge} ${e.typography.weight.body} ${e.typography.leading.relaxed} ${e.typography.tracking.body} text-gray-700 dark:text-gray-300`,
|
|
1163
|
-
// Small lead text
|
|
1164
|
-
sm: () => `${e.typography.family.body} ${e.typography.semantic.body} ${e.typography.weight.body} ${e.typography.leading.relaxed} ${e.typography.tracking.body} text-gray-700 dark:text-gray-300`
|
|
1165
|
-
},
|
|
1166
|
-
// Links
|
|
1167
|
-
link: {
|
|
1168
|
-
// Default link
|
|
1169
|
-
default: () => `${e.typography.decoration.underline} ${e.typography.underlineOffset.medium} text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 transition-colors duration-150`,
|
|
1170
|
-
// Link without underline
|
|
1171
|
-
subtle: () => `${e.typography.decoration.none} text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 hover:${e.typography.decoration.underline} hover:${e.typography.underlineOffset.medium} transition-all duration-150`,
|
|
1172
|
-
// Muted link
|
|
1173
|
-
muted: () => `${e.typography.decoration.underline} ${e.typography.underlineOffset.medium} text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 transition-colors duration-150`,
|
|
1174
|
-
// External link (with icon space)
|
|
1175
|
-
external: () => `${e.typography.decoration.underline} ${e.typography.underlineOffset.medium} text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 transition-colors duration-150 inline-flex items-center gap-1`
|
|
1176
|
-
},
|
|
1177
|
-
// Code and monospace text
|
|
1178
|
-
code: {
|
|
1179
|
-
// Inline code
|
|
1180
|
-
inline: () => `${e.typography.family.mono} text-sm ${e.typography.weight.medium} px-1.5 py-0.5 rounded bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-gray-100`,
|
|
1181
|
-
// Code block
|
|
1182
|
-
block: () => `${e.typography.family.mono} text-sm ${e.typography.weight.body} ${e.typography.leading.relaxed} p-4 rounded-lg bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-gray-100 overflow-x-auto`,
|
|
1183
|
-
// Small inline code
|
|
1184
|
-
small: () => `${e.typography.family.mono} text-xs ${e.typography.weight.medium} px-1 py-0.5 rounded bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-gray-100`
|
|
1185
|
-
},
|
|
1186
|
-
// UI Labels and form text
|
|
1187
|
-
label: {
|
|
1188
|
-
// Form labels
|
|
1189
|
-
default: () => `${e.typography.family.body} text-sm ${e.typography.weight.emphasis} text-gray-900 dark:text-white`,
|
|
1190
|
-
// Required field labels
|
|
1191
|
-
required: () => `${e.typography.family.body} text-sm ${e.typography.weight.emphasis} text-gray-900 dark:text-white after:content-['*'] after:ml-0.5 after:text-red-500`,
|
|
1192
|
-
// Optional field labels
|
|
1193
|
-
optional: () => `${e.typography.family.body} text-sm ${e.typography.weight.body} text-gray-600 dark:text-gray-400`,
|
|
1194
|
-
// Helper text
|
|
1195
|
-
helper: () => `${e.typography.family.body} text-sm ${e.typography.weight.body} text-gray-500 dark:text-gray-500`,
|
|
1196
|
-
// Error text
|
|
1197
|
-
error: () => `${e.typography.family.body} text-sm ${e.typography.weight.body} text-red-600 dark:text-red-400`,
|
|
1198
|
-
// Success text
|
|
1199
|
-
success: () => `${e.typography.family.body} text-sm ${e.typography.weight.body} text-green-600 dark:text-green-400`
|
|
1200
|
-
},
|
|
1201
|
-
// =============================================================================
|
|
1202
|
-
// WEB3 SPECIFIC
|
|
1203
|
-
// =============================================================================
|
|
1204
|
-
web3: {
|
|
1205
|
-
// Wallet addresses
|
|
1206
|
-
address: () => `${e.typography.family.mono} text-sm ${e.typography.weight.body} text-gray-900 dark:text-white break-all`,
|
|
1207
|
-
// Short wallet addresses (truncated)
|
|
1208
|
-
addressShort: () => `${e.typography.family.mono} text-sm ${e.typography.weight.body} text-gray-900 dark:text-white`,
|
|
1209
|
-
// Transaction hashes
|
|
1210
|
-
hash: () => `${e.typography.family.mono} text-xs ${e.typography.weight.body} text-gray-500 dark:text-gray-500 break-all`,
|
|
1211
|
-
// Cryptocurrency amounts
|
|
1212
|
-
amount: () => `${e.typography.family.mono} text-base ${e.typography.weight.emphasis} text-gray-900 dark:text-white`,
|
|
1213
|
-
// Chain names
|
|
1214
|
-
chain: () => `${e.typography.family.body} text-sm ${e.typography.weight.emphasis} text-gray-900 dark:text-white`,
|
|
1215
|
-
// Token symbols
|
|
1216
|
-
symbol: () => `${e.typography.family.body} text-sm ${e.typography.weight.bold} ${e.typography.transform.uppercase} text-gray-900 dark:text-white`
|
|
1217
|
-
},
|
|
1218
|
-
// =============================================================================
|
|
1219
|
-
// UTILITY CLASSES
|
|
1220
|
-
// =============================================================================
|
|
1221
|
-
// Truncation utilities
|
|
1222
|
-
truncate: {
|
|
1223
|
-
// Single line truncation
|
|
1224
|
-
line: () => `${e.typography.overflow.ellipsis} ${e.typography.whitespace.nowrap} overflow-hidden`,
|
|
1225
|
-
// Multi-line truncation (2 lines)
|
|
1226
|
-
lines2: () => "line-clamp-2",
|
|
1227
|
-
// Multi-line truncation (3 lines)
|
|
1228
|
-
lines3: () => "line-clamp-3",
|
|
1229
|
-
// Multi-line truncation (4 lines)
|
|
1230
|
-
lines4: () => "line-clamp-4"
|
|
1231
|
-
},
|
|
1232
|
-
// Selection styles
|
|
1233
|
-
selection: {
|
|
1234
|
-
// Default text selection
|
|
1235
|
-
default: () => "selection:bg-blue-200 dark:selection:bg-blue-800 selection:text-blue-900 dark:selection:text-blue-100",
|
|
1236
|
-
// Brand colored selection
|
|
1237
|
-
brand: () => "selection:bg-purple-200 dark:selection:bg-purple-800 selection:text-purple-900 dark:selection:text-purple-100"
|
|
1238
|
-
}
|
|
1239
|
-
}, m = (i = "body", t = "body", a = "body", o = "text-gray-900 dark:text-white", d = {}) => {
|
|
1240
|
-
const {
|
|
1241
|
-
leading: n = "body",
|
|
1242
|
-
tracking: l = "body",
|
|
1243
|
-
transform: b = "none",
|
|
1244
|
-
decoration: y = "none"
|
|
1245
|
-
} = d;
|
|
1246
|
-
return [
|
|
1247
|
-
e.typography.family[i],
|
|
1248
|
-
e.typography.semantic[t],
|
|
1249
|
-
e.typography.weight[a],
|
|
1250
|
-
e.typography.leading[n],
|
|
1251
|
-
e.typography.tracking[l],
|
|
1252
|
-
e.typography.transform[b],
|
|
1253
|
-
e.typography.decoration[y],
|
|
1254
|
-
o
|
|
1255
|
-
].filter(Boolean).join(" ");
|
|
1256
|
-
}, h = (...i) => i.filter(Boolean).join(" "), k = (i, t) => {
|
|
1257
|
-
const a = [];
|
|
1258
|
-
return a.push(i), t.sm && a.push(`sm:${t.sm}`), t.md && a.push(`md:${t.md}`), t.lg && a.push(`lg:${t.lg}`), t.xl && a.push(`xl:${t.xl}`), t["2xl"] && a.push(`2xl:${t["2xl"]}`), a.join(" ");
|
|
1259
|
-
}, w = {
|
|
1260
|
-
// Button variants with complete styling
|
|
1261
|
-
button: {
|
|
1262
|
-
primary: {
|
|
1263
|
-
default: () => "bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800 border-transparent focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-blue-600 dark:hover:bg-blue-700 dark:active:bg-blue-800 dark:text-white dark:focus-visible:ring-blue-400 inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200",
|
|
1264
|
-
small: () => "bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800 border-transparent focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-blue-600 dark:hover:bg-blue-700 dark:active:bg-blue-800 dark:text-white dark:focus-visible:ring-blue-400 inline-flex items-center justify-center rounded-md px-3 py-1.5 text-xs font-medium transition-colors duration-200 h-8",
|
|
1265
|
-
large: () => "bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800 border-transparent focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-blue-600 dark:hover:bg-blue-700 dark:active:bg-blue-800 dark:text-white dark:focus-visible:ring-blue-400 inline-flex items-center justify-center rounded-md px-6 py-3 text-base font-medium transition-colors duration-200 h-12",
|
|
1266
|
-
withIcon: () => "bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800 border-transparent focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-blue-600 dark:hover:bg-blue-700 dark:active:bg-blue-800 dark:text-white dark:focus-visible:ring-blue-400 inline-flex items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200",
|
|
1267
|
-
fullWidth: () => "bg-blue-600 text-white hover:bg-blue-700 active:bg-blue-800 border-transparent focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-blue-600 dark:hover:bg-blue-700 dark:active:bg-blue-800 dark:text-white dark:focus-visible:ring-blue-400 flex items-center justify-center w-full rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200"
|
|
1268
|
-
},
|
|
1269
|
-
secondary: {
|
|
1270
|
-
default: () => "bg-gray-100 text-gray-900 hover:bg-gray-200 active:bg-gray-300 border-transparent focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-700 dark:active:bg-gray-600 inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200",
|
|
1271
|
-
small: () => "bg-gray-100 text-gray-900 hover:bg-gray-200 active:bg-gray-300 border-transparent focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-700 dark:active:bg-gray-600 inline-flex items-center justify-center rounded-md px-3 py-1.5 text-xs font-medium transition-colors duration-200 h-8",
|
|
1272
|
-
large: () => "bg-gray-100 text-gray-900 hover:bg-gray-200 active:bg-gray-300 border-transparent focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-700 dark:active:bg-gray-600 inline-flex items-center justify-center rounded-md px-6 py-3 text-base font-medium transition-colors duration-200 h-12",
|
|
1273
|
-
withIcon: () => "bg-gray-100 text-gray-900 hover:bg-gray-200 active:bg-gray-300 border-transparent focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-gray-800 dark:text-gray-50 dark:hover:bg-gray-700 dark:active:bg-gray-600 inline-flex items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200"
|
|
1274
|
-
},
|
|
1275
|
-
outline: {
|
|
1276
|
-
default: () => "bg-transparent hover:bg-gray-50 active:bg-gray-100 text-gray-900 border border-gray-300 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-transparent dark:hover:bg-gray-800 dark:active:bg-gray-700 dark:text-gray-50 dark:border-gray-600 inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200",
|
|
1277
|
-
small: () => "bg-transparent hover:bg-gray-50 active:bg-gray-100 text-gray-900 border border-gray-300 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-transparent dark:hover:bg-gray-800 dark:active:bg-gray-700 dark:text-gray-50 dark:border-gray-600 inline-flex items-center justify-center rounded-md px-3 py-1.5 text-xs font-medium transition-colors duration-200 h-8",
|
|
1278
|
-
large: () => "bg-transparent hover:bg-gray-50 active:bg-gray-100 text-gray-900 border border-gray-300 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-transparent dark:hover:bg-gray-800 dark:active:bg-gray-700 dark:text-gray-50 dark:border-gray-600 inline-flex items-center justify-center rounded-md px-6 py-3 text-base font-medium transition-colors duration-200 h-12",
|
|
1279
|
-
withIcon: () => "bg-transparent hover:bg-gray-50 active:bg-gray-100 text-gray-900 border border-gray-300 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-transparent dark:hover:bg-gray-800 dark:active:bg-gray-700 dark:text-gray-50 dark:border-gray-600 inline-flex items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200"
|
|
1280
|
-
},
|
|
1281
|
-
destructive: {
|
|
1282
|
-
default: () => "bg-red-600 text-white hover:bg-red-700 active:bg-red-800 border-transparent focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-red-600 dark:hover:bg-red-700 dark:active:bg-red-800 dark:text-white inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200",
|
|
1283
|
-
outline: () => "bg-transparent hover:bg-red-50 active:bg-red-100 text-red-600 border border-red-300 focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:hover:bg-red-900/20 dark:text-red-400 dark:border-red-800 inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200",
|
|
1284
|
-
small: () => "bg-red-600 text-white hover:bg-red-700 active:bg-red-800 border-transparent focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-red-600 dark:hover:bg-red-700 dark:active:bg-red-800 dark:text-white inline-flex items-center justify-center rounded-md px-3 py-1.5 text-xs font-medium transition-colors duration-200 h-8"
|
|
1285
|
-
},
|
|
1286
|
-
ghost: {
|
|
1287
|
-
default: () => "bg-transparent hover:bg-gray-100 active:bg-gray-200 text-gray-700 border-transparent focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-transparent dark:hover:bg-gray-800 dark:active:bg-gray-700 dark:text-gray-300 inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200",
|
|
1288
|
-
small: () => "bg-transparent hover:bg-gray-100 active:bg-gray-200 text-gray-700 border-transparent focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-transparent dark:hover:bg-gray-800 dark:active:bg-gray-700 dark:text-gray-300 inline-flex items-center justify-center rounded-md px-2 py-1 text-xs font-medium transition-colors duration-200 h-8",
|
|
1289
|
-
icon: () => "bg-transparent hover:bg-gray-100 active:bg-gray-200 text-gray-700 border-transparent focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:bg-transparent dark:hover:bg-gray-800 dark:active:bg-gray-700 dark:text-gray-300 inline-flex items-center justify-center rounded-md p-2 transition-colors duration-200 h-10 w-10"
|
|
1290
|
-
},
|
|
1291
|
-
link: {
|
|
1292
|
-
default: () => "bg-transparent hover:bg-transparent active:bg-transparent text-blue-600 border-transparent underline-offset-4 hover:underline focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline dark:text-blue-400 inline-flex items-center justify-center rounded-md px-0 py-0 text-sm font-medium transition-colors duration-200",
|
|
1293
|
-
muted: () => "bg-transparent hover:bg-transparent active:bg-transparent text-gray-600 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 border-transparent underline-offset-4 hover:underline focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline inline-flex items-center justify-center rounded-md px-0 py-0 text-sm font-medium transition-colors duration-200"
|
|
1294
|
-
},
|
|
1295
|
-
gradient: {
|
|
1296
|
-
primary: () => "bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white border-transparent shadow-lg hover:shadow-xl focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-all duration-200",
|
|
1297
|
-
secondary: () => "bg-gradient-to-r from-gray-100 to-gray-200 hover:from-gray-200 hover:to-gray-300 text-gray-900 border-transparent focus-visible:ring-2 focus-visible:ring-gray-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-all duration-200",
|
|
1298
|
-
success: () => "bg-gradient-to-r from-green-500 to-emerald-600 hover:from-green-600 hover:to-emerald-700 text-white border-transparent shadow-lg hover:shadow-xl focus-visible:ring-2 focus-visible:ring-green-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-all duration-200"
|
|
1299
|
-
},
|
|
1300
|
-
// Web3 specific button variants
|
|
1301
|
-
web3: {
|
|
1302
|
-
wallet: () => "bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-700 text-gray-900 dark:text-gray-100 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200",
|
|
1303
|
-
connect: () => "bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white border-transparent shadow-lg hover:shadow-xl focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-all duration-200",
|
|
1304
|
-
disconnect: () => "bg-transparent hover:bg-red-50 active:bg-red-100 text-red-600 border border-red-300 focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed dark:hover:bg-red-900/20 dark:text-red-400 dark:border-red-800 inline-flex items-center justify-center gap-2 rounded-md px-4 py-2 text-sm font-medium transition-colors duration-200"
|
|
1305
|
-
}
|
|
1306
|
-
},
|
|
1307
|
-
// Card variants
|
|
1308
|
-
card: {
|
|
1309
|
-
default: {
|
|
1310
|
-
base: () => "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg",
|
|
1311
|
-
padded: () => "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg p-6",
|
|
1312
|
-
interactive: () => "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg p-6 transition-all duration-200 hover:shadow-md cursor-pointer"
|
|
1313
|
-
},
|
|
1314
|
-
elevated: {
|
|
1315
|
-
base: () => "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-sm",
|
|
1316
|
-
padded: () => "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-sm p-6",
|
|
1317
|
-
interactive: () => "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-sm p-6 transition-all duration-200 hover:shadow-lg cursor-pointer"
|
|
1318
|
-
},
|
|
1319
|
-
state: {
|
|
1320
|
-
success: () => "bg-green-50 border-green-200 dark:bg-green-900/20 dark:border-green-800 text-green-800 dark:text-green-200 rounded-lg border p-4",
|
|
1321
|
-
warning: () => "bg-amber-50 border-amber-200 dark:bg-amber-900/20 dark:border-amber-800 text-amber-800 dark:text-amber-200 rounded-lg border p-4",
|
|
1322
|
-
error: () => "bg-red-50 border-red-200 dark:bg-red-900/20 dark:border-red-800 text-red-800 dark:text-red-200 rounded-lg border p-4",
|
|
1323
|
-
info: () => "bg-blue-50 border-blue-200 dark:bg-blue-900/20 dark:border-blue-800 text-blue-800 dark:text-blue-200 rounded-lg border p-4"
|
|
1324
|
-
}
|
|
1325
|
-
},
|
|
1326
|
-
// Badge variants
|
|
1327
|
-
badge: {
|
|
1328
|
-
default: () => "bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-300 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",
|
|
1329
|
-
primary: () => "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",
|
|
1330
|
-
success: () => "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",
|
|
1331
|
-
warning: () => "bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-300 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",
|
|
1332
|
-
error: () => "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",
|
|
1333
|
-
// Web3 specific
|
|
1334
|
-
ethereum: () => "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",
|
|
1335
|
-
solana: () => "bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",
|
|
1336
|
-
// Sizes
|
|
1337
|
-
small: (i = "default") => {
|
|
1338
|
-
const t = {
|
|
1339
|
-
default: "bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-300",
|
|
1340
|
-
primary: "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300",
|
|
1341
|
-
success: "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300",
|
|
1342
|
-
warning: "bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-300",
|
|
1343
|
-
error: "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300"
|
|
1344
|
-
};
|
|
1345
|
-
return `${t[i] || t.default} inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium`;
|
|
1346
|
-
},
|
|
1347
|
-
large: (i = "default") => {
|
|
1348
|
-
const t = {
|
|
1349
|
-
default: "bg-gray-100 text-gray-800 dark:bg-gray-800 dark:text-gray-300",
|
|
1350
|
-
primary: "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300",
|
|
1351
|
-
success: "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300",
|
|
1352
|
-
warning: "bg-amber-100 text-amber-800 dark:bg-amber-900/30 dark:text-amber-300",
|
|
1353
|
-
error: "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300"
|
|
1354
|
-
};
|
|
1355
|
-
return `${t[i] || t.default} inline-flex items-center px-3 py-1 rounded-full text-sm font-medium`;
|
|
1356
|
-
}
|
|
1357
|
-
},
|
|
1358
|
-
// Input variants
|
|
1359
|
-
input: {
|
|
1360
|
-
default: () => "bg-white dark:bg-gray-900 border-gray-300 dark:border-gray-600 text-gray-900 dark:text-gray-100 focus:border-blue-500 focus:ring-blue-500 dark:focus:border-blue-400 dark:focus:ring-blue-400 block w-full rounded-md px-3 py-2 text-sm placeholder:text-gray-500 dark:placeholder:text-gray-400 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2",
|
|
1361
|
-
search: () => "bg-white dark:bg-gray-900 border-gray-300 dark:border-gray-600 text-gray-900 dark:text-gray-100 focus:border-blue-500 focus:ring-blue-500 dark:focus:border-blue-400 dark:focus:ring-blue-400 block w-full rounded-md px-3 py-2 text-sm placeholder:text-gray-500 dark:placeholder:text-gray-400 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2",
|
|
1362
|
-
error: () => "bg-white dark:bg-gray-900 border-red-300 dark:border-red-700 text-gray-900 dark:text-gray-100 focus:border-red-500 focus:ring-red-500 block w-full rounded-md px-3 py-2 text-sm placeholder:text-gray-500 dark:placeholder:text-gray-400 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2",
|
|
1363
|
-
// Sizes
|
|
1364
|
-
small: () => "bg-white dark:bg-gray-900 border-gray-300 dark:border-gray-600 text-gray-900 dark:text-gray-100 focus:border-blue-500 focus:ring-blue-500 dark:focus:border-blue-400 dark:focus:ring-blue-400 block w-full rounded-md px-2 py-1.5 text-xs placeholder:text-gray-500 dark:placeholder:text-gray-400 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2",
|
|
1365
|
-
large: () => "bg-white dark:bg-gray-900 border-gray-300 dark:border-gray-600 text-gray-900 dark:text-gray-100 focus:border-blue-500 focus:ring-blue-500 dark:focus:border-blue-400 dark:focus:ring-blue-400 block w-full rounded-md px-4 py-3 text-base placeholder:text-gray-500 dark:placeholder:text-gray-400 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2",
|
|
1366
|
-
// Special variants
|
|
1367
|
-
withIcon: () => "bg-white dark:bg-gray-900 border-gray-300 dark:border-gray-600 text-gray-900 dark:text-gray-100 focus:border-blue-500 focus:ring-blue-500 dark:focus:border-blue-400 dark:focus:ring-blue-400 block w-full rounded-md pl-10 pr-3 py-2 text-sm placeholder:text-gray-500 dark:placeholder:text-gray-400 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2"
|
|
1368
|
-
},
|
|
1369
|
-
// Alert variants
|
|
1370
|
-
alert: {
|
|
1371
|
-
info: () => "bg-blue-50 border-blue-200 dark:bg-blue-900/20 dark:border-blue-800 text-blue-800 dark:text-blue-200 rounded-md border p-4 flex items-start gap-3",
|
|
1372
|
-
success: () => "bg-green-50 border-green-200 dark:bg-green-900/20 dark:border-green-800 text-green-800 dark:text-green-200 rounded-md border p-4 flex items-start gap-3",
|
|
1373
|
-
warning: () => "bg-amber-50 border-amber-200 dark:bg-amber-900/20 dark:border-amber-800 text-amber-800 dark:text-amber-200 rounded-md border p-4 flex items-start gap-3",
|
|
1374
|
-
error: () => "bg-red-50 border-red-200 dark:bg-red-900/20 dark:border-red-800 text-red-800 dark:text-red-200 rounded-md border p-4 flex items-start gap-3",
|
|
1375
|
-
// Compact variants
|
|
1376
|
-
compact: {
|
|
1377
|
-
info: () => "bg-blue-50 border-blue-200 dark:bg-blue-900/20 dark:border-blue-800 text-blue-800 dark:text-blue-200 rounded border px-3 py-2 text-sm",
|
|
1378
|
-
success: () => "bg-green-50 border-green-200 dark:bg-green-900/20 dark:border-green-800 text-green-800 dark:text-green-200 rounded border px-3 py-2 text-sm",
|
|
1379
|
-
warning: () => "bg-amber-50 border-amber-200 dark:bg-amber-900/20 dark:border-amber-800 text-amber-800 dark:text-amber-200 rounded border px-3 py-2 text-sm",
|
|
1380
|
-
error: () => "bg-red-50 border-red-200 dark:bg-red-900/20 dark:border-red-800 text-red-800 dark:text-red-200 rounded border px-3 py-2 text-sm"
|
|
1381
|
-
}
|
|
1382
|
-
},
|
|
1383
|
-
// Loading/Spinner variants
|
|
1384
|
-
loading: {
|
|
1385
|
-
// Spinner variants
|
|
1386
|
-
spinner: {
|
|
1387
|
-
default: () => "animate-spin rounded-full border-2 border-gray-200 border-t-blue-600 dark:border-gray-700 dark:border-t-blue-400 w-5 h-5",
|
|
1388
|
-
small: () => "animate-spin rounded-full border-2 border-gray-200 border-t-blue-600 dark:border-gray-700 dark:border-t-blue-400 w-4 h-4",
|
|
1389
|
-
large: () => "animate-spin rounded-full border-2 border-gray-200 border-t-blue-600 dark:border-gray-700 dark:border-t-blue-400 w-8 h-8",
|
|
1390
|
-
extraLarge: () => "animate-spin rounded-full border-4 border-gray-200 border-t-blue-600 dark:border-gray-700 dark:border-t-blue-400 w-16 h-16",
|
|
1391
|
-
// Color variants
|
|
1392
|
-
white: () => "animate-spin rounded-full border-2 border-white/30 border-t-white w-5 h-5",
|
|
1393
|
-
success: () => "animate-spin rounded-full border-2 border-green-200 border-t-green-600 dark:border-green-700 dark:border-t-green-400 w-5 h-5",
|
|
1394
|
-
warning: () => "animate-spin rounded-full border-2 border-amber-200 border-t-amber-600 dark:border-amber-700 dark:border-t-amber-400 w-5 h-5",
|
|
1395
|
-
error: () => "animate-spin rounded-full border-2 border-red-200 border-t-red-600 dark:border-red-700 dark:border-t-red-400 w-5 h-5"
|
|
1396
|
-
},
|
|
1397
|
-
// Loading state containers
|
|
1398
|
-
state: {
|
|
1399
|
-
default: () => "flex flex-col items-center justify-center py-8 px-4",
|
|
1400
|
-
fullScreen: () => "flex flex-col items-center justify-center min-h-screen bg-white dark:bg-gray-900",
|
|
1401
|
-
inline: () => "inline-flex items-center gap-2",
|
|
1402
|
-
center: () => "flex items-center justify-center"
|
|
1403
|
-
},
|
|
1404
|
-
// Loading buttons
|
|
1405
|
-
button: {
|
|
1406
|
-
default: () => "inline-flex items-center gap-2 opacity-70 cursor-wait pointer-events-none",
|
|
1407
|
-
primary: () => "bg-blue-600 text-white hover:bg-blue-700 inline-flex items-center gap-2 opacity-70 cursor-wait pointer-events-none px-4 py-2 rounded-md text-sm font-medium",
|
|
1408
|
-
secondary: () => "bg-gray-100 text-gray-900 hover:bg-gray-200 inline-flex items-center gap-2 opacity-70 cursor-wait pointer-events-none px-4 py-2 rounded-md text-sm font-medium dark:bg-gray-800 dark:text-gray-50"
|
|
1409
|
-
},
|
|
1410
|
-
// Skeleton loading
|
|
1411
|
-
skeleton: {
|
|
1412
|
-
default: () => "animate-pulse bg-gray-200 dark:bg-gray-700 rounded",
|
|
1413
|
-
text: () => "animate-pulse bg-gray-200 dark:bg-gray-700 rounded h-4",
|
|
1414
|
-
title: () => "animate-pulse bg-gray-200 dark:bg-gray-700 rounded h-6",
|
|
1415
|
-
avatar: () => "animate-pulse bg-gray-200 dark:bg-gray-700 rounded-full w-10 h-10",
|
|
1416
|
-
card: () => "animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg h-32"
|
|
1417
|
-
},
|
|
1418
|
-
// Progress indicators
|
|
1419
|
-
progress: {
|
|
1420
|
-
bar: () => "w-full bg-gray-200 rounded-full h-2 dark:bg-gray-700",
|
|
1421
|
-
fill: () => "bg-blue-600 h-2 rounded-full transition-all duration-300",
|
|
1422
|
-
indeterminate: () => "w-full bg-gray-200 rounded-full h-2 dark:bg-gray-700 overflow-hidden relative before:absolute before:inset-0 before:bg-blue-600 before:rounded-full before:animate-pulse"
|
|
1423
|
-
},
|
|
1424
|
-
// Dots indicator
|
|
1425
|
-
dots: {
|
|
1426
|
-
default: () => "flex space-x-1 justify-center items-center",
|
|
1427
|
-
dot: () => "w-2 h-2 bg-blue-600 dark:bg-blue-400 rounded-full animate-pulse",
|
|
1428
|
-
dotStaggered: (i = 0) => `w-2 h-2 bg-blue-600 dark:bg-blue-400 rounded-full animate-pulse animation-delay-${i}`
|
|
1429
|
-
}
|
|
1430
|
-
},
|
|
1431
|
-
// Modal/Dialog variants
|
|
1432
|
-
modal: {
|
|
1433
|
-
// Overlay variants
|
|
1434
|
-
overlay: {
|
|
1435
|
-
default: () => "fixed inset-0 bg-black/50 backdrop-blur-sm z-50 flex items-center justify-center p-4",
|
|
1436
|
-
dark: () => "fixed inset-0 bg-black/70 backdrop-blur-sm z-50 flex items-center justify-center p-4",
|
|
1437
|
-
light: () => "fixed inset-0 bg-black/30 backdrop-blur-sm z-50 flex items-center justify-center p-4"
|
|
1438
|
-
},
|
|
1439
|
-
// Container variants
|
|
1440
|
-
container: {
|
|
1441
|
-
default: () => "bg-white dark:bg-gray-800 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 max-h-[90vh] overflow-hidden",
|
|
1442
|
-
small: () => "bg-white dark:bg-gray-800 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 max-h-[90vh] overflow-hidden w-full max-w-sm",
|
|
1443
|
-
medium: () => "bg-white dark:bg-gray-800 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 max-h-[90vh] overflow-hidden w-full max-w-md",
|
|
1444
|
-
large: () => "bg-white dark:bg-gray-800 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 max-h-[90vh] overflow-hidden w-full max-w-2xl",
|
|
1445
|
-
extraLarge: () => "bg-white dark:bg-gray-800 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 max-h-[90vh] overflow-hidden w-full max-w-4xl",
|
|
1446
|
-
fullScreen: () => "bg-white dark:bg-gray-800 shadow-xl border border-gray-200 dark:border-gray-700 w-full h-full overflow-hidden"
|
|
1447
|
-
},
|
|
1448
|
-
// Header variants
|
|
1449
|
-
header: {
|
|
1450
|
-
default: () => "px-6 py-4 border-b border-gray-200 dark:border-gray-700 flex items-center justify-between",
|
|
1451
|
-
centered: () => "px-6 py-4 border-b border-gray-200 dark:border-gray-700 text-center",
|
|
1452
|
-
minimal: () => "px-6 py-4 flex items-center justify-between"
|
|
1453
|
-
},
|
|
1454
|
-
// Content variants
|
|
1455
|
-
content: {
|
|
1456
|
-
default: () => "px-6 py-4 overflow-y-auto flex-1",
|
|
1457
|
-
padded: () => "px-6 py-6 overflow-y-auto flex-1",
|
|
1458
|
-
compact: () => "px-4 py-3 overflow-y-auto flex-1",
|
|
1459
|
-
scrollable: () => "px-6 py-4 overflow-y-auto flex-1 max-h-96"
|
|
1460
|
-
},
|
|
1461
|
-
// Footer variants
|
|
1462
|
-
footer: {
|
|
1463
|
-
default: () => "px-6 py-4 border-t border-gray-200 dark:border-gray-700 flex items-center justify-end gap-3",
|
|
1464
|
-
centered: () => "px-6 py-4 border-t border-gray-200 dark:border-gray-700 flex items-center justify-center gap-3",
|
|
1465
|
-
spaceBetween: () => "px-6 py-4 border-t border-gray-200 dark:border-gray-700 flex items-center justify-between",
|
|
1466
|
-
minimal: () => "px-6 py-4 flex items-center justify-end gap-3"
|
|
1467
|
-
},
|
|
1468
|
-
// Close button variants
|
|
1469
|
-
close: {
|
|
1470
|
-
default: () => "text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300 transition-colors duration-200 p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700",
|
|
1471
|
-
subtle: () => "text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300 transition-colors duration-200",
|
|
1472
|
-
prominent: () => "text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 transition-colors duration-200 p-2 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700 border border-gray-200 dark:border-gray-600"
|
|
1473
|
-
},
|
|
1474
|
-
// Web3 specific modal variants
|
|
1475
|
-
web3: {
|
|
1476
|
-
wallet: () => "bg-white dark:bg-gray-800 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 max-h-[90vh] overflow-hidden w-full max-w-md",
|
|
1477
|
-
transaction: () => "bg-white dark:bg-gray-800 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 max-h-[90vh] overflow-hidden w-full max-w-lg",
|
|
1478
|
-
confirmation: () => "bg-white dark:bg-gray-800 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 max-h-[90vh] overflow-hidden w-full max-w-sm"
|
|
1479
|
-
},
|
|
1480
|
-
// Animation variants
|
|
1481
|
-
animation: {
|
|
1482
|
-
fadeIn: () => "animate-in fade-in-0 duration-200",
|
|
1483
|
-
slideIn: () => "animate-in fade-in-0 zoom-in-95 duration-200",
|
|
1484
|
-
slideUp: () => "animate-in fade-in-0 slide-in-from-bottom-4 duration-200",
|
|
1485
|
-
fadeOut: () => "animate-out fade-out-0 duration-150",
|
|
1486
|
-
slideOut: () => "animate-out fade-out-0 zoom-out-95 duration-150"
|
|
1487
|
-
}
|
|
1488
|
-
},
|
|
1489
|
-
// Navigation variants
|
|
1490
|
-
navigation: {
|
|
1491
|
-
// Breadcrumb variants
|
|
1492
|
-
breadcrumb: {
|
|
1493
|
-
container: () => "flex items-center justify-between text-sm",
|
|
1494
|
-
list: () => "flex items-center space-x-1",
|
|
1495
|
-
item: () => "flex items-center",
|
|
1496
|
-
separator: () => "h-4 w-4 text-gray-400 dark:text-gray-500 mx-2 flex-shrink-0",
|
|
1497
|
-
link: () => "flex items-center text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 transition-colors focus:outline-none focus:ring-2 focus:ring-blue-500 focus:rounded-sm",
|
|
1498
|
-
current: () => "flex items-center text-gray-900 dark:text-white font-medium",
|
|
1499
|
-
home: () => "h-4 w-4 mr-1 flex-shrink-0"
|
|
1500
|
-
},
|
|
1501
|
-
// Tab variants
|
|
1502
|
-
tabs: {
|
|
1503
|
-
root: () => "",
|
|
1504
|
-
list: () => "inline-flex h-10 items-center justify-center rounded-md bg-gray-100 dark:bg-gray-800 p-1 text-gray-500 dark:text-gray-400",
|
|
1505
|
-
listUnderlined: () => "flex border-b border-gray-200 dark:border-gray-700",
|
|
1506
|
-
listPills: () => "flex space-x-1 bg-gray-100 dark:bg-gray-800 rounded-lg p-1",
|
|
1507
|
-
trigger: () => "inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-white transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-white data-[state=active]:text-gray-950 data-[state=active]:shadow-sm dark:ring-offset-gray-950 dark:focus-visible:ring-blue-400 dark:data-[state=active]:bg-gray-950 dark:data-[state=active]:text-gray-50",
|
|
1508
|
-
triggerUnderlined: () => "inline-flex items-center justify-center whitespace-nowrap px-4 py-2 text-sm font-medium text-gray-500 dark:text-gray-400 border-b-2 border-transparent hover:text-gray-700 dark:hover:text-gray-300 hover:border-gray-300 dark:hover:border-gray-600 focus:outline-none focus:text-blue-600 focus:border-blue-600 dark:focus:text-blue-400 dark:focus:border-blue-400 data-[state=active]:text-blue-600 data-[state=active]:border-blue-600 dark:data-[state=active]:text-blue-400 dark:data-[state=active]:border-blue-400 transition-colors",
|
|
1509
|
-
triggerPills: () => "inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1.5 text-sm font-medium text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 hover:bg-white dark:hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 data-[state=active]:bg-white data-[state=active]:text-gray-900 data-[state=active]:shadow-sm dark:data-[state=active]:bg-gray-700 dark:data-[state=active]:text-gray-100 transition-all",
|
|
1510
|
-
content: () => "mt-2 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 dark:ring-offset-gray-950 dark:focus-visible:ring-blue-400"
|
|
1511
|
-
},
|
|
1512
|
-
// Menu/Dropdown variants
|
|
1513
|
-
menu: {
|
|
1514
|
-
trigger: () => "inline-flex items-center justify-center whitespace-nowrap rounded-md px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-800 hover:text-gray-900 dark:hover:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-colors",
|
|
1515
|
-
content: () => "z-50 min-w-[12rem] overflow-hidden rounded-md border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 p-1 text-gray-900 dark:text-gray-100 shadow-lg",
|
|
1516
|
-
item: () => "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium outline-none focus:bg-gray-100 focus:text-gray-900 dark:focus:bg-gray-700 dark:focus:text-gray-100 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors",
|
|
1517
|
-
separator: () => "-mx-1 my-1 h-px bg-gray-200 dark:bg-gray-700",
|
|
1518
|
-
label: () => "px-2 py-1.5 text-sm font-semibold text-gray-900 dark:text-gray-100",
|
|
1519
|
-
shortcut: () => "ml-auto text-xs tracking-widest text-gray-500 dark:text-gray-400"
|
|
1520
|
-
},
|
|
1521
|
-
// Pagination variants
|
|
1522
|
-
pagination: {
|
|
1523
|
-
container: () => "flex items-center justify-between border-t border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 px-4 py-3 sm:px-6",
|
|
1524
|
-
info: () => "flex flex-1 justify-between sm:hidden",
|
|
1525
|
-
nav: () => "hidden sm:flex sm:flex-1 sm:items-center sm:justify-between",
|
|
1526
|
-
results: () => "text-sm text-gray-700 dark:text-gray-300",
|
|
1527
|
-
buttons: () => "relative z-0 inline-flex rounded-md shadow-sm -space-x-px",
|
|
1528
|
-
button: () => "relative inline-flex items-center px-2 py-2 text-sm font-medium text-gray-500 dark:text-gray-400 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-700 focus:z-10 focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-blue-500 transition-colors",
|
|
1529
|
-
buttonActive: () => "relative inline-flex items-center px-4 py-2 text-sm font-medium text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20 border border-blue-300 dark:border-blue-700 z-10",
|
|
1530
|
-
buttonFirst: () => "rounded-l-md",
|
|
1531
|
-
buttonLast: () => "rounded-r-md",
|
|
1532
|
-
// Mobile variants
|
|
1533
|
-
mobileButton: () => "relative inline-flex items-center px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-700 rounded-md transition-colors"
|
|
1534
|
-
},
|
|
1535
|
-
// Sidebar/Menu navigation
|
|
1536
|
-
sidebar: {
|
|
1537
|
-
container: () => "flex flex-col h-full bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700",
|
|
1538
|
-
nav: () => "flex-1 px-4 py-6 space-y-1",
|
|
1539
|
-
item: () => "group flex items-center px-3 py-2 text-sm font-medium rounded-md text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-gray-100 transition-colors",
|
|
1540
|
-
itemActive: () => "group flex items-center px-3 py-2 text-sm font-medium rounded-md bg-blue-100 dark:bg-blue-900/20 text-blue-700 dark:text-blue-300 border-r-2 border-blue-500",
|
|
1541
|
-
icon: () => "mr-3 h-5 w-5 flex-shrink-0 text-gray-400 group-hover:text-gray-500 dark:text-gray-500 dark:group-hover:text-gray-400",
|
|
1542
|
-
iconActive: () => "mr-3 h-5 w-5 flex-shrink-0 text-blue-500 dark:text-blue-400"
|
|
1543
|
-
},
|
|
1544
|
-
// Step navigation
|
|
1545
|
-
steps: {
|
|
1546
|
-
container: () => "flex items-center justify-center",
|
|
1547
|
-
list: () => "flex items-center space-x-4",
|
|
1548
|
-
step: () => "flex items-center space-x-2",
|
|
1549
|
-
circle: () => "flex items-center justify-center w-8 h-8 rounded-full border-2 border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400 text-sm font-medium",
|
|
1550
|
-
circleActive: () => "flex items-center justify-center w-8 h-8 rounded-full border-2 border-blue-600 dark:border-blue-400 bg-blue-600 dark:bg-blue-400 text-white text-sm font-medium",
|
|
1551
|
-
circleCompleted: () => "flex items-center justify-center w-8 h-8 rounded-full border-2 border-green-600 dark:border-green-400 bg-green-600 dark:bg-green-400 text-white text-sm font-medium",
|
|
1552
|
-
label: () => "text-sm font-medium text-gray-900 dark:text-gray-100",
|
|
1553
|
-
labelInactive: () => "text-sm font-medium text-gray-500 dark:text-gray-400",
|
|
1554
|
-
connector: () => "w-12 h-px bg-gray-300 dark:bg-gray-600",
|
|
1555
|
-
connectorActive: () => "w-12 h-px bg-blue-600 dark:bg-blue-400"
|
|
1556
|
-
}
|
|
1557
|
-
},
|
|
1558
|
-
// Data Display variants
|
|
1559
|
-
dataDisplay: {
|
|
1560
|
-
// Table variants
|
|
1561
|
-
table: {
|
|
1562
|
-
container: () => "w-full overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700",
|
|
1563
|
-
wrapper: () => "overflow-x-auto",
|
|
1564
|
-
table: () => "min-w-full divide-y divide-gray-200 dark:divide-gray-700",
|
|
1565
|
-
thead: () => "bg-gray-50 dark:bg-gray-800",
|
|
1566
|
-
tbody: () => "bg-white dark:bg-gray-900 divide-y divide-gray-200 dark:divide-gray-700",
|
|
1567
|
-
tfoot: () => "bg-gray-50 dark:bg-gray-800",
|
|
1568
|
-
tr: () => "hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors",
|
|
1569
|
-
trSelected: () => "bg-blue-50 dark:bg-blue-900/20 hover:bg-blue-100 dark:hover:bg-blue-900/30",
|
|
1570
|
-
th: () => "px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider",
|
|
1571
|
-
thSortable: () => "px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider cursor-pointer hover:text-gray-700 dark:hover:text-gray-200 transition-colors",
|
|
1572
|
-
td: () => "px-6 py-4 whitespace-nowrap text-sm text-gray-900 dark:text-gray-100",
|
|
1573
|
-
tdCompact: () => "px-3 py-2 whitespace-nowrap text-sm text-gray-900 dark:text-gray-100"
|
|
1574
|
-
},
|
|
1575
|
-
// List variants
|
|
1576
|
-
list: {
|
|
1577
|
-
container: () => "bg-white dark:bg-gray-900 shadow overflow-hidden rounded-lg",
|
|
1578
|
-
ul: () => "divide-y divide-gray-200 dark:divide-gray-700",
|
|
1579
|
-
li: () => "px-4 py-4 sm:px-6 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors",
|
|
1580
|
-
liActive: () => "px-4 py-4 sm:px-6 bg-blue-50 dark:bg-blue-900/20 border-l-4 border-blue-500",
|
|
1581
|
-
// Email list specific
|
|
1582
|
-
emailItem: () => "flex items-center px-4 py-3 hover:bg-gray-50 dark:hover:bg-gray-800 cursor-pointer transition-colors",
|
|
1583
|
-
emailItemRead: () => "flex items-center px-4 py-3 hover:bg-gray-50 dark:hover:bg-gray-800 cursor-pointer transition-colors opacity-60",
|
|
1584
|
-
emailItemSelected: () => "flex items-center px-4 py-3 bg-blue-50 dark:bg-blue-900/20 hover:bg-blue-100 dark:hover:bg-blue-900/30 cursor-pointer"
|
|
1585
|
-
},
|
|
1586
|
-
// Grid variants
|
|
1587
|
-
grid: {
|
|
1588
|
-
container: () => "grid gap-4",
|
|
1589
|
-
twoColumn: () => "grid grid-cols-1 md:grid-cols-2 gap-4",
|
|
1590
|
-
threeColumn: () => "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
1591
|
-
fourColumn: () => "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",
|
|
1592
|
-
autoFit: () => "grid grid-cols-[repeat(auto-fit,minmax(250px,1fr))] gap-4"
|
|
1593
|
-
},
|
|
1594
|
-
// Key-Value pairs
|
|
1595
|
-
keyValue: {
|
|
1596
|
-
container: () => "bg-white dark:bg-gray-900 shadow overflow-hidden rounded-lg",
|
|
1597
|
-
list: () => "divide-y divide-gray-200 dark:divide-gray-700",
|
|
1598
|
-
row: () => "px-4 py-4 sm:px-6 sm:grid sm:grid-cols-3 sm:gap-4",
|
|
1599
|
-
key: () => "text-sm font-medium text-gray-500 dark:text-gray-400",
|
|
1600
|
-
value: () => "mt-1 text-sm text-gray-900 dark:text-gray-100 sm:mt-0 sm:col-span-2",
|
|
1601
|
-
// Inline variant
|
|
1602
|
-
inline: () => "flex items-center space-x-2",
|
|
1603
|
-
inlineKey: () => "text-sm font-medium text-gray-500 dark:text-gray-400",
|
|
1604
|
-
inlineValue: () => "text-sm text-gray-900 dark:text-gray-100"
|
|
1605
|
-
},
|
|
1606
|
-
// Code display
|
|
1607
|
-
code: {
|
|
1608
|
-
inline: () => "font-mono text-sm text-pink-600 dark:text-pink-400 bg-gray-100 dark:bg-gray-800 px-1.5 py-0.5 rounded",
|
|
1609
|
-
block: () => "font-mono text-sm text-gray-900 dark:text-gray-100 bg-gray-100 dark:bg-gray-800 p-4 rounded-lg overflow-x-auto",
|
|
1610
|
-
// Web3 specific
|
|
1611
|
-
address: () => "font-mono text-sm text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20 px-2 py-1 rounded select-all",
|
|
1612
|
-
hash: () => "font-mono text-sm text-purple-600 dark:text-purple-400 bg-purple-50 dark:bg-purple-900/20 px-2 py-1 rounded select-all",
|
|
1613
|
-
// Syntax highlighting
|
|
1614
|
-
keyword: () => "text-purple-600 dark:text-purple-400",
|
|
1615
|
-
string: () => "text-green-600 dark:text-green-400",
|
|
1616
|
-
number: () => "text-blue-600 dark:text-blue-400",
|
|
1617
|
-
comment: () => "text-gray-500 dark:text-gray-500 italic"
|
|
1618
|
-
},
|
|
1619
|
-
// Stats/Metrics
|
|
1620
|
-
stats: {
|
|
1621
|
-
container: () => "bg-white dark:bg-gray-900 overflow-hidden shadow rounded-lg",
|
|
1622
|
-
grid: () => "grid grid-cols-1 md:grid-cols-3 divide-y md:divide-y-0 md:divide-x divide-gray-200 dark:divide-gray-700",
|
|
1623
|
-
item: () => "px-4 py-5 sm:p-6",
|
|
1624
|
-
label: () => "text-sm font-medium text-gray-500 dark:text-gray-400 truncate",
|
|
1625
|
-
value: () => "mt-1 text-3xl font-semibold text-gray-900 dark:text-gray-100",
|
|
1626
|
-
change: () => "mt-2 flex items-center text-sm",
|
|
1627
|
-
changePositive: () => "text-green-600 dark:text-green-400",
|
|
1628
|
-
changeNegative: () => "text-red-600 dark:text-red-400"
|
|
1629
|
-
},
|
|
1630
|
-
// Empty states
|
|
1631
|
-
empty: {
|
|
1632
|
-
container: () => "text-center py-12",
|
|
1633
|
-
icon: () => "mx-auto h-12 w-12 text-gray-400",
|
|
1634
|
-
title: () => "mt-2 text-sm font-medium text-gray-900 dark:text-gray-100",
|
|
1635
|
-
description: () => "mt-1 text-sm text-gray-500 dark:text-gray-400",
|
|
1636
|
-
action: () => "mt-6"
|
|
1637
|
-
},
|
|
1638
|
-
// Timeline
|
|
1639
|
-
timeline: {
|
|
1640
|
-
container: () => "flow-root",
|
|
1641
|
-
list: () => "-mb-8",
|
|
1642
|
-
item: () => "relative pb-8",
|
|
1643
|
-
itemLast: () => "relative",
|
|
1644
|
-
connector: () => "absolute top-4 left-4 -ml-px h-full w-0.5 bg-gray-200 dark:bg-gray-700",
|
|
1645
|
-
dot: () => "relative flex h-8 w-8 items-center justify-center rounded-full bg-white dark:bg-gray-800 ring-8 ring-white dark:ring-gray-900",
|
|
1646
|
-
dotActive: () => "bg-blue-600 dark:bg-blue-400",
|
|
1647
|
-
dotComplete: () => "bg-green-600 dark:bg-green-400",
|
|
1648
|
-
content: () => "ml-12 flex flex-col",
|
|
1649
|
-
time: () => "text-xs text-gray-500 dark:text-gray-400",
|
|
1650
|
-
title: () => "text-sm font-medium text-gray-900 dark:text-gray-100",
|
|
1651
|
-
description: () => "mt-1 text-sm text-gray-500 dark:text-gray-400"
|
|
1652
|
-
}
|
|
1653
|
-
},
|
|
1654
|
-
// Forms Advanced variants
|
|
1655
|
-
formsAdvanced: {
|
|
1656
|
-
// Multi-step wizard
|
|
1657
|
-
wizard: {
|
|
1658
|
-
container: () => "w-full",
|
|
1659
|
-
steps: () => "flex items-center justify-between mb-8",
|
|
1660
|
-
step: () => "flex flex-col items-center",
|
|
1661
|
-
stepCircle: () => "w-10 h-10 rounded-full flex items-center justify-center text-sm font-medium border-2 transition-all",
|
|
1662
|
-
stepCompleted: () => "bg-green-100 border-green-500 text-green-700 dark:bg-green-900/30 dark:border-green-400 dark:text-green-300",
|
|
1663
|
-
stepCurrent: () => "bg-blue-100 border-blue-500 text-blue-700 dark:bg-blue-900/30 dark:border-blue-400 dark:text-blue-300",
|
|
1664
|
-
stepInactive: () => "bg-gray-100 border-gray-300 text-gray-500 dark:bg-gray-800 dark:border-gray-600 dark:text-gray-400",
|
|
1665
|
-
stepContent: () => "mt-2 text-center",
|
|
1666
|
-
stepTitle: () => "text-sm font-medium",
|
|
1667
|
-
stepDescription: () => "text-xs text-gray-500 dark:text-gray-400 mt-1",
|
|
1668
|
-
connector: () => "flex-1 h-px bg-gray-200 dark:bg-gray-700 mt-5",
|
|
1669
|
-
connectorCompleted: () => "flex-1 h-px bg-green-300 dark:bg-green-600 mt-5"
|
|
1670
|
-
},
|
|
1671
|
-
// File upload components
|
|
1672
|
-
fileUpload: {
|
|
1673
|
-
dropzone: () => "border-2 border-dashed border-gray-300 dark:border-gray-600 rounded-lg p-8 text-center transition-colors hover:border-gray-400 dark:hover:border-gray-500 cursor-pointer",
|
|
1674
|
-
dropzoneActive: () => "border-blue-400 bg-blue-50 dark:bg-blue-900/20 dark:border-blue-500",
|
|
1675
|
-
dropzoneError: () => "border-red-400 bg-red-50 dark:bg-red-900/20 dark:border-red-500",
|
|
1676
|
-
icon: () => "h-12 w-12 text-gray-400 mx-auto mb-4",
|
|
1677
|
-
text: () => "text-lg font-medium text-gray-900 dark:text-gray-100 mb-2",
|
|
1678
|
-
subtext: () => "text-sm text-gray-500 dark:text-gray-400 mb-4",
|
|
1679
|
-
button: () => "inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-800 hover:bg-gray-50 dark:hover:bg-gray-700 cursor-pointer transition-colors",
|
|
1680
|
-
input: () => "sr-only",
|
|
1681
|
-
fileList: () => "mt-6 space-y-2",
|
|
1682
|
-
fileItem: () => "flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-800 rounded-lg",
|
|
1683
|
-
fileIcon: () => "w-8 h-8 bg-blue-100 dark:bg-blue-900 rounded flex items-center justify-center mr-3",
|
|
1684
|
-
fileName: () => "text-sm font-medium text-gray-900 dark:text-gray-100",
|
|
1685
|
-
fileSize: () => "text-xs text-gray-500 dark:text-gray-400",
|
|
1686
|
-
removeButton: () => "p-1 text-gray-400 hover:text-red-500 transition-colors"
|
|
1687
|
-
},
|
|
1688
|
-
// Web3 specific inputs
|
|
1689
|
-
web3: {
|
|
1690
|
-
container: () => "space-y-2",
|
|
1691
|
-
label: () => "text-sm font-medium text-gray-700 dark:text-gray-300 mb-2 flex items-center",
|
|
1692
|
-
labelIcon: () => "h-4 w-4 inline mr-1",
|
|
1693
|
-
inputGroup: () => "flex rounded-md shadow-sm",
|
|
1694
|
-
tokenInput: () => "rounded-r-none font-mono",
|
|
1695
|
-
tokenSymbol: () => "inline-flex items-center px-3 rounded-r-md border border-l-0 border-gray-300 dark:border-gray-600 bg-gray-50 dark:bg-gray-700 text-gray-500 dark:text-gray-400 text-sm font-medium",
|
|
1696
|
-
balance: () => "text-sm text-gray-500 dark:text-gray-400",
|
|
1697
|
-
balanceActions: () => "flex space-x-2",
|
|
1698
|
-
maxButton: () => "text-xs",
|
|
1699
|
-
addressInput: () => "font-mono text-sm",
|
|
1700
|
-
addressValid: () => "border-green-300 dark:border-green-600 pr-10",
|
|
1701
|
-
addressInvalid: () => "border-red-300 dark:border-red-600 pr-10",
|
|
1702
|
-
gasSettings: () => "grid grid-cols-3 gap-2",
|
|
1703
|
-
gasOption: () => "p-2 text-center border rounded-md transition-colors cursor-pointer",
|
|
1704
|
-
gasOptionActive: () => "border-blue-300 bg-blue-50 dark:border-blue-600 dark:bg-blue-900/20",
|
|
1705
|
-
gasOptionInactive: () => "border-gray-300 dark:border-gray-600 hover:border-gray-400 dark:hover:border-gray-500"
|
|
1706
|
-
},
|
|
1707
|
-
// Advanced validation
|
|
1708
|
-
validation: {
|
|
1709
|
-
container: () => "space-y-1",
|
|
1710
|
-
label: () => "text-sm font-medium text-gray-700 dark:text-gray-300",
|
|
1711
|
-
input: () => "block w-full rounded-md border-gray-300 dark:border-gray-600 shadow-sm focus:border-blue-500 focus:ring-blue-500 dark:bg-gray-800 dark:text-gray-100",
|
|
1712
|
-
inputSuccess: () => "border-green-300 dark:border-green-600 focus:border-green-500 focus:ring-green-500 pr-10",
|
|
1713
|
-
inputError: () => "border-red-300 dark:border-red-600 focus:border-red-500 focus:ring-red-500 pr-10",
|
|
1714
|
-
inputWarning: () => "border-yellow-300 dark:border-yellow-600 focus:border-yellow-500 focus:ring-yellow-500 pr-10",
|
|
1715
|
-
successIcon: () => "absolute right-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-green-500",
|
|
1716
|
-
errorIcon: () => "absolute right-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-red-500",
|
|
1717
|
-
warningIcon: () => "absolute right-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-yellow-500",
|
|
1718
|
-
loadingIcon: () => "absolute right-3 top-1/2 transform -translate-y-1/2 h-4 w-4 animate-spin text-blue-600",
|
|
1719
|
-
successMessage: () => "text-xs text-green-600 dark:text-green-400",
|
|
1720
|
-
errorMessage: () => "text-xs text-red-600 dark:text-red-400",
|
|
1721
|
-
warningMessage: () => "text-xs text-yellow-600 dark:text-yellow-400",
|
|
1722
|
-
helpMessage: () => "text-xs text-gray-500 dark:text-gray-400",
|
|
1723
|
-
requirements: () => "space-y-1 mt-2",
|
|
1724
|
-
requirement: () => "flex items-center text-xs",
|
|
1725
|
-
requirementMet: () => "text-green-600 dark:text-green-400",
|
|
1726
|
-
requirementUnmet: () => "text-gray-500 dark:text-gray-400",
|
|
1727
|
-
requirementIcon: () => "h-3 w-3 mr-1"
|
|
1728
|
-
},
|
|
1729
|
-
// Form sections and layouts
|
|
1730
|
-
layout: {
|
|
1731
|
-
section: () => "space-y-6",
|
|
1732
|
-
sectionTitle: () => "text-lg font-medium text-gray-900 dark:text-gray-100",
|
|
1733
|
-
sectionDescription: () => "text-sm text-gray-500 dark:text-gray-400",
|
|
1734
|
-
fieldGroup: () => "space-y-4",
|
|
1735
|
-
fieldRow: () => "grid grid-cols-1 md:grid-cols-2 gap-4",
|
|
1736
|
-
fieldColumn: () => "space-y-4",
|
|
1737
|
-
actions: () => "flex justify-between pt-6 border-t border-gray-200 dark:border-gray-700",
|
|
1738
|
-
actionsRight: () => "flex justify-end space-x-4 pt-6 border-t border-gray-200 dark:border-gray-700",
|
|
1739
|
-
actionsCenter: () => "flex justify-center space-x-4 pt-6 border-t border-gray-200 dark:border-gray-700"
|
|
1740
|
-
},
|
|
1741
|
-
// Security and sensitive inputs
|
|
1742
|
-
security: {
|
|
1743
|
-
container: () => "relative",
|
|
1744
|
-
input: () => "font-mono",
|
|
1745
|
-
toggleButton: () => "absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 dark:hover:text-gray-200",
|
|
1746
|
-
strengthMeter: () => "mt-2 h-2 bg-gray-200 dark:bg-gray-700 rounded-full overflow-hidden",
|
|
1747
|
-
strengthBar: () => "h-full transition-all duration-300",
|
|
1748
|
-
strengthWeak: () => "bg-red-500 w-1/4",
|
|
1749
|
-
strengthMedium: () => "bg-yellow-500 w-1/2",
|
|
1750
|
-
strengthStrong: () => "bg-green-500 w-3/4",
|
|
1751
|
-
strengthVeryStrong: () => "bg-green-600 w-full"
|
|
1752
|
-
},
|
|
1753
|
-
// Conditional fields and dynamic forms
|
|
1754
|
-
conditional: {
|
|
1755
|
-
container: () => "space-y-4",
|
|
1756
|
-
trigger: () => "flex items-center space-x-2",
|
|
1757
|
-
content: () => "ml-6 mt-4 pl-4 border-l-2 border-gray-200 dark:border-gray-700 space-y-4",
|
|
1758
|
-
contentVisible: () => "opacity-100 max-h-none",
|
|
1759
|
-
contentHidden: () => "opacity-0 max-h-0 overflow-hidden"
|
|
1760
|
-
}
|
|
1761
|
-
},
|
|
1762
|
-
// Notifications & Feedback variants
|
|
1763
|
-
notifications: {
|
|
1764
|
-
// Toast notifications
|
|
1765
|
-
toast: {
|
|
1766
|
-
container: () => "fixed top-4 right-4 z-50 max-w-sm w-full transform transition-all duration-300 ease-out",
|
|
1767
|
-
content: () => "bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg shadow-lg p-4",
|
|
1768
|
-
// Toast with icon and content
|
|
1769
|
-
wrapper: () => "flex items-start space-x-3",
|
|
1770
|
-
icon: () => "flex-shrink-0 mt-0.5",
|
|
1771
|
-
successIcon: () => "h-5 w-5 text-green-500",
|
|
1772
|
-
errorIcon: () => "h-5 w-5 text-red-500",
|
|
1773
|
-
warningIcon: () => "h-5 w-5 text-yellow-500",
|
|
1774
|
-
infoIcon: () => "h-5 w-5 text-blue-500",
|
|
1775
|
-
text: () => "flex-1 min-w-0",
|
|
1776
|
-
title: () => "text-sm font-medium text-gray-900 dark:text-gray-100",
|
|
1777
|
-
message: () => "mt-1 text-sm text-gray-500 dark:text-gray-400",
|
|
1778
|
-
action: () => "mt-2 text-sm text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200 cursor-pointer",
|
|
1779
|
-
closeButton: () => "ml-4 flex-shrink-0 text-gray-400 hover:text-gray-500 dark:hover:text-gray-300 cursor-pointer",
|
|
1780
|
-
// Toast variants by type
|
|
1781
|
-
success: () => "border-green-200 dark:border-green-800 bg-green-50 dark:bg-green-900/20",
|
|
1782
|
-
error: () => "border-red-200 dark:border-red-800 bg-red-50 dark:bg-red-900/20",
|
|
1783
|
-
warning: () => "border-yellow-200 dark:border-yellow-800 bg-yellow-50 dark:bg-yellow-900/20",
|
|
1784
|
-
info: () => "border-blue-200 dark:border-blue-800 bg-blue-50 dark:bg-blue-900/20"
|
|
1785
|
-
},
|
|
1786
|
-
// Progress indicators
|
|
1787
|
-
progress: {
|
|
1788
|
-
container: () => "w-full",
|
|
1789
|
-
content: () => "flex items-center justify-between mb-2",
|
|
1790
|
-
text: () => "flex-1 min-w-0 mr-4",
|
|
1791
|
-
title: () => "text-sm font-medium text-gray-700 dark:text-gray-300",
|
|
1792
|
-
message: () => "text-xs text-gray-500 dark:text-gray-400 mt-1",
|
|
1793
|
-
// Progress bar
|
|
1794
|
-
bar: () => "w-full bg-gray-200 dark:bg-gray-700 rounded-full h-2 overflow-hidden",
|
|
1795
|
-
fill: () => "h-full bg-blue-600 rounded-full transition-all duration-300",
|
|
1796
|
-
fillSuccess: () => "h-full bg-green-600 rounded-full transition-all duration-300",
|
|
1797
|
-
fillError: () => "h-full bg-red-600 rounded-full transition-all duration-300",
|
|
1798
|
-
fillWarning: () => "h-full bg-yellow-600 rounded-full transition-all duration-300",
|
|
1799
|
-
percentage: () => "text-sm text-gray-500 dark:text-gray-400 ml-2 flex-shrink-0",
|
|
1800
|
-
// Circular progress
|
|
1801
|
-
circle: () => "relative w-8 h-8",
|
|
1802
|
-
circleTrack: () => "absolute inset-0 rounded-full border-2 border-gray-200 dark:border-gray-700",
|
|
1803
|
-
circleFill: () => "absolute inset-0 rounded-full border-2 border-transparent transition-all duration-300",
|
|
1804
|
-
// Loading spinners
|
|
1805
|
-
spinner: () => "animate-spin rounded-full border-2 border-transparent",
|
|
1806
|
-
spinnerPrimary: () => "border-t-blue-600 border-r-blue-600",
|
|
1807
|
-
spinnerSuccess: () => "border-t-green-600 border-r-green-600",
|
|
1808
|
-
spinnerError: () => "border-t-red-600 border-r-red-600",
|
|
1809
|
-
spinnerWarning: () => "border-t-yellow-600 border-r-yellow-600"
|
|
1810
|
-
},
|
|
1811
|
-
// Transaction status
|
|
1812
|
-
transaction: {
|
|
1813
|
-
container: () => "border border-gray-200 dark:border-gray-700 rounded-lg p-4 bg-white dark:bg-gray-800",
|
|
1814
|
-
wrapper: () => "flex items-start space-x-3",
|
|
1815
|
-
icon: () => "w-10 h-10 rounded-full flex items-center justify-center flex-shrink-0",
|
|
1816
|
-
iconPending: () => "bg-yellow-100 dark:bg-yellow-900/30 text-yellow-600 dark:text-yellow-400",
|
|
1817
|
-
iconConfirming: () => "bg-blue-100 dark:bg-blue-900/30 text-blue-600 dark:text-blue-400",
|
|
1818
|
-
iconConfirmed: () => "bg-green-100 dark:bg-green-900/30 text-green-600 dark:text-green-400",
|
|
1819
|
-
iconFailed: () => "bg-red-100 dark:bg-red-900/30 text-red-600 dark:text-red-400",
|
|
1820
|
-
content: () => "flex-1 min-w-0",
|
|
1821
|
-
header: () => "flex items-center justify-between mb-1",
|
|
1822
|
-
type: () => "text-sm font-medium text-gray-900 dark:text-gray-100",
|
|
1823
|
-
status: () => "px-2 py-1 text-xs rounded-full font-medium",
|
|
1824
|
-
statusPending: () => "bg-yellow-100 text-yellow-800 dark:bg-yellow-900/30 dark:text-yellow-300",
|
|
1825
|
-
statusConfirming: () => "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300",
|
|
1826
|
-
statusConfirmed: () => "bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-300",
|
|
1827
|
-
statusFailed: () => "bg-red-100 text-red-800 dark:bg-red-900/30 dark:text-red-300",
|
|
1828
|
-
details: () => "text-xs text-gray-500 dark:text-gray-400 mt-1",
|
|
1829
|
-
hash: () => "font-mono text-xs text-gray-500 dark:text-gray-400",
|
|
1830
|
-
amount: () => "text-sm text-gray-600 dark:text-gray-400 ml-2",
|
|
1831
|
-
confirmations: () => "mt-2 text-xs text-gray-500 dark:text-gray-400",
|
|
1832
|
-
confirmationBar: () => "w-full bg-gray-200 dark:bg-gray-700 rounded-full h-1.5 mt-1",
|
|
1833
|
-
confirmationProgress: () => "h-1.5 bg-blue-600 rounded-full transition-all duration-300"
|
|
1834
|
-
},
|
|
1835
|
-
// System status indicators
|
|
1836
|
-
status: {
|
|
1837
|
-
indicator: () => "flex items-center space-x-2",
|
|
1838
|
-
dot: () => "w-3 h-3 rounded-full flex-shrink-0",
|
|
1839
|
-
text: () => "text-sm font-medium",
|
|
1840
|
-
// Status variants
|
|
1841
|
-
online: () => "text-green-700 dark:text-green-300",
|
|
1842
|
-
onlineDot: () => "bg-green-500",
|
|
1843
|
-
degraded: () => "text-yellow-700 dark:text-yellow-300",
|
|
1844
|
-
degradedDot: () => "bg-yellow-500",
|
|
1845
|
-
offline: () => "text-red-700 dark:text-red-300",
|
|
1846
|
-
offlineDot: () => "bg-red-500",
|
|
1847
|
-
// Animated indicators
|
|
1848
|
-
pulse: () => "animate-pulse",
|
|
1849
|
-
// Connection status
|
|
1850
|
-
connection: () => "flex items-center justify-between p-3 bg-gray-50 dark:bg-gray-800 rounded-lg",
|
|
1851
|
-
connectionLabel: () => "text-sm font-medium text-gray-900 dark:text-gray-100",
|
|
1852
|
-
connectionDescription: () => "text-xs text-gray-500 dark:text-gray-400",
|
|
1853
|
-
connectionStatus: () => "px-2 py-1 text-xs rounded-full font-medium"
|
|
1854
|
-
},
|
|
1855
|
-
// Notification badges
|
|
1856
|
-
badge: {
|
|
1857
|
-
container: () => "relative inline-block",
|
|
1858
|
-
badge: () => "absolute -top-1 -right-1 text-white text-xs rounded-full flex items-center justify-center font-medium",
|
|
1859
|
-
// Size variants
|
|
1860
|
-
small: () => "h-3 w-3 text-xs",
|
|
1861
|
-
medium: () => "h-4 w-4 text-xs",
|
|
1862
|
-
large: () => "h-5 w-5 text-xs",
|
|
1863
|
-
// Color variants
|
|
1864
|
-
primary: () => "bg-blue-500",
|
|
1865
|
-
success: () => "bg-green-500",
|
|
1866
|
-
error: () => "bg-red-500",
|
|
1867
|
-
warning: () => "bg-yellow-500",
|
|
1868
|
-
// Special states
|
|
1869
|
-
dot: () => "w-2 h-2 rounded-full animate-pulse",
|
|
1870
|
-
count: () => "min-w-[1rem] px-1",
|
|
1871
|
-
countOverflow: () => "min-w-[1.25rem] px-1"
|
|
1872
|
-
// for 99+
|
|
1873
|
-
},
|
|
1874
|
-
// Contextual feedback
|
|
1875
|
-
feedback: {
|
|
1876
|
-
container: () => "p-3 rounded-lg border",
|
|
1877
|
-
content: () => "flex items-start",
|
|
1878
|
-
icon: () => "flex-shrink-0 mr-2 mt-0.5",
|
|
1879
|
-
text: () => "flex-1 min-w-0",
|
|
1880
|
-
title: () => "text-sm font-medium",
|
|
1881
|
-
message: () => "text-sm mt-1",
|
|
1882
|
-
action: () => "ml-auto flex-shrink-0",
|
|
1883
|
-
// Feedback variants
|
|
1884
|
-
success: () => "bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800",
|
|
1885
|
-
successIcon: () => "h-4 w-4 text-green-600 dark:text-green-400",
|
|
1886
|
-
successTitle: () => "text-green-800 dark:text-green-200",
|
|
1887
|
-
successMessage: () => "text-green-700 dark:text-green-300",
|
|
1888
|
-
error: () => "bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800",
|
|
1889
|
-
errorIcon: () => "h-4 w-4 text-red-600 dark:text-red-400",
|
|
1890
|
-
errorTitle: () => "text-red-800 dark:text-red-200",
|
|
1891
|
-
errorMessage: () => "text-red-700 dark:text-red-300",
|
|
1892
|
-
warning: () => "bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-800",
|
|
1893
|
-
warningIcon: () => "h-4 w-4 text-yellow-600 dark:text-yellow-400",
|
|
1894
|
-
warningTitle: () => "text-yellow-800 dark:text-yellow-200",
|
|
1895
|
-
warningMessage: () => "text-yellow-700 dark:text-yellow-300",
|
|
1896
|
-
info: () => "bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800",
|
|
1897
|
-
infoIcon: () => "h-4 w-4 text-blue-600 dark:text-blue-400",
|
|
1898
|
-
infoTitle: () => "text-blue-800 dark:text-blue-200",
|
|
1899
|
-
infoMessage: () => "text-blue-700 dark:text-blue-300",
|
|
1900
|
-
neutral: () => "bg-gray-50 dark:bg-gray-800 border-gray-200 dark:border-gray-700",
|
|
1901
|
-
neutralIcon: () => "h-4 w-4 text-gray-600 dark:text-gray-400",
|
|
1902
|
-
neutralTitle: () => "text-gray-900 dark:text-gray-100",
|
|
1903
|
-
neutralMessage: () => "text-gray-600 dark:text-gray-400"
|
|
1904
|
-
},
|
|
1905
|
-
// Alert banners (different from alerts component)
|
|
1906
|
-
banner: {
|
|
1907
|
-
container: () => "border-l-4 p-4",
|
|
1908
|
-
content: () => "flex items-center justify-between",
|
|
1909
|
-
text: () => "flex items-center",
|
|
1910
|
-
icon: () => "flex-shrink-0 mr-3",
|
|
1911
|
-
message: () => "text-sm font-medium",
|
|
1912
|
-
action: () => "flex-shrink-0 ml-4",
|
|
1913
|
-
closeButton: () => "text-gray-400 hover:text-gray-500 dark:hover:text-gray-300",
|
|
1914
|
-
// Banner variants
|
|
1915
|
-
success: () => "bg-green-50 dark:bg-green-900/20 border-green-400",
|
|
1916
|
-
error: () => "bg-red-50 dark:bg-red-900/20 border-red-400",
|
|
1917
|
-
warning: () => "bg-yellow-50 dark:bg-yellow-900/20 border-yellow-400",
|
|
1918
|
-
info: () => "bg-blue-50 dark:bg-blue-900/20 border-blue-400"
|
|
1919
|
-
},
|
|
1920
|
-
// Loading states
|
|
1921
|
-
loading: {
|
|
1922
|
-
overlay: () => "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50",
|
|
1923
|
-
container: () => "bg-white dark:bg-gray-800 rounded-lg p-6 max-w-sm mx-4",
|
|
1924
|
-
content: () => "text-center",
|
|
1925
|
-
spinner: () => "mx-auto mb-4",
|
|
1926
|
-
title: () => "text-lg font-medium text-gray-900 dark:text-gray-100 mb-2",
|
|
1927
|
-
message: () => "text-sm text-gray-500 dark:text-gray-400",
|
|
1928
|
-
// Inline loading
|
|
1929
|
-
inline: () => "flex items-center space-x-2",
|
|
1930
|
-
inlineSpinner: () => "flex-shrink-0",
|
|
1931
|
-
inlineText: () => "text-sm text-gray-600 dark:text-gray-400"
|
|
1932
|
-
}
|
|
1933
|
-
},
|
|
1934
|
-
// Layout & Spacing variants
|
|
1935
|
-
layout: {
|
|
1936
|
-
// Container variants
|
|
1937
|
-
container: {
|
|
1938
|
-
narrow: () => "max-w-2xl mx-auto px-4 sm:px-6",
|
|
1939
|
-
default: () => "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",
|
|
1940
|
-
wide: () => "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",
|
|
1941
|
-
full: () => "w-full px-4 sm:px-6 lg:px-8",
|
|
1942
|
-
fluid: () => "w-full"
|
|
1943
|
-
},
|
|
1944
|
-
// Grid layouts
|
|
1945
|
-
grid: {
|
|
1946
|
-
// Responsive columns
|
|
1947
|
-
responsive: {
|
|
1948
|
-
oneToTwo: () => "grid grid-cols-1 md:grid-cols-2 gap-4 md:gap-6",
|
|
1949
|
-
oneToThree: () => "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 md:gap-6",
|
|
1950
|
-
oneToFour: () => "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4 md:gap-6",
|
|
1951
|
-
twoToFour: () => "grid grid-cols-2 md:grid-cols-4 gap-4 md:gap-6",
|
|
1952
|
-
threeToSix: () => "grid grid-cols-3 md:grid-cols-6 gap-4 md:gap-6"
|
|
1953
|
-
},
|
|
1954
|
-
// Fixed columns with responsive gaps
|
|
1955
|
-
fixed: {
|
|
1956
|
-
one: () => "grid grid-cols-1 gap-4 md:gap-6",
|
|
1957
|
-
two: () => "grid grid-cols-2 gap-4 md:gap-6",
|
|
1958
|
-
three: () => "grid grid-cols-3 gap-4 md:gap-6",
|
|
1959
|
-
four: () => "grid grid-cols-4 gap-4 md:gap-6",
|
|
1960
|
-
five: () => "grid grid-cols-5 gap-4 md:gap-6",
|
|
1961
|
-
six: () => "grid grid-cols-6 gap-4 md:gap-6"
|
|
1962
|
-
},
|
|
1963
|
-
// Auto-fit patterns
|
|
1964
|
-
autoFit: {
|
|
1965
|
-
small: () => "grid grid-cols-[repeat(auto-fit,minmax(200px,1fr))] gap-4 md:gap-6",
|
|
1966
|
-
medium: () => "grid grid-cols-[repeat(auto-fit,minmax(300px,1fr))] gap-4 md:gap-6",
|
|
1967
|
-
large: () => "grid grid-cols-[repeat(auto-fit,minmax(400px,1fr))] gap-4 md:gap-6"
|
|
1968
|
-
},
|
|
1969
|
-
// Dashboard layouts
|
|
1970
|
-
dashboard: {
|
|
1971
|
-
sidebar: () => "grid grid-cols-1 lg:grid-cols-4 gap-6",
|
|
1972
|
-
sidebarContent: () => "lg:col-span-3",
|
|
1973
|
-
sidebarAside: () => "lg:col-span-1",
|
|
1974
|
-
twoColumn: () => "grid grid-cols-1 lg:grid-cols-2 gap-6",
|
|
1975
|
-
threeColumn: () => "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
|
|
1976
|
-
// Masonry-style layouts
|
|
1977
|
-
masonry: () => "columns-1 md:columns-2 lg:columns-3 xl:columns-4 gap-6 space-y-6",
|
|
1978
|
-
masonryItem: () => "break-inside-avoid mb-6"
|
|
1979
|
-
}
|
|
1980
|
-
},
|
|
1981
|
-
// Flexbox patterns
|
|
1982
|
-
flex: {
|
|
1983
|
-
// Basic layouts
|
|
1984
|
-
row: () => "flex flex-row",
|
|
1985
|
-
column: () => "flex flex-col",
|
|
1986
|
-
rowReverse: () => "flex flex-row-reverse",
|
|
1987
|
-
columnReverse: () => "flex flex-col-reverse",
|
|
1988
|
-
// Common patterns
|
|
1989
|
-
center: () => "flex items-center justify-center",
|
|
1990
|
-
centerVertical: () => "flex items-center",
|
|
1991
|
-
centerHorizontal: () => "flex justify-center",
|
|
1992
|
-
spaceBetween: () => "flex items-center justify-between",
|
|
1993
|
-
spaceAround: () => "flex items-center justify-around",
|
|
1994
|
-
spaceEvenly: () => "flex items-center justify-evenly",
|
|
1995
|
-
// Responsive flex direction
|
|
1996
|
-
responsiveColumn: () => "flex flex-col md:flex-row",
|
|
1997
|
-
responsiveRow: () => "flex flex-row md:flex-col",
|
|
1998
|
-
// Common component layouts
|
|
1999
|
-
header: () => "flex items-center justify-between w-full",
|
|
2000
|
-
toolbar: () => "flex items-center space-x-2",
|
|
2001
|
-
buttonGroup: () => "flex items-center space-x-2",
|
|
2002
|
-
iconText: () => "flex items-center space-x-2",
|
|
2003
|
-
// List layouts
|
|
2004
|
-
listItem: () => "flex items-start space-x-3",
|
|
2005
|
-
listItemCenter: () => "flex items-center space-x-3",
|
|
2006
|
-
listItemEnd: () => "flex items-end space-x-3",
|
|
2007
|
-
// Card content layouts
|
|
2008
|
-
cardContent: () => "flex flex-col space-y-4",
|
|
2009
|
-
cardActions: () => "flex items-center justify-end space-x-2 pt-4",
|
|
2010
|
-
cardHeader: () => "flex items-start justify-between",
|
|
2011
|
-
// Form layouts
|
|
2012
|
-
formRow: () => "flex flex-col sm:flex-row sm:items-center sm:space-x-4 space-y-2 sm:space-y-0",
|
|
2013
|
-
formActions: () => "flex flex-col sm:flex-row-reverse sm:justify-start space-y-2 sm:space-y-0 sm:space-x-2 sm:space-x-reverse",
|
|
2014
|
-
// Wrap variants
|
|
2015
|
-
wrap: () => "flex flex-wrap",
|
|
2016
|
-
nowrap: () => "flex flex-nowrap",
|
|
2017
|
-
wrapReverse: () => "flex flex-wrap-reverse",
|
|
2018
|
-
// Gap utilities (for flex layouts)
|
|
2019
|
-
gapSm: () => "gap-2",
|
|
2020
|
-
gapMd: () => "gap-4",
|
|
2021
|
-
gapLg: () => "gap-6",
|
|
2022
|
-
gapXl: () => "gap-8"
|
|
2023
|
-
},
|
|
2024
|
-
// Spacing utilities
|
|
2025
|
-
spacing: {
|
|
2026
|
-
// Margin utilities
|
|
2027
|
-
margin: {
|
|
2028
|
-
none: () => "m-0",
|
|
2029
|
-
xs: () => "m-1",
|
|
2030
|
-
sm: () => "m-2",
|
|
2031
|
-
md: () => "m-4",
|
|
2032
|
-
lg: () => "m-6",
|
|
2033
|
-
xl: () => "m-8",
|
|
2034
|
-
xxl: () => "m-12",
|
|
2035
|
-
// Directional margins
|
|
2036
|
-
top: {
|
|
2037
|
-
none: () => "mt-0",
|
|
2038
|
-
xs: () => "mt-1",
|
|
2039
|
-
sm: () => "mt-2",
|
|
2040
|
-
md: () => "mt-4",
|
|
2041
|
-
lg: () => "mt-6",
|
|
2042
|
-
xl: () => "mt-8",
|
|
2043
|
-
xxl: () => "mt-12"
|
|
2044
|
-
},
|
|
2045
|
-
bottom: {
|
|
2046
|
-
none: () => "mb-0",
|
|
2047
|
-
xs: () => "mb-1",
|
|
2048
|
-
sm: () => "mb-2",
|
|
2049
|
-
md: () => "mb-4",
|
|
2050
|
-
lg: () => "mb-6",
|
|
2051
|
-
xl: () => "mb-8",
|
|
2052
|
-
xxl: () => "mb-12"
|
|
2053
|
-
},
|
|
2054
|
-
left: {
|
|
2055
|
-
none: () => "ml-0",
|
|
2056
|
-
xs: () => "ml-1",
|
|
2057
|
-
sm: () => "ml-2",
|
|
2058
|
-
md: () => "ml-4",
|
|
2059
|
-
lg: () => "ml-6",
|
|
2060
|
-
xl: () => "ml-8",
|
|
2061
|
-
xxl: () => "ml-12"
|
|
2062
|
-
},
|
|
2063
|
-
right: {
|
|
2064
|
-
none: () => "mr-0",
|
|
2065
|
-
xs: () => "mr-1",
|
|
2066
|
-
sm: () => "mr-2",
|
|
2067
|
-
md: () => "mr-4",
|
|
2068
|
-
lg: () => "mr-6",
|
|
2069
|
-
xl: () => "mr-8",
|
|
2070
|
-
xxl: () => "mr-12"
|
|
2071
|
-
},
|
|
2072
|
-
horizontal: {
|
|
2073
|
-
none: () => "mx-0",
|
|
2074
|
-
xs: () => "mx-1",
|
|
2075
|
-
sm: () => "mx-2",
|
|
2076
|
-
md: () => "mx-4",
|
|
2077
|
-
lg: () => "mx-6",
|
|
2078
|
-
xl: () => "mx-8",
|
|
2079
|
-
xxl: () => "mx-12",
|
|
2080
|
-
auto: () => "mx-auto"
|
|
2081
|
-
},
|
|
2082
|
-
vertical: {
|
|
2083
|
-
none: () => "my-0",
|
|
2084
|
-
xs: () => "my-1",
|
|
2085
|
-
sm: () => "my-2",
|
|
2086
|
-
md: () => "my-4",
|
|
2087
|
-
lg: () => "my-6",
|
|
2088
|
-
xl: () => "my-8",
|
|
2089
|
-
xxl: () => "my-12"
|
|
2090
|
-
}
|
|
2091
|
-
},
|
|
2092
|
-
// Padding utilities
|
|
2093
|
-
padding: {
|
|
2094
|
-
none: () => "p-0",
|
|
2095
|
-
xs: () => "p-1",
|
|
2096
|
-
sm: () => "p-2",
|
|
2097
|
-
md: () => "p-4",
|
|
2098
|
-
lg: () => "p-6",
|
|
2099
|
-
xl: () => "p-8",
|
|
2100
|
-
xxl: () => "p-12",
|
|
2101
|
-
// Directional padding
|
|
2102
|
-
top: {
|
|
2103
|
-
none: () => "pt-0",
|
|
2104
|
-
xs: () => "pt-1",
|
|
2105
|
-
sm: () => "pt-2",
|
|
2106
|
-
md: () => "pt-4",
|
|
2107
|
-
lg: () => "pt-6",
|
|
2108
|
-
xl: () => "pt-8",
|
|
2109
|
-
xxl: () => "pt-12"
|
|
2110
|
-
},
|
|
2111
|
-
bottom: {
|
|
2112
|
-
none: () => "pb-0",
|
|
2113
|
-
xs: () => "pb-1",
|
|
2114
|
-
sm: () => "pb-2",
|
|
2115
|
-
md: () => "pb-4",
|
|
2116
|
-
lg: () => "pb-6",
|
|
2117
|
-
xl: () => "pb-8",
|
|
2118
|
-
xxl: () => "pb-12"
|
|
2119
|
-
},
|
|
2120
|
-
left: {
|
|
2121
|
-
none: () => "pl-0",
|
|
2122
|
-
xs: () => "pl-1",
|
|
2123
|
-
sm: () => "pl-2",
|
|
2124
|
-
md: () => "pl-4",
|
|
2125
|
-
lg: () => "pl-6",
|
|
2126
|
-
xl: () => "pl-8",
|
|
2127
|
-
xxl: () => "pl-12"
|
|
2128
|
-
},
|
|
2129
|
-
right: {
|
|
2130
|
-
none: () => "pr-0",
|
|
2131
|
-
xs: () => "pr-1",
|
|
2132
|
-
sm: () => "pr-2",
|
|
2133
|
-
md: () => "pr-4",
|
|
2134
|
-
lg: () => "pr-6",
|
|
2135
|
-
xl: () => "pr-8",
|
|
2136
|
-
xxl: () => "pr-12"
|
|
2137
|
-
},
|
|
2138
|
-
horizontal: {
|
|
2139
|
-
none: () => "px-0",
|
|
2140
|
-
xs: () => "px-1",
|
|
2141
|
-
sm: () => "px-2",
|
|
2142
|
-
md: () => "px-4",
|
|
2143
|
-
lg: () => "px-6",
|
|
2144
|
-
xl: () => "px-8",
|
|
2145
|
-
xxl: () => "px-12"
|
|
2146
|
-
},
|
|
2147
|
-
vertical: {
|
|
2148
|
-
none: () => "py-0",
|
|
2149
|
-
xs: () => "py-1",
|
|
2150
|
-
sm: () => "py-2",
|
|
2151
|
-
md: () => "py-4",
|
|
2152
|
-
lg: () => "py-6",
|
|
2153
|
-
xl: () => "py-8",
|
|
2154
|
-
xxl: () => "py-12"
|
|
2155
|
-
}
|
|
2156
|
-
},
|
|
2157
|
-
// Common spacing combinations
|
|
2158
|
-
section: () => "py-12 md:py-16 lg:py-20",
|
|
2159
|
-
subsection: () => "py-8 md:py-12",
|
|
2160
|
-
cardSpacing: () => "p-6 md:p-8",
|
|
2161
|
-
listSpacing: () => "space-y-4",
|
|
2162
|
-
buttonSpacing: () => "space-x-2"
|
|
2163
|
-
},
|
|
2164
|
-
// Web3-specific layouts
|
|
2165
|
-
web3: {
|
|
2166
|
-
// Wallet interface layouts
|
|
2167
|
-
wallet: {
|
|
2168
|
-
connect: () => "flex flex-col items-center space-y-4 p-6",
|
|
2169
|
-
connected: () => "flex items-center justify-between p-4 bg-green-50 dark:bg-green-900/20 rounded-lg",
|
|
2170
|
-
balance: () => "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",
|
|
2171
|
-
portfolio: () => "grid grid-cols-1 lg:grid-cols-3 gap-6"
|
|
2172
|
-
},
|
|
2173
|
-
// Transaction layouts
|
|
2174
|
-
transaction: {
|
|
2175
|
-
form: () => "space-y-6",
|
|
2176
|
-
preview: () => "bg-gray-50 dark:bg-gray-800 rounded-lg p-4 space-y-3",
|
|
2177
|
-
history: () => "space-y-2",
|
|
2178
|
-
historyItem: () => "flex items-center justify-between p-3 bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700",
|
|
2179
|
-
details: () => "grid grid-cols-1 md:grid-cols-2 gap-4"
|
|
2180
|
-
},
|
|
2181
|
-
// NFT layouts
|
|
2182
|
-
nft: {
|
|
2183
|
-
gallery: () => "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 md:gap-6",
|
|
2184
|
-
card: () => "bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 overflow-hidden",
|
|
2185
|
-
cardContent: () => "p-4 space-y-3",
|
|
2186
|
-
cardActions: () => "flex items-center justify-between pt-3 border-t border-gray-200 dark:border-gray-700",
|
|
2187
|
-
// Collection view
|
|
2188
|
-
collection: () => "grid grid-cols-1 lg:grid-cols-4 gap-6",
|
|
2189
|
-
collectionSidebar: () => "lg:col-span-1 space-y-6",
|
|
2190
|
-
collectionGrid: () => "lg:col-span-3"
|
|
2191
|
-
},
|
|
2192
|
-
// DeFi layouts
|
|
2193
|
-
defi: {
|
|
2194
|
-
dashboard: () => "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
|
|
2195
|
-
pool: () => "bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 p-6",
|
|
2196
|
-
poolStats: () => "grid grid-cols-2 md:grid-cols-4 gap-4",
|
|
2197
|
-
liquidity: () => "space-y-4",
|
|
2198
|
-
farming: () => "grid grid-cols-1 lg:grid-cols-2 gap-6"
|
|
2199
|
-
},
|
|
2200
|
-
// DAO layouts
|
|
2201
|
-
dao: {
|
|
2202
|
-
governance: () => "grid grid-cols-1 lg:grid-cols-3 gap-6",
|
|
2203
|
-
proposal: () => "bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-700 p-6",
|
|
2204
|
-
proposalHeader: () => "flex items-start justify-between mb-6",
|
|
2205
|
-
proposalContent: () => "space-y-6",
|
|
2206
|
-
voting: () => "grid grid-cols-1 md:grid-cols-2 gap-4"
|
|
2207
|
-
}
|
|
2208
|
-
},
|
|
2209
|
-
// Positioning utilities
|
|
2210
|
-
position: {
|
|
2211
|
-
relative: () => "relative",
|
|
2212
|
-
absolute: () => "absolute",
|
|
2213
|
-
fixed: () => "fixed",
|
|
2214
|
-
sticky: () => "sticky",
|
|
2215
|
-
// Common absolute positions
|
|
2216
|
-
topLeft: () => "absolute top-0 left-0",
|
|
2217
|
-
topRight: () => "absolute top-0 right-0",
|
|
2218
|
-
bottomLeft: () => "absolute bottom-0 left-0",
|
|
2219
|
-
bottomRight: () => "absolute bottom-0 right-0",
|
|
2220
|
-
center: () => "absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2",
|
|
2221
|
-
// Overlay positions
|
|
2222
|
-
overlay: () => "fixed inset-0 z-50",
|
|
2223
|
-
backdrop: () => "fixed inset-0 bg-black bg-opacity-50 z-40"
|
|
2224
|
-
},
|
|
2225
|
-
// Overflow utilities
|
|
2226
|
-
overflow: {
|
|
2227
|
-
hidden: () => "overflow-hidden",
|
|
2228
|
-
auto: () => "overflow-auto",
|
|
2229
|
-
scroll: () => "overflow-scroll",
|
|
2230
|
-
xHidden: () => "overflow-x-hidden",
|
|
2231
|
-
yHidden: () => "overflow-y-hidden",
|
|
2232
|
-
xAuto: () => "overflow-x-auto",
|
|
2233
|
-
yAuto: () => "overflow-y-auto",
|
|
2234
|
-
xScroll: () => "overflow-x-scroll",
|
|
2235
|
-
yScroll: () => "overflow-y-scroll"
|
|
2236
|
-
},
|
|
2237
|
-
// Z-index utilities
|
|
2238
|
-
zIndex: {
|
|
2239
|
-
base: () => "z-0",
|
|
2240
|
-
dropdown: () => "z-10",
|
|
2241
|
-
sticky: () => "z-20",
|
|
2242
|
-
modal: () => "z-50",
|
|
2243
|
-
popover: () => "z-60",
|
|
2244
|
-
tooltip: () => "z-70"
|
|
2245
|
-
},
|
|
2246
|
-
// Display utilities
|
|
2247
|
-
display: {
|
|
2248
|
-
block: () => "block",
|
|
2249
|
-
inline: () => "inline",
|
|
2250
|
-
inlineBlock: () => "inline-block",
|
|
2251
|
-
flex: () => "flex",
|
|
2252
|
-
inlineFlex: () => "inline-flex",
|
|
2253
|
-
grid: () => "grid",
|
|
2254
|
-
inlineGrid: () => "inline-grid",
|
|
2255
|
-
hidden: () => "hidden",
|
|
2256
|
-
// Responsive display
|
|
2257
|
-
hiddenMobile: () => "hidden sm:block",
|
|
2258
|
-
hiddenTablet: () => "hidden md:block",
|
|
2259
|
-
hiddenDesktop: () => "block md:hidden",
|
|
2260
|
-
mobileOnly: () => "block sm:hidden",
|
|
2261
|
-
tabletOnly: () => "hidden sm:block md:hidden",
|
|
2262
|
-
desktopOnly: () => "hidden md:block"
|
|
2263
|
-
},
|
|
2264
|
-
// Common layout patterns
|
|
2265
|
-
patterns: {
|
|
2266
|
-
// Page layouts
|
|
2267
|
-
fullHeight: () => "min-h-screen flex flex-col",
|
|
2268
|
-
centeredPage: () => "min-h-screen flex items-center justify-center",
|
|
2269
|
-
// Header patterns
|
|
2270
|
-
header: () => "sticky top-0 z-40 bg-white dark:bg-gray-900 border-b border-gray-200 dark:border-gray-700",
|
|
2271
|
-
headerContent: () => "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between",
|
|
2272
|
-
// Sidebar patterns
|
|
2273
|
-
sidebarLayout: () => "flex h-screen bg-gray-100 dark:bg-gray-900",
|
|
2274
|
-
sidebar: () => "w-64 bg-white dark:bg-gray-800 border-r border-gray-200 dark:border-gray-700",
|
|
2275
|
-
mainContent: () => "flex-1 flex flex-col overflow-hidden",
|
|
2276
|
-
// Modal patterns
|
|
2277
|
-
modalOverlay: () => "fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center p-4 z-50",
|
|
2278
|
-
modalContent: () => "bg-white dark:bg-gray-800 rounded-lg shadow-xl max-w-lg w-full max-h-[90vh] overflow-hidden",
|
|
2279
|
-
// Card patterns
|
|
2280
|
-
cardGrid: () => "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
|
|
2281
|
-
cardStack: () => "space-y-6",
|
|
2282
|
-
// List patterns
|
|
2283
|
-
dividedList: () => "divide-y divide-gray-200 dark:divide-gray-700",
|
|
2284
|
-
spacedList: () => "space-y-4",
|
|
2285
|
-
// Form patterns
|
|
2286
|
-
formStack: () => "space-y-6",
|
|
2287
|
-
formGrid: () => "grid grid-cols-1 md:grid-cols-2 gap-6",
|
|
2288
|
-
fieldset: () => "space-y-4",
|
|
2289
|
-
// Loading patterns
|
|
2290
|
-
loadingOverlay: () => "absolute inset-0 bg-white bg-opacity-75 dark:bg-gray-900 dark:bg-opacity-75 flex items-center justify-center",
|
|
2291
|
-
loadingInline: () => "flex items-center space-x-2",
|
|
2292
|
-
// Empty state patterns
|
|
2293
|
-
emptyState: () => "text-center py-12",
|
|
2294
|
-
emptyStateIcon: () => "mx-auto h-12 w-12 text-gray-400 mb-4"
|
|
2295
|
-
}
|
|
2296
|
-
},
|
|
2297
|
-
// Table variants
|
|
2298
|
-
table: {
|
|
2299
|
-
container: () => "overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800",
|
|
2300
|
-
table: () => "min-w-full divide-y divide-gray-200 dark:divide-gray-700",
|
|
2301
|
-
header: {
|
|
2302
|
-
row: () => "bg-gray-50 dark:bg-gray-900/50",
|
|
2303
|
-
cell: () => "px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider",
|
|
2304
|
-
sortable: () => "px-6 py-3 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800 select-none group"
|
|
2305
|
-
},
|
|
2306
|
-
body: {
|
|
2307
|
-
row: () => "bg-white dark:bg-gray-800 hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors duration-200",
|
|
2308
|
-
rowSelected: () => "bg-blue-50 dark:bg-blue-900/20 hover:bg-blue-100 dark:hover:bg-blue-900/30 transition-colors duration-200",
|
|
2309
|
-
rowClickable: () => "bg-white dark:bg-gray-800 hover:bg-gray-50 dark:hover:bg-gray-700/50 transition-colors duration-200 cursor-pointer",
|
|
2310
|
-
cell: () => "px-6 py-4 whitespace-nowrap text-sm text-gray-900 dark:text-gray-100",
|
|
2311
|
-
cellMuted: () => "px-6 py-4 whitespace-nowrap text-sm text-gray-500 dark:text-gray-400",
|
|
2312
|
-
cellAction: () => "px-6 py-4 whitespace-nowrap text-right text-sm font-medium"
|
|
2313
|
-
},
|
|
2314
|
-
// Compact table variants
|
|
2315
|
-
compact: {
|
|
2316
|
-
header: {
|
|
2317
|
-
cell: () => "px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider",
|
|
2318
|
-
sortable: () => "px-4 py-2 text-left text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wider cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800 select-none group"
|
|
2319
|
-
},
|
|
2320
|
-
body: {
|
|
2321
|
-
cell: () => "px-4 py-3 whitespace-nowrap text-sm text-gray-900 dark:text-gray-100",
|
|
2322
|
-
cellMuted: () => "px-4 py-3 whitespace-nowrap text-sm text-gray-500 dark:text-gray-400",
|
|
2323
|
-
cellAction: () => "px-4 py-3 whitespace-nowrap text-right text-sm font-medium"
|
|
2324
|
-
}
|
|
2325
|
-
},
|
|
2326
|
-
// Table states
|
|
2327
|
-
states: {
|
|
2328
|
-
loading: () => "opacity-50 pointer-events-none",
|
|
2329
|
-
empty: () => "text-center py-12 text-gray-500 dark:text-gray-400",
|
|
2330
|
-
error: () => "text-center py-12 text-red-500 dark:text-red-400"
|
|
2331
|
-
},
|
|
2332
|
-
// Pagination styles
|
|
2333
|
-
pagination: {
|
|
2334
|
-
container: () => "bg-white dark:bg-gray-800 px-4 py-3 flex items-center justify-between border-t border-gray-200 dark:border-gray-700 sm:px-6",
|
|
2335
|
-
info: () => "flex-1 flex justify-between sm:hidden text-sm text-gray-700 dark:text-gray-300",
|
|
2336
|
-
nav: () => "hidden sm:flex-1 sm:flex sm:items-center sm:justify-between",
|
|
2337
|
-
button: () => "relative inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 text-sm font-medium rounded-md text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-800 hover:bg-gray-50 dark:hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed transition-colors duration-200",
|
|
2338
|
-
buttonCurrent: () => "relative inline-flex items-center px-4 py-2 border border-blue-500 dark:border-blue-400 text-sm font-medium rounded-md text-blue-600 dark:text-blue-400 bg-blue-50 dark:bg-blue-900/20 hover:bg-blue-100 dark:hover:bg-blue-900/30 transition-colors duration-200"
|
|
2339
|
-
},
|
|
2340
|
-
// Data grid specific variants
|
|
2341
|
-
grid: {
|
|
2342
|
-
container: () => "overflow-auto rounded-lg border border-gray-200 dark:border-gray-700",
|
|
2343
|
-
table: () => "min-w-full table-fixed",
|
|
2344
|
-
resizeHandle: () => "absolute right-0 top-0 bottom-0 w-1 cursor-col-resize hover:bg-blue-500 dark:hover:bg-blue-400 transition-colors duration-200",
|
|
2345
|
-
filterContainer: () => "border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900/50 p-3",
|
|
2346
|
-
filterInput: () => "block w-full rounded-md border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 px-3 py-2 text-sm focus:border-blue-500 focus:ring-blue-500 dark:focus:border-blue-400 dark:focus:ring-blue-400 focus:outline-none focus:ring-2"
|
|
2347
|
-
},
|
|
2348
|
-
// Sorting indicators
|
|
2349
|
-
sort: {
|
|
2350
|
-
indicator: () => "ml-2 h-4 w-4 flex-none rounded text-gray-400 group-hover:text-gray-500 dark:group-hover:text-gray-300",
|
|
2351
|
-
ascending: () => "ml-2 h-4 w-4 flex-none rounded text-gray-400 group-hover:text-gray-500 dark:group-hover:text-gray-300 transform rotate-0",
|
|
2352
|
-
descending: () => "ml-2 h-4 w-4 flex-none rounded text-gray-400 group-hover:text-gray-500 dark:group-hover:text-gray-300 transform rotate-180"
|
|
2353
|
-
}
|
|
2354
|
-
},
|
|
2355
|
-
// Icon variants
|
|
2356
|
-
icon: {
|
|
2357
|
-
// Size variants
|
|
2358
|
-
size: {
|
|
2359
|
-
xs: () => "h-3 w-3",
|
|
2360
|
-
sm: () => "h-4 w-4",
|
|
2361
|
-
md: () => "h-5 w-5",
|
|
2362
|
-
lg: () => "h-6 w-6",
|
|
2363
|
-
xl: () => "h-8 w-8",
|
|
2364
|
-
xxl: () => "h-10 w-10",
|
|
2365
|
-
xxxl: () => "h-12 w-12"
|
|
2366
|
-
},
|
|
2367
|
-
// Color variants
|
|
2368
|
-
color: {
|
|
2369
|
-
// Neutral colors
|
|
2370
|
-
default: () => "text-gray-500 dark:text-gray-400",
|
|
2371
|
-
muted: () => "text-gray-400 dark:text-gray-500",
|
|
2372
|
-
subtle: () => "text-gray-300 dark:text-gray-600",
|
|
2373
|
-
primary: () => "text-gray-900 dark:text-gray-100",
|
|
2374
|
-
// Brand colors
|
|
2375
|
-
brand: () => "text-blue-600 dark:text-blue-400",
|
|
2376
|
-
brandMuted: () => "text-blue-500 dark:text-blue-500",
|
|
2377
|
-
// Semantic colors
|
|
2378
|
-
success: () => "text-green-600 dark:text-green-400",
|
|
2379
|
-
warning: () => "text-amber-600 dark:text-amber-400",
|
|
2380
|
-
error: () => "text-red-600 dark:text-red-400",
|
|
2381
|
-
info: () => "text-blue-600 dark:text-blue-400",
|
|
2382
|
-
// Interactive colors
|
|
2383
|
-
interactive: () => "text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300 transition-colors duration-200",
|
|
2384
|
-
interactiveSubtle: () => "text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 transition-colors duration-200",
|
|
2385
|
-
// Web3 specific colors
|
|
2386
|
-
ethereum: () => "text-blue-600 dark:text-blue-400",
|
|
2387
|
-
solana: () => "text-purple-600 dark:text-purple-400",
|
|
2388
|
-
bitcoin: () => "text-orange-600 dark:text-orange-400"
|
|
2389
|
-
},
|
|
2390
|
-
// Combined size and color variants
|
|
2391
|
-
variant: {
|
|
2392
|
-
// Default variants (most common combinations)
|
|
2393
|
-
default: {
|
|
2394
|
-
xs: () => "h-3 w-3 text-gray-500 dark:text-gray-400",
|
|
2395
|
-
sm: () => "h-4 w-4 text-gray-500 dark:text-gray-400",
|
|
2396
|
-
md: () => "h-5 w-5 text-gray-500 dark:text-gray-400",
|
|
2397
|
-
lg: () => "h-6 w-6 text-gray-500 dark:text-gray-400",
|
|
2398
|
-
xl: () => "h-8 w-8 text-gray-500 dark:text-gray-400"
|
|
2399
|
-
},
|
|
2400
|
-
// Interactive variants
|
|
2401
|
-
interactive: {
|
|
2402
|
-
xs: () => "h-3 w-3 text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300 transition-colors duration-200 cursor-pointer",
|
|
2403
|
-
sm: () => "h-4 w-4 text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300 transition-colors duration-200 cursor-pointer",
|
|
2404
|
-
md: () => "h-5 w-5 text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300 transition-colors duration-200 cursor-pointer",
|
|
2405
|
-
lg: () => "h-6 w-6 text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300 transition-colors duration-200 cursor-pointer",
|
|
2406
|
-
xl: () => "h-8 w-8 text-blue-600 hover:text-blue-700 dark:text-blue-400 dark:hover:text-blue-300 transition-colors duration-200 cursor-pointer"
|
|
2407
|
-
},
|
|
2408
|
-
// Success variants
|
|
2409
|
-
success: {
|
|
2410
|
-
xs: () => "h-3 w-3 text-green-600 dark:text-green-400",
|
|
2411
|
-
sm: () => "h-4 w-4 text-green-600 dark:text-green-400",
|
|
2412
|
-
md: () => "h-5 w-5 text-green-600 dark:text-green-400",
|
|
2413
|
-
lg: () => "h-6 w-6 text-green-600 dark:text-green-400",
|
|
2414
|
-
xl: () => "h-8 w-8 text-green-600 dark:text-green-400"
|
|
2415
|
-
},
|
|
2416
|
-
// Warning variants
|
|
2417
|
-
warning: {
|
|
2418
|
-
xs: () => "h-3 w-3 text-amber-600 dark:text-amber-400",
|
|
2419
|
-
sm: () => "h-4 w-4 text-amber-600 dark:text-amber-400",
|
|
2420
|
-
md: () => "h-5 w-5 text-amber-600 dark:text-amber-400",
|
|
2421
|
-
lg: () => "h-6 w-6 text-amber-600 dark:text-amber-400",
|
|
2422
|
-
xl: () => "h-8 w-8 text-amber-600 dark:text-amber-400"
|
|
2423
|
-
},
|
|
2424
|
-
// Error variants
|
|
2425
|
-
error: {
|
|
2426
|
-
xs: () => "h-3 w-3 text-red-600 dark:text-red-400",
|
|
2427
|
-
sm: () => "h-4 w-4 text-red-600 dark:text-red-400",
|
|
2428
|
-
md: () => "h-5 w-5 text-red-600 dark:text-red-400",
|
|
2429
|
-
lg: () => "h-6 w-6 text-red-600 dark:text-red-400",
|
|
2430
|
-
xl: () => "h-8 w-8 text-red-600 dark:text-red-400"
|
|
2431
|
-
},
|
|
2432
|
-
// Muted variants
|
|
2433
|
-
muted: {
|
|
2434
|
-
xs: () => "h-3 w-3 text-gray-400 dark:text-gray-500",
|
|
2435
|
-
sm: () => "h-4 w-4 text-gray-400 dark:text-gray-500",
|
|
2436
|
-
md: () => "h-5 w-5 text-gray-400 dark:text-gray-500",
|
|
2437
|
-
lg: () => "h-6 w-6 text-gray-400 dark:text-gray-500",
|
|
2438
|
-
xl: () => "h-8 w-8 text-gray-400 dark:text-gray-500"
|
|
2439
|
-
}
|
|
2440
|
-
},
|
|
2441
|
-
// Context-specific icon patterns
|
|
2442
|
-
context: {
|
|
2443
|
-
// Button icons
|
|
2444
|
-
button: {
|
|
2445
|
-
leading: () => "h-4 w-4 mr-2 flex-shrink-0",
|
|
2446
|
-
trailing: () => "h-4 w-4 ml-2 flex-shrink-0",
|
|
2447
|
-
only: () => "h-4 w-4",
|
|
2448
|
-
small: () => "h-3 w-3",
|
|
2449
|
-
large: () => "h-5 w-5"
|
|
2450
|
-
},
|
|
2451
|
-
// Input icons
|
|
2452
|
-
input: {
|
|
2453
|
-
leading: () => "absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400 pointer-events-none",
|
|
2454
|
-
trailing: () => "absolute right-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400",
|
|
2455
|
-
interactive: () => "absolute right-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400 hover:text-gray-600 cursor-pointer transition-colors duration-200"
|
|
2456
|
-
},
|
|
2457
|
-
// Navigation icons
|
|
2458
|
-
navigation: {
|
|
2459
|
-
menu: () => "h-5 w-5 text-gray-600 dark:text-gray-400",
|
|
2460
|
-
menuActive: () => "h-5 w-5 text-blue-600 dark:text-blue-400",
|
|
2461
|
-
breadcrumb: () => "h-4 w-4 text-gray-400 mx-2",
|
|
2462
|
-
tab: () => "h-4 w-4 mr-2"
|
|
2463
|
-
},
|
|
2464
|
-
// Status icons
|
|
2465
|
-
status: {
|
|
2466
|
-
success: () => "h-5 w-5 text-green-500 flex-shrink-0",
|
|
2467
|
-
warning: () => "h-5 w-5 text-amber-500 flex-shrink-0",
|
|
2468
|
-
error: () => "h-5 w-5 text-red-500 flex-shrink-0",
|
|
2469
|
-
info: () => "h-5 w-5 text-blue-500 flex-shrink-0",
|
|
2470
|
-
loading: () => "h-5 w-5 text-gray-400 animate-spin flex-shrink-0"
|
|
2471
|
-
},
|
|
2472
|
-
// Avatar/Profile icons
|
|
2473
|
-
avatar: {
|
|
2474
|
-
small: () => "h-6 w-6 text-gray-400",
|
|
2475
|
-
medium: () => "h-8 w-8 text-gray-400",
|
|
2476
|
-
large: () => "h-10 w-10 text-gray-400",
|
|
2477
|
-
fallback: () => "h-full w-full text-gray-300"
|
|
2478
|
-
},
|
|
2479
|
-
// Web3 context icons
|
|
2480
|
-
web3: {
|
|
2481
|
-
wallet: () => "h-5 w-5 text-gray-600 dark:text-gray-400",
|
|
2482
|
-
walletConnected: () => "h-5 w-5 text-green-600 dark:text-green-400",
|
|
2483
|
-
walletDisconnected: () => "h-5 w-5 text-gray-400 dark:text-gray-500",
|
|
2484
|
-
transaction: () => "h-4 w-4 text-blue-600 dark:text-blue-400",
|
|
2485
|
-
blockchain: {
|
|
2486
|
-
ethereum: () => "h-5 w-5 text-blue-600 dark:text-blue-400",
|
|
2487
|
-
solana: () => "h-5 w-5 text-purple-600 dark:text-purple-400",
|
|
2488
|
-
bitcoin: () => "h-5 w-5 text-orange-600 dark:text-orange-400"
|
|
2489
|
-
}
|
|
2490
|
-
},
|
|
2491
|
-
// Card and content icons
|
|
2492
|
-
card: {
|
|
2493
|
-
header: () => "h-5 w-5 text-gray-600 dark:text-gray-400 mr-2",
|
|
2494
|
-
action: () => "h-4 w-4 text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 transition-colors duration-200",
|
|
2495
|
-
feature: () => "h-6 w-6 text-blue-600 dark:text-blue-400",
|
|
2496
|
-
featureLarge: () => "h-8 w-8 text-blue-600 dark:text-blue-400"
|
|
2497
|
-
},
|
|
2498
|
-
// List and table icons
|
|
2499
|
-
list: {
|
|
2500
|
-
item: () => "h-4 w-4 text-gray-500 dark:text-gray-400 mr-3 flex-shrink-0",
|
|
2501
|
-
action: () => "h-4 w-4 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300 transition-colors duration-200",
|
|
2502
|
-
bullet: () => "h-1.5 w-1.5 text-gray-400 mt-2 mr-3 flex-shrink-0"
|
|
2503
|
-
}
|
|
2504
|
-
},
|
|
2505
|
-
// Decorative icon patterns
|
|
2506
|
-
decorative: {
|
|
2507
|
-
hero: {
|
|
2508
|
-
small: () => "h-12 w-12 text-blue-600 dark:text-blue-400",
|
|
2509
|
-
medium: () => "h-16 w-16 text-blue-600 dark:text-blue-400",
|
|
2510
|
-
large: () => "h-20 w-20 text-blue-600 dark:text-blue-400",
|
|
2511
|
-
xlarge: () => "h-24 w-24 text-blue-600 dark:text-blue-400"
|
|
2512
|
-
},
|
|
2513
|
-
feature: {
|
|
2514
|
-
small: () => "h-8 w-8 text-gray-600 dark:text-gray-400",
|
|
2515
|
-
medium: () => "h-10 w-10 text-gray-600 dark:text-gray-400",
|
|
2516
|
-
large: () => "h-12 w-12 text-gray-600 dark:text-gray-400"
|
|
2517
|
-
},
|
|
2518
|
-
background: {
|
|
2519
|
-
subtle: () => "h-32 w-32 text-gray-100 dark:text-gray-800 opacity-50",
|
|
2520
|
-
muted: () => "h-24 w-24 text-gray-200 dark:text-gray-700 opacity-30"
|
|
2521
|
-
},
|
|
2522
|
-
empty: {
|
|
2523
|
-
small: () => "h-8 w-8 text-gray-400 dark:text-gray-500 mb-2",
|
|
2524
|
-
medium: () => "h-12 w-12 text-gray-400 dark:text-gray-500 mb-4",
|
|
2525
|
-
large: () => "h-16 w-16 text-gray-400 dark:text-gray-500 mb-6"
|
|
2526
|
-
}
|
|
2527
|
-
}
|
|
2528
|
-
},
|
|
2529
|
-
// Overlays & Portals variants
|
|
2530
|
-
overlays: {
|
|
2531
|
-
// Modal/Dialog overlays
|
|
2532
|
-
modal: {
|
|
2533
|
-
backdrop: () => "fixed inset-0 z-40 bg-black/50 dark:bg-black/70 backdrop-blur-sm transition-all duration-300 ease-out",
|
|
2534
|
-
backdropEntering: () => "opacity-0",
|
|
2535
|
-
backdropEntered: () => "opacity-100",
|
|
2536
|
-
backdropExiting: () => "opacity-0",
|
|
2537
|
-
container: () => "fixed inset-0 z-50 flex items-center justify-center p-4 transition-all duration-300 ease-out",
|
|
2538
|
-
containerEntering: () => "opacity-0 scale-95",
|
|
2539
|
-
containerEntered: () => "opacity-100 scale-100",
|
|
2540
|
-
containerExiting: () => "opacity-0 scale-95",
|
|
2541
|
-
content: () => "relative w-full max-w-lg bg-white dark:bg-gray-900 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 max-h-[80vh] overflow-hidden",
|
|
2542
|
-
// Size variants
|
|
2543
|
-
small: () => "max-w-sm",
|
|
2544
|
-
medium: () => "max-w-lg",
|
|
2545
|
-
large: () => "max-w-2xl",
|
|
2546
|
-
extraLarge: () => "max-w-4xl",
|
|
2547
|
-
fullWidth: () => "max-w-[95vw]",
|
|
2548
|
-
// Header and content areas
|
|
2549
|
-
header: () => "flex items-center justify-between p-4 sm:p-6 border-b border-gray-200 dark:border-gray-700",
|
|
2550
|
-
title: () => "text-lg font-semibold text-gray-900 dark:text-gray-100",
|
|
2551
|
-
closeButton: () => "p-1 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-md transition-colors",
|
|
2552
|
-
body: () => "p-4 sm:p-6 overflow-y-auto",
|
|
2553
|
-
footer: () => "flex items-center justify-end space-x-3 p-4 sm:p-6 border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50"
|
|
2554
|
-
},
|
|
2555
|
-
// Tooltip overlays
|
|
2556
|
-
tooltip: {
|
|
2557
|
-
container: () => "absolute z-50 px-2 py-1 text-xs font-medium text-white bg-gray-900 dark:bg-gray-800 rounded shadow-lg transition-all duration-200 pointer-events-none",
|
|
2558
|
-
arrow: () => "absolute w-2 h-2 bg-gray-900 dark:bg-gray-800 transform rotate-45",
|
|
2559
|
-
// Position variants
|
|
2560
|
-
top: () => "-translate-x-1/2 -translate-y-full left-1/2 bottom-full mb-2",
|
|
2561
|
-
topArrow: () => "top-full left-1/2 -translate-x-1/2 -translate-y-1/2",
|
|
2562
|
-
bottom: () => "-translate-x-1/2 translate-y-full left-1/2 top-full mt-2",
|
|
2563
|
-
bottomArrow: () => "bottom-full left-1/2 -translate-x-1/2 translate-y-1/2",
|
|
2564
|
-
left: () => "-translate-y-1/2 -translate-x-full top-1/2 right-full mr-2",
|
|
2565
|
-
leftArrow: () => "left-full top-1/2 -translate-y-1/2 -translate-x-1/2",
|
|
2566
|
-
right: () => "-translate-y-1/2 translate-x-full top-1/2 left-full ml-2",
|
|
2567
|
-
rightArrow: () => "right-full top-1/2 -translate-y-1/2 translate-x-1/2",
|
|
2568
|
-
// Content variants
|
|
2569
|
-
light: () => "text-gray-900 bg-white border border-gray-200 shadow-md",
|
|
2570
|
-
dark: () => "text-white bg-gray-900 dark:bg-gray-800",
|
|
2571
|
-
info: () => "text-blue-50 bg-blue-600",
|
|
2572
|
-
success: () => "text-green-50 bg-green-600",
|
|
2573
|
-
warning: () => "text-amber-50 bg-amber-600",
|
|
2574
|
-
error: () => "text-red-50 bg-red-600"
|
|
2575
|
-
},
|
|
2576
|
-
// Popover overlays (more complex than tooltips)
|
|
2577
|
-
popover: {
|
|
2578
|
-
backdrop: () => "fixed inset-0 z-30",
|
|
2579
|
-
container: () => "absolute z-40 w-64 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 transition-all duration-200",
|
|
2580
|
-
arrow: () => "absolute w-3 h-3 bg-white dark:bg-gray-800 border-l border-t border-gray-200 dark:border-gray-700 transform rotate-45",
|
|
2581
|
-
// Size variants
|
|
2582
|
-
small: () => "w-48",
|
|
2583
|
-
medium: () => "w-64",
|
|
2584
|
-
large: () => "w-80",
|
|
2585
|
-
auto: () => "w-auto min-w-48 max-w-xs",
|
|
2586
|
-
// Position variants (similar to tooltip but adjusted for larger content)
|
|
2587
|
-
top: () => "-translate-x-1/2 -translate-y-full left-1/2 bottom-full mb-3",
|
|
2588
|
-
topArrow: () => "top-full left-1/2 -translate-x-1/2 -translate-y-1/2",
|
|
2589
|
-
bottom: () => "-translate-x-1/2 translate-y-full left-1/2 top-full mt-3",
|
|
2590
|
-
bottomArrow: () => "bottom-full left-1/2 -translate-x-1/2 translate-y-1/2",
|
|
2591
|
-
left: () => "-translate-y-1/2 -translate-x-full top-1/2 right-full mr-3",
|
|
2592
|
-
leftArrow: () => "left-full top-1/2 -translate-y-1/2 -translate-x-1/2",
|
|
2593
|
-
right: () => "-translate-y-1/2 translate-x-full top-1/2 left-full ml-3",
|
|
2594
|
-
rightArrow: () => "right-full top-1/2 -translate-y-1/2 translate-x-1/2",
|
|
2595
|
-
// Content areas
|
|
2596
|
-
header: () => "px-4 py-3 border-b border-gray-200 dark:border-gray-700",
|
|
2597
|
-
title: () => "text-sm font-medium text-gray-900 dark:text-gray-100",
|
|
2598
|
-
body: () => "px-4 py-3",
|
|
2599
|
-
footer: () => "px-4 py-3 border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-700/50",
|
|
2600
|
-
// Animation states
|
|
2601
|
-
entering: () => "opacity-0 scale-95 transform",
|
|
2602
|
-
entered: () => "opacity-100 scale-100 transform",
|
|
2603
|
-
exiting: () => "opacity-0 scale-95 transform"
|
|
2604
|
-
},
|
|
2605
|
-
// Dropdown menus
|
|
2606
|
-
dropdown: {
|
|
2607
|
-
container: () => "relative inline-block",
|
|
2608
|
-
trigger: () => "inline-flex justify-center items-center",
|
|
2609
|
-
menu: () => "absolute z-50 w-56 bg-white dark:bg-gray-800 rounded-md shadow-lg border border-gray-200 dark:border-gray-700 focus:outline-none transition-all duration-200",
|
|
2610
|
-
menuSmall: () => "w-40",
|
|
2611
|
-
menuLarge: () => "w-72",
|
|
2612
|
-
menuAuto: () => "w-auto min-w-40",
|
|
2613
|
-
// Position variants
|
|
2614
|
-
menuTop: () => "bottom-full mb-1",
|
|
2615
|
-
menuBottom: () => "top-full mt-1",
|
|
2616
|
-
menuLeft: () => "right-0",
|
|
2617
|
-
menuRight: () => "left-0",
|
|
2618
|
-
// Animation states
|
|
2619
|
-
menuEntering: () => "opacity-0 scale-95 transform origin-top",
|
|
2620
|
-
menuEntered: () => "opacity-100 scale-100 transform origin-top",
|
|
2621
|
-
menuExiting: () => "opacity-0 scale-95 transform origin-top",
|
|
2622
|
-
// Menu items
|
|
2623
|
-
itemContainer: () => "py-1 px-1",
|
|
2624
|
-
item: () => "flex items-center w-full text-left px-4 py-2 text-sm text-gray-700 dark:text-gray-300 hover:bg-blue-50 dark:hover:bg-blue-900/20 hover:text-blue-700 dark:hover:text-blue-300 transition-all duration-200 cursor-pointer hover:shadow-sm rounded-sm",
|
|
2625
|
-
itemActive: () => "bg-blue-100 dark:bg-blue-900/30 text-blue-700 dark:text-blue-300 shadow-sm",
|
|
2626
|
-
itemDisabled: () => "text-gray-400 dark:text-gray-600 cursor-not-allowed hover:bg-transparent hover:text-gray-400 dark:hover:text-gray-600",
|
|
2627
|
-
// Special item types
|
|
2628
|
-
divider: () => "my-1 border-t border-gray-200 dark:border-gray-700",
|
|
2629
|
-
header: () => "px-4 py-2 text-xs font-medium text-gray-500 dark:text-gray-400 uppercase tracking-wide",
|
|
2630
|
-
// Icons in menu items
|
|
2631
|
-
itemIcon: () => "mr-3 h-4 w-4 flex-shrink-0",
|
|
2632
|
-
itemIconRight: () => "ml-auto h-4 w-4 flex-shrink-0"
|
|
2633
|
-
},
|
|
2634
|
-
// Drawer/Sidebar overlays
|
|
2635
|
-
drawer: {
|
|
2636
|
-
backdrop: () => "fixed inset-0 z-40 bg-black/50 dark:bg-black/70 transition-opacity duration-300",
|
|
2637
|
-
container: () => "fixed inset-y-0 z-50 flex w-full justify-end transition-transform duration-300 ease-in-out",
|
|
2638
|
-
// Position variants
|
|
2639
|
-
right: () => "right-0",
|
|
2640
|
-
left: () => "left-0 justify-start",
|
|
2641
|
-
// Size variants
|
|
2642
|
-
narrow: () => "max-w-xs",
|
|
2643
|
-
default: () => "max-w-md",
|
|
2644
|
-
wide: () => "max-w-lg",
|
|
2645
|
-
extraWide: () => "max-w-2xl",
|
|
2646
|
-
// Content
|
|
2647
|
-
content: () => "relative flex w-full flex-col bg-white dark:bg-gray-900 border-l border-gray-200 dark:border-gray-700 shadow-xl",
|
|
2648
|
-
contentLeft: () => "border-r border-l-0 border-gray-200 dark:border-gray-700",
|
|
2649
|
-
header: () => "flex items-center justify-between px-4 sm:px-6 py-4 border-b border-gray-200 dark:border-gray-700",
|
|
2650
|
-
title: () => "text-lg font-semibold text-gray-900 dark:text-gray-100",
|
|
2651
|
-
closeButton: () => "p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-md transition-colors",
|
|
2652
|
-
body: () => "flex-1 px-4 sm:px-6 py-4 overflow-y-auto",
|
|
2653
|
-
footer: () => "flex items-center justify-end space-x-3 px-4 sm:px-6 py-4 border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50",
|
|
2654
|
-
// Animation states
|
|
2655
|
-
entering: () => "translate-x-full",
|
|
2656
|
-
enteringLeft: () => "-translate-x-full",
|
|
2657
|
-
entered: () => "translate-x-0",
|
|
2658
|
-
exiting: () => "translate-x-full",
|
|
2659
|
-
exitingLeft: () => "-translate-x-full"
|
|
2660
|
-
},
|
|
2661
|
-
// Sheet overlays (bottom sheets, action sheets)
|
|
2662
|
-
sheet: {
|
|
2663
|
-
backdrop: () => "fixed inset-0 z-40 bg-black/50 dark:bg-black/70 transition-opacity duration-300",
|
|
2664
|
-
container: () => "fixed inset-x-0 bottom-0 z-50 transition-transform duration-300 ease-out",
|
|
2665
|
-
content: () => "relative bg-white dark:bg-gray-900 rounded-t-lg shadow-xl border-t border-gray-200 dark:border-gray-700 max-h-[85vh] overflow-hidden",
|
|
2666
|
-
handle: () => "flex justify-center py-2",
|
|
2667
|
-
handleBar: () => "w-10 h-1 bg-gray-300 dark:bg-gray-600 rounded-full",
|
|
2668
|
-
header: () => "flex items-center justify-between px-4 sm:px-6 py-4 border-b border-gray-200 dark:border-gray-700",
|
|
2669
|
-
title: () => "text-lg font-semibold text-gray-900 dark:text-gray-100",
|
|
2670
|
-
closeButton: () => "p-2 hover:bg-gray-100 dark:hover:bg-gray-700 rounded-md transition-colors",
|
|
2671
|
-
body: () => "px-4 sm:px-6 py-4 overflow-y-auto",
|
|
2672
|
-
footer: () => "flex items-center justify-center space-x-3 px-4 sm:px-6 py-4 border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800/50",
|
|
2673
|
-
// Animation states
|
|
2674
|
-
entering: () => "translate-y-full",
|
|
2675
|
-
entered: () => "translate-y-0",
|
|
2676
|
-
exiting: () => "translate-y-full"
|
|
2677
|
-
},
|
|
2678
|
-
// Context menus (right-click menus)
|
|
2679
|
-
contextMenu: {
|
|
2680
|
-
backdrop: () => "fixed inset-0 z-30",
|
|
2681
|
-
container: () => "absolute z-50 w-48 bg-white dark:bg-gray-800 rounded-md shadow-lg border border-gray-200 dark:border-gray-700 py-1 focus:outline-none transition-all duration-150",
|
|
2682
|
-
item: () => "flex items-center px-3 py-2 text-sm text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700 hover:text-gray-900 dark:hover:text-gray-100 transition-colors cursor-pointer",
|
|
2683
|
-
itemDisabled: () => "text-gray-400 dark:text-gray-600 cursor-not-allowed hover:bg-transparent",
|
|
2684
|
-
itemDanger: () => "text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20 hover:text-red-700 dark:hover:text-red-300",
|
|
2685
|
-
divider: () => "my-1 border-t border-gray-200 dark:border-gray-700",
|
|
2686
|
-
icon: () => "mr-2 h-4 w-4 flex-shrink-0",
|
|
2687
|
-
shortcut: () => "ml-auto text-xs text-gray-400 dark:text-gray-500",
|
|
2688
|
-
// Nested menu indicators
|
|
2689
|
-
submenuIndicator: () => "ml-auto h-4 w-4 text-gray-400 dark:text-gray-500",
|
|
2690
|
-
submenu: () => "absolute left-full top-0 ml-1"
|
|
2691
|
-
},
|
|
2692
|
-
// Loading overlays
|
|
2693
|
-
loading: {
|
|
2694
|
-
backdrop: () => "fixed inset-0 z-50 bg-white/80 dark:bg-gray-900/80 backdrop-blur-sm flex items-center justify-center transition-all duration-300",
|
|
2695
|
-
container: () => "flex flex-col items-center space-y-4 p-6 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700",
|
|
2696
|
-
spinner: () => "w-8 h-8 border-2 border-blue-600 border-t-transparent rounded-full animate-spin",
|
|
2697
|
-
spinnerLarge: () => "w-12 h-12 border-3 border-blue-600 border-t-transparent rounded-full animate-spin",
|
|
2698
|
-
text: () => "text-sm font-medium text-gray-900 dark:text-gray-100",
|
|
2699
|
-
subtext: () => "text-xs text-gray-500 dark:text-gray-400 text-center max-w-xs"
|
|
2700
|
-
},
|
|
2701
|
-
// Portal utilities for managing overlay z-index and positioning
|
|
2702
|
-
portal: {
|
|
2703
|
-
// Z-index layers (ensure proper stacking)
|
|
2704
|
-
backdrop: () => "z-40",
|
|
2705
|
-
dropdown: () => "z-50",
|
|
2706
|
-
tooltip: () => "z-50",
|
|
2707
|
-
popover: () => "z-40",
|
|
2708
|
-
modal: () => "z-50",
|
|
2709
|
-
drawer: () => "z-50",
|
|
2710
|
-
sheet: () => "z-50",
|
|
2711
|
-
contextMenu: () => "z-50",
|
|
2712
|
-
loading: () => "z-60",
|
|
2713
|
-
notification: () => "z-70",
|
|
2714
|
-
// Focus trap utilities
|
|
2715
|
-
focusTrap: () => "focus:outline-none",
|
|
2716
|
-
focusVisible: () => "focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2",
|
|
2717
|
-
// Screen reader utilities
|
|
2718
|
-
srOnly: () => "sr-only",
|
|
2719
|
-
ariaLabel: () => "aria-label"
|
|
2720
|
-
}
|
|
2721
|
-
},
|
|
2722
|
-
// Micro-Interactions & Animations variants
|
|
2723
|
-
animations: {
|
|
2724
|
-
// Hover effects
|
|
2725
|
-
hover: {
|
|
2726
|
-
// Card hover effects
|
|
2727
|
-
card: {
|
|
2728
|
-
subtle: () => "transition-all duration-200 hover:shadow-md hover:-translate-y-0.5",
|
|
2729
|
-
lift: () => "transition-all duration-300 hover:shadow-lg hover:-translate-y-1",
|
|
2730
|
-
glow: () => "transition-all duration-200 hover:shadow-lg hover:shadow-blue-500/25 dark:hover:shadow-blue-400/25",
|
|
2731
|
-
scale: () => "transition-transform duration-200 hover:scale-105",
|
|
2732
|
-
border: () => "transition-all duration-200 hover:border-blue-300 dark:hover:border-blue-600",
|
|
2733
|
-
// Web3 specific card hovers
|
|
2734
|
-
nft: () => "transition-all duration-300 hover:shadow-xl hover:shadow-purple-500/30 hover:scale-[1.02]",
|
|
2735
|
-
wallet: () => "transition-all duration-200 hover:shadow-md hover:bg-gradient-to-r hover:from-blue-50 hover:to-indigo-50 dark:hover:from-blue-900/20 dark:hover:to-indigo-900/20",
|
|
2736
|
-
transaction: () => "transition-all duration-200 hover:shadow-md hover:border-green-300 dark:hover:border-green-600"
|
|
2737
|
-
},
|
|
2738
|
-
// Button hover effects
|
|
2739
|
-
button: {
|
|
2740
|
-
lift: () => "transition-all duration-150 hover:-translate-y-0.5 hover:shadow-md",
|
|
2741
|
-
glow: () => "transition-all duration-200 hover:shadow-lg hover:shadow-current/25",
|
|
2742
|
-
scale: () => "transition-transform duration-150 hover:scale-105",
|
|
2743
|
-
shimmer: () => "relative overflow-hidden transition-all duration-200 before:absolute before:inset-0 before:-translate-x-full before:animate-shimmer before:bg-gradient-to-r before:from-transparent before:via-white/20 before:to-transparent hover:before:translate-x-full",
|
|
2744
|
-
// Web3 button hovers
|
|
2745
|
-
connect: () => "transition-all duration-200 hover:shadow-lg hover:shadow-blue-500/30 hover:scale-[1.02]",
|
|
2746
|
-
transaction: () => "transition-all duration-200 hover:shadow-lg hover:shadow-green-500/30",
|
|
2747
|
-
disconnect: () => "transition-all duration-200 hover:shadow-lg hover:shadow-red-500/30"
|
|
2748
|
-
},
|
|
2749
|
-
// Icon hover effects
|
|
2750
|
-
icon: {
|
|
2751
|
-
bounce: () => "transition-transform duration-200 hover:scale-110 hover:-translate-y-0.5",
|
|
2752
|
-
rotate: () => "transition-transform duration-200 hover:rotate-12",
|
|
2753
|
-
pulse: () => "transition-all duration-200 hover:scale-110 hover:text-blue-600 dark:hover:text-blue-400",
|
|
2754
|
-
glow: () => "transition-all duration-200 hover:text-blue-600 dark:hover:text-blue-400 hover:drop-shadow-sm"
|
|
2755
|
-
}
|
|
2756
|
-
},
|
|
2757
|
-
// Loading animations
|
|
2758
|
-
loading: {
|
|
2759
|
-
// Spinner variants
|
|
2760
|
-
spinner: {
|
|
2761
|
-
default: () => "animate-spin",
|
|
2762
|
-
slow: () => "animate-spin-slow",
|
|
2763
|
-
fast: () => "animate-spin-fast",
|
|
2764
|
-
bounce: () => "animate-bounce",
|
|
2765
|
-
pulse: () => "animate-pulse",
|
|
2766
|
-
ping: () => "animate-ping"
|
|
2767
|
-
},
|
|
2768
|
-
// Skeleton loaders
|
|
2769
|
-
skeleton: {
|
|
2770
|
-
base: () => "animate-pulse bg-gray-200 dark:bg-gray-700 rounded",
|
|
2771
|
-
line: () => "animate-pulse bg-gray-200 dark:bg-gray-700 h-4 rounded",
|
|
2772
|
-
circle: () => "animate-pulse bg-gray-200 dark:bg-gray-700 rounded-full",
|
|
2773
|
-
card: () => "animate-pulse bg-gray-200 dark:bg-gray-700 rounded-lg h-32",
|
|
2774
|
-
// Shimmer effect
|
|
2775
|
-
shimmer: () => "relative overflow-hidden bg-gray-200 dark:bg-gray-700 before:absolute before:inset-0 before:-translate-x-full before:animate-shimmer before:bg-gradient-to-r before:from-gray-200 before:via-white before:to-gray-200 dark:before:from-gray-700 dark:before:via-gray-600 dark:before:to-gray-700",
|
|
2776
|
-
// Progressive loading
|
|
2777
|
-
progressive: () => "bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 dark:from-gray-700 dark:via-gray-600 dark:to-gray-700 bg-[length:200%_100%] animate-shimmer-bg"
|
|
2778
|
-
},
|
|
2779
|
-
// Progress indicators
|
|
2780
|
-
progress: {
|
|
2781
|
-
bar: () => "transition-all duration-300 ease-out",
|
|
2782
|
-
indeterminate: () => "animate-progress-indeterminate bg-gradient-to-r from-blue-500 via-purple-500 to-blue-500 bg-[length:200%_100%]",
|
|
2783
|
-
// Web3 progress indicators
|
|
2784
|
-
transaction: () => "animate-progress-glow bg-gradient-to-r from-green-400 to-blue-500",
|
|
2785
|
-
minting: () => "animate-progress-rainbow bg-gradient-to-r from-pink-500 via-purple-500 to-indigo-500"
|
|
2786
|
-
}
|
|
2787
|
-
},
|
|
2788
|
-
// Transition animations
|
|
2789
|
-
transitions: {
|
|
2790
|
-
// Slide transitions
|
|
2791
|
-
slide: {
|
|
2792
|
-
up: () => "transition-transform duration-300 ease-out",
|
|
2793
|
-
upEnter: () => "translate-y-full",
|
|
2794
|
-
upEntered: () => "translate-y-0",
|
|
2795
|
-
upExit: () => "translate-y-full",
|
|
2796
|
-
down: () => "transition-transform duration-300 ease-out",
|
|
2797
|
-
downEnter: () => "-translate-y-full",
|
|
2798
|
-
downEntered: () => "translate-y-0",
|
|
2799
|
-
downExit: () => "-translate-y-full",
|
|
2800
|
-
left: () => "transition-transform duration-300 ease-out",
|
|
2801
|
-
leftEnter: () => "translate-x-full",
|
|
2802
|
-
leftEntered: () => "translate-x-0",
|
|
2803
|
-
leftExit: () => "translate-x-full",
|
|
2804
|
-
right: () => "transition-transform duration-300 ease-out",
|
|
2805
|
-
rightEnter: () => "-translate-x-full",
|
|
2806
|
-
rightEntered: () => "translate-x-0",
|
|
2807
|
-
rightExit: () => "-translate-x-full"
|
|
2808
|
-
},
|
|
2809
|
-
// Fade transitions
|
|
2810
|
-
fade: {
|
|
2811
|
-
default: () => "transition-opacity duration-300 ease-out",
|
|
2812
|
-
enter: () => "opacity-0",
|
|
2813
|
-
entered: () => "opacity-100",
|
|
2814
|
-
exit: () => "opacity-0",
|
|
2815
|
-
fast: () => "transition-opacity duration-150 ease-out",
|
|
2816
|
-
slow: () => "transition-opacity duration-500 ease-out",
|
|
2817
|
-
// Fade with scale
|
|
2818
|
-
scale: () => "transition-all duration-300 ease-out",
|
|
2819
|
-
scaleEnter: () => "opacity-0 scale-95",
|
|
2820
|
-
scaleEntered: () => "opacity-100 scale-100",
|
|
2821
|
-
scaleExit: () => "opacity-0 scale-95"
|
|
2822
|
-
},
|
|
2823
|
-
// Page transitions
|
|
2824
|
-
page: {
|
|
2825
|
-
slideLeft: () => "transition-transform duration-300 ease-in-out",
|
|
2826
|
-
slideRight: () => "transition-transform duration-300 ease-in-out",
|
|
2827
|
-
fadeScale: () => "transition-all duration-300 ease-in-out"
|
|
2828
|
-
}
|
|
2829
|
-
},
|
|
2830
|
-
// Gesture feedback
|
|
2831
|
-
feedback: {
|
|
2832
|
-
// Click/tap feedback
|
|
2833
|
-
tap: {
|
|
2834
|
-
ripple: () => "relative overflow-hidden transition-all duration-150 active:scale-95",
|
|
2835
|
-
scale: () => "transition-transform duration-100 active:scale-95",
|
|
2836
|
-
glow: () => "transition-all duration-150 active:shadow-lg active:shadow-current/30",
|
|
2837
|
-
// Material Design ripple effect
|
|
2838
|
-
materialRipple: () => "relative overflow-hidden after:absolute after:inset-0 after:rounded-[inherit] after:pointer-events-none after:transition-opacity after:duration-300 after:opacity-0 active:after:opacity-100 active:after:bg-white/20"
|
|
2839
|
-
},
|
|
2840
|
-
// Focus feedback
|
|
2841
|
-
focus: {
|
|
2842
|
-
ring: () => "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2",
|
|
2843
|
-
glow: () => "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:shadow-lg focus-visible:shadow-blue-500/25",
|
|
2844
|
-
scale: () => "focus-visible:outline-none focus-visible:scale-105 focus-visible:ring-2 focus-visible:ring-blue-500",
|
|
2845
|
-
// Web3 focus styles
|
|
2846
|
-
wallet: () => "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 focus-visible:bg-blue-50 dark:focus-visible:bg-blue-900/20"
|
|
2847
|
-
},
|
|
2848
|
-
// Drag feedback
|
|
2849
|
-
drag: {
|
|
2850
|
-
dragging: () => "opacity-50 scale-95 rotate-3 shadow-xl z-50",
|
|
2851
|
-
dropzone: () => "transition-all duration-200 border-2 border-dashed",
|
|
2852
|
-
dropzoneActive: () => "border-blue-400 bg-blue-50 dark:bg-blue-900/20 scale-105",
|
|
2853
|
-
dropzoneInactive: () => "border-gray-300 dark:border-gray-600"
|
|
2854
|
-
}
|
|
2855
|
-
},
|
|
2856
|
-
// Scroll animations
|
|
2857
|
-
scroll: {
|
|
2858
|
-
// Reveal animations
|
|
2859
|
-
reveal: {
|
|
2860
|
-
fadeUp: () => "opacity-0 translate-y-8 transition-all duration-700 ease-out",
|
|
2861
|
-
fadeUpVisible: () => "opacity-100 translate-y-0",
|
|
2862
|
-
fadeDown: () => "opacity-0 -translate-y-8 transition-all duration-700 ease-out",
|
|
2863
|
-
fadeDownVisible: () => "opacity-100 translate-y-0",
|
|
2864
|
-
fadeLeft: () => "opacity-0 translate-x-8 transition-all duration-700 ease-out",
|
|
2865
|
-
fadeLeftVisible: () => "opacity-100 translate-x-0",
|
|
2866
|
-
fadeRight: () => "opacity-0 -translate-x-8 transition-all duration-700 ease-out",
|
|
2867
|
-
fadeRightVisible: () => "opacity-100 translate-x-0",
|
|
2868
|
-
scale: () => "opacity-0 scale-90 transition-all duration-700 ease-out",
|
|
2869
|
-
scaleVisible: () => "opacity-100 scale-100"
|
|
2870
|
-
},
|
|
2871
|
-
// Parallax effects
|
|
2872
|
-
parallax: {
|
|
2873
|
-
slow: () => "transform transition-transform duration-75",
|
|
2874
|
-
medium: () => "transform transition-transform duration-100",
|
|
2875
|
-
fast: () => "transform transition-transform duration-150"
|
|
2876
|
-
},
|
|
2877
|
-
// Sticky animations
|
|
2878
|
-
sticky: {
|
|
2879
|
-
shrink: () => "transition-all duration-300 ease-out",
|
|
2880
|
-
shrinkActive: () => "py-2 shadow-lg backdrop-blur-md",
|
|
2881
|
-
shrinkInactive: () => "py-4"
|
|
2882
|
-
}
|
|
2883
|
-
},
|
|
2884
|
-
// Web3-specific animations
|
|
2885
|
-
web3: {
|
|
2886
|
-
// Wallet connection animations
|
|
2887
|
-
wallet: {
|
|
2888
|
-
connecting: () => "animate-pulse bg-gradient-to-r from-blue-500 via-purple-500 to-blue-500 bg-[length:200%_100%] animate-shimmer-bg",
|
|
2889
|
-
connected: () => "animate-bounce-gentle bg-gradient-to-r from-green-400 to-blue-500",
|
|
2890
|
-
disconnected: () => "animate-fade-out opacity-50",
|
|
2891
|
-
error: () => "animate-shake bg-red-100 dark:bg-red-900/20"
|
|
2892
|
-
},
|
|
2893
|
-
// Transaction animations
|
|
2894
|
-
transaction: {
|
|
2895
|
-
pending: () => "animate-pulse border border-yellow-300 bg-yellow-50 dark:border-yellow-700 dark:bg-yellow-900/20",
|
|
2896
|
-
confirming: () => "animate-progress-dots bg-gradient-to-r from-blue-500 to-purple-500",
|
|
2897
|
-
confirmed: () => "animate-success-pulse border border-green-300 bg-green-50 dark:border-green-700 dark:bg-green-900/20",
|
|
2898
|
-
failed: () => "animate-error-flash border border-red-300 bg-red-50 dark:border-red-700 dark:bg-red-900/20"
|
|
2899
|
-
},
|
|
2900
|
-
// Blockchain activity
|
|
2901
|
-
blockchain: {
|
|
2902
|
-
mining: () => "animate-mining-pulse bg-gradient-to-r from-yellow-400 via-orange-500 to-yellow-400 bg-[length:200%_100%]",
|
|
2903
|
-
minting: () => "animate-rainbow bg-gradient-to-r from-pink-500 via-purple-500 via-blue-500 to-pink-500 bg-[length:300%_100%]",
|
|
2904
|
-
staking: () => "animate-glow-pulse bg-gradient-to-r from-green-400 to-emerald-500",
|
|
2905
|
-
burning: () => "animate-fire bg-gradient-to-r from-red-500 via-orange-500 to-yellow-500 bg-[length:200%_100%]"
|
|
2906
|
-
}
|
|
2907
|
-
},
|
|
2908
|
-
// Utility animations
|
|
2909
|
-
utility: {
|
|
2910
|
-
// Attention grabbing
|
|
2911
|
-
attention: {
|
|
2912
|
-
bounce: () => "animate-bounce",
|
|
2913
|
-
pulse: () => "animate-pulse",
|
|
2914
|
-
ping: () => "animate-ping",
|
|
2915
|
-
shake: () => "animate-shake",
|
|
2916
|
-
wiggle: () => "animate-wiggle",
|
|
2917
|
-
heartbeat: () => "animate-heartbeat"
|
|
2918
|
-
},
|
|
2919
|
-
// State indicators
|
|
2920
|
-
state: {
|
|
2921
|
-
success: () => "animate-success-checkmark",
|
|
2922
|
-
error: () => "animate-error-x",
|
|
2923
|
-
warning: () => "animate-warning-triangle",
|
|
2924
|
-
info: () => "animate-info-circle"
|
|
2925
|
-
},
|
|
2926
|
-
// Performance considerations
|
|
2927
|
-
reduced: {
|
|
2928
|
-
// Reduced motion variants for accessibility
|
|
2929
|
-
fadeOnly: () => "transition-opacity duration-300 ease-out",
|
|
2930
|
-
scaleOnly: () => "transition-transform duration-200 ease-out",
|
|
2931
|
-
instant: () => "transition-none",
|
|
2932
|
-
respectPrefers: () => "motion-safe:transition-all motion-safe:duration-300 motion-reduce:transition-none"
|
|
2933
|
-
}
|
|
2934
|
-
}
|
|
2935
|
-
},
|
|
2936
|
-
// Accessibility & A11Y variants
|
|
2937
|
-
accessibility: {
|
|
2938
|
-
// Screen reader and assistive technology support
|
|
2939
|
-
screenReader: {
|
|
2940
|
-
// Visually hidden but accessible to screen readers
|
|
2941
|
-
only: () => "sr-only",
|
|
2942
|
-
focusable: () => "sr-only focus:not-sr-only focus:absolute focus:top-0 focus:left-0 focus:z-50 focus:p-2 focus:bg-white focus:text-black focus:border focus:rounded",
|
|
2943
|
-
// Skip links for navigation
|
|
2944
|
-
skipLink: () => "sr-only focus:not-sr-only focus:absolute focus:top-0 focus:left-0 focus:z-50 focus:px-4 focus:py-2 focus:bg-blue-600 focus:text-white focus:rounded focus:m-2 focus:no-underline"
|
|
2945
|
-
},
|
|
2946
|
-
// Focus management
|
|
2947
|
-
focus: {
|
|
2948
|
-
// Focus indicators
|
|
2949
|
-
ring: () => "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2",
|
|
2950
|
-
ringInset: () => "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-blue-500",
|
|
2951
|
-
ringDark: () => "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-400 focus-visible:ring-offset-2 focus-visible:ring-offset-gray-900",
|
|
2952
|
-
// High contrast focus for better visibility
|
|
2953
|
-
highContrast: () => "focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-yellow-400 focus-visible:ring-offset-2 focus-visible:bg-yellow-50 dark:focus-visible:bg-yellow-900/20",
|
|
2954
|
-
// Web3 specific focus styles
|
|
2955
|
-
wallet: () => "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 focus-visible:bg-blue-50 dark:focus-visible:bg-blue-900/20",
|
|
2956
|
-
transaction: () => "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-green-500 focus-visible:ring-offset-2",
|
|
2957
|
-
error: () => "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-2"
|
|
2958
|
-
},
|
|
2959
|
-
// Color contrast and visibility
|
|
2960
|
-
contrast: {
|
|
2961
|
-
// High contrast text
|
|
2962
|
-
text: {
|
|
2963
|
-
high: () => "text-gray-900 dark:text-gray-100",
|
|
2964
|
-
medium: () => "text-gray-700 dark:text-gray-300",
|
|
2965
|
-
low: () => "text-gray-600 dark:text-gray-400",
|
|
2966
|
-
inverse: () => "text-white dark:text-gray-900"
|
|
2967
|
-
},
|
|
2968
|
-
// High contrast backgrounds
|
|
2969
|
-
background: {
|
|
2970
|
-
primary: () => "bg-blue-700 text-white dark:bg-blue-300 dark:text-gray-900",
|
|
2971
|
-
secondary: () => "bg-gray-700 text-white dark:bg-gray-300 dark:text-gray-900",
|
|
2972
|
-
success: () => "bg-green-700 text-white dark:bg-green-300 dark:text-gray-900",
|
|
2973
|
-
warning: () => "bg-yellow-700 text-white dark:bg-yellow-300 dark:text-gray-900",
|
|
2974
|
-
error: () => "bg-red-700 text-white dark:bg-red-300 dark:text-gray-900"
|
|
2975
|
-
},
|
|
2976
|
-
// Link contrast
|
|
2977
|
-
link: {
|
|
2978
|
-
default: () => "text-blue-700 dark:text-blue-300 underline hover:text-blue-900 dark:hover:text-blue-100",
|
|
2979
|
-
visited: () => "text-purple-700 dark:text-purple-300 underline hover:text-purple-900 dark:hover:text-purple-100"
|
|
2980
|
-
}
|
|
2981
|
-
},
|
|
2982
|
-
// Motion and animation preferences
|
|
2983
|
-
motion: {
|
|
2984
|
-
// Respect user's motion preferences
|
|
2985
|
-
respectPrefers: () => "motion-safe:transition-all motion-safe:duration-300 motion-reduce:transition-none",
|
|
2986
|
-
reduceMotion: () => "motion-reduce:transition-none motion-reduce:animate-none",
|
|
2987
|
-
// Safe animations that work with reduced motion
|
|
2988
|
-
safe: {
|
|
2989
|
-
fade: () => "motion-safe:transition-opacity motion-safe:duration-300 motion-reduce:transition-none",
|
|
2990
|
-
scale: () => "motion-safe:transition-transform motion-safe:duration-200 motion-reduce:transition-none",
|
|
2991
|
-
slide: () => "motion-safe:transition-transform motion-safe:duration-300 motion-reduce:transition-none"
|
|
2992
|
-
},
|
|
2993
|
-
// Loading animations that respect motion preferences
|
|
2994
|
-
loading: {
|
|
2995
|
-
spin: () => "motion-safe:animate-spin motion-reduce:animate-none",
|
|
2996
|
-
pulse: () => "motion-safe:animate-pulse motion-reduce:animate-none",
|
|
2997
|
-
bounce: () => "motion-safe:animate-bounce motion-reduce:animate-none"
|
|
2998
|
-
}
|
|
2999
|
-
},
|
|
3000
|
-
// Semantic HTML and roles
|
|
3001
|
-
semantic: {
|
|
3002
|
-
// Interactive roles
|
|
3003
|
-
interactive: {
|
|
3004
|
-
button: () => 'role="button" tabindex="0"',
|
|
3005
|
-
link: () => 'role="link"',
|
|
3006
|
-
menuitem: () => 'role="menuitem"',
|
|
3007
|
-
tab: () => 'role="tab"',
|
|
3008
|
-
tabpanel: () => 'role="tabpanel"',
|
|
3009
|
-
dialog: () => 'role="dialog"'
|
|
3010
|
-
},
|
|
3011
|
-
// State roles
|
|
3012
|
-
states: {
|
|
3013
|
-
selected: (i) => `aria-selected="${i}"`,
|
|
3014
|
-
checked: (i) => `aria-checked="${i}"`,
|
|
3015
|
-
pressed: (i) => `aria-pressed="${i}"`,
|
|
3016
|
-
expanded: (i) => `aria-expanded="${i}"`,
|
|
3017
|
-
disabled: (i) => i ? 'aria-disabled="true" tabindex="-1"' : ""
|
|
3018
|
-
},
|
|
3019
|
-
// Web3 specific semantic patterns
|
|
3020
|
-
web3: {
|
|
3021
|
-
wallet: () => 'role="button" aria-label="Connect Wallet"',
|
|
3022
|
-
transaction: () => 'role="status" aria-live="polite"',
|
|
3023
|
-
balance: () => 'role="text" aria-label="Account Balance"',
|
|
3024
|
-
address: () => 'role="text" aria-label="Wallet Address"'
|
|
3025
|
-
}
|
|
3026
|
-
},
|
|
3027
|
-
// Form accessibility
|
|
3028
|
-
form: {
|
|
3029
|
-
// Required field indicators
|
|
3030
|
-
required: {
|
|
3031
|
-
indicator: () => "text-red-500 dark:text-red-400",
|
|
3032
|
-
text: () => 'aria-required="true" required',
|
|
3033
|
-
visual: () => 'after:content-["*"] after:ml-1 after:text-red-500 dark:after:text-red-400'
|
|
3034
|
-
},
|
|
3035
|
-
// Validation states
|
|
3036
|
-
validation: {
|
|
3037
|
-
valid: () => "border-green-500 dark:border-green-400 focus:ring-green-500",
|
|
3038
|
-
invalid: () => 'border-red-500 dark:border-red-400 focus:ring-red-500 aria-invalid="true"',
|
|
3039
|
-
pending: () => "border-yellow-500 dark:border-yellow-400 focus:ring-yellow-500"
|
|
3040
|
-
}
|
|
3041
|
-
},
|
|
3042
|
-
// Interactive patterns
|
|
3043
|
-
interactive: {
|
|
3044
|
-
// Button patterns
|
|
3045
|
-
button: {
|
|
3046
|
-
primary: () => "inline-flex items-center justify-center px-4 py-2 border border-transparent text-sm font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
3047
|
-
secondary: () => "inline-flex items-center justify-center px-4 py-2 border border-gray-300 text-sm font-medium rounded-md text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
3048
|
-
// Icon buttons with proper labels
|
|
3049
|
-
icon: () => "inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500"
|
|
3050
|
-
},
|
|
3051
|
-
// Link patterns
|
|
3052
|
-
link: {
|
|
3053
|
-
default: () => "text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200 underline focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",
|
|
3054
|
-
external: () => 'text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200 underline focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 after:content-["↗"] after:ml-1 after:text-xs'
|
|
3055
|
-
}
|
|
3056
|
-
},
|
|
3057
|
-
// Text and content accessibility
|
|
3058
|
-
content: {
|
|
3059
|
-
// Text sizing and scaling
|
|
3060
|
-
text: {
|
|
3061
|
-
minimum: () => "text-sm min-h-[44px] min-w-[44px]",
|
|
3062
|
-
// WCAG minimum touch target
|
|
3063
|
-
touch: () => "min-h-[44px] min-w-[44px] touch-manipulation"
|
|
3064
|
-
}
|
|
3065
|
-
},
|
|
3066
|
-
// Error handling and feedback
|
|
3067
|
-
feedback: {
|
|
3068
|
-
// Error messages
|
|
3069
|
-
error: {
|
|
3070
|
-
container: () => "border border-red-300 dark:border-red-700 bg-red-50 dark:bg-red-900/20 rounded-md p-4",
|
|
3071
|
-
title: () => "text-sm font-medium text-red-800 dark:text-red-200",
|
|
3072
|
-
message: () => "text-sm text-red-700 dark:text-red-300 mt-2"
|
|
3073
|
-
},
|
|
3074
|
-
// Success messages
|
|
3075
|
-
success: {
|
|
3076
|
-
container: () => "border border-green-300 dark:border-green-700 bg-green-50 dark:bg-green-900/20 rounded-md p-4",
|
|
3077
|
-
title: () => "text-sm font-medium text-green-800 dark:text-green-200",
|
|
3078
|
-
message: () => "text-sm text-green-700 dark:text-green-300 mt-2"
|
|
3079
|
-
},
|
|
3080
|
-
// Live regions for dynamic content
|
|
3081
|
-
liveRegion: {
|
|
3082
|
-
polite: () => 'sr-only aria-live="polite"',
|
|
3083
|
-
assertive: () => 'sr-only aria-live="assertive"',
|
|
3084
|
-
status: () => 'sr-only role="status" aria-live="polite"',
|
|
3085
|
-
alert: () => 'sr-only role="alert" aria-live="assertive"'
|
|
3086
|
-
}
|
|
3087
|
-
}
|
|
3088
|
-
},
|
|
3089
|
-
// Performance & Optimization variants
|
|
3090
|
-
performance: {
|
|
3091
|
-
// Bundle optimization patterns
|
|
3092
|
-
bundle: {
|
|
3093
|
-
// Lazy loading utilities
|
|
3094
|
-
lazy: {
|
|
3095
|
-
component: () => "opacity-0 transition-opacity duration-300",
|
|
3096
|
-
componentLoaded: () => "opacity-100",
|
|
3097
|
-
image: () => "blur-sm transition-all duration-300",
|
|
3098
|
-
imageLoaded: () => "blur-none",
|
|
3099
|
-
skeleton: () => "animate-pulse bg-gray-200 dark:bg-gray-700 rounded"
|
|
3100
|
-
},
|
|
3101
|
-
// Code splitting indicators
|
|
3102
|
-
splitting: {
|
|
3103
|
-
loading: () => "flex items-center justify-center py-8",
|
|
3104
|
-
error: () => "text-red-600 dark:text-red-400 text-center py-8",
|
|
3105
|
-
fallback: () => "bg-gray-100 dark:bg-gray-800 animate-pulse rounded"
|
|
3106
|
-
}
|
|
3107
|
-
},
|
|
3108
|
-
// Rendering optimization
|
|
3109
|
-
rendering: {
|
|
3110
|
-
// GPU acceleration utilities
|
|
3111
|
-
gpu: {
|
|
3112
|
-
transform: () => "transform-gpu",
|
|
3113
|
-
layer: () => "will-change-transform transform translate3d-0",
|
|
3114
|
-
composite: () => "backface-hidden"
|
|
3115
|
-
},
|
|
3116
|
-
// Layout optimization
|
|
3117
|
-
layout: {
|
|
3118
|
-
// Prevent layout shifts
|
|
3119
|
-
stable: () => "aspect-square",
|
|
3120
|
-
containLayout: () => "contain-layout",
|
|
3121
|
-
containStyle: () => "contain-style",
|
|
3122
|
-
// Efficient positioning
|
|
3123
|
-
sticky: () => "sticky top-0 z-40",
|
|
3124
|
-
fixed: () => "fixed inset-0 z-50"
|
|
3125
|
-
},
|
|
3126
|
-
// Memory optimization
|
|
3127
|
-
memory: {
|
|
3128
|
-
// Efficient list rendering
|
|
3129
|
-
virtualList: () => "overflow-hidden",
|
|
3130
|
-
virtualItem: () => "absolute left-0 right-0",
|
|
3131
|
-
// Image optimization
|
|
3132
|
-
responsiveImage: () => "max-w-full h-auto object-cover",
|
|
3133
|
-
lazyImage: () => "object-cover transition-opacity duration-300 opacity-0",
|
|
3134
|
-
loadedImage: () => "opacity-100"
|
|
3135
|
-
}
|
|
3136
|
-
},
|
|
3137
|
-
// Network optimization
|
|
3138
|
-
network: {
|
|
3139
|
-
// Caching patterns
|
|
3140
|
-
cache: {
|
|
3141
|
-
// Service worker states
|
|
3142
|
-
cached: () => "border-l-4 border-green-500 bg-green-50 dark:bg-green-900/20",
|
|
3143
|
-
updating: () => "border-l-4 border-blue-500 bg-blue-50 dark:bg-blue-900/20",
|
|
3144
|
-
offline: () => "border-l-4 border-gray-500 bg-gray-50 dark:bg-gray-900/20",
|
|
3145
|
-
error: () => "border-l-4 border-red-500 bg-red-50 dark:bg-red-900/20",
|
|
3146
|
-
// Cache status indicators
|
|
3147
|
-
fresh: () => "text-green-600 dark:text-green-400",
|
|
3148
|
-
stale: () => "text-yellow-600 dark:text-yellow-400",
|
|
3149
|
-
expired: () => "text-red-600 dark:text-red-400"
|
|
3150
|
-
},
|
|
3151
|
-
// Connection quality
|
|
3152
|
-
connection: {
|
|
3153
|
-
fast: () => "border-green-500 bg-green-50 dark:bg-green-900/20",
|
|
3154
|
-
slow: () => "border-yellow-500 bg-yellow-50 dark:bg-yellow-900/20",
|
|
3155
|
-
offline: () => "border-red-500 bg-red-50 dark:bg-red-900/20"
|
|
3156
|
-
}
|
|
3157
|
-
},
|
|
3158
|
-
// Core Web Vitals optimization
|
|
3159
|
-
webVitals: {
|
|
3160
|
-
// Largest Contentful Paint (LCP)
|
|
3161
|
-
lcp: {
|
|
3162
|
-
optimize: () => "will-change-contents",
|
|
3163
|
-
hero: () => "contain-layout will-change-contents",
|
|
3164
|
-
image: () => "object-cover will-change-auto"
|
|
3165
|
-
},
|
|
3166
|
-
// First Input Delay (FID) / Interaction to Next Paint (INP)
|
|
3167
|
-
interactivity: {
|
|
3168
|
-
optimize: () => "touch-manipulation select-none",
|
|
3169
|
-
debounced: () => "transition-none",
|
|
3170
|
-
throttled: () => "pointer-events-none transition-opacity duration-100",
|
|
3171
|
-
ready: () => "pointer-events-auto opacity-100"
|
|
3172
|
-
},
|
|
3173
|
-
// Cumulative Layout Shift (CLS)
|
|
3174
|
-
layoutStability: {
|
|
3175
|
-
// Prevent layout shifts
|
|
3176
|
-
stable: () => "aspect-square contain-layout",
|
|
3177
|
-
placeholder: () => "min-h-[200px] bg-gray-100 dark:bg-gray-800",
|
|
3178
|
-
skeleton: () => "animate-pulse bg-gray-200 dark:bg-gray-700",
|
|
3179
|
-
// Image container stability
|
|
3180
|
-
imageContainer: () => "overflow-hidden relative",
|
|
3181
|
-
imageStable: () => "absolute inset-0 object-cover"
|
|
3182
|
-
}
|
|
3183
|
-
},
|
|
3184
|
-
// Web3 Performance optimization
|
|
3185
|
-
web3: {
|
|
3186
|
-
// Wallet connection optimization
|
|
3187
|
-
wallet: {
|
|
3188
|
-
cached: () => "opacity-100 transition-opacity duration-200",
|
|
3189
|
-
connecting: () => "opacity-75 cursor-wait",
|
|
3190
|
-
staleData: () => "opacity-75",
|
|
3191
|
-
freshData: () => "opacity-100"
|
|
3192
|
-
},
|
|
3193
|
-
// Transaction optimization
|
|
3194
|
-
transaction: {
|
|
3195
|
-
// Batching indicators
|
|
3196
|
-
batched: () => "border-l-4 border-blue-500 bg-blue-50 dark:bg-blue-900/20",
|
|
3197
|
-
individual: () => "border-l-4 border-gray-500 bg-gray-50 dark:bg-gray-900/20",
|
|
3198
|
-
// Gas optimization
|
|
3199
|
-
gasOptimal: () => "text-green-600 dark:text-green-400",
|
|
3200
|
-
gasHigh: () => "text-yellow-600 dark:text-yellow-400",
|
|
3201
|
-
gasVeryHigh: () => "text-red-600 dark:text-red-400"
|
|
3202
|
-
},
|
|
3203
|
-
// Blockchain data optimization
|
|
3204
|
-
blockchain: {
|
|
3205
|
-
// Data freshness
|
|
3206
|
-
realtime: () => "border-green-500 bg-green-50 dark:bg-green-900/20",
|
|
3207
|
-
cached: () => "border-blue-500 bg-blue-50 dark:bg-blue-900/20",
|
|
3208
|
-
stale: () => "border-yellow-500 bg-yellow-50 dark:bg-yellow-900/20",
|
|
3209
|
-
// Query optimization
|
|
3210
|
-
optimistic: () => "opacity-75 transition-opacity duration-200",
|
|
3211
|
-
confirmed: () => "opacity-100",
|
|
3212
|
-
refetching: () => "animate-pulse"
|
|
3213
|
-
}
|
|
3214
|
-
},
|
|
3215
|
-
// Monitoring and debugging
|
|
3216
|
-
monitoring: {
|
|
3217
|
-
// Performance metrics
|
|
3218
|
-
metrics: {
|
|
3219
|
-
good: () => "text-green-600 dark:text-green-400 bg-green-100 dark:bg-green-900/20",
|
|
3220
|
-
needsImprovement: () => "text-yellow-600 dark:text-yellow-400 bg-yellow-100 dark:bg-yellow-900/20",
|
|
3221
|
-
poor: () => "text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/20"
|
|
3222
|
-
},
|
|
3223
|
-
// Error boundaries
|
|
3224
|
-
errorBoundary: {
|
|
3225
|
-
container: () => "border border-red-300 dark:border-red-700 bg-red-50 dark:bg-red-900/20 rounded-lg p-4",
|
|
3226
|
-
title: () => "text-lg font-semibold text-red-800 dark:text-red-200",
|
|
3227
|
-
message: () => "text-red-700 dark:text-red-300 mt-2",
|
|
3228
|
-
retry: () => "mt-4 px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500",
|
|
3229
|
-
fallback: () => "text-center text-gray-500 dark:text-gray-400 py-8"
|
|
3230
|
-
}
|
|
3231
|
-
},
|
|
3232
|
-
// Resource optimization
|
|
3233
|
-
resource: {
|
|
3234
|
-
// Image optimization
|
|
3235
|
-
image: {
|
|
3236
|
-
// Responsive images
|
|
3237
|
-
responsive: () => "w-full h-auto object-cover",
|
|
3238
|
-
hero: () => "w-full h-[50vh] object-cover",
|
|
3239
|
-
thumbnail: () => "w-16 h-16 object-cover rounded",
|
|
3240
|
-
avatar: () => "w-10 h-10 object-cover rounded-full",
|
|
3241
|
-
// Loading states
|
|
3242
|
-
placeholder: () => "bg-gray-200 dark:bg-gray-700 animate-pulse",
|
|
3243
|
-
blurred: () => "filter blur-sm",
|
|
3244
|
-
sharp: () => "filter blur-none transition-all duration-300"
|
|
3245
|
-
},
|
|
3246
|
-
// Critical resources
|
|
3247
|
-
critical: {
|
|
3248
|
-
// Above the fold
|
|
3249
|
-
aboveFold: () => "will-change-contents",
|
|
3250
|
-
belowFold: () => "will-change-auto"
|
|
3251
|
-
}
|
|
3252
|
-
},
|
|
3253
|
-
// Database and API optimization
|
|
3254
|
-
data: {
|
|
3255
|
-
// Query optimization
|
|
3256
|
-
query: {
|
|
3257
|
-
cached: () => "opacity-100",
|
|
3258
|
-
loading: () => "opacity-75 animate-pulse",
|
|
3259
|
-
error: () => "opacity-50 text-red-600 dark:text-red-400",
|
|
3260
|
-
// REST optimization
|
|
3261
|
-
fresh: () => "border-l-2 border-green-500",
|
|
3262
|
-
stale: () => "border-l-2 border-yellow-500",
|
|
3263
|
-
invalid: () => "border-l-2 border-red-500",
|
|
3264
|
-
// Optimistic updates
|
|
3265
|
-
optimistic: () => "opacity-75",
|
|
3266
|
-
confirmed: () => "opacity-100",
|
|
3267
|
-
reverted: () => "opacity-50 line-through"
|
|
3268
|
-
},
|
|
3269
|
-
// Real-time optimization
|
|
3270
|
-
realtime: {
|
|
3271
|
-
// WebSocket states
|
|
3272
|
-
connected: () => "border-green-500 bg-green-50 dark:bg-green-900/20",
|
|
3273
|
-
connecting: () => "border-yellow-500 bg-yellow-50 dark:bg-yellow-900/20",
|
|
3274
|
-
disconnected: () => "border-red-500 bg-red-50 dark:bg-red-900/20",
|
|
3275
|
-
// Update indicators
|
|
3276
|
-
live: () => "animate-pulse text-green-600 dark:text-green-400",
|
|
3277
|
-
delayed: () => "text-yellow-600 dark:text-yellow-400",
|
|
3278
|
-
offline: () => "text-gray-500 dark:text-gray-400"
|
|
3279
|
-
}
|
|
3280
|
-
}
|
|
3281
|
-
}
|
|
3282
|
-
};
|
|
3283
|
-
class s {
|
|
3284
|
-
constructor(t) {
|
|
3285
|
-
this.fallbacks = /* @__PURE__ */ new Map(), this.variants = t, this.setupDefaultFallbacks();
|
|
3286
|
-
}
|
|
3287
|
-
setupDefaultFallbacks() {
|
|
3288
|
-
this.fallbacks.set("button.primary", "bg-blue-600 text-white px-4 py-2 rounded"), this.fallbacks.set("button.secondary", "bg-gray-200 text-gray-900 px-4 py-2 rounded"), this.fallbacks.set("button.outline", "border border-gray-300 text-gray-700 px-4 py-2 rounded"), this.fallbacks.set("alert.default", "bg-blue-50 border border-blue-200 text-blue-800 p-4 rounded"), this.fallbacks.set("alert.destructive", "bg-red-50 border border-red-200 text-red-800 p-4 rounded"), this.fallbacks.set("input.default", "border border-gray-300 px-3 py-2 rounded focus:ring-2 focus:ring-blue-500"), this.fallbacks.set("badge.default", "bg-gray-100 text-gray-800 px-2 py-1 rounded text-sm");
|
|
3289
|
-
}
|
|
3290
|
-
/**
|
|
3291
|
-
* Get variant classes - the main API
|
|
3292
|
-
* Usage: variants.get('button', 'primary') or variants.get('button.primary')
|
|
3293
|
-
*/
|
|
3294
|
-
get(t, a) {
|
|
3295
|
-
if (!a && t.includes(".")) {
|
|
3296
|
-
const [o, d] = t.split(".", 2);
|
|
3297
|
-
return this.get(o, d);
|
|
3298
|
-
}
|
|
3299
|
-
a || (a = "default");
|
|
3300
|
-
try {
|
|
3301
|
-
const o = this.variants[t];
|
|
3302
|
-
if (!o)
|
|
3303
|
-
return this.getFallback(t, a);
|
|
3304
|
-
const d = o[a];
|
|
3305
|
-
if (typeof d == "function")
|
|
3306
|
-
return d();
|
|
3307
|
-
if (typeof d == "string")
|
|
3308
|
-
return d;
|
|
3309
|
-
if (d && typeof d == "object") {
|
|
3310
|
-
if (typeof d.default == "function")
|
|
3311
|
-
return d.default();
|
|
3312
|
-
if (typeof d.default == "string")
|
|
3313
|
-
return d.default;
|
|
3314
|
-
}
|
|
3315
|
-
return this.getFallback(t, a);
|
|
3316
|
-
} catch (o) {
|
|
3317
|
-
return console.warn(`Failed to get variant ${t}.${a}:`, o), this.getFallback(t, a);
|
|
3318
|
-
}
|
|
3319
|
-
}
|
|
3320
|
-
/**
|
|
3321
|
-
* Get sized variant
|
|
3322
|
-
* Usage: variants.sized('button', 'primary', 'sm')
|
|
3323
|
-
*/
|
|
3324
|
-
sized(t, a, o) {
|
|
3325
|
-
try {
|
|
3326
|
-
const n = this.variants[t]?.[a];
|
|
3327
|
-
if (n && typeof n == "object" && n[o]) {
|
|
3328
|
-
const l = n[o];
|
|
3329
|
-
if (typeof l == "function")
|
|
3330
|
-
return l();
|
|
3331
|
-
if (typeof l == "string")
|
|
3332
|
-
return l;
|
|
3333
|
-
}
|
|
3334
|
-
return this.get(t, a);
|
|
3335
|
-
} catch (d) {
|
|
3336
|
-
return console.warn(`Failed to get sized variant ${t}.${a}.${o}:`, d), this.get(t, a);
|
|
3337
|
-
}
|
|
3338
|
-
}
|
|
3339
|
-
/**
|
|
3340
|
-
* Get nested variant (for complex paths)
|
|
3341
|
-
* Usage: variants.nested('button.gradient.primary')
|
|
3342
|
-
*/
|
|
3343
|
-
nested(t) {
|
|
3344
|
-
try {
|
|
3345
|
-
const a = t.split(".");
|
|
3346
|
-
let o = this.variants;
|
|
3347
|
-
for (const d of a)
|
|
3348
|
-
if (o = o?.[d], !o) break;
|
|
3349
|
-
return typeof o == "function" ? o() : typeof o == "string" ? o : o && typeof o.default == "function" ? o.default() : o && typeof o.default == "string" ? o.default : this.getFallback(a[0], a.slice(1).join("."));
|
|
3350
|
-
} catch (a) {
|
|
3351
|
-
return console.warn(`Failed to get nested variant ${t}:`, a), this.getFallback(t.split(".")[0], t.split(".").slice(1).join("."));
|
|
3352
|
-
}
|
|
3353
|
-
}
|
|
3354
|
-
/**
|
|
3355
|
-
* Conditional variant selection
|
|
3356
|
-
* Usage: variants.when(isError, 'alert', 'destructive', 'alert', 'default')
|
|
3357
|
-
*/
|
|
3358
|
-
when(t, a, o, d, n) {
|
|
3359
|
-
return t ? this.get(a, o) : d && n ? this.get(d, n) : "";
|
|
3360
|
-
}
|
|
3361
|
-
/**
|
|
3362
|
-
* Combine multiple variants
|
|
3363
|
-
* Usage: variants.combine('button.primary', 'animations.hover', 'custom-class')
|
|
3364
|
-
*/
|
|
3365
|
-
combine(...t) {
|
|
3366
|
-
return t.map((a) => a.includes(".") ? this.nested(a) : a).filter(Boolean).join(" ");
|
|
3367
|
-
}
|
|
3368
|
-
getFallback(t, a) {
|
|
3369
|
-
const o = `${t}.${a}`;
|
|
3370
|
-
return this.fallbacks.get(o) || this.fallbacks.get(`${t}.default`) || "";
|
|
3371
|
-
}
|
|
3372
|
-
/**
|
|
3373
|
-
* Add custom fallback
|
|
3374
|
-
*/
|
|
3375
|
-
addFallback(t, a) {
|
|
3376
|
-
this.fallbacks.set(t, a);
|
|
3377
|
-
}
|
|
3378
|
-
/**
|
|
3379
|
-
* Check if variant exists
|
|
3380
|
-
*/
|
|
3381
|
-
has(t, a) {
|
|
3382
|
-
try {
|
|
3383
|
-
const o = this.variants[t];
|
|
3384
|
-
return !!(o && o[a]);
|
|
3385
|
-
} catch {
|
|
3386
|
-
return !1;
|
|
3387
|
-
}
|
|
3388
|
-
}
|
|
3389
|
-
}
|
|
3390
|
-
function v(i) {
|
|
3391
|
-
return new s(i);
|
|
3392
|
-
}
|
|
3393
|
-
function $(i) {
|
|
3394
|
-
const t = new s(i);
|
|
3395
|
-
return {
|
|
3396
|
-
// Direct access functions
|
|
3397
|
-
button: (a, o) => o ? t.sized("button", a, o) : t.get("button", a),
|
|
3398
|
-
alert: (a) => t.get("alert", a),
|
|
3399
|
-
input: (a) => t.get("input", a),
|
|
3400
|
-
badge: (a) => t.get("badge", a),
|
|
3401
|
-
// Generic access
|
|
3402
|
-
get: (a, o) => t.get(a, o),
|
|
3403
|
-
nested: (a) => t.nested(a),
|
|
3404
|
-
when: (a, o, d, n, l) => t.when(a, o, d, n, l),
|
|
3405
|
-
combine: (...a) => t.combine(...a)
|
|
3406
|
-
};
|
|
3407
|
-
}
|
|
3408
|
-
const j = {
|
|
3409
|
-
// Layout utilities
|
|
3410
|
-
layout: {
|
|
3411
|
-
container: "mx-auto max-w-7xl px-4 sm:px-6 lg:px-8",
|
|
3412
|
-
containerSmall: "mx-auto max-w-3xl px-4 sm:px-6 lg:px-8",
|
|
3413
|
-
containerLarge: "mx-auto max-w-full px-4 sm:px-6 lg:px-8",
|
|
3414
|
-
section: "py-8 sm:py-12 lg:py-16",
|
|
3415
|
-
sectionSmall: "py-6 sm:py-8 lg:py-10",
|
|
3416
|
-
flex: "flex items-center justify-between",
|
|
3417
|
-
flexCenter: "flex items-center justify-center",
|
|
3418
|
-
flexCol: "flex flex-col",
|
|
3419
|
-
grid: "grid grid-cols-1 gap-6",
|
|
3420
|
-
gridMd: "grid grid-cols-1 md:grid-cols-2 gap-6",
|
|
3421
|
-
gridLg: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"
|
|
3422
|
-
},
|
|
3423
|
-
// Background utilities
|
|
3424
|
-
background: {
|
|
3425
|
-
surface: "bg-white dark:bg-gray-800",
|
|
3426
|
-
subtle: "bg-gray-50 dark:bg-gray-900",
|
|
3427
|
-
muted: "bg-gray-100 dark:bg-gray-700",
|
|
3428
|
-
overlay: "bg-black/50 dark:bg-black/70"
|
|
3429
|
-
},
|
|
3430
|
-
// Border utilities
|
|
3431
|
-
border: {
|
|
3432
|
-
default: "border-gray-200 dark:border-gray-700",
|
|
3433
|
-
subtle: "border-gray-100 dark:border-gray-800",
|
|
3434
|
-
radius: "rounded-lg",
|
|
3435
|
-
radiusSm: "rounded-md",
|
|
3436
|
-
radiusLg: "rounded-xl",
|
|
3437
|
-
radiusFull: "rounded-full"
|
|
3438
|
-
},
|
|
3439
|
-
// Shadow utilities
|
|
3440
|
-
shadow: {
|
|
3441
|
-
sm: "shadow-sm",
|
|
3442
|
-
md: "shadow-md",
|
|
3443
|
-
lg: "shadow-lg",
|
|
3444
|
-
xl: "shadow-xl"
|
|
3445
|
-
},
|
|
3446
|
-
// Spacing utilities
|
|
3447
|
-
spacing: {
|
|
3448
|
-
card: {
|
|
3449
|
-
sm: "p-4",
|
|
3450
|
-
md: "p-6",
|
|
3451
|
-
lg: "p-8"
|
|
3452
|
-
},
|
|
3453
|
-
section: {
|
|
3454
|
-
sm: "py-6 px-4",
|
|
3455
|
-
md: "py-8 px-6",
|
|
3456
|
-
lg: "py-12 px-8"
|
|
3457
|
-
}
|
|
3458
|
-
},
|
|
3459
|
-
// Typography utilities - Enhanced with design system
|
|
3460
|
-
text: {
|
|
3461
|
-
// Headings
|
|
3462
|
-
h1: "text-3xl sm:text-4xl lg:text-5xl font-bold text-gray-900 dark:text-white leading-tight tracking-tight",
|
|
3463
|
-
h2: "text-2xl sm:text-3xl lg:text-4xl font-bold text-gray-900 dark:text-white leading-tight tracking-tight",
|
|
3464
|
-
h3: "text-xl sm:text-2xl font-semibold text-gray-900 dark:text-white leading-tight tracking-tight",
|
|
3465
|
-
h4: "text-lg sm:text-xl font-semibold text-gray-900 dark:text-white leading-tight tracking-tight",
|
|
3466
|
-
h5: "text-base sm:text-lg font-semibold text-gray-900 dark:text-white leading-tight tracking-tight",
|
|
3467
|
-
h6: "text-base font-semibold text-gray-900 dark:text-white leading-tight tracking-tight",
|
|
3468
|
-
// Display headings
|
|
3469
|
-
display: "text-4xl sm:text-5xl md:text-6xl lg:text-7xl xl:text-8xl font-extrabold text-gray-900 dark:text-white leading-none tracking-tight",
|
|
3470
|
-
hero: "text-6xl sm:text-7xl md:text-8xl lg:text-9xl font-black text-gray-900 dark:text-white leading-none tracking-tight",
|
|
3471
|
-
// Body text
|
|
3472
|
-
body: "text-base font-normal text-gray-700 dark:text-gray-300 leading-relaxed",
|
|
3473
|
-
bodyLarge: "text-lg font-normal text-gray-700 dark:text-gray-300 leading-relaxed",
|
|
3474
|
-
bodySmall: "text-sm font-normal text-gray-600 dark:text-gray-400 leading-relaxed",
|
|
3475
|
-
// Lead text (introductory paragraphs)
|
|
3476
|
-
lead: "text-xl font-normal text-gray-700 dark:text-gray-300 leading-relaxed",
|
|
3477
|
-
leadLarge: "text-2xl font-normal text-gray-700 dark:text-gray-300 leading-relaxed",
|
|
3478
|
-
// Specialized text
|
|
3479
|
-
caption: "text-sm font-normal text-gray-500 dark:text-gray-500 leading-normal",
|
|
3480
|
-
label: "text-sm font-medium text-gray-700 dark:text-gray-300",
|
|
3481
|
-
helper: "text-sm font-normal text-gray-500 dark:text-gray-500",
|
|
3482
|
-
// Links
|
|
3483
|
-
link: "text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 underline underline-offset-2 decoration-blue-600 dark:decoration-blue-400 transition-colors duration-150",
|
|
3484
|
-
linkSubtle: "text-blue-600 dark:text-blue-400 hover:text-blue-700 dark:hover:text-blue-300 no-underline hover:underline hover:underline-offset-2 transition-all duration-150",
|
|
3485
|
-
linkMuted: "text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 underline underline-offset-2 decoration-gray-400 hover:decoration-gray-600 transition-colors duration-150",
|
|
3486
|
-
// Code text
|
|
3487
|
-
code: "font-mono text-sm font-medium text-gray-900 dark:text-gray-100 bg-gray-100 dark:bg-gray-800 px-1.5 py-0.5 rounded",
|
|
3488
|
-
codeBlock: "font-mono text-sm font-normal text-gray-900 dark:text-gray-100 bg-gray-100 dark:bg-gray-800 p-4 rounded-lg overflow-x-auto leading-relaxed",
|
|
3489
|
-
// Status text
|
|
3490
|
-
success: "text-green-700 dark:text-green-300 font-medium",
|
|
3491
|
-
warning: "text-amber-700 dark:text-amber-300 font-medium",
|
|
3492
|
-
error: "text-red-700 dark:text-red-300 font-medium",
|
|
3493
|
-
info: "text-blue-700 dark:text-blue-300 font-medium",
|
|
3494
|
-
// Emphasis variants
|
|
3495
|
-
emphasis: "font-medium text-gray-900 dark:text-gray-100",
|
|
3496
|
-
strong: "font-semibold text-gray-900 dark:text-gray-100",
|
|
3497
|
-
muted: "text-gray-500 dark:text-gray-500",
|
|
3498
|
-
// Uppercase labels
|
|
3499
|
-
uppercase: "text-xs font-semibold text-gray-500 dark:text-gray-500 uppercase tracking-wider"
|
|
3500
|
-
},
|
|
3501
|
-
// Transition utilities
|
|
3502
|
-
transition: {
|
|
3503
|
-
default: "transition-colors duration-200",
|
|
3504
|
-
all: "transition-all duration-200",
|
|
3505
|
-
fast: "transition-all duration-150",
|
|
3506
|
-
slow: "transition-all duration-300",
|
|
3507
|
-
transform: "transition-transform duration-200"
|
|
3508
|
-
},
|
|
3509
|
-
// Interactive states
|
|
3510
|
-
states: {
|
|
3511
|
-
hover: "hover:opacity-80 transition-opacity duration-200",
|
|
3512
|
-
focus: "focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",
|
|
3513
|
-
disabled: "disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none",
|
|
3514
|
-
loading: "animate-pulse"
|
|
3515
|
-
},
|
|
3516
|
-
// Web3 specific utilities
|
|
3517
|
-
web3: {
|
|
3518
|
-
walletButton: "bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-700 text-gray-900 dark:text-gray-100 inline-flex items-center gap-2 px-4 py-2 rounded-lg font-medium",
|
|
3519
|
-
chainBadge: (i) => i === "ethereum" ? "bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium" : "bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",
|
|
3520
|
-
addressText: "font-mono text-sm text-gray-600 dark:text-gray-400"
|
|
3521
|
-
}
|
|
3522
|
-
};
|
|
3523
|
-
export {
|
|
3524
|
-
p as Colors,
|
|
3525
|
-
s as SimpleVariants,
|
|
3526
|
-
e as Tokens,
|
|
3527
|
-
f as Typography,
|
|
3528
|
-
w as Variants,
|
|
3529
|
-
c as buildColorClass,
|
|
3530
|
-
p as colors,
|
|
3531
|
-
h as combineTextStyles,
|
|
3532
|
-
g as componentColors,
|
|
3533
|
-
$ as createQuickVariants,
|
|
3534
|
-
k as createResponsiveText,
|
|
3535
|
-
m as createTextStyle,
|
|
3536
|
-
v as createVariants,
|
|
3537
|
-
e as designTokens,
|
|
3538
|
-
x as getColorClasses,
|
|
3539
|
-
u as semanticColors,
|
|
3540
|
-
f as textVariants,
|
|
3541
|
-
j as ui,
|
|
3542
|
-
w as variants
|
|
3543
|
-
};
|