weg-shared-layout 0.0.40 → 0.0.42

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 (37) hide show
  1. package/LICENSE +21 -21
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/weg-footer_2.cjs.entry.js +449 -32
  4. package/dist/cjs/weg-shared-layout.cjs.js +1 -1
  5. package/dist/collection/components/weg-footer/icons/instagram.svg +5 -5
  6. package/dist/collection/components/weg-footer/icons/linkedin.svg +3 -3
  7. package/dist/collection/components/weg-footer/icons/tiktok.svg +3 -3
  8. package/dist/collection/components/weg-footer/icons/youtube.svg +4 -4
  9. package/dist/collection/components/weg-footer/weg-footer.css +263 -263
  10. package/dist/collection/components/weg-footer/weg-footer.js +2 -2
  11. package/dist/collection/components/weg-header/weg-header.css +533 -483
  12. package/dist/collection/components/weg-header/weg-header.js +348 -32
  13. package/dist/collection/styles/shared.css +104 -103
  14. package/dist/collection/utils/nav-active.js +121 -0
  15. package/dist/components/weg-footer.js +1 -1
  16. package/dist/components/weg-header.js +1 -1
  17. package/dist/esm/loader.js +1 -1
  18. package/dist/esm/weg-footer_2.entry.js +449 -32
  19. package/dist/esm/weg-shared-layout.js +1 -1
  20. package/dist/types/components/weg-header/weg-header.d.ts +37 -0
  21. package/dist/types/components.d.ts +9 -0
  22. package/dist/types/utils/nav-active.d.ts +20 -0
  23. package/dist/weg-shared-layout/p-877ccc54.entry.js +1 -0
  24. package/dist/weg-shared-layout/weg-shared-layout.esm.js +1 -1
  25. package/docs/README.md +51 -49
  26. package/docs/angular.md +451 -400
  27. package/docs/nextjs.md +312 -302
  28. package/docs/publishing.md +65 -65
  29. package/docs/react.md +287 -257
  30. package/docs/vanilla.md +155 -124
  31. package/package.json +81 -81
  32. package/readme.md +108 -97
  33. package/src/constants/breakpoints.ts +7 -7
  34. package/src/styles/container.css +60 -60
  35. package/dist/weg-shared-layout/p-6f83b24a.entry.js +0 -1
  36. /package/dist/types/Users/{tan/Documents/code → rakin/Documents/WEG/repos}/weg-shared-layout/.stencil/test-utils/axe.d.ts +0 -0
  37. /package/dist/types/Users/{tan/Documents/code → rakin/Documents/WEG/repos}/weg-shared-layout/.stencil/test-utils/viewport.d.ts +0 -0
