@internetarchive/elements 1.1.3-webdev-9240.0 → 1.1.3-webdev-9241.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 (230) hide show
  1. package/README.md +1 -1
  2. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts +0 -2
  3. package/dist/src/elements/ia-radio-player/ia-radio-player.d.ts.map +1 -1
  4. package/dist/src/elements/ia-radio-player/ia-radio-player.js +1 -6
  5. package/dist/src/elements/ia-radio-player/ia-radio-player.js.map +1 -1
  6. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts +3 -0
  7. package/dist/src/elements/ia-topnav/assets/img/icon-audio.d.ts.map +1 -0
  8. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js +28 -0
  9. package/dist/src/elements/ia-topnav/assets/img/icon-audio.js.map +1 -0
  10. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts +3 -0
  11. package/dist/src/elements/ia-topnav/assets/img/icon-close.d.ts.map +1 -0
  12. package/dist/src/elements/ia-topnav/assets/img/icon-close.js +20 -0
  13. package/dist/src/elements/ia-topnav/assets/img/icon-close.js.map +1 -0
  14. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts +3 -0
  15. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.d.ts.map +1 -0
  16. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js +19 -0
  17. package/dist/src/elements/ia-topnav/assets/img/icon-donate-unpadded.js.map +1 -0
  18. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts +3 -0
  19. package/dist/src/elements/ia-topnav/assets/img/icon-donate.d.ts.map +1 -0
  20. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js +18 -0
  21. package/dist/src/elements/ia-topnav/assets/img/icon-donate.js.map +1 -0
  22. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts +3 -0
  23. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.d.ts.map +1 -0
  24. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js +19 -0
  25. package/dist/src/elements/ia-topnav/assets/img/icon-ellipses.js.map +1 -0
  26. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts +3 -0
  27. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.d.ts.map +1 -0
  28. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js +30 -0
  29. package/dist/src/elements/ia-topnav/assets/img/icon-ia-logo.js.map +1 -0
  30. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts +3 -0
  31. package/dist/src/elements/ia-topnav/assets/img/icon-images.d.ts.map +1 -0
  32. package/dist/src/elements/ia-topnav/assets/img/icon-images.js +19 -0
  33. package/dist/src/elements/ia-topnav/assets/img/icon-images.js.map +1 -0
  34. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts +3 -0
  35. package/dist/src/elements/ia-topnav/assets/img/icon-search.d.ts.map +1 -0
  36. package/dist/src/elements/ia-topnav/assets/img/icon-search.js +19 -0
  37. package/dist/src/elements/ia-topnav/assets/img/icon-search.js.map +1 -0
  38. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts +3 -0
  39. package/dist/src/elements/ia-topnav/assets/img/icon-software.d.ts.map +1 -0
  40. package/dist/src/elements/ia-topnav/assets/img/icon-software.js +18 -0
  41. package/dist/src/elements/ia-topnav/assets/img/icon-software.js.map +1 -0
  42. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts +3 -0
  43. package/dist/src/elements/ia-topnav/assets/img/icon-texts.d.ts.map +1 -0
  44. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js +18 -0
  45. package/dist/src/elements/ia-topnav/assets/img/icon-texts.js.map +1 -0
  46. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts +3 -0
  47. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.d.ts.map +1 -0
  48. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js +18 -0
  49. package/dist/src/elements/ia-topnav/assets/img/icon-upload-unpadded.js.map +1 -0
  50. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts +3 -0
  51. package/dist/src/elements/ia-topnav/assets/img/icon-upload.d.ts.map +1 -0
  52. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js +21 -0
  53. package/dist/src/elements/ia-topnav/assets/img/icon-upload.js.map +1 -0
  54. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts +3 -0
  55. package/dist/src/elements/ia-topnav/assets/img/icon-user.d.ts.map +1 -0
  56. package/dist/src/elements/ia-topnav/assets/img/icon-user.js +19 -0
  57. package/dist/src/elements/ia-topnav/assets/img/icon-user.js.map +1 -0
  58. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts +3 -0
  59. package/dist/src/elements/ia-topnav/assets/img/icon-video.d.ts.map +1 -0
  60. package/dist/src/elements/ia-topnav/assets/img/icon-video.js +19 -0
  61. package/dist/src/elements/ia-topnav/assets/img/icon-video.js.map +1 -0
  62. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts +3 -0
  63. package/dist/src/elements/ia-topnav/assets/img/icon-web.d.ts.map +1 -0
  64. package/dist/src/elements/ia-topnav/assets/img/icon-web.js +19 -0
  65. package/dist/src/elements/ia-topnav/assets/img/icon-web.js.map +1 -0
  66. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts +6 -0
  67. package/dist/src/elements/ia-topnav/assets/img/icon.d.ts.map +1 -0
  68. package/dist/src/elements/ia-topnav/assets/img/icon.js +17 -0
  69. package/dist/src/elements/ia-topnav/assets/img/icon.js.map +1 -0
  70. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts +19 -0
  71. package/dist/src/elements/ia-topnav/assets/img/icons.d.ts.map +1 -0
  72. package/dist/src/elements/ia-topnav/assets/img/icons.js +33 -0
  73. package/dist/src/elements/ia-topnav/assets/img/icons.js.map +1 -0
  74. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts +3 -0
  75. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.d.ts.map +1 -0
  76. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js +21 -0
  77. package/dist/src/elements/ia-topnav/assets/img/wayback-logo.js.map +1 -0
  78. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts +3 -0
  79. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.d.ts.map +1 -0
  80. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js +13 -0
  81. package/dist/src/elements/ia-topnav/assets/img/wordmark-stacked.js.map +1 -0
  82. package/dist/src/elements/ia-topnav/data/menus.d.ts +17 -0
  83. package/dist/src/elements/ia-topnav/data/menus.d.ts.map +1 -0
  84. package/dist/src/elements/ia-topnav/data/menus.js +680 -0
  85. package/dist/src/elements/ia-topnav/data/menus.js.map +1 -0
  86. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts +21 -0
  87. package/dist/src/elements/ia-topnav/dropdown-menu.d.ts.map +1 -0
  88. package/dist/src/elements/ia-topnav/dropdown-menu.js +315 -0
  89. package/dist/src/elements/ia-topnav/dropdown-menu.js.map +1 -0
  90. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts +11 -0
  91. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.d.ts.map +1 -0
  92. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js +89 -0
  93. package/dist/src/elements/ia-topnav/ia-topnav-desktop-subnav.js.map +1 -0
  94. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts +6 -0
  95. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.d.ts.map +1 -0
  96. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js +47 -0
  97. package/dist/src/elements/ia-topnav/ia-topnav-icon-hamburger.js.map +1 -0
  98. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts +20 -0
  99. package/dist/src/elements/ia-topnav/ia-topnav-login-button.d.ts.map +1 -0
  100. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js +183 -0
  101. package/dist/src/elements/ia-topnav/ia-topnav-login-button.js.map +1 -0
  102. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts +31 -0
  103. package/dist/src/elements/ia-topnav/ia-topnav-media-button.d.ts.map +1 -0
  104. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js +287 -0
  105. package/dist/src/elements/ia-topnav/ia-topnav-media-button.js.map +1 -0
  106. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts +21 -0
  107. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.d.ts.map +1 -0
  108. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js +222 -0
  109. package/dist/src/elements/ia-topnav/ia-topnav-media-menu.js.map +1 -0
  110. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts +16 -0
  111. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.d.ts.map +1 -0
  112. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js +221 -0
  113. package/dist/src/elements/ia-topnav/ia-topnav-media-slider.js.map +1 -0
  114. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts +20 -0
  115. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.d.ts.map +1 -0
  116. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js +285 -0
  117. package/dist/src/elements/ia-topnav/ia-topnav-media-subnav.js.map +1 -0
  118. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts +12 -0
  119. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.d.ts.map +1 -0
  120. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js +65 -0
  121. package/dist/src/elements/ia-topnav/ia-topnav-more-slider.js.map +1 -0
  122. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts +53 -0
  123. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.d.ts.map +1 -0
  124. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js +653 -0
  125. package/dist/src/elements/ia-topnav/ia-topnav-primary-nav.js.map +1 -0
  126. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts +12 -0
  127. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.d.ts.map +1 -0
  128. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js +128 -0
  129. package/dist/src/elements/ia-topnav/ia-topnav-save-page-form.js.map +1 -0
  130. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts +4 -0
  131. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.d.ts.map +1 -0
  132. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js +10 -0
  133. package/dist/src/elements/ia-topnav/ia-topnav-signed-out-dropdown.js.map +1 -0
  134. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts +7 -0
  135. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.d.ts.map +1 -0
  136. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js +39 -0
  137. package/dist/src/elements/ia-topnav/ia-topnav-user-menu.js.map +1 -0
  138. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts +10 -0
  139. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.d.ts.map +1 -0
  140. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js +64 -0
  141. package/dist/src/elements/ia-topnav/ia-topnav-wayback-search.js.map +1 -0
  142. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts +20 -0
  143. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.d.ts.map +1 -0
  144. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js +131 -0
  145. package/dist/src/elements/ia-topnav/ia-topnav-wayback-slider.js.map +1 -0
  146. package/dist/src/elements/ia-topnav/ia-topnav.d.ts +85 -0
  147. package/dist/src/elements/ia-topnav/ia-topnav.d.ts.map +1 -0
  148. package/dist/src/elements/ia-topnav/ia-topnav.js +434 -0
  149. package/dist/src/elements/ia-topnav/ia-topnav.js.map +1 -0
  150. package/dist/src/elements/ia-topnav/lib/helpers.d.ts +13 -0
  151. package/dist/src/elements/ia-topnav/lib/helpers.d.ts.map +1 -0
  152. package/dist/src/elements/ia-topnav/lib/helpers.js +24 -0
  153. package/dist/src/elements/ia-topnav/lib/helpers.js.map +1 -0
  154. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts +46 -0
  155. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.d.ts.map +1 -0
  156. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js +136 -0
  157. package/dist/src/elements/ia-topnav/lib/keyboard-navigation.js.map +1 -0
  158. package/dist/src/elements/ia-topnav/models.d.ts +59 -0
  159. package/dist/src/elements/ia-topnav/models.d.ts.map +1 -0
  160. package/dist/src/elements/ia-topnav/models.js +10 -0
  161. package/dist/src/elements/ia-topnav/models.js.map +1 -0
  162. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts +2 -0
  163. package/dist/src/elements/ia-topnav/subnav-list-styles.d.ts.map +1 -0
  164. package/dist/src/elements/ia-topnav/subnav-list-styles.js +49 -0
  165. package/dist/src/elements/ia-topnav/subnav-list-styles.js.map +1 -0
  166. package/dist/src/elements/ia-topnav/tracked-element.d.ts +6 -0
  167. package/dist/src/elements/ia-topnav/tracked-element.d.ts.map +1 -0
  168. package/dist/src/elements/ia-topnav/tracked-element.js +29 -0
  169. package/dist/src/elements/ia-topnav/tracked-element.js.map +1 -0
  170. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts +24 -0
  171. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.d.ts.map +1 -0
  172. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js +240 -0
  173. package/dist/src/elements/ia-wayback-search-form/ia-wayback-search-form.js.map +1 -0
  174. package/dist/src/elements/index.d.ts +3 -5
  175. package/dist/src/elements/index.d.ts.map +1 -1
  176. package/dist/src/elements/index.js +3 -5
  177. package/dist/src/elements/index.js.map +1 -1
  178. package/package.json +3 -9
  179. package/dist/src/elements/ia-reviews/assets/delete-icon.svg +0 -8
  180. package/dist/src/elements/ia-reviews/assets/star-basic.svg +0 -6
  181. package/dist/src/elements/ia-reviews/assets/star-selected.svg +0 -8
  182. package/dist/src/elements/ia-reviews/assets/star-unselected.svg +0 -8
  183. package/dist/src/elements/ia-reviews/ia-review-form.d.ts +0 -103
  184. package/dist/src/elements/ia-reviews/ia-review-form.d.ts.map +0 -1
  185. package/dist/src/elements/ia-reviews/ia-review-form.js +0 -685
  186. package/dist/src/elements/ia-reviews/ia-review-form.js.map +0 -1
  187. package/dist/src/elements/ia-reviews/ia-review.d.ts +0 -51
  188. package/dist/src/elements/ia-reviews/ia-review.d.ts.map +0 -1
  189. package/dist/src/elements/ia-reviews/ia-review.js +0 -344
  190. package/dist/src/elements/ia-reviews/ia-review.js.map +0 -1
  191. package/dist/src/elements/ia-reviews/ia-reviews.d.ts +0 -68
  192. package/dist/src/elements/ia-reviews/ia-reviews.d.ts.map +0 -1
  193. package/dist/src/elements/ia-reviews/ia-reviews.js +0 -354
  194. package/dist/src/elements/ia-reviews/ia-reviews.js.map +0 -1
  195. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts +0 -23
  196. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.d.ts.map +0 -1
  197. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js +0 -37
  198. package/dist/src/elements/ia-reviews/mocks/mock-fetch-handler.js.map +0 -1
  199. package/dist/src/elements/ia-reviews/mocks/mock-review-service.d.ts +0 -12
  200. package/dist/src/elements/ia-reviews/mocks/mock-review-service.d.ts.map +0 -1
  201. package/dist/src/elements/ia-reviews/mocks/mock-review-service.js +0 -19
  202. package/dist/src/elements/ia-reviews/mocks/mock-review-service.js.map +0 -1
  203. package/dist/src/elements/ia-reviews/models.d.ts +0 -38
  204. package/dist/src/elements/ia-reviews/models.d.ts.map +0 -1
  205. package/dist/src/elements/ia-reviews/models.js +0 -2
  206. package/dist/src/elements/ia-reviews/models.js.map +0 -1
  207. package/dist/src/elements/ia-reviews/review-service.d.ts +0 -53
  208. package/dist/src/elements/ia-reviews/review-service.d.ts.map +0 -1
  209. package/dist/src/elements/ia-reviews/review-service.js +0 -97
  210. package/dist/src/elements/ia-reviews/review-service.js.map +0 -1
  211. package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts +0 -13
  212. package/dist/src/elements/ia-reviews/utils/collapse-space.d.ts.map +0 -1
  213. package/dist/src/elements/ia-reviews/utils/collapse-space.js +0 -19
  214. package/dist/src/elements/ia-reviews/utils/collapse-space.js.map +0 -1
  215. package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts +0 -14
  216. package/dist/src/elements/ia-reviews/utils/friendly-truncate.d.ts.map +0 -1
  217. package/dist/src/elements/ia-reviews/utils/friendly-truncate.js +0 -65
  218. package/dist/src/elements/ia-reviews/utils/friendly-truncate.js.map +0 -1
  219. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts +0 -9
  220. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.d.ts.map +0 -1
  221. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js +0 -40
  222. package/dist/src/elements/ia-reviews/utils/link-urls-in-text.js.map +0 -1
  223. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts +0 -9
  224. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.d.ts.map +0 -1
  225. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js +0 -29
  226. package/dist/src/elements/ia-reviews/utils/sanitize-review-body.js.map +0 -1
  227. package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts +0 -13
  228. package/dist/src/elements/ia-reviews/utils/truncate-screenname.d.ts.map +0 -1
  229. package/dist/src/elements/ia-reviews/utils/truncate-screenname.js +0 -19
  230. package/dist/src/elements/ia-reviews/utils/truncate-screenname.js.map +0 -1
