@eaera-com/eaera-widgets-v2 0.1.63 → 0.1.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/design-system/components/_alert.scss +150 -0
  2. package/dist/design-system/components/_auto-complete.scss +165 -0
  3. package/dist/design-system/components/_avatar-group.scss +25 -0
  4. package/dist/design-system/components/_avatar.scss +40 -0
  5. package/dist/design-system/components/_badge.scss +80 -0
  6. package/dist/design-system/components/_breadcrumb.scss +91 -0
  7. package/dist/design-system/components/_button.scss +378 -0
  8. package/dist/design-system/components/_card.scss +27 -0
  9. package/dist/design-system/components/_carousel.scss +104 -0
  10. package/dist/design-system/components/_cascader.scss +705 -0
  11. package/dist/design-system/components/_checkbox-list.scss +18 -0
  12. package/dist/design-system/components/_checkbox.scss +117 -0
  13. package/dist/design-system/components/_collapse.scss +84 -0
  14. package/dist/design-system/components/_color-picker.scss +195 -0
  15. package/dist/design-system/components/_country-flag.scss +56 -0
  16. package/dist/design-system/components/_currency-icon.scss +19 -0
  17. package/dist/design-system/components/_date-picker.scss +748 -0
  18. package/dist/design-system/components/_dialog.scss +101 -0
  19. package/dist/design-system/components/_divider.scss +7 -0
  20. package/dist/design-system/components/_drawer.scss +41 -0
  21. package/dist/design-system/components/_dropdown.scss +69 -0
  22. package/dist/design-system/components/_empty.scss +101 -0
  23. package/dist/design-system/components/_form.scss +151 -0
  24. package/dist/design-system/components/_growth-balance-profit-widget.scss +95 -0
  25. package/dist/design-system/components/_input-code.scss +116 -0
  26. package/dist/design-system/components/_input-number.scss +233 -0
  27. package/dist/design-system/components/_input-tag.scss +212 -0
  28. package/dist/design-system/components/_input.scss +239 -0
  29. package/dist/design-system/components/_link.scss +64 -0
  30. package/dist/design-system/components/_loading.scss +89 -0
  31. package/dist/design-system/components/_menu.scss +578 -0
  32. package/dist/design-system/components/_message-box.scss +78 -0
  33. package/dist/design-system/components/_message.scss +187 -0
  34. package/dist/design-system/components/_monthly-gain-widget.scss +114 -0
  35. package/dist/design-system/components/_pagination.scss +356 -0
  36. package/dist/design-system/components/_pl-calendar-widget.scss +171 -0
  37. package/dist/design-system/components/_popconfirm.scss +57 -0
  38. package/dist/design-system/components/_popper.scss +267 -0
  39. package/dist/design-system/components/_progress.scss +153 -0
  40. package/dist/design-system/components/_radio.scss +68 -0
  41. package/dist/design-system/components/_segmented.scss +215 -0
  42. package/dist/design-system/components/_select-country.scss +182 -0
  43. package/dist/design-system/components/_select.scss +235 -0
  44. package/dist/design-system/components/_skeleton.scss +146 -0
  45. package/dist/design-system/components/_slider.scss +142 -0
  46. package/dist/design-system/components/_spinner.scss +73 -0
  47. package/dist/design-system/components/_steps.scss +292 -0
  48. package/dist/design-system/components/_switch.scss +89 -0
  49. package/dist/design-system/components/_switcher.scss +110 -0
  50. package/dist/design-system/components/_table.scss +580 -0
  51. package/dist/design-system/components/_tabs.scss +260 -0
  52. package/dist/design-system/components/_tag.scss +208 -0
  53. package/dist/design-system/components/_time-picker.scss +255 -0
  54. package/dist/design-system/components/_time-select.scss +167 -0
  55. package/dist/design-system/components/_timeline.scss +99 -0
  56. package/dist/design-system/components/_tooltip.scss +19 -0
  57. package/dist/design-system/components/_topbar-menu.scss +67 -0
  58. package/dist/design-system/components/_trade-volume-widget.scss +114 -0
  59. package/dist/design-system/components/_transfer.scss +241 -0
  60. package/dist/design-system/components/_tree-select.scss +198 -0
  61. package/dist/design-system/components/_tree.scss +108 -0
  62. package/dist/design-system/components/_upload.scss +226 -0
  63. package/dist/design-system/themes/aurora/bridges/_element-plus-bridge.scss +58 -0
  64. package/dist/design-system/themes/aurora/elevation/_elevation-tokens.scss +67 -0
  65. package/dist/design-system/themes/aurora/elevation/_elevation-utils.scss +94 -0
  66. package/dist/design-system/themes/aurora/index.scss +133 -0
  67. package/dist/design-system/themes/aurora/layers/_layer1-palettes.scss +289 -0
  68. package/dist/design-system/themes/aurora/layers/_layer2-alias.scss +250 -0
  69. package/dist/design-system/themes/aurora/layers/_layer3-tokens.scss +242 -0
  70. package/dist/design-system/themes/aurora/themes/_dark-mode.scss +177 -0
  71. package/dist/design-system/themes/aurora/themes/projects/base.scss +11 -0
  72. package/dist/design-system/themes/aurora/tokens/_border-radius.scss +28 -0
  73. package/dist/design-system/themes/aurora/tokens/_control-height.scss +18 -0
  74. package/dist/design-system/themes/aurora/tokens/_screen-size.scss +10 -0
  75. package/dist/design-system/themes/aurora/tokens/_spacing.scss +29 -0
  76. package/dist/design-system/themes/aurora/typography/_typography-primitives.scss +11 -0
  77. package/dist/design-system/themes/aurora/typography/_typography-semantic.scss +5 -0
  78. package/dist/design-system/themes/aurora/typography/_typography-tokens.scss +185 -0
  79. package/dist/design-system/themes/aurora/typography/_typography-utils.scss +375 -0
  80. package/dist/design-system/themes/core/bridges/_element-plus-bridge.scss +82 -0
  81. package/dist/design-system/themes/core/elevation/_elevation-tokens.scss +67 -0
  82. package/dist/design-system/themes/core/elevation/_elevation-utils.scss +94 -0
  83. package/dist/design-system/themes/core/index.scss +130 -0
  84. package/dist/design-system/themes/core/layers/_layer1-palettes.scss +289 -0
  85. package/dist/design-system/themes/core/layers/_layer2-alias.scss +242 -0
  86. package/dist/design-system/themes/core/layers/_layer3-tokens.scss +220 -0
  87. package/dist/design-system/themes/core/themes/_dark-mode.scss +165 -0
  88. package/dist/design-system/themes/core/themes/projects/base.scss +11 -0
  89. package/dist/design-system/themes/core/tokens/_border-radius.scss +28 -0
  90. package/dist/design-system/themes/core/tokens/_control-height.scss +18 -0
  91. package/dist/design-system/themes/core/tokens/_screen-size.scss +10 -0
  92. package/dist/design-system/themes/core/tokens/_spacing.scss +29 -0
  93. package/dist/design-system/themes/core/typography/_typography-primitives.scss +11 -0
  94. package/dist/design-system/themes/core/typography/_typography-semantic.scss +5 -0
  95. package/dist/design-system/themes/core/typography/_typography-tokens.scss +185 -0
  96. package/dist/design-system/themes/core/typography/_typography-utils.scss +375 -0
  97. package/package.json +4 -3
