@internetarchive/ia-topnav 0.0.0-webdev7666-1

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 (340) hide show
  1. package/.prettierignore +1 -0
  2. package/LICENSE +661 -0
  3. package/README.md +147 -0
  4. package/demo/app-root.ts +183 -0
  5. package/demo/index.html +27 -0
  6. package/dist/demo/app-root.d.ts +13 -0
  7. package/dist/demo/app-root.js +197 -0
  8. package/dist/demo/app-root.js.map +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.js +3 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/src/assets/img/hamburger.d.ts +7 -0
  13. package/dist/src/assets/img/hamburger.js +51 -0
  14. package/dist/src/assets/img/hamburger.js.map +1 -0
  15. package/dist/src/assets/img/ia-icon.d.ts +7 -0
  16. package/dist/src/assets/img/ia-icon.js +33 -0
  17. package/dist/src/assets/img/ia-icon.js.map +1 -0
  18. package/dist/src/assets/img/icon-audio.d.ts +2 -0
  19. package/dist/src/assets/img/icon-audio.js +28 -0
  20. package/dist/src/assets/img/icon-audio.js.map +1 -0
  21. package/dist/src/assets/img/icon-close.d.ts +2 -0
  22. package/dist/src/assets/img/icon-close.js +20 -0
  23. package/dist/src/assets/img/icon-close.js.map +1 -0
  24. package/dist/src/assets/img/icon-donate-unpadded.d.ts +2 -0
  25. package/dist/src/assets/img/icon-donate-unpadded.js +19 -0
  26. package/dist/src/assets/img/icon-donate-unpadded.js.map +1 -0
  27. package/dist/src/assets/img/icon-donate.d.ts +2 -0
  28. package/dist/src/assets/img/icon-donate.js +18 -0
  29. package/dist/src/assets/img/icon-donate.js.map +1 -0
  30. package/dist/src/assets/img/icon-ellipses.d.ts +2 -0
  31. package/dist/src/assets/img/icon-ellipses.js +19 -0
  32. package/dist/src/assets/img/icon-ellipses.js.map +1 -0
  33. package/dist/src/assets/img/icon-ia-logo.d.ts +2 -0
  34. package/dist/src/assets/img/icon-ia-logo.js +30 -0
  35. package/dist/src/assets/img/icon-ia-logo.js.map +1 -0
  36. package/dist/src/assets/img/icon-images.d.ts +2 -0
  37. package/dist/src/assets/img/icon-images.js +19 -0
  38. package/dist/src/assets/img/icon-images.js.map +1 -0
  39. package/dist/src/assets/img/icon-search.d.ts +2 -0
  40. package/dist/src/assets/img/icon-search.js +19 -0
  41. package/dist/src/assets/img/icon-search.js.map +1 -0
  42. package/dist/src/assets/img/icon-software.d.ts +2 -0
  43. package/dist/src/assets/img/icon-software.js +18 -0
  44. package/dist/src/assets/img/icon-software.js.map +1 -0
  45. package/dist/src/assets/img/icon-texts.d.ts +2 -0
  46. package/dist/src/assets/img/icon-texts.js +18 -0
  47. package/dist/src/assets/img/icon-texts.js.map +1 -0
  48. package/dist/src/assets/img/icon-upload-unpadded.d.ts +2 -0
  49. package/dist/src/assets/img/icon-upload-unpadded.js +18 -0
  50. package/dist/src/assets/img/icon-upload-unpadded.js.map +1 -0
  51. package/dist/src/assets/img/icon-upload.d.ts +2 -0
  52. package/dist/src/assets/img/icon-upload.js +21 -0
  53. package/dist/src/assets/img/icon-upload.js.map +1 -0
  54. package/dist/src/assets/img/icon-user.d.ts +2 -0
  55. package/dist/src/assets/img/icon-user.js +19 -0
  56. package/dist/src/assets/img/icon-user.js.map +1 -0
  57. package/dist/src/assets/img/icon-video.d.ts +2 -0
  58. package/dist/src/assets/img/icon-video.js +19 -0
  59. package/dist/src/assets/img/icon-video.js.map +1 -0
  60. package/dist/src/assets/img/icon-web.d.ts +2 -0
  61. package/dist/src/assets/img/icon-web.js +19 -0
  62. package/dist/src/assets/img/icon-web.js.map +1 -0
  63. package/dist/src/assets/img/icon.d.ts +5 -0
  64. package/dist/src/assets/img/icon.js +17 -0
  65. package/dist/src/assets/img/icon.js.map +1 -0
  66. package/dist/src/assets/img/icons.d.ts +18 -0
  67. package/dist/src/assets/img/icons.js +33 -0
  68. package/dist/src/assets/img/icons.js.map +1 -0
  69. package/dist/src/assets/img/wordmark-stacked.d.ts +2 -0
  70. package/dist/src/assets/img/wordmark-stacked.js +13 -0
  71. package/dist/src/assets/img/wordmark-stacked.js.map +1 -0
  72. package/dist/src/data/menus.d.ts +20 -0
  73. package/dist/src/data/menus.js +676 -0
  74. package/dist/src/data/menus.js.map +1 -0
  75. package/dist/src/desktop-subnav.d.ts +11 -0
  76. package/dist/src/desktop-subnav.js +55 -0
  77. package/dist/src/desktop-subnav.js.map +1 -0
  78. package/dist/src/dropdown-menu.d.ts +19 -0
  79. package/dist/src/dropdown-menu.js +116 -0
  80. package/dist/src/dropdown-menu.js.map +1 -0
  81. package/dist/src/ia-topnav.d.ts +67 -0
  82. package/dist/src/ia-topnav.js +312 -0
  83. package/dist/src/ia-topnav.js.map +1 -0
  84. package/dist/src/lib/format-url.d.ts +2 -0
  85. package/dist/src/lib/format-url.js +2 -0
  86. package/dist/src/lib/format-url.js.map +1 -0
  87. package/dist/src/lib/keyboard-navigation.d.ts +50 -0
  88. package/dist/src/lib/keyboard-navigation.js +136 -0
  89. package/dist/src/lib/keyboard-navigation.js.map +1 -0
  90. package/dist/src/lib/location-handler.d.ts +1 -0
  91. package/dist/src/lib/location-handler.js +5 -0
  92. package/dist/src/lib/location-handler.js.map +1 -0
  93. package/dist/src/lib/make-boolean-string.d.ts +2 -0
  94. package/dist/src/lib/make-boolean-string.js +12 -0
  95. package/dist/src/lib/make-boolean-string.js.map +1 -0
  96. package/dist/src/lib/query-handler.d.ts +4 -0
  97. package/dist/src/lib/query-handler.js +7 -0
  98. package/dist/src/lib/query-handler.js.map +1 -0
  99. package/dist/src/lib/t-sentence-case.d.ts +2 -0
  100. package/dist/src/lib/t-sentence-case.js +10 -0
  101. package/dist/src/lib/t-sentence-case.js.map +1 -0
  102. package/dist/src/login-button.d.ts +16 -0
  103. package/dist/src/login-button.js +83 -0
  104. package/dist/src/login-button.js.map +1 -0
  105. package/dist/src/media-button.d.ts +24 -0
  106. package/dist/src/media-button.js +119 -0
  107. package/dist/src/media-button.js.map +1 -0
  108. package/dist/src/media-menu.d.ts +20 -0
  109. package/dist/src/media-menu.js +148 -0
  110. package/dist/src/media-menu.js.map +1 -0
  111. package/dist/src/media-slider.d.ts +15 -0
  112. package/dist/src/media-slider.js +139 -0
  113. package/dist/src/media-slider.js.map +1 -0
  114. package/dist/src/media-subnav.d.ts +18 -0
  115. package/dist/src/media-subnav.js +126 -0
  116. package/dist/src/media-subnav.js.map +1 -0
  117. package/dist/src/models.d.ts +51 -0
  118. package/dist/src/models.js +2 -0
  119. package/dist/src/models.js.map +1 -0
  120. package/dist/src/more-slider.d.ts +10 -0
  121. package/dist/src/more-slider.js +50 -0
  122. package/dist/src/more-slider.js.map +1 -0
  123. package/dist/src/nav-search.d.ts +19 -0
  124. package/dist/src/nav-search.js +124 -0
  125. package/dist/src/nav-search.js.map +1 -0
  126. package/dist/src/primary-nav.d.ts +45 -0
  127. package/dist/src/primary-nav.js +280 -0
  128. package/dist/src/primary-nav.js.map +1 -0
  129. package/dist/src/save-page-form.d.ts +10 -0
  130. package/dist/src/save-page-form.js +63 -0
  131. package/dist/src/save-page-form.js.map +1 -0
  132. package/dist/src/search-menu.d.ts +20 -0
  133. package/dist/src/search-menu.js +162 -0
  134. package/dist/src/search-menu.js.map +1 -0
  135. package/dist/src/signed-out-dropdown.d.ts +4 -0
  136. package/dist/src/signed-out-dropdown.js +15 -0
  137. package/dist/src/signed-out-dropdown.js.map +1 -0
  138. package/dist/src/styles/base.d.ts +1 -0
  139. package/dist/src/styles/base.js +48 -0
  140. package/dist/src/styles/base.js.map +1 -0
  141. package/dist/src/styles/desktop-subnav.d.ts +2 -0
  142. package/dist/src/styles/desktop-subnav.js +37 -0
  143. package/dist/src/styles/desktop-subnav.js.map +1 -0
  144. package/dist/src/styles/dropdown-menu.d.ts +2 -0
  145. package/dist/src/styles/dropdown-menu.js +170 -0
  146. package/dist/src/styles/dropdown-menu.js.map +1 -0
  147. package/dist/src/styles/ia-topnav.d.ts +2 -0
  148. package/dist/src/styles/ia-topnav.js +87 -0
  149. package/dist/src/styles/ia-topnav.js.map +1 -0
  150. package/dist/src/styles/login-button.d.ts +2 -0
  151. package/dist/src/styles/login-button.js +82 -0
  152. package/dist/src/styles/login-button.js.map +1 -0
  153. package/dist/src/styles/media-button.d.ts +2 -0
  154. package/dist/src/styles/media-button.js +156 -0
  155. package/dist/src/styles/media-button.js.map +1 -0
  156. package/dist/src/styles/media-menu.d.ts +2 -0
  157. package/dist/src/styles/media-menu.js +66 -0
  158. package/dist/src/styles/media-menu.js.map +1 -0
  159. package/dist/src/styles/media-slider.d.ts +2 -0
  160. package/dist/src/styles/media-slider.js +81 -0
  161. package/dist/src/styles/media-slider.js.map +1 -0
  162. package/dist/src/styles/media-subnav.d.ts +2 -0
  163. package/dist/src/styles/media-subnav.js +159 -0
  164. package/dist/src/styles/media-subnav.js.map +1 -0
  165. package/dist/src/styles/more-slider.d.ts +2 -0
  166. package/dist/src/styles/more-slider.js +15 -0
  167. package/dist/src/styles/more-slider.js.map +1 -0
  168. package/dist/src/styles/nav-search.d.ts +2 -0
  169. package/dist/src/styles/nav-search.js +136 -0
  170. package/dist/src/styles/nav-search.js.map +1 -0
  171. package/dist/src/styles/primary-nav.d.ts +2 -0
  172. package/dist/src/styles/primary-nav.js +310 -0
  173. package/dist/src/styles/primary-nav.js.map +1 -0
  174. package/dist/src/styles/save-page-form.d.ts +2 -0
  175. package/dist/src/styles/save-page-form.js +54 -0
  176. package/dist/src/styles/save-page-form.js.map +1 -0
  177. package/dist/src/styles/search-menu.d.ts +2 -0
  178. package/dist/src/styles/search-menu.js +105 -0
  179. package/dist/src/styles/search-menu.js.map +1 -0
  180. package/dist/src/styles/signed-out-dropdown.d.ts +2 -0
  181. package/dist/src/styles/signed-out-dropdown.js +31 -0
  182. package/dist/src/styles/signed-out-dropdown.js.map +1 -0
  183. package/dist/src/styles/user-menu.d.ts +2 -0
  184. package/dist/src/styles/user-menu.js +31 -0
  185. package/dist/src/styles/user-menu.js.map +1 -0
  186. package/dist/src/styles/wayback-search.d.ts +2 -0
  187. package/dist/src/styles/wayback-search.js +48 -0
  188. package/dist/src/styles/wayback-search.js.map +1 -0
  189. package/dist/src/styles/wayback-slider.d.ts +2 -0
  190. package/dist/src/styles/wayback-slider.js +33 -0
  191. package/dist/src/styles/wayback-slider.js.map +1 -0
  192. package/dist/src/tracked-element.d.ts +5 -0
  193. package/dist/src/tracked-element.js +30 -0
  194. package/dist/src/tracked-element.js.map +1 -0
  195. package/dist/src/user-menu.d.ts +10 -0
  196. package/dist/src/user-menu.js +60 -0
  197. package/dist/src/user-menu.js.map +1 -0
  198. package/dist/src/wayback-search.d.ts +4 -0
  199. package/dist/src/wayback-search.js +14 -0
  200. package/dist/src/wayback-search.js.map +1 -0
  201. package/dist/src/wayback-slider.d.ts +18 -0
  202. package/dist/src/wayback-slider.js +99 -0
  203. package/dist/src/wayback-slider.js.map +1 -0
  204. package/dist/test/assets/img/hamburger.test.d.ts +1 -0
  205. package/dist/test/assets/img/hamburger.test.js +13 -0
  206. package/dist/test/assets/img/hamburger.test.js.map +1 -0
  207. package/dist/test/data/menus.test.d.ts +1 -0
  208. package/dist/test/data/menus.test.js +11 -0
  209. package/dist/test/data/menus.test.js.map +1 -0
  210. package/dist/test/dropdown-menu.test.d.ts +1 -0
  211. package/dist/test/dropdown-menu.test.js +20 -0
  212. package/dist/test/dropdown-menu.test.js.map +1 -0
  213. package/dist/test/ia-icon.test.d.ts +1 -0
  214. package/dist/test/ia-icon.test.js +11 -0
  215. package/dist/test/ia-icon.test.js.map +1 -0
  216. package/dist/test/ia-topnav.test.d.ts +1 -0
  217. package/dist/test/ia-topnav.test.js +232 -0
  218. package/dist/test/ia-topnav.test.js.map +1 -0
  219. package/dist/test/login-button.test.d.ts +1 -0
  220. package/dist/test/login-button.test.js +14 -0
  221. package/dist/test/login-button.test.js.map +1 -0
  222. package/dist/test/media-button.test.d.ts +1 -0
  223. package/dist/test/media-button.test.js +13 -0
  224. package/dist/test/media-button.test.js.map +1 -0
  225. package/dist/test/media-menu.test.d.ts +1 -0
  226. package/dist/test/media-menu.test.js +27 -0
  227. package/dist/test/media-menu.test.js.map +1 -0
  228. package/dist/test/media-slider.test.d.ts +1 -0
  229. package/dist/test/media-slider.test.js +47 -0
  230. package/dist/test/media-slider.test.js.map +1 -0
  231. package/dist/test/more-slider.test.d.ts +1 -0
  232. package/dist/test/more-slider.test.js +17 -0
  233. package/dist/test/more-slider.test.js.map +1 -0
  234. package/dist/test/nav-search.test.d.ts +1 -0
  235. package/dist/test/nav-search.test.js +47 -0
  236. package/dist/test/nav-search.test.js.map +1 -0
  237. package/dist/test/primary-nav.test.d.ts +1 -0
  238. package/dist/test/primary-nav.test.js +55 -0
  239. package/dist/test/primary-nav.test.js.map +1 -0
  240. package/dist/test/save-page-form.test.d.ts +1 -0
  241. package/dist/test/save-page-form.test.js +47 -0
  242. package/dist/test/save-page-form.test.js.map +1 -0
  243. package/dist/test/search-menu.test.d.ts +1 -0
  244. package/dist/test/search-menu.test.js +42 -0
  245. package/dist/test/search-menu.test.js.map +1 -0
  246. package/dist/test/user-menu.test.d.ts +1 -0
  247. package/dist/test/user-menu.test.js +28 -0
  248. package/dist/test/user-menu.test.js.map +1 -0
  249. package/dist/test/wayback-slider.test.d.ts +1 -0
  250. package/dist/test/wayback-slider.test.js +80 -0
  251. package/dist/test/wayback-slider.test.js.map +1 -0
  252. package/eslint.config.mjs +53 -0
  253. package/index.ts +3 -0
  254. package/package.json +71 -0
  255. package/prettier.config.js +9 -0
  256. package/src/assets/img/hamburger.ts +49 -0
  257. package/src/assets/img/ia-icon.ts +24 -0
  258. package/src/assets/img/icon-audio.ts +28 -0
  259. package/src/assets/img/icon-close.ts +20 -0
  260. package/src/assets/img/icon-donate-unpadded.ts +19 -0
  261. package/src/assets/img/icon-donate.ts +18 -0
  262. package/src/assets/img/icon-ellipses.ts +19 -0
  263. package/src/assets/img/icon-ia-logo.ts +30 -0
  264. package/src/assets/img/icon-images.ts +19 -0
  265. package/src/assets/img/icon-search.ts +19 -0
  266. package/src/assets/img/icon-software.ts +18 -0
  267. package/src/assets/img/icon-texts.ts +18 -0
  268. package/src/assets/img/icon-upload-unpadded.ts +18 -0
  269. package/src/assets/img/icon-upload.ts +21 -0
  270. package/src/assets/img/icon-user.ts +19 -0
  271. package/src/assets/img/icon-video.ts +19 -0
  272. package/src/assets/img/icon-web.ts +19 -0
  273. package/src/assets/img/icon.ts +8 -0
  274. package/src/assets/img/icons.ts +33 -0
  275. package/src/assets/img/wordmark-stacked.ts +13 -0
  276. package/src/data/menus.ts +691 -0
  277. package/src/desktop-subnav.ts +49 -0
  278. package/src/dropdown-menu.ts +106 -0
  279. package/src/ia-topnav.ts +323 -0
  280. package/src/lib/format-url.ts +2 -0
  281. package/src/lib/keyboard-navigation.ts +158 -0
  282. package/src/lib/location-handler.ts +5 -0
  283. package/src/lib/make-boolean-string.ts +12 -0
  284. package/src/lib/query-handler.ts +7 -0
  285. package/src/lib/t-sentence-case.ts +10 -0
  286. package/src/login-button.ts +75 -0
  287. package/src/media-button.ts +103 -0
  288. package/src/media-menu.ts +143 -0
  289. package/src/media-slider.ts +130 -0
  290. package/src/media-subnav.ts +132 -0
  291. package/src/models.ts +63 -0
  292. package/src/more-slider.ts +42 -0
  293. package/src/nav-search.ts +114 -0
  294. package/src/primary-nav.ts +266 -0
  295. package/src/save-page-form.ts +59 -0
  296. package/src/search-menu.ts +156 -0
  297. package/src/signed-out-dropdown.ts +11 -0
  298. package/src/styles/base.ts +48 -0
  299. package/src/styles/desktop-subnav.ts +37 -0
  300. package/src/styles/dropdown-menu.ts +170 -0
  301. package/src/styles/ia-topnav.ts +87 -0
  302. package/src/styles/login-button.ts +82 -0
  303. package/src/styles/media-button.ts +156 -0
  304. package/src/styles/media-menu.ts +66 -0
  305. package/src/styles/media-slider.ts +81 -0
  306. package/src/styles/media-subnav.ts +159 -0
  307. package/src/styles/more-slider.ts +15 -0
  308. package/src/styles/nav-search.ts +136 -0
  309. package/src/styles/primary-nav.ts +310 -0
  310. package/src/styles/save-page-form.ts +54 -0
  311. package/src/styles/search-menu.ts +105 -0
  312. package/src/styles/signed-out-dropdown.ts +31 -0
  313. package/src/styles/user-menu.ts +31 -0
  314. package/src/styles/wayback-search.ts +48 -0
  315. package/src/styles/wayback-slider.ts +33 -0
  316. package/src/tracked-element.ts +32 -0
  317. package/src/user-menu.ts +57 -0
  318. package/src/wayback-search.ts +10 -0
  319. package/src/wayback-slider.ts +88 -0
  320. package/ssl/server.crt +22 -0
  321. package/ssl/server.key +28 -0
  322. package/test/assets/img/hamburger.test.ts +18 -0
  323. package/test/data/menus.test.ts +15 -0
  324. package/test/dropdown-menu.test.ts +23 -0
  325. package/test/ia-icon.test.ts +15 -0
  326. package/test/ia-topnav.test.ts +343 -0
  327. package/test/login-button.test.ts +19 -0
  328. package/test/media-button.test.ts +19 -0
  329. package/test/media-menu.test.ts +42 -0
  330. package/test/media-slider.test.ts +63 -0
  331. package/test/more-slider.test.ts +21 -0
  332. package/test/nav-search.test.ts +70 -0
  333. package/test/primary-nav.test.ts +94 -0
  334. package/test/save-page-form.test.ts +62 -0
  335. package/test/search-menu.test.ts +58 -0
  336. package/test/user-menu.test.ts +34 -0
  337. package/test/wayback-slider.test.ts +97 -0
  338. package/tsconfig.json +31 -0
  339. package/web-dev-server.config.mjs +32 -0
  340. package/web-test-runner.config.mjs +41 -0
