@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.
@@ -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=6px gap=4px icon=12px radius=corner/xs(6px) typo=label/md
17
- // md → h=32px px=8px gap=4px icon=16px radius=corner/sm(8px) typo=label/lg [default]
18
- // lg → h=40px px=12px gap=6px icon=16px radius=corner/md(12px) typo=label/lg
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
- // States (Figma): default → hover → pressed, disabled = opacity-50 trên cùng màu
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 px=8px, override Element's default padding
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-shape-spacing-200); // Figma: icon md/lg = 16px
144
- height: var(--er-shape-spacing-200);
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-150); // Figma: icon sm = 12px
161
- height: var(--er-shape-spacing-150);
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=6px, icon=16px, radius=corner/md(12px)
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-150) !important;
169
- gap: var(--er-shape-spacing-75);
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-75);
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-shape-spacing-250); // Figma: icon xl = 20px
191
- height: var(--er-shape-spacing-250);
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 (bg map theo token --er-primary-* của theme active)
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(#dc2626) text=text/on-action(#fafafa)
233
- // Hover: bg=action/danger-hover(#b91c1c)
234
- // Pressed: bg=action/danger-pressed(#9f1d1d)
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 (local extension — green scale) ──────────────────────────────
284
- // Default: bg=action/success-default text=text/on-action
285
- // Hover: bg=action/success-hover
286
- // Pressed: bg=action/success-pressed
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 — transparent bg border=border/success-subtle text=text/success
291
- // Hover/Pressed: bg=action/success-subtle-*, border stays
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 — transparent bg, no border, text stays
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 success text link (unchanged behavior)
299
+ // Link — renders as a primary text link (unchanged behavior)
302
300
  &.is-link {
303
- color: var(--er-text-success) !important;
301
+ color: var(--er-action-primary-default) !important;
304
302
 
305
303
  &:hover:not(:disabled):not(.is-disabled) {
306
- color: var(--er-action-success-hover) !important;
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-success-pressed) !important;
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-text-success) !important;
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:3351)
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 check icon (SVG mask, exact Figma glyph)
15
- // ::before ← The indeterminate dash (SVG mask, exact Figma glyph)
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, .custom-tree, tree-select, table, transfer
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
- display: block;
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
- -webkit-mask: $chk-minus-icon center / 10px 2px no-repeat;
100
- mask: $chk-minus-icon center / 10px 2px no-repeat;
101
- transform: scale(1);
102
- transition: transform 0.15s ease-in 50ms;
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
- // Disabled — Figma: fade the WHOLE component (box + label); the label keeps
112
- // its state color. Tree cancels this and fades the whole node instead.
113
- &.is-disabled,
114
- & .el-checkbox.is-disabled {
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):not(.is-indeterminate) .el-checkbox__inner {
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='sidebar'] + .el-picker-panel__body,
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: 248px;
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: 250px;
292
+ width: 300px;
293
293
  line-height: unset;
294
294
 
295
295
  &.el-date-range-picker {
296
- width: 496px;
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: unset;
604
+ width: 100%;
605
605
  }
606
606
 
607
607
  &.single-panel {
608
- width: 250px;
609
- max-width: 250px;
608
+ width: 300px;
609
+ max-width: 300px;
610
610
  .el-picker-panel__body {
611
- min-width: 248px;
612
- max-width: 248px;
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: 'Start';
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: 'End';
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: 496px;
700
- max-width: 496px;
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 + states — bound to EAERA tokens so the menu stays legible in
34
- // dark mode. State colors follow the UI-KIT-CORE dropdown spec:
35
- // bg surface-elevated (popper) · hover action-neutral-subtle-hover ·
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-neutral-subtle-hover);
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
 
@@ -24,8 +24,7 @@
24
24
  .custom-link.el-link {
25
25
  @include typo.label-md;
26
26
 
27
- &.is-underline,
28
- &.is-hover-underline {
27
+ &.is-underline {
29
28
  &::after {
30
29
  content: '';
31
30
  position: absolute;
@@ -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-shape-spacing-150) // Figma: sm icon 12px
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-xxs) // Figma: md icon 16px
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-xxs) // Figma: lg icon 16px
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) // Figma: xl icon 20px
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);
@@ -76,6 +76,11 @@
76
76
  }
77
77
  }
78
78
 
79
+ .el-select__prefix,
80
+ .el-select__suffix {
81
+ color: var(--er-icon-secondary)
82
+ }
83
+
79
84
  &.sm {
80
85
  .el-select__selection,
81
86
  .el-select__selected-item {
@@ -1,5 +1,5 @@
1
- @use '../themes/aurora/typography/typography-utils' as typo;
2
- @use 'checkbox' as chk;
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(--er-shape-spacing-100); // 8px — cell left/right
22
- --er-table-header-cell-padding-y: var(--er-shape-spacing-150); // 12px — header top/bottom
23
- --er-table-body-cell-padding-y: var(--er-shape-spacing-100); // 8px — body top/bottom
24
- --er-table-row-min-height: var(--er-shape-spacing-500); // 40px — data row height
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(.el-table-fixed-column--right) {
50
- background-color: var(--er-surface-brand-subtle) !important;
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) var(--er-table-cell-padding-x);
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) var(--er-table-cell-padding-x);
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 .el-table--enable-row-hover .el-table__body tr:hover > td {
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eaera-com/eaera-widgets-v2",
3
- "version": "0.1.76",
3
+ "version": "0.1.78",
4
4
  "description": "Vue 3 UI widget library shared across Eaera CRM products",
5
5
  "keywords": [
6
6
  "vue",