@@ -0,0 +1,242 @@
1
+ // ============================================================================
2
+ // LAYER 2: ALIAS TOKENS (Semantic Mappings)
3
+ // ============================================================================
4
+ // Maps Layer 1 tonal palettes to meaningful semantic names
5
+ // Override these in per-project themes to customize brand colors
6
+ // Source: Figma Color Guidance - Component Tokens mapping
7
+ // ============================================================================
8
+
9
+ :root {
10
+ // ─────────────────────────────────────────────────────────────────────────
11
+ // NEUTRAL (Grayscale for text, borders, backgrounds)
12
+ // Mapping: Neutral → Gray
13
+ // ─────────────────────────────────────────────────────────────────────────
14
+ --er-neutral-50: var(--er-gray-50);
15
+ --er-neutral-100: var(--er-gray-100);
16
+ --er-neutral-200: var(--er-gray-200);
17
+ --er-neutral-300: var(--er-gray-300);
18
+ --er-neutral-400: var(--er-gray-400);
19
+ --er-neutral-500: var(--er-gray-500);
20
+ --er-neutral-600: var(--er-gray-600);
21
+ --er-neutral-700: var(--er-gray-700);
22
+ --er-neutral-800: var(--er-gray-800);
23
+ --er-neutral-900: var(--er-gray-900);
24
+ --er-neutral-950: var(--er-gray-950);
25
+ --er-neutral-white: var(--er-gray-white); // #FFFFFF
26
+ --er-neutral-black: var(--er-gray-black); // #000000
27
+ --er-neutral-default: var(--er-gray-500); // Figma: neutral/default → color/gray/500
28
+
29
+ // Neutral Alpha → Gray Alpha (#11161C with alpha %)
30
+ --er-neutral-alpha-50: var(--er-gray-alpha-50);
31
+ --er-neutral-alpha-75: var(--er-gray-alpha-75);
32
+ --er-neutral-alpha-100: var(--er-gray-alpha-100);
33
+ --er-neutral-alpha-200: var(--er-gray-alpha-200);
34
+ --er-neutral-alpha-300: var(--er-gray-alpha-300);
35
+ --er-neutral-alpha-400: var(--er-gray-alpha-400);
36
+ --er-neutral-alpha-500: var(--er-gray-alpha-500);
37
+ --er-neutral-alpha-default: var(--er-gray-alpha-500);
38
+ --er-neutral-alpha-600: var(--er-gray-alpha-600);
39
+ --er-neutral-alpha-700: var(--er-gray-alpha-700);
40
+ --er-neutral-alpha-800: var(--er-gray-alpha-800);
41
+ --er-neutral-alpha-900: var(--er-gray-alpha-900);
42
+ --er-neutral-alpha-950: var(--er-gray-alpha-950);
43
+
44
+ // ─────────────────────────────────────────────────────────────────────────
45
+ // ELEVATION (overlays on dark surfaces)
46
+ // Mapping: Elevation → White Alpha (#F8F9FB with alpha %)
47
+ // ─────────────────────────────────────────────────────────────────────────
48
+ --er-elevation-50: var(--er-white-alpha-50);
49
+ --er-elevation-100: var(--er-white-alpha-100);
50
+ --er-elevation-200: var(--er-white-alpha-200);
51
+ --er-elevation-300: var(--er-white-alpha-300);
52
+ --er-elevation-400: var(--er-white-alpha-400);
53
+ --er-elevation-500: var(--er-white-alpha-500);
54
+ --er-elevation-600: var(--er-white-alpha-600);
55
+ --er-elevation-700: var(--er-white-alpha-700);
56
+ --er-elevation-800: var(--er-white-alpha-800);
57
+ --er-elevation-900: var(--er-white-alpha-900);
58
+ --er-elevation-950: var(--er-white-alpha-950);
59
+
60
+ // ─────────────────────────────────────────────────────────────────────────
61
+ // PRIMARY (Main brand color)
62
+ // Mapping: Primary → Blue (Default, can be overridden in project themes)
63
+ // ─────────────────────────────────────────────────────────────────────────
64
+ --er-primary-50: var(--er-blue-50);
65
+ --er-primary-100: var(--er-blue-100);
66
+ --er-primary-200: var(--er-blue-200);
67
+ --er-primary-300: var(--er-blue-300);
68
+ --er-primary-400: var(--er-blue-400);
69
+ --er-primary-500: var(--er-blue-500);
70
+ --er-primary-default: var(--er-blue-500); // Figma: primary/default → color/blue/500
71
+ --er-primary-600: var(--er-blue-600);
72
+ --er-primary-700: var(--er-blue-700);
73
+ --er-primary-800: var(--er-blue-800);
74
+ --er-primary-900: var(--er-blue-900);
75
+ --er-primary-950: var(--er-blue-950);
76
+
77
+ // Primary Alpha → Blue Alpha (#3B82F6 with alpha %)
78
+ --er-primary-alpha-50: var(--er-blue-alpha-50);
79
+ --er-primary-alpha-75: var(--er-blue-alpha-75);
80
+ --er-primary-alpha-100: var(--er-blue-alpha-100);
81
+ --er-primary-alpha-200: var(--er-blue-alpha-200);
82
+ --er-primary-alpha-300: var(--er-blue-alpha-300);
83
+ --er-primary-alpha-400: var(--er-blue-alpha-400);
84
+ --er-primary-alpha-500: var(--er-blue-alpha-500);
85
+
86
+ // ─────────────────────────────────────────────────────────────────────────
87
+ // SECONDARY (Accent color)
88
+ // Mapping: Secondary → Teal (Default, can be overridden in project themes)
89
+ // ─────────────────────────────────────────────────────────────────────────
90
+ --er-secondary-50: var(--er-teal-50);
91
+ --er-secondary-100: var(--er-teal-100);
92
+ --er-secondary-200: var(--er-teal-200);
93
+ --er-secondary-300: var(--er-teal-300);
94
+ --er-secondary-400: var(--er-teal-400);
95
+ --er-secondary-500: var(--er-teal-500);
96
+ --er-secondary-600: var(--er-teal-600);
97
+ --er-secondary-700: var(--er-teal-700);
98
+ --er-secondary-800: var(--er-teal-800);
99
+ --er-secondary-900: var(--er-teal-900);
100
+ --er-secondary-950: var(--er-teal-950);
101
+ --er-secondary-default: var(--er-teal-500); // Figma: secondary/default → color/teal/500
102
+
103
+ // Secondary Alpha → Teal Alpha (#27CCD6 with alpha %)
104
+ --er-secondary-alpha-50: var(--er-teal-alpha-50);
105
+ --er-secondary-alpha-100: var(--er-teal-alpha-100);
106
+ --er-secondary-alpha-200: var(--er-teal-alpha-200);
107
+ --er-secondary-alpha-300: var(--er-teal-alpha-300);
108
+ --er-secondary-alpha-400: var(--er-teal-alpha-400);
109
+ --er-secondary-alpha-500: var(--er-teal-alpha-500);
110
+
111
+ // ─────────────────────────────────────────────────────────────────────────
112
+ // SUCCESS (Positive feedback)
113
+ // Mapping: Success → Green
114
+ // ─────────────────────────────────────────────────────────────────────────
115
+ --er-success-50: var(--er-green-50);
116
+ --er-success-100: var(--er-green-100);
117
+ --er-success-200: var(--er-green-200);
118
+ --er-success-300: var(--er-green-300);
119
+ --er-success-400: var(--er-green-400);
120
+ --er-success-500: var(--er-green-500);
121
+ --er-success-600: var(--er-green-600);
122
+ --er-success-700: var(--er-green-700);
123
+ --er-success-800: var(--er-green-800);
124
+ --er-success-900: var(--er-green-900);
125
+ --er-success-950: var(--er-green-950);
126
+ --er-success-default: var(--er-green-500); // Figma: success/default → color/green/500
127
+
128
+ // Success Alpha → Green Alpha (#10B981 with alpha %)
129
+ --er-success-alpha-50: var(--er-green-alpha-50);
130
+ --er-success-alpha-100: var(--er-green-alpha-100);
131
+ --er-success-alpha-200: var(--er-green-alpha-200);
132
+ --er-success-alpha-300: var(--er-green-alpha-300);
133
+ --er-success-alpha-400: var(--er-green-alpha-400);
134
+ --er-success-alpha-500: var(--er-green-alpha-500);
135
+
136
+ // ─────────────────────────────────────────────────────────────────────────
137
+ // WARNING (Caution states)
138
+ // Mapping: Warning → Yellow
139
+ // ─────────────────────────────────────────────────────────────────────────
140
+ --er-warning-50: var(--er-yellow-50);
141
+ --er-warning-100: var(--er-yellow-100);
142
+ --er-warning-200: var(--er-yellow-200);
143
+ --er-warning-300: var(--er-yellow-300);
144
+ --er-warning-400: var(--er-yellow-400);
145
+ --er-warning-500: var(--er-yellow-500);
146
+ --er-warning-600: var(--er-yellow-600);
147
+ --er-warning-700: var(--er-yellow-700);
148
+ --er-warning-800: var(--er-yellow-800);
149
+ --er-warning-900: var(--er-yellow-900);
150
+ --er-warning-950: var(--er-yellow-950);
151
+ --er-warning-default: var(--er-yellow-500); // Figma: warning/default → color/yellow/500
152
+
153
+ // Warning Alpha → Yellow Alpha (#F59E0B with alpha %)
154
+ --er-warning-alpha-50: var(--er-yellow-alpha-50);
155
+ --er-warning-alpha-100: var(--er-yellow-alpha-100);
156
+ --er-warning-alpha-200: var(--er-yellow-alpha-200);
157
+ --er-warning-alpha-300: var(--er-yellow-alpha-300);
158
+ --er-warning-alpha-400: var(--er-yellow-alpha-400);
159
+ --er-warning-alpha-500: var(--er-yellow-alpha-500);
160
+
161
+ // ─────────────────────────────────────────────────────────────────────────
162
+ // DANGER (Destructive actions, errors)
163
+ // Mapping: Danger → Red
164
+ // ─────────────────────────────────────────────────────────────────────────
165
+ --er-danger-50: var(--er-red-50);
166
+ --er-danger-100: var(--er-red-100);
167
+ --er-danger-200: var(--er-red-200);
168
+ --er-danger-300: var(--er-red-300);
169
+ --er-danger-400: var(--er-red-400);
170
+ --er-danger-500: var(--er-red-500);
171
+ --er-danger-600: var(--er-red-600);
172
+ --er-danger-700: var(--er-red-700);
173
+ --er-danger-800: var(--er-red-800);
174
+ --er-danger-900: var(--er-red-900);
175
+ --er-danger-950: var(--er-red-950);
176
+ --er-danger-default: var(--er-red-500); // Figma: danger/default → color/red/500
177
+
178
+ // Danger Alpha → Red Alpha (#EF4444 with alpha %)
179
+ --er-danger-alpha-50: var(--er-red-alpha-50);
180
+ --er-danger-alpha-100: var(--er-red-alpha-100);
181
+ --er-danger-alpha-200: var(--er-red-alpha-200);
182
+ --er-danger-alpha-300: var(--er-red-alpha-300);
183
+ --er-danger-alpha-400: var(--er-red-alpha-400);
184
+ --er-danger-alpha-500: var(--er-red-alpha-500);
185
+
186
+ // ─────────────────────────────────────────────────────────────────────────
187
+ // INFORMATION (Info messages, links)
188
+ // Mapping: Information → Sky Cyan
189
+ // ─────────────────────────────────────────────────────────────────────────
190
+ --er-information-50: var(--er-sky-cyan-50);
191
+ --er-information-100: var(--er-sky-cyan-100);
192
+ --er-information-200: var(--er-sky-cyan-200);
193
+ --er-information-300: var(--er-sky-cyan-300);
194
+ --er-information-400: var(--er-sky-cyan-400);
195
+ --er-information-500: var(--er-sky-cyan-500);
196
+ --er-information-600: var(--er-sky-cyan-600);
197
+ --er-information-700: var(--er-sky-cyan-700);
198
+ --er-information-800: var(--er-sky-cyan-800);
199
+ --er-information-900: var(--er-sky-cyan-900);
200
+ --er-information-950: var(--er-sky-cyan-950);
201
+ --er-information-default: var(--er-sky-cyan-500); // Figma: information/default → color/sky cyan/500
202
+
203
+ // Information Alpha → Sky Cyan Alpha (#0EA5E9 with alpha %)
204
+ --er-information-alpha-50: var(--er-sky-cyan-alpha-50);
205
+ --er-information-alpha-100: var(--er-sky-cyan-alpha-100);
206
+ --er-information-alpha-200: var(--er-sky-cyan-alpha-200);
207
+ --er-information-alpha-300: var(--er-sky-cyan-alpha-300);
208
+ --er-information-alpha-400: var(--er-sky-cyan-alpha-400);
209
+ --er-information-alpha-500: var(--er-sky-cyan-alpha-500);
210
+
211
+ // ─────────────────────────────────────────────────────────────────────────
212
+ // ACCENT
213
+ // Mapping: Accent → Lavender (Default, can be overridden in project themes)
214
+ // ─────────────────────────────────────────────────────────────────────────
215
+ --er-accent-50: var(--er-lavender-50);
216
+ --er-accent-100: var(--er-lavender-100);
217
+ --er-accent-200: var(--er-lavender-200);
218
+ --er-accent-300: var(--er-lavender-300);
219
+ --er-accent-400: var(--er-lavender-400);
220
+ --er-accent-500: var(--er-lavender-500);
221
+ --er-accent-600: var(--er-lavender-600);
222
+ --er-accent-700: var(--er-lavender-700);
223
+ --er-accent-800: var(--er-lavender-800);
224
+ --er-accent-900: var(--er-lavender-900);
225
+ --er-accent-950: var(--er-lavender-950);
226
+ --er-accent-default: var(--er-lavender-500); // Figma: accent/default → color/lavender/500
227
+
228
+ // Accent Alpha → Lavender Alpha (#8749FF with alpha %)
229
+ --er-accent-alpha-50: var(--er-lavender-alpha-50);
230
+ --er-accent-alpha-100: var(--er-lavender-alpha-100);
231
+ --er-accent-alpha-200: var(--er-lavender-alpha-200);
232
+ --er-accent-alpha-300: var(--er-lavender-alpha-300);
233
+ --er-accent-alpha-400: var(--er-lavender-alpha-400);
234
+ --er-accent-alpha-500: var(--er-lavender-alpha-500);
235
+
236
+
237
+ // ─────────────────────────────────────────────────────────────────────────
238
+ // ALIASES FOR PURE COLORS (Backward compatibility)
239
+ // ─────────────────────────────────────────────────────────────────────────
240
+ --er-white: var(--er-gray-white);
241
+ --er-black: var(--er-gray-black);
242
+ }
@@ -0,0 +1,220 @@
1
+ // ============================================================================
2
+ // LAYER 3: COMPONENT TOKENS
3
+ // ============================================================================
4
+ // Usage-specific tokens mapped from Layer 2 aliases
5
+ // Source: Figma UI Kit Core - Color Guidance - Component Tokens
6
+ // File: https://www.figma.com/design/HSOs8VcK5CKL8s15AqD42x/UI-KIT-CORE
7
+ // Node: Color Guidance - Component Tokens (36925:1463)
8
+ //
9
+ // IMPORTANT: Only tokens defined in Figma are included here
10
+ // ============================================================================
11
+
12
+ :root {
13
+ // ─────────────────────────────────────────────────────────────────────────
14
+ // ACTION (Buttons, interactive elements)
15
+ // ─────────────────────────────────────────────────────────────────────────
16
+
17
+ // Action tokens — Primary (Figma: action/primary-*)
18
+ --er-action-primary-default: var(
19
+ --er-primary-default
20
+ ); // Figma: action/primary-default = primary/default = #3B82F6
21
+ --er-action-primary-hover: var(
22
+ --er-primary-600
23
+ ); // Figma: action/primary-hover = primary/600 = #2563EB
24
+ --er-action-primary-pressed: var(
25
+ --er-primary-700
26
+ ); // Figma: action/primary-pressed = primary/700 = #1D4CE0
27
+ --er-action-primary-subtle: var(
28
+ --er-primary-alpha-50
29
+ ); // Figma: action/primary-subtle = primary alpha/50 = #3B82F6 @ 3.92%
30
+ --er-action-primary-subtle-hover: var(
31
+ --er-primary-alpha-100
32
+ ); // Figma: action/primary-subtle-hover = primary alpha/100 = #3B82F6 @ 7.84%
33
+ --er-action-primary-subtle-pressed: var(
34
+ --er-primary-alpha-200
35
+ ); // Figma: action/primary-subtle-pressed = primary alpha/200 = #3B82F6 @ 12.16%
36
+
37
+ // Action tokens — Neutral (Figma: action/neutral-*)
38
+ --er-action-neutral-default: var(
39
+ --er-neutral-950
40
+ ); // Figma: action/neutral-default = neutral/950 = #09090B
41
+ --er-action-neutral-hover: var(
42
+ --er-neutral-600
43
+ ); // Figma: action/neutral-hover = neutral/600 = #52525B
44
+ --er-action-neutral-pressed: var(
45
+ --er-neutral-800
46
+ ); // Figma: action/neutral-pressed = neutral/800 = #27272A
47
+ --er-action-neutral-subtle-default: var(
48
+ --er-neutral-white
49
+ ); // Figma: action/neutral-subtle-default = neutral/white = #FFFFFF
50
+ --er-action-neutral-subtle-hover: var(
51
+ --er-neutral-alpha-50
52
+ ); // Figma: action/neutral-subtle-hover = neutral alpha/50 = #11161C @ 3.92%
53
+ --er-action-neutral-subtle-pressed: var(
54
+ --er-neutral-alpha-100
55
+ ); // Figma: action/neutral-subtle-pressed = neutral alpha/100 = #11161C @ 7.84%
56
+
57
+ // Action tokens — Danger (Figma: action/danger-*)
58
+ --er-action-danger-default: var(
59
+ --er-danger-default
60
+ ); // Figma: action/danger-default = danger/default = #EF4444
61
+ --er-action-danger-hover: var(
62
+ --er-danger-600
63
+ ); // Figma: action/danger-hover = danger/600 = #DC2626
64
+ --er-action-danger-pressed: var(
65
+ --er-danger-700
66
+ ); // Figma: action/danger-pressed = danger/700 = #B91C1C
67
+ --er-action-danger-subtle-default: var(
68
+ --er-danger-alpha-50
69
+ ); // Figma: action/danger-subtle-default = danger alpha/50 = #EF4444 @ 3.92%
70
+ --er-action-danger-subtle-hover: var(
71
+ --er-danger-alpha-100
72
+ ); // Figma: action/danger-subtle-hover = danger alpha/100 = #EF4444 @ 7.84%
73
+ --er-action-danger-subtle-pressed: var(
74
+ --er-danger-alpha-200
75
+ ); // Figma: action/danger-subtle-pressed = danger alpha/200 = #EF4444 @ 12.16%
76
+
77
+ // ─────────────────────────────────────────────────────────────────────────
78
+ // SURFACE (Backgrounds, cards, panels)
79
+ // Frame 36984:1625 - Surface section
80
+ // ─────────────────────────────────────────────────────────────────────────
81
+ --er-surface-page: var(
82
+ --er-neutral-white
83
+ ); // Figma: surface/page = neutral/white = #FFFFFF (main app canvas)
84
+ --er-surface-container: var(
85
+ --er-neutral-white
86
+ ); // Figma: surface/container = neutral/white = #FFFFFF (cards, panels)
87
+ --er-surface-elevated: var(
88
+ --er-neutral-white
89
+ ); // Figma: surface/elevated = neutral/white = #FFFFFF (modals, dropdowns, tooltips)
90
+ --er-surface-subtle: var(
91
+ --er-neutral-50
92
+ ); // Figma: surface/subtle = neutral/50 = #FAFAFA (alternating rows, quiet sections)
93
+ --er-surface-muted: var(
94
+ --er-neutral-100
95
+ ); // Figma: surface/muted = neutral/100 = #F4F4F5 (default/neutral tag bg)
96
+ --er-surface-track: var(
97
+ --er-elevation-50
98
+ ); // Figma: surface/track = elevation/50 = #F8F9FB @ 3.92%
99
+ --er-surface-inverse: var(
100
+ --er-neutral-900
101
+ ); // Figma: surface/inverse = neutral/900 = #18181B (dark headers, inverted sections)
102
+ --er-surface-neutral-subtle: var(
103
+ --er-neutral-alpha-100
104
+ ); // Figma: surface/neutral-subtle = neutral alpha/100 = #11161C @ 7.84%
105
+ --er-surface-brand-subtle: var(
106
+ --er-primary-alpha-100
107
+ ); // Figma: surface/brand-subtle = primary alpha/100 = #3B82F6 @ 7.84%
108
+ --er-surface-success-subtle: var(
109
+ --er-success-alpha-100
110
+ ); // Figma: surface/success-subtle = success alpha/100 = #10B981 @ 7.84%
111
+ --er-surface-warning-subtle: var(
112
+ --er-warning-alpha-100
113
+ ); // Figma: surface/warning-subtle = warning alpha/100 = #F59E0B @ 7.84%
114
+ --er-surface-danger-subtle: var(
115
+ --er-danger-alpha-100
116
+ ); // Figma: surface/danger-subtle = danger alpha/100 = #EF4444 @ 7.84%
117
+ --er-surface-information-subtle: var(
118
+ --er-information-alpha-100
119
+ ); // Figma: surface/information-subtle = information alpha/100 = #0EA5E9 @ 7.84%
120
+ --er-surface-fixed-white: var(
121
+ --er-neutral-white
122
+ ); // Figma: surface/fixed-white = neutral/white = #FFFFFF
123
+
124
+ // ─────────────────────────────────────────────────────────────────────────
125
+ // TEXT (Typography, labels, content)
126
+ // Frame 36984:1701 - Text section
127
+ // ─────────────────────────────────────────────────────────────────────────
128
+ --er-text-primary: var(
129
+ --er-neutral-alpha-950
130
+ ); // Figma: text/primary = neutral alpha/950 = #11161C @ 96.08%
131
+ --er-text-secondary: var(
132
+ --er-neutral-alpha-800
133
+ ); // Figma: text/secondary = neutral alpha/800 = #11161C @ 72.16%
134
+ --er-text-tertiary: var(
135
+ --er-neutral-alpha-700
136
+ ); // Figma: text/tertiary = neutral alpha/700 = #11161C @ 56.08%
137
+ --er-text-muted: var(
138
+ --er-neutral-alpha-600
139
+ ); // Figma: text/muted = neutral alpha/600 = #11161C @ 40%
140
+ --er-text-inverse: var(--er-neutral-50); // Figma: text/inverse = neutral/50 = #FAFAFA
141
+ --er-text-brand: var(--er-primary-default); // Figma: text/brand = primary/default = #3B82F6
142
+ --er-text-on-action: var(--er-neutral-50); // Figma: text/on-action = neutral/50 = #FAFAFA
143
+ --er-text-success: var(--er-success-default); // Figma: text/success = success/default = #10B981
144
+ --er-text-warning: var(--er-warning-default); // Figma: text/warning = warning/default = #F59E0B
145
+ --er-text-danger: var(--er-danger-default); // Figma: text/danger = danger/default = #EF4444
146
+ --er-text-information: var(
147
+ --er-information-default
148
+ ); // Figma: text/information = information/default = #0EA5E9
149
+
150
+ // ─────────────────────────────────────────────────────────────────────────
151
+ // ICON (Icons, decorative elements)
152
+ // Frame 36984:1770 - Icon section in Figma Component Tokens
153
+ // ─────────────────────────────────────────────────────────────────────────
154
+ --er-icon-primary: var(
155
+ --er-neutral-alpha-950
156
+ ); // Figma: icon/primary = neutral alpha/950 = #11161C @ 96.08%
157
+ --er-icon-secondary: var(
158
+ --er-neutral-alpha-800
159
+ ); // Figma: icon/secondary = neutral alpha/800 = #11161C @ 72.16%
160
+ --er-icon-tertiary: var(
161
+ --er-neutral-alpha-700
162
+ ); // Figma: icon/tertiary = neutral alpha/700 = #11161C @ 56.08%
163
+ --er-icon-muted: var(
164
+ --er-neutral-alpha-600
165
+ ); // Figma: icon/muted = neutral alpha/600 = #11161C @ 40%
166
+ --er-icon-inverse: var(--er-neutral-50); // Figma: icon/inverse = neutral/50 = #FAFAFA
167
+ --er-icon-brand: var(--er-primary-default); // Figma: icon/brand = primary/default = #3B82F6
168
+ --er-icon-on-action: var(--er-neutral-50); // Figma: icon/on-action = neutral/50 = #FAFAFA
169
+ --er-icon-success: var(--er-success-default); // Figma: icon/success = success/default = #10B981
170
+ --er-icon-warning: var(--er-warning-default); // Figma: icon/warning = warning/default = #F59E0B
171
+ --er-icon-danger: var(--er-danger-default); // Figma: icon/danger = danger/default = #EF4444
172
+ --er-icon-information: var(
173
+ --er-information-default
174
+ ); // Figma: icon/information = information/default = #0EA5E9
175
+
176
+ // ─────────────────────────────────────────────────────────────────────────
177
+ // BORDER (Borders, outlines, dividers)
178
+ // Frame 36984:1817 - Border section in Figma Component Tokens
179
+ // ─────────────────────────────────────────────────────────────────────────
180
+ --er-border-default: var(
181
+ --er-neutral-alpha-200
182
+ ); // Figma: border/default = neutral alpha/200 = #11161C @ 12.16%
183
+ --er-border-subtle: var(
184
+ --er-neutral-alpha-100
185
+ ); // Figma: border/subtle = neutral alpha/100 = #11161C @ 7.84%
186
+ --er-border-strong: var(
187
+ --er-neutral-alpha-400
188
+ ); // Figma: border/strong = neutral alpha/400 = #11161C @ 23.92%
189
+ --er-border-on-action: var(--er-neutral-50); // Figma: border/on-action = neutral/50 = #FAFAFA
190
+ --er-border-brand: var(--er-primary-default); // Figma: border/brand = primary/default = #3B82F6
191
+ --er-border-brand-subtle: var(
192
+ --er-primary-alpha-300
193
+ ); // Figma: border/brand-subtle = primary alpha/300 = #3B82F6 @ 20%
194
+ --er-border-success: var(--er-success-default); // Figma: border/success = success/default = #10B981
195
+ --er-border-success-subtle: var(
196
+ --er-success-alpha-300
197
+ ); // Figma: border/success-subtle = success alpha/300 = #10B981 @ 20%
198
+ --er-border-warning: var(--er-warning-default); // Figma: border/warning = warning/default = #F59E0B
199
+ --er-border-warning-subtle: var(
200
+ --er-warning-alpha-300
201
+ ); // Figma: border/warning-subtle = warning alpha/300 = #F59E0B @ 20%
202
+ --er-border-danger: var(--er-danger-default); // Figma: border/danger = danger/default = #EF4444
203
+ --er-border-danger-subtle: var(
204
+ --er-danger-alpha-300
205
+ ); // Figma: border/danger-subtle = danger alpha/300 = #EF4444 @ 20%
206
+ --er-border-information: var(
207
+ --er-information-default
208
+ ); // Figma: border/information = information/default = #0EA5E9
209
+ --er-border-information-subtle: var(
210
+ --er-information-alpha-300
211
+ ); // Figma: border/information-subtle = information alpha/300 = #0EA5E9 @ 20%
212
+
213
+ // ─────────────────────────────────────────────────────────────────────────
214
+ // COMPONENT-SPECIFIC TOKENS
215
+ // ─────────────────────────────────────────────────────────────────────────
216
+ // Segmented control (Figma: component/segmented/*)
217
+ --er-component-segmented-item-hover: var(--er-action-neutral-subtle-hover);
218
+ --er-component-segmented-item-active: var(--er-neutral-white);
219
+ --er-surface-overlay: rgb(0, 0, 0, 0.5);
220
+ }
@@ -0,0 +1,165 @@
1
+ // ============================================================================
2
+ // DARK MODE TOKEN OVERRIDES
3
+ // ============================================================================
4
+ // Source: Figma UI Kit Core — Color Guidance — Dark Component Tokens
5
+ // File: https://www.figma.com/design/HSOs8VcK5CKL8s15AqD42x/UI-KIT-CORE
6
+ // Nodes:
7
+ // action — 40424:8223
8
+ // surface — 40424:8245
9
+ // text — 40424:8258
10
+ // icon — 40424:8271
11
+ // border — 40424:8283
12
+ //
13
+ // Applied when:
14
+ // - html.dark (global preference)
15
+ // - [data-theme="dark"] (attribute-based)
16
+ // - .dark (class-based — used by showcase toggle)
17
+ // ============================================================================
18
+
19
+ html.dark,
20
+ [data-theme='dark'],
21
+ .dark {
22
+ // ─────────────────────────────────────────────────────────────────────────
23
+ // ACTION
24
+ // ─────────────────────────────────────────────────────────────────────────
25
+ // Primary action — unchanged between light/dark
26
+ --er-action-primary-default: var(--er-primary-default); // primary/default = #3B82F6 (unchanged)
27
+ --er-action-primary-hover: var(--er-primary-600); // primary/600 = #2563EB (unchanged)
28
+ --er-action-primary-pressed: var(--er-primary-700); // primary/700 = #1D4CE0 (unchanged)
29
+
30
+ // Primary subtle — unchanged (alpha-based, works on dark)
31
+ --er-action-primary-subtle: var(--er-primary-alpha-50); // primary alpha/50 = #3B82F6 @ 3.92%
32
+ --er-action-primary-subtle-hover: var(--er-primary-alpha-100); // primary alpha/100 @ 7.84%
33
+ --er-action-primary-subtle-pressed: var(--er-primary-alpha-200); // primary alpha/200 @ 12.16%
34
+
35
+ // Neutral action — inverted from dark to light
36
+ --er-action-neutral-default: var(
37
+ --er-neutral-white
38
+ ); // neutral/white = #FFFFFF (light: neutral/950)
39
+ --er-action-neutral-hover: var(--er-neutral-100); // neutral/100 = #F4F4F5 (light: neutral/600)
40
+ --er-action-neutral-pressed: var(--er-neutral-300); // neutral/300 = #D4D4D8 (light: neutral/800)
41
+
42
+ // Neutral subtle — black base + elevation (white alpha) overlays
43
+ --er-action-neutral-subtle-default: var(
44
+ --er-neutral-black
45
+ ); // neutral/black = #000000 (light: neutral/white)
46
+ --er-action-neutral-subtle-hover: var(
47
+ --er-elevation-50
48
+ ); // elevation/50 = #F8F9FB @ 3.92% (light: neutral alpha/50)
49
+ --er-action-neutral-subtle-pressed: var(
50
+ --er-elevation-100
51
+ ); // elevation/100 = #F8F9FB @ 7.84% (light: neutral alpha/100)
52
+
53
+ // Danger action — shifted to -600/-700/-800 in dark mode for better contrast
54
+ --er-action-danger-default: var(--er-danger-600); // danger/600 = #DC2626 (light: danger/500)
55
+ --er-action-danger-hover: var(--er-danger-700); // danger/700 = #B91C1C (light: danger/600)
56
+ --er-action-danger-pressed: var(--er-danger-800); // danger/800 = #991B1B (light: danger/700)
57
+
58
+ // Danger subtle — unchanged (alpha-based, works on dark)
59
+ --er-action-danger-subtle-default: var(--er-danger-alpha-50); // danger alpha/50 @ 3.92%
60
+ --er-action-danger-subtle-hover: var(--er-danger-alpha-100); // danger alpha/100 @ 7.84%
61
+ --er-action-danger-subtle-pressed: var(--er-danger-alpha-200); // danger alpha/200 @ 12.16%
62
+
63
+ // ─────────────────────────────────────────────────────────────────────────
64
+ // SURFACE
65
+ // ─────────────────────────────────────────────────────────────────────────
66
+ --er-surface-page: var(--er-neutral-950); // surface/page = neutral/950 = #09090B
67
+ --er-surface-container: var(--er-neutral-900); // surface/container = neutral/900 = #18181B
68
+ --er-surface-elevated: var(--er-neutral-800); // surface/elevated = neutral/800 = #27272A
69
+ --er-surface-subtle: var(--er-neutral-800); // surface/subtle = neutral/800 = #27272A
70
+ --er-surface-muted: var(--er-neutral-700); // surface/muted = neutral/700 = #3F3F46
71
+ --er-surface-track: var(--er-elevation-50); // surface/track = elevation/50 (unchanged)
72
+ --er-surface-inverse: var(--er-neutral-50); // surface/inverse = neutral/50 = #FAFAFA
73
+
74
+ // Subtle surfaces — unchanged (alpha-based, work on dark)
75
+ --er-surface-neutral-subtle: var(--er-elevation-100); // surface/neutral-subtle = elevation/100 = #F8F9FB @ 7.84%
76
+ --er-surface-brand-subtle: var(--er-primary-alpha-100); // primary alpha/100 (unchanged)
77
+ --er-surface-success-subtle: var(--er-success-alpha-100); // success alpha/100 (unchanged)
78
+ --er-surface-warning-subtle: var(--er-warning-alpha-100); // warning alpha/100 (unchanged)
79
+ --er-surface-danger-subtle: var(--er-danger-alpha-100); // danger alpha/100 (unchanged)
80
+ --er-surface-information-subtle: var(--er-information-alpha-100); // information alpha/100 (unchanged)
81
+
82
+ // Fixed white — never changes between light/dark
83
+ --er-surface-fixed-white: var(--er-neutral-white); // always #FFFFFF
84
+
85
+ // Overlay / loading mask — dark translucent overlay so `.el-loading-mask`
86
+ // (v-loading / ElLoading) no longer washes out to white in dark mode.
87
+ // Maps to neutral/950 = #09090B at 90% (matches light-mode opacity).
88
+ --el-mask-color: rgba(9, 9, 11, 0.9);
89
+
90
+ // ─────────────────────────────────────────────────────────────────────────
91
+ // TEXT
92
+ // ─────────────────────────────────────────────────────────────────────────
93
+ --er-text-primary: var(--er-elevation-950); // text/primary = elevation/950 = #F8F9FB @ 96.08%
94
+ --er-text-secondary: var(--er-elevation-800); // text/secondary = elevation/800 @ 72.16%
95
+ --er-text-tertiary: var(--er-elevation-600); // text/tertiary = elevation/600 @ 40%
96
+ --er-text-muted: var(--er-elevation-600); // text/muted = elevation/600 @ 40%
97
+ --er-text-inverse: var(--er-neutral-900); // text/inverse = neutral/900 = #18181B
98
+ --er-text-brand: var(--er-primary-default); // primary/default = #3B82F6 (unchanged)
99
+ --er-text-on-action: var(--er-neutral-50); // neutral/50 = #FAFAFA (unchanged)
100
+ --er-text-success: var(--er-success-default); // success/default = #10B981 (unchanged)
101
+ --er-text-warning: var(--er-warning-default); // warning/default = #F59E0B (unchanged)
102
+ --er-text-danger: var(--er-danger-default); // danger/default = #EF4444 (unchanged)
103
+ --er-text-information: var(--er-information-default); // information/default = #0EA5E9 (unchanged)
104
+
105
+ // ─────────────────────────────────────────────────────────────────────────
106
+ // ICON
107
+ // ─────────────────────────────────────────────────────────────────────────
108
+ --er-icon-primary: var(--er-elevation-950); // icon/primary = elevation/950
109
+ --er-icon-secondary: var(--er-elevation-800); // icon/secondary = elevation/800
110
+ --er-icon-tertiary: var(--er-elevation-700); // icon/tertiary = elevation/700 @ 56.08%
111
+ --er-icon-muted: var(--er-elevation-600); // icon/muted = elevation/600 @ 40%
112
+ --er-icon-inverse: var(--er-neutral-900); // icon/inverse = neutral/900 = #18181B
113
+ --er-icon-brand: var(--er-primary-default); // primary/default = #3B82F6 (unchanged)
114
+ --er-icon-on-action: var(--er-neutral-50); // neutral/50 = #FAFAFA (unchanged)
115
+ --er-icon-success: var(--er-success-default); // success/default = #10B981 (unchanged)
116
+ --er-icon-warning: var(--er-warning-default); // warning/default = #F59E0B (unchanged)
117
+ --er-icon-danger: var(--er-danger-default); // danger/default = #EF4444 (unchanged)
118
+ --er-icon-information: var(--er-information-default); // information/default = #0EA5E9 (unchanged)
119
+
120
+ // ─────────────────────────────────────────────────────────────────────────
121
+ // BORDER
122
+ // ─────────────────────────────────────────────────────────────────────────
123
+ --er-border-default: var(--er-elevation-200); // border/default = elevation/200 = #F8F9FB @ 12.16%
124
+ --er-border-subtle: var(--er-elevation-100); // border/subtle = elevation/100 @ 7.84%
125
+ --er-border-strong: var(--er-elevation-400); // border/strong = elevation/400 @ 23.92%
126
+ --er-border-on-action: var(--er-neutral-50); // neutral/50 = #FAFAFA (unchanged)
127
+
128
+ // Semantic borders — unchanged (alpha-based or solid brand hues)
129
+ --er-border-brand: var(--er-primary-default); // primary/default = #3B82F6 (unchanged)
130
+ --er-border-brand-subtle: var(--er-primary-alpha-300); // primary alpha/300 @ 20% (unchanged)
131
+
132
+ --er-border-success: var(--er-success-default); // success/default = #10B981 (unchanged)
133
+ --er-border-success-subtle: var(--er-success-alpha-300); // success alpha/300 @ 20% (unchanged)
134
+
135
+ --er-border-warning: var(--er-warning-default); // warning/default = #F59E0B (unchanged)
136
+ --er-border-warning-subtle: var(--er-warning-alpha-300); // warning alpha/300 @ 20% (unchanged)
137
+
138
+ --er-border-danger: var(--er-danger-default); // danger/default = #EF4444 (unchanged)
139
+ --er-border-danger-subtle: var(--er-danger-alpha-300); // danger alpha/300 @ 20% (unchanged)
140
+
141
+ --er-border-information: var(--er-information-default); // information/default = #0EA5E9 (unchanged)
142
+ --er-border-information-subtle: var(--er-information-alpha-300); // information alpha/300 @ 20% (unchanged)
143
+
144
+ // ─────────────────────────────────────────────────────────────────────────
145
+ // SHADOW
146
+ // ─────────────────────────────────────────────────────────────────────────
147
+ // Ambient shadows (black with varying opacity)
148
+ --er-shadow-ambient-01: rgba(0, 0, 0, 0.16); // 16% (light: 4%)
149
+ --er-shadow-ambient-02: rgba(0, 0, 0, 0.2); // 20% (light: 6%)
150
+ --er-shadow-ambient-03: rgba(0, 0, 0, 0.24); // 24% (light: 8%)
151
+ --er-shadow-ambient-04: rgba(0, 0, 0, 0.28); // 28% (light: 10%)
152
+ --er-shadow-ambient-05: rgba(0, 0, 0, 0.32); // 32% (light: 12%)
153
+
154
+ // Highlight shadows (white with varying opacity)
155
+ --er-shadow-highlight-01: rgba(255, 255, 255, 0.03); // 3% (light: 0%)
156
+ --er-shadow-highlight-02: rgba(255, 255, 255, 0.05); // 5% (light: 0%)
157
+ --er-shadow-highlight-03: rgba(255, 255, 255, 0.07); // 7% (light: 0%)
158
+
159
+ // ─────────────────────────────────────────────────────────────────────────
160
+ // COMPONENT-SPECIFIC TOKENS
161
+ // ─────────────────────────────────────────────────────────────────────────
162
+ // Segmented control (Figma: component/segmented/*)
163
+ --er-component-segmented-item-hover: var(--er-elevation-50); // elevation/50 = #F8F9FB @ 3.92%
164
+ --er-component-segmented-item-active: var(--er-neutral-700); // neutral/700 = #3F3F46
165
+ }
@@ -0,0 +1,11 @@
1
+ // BASE PROJECT THEME
2
+ // Default theme - uses blue as primary
3
+
4
+ :root {
5
+ // Override Layer 2 aliases if needed
6
+ // Default: primary = blue (already set in _layer2-alias.scss)
7
+
8
+ // Can customize specific tokens here
9
+ // Example:
10
+ // --er-primary-500: var(--er-blue-600); // Darker blue
11
+ }