@internetarchive/ia-topnav 1.4.0 → 1.4.1-alpha-webdev8259.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.
Files changed (53) hide show
  1. package/.prettierignore +1 -1
  2. package/LICENSE +661 -661
  3. package/README.md +147 -147
  4. package/demo/index.html +28 -28
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/src/data/menus.js.map +1 -1
  8. package/dist/src/dropdown-menu.js +26 -26
  9. package/dist/src/dropdown-menu.js.map +1 -1
  10. package/dist/src/ia-topnav.d.ts +4 -1
  11. package/dist/src/ia-topnav.js +96 -81
  12. package/dist/src/ia-topnav.js.map +1 -1
  13. package/dist/src/lib/keyboard-navigation.js.map +1 -1
  14. package/dist/src/login-button.js +17 -17
  15. package/dist/src/login-button.js.map +1 -1
  16. package/dist/src/media-menu.js +21 -21
  17. package/dist/src/media-menu.js.map +1 -1
  18. package/dist/src/models.d.ts +1 -0
  19. package/dist/src/models.js.map +1 -1
  20. package/dist/src/primary-nav.d.ts +3 -1
  21. package/dist/src/primary-nav.js +118 -95
  22. package/dist/src/primary-nav.js.map +1 -1
  23. package/dist/src/styles/login-button.js +87 -87
  24. package/dist/src/styles/login-button.js.map +1 -1
  25. package/dist/src/styles/primary-nav.js +343 -308
  26. package/dist/src/styles/primary-nav.js.map +1 -1
  27. package/dist/src/user-menu.js +13 -13
  28. package/dist/src/user-menu.js.map +1 -1
  29. package/dist/test/ia-topnav.test.js +39 -9
  30. package/dist/test/ia-topnav.test.js.map +1 -1
  31. package/dist/test/primary-nav.test.js +55 -7
  32. package/dist/test/primary-nav.test.js.map +1 -1
  33. package/eslint.config.mjs +53 -53
  34. package/index.ts +4 -3
  35. package/package.json +72 -72
  36. package/prettier.config.js +9 -9
  37. package/src/data/menus.ts +652 -652
  38. package/src/dropdown-menu.ts +132 -132
  39. package/src/ia-topnav.ts +383 -366
  40. package/src/lib/keyboard-navigation.ts +166 -166
  41. package/src/login-button.ts +78 -78
  42. package/src/media-menu.ts +143 -143
  43. package/src/models.ts +65 -63
  44. package/src/primary-nav.ts +324 -296
  45. package/src/styles/login-button.ts +90 -90
  46. package/src/styles/primary-nav.ts +346 -311
  47. package/src/user-menu.ts +32 -32
  48. package/ssl/server.key +28 -28
  49. package/test/ia-topnav.test.ts +381 -343
  50. package/test/primary-nav.test.ts +163 -94
  51. package/tsconfig.json +31 -31
  52. package/web-dev-server.config.mjs +32 -32
  53. package/web-test-runner.config.mjs +41 -41
