@internetarchive/collection-browser 0.3.10-alpha.1 → 0.4.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 (222) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +26 -26
  3. package/.github/workflows/gh-pages-main.yml +39 -39
  4. package/.github/workflows/npm-publish.yml +39 -39
  5. package/.github/workflows/pr-preview.yml +38 -38
  6. package/.husky/pre-commit +4 -4
  7. package/LICENSE +661 -661
  8. package/README.md +83 -83
  9. package/dist/index.d.ts +9 -9
  10. package/dist/index.js +9 -9
  11. package/dist/src/app-root.d.ts +48 -48
  12. package/dist/src/app-root.js +258 -258
  13. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  15. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  17. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  18. package/dist/src/assets/img/icons/chevron.js +2 -2
  19. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  20. package/dist/src/assets/img/icons/empty-query.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  28. package/dist/src/assets/img/icons/login-required.js +5 -17
  29. package/dist/src/assets/img/icons/login-required.js.map +1 -1
  30. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  31. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  32. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  56. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  57. package/dist/src/assets/img/icons/null-result.js +2 -2
  58. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  59. package/dist/src/assets/img/icons/restricted.js +3 -19
  60. package/dist/src/assets/img/icons/restricted.js.map +1 -1
  61. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  62. package/dist/src/assets/img/icons/reviews.js +2 -2
  63. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  64. package/dist/src/assets/img/icons/upload.js +2 -2
  65. package/dist/src/assets/img/icons/views.d.ts +1 -1
  66. package/dist/src/assets/img/icons/views.js +2 -2
  67. package/dist/src/circular-activity-indicator.d.ts +5 -5
  68. package/dist/src/circular-activity-indicator.js +17 -17
  69. package/dist/src/collection-browser.d.ts +278 -278
  70. package/dist/src/collection-browser.js +1105 -1105
  71. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  72. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  73. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  74. package/dist/src/collection-facets/facets-template.js +125 -125
  75. package/dist/src/collection-facets/more-facets-content.d.ts +76 -76
  76. package/dist/src/collection-facets/more-facets-content.js +353 -353
  77. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  78. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  79. package/dist/src/collection-facets.d.ts +77 -77
  80. package/dist/src/collection-facets.js +388 -388
  81. package/dist/src/empty-placeholder.d.ts +11 -11
  82. package/dist/src/empty-placeholder.js +42 -42
  83. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  84. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  85. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  86. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  87. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  88. package/dist/src/mediatype/mediatype-config.js +85 -85
  89. package/dist/src/models.d.ts +103 -103
  90. package/dist/src/models.js +117 -117
  91. package/dist/src/restoration-state-handler.d.ts +46 -46
  92. package/dist/src/restoration-state-handler.js +230 -230
  93. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  94. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  95. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  96. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  97. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  98. package/dist/src/sort-filter-bar/img/list.js +2 -2
  99. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  101. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  102. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  103. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  104. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  105. package/dist/src/styles/item-image-styles.d.ts +8 -8
  106. package/dist/src/styles/item-image-styles.js +12 -15
  107. package/dist/src/styles/item-image-styles.js.map +1 -1
  108. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  109. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  110. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  111. package/dist/src/tiles/grid/account-tile.js +20 -20
  112. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  113. package/dist/src/tiles/grid/collection-tile.js +23 -23
  114. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  115. package/dist/src/tiles/grid/item-tile.js +89 -87
  116. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  117. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  118. package/dist/src/tiles/grid/tile-stats.js +40 -40
  119. package/dist/src/tiles/image-block.d.ts +17 -17
  120. package/dist/src/tiles/image-block.js +77 -69
  121. package/dist/src/tiles/image-block.js.map +1 -1
  122. package/dist/src/tiles/item-image.d.ts +31 -31
  123. package/dist/src/tiles/item-image.js +106 -106
  124. package/dist/src/tiles/list/account-label.d.ts +1 -1
  125. package/dist/src/tiles/list/account-label.js +6 -6
  126. package/dist/src/tiles/list/date-label.d.ts +1 -1
  127. package/dist/src/tiles/list/date-label.js +12 -12
  128. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  129. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  130. package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
  131. package/dist/src/tiles/list/tile-list-compact.js +93 -93
  132. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  133. package/dist/src/tiles/list/tile-list.js +276 -276
  134. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  135. package/dist/src/tiles/mediatype-icon.js +47 -47
  136. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -7
  137. package/dist/src/tiles/overlay/icon-overlay.js +63 -33
  138. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  139. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -0
  140. package/dist/src/tiles/overlay/icon-text-overlay.js +83 -0
  141. package/dist/src/tiles/overlay/icon-text-overlay.js.map +1 -0
  142. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -8
  143. package/dist/src/tiles/overlay/text-overlay.js +63 -35
  144. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  145. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  146. package/dist/src/tiles/text-snippet-block.js +81 -81
  147. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  148. package/dist/src/tiles/tile-dispatcher.js +128 -128
  149. package/dist/src/utils/analytics-events.d.ts +22 -22
  150. package/dist/src/utils/analytics-events.js +24 -24
  151. package/dist/src/utils/format-count.d.ts +7 -7
  152. package/dist/src/utils/format-count.js +76 -76
  153. package/dist/src/utils/format-date.d.ts +2 -2
  154. package/dist/src/utils/format-date.js +23 -23
  155. package/dist/test/collection-browser.test.d.ts +1 -1
  156. package/dist/test/collection-browser.test.js +575 -575
  157. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  158. package/dist/test/collection-facets/facets-template.test.js +62 -62
  159. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  160. package/dist/test/collection-facets/more-facets-content.test.js +114 -114
  161. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  162. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  163. package/dist/test/collection-facets.test.d.ts +2 -2
  164. package/dist/test/collection-facets.test.js +544 -544
  165. package/dist/test/empty-placeholder.test.d.ts +1 -1
  166. package/dist/test/empty-placeholder.test.js +33 -33
  167. package/dist/test/icon-overlay.test.d.ts +1 -1
  168. package/dist/test/icon-overlay.test.js +24 -24
  169. package/dist/test/image-block.test.d.ts +1 -1
  170. package/dist/test/image-block.test.js +48 -48
  171. package/dist/test/item-image.test.d.ts +1 -1
  172. package/dist/test/item-image.test.js +80 -80
  173. package/dist/test/item-image.test.js.map +1 -1
  174. package/dist/test/mediatype-config.test.d.ts +1 -1
  175. package/dist/test/mediatype-config.test.js +16 -16
  176. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  177. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  178. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  179. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  180. package/dist/test/mocks/mock-search-responses.d.ts +10 -10
  181. package/dist/test/mocks/mock-search-responses.js +271 -271
  182. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  183. package/dist/test/mocks/mock-search-service.js +36 -36
  184. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  185. package/dist/test/restoration-state-handler.test.js +126 -126
  186. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  187. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  188. package/dist/test/text-overlay.test.d.ts +1 -1
  189. package/dist/test/text-overlay.test.js +48 -41
  190. package/dist/test/text-overlay.test.js.map +1 -1
  191. package/dist/test/text-snippet-block.test.d.ts +1 -1
  192. package/dist/test/text-snippet-block.test.js +57 -57
  193. package/dist/test/tile-stats.test.d.ts +1 -1
  194. package/dist/test/tile-stats.test.js +33 -33
  195. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  196. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  197. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  198. package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
  199. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  200. package/dist/test/tiles/list/tile-list.test.js +123 -123
  201. package/dist/test/utils/format-count.test.d.ts +1 -1
  202. package/dist/test/utils/format-count.test.js +23 -23
  203. package/dist/test/utils/format-date.test.d.ts +1 -1
  204. package/dist/test/utils/format-date.test.js +17 -17
  205. package/index.html +24 -24
  206. package/local.archive.org.cert +86 -86
  207. package/local.archive.org.key +27 -27
  208. package/package.json +1 -1
  209. package/renovate.json +6 -6
  210. package/src/assets/img/icons/login-required.ts +3 -15
  211. package/src/assets/img/icons/restricted.ts +1 -17
  212. package/src/styles/item-image-styles.ts +3 -6
  213. package/src/tiles/grid/item-tile.ts +2 -0
  214. package/src/tiles/image-block.ts +8 -0
  215. package/src/tiles/overlay/icon-overlay.ts +33 -3
  216. package/src/tiles/overlay/icon-text-overlay.ts +75 -0
  217. package/src/tiles/overlay/text-overlay.ts +34 -7
  218. package/test/item-image.test.ts +2 -2
  219. package/test/text-overlay.test.ts +10 -3
  220. package/tsconfig.json +21 -21
  221. package/web-dev-server.config.mjs +30 -30
  222. package/web-test-runner.config.mjs +41 -41
