@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.29 → 0.2.32

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 (52) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/components/ui/badge.d.ts +1 -1
  3. package/dist/components/ui/navigation/index.d.ts +4 -1
  4. package/dist/components/ui/navigation/index.d.ts.map +1 -1
  5. package/dist/components/ui/navigation/index.esm.js +4 -0
  6. package/dist/components/ui/navigation/index.js +4 -0
  7. package/dist/components/ui/navigation/subscription-badge.d.ts +9 -0
  8. package/dist/components/ui/navigation/subscription-badge.d.ts.map +1 -0
  9. package/dist/components/ui/navigation/subscription-badge.esm.js +58 -0
  10. package/dist/components/ui/navigation/subscription-badge.js +58 -0
  11. package/dist/components/ui/navigation/types.d.ts +1 -0
  12. package/dist/components/ui/navigation/types.d.ts.map +1 -1
  13. package/dist/components/ui/navigation/user-avatar.d.ts +9 -0
  14. package/dist/components/ui/navigation/user-avatar.d.ts.map +1 -0
  15. package/dist/components/ui/navigation/user-avatar.esm.js +55 -0
  16. package/dist/components/ui/navigation/user-avatar.js +55 -0
  17. package/dist/components/ui/navigation/user-menu-examples.d.ts +8 -0
  18. package/dist/components/ui/navigation/user-menu-examples.d.ts.map +1 -0
  19. package/dist/components/ui/navigation/user-menu-examples.esm.js +125 -0
  20. package/dist/components/ui/navigation/user-menu-examples.js +125 -0
  21. package/dist/components/ui/navigation/user-menu-types.d.ts +218 -0
  22. package/dist/components/ui/navigation/user-menu-types.d.ts.map +1 -0
  23. package/dist/components/ui/navigation/user-menu-types.esm.js +5 -0
  24. package/dist/components/ui/navigation/user-menu-types.js +5 -0
  25. package/dist/components/ui/navigation/user-menu.d.ts +9 -0
  26. package/dist/components/ui/navigation/user-menu.d.ts.map +1 -0
  27. package/dist/components/ui/navigation/user-menu.esm.js +154 -0
  28. package/dist/components/ui/navigation/user-menu.js +154 -0
  29. package/dist/hooks/use-battery-conscious-loading.d.ts +1 -1
  30. package/dist/hooks/use-battery-status.d.ts +1 -1
  31. package/dist/hooks/use-component-performance.d.ts +1 -1
  32. package/dist/hooks/use-form-feedback.d.ts +3 -3
  33. package/dist/hooks/use-gestures.d.ts +5 -5
  34. package/dist/hooks/use-mobile-skeleton.d.ts +1 -1
  35. package/dist/hooks/use-performance.d.ts +1 -1
  36. package/dist/hooks/use-touch-friendly-input.d.ts +1 -1
  37. package/dist/hooks/use-touch-friendly-interface.d.ts +1 -1
  38. package/dist/index.d.ts +29 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.esm.js +29 -1
  41. package/dist/index.js +29 -1
  42. package/dist/styles.css +2 -2
  43. package/package.json +1 -1
  44. package/src/components/ui/navigation/index.ts +13 -0
  45. package/src/components/ui/navigation/subscription-badge.tsx +110 -0
  46. package/src/components/ui/navigation/types.ts +14 -0
  47. package/src/components/ui/navigation/user-avatar.tsx +111 -0
  48. package/src/components/ui/navigation/user-menu-examples.tsx +551 -0
  49. package/src/components/ui/navigation/user-menu-types.ts +308 -0
  50. package/src/components/ui/navigation/user-menu.tsx +354 -0
  51. package/src/index.ts +29 -1
  52. package/src/styles/components/navigation/user-menu.css +525 -0
package/src/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * Production-ready design system package with stan-design theme
4
4
  *
5
5
  * Auto-generated exports for:
6
- * - 61 UI components
6
+ * - 89 UI components
7
7
  * - 67 custom hooks
8
8
  * - 6 utility functions
9
9
  * - 29 theme system components
@@ -17,25 +17,53 @@
17
17
  */
18
18
 
19
19
  // UI Components
20
+ export { AdvancedTransitionContainer } from './components/ui/advanced-transition-system.js';
21
+ export { AdvancedTransitionButton } from './components/ui/advanced-transition-system.js';
22
+ export { AdvancedTransitionCard } from './components/ui/advanced-transition-system.js';
23
+ export { AdvancedTransitionInput } from './components/ui/advanced-transition-system.js';
24
+ export { AdvancedTransitionList } from './components/ui/advanced-transition-system.js';
25
+ export { Badge } from './components/ui/badge.js';
20
26
  export { Button } from './components/ui/button.js';