@@ -0,0 +1,183 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html } from 'lit';
3
+ import TrackedElement from './tracked-element.js';
4
+ import icons from './assets/img/icons.js';
5
+ import { formatUrl, makeBooleanString } from './lib/helpers.js';
6
+ import { property, query } from 'lit/decorators.js';
7
+ import { customElement } from '../../util/custom-element.js';
8
+ import { TOPNAV_MOBILE_BREAKPOINT } from './models.js';
9
+ import { defaultTopNavConfig } from './data/menus.js';
10
+ import themeStyles from '../../themes/theme-styles.js';
11
+ import { localized, msg } from '@lit/localize';
12
+ let LoginButton = class LoginButton extends TrackedElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.baseHost = '';
16
+ this.config = defaultTopNavConfig;
17
+ this.openMenu = '';
18
+ }
19
+ render() {
20
+ return html `
21
+ <div class="logged-out-toolbar">
22
+ <button
23
+ class="logged-out-menu ${this.avatarClass}"
24
+ @click=${this.toggleDropdown}
25
+ data-event-click-tracking="${this.analyticsEvent}"
26
+ aria-label=${msg('Toggle login menu')}
27
+ aria-expanded="${makeBooleanString(this.menuOpened)}"
28
+ >
29
+ ${icons.user}
30
+ </button>
31
+ <span>
32
+ <a href="${this.signupPath}">${msg('Sign up')}</a>
33
+ |
34
+ <a href="${this.loginPath}">${msg('Log in')}</a>
35
+ </span>
36
+ </div>
37
+ `;
38
+ }
39
+ /** Distance (px) from this element's right edge to the right edge of the dropdown toggle icon. */
40
+ getDropdownToggleOffset() {
41
+ if (!this.toggleButton)
42
+ return 0;
43
+ return (this.getBoundingClientRect().right -
44
+ this.toggleButton.getBoundingClientRect().right);
45
+ }
46
+ get signupPath() {
47
+ return formatUrl('/signup', this.baseHost);
48
+ }
49
+ get loginPath() {
50
+ return formatUrl('/login', this.baseHost);
51
+ }
52
+ get analyticsEvent() {
53
+ return `${this.config?.eventCategory}|NavLoginIcon`;
54
+ }
55
+ get menuOpened() {
56
+ return this.openMenu === 'login';
57
+ }
58
+ get avatarClass() {
59
+ return `dropdown-toggle${this.menuOpened ? ' active' : ''}`;
60
+ }
61
+ toggleDropdown(e) {
62
+ e.preventDefault();
63
+ this.trackClick(e);
64
+ this.dispatchEvent(new CustomEvent('menuToggled', {
65
+ bubbles: true,
66
+ composed: true,
67
+ detail: {
68
+ menuName: 'login',
69
+ },
70
+ }));
71
+ }
72
+ static get styles() {
73
+ return [
74
+ themeStyles,
75
+ css `
76
+ .logged-out-menu {
77
+ background: inherit;
78
+ border: none;
79
+ }
80
+ .logged-out-menu:focus-visible {
81
+ outline: none;
82
+ border: none;
83
+ }
84
+ .dropdown-toggle {
85
+ display: block;
86
+ text-transform: uppercase;
87
+ color: var(--grey80);
88
+ cursor: pointer;
89
+ }
90
+
91
+ .dropdown-toggle svg {
92
+ height: 100%;
93
+ width: 4rem;
94
+ }
95
+
96
+ .dropdown-toggle .fill-color {
97
+ fill: var(--iconFill);
98
+ }
99
+
100
+ .dropdown-toggle:active .fill-color,
101
+ .dropdown-toggle:focus .fill-color,
102
+ .dropdown-toggle:hover .fill-color {
103
+ fill: var(--linkHoverColor);
104
+ }
105
+
106
+ .active {
107
+ border-radius: 1rem 1rem 0 0;
108
+ background: var(--activeButtonBg);
109
+ }
110
+
111
+ .active .fill-color {
112
+ fill: var(--activeColor);
113
+ }
114
+
115
+ span {
116
+ display: none;
117
+ font-size: 1.4rem;
118
+ text-transform: uppercase;
119
+ color: var(--loginTextColor);
120
+ }
121
+
122
+ span a {
123
+ color: inherit;
124
+ text-decoration: none;
125
+ outline: 0;
126
+ }
127
+
128
+ a:hover,
129
+ a:active,
130
+ a:focus {
131
+ color: var(--linkHoverColor) !important;
132
+ outline: none !important;
133
+ outline-offset: inherit !important;
134
+ }
135
+
136
+ @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {
137
+ .logged-out-toolbar {
138
+ padding: 1rem 0.5rem;
139
+ vertical-align: middle;
140
+ }
141
+
142
+ .active {
143
+ background: transparent;
144
+ }
145
+
146
+ .dropdown-toggle {
147
+ display: inline-block;
148
+ vertical-align: middle;
149
+ }
150
+
151
+ .dropdown-toggle svg {
152
+ height: 3rem;
153
+ width: 3rem;
154
+ display: block;
155
+ }
156
+
157
+ span {
158
+ display: inline;
159
+ vertical-align: middle;
160
+ }
161
+ }
162
+ `,
163
+ ];
164
+ }
165
+ };
166
+ __decorate([
167
+ property({ type: String })
168
+ ], LoginButton.prototype, "baseHost", void 0);
169
+ __decorate([
170
+ property({ type: Object })
171
+ ], LoginButton.prototype, "config", void 0);
172
+ __decorate([
173
+ property({ type: String })
174
+ ], LoginButton.prototype, "openMenu", void 0);
175
+ __decorate([
176
+ query('button.logged-out-menu')
177
+ ], LoginButton.prototype, "toggleButton", void 0);
178
+ LoginButton = __decorate([
179
+ customElement('ia-topnav-login-button'),
180
+ localized()
181
+ ], LoginButton);
182
+ export { LoginButton };
183
+ //# sourceMappingURL=ia-topnav-login-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-login-button.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-login-button.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup, css, html } from 'lit';\nimport TrackedElement from './tracked-element';\nimport icons from './assets/img/icons';\nimport { formatUrl, makeBooleanString } from './lib/helpers';\nimport { property, query } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { IATopNavConfig, TOPNAV_MOBILE_BREAKPOINT } from './models';\nimport { defaultTopNavConfig } from './data/menus';\nimport themeStyles from '@src/themes/theme-styles';\nimport { localized, msg } from '@lit/localize';\n\n@customElement('ia-topnav-login-button')\n@localized()\nexport class LoginButton extends TrackedElement {\n @property({ type: String }) baseHost = '';\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: String }) openMenu = '';\n\n @query('button.logged-out-menu') private toggleButton?: HTMLButtonElement;\n\n render() {\n return html`\n <div class=\"logged-out-toolbar\">\n <button\n class=\"logged-out-menu ${this.avatarClass}\"\n @click=${this.toggleDropdown}\n data-event-click-tracking=\"${this.analyticsEvent}\"\n aria-label=${msg('Toggle login menu')}\n aria-expanded=\"${makeBooleanString(this.menuOpened)}\"\n >\n ${icons.user}\n </button>\n <span>\n <a href=\"${this.signupPath}\">${msg('Sign up')}</a>\n |\n <a href=\"${this.loginPath}\">${msg('Log in')}</a>\n </span>\n </div>\n `;\n }\n\n /** Distance (px) from this element's right edge to the right edge of the dropdown toggle icon. */\n getDropdownToggleOffset(): number {\n if (!this.toggleButton) return 0;\n return (\n this.getBoundingClientRect().right -\n this.toggleButton.getBoundingClientRect().right\n );\n }\n\n get signupPath() {\n return formatUrl('/signup', this.baseHost);\n }\n\n get loginPath() {\n return formatUrl('/login', this.baseHost);\n }\n\n get analyticsEvent() {\n return `${this.config?.eventCategory}|NavLoginIcon`;\n }\n\n get menuOpened(): boolean {\n return this.openMenu === 'login';\n }\n\n get avatarClass() {\n return `dropdown-toggle${this.menuOpened ? ' active' : ''}`;\n }\n\n toggleDropdown(e: Event) {\n e.preventDefault();\n this.trackClick(e);\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n bubbles: true,\n composed: true,\n detail: {\n menuName: 'login',\n },\n }),\n );\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n .logged-out-menu {\n background: inherit;\n border: none;\n }\n .logged-out-menu:focus-visible {\n outline: none;\n border: none;\n }\n .dropdown-toggle {\n display: block;\n text-transform: uppercase;\n color: var(--grey80);\n cursor: pointer;\n }\n\n .dropdown-toggle svg {\n height: 100%;\n width: 4rem;\n }\n\n .dropdown-toggle .fill-color {\n fill: var(--iconFill);\n }\n\n .dropdown-toggle:active .fill-color,\n .dropdown-toggle:focus .fill-color,\n .dropdown-toggle:hover .fill-color {\n fill: var(--linkHoverColor);\n }\n\n .active {\n border-radius: 1rem 1rem 0 0;\n background: var(--activeButtonBg);\n }\n\n .active .fill-color {\n fill: var(--activeColor);\n }\n\n span {\n display: none;\n font-size: 1.4rem;\n text-transform: uppercase;\n color: var(--loginTextColor);\n }\n\n span a {\n color: inherit;\n text-decoration: none;\n outline: 0;\n }\n\n a:hover,\n a:active,\n a:focus {\n color: var(--linkHoverColor) !important;\n outline: none !important;\n outline-offset: inherit !important;\n }\n\n @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {\n .logged-out-toolbar {\n padding: 1rem 0.5rem;\n vertical-align: middle;\n }\n\n .active {\n background: transparent;\n }\n\n .dropdown-toggle {\n display: inline-block;\n vertical-align: middle;\n }\n\n .dropdown-toggle svg {\n height: 3rem;\n width: 3rem;\n display: block;\n }\n\n span {\n display: inline;\n vertical-align: middle;\n }\n }\n `,\n ];\n }\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { CSSResultGroup, TemplateResult } from 'lit';
2
+ import TrackedElement from './tracked-element.js';
3
+ import { IATopNavConfig } from './models.js';
4
+ export declare class MediaButton extends TrackedElement {
5
+ config: IATopNavConfig;
6
+ icon: string;
7
+ href: string;
8
+ label: string;
9
+ mediatype: string;
10
+ openMenu: string;
11
+ selected: boolean;
12
+ followable: boolean;
13
+ render(): TemplateResult<1>;
14
+ static get icons(): Record<string, TemplateResult>;
15
+ onClick(e: Event): void;
16
+ dispatchMenuToggledEvent(): void;
17
+ dispatchMediaTypeSelectedEvent(): void;
18
+ get buttonClass(): "" | "selected";
19
+ /**
20
+ * The button's tooltip.
21
+ *
22
+ * Built as a whole phrase per state, because word order around the
23
+ * mediatype differs by language.
24
+ */
25
+ get tooltip(): string;
26
+ get iconClass(): "" | "active";
27
+ get analyticsEvent(): string;
28
+ get menuItem(): TemplateResult<1>;
29
+ static get styles(): CSSResultGroup;
30
+ }
31
+ //# sourceMappingURL=ia-topnav-media-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-media-button.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-media-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAChE,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAK/C,OAAO,EAAE,cAAc,EAA4B,MAAM,UAAU,CAAC;AAKpE,qBAEa,WAAY,SAAQ,cAAc;IACjB,MAAM,EAAE,cAAc,CAAuB;IAC7C,IAAI,SAAM;IACV,IAAI,SAAM;IACV,KAAK,SAAM;IACX,SAAS,SAAM;IACf,QAAQ,SAAM;IACb,QAAQ,UAAS;IACjB,UAAU,UAAS;IAEhD,MAAM;IAcN,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAEjD;IAED,OAAO,CAAC,CAAC,EAAE,KAAK;IAYhB,wBAAwB;IAYxB,8BAA8B;IAY9B,IAAI,WAAW,oBAEd;IAED;;;;;OAKG;IACH,IAAI,OAAO,WAIV;IAED,IAAI,SAAS,kBAEZ;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,QAAQ,sBAOX;IAED,MAAM,KAAK,MAAM,IAAI,cAAc,CA8JlC;CACF"}
@@ -0,0 +1,287 @@
1
+ var MediaButton_1;
2
+ import { __decorate } from "tslib";
3
+ import { css, html } from 'lit';
4
+ import TrackedElement from './tracked-element.js';
5
+ import icons from './assets/img/icons.js';
6
+ import { toSentenceCase } from './lib/helpers.js';
7
+ import { property } from 'lit/decorators.js';
8
+ import { customElement } from '../../util/custom-element.js';
9
+ import { TOPNAV_MOBILE_BREAKPOINT } from './models.js';
10
+ import { defaultTopNavConfig } from './data/menus.js';
11
+ import themeStyles from '../../themes/theme-styles.js';
12
+ import { localized, msg, str } from '@lit/localize';
13
+ let MediaButton = MediaButton_1 = class MediaButton extends TrackedElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.config = defaultTopNavConfig;
17
+ this.icon = '';
18
+ this.href = '';
19
+ this.label = '';
20
+ this.mediatype = '';
21
+ this.openMenu = '';
22
+ this.selected = false;
23
+ this.followable = false;
24
+ }
25
+ render() {
26
+ return html `
27
+ <a
28
+ href="${this.href}"
29
+ class="menu-item ${this.mediatype} ${this.buttonClass}"
30
+ @click=${this.followable ? this.trackClick : this.onClick}
31
+ data-event-click-tracking="${this.analyticsEvent}"
32
+ title=${this.tooltip}
33
+ >
34
+ ${this.menuItem}
35
+ </a>
36
+ `;
37
+ }
38
+ static get icons() {
39
+ return icons;
40
+ }
41
+ onClick(e) {
42
+ this.trackClick(e);
43
+ e.preventDefault();
44
+ // On desktop viewport widths, the media subnav is always visible. To
45
+ // ensure the media subnav is open on mobile if the viewport is
46
+ // resized, the openMenu needs to be set to 'media'.
47
+ if (this.openMenu !== 'media') {
48
+ this.dispatchMenuToggledEvent();
49
+ }
50
+ this.dispatchMediaTypeSelectedEvent();
51
+ }
52
+ dispatchMenuToggledEvent() {
53
+ this.dispatchEvent(new CustomEvent('menuToggled', {
54
+ bubbles: true,
55
+ composed: true,
56
+ detail: {
57
+ menuName: 'media',
58
+ },
59
+ }));
60
+ }
61
+ dispatchMediaTypeSelectedEvent() {
62
+ this.dispatchEvent(new CustomEvent('mediaTypeSelected', {
63
+ bubbles: true,
64
+ composed: true,
65
+ detail: {
66
+ mediatype: this.mediatype,
67
+ },
68
+ }));
69
+ }
70
+ get buttonClass() {
71
+ return this.selected ? 'selected' : '';
72
+ }
73
+ /**
74
+ * The button's tooltip.
75
+ *
76
+ * Built as a whole phrase per state, because word order around the
77
+ * mediatype differs by language.
78
+ */
79
+ get tooltip() {
80
+ return this.selected
81
+ ? msg(str `Collapse ${this.mediatype} menu`)
82
+ : msg(str `Expand ${this.mediatype} menu`);
83
+ }
84
+ get iconClass() {
85
+ return this.selected ? 'active' : '';
86
+ }
87
+ get analyticsEvent() {
88
+ return `${this.config.eventCategory}|NavMenu${toSentenceCase(this.mediatype)}`;
89
+ }
90
+ get menuItem() {
91
+ return html `
92
+ <span class="icon ${this.iconClass}">
93
+ ${MediaButton_1.icons[this.icon]}
94
+ </span>
95
+ <span class="label">${this.label}</span>
96
+ `;
97
+ }
98
+ static get styles() {
99
+ return [
100
+ themeStyles,
101
+ css `
102
+ a {
103
+ display: inline-block;
104
+ text-decoration: none;
105
+ }
106
+
107
+ .menu-item {
108
+ display: inline-block;
109
+ width: 100%;
110
+ padding: 0;
111
+ font-size: 1.6rem;
112
+ text-align: left;
113
+ background: transparent;
114
+ -webkit-box-align: center;
115
+ -ms-flex-align: center;
116
+ align-items: center;
117
+ }
118
+
119
+ .menu-item:focus {
120
+ outline: none;
121
+ }
122
+
123
+ .label {
124
+ display: inline-block;
125
+ padding: 0;
126
+ font-weight: 400;
127
+ color: var(--primaryTextColor);
128
+ text-align: left;
129
+ vertical-align: middle;
130
+ }
131
+
132
+ .menu-item > .icon {
133
+ display: inline-flex;
134
+ vertical-align: middle;
135
+ -webkit-box-align: center;
136
+ -ms-flex-align: center;
137
+ align-items: center;
138
+ -webkit-box-pack: center;
139
+ -ms-flex-pack: center;
140
+ justify-content: center;
141
+ }
142
+
143
+ .menu-item > .icon > svg {
144
+ height: 4rem;
145
+ width: 4rem;
146
+ }
147
+
148
+ .menu-item.selected .icon {
149
+ background-color: var(--activeButtonBg);
150
+ border-radius: 1rem 0 0 1rem;
151
+ }
152
+
153
+ .icon .fill-color {
154
+ fill: #999;
155
+ }
156
+
157
+ .icon.active .fill-color {
158
+ fill: #fff;
159
+ }
160
+
161
+ .donate .fill-color {
162
+ fill: #f00;
163
+ }
164
+
165
+ @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {
166
+ .menu-item {
167
+ width: auto;
168
+ height: 5rem;
169
+ color: var(--mediaLabelDesktopColor);
170
+ display: inline-flex;
171
+ }
172
+ .menu-item:hover,
173
+ .menu-item:active,
174
+ .menu-item:focus {
175
+ color: var(--linkHoverColor);
176
+ }
177
+
178
+ .menu-item:hover .fill-color,
179
+ .menu-item:active .fill-color,
180
+ .menu-item:focus .fill-color {
181
+ fill: var(--linkHoverColor);
182
+ }
183
+
184
+ .label {
185
+ display: none;
186
+ }
187
+
188
+ .label,
189
+ .web:after {
190
+ padding-right: 1rem;
191
+ font-size: 1.3rem;
192
+ text-transform: uppercase;
193
+ color: inherit;
194
+ }
195
+
196
+ .web:after {
197
+ display: none;
198
+ content: 'web';
199
+ }
200
+ .donate,
201
+ .more {
202
+ display: none;
203
+ }
204
+
205
+ .menu-item.selected {
206
+ background: var(--activeDesktopMenuIcon);
207
+ }
208
+
209
+ .menu-item.selected .label,
210
+ .menu-item.selected.web:after {
211
+ color: var(--linkHoverColor);
212
+ }
213
+
214
+ .menu-item.selected .icon {
215
+ background: transparent;
216
+ }
217
+
218
+ /* selected state icon colors */
219
+ .web.selected .fill-color {
220
+ fill: #ffcd27;
221
+ }
222
+
223
+ .texts.selected .fill-color {
224
+ fill: #faab3c;
225
+ }
226
+
227
+ .video.selected .fill-color {
228
+ fill: #f1644b;
229
+ }
230
+
231
+ .audio.selected .fill-color {
232
+ fill: #00adef;
233
+ }
234
+
235
+ .software.selected .fill-color {
236
+ fill: #9ecc4f;
237
+ }
238
+
239
+ .images.selected .fill-color {
240
+ fill: #aa99c9;
241
+ }
242
+ }
243
+
244
+ @media (min-width: 1200px) {
245
+ .label,
246
+ .web:after {
247
+ display: inline;
248
+ }
249
+
250
+ .web .label {
251
+ display: none;
252
+ }
253
+ }
254
+ `,
255
+ ];
256
+ }
257
+ };
258
+ __decorate([
259
+ property({ type: Object })
260
+ ], MediaButton.prototype, "config", void 0);
261
+ __decorate([
262
+ property({ type: String })
263
+ ], MediaButton.prototype, "icon", void 0);
264
+ __decorate([
265
+ property({ type: String })
266
+ ], MediaButton.prototype, "href", void 0);
267
+ __decorate([
268
+ property({ type: String })
269
+ ], MediaButton.prototype, "label", void 0);
270
+ __decorate([
271
+ property({ type: String })
272
+ ], MediaButton.prototype, "mediatype", void 0);
273
+ __decorate([
274
+ property({ type: String })
275
+ ], MediaButton.prototype, "openMenu", void 0);
276
+ __decorate([
277
+ property({ type: Boolean })
278
+ ], MediaButton.prototype, "selected", void 0);
279
+ __decorate([
280
+ property({ type: Boolean })
281
+ ], MediaButton.prototype, "followable", void 0);
282
+ MediaButton = MediaButton_1 = __decorate([
283
+ customElement('ia-topnav-media-button'),
284
+ localized()
285
+ ], MediaButton);
286
+ export { MediaButton };
287
+ //# sourceMappingURL=ia-topnav-media-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-media-button.js","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-media-button.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResultGroup, TemplateResult, css, html } from 'lit';\nimport TrackedElement from './tracked-element';\nimport icons from './assets/img/icons';\nimport { toSentenceCase } from './lib/helpers';\nimport { property } from 'lit/decorators.js';\nimport { customElement } from '@src/util/custom-element';\nimport { IATopNavConfig, TOPNAV_MOBILE_BREAKPOINT } from './models';\nimport { defaultTopNavConfig } from './data/menus';\nimport themeStyles from '@src/themes/theme-styles';\nimport { localized, msg, str } from '@lit/localize';\n\n@customElement('ia-topnav-media-button')\n@localized()\nexport class MediaButton extends TrackedElement {\n @property({ type: Object }) config: IATopNavConfig = defaultTopNavConfig;\n @property({ type: String }) icon = '';\n @property({ type: String }) href = '';\n @property({ type: String }) label = '';\n @property({ type: String }) mediatype = '';\n @property({ type: String }) openMenu = '';\n @property({ type: Boolean }) selected = false;\n @property({ type: Boolean }) followable = false;\n\n render() {\n return html`\n <a\n href=\"${this.href}\"\n class=\"menu-item ${this.mediatype} ${this.buttonClass}\"\n @click=${this.followable ? this.trackClick : this.onClick}\n data-event-click-tracking=\"${this.analyticsEvent}\"\n title=${this.tooltip}\n >\n ${this.menuItem}\n </a>\n `;\n }\n\n static get icons(): Record<string, TemplateResult> {\n return icons;\n }\n\n onClick(e: Event) {\n this.trackClick(e);\n e.preventDefault();\n // On desktop viewport widths, the media subnav is always visible. To\n // ensure the media subnav is open on mobile if the viewport is\n // resized, the openMenu needs to be set to 'media'.\n if (this.openMenu !== 'media') {\n this.dispatchMenuToggledEvent();\n }\n this.dispatchMediaTypeSelectedEvent();\n }\n\n dispatchMenuToggledEvent() {\n this.dispatchEvent(\n new CustomEvent('menuToggled', {\n bubbles: true,\n composed: true,\n detail: {\n menuName: 'media',\n },\n }),\n );\n }\n\n dispatchMediaTypeSelectedEvent() {\n this.dispatchEvent(\n new CustomEvent('mediaTypeSelected', {\n bubbles: true,\n composed: true,\n detail: {\n mediatype: this.mediatype,\n },\n }),\n );\n }\n\n get buttonClass() {\n return this.selected ? 'selected' : '';\n }\n\n /**\n * The button's tooltip.\n *\n * Built as a whole phrase per state, because word order around the\n * mediatype differs by language.\n */\n get tooltip() {\n return this.selected\n ? msg(str`Collapse ${this.mediatype} menu`)\n : msg(str`Expand ${this.mediatype} menu`);\n }\n\n get iconClass() {\n return this.selected ? 'active' : '';\n }\n\n get analyticsEvent() {\n return `${this.config.eventCategory}|NavMenu${toSentenceCase(this.mediatype)}`;\n }\n\n get menuItem() {\n return html`\n <span class=\"icon ${this.iconClass}\">\n ${MediaButton.icons[this.icon]}\n </span>\n <span class=\"label\">${this.label}</span>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return [\n themeStyles,\n css`\n a {\n display: inline-block;\n text-decoration: none;\n }\n\n .menu-item {\n display: inline-block;\n width: 100%;\n padding: 0;\n font-size: 1.6rem;\n text-align: left;\n background: transparent;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n }\n\n .menu-item:focus {\n outline: none;\n }\n\n .label {\n display: inline-block;\n padding: 0;\n font-weight: 400;\n color: var(--primaryTextColor);\n text-align: left;\n vertical-align: middle;\n }\n\n .menu-item > .icon {\n display: inline-flex;\n vertical-align: middle;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n\n .menu-item > .icon > svg {\n height: 4rem;\n width: 4rem;\n }\n\n .menu-item.selected .icon {\n background-color: var(--activeButtonBg);\n border-radius: 1rem 0 0 1rem;\n }\n\n .icon .fill-color {\n fill: #999;\n }\n\n .icon.active .fill-color {\n fill: #fff;\n }\n\n .donate .fill-color {\n fill: #f00;\n }\n\n @media (min-width: ${TOPNAV_MOBILE_BREAKPOINT}px) {\n .menu-item {\n width: auto;\n height: 5rem;\n color: var(--mediaLabelDesktopColor);\n display: inline-flex;\n }\n .menu-item:hover,\n .menu-item:active,\n .menu-item:focus {\n color: var(--linkHoverColor);\n }\n\n .menu-item:hover .fill-color,\n .menu-item:active .fill-color,\n .menu-item:focus .fill-color {\n fill: var(--linkHoverColor);\n }\n\n .label {\n display: none;\n }\n\n .label,\n .web:after {\n padding-right: 1rem;\n font-size: 1.3rem;\n text-transform: uppercase;\n color: inherit;\n }\n\n .web:after {\n display: none;\n content: 'web';\n }\n .donate,\n .more {\n display: none;\n }\n\n .menu-item.selected {\n background: var(--activeDesktopMenuIcon);\n }\n\n .menu-item.selected .label,\n .menu-item.selected.web:after {\n color: var(--linkHoverColor);\n }\n\n .menu-item.selected .icon {\n background: transparent;\n }\n\n /* selected state icon colors */\n .web.selected .fill-color {\n fill: #ffcd27;\n }\n\n .texts.selected .fill-color {\n fill: #faab3c;\n }\n\n .video.selected .fill-color {\n fill: #f1644b;\n }\n\n .audio.selected .fill-color {\n fill: #00adef;\n }\n\n .software.selected .fill-color {\n fill: #9ecc4f;\n }\n\n .images.selected .fill-color {\n fill: #aa99c9;\n }\n }\n\n @media (min-width: 1200px) {\n .label,\n .web:after {\n display: inline;\n }\n\n .web .label {\n display: none;\n }\n }\n `,\n ];\n }\n}\n"]}
@@ -0,0 +1,21 @@
1
+ import { CSSResultGroup, LitElement, PropertyValues } from 'lit';
2
+ import './ia-topnav-media-button.js';
3
+ import { MediaButton } from './ia-topnav-media-button.js';
4
+ import { IATopNavConfig } from './models.js';
5
+ export declare class MediaMenu extends LitElement {
6
+ baseHost: string;
7
+ config: IATopNavConfig;
8
+ openMenu: string;
9
+ selectedMenuOption: string;
10
+ currentTab: {
11
+ moveTo: string;
12
+ } | undefined;
13
+ mediaButtons?: MediaButton[];
14
+ updated(props: PropertyValues): void;
15
+ render(): import("lit").TemplateResult<1>;
16
+ get mediaMenuOptionsTemplate(): import("lit").TemplateResult<1>[];
17
+ get menuOpened(): boolean;
18
+ get menuClass(): "open" | "closed";
19
+ static get styles(): CSSResultGroup;
20
+ }
21
+ //# sourceMappingURL=ia-topnav-media-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ia-topnav-media-menu.d.ts","sourceRoot":"","sources":["../../../../src/elements/ia-topnav/ia-topnav-media-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAa,MAAM,KAAK,CAAC;AAM5E,OAAO,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAA4B,MAAM,UAAU,CAAC;AAsEpE,qBAEa,SAAU,SAAQ,UAAU;IACX,QAAQ,SAAM;IACd,MAAM,EAAE,cAAc,CAAuB;IAC7C,QAAQ,SAAM;IACd,kBAAkB,SAAM;IACxB,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAEnC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAEjE,OAAO,CAAC,KAAK,EAAE,cAAc;IAwB7B,MAAM;IAYN,IAAI,wBAAwB,sCAqB3B;IAED,IAAI,UAAU,YAEb;IAED,IAAI,SAAS,sBAEZ;IAED,MAAM,KAAK,MAAM,IAAI,cAAc,CAoElC;CACF"}