package/index.html CHANGED
@@ -1,24 +1,24 @@
1
- <!doctype html>
2
- <html lang="en-GB">
3
- <head>
4
- <meta charset="utf-8">
5
- <style>
6
- html {
7
- font-size: 10px; /* This is to match petabox's base font size */
8
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
9
- }
10
-
11
- body {
12
- background: #fff;
13
- color: #2C2C2C;
14
- }
15
- </style>
16
- <script
17
- src="https://polyfill.archive.org/v3/polyfill.min.js?features=scrollIntoView%2CElement.prototype.scrollIntoView"></script>
18
-
19
- </head>
20
- <body>
21
- <app-root></app-root>
22
- <script type="module" src="./dist/src/app-root.js"></script>
23
- </body>
24
- </html>
1
+ <!doctype html>
2
+ <html lang="en-GB">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <style>
6
+ html {
7
+ font-size: 10px; /* This is to match petabox's base font size */
8
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
9
+ }
10
+
11
+ body {
12
+ background: #fff;
13
+ color: #2C2C2C;
14
+ }
15
+ </style>
16
+ <script
17
+ src="https://polyfill.archive.org/v3/polyfill.min.js?features=scrollIntoView%2CElement.prototype.scrollIntoView"></script>
18
+
19
+ </head>
20
+ <body>
21
+ <app-root></app-root>
22
+ <script type="module" src="./dist/src/app-root.js"></script>
23
+ </body>
24
+ </html>
@@ -1,86 +1,86 @@
1
- Certificate:
2
- Data:
3
- Version: 3 (0x2)
4
- Serial Number: 1 (0x1)
5
- Signature Algorithm: sha256WithRSAEncryption
6
- Issuer: CN=devcert
7
- Validity
8
- Not Before: Apr 27 16:27:46 2022 GMT
9
- Not After : Jul 30 16:27:46 2024 GMT
10
- Subject: CN=local.archive.org
11
- Subject Public Key Info:
12
- Public Key Algorithm: rsaEncryption
13
- Public-Key: (2048 bit)
14
- Modulus:
15
- 00:a9:54:ca:34:ff:8b:32:02:39:97:61:bd:f5:12:
16
- 5c:4a:d0:87:2e:d6:42:63:72:ea:b4:90:95:cc:4a:
17
- ef:5a:66:09:9f:1d:08:0d:b2:f4:2e:b3:55:59:9c:
18
- 0f:77:37:1e:d7:a3:5c:b7:3d:81:84:fc:55:af:20:
19
- e7:3c:bd:9e:2b:2b:9e:d1:95:9d:14:90:70:7c:99:
20
- 78:f1:dd:42:2b:fd:87:b9:09:f0:f6:50:c7:90:41:
21
- de:e2:ee:dd:a0:4a:4d:de:20:6a:e8:1b:81:7f:d9:
22
- 17:0d:f5:f2:a1:dc:89:d8:e9:89:9c:ff:40:b7:0e:
23
- bb:16:db:d1:e0:67:5f:24:de:3b:b8:18:b8:a6:dd:
24
- d5:26:8a:2a:a4:f2:03:b1:a8:15:23:31:c9:65:de:
25
- 9b:5a:b0:f0:4f:ef:77:f1:8b:7b:91:95:a0:61:be:
26
- 1f:64:29:c6:2e:2c:03:1b:f0:91:96:b6:ab:fb:11:
27
- b7:1c:41:bc:43:6e:1b:6f:28:88:40:bd:a8:47:28:
28
- 9e:a4:64:31:e0:a5:72:db:09:cb:b0:9e:7a:d5:d0:
29
- 7f:15:15:75:d4:d6:78:41:c9:a1:54:73:48:19:4f:
30
- 72:95:a1:31:b3:4c:81:41:13:43:d9:9b:8c:d0:2e:
31
- 29:09:a2:59:6b:15:6d:5c:93:22:03:f5:72:f0:46:
32
- be:65
33
- Exponent: 65537 (0x10001)
34
- X509v3 extensions:
35
- X509v3 Basic Constraints: critical
36
- CA:FALSE
37
- X509v3 Subject Key Identifier:
38
- E1:20:A8:89:51:79:0C:23:66:20:B7:A5:A4:42:8F:40:7F:7E:C0:CE
39
- X509v3 Authority Key Identifier:
40
- keyid:A8:C7:C5:69:35:49:1B:B6:77:E7:2E:16:5B:B0:75:8C:B7:03:5C:04
41
- DirName:/CN=devcert
42
- serial:DB:1E:4C:08:75:57:8D:4E
43
-
44
- X509v3 Key Usage: critical
45
- Digital Signature, Key Encipherment
46
- X509v3 Extended Key Usage:
47
- TLS Web Server Authentication
48
- X509v3 Subject Alternative Name:
49
- DNS:local.archive.org, DNS:*.local.archive.org
50
- Signature Algorithm: sha256WithRSAEncryption
51
- 5a:20:54:0b:6f:c3:35:e6:70:c1:bd:5c:58:e8:cf:7b:73:33:
52
- 38:80:70:c1:1c:60:2a:ea:5c:0c:eb:63:6a:15:48:fe:4d:f6:
53
- 18:89:e1:89:73:40:45:52:7d:bc:3a:d6:0e:d3:65:2c:e7:b9:
54
- ab:3b:c6:ea:6e:74:74:39:4f:53:3f:bb:59:d9:91:83:db:92:
55
- 96:32:97:25:5f:c2:8d:85:ce:b3:c7:b1:4d:37:b7:bd:81:de:
56
- f7:9f:34:5b:12:70:21:a8:03:8d:94:ed:d7:41:7f:2a:87:30:
57
- bd:4f:07:22:b2:9a:06:ab:bc:41:2c:2f:7c:be:e0:a2:90:60:
58
- 21:79:d4:a1:08:26:c1:f4:83:b2:0a:ff:7d:0a:15:dc:ed:d0:
59
- 49:f9:37:ad:fe:68:d7:59:9d:f8:25:4e:10:01:bf:a5:be:ec:
60
- 21:a8:bf:77:6c:ff:d4:b7:d4:11:9c:43:4a:64:e8:31:76:9a:
61
- 01:3a:54:d9:c0:8a:a6:2c:7a:df:0a:c4:26:6e:19:52:26:9d:
62
- 25:b5:b1:db:6f:12:91:92:83:ab:6c:28:52:e1:e4:63:c2:cf:
63
- 45:f7:b4:da:7d:13:66:47:62:90:e6:8d:2c:b8:aa:d4:2b:8c:
64
- d6:c0:5c:fc:83:e7:1f:71:5f:cb:38:b6:c3:a5:77:7d:97:04:
65
- 87:14:44:83
66
- -----BEGIN CERTIFICATE-----
67
- MIIDdjCCAl6gAwIBAgIBATANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdkZXZj
68
- ZXJ0MB4XDTIyMDQyNzE2Mjc0NloXDTI0MDczMDE2Mjc0NlowHDEaMBgGA1UEAwwR
69
- bG9jYWwuYXJjaGl2ZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
70
- AQCpVMo0/4syAjmXYb31ElxK0Icu1kJjcuq0kJXMSu9aZgmfHQgNsvQus1VZnA93
71
- Nx7Xo1y3PYGE/FWvIOc8vZ4rK57RlZ0UkHB8mXjx3UIr/Ye5CfD2UMeQQd7i7t2g
72
- Sk3eIGroG4F/2RcN9fKh3InY6Ymc/0C3DrsW29HgZ18k3ju4GLim3dUmiiqk8gOx
73
- qBUjMcll3ptasPBP73fxi3uRlaBhvh9kKcYuLAMb8JGWtqv7EbccQbxDbhtvKIhA
74
- vahHKJ6kZDHgpXLbCcuwnnrV0H8VFXXU1nhByaFUc0gZT3KVoTGzTIFBE0PZm4zQ
75
- LikJollrFW1ckyID9XLwRr5lAgMBAAGjgcwwgckwDAYDVR0TAQH/BAIwADAdBgNV
76
- HQ4EFgQU4SCoiVF5DCNmILelpEKPQH9+wM4wQgYDVR0jBDswOYAUqMfFaTVJG7Z3
77
- 5y4WW7B1jLcDXAShFqQUMBIxEDAOBgNVBAMMB2RldmNlcnSCCQDbHkwIdVeNTjAO
78
- BgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwMQYDVR0RBCowKIIR
79
- bG9jYWwuYXJjaGl2ZS5vcmeCEyoubG9jYWwuYXJjaGl2ZS5vcmcwDQYJKoZIhvcN
80
- AQELBQADggEBAFogVAtvwzXmcMG9XFjoz3tzMziAcMEcYCrqXAzrY2oVSP5N9hiJ
81
- 4YlzQEVSfbw61g7TZSznuas7xupudHQ5T1M/u1nZkYPbkpYylyVfwo2FzrPHsU03
82
- t72B3vefNFsScCGoA42U7ddBfyqHML1PByKymgarvEEsL3y+4KKQYCF51KEIJsH0
83
- g7IK/30KFdzt0En5N63+aNdZnfglThABv6W+7CGov3ds/9S31BGcQ0pk6DF2mgE6
84
- VNnAiqYset8KxCZuGVImnSW1sdtvEpGSg6tsKFLh5GPCz0X3tNp9E2ZHYpDmjSy4
85
- qtQrjNbAXPyD5x9xX8s4tsOld32XBIcURIM=
86
- -----END CERTIFICATE-----
1
+ Certificate:
2
+ Data:
3
+ Version: 3 (0x2)
4
+ Serial Number: 1 (0x1)
5
+ Signature Algorithm: sha256WithRSAEncryption
6
+ Issuer: CN=devcert
7
+ Validity
8
+ Not Before: Apr 27 16:27:46 2022 GMT
9
+ Not After : Jul 30 16:27:46 2024 GMT
10
+ Subject: CN=local.archive.org
11
+ Subject Public Key Info:
12
+ Public Key Algorithm: rsaEncryption
13
+ Public-Key: (2048 bit)
14
+ Modulus:
15
+ 00:a9:54:ca:34:ff:8b:32:02:39:97:61:bd:f5:12:
16
+ 5c:4a:d0:87:2e:d6:42:63:72:ea:b4:90:95:cc:4a:
17
+ ef:5a:66:09:9f:1d:08:0d:b2:f4:2e:b3:55:59:9c:
18
+ 0f:77:37:1e:d7:a3:5c:b7:3d:81:84:fc:55:af:20:
19
+ e7:3c:bd:9e:2b:2b:9e:d1:95:9d:14:90:70:7c:99:
20
+ 78:f1:dd:42:2b:fd:87:b9:09:f0:f6:50:c7:90:41:
21
+ de:e2:ee:dd:a0:4a:4d:de:20:6a:e8:1b:81:7f:d9:
22
+ 17:0d:f5:f2:a1:dc:89:d8:e9:89:9c:ff:40:b7:0e:
23
+ bb:16:db:d1:e0:67:5f:24:de:3b:b8:18:b8:a6:dd:
24
+ d5:26:8a:2a:a4:f2:03:b1:a8:15:23:31:c9:65:de:
25
+ 9b:5a:b0:f0:4f:ef:77:f1:8b:7b:91:95:a0:61:be:
26
+ 1f:64:29:c6:2e:2c:03:1b:f0:91:96:b6:ab:fb:11:
27
+ b7:1c:41:bc:43:6e:1b:6f:28:88:40:bd:a8:47:28:
28
+ 9e:a4:64:31:e0:a5:72:db:09:cb:b0:9e:7a:d5:d0:
29
+ 7f:15:15:75:d4:d6:78:41:c9:a1:54:73:48:19:4f:
30
+ 72:95:a1:31:b3:4c:81:41:13:43:d9:9b:8c:d0:2e:
31
+ 29:09:a2:59:6b:15:6d:5c:93:22:03:f5:72:f0:46:
32
+ be:65
33
+ Exponent: 65537 (0x10001)
34
+ X509v3 extensions:
35
+ X509v3 Basic Constraints: critical
36
+ CA:FALSE
37
+ X509v3 Subject Key Identifier:
38
+ E1:20:A8:89:51:79:0C:23:66:20:B7:A5:A4:42:8F:40:7F:7E:C0:CE
39
+ X509v3 Authority Key Identifier:
40
+ keyid:A8:C7:C5:69:35:49:1B:B6:77:E7:2E:16:5B:B0:75:8C:B7:03:5C:04
41
+ DirName:/CN=devcert
42
+ serial:DB:1E:4C:08:75:57:8D:4E
43
+
44
+ X509v3 Key Usage: critical
45
+ Digital Signature, Key Encipherment
46
+ X509v3 Extended Key Usage:
47
+ TLS Web Server Authentication
48
+ X509v3 Subject Alternative Name:
49
+ DNS:local.archive.org, DNS:*.local.archive.org
50
+ Signature Algorithm: sha256WithRSAEncryption
51
+ 5a:20:54:0b:6f:c3:35:e6:70:c1:bd:5c:58:e8:cf:7b:73:33:
52
+ 38:80:70:c1:1c:60:2a:ea:5c:0c:eb:63:6a:15:48:fe:4d:f6:
53
+ 18:89:e1:89:73:40:45:52:7d:bc:3a:d6:0e:d3:65:2c:e7:b9:
54
+ ab:3b:c6:ea:6e:74:74:39:4f:53:3f:bb:59:d9:91:83:db:92:
55
+ 96:32:97:25:5f:c2:8d:85:ce:b3:c7:b1:4d:37:b7:bd:81:de:
56
+ f7:9f:34:5b:12:70:21:a8:03:8d:94:ed:d7:41:7f:2a:87:30:
57
+ bd:4f:07:22:b2:9a:06:ab:bc:41:2c:2f:7c:be:e0:a2:90:60:
58
+ 21:79:d4:a1:08:26:c1:f4:83:b2:0a:ff:7d:0a:15:dc:ed:d0:
59
+ 49:f9:37:ad:fe:68:d7:59:9d:f8:25:4e:10:01:bf:a5:be:ec:
60
+ 21:a8:bf:77:6c:ff:d4:b7:d4:11:9c:43:4a:64:e8:31:76:9a:
61
+ 01:3a:54:d9:c0:8a:a6:2c:7a:df:0a:c4:26:6e:19:52:26:9d:
62
+ 25:b5:b1:db:6f:12:91:92:83:ab:6c:28:52:e1:e4:63:c2:cf:
63
+ 45:f7:b4:da:7d:13:66:47:62:90:e6:8d:2c:b8:aa:d4:2b:8c:
64
+ d6:c0:5c:fc:83:e7:1f:71:5f:cb:38:b6:c3:a5:77:7d:97:04:
65
+ 87:14:44:83
66
+ -----BEGIN CERTIFICATE-----
67
+ MIIDdjCCAl6gAwIBAgIBATANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdkZXZj
68
+ ZXJ0MB4XDTIyMDQyNzE2Mjc0NloXDTI0MDczMDE2Mjc0NlowHDEaMBgGA1UEAwwR
69
+ bG9jYWwuYXJjaGl2ZS5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
70
+ AQCpVMo0/4syAjmXYb31ElxK0Icu1kJjcuq0kJXMSu9aZgmfHQgNsvQus1VZnA93
71
+ Nx7Xo1y3PYGE/FWvIOc8vZ4rK57RlZ0UkHB8mXjx3UIr/Ye5CfD2UMeQQd7i7t2g
72
+ Sk3eIGroG4F/2RcN9fKh3InY6Ymc/0C3DrsW29HgZ18k3ju4GLim3dUmiiqk8gOx
73
+ qBUjMcll3ptasPBP73fxi3uRlaBhvh9kKcYuLAMb8JGWtqv7EbccQbxDbhtvKIhA
74
+ vahHKJ6kZDHgpXLbCcuwnnrV0H8VFXXU1nhByaFUc0gZT3KVoTGzTIFBE0PZm4zQ
75
+ LikJollrFW1ckyID9XLwRr5lAgMBAAGjgcwwgckwDAYDVR0TAQH/BAIwADAdBgNV
76
+ HQ4EFgQU4SCoiVF5DCNmILelpEKPQH9+wM4wQgYDVR0jBDswOYAUqMfFaTVJG7Z3
77
+ 5y4WW7B1jLcDXAShFqQUMBIxEDAOBgNVBAMMB2RldmNlcnSCCQDbHkwIdVeNTjAO
78
+ BgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYBBQUHAwEwMQYDVR0RBCowKIIR
79
+ bG9jYWwuYXJjaGl2ZS5vcmeCEyoubG9jYWwuYXJjaGl2ZS5vcmcwDQYJKoZIhvcN
80
+ AQELBQADggEBAFogVAtvwzXmcMG9XFjoz3tzMziAcMEcYCrqXAzrY2oVSP5N9hiJ
81
+ 4YlzQEVSfbw61g7TZSznuas7xupudHQ5T1M/u1nZkYPbkpYylyVfwo2FzrPHsU03
82
+ t72B3vefNFsScCGoA42U7ddBfyqHML1PByKymgarvEEsL3y+4KKQYCF51KEIJsH0
83
+ g7IK/30KFdzt0En5N63+aNdZnfglThABv6W+7CGov3ds/9S31BGcQ0pk6DF2mgE6
84
+ VNnAiqYset8KxCZuGVImnSW1sdtvEpGSg6tsKFLh5GPCz0X3tNp9E2ZHYpDmjSy4
85
+ qtQrjNbAXPyD5x9xX8s4tsOld32XBIcURIM=
86
+ -----END CERTIFICATE-----
@@ -1,27 +1,27 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEowIBAAKCAQEAqVTKNP+LMgI5l2G99RJcStCHLtZCY3LqtJCVzErvWmYJnx0I
3
- DbL0LrNVWZwPdzce16Nctz2BhPxVryDnPL2eKyue0ZWdFJBwfJl48d1CK/2HuQnw
4
- 9lDHkEHe4u7doEpN3iBq6BuBf9kXDfXyodyJ2OmJnP9Atw67FtvR4GdfJN47uBi4
5
- pt3VJooqpPIDsagVIzHJZd6bWrDwT+938Yt7kZWgYb4fZCnGLiwDG/CRlrar+xG3
6
- HEG8Q24bbyiIQL2oRyiepGQx4KVy2wnLsJ561dB/FRV11NZ4QcmhVHNIGU9ylaEx
7
- s0yBQRND2ZuM0C4pCaJZaxVtXJMiA/Vy8Ea+ZQIDAQABAoIBAAQgUdEazQyJ61da
8
- BWP8b41PKYwlonaD7V47C7tvtAdy5xcegPy8eKDOs+y8FdBk4naEv5Sjhg10jK34
9
- 0kmzoTASHwuiZrKClosivkS+jIc/5VfH+zw1WbeVM1Y6VeI7DUy1Y4WGbhBsfNhV
10
- PvVcx2smvbi6q5wKWtrCvomGW1YtngNBXJBPDWXysaVZdpF+6iWtw0RjWxbKEeMb
11
- fjZ2sxl7h1EkTXxQR9pfl9WVgl6vRRXp1o+N71M14jp5t95xCyf49YzeEuZmc1Fc
12
- dD77LNGcxr3kpkcQH5FdDP/spla+lR+JKb78FVqhEdPP3WcJ1qcrAstG2npAfKpj
13
- MD9AhsECgYEA3BddOjeK9epaGbTZRKgmIOSgGEHo8WbVHqBHhyQKAb8kFVEPn+Hl
14
- sq2EEQZf0ZJ/HhlVBc0Gj4/2PI8vj1Lzh+QWJnFu+XN/doOm5X62Ctz13qC5oWJp
15
- foQ9HXcg4GAXhm/o3KUIntLrUwoi/UW8YOSRFXS8RSJtuh1rI5P2jjECgYEAxPVP
16
- o/9+12Fc2ujdm8cQ1tB1Ab9Z73/vloG/xit0uMp89OqXUHEmtud/WzaIQvNxdaWi
17
- 9/BqAG9Oml51T3cuYPxNDkSmtd2fieq9Nh17dw8zYGMk0cSYeecgvCJOrRIJnebW
18
- Glyt8vzBb3eD6FzhZoVNOVYareainSP1cwl5YnUCgYAsr2m0OjayeyRT983tDJ7B
19
- Kun+QtOCv7ghgbVEEOMfO6md0llzwq+aOXSI6Fxn9nBssgP7K4dbeoUqAoBLfzIG
20
- sx50K6+2YebNLymhirp3NimNS+CkjZCRqVOnOdqo85mTKAGFWtSHOpegwnwcJB59
21
- Jar3Sj43YygYE4T/Mjlq4QKBgQC8zUcdt2J4xl1Df6xHkuiic0tmdG6a9jHOPex+
22
- 49NM/NYR1Ptd4kmxVXKxFjJCs6jUlQYG1NBYQFrCAcBEf8PWtqSLA+YnOh6gD4R3
23
- ZoWfGNQwFnoKF4HugU/Q6LYwk7TiR5B/zs30urQWzSOGT9rF8wyW5OJIR2kkZ373
24
- WmKgrQKBgGaw32CMejz3wBpzOAXsYJcMsVfNCMD4bJ2EbXhYuY8HB8IEEv6wqMsp
25
- wtXIgHJubfIiA3MlVsfaUkRdtHMHbN+Us1oynu6nByLhYlAMKpOsJFzPVHHwGB/1
26
- g3WtzfFk5eOoZltJBm5K41zjS7lyr1t05648pT6niy9snu6LaF94
27
- -----END RSA PRIVATE KEY-----
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEAqVTKNP+LMgI5l2G99RJcStCHLtZCY3LqtJCVzErvWmYJnx0I
3
+ DbL0LrNVWZwPdzce16Nctz2BhPxVryDnPL2eKyue0ZWdFJBwfJl48d1CK/2HuQnw
4
+ 9lDHkEHe4u7doEpN3iBq6BuBf9kXDfXyodyJ2OmJnP9Atw67FtvR4GdfJN47uBi4
5
+ pt3VJooqpPIDsagVIzHJZd6bWrDwT+938Yt7kZWgYb4fZCnGLiwDG/CRlrar+xG3
6
+ HEG8Q24bbyiIQL2oRyiepGQx4KVy2wnLsJ561dB/FRV11NZ4QcmhVHNIGU9ylaEx
7
+ s0yBQRND2ZuM0C4pCaJZaxVtXJMiA/Vy8Ea+ZQIDAQABAoIBAAQgUdEazQyJ61da
8
+ BWP8b41PKYwlonaD7V47C7tvtAdy5xcegPy8eKDOs+y8FdBk4naEv5Sjhg10jK34
9
+ 0kmzoTASHwuiZrKClosivkS+jIc/5VfH+zw1WbeVM1Y6VeI7DUy1Y4WGbhBsfNhV
10
+ PvVcx2smvbi6q5wKWtrCvomGW1YtngNBXJBPDWXysaVZdpF+6iWtw0RjWxbKEeMb
11
+ fjZ2sxl7h1EkTXxQR9pfl9WVgl6vRRXp1o+N71M14jp5t95xCyf49YzeEuZmc1Fc
12
+ dD77LNGcxr3kpkcQH5FdDP/spla+lR+JKb78FVqhEdPP3WcJ1qcrAstG2npAfKpj
13
+ MD9AhsECgYEA3BddOjeK9epaGbTZRKgmIOSgGEHo8WbVHqBHhyQKAb8kFVEPn+Hl
14
+ sq2EEQZf0ZJ/HhlVBc0Gj4/2PI8vj1Lzh+QWJnFu+XN/doOm5X62Ctz13qC5oWJp
15
+ foQ9HXcg4GAXhm/o3KUIntLrUwoi/UW8YOSRFXS8RSJtuh1rI5P2jjECgYEAxPVP
16
+ o/9+12Fc2ujdm8cQ1tB1Ab9Z73/vloG/xit0uMp89OqXUHEmtud/WzaIQvNxdaWi
17
+ 9/BqAG9Oml51T3cuYPxNDkSmtd2fieq9Nh17dw8zYGMk0cSYeecgvCJOrRIJnebW
18
+ Glyt8vzBb3eD6FzhZoVNOVYareainSP1cwl5YnUCgYAsr2m0OjayeyRT983tDJ7B
19
+ Kun+QtOCv7ghgbVEEOMfO6md0llzwq+aOXSI6Fxn9nBssgP7K4dbeoUqAoBLfzIG
20
+ sx50K6+2YebNLymhirp3NimNS+CkjZCRqVOnOdqo85mTKAGFWtSHOpegwnwcJB59
21
+ Jar3Sj43YygYE4T/Mjlq4QKBgQC8zUcdt2J4xl1Df6xHkuiic0tmdG6a9jHOPex+
22
+ 49NM/NYR1Ptd4kmxVXKxFjJCs6jUlQYG1NBYQFrCAcBEf8PWtqSLA+YnOh6gD4R3
23
+ ZoWfGNQwFnoKF4HugU/Q6LYwk7TiR5B/zs30urQWzSOGT9rF8wyW5OJIR2kkZ373
24
+ WmKgrQKBgGaw32CMejz3wBpzOAXsYJcMsVfNCMD4bJ2EbXhYuY8HB8IEEv6wqMsp
25
+ wtXIgHJubfIiA3MlVsfaUkRdtHMHbN+Us1oynu6nByLhYlAMKpOsJFzPVHHwGB/1
26
+ g3WtzfFk5eOoZltJBm5K41zjS7lyr1t05648pT6niy9snu6LaF94
27
+ -----END RSA PRIVATE KEY-----
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "The Internet Archive Collection Browser.",
4
4
  "license": "AGPL-3.0-only",