@@ -0,0 +1,691 @@
1
+ // @see https://git.archive.org/www/offshoot/-/blob/main/guides/update-top-nav.md
2
+
3
+ import { IATopNavConfig, IATopNavMenuConfig } from '../models';
4
+
5
+ export const defaultTopNavConfig: IATopNavConfig = {
6
+ // Google Analytics event category
7
+ eventCategory: 'TopNav',
8
+ // Array of strings representing the values of options that should be hidden from search options
9
+ hiddenSearchOptions: [],
10
+ // Default value, if more accurate value is not passed in to `buildTopNavMenus()`
11
+ waybackPagesArchived: '740 billion',
12
+ };
13
+
14
+ /**
15
+ * Creates archive.org top navigation configuration
16
+ * @param { string } userid archive.org account (immutable) userid
17
+ * @param { boolean } localLinks passing in false will ensure all links begin: https://archive.org
18
+ * @param { string } waybackPagesArchived label readable 'how many pages in WayBack machine?'
19
+ * If you don't pass in something, you'll get the potentially
20
+ * older/less accurate version. Otherwise,
21
+ * @see waybackPagesArchivedFN() (below) (please cache it)
22
+ * for a live service accurate count result.
23
+ * @param { string } itemIdentifier The current item being viewed, to populate admin menu items
24
+ * @returns { object }
25
+ */
26
+ export function buildTopNavMenus(
27
+ userid: string = '___USERID___',
28
+ baseHost: string = 'https://archive.org',
29
+ waybackPagesArchived: string = '',
30
+ itemIdentifier: string = '',
31
+ ): IATopNavMenuConfig {
32
+ if (waybackPagesArchived)
33
+ defaultTopNavConfig.waybackPagesArchived = waybackPagesArchived; // update to more accurate val
34
+
35
+ return {
36
+ audio: {
37
+ heading: 'Internet Archive Audio',
38
+ iconLinks: [
39
+ {
40
+ icon: `${baseHost}/services/img/etree`,
41
+ title: 'Live Music Archive',
42
+ url: `${baseHost}/details/etree`,
43
+ },
44
+ {
45
+ icon: `${baseHost}/services/img/librivoxaudio`,
46
+ title: 'Librivox Free Audio',
47
+ url: `${baseHost}/details/librivoxaudio`,
48
+ },
49
+ ],
50
+ featuredLinks: [
51
+ {
52
+ title: 'All Audio',
53
+ url: `${baseHost}/details/audio`,
54
+ },
55
+ {
56
+ title: 'Grateful Dead',
57
+ url: `${baseHost}/details/GratefulDead`,
58
+ },
59
+ {
60
+ title: 'Netlabels',
61
+ url: `${baseHost}/details/netlabels`,
62
+ },
63
+ {
64
+ title: 'Old Time Radio',
65
+ url: `${baseHost}/details/oldtimeradio`,
66
+ },
67
+ {
68
+ title: '78 RPMs and Cylinder Recordings',
69
+ url: `${baseHost}/details/78rpm`,
70
+ },
71
+ ],
72
+ links: [
73
+ {
74
+ title: 'Audio Books & Poetry',
75
+ url: `${baseHost}/details/audio_bookspoetry`,
76
+ },
77
+ {
78
+ title: 'Computers, Technology and Science',
79
+ url: `${baseHost}/details/audio_tech`,
80
+ },
81
+ {
82
+ title: 'Music, Arts & Culture',
83
+ url: `${baseHost}/details/audio_music`,
84
+ },
85
+ {
86
+ title: 'News & Public Affairs',
87
+ url: `${baseHost}/details/audio_news`,
88
+ },
89
+ {
90
+ title: 'Spirituality & Religion',
91
+ url: `${baseHost}/details/audio_religion`,
92
+ },
93
+ {
94
+ title: 'Podcasts',
95
+ url: `${baseHost}/details/podcasts`,
96
+ },
97
+ {
98
+ title: 'Radio News Archive',
99
+ url: `${baseHost}/details/radio`,
100
+ },
101
+ ],
102
+ mobileAppsLinks: [],
103
+ browserExtensionsLinks: [],
104
+ archiveItLinks: [],
105
+ },
106
+ images: {
107
+ heading: 'Images',
108
+ iconLinks: [
109
+ {
110
+ icon: `${baseHost}/services/img/metropolitanmuseumofart-gallery`,
111
+ title: 'Metropolitan Museum',
112
+ url: `${baseHost}/details/metropolitanmuseumofart-gallery`,
113
+ },
114
+ {
115
+ icon: `${baseHost}/services/img/clevelandart`,
116
+ title: 'Cleveland Museum of Art',
117
+ url: `${baseHost}/details/clevelandart`,
118
+ },
119
+ ],
120
+ featuredLinks: [
121
+ {
122
+ title: 'All Images',
123
+ url: `${baseHost}/details/image`,
124
+ },
125
+ {
126
+ title: 'Flickr Commons',
127
+ url: `${baseHost}/details/flickrcommons`,
128
+ },
129
+ {
130
+ title: 'Occupy Wall Street Flickr',
131
+ url: `${baseHost}/details/flickr-ows`,
132
+ },
133
+ {
134
+ title: 'Cover Art',
135
+ url: `${baseHost}/details/coverartarchive`,
136
+ },
137
+ {
138
+ title: 'USGS Maps',
139
+ url: `${baseHost}/details/maps_usgs`,
140
+ },
141
+ ],
142
+ links: [
143
+ {
144
+ title: 'NASA Images',
145
+ url: `${baseHost}/details/nasa`,
146
+ },
147
+ {
148
+ title: 'Solar System Collection',
149
+ url: `${baseHost}/details/solarsystemcollection`,
150
+ },
151
+ {
152
+ title: 'Ames Research Center',
153
+ url: `${baseHost}/details/amesresearchcenterimagelibrary`,
154
+ },
155
+ ],
156
+ mobileAppsLinks: [],
157
+ browserExtensionsLinks: [],
158
+ archiveItLinks: [],
159
+ },
160
+ more: {
161
+ links: [
162
+ {
163
+ title: 'About',
164
+ url: `${baseHost}/about/`,
165
+ },
166
+ {
167
+ title: 'Blog',
168
+ url: 'https://blog.archive.org',
169
+ },
170
+ {
171
+ title: 'Projects',
172
+ url: `${baseHost}/projects/`,
173
+ },
174
+ {
175
+ title: 'Help',
176
+ url: `${baseHost}/about/faqs.php`,
177
+ },
178
+ {
179
+ title: 'Donate',
180
+ url: `${baseHost}/donate?origin=iawww-TopNavDonateButton`,
181
+ },
182
+ {
183
+ title: 'Contact',
184
+ url: `${baseHost}/about/contact`,
185
+ },
186
+ {
187
+ title: 'Jobs',
188
+ url: `${baseHost}/about/jobs`,
189
+ },
190
+ {
191
+ title: 'Volunteer',
192
+ url: `${baseHost}/about/volunteer-positions`,
193
+ },
194
+ {
195
+ title: 'People',
196
+ url: `${baseHost}/about/bios`,
197
+ },
198
+ ],
199
+ heading: '',
200
+ iconLinks: [],
201
+ featuredLinks: [],
202
+ mobileAppsLinks: [],
203
+ browserExtensionsLinks: [],
204
+ archiveItLinks: [],
205
+ },
206
+ software: {
207
+ heading: 'Software',
208
+ iconLinks: [
209
+ {
210
+ icon: `${baseHost}/services/img/internetarcade`,
211
+ title: 'Internet Arcade',
212
+ url: `${baseHost}/details/internetarcade`,
213
+ },
214
+ {
215
+ icon: `${baseHost}/services/img/consolelivingroom`,
216
+ title: 'Console Living Room',
217
+ url: `${baseHost}/details/consolelivingroom`,
218
+ },
219
+ ],
220
+ featuredLinks: [
221
+ {
222
+ title: 'All Software',
223
+ url: `${baseHost}/details/software`,
224
+ },
225
+ {
226
+ title: 'Old School Emulation',
227
+ url: `${baseHost}/details/tosec`,
228
+ },
229
+ {
230
+ title: 'MS-DOS Games',
231
+ url: `${baseHost}/details/softwarelibrary_msdos_games`,
232
+ },
233
+ {
234
+ title: 'Historical Software',
235
+ url: `${baseHost}/details/historicalsoftware`,
236
+ },
237
+ {
238
+ title: 'Classic PC Games',
239
+ url: `${baseHost}/details/classicpcgames`,
240
+ },
241
+ {
242
+ title: 'Software Library',
243
+ url: `${baseHost}/details/softwarelibrary`,
244
+ },
245
+ ],
246
+ links: [
247
+ {
248
+ title: 'Kodi Archive and Support File',
249
+ url: `${baseHost}/details/kodi_archive`,
250
+ },
251
+ {
252
+ title: 'Vintage Software',
253
+ url: `${baseHost}/details/vintagesoftware`,
254
+ },
255
+ {
256
+ title: 'APK',
257
+ url: `${baseHost}/details/apkarchive`,
258
+ },
259
+ {
260
+ title: 'MS-DOS',
261
+ url: `${baseHost}/details/softwarelibrary_msdos`,
262
+ },
263
+ {
264
+ title: 'CD-ROM Software',
265
+ url: `${baseHost}/details/cd-roms`,
266
+ },
267
+ {
268
+ title: 'CD-ROM Software Library',
269
+ url: `${baseHost}/details/cdromsoftware`,
270
+ },
271
+ {
272
+ title: 'Software Sites',
273
+ url: `${baseHost}/details/softwaresites`,
274
+ },
275
+ {
276
+ title: 'Tucows Software Library',
277
+ url: `${baseHost}/details/tucows`,
278
+ },
279
+ {
280
+ title: 'Shareware CD-ROMs',
281
+ url: `${baseHost}/details/cdbbsarchive`,
282
+ },
283
+ {
284
+ title: 'Software Capsules Compilation',
285
+ url: `${baseHost}/details/softwarecapsules`,
286
+ },
287
+ {
288
+ title: 'CD-ROM Images',
289
+ url: `${baseHost}/details/cdromimages`,
290
+ },
291
+ {
292
+ title: 'ZX Spectrum',
293
+ url: `${baseHost}/details/softwarelibrary_zx_spectrum`,
294
+ },
295
+ {
296
+ title: 'DOOM Level CD',
297
+ url: `${baseHost}/details/doom-cds`,
298
+ },
299
+ ],
300
+ mobileAppsLinks: [],
301
+ browserExtensionsLinks: [],
302
+ archiveItLinks: [],
303
+ },
304
+ texts: {
305
+ heading: 'Texts',
306
+ iconLinks: [
307
+ {
308
+ title: 'Open Library',
309
+ icon: `${baseHost}/images/widgetOL.png`,
310
+ url: 'https://openlibrary.org/',
311
+ },
312
+ {
313
+ title: 'American Libraries',
314
+ icon: `${baseHost}/services/img/americana`,
315
+ url: `${baseHost}/details/americana`,
316
+ },
317
+ ],
318
+ featuredLinks: [
319
+ {
320
+ title: 'All Texts',
321
+ url: `${baseHost}/details/texts`,
322
+ },
323
+ {
324
+ title: 'Smithsonian Libraries',
325
+ url: `${baseHost}/details/smithsonian`,
326
+ },
327
+ {
328
+ title: 'FEDLINK (US)',
329
+ url: `${baseHost}/details/fedlink`,
330
+ },
331
+ {
332
+ title: 'Genealogy',
333
+ url: `${baseHost}/details/genealogy`,
334
+ },
335
+ {
336
+ title: 'Lincoln Collection',
337
+ url: `${baseHost}/details/lincolncollection`,
338
+ },
339
+ ],
340
+ links: [
341
+ {
342
+ title: 'American Libraries',
343
+ url: `${baseHost}/details/americana`,
344
+ },
345
+ {
346
+ title: 'Canadian Libraries',
347
+ url: `${baseHost}/details/toronto`,
348
+ },
349
+ {
350
+ title: 'Universal Library',
351
+ url: `${baseHost}/details/universallibrary`,
352
+ },
353
+ {
354
+ title: 'Project Gutenberg',
355
+ url: `${baseHost}/details/gutenberg`,
356
+ },
357
+ {
358
+ title: "Children's Library",
359
+ url: `${baseHost}/details/iacl`,
360
+ },
361
+ {
362
+ title: 'Biodiversity Heritage Library',
363
+ url: `${baseHost}/details/biodiversity`,
364
+ },
365
+ {
366
+ title: 'Books by Language',
367
+ url: `${baseHost}/details/booksbylanguage`,
368
+ },
369
+ {
370
+ title: 'Additional Collections',
371
+ url: `${baseHost}/details/additional_collections`,
372
+ },
373
+ ],
374
+ mobileAppsLinks: [],
375
+ browserExtensionsLinks: [],
376
+ archiveItLinks: [],
377
+ },
378
+ web: {
379
+ mobileAppsLinks: [
380
+ {
381
+ url: 'https://apps.apple.com/us/app/wayback-machine/id1201888313',
382
+ title: 'Wayback Machine (iOS)',
383
+ external: true,
384
+ },
385
+ {
386
+ url: 'https://play.google.com/store/apps/details?id=com.internetarchive.waybackmachine',
387
+ title: 'Wayback Machine (Android)',
388
+ external: true,
389
+ },
390
+ ],
391
+ browserExtensionsLinks: [
392
+ {
393
+ url: 'https://chrome.google.com/webstore/detail/wayback-machine/fpnmgdkabkmnadcjpehmlllkndpkmiak',
394
+ title: 'Chrome',
395
+ external: true,
396
+ },
397
+ {
398
+ url: 'https://addons.mozilla.org/en-US/firefox/addon/wayback-machine_new/',
399
+ title: 'Firefox',
400
+ external: true,
401
+ },
402
+ {
403
+ url: 'https://apps.apple.com/us/app/wayback-machine/id1472432422?mt=12',
404
+ title: 'Safari',
405
+ external: true,
406
+ },
407
+ {
408
+ url: 'https://microsoftedge.microsoft.com/addons/detail/wayback-machine/kjmickeoogghaimmomagaghnogelpcpn?hl=en-US',
409
+ title: 'Edge',
410
+ external: true,
411
+ },
412
+ ],
413
+ archiveItLinks: [
414
+ {
415
+ url: 'https://www.archive-it.org/explore',
416
+ title: 'Explore the Collections',
417
+ external: true,
418
+ },
419
+ {
420
+ url: 'https://www.archive-it.org/blog/learn-more/',
421
+ title: 'Learn More',
422
+ external: true,
423
+ },
424
+ {
425
+ url: 'https://www.archive-it.org/contact-us',
426
+ title: 'Build Collections',
427
+ external: true,
428
+ },
429
+ ],
430
+ heading: '',
431
+ iconLinks: [],
432
+ featuredLinks: [],
433
+ links: [],
434
+ },
435
+ video: {
436
+ heading: 'Video',
437
+ iconLinks: [
438
+ {
439
+ icon: `${baseHost}/services/img/tv`,
440
+ title: 'TV News',
441
+ url: `${baseHost}/details/tv`,
442
+ },
443
+ {
444
+ icon: `${baseHost}/services/img/911`,
445
+ title: 'Understanding 9/11',
446
+ url: `${baseHost}/details/911`,
447
+ },
448
+ ],
449
+ featuredLinks: [
450
+ {
451
+ title: 'All Video',
452
+ url: `${baseHost}/details/movies`,
453
+ },
454
+ {
455
+ title: 'Prelinger Archives',
456
+ url: `${baseHost}/details/prelinger`,
457
+ },
458
+ {
459
+ title: 'Democracy Now!',
460
+ url: `${baseHost}/details/democracy_now_vid`,
461
+ },
462
+ {
463
+ title: 'Occupy Wall Street',
464
+ url: `${baseHost}/details/occupywallstreet`,
465
+ },
466
+ {
467
+ title: 'TV NSA Clip Library',
468
+ url: `${baseHost}/details/nsa`,
469
+ },
470
+ ],
471
+ links: [
472
+ {
473
+ title: 'Animation & Cartoons',
474
+ url: `${baseHost}/details/animationandcartoons`,
475
+ },
476
+ {
477
+ title: 'Arts & Music',
478
+ url: `${baseHost}/details/artsandmusicvideos`,
479
+ },
480
+ {
481
+ title: 'Computers & Technology',
482
+ url: `${baseHost}/details/computersandtechvideos`,
483
+ },
484
+ {
485
+ title: 'Cultural & Academic Films',
486
+ url: `${baseHost}/details/culturalandacademicfilms`,
487
+ },
488
+ {
489
+ title: 'Ephemeral Films',
490
+ url: `${baseHost}/details/ephemera`,
491
+ },
492
+ {
493
+ title: 'Movies',
494
+ url: `${baseHost}/details/moviesandfilms`,
495
+ },
496
+ {
497
+ title: 'News & Public Affairs',
498
+ url: `${baseHost}/details/newsandpublicaffairs`,
499
+ },
500
+ {
501
+ title: 'Spirituality & Religion',
502
+ url: `${baseHost}/details/spiritualityandreligion`,
503
+ },
504
+ {
505
+ title: 'Sports Videos',
506
+ url: `${baseHost}/details/sports`,
507
+ },
508
+ {
509
+ title: 'Television',
510
+ url: `${baseHost}/details/television`,
511
+ },
512
+ {
513
+ title: 'Videogame Videos',
514
+ url: `${baseHost}/details/gamevideos`,
515
+ },
516
+ {
517
+ title: 'Vlogs',
518
+ url: `${baseHost}/details/vlogs`,
519
+ },
520
+ {
521
+ title: 'Youth Media',
522
+ url: `${baseHost}/details/youth_media`,
523
+ },
524
+ ],
525
+ mobileAppsLinks: [],
526
+ browserExtensionsLinks: [],
527
+ archiveItLinks: [],
528
+ },
529
+ user: [
530
+ {
531
+ url: `${baseHost}/upload`,
532
+ title: 'Upload files',
533
+ analyticsEvent: 'UserUpload',
534
+ class: 'mobile-upload',
535
+ },
536
+ {
537
+ url: `${baseHost}/details/@${userid}`,
538
+ title: 'My uploads',
539
+ analyticsEvent: 'UserLibrary',
540
+ },
541
+ {
542
+ url: `${baseHost}/details/@${userid}/loans`,
543
+ title: 'My loans',
544
+ analyticsEvent: 'UserLoans',
545
+ },
546
+ {
547
+ url: `${baseHost}/details/fav-${userid}`,
548
+ title: 'My favorites',
549
+ analyticsEvent: 'UserFavorites',
550
+ },
551
+ {
552
+ url: `${baseHost}/details/@${userid}/lists`,
553
+ title: 'My lists',
554
+ analyticsEvent: 'UserLists',
555
+ },
556
+ {
557
+ url: `${baseHost}/details/@${userid}/collections`,
558
+ title: 'My collections',
559
+ analyticsEvent: 'UserCollections',
560
+ },
561
+ {
562
+ url: `${baseHost}/details/@${userid}/web-archive`,
563
+ title: 'My web archives',
564
+ analyticsEvent: 'UserWebArchive',
565
+ },
566
+ {
567
+ url: `${baseHost}/account/settings`,
568
+ title: 'Account settings',
569
+ analyticsEvent: 'UserSettings',
570
+ },
571
+ {
572
+ url: 'https://help.archive.org',
573
+ title: 'Get help',
574
+ analyticsEvent: 'UserHelp',
575
+ },
576
+ {
577
+ url: `${baseHost}/account/logout`,
578
+ title: 'Log out',
579
+ analyticsEvent: 'UserLogOut',
580
+ },
581
+ ],
582
+ userAdmin: [
583
+ {
584
+ title: 'ADMINS:',
585
+ },
586
+ {
587
+ title: 'item:',
588
+ },
589
+ {
590
+ url: `${baseHost}/editxml/${itemIdentifier}`,
591
+ title: 'edit xml',
592
+ analyticsEvent: 'AdminUserEditXML',
593
+ },
594
+ {
595
+ url: `${baseHost}/edit.php?redir=1&identifier=${itemIdentifier}`,
596
+ title: 'edit files',
597
+ analyticsEvent: 'AdminUserEditFiles',
598
+ },
599
+ {
600
+ url: `${baseHost}/download/${itemIdentifier}/`,
601
+ title: 'download',
602
+ analyticsEvent: 'AdminUserDownload',
603
+ },
604
+ {
605
+ url: `${baseHost}/metadata/${itemIdentifier}/`,
606
+ title: 'metadata',
607
+ analyticsEvent: 'AdminUserMetadata',
608
+ },
609
+ {
610
+ url: `https://catalogd.archive.org/history/${itemIdentifier}`,
611
+ title: 'history',
612
+ analyticsEvent: 'AdminUserHistory',
613
+ },
614
+ {
615
+ url: `${baseHost}/manage/${itemIdentifier}`,
616
+ title: 'manage',
617
+ analyticsEvent: 'AdminUserManager',
618
+ },
619
+ {
620
+ url: `${baseHost}/manage/${itemIdentifier}#make_dark`,
621
+ title: 'curate',
622
+ analyticsEvent: 'AdminUserCurate',
623
+ },
624
+ {
625
+ url: `${baseHost}/manage/${itemIdentifier}#modify_xml`,
626
+ title: 'modify xml',
627
+ analyticsEvent: 'AdminUserModifyXML',
628
+ },
629
+ ],
630
+ userAdminFlags: [
631
+ {
632
+ url: `${baseHost}/services/flags/admin.php?identifier=${itemIdentifier}`,
633
+ title: 'manage flags',
634
+ analyticsEvent: 'AdminUserManageFlags',
635
+ },
636
+ ],
637
+ signedOut: [
638
+ {
639
+ url: `${baseHost}/account/signup`,
640
+ title: 'Sign up for free',
641
+ analyticsEvent: 'AvatarMenu-Signup',
642
+ },
643
+ {
644
+ url: `${baseHost}/account/login`,
645
+ title: 'Log in',
646
+ analyticsEvent: 'AvatarMenu-Login',
647
+ },
648
+ ],
649
+ };
650
+ }
651
+
652
+ let waybackPagesArchivedCached: string | undefined;
653
+
654
+ /**
655
+ * Fetches accurate count of number of pages in WayBack Machine
656
+ * @returns { string }
657
+ */
658
+ export async function waybackPagesArchivedFN(): Promise<string> {
659
+ if (waybackPagesArchivedCached) return waybackPagesArchivedCached;
660
+
661
+ const counts = await (
662
+ await fetch(
663
+ 'https://archive.org/services/offshoot/home-page/mediacounts.php',
664
+ )
665
+ ).json();
666
+ if (counts.success) {
667
+ let label = '';
668
+ let n = parseInt(counts.value.counts.web, 10);
669
+ if (n > 1000) {
670
+ n /= 1000;
671
+ label = 'thousand';
672
+ }
673
+ if (n > 1000) {
674
+ n /= 1000;
675
+ label = 'million';
676
+ }
677
+ if (n > 1000) {
678
+ n /= 1000;
679
+ label = 'billion';
680
+ }
681
+ if (n > 1000) {
682
+ n /= 1000;
683
+ label = 'trillion';
684
+ }
685
+ waybackPagesArchivedCached = `${Math.round(n)} ${label}`;
686
+ } else {
687
+ waybackPagesArchivedCached = '741 billion';
688
+ }
689
+
690
+ return waybackPagesArchivedCached;
691
+ }