@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,378 @@
1
+ // ============================================================================
2
+ // BUTTON COMPONENT — EAERA DESIGN SYSTEM
3
+ // ============================================================================
4
+ // Source: Figma UI Kit Core
5
+ // Node: https://www.figma.com/design/HSOs8VcK5CKL8s15AqD42x/UI-KIT-CORE?node-id=40017-3727
6
+ // Component: EaeraButton.vue (wraps el-button)
7
+ //
8
+ // Figma variant → EaeraButton prop:
9
+ // type=primary → color="primary"
10
+ // type=danger → color="danger"
11
+ // type=contrast → color="contrast"
12
+ // is-plain=yes → :plain="true" → adds .is-plain (Element Plus)
13
+ // is-ghost=yes → :ghost="true" → adds .is-ghost (custom prop)
14
+ //
15
+ // Sizes (Figma):
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
19
+ //
20
+ // Disabled: opacity-50 on same colors (Figma: is-disabled = opacity 0.5)
21
+ // ============================================================================
22
+
23
+ @use "../themes/aurora/typography/typography-utils" as typo;
24
+
25
+ // ─────────────────────────────────────────────────────────────────────────
26
+ // MIXINS
27
+ // ─────────────────────────────────────────────────────────────────────────
28
+
29
+ // Solid (filled) variant — bg+border change on hover/active, disabled = opacity 0.5
30
+ @mixin btn-solid($bg, $bg-hover, $bg-active, $text) {
31
+ background-color: $bg;
32
+ border-color: $bg;
33
+ color: $text !important;
34
+
35
+ &:hover:not(:disabled):not(.is-disabled) {
36
+ background-color: $bg-hover;
37
+ border-color: $bg-hover;
38
+ color: $text !important;
39
+ }
40
+
41
+ &:active:not(:disabled):not(.is-disabled) {
42
+ background-color: $bg-active;
43
+ border-color: $bg-active;
44
+ color: $text !important;
45
+ }
46
+
47
+ &:disabled,
48
+ &.is-disabled {
49
+ opacity: 0.5;
50
+ background-color: $bg;
51
+ border-color: $bg;
52
+ color: $text !important;
53
+ }
54
+ }
55
+
56
+ // Plain (outlined) variant — transparent bg, border stays on hover/active
57
+ @mixin btn-plain($border, $text, $bg-hover, $bg-active: $bg-hover) {
58
+ background-color: transparent;
59
+ border-color: $border;
60
+ color: $text !important;
61
+
62
+ &:hover:not(:disabled):not(.is-disabled) {
63
+ background-color: $bg-hover;
64
+ border-color: $border;
65
+ color: $text !important;
66
+ }
67
+
68
+ &:active:not(:disabled):not(.is-disabled) {
69
+ background-color: $bg-active;
70
+ border-color: $border;
71
+ color: $text !important;
72
+ }
73
+
74
+ &:disabled,
75
+ &.is-disabled {
76
+ opacity: 0.5;
77
+ background-color: transparent;
78
+ border-color: $border;
79
+ color: $text !important;
80
+ }
81
+ }
82
+
83
+ // Ghost (no border) variant — transparent bg+border, text never changes color on any state
84
+ @mixin btn-ghost($text, $bg-hover, $bg-active: $bg-hover) {
85
+ background-color: transparent !important;
86
+ border-color: transparent !important;
87
+ color: $text !important;
88
+
89
+ &:hover:not(:disabled):not(.is-disabled) {
90
+ background-color: $bg-hover !important;
91
+ border-color: transparent !important;
92
+ color: $text !important;
93
+ }
94
+
95
+ &:active:not(:disabled):not(.is-disabled) {
96
+ background-color: $bg-active !important;
97
+ border-color: transparent !important;
98
+ color: $text !important;
99
+ }
100
+
101
+ &:disabled,
102
+ &.is-disabled {
103
+ opacity: 0.5;
104
+ background-color: transparent !important;
105
+ border-color: transparent !important;
106
+ color: $text !important;
107
+ }
108
+ }
109
+
110
+ // ─────────────────────────────────────────────────────────────────────────
111
+ // BASE — MD default
112
+ // ─────────────────────────────────────────────────────────────────────────
113
+ .el-button + .el-button {
114
+ margin-left: 0 !important; // Override Element's default margin between buttons
115
+ }
116
+
117
+ .custom-button.el-button {
118
+ @include typo.label-lg; // 14px / 600 / 20px lh / 0.1px tracking
119
+
120
+ height: var(--er-control-height-md); // Figma: control-height/md
121
+ padding: 0 var(--er-shape-spacing-100) !important; // Figma: shape/spacing/md (16px) + override Element's default padding
122
+ gap: var(--er-shape-spacing-50);
123
+ border-radius: var(--er-shape-corner-100); // Figma: shape/corner/sm
124
+ box-shadow: none !important;
125
+ border-width: 1px;
126
+
127
+ > span {
128
+ display: flex;
129
+ align-items: center;
130
+ justify-content: center;
131
+ gap: var(--er-shape-spacing-50);
132
+ }
133
+
134
+ svg {
135
+ width: var(--er-control-height-xs);
136
+ height: var(--er-control-height-xs);
137
+ }
138
+
139
+ // ─────────────────────────────────────────────────────────────────────────
140
+ // SIZES
141
+ // ─────────────────────────────────────────────────────────────────────────
142
+
143
+ // SM — Figma: h=24px, px=6px, gap=4px, radius=corner/xs(6px), icon=16px
144
+ &.sm {
145
+ @include typo.label-md; // 12px / 600 / 16px lh / 0.5px tracking
146
+ height: var(--er-control-height-sm);
147
+ padding: 0 var(--er-shape-spacing-75) !important;
148
+ gap: var(--er-shape-spacing-50);
149
+ border-radius: var(--er-shape-corner-75);
150
+
151
+ svg {
152
+ width: var(--er-shape-spacing-200);
153
+ height: var(--er-shape-spacing-200);
154
+ }
155
+ }
156
+
157
+ // LG — Figma: h=40px, px=12px, gap=8px, radius=corner/md(12px)
158
+ &.lg {
159
+ height: var(--er-control-height-lg);
160
+ padding: 0 var(--er-shape-spacing-200) !important;
161
+ gap: var(--er-shape-spacing-100);
162
+ border-radius: var(--er-shape-corner-150);
163
+
164
+ > span {
165
+ gap: var(--er-shape-spacing-100);
166
+ }
167
+ }
168
+
169
+ // LG — Figma: h=48px, px=16px, gap=8px, radius=corner/md(12px)
170
+ &.xl {
171
+ @include typo.title-md;
172
+ height: var(--er-control-height-xl);
173
+ padding: 0 var(--er-shape-spacing-200) !important;
174
+ gap: var(--er-shape-spacing-100);
175
+ border-radius: var(--er-shape-corner-150);
176
+
177
+ > span {
178
+ gap: var(--er-shape-spacing-100);
179
+ }
180
+
181
+ svg {
182
+ width: var(--er-control-height-sm);
183
+ height: var(--er-control-height-sm);
184
+ }
185
+ }
186
+
187
+ // ─────────────────────────────────────────────────────────────────────────
188
+ // COLOR VARIANTS (EaeraButton `color` prop → CSS class)
189
+ // ─────────────────────────────────────────────────────────────────────────
190
+
191
+ // ── PRIMARY ──────────────────────────────────────────────────────────────
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)
196
+ // Disabled: same colors + opacity-50
197
+ &.primary {
198
+ @include btn-solid(var(--er-action-primary-default), var(--er-action-primary-hover), var(--er-action-primary-pressed), var(--er-text-on-action));
199
+
200
+ // Plain — Figma: type=primary is-plain=yes
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
204
+ &.is-plain {
205
+ @include btn-plain(
206
+ var(--er-border-brand-subtle),
207
+ var(--er-action-primary-default),
208
+ var(--er-action-primary-subtle-hover),
209
+ var(--er-action-primary-subtle-pressed)
210
+ );
211
+ }
212
+
213
+ // Ghost — Figma: type=primary is-ghost=yes
214
+ // Default: transparent bg no border text=action/primary-default
215
+ // Hover: bg=action/primary-subtle-hover(#dbeafe) text stays
216
+ // Pressed: bg=action/primary-subtle-pressed(#bfdbfe) text stays
217
+ &.is-ghost {
218
+ @include btn-ghost(var(--er-action-primary-default), var(--er-action-primary-subtle-hover), var(--er-action-primary-subtle-pressed));
219
+ }
220
+ }
221
+
222
+ // ── DANGER ───────────────────────────────────────────────────────────────
223
+ // Figma: type=danger
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)
227
+ &.danger {
228
+ @include btn-solid(var(--er-action-danger-default), var(--er-action-danger-hover), var(--er-action-danger-pressed), var(--er-text-on-action));
229
+
230
+ // Plain — Figma: type=danger is-plain=yes
231
+ // Default: transparent bg border=border/danger-subtle(#fca5a5) text=text/danger(#ef4444)
232
+ // Hover: bg=action/danger-subtle-hover(#fee2e2) border stays
233
+ // Pressed: bg=action/danger-subtle-pressed(#fecaca) border stays
234
+ &.is-plain {
235
+ @include btn-plain(var(--er-border-danger-subtle), var(--er-text-danger), var(--er-action-danger-subtle-hover), var(--er-action-danger-subtle-pressed));
236
+ }
237
+
238
+ // Ghost — Figma: type=danger is-ghost=yes
239
+ // Default: transparent bg no border text=text/danger(#ef4444)
240
+ // Hover: bg=action/danger-subtle-hover(#fee2e2) text stays
241
+ // Pressed: bg=action/danger-subtle-pressed(#fecaca) text stays
242
+ &.is-ghost {
243
+ @include btn-ghost(var(--er-text-danger), var(--er-action-danger-subtle-hover), var(--er-action-danger-subtle-pressed));
244
+ }
245
+ }
246
+
247
+ // ── Contrast (Figma: type=contrast) ────────────────────────────────────
248
+ // Default: bg=action/neutral-default(#09090b) text=text/inverse(#fafafa)
249
+ // Hover: bg=action/neutral-hover(#52525b)
250
+ // Pressed: bg=action/neutral-pressed(#27272a)
251
+ &.contrast {
252
+ @include btn-solid(var(--er-action-neutral-default), var(--er-action-neutral-hover), var(--er-action-neutral-pressed), var(--er-text-inverse));
253
+
254
+ &.is-link {
255
+ @include btn-solid(var(--er-action-neutral-default), var(--er-action-neutral-hover), var(--er-action-neutral-pressed), var(--er-action-neutral-default));
256
+ }
257
+
258
+ // Plain — Figma: type=contrast is-plain=yes
259
+ // Default: transparent bg border=border/default(#e4e4e7) text=text/primary(#18181b)
260
+ // Hover: bg=action/neutral-subtle-hover(#fafafa) border stays
261
+ // Pressed: bg=action/neutral-subtle-pressed(#f4f4f5) border stays
262
+ &.is-plain {
263
+ @include btn-plain(var(--er-border-default), var(--er-text-primary), var(--er-action-neutral-subtle-hover), var(--er-action-neutral-subtle-pressed));
264
+ }
265
+
266
+ // Ghost — Figma: type=contrast is-ghost=yes
267
+ // Default: transparent bg no border text=text/primary(#18181b)
268
+ // Hover: bg=action/neutral-subtle-hover(#fafafa) text stays
269
+ // Pressed: bg=action/neutral-subtle-pressed(#f4f4f5) text stays
270
+ &.is-ghost {
271
+ @include btn-ghost(var(--er-text-primary), var(--er-action-neutral-subtle-hover), var(--er-action-neutral-subtle-pressed));
272
+ }
273
+ }
274
+
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)
280
+ &.success {
281
+ @include btn-solid(var(--er-action-success-default), var(--er-action-success-hover), var(--er-action-success-pressed), var(--er-text-on-action));
282
+
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
287
+ &.is-plain {
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));
289
+ }
290
+
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
295
+ &.is-ghost {
296
+ @include btn-ghost(var(--er-text-success), var(--er-action-success-subtle-hover), var(--er-action-success-subtle-pressed));
297
+ }
298
+
299
+ // Link — renders as a primary text link (unchanged behavior)
300
+ &.is-link {
301
+ color: var(--er-action-primary-default) !important;
302
+
303
+ &:hover:not(:disabled):not(.is-disabled) {
304
+ color: var(--er-action-primary-hover) !important;
305
+ }
306
+
307
+ &:active:not(:disabled):not(.is-disabled) {
308
+ color: var(--er-action-primary-pressed) !important;
309
+ }
310
+
311
+ &:disabled,
312
+ &.is-disabled {
313
+ opacity: 0.5;
314
+ color: var(--er-action-primary-default) !important;
315
+ }
316
+ }
317
+ }
318
+
319
+ // ─────────────────────────────────────────────────────────────────────────
320
+ // MODIFIERS (EaeraButton non-color props)
321
+ // ─────────────────────────────────────────────────────────────────────────
322
+
323
+ // unset-width (unsetWidth=true)
324
+ &.unset-width {
325
+ min-width: unset;
326
+ }
327
+
328
+ // is-link (link=true) — text link, no bg/border/padding
329
+ &.is-link {
330
+ background-color: transparent !important;
331
+ border-width: 0;
332
+ padding: 0 !important;
333
+ min-width: unset;
334
+ // color: var(--er-action-primary-default) !important;
335
+
336
+ // &:hover {
337
+ // color: var(--er-action-primary-hover) !important;
338
+ // }
339
+ }
340
+
341
+ // is-box (box=true) — sharp corners
342
+ &.is-box {
343
+ border-radius: var(--er-shape-corner-50);
344
+ }
345
+
346
+ // is-round / is-circle (btnIcon.type = 'round' | 'circle') — pill shape
347
+ &.is-circle,
348
+ &.is-round {
349
+ border-radius: var(--er-shape-corner-full);
350
+ }
351
+
352
+ // button-activation — attached to adjacent input (search/filter combos)
353
+ &.button-activation {
354
+ border-top-left-radius: 0;
355
+ border-bottom-left-radius: 0;
356
+ }
357
+
358
+ &.is-icon-only {
359
+ padding: 0 !important;
360
+ width: var(--er-control-height-md);
361
+ height: var(--er-control-height-md);
362
+
363
+ &.sm {
364
+ width: var(--er-control-height-sm);
365
+ height: var(--er-control-height-sm);
366
+ }
367
+
368
+ &.lg {
369
+ width: var(--er-control-height-lg);
370
+ height: var(--er-control-height-lg);
371
+ }
372
+
373
+ &.xl {
374
+ width: var(--er-control-height-xl);
375
+ height: var(--er-control-height-xl);
376
+ }
377
+ }
378
+ }
@@ -0,0 +1,27 @@
1
+ .custom-card.el-card {
2
+ border-radius: var(--er-shape-corner-200);
3
+ border: 1px solid var(--er-border-default);
4
+ background: var(--er-surface-container);
5
+ box-shadow: none;
6
+ display: flex;
7
+ align-items: flex-start;
8
+ position: relative;
9
+
10
+ .el-card__body,
11
+ .el-card__footer,
12
+ .el-card__header {
13
+ width: 100%;
14
+ }
15
+
16
+ &.padding-all .el-card__body {
17
+ padding: var(--er-shape-spacing-200);
18
+ }
19
+
20
+ &.padding-top-down .el-card__body {
21
+ padding: var(--er-shape-spacing-200) 0;
22
+ }
23
+
24
+ &.padding-none .el-card__body {
25
+ padding: 0;
26
+ }
27
+ }
@@ -0,0 +1,104 @@
1
+ // ============================================================================
2
+ // CAROUSEL — Design System Overrides
3
+ // Figma: https://www.figma.com/design/HSOs8VcK5CKL8s15AqD42x/UI-KIT-CORE?node-id=41093-7538
4
+ // ============================================================================
5
+ // Variants:
6
+ // style=arrow-inline — prev/next arrows overlaid on the slide edges
7
+ // style=arrow-separate — navigation bar (indicators + pill nav buttons) below slide
8
+ // ============================================================================
9
+
10
+ // ─── Outer wrapper (always rendered by EaeraCarousel)
11
+ .custom-carousel-wrapper {
12
+ .carousel-nav-bar {
13
+ display: flex;
14
+ align-items: center;
15
+ justify-content: space-between;
16
+ margin-top: var(--er-shape-spacing-100);
17
+
18
+ &__indicators {
19
+ display: flex;
20
+ align-items: center;
21
+ gap: var(--er-shape-spacing-50);
22
+ }
23
+
24
+ &__dot {
25
+ display: block;
26
+ width: var(--er-control-height-xs);
27
+ height: 2px;
28
+ border-radius: var(--er-shape-corner-50);
29
+ background: var(--er-surface-muted);
30
+
31
+ &.is-active {
32
+ background: var(--er-surface-inverse);
33
+ }
34
+ }
35
+
36
+ &__controls {
37
+ display: flex;
38
+ align-items: center;
39
+ gap: var(--er-shape-spacing-50);
40
+
41
+ .custom-button.el-button {
42
+ width: var(--er-control-height-sm);
43
+ margin: 0;
44
+ }
45
+ }
46
+ }
47
+ }
48
+
49
+ .custom-carousel.el-carousel {
50
+ display: flex;
51
+ flex-direction: column;
52
+ gap: var(--er-shape-spacing-100);
53
+ // ─── Slide item card
54
+ .el-carousel__item {
55
+ background: var(--er-surface-container);
56
+ border: 1px solid var(--er-border-default);
57
+ border-radius: var(--er-shape-corner-100);
58
+ padding: var(--er-shape-spacing-100);
59
+ }
60
+
61
+ // ─── Arrow buttons (style=arrow-inline)
62
+ // Positioned left/right inside the container, vertically centered
63
+ .el-carousel__arrow {
64
+ width: var(--er-control-height-sm); // 24px
65
+ height: var(--er-control-height-sm); // 24px
66
+ border-radius: var(--er-shape-corner-50);
67
+ background-color: transparent;
68
+ color: var(--er-icon-secondary);
69
+ font-size: 16px;
70
+
71
+ &.el-carousel__arrow--left {
72
+ left: 0;
73
+ }
74
+
75
+ &.el-carousel__arrow--right {
76
+ right: 0;
77
+ }
78
+ }
79
+
80
+ .el-carousel__indicators.el-carousel__indicators--horizontal {
81
+ display: flex;
82
+ justify-content: center;
83
+ align-items: center;
84
+ gap: var(--er-shape-spacing-50);
85
+ position: static;
86
+ transform: none;
87
+ }
88
+
89
+ // ─── Single indicator button (the 2px bar)
90
+ .el-carousel__indicator {
91
+ padding: 0;
92
+
93
+ .el-carousel__button {
94
+ width: var(--er-control-height-xs);
95
+ border-radius: var(--er-shape-corner-50);
96
+ background-color: var(--er-surface-muted);
97
+ }
98
+
99
+ &.is-active .el-carousel__button {
100
+ background-color: var(--er-surface-inverse) !important;
101
+ width: var(--er-control-height-xs);
102
+ }
103
+ }
104
+ }