|
20 | 20 | border: none; |
21 | 21 | border-radius: var(--radius-md); |
22 | 22 | cursor: pointer; |
23 | | - transition: background-color var(--transition-all); |
| 23 | + transition: background-color var(--transition-all), transform 0.3s ease; |
24 | 24 | white-space: nowrap; |
25 | 25 | overflow: hidden; |
26 | 26 | text-overflow: ellipsis; |
| 27 | + outline: none; |
27 | 28 | } |
28 | 29 |
|
29 | | -.dropdown-trigger:hover { |
30 | | - background-color: var(--primary-hover); |
| 30 | +.dropdown-trigger:focus { |
| 31 | + box-shadow: 0 0 0 3px var(--primary-light); |
31 | 32 | } |
32 | 33 |
|
33 | 34 | /* Dropdown Menu */ |
|
50 | 51 | overflow: hidden; |
51 | 52 | } |
52 | 53 |
|
53 | | -/* Show Menu on Hover */ |
| 54 | +/* Show Menu on Hover or Focus */ |
| 55 | +.dropdown:focus-within .dropdown-menu, |
54 | 56 | .dropdown:hover .dropdown-menu { |
55 | 57 | opacity: 1; |
56 | 58 | transform: translateY(0); |
|
69 | 71 | text-overflow: ellipsis; |
70 | 72 | } |
71 | 73 |
|
| 74 | +.dropdown-item:focus { |
| 75 | + background-color: var(--dropdown-hover-bg, var(--neutral-200)); |
| 76 | + outline: none; |
| 77 | + box-shadow: 0 0 0 3px var(--primary-light); |
| 78 | +} |
| 79 | + |
72 | 80 | /* Hover Effects for Dropdown Items */ |
73 | 81 | .dropdown-item:hover { |
74 | 82 | background-color: var(--dropdown-hover-bg, var(--neutral-200)); |
75 | 83 | color: var(--dropdown-hover-color, var(--primary)); |
76 | 84 | } |
77 | 85 |
|
78 | 86 | /* Data-Attribute Based Customization */ |
| 87 | + |
| 88 | +/* Primary Variant */ |
79 | 89 | .dropdown[data-variant="primary"] .dropdown-trigger { |
80 | 90 | background-color: var(--primary); |
81 | 91 | color: #fff; |
82 | 92 | } |
83 | | - |
84 | | -.dropdown[data-variant="secondary"] .dropdown-trigger { |
85 | | - background-color: var(--secondary); |
86 | | - color: #fff; |
87 | | -} |
88 | | - |
89 | 93 | .dropdown[data-variant="primary"] .dropdown-item:hover { |
90 | 94 | background-color: var(--primary-light); |
91 | 95 | color: var(--primary); |
92 | 96 | } |
93 | 97 |
|
| 98 | +/* Secondary Variant */ |
| 99 | +.dropdown[data-variant="secondary"] .dropdown-trigger { |
| 100 | + background-color: var(--secondary); |
| 101 | + color: #fff; |
| 102 | +} |
94 | 103 | .dropdown[data-variant="secondary"] .dropdown-item:hover { |
95 | 104 | background-color: var(--secondary-light); |
96 | 105 | color: var(--secondary); |
97 | 106 | } |
98 | 107 |
|
| 108 | +/* Warning Variant */ |
| 109 | +.dropdown[data-variant="warning"] .dropdown-trigger { |
| 110 | + background-color: var(--warning); |
| 111 | + color: #fff; |
| 112 | +} |
| 113 | +.dropdown[data-variant="warning"] .dropdown-item:hover { |
| 114 | + background-color: var(--warning-light); |
| 115 | + color: var(--warning); |
| 116 | +} |
| 117 | + |
| 118 | +/* Info Variant */ |
| 119 | +.dropdown[data-variant="info"] .dropdown-trigger { |
| 120 | + background-color: var(--info); |
| 121 | + color: #fff; |
| 122 | +} |
| 123 | +.dropdown[data-variant="info"] .dropdown-item:hover { |
| 124 | + background-color: var(--info-light); |
| 125 | + color: var(--info); |
| 126 | +} |
| 127 | + |
| 128 | +/* Danger Variant */ |
| 129 | +.dropdown[data-variant="danger"] .dropdown-trigger { |
| 130 | + background-color: var(--danger); |
| 131 | + color: #fff; |
| 132 | +} |
| 133 | +.dropdown[data-variant="danger"] .dropdown-item:hover { |
| 134 | + background-color: var(--danger-light); |
| 135 | + color: var(--danger); |
| 136 | +} |
| 137 | + |
| 138 | +/* Success Variant */ |
| 139 | +.dropdown[data-variant="success"] .dropdown-trigger { |
| 140 | + background-color: var(--success); |
| 141 | + color: #fff; |
| 142 | +} |
| 143 | +.dropdown[data-variant="success"] .dropdown-item:hover { |
| 144 | + background-color: var(--success-light); |
| 145 | + color: var(--success); |
| 146 | +} |
| 147 | + |
| 148 | +/* Accent Variant */ |
| 149 | +.dropdown[data-variant="accent"] .dropdown-trigger { |
| 150 | + background-color: var(--accent); |
| 151 | + color: #fff; |
| 152 | +} |
| 153 | +.dropdown[data-variant="accent"] .dropdown-item:hover { |
| 154 | + background-color: var(--accent-light); |
| 155 | + color: var(--accent); |
| 156 | +} |
| 157 | + |
99 | 158 | /* Responsive Positioning */ |
100 | 159 | .dropdown[data-position="top"] .dropdown-menu { |
101 | 160 | top: auto; |
|
0 commit comments