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