@@ -1,483 +1,533 @@
1
- /**
2
- * Breakpoint tokens (mobile-first min-width).
3
- *
4
- * - `@custom-media` names: e.g. `@media (--weg-md)` applies from 960px up.
5
- * Compiled by PostCSS in stencil.config.ts.
6
- * - `--weg-breakpoint-*` variables: use in property values, e.g. `max-width: var(--weg-breakpoint-md)`.
7
- *
8
- * Import this file in component stylesheets, or rely on shared.css which already imports it.
9
- */
10
-
11
- :host {
12
- --weg-breakpoint-sm: 640px;
13
- --weg-breakpoint-md: 960px;
14
- --weg-breakpoint-lg: 1280px;
15
- --weg-breakpoint-xl: 1440px;
16
- }
17
-
18
-
19
- .header {
20
- width: 100%;
21
- border-bottom: 2px solid var(--weg-color-accent);
22
- background: #ffffff;
23
- color: #0f172a;
24
- font-family: var(--weg-font-family);
25
- }
26
-
27
- @media (width >= 960px) {
28
- .header {
29
- border-bottom-width: 0.25rem;
30
- }
31
- }
32
-
33
- :host {
34
- position: relative;
35
- z-index: 20;
36
- }
37
-
38
- .header--menu-open {
39
- position: fixed;
40
- inset: 0;
41
- z-index: 1000;
42
- display: flex;
43
- flex-direction: column;
44
- overflow: hidden;
45
- }
46
-
47
- .header--menu-open .header-inner {
48
- flex: 1 1 auto;
49
- flex-wrap: wrap;
50
- align-content: flex-start;
51
- min-height: 0;
52
- }
53
-
54
- .header--menu-open .main-nav-panel {
55
- display: block;
56
- flex: 1 1 100%;
57
- width: 100%;
58
- min-height: 0;
59
- overflow-y: auto;
60
- border-top: 1px solid #d8d4f7;
61
- }
62
-
63
- @media (width >= 960px) {
64
- .header--menu-open {
65
- position: static;
66
- inset: auto;
67
- z-index: auto;
68
- display: block;
69
- overflow: visible;
70
- }
71
-
72
- .header--menu-open .header-inner {
73
- flex: unset;
74
- flex-wrap: nowrap;
75
- align-content: unset;
76
- min-height: unset;
77
- }
78
- }
79
-
80
- .logo-link {
81
- display: inline-flex;
82
- align-items: center;
83
- text-decoration: none;
84
- outline: none;
85
- }
86
-
87
- .logo-link:focus-visible {
88
- outline: 2px solid var(--weg-color-accent);
89
- outline-offset: 4px;
90
- border-radius: 4px;
91
- }
92
-
93
- .logo {
94
- height: 2.5rem;
95
- width: auto;
96
- }
97
-
98
- @media (width >= 960px) {
99
- .logo {
100
- height: 3rem;
101
- }
102
- }
103
-
104
- @media (width >= 1280px) {
105
- .logo {
106
- height: 5rem;
107
- }
108
- }
109
-
110
- .header-inner {
111
- display: flex;
112
- width: 100%;
113
- min-width: 0;
114
- align-items: center;
115
- justify-content: space-between;
116
- gap: 0.75rem;
117
- padding-block: 0.75rem;
118
- padding-inline: var(--weg-container-padding-inline);
119
- }
120
-
121
- @media (width >= 960px) {
122
- .header-inner {
123
- flex-wrap: nowrap;
124
- gap: 1.5rem;
125
- padding-block: 1.25rem;
126
- }
127
- }
128
-
129
- @media (width >= 1440px) {
130
- .header-inner {
131
- padding-block: 1.75rem;
132
- }
133
- }
134
-
135
- .header-inner .logo-link {
136
- flex: 1 1 auto;
137
- min-width: 0;
138
- justify-content: center;
139
- }
140
-
141
- @media (width >= 960px) {
142
- .header-inner .logo-link {
143
- flex: 0 0 auto;
144
- justify-content: flex-start;
145
- }
146
- }
147
-
148
- .header-inner .logo {
149
- max-width: 100%;
150
- }
151
-
152
- .header-actions {
153
- display: flex;
154
- align-items: center;
155
- flex-shrink: 0;
156
- }
157
-
158
- @media (width >= 960px) {
159
- .header-actions {
160
- display: none;
161
- }
162
- }
163
-
164
- .main-nav-panel {
165
- display: none;
166
- margin-inline: -0.5rem;
167
- }
168
-
169
- @media (width >= 960px) {
170
- .main-nav-panel {
171
- display: flex;
172
- flex: 1 1 auto;
173
- width: auto;
174
- min-width: 0;
175
- justify-content: flex-end;
176
- overflow: visible;
177
- border-top: none;
178
- }
179
- }
180
-
181
- .main-nav {
182
- padding: 0 1rem 1.5rem;
183
- }
184
-
185
- @media (width >= 960px) {
186
- .main-nav {
187
- display: flex;
188
- align-items: center;
189
- justify-content: flex-end;
190
- flex-wrap: wrap;
191
- gap: 1rem;
192
- padding: 0;
193
- }
194
- }
195
-
196
- .main-nav__list {
197
- list-style: none;
198
- margin: 0;
199
- padding: 0;
200
- }
201
-
202
- @media (width >= 960px) {
203
- .main-nav__list {
204
- display: flex;
205
- align-items: center;
206
- flex-wrap: wrap;
207
- gap: 0.5rem;
208
- }
209
- }
210
-
211
- @media (width >= 1280px) {
212
- .main-nav__list {
213
- gap: 1.5rem;
214
- }
215
- }
216
-
217
- .main-nav__item {
218
- border-bottom: 1px solid #d8d4f7;
219
- }
220
-
221
- @media (width >= 960px) {
222
- .main-nav__item {
223
- border-bottom: none;
224
- }
225
- }
226
-
227
- .main-nav__item--dropdown {
228
- position: static;
229
- }
230
-
231
- .nav-dropdown {
232
- position: relative;
233
- }
234
-
235
- .nav-link {
236
- display: block;
237
- width: 100%;
238
- padding: 1rem 0;
239
- font-weight: 600;
240
- color: inherit;
241
- text-decoration: none;
242
- outline: none;
243
- }
244
-
245
- .nav-link:hover {
246
- opacity: 0.85;
247
- }
248
-
249
- .nav-link:focus-visible {
250
- outline: 2px solid var(--weg-color-accent);
251
- outline-offset: 2px;
252
- border-radius: 4px;
253
- }
254
-
255
- .nav-dropdown__trigger {
256
- display: flex;
257
- align-items: center;
258
- justify-content: space-between;
259
- gap: 0.75rem;
260
- width: 100%;
261
- padding: 1rem 0;
262
- border: none;
263
- background: transparent;
264
- font: inherit;
265
- font-weight: 600;
266
- color: inherit;
267
- text-align: left;
268
- cursor: pointer;
269
- outline: none;
270
- }
271
-
272
- .nav-dropdown__trigger:hover {
273
- opacity: 0.85;
274
- }
275
-
276
- .nav-dropdown__trigger:focus-visible {
277
- outline: 2px solid var(--weg-color-accent);
278
- outline-offset: 2px;
279
- border-radius: 4px;
280
- }
281
-
282
- .nav-dropdown__trigger--open {
283
- background: transparent;
284
- }
285
-
286
- .toggle-icon {
287
- display: inline-flex;
288
- align-items: center;
289
- justify-content: center;
290
- width: 1.5rem;
291
- height: 1.5rem;
292
- border-radius: 999rem;
293
- background: #312e81;
294
- color: #ffffff;
295
- flex-shrink: 0;
296
- }
297
-
298
- .nav-dropdown__panel {
299
- padding: 0 0 0.75rem;
300
- }
301
-
302
- @media (width >= 960px) {
303
- .nav-dropdown__panel {
304
- position: absolute;
305
- top: calc(100% + 0.5rem);
306
- left: 0;
307
- z-index: 500;
308
- min-width: 17.5rem;
309
- padding: 0.75rem 0 0.75rem 0.75rem;
310
- border: 1px solid #e2e8f0;
311
- border-radius: 0.5rem;
312
- background: #f8fafc;
313
- box-shadow: 0 0.25rem 1rem rgba(15, 23, 42, 0.08);
314
- }
315
-
316
- .nav-dropdown__panel::before {
317
- content: '';
318
- position: absolute;
319
- top: -0.5rem;
320
- left: 0;
321
- right: 0;
322
- height: 0.5rem;
323
- }
324
- }
325
-
326
- .nav-dropdown__accent {
327
- border-left: 0.25rem solid var(--weg-color-accent);
328
- padding-left: 0.75rem;
329
- }
330
-
331
- .nav-dropdown__links {
332
- display: flex;
333
- flex-direction: column;
334
- gap: 0.25rem;
335
- }
336
-
337
- .nav-dropdown__link {
338
- display: block;
339
- padding: 0.625rem 0;
340
- font-weight: 400;
341
- color: inherit;
342
- text-decoration: none;
343
- outline: none;
344
- }
345
-
346
- .nav-dropdown__link:hover {
347
- opacity: 0.85;
348
- }
349
-
350
- .nav-dropdown__link:focus-visible {
351
- outline: 0.125rem solid var(--weg-color-accent);
352
- outline-offset: 0.125rem;
353
- border-radius: 0.25rem;
354
- }
355
-
356
- @media (width >= 960px) {
357
- .nav-dropdown__link {
358
- padding: 0.5rem;
359
- margin-right: 0.75rem;
360
- border-radius: 0.5rem;
361
- font-weight: 600;
362
- }
363
-
364
- .nav-dropdown__link:hover,
365
- .nav-dropdown__link:focus-visible {
366
- background: #cdcff8;
367
- opacity: 1;
368
- }
369
- }
370
-
371
- @media (width >= 1280px) {
372
- .nav-dropdown__link {
373
- padding: 0.5rem 0.75rem;
374
- }
375
- }
376
-
377
- .main-nav__item--auth > a {
378
- display: flex;
379
- align-items: center;
380
- gap: 0.5rem;
381
- width: 100%;
382
- padding: 1rem 0;
383
- }
384
-
385
- @media (width >= 960px) {
386
- .nav-link,
387
- .nav-dropdown__trigger,
388
- .main-nav__item--auth > a {
389
- display: inline-flex;
390
- align-items: center;
391
- width: auto;
392
- padding: 0.5rem;
393
- border-radius: 0.5rem;
394
- }
395
-
396
- .nav-dropdown__trigger {
397
- gap: 0.5rem;
398
- cursor: pointer;
399
- }
400
-
401
- .nav-dropdown__trigger--open {
402
- background: #f1f5f9;
403
- }
404
- }
405
-
406
- @media (width >= 1280px) {
407
- .main-nav {
408
- font-size: 1.25rem;
409
- }
410
-
411
- .main-nav__item--auth > a {
412
- padding: 0.5rem 0.75rem;
413
- }
414
- }
415
-
416
- .sign-in-link,
417
- .sign-out-link,
418
- .auth-button {
419
- display: inline-flex;
420
- align-items: center;
421
- gap: 0.5rem;
422
- font-weight: 600;
423
- color: inherit;
424
- text-decoration: none;
425
- outline: none;
426
- }
427
-
428
- .auth-button {
429
- padding: 0;
430
- border: none;
431
- background: transparent;
432
- font: inherit;
433
- cursor: pointer;
434
- }
435
-
436
- .sign-in-link:hover,
437
- .sign-out-link:hover,
438
- .auth-button:hover {
439
- opacity: 0.85;
440
- }
441
-
442
- .sign-in-link:focus-visible,
443
- .sign-out-link:focus-visible,
444
- .auth-button:focus-visible {
445
- outline: 2px solid var(--weg-color-accent);
446
- outline-offset: 4px;
447
- border-radius: 4px;
448
- }
449
-
450
- .icon-button {
451
- display: inline-flex;
452
- align-items: center;
453
- justify-content: center;
454
- width: 2.5rem;
455
- height: 2.5rem;
456
- padding: 0;
457
- border: none;
458
- border-radius: 0.5rem;
459
- background: transparent;
460
- color: inherit;
461
- cursor: pointer;
462
- text-decoration: none;
463
- outline: none;
464
- }
465
-
466
- .icon-button:hover {
467
- background: #f1f5f9;
468
- }
469
-
470
- .icon-button:focus-visible {
471
- outline: 2px solid var(--weg-color-accent);
472
- outline-offset: 2px;
473
- }
474
-
475
- .menu-toggle {
476
- flex-shrink: 0;
477
- }
478
-
479
- @media (width >= 960px) {
480
- .menu-toggle {
481
- display: none;
482
- }
483
- }
1
+ /**
2
+ * Breakpoint tokens (mobile-first min-width).
3
+ *
4
+ * - `@custom-media` names: e.g. `@media (--weg-md)` applies from 960px up.
5
+ * Compiled by PostCSS in stencil.config.ts.
6
+ * - `--weg-breakpoint-*` variables: use in property values, e.g. `max-width: var(--weg-breakpoint-md)`.
7
+ *
8
+ * Import this file in component stylesheets, or rely on shared.css which already imports it.
9
+ */
10
+
11
+ :host {
12
+ --weg-breakpoint-sm: 640px;
13
+ --weg-breakpoint-md: 960px;
14
+ --weg-breakpoint-lg: 1280px;
15
+ --weg-breakpoint-xl: 1440px;
16
+ }
17
+
18
+
19
+ .header {
20
+ width: 100%;
21
+ border-bottom: 2px solid var(--weg-color-accent);
22
+ background: #ffffff;
23
+ color: #0f172a;
24
+ font-family: var(--weg-font-family);
25
+ }
26
+
27
+ @media (width >= 960px) {
28
+ .header {
29
+ border-bottom-width: 0.25rem;
30
+ }
31
+ }
32
+
33
+ :host {
34
+ position: relative;
35
+ z-index: 20;
36
+ display: block;
37
+ height: var(--weg-header-height, auto);
38
+ }
39
+
40
+ .header--fixed {
41
+ position: fixed;
42
+ top: 0;
43
+ left: 0;
44
+ right: 0;
45
+ z-index: 20;
46
+ transform: translateY(0);
47
+ transition: transform 0.25s ease;
48
+ }
49
+
50
+ .header--fixed.header--hidden {
51
+ transform: translateY(-100%);
52
+ }
53
+
54
+ @media (prefers-reduced-motion: reduce) {
55
+ .header--fixed {
56
+ transition: none;
57
+ }
58
+ }
59
+
60
+ .header--menu-open {
61
+ position: fixed;
62
+ inset: 0;
63
+ z-index: 1000;
64
+ display: flex;
65
+ flex-direction: column;
66
+ overflow: hidden;
67
+ }
68
+
69
+ .header--menu-open .header-inner {
70
+ flex: 1 1 auto;
71
+ flex-wrap: wrap;
72
+ align-content: flex-start;
73
+ min-height: 0;
74
+ }
75
+
76
+ .header--menu-open .main-nav-panel {
77
+ display: block;
78
+ flex: 1 1 100%;
79
+ width: 100%;
80
+ min-height: 0;
81
+ overflow-y: auto;
82
+ border-top: 1px solid #d8d4f7;
83
+ }
84
+
85
+ @media (width >= 960px) {
86
+ .header--menu-open {
87
+ position: static;
88
+ inset: auto;
89
+ z-index: auto;
90
+ display: block;
91
+ overflow: visible;
92
+ }
93
+
94
+ .header--menu-open .header-inner {
95
+ flex: unset;
96
+ flex-wrap: nowrap;
97
+ align-content: unset;
98
+ min-height: unset;
99
+ }
100
+ }
101
+
102
+ .logo-link {
103
+ display: inline-flex;
104
+ align-items: center;
105
+ text-decoration: none;
106
+ outline: none;
107
+ }
108
+
109
+ .logo-link:focus-visible {
110
+ outline: 2px solid var(--weg-color-accent);
111
+ outline-offset: 4px;
112
+ border-radius: 4px;
113
+ }
114
+
115
+ .logo {
116
+ height: 2.5rem;
117
+ width: auto;
118
+ }
119
+
120
+ @media (width >= 960px) {
121
+ .logo {
122
+ height: 3rem;
123
+ }
124
+ }
125
+
126
+ @media (width >= 1280px) {
127
+ .logo {
128
+ height: 5rem;
129
+ }
130
+ }
131
+
132
+ .header-inner {
133
+ display: flex;
134
+ width: 100%;
135
+ min-width: 0;
136
+ align-items: center;
137
+ justify-content: space-between;
138
+ gap: 0.75rem;
139
+ padding-block: 0.75rem;
140
+ padding-inline: var(--weg-container-padding-inline);
141
+ }
142
+
143
+ @media (width >= 960px) {
144
+ .header-inner {
145
+ flex-wrap: nowrap;
146
+ gap: 1.5rem;
147
+ padding-block: 1.25rem;
148
+ }
149
+ }
150
+
151
+ @media (width >= 1440px) {
152
+ .header-inner {
153
+ padding-block: 1.75rem;
154
+ }
155
+ }
156
+
157
+ .header-inner .logo-link {
158
+ flex: 1 1 auto;
159
+ min-width: 0;
160
+ justify-content: center;
161
+ }
162
+
163
+ @media (width >= 960px) {
164
+ .header-inner .logo-link {
165
+ flex: 0 0 auto;
166
+ justify-content: flex-start;
167
+ }
168
+ }
169
+
170
+ .header-inner .logo {
171
+ max-width: 100%;
172
+ }
173
+
174
+ .header-actions {
175
+ display: flex;
176
+ align-items: center;
177
+ flex-shrink: 0;
178
+ }
179
+
180
+ @media (width >= 960px) {
181
+ .header-actions {
182
+ display: none;
183
+ }
184
+ }
185
+
186
+ .main-nav-panel {
187
+ display: none;
188
+ margin-inline: -0.5rem;
189
+ }
190
+
191
+ @media (width >= 960px) {
192
+ .main-nav-panel {
193
+ display: flex;
194
+ flex: 1 1 auto;
195
+ width: auto;
196
+ min-width: 0;
197
+ justify-content: flex-end;
198
+ overflow: visible;
199
+ border-top: none;
200
+ }
201
+ }
202
+
203
+ .main-nav {
204
+ padding: 0 1rem 1.5rem;
205
+ }
206
+
207
+ @media (width >= 960px) {
208
+ .main-nav {
209
+ display: flex;
210
+ align-items: center;
211
+ justify-content: flex-end;
212
+ flex-wrap: wrap;
213
+ gap: 1rem;
214
+ padding: 0;
215
+ }
216
+ }
217
+
218
+ .main-nav__list {
219
+ list-style: none;
220
+ margin: 0;
221
+ padding: 0;
222
+ }
223
+
224
+ @media (width >= 960px) {
225
+ .main-nav__list {
226
+ display: flex;
227
+ align-items: center;
228
+ flex-wrap: wrap;
229
+ gap: 0.5rem;
230
+ }
231
+ }
232
+
233
+ @media (width >= 1280px) {
234
+ .main-nav__list {
235
+ gap: 1.5rem;
236
+ }
237
+ }
238
+
239
+ .main-nav__item {
240
+ border-bottom: 1px solid #d8d4f7;
241
+ }
242
+
243
+ @media (width >= 960px) {
244
+ .main-nav__item {
245
+ border-bottom: none;
246
+ }
247
+ }
248
+
249
+ .main-nav__item--dropdown {
250
+ position: static;
251
+ }
252
+
253
+ .nav-dropdown {
254
+ position: relative;
255
+ }
256
+
257
+ .nav-link {
258
+ display: block;
259
+ width: 100%;
260
+ padding: 1rem 0;
261
+ font-weight: 600;
262
+ color: inherit;
263
+ text-decoration: none;
264
+ outline: none;
265
+ }
266
+
267
+ .nav-link:hover {
268
+ opacity: 0.85;
269
+ }
270
+
271
+ .nav-link:focus-visible {
272
+ outline: 2px solid var(--weg-color-accent);
273
+ outline-offset: 2px;
274
+ border-radius: 4px;
275
+ }
276
+
277
+ .nav-link--active {
278
+ background: var(--weg-purple-200);
279
+ }
280
+
281
+ .nav-dropdown__trigger {
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: space-between;
285
+ gap: 0.75rem;
286
+ width: 100%;
287
+ padding: 1rem 0;
288
+ border: none;
289
+ background: transparent;
290
+ font: inherit;
291
+ font-weight: 600;
292
+ color: inherit;
293
+ text-align: left;
294
+ cursor: pointer;
295
+ outline: none;
296
+ }
297
+
298
+ .nav-dropdown__trigger:hover {
299
+ opacity: 0.85;
300
+ }
301
+
302
+ .nav-dropdown__trigger:focus-visible {
303
+ outline: 2px solid var(--weg-color-accent);
304
+ outline-offset: 2px;
305
+ border-radius: 4px;
306
+ }
307
+
308
+ .nav-dropdown__trigger--open {
309
+ background: transparent;
310
+ }
311
+
312
+ .nav-dropdown__trigger--active {
313
+ background: var(--weg-purple-200);
314
+ }
315
+
316
+ .toggle-icon {
317
+ display: inline-flex;
318
+ align-items: center;
319
+ justify-content: center;
320
+ width: 1.5rem;
321
+ height: 1.5rem;
322
+ border-radius: 999rem;
323
+ background: #312e81;
324
+ color: #ffffff;
325
+ flex-shrink: 0;
326
+ }
327
+
328
+ .nav-dropdown__panel {
329
+ padding: 0 0 0.75rem;
330
+ }
331
+
332
+ @media (width >= 960px) {
333
+ .nav-dropdown__panel {
334
+ position: absolute;
335
+ top: calc(100% + 0.5rem);
336
+ left: 0;
337
+ z-index: 500;
338
+ min-width: 17.5rem;
339
+ padding: 0.75rem 0 0.75rem 0.75rem;
340
+ border: 1px solid #e2e8f0;
341
+ border-radius: 0.5rem;
342
+ background: #f8fafc;
343
+ box-shadow: 0 0.25rem 1rem rgba(15, 23, 42, 0.08);
344
+ }
345
+
346
+ .nav-dropdown__panel::before {
347
+ content: '';
348
+ position: absolute;
349
+ top: -0.5rem;
350
+ left: 0;
351
+ right: 0;
352
+ height: 0.5rem;
353
+ }
354
+ }
355
+
356
+ .nav-dropdown__accent {
357
+ border-left: 0.25rem solid var(--weg-color-accent);
358
+ padding-left: 0.75rem;
359
+ }
360
+
361
+ .nav-dropdown__links {
362
+ display: flex;
363
+ flex-direction: column;
364
+ gap: 0.25rem;
365
+ list-style: none;
366
+ margin: 0;
367
+ padding: 0;
368
+ }
369
+
370
+ .nav-dropdown__link {
371
+ display: block;
372
+ padding: 0.625rem 0;
373
+ font-weight: 400;
374
+ color: inherit;
375
+ text-decoration: none;
376
+ outline: none;
377
+ }
378
+
379
+ .nav-dropdown__link:hover {
380
+ opacity: 0.85;
381
+ }
382
+
383
+ .nav-dropdown__link:focus-visible {
384
+ outline: 0.125rem solid var(--weg-color-accent);
385
+ outline-offset: 0.125rem;
386
+ border-radius: 0.25rem;
387
+ }
388
+
389
+ .nav-dropdown__link--active {
390
+ background: var(--weg-purple-200);
391
+ }
392
+
393
+ @media (width >= 960px) {
394
+ .nav-dropdown__link {
395
+ padding: 0.5rem;
396
+ margin-right: 0.75rem;
397
+ border-radius: 0.5rem;
398
+ font-weight: 600;
399
+ }
400
+
401
+ .nav-dropdown__link:hover,
402
+ .nav-dropdown__link:focus-visible {
403
+ background: var(--weg-purple-200);
404
+ opacity: 1;
405
+ }
406
+
407
+ .nav-dropdown__link--active {
408
+ opacity: 1;
409
+ }
410
+ }
411
+
412
+ @media (width >= 1280px) {
413
+ .nav-dropdown__link {
414
+ padding: 0.5rem 0.75rem;
415
+ }
416
+ }
417
+
418
+ .main-nav__item--auth > a {
419
+ display: flex;
420
+ align-items: center;
421
+ gap: 0.5rem;
422
+ width: 100%;
423
+ padding: 1rem 0;
424
+ }
425
+
426
+ @media (width >= 960px) {
427
+ .nav-link,
428
+ .nav-dropdown__trigger,
429
+ .main-nav__item--auth > a {
430
+ display: inline-flex;
431
+ align-items: center;
432
+ width: auto;
433
+ padding: 0.5rem;
434
+ border-radius: 0.5rem;
435
+ }
436
+
437
+ .nav-link--active,
438
+ .main-nav__item--auth > a.nav-link--active {
439
+ background: var(--weg-purple-200);
440
+ }
441
+
442
+ .nav-dropdown__trigger {
443
+ gap: 0.5rem;
444
+ cursor: pointer;
445
+ }
446
+
447
+ .nav-dropdown__trigger--open {
448
+ background: #f1f5f9;
449
+ }
450
+
451
+ .nav-dropdown__trigger--active {
452
+ background: var(--weg-purple-200);
453
+ }
454
+ }
455
+
456
+ @media (width >= 1280px) {
457
+ .main-nav {
458
+ font-size: 1.25rem;
459
+ }
460
+
461
+ .main-nav__item--auth > a {
462
+ padding: 0.5rem 0.75rem;
463
+ }
464
+ }
465
+
466
+ .sign-in-link,
467
+ .sign-out-link,
468
+ .auth-button {
469
+ display: inline-flex;
470
+ align-items: center;
471
+ gap: 0.5rem;
472
+ font-weight: 600;
473
+ color: inherit;
474
+ text-decoration: none;
475
+ outline: none;
476
+ }
477
+
478
+ .auth-button {
479
+ padding: 0;
480
+ border: none;
481
+ background: transparent;
482
+ font: inherit;
483
+ cursor: pointer;
484
+ }
485
+
486
+ .sign-in-link:hover,
487
+ .sign-out-link:hover,
488
+ .auth-button:hover {
489
+ opacity: 0.85;
490
+ }
491
+
492
+ .sign-in-link:focus-visible,
493
+ .sign-out-link:focus-visible,
494
+ .auth-button:focus-visible {
495
+ outline: 2px solid var(--weg-color-accent);
496
+ outline-offset: 4px;
497
+ border-radius: 4px;
498
+ }
499
+
500
+ .icon-button {
501
+ display: inline-flex;
502
+ align-items: center;
503
+ justify-content: center;
504
+ width: 2.5rem;
505
+ height: 2.5rem;
506
+ padding: 0;
507
+ border: none;
508
+ border-radius: 0.5rem;
509
+ background: transparent;
510
+ color: inherit;
511
+ cursor: pointer;
512
+ text-decoration: none;
513
+ outline: none;
514
+ }
515
+
516
+ .icon-button:hover {
517
+ background: #f1f5f9;
518
+ }
519
+
520
+ .icon-button:focus-visible {
521
+ outline: 2px solid var(--weg-color-accent);
522
+ outline-offset: 2px;
523
+ }
524
+
525
+ .menu-toggle {
526
+ flex-shrink: 0;
527
+ }
528
+
529
+ @media (width >= 960px) {
530
+ .menu-toggle {
531
+ display: none;
532
+ }
533
+ }