@l.x/mycelium 1.0.2 → 1.0.3
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/.depcheckrc +9 -0
- package/.eslintrc.js +10 -0
- package/README.md +53 -0
- package/css/animations.css +280 -0
- package/css/base.css +13 -0
- package/css/fonts.css +25 -0
- package/css/theme.css +322 -0
- package/css/variables.css +202 -0
- package/fonts/Basel-Grotesk-Book.woff +0 -0
- package/fonts/Basel-Grotesk-Book.woff2 +0 -0
- package/fonts/Basel-Grotesk-Medium.woff +0 -0
- package/fonts/Basel-Grotesk-Medium.woff2 +0 -0
- package/fonts.css +4 -0
- package/package.json +50 -1
- package/project.json +18 -0
- package/src/cn.ts +75 -0
- package/src/index.ts +8 -0
- package/src/types.ts +49 -0
- package/src/unicon/Unicon.tsx +84 -0
- package/src/unicon/colors.ts +33 -0
- package/src/unicon/hash.ts +20 -0
- package/src/unicon/icons.ts +276 -0
- package/tailwind.css +8 -0
- package/tsconfig.json +26 -0
- package/tsconfig.lint.json +8 -0
- package/index.d.ts +0 -1
- package/index.js +0 -1
package/.depcheckrc
ADDED
package/.eslintrc.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
extends: ['@luxamm/eslint-config/lib'],
|
|
3
|
+
parserOptions: {
|
|
4
|
+
tsconfigRootDir: __dirname,
|
|
5
|
+
},
|
|
6
|
+
// Note: no-relative-import-paths is disabled for mycelium because
|
|
7
|
+
// this package uses `exports` in package.json (required for ./tailwind CSS export).
|
|
8
|
+
// Packages with `exports` cannot use absolute internal imports like
|
|
9
|
+
// '@luxexchange/mycelium/src/types' since they're blocked by the exports restriction.
|
|
10
|
+
}
|
package/README.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# @universe/mycelium
|
|
2
|
+
|
|
3
|
+
Mycelium is Uniswap's shared Tailwind CSS design system for Tailwind v4.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
### CSS (in your app's main CSS file)
|
|
8
|
+
|
|
9
|
+
```css
|
|
10
|
+
@import "tailwindcss";
|
|
11
|
+
@import "@universe/mycelium/tailwind";
|
|
12
|
+
@import "@universe/mycelium/fonts"; /* Optional: for web apps */
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`@universe/mycelium/tailwind` imports:
|
|
16
|
+
- Theme tokens (colors, typography, breakpoints, border radius)
|
|
17
|
+
- CSS variables (shadows, dark mode)
|
|
18
|
+
- Base styles
|
|
19
|
+
- Animations
|
|
20
|
+
|
|
21
|
+
`@universe/mycelium/fonts` imports:
|
|
22
|
+
- Basel Grotesk font faces (bundled, no CORS issues)
|
|
23
|
+
|
|
24
|
+
### JavaScript (for the cn utility)
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { cn } from '@universe/mycelium'
|
|
28
|
+
|
|
29
|
+
// Merge class names with Tailwind conflict resolution
|
|
30
|
+
cn('text-sm', 'text-body-1') // => 'text-body-1'
|
|
31
|
+
cn('bg-red-500', isActive && 'bg-blue-500') // => conditional classes
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## What's Included
|
|
35
|
+
|
|
36
|
+
### Typography Scale
|
|
37
|
+
- `text-heading-1`, `text-heading-2`, `text-heading-3`
|
|
38
|
+
- `text-subheading-1`, `text-subheading-2`
|
|
39
|
+
- `text-body-1`, `text-body-2`, `text-body-3`, `text-body-4`
|
|
40
|
+
- `text-button-1`, `text-button-2`, `text-button-3`, `text-button-4`
|
|
41
|
+
|
|
42
|
+
### Color Tokens
|
|
43
|
+
- Semantic: `neutral1-3`, `surface1-5`, `accent1-4`
|
|
44
|
+
- Status: `success`, `warning`, `critical`
|
|
45
|
+
- Network: `network-ethereum`, `network-optimism`, etc.
|
|
46
|
+
- Full palettes: gray, pink, red, yellow, green, blue, gold, magenta, purple
|
|
47
|
+
|
|
48
|
+
### Animations
|
|
49
|
+
- View transitions
|
|
50
|
+
- Dialog animations
|
|
51
|
+
- Button loading states
|
|
52
|
+
- Console terminal effects
|
|
53
|
+
- Logo carousel
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/* Keyframe Animations */
|
|
2
|
+
|
|
3
|
+
/* View Transitions */
|
|
4
|
+
::view-transition-old(crossfade) {
|
|
5
|
+
animation: hide 200ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
::view-transition-new(crossfade) {
|
|
9
|
+
opacity: 0;
|
|
10
|
+
animation: appear 300ms cubic-bezier(0.4, 0, 0.2, 1) 80ms forwards;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@keyframes hide {
|
|
14
|
+
0% {
|
|
15
|
+
opacity: 1;
|
|
16
|
+
transform: translateY(0);
|
|
17
|
+
filter: blur(0);
|
|
18
|
+
}
|
|
19
|
+
100% {
|
|
20
|
+
opacity: 0;
|
|
21
|
+
transform: translateY(8px);
|
|
22
|
+
filter: blur(4px);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@keyframes appear {
|
|
27
|
+
0% {
|
|
28
|
+
opacity: 0;
|
|
29
|
+
transform: translateY(5px);
|
|
30
|
+
filter: blur(4px);
|
|
31
|
+
}
|
|
32
|
+
100% {
|
|
33
|
+
opacity: 1;
|
|
34
|
+
transform: translateY(0);
|
|
35
|
+
filter: blur(0);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Dialog Animation - Subtle crossfade style */
|
|
40
|
+
@keyframes dialog-appear {
|
|
41
|
+
0% {
|
|
42
|
+
opacity: 0;
|
|
43
|
+
transform: translate(-50%, calc(-50% + 4px));
|
|
44
|
+
}
|
|
45
|
+
100% {
|
|
46
|
+
opacity: 1;
|
|
47
|
+
transform: translate(-50%, -50%);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@keyframes dialog-hide {
|
|
52
|
+
0% {
|
|
53
|
+
opacity: 1;
|
|
54
|
+
transform: translate(-50%, -50%);
|
|
55
|
+
}
|
|
56
|
+
100% {
|
|
57
|
+
opacity: 0;
|
|
58
|
+
transform: translate(-50%, calc(-50% + 4px));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.dialog-content[data-state="open"] {
|
|
63
|
+
animation: dialog-appear 200ms cubic-bezier(0.6, 0, 0.8, 1) forwards;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.dialog-content[data-state="closed"] {
|
|
67
|
+
animation: dialog-hide 150ms cubic-bezier(0.6, 0, 0.8, 1) forwards;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Blur Fade Animations */
|
|
71
|
+
@keyframes blur-fade-in {
|
|
72
|
+
0% {
|
|
73
|
+
opacity: 0;
|
|
74
|
+
filter: blur(4px);
|
|
75
|
+
}
|
|
76
|
+
100% {
|
|
77
|
+
opacity: 1;
|
|
78
|
+
filter: blur(0);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@keyframes blur-fade-out {
|
|
83
|
+
0% {
|
|
84
|
+
opacity: 1;
|
|
85
|
+
filter: blur(0);
|
|
86
|
+
}
|
|
87
|
+
100% {
|
|
88
|
+
opacity: 0;
|
|
89
|
+
filter: blur(4px);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* No entrance animation - just show immediately */
|
|
94
|
+
.animate-entrance {
|
|
95
|
+
opacity: 1;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Blur fade in with translate - for elements that appear on mount */
|
|
99
|
+
.animate-blur-fade-in {
|
|
100
|
+
animation: blur-fade-in-translate 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@keyframes blur-fade-in-translate {
|
|
104
|
+
0% {
|
|
105
|
+
opacity: 0;
|
|
106
|
+
transform: translateY(-4px);
|
|
107
|
+
filter: blur(4px);
|
|
108
|
+
}
|
|
109
|
+
100% {
|
|
110
|
+
opacity: 1;
|
|
111
|
+
transform: translateY(0);
|
|
112
|
+
filter: blur(0);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* Blur fade out with translate and height collapse - for elements that exit */
|
|
117
|
+
.animate-blur-fade-out {
|
|
118
|
+
animation: blur-fade-out-translate 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
119
|
+
overflow: hidden;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
@keyframes blur-fade-out-translate {
|
|
123
|
+
0% {
|
|
124
|
+
opacity: 1;
|
|
125
|
+
transform: translateY(0);
|
|
126
|
+
filter: blur(0);
|
|
127
|
+
max-height: 500px;
|
|
128
|
+
margin-bottom: 0;
|
|
129
|
+
}
|
|
130
|
+
50% {
|
|
131
|
+
opacity: 0;
|
|
132
|
+
transform: translateY(4px);
|
|
133
|
+
filter: blur(4px);
|
|
134
|
+
}
|
|
135
|
+
100% {
|
|
136
|
+
opacity: 0;
|
|
137
|
+
transform: translateY(4px);
|
|
138
|
+
filter: blur(4px);
|
|
139
|
+
max-height: 0;
|
|
140
|
+
margin-bottom: -40px;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/* State-driven blur fade for elements inside stateful containers */
|
|
145
|
+
[data-state="open"] .blur-fade-item {
|
|
146
|
+
animation: blur-fade-in 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
[data-state="closed"] .blur-fade-item {
|
|
150
|
+
animation: blur-fade-out 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
151
|
+
pointer-events: none;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/* Button Loading Crossfade - Pure CSS Transitions */
|
|
155
|
+
.button-loading-text {
|
|
156
|
+
opacity: 1;
|
|
157
|
+
transform: translateY(0);
|
|
158
|
+
filter: blur(0);
|
|
159
|
+
transition:
|
|
160
|
+
opacity 200ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
161
|
+
transform 200ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
162
|
+
filter 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.button-loading-text[data-loading="true"] {
|
|
166
|
+
opacity: 0;
|
|
167
|
+
transform: translateY(4px);
|
|
168
|
+
filter: blur(4px);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.button-loading-spinner {
|
|
172
|
+
opacity: 0;
|
|
173
|
+
transform: translateY(-4px);
|
|
174
|
+
filter: blur(4px);
|
|
175
|
+
pointer-events: none;
|
|
176
|
+
transition:
|
|
177
|
+
opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 50ms,
|
|
178
|
+
transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 50ms,
|
|
179
|
+
filter 200ms cubic-bezier(0.4, 0, 0.2, 1) 50ms;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.button-loading-spinner[data-loading="true"] {
|
|
183
|
+
opacity: 1;
|
|
184
|
+
transform: translateY(0);
|
|
185
|
+
filter: blur(0);
|
|
186
|
+
pointer-events: auto;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/* Button State Icons - Crossfade between spinner and success checkmark */
|
|
190
|
+
.button-state-spinner,
|
|
191
|
+
.button-state-success {
|
|
192
|
+
opacity: 0;
|
|
193
|
+
transform: translateY(-4px);
|
|
194
|
+
filter: blur(4px);
|
|
195
|
+
pointer-events: none;
|
|
196
|
+
transition:
|
|
197
|
+
opacity 200ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
198
|
+
transform 200ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
199
|
+
filter 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
.button-state-spinner[data-visible="true"],
|
|
203
|
+
.button-state-success[data-visible="true"] {
|
|
204
|
+
opacity: 1;
|
|
205
|
+
transform: translateY(0);
|
|
206
|
+
filter: blur(0);
|
|
207
|
+
pointer-events: auto;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/* Console Terminal Animations */
|
|
211
|
+
@keyframes blink {
|
|
212
|
+
0%,
|
|
213
|
+
50% {
|
|
214
|
+
opacity: 1;
|
|
215
|
+
}
|
|
216
|
+
51%,
|
|
217
|
+
100% {
|
|
218
|
+
opacity: 0;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.console-cursor {
|
|
223
|
+
animation: blink 1s step-end infinite;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
@keyframes console-fade-in {
|
|
227
|
+
0% {
|
|
228
|
+
opacity: 0;
|
|
229
|
+
transform: translateY(10px);
|
|
230
|
+
}
|
|
231
|
+
100% {
|
|
232
|
+
opacity: 1;
|
|
233
|
+
transform: translateY(0);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
.console-fade-in {
|
|
238
|
+
animation: console-fade-in 400ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/* Logo Carousel Animation - scrolls through one third of content for 3x duplicated logos */
|
|
242
|
+
@keyframes logo-scroll {
|
|
243
|
+
0% {
|
|
244
|
+
transform: translateX(0) translateZ(0);
|
|
245
|
+
}
|
|
246
|
+
100% {
|
|
247
|
+
transform: translateX(calc(-33.333%)) translateZ(0);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* Overlay Animations - matches view transition timings */
|
|
252
|
+
@keyframes overlay-hide {
|
|
253
|
+
0% {
|
|
254
|
+
opacity: 1;
|
|
255
|
+
backdrop-filter: blur(4px);
|
|
256
|
+
}
|
|
257
|
+
100% {
|
|
258
|
+
opacity: 0;
|
|
259
|
+
backdrop-filter: blur(0);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
@keyframes overlay-appear {
|
|
264
|
+
0% {
|
|
265
|
+
opacity: 0;
|
|
266
|
+
backdrop-filter: blur(0);
|
|
267
|
+
}
|
|
268
|
+
100% {
|
|
269
|
+
opacity: 1;
|
|
270
|
+
backdrop-filter: blur(4px);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
.overlay-backdrop[data-state="open"] {
|
|
275
|
+
animation: overlay-appear 300ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
.overlay-backdrop[data-state="closed"] {
|
|
279
|
+
animation: overlay-hide 200ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
|
|
280
|
+
}
|
package/css/base.css
ADDED
package/css/fonts.css
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* Basel Grotesk Font Faces */
|
|
2
|
+
|
|
3
|
+
@font-face {
|
|
4
|
+
font-family: "Basel Grotesk";
|
|
5
|
+
src:
|
|
6
|
+
url("../fonts/Basel-Grotesk-Book.woff2") format("woff2"),
|
|
7
|
+
url("../fonts/Basel-Grotesk-Book.woff") format("woff");
|
|
8
|
+
font-weight: 485;
|
|
9
|
+
font-style: normal;
|
|
10
|
+
font-display: swap;
|
|
11
|
+
-webkit-font-smoothing: antialiased;
|
|
12
|
+
text-rendering: optimizeLegibility;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@font-face {
|
|
16
|
+
font-family: "Basel Grotesk";
|
|
17
|
+
src:
|
|
18
|
+
url("../fonts/Basel-Grotesk-Medium.woff2") format("woff2"),
|
|
19
|
+
url("../fonts/Basel-Grotesk-Medium.woff") format("woff");
|
|
20
|
+
font-weight: 535;
|
|
21
|
+
font-style: normal;
|
|
22
|
+
font-display: swap;
|
|
23
|
+
-webkit-font-smoothing: antialiased;
|
|
24
|
+
text-rendering: optimizeLegibility;
|
|
25
|
+
}
|
package/css/theme.css
ADDED
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
/* Mycelium Theme Tokens for Tailwind v4 */
|
|
2
|
+
|
|
3
|
+
@theme {
|
|
4
|
+
/* Font Families - these create font-* utilities */
|
|
5
|
+
--font-basel: "Basel Grotesk", sans-serif;
|
|
6
|
+
--font-basel-book: "Basel Grotesk Book", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI",
|
|
7
|
+
Roboto, Helvetica, Arial, sans-serif;
|
|
8
|
+
--font-basel-medium: "Basel Grotesk Medium", -apple-system, system-ui, BlinkMacSystemFont,
|
|
9
|
+
"Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
10
|
+
--font-mono: "InputMono-Regular", monospace;
|
|
11
|
+
|
|
12
|
+
/* Font Weights */
|
|
13
|
+
--font-weight-book: 485;
|
|
14
|
+
--font-weight-medium: 535;
|
|
15
|
+
|
|
16
|
+
/* Breakpoints */
|
|
17
|
+
--breakpoint-xxs: 360px;
|
|
18
|
+
--breakpoint-xs: 380px;
|
|
19
|
+
--breakpoint-sm: 450px;
|
|
20
|
+
--breakpoint-md: 640px;
|
|
21
|
+
--breakpoint-lg: 768px;
|
|
22
|
+
--breakpoint-xl: 1024px;
|
|
23
|
+
--breakpoint-xxl: 1280px;
|
|
24
|
+
--breakpoint-xxxl: 1536px;
|
|
25
|
+
|
|
26
|
+
/* Typography Scale - Headings (creates text-heading-* utilities) */
|
|
27
|
+
--text-heading-1: 52px;
|
|
28
|
+
--text-heading-1--line-height: 60px;
|
|
29
|
+
--text-heading-1--letter-spacing: -0.02em;
|
|
30
|
+
--text-heading-1--font-weight: 485;
|
|
31
|
+
|
|
32
|
+
--text-heading-2: 36px;
|
|
33
|
+
--text-heading-2--line-height: 44px;
|
|
34
|
+
--text-heading-2--letter-spacing: -0.01em;
|
|
35
|
+
--text-heading-2--font-weight: 485;
|
|
36
|
+
|
|
37
|
+
--text-heading-3: 24px;
|
|
38
|
+
--text-heading-3--line-height: 32px;
|
|
39
|
+
--text-heading-3--letter-spacing: -0.005em;
|
|
40
|
+
--text-heading-3--font-weight: 485;
|
|
41
|
+
|
|
42
|
+
/* Typography Scale - Subheadings */
|
|
43
|
+
--text-subheading-1: 18px;
|
|
44
|
+
--text-subheading-1--line-height: 24px;
|
|
45
|
+
--text-subheading-1--font-weight: 485;
|
|
46
|
+
|
|
47
|
+
--text-subheading-2: 16px;
|
|
48
|
+
--text-subheading-2--line-height: 24px;
|
|
49
|
+
--text-subheading-2--font-weight: 485;
|
|
50
|
+
|
|
51
|
+
/* Typography Scale - Body */
|
|
52
|
+
--text-body-1: 18px;
|
|
53
|
+
--text-body-1--line-height: 24px;
|
|
54
|
+
--text-body-1--font-weight: 485;
|
|
55
|
+
|
|
56
|
+
--text-body-2: 16px;
|
|
57
|
+
--text-body-2--line-height: 24px;
|
|
58
|
+
--text-body-2--font-weight: 485;
|
|
59
|
+
|
|
60
|
+
--text-body-3: 14px;
|
|
61
|
+
--text-body-3--line-height: 20px;
|
|
62
|
+
--text-body-3--font-weight: 485;
|
|
63
|
+
|
|
64
|
+
--text-body-4: 12px;
|
|
65
|
+
--text-body-4--line-height: 16px;
|
|
66
|
+
--text-body-4--font-weight: 485;
|
|
67
|
+
|
|
68
|
+
/* Typography Scale - Buttons */
|
|
69
|
+
--text-button-1: 18px;
|
|
70
|
+
--text-button-1--line-height: 24px;
|
|
71
|
+
--text-button-1--font-weight: 535;
|
|
72
|
+
|
|
73
|
+
--text-button-2: 16px;
|
|
74
|
+
--text-button-2--line-height: 24px;
|
|
75
|
+
--text-button-2--font-weight: 535;
|
|
76
|
+
|
|
77
|
+
--text-button-3: 14px;
|
|
78
|
+
--text-button-3--line-height: 20px;
|
|
79
|
+
--text-button-3--font-weight: 535;
|
|
80
|
+
|
|
81
|
+
--text-button-4: 12px;
|
|
82
|
+
--text-button-4--line-height: 16px;
|
|
83
|
+
--text-button-4--font-weight: 535;
|
|
84
|
+
|
|
85
|
+
/* Base Colors */
|
|
86
|
+
--color-white: #ffffff;
|
|
87
|
+
--color-black: #000000;
|
|
88
|
+
|
|
89
|
+
/* Semantic Colors - Background */
|
|
90
|
+
--color-background: #ffffff;
|
|
91
|
+
--color-background-dark: #000000;
|
|
92
|
+
|
|
93
|
+
/* Semantic Colors - Neutrals */
|
|
94
|
+
--color-neutral1-light: #222222;
|
|
95
|
+
--color-neutral1-dark: #ffffff;
|
|
96
|
+
--color-neutral2-light: #7d7d7d;
|
|
97
|
+
--color-neutral2-dark: #9b9b9b;
|
|
98
|
+
--color-neutral3-light: #cecece;
|
|
99
|
+
--color-neutral3-dark: #5e5e5e;
|
|
100
|
+
|
|
101
|
+
/* Semantic Colors - Surfaces */
|
|
102
|
+
--color-surface1-light: #ffffff;
|
|
103
|
+
--color-surface1-dark: #131313;
|
|
104
|
+
--color-surface1-hovered: #f5f5f5;
|
|
105
|
+
--color-surface1-hovered-dark: #181818;
|
|
106
|
+
|
|
107
|
+
--color-surface2-light: #f9f9f9;
|
|
108
|
+
--color-surface2-dark: #1b1b1b;
|
|
109
|
+
--color-surface2-hovered: #f2f2f2;
|
|
110
|
+
--color-surface2-hovered-dark: #242424;
|
|
111
|
+
|
|
112
|
+
--color-surface3-light: #22222212;
|
|
113
|
+
--color-surface3-dark: #ffffff12;
|
|
114
|
+
--color-surface3-hovered: rgba(34, 34, 34, 0.12);
|
|
115
|
+
--color-surface3-hovered-dark: rgba(255, 255, 255, 0.16);
|
|
116
|
+
|
|
117
|
+
--color-surface4-light: #ffffff64;
|
|
118
|
+
--color-surface4-dark: #ffffff20;
|
|
119
|
+
|
|
120
|
+
--color-surface5-light: #00000004;
|
|
121
|
+
--color-surface5-dark: #00000004;
|
|
122
|
+
|
|
123
|
+
/* Semantic Colors - Accents */
|
|
124
|
+
--color-accent1-light: #ff37c7;
|
|
125
|
+
--color-accent1-dark: #ff37c7;
|
|
126
|
+
--color-accent2-light: #ffefff;
|
|
127
|
+
--color-accent2-dark: #311c31;
|
|
128
|
+
--color-accent3: #4c82fb;
|
|
129
|
+
--color-accent3-dark: #4c82fb;
|
|
130
|
+
--color-accent4: #fdaff0;
|
|
131
|
+
--color-accent4-light: #fef4ff;
|
|
132
|
+
|
|
133
|
+
/* Token Colors */
|
|
134
|
+
--color-token0: #fc72ff;
|
|
135
|
+
--color-token0-dark: #fc72ff;
|
|
136
|
+
--color-token1: #4c82fb;
|
|
137
|
+
--color-token1-dark: #4c82fb;
|
|
138
|
+
|
|
139
|
+
/* Status Colors */
|
|
140
|
+
--color-success-light: #0c8911;
|
|
141
|
+
--color-success-dark: #21c95e;
|
|
142
|
+
--color-critical-light: #e10f0f;
|
|
143
|
+
--color-critical-dark: #ff593c;
|
|
144
|
+
--color-critical-secondary: #fff2f1;
|
|
145
|
+
--color-critical-secondary-dark: #2e0805;
|
|
146
|
+
--color-warning: #eeb317;
|
|
147
|
+
|
|
148
|
+
/* Network Colors */
|
|
149
|
+
--color-network-ethereum: #627eea;
|
|
150
|
+
--color-network-optimism: #ff0420;
|
|
151
|
+
--color-network-polygon: #a457ff;
|
|
152
|
+
--color-network-arbitrum: #28a0f0;
|
|
153
|
+
--color-network-bsc: #f0b90b;
|
|
154
|
+
--color-network-base: #0052ff;
|
|
155
|
+
--color-network-blast: #fcfc03;
|
|
156
|
+
|
|
157
|
+
/* Decorative/Pattern Colors */
|
|
158
|
+
--color-pattern-dots-dark: rgba(252, 116, 254, 0.08);
|
|
159
|
+
--color-pattern-dots-light: rgba(252, 116, 254, 0.2);
|
|
160
|
+
|
|
161
|
+
/* Gray Palette */
|
|
162
|
+
--color-gray-50: #f5f6fc;
|
|
163
|
+
--color-gray-100: #e8ecfb;
|
|
164
|
+
--color-gray-150: #d2d9ee;
|
|
165
|
+
--color-gray-200: #b8c0dc;
|
|
166
|
+
--color-gray-250: #a6afca;
|
|
167
|
+
--color-gray-300: #98a1c0;
|
|
168
|
+
--color-gray-350: #888fab;
|
|
169
|
+
--color-gray-400: #7780a0;
|
|
170
|
+
--color-gray-450: #6b7594;
|
|
171
|
+
--color-gray-500: #5d6785;
|
|
172
|
+
--color-gray-550: #505a78;
|
|
173
|
+
--color-gray-600: #404a67;
|
|
174
|
+
--color-gray-650: #333d59;
|
|
175
|
+
--color-gray-700: #293249;
|
|
176
|
+
--color-gray-750: #1b2236;
|
|
177
|
+
--color-gray-800: #131a2a;
|
|
178
|
+
--color-gray-850: #0e1524;
|
|
179
|
+
--color-gray-900: #0d111c;
|
|
180
|
+
--color-gray-950: #080b11;
|
|
181
|
+
|
|
182
|
+
/* Pink Palette */
|
|
183
|
+
--color-pink-50: #f9ecf1;
|
|
184
|
+
--color-pink-100: #ffd9e4;
|
|
185
|
+
--color-pink-200: #fba4c0;
|
|
186
|
+
--color-pink-300: #ff6fa3;
|
|
187
|
+
--color-pink-400: #fb118e;
|
|
188
|
+
--color-pink-500: #c41969;
|
|
189
|
+
--color-pink-600: #8c0f49;
|
|
190
|
+
--color-pink-700: #55072a;
|
|
191
|
+
--color-pink-800: #350318;
|
|
192
|
+
--color-pink-900: #2b000b;
|
|
193
|
+
--color-pink-vibrant: #f50db4;
|
|
194
|
+
--color-pink-base: #fc74fe;
|
|
195
|
+
|
|
196
|
+
/* Red Palette */
|
|
197
|
+
--color-red-50: #faecea;
|
|
198
|
+
--color-red-100: #fed5cf;
|
|
199
|
+
--color-red-200: #fea79b;
|
|
200
|
+
--color-red-300: #fd766b;
|
|
201
|
+
--color-red-400: #fa2b39;
|
|
202
|
+
--color-red-500: #c4292f;
|
|
203
|
+
--color-red-600: #891e20;
|
|
204
|
+
--color-red-700: #530f0f;
|
|
205
|
+
--color-red-800: #380a03;
|
|
206
|
+
--color-red-900: #240800;
|
|
207
|
+
--color-red-vibrant: #f14544;
|
|
208
|
+
|
|
209
|
+
/* Yellow Palette */
|
|
210
|
+
--color-yellow-50: #f6f2d5;
|
|
211
|
+
--color-yellow-100: #dbbc19;
|
|
212
|
+
--color-yellow-200: #dbbc19;
|
|
213
|
+
--color-yellow-300: #bb9f13;
|
|
214
|
+
--color-yellow-400: #a08116;
|
|
215
|
+
--color-yellow-500: #866311;
|
|
216
|
+
--color-yellow-600: #5d4204;
|
|
217
|
+
--color-yellow-700: #3e2b04;
|
|
218
|
+
--color-yellow-800: #231902;
|
|
219
|
+
--color-yellow-900: #180f02;
|
|
220
|
+
--color-yellow-vibrant: #faf40a;
|
|
221
|
+
|
|
222
|
+
/* Green Palette */
|
|
223
|
+
--color-green-50: #e3f3e6;
|
|
224
|
+
--color-green-100: #bfeeca;
|
|
225
|
+
--color-green-200: #76d191;
|
|
226
|
+
--color-green-300: #40b66b;
|
|
227
|
+
--color-green-400: #209853;
|
|
228
|
+
--color-green-500: #0b783e;
|
|
229
|
+
--color-green-600: #0c522a;
|
|
230
|
+
--color-green-700: #053117;
|
|
231
|
+
--color-green-800: #091f10;
|
|
232
|
+
--color-green-900: #09130b;
|
|
233
|
+
--color-green-vibrant: #5cfe9d;
|
|
234
|
+
|
|
235
|
+
/* Blue Palette */
|
|
236
|
+
--color-blue-50: #edeff8;
|
|
237
|
+
--color-blue-100: #dee1ff;
|
|
238
|
+
--color-blue-200: #adbcff;
|
|
239
|
+
--color-blue-300: #869eff;
|
|
240
|
+
--color-blue-400: #4c82fb;
|
|
241
|
+
--color-blue-500: #1267d6;
|
|
242
|
+
--color-blue-600: #1d4294;
|
|
243
|
+
--color-blue-700: #09265e;
|
|
244
|
+
--color-blue-800: #0b193f;
|
|
245
|
+
--color-blue-900: #040e34;
|
|
246
|
+
--color-blue-vibrant: #587bff;
|
|
247
|
+
|
|
248
|
+
/* Gold Palette */
|
|
249
|
+
--color-gold-200: #eeb317;
|
|
250
|
+
--color-gold-400: #b17900;
|
|
251
|
+
--color-gold-vibrant: #feb239;
|
|
252
|
+
|
|
253
|
+
/* Magenta Palette */
|
|
254
|
+
--color-magenta-300: #fd82ff;
|
|
255
|
+
--color-magenta-vibrant: #fc72ff;
|
|
256
|
+
|
|
257
|
+
/* Purple Palette */
|
|
258
|
+
--color-purple-300: #8440f2;
|
|
259
|
+
--color-purple-900: #1c0337;
|
|
260
|
+
--color-purple-vibrant: #6100ff;
|
|
261
|
+
|
|
262
|
+
/* Unicon Avatar Colors - Light Mode */
|
|
263
|
+
--color-unicon-0-light: #f50db4;
|
|
264
|
+
--color-unicon-1-light: #ffbf17;
|
|
265
|
+
--color-unicon-2-light: #ff8934;
|
|
266
|
+
--color-unicon-3-light: #85754a;
|
|
267
|
+
--color-unicon-4-light: #0c8911;
|
|
268
|
+
--color-unicon-5-light: #78e744;
|
|
269
|
+
--color-unicon-6-light: #00c3a0;
|
|
270
|
+
--color-unicon-7-light: #23a3ff;
|
|
271
|
+
--color-unicon-8-light: #4981ff;
|
|
272
|
+
--color-unicon-9-light: #4300b0;
|
|
273
|
+
|
|
274
|
+
/* Unicon Avatar Colors - Dark Mode */
|
|
275
|
+
--color-unicon-0-dark: #fc74fe;
|
|
276
|
+
--color-unicon-1-dark: #fff612;
|
|
277
|
+
--color-unicon-2-dark: #ff4d00;
|
|
278
|
+
--color-unicon-3-dark: #996f01;
|
|
279
|
+
--color-unicon-4-dark: #21c95e;
|
|
280
|
+
--color-unicon-5-dark: #b1f13c;
|
|
281
|
+
--color-unicon-6-dark: #5cfe9d;
|
|
282
|
+
--color-unicon-7-dark: #3adcff;
|
|
283
|
+
--color-unicon-8-dark: #0047ff;
|
|
284
|
+
--color-unicon-9-dark: #9e62ff;
|
|
285
|
+
|
|
286
|
+
/* Legacy/Compatibility Colors */
|
|
287
|
+
--color-border: #f9f9f9;
|
|
288
|
+
--color-input: #f9f9f9;
|
|
289
|
+
--color-ring: #222222;
|
|
290
|
+
--color-foreground: #222222;
|
|
291
|
+
--color-card: #ffffff;
|
|
292
|
+
--color-card-foreground: #222222;
|
|
293
|
+
--color-popover: #ffffff;
|
|
294
|
+
--color-popover-foreground: #222222;
|
|
295
|
+
--color-primary: #222222;
|
|
296
|
+
--color-primary-foreground: #f9f9f9;
|
|
297
|
+
--color-secondary: #f9f9f9;
|
|
298
|
+
--color-secondary-foreground: #222222;
|
|
299
|
+
--color-muted: #f9f9f9;
|
|
300
|
+
--color-muted-foreground: #7d7d7d;
|
|
301
|
+
--color-destructive: #ff5f52;
|
|
302
|
+
--color-destructive-foreground: #f9f9f9;
|
|
303
|
+
--color-scrim: rgba(0, 0, 0, 0.6);
|
|
304
|
+
|
|
305
|
+
/* Border Radius */
|
|
306
|
+
--radius-none: 0px;
|
|
307
|
+
--radius-4: 4px;
|
|
308
|
+
--radius-6: 6px;
|
|
309
|
+
--radius-8: 8px;
|
|
310
|
+
--radius-12: 12px;
|
|
311
|
+
--radius-16: 16px;
|
|
312
|
+
--radius-20: 20px;
|
|
313
|
+
--radius-24: 24px;
|
|
314
|
+
--radius-28: 28px;
|
|
315
|
+
--radius-32: 32px;
|
|
316
|
+
--radius-full: 999999px;
|
|
317
|
+
|
|
318
|
+
/* Box Shadows */
|
|
319
|
+
--shadow-short: var(--shadow-short);
|
|
320
|
+
--shadow-medium: var(--shadow-medium);
|
|
321
|
+
--shadow-large: var(--shadow-large);
|
|
322
|
+
}
|