accessible-kit 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +1038 -0
- package/package.json +81 -0
- package/src/README.md +2240 -0
- package/src/css/a11y-accordion.core.css +94 -0
- package/src/css/a11y-accordion.theme.css +246 -0
- package/src/css/a11y-dropdown.core.css +169 -0
- package/src/css/a11y-dropdown.theme.css +175 -0
- package/src/css/a11y-modal.core.css +136 -0
- package/src/css/a11y-modal.theme.css +218 -0
- package/src/css/a11y-offcanvas.core.css +122 -0
- package/src/css/a11y-offcanvas.theme.css +170 -0
- package/src/css/a11y-tabs.core.css +120 -0
- package/src/css/a11y-tabs.theme.css +312 -0
- package/src/js/a11y-accordion.js +447 -0
- package/src/js/a11y-dropdown.js +353 -0
- package/src/js/a11y-modal.js +290 -0
- package/src/js/a11y-offcanvas.js +298 -0
- package/src/js/a11y-tabs.js +336 -0
- package/src/js/index.js +46 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/* Accessible Accordion - Core Styles */
|
|
2
|
+
/* Obsahuje iba logiku, positioning, layout a spravanie */
|
|
3
|
+
/* Pre vizualne nastavenia pouzite a11y-accordion.theme.css */
|
|
4
|
+
|
|
5
|
+
/* Accordion group */
|
|
6
|
+
[data-accordion] {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-direction: column;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/* Accordion item */
|
|
12
|
+
[data-accordion-item] {
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Accordion trigger (button) */
|
|
18
|
+
[data-accordion-trigger] {
|
|
19
|
+
display: flex;
|
|
20
|
+
align-items: center;
|
|
21
|
+
justify-content: space-between;
|
|
22
|
+
width: 100%;
|
|
23
|
+
text-align: left;
|
|
24
|
+
cursor: pointer;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Accordion panel - animations are DEFAULT */
|
|
28
|
+
/* Use aria-hidden instead of [hidden] to avoid Tailwind's display: none !important */
|
|
29
|
+
/* CSS Grid animation for all panels (unless data-no-animation is set) */
|
|
30
|
+
[data-accordion-panel]:not([data-no-animation]),
|
|
31
|
+
[data-collapse-panel]:not([data-no-animation]),
|
|
32
|
+
[data-animated] {
|
|
33
|
+
display: grid;
|
|
34
|
+
grid-template-rows: 0fr;
|
|
35
|
+
transition: grid-template-rows var(--a11y-accordion-duration, 0.3s) var(--a11y-accordion-easing, ease);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
[data-accordion-panel]:not([data-no-animation]):not([aria-hidden="true"]),
|
|
39
|
+
[data-collapse-panel]:not([data-no-animation]):not([aria-hidden="true"]),
|
|
40
|
+
[data-animated]:not([aria-hidden="true"]) {
|
|
41
|
+
grid-template-rows: 1fr;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Inner wrapper must have overflow: hidden */
|
|
45
|
+
[data-accordion-panel]:not([data-no-animation]) > *,
|
|
46
|
+
[data-collapse-panel]:not([data-no-animation]) > *,
|
|
47
|
+
[data-animated] > * {
|
|
48
|
+
grid-row: 1 / span 2;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* No animation variant - simple show/hide */
|
|
53
|
+
[data-accordion-panel][data-no-animation][aria-hidden="true"],
|
|
54
|
+
[data-collapse-panel][data-no-animation][aria-hidden="true"],
|
|
55
|
+
[data-accordion][data-no-animation] [data-accordion-panel][aria-hidden="true"] {
|
|
56
|
+
display: none;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
[data-accordion][data-no-animation] [data-accordion-panel]:not([aria-hidden="true"]),
|
|
60
|
+
[data-collapse-panel][data-no-animation]:not([aria-hidden="true"]) {
|
|
61
|
+
display: block;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Standalone collapse toggle buttons */
|
|
65
|
+
[data-collapse-toggle] {
|
|
66
|
+
cursor: pointer;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/* Controls container */
|
|
70
|
+
[data-accordion-controls] {
|
|
71
|
+
display: flex;
|
|
72
|
+
align-items: center;
|
|
73
|
+
justify-content: flex-end;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Control button (toggle all) */
|
|
77
|
+
[data-accordion-toggle-all] {
|
|
78
|
+
display: inline-flex;
|
|
79
|
+
align-items: center;
|
|
80
|
+
cursor: pointer;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
[data-accordion-toggle-all] svg {
|
|
84
|
+
flex-shrink: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Reduced motion support - disable animations */
|
|
88
|
+
@media (prefers-reduced-motion: reduce) {
|
|
89
|
+
[data-accordion-panel]:not([data-no-animation]),
|
|
90
|
+
[data-collapse-panel]:not([data-no-animation]),
|
|
91
|
+
[data-animated] {
|
|
92
|
+
transition: none !important;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/* Accessible Accordion - Theme Styles */
|
|
2
|
+
/* Obsahuje vizualne nastavenia: farby, velkosti, bordery, radiusy, spacing */
|
|
3
|
+
/* Pre zmenu vzhladu upravte tento subor */
|
|
4
|
+
|
|
5
|
+
/* Accordion group */
|
|
6
|
+
[data-accordion] {
|
|
7
|
+
gap: 0.5rem;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/* Accordion item */
|
|
11
|
+
[data-accordion-item] {
|
|
12
|
+
border: 1px solid #e5e7eb;
|
|
13
|
+
border-radius: 0.5rem;
|
|
14
|
+
background: #fff;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Accordion trigger (button) */
|
|
19
|
+
[data-accordion-trigger] {
|
|
20
|
+
padding: 1rem 1.25rem;
|
|
21
|
+
background: transparent;
|
|
22
|
+
border: none;
|
|
23
|
+
font-size: 1rem;
|
|
24
|
+
font-weight: 500;
|
|
25
|
+
color: #111827;
|
|
26
|
+
gap: 0.75rem;
|
|
27
|
+
transition: background 0.15s ease, color 0.15s ease;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
[data-accordion-trigger]:hover {
|
|
31
|
+
background: #f9fafb;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
[data-accordion-trigger]:focus {
|
|
35
|
+
outline: 2px solid #3b82f6;
|
|
36
|
+
outline-offset: -2px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
[data-accordion-trigger][aria-expanded="true"] {
|
|
40
|
+
background: #f3f4f6;
|
|
41
|
+
color: #3b82f6;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Accordion trigger icon */
|
|
45
|
+
[data-accordion-trigger]::after {
|
|
46
|
+
content: "";
|
|
47
|
+
width: 0.5rem;
|
|
48
|
+
height: 0.5rem;
|
|
49
|
+
border-right: 2px solid currentColor;
|
|
50
|
+
border-bottom: 2px solid currentColor;
|
|
51
|
+
transform: rotate(45deg);
|
|
52
|
+
transition: transform 0.2s ease;
|
|
53
|
+
flex-shrink: 0;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
[data-accordion-trigger][aria-expanded="true"]::after {
|
|
57
|
+
transform: rotate(-135deg);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Accordion panel - padding on content (not on overflow wrapper) */
|
|
61
|
+
[data-accordion-panel] > * > * {
|
|
62
|
+
padding: 1.25rem;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* Standalone toggle button */
|
|
66
|
+
[data-accordion-toggle] {
|
|
67
|
+
padding: 0.625rem 1.25rem;
|
|
68
|
+
background: #3b82f6;
|
|
69
|
+
color: #fff;
|
|
70
|
+
border: none;
|
|
71
|
+
border-radius: 0.375rem;
|
|
72
|
+
font-size: 0.875rem;
|
|
73
|
+
font-weight: 500;
|
|
74
|
+
transition: background 0.15s ease;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
[data-accordion-toggle]:hover {
|
|
78
|
+
background: #2563eb;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
[data-accordion-toggle]:focus {
|
|
82
|
+
outline: 2px solid #3b82f6;
|
|
83
|
+
outline-offset: 2px;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/* Controls container */
|
|
87
|
+
[data-accordion-controls] {
|
|
88
|
+
gap: 0.5rem;
|
|
89
|
+
margin-bottom: 1rem;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
[data-accordion-controls="bottom"] {
|
|
93
|
+
margin-bottom: 0;
|
|
94
|
+
margin-top: 1rem;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/* Control button (toggle all) */
|
|
98
|
+
[data-accordion-toggle-all] {
|
|
99
|
+
padding: 0.5rem 0.875rem;
|
|
100
|
+
background: #f3f4f6;
|
|
101
|
+
border: 1px solid #e5e7eb;
|
|
102
|
+
border-radius: 0.375rem;
|
|
103
|
+
font-size: 0.875rem;
|
|
104
|
+
font-weight: 500;
|
|
105
|
+
color: #374151;
|
|
106
|
+
gap: 0.5rem;
|
|
107
|
+
transition: background 0.15s ease, border-color 0.15s ease;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
[data-accordion-toggle-all]:hover {
|
|
111
|
+
background: #e5e7eb;
|
|
112
|
+
border-color: #d1d5db;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
[data-accordion-toggle-all]:focus {
|
|
116
|
+
outline: 2px solid #3b82f6;
|
|
117
|
+
outline-offset: 2px;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
[data-accordion-toggle-all][aria-expanded="true"] {
|
|
121
|
+
background: #e5e7eb;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* Accordion variants */
|
|
125
|
+
|
|
126
|
+
/* Bordered variant */
|
|
127
|
+
[data-accordion][data-variant="bordered"] [data-accordion-item] {
|
|
128
|
+
border-radius: 0;
|
|
129
|
+
border-left: none;
|
|
130
|
+
border-right: none;
|
|
131
|
+
border-top: none;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
[data-accordion][data-variant="bordered"] [data-accordion-item]:last-child {
|
|
135
|
+
border-bottom: none;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/* Separated variant */
|
|
139
|
+
[data-accordion][data-variant="separated"] {
|
|
140
|
+
gap: 1rem;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
[data-accordion][data-variant="separated"] [data-accordion-item] {
|
|
144
|
+
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/* Compact variant */
|
|
148
|
+
[data-accordion][data-size="compact"] [data-accordion-trigger] {
|
|
149
|
+
padding: 0.75rem 1rem;
|
|
150
|
+
font-size: 0.875rem;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
[data-accordion][data-size="compact"] [data-accordion-panel] > * > * {
|
|
154
|
+
padding: 0 1rem 1rem;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* Large variant */
|
|
158
|
+
[data-accordion][data-size="large"] [data-accordion-trigger] {
|
|
159
|
+
padding: 1.25rem 1.5rem;
|
|
160
|
+
font-size: 1.125rem;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
[data-accordion][data-size="large"] [data-accordion-panel] > * > * {
|
|
164
|
+
padding: 0 1.5rem 1.5rem;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* Dark mode */
|
|
168
|
+
@media (prefers-color-scheme: dark) {
|
|
169
|
+
[data-accordion-item] {
|
|
170
|
+
background: #1f2937;
|
|
171
|
+
border-color: #374151;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
[data-accordion-trigger] {
|
|
175
|
+
color: #f9fafb;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
[data-accordion-trigger]:hover {
|
|
179
|
+
background: #374151;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
[data-accordion-trigger][aria-expanded="true"] {
|
|
183
|
+
background: #374151;
|
|
184
|
+
color: #60a5fa;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
[data-accordion-toggle] {
|
|
188
|
+
background: #3b82f6;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
[data-accordion-toggle]:hover {
|
|
192
|
+
background: #2563eb;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
[data-accordion-toggle-all] {
|
|
196
|
+
background: #374151;
|
|
197
|
+
border-color: #4b5563;
|
|
198
|
+
color: #e5e7eb;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
[data-accordion-toggle-all]:hover {
|
|
202
|
+
background: #4b5563;
|
|
203
|
+
border-color: #6b7280;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
[data-accordion-toggle-all][aria-expanded="true"] {
|
|
207
|
+
background: #4b5563;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/* High contrast mode */
|
|
212
|
+
@media (prefers-contrast: high) {
|
|
213
|
+
[data-accordion-item] {
|
|
214
|
+
border-width: 2px;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
[data-accordion-trigger]:focus {
|
|
218
|
+
outline-width: 3px;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/* Reduced motion support */
|
|
223
|
+
@media (prefers-reduced-motion: reduce) {
|
|
224
|
+
[data-accordion-trigger],
|
|
225
|
+
[data-accordion-trigger]::after,
|
|
226
|
+
[data-accordion-toggle],
|
|
227
|
+
[data-accordion-toggle-all] {
|
|
228
|
+
transition: none !important;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* Responsive */
|
|
233
|
+
@media (max-width: 640px) {
|
|
234
|
+
[data-accordion-trigger] {
|
|
235
|
+
padding: 0.875rem 1rem;
|
|
236
|
+
font-size: 0.9375rem;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
[data-accordion-panel] > * > * {
|
|
240
|
+
padding: 0 1rem 1rem;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
[data-accordion-controls] {
|
|
244
|
+
flex-wrap: wrap;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/* Accessible Dropdown - Core Styles */
|
|
2
|
+
/* Obsahuje iba logiku, positioning, layout a spravanie */
|
|
3
|
+
/* Pre vizualne nastavenia pouzite a11y-dropdown-theme.css */
|
|
4
|
+
/* Používa data atribúty pre základnú funkcionalitu */
|
|
5
|
+
|
|
6
|
+
/* Container */
|
|
7
|
+
[data-dropdown] {
|
|
8
|
+
position: relative;
|
|
9
|
+
display: inline-block;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/* Button */
|
|
13
|
+
[data-dropdown-button] {
|
|
14
|
+
display: inline-flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
[data-dropdown-button]:focus {
|
|
20
|
+
outline-offset: 2px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Button icon/arrow */
|
|
24
|
+
[data-dropdown-arrow] {
|
|
25
|
+
display: inline-block;
|
|
26
|
+
width: 0;
|
|
27
|
+
height: 0;
|
|
28
|
+
border-left: 4px solid transparent;
|
|
29
|
+
border-right: 4px solid transparent;
|
|
30
|
+
border-top: 4px solid currentColor;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
[data-dropdown].is-open [data-dropdown-arrow] {
|
|
34
|
+
transform: rotate(180deg);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Menu - default (no animation) */
|
|
38
|
+
[data-dropdown-menu] {
|
|
39
|
+
position: absolute;
|
|
40
|
+
top: calc(100% + 0.25rem);
|
|
41
|
+
left: 0;
|
|
42
|
+
z-index: 1000;
|
|
43
|
+
min-width: 100%;
|
|
44
|
+
width: max-content;
|
|
45
|
+
max-width: 20rem;
|
|
46
|
+
display: none;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
[data-dropdown-menu].is-open {
|
|
50
|
+
display: block;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* CSS Grid animation is DEFAULT (unless data-no-animation is set) */
|
|
54
|
+
[data-dropdown-menu]:not([data-no-animation]) {
|
|
55
|
+
display: grid;
|
|
56
|
+
grid-template-rows: 0fr;
|
|
57
|
+
opacity: 0;
|
|
58
|
+
visibility: hidden;
|
|
59
|
+
transition: grid-template-rows var(--a11y-dropdown-duration, 0.2s) var(--a11y-dropdown-easing, ease),
|
|
60
|
+
opacity calc(var(--a11y-dropdown-duration, 0.2s) * 0.75) var(--a11y-dropdown-easing, ease),
|
|
61
|
+
visibility 0s var(--a11y-dropdown-duration, 0.2s);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
[data-dropdown-menu]:not([data-no-animation]).is-open {
|
|
65
|
+
grid-template-rows: 1fr;
|
|
66
|
+
opacity: 1;
|
|
67
|
+
visibility: visible;
|
|
68
|
+
transition: grid-template-rows var(--a11y-dropdown-duration, 0.2s) var(--a11y-dropdown-easing, ease),
|
|
69
|
+
opacity calc(var(--a11y-dropdown-duration, 0.2s) * 0.75) var(--a11y-dropdown-easing, ease),
|
|
70
|
+
visibility 0s;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Inner wrapper must have overflow: hidden */
|
|
74
|
+
[data-dropdown-menu]:not([data-no-animation]) > * {
|
|
75
|
+
overflow: hidden;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* No animation variant - simple show/hide */
|
|
79
|
+
[data-dropdown-menu][data-no-animation] {
|
|
80
|
+
display: none;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
[data-dropdown-menu][data-no-animation].is-open {
|
|
84
|
+
display: block;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/* Align menu to right */
|
|
88
|
+
[data-dropdown-menu="right"] {
|
|
89
|
+
left: auto;
|
|
90
|
+
right: 0;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* Menu items */
|
|
94
|
+
[data-dropdown-item] {
|
|
95
|
+
display: block;
|
|
96
|
+
width: 100%;
|
|
97
|
+
text-align: left;
|
|
98
|
+
cursor: pointer;
|
|
99
|
+
text-decoration: none;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
[data-dropdown-item]:focus {
|
|
103
|
+
outline: none;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Divider */
|
|
107
|
+
[data-dropdown-divider] {
|
|
108
|
+
height: 1px;
|
|
109
|
+
border: none;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Disabled item */
|
|
113
|
+
[data-dropdown-item]:disabled,
|
|
114
|
+
[data-dropdown-item][aria-disabled="true"] {
|
|
115
|
+
cursor: not-allowed;
|
|
116
|
+
pointer-events: none;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* Item with icon */
|
|
120
|
+
[data-dropdown-item-icon] {
|
|
121
|
+
display: inline-flex;
|
|
122
|
+
align-items: center;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
[data-dropdown-item-icon] svg,
|
|
126
|
+
[data-dropdown-item-icon] img {
|
|
127
|
+
width: 1rem;
|
|
128
|
+
height: 1rem;
|
|
129
|
+
flex-shrink: 0;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Navigation variant */
|
|
133
|
+
[data-dropdown][data-variant="nav"] [data-dropdown-button]:focus {
|
|
134
|
+
outline-offset: 2px;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* Language switcher variant */
|
|
138
|
+
[data-dropdown][data-variant="language"] [data-dropdown-item] {
|
|
139
|
+
display: flex;
|
|
140
|
+
align-items: center;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
[data-dropdown][data-variant="language"] [data-dropdown-item-flag] {
|
|
144
|
+
width: 1.25rem;
|
|
145
|
+
height: 1.25rem;
|
|
146
|
+
object-fit: cover;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* Responsive */
|
|
150
|
+
@media (max-width: 640px) {
|
|
151
|
+
[data-dropdown-menu] {
|
|
152
|
+
min-width: 12rem;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* High contrast mode support */
|
|
157
|
+
@media (prefers-contrast: high) {
|
|
158
|
+
[data-dropdown-item]:focus {
|
|
159
|
+
outline-offset: -2px;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/* Reduced motion support - disable animations */
|
|
164
|
+
@media (prefers-reduced-motion: reduce) {
|
|
165
|
+
[data-dropdown-menu]:not([data-no-animation]),
|
|
166
|
+
[data-dropdown-menu]:not([data-no-animation]).is-open {
|
|
167
|
+
transition: none !important;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/* Accessible Dropdown - Theme Styles */
|
|
2
|
+
/* Obsahuje vizualne nastavenia: farby, velkosti, bordery, radiusy, spacing */
|
|
3
|
+
/* Pre zmenu vzhladu upravte tento subor */
|
|
4
|
+
|
|
5
|
+
/* Button */
|
|
6
|
+
[data-dropdown-button] {
|
|
7
|
+
gap: 0.5rem;
|
|
8
|
+
padding: 0.625rem 1rem;
|
|
9
|
+
background: #fff;
|
|
10
|
+
border: 1px solid #d1d5db;
|
|
11
|
+
border-radius: 0.375rem;
|
|
12
|
+
font-size: 0.875rem;
|
|
13
|
+
font-weight: 500;
|
|
14
|
+
color: #374151;
|
|
15
|
+
transition: all 0.15s ease;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
[data-dropdown-button]:hover {
|
|
19
|
+
background: #f9fafb;
|
|
20
|
+
border-color: #9ca3af;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
[data-dropdown-button]:focus {
|
|
24
|
+
outline: 2px solid #3b82f6;
|
|
25
|
+
border-color: #3b82f6;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
[data-dropdown-button]:active {
|
|
29
|
+
background: #f3f4f6;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* Button icon/arrow */
|
|
33
|
+
[data-dropdown-arrow] {
|
|
34
|
+
margin-left: 0.25rem;
|
|
35
|
+
transition: transform 0.2s ease;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* Menu */
|
|
39
|
+
[data-dropdown-menu] {
|
|
40
|
+
background: #fff;
|
|
41
|
+
border: 1px solid #e5e7eb;
|
|
42
|
+
border-radius: 0.375rem;
|
|
43
|
+
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1),
|
|
44
|
+
0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
|
45
|
+
transition: opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Menu items wrapper - padding on content (not on overflow wrapper) */
|
|
49
|
+
[data-dropdown-menu] > * > * {
|
|
50
|
+
padding: 0.25rem 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Menu items */
|
|
54
|
+
[data-dropdown-item] {
|
|
55
|
+
padding: 0.5rem 1rem;
|
|
56
|
+
font-size: 0.875rem;
|
|
57
|
+
color: #374151;
|
|
58
|
+
background: transparent;
|
|
59
|
+
border: none;
|
|
60
|
+
transition: background-color 0.1s ease;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[data-dropdown-item]:hover,
|
|
64
|
+
[data-dropdown-item]:focus {
|
|
65
|
+
background: #f3f4f6;
|
|
66
|
+
color: #111827;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
[data-dropdown-item]:active {
|
|
70
|
+
background: #e5e7eb;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Divider */
|
|
74
|
+
[data-dropdown-divider] {
|
|
75
|
+
margin: 0.25rem 0;
|
|
76
|
+
background: #e5e7eb;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Disabled item */
|
|
80
|
+
[data-dropdown-item]:disabled,
|
|
81
|
+
[data-dropdown-item][aria-disabled="true"] {
|
|
82
|
+
color: #9ca3af;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Item with icon */
|
|
86
|
+
[data-dropdown-item]-icon {
|
|
87
|
+
gap: 0.75rem;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Navigation variant */
|
|
91
|
+
[data-dropdown][data-variant="nav"] [data-dropdown-button] {
|
|
92
|
+
background: transparent;
|
|
93
|
+
border: none;
|
|
94
|
+
padding: 0.5rem 0.75rem;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
[data-dropdown][data-variant="nav"] [data-dropdown-button]:hover {
|
|
98
|
+
background: rgba(0, 0, 0, 0.05);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
[data-dropdown][data-variant="nav"] [data-dropdown-button]:focus {
|
|
102
|
+
outline: 2px solid currentColor;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Language switcher variant */
|
|
106
|
+
[data-dropdown][data-variant="language"] [data-dropdown-button] {
|
|
107
|
+
min-width: 4rem;
|
|
108
|
+
justify-content: center;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
[data-dropdown][data-variant="language"] [data-dropdown-item] {
|
|
112
|
+
gap: 0.5rem;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
[data-dropdown][data-variant="language"] [data-dropdown-item-flag] {
|
|
116
|
+
border-radius: 0.125rem;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/* High contrast mode support */
|
|
120
|
+
@media (prefers-contrast: high) {
|
|
121
|
+
[data-dropdown-button] {
|
|
122
|
+
border-width: 2px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
[data-dropdown-item]:focus {
|
|
126
|
+
outline: 2px solid currentColor;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/* Reduced motion support */
|
|
131
|
+
@media (prefers-reduced-motion: reduce) {
|
|
132
|
+
[data-dropdown-menu],
|
|
133
|
+
[data-dropdown-arrow],
|
|
134
|
+
[data-dropdown-button],
|
|
135
|
+
[data-dropdown-item] {
|
|
136
|
+
transition: none;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* Dark mode support */
|
|
141
|
+
@media (prefers-color-scheme: dark) {
|
|
142
|
+
[data-dropdown-button] {
|
|
143
|
+
background: #1f2937;
|
|
144
|
+
border-color: #374151;
|
|
145
|
+
color: #f9fafb;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
[data-dropdown-button]:hover {
|
|
149
|
+
background: #374151;
|
|
150
|
+
border-color: #4b5563;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
[data-dropdown-menu] {
|
|
154
|
+
background: #1f2937;
|
|
155
|
+
border-color: #374151;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
[data-dropdown-item] {
|
|
159
|
+
color: #f9fafb;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
[data-dropdown-item]:hover,
|
|
163
|
+
[data-dropdown-item]:focus {
|
|
164
|
+
background: #374151;
|
|
165
|
+
color: #fff;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
[data-dropdown-item]:active {
|
|
169
|
+
background: #4b5563;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
[data-dropdown-divider] {
|
|
173
|
+
background: #374151;
|
|
174
|
+
}
|
|
175
|
+
}
|