@@ -1,311 +1,346 @@
1
- import { css } from 'lit';
2
-
3
- export default css`
4
- button:focus,
5
- input:focus {
6
- outline: none;
7
- }
8
-
9
- nav {
10
- position: relative;
11
- display: flex;
12
- height: 4rem;
13
- grid-template-areas: 'hamburger empty heart search user';
14
- -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem 4rem;
15
- grid-template-columns: 4rem auto 4rem 4rem 4rem;
16
- -ms-grid-rows: 100%;
17
- grid-template-rows: 100%;
18
- background: var(--primaryNavBg);
19
- border-bottom: 1px solid var(--primaryNavBottomBorder);
20
- }
21
-
22
- nav.hide-search {
23
- grid-template-areas: 'hamburger empty heart user';
24
- -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem;
25
- grid-template-columns: 4rem auto 4rem 4rem;
26
- }
27
-
28
- .right-side-section {
29
- display: flex;
30
- margin-left: auto;
31
- user-select: none;
32
- }
33
- button {
34
- background: none;
35
- color: inherit;
36
- border: none;
37
- font: inherit;
38
- cursor: pointer;
39
- }
40
-
41
- .branding {
42
- position: static;
43
- float: left;
44
- margin: 0 !important;
45
- padding: 0 5px 0 10px;
46
- -webkit-transform: translate(0, 0);
47
- -ms-transform: translate(0, 0);
48
- transform: translate(0, 0);
49
- }
50
-
51
- slot,
52
- .branding {
53
- display: flex;
54
- justify-content: left;
55
- align-items: center;
56
- }
57
-
58
- media-menu {
59
- flex: 1;
60
- justify-self: stretch;
61
- }
62
-
63
- .ia-logo {
64
- height: 3rem;
65
- width: 2.7rem;
66
- display: inline-block;
67
- }
68
- .ia-wordmark {
69
- height: 3rem;
70
- width: 9.5rem;
71
- }
72
- .ia-logo,
73
- .ia-wordmark {
74
- margin-right: 5px;
75
- }
76
-
77
- .hamburger {
78
- -ms-grid-row: 1;
79
- -ms-grid-column: 1;
80
- grid-area: hamburger;
81
- padding: 0;
82
- }
83
- .hamburger svg {
84
- height: 4rem;
85
- width: 4rem;
86
- fill: var(--activeColor);
87
- }
88
-
89
- .mobile-donate-link {
90
- display: inline-block;
91
- }
92
- .mobile-donate-link svg {
93
- height: 4rem;
94
- width: 4rem;
95
- }
96
- .mobile-donate-link .fill-color {
97
- fill: rgb(255, 0, 0);
98
- }
99
-
100
- .sr-only {
101
- position: absolute;
102
- width: 1px;
103
- height: 1px;
104
- margin: -1px;
105
- padding: 0;
106
- border: 0;
107
- overflow: hidden;
108
- white-space: nowrap;
109
- clip: rect(1px, 1px, 1px, 1px);
110
- -webkit-clip-path: inset(50%);
111
- clip-path: inset(50%);
112
- user-select: none;
113
- }
114
-
115
- .search-trigger {
116
- padding: 0;
117
- }
118
- .search-trigger svg {
119
- height: 4rem;
120
- width: 4rem;
121
- }
122
- .search-trigger .fill-color {
123
- fill: var(--iconFill);
124
- }
125
-
126
- .search-activated {
127
- position: relative;
128
- z-index: 3;
129
- }
130
-
131
- .upload {
132
- display: none;
133
- }
134
-
135
- .upload span {
136
- display: none;
137
- }
138
-
139
- .upload svg {
140
- height: 3rem;
141
- width: 3rem;
142
- }
143
-
144
- .screen-name {
145
- display: none;
146
- font-size: 1.3rem;
147
- vertical-align: middle;
148
- text-transform: uppercase;
149
- }
150
-
151
- .user-menu {
152
- color: var(--lightTextColor);
153
- padding: 0.5rem;
154
- height: 100%;
155
- }
156
-
157
- button.user-menu:hover,
158
- button.user-menu:focus {
159
- color: var(--linkHoverColor);
160
- outline: none;
161
- }
162
-
163
- .user-menu.active {
164
- border-radius: 1rem 1rem 0 0;
165
- background: var(--activeButtonBg);
166
- }
167
-
168
- .user-menu img {
169
- display: block;
170
- width: 3rem;
171
- height: 3rem;
172
- }
173
-
174
- .link-home {
175
- text-decoration: none;
176
- display: inline-flex;
177
- }
178
- a.link-home:focus,
179
- a.link-home:focus-visible {
180
- outline-offset: 1px;
181
- }
182
-
183
- @media only screen and (min-width: 890px) and (max-device-width: 905px) {
184
- .branding.second-logo {
185
- padding-right: 0;
186
- }
187
- }
188
-
189
- @media (min-width: 906px) {
190
- .branding.second-logo {
191
- padding-right: 20px;
192
- }
193
- }
194
-
195
- @media (max-width: 889px) {
196
- slot[name='opt-sec-logo'] {
197
- display: none;
198
- }
199
-
200
- .right-side-section {
201
- display: initial;
202
- }
203
- .right-side-section .user-info {
204
- float: right;
205
- }
206
- }
207
-
208
- @media (min-width: 890px) {
209
- :host {
210
- --userIconWidth: 3.2rem;
211
- --userIconHeight: 3.2rem;
212
- }
213
-
214
- nav {
215
- display: flex;
216
- z-index: 4;
217
- height: 5rem;
218
- padding-right: 1.5rem;
219
- }
220
-
221
- slot[name='opt-sec-logo-mobile'] {
222
- display: none;
223
- }
224
-
225
- .ia-logo,
226
- .ia-wordmark {
227
- margin-right: 10px;
228
- }
229
-
230
- .hamburger,
231
- .search-trigger,
232
- .mobile-donate-link {
233
- display: none;
234
- }
235
-
236
- .user-info {
237
- display: block;
238
- float: right;
239
- vertical-align: middle;
240
- height: 100%;
241
- }
242
-
243
- .user-info .user-menu img {
244
- height: 3rem;
245
- width: 3rem;
246
- margin-right: 0.5rem;
247
- }
248
-
249
- .user-menu {
250
- padding: 1rem 0.5rem;
251
- }
252
- .user-menu.active {
253
- background: transparent;
254
- }
255
-
256
- .user-menu img {
257
- display: inline-block;
258
- vertical-align: middle;
259
- margin-right: 0.5rem;
260
- }
261
-
262
- .upload {
263
- display: block;
264
- padding: 1rem 0.5rem;
265
- float: right;
266
- font-size: 1.4rem;
267
- text-transform: uppercase;
268
- text-decoration: none;
269
- color: var(--lightTextColor);
270
- }
271
- .upload:active,
272
- .upload:focus,
273
- .upload:hover {
274
- color: var(--linkHoverColor);
275
- }
276
- .upload:focus-visible {
277
- outline: none;
278
- }
279
-
280
- .upload svg {
281
- vertical-align: middle;
282
- fill: var(--iconFill);
283
- }
284
-
285
- .upload:hover svg,
286
- .upload:focus svg,
287
- .upload:active svg {
288
- fill: var(--linkHoverColor);
289
- }
290
-
291
- nav-search {
292
- float: right;
293
- margin-left: 1rem;
294
- }
295
- }
296
-
297
- @media (min-width: 990px) {
298
- .screen-name {
299
- display: inline-block;
300
- text-overflow: ellipsis;
301
- overflow: hidden;
302
- white-space: nowrap;
303
- max-width: 165px;
304
- }
305
-
306
- .upload span {
307
- display: inline-block;
308
- vertical-align: middle;
309
- }
310
- }
311
- `;
1
+ import { css } from 'lit';
2
+
3
+ export default css`
4
+ button:focus,
5
+ input:focus {
6
+ outline: none;
7
+ }
8
+
9
+ nav {
10
+ position: relative;
11
+ display: flex;
12
+ height: 4rem;
13
+ grid-template-areas: 'hamburger empty heart search user';
14
+ -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem 4rem;
15
+ grid-template-columns: 4rem auto 4rem 4rem 4rem;
16
+ -ms-grid-rows: 100%;
17
+ grid-template-rows: 100%;
18
+ background: var(--primaryNavBg);
19
+ border-bottom: 1px solid var(--primaryNavBottomBorder);
20
+ }
21
+
22
+ nav.hide-search {
23
+ grid-template-areas: 'hamburger empty heart user';
24
+ -ms-grid-columns: 4rem minmax(1rem, 100%) 4rem 4rem;
25
+ grid-template-columns: 4rem auto 4rem 4rem;
26
+ }
27
+
28
+ .right-side-section {
29
+ display: flex;
30
+ margin-left: auto;
31
+ user-select: none;
32
+ }
33
+ button {
34
+ background: none;
35
+ color: inherit;
36
+ border: none;
37
+ font: inherit;
38
+ cursor: pointer;
39
+ }
40
+
41
+ .branding {
42
+ position: static;
43
+ float: left;
44
+ margin: 0 !important;
45
+ padding: 0 5px 0 10px;
46
+ -webkit-transform: translate(0, 0);
47
+ -ms-transform: translate(0, 0);
48
+ transform: translate(0, 0);
49
+ }
50
+
51
+ slot,
52
+ .branding {
53
+ display: flex;
54
+ justify-content: left;
55
+ align-items: center;
56
+ }
57
+
58
+ media-menu {
59
+ flex: 1;
60
+ justify-self: stretch;
61
+ }
62
+
63
+ .ia-logo {
64
+ height: 3rem;
65
+ width: 2.7rem;
66
+ display: inline-block;
67
+ }
68
+ .ia-wordmark {
69
+ height: 3rem;
70
+ width: 9.5rem;
71
+ }
72
+ .ia-logo,
73
+ .ia-wordmark {
74
+ margin-right: 5px;
75
+ }
76
+
77
+ .hamburger {
78
+ -ms-grid-row: 1;
79
+ -ms-grid-column: 1;
80
+ grid-area: hamburger;
81
+ padding: 0;
82
+ }
83
+ .hamburger svg {
84
+ height: 4rem;
85
+ width: 4rem;
86
+ fill: var(--activeColor);
87
+ }
88
+
89
+ .mobile-donate-link {
90
+ display: inline-block;
91
+ }
92
+ .mobile-donate-link svg {
93
+ height: 4rem;
94
+ width: 4rem;
95
+ }
96
+ .mobile-donate-link .fill-color {
97
+ fill: rgb(255, 0, 0);
98
+ }
99
+
100
+ .sr-only {
101
+ position: absolute;
102
+ width: 1px;
103
+ height: 1px;
104
+ margin: -1px;
105
+ padding: 0;
106
+ border: 0;
107
+ overflow: hidden;
108
+ white-space: nowrap;
109
+ clip: rect(1px, 1px, 1px, 1px);
110
+ -webkit-clip-path: inset(50%);
111
+ clip-path: inset(50%);
112
+ user-select: none;
113
+ }
114
+
115
+ .search-trigger {
116
+ padding: 0;
117
+ }
118
+ .search-trigger svg {
119
+ height: 4rem;
120
+ width: 4rem;
121
+ }
122
+ .search-trigger .fill-color {
123
+ fill: var(--iconFill);
124
+ }
125
+
126
+ .search-activated {
127
+ position: relative;
128
+ z-index: 3;
129
+ }
130
+
131
+ .custom-search-container {
132
+ display: none;
133
+ }
134
+
135
+ .custom-search-container.open {
136
+ display: flex;
137
+ position: absolute;
138
+ top: 0;
139
+ right: 4rem;
140
+ bottom: 0;
141
+ left: 4rem;
142
+ z-index: 3;
143
+ padding: 0.5rem 0.2rem;
144
+ border-radius: 1rem 1rem 0 0;
145
+ background: var(--searchActiveBg);
146
+ align-items: center;
147
+ animation: fade-in 0.2s forwards;
148
+ }
149
+
150
+ @keyframes fade-in {
151
+ 0% {
152
+ opacity: 0;
153
+ }
154
+ 100% {
155
+ opacity: 1;
156
+ }
157
+ }
158
+
159
+ .upload {
160
+ display: none;
161
+ }
162
+
163
+ .upload span {
164
+ display: none;
165
+ }
166
+
167
+ .upload svg {
168
+ height: 3rem;
169
+ width: 3rem;
170
+ }
171
+
172
+ .screen-name {
173
+ display: none;
174
+ font-size: 1.3rem;
175
+ vertical-align: middle;
176
+ text-transform: uppercase;
177
+ }
178
+
179
+ .user-menu {
180
+ color: var(--lightTextColor);
181
+ padding: 0.5rem;
182
+ height: 100%;
183
+ }
184
+
185
+ button.user-menu:hover,
186
+ button.user-menu:focus {
187
+ color: var(--linkHoverColor);
188
+ outline: none;
189
+ }
190
+
191
+ .user-menu.active {
192
+ border-radius: 1rem 1rem 0 0;
193
+ background: var(--activeButtonBg);
194
+ }
195
+
196
+ .user-menu img {
197
+ display: block;
198
+ width: 3rem;
199
+ height: 3rem;
200
+ }
201
+
202
+ .link-home {
203
+ text-decoration: none;
204
+ display: inline-flex;
205
+ }
206
+ a.link-home:focus,
207
+ a.link-home:focus-visible {
208
+ outline-offset: 1px;
209
+ }
210
+
211
+ @media only screen and (min-width: 890px) and (max-device-width: 905px) {
212
+ .branding.second-logo {
213
+ padding-right: 0;
214
+ }
215
+ }
216
+
217
+ @media (min-width: 906px) {
218
+ .branding.second-logo {
219
+ padding-right: 20px;
220
+ }
221
+ }
222
+
223
+ @media (max-width: 889px) {
224
+ slot[name='opt-sec-logo'] {
225
+ display: none;
226
+ }
227
+
228
+ .right-side-section {
229
+ display: initial;
230
+ }
231
+ .right-side-section .user-info {
232
+ float: right;
233
+ }
234
+ }
235
+
236
+ @media (min-width: 890px) {
237
+ :host {
238
+ --userIconWidth: 3.2rem;
239
+ --userIconHeight: 3.2rem;
240
+ }
241
+
242
+ nav {
243
+ display: flex;
244
+ z-index: 4;
245
+ height: 5rem;
246
+ padding-right: 1.5rem;
247
+ }
248
+
249
+ slot[name='opt-sec-logo-mobile'] {
250
+ display: none;
251
+ }
252
+
253
+ .ia-logo,
254
+ .ia-wordmark {
255
+ margin-right: 10px;
256
+ }
257
+
258
+ .hamburger,
259
+ .search-trigger,
260
+ .mobile-donate-link {
261
+ display: none;
262
+ }
263
+
264
+ .user-info {
265
+ display: block;
266
+ float: right;
267
+ vertical-align: middle;
268
+ height: 100%;
269
+ }
270
+
271
+ .user-info .user-menu img {
272
+ height: 3rem;
273
+ width: 3rem;
274
+ margin-right: 0.5rem;
275
+ }
276
+
277
+ .user-menu {
278
+ padding: 1rem 0.5rem;
279
+ }
280
+ .user-menu.active {
281
+ background: transparent;
282
+ }
283
+
284
+ .user-menu img {
285
+ display: inline-block;
286
+ vertical-align: middle;
287
+ margin-right: 0.5rem;
288
+ }
289
+
290
+ .upload {
291
+ display: block;
292
+ padding: 1rem 0.5rem;
293
+ float: right;
294
+ font-size: 1.4rem;
295
+ text-transform: uppercase;
296
+ text-decoration: none;
297
+ color: var(--lightTextColor);
298
+ }
299
+ .upload:active,
300
+ .upload:focus,
301
+ .upload:hover {
302
+ color: var(--linkHoverColor);
303
+ }
304
+ .upload:focus-visible {
305
+ outline: none;
306
+ }
307
+
308
+ .upload svg {
309
+ vertical-align: middle;
310
+ fill: var(--iconFill);
311
+ }
312
+
313
+ .upload:hover svg,
314
+ .upload:focus svg,
315
+ .upload:active svg {
316
+ fill: var(--linkHoverColor);
317
+ }
318
+
319
+ nav-search {
320
+ float: right;
321
+ margin-left: 1rem;
322
+ }
323
+
324
+ .custom-search-container {
325
+ display: flex;
326
+ align-items: center;
327
+ float: right;
328
+ margin-left: 1rem;
329
+ }
330
+ }
331
+
332
+ @media (min-width: 990px) {
333
+ .screen-name {
334
+ display: inline-block;
335
+ text-overflow: ellipsis;
336
+ overflow: hidden;
337
+ white-space: nowrap;
338
+ max-width: 165px;
339
+ }
340
+
341
+ .upload span {
342
+ display: inline-block;
343
+ vertical-align: middle;
344
+ }
345
+ }
346
+ `;