@eaera-com/eaera-widgets-v2 0.1.76 → 0.1.78
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/design-system/components/_button.scss +46 -48
- package/dist/design-system/components/_checkbox.scss +26 -66
- package/dist/design-system/components/_date-picker.scss +14 -14
- package/dist/design-system/components/_dropdown.scss +4 -22
- package/dist/design-system/components/_input-number.scss +9 -33
- package/dist/design-system/components/_link.scss +1 -2
- package/dist/design-system/components/_popper.scss +6 -27
- package/dist/design-system/components/_radio.scss +10 -0
- package/dist/design-system/components/_select.scss +5 -0
- package/dist/design-system/components/_table.scss +28 -12
- package/package.json +1 -1
|
@@ -13,19 +13,11 @@
|
|
|
13
13
|
// is-ghost=yes → :ghost="true" → adds .is-ghost (custom prop)
|
|
14
14
|
//
|
|
15
15
|
// Sizes (Figma):
|
|
16
|
-
// sm → h=24px px=
|
|
17
|
-
// md → h=32px px=
|
|
18
|
-
// lg → h=40px px=
|
|
19
|
-
// xl → h=48px px=16px gap=8px icon=20px radius=corner/md(12px) typo=title/md
|
|
16
|
+
// sm → h=24px px=8px gap=4px radius=corner/xs(4px) icon=16px typo=label/md
|
|
17
|
+
// md → h=32px px=12px gap=4px radius=corner/sm(8px) icon=20px typo=label/lg [default]
|
|
18
|
+
// lg → h=40px px=16px gap=8px radius=corner/md(12px) icon=20px typo=label/lg
|
|
20
19
|
//
|
|
21
|
-
//
|
|
22
|
-
// solid: bg+border = action/{type}-default → -hover → -pressed
|
|
23
|
-
// plain: transparent bg, border stays, hover/pressed = subtle bg
|
|
24
|
-
// ghost: transparent bg+border, text stays, hover/pressed = subtle bg
|
|
25
|
-
//
|
|
26
|
-
// Extension color (success):
|
|
27
|
-
// Không có trong Figma UI Kit — map local theo green palette tokens
|
|
28
|
-
// (500→600→700), dùng chung pattern solid/plain/ghost/link của core.
|
|
20
|
+
// Disabled: opacity-50 on same colors (Figma: is-disabled = opacity 0.5)
|
|
29
21
|
// ============================================================================
|
|
30
22
|
|
|
31
23
|
@use "../themes/aurora/typography/typography-utils" as typo;
|
|
@@ -126,7 +118,7 @@
|
|
|
126
118
|
@include typo.label-lg; // 14px / 600 / 20px lh / 0.1px tracking
|
|
127
119
|
|
|
128
120
|
height: var(--er-control-height-md); // Figma: control-height/md
|
|
129
|
-
padding: 0 var(--er-shape-spacing-100) !important; // Figma: md
|
|
121
|
+
padding: 0 var(--er-shape-spacing-100) !important; // Figma: shape/spacing/md (16px) + override Element's default padding
|
|
130
122
|
gap: var(--er-shape-spacing-50);
|
|
131
123
|
border-radius: var(--er-shape-corner-100); // Figma: shape/corner/sm
|
|
132
124
|
box-shadow: none !important;
|
|
@@ -140,8 +132,8 @@
|
|
|
140
132
|
}
|
|
141
133
|
|
|
142
134
|
svg {
|
|
143
|
-
width: var(--er-
|
|
144
|
-
height: var(--er-
|
|
135
|
+
width: var(--er-control-height-xs);
|
|
136
|
+
height: var(--er-control-height-xs);
|
|
145
137
|
}
|
|
146
138
|
|
|
147
139
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -157,20 +149,20 @@
|
|
|
157
149
|
border-radius: var(--er-shape-corner-75);
|
|
158
150
|
|
|
159
151
|
svg {
|
|
160
|
-
width: var(--er-shape-spacing-
|
|
161
|
-
height: var(--er-shape-spacing-
|
|
152
|
+
width: var(--er-shape-spacing-200);
|
|
153
|
+
height: var(--er-shape-spacing-200);
|
|
162
154
|
}
|
|
163
155
|
}
|
|
164
156
|
|
|
165
|
-
// LG — Figma: h=40px, px=12px, gap=
|
|
157
|
+
// LG — Figma: h=40px, px=12px, gap=8px, radius=corner/md(12px)
|
|
166
158
|
&.lg {
|
|
167
159
|
height: var(--er-control-height-lg);
|
|
168
|
-
padding: 0 var(--er-shape-spacing-
|
|
169
|
-
gap: var(--er-shape-spacing-
|
|
160
|
+
padding: 0 var(--er-shape-spacing-200) !important;
|
|
161
|
+
gap: var(--er-shape-spacing-100);
|
|
170
162
|
border-radius: var(--er-shape-corner-150);
|
|
171
163
|
|
|
172
|
-
> span {
|
|
173
|
-
gap: var(--er-shape-spacing-
|
|
164
|
+
> span {
|
|
165
|
+
gap: var(--er-shape-spacing-100);
|
|
174
166
|
}
|
|
175
167
|
}
|
|
176
168
|
|
|
@@ -187,8 +179,8 @@
|
|
|
187
179
|
}
|
|
188
180
|
|
|
189
181
|
svg {
|
|
190
|
-
width: var(--er-
|
|
191
|
-
height: var(--er-
|
|
182
|
+
width: var(--er-control-height-sm);
|
|
183
|
+
height: var(--er-control-height-sm);
|
|
192
184
|
}
|
|
193
185
|
}
|
|
194
186
|
|
|
@@ -197,18 +189,18 @@
|
|
|
197
189
|
// ─────────────────────────────────────────────────────────────────────────
|
|
198
190
|
|
|
199
191
|
// ── PRIMARY ──────────────────────────────────────────────────────────────
|
|
200
|
-
// Figma: type=primary
|
|
201
|
-
// Default: bg=action/primary-default text=text/on-action
|
|
202
|
-
// Hover: bg=action/primary-hover
|
|
203
|
-
// Pressed: bg=action/primary-pressed
|
|
192
|
+
// Figma: type=primary
|
|
193
|
+
// Default: bg=action/primary-default(#3b82f6) text=text/on-action(#fafafa)
|
|
194
|
+
// Hover: bg=action/primary-hover(#2563eb)
|
|
195
|
+
// Pressed: bg=action/primary-pressed(#1d4ce0)
|
|
204
196
|
// Disabled: same colors + opacity-50
|
|
205
197
|
&.primary {
|
|
206
198
|
@include btn-solid(var(--er-action-primary-default), var(--er-action-primary-hover), var(--er-action-primary-pressed), var(--er-text-on-action));
|
|
207
199
|
|
|
208
200
|
// Plain — Figma: type=primary is-plain=yes
|
|
209
|
-
// Default: transparent bg border=border/brand-subtle text=action/primary-default
|
|
210
|
-
// Hover: bg=action/primary-subtle-hover border stays
|
|
211
|
-
// Pressed: bg=action/primary-subtle-pressed border stays
|
|
201
|
+
// Default: transparent bg border=border/brand-subtle(#93c5fd) text=action/primary-default
|
|
202
|
+
// Hover: bg=action/primary-subtle-hover(#dbeafe) border stays
|
|
203
|
+
// Pressed: bg=action/primary-subtle-pressed(#bfdbfe) border stays
|
|
212
204
|
&.is-plain {
|
|
213
205
|
@include btn-plain(
|
|
214
206
|
var(--er-border-brand-subtle),
|
|
@@ -220,8 +212,8 @@
|
|
|
220
212
|
|
|
221
213
|
// Ghost — Figma: type=primary is-ghost=yes
|
|
222
214
|
// Default: transparent bg no border text=action/primary-default
|
|
223
|
-
// Hover: bg=action/primary-subtle-hover text stays
|
|
224
|
-
// Pressed: bg=action/primary-subtle-pressed text stays
|
|
215
|
+
// Hover: bg=action/primary-subtle-hover(#dbeafe) text stays
|
|
216
|
+
// Pressed: bg=action/primary-subtle-pressed(#bfdbfe) text stays
|
|
225
217
|
&.is-ghost {
|
|
226
218
|
@include btn-ghost(var(--er-action-primary-default), var(--er-action-primary-subtle-hover), var(--er-action-primary-subtle-pressed));
|
|
227
219
|
}
|
|
@@ -229,9 +221,9 @@
|
|
|
229
221
|
|
|
230
222
|
// ── DANGER ───────────────────────────────────────────────────────────────
|
|
231
223
|
// Figma: type=danger
|
|
232
|
-
// Default: bg=action/danger-default(#
|
|
233
|
-
// Hover: bg=action/danger-hover(#
|
|
234
|
-
// Pressed: bg=action/danger-pressed(#
|
|
224
|
+
// Default: bg=action/danger-default(#ef4444) text=text/on-action(#fafafa)
|
|
225
|
+
// Hover: bg=action/danger-hover(#dc2626)
|
|
226
|
+
// Pressed: bg=action/danger-pressed(#b91c1c)
|
|
235
227
|
&.danger {
|
|
236
228
|
@include btn-solid(var(--er-action-danger-default), var(--er-action-danger-hover), var(--er-action-danger-pressed), var(--er-text-on-action));
|
|
237
229
|
|
|
@@ -280,40 +272,46 @@
|
|
|
280
272
|
}
|
|
281
273
|
}
|
|
282
274
|
|
|
283
|
-
// ── SUCCESS
|
|
284
|
-
//
|
|
285
|
-
//
|
|
286
|
-
//
|
|
275
|
+
// ── SUCCESS ──────────────────────────────────────────────────────────────
|
|
276
|
+
// Not in Figma UI Kit — local extension (tokens mirror danger).
|
|
277
|
+
// Default: bg=action/success-default(#10b981) text=text/on-action(#fafafa)
|
|
278
|
+
// Hover: bg=action/success-hover(#059669)
|
|
279
|
+
// Pressed: bg=action/success-pressed(#047857)
|
|
287
280
|
&.success {
|
|
288
281
|
@include btn-solid(var(--er-action-success-default), var(--er-action-success-hover), var(--er-action-success-pressed), var(--er-text-on-action));
|
|
289
282
|
|
|
290
|
-
// Plain —
|
|
291
|
-
//
|
|
283
|
+
// Plain — local extension, mirrors danger plain
|
|
284
|
+
// Default: transparent bg border=border/success-subtle text=text/success(#10b981)
|
|
285
|
+
// Hover: bg=action/success-subtle-hover border stays
|
|
286
|
+
// Pressed: bg=action/success-subtle-pressed border stays
|
|
292
287
|
&.is-plain {
|
|
293
288
|
@include btn-plain(var(--er-border-success-subtle), var(--er-text-success), var(--er-action-success-subtle-hover), var(--er-action-success-subtle-pressed));
|
|
294
289
|
}
|
|
295
290
|
|
|
296
|
-
// Ghost —
|
|
291
|
+
// Ghost — local extension, mirrors danger ghost
|
|
292
|
+
// Default: transparent bg no border text=text/success(#10b981)
|
|
293
|
+
// Hover: bg=action/success-subtle-hover text stays
|
|
294
|
+
// Pressed: bg=action/success-subtle-pressed text stays
|
|
297
295
|
&.is-ghost {
|
|
298
296
|
@include btn-ghost(var(--er-text-success), var(--er-action-success-subtle-hover), var(--er-action-success-subtle-pressed));
|
|
299
297
|
}
|
|
300
298
|
|
|
301
|
-
// Link — renders as a
|
|
299
|
+
// Link — renders as a primary text link (unchanged behavior)
|
|
302
300
|
&.is-link {
|
|
303
|
-
color: var(--er-
|
|
301
|
+
color: var(--er-action-primary-default) !important;
|
|
304
302
|
|
|
305
303
|
&:hover:not(:disabled):not(.is-disabled) {
|
|
306
|
-
color: var(--er-action-
|
|
304
|
+
color: var(--er-action-primary-hover) !important;
|
|
307
305
|
}
|
|
308
306
|
|
|
309
307
|
&:active:not(:disabled):not(.is-disabled) {
|
|
310
|
-
color: var(--er-action-
|
|
308
|
+
color: var(--er-action-primary-pressed) !important;
|
|
311
309
|
}
|
|
312
310
|
|
|
313
311
|
&:disabled,
|
|
314
312
|
&.is-disabled {
|
|
315
313
|
opacity: 0.5;
|
|
316
|
-
color: var(--er-
|
|
314
|
+
color: var(--er-action-primary-default) !important;
|
|
317
315
|
}
|
|
318
316
|
}
|
|
319
317
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// ============================================================================
|
|
4
4
|
// CHECKBOX COMPONENT STYLES
|
|
5
5
|
// ============================================================================
|
|
6
|
-
// Source: Figma UI Kit Production - Checkboxes (node-id=40091:
|
|
6
|
+
// Source: Figma UI Kit Production - Checkboxes (node-id=40091:2987)
|
|
7
7
|
// Based on: EaeraCheckbox.vue component (wraps Element Plus ElCheckbox)
|
|
8
8
|
// IMPORTANT: Colors use Layer 3 tokens only
|
|
9
9
|
//
|
|
@@ -11,27 +11,14 @@
|
|
|
11
11
|
// .el-checkbox
|
|
12
12
|
// .el-checkbox__input ← State classes here (.is-checked, .is-disabled, .is-indeterminate)
|
|
13
13
|
// .el-checkbox__inner ← The checkbox box (visual)
|
|
14
|
-
// ::after ← The
|
|
15
|
-
// ::before ← The indeterminate dash (
|
|
14
|
+
// ::after ← The checkmark icon (border trick)
|
|
15
|
+
// ::before ← The indeterminate dash (border trick)
|
|
16
16
|
// .el-checkbox__label ← Text label (sibling of __input)
|
|
17
|
-
//
|
|
18
|
-
// DISABLED (per Figma): opacity 0.5 is applied to the WHOLE component
|
|
19
|
-
// (box + label) — label keeps its state color. Do not restyle label colors
|
|
20
|
-
// per-disabled-state.
|
|
21
17
|
// ============================================================================
|
|
22
18
|
|
|
23
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
24
|
-
// ICONS — exact SVG glyphs exported from Figma (node 40091:3351)
|
|
25
|
-
// check: 11×8, stroke 2px, round caps
|
|
26
|
-
// minus: 10×2, stroke 2px, round caps
|
|
27
|
-
// Rendered 1:1 via mask so strokes keep the designed 2px weight.
|
|
28
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
29
|
-
$chk-check-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 8' fill='none'%3E%3Cpath d='M10 1L3.8125 7L1 4.27273' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
|
|
30
|
-
$chk-minus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 2' fill='none'%3E%3Cpath d='M1 1H9' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
|
|
31
|
-
|
|
32
19
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
33
20
|
// MIXIN — reusable checkbox visual styles
|
|
34
|
-
// Used by: .custom-checkbox
|
|
21
|
+
// Used by: .custom-checkbox and .custom-tree (tree checkbox variant)
|
|
35
22
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
36
23
|
@mixin checkbox-styles {
|
|
37
24
|
height: unset;
|
|
@@ -51,37 +38,12 @@ $chk-minus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
51
38
|
border-radius: var(--er-shape-corner-50);
|
|
52
39
|
border: 1.5px solid var(--er-border-strong);
|
|
53
40
|
background-color: transparent;
|
|
54
|
-
|
|
55
|
-
// Check icon: full-size SVG mask layer, animated scale(0) → scale(1)
|
|
56
|
-
&::after {
|
|
57
|
-
inset: 0;
|
|
58
|
-
margin: auto;
|
|
59
|
-
width: 100%;
|
|
60
|
-
height: 100%;
|
|
61
|
-
box-sizing: border-box;
|
|
62
|
-
border: none;
|
|
63
|
-
background-color: var(--er-icon-on-action);
|
|
64
|
-
-webkit-mask: $chk-check-icon center / 11px 8px no-repeat;
|
|
65
|
-
mask: $chk-check-icon center / 11px 8px no-repeat;
|
|
66
|
-
transform: scale(0);
|
|
67
|
-
transition: transform 0.15s ease-in 50ms;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// Indeterminate dash: hidden unless .is-indeterminate
|
|
71
|
-
&::before {
|
|
72
|
-
content: '';
|
|
73
|
-
display: none;
|
|
74
|
-
}
|
|
75
41
|
}
|
|
76
42
|
|
|
77
43
|
// Checked
|
|
78
44
|
&.is-checked .el-checkbox__inner {
|
|
79
45
|
background-color: var(--er-action-primary-default);
|
|
80
46
|
border-color: var(--er-action-primary-default);
|
|
81
|
-
|
|
82
|
-
&::after {
|
|
83
|
-
transform: scale(1);
|
|
84
|
-
}
|
|
85
47
|
}
|
|
86
48
|
|
|
87
49
|
// Indeterminate
|
|
@@ -90,40 +52,29 @@ $chk-minus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
90
52
|
border-color: var(--er-action-primary-default);
|
|
91
53
|
|
|
92
54
|
&::before {
|
|
93
|
-
|
|
94
|
-
inset: 0;
|
|
95
|
-
margin: auto;
|
|
96
|
-
width: 100%;
|
|
97
|
-
height: 100%;
|
|
55
|
+
border-color: var(--er-icon-on-action);
|
|
98
56
|
background-color: var(--er-icon-on-action);
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
&::after {
|
|
106
|
-
transform: scale(0);
|
|
57
|
+
height: 2px;
|
|
58
|
+
left: 2.5px;
|
|
59
|
+
right: 2.5px;
|
|
60
|
+
top: 50%;
|
|
61
|
+
transform: translateY(-50%);
|
|
107
62
|
}
|
|
108
63
|
}
|
|
109
|
-
}
|
|
110
64
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
opacity: 0.5;
|
|
116
|
-
cursor: not-allowed;
|
|
65
|
+
// Disabled
|
|
66
|
+
&.is-disabled {
|
|
67
|
+
opacity: 0.5;
|
|
68
|
+
}
|
|
117
69
|
}
|
|
118
70
|
|
|
119
71
|
// Hover
|
|
120
72
|
&:hover:not(.is-disabled) {
|
|
121
|
-
.el-checkbox__input:not(.is-checked)
|
|
73
|
+
.el-checkbox__input:not(.is-checked) .el-checkbox__inner {
|
|
122
74
|
border-color: var(--er-border-action-hover);
|
|
123
75
|
}
|
|
124
76
|
|
|
125
|
-
.el-checkbox__input.is-checked .el-checkbox__inner
|
|
126
|
-
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
|
|
77
|
+
.el-checkbox__input.is-checked .el-checkbox__inner {
|
|
127
78
|
background-color: var(--er-action-primary-hover);
|
|
128
79
|
border-color: var(--er-action-primary-hover);
|
|
129
80
|
}
|
|
@@ -135,7 +86,6 @@ $chk-minus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
135
86
|
|
|
136
87
|
// ───────────────────────────────────────────────────────────────────────
|
|
137
88
|
// LABEL STYLING — state-specific colors per Figma
|
|
138
|
-
// Disabled keeps its state color (whole-component opacity handles the fade)
|
|
139
89
|
// ───────────────────────────────────────────────────────────────────────
|
|
140
90
|
|
|
141
91
|
// Default (unchecked): text-secondary
|
|
@@ -154,4 +104,14 @@ $chk-minus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
154
104
|
.el-checkbox__input.is-indeterminate + .el-checkbox__label {
|
|
155
105
|
color: var(--er-text-primary) !important;
|
|
156
106
|
}
|
|
107
|
+
|
|
108
|
+
// Disabled (uncheck/indeterminate): text-disabled
|
|
109
|
+
.el-checkbox__input.is-disabled + .el-checkbox__label {
|
|
110
|
+
color: var(--er-text-muted) !important;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Disabled + Checked: still blue but translucent (opacity-50)
|
|
114
|
+
.el-checkbox__input.is-disabled.is-checked + .el-checkbox__label {
|
|
115
|
+
color: var(--er-action-primary-default) !important;
|
|
116
|
+
}
|
|
157
117
|
}
|
|
@@ -272,13 +272,13 @@
|
|
|
272
272
|
border-radius: var(--er-shape-corner-150) !important;
|
|
273
273
|
border: none !important;
|
|
274
274
|
|
|
275
|
-
.el-picker-panel *[slot=
|
|
275
|
+
.el-picker-panel *[slot="sidebar"] + .el-picker-panel__body,
|
|
276
276
|
.el-picker-panel__sidebar + .el-picker-panel__body {
|
|
277
277
|
margin-left: 130px !important;
|
|
278
278
|
}
|
|
279
279
|
|
|
280
280
|
.el-date-picker .el-picker-panel__content {
|
|
281
|
-
width:
|
|
281
|
+
width: 298px;
|
|
282
282
|
margin: 0;
|
|
283
283
|
padding: 0 var(--er-shape-spacing-150);
|
|
284
284
|
}
|
|
@@ -289,11 +289,11 @@
|
|
|
289
289
|
}
|
|
290
290
|
|
|
291
291
|
.el-picker-panel {
|
|
292
|
-
width:
|
|
292
|
+
width: 300px;
|
|
293
293
|
line-height: unset;
|
|
294
294
|
|
|
295
295
|
&.el-date-range-picker {
|
|
296
|
-
width:
|
|
296
|
+
width: 596px;
|
|
297
297
|
|
|
298
298
|
&.has-sidebar {
|
|
299
299
|
width: fit-content;
|
|
@@ -445,7 +445,7 @@
|
|
|
445
445
|
|
|
446
446
|
&.today .el-date-table-cell__text {
|
|
447
447
|
&::after {
|
|
448
|
-
content:
|
|
448
|
+
content: "";
|
|
449
449
|
display: block;
|
|
450
450
|
width: var(--er-shape-spacing-50);
|
|
451
451
|
height: var(--er-shape-spacing-50);
|
|
@@ -601,15 +601,15 @@
|
|
|
601
601
|
}
|
|
602
602
|
|
|
603
603
|
table {
|
|
604
|
-
width:
|
|
604
|
+
width: 100%;
|
|
605
605
|
}
|
|
606
606
|
|
|
607
607
|
&.single-panel {
|
|
608
|
-
width:
|
|
609
|
-
max-width:
|
|
608
|
+
width: 300px;
|
|
609
|
+
max-width: 300px;
|
|
610
610
|
.el-picker-panel__body {
|
|
611
|
-
min-width:
|
|
612
|
-
max-width:
|
|
611
|
+
min-width: 298px;
|
|
612
|
+
max-width: 298px;
|
|
613
613
|
}
|
|
614
614
|
|
|
615
615
|
.el-date-range-picker__time-header {
|
|
@@ -618,14 +618,14 @@
|
|
|
618
618
|
|
|
619
619
|
.el-date-range-picker__editors-wrap {
|
|
620
620
|
&::before {
|
|
621
|
-
content:
|
|
621
|
+
content: "Start";
|
|
622
622
|
@include typo.label-lg;
|
|
623
623
|
color: var(--er-text-primary);
|
|
624
624
|
}
|
|
625
625
|
|
|
626
626
|
&.is-right {
|
|
627
627
|
&::before {
|
|
628
|
-
content:
|
|
628
|
+
content: "End";
|
|
629
629
|
}
|
|
630
630
|
}
|
|
631
631
|
}
|
|
@@ -696,8 +696,8 @@
|
|
|
696
696
|
display: flex;
|
|
697
697
|
flex-direction: row;
|
|
698
698
|
flex-wrap: wrap;
|
|
699
|
-
min-width:
|
|
700
|
-
max-width:
|
|
699
|
+
min-width: 596px;
|
|
700
|
+
max-width: 596px;
|
|
701
701
|
|
|
702
702
|
.el-date-range-picker__content {
|
|
703
703
|
flex: 1;
|
|
@@ -1,13 +1,3 @@
|
|
|
1
|
-
// V1 trigger (EaeraDropdown) wraps consumer content in `.el-dropdown-link`.
|
|
2
|
-
// EP's own outline suppressor targets `.el-dropdown-selfdefine`, which lands on
|
|
3
|
-
// that wrapper span — not the focusable child (e.g. a header button). Without
|
|
4
|
-
// this, opening the dropdown (hover or click) leaves the browser default focus
|
|
5
|
-
// ring (`outline: 1px auto`) on the trigger. Scoped to `.el-dropdown-link` so
|
|
6
|
-
// V2 (no wrapper) is untouched; menu items in the popper keep their focus.
|
|
7
|
-
.custom-dropdown .el-dropdown-link :focus-visible {
|
|
8
|
-
outline: none;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
1
|
.custom-dropdown__popper.el-popper {
|
|
12
2
|
// Popper background — force dark surface in dark mode. EP defaults to
|
|
13
3
|
// --el-bg-color-overlay (#ffffff) and wallet-selector-popper sets the inner
|
|
@@ -30,28 +20,20 @@
|
|
|
30
20
|
box-shadow: none;
|
|
31
21
|
}
|
|
32
22
|
|
|
33
|
-
// Item text +
|
|
34
|
-
// dark
|
|
35
|
-
//
|
|
36
|
-
// pressed action-neutral-subtle-pressed · disabled transparent + 50%.
|
|
23
|
+
// Item text + hover — EP items use `--el-text-color-regular` and a light
|
|
24
|
+
// hover fill, both unreadable on the dark panel. Bind to EAERA tokens so the
|
|
25
|
+
// menu stays legible in dark mode.
|
|
37
26
|
.el-dropdown-menu__item {
|
|
38
27
|
width: 100%;
|
|
39
28
|
color: var(--el-text-color-regular, var(--er-text-secondary));
|
|
40
29
|
border-radius: var(--er-shape-corner-150);
|
|
41
|
-
|
|
42
30
|
&:not(.is-disabled):hover,
|
|
43
31
|
&:not(.is-disabled):focus {
|
|
44
|
-
background-color: var(--er-action-
|
|
32
|
+
background-color: var(--er-action-primary-subtle-hover);
|
|
45
33
|
color: var(--el-text-primary);
|
|
46
34
|
}
|
|
47
35
|
|
|
48
|
-
&:not(.is-disabled):active {
|
|
49
|
-
background-color: var(--er-action-neutral-subtle-pressed);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
36
|
&.is-disabled {
|
|
53
|
-
background-color: transparent;
|
|
54
|
-
opacity: 0.5;
|
|
55
37
|
color: var(--el-text-disabled);
|
|
56
38
|
}
|
|
57
39
|
|
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
@use '../themes/aurora/typography/typography-utils' as typo;
|
|
2
2
|
|
|
3
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
4
|
-
// ICONS — exact SVG glyphs exported from Figma (Super-App Design, node
|
|
5
|
-
// 8962-162657, `number input`): 16×16 icon box, glyph 10.67×10.67 centred,
|
|
6
|
-
// stroke 1.33, round caps. Rendered 1:1 via mask (same technique as the
|
|
7
|
-
// checkbox icons) so strokes keep the designed weight, and the Element Plus
|
|
8
|
-
// default arrow svg inside the steppers is hidden (see `.el-icon` below —
|
|
9
|
-
// this intentionally applies to every caller, slotted icons included).
|
|
10
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
11
|
-
$inum-minus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M2.66667 8H13.33333' stroke='black' stroke-width='1.33333' stroke-linecap='round'/%3E%3C/svg%3E");
|
|
12
|
-
$inum-plus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M8 2.66667V13.33333M2.66667 8H13.33333' stroke='black' stroke-width='1.33333' stroke-linecap='round'/%3E%3C/svg%3E");
|
|
13
|
-
|
|
14
3
|
// ─── Reusable base styles (can be included in other components) ───────────────
|
|
15
4
|
@mixin input-number-base {
|
|
16
5
|
border: 1px solid var(--er-border-default);
|
|
@@ -74,37 +63,16 @@ $inum-plus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
74
63
|
.el-icon {
|
|
75
64
|
width: var(--er-control-height-sm);
|
|
76
65
|
height: var(--er-control-height-sm);
|
|
77
|
-
|
|
78
|
-
// Figma −/+ glyphs replace the Element Plus default arrow svg.
|
|
79
|
-
// `background-color: currentColor` keeps the mask in sync with the
|
|
80
|
-
// button's existing color / hover / disabled logic.
|
|
81
|
-
svg {
|
|
82
|
-
display: none;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
background-color: currentColor;
|
|
86
|
-
-webkit-mask: $inum-minus-icon center / 16px 16px no-repeat;
|
|
87
|
-
mask: $inum-minus-icon center / 16px 16px no-repeat;
|
|
88
66
|
}
|
|
89
67
|
}
|
|
90
68
|
|
|
91
69
|
.el-input-number__decrease {
|
|
92
70
|
order: 1;
|
|
93
71
|
left: 0px;
|
|
94
|
-
|
|
95
|
-
.el-icon {
|
|
96
|
-
-webkit-mask-image: $inum-minus-icon;
|
|
97
|
-
mask-image: $inum-minus-icon;
|
|
98
|
-
}
|
|
99
72
|
}
|
|
100
73
|
.el-input-number__increase {
|
|
101
74
|
right: 0px;
|
|
102
75
|
order: 3;
|
|
103
|
-
|
|
104
|
-
.el-icon {
|
|
105
|
-
-webkit-mask-image: $inum-plus-icon;
|
|
106
|
-
mask-image: $inum-plus-icon;
|
|
107
|
-
}
|
|
108
76
|
}
|
|
109
77
|
|
|
110
78
|
&.is-disabled {
|
|
@@ -132,7 +100,7 @@ $inum-plus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
132
100
|
}
|
|
133
101
|
}
|
|
134
102
|
|
|
135
|
-
@mixin input-number-size($height, $button-size, $button-radius) {
|
|
103
|
+
@mixin input-number-size($height, $button-size, $icon-size, $button-radius) {
|
|
136
104
|
height: $height !important;
|
|
137
105
|
min-height: $height !important;
|
|
138
106
|
|
|
@@ -141,6 +109,11 @@ $inum-plus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
141
109
|
border-radius: $button-radius;
|
|
142
110
|
width: $button-size;
|
|
143
111
|
height: $button-size;
|
|
112
|
+
|
|
113
|
+
svg {
|
|
114
|
+
width: $icon-size;
|
|
115
|
+
height: $icon-size;
|
|
116
|
+
}
|
|
144
117
|
}
|
|
145
118
|
}
|
|
146
119
|
|
|
@@ -205,6 +178,7 @@ $inum-plus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
205
178
|
@include input-number-size(
|
|
206
179
|
var(--er-control-height-sm),
|
|
207
180
|
var(--er-control-height-sm),
|
|
181
|
+
var(--er-control-height-xxs),
|
|
208
182
|
var(--er-shape-corner-50)
|
|
209
183
|
);
|
|
210
184
|
|
|
@@ -224,6 +198,7 @@ $inum-plus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
224
198
|
@include input-number-size(
|
|
225
199
|
var(--er-control-height-md),
|
|
226
200
|
var(--er-control-height-md),
|
|
201
|
+
var(--er-control-height-xs),
|
|
227
202
|
var(--er-shape-corner-100)
|
|
228
203
|
);
|
|
229
204
|
|
|
@@ -242,6 +217,7 @@ $inum-plus-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/sv
|
|
|
242
217
|
@include input-number-size(
|
|
243
218
|
var(--er-control-height-lg),
|
|
244
219
|
var(--er-control-height-lg),
|
|
220
|
+
var(--er-control-height-xs),
|
|
245
221
|
var(--er-shape-corner-150)
|
|
246
222
|
);
|
|
247
223
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
@content;
|
|
19
19
|
|
|
20
20
|
&.is-selected {
|
|
21
|
-
.custom-popper__option-text
|
|
21
|
+
.custom-popper__option-text{
|
|
22
22
|
color: var(--er-text-brand);
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -95,25 +95,6 @@
|
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
.custom-popper__option-prefix {
|
|
99
|
-
display: flex;
|
|
100
|
-
align-items: center;
|
|
101
|
-
flex-shrink: 0;
|
|
102
|
-
color: var(--er-icon-secondary);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
.custom-popper__option-text.has-description {
|
|
106
|
-
display: flex;
|
|
107
|
-
flex-direction: column;
|
|
108
|
-
gap: 1px;
|
|
109
|
-
line-height: 1.25;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.custom-popper__option-desc {
|
|
113
|
-
@include typo.body-sm;
|
|
114
|
-
color: var(--er-text-secondary);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
98
|
.custom-popper__option-checkbox {
|
|
118
99
|
pointer-events: none;
|
|
119
100
|
}
|
|
@@ -203,7 +184,7 @@
|
|
|
203
184
|
}
|
|
204
185
|
}
|
|
205
186
|
|
|
206
|
-
&.danger
|
|
187
|
+
&.danger{
|
|
207
188
|
li.is-selected {
|
|
208
189
|
background-color: var(--er-action-danger-subtle-pressed,);
|
|
209
190
|
}
|
|
@@ -219,7 +200,7 @@
|
|
|
219
200
|
var(--er-shape-spacing-50),
|
|
220
201
|
var(--er-shape-corner-75),
|
|
221
202
|
var(--er-shape-spacing-50),
|
|
222
|
-
var(--er-
|
|
203
|
+
var(--er-control-height-xxs)
|
|
223
204
|
) {
|
|
224
205
|
@include typo.body-sm;
|
|
225
206
|
|
|
@@ -241,7 +222,7 @@
|
|
|
241
222
|
var(--er-shape-spacing-75),
|
|
242
223
|
var(--er-shape-corner-100),
|
|
243
224
|
var(--er-shape-spacing-75),
|
|
244
|
-
var(--er-control-height-
|
|
225
|
+
var(--er-control-height-xs)
|
|
245
226
|
) {
|
|
246
227
|
> div {
|
|
247
228
|
gap: var(--er-shape-spacing-100);
|
|
@@ -256,7 +237,7 @@
|
|
|
256
237
|
var(--er-shape-spacing-75),
|
|
257
238
|
var(--er-shape-corner-150),
|
|
258
239
|
var(--er-shape-spacing-75),
|
|
259
|
-
var(--er-control-height-
|
|
240
|
+
var(--er-control-height-xs)
|
|
260
241
|
) {
|
|
261
242
|
> div {
|
|
262
243
|
gap: var(--er-shape-spacing-100);
|
|
@@ -271,10 +252,8 @@
|
|
|
271
252
|
var(--er-shape-spacing-75),
|
|
272
253
|
var(--er-shape-corner-150),
|
|
273
254
|
var(--er-shape-spacing-75),
|
|
274
|
-
var(--er-control-height-xs)
|
|
255
|
+
var(--er-control-height-xs)
|
|
275
256
|
) {
|
|
276
|
-
@include typo.body-lg;
|
|
277
|
-
|
|
278
257
|
> div {
|
|
279
258
|
gap: var(--er-shape-spacing-100);
|
|
280
259
|
}
|
|
@@ -26,6 +26,16 @@
|
|
|
26
26
|
margin: 2px;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
.el-radio-button.is-active .el-radio-button__inner {
|
|
30
|
+
border: none;
|
|
31
|
+
background-color: var(--er-action-neutral-default);
|
|
32
|
+
color: var(--er-text-inverse);
|
|
33
|
+
|
|
34
|
+
&::after {
|
|
35
|
+
background-color: var(--er-surface-fixed-white);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
29
39
|
.el-radio__input.is-checked .el-radio__inner {
|
|
30
40
|
border-color: var(--er-action-primary-default);
|
|
31
41
|
background-color: var(--er-action-primary-default);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
@use
|
|
2
|
-
@use
|
|
1
|
+
@use "../themes/aurora/typography/typography-utils" as typo;
|
|
2
|
+
@use "checkbox" as chk;
|
|
3
3
|
|
|
4
4
|
// ============================================================================
|
|
5
5
|
// TABLE DENSITY TOKENS
|
|
@@ -18,10 +18,18 @@
|
|
|
18
18
|
// <eaera-table-v2 style="--er-table-row-min-height: 48px" />
|
|
19
19
|
// ============================================================================
|
|
20
20
|
:root {
|
|
21
|
-
--er-table-cell-padding-x: var(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
--er-table-
|
|
21
|
+
--er-table-cell-padding-x: var(
|
|
22
|
+
--er-shape-spacing-100
|
|
23
|
+
); // 8px — cell left/right
|
|
24
|
+
--er-table-header-cell-padding-y: var(
|
|
25
|
+
--er-shape-spacing-150
|
|
26
|
+
); // 12px — header top/bottom
|
|
27
|
+
--er-table-body-cell-padding-y: var(
|
|
28
|
+
--er-shape-spacing-100
|
|
29
|
+
); // 8px — body top/bottom
|
|
30
|
+
--er-table-row-min-height: var(
|
|
31
|
+
--er-shape-spacing-500
|
|
32
|
+
); // 40px — data row height
|
|
25
33
|
--er-table-row-divider: var(--er-border-subtle); // 1px — row bottom divider
|
|
26
34
|
}
|
|
27
35
|
|
|
@@ -46,8 +54,10 @@
|
|
|
46
54
|
|
|
47
55
|
.el-table__body
|
|
48
56
|
tr.hover-row
|
|
49
|
-
> td.el-table__cell:not(.el-table-fixed-column--left):not(
|
|
50
|
-
|
|
57
|
+
> td.el-table__cell:not(.el-table-fixed-column--left):not(
|
|
58
|
+
.el-table-fixed-column--right
|
|
59
|
+
) {
|
|
60
|
+
background-color: var(--er-action-primary-subtle-hover) !important;
|
|
51
61
|
}
|
|
52
62
|
|
|
53
63
|
// ─────────────────────────────────────────────────────────────────────
|
|
@@ -68,7 +78,8 @@
|
|
|
68
78
|
th {
|
|
69
79
|
@include typo.label-md;
|
|
70
80
|
min-height: var(--er-table-row-min-height);
|
|
71
|
-
padding: var(--er-table-header-cell-padding-y)
|
|
81
|
+
padding: var(--er-table-header-cell-padding-y)
|
|
82
|
+
var(--er-table-cell-padding-x);
|
|
72
83
|
background-color: var(--er-surface-muted);
|
|
73
84
|
color: var(--er-text-secondary);
|
|
74
85
|
border-bottom: none;
|
|
@@ -310,7 +321,8 @@
|
|
|
310
321
|
.cell {
|
|
311
322
|
@include typo.body-md;
|
|
312
323
|
color: var(--er-text-primary);
|
|
313
|
-
padding: var(--er-table-body-cell-padding-y)
|
|
324
|
+
padding: var(--er-table-body-cell-padding-y)
|
|
325
|
+
var(--er-table-cell-padding-x);
|
|
314
326
|
}
|
|
315
327
|
|
|
316
328
|
&:first-child {
|
|
@@ -411,7 +423,7 @@
|
|
|
411
423
|
position: relative;
|
|
412
424
|
|
|
413
425
|
&::before {
|
|
414
|
-
content:
|
|
426
|
+
content: "";
|
|
415
427
|
transition: background-color 0.25s 1ms;
|
|
416
428
|
inset: 0;
|
|
417
429
|
@extend %table-fixed-overlay;
|
|
@@ -468,7 +480,11 @@
|
|
|
468
480
|
// LOADING STATE
|
|
469
481
|
// ─────────────────────────────────────────────────────────────────────
|
|
470
482
|
|
|
471
|
-
.el-table__body-wrapper
|
|
483
|
+
.el-table__body-wrapper
|
|
484
|
+
.el-table--enable-row-hover
|
|
485
|
+
.el-table__body
|
|
486
|
+
tr:hover
|
|
487
|
+
> td {
|
|
472
488
|
background-color: var(--er-action-primary-subtle-hover);
|
|
473
489
|
}
|
|
474
490
|
|