5
5
  "author": "Internet Archive",
6
- "version": "0.3.10-alpha.1",
6
+ "version": "0.4.0",
7
7
  "main": "dist/index.js",
8
8
  "module": "dist/index.js",
9
9
  "scripts": {
package/renovate.json CHANGED
@@ -1,6 +1,6 @@
1
- {
2
- "extends": [
3
- "config:base",
4
- ":preserveSemverRanges"
5
- ]
6
- }
1
+ {
2
+ "extends": [
3
+ "config:base",
4
+ ":preserveSemverRanges"
5
+ ]
6
+ }
@@ -5,24 +5,12 @@ export const loginRequiredIcon = svg`
5
5
  viewBox="0 0 100 100"
6
6
  xmlns="http://www.w3.org/2000/svg"
7
7
  >
8
- <g fill="none" fill-rule="nonzero">
8
+ <g fill="#000" fill-rule="evenodd">
9
9
  <path
10
- d="m11 48h11c-.0377367 5.0230706-.0377367 17.6897373 0 38h28v-38h12c-14.7643578-21.746483-22.9310245-33.4131497-24.5-35z"
11
- fill="#fff"
12
- transform="matrix(0 1 -1 0 86 13)"
10
+ d="m86 0c5.5228475 0 10 4.4771525 10 10v80c0 5.5228475-4.4771525 10-10 10h-57c-5.5228475 0-10-4.4771525-10-10v-13h7.999l.001 8c0 2.6887547 2.1223067 4.8818181 4.7831104 4.9953805l.2168896.0046195h50.06c2.6887547 0 4.8818181-2.1223067 4.9953805-4.7831104l.0046195-.2168896v-70c0-2.7614237-2.2385763-5-5-5h-50.06c-2.6887547 0-4.8818181 2.1223067-4.9953805 4.7831104l-.0046195.2168896-.001 7h-7.999v-12c0-5.5228475 4.4771525-10 10-10z"
13
11
  />
14
12
  <path
15
- d="m17 44h9c-.0377367 5.0230706-.0377367 17.0230706 0 36h18v-36h10c-10.0976911-15.0798163-15.9310245-23.4131497-17.5-25z"
16
- fill="#000"
17
- transform="matrix(0 1 -1 0 85 14)"
18
- />
19
- <path
20
- d="m84.3595506 0h-55.7191012c-8.6379817 0-15.6404494 6.39593215-15.6404494 14.2857143v15.7142857h20v-11h47v62l-47-1v-11h-20v16.7142857c0 7.8897822 7.0024677 14.2857143 15.6404494 14.2857143h55.7191012c8.6379817 0 15.6404494-6.3959321 15.6404494-14.2857143v-71.4285714c0-7.88978215-7.0024677-14.2857143-15.6404494-14.2857143z"
21
- fill="#fff"
22
- />
23
- <path
24
- d="m84.2597403 5c5.3793969 0 9.7402597 4.02943725 9.7402597 9v72c0 4.9705627-4.3608628 9-9.7402597 9h-55.5194806c-5.3793969 0-9.7402597-4.0294373-9.7402597-9v-12h8v7.5c0 2.4198792 1.8593897 4.3936363 4.4510815 4.4958424l48.9709964.0041576c2.6189169 0 4.4673094-2.6052767 4.5779221-5v-62c0-2.4852814-2.3103015-5-5-5h-48.3376623c-2.618917 0-4.551725 1.6052767-4.6623377 4v7h-8v-11c0-4.97056275 4.3608628-9 9.7402597-9z"
25
- fill="#000"
13
+ d="m4 52h14c-.0377367 5.0230706-.0377367 15.3564039 0 31h35v-31h16c-20.0693886-21.0798163-30.8885707-32.4131497-32.4575462-34z" fill-rule="nonzero" transform="matrix(0 1 -1 0 87 14)"
26
14
  />
27
15
  </g>
28
16
  <title>Log in to view this item</title>
@@ -5,25 +5,9 @@ export const restrictedIcon = svg`
5
5
  viewBox="0 0 100 100"
6
6
  xmlns="http://www.w3.org/2000/svg"
7
7
  >
8
- <g
9
- fill="none"
10
- fill-rule="evenodd"
11
- >
12
8
  <path
13
- d="m56.4612493 8.80450354 41.8901185 75.94632926c1.7706782 2.8433173 2.1150372 5.2623412 1.0330766 7.2570716-1.0819604 1.9947304-3.26978 2.9920956-6.5634587 2.9920956h-85.69973905c-3.29367873 0-5.46954894-.9973652-6.52761065-2.9920956-1.0580617-1.9947304-.70175345-4.4137543 1.06892476-7.2570716l41.89011844-75.12308969c1.8184757-2.84331737 3.9693609-4.37738627 6.4526556-4.60220671s4.6341799 1.03483527 6.4526556 3.77896714z"
14
- fill="#000"
15
- fill-rule="nonzero"
9
+ d="m56.4612493 8.80450354 41.8901185 75.94632926c1.7706782 2.8433173 2.1150372 5.2623412 1.0330766 7.2570716-1.0819604 1.9947304-3.26978 2.9920956-6.5634587 2.9920956h-85.69973905c-3.29367873 0-5.46954894-.9973652-6.52761065-2.9920956-1.0580617-1.9947304-.70175345-4.4137543 1.06892476-7.2570716l41.89011844-75.12308969c1.8184757-2.84331737 3.9693609-4.37738627 6.4526556-4.60220671s4.6341799 1.03483527 6.4526556 3.77896714zm28.5387507 75.19549646-35.037482-62-34.962518 62zm-31-34.7484359v-10.2515641h-8v10.2515641l2.089172 14.7484359h3.8184713zm-8 19.7484359v8h8v-8z"
16
10
  />
17
- <path
18
- d="m94.0140845 90-44.5547054-79-44.4593791 79z"
19
- fill="#f8e71c"
20
- fill-rule="nonzero"
21
- />
22
- <path
23
- d="m54 69v8h-8v-8zm0-30v10.2515641l-2.0923567 14.7484359h-3.8184713l-2.089172-14.7484359v-10.2515641z"
24
- fill="#000"
25
- />
26
- </g>
27
11
  <title>Content may be inappropriate</title>
28
12
  </svg>
29
13
  `;
@@ -11,18 +11,14 @@ export const baseItemImageStyles = css`
11
11
  }