21
27
  export { Card } from './components/ui/card.js';
22
28
  export { Checkbox } from './components/ui/checkbox.js';
23
29
  export { ColorPreview } from './components/ui/color-preview.js';
30
+ export { ColorShowcase } from './components/ui/color-preview.js';
24
31
  export { EnterpriseProgress } from './components/ui/enterprise-mobile-experience.js';
32
+ export { EnterpriseButton } from './components/ui/enterprise-mobile-experience.js';
33
+ export { EnterpriseCard } from './components/ui/enterprise-mobile-experience.js';
34
+ export { EnterpriseInput } from './components/ui/enterprise-mobile-experience.js';
35
+ export { EnterpriseQualityMetric } from './components/ui/enterprise-mobile-experience.js';
36
+ export { EnterpriseStatus } from './components/ui/enterprise-mobile-experience.js';
37
+ export { EnterpriseContainer } from './components/ui/enterprise-mobile-experience.js';
38
+ export { EnterpriseSection } from './components/ui/enterprise-mobile-experience.js';
39
+ export { EnterpriseGrid } from './components/ui/enterprise-mobile-experience.js';
40
+ export { EnterpriseLoading } from './components/ui/enterprise-mobile-experience.js';
41
+ export { EnterpriseNotification } from './components/ui/enterprise-mobile-experience.js';
25
42
  export { FontPreview } from './components/ui/font-preview.js';
43
+ export { FontShowcase } from './components/ui/font-preview.js';
26
44
  export { Input } from './components/ui/input.js';
27
45
  export { Label } from './components/ui/label.js';
46
+ export { MobileFormValidation } from './components/ui/mobile-form-validation.js';
28
47
  export { MobileInput } from './components/ui/mobile-input.js';
29
48
  export { ThemeCustomizer } from './components/ui/theme-customizer.js';
30
49
  export { ThemePreview } from './components/ui/theme-preview.js';
31
50
  export { ThemeSwitcher } from './components/ui/theme-switcher.js';
32
51
  export { ThemeToggle } from './components/ui/theme-toggle.js';
52
+ export { TouchFriendlyButton } from './components/ui/touch-friendly-interface.js';
53
+ export { TouchFriendlyInput } from './components/ui/touch-friendly-interface.js';
54
+ export { TouchFriendlyCard } from './components/ui/touch-friendly-interface.js';
55
+ export { TouchFriendlyToggle } from './components/ui/touch-friendly-interface.js';
56
+ export { TouchFriendlySlider } from './components/ui/touch-friendly-interface.js';
33
57
  export { Breadcrumb } from './components/ui/navigation/breadcrumb.js';
34
58
  export { Menu } from './components/ui/navigation/menu.js';
35
59
  export { Pagination } from './components/ui/navigation/pagination.js';
36
60
  export { Sidebar } from './components/ui/navigation/sidebar.js';
37
61
  export { Stepper } from './components/ui/navigation/stepper.js';
62
+ export { SubscriptionBadge } from './components/ui/navigation/subscription-badge.js';
38
63
  export { Tabs } from './components/ui/navigation/tabs.js';
64
+ export { UserAvatar } from './components/ui/navigation/user-avatar.js';
65
+ export { UserMenuExamples } from './components/ui/navigation/user-menu-examples.js';
66
+ export { UserMenu } from './components/ui/navigation/user-menu.js';
39
67
  export { Chart } from './components/ui/data-display/chart.js';
40
68
  export { DataGridSimple } from './components/ui/data-display/data-grid-simple.js';
41
69
  export { DataGrid } from './components/ui/data-display/data-grid.js';
