weg-shared-layout 0.0.23 → 0.0.24

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