12
12
 
13
13
  .list-box {
14
- width: 100%;
15
- height: 100%;
16
14
  overflow: hidden;
17
15
  box-sizing: border-box;
18
- display: flex;
16
+ display: inline-block;
19
17
  position: relative;
20
- max-width: 100px;
21
18
  }
22
19
 
23
20
  .contain {
24
21
  object-fit: contain;
25
- object-position: top;
26
22
  height: 100%;
27
23
  width: 100%;
28
24
  }
@@ -32,7 +28,8 @@ export const baseItemImageStyles = css`
32
28
  }
33
29
 
34
30
  .blur {
35
- filter: blur(5px);
31
+ filter: blur(15px);
32
+ box-shadow: 1px 1px 2px 0px;
36
33
  }
37
34
  `;
38
35
 
@@ -169,6 +169,8 @@ export class ItemTile extends LitElement {
169
169
  image-block {
170
170
  display: block;
171
171
  margin-bottom: 5px;
172
+ position: relative;
173
+ text-align: center;
172
174
  }
173
175
 
174
176
  image-block.has-snippets {
@@ -58,6 +58,7 @@ export class ImageBlock extends LitElement {
58
58
  <icon-overlay
59
59
  .loggedIn=${this.loggedIn}
60
60
  .loginRequired=${this.model?.loginRequired}
61
+ .isCompactTile=${this.isCompactTile}
61
62
  >
62
63
  </icon-overlay>
63
64
  `;
@@ -73,6 +74,7 @@ export class ImageBlock extends LitElement {
73
74
  <text-overlay
74
75
  .loggedIn=${this.loggedIn}
75
76
  .loginRequired=${this.model?.loginRequired}
77
+ ?iconRequired=${true}
76
78
  >
77
79
  </text-overlay>
78
80
  `;
@@ -89,12 +91,17 @@ export class ImageBlock extends LitElement {
89
91
  .grid {
90
92
  height: var(--imgBlockHeight, 16rem);
91
93
  flex: 1;
94
+ display: inline-block;
95
+ position: initial;
92
96
  }
93
97
 
94
98
  /** tile-list view */
95
99
  .list.desktop {
96
100
  width: 100px;
97
101
  height: 100px;
102
+ display: inline-block;
103
+ position: relative;
104
+ text-align: center;
98
105
  }
99
106
 
100
107
  .list.mobile {
@@ -105,6 +112,7 @@ export class ImageBlock extends LitElement {
105
112
  /** tile-list-compact view */
106
113
  .list-compact {
107
114
  display: block;
115
+ text-align: center;
108
116
  }
109
117
 
110
118
  .list-compact.desktop {
@@ -10,7 +10,19 @@ export class IconOverlay extends LitElement {
10
10
 
11
11
  @property({ type: Boolean }) loginRequired = false;
12
12
 
13
+ @property({ type: Boolean }) isCompactTile = false;
14
+
13
15
  render() {
16
+ return html`<div class="icon-overlay ${this.getClass}">
17
+ ${this.iconDisplay}
18
+ </div>`;
19
+ }
20
+
21
+ private get getClass() {
22
+ return this.isCompactTile ? 'list-compact' : 'list-detail';
23
+ }
24
+
25
+ private get iconDisplay() {
14
26
  return this.loginRequired && !this.loggedIn
15
27
  ? html`${loginRequiredIcon}`
16
28
  : html`${restrictedIcon}`;
@@ -23,10 +35,28 @@ export class IconOverlay extends LitElement {
23
35
  top: 50%;
24
36
  left: 50%;
25
37
  transform: translate(-50%, -50%);
26
- -ms-transform: translate(-50%, -50%);
27
- width: 50%;
28
- height: 50%;
38
+ width: 100%;
29
39
  z-index: 2;
40
+ background-color: rgb(255, 254, 203);
41
+ display: flex;
42
+ justify-content: center;
43
+ border: 1px solid #2c2c2c;
44
+ }
45
+
46
+ .icon-overlay {
47
+ height: 20px;
48
+ width: 20px;
49
+ padding: 2px;
50
+ padding: 2px;
51
+ }
52
+
53
+ .list-detail {
54
+ height: 20px;
55
+ width: 20px;
56
+ }
57
+ .list-compact {
58
+ height: 15px;
59
+ width: 15px;
30
60
  }
31
61
  `;
32
62
  }
@@ -0,0 +1,75 @@
1
+ import { css, CSSResultGroup, html, LitElement } from 'lit';
2
+ import { customElement, property } from 'lit/decorators.js';
3
+ import { loginRequiredIcon } from '../../assets/img/icons/login-required';
4
+ import { restrictedIcon } from '../../assets/img/icons/restricted';
5
+
6
+ @customElement('icon-text-overlay')
7
+ export class IconTextOverlay extends LitElement {
8
+ @property({ type: Boolean }) loggedIn = false;
9
+
10
+ @property({ type: Boolean }) loginRequired = false;
11
+
12
+ render() {
13
+ return html`
14
+ <div class="overlay no-preview">
15
+ <div class="icon-overlay">${this.iconDisplay}</div>
16
+ <p class="text-overlay">${this.textDisplay}</p>
17
+ </div>
18
+ `;
19
+ }
20
+
21
+ private get iconDisplay() {
22
+ return this.loginRequired && !this.loggedIn
23
+ ? html`${loginRequiredIcon}`
24
+ : html`${restrictedIcon}`;
25
+ }
26
+
27
+ private get textDisplay() {
28
+ return this.loginRequired && !this.loggedIn
29
+ ? 'Log in\nto view this item'
30
+ : 'Content may be inappropriate';
31
+ }
32
+
33
+ static get styles(): CSSResultGroup {
34
+ return css`
35
+ :host {
36
+ align-items: center;
37
+ display: flex;
38
+ }
39
+
40
+ .overlay {
41
+ border: 1px solid #2c2c2c;
42
+ border-radius: 1px;
43
+ position: absolute;
44
+ right: 0;
45
+ left: 0;
46
+ width: auto;
47
+ height: auto;
48
+ padding: 5px;
49
+ display: flex;
50
+ align-items: center;
51
+ border-radius: 1px;
52
+ text-align: center;
53
+ }
54
+
55
+ .icon-overlay {
56
+ width: 40px;
57
+ height: 40px;
58
+ display: inherit;
59
+ }
60
+ .text-overlay {
61
+ margin: 0;
62
+ vertical-align: bottom;
63
+ padding-left: 5px;
64
+ }
65
+
66
+ .no-preview {
67
+ background-color: #fffecb;
68
+ border: 1px solid #2c2c2c;
69
+ color: #2c2c2c;
70
+ font-size: 1.4rem;
71
+ line-height: 2rem;
72
+ }
73
+ `;
74
+ }
75
+ }
@@ -1,5 +1,7 @@
1
1
  import { css, CSSResultGroup, html, LitElement } from 'lit';
2
2
  import { customElement, property } from 'lit/decorators.js';
3
+ import { loginRequiredIcon } from '../../assets/img/icons/login-required';
4
+ import { restrictedIcon } from '../../assets/img/icons/restricted';
3
5
 
4
6
  @customElement('text-overlay')
5
7
  export class TextOverlay extends LitElement {
@@ -7,14 +9,27 @@ export class TextOverlay extends LitElement {
7
9
 
8
10
  @property({ type: Boolean }) loginRequired = false;
9
11
 
12
+ @property({ type: Boolean }) iconRequired = false;
13
+
10
14
  render() {
11
- return html` <div class="overlay no-preview">${this.textDisplay}</div> `;
15
+ return html`
16
+ <div class="overlay no-preview">
17
+ <div class="icon-overlay">${this.iconDisplay}</div>
18
+ <p class="text-overlay">${this.textDisplay}</p>
19
+ </div>
20
+ `;
21
+ }
22
+
23
+ private get iconDisplay() {
24
+ return this.loginRequired && !this.loggedIn
25
+ ? html`${loginRequiredIcon}`
26
+ : html`${restrictedIcon}`;
12
27
  }
13
28
 
14
29
  private get textDisplay() {
15
30
  return this.loginRequired && !this.loggedIn
16
- ? 'Log in\nto view this item'
17
- : 'Content may be inappropriate';
31
+ ? html`Log in to view this item`
32
+ : html`Content may be inappropriate`;
18
33
  }
19
34
 
20
35
  static get styles(): CSSResultGroup {
@@ -30,18 +45,30 @@ export class TextOverlay extends LitElement {
30
45
  position: absolute;
31
46
  right: 0;
32
47
  left: 0;
48
+ top: 50%;
49
+ transform: translate(0px, -50%);
33
50
  width: auto;
34
51
  height: auto;
35
52
  padding: 5px;
53
+ background-color: #fffecb;
54
+ display: flex;
55
+ align-items: center;
56
+ border-radius: 1px;
36
57
  }
37
58
 
38
- .no-preview {
39
- background-color: #fffecb;
59
+ .icon-overlay {
60
+ width: 40px;
61
+ height: 40px;
62
+ display: inherit;
63
+ }
64
+ .text-overlay {
65
+ margin: 0;
66
+ vertical-align: bottom;
67
+ padding-left: 5px;
68
+ text-align: center;
40
69
  color: #2c2c2c;
41
70
  font-size: 1.4rem;
42
71
  line-height: 2rem;
43
- text-align: center;
44
- white-space: pre-wrap; // for the newline character
45
72
  }
46
73
  `;
47
74
  }
@@ -106,7 +106,7 @@ describe('ItemImage component', () => {
106
106
  </item-image>
107
107
  `);
108
108
 
109
- // Doesn't set the image src if base url is undefined
109
+ // Doesn't set the image src if model is not present
110
110
  const img = el.shadowRoot?.querySelector('img');
111
111
  expect(img).to.exist;
112
112
  expect(img?.getAttribute('src')).not.to.exist;
@@ -123,7 +123,7 @@ describe('ItemImage component', () => {
123
123
  </item-image>
124
124
  `);
125
125
 
126
- // Doesn't set the image src if base url is undefined
126
+ // Doesn't set the image src if identifier is not present
127
127
  const img = el.shadowRoot?.querySelector('img');
128
128
  expect(img).to.exist;
129
129
  expect(img?.getAttribute('src')).not.to.exist;