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

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,578 @@
1
+ @use '../themes/aurora/typography/typography-utils' as typo;
2
+ @use '../themes/aurora/elevation/elevation-utils' as elevation;
3
+
4
+ .custom-menu.el-menu--horizontal {
5
+ display: flex;
6
+ align-items: center;
7
+ height: 64px; // Figma: topbar height
8
+ border-bottom: none; // Remove El-Plus default border
9
+ background-color: var(--er-surface-container); // white
10
+ gap: var(--er-shape-spacing-100);
11
+ // ─────────────────────────────────────────────────────────────────────
12
+ // TOP BAR MENU ITEM
13
+ // Figma: h=32px, px=8px, gap=8px, corner/sm (8px), icon=20px, label/lg
14
+ // ─────────────────────────────────────────────────────────────────────
15
+ .el-menu-item,
16
+ .el-sub-menu__title {
17
+ height: 32px !important;
18
+ padding: 0 8px !important;
19
+ border-radius: var(--er-shape-corner-100); // 8px
20
+ display: flex;
21
+ align-items: center;
22
+ gap: 8px; // Figma: gap between icon and text
23
+ user-select: none; // Prevent text cursor on click
24
+ // Reset El-Plus defaults
25
+ border-bottom: none !important;
26
+ background-color: transparent !important;
27
+
28
+ // Text: label/lg (14px, medium, text-secondary)
29
+ @include typo.label-lg;
30
+ color: var(--er-text-secondary) !important; // #52525B
31
+
32
+ // Icon
33
+ svg {
34
+ width: 20px;
35
+ height: 20px;
36
+ font-size: 20px;
37
+ margin-right: 0 !important; // Remove El-Plus margin, we use gap
38
+ color: var(--er-icon-secondary); // #71717A
39
+ }
40
+
41
+ // Hover state
42
+ // Figma: bg=action/neutral-subtle-hover (#fafafa), text stays same
43
+ &:hover {
44
+ background-color: var(--er-action-neutral-subtle-hover) !important; // #FAFAFA
45
+ color: var(--er-text-secondary) !important;
46
+
47
+ svg {
48
+ color: var(--er-icon-secondary);
49
+ }
50
+ }
51
+ }
52
+
53
+ // ─────────────────────────────────────────────────────────────────────
54
+ // SELECTED / ACTIVE STATE
55
+ // Figma: text/brand (#3b82f6), icon/brand, no background
56
+ // ─────────────────────────────────────────────────────────────────────
57
+
58
+ .el-menu-item.is-active,
59
+ .el-sub-menu.is-active > .el-sub-menu__title {
60
+ background-color: transparent !important;
61
+ color: var(--er-text-brand) !important; // #3B82F6
62
+ border-bottom: none !important;
63
+
64
+ svg {
65
+ color: var(--er-icon-brand) !important; // #3B82F6
66
+ }
67
+
68
+ // Selected hover: action/primary-subtle-hover
69
+ &:hover {
70
+ background-color: var(--er-action-primary-subtle-hover) !important;
71
+ color: var(--er-text-brand) !important;
72
+
73
+ svg {
74
+ color: var(--er-icon-brand) !important;
75
+ }
76
+ }
77
+ }
78
+
79
+ // ─────────────────────────────────────────────────────────────────────
80
+ // DISABLED STATE
81
+ // Figma: opacity 0.5
82
+ // ─────────────────────────────────────────────────────────────────────
83
+
84
+ .el-menu-item.is-disabled,
85
+ .el-sub-menu.is-disabled > .el-sub-menu__title {
86
+ opacity: 0.5;
87
+ pointer-events: none;
88
+ cursor: not-allowed;
89
+ }
90
+
91
+ // ─────────────────────────────────────────────────────────────────────
92
+ // SUBMENU ARROW ICON
93
+ // Figma: chevron-down icon, 16px, appears only when has submenu
94
+ // ─────────────────────────────────────────────────────────────────────
95
+
96
+ .el-sub-menu__icon-arrow {
97
+ position: static !important; // Override Element Plus absolute positioning
98
+ width: 16px !important;
99
+ height: 16px !important;
100
+ font-size: 16px !important;
101
+ margin-top: 0 !important;
102
+ color: var(--er-icon-secondary);
103
+
104
+ svg {
105
+ width: 16px;
106
+ height: 16px;
107
+ }
108
+ }
109
+
110
+ .el-sub-menu.is-active .el-sub-menu__icon-arrow {
111
+ color: var(--er-icon-brand);
112
+ }
113
+ }
114
+
115
+ .custom-menu-sidebar.el-menu--vertical {
116
+ // ─────────────────────────────────────────────────────────────────────
117
+ // CARD CONTAINER (matches AppSidebar)
118
+ // Rounded, bordered, elevated card — NOT a flush border-right sidebar.
119
+ // ─────────────────────────────────────────────────────────────────────
120
+ display: flex;
121
+ flex-direction: column;
122
+ gap: var(--er-shape-spacing-50); // 4px between items
123
+ padding: var(--er-shape-spacing-200) var(--er-shape-spacing-150); // 16px / 12px
124
+ border-radius: var(--er-shape-corner-200, 16px); // 16px
125
+ border: 1px solid var(--er-border-subtle); // #F4F4F5
126
+ background-color: var(--er-surface-container); // white
127
+ box-shadow:
128
+ 0 1px 2px 0 var(--shadow-ambient-01, rgba(0, 0, 0, 0.04)),
129
+ 0 2px 6px 0 var(--shadow-ambient-02, rgba(0, 0, 0, 0.06)),
130
+ 0 -1px 2px 0 var(--shadow-highlight-01, rgba(255, 255, 255, 0));
131
+
132
+ // ─────────────────────────────────────────────────────────────────────
133
+ // SECTION HEADERS
134
+ // Figma: title/sm (14px, semibold), text-secondary, height=32px
135
+ // ─────────────────────────────────────────────────────────────────────
136
+
137
+ .el-menu-item-group {
138
+ // Border between sections when there are multiple groups
139
+ &:not(:first-child) {
140
+ border-top: 1px solid var(--er-border-subtle, #f4f4f5);
141
+ }
142
+
143
+ // Last item of previous section gets bottom padding to create gap
144
+ &:not(:last-child) .el-menu-item:last-child {
145
+ padding-bottom: 8px !important;
146
+ }
147
+ }
148
+
149
+ .el-menu-item-group__title {
150
+ height: 32px;
151
+ padding: 0 8px !important;
152
+ display: flex;
153
+ align-items: center;
154
+ @include typo.title-sm;
155
+ color: var(--er-text-secondary); // #52525B
156
+ font-weight: 600; // semibold
157
+ line-height: 20px;
158
+ letter-spacing: 0.1px;
159
+ margin-bottom: 8px;
160
+ }
161
+
162
+ // ─────────────────────────────────────────────────────────────────────
163
+ // EXPANDABLE SUB-MENU TITLE (e.g. "Client Hub")
164
+ // Figma: title/sm, text-secondary, icon-secondary, h=control/lg (40px)
165
+ // ─────────────────────────────────────────────────────────────────────
166
+
167
+ .el-sub-menu__title {
168
+ margin-bottom: var(--er-shape-spacing-100); // 8px gap below header
169
+ height: var(--er-control-height-lg); // 40px
170
+ padding: 0 var(--er-shape-spacing-50) !important; // 4px
171
+ border-radius: var(--er-shape-corner-100); // 8px
172
+
173
+ // Title text
174
+ span {
175
+ color: var(--er-text-secondary); // #52525B
176
+ font-family: var(--er-typo-title-sm-font);
177
+ font-size: var(--er-typo-title-sm-sz);
178
+ line-height: var(--er-typo-title-sm-line-hg);
179
+ font-weight: var(--er-typo-title-sm-wg-em);
180
+ letter-spacing: var(--er-typo-title-sm-tracking);
181
+ }
182
+
183
+ // Icon
184
+ svg {
185
+ color: var(--er-icon-secondary); // #71717A
186
+ }
187
+
188
+ &:hover {
189
+ background-color: var(--er-action-neutral-subtle-hover); // #FAFAFA
190
+ }
191
+ }
192
+
193
+ // Expanded inline sub-menu list inherits the card background
194
+ .el-menu.el-menu--inline {
195
+ background-color: inherit;
196
+ }
197
+
198
+ // ─────────────────────────────────────────────────────────────────────
199
+ // SIDEBAR MENU ITEM (EXPANDED)
200
+ // Figma: h=40px, px=12px, py=8px, gap=8px, corner/sm (8px), icon=20px
201
+ // ─────────────────────────────────────────────────────────────────────
202
+
203
+ .el-menu-item {
204
+ height: 40px !important;
205
+ padding: 0 8px !important;
206
+ border-radius: var(--er-shape-corner-100); // 8px
207
+ display: flex;
208
+ align-items: center;
209
+ gap: 8px;
210
+ margin: 0; // Card container uses `gap` for item spacing
211
+ line-height: 40px;
212
+ user-select: none; // Prevent text cursor on click
213
+
214
+ // Reset El-Plus defaults
215
+ border-bottom: none !important;
216
+ background-color: transparent !important;
217
+
218
+ // Text: label/lg (14px, medium, text-secondary)
219
+ @include typo.label-lg;
220
+ color: var(--er-text-secondary) !important; // #52525B
221
+
222
+ // Icon
223
+ svg {
224
+ width: 20px;
225
+ height: 20px;
226
+ font-size: 20px;
227
+ margin-right: 0 !important;
228
+ flex-shrink: 0;
229
+ color: var(--er-icon-secondary); // #71717A
230
+ }
231
+
232
+ // Hover state
233
+ // Figma: bg=action/neutral-subtle-hover (#fafafa), text/icon stay same
234
+ &:hover {
235
+ background-color: var(--er-action-neutral-subtle-hover) !important; // #FAFAFA
236
+ color: var(--er-text-secondary) !important;
237
+
238
+ svg {
239
+ color: var(--er-icon-secondary);
240
+ }
241
+ }
242
+
243
+ // Active/Selected state
244
+ // Figma: bg=action/primary-subtle (#eff6ff), text-brand, icon-brand
245
+ &.is-active {
246
+ background-color: var(--er-action-primary-subtle) !important; // #EFF6FF
247
+ color: var(--er-text-brand) !important; // #3B82F6
248
+
249
+ svg {
250
+ color: var(--er-icon-brand) !important; // #3B82F6
251
+ }
252
+
253
+ // Active hover: action/primary-subtle-hover
254
+ &:hover {
255
+ background-color: var(--er-action-primary-subtle-hover) !important; // #DBEAFE
256
+ }
257
+ }
258
+
259
+ // Disabled state
260
+ &.is-disabled {
261
+ opacity: 0.5;
262
+ pointer-events: none;
263
+ cursor: not-allowed;
264
+ }
265
+ }
266
+
267
+ // ─────────────────────────────────────────────────────────────────────
268
+ // COLLAPSED STATE
269
+ // Figma: width=56px, hide text, center icon, px=10px
270
+ // ─────────────────────────────────────────────────────────────────────
271
+
272
+ &.el-menu--collapse {
273
+ width: 56px;
274
+ min-width: 56px;
275
+
276
+ .el-menu-item-group__title {
277
+ display: none; // Hide section headers in collapsed mode
278
+ }
279
+
280
+ .el-menu-item {
281
+ justify-content: center;
282
+ padding: 0 10px !important; // Less horizontal padding when collapsed
283
+
284
+ span:not(svg) {
285
+ display: none; // Hide text labels in collapsed mode
286
+ }
287
+ }
288
+ }
289
+ }
290
+
291
+ .custom-menu-submenu.el-menu--popup-container,
292
+ .custom-menu.custom-menu-submenu {
293
+ min-width: 211px !important; // Figma: submenu panel width
294
+ padding: 8px !important;
295
+ background-color: var(--er-surface-container) !important;
296
+ border: none !important;
297
+ border-radius: var(--er-shape-corner-200) !important;
298
+ @include elevation.elevation-level-1;
299
+ }
300
+
301
+ .custom-menu-submenu {
302
+ &.el-popper.is-light,
303
+ &.el-popper.is-light .el-popper__arrow::before {
304
+ border: none !important;
305
+ border-radius: var(--er-shape-corner-200) !important;
306
+ }
307
+ }
308
+
309
+ .custom-menu-submenu.el-menu--popup-container > .el-menu--popup {
310
+ padding: 0 !important;
311
+ border: none !important;
312
+ box-shadow: none !important;
313
+ display: flex;
314
+ flex-direction: column;
315
+ gap: var(--er-shape-spacing-100);
316
+ background-color: var(--er-surface-container) !important;
317
+ border-radius: var(--er-shape-corner-200) !important;
318
+ }
319
+
320
+ .custom-menu-submenu.el-menu--popup-container .el-menu--popup .el-menu-item,
321
+ .custom-menu.custom-menu-submenu .el-menu-item {
322
+ height: auto !important; // Allow variable height for description
323
+ min-height: 72px; // Figma: with icon + title + description
324
+ max-width: 211px;
325
+ padding: 8px !important;
326
+ border-radius: var(--er-shape-corner-100); // 8px
327
+ display: flex !important;
328
+ flex-direction: row !important;
329
+ align-items: flex-start !important;
330
+ gap: 8px !important;
331
+ margin-bottom: 0;
332
+ line-height: 1 !important; // Reset line-height for custom layout
333
+ user-select: none; // Prevent text cursor on click
334
+
335
+ // Reset El-Plus
336
+ background-color: transparent !important;
337
+ border-bottom: none !important;
338
+ white-space: normal !important;
339
+
340
+ // Icon container
341
+ svg {
342
+ width: 20px !important;
343
+ height: 20px !important;
344
+ font-size: 20px !important;
345
+ margin-right: 0 !important;
346
+ flex-shrink: 0;
347
+ color: var(--er-icon-secondary);
348
+ }
349
+
350
+ // Text container (custom div wrapper)
351
+ .menu-item__text {
352
+ display: flex;
353
+ flex-direction: column;
354
+ gap: 5px; // Figma: gap between title and description
355
+ flex: 1;
356
+ min-width: 0; // Allow text to wrap
357
+ max-width: 100%;
358
+ overflow: hidden;
359
+ }
360
+
361
+ // Title (custom div)
362
+ .menu-item__title {
363
+ @include typo.label-lg;
364
+ color: var(--er-text-primary); // #18181B
365
+ line-height: 20px;
366
+ margin: 0;
367
+ padding: 0;
368
+ }
369
+
370
+ // Description (custom div)
371
+ .menu-item__description {
372
+ @include typo.body-sm;
373
+ color: var(--er-text-muted); // #A1A1AA
374
+ line-height: 16px;
375
+ margin: 0;
376
+ padding: 0;
377
+ font-feature-settings:
378
+ 'lnum' 1,
379
+ 'tnum' 1;
380
+ display: -webkit-box;
381
+ -webkit-line-clamp: 2;
382
+ -webkit-box-orient: vertical;
383
+ overflow: hidden;
384
+ text-overflow: ellipsis;
385
+ white-space: normal !important;
386
+ word-break: break-word;
387
+ max-width: 100%;
388
+ width: 100%;
389
+ }
390
+
391
+ // Hover state
392
+ // Figma: bg=action/neutral-subtle-hover (#fafafa), text stays primary
393
+ &:hover {
394
+ background-color: var(--er-action-neutral-subtle-hover) !important; // #FAFAFA
395
+
396
+ .menu-item__title {
397
+ color: var(--er-text-primary); // #18181B (stays same)
398
+ }
399
+
400
+ svg {
401
+ color: var(--er-icon-secondary); // #71717A (stays same)
402
+ }
403
+ }
404
+
405
+ // Selected state
406
+ // Figma: bg=action/primary-subtle (#eff6ff), title=text-brand, icon=icon-brand
407
+ &.is-active {
408
+ background-color: var(--er-action-primary-subtle) !important; // #EFF6FF
409
+
410
+ .menu-item__title {
411
+ color: var(--er-text-brand); // #3B82F6
412
+ }
413
+
414
+ svg {
415
+ color: var(--er-icon-brand); // #3B82F6
416
+ }
417
+
418
+ // Selected hover: action/primary-subtle-hover
419
+ &:hover {
420
+ background-color: var(--er-action-primary-subtle-hover) !important; // #DBEAFE
421
+ }
422
+ }
423
+
424
+ // Disabled state
425
+ &.is-disabled {
426
+ opacity: 0.5;
427
+ pointer-events: none;
428
+ }
429
+ }
430
+
431
+ .menu-submenu-multicolumn,
432
+ .menu-submenu-multicolumn.el-menu--popup-container {
433
+ display: flex;
434
+ flex-direction: row;
435
+ background-color: var(--er-surface-container) !important;
436
+ border: none !important;
437
+ border-radius: var(--er-shape-corner-200) !important;
438
+ @include elevation.elevation-level-1;
439
+ overflow: hidden;
440
+
441
+ // When inside Element Plus popup, override the inner UL
442
+ .el-menu--popup {
443
+ display: flex !important;
444
+ flex-direction: row !important;
445
+ padding: 0 !important;
446
+ min-width: auto !important;
447
+ width: auto !important;
448
+ border: none !important;
449
+ box-shadow: none !important;
450
+ background-color: transparent !important;
451
+ }
452
+
453
+ // Column/Section wrapper
454
+ .menu-submenu-section {
455
+ display: flex;
456
+ flex-direction: column;
457
+ gap: var(--er-shape-spacing-200);
458
+ padding: var(--er-shape-spacing-200);
459
+ width: 375px; // Section title header (label/md, uppercase, text-muted)
460
+ .menu-submenu-section__title {
461
+ @include typo.label-md;
462
+ color: var(--er-text-muted); // #A1A1AA
463
+ text-transform: uppercase;
464
+ line-height: 16px;
465
+ letter-spacing: 0.5px;
466
+ margin: 0;
467
+ padding: 0;
468
+ }
469
+
470
+ // Items container
471
+ .menu-submenu-section__items {
472
+ display: flex;
473
+ flex-direction: column;
474
+ gap: var(--er-shape-spacing-100);
475
+ }
476
+
477
+ // Individual item (icon + title + description)
478
+ .menu-submenu-section__item,
479
+ .menu-submenu-section__items .el-menu-item {
480
+ display: flex;
481
+ flex-direction: row;
482
+ gap: var(--er-shape-spacing-100);
483
+ padding: var(--er-shape-spacing-100) !important;
484
+ align-items: flex-start;
485
+ border-radius: var(--er-shape-corner-100); // 8px
486
+ cursor: pointer;
487
+ user-select: none; // Prevent text cursor on click
488
+ transition: background-color 0.2s ease;
489
+ background-color: transparent;
490
+ // Reset el-menu-item defaults
491
+ height: auto !important;
492
+ line-height: 1 !important;
493
+ border: none !important;
494
+ margin: 0 !important;
495
+
496
+ // Icon
497
+ .menu-submenu-section__item-icon {
498
+ width: 20px;
499
+ height: 20px;
500
+ flex-shrink: 0;
501
+ color: var(--er-icon-secondary);
502
+ }
503
+
504
+ // Text content wrapper
505
+ .menu-submenu-section__item-content {
506
+ display: flex;
507
+ flex-direction: column;
508
+ gap: 5px;
509
+ flex: 1;
510
+ min-width: 0;
511
+ max-width: 100%;
512
+ overflow: hidden;
513
+ }
514
+
515
+ // Title
516
+ .menu-submenu-section__item-title {
517
+ @include typo.label-lg;
518
+ color: var(--er-text-primary);
519
+ line-height: 20px;
520
+ margin: 0;
521
+ padding: 0;
522
+ }
523
+
524
+ // Description
525
+ .menu-submenu-section__item-description {
526
+ @include typo.body-sm;
527
+ color: var(--er-text-muted);
528
+ line-height: 16px;
529
+ margin: 0;
530
+ padding: 0;
531
+ font-feature-settings:
532
+ 'lnum' 1,
533
+ 'tnum' 1;
534
+ display: -webkit-box;
535
+ -webkit-line-clamp: 2;
536
+ -webkit-box-orient: vertical;
537
+ overflow: hidden;
538
+ text-overflow: ellipsis;
539
+ white-space: normal !important;
540
+ max-width: 100%;
541
+ width: 100%;
542
+ }
543
+
544
+ // Hover state (not selected)
545
+ // Figma: bg=action/neutral-subtle-hover (#fafafa), text/icon stays primary
546
+ &:hover {
547
+ background-color: var(--er-action-neutral-subtle-hover); // #FAFAFA
548
+
549
+ .menu-submenu-section__item-title {
550
+ color: var(--er-text-primary); // #18181B
551
+ }
552
+
553
+ .menu-submenu-section__item-icon {
554
+ color: var(--er-icon-secondary); // #71717A
555
+ }
556
+ }
557
+
558
+ // Selected/Active state
559
+ // Figma: bg=action/primary-subtle (#eff6ff), text/icon=brand
560
+ &.is-selected {
561
+ background-color: var(--er-action-primary-subtle); // #EFF6FF
562
+
563
+ .menu-submenu-section__item-title {
564
+ color: var(--er-text-brand); // #3B82F6
565
+ }
566
+
567
+ .menu-submenu-section__item-icon {
568
+ color: var(--er-icon-brand); // #3B82F6
569
+ }
570
+
571
+ // Selected hover: action/primary-subtle-hover
572
+ &:hover {
573
+ background-color: var(--er-action-primary-subtle-hover); // #DBEAFE
574
+ }
575
+ }
576
+ }
577
+ }
578
+ }
@@ -0,0 +1,78 @@
1
+ @use '../themes/aurora/typography/typography-utils' as typo;
2
+ @use '../themes/aurora/elevation/elevation-utils' as elevation;
3
+
4
+ .el-message-box {
5
+ // ── Container ─────────────────────────────────────────────────────────────
6
+ // Figma: surface/elevated, flex col, gap md, padding lg, corner/xl, shadow level-2, 320px
7
+ display: inline-flex;
8
+ flex-direction: column;
9
+ gap: var(--er-shape-spacing-150);
10
+ width: 320px;
11
+ padding: var(--er-shape-spacing-200);
12
+ background: var(--er-surface-elevated);
13
+ border-radius: var(--er-shape-corner-250);
14
+ overflow: hidden;
15
+ @include elevation.elevation-level-2;
16
+
17
+ .el-message-box__header {
18
+ display: flex;
19
+ justify-content: space-between;
20
+ align-items: flex-start;
21
+ padding-bottom: 0;
22
+
23
+ .el-message-box__title {
24
+ @include typo.title-lg-em;
25
+ color: var(--er-text-primary);
26
+ }
27
+
28
+ // Remove El-Plus default right padding — close button is inline in flex row, not absolute
29
+ &.show-close {
30
+ padding-right: 0;
31
+ }
32
+ }
33
+
34
+ // ── Close button — matches EaeraButton ghost sm isIconOnly ─────────────────
35
+ // Figma: icon-button 24×24, no bg, no border, icon/secondary, hover bg=action/neutral-subtle-hover
36
+ .el-message-box__headerbtn {
37
+ position: static;
38
+ width: var(--er-control-height-sm);
39
+ height: var(--er-control-height-sm);
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ background: transparent;
44
+ border-radius: var(--er-shape-corner-50);
45
+ cursor: pointer;
46
+ flex-shrink: 0;
47
+
48
+ .el-message-box__close {
49
+ color: var(--er-icon-secondary);
50
+
51
+ svg {
52
+ width: var(--er-control-height-xxs);
53
+ height: var(--er-control-height-xxs);
54
+ display: block;
55
+ }
56
+ }
57
+
58
+ &:hover {
59
+ background: var(--er-action-neutral-subtle-hover);
60
+
61
+ .el-message-box__close {
62
+ color: var(--er-icon-primary);
63
+ }
64
+ }
65
+ }
66
+
67
+ .el-message-box__message {
68
+ @include typo.body-md;
69
+ color: var(--er-text-secondary);
70
+ }
71
+
72
+ // // ── Footer ────────────────────────────────────────────────────────────────
73
+ // // Figma: flex row, justify end, gap sm (8px), no top padding
74
+ .el-message-box__btns {
75
+ padding-top: 0;
76
+ gap: var(--er-shape-spacing-100);
77
+ }
78
+ }