@@ -0,0 +1,525 @@
1
+ /* UserMenu Component Styles */
2
+ /* Using semantic CSS architecture with CSS variables and BEM methodology */
3
+
4
+ /* UserMenu CSS Variables */
5
+ :root {
6
+ /* UserMenu Base Variables */
7
+ --user-menu-width: 288px;
8
+ --user-menu-max-height: 400px;
9
+ --user-menu-border-radius: var(--cs-border-radius-lg);
10
+ --user-menu-shadow: var(--cs-shadows-lg);
11
+ --user-menu-z-index: 50;
12
+
13
+ /* Header Variables */
14
+ --user-menu-header-padding: var(--cs-spacing-scale-lg);
15
+ --user-menu-header-border: 1px solid var(--cs-colors-border-subtle);
16
+ --user-menu-header-gap: var(--cs-spacing-scale-md);
17
+
18
+ /* Item Variables */
19
+ --user-menu-item-padding: var(--cs-spacing-scale-sm) var(--cs-spacing-scale-md);
20
+ --user-menu-item-gap: var(--cs-spacing-scale-md);
21
+ --user-menu-item-radius: var(--cs-border-radius-md);
22
+
23
+ /* Section Variables */
24
+ --user-menu-section-padding: var(--cs-spacing-scale-sm) 0;
25
+ --user-menu-section-title-padding: var(--cs-spacing-scale-xs) var(--cs-spacing-scale-md);
26
+
27
+ /* Avatar Variables */
28
+ --user-avatar-xs-size: 24px;
29
+ --user-avatar-sm-size: 32px;
30
+ --user-avatar-md-size: 40px;
31
+ --user-avatar-lg-size: 48px;
32
+ --user-avatar-xl-size: 56px;
33
+
34
+ /* Subscription Badge Variables */
35
+ --subscription-badge-gap: var(--cs-spacing-scale-xs);
36
+ --subscription-badge-padding: var(--cs-spacing-scale-xs) var(--cs-spacing-scale-sm);
37
+
38
+ /* Color Variables */
39
+ --user-menu-background: var(--cs-colors-surface-background);
40
+ --user-menu-border-color: var(--cs-colors-border);
41
+ --user-menu-text-primary: var(--cs-colors-text-primary);
42
+ --user-menu-text-secondary: var(--cs-colors-text-secondary);
43
+ --user-menu-text-muted: var(--cs-colors-text-muted);
44
+ --user-menu-hover-background: var(--cs-colors-interactive-hover);
45
+ --user-menu-focus-outline: var(--cs-colors-interactive-focus);
46
+ --user-menu-danger-color: var(--cs-colors-destructive-500);
47
+ --user-menu-danger-hover: var(--cs-colors-destructive-600);
48
+
49
+ /* Animation Variables */
50
+ --user-menu-transition: var(--cs-transitions-duration-normal) var(--cs-transitions-easing-ease);
51
+ }
52
+
53
+ /* Dark mode variables */
54
+ .dark {
55
+ --user-menu-background: var(--cs-modes-dark-colors-surface-surface);
56
+ --user-menu-border-color: var(--cs-modes-dark-colors-border);
57
+ --user-menu-text-primary: var(--cs-modes-dark-colors-text-primary);
58
+ --user-menu-text-secondary: var(--cs-modes-dark-colors-text-secondary);
59
+ --user-menu-text-muted: var(--cs-modes-dark-colors-text-muted);
60
+ --user-menu-hover-background: var(--cs-modes-dark-colors-interactive-hover);
61
+ --user-menu-focus-outline: var(--cs-modes-dark-colors-interactive-focus);
62
+ }
63
+
64
+ /* ============================================================================
65
+ BASE USERMENU COMPONENT
66
+ ============================================================================ */
67
+
68
+ .user-menu {
69
+ position: relative;
70
+ display: inline-block;
71
+ }
72
+
73
+ .user-menu__trigger {
74
+ background: none;
75
+ border: none;
76
+ cursor: pointer;
77
+ padding: 0;
78
+ transition: var(--user-menu-transition);
79
+ }
80
+
81
+ .user-menu__trigger:focus {
82
+ outline: 2px solid var(--user-menu-focus-outline);
83
+ outline-offset: 2px;
84
+ }
85
+
86
+ .user-menu__trigger-default {
87
+ display: flex;
88
+ align-items: center;
89
+ gap: var(--cs-spacing-scale-sm);
90
+ padding: var(--cs-spacing-scale-sm);
91
+ border-radius: var(--cs-border-radius-md);
92
+ transition: var(--user-menu-transition);
93
+ }
94
+
95
+ .user-menu__trigger-default:hover {
96
+ background-color: var(--user-menu-hover-background);
97
+ }
98
+
99
+ .user-menu__trigger-name {
100
+ font-size: var(--cs-fonts-primary-sizes-sm);
101
+ font-weight: var(--cs-fonts-primary-weights-medium);
102
+ color: var(--user-menu-text-primary);
103
+ }
104
+
105
+ /* ============================================================================
106
+ DROPDOWN CONTAINER
107
+ ============================================================================ */
108
+
109
+ .user-menu__dropdown {
110
+ position: absolute;
111
+ z-index: var(--user-menu-z-index);
112
+ background-color: var(--user-menu-background);
113
+ border: 1px solid var(--user-menu-border-color);
114
+ border-radius: var(--user-menu-border-radius);
115
+ box-shadow: var(--user-menu-shadow);
116
+ overflow: hidden;
117
+ animation: userMenuSlideIn 0.2s ease-out;
118
+ }
119
+
120
+ /* Placement variants */
121
+ .user-menu__dropdown--bottom-left {
122
+ top: 100%;
123
+ left: 0;
124
+ margin-top: var(--cs-spacing-scale-xs);
125
+ }
126
+
127
+ .user-menu__dropdown--bottom-right {
128
+ top: 100%;
129
+ right: 0;
130
+ margin-top: var(--cs-spacing-scale-xs);
131
+ }
132
+
133
+ .user-menu__dropdown--top-left {
134
+ bottom: 100%;
135
+ left: 0;
136
+ margin-bottom: var(--cs-spacing-scale-xs);
137
+ }
138
+
139
+ .user-menu__dropdown--top-right {
140
+ bottom: 100%;
141
+ right: 0;
142
+ margin-bottom: var(--cs-spacing-scale-xs);
143
+ }
144
+
145
+ /* ============================================================================
146
+ USER HEADER SECTION
147
+ ============================================================================ */
148
+
149
+ .user-menu__header {
150
+ padding: var(--user-menu-header-padding);
151
+ border-bottom: var(--user-menu-header-border);
152
+ display: flex;
153
+ align-items: center;
154
+ gap: var(--user-menu-header-gap);
155
+ }
156
+
157
+ .user-menu__header-avatar {
158
+ flex-shrink: 0;
159
+ }
160
+
161
+ .user-menu__header-info {
162
+ flex: 1;
163
+ min-width: 0;
164
+ }
165
+
166
+ .user-menu__header-name {
167
+ font-size: var(--cs-fonts-primary-sizes-md);
168
+ font-weight: var(--cs-fonts-primary-weights-semibold);
169
+ color: var(--user-menu-text-primary);
170
+ margin-bottom: var(--cs-spacing-scale-xs);
171
+ white-space: nowrap;
172
+ overflow: hidden;
173
+ text-overflow: ellipsis;
174
+ }
175
+
176
+ .user-menu__header-email {
177
+ font-size: var(--cs-fonts-primary-sizes-sm);
178
+ color: var(--user-menu-text-muted);
179
+ margin-bottom: var(--cs-spacing-scale-sm);
180
+ white-space: nowrap;
181
+ overflow: hidden;
182
+ text-overflow: ellipsis;
183
+ }
184
+
185
+ .user-menu__header-subscription {
186
+ display: flex;
187
+ justify-content: flex-start;
188
+ }
189
+
190
+ /* ============================================================================
191
+ MENU SECTIONS
192
+ ============================================================================ */
193
+
194
+ .user-menu__sections {
195
+ max-height: inherit;
196
+ overflow-y: auto;
197
+ }
198
+
199
+ .user-menu__section {
200
+ padding: var(--user-menu-section-padding);
201
+ }
202
+
203
+ .user-menu__section--bordered {
204
+ border-top: 1px solid var(--user-menu-border-color);
205
+ }
206
+
207
+ .user-menu__section-title {
208
+ padding: var(--user-menu-section-title-padding);
209
+ font-size: var(--cs-fonts-primary-sizes-xs);
210
+ font-weight: var(--cs-fonts-primary-weights-semibold);
211
+ color: var(--user-menu-text-muted);
212
+ text-transform: uppercase;
213
+ letter-spacing: var(--cs-fonts-primary-letter-spacing-wide);
214
+ }
215
+
216
+ .user-menu__section-items {
217
+ display: flex;
218
+ flex-direction: column;
219
+ gap: var(--cs-spacing-scale-xs);
220
+ }
221
+
222
+ /* ============================================================================
223
+ MENU ITEMS
224
+ ============================================================================ */
225
+
226
+ .user-menu__item {
227
+ display: flex;
228
+ align-items: center;
229
+ width: 100%;
230
+ padding: var(--user-menu-item-padding);
231
+ border: none;
232
+ background: none;
233
+ color: var(--user-menu-text-primary);
234
+ text-decoration: none;
235
+ cursor: pointer;
236
+ border-radius: var(--user-menu-item-radius);
237
+ transition: var(--user-menu-transition);
238
+ text-align: left;
239
+ }
240
+
241
+ .user-menu__item:hover {
242
+ background-color: var(--user-menu-hover-background);
243
+ }
244
+
245
+ .user-menu__item:focus {
246
+ outline: 2px solid var(--user-menu-focus-outline);
247
+ outline-offset: -2px;
248
+ }
249
+
250
+ .user-menu__item--disabled {
251
+ color: var(--user-menu-text-muted);
252
+ cursor: not-allowed;
253
+ opacity: 0.6;
254
+ }
255
+
256
+ .user-menu__item--disabled:hover {
257
+ background-color: transparent;
258
+ }
259
+
260
+ .user-menu__item--danger {
261
+ color: var(--user-menu-danger-color);
262
+ }
263
+
264
+ .user-menu__item--danger:hover {
265
+ background-color: var(--cs-colors-destructive-50);
266
+ color: var(--user-menu-danger-hover);
267
+ }
268
+
269
+ .user-menu__item-content {
270
+ display: flex;
271
+ align-items: center;
272
+ gap: var(--user-menu-item-gap);
273
+ flex: 1;
274
+ min-width: 0;
275
+ }
276
+
277
+ .user-menu__item-icon {
278
+ width: 16px;
279
+ height: 16px;
280
+ flex-shrink: 0;
281
+ display: flex;
282
+ align-items: center;
283
+ justify-content: center;
284
+ }
285
+
286
+ .user-menu__item-text {
287
+ flex: 1;
288
+ min-width: 0;
289
+ }
290
+
291
+ .user-menu__item-label {
292
+ display: block;
293
+ font-size: var(--cs-fonts-primary-sizes-sm);
294
+ font-weight: var(--cs-fonts-primary-weights-medium);
295
+ white-space: nowrap;
296
+ overflow: hidden;
297
+ text-overflow: ellipsis;
298
+ }
299
+
300
+ .user-menu__item-description {
301
+ display: block;
302
+ font-size: var(--cs-fonts-primary-sizes-xs);
303
+ color: var(--user-menu-text-muted);
304
+ margin-top: var(--cs-spacing-scale-xs);
305
+ white-space: nowrap;
306
+ overflow: hidden;
307
+ text-overflow: ellipsis;
308
+ }
309
+
310
+ .user-menu__item-badge {
311
+ flex-shrink: 0;
312
+ margin-left: var(--cs-spacing-scale-sm);
313
+ }
314
+
315
+ /* ============================================================================
316
+ USER AVATAR COMPONENT
317
+ ============================================================================ */
318
+
319
+ .user-avatar {
320
+ position: relative;
321
+ display: inline-flex;
322
+ align-items: center;
323
+ justify-content: center;
324
+ border-radius: 50%;
325
+ overflow: hidden;
326
+ background-color: var(--cs-colors-neutral-100);
327
+ }
328
+
329
+ .user-avatar--xs {
330
+ width: var(--user-avatar-xs-size);
331
+ height: var(--user-avatar-xs-size);
332
+ }
333
+
334
+ .user-avatar--sm {
335
+ width: var(--user-avatar-sm-size);
336
+ height: var(--user-avatar-sm-size);
337
+ }
338
+
339
+ .user-avatar--md {
340
+ width: var(--user-avatar-md-size);
341
+ height: var(--user-avatar-md-size);
342
+ }
343
+
344
+ .user-avatar--lg {
345
+ width: var(--user-avatar-lg-size);
346
+ height: var(--user-avatar-lg-size);
347
+ }
348
+
349
+ .user-avatar--xl {
350
+ width: var(--user-avatar-xl-size);
351
+ height: var(--user-avatar-xl-size);
352
+ }
353
+
354
+ .user-avatar__image {
355
+ width: 100%;
356
+ height: 100%;
357
+ object-fit: cover;
358
+ }
359
+
360
+ .user-avatar__fallback {
361
+ width: 100%;
362
+ height: 100%;
363
+ display: flex;
364
+ align-items: center;
365
+ justify-content: center;
366
+ background-color: var(--cs-colors-primary-100);
367
+ color: var(--cs-colors-primary-700);
368
+ }
369
+
370
+ .user-avatar__initials {
371
+ font-size: 0.6em;
372
+ font-weight: var(--cs-fonts-primary-weights-semibold);
373
+ text-transform: uppercase;
374
+ }
375
+
376
+ /* Dark mode avatar */
377
+ .dark .user-avatar {
378
+ background-color: var(--cs-modes-dark-colors-neutral-100);
379
+ }
380
+
381
+ .dark .user-avatar__fallback {
382
+ background-color: var(--cs-modes-dark-colors-primary-100);
383
+ color: var(--cs-modes-dark-colors-primary-700);
384
+ }
385
+
386
+ /* ============================================================================
387
+ SUBSCRIPTION BADGE COMPONENT
388
+ ============================================================================ */
389
+
390
+ .subscription-badge {
391
+ display: inline-flex;
392
+ align-items: center;
393
+ gap: var(--subscription-badge-gap);
394
+ }
395
+
396
+ .subscription-badge__icon {
397
+ display: flex;
398
+ align-items: center;
399
+ justify-content: center;
400
+ }
401
+
402
+ .subscription-badge__label {
403
+ font-size: inherit;
404
+ font-weight: inherit;
405
+ }
406
+
407
+ .subscription-badge--sm .subscription-badge__icon {
408
+ width: 12px;
409
+ height: 12px;
410
+ }
411
+
412
+ .subscription-badge--md .subscription-badge__icon {
413
+ width: 14px;
414
+ height: 14px;
415
+ }
416
+
417
+ .subscription-badge--lg .subscription-badge__icon {
418
+ width: 16px;
419
+ height: 16px;
420
+ }
421
+
422
+ /* ============================================================================
423
+ RESPONSIVE DESIGN
424
+ ============================================================================ */
425
+
426
+ @media (max-width: 768px) {
427
+ .user-menu__dropdown {
428
+ position: fixed;
429
+ top: 50%;
430
+ left: 50%;
431
+ transform: translate(-50%, -50%);
432
+ width: 90vw;
433
+ max-width: 320px;
434
+ max-height: 80vh;
435
+ }
436
+
437
+ .user-menu__dropdown--bottom-left,
438
+ .user-menu__dropdown--bottom-right,
439
+ .user-menu__dropdown--top-left,
440
+ .user-menu__dropdown--top-right {
441
+ margin: 0;
442
+ }
443
+
444
+ .user-menu__header {
445
+ padding: var(--cs-spacing-scale-md);
446
+ }
447
+
448
+ .user-menu__header-name {
449
+ font-size: var(--cs-fonts-primary-sizes-sm);
450
+ }
451
+
452
+ .user-menu__item {
453
+ padding: var(--cs-spacing-scale-md);
454
+ min-height: 44px; /* Touch target */
455
+ }
456
+
457
+ .user-menu__trigger-name {
458
+ display: none; /* Hide name on mobile */
459
+ }
460
+ }
461
+
462
+ @media (max-width: 480px) {
463
+ .user-menu__dropdown {
464
+ width: 95vw;
465
+ }
466
+ }
467
+
468
+ /* ============================================================================
469
+ ANIMATIONS
470
+ ============================================================================ */
471
+
472
+ @keyframes userMenuSlideIn {
473
+ from {
474
+ opacity: 0;
475
+ transform: translateY(-8px);
476
+ }
477
+ to {
478
+ opacity: 1;
479
+ transform: translateY(0);
480
+ }
481
+ }
482
+
483
+ /* ============================================================================
484
+ HIGH CONTRAST MODE
485
+ ============================================================================ */
486
+
487
+ @media (prefers-contrast: high) {
488
+ .user-menu__dropdown {
489
+ border-width: 2px;
490
+ }
491
+
492
+ .user-menu__item:focus {
493
+ outline-width: 3px;
494
+ }
495
+
496
+ .user-menu__section--bordered {
497
+ border-top-width: 2px;
498
+ }
499
+ }
500
+
501
+ /* ============================================================================
502
+ REDUCED MOTION
503
+ ============================================================================ */
504
+
505
+ @media (prefers-reduced-motion: reduce) {
506
+ .user-menu__dropdown {
507
+ animation: none;
508
+ }
509
+
510
+ .user-menu__item,
511
+ .user-menu__trigger,
512
+ .user-menu__trigger-default {
513
+ transition: none;
514
+ }
515
+ }
516
+
517
+ /* ============================================================================
518
+ PRINT STYLES
519
+ ============================================================================ */
520
+
521
+ @media print {
522
+ .user-menu__dropdown {
523
+ display: none;
524
+ }
525
+ }