@penskemediacorp/larva-patterns 1.10.0-alpha.0 → 1.10.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 (358) hide show
  1. package/LICENSE +21 -0
  2. package/__tests__/css/css.html +9 -0
  3. package/__tests__/css/css.prototype.js +1 -0
  4. package/__tests__/hub/hub.html +25 -0
  5. package/__tests__/hub/hub.prototype.js +30 -0
  6. package/__tests__/profile/profile.html +29 -0
  7. package/__tests__/profile/profile.prototype.js +17 -0
  8. package/__tests__/profile-index/profile-index.html +9 -0
  9. package/__tests__/profile-index/profile-index.prototype.js +6 -0
  10. package/__tests__/vlanding/vlanding.html +7 -0
  11. package/__tests__/vlanding/vlanding.prototype.js +11 -0
  12. package/_templates/pattern-nav.html +52 -13
  13. package/algorithms/a-carousel-grid/README.md +5 -0
  14. package/algorithms/a-carousel-grid/a-carousel-grid.html +25 -0
  15. package/algorithms/a-carousel-grid/a-carousel-grid.overlay.js +12 -0
  16. package/{modules/listicle-item/listicle-item.floated.js → algorithms/a-carousel-grid/a-carousel-grid.prototype.js} +0 -0
  17. package/algorithms/a-icon/a-icon.html +1 -0
  18. package/algorithms/a-icon/a-icon.prototype.js +0 -0
  19. package/base.html +62 -19
  20. package/components/c-button/README.md +3 -0
  21. package/components/c-button/c-button.black.js +7 -0
  22. package/components/c-button/c-button.brand-basic.js +8 -0
  23. package/components/c-button/c-button.ghost.js +8 -7
  24. package/components/c-button/c-button.prototype.js +10 -5
  25. package/components/c-button/c-button.stripped.js +6 -5
  26. package/components/c-button/c-button.twig +7 -3
  27. package/components/c-checkbox-input/c-checkbox-input.prototype.js +6 -0
  28. package/components/c-checkbox-input/c-checkbox-input.twig +4 -0
  29. package/components/c-dek/README.md +3 -0
  30. package/components/c-dek/c-dek.prototype.js +3 -2
  31. package/components/c-dek/c-dek.twig +9 -1
  32. package/components/c-email-field/README.md +0 -0
  33. package/components/c-email-field/c-email-field.ghost.js +7 -7
  34. package/components/c-email-field/c-email-field.prototype.js +7 -8
  35. package/components/c-email-field/c-email-field.twig +1 -1
  36. package/components/c-figcaption/c-figcaption.prototype.js +9 -0
  37. package/components/c-figcaption/c-figcaption.twig +16 -0
  38. package/components/c-heading/README.md +4 -0
  39. package/components/c-heading/c-heading.prototype.js +8 -3
  40. package/components/c-heading/c-heading.twig +11 -2
  41. package/components/c-hidden-field/c-hidden-field.prototype.js +5 -0
  42. package/components/c-hidden-field/c-hidden-field.twig +1 -0
  43. package/components/c-icon/c-icon.full.js +6 -5
  44. package/components/c-icon/c-icon.prototype.js +12 -10
  45. package/components/c-icon/c-icon.twig +22 -2
  46. package/components/c-input/c-input.prototype.js +8 -0
  47. package/components/c-input/c-input.twig +14 -0
  48. package/components/c-label/README.md +12 -0
  49. package/components/c-label/c-label.prototype.js +7 -0
  50. package/components/c-label/c-label.twig +19 -0
  51. package/components/c-lazy-image/README.md +35 -0
  52. package/components/c-lazy-image/c-lazy-image.prototype.js +17 -0
  53. package/components/c-lazy-image/c-lazy-image.twig +31 -0
  54. package/components/c-link/README.md +1 -0
  55. package/components/c-link/c-link.prototype.js +8 -5
  56. package/components/c-link/c-link.twig +11 -1
  57. package/components/c-logo/c-logo.prototype.js +7 -0
  58. package/components/c-logo/c-logo.twig +10 -0
  59. package/components/c-nav-link/c-nav-link.prototype.js +7 -0
  60. package/components/c-nav-link/c-nav-link.twig +10 -0
  61. package/components/c-play-badge/c-play-badge.prototype.js +3 -0
  62. package/components/c-play-badge/c-play-badge.twig +7 -0
  63. package/components/c-select-option/c-select-option.prototype.js +5 -0
  64. package/components/c-select-option/c-select-option.twig +5 -0
  65. package/components/c-span/c-span.prototype.js +6 -7
  66. package/components/c-span/c-span.tag.js +7 -0
  67. package/components/c-svg/c-svg.prototype.js +4 -0
  68. package/components/c-svg/c-svg.twig +3 -0
  69. package/components/c-tagline/README.md +3 -0
  70. package/components/c-tagline/c-tagline.prototype.js +4 -0
  71. package/components/c-tagline/c-tagline.twig +3 -3
  72. package/components/c-timestamp/c-timestamp.prototype.js +5 -4
  73. package/components/c-timestamp/c-timestamp.twig +9 -1
  74. package/components/c-title/README.md +7 -0
  75. package/components/c-title/c-title.prototype.js +7 -3
  76. package/components/c-title/c-title.twig +14 -2
  77. package/css.html +44 -0
  78. package/index.html +7 -25
  79. package/index.js +2 -1
  80. package/modules/age-gate/README.md +3 -0
  81. package/modules/age-gate/age-gate.prototype.js +68 -0
  82. package/modules/age-gate/age-gate.twig +37 -0
  83. package/modules/article-callout/article-callout.prototype.js +5 -0
  84. package/modules/article-callout/article-callout.twig +3 -0
  85. package/modules/article-excerpt/article-excerpt.prototype.js +4 -0
  86. package/modules/article-excerpt/article-excerpt.twig +1 -0
  87. package/modules/article-kicker/article-kicker.prototype.js +6 -0
  88. package/modules/article-kicker/article-kicker.twig +13 -0
  89. package/modules/article-tags/article-tags.prototype.js +9 -10
  90. package/modules/article-tags/article-tags.twig +1 -1
  91. package/modules/article-timestamp/article-timestamp.prototype.js +13 -0
  92. package/modules/article-timestamp/article-timestamp.twig +5 -0
  93. package/modules/article-title/article-title.prototype.js +4 -0
  94. package/modules/article-title/article-title.twig +1 -0
  95. package/modules/author/author.prototype.js +43 -0
  96. package/modules/author/author.twig +38 -0
  97. package/modules/author-blurb/author-blurb.prototype.js +56 -0
  98. package/modules/author-blurb/author-blurb.twig +27 -0
  99. package/modules/author-details/author-details.prototype.js +70 -0
  100. package/modules/author-details/author-details.twig +25 -0
  101. package/modules/back-to-list/back-to-list.prototype.js +11 -0
  102. package/modules/back-to-list/back-to-list.twig +5 -0
  103. package/modules/badge/badge.prototype.js +10 -6
  104. package/modules/badge/badge.twig +1 -1
  105. package/modules/banner/banner.prototype.js +10 -0
  106. package/modules/banner/banner.twig +10 -0
  107. package/modules/brands-most-popular/brands-most-popular.prototype.js +40 -0
  108. package/modules/brands-most-popular/brands-most-popular.twig +11 -0
  109. package/modules/breadcrumbs/breadcrumbs.prototype.js +4 -5
  110. package/modules/breadcrumbs/breadcrumbs.twig +1 -1
  111. package/modules/breaking-news/breaking-news.prototype.js +29 -0
  112. package/modules/breaking-news/breaking-news.twig +18 -0
  113. package/modules/button/button.prototype.js +9 -0
  114. package/modules/button/button.twig +7 -0
  115. package/modules/buy-now/buy-now.prototype.js +36 -0
  116. package/modules/buy-now/buy-now.twig +23 -0
  117. package/modules/carousel-grid/README.md +7 -0
  118. package/modules/carousel-grid/carousel-grid.overlay.js +26 -0
  119. package/modules/carousel-grid/carousel-grid.prototype.js +50 -0
  120. package/modules/carousel-grid/carousel-grid.twig +17 -0
  121. package/modules/carousel-slider/carousel-slider.prototype.js +56 -0
  122. package/modules/carousel-slider/carousel-slider.twig +11 -0
  123. package/modules/container/README.md +3 -0
  124. package/modules/container/container.prototype.js +7 -0
  125. package/modules/container/container.twig +1 -0
  126. package/modules/content-showcase/content-showcase.prototype.js +30 -0
  127. package/modules/content-showcase/content-showcase.the-moth.js +33 -0
  128. package/modules/content-showcase/content-showcase.twig +7 -0
  129. package/modules/expandable-search/expandable-search.prototype.js +19 -0
  130. package/modules/expandable-search/expandable-search.twig +9 -0
  131. package/modules/featured-stories/featured-stories.prototype.js +27 -0
  132. package/modules/featured-stories/featured-stories.twig +18 -0
  133. package/modules/featured-video/featured-video.prototype.js +33 -0
  134. package/modules/featured-video/featured-video.twig +8 -0
  135. package/modules/featured-video/featured-video.video-post.js +10 -0
  136. package/modules/footer/README.md +15 -0
  137. package/modules/footer/footer.prototype.js +8 -8
  138. package/modules/footer/footer.twig +17 -12
  139. package/modules/footer-button-list/footer-button-list.prototype.js +43 -0
  140. package/modules/footer-button-list/footer-button-list.twig +13 -0
  141. package/modules/footer-magazine-image/footer-magazine-image.prototype.js +15 -0
  142. package/modules/footer-magazine-image/footer-magazine-image.twig +3 -0
  143. package/modules/footer-menus/README.md +3 -0
  144. package/modules/footer-menus/footer-menus.prototype.js +9 -10
  145. package/modules/footer-menus/footer-menus.twig +2 -2
  146. package/modules/footer-newsletter/README.md +5 -0
  147. package/modules/footer-newsletter/footer-newsletter.prototype.js +18 -15
  148. package/modules/footer-newsletter/footer-newsletter.twig +1 -1
  149. package/modules/footer-social/README.md +3 -0
  150. package/modules/footer-social/footer-social.prototype.js +27 -21
  151. package/modules/footer-social/footer-social.twig +1 -1
  152. package/modules/footer-tip/footer-tip.prototype.js +19 -17
  153. package/modules/footer-tip/footer-tip.twig +1 -1
  154. package/modules/header/header.article.js +39 -0
  155. package/modules/header/header.prototype.js +90 -0
  156. package/modules/header/header.twig +74 -0
  157. package/modules/header-menu/header-menu.prototype.js +26 -0
  158. package/modules/header-menu/header-menu.twig +3 -0
  159. package/modules/header-sticky/header-sticky.article.js +43 -0
  160. package/modules/header-sticky/header-sticky.prototype.js +39 -0
  161. package/modules/header-sticky/header-sticky.twig +30 -0
  162. package/modules/heading/heading.h1.js +8 -0
  163. package/modules/heading/heading.h2.js +8 -0
  164. package/modules/heading/heading.h3.js +8 -0
  165. package/modules/heading/heading.h4.js +7 -0
  166. package/modules/heading/heading.h5.js +7 -0
  167. package/modules/heading/heading.h6.js +7 -0
  168. package/modules/heading/heading.prototype.js +9 -0
  169. package/modules/heading/heading.twig +3 -0
  170. package/modules/hero-image-story/hero-image-story.prototype.js +41 -0
  171. package/modules/hero-image-story/hero-image-story.twig +8 -0
  172. package/modules/injected-related-content/injected-related-content.prototype.js +61 -0
  173. package/modules/injected-related-content/injected-related-content.twig +23 -0
  174. package/modules/linked-gallery/linked-gallery.prototype.js +56 -0
  175. package/modules/linked-gallery/linked-gallery.twig +21 -0
  176. package/modules/list/list.ordered.js +7 -0
  177. package/modules/list/list.prototype.js +57 -0
  178. package/modules/list/list.twig +11 -0
  179. package/modules/listicle-item/listicle-item.prototype.js +6 -6
  180. package/modules/listicle-item/listicle-item.twig +1 -1
  181. package/modules/mega-menu/mega-menu.prototype.js +16 -0
  182. package/modules/mega-menu/mega-menu.twig +10 -0
  183. package/modules/mega-menu-content/mega-menu-content.prototype.js +10 -0
  184. package/modules/mega-menu-content/mega-menu-content.twig +5 -0
  185. package/modules/mega-menu-footer/mega-menu-footer.prototype.js +41 -0
  186. package/modules/mega-menu-footer/mega-menu-footer.twig +19 -0
  187. package/modules/mega-menu-footer-subscribe/mega-menu-footer-subscribe.prototype.js +20 -0
  188. package/modules/mega-menu-footer-subscribe/mega-menu-footer-subscribe.twig +4 -0
  189. package/modules/mega-menu-item/mega-menu-item.prototype.js +23 -0
  190. package/modules/mega-menu-item/mega-menu-item.twig +13 -0
  191. package/modules/more-stories-button/more-stories-button.profile.js +12 -0
  192. package/modules/more-stories-button/more-stories-button.prototype.js +29 -0
  193. package/modules/more-stories-button/more-stories-button.twig +13 -0
  194. package/modules/newsletter/newsletter.prototype.js +46 -0
  195. package/modules/newsletter/newsletter.twig +21 -0
  196. package/modules/newsletter-cta/newsletter-cta.prototype.js +21 -0
  197. package/modules/newsletter-cta/newsletter-cta.twig +22 -0
  198. package/modules/newswire/newswire.prototype.js +46 -0
  199. package/modules/newswire/newswire.twig +16 -0
  200. package/modules/page-404/page-404.prototype.js +44 -0
  201. package/modules/page-404/page-404.twig +32 -0
  202. package/modules/paragraph/paragraph.narrow.js +8 -0
  203. package/modules/paragraph/paragraph.prototype.js +8 -0
  204. package/modules/paragraph/paragraph.twig +3 -0
  205. package/modules/pmc-footer/pmc-footer.prototype.js +26 -24
  206. package/modules/pmc-footer/pmc-footer.twig +11 -9
  207. package/modules/post-content-image/post-content-image.prototype.js +14 -0
  208. package/modules/post-content-image/post-content-image.twig +3 -0
  209. package/modules/production-credits/production-credits.prototype.js +5 -0
  210. package/modules/production-credits/production-credits.twig +4 -0
  211. package/modules/profile-blurb/profile-blurb.card.js +28 -0
  212. package/modules/profile-blurb/profile-blurb.prototype.js +45 -0
  213. package/modules/profile-blurb/profile-blurb.twig +37 -0
  214. package/modules/profile-body/profile-body.prototype.js +20 -0
  215. package/modules/profile-body/profile-body.twig +15 -0
  216. package/modules/profile-browse-by/profile-browse-by.prototype.js +29 -0
  217. package/modules/profile-browse-by/profile-browse-by.twig +6 -0
  218. package/modules/profile-card-list/profile-card-list.prototype.js +25 -0
  219. package/modules/profile-card-list/profile-card-list.twig +7 -0
  220. package/modules/profile-filter/profile-filter.prototype.js +26 -0
  221. package/modules/profile-filter/profile-filter.twig +15 -0
  222. package/modules/profile-gallery/profile-gallery.prototype.js +28 -0
  223. package/modules/profile-gallery/profile-gallery.twig +13 -0
  224. package/modules/profile-header/profile-header.prototype.js +29 -0
  225. package/modules/profile-header/profile-header.twig +27 -0
  226. package/modules/profile-highlights/profile-highlights.prototype.js +22 -0
  227. package/modules/profile-highlights/profile-highlights.twig +17 -0
  228. package/modules/profile-landing-header/profile-landing-header.prototype.js +17 -0
  229. package/modules/profile-landing-header/profile-landing-header.twig +12 -0
  230. package/modules/profile-landing-river/profile-landing-river.prototype.js +21 -0
  231. package/modules/profile-landing-river/profile-landing-river.twig +13 -0
  232. package/modules/profile-related-stories/profile-related-stories.prototype.js +33 -0
  233. package/modules/profile-related-stories/profile-related-stories.twig +9 -0
  234. package/modules/pullquote/pullquote.prototype.js +8 -0
  235. package/modules/pullquote/pullquote.twig +3 -0
  236. package/modules/read-next/read-next.prototype.js +20 -0
  237. package/modules/read-next/read-next.twig +4 -0
  238. package/modules/search-form/search-form.prototype.js +8 -0
  239. package/modules/search-form/search-form.twig +11 -0
  240. package/modules/secondary-stories/secondary-stories.prototype.js +119 -0
  241. package/modules/secondary-stories/secondary-stories.twig +22 -0
  242. package/modules/section-heading/section-heading.h2.js +9 -0
  243. package/modules/section-heading/section-heading.h3.js +10 -0
  244. package/modules/section-heading/section-heading.prototype.js +14 -0
  245. package/modules/section-heading/section-heading.twig +8 -0
  246. package/modules/separator/separator.prototype.js +4 -0
  247. package/modules/separator/separator.thick.js +7 -0
  248. package/modules/separator/separator.twig +1 -0
  249. package/modules/separator/separator.wide-thick.js +7 -0
  250. package/modules/separator/separator.wide.js +7 -0
  251. package/modules/social-share/social-share.prototype.js +43 -0
  252. package/modules/social-share/social-share.twig +30 -0
  253. package/modules/special-coverage/special-coverage.prototype.js +47 -0
  254. package/modules/special-coverage/special-coverage.twig +29 -0
  255. package/modules/story/story.borders.js +8 -0
  256. package/modules/story/story.center-vertical-borders.js +7 -0
  257. package/modules/story/story.center-vertical.js +11 -0
  258. package/modules/story/story.prototype.js +43 -0
  259. package/modules/story/story.right-borders.js +9 -0
  260. package/modules/story/story.right.js +14 -0
  261. package/modules/story/story.story-arc.js +9 -0
  262. package/modules/story/story.twig +88 -0
  263. package/modules/story/story.vertical-borders.js +7 -0
  264. package/modules/story/story.vertical.js +11 -0
  265. package/modules/story-arc-stories/story-arc-stories.prototype.js +21 -0
  266. package/modules/story-arc-stories/story-arc-stories.twig +14 -0
  267. package/modules/story-featured-quote/story-featured-quote.prototype.js +28 -0
  268. package/modules/story-featured-quote/story-featured-quote.twig +27 -0
  269. package/modules/story-grid/story-grid.prototype.js +24 -0
  270. package/modules/story-grid/story-grid.river.js +15 -0
  271. package/modules/story-grid/story-grid.twig +17 -0
  272. package/modules/sub-header/sub-header.prototype.js +8 -0
  273. package/modules/sub-header/sub-header.twig +7 -0
  274. package/modules/top-stories/top-stories.prototype.js +41 -0
  275. package/modules/top-stories/top-stories.twig +12 -0
  276. package/modules/top-stories/top-stories.xl.js +14 -0
  277. package/modules/vlanding-playlist/README.md +1 -0
  278. package/modules/vlanding-playlist/vlanding-playlist.prototype.js +34 -0
  279. package/modules/vlanding-playlist/vlanding-playlist.twig +20 -0
  280. package/modules/vlanding-video-card/README.md +1 -0
  281. package/modules/vlanding-video-card/vlanding-video-card.prototype.js +25 -0
  282. package/modules/vlanding-video-card/vlanding-video-card.twig +56 -0
  283. package/modules/vlanding-video-showcase/README.md +12 -0
  284. package/modules/vlanding-video-showcase/vlanding-video-showcase.prototype.js +68 -0
  285. package/modules/vlanding-video-showcase/vlanding-video-showcase.twig +46 -0
  286. package/objects/o-account-menu/o-account-menu.prototype.js +35 -0
  287. package/objects/o-account-menu/o-account-menu.twig +25 -0
  288. package/objects/o-author/o-author.prototype.js +14 -0
  289. package/objects/o-author/o-author.twig +17 -0
  290. package/objects/o-card/README.md +1 -0
  291. package/objects/o-card/o-card.prototype.js +25 -0
  292. package/objects/o-card/o-card.twig +75 -0
  293. package/objects/o-card-list/README.md +3 -0
  294. package/objects/o-card-list/o-card-list.prototype.js +13 -0
  295. package/objects/o-card-list/o-card-list.twig +7 -0
  296. package/objects/o-category-link/o-category-link.prototype.js +6 -0
  297. package/objects/o-category-link/o-category-link.twig +5 -0
  298. package/objects/o-checkbox-input-list/o-checkbox-input-list.prototype.js +16 -0
  299. package/objects/o-checkbox-input-list/o-checkbox-input-list.twig +15 -0
  300. package/objects/o-collection-item/o-collection-item.floated.js +5 -5
  301. package/objects/o-collection-item/o-collection-item.prototype.js +6 -6
  302. package/objects/o-collection-item/o-collection-item.twig +1 -1
  303. package/objects/o-email-capture-form/README.md +11 -0
  304. package/objects/o-email-capture-form/o-email-capture-form.minimal.js +10 -10
  305. package/objects/o-email-capture-form/o-email-capture-form.prototype.js +15 -19
  306. package/objects/o-email-capture-form/o-email-capture-form.twig +8 -13
  307. package/objects/o-figure/README.md +17 -0
  308. package/objects/o-figure/o-figure.prototype.js +15 -8
  309. package/objects/o-figure/o-figure.twig +22 -36
  310. package/objects/o-header/o-header.prototype.js +12 -10
  311. package/objects/o-header/o-header.twig +5 -1
  312. package/objects/o-header-buttons/o-header-buttons.column.js +10 -0
  313. package/objects/o-header-buttons/o-header-buttons.prototype.js +41 -0
  314. package/objects/o-header-buttons/o-header-buttons.twig +42 -0
  315. package/objects/o-icon-button/README.md +5 -0
  316. package/objects/o-icon-button/o-icon-button.prototype.js +21 -0
  317. package/objects/o-icon-button/o-icon-button.search.js +9 -0
  318. package/objects/o-icon-button/o-icon-button.twig +29 -0
  319. package/objects/o-indicator/README.md +1 -0
  320. package/objects/o-indicator/o-indicator.photos.js +12 -0
  321. package/objects/o-indicator/o-indicator.prototype.js +8 -0
  322. package/objects/o-indicator/o-indicator.twig +9 -0
  323. package/objects/o-input-group/o-input-group.prototype.js +11 -0
  324. package/objects/o-input-group/o-input-group.twig +5 -0
  325. package/objects/o-nav/README.md +2 -2
  326. package/objects/o-nav/o-nav.horizontal.js +6 -6
  327. package/objects/o-nav/o-nav.prototype.js +17 -13
  328. package/objects/o-nav/o-nav.twig +29 -3
  329. package/objects/o-select-nav/o-select-nav.prototype.js +17 -0
  330. package/objects/o-select-nav/o-select-nav.twig +9 -0
  331. package/objects/o-social-list/o-social-list.prototype.js +21 -31
  332. package/objects/o-social-list/o-social-list.twig +10 -2
  333. package/objects/o-span-group/README.md +1 -0
  334. package/objects/o-span-group/o-span-group.prototype.js +11 -0
  335. package/objects/o-span-group/o-span-group.twig +5 -0
  336. package/objects/o-sponsored-by/o-sponsored-by.prototype.js +9 -10
  337. package/objects/o-sponsored-by/o-sponsored-by.twig +2 -2
  338. package/objects/o-story-arc-item/o-story-arc-item.prototype.js +29 -0
  339. package/objects/o-story-arc-item/o-story-arc-item.twig +9 -0
  340. package/objects/o-sub-header/o-sub-header.prototype.js +39 -0
  341. package/objects/o-sub-header/o-sub-header.twig +9 -0
  342. package/objects/o-tease/o-tease.prototype.js +24 -20
  343. package/objects/o-tease/o-tease.twig +7 -3
  344. package/objects/o-tease-list/o-tease-list.prototype.js +12 -24
  345. package/objects/o-tease-list/o-tease-list.twig +5 -1
  346. package/objects/o-video-card/o-video-card.prototype.js +45 -0
  347. package/objects/o-video-card/o-video-card.twig +67 -0
  348. package/package.json +6 -9
  349. package/pattern.html +61 -9
  350. package/style-guide/colors.html +33 -0
  351. package/style-guide/fonts.html +22 -0
  352. package/style-guide/index.html +14 -0
  353. package/components/c-tagline/c-tagline.json +0 -4
  354. package/components/c-tagline/c-tagline.scss +0 -19
  355. package/modules/.DS_Store +0 -0
  356. package/objects/o-figure/o-figure.scss +0 -46
  357. package/objects/o-tease/o-tease.scss +0 -30
  358. package/scratch-pad.css +0 -3
@@ -0,0 +1,43 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_button_prototype = require( '../../components/c-button/c-button.prototype.js' );
4
+ const get_digital_access = clonedeep( c_button_prototype );
5
+ const get_magazine = clonedeep( c_button_prototype );
6
+ const get_gift = clonedeep( c_button_prototype );
7
+ const customer_service = clonedeep( c_button_prototype );
8
+
9
+ get_digital_access.c_button_type_attr = 'button';
10
+ get_digital_access.c_button_inner_classes = 'lrv-u-display-inline-block lrv-u-border-color-grey lrv-u-border-color-white:hover lrv-u-padding-tb-050 lrv-u-padding-lr-025 lrv-u-width-100p lrv-u-border-a-1';
11
+ get_digital_access.c_button_classes = 'lrv-u-text-align-center lrv-u-margin-b-1 lrv-u-padding-a-025 lrv-u-background-color-brand-primary:hover lrv-u-color-white:hover lrv-u-font-weight-bold lrv-a-font-body-xxs lrv-u-background-color-white lrv-u-color-black cx-dynamic-link';
12
+ get_digital_access.c_button_screen_reader_text = 'Get Digital Access';
13
+ get_digital_access.c_button_text = 'Get Digital Access';
14
+ get_digital_access.c_button_url = '#get-digital-access';
15
+
16
+ get_magazine.c_button_type_attr = 'button';
17
+ get_magazine.c_button_inner_classes = 'lrv-u-display-inline-block lrv-u-border-color-grey lrv-u-border-color-white:hover lrv-u-padding-tb-050 lrv-u-padding-lr-025 lrv-u-width-100p lrv-u-border-a-1';
18
+ get_magazine.c_button_classes = 'lrv-u-text-align-center lrv-u-margin-b-1 lrv-u-padding-a-025 lrv-u-background-color-brand-primary:hover lrv-u-color-white:hover lrv-u-font-weight-bold lrv-a-font-body-xxs lrv-u-background-color-white lrv-u-color-black';
19
+ get_magazine.c_button_screen_reader_text = 'Get The Magazine';
20
+ get_magazine.c_button_text = 'Get The Magazine';
21
+ get_magazine.c_button_url = '#get-the-magazine';
22
+
23
+ get_gift.c_button_type_attr = 'button';
24
+ get_gift.c_button_inner_classes = 'lrv-u-display-inline-block lrv-u-border-color-grey lrv-u-border-color-white:hover lrv-u-padding-tb-050 lrv-u-padding-lr-025 lrv-u-width-100p lrv-u-border-a-1';
25
+ get_gift.c_button_classes = 'lrv-u-text-align-center lrv-u-margin-b-1 lrv-u-padding-a-025 lrv-u-background-color-brand-primary:hover lrv-u-color-white:hover lrv-u-font-weight-bold lrv-a-font-body-xxs lrv-u-color-white lrv-u-border-a-1 lrv-u-border-color-grey lrv-u-border-color-brand-primary-dark:hover';
26
+ get_gift.c_button_screen_reader_text = 'Get a Gift';
27
+ get_gift.c_button_text = 'Get a Gift';
28
+ get_gift.c_button_url = '#get-a-gift';
29
+
30
+ customer_service.c_button_type_attr = 'button';
31
+ customer_service.c_button_inner_classes = 'lrv-u-display-inline-block lrv-u-border-color-grey lrv-u-border-color-white:hover lrv-u-padding-tb-050 lrv-u-padding-lr-025 lrv-u-width-100p lrv-u-border-a-1';
32
+ customer_service.c_button_classes = 'lrv-u-text-align-center lrv-u-margin-b-1 lrv-u-padding-a-025 lrv-u-background-color-brand-primary:hover lrv-u-color-white:hover lrv-u-font-weight-bold lrv-a-font-body-xxs lrv-u-color-white lrv-u-border-a-1 lrv-u-border-color-grey lrv-u-border-color-brand-primary-dark:hover';
33
+ customer_service.c_button_screen_reader_text = 'Customer Service';
34
+ customer_service.c_button_text = 'Customer Service';
35
+ customer_service.c_button_url = '#customer-service';
36
+
37
+ module.exports = {
38
+ footer_button_list_content_classes: 'o-footer-button-list__content a-font-body-s lrv-u-flex lrv-u-flex-direction-column a-double-underline a-double-underline-color-grey a-double-underline-bottom@mobile-max lrv-u-padding-b-2@mobile-max',
39
+ footer_button_list_title_classes: 'lrv-a-font-accent-medium-l lrv-u-font-weight-bold lrv-u-display-none@mobile-max lrv-u-padding-b-050',
40
+ footer_button_list_classes: 'lrv-u-text-transform-uppercase u-letter-spacing-0063',
41
+ footer_button_list_title_text: '',
42
+ footer_button_list_buttons: [ get_digital_access, get_magazine, get_gift, customer_service],
43
+ };
@@ -0,0 +1,13 @@
1
+ <div class="footer-button-list {{ footer_button_list_classes }}">
2
+ {% if footer_button_list_title_text %}
3
+ <h4 class="footer-button-list__title {{ footer_button_list_title_classes }}">
4
+ {{ footer_button_list_title_text }}
5
+ </h4>
6
+ {% endif %}
7
+
8
+ <section class="footer-button-list__content lrv-u-flex lrv-u-flex-direction-column {{ footer_button_list_content_classes }}">
9
+ {% for item in footer_button_list_buttons %}
10
+ {% include "@larva/components/c-button/c-button.twig" with item %}
11
+ {% endfor %}
12
+ </section>
13
+ </div>
@@ -0,0 +1,15 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_lazy_magazine_image_prototype = require( '../../components/c-lazy-image/c-lazy-image.prototype' );
4
+ const c_lazy_magazine_image = clonedeep( c_lazy_magazine_image_prototype );
5
+
6
+ c_lazy_magazine_image.c_lazy_image_classes = 'lrv-u-flex-shrink-0 lrv-u-margin-r-2 lrv-u-width-300 a-hidden@desktop-xl-max';
7
+ c_lazy_magazine_image.c_lazy_image_src_url = 'https://cdn.shopify.com/s/files/1/0238/6647/products/2019_37_540x.jpg';
8
+ c_lazy_magazine_image.c_lazy_image_placeholder_url = 'https://cdn.shopify.com/s/files/1/0238/6647/products/2019_37_540x.jpg';
9
+ c_lazy_magazine_image.c_lazy_image_crop_class = '';
10
+ c_lazy_magazine_image.c_lazy_image_link_url = '/subscribe-us/';
11
+ c_lazy_magazine_image.c_lazy_image_srcset_attr = 'https://cdn.shopify.com/s/files/1/0238/6647/products/2019_37_540x.jpg 240w,https://cdn.shopify.com/s/files/1/0238/6647/products/2019_37_540x.jpg 320w,https://cdn.shopify.com/s/files/1/0238/6647/products/2019_37_540x.jpg 500w,https://cdn.shopify.com/s/files/1/0238/6647/products/2019_37_540x.jpg 640w,https://cdn.shopify.com/s/files/1/0238/6647/products/2019_37_540x.jpg 1024w';
12
+
13
+ module.exports = {
14
+ c_lazy_magazine_image,
15
+ };
@@ -0,0 +1,3 @@
1
+ <div class="footer-image //">
2
+ {% include "@larva/components/c-lazy-image/c-lazy-image.twig" with c_lazy_magazine_image %}
3
+ </div>
@@ -0,0 +1,3 @@
1
+ # footer-menus
2
+
3
+ This module is included in `footer` and does not have its own JSON configuration file. Refer to the `footer` readme for details on implementing the footer in a theme.
@@ -1,19 +1,18 @@
1
- const path = require( 'path' );
2
- const clone = require( '@penskemediacorp/larva' ).clone;// This should be in this repo, probably
3
- const o_nav = clone( path.resolve( __dirname, '../../objects/o-nav/o-nav.prototype' ) );
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const o_nav = clonedeep( require( '../../objects/o-nav/o-nav.prototype' ) );
4
4
 
5
5
  o_nav.o_nav_title_text = 'Footer Menu';
6
- o_nav.o_nav_title_id_attr = 'pmc-footer';
7
- o_nav.o_nav_classes = 'pmc-js-MobileHeightToggle pmc-u-text-align-center@tablet pmc-u-border-a-1@mobile-max pmc-u-border-color-white';
8
- o_nav.o_nav_title_classes = 'pmc-js-MobileHeightToggle-trigger pmc-u-padding-lr-1 pmc-u-margin-tb-00 pmc-u-padding-t-1 pmc-u-padding-t-050@tablet pmc-u-padding-b-050 pmc-u-width-100p@mobile-max a-icon-after a-icon-arrow-down a-icon-after:margin-l-auto a-icon-after-remove@tablet a-icon-invert pmc-u-cursor-pointer pmc-u-font-family-primary pmc-u-font-weight-bold pmc-u-font-size-20';
9
- o_nav.o_nav_list_classes += ' pmc-js-MobileHeightToggle-target pmc-u-padding-b-050';
10
- o_nav.o_nav_list_item_classes = 'pmc-u-padding-lr-1 pmc-u-padding-tb-050 pmc-u-font-size-18@mobile-max pmc-u-font-size-12 pmc-u-color-grey-light pmc-u-color-white:hover';
6
+ o_nav.o_nav_classes = 'lrv-js-MobileHeightToggle lrv-u-text-align-center@tablet lrv-u-border-a-1@mobile-max lrv-u-border-color-white';
7
+ o_nav.o_nav_title_classes = 'lrv-js-MobileHeightToggle-trigger lrv-u-padding-lr-1 lrv-u-margin-tb-00 lrv-u-padding-t-1 lrv-u-padding-t-050@tablet lrv-u-padding-b-050 lrv-u-width-100p@mobile-max lrv-a-icon-after lrv-a-icon-arrow-down lrv-a-icon-after:margin-l-auto lrv-a-icon-after-remove@tablet lrv-a-icon-invert lrv-u-cursor-pointer lrv-u-font-family-primary lrv-u-font-weight-bold lrv-u-font-size-20';
8
+ o_nav.o_nav_list_classes += ' lrv-js-MobileHeightToggle-target lrv-u-padding-b-050';
9
+ o_nav.o_nav_list_item_classes = 'lrv-u-padding-lr-1 lrv-u-padding-tb-050 lrv-u-font-size-18@mobile-max lrv-u-font-size-12 lrv-u-color-grey-light lrv-u-color-white:hover';
11
10
 
12
11
  module.exports = {
13
- footer_menu_classes: "pmc-a-grid pmc-a-cols3@tablet pmc-u-background-black pmc-u-color-white",
12
+ footer_menu_classes: 'lrv-a-grid lrv-a-cols3@tablet lrv-u-background-color-black lrv-u-color-white',
14
13
  o_navs: [
15
14
  o_nav,
16
15
  o_nav,
17
16
  o_nav
18
17
  ]
19
- };
18
+ };
@@ -1,5 +1,5 @@
1
- <div class="footer-links // {{ footer_menu_classes }}">
1
+ <div class="footer-menus // {{ footer_menu_classes }}">
2
2
  {% for item in o_navs %}
3
3
  {% include "@larva/objects/o-nav/o-nav.twig" with item %}
4
4
  {% endfor %}
5
- </div>
5
+ </div>
@@ -0,0 +1,5 @@
1
+ # footer-newsletter
2
+
3
+ This module is included in `footer` and does not have its own JSON configuration file. Refer to the `footer` readme for details on implementing the footer in a theme.
4
+
5
+ The form in this pattern uses the o-email-capture-form.minimal configuration.
@@ -1,18 +1,21 @@
1
- const path = require( 'path' );
2
- const clone = require( '@penskemediacorp/larva' ).clone;// This should be in this repo, probably
3
- const o_email_capture_form = clone( path.resolve( __dirname, '../../objects/o-email-capture-form/o-email-capture-form.minimal' ) );
1
+ const clonedeep = require( 'lodash.clonedeep' );
4
2
 
5
- o_email_capture_form.c_button.c_button_classes += ' a-icon-invert';
3
+ const o_email_capture_form_minimal = clonedeep( require( '../../objects/o-email-capture-form/o-email-capture-form.minimal' ) );
4
+ const c_title = clonedeep( require( '../../components/c-title/c-title.prototype' ) );
5
+ const c_tagline = clonedeep( require( '../../components/c-tagline/c-tagline.prototype' ) );
6
+
7
+ c_title.c_title_url = false;
8
+ c_title.c_title_text = 'Stay In The Know';
9
+ c_title.c_title_classes = 'lrv-u-margin-b-025 lrv-u-font-family-primary lrv-u-text-align-center';
10
+
11
+ c_tagline.c_tagline_text = 'Sign up for our daily newsletter';
12
+ c_tagline.c_tagline_classes = 'lrv-u-font-size-14 u-font-style-italic lrv-u-font-family-basic lrv-u-text-align-center';
13
+
14
+ o_email_capture_form_minimal.c_button.c_button_classes += ' lrv-a-icon-invert';
6
15
 
7
16
  module.exports = {
8
- "footer_newsletter_classes": "pmc-u-text-align-center pmc-u-color-white pmc-u-background-black pmc-u-flex pmc-u-flex-direction-column pmc-u-align-items-center",
9
- "c_title": {
10
- "c_title_classes": "pmc-u-margin-b-025 pmc-u-font-family-primary pmc-u-text-align-center",
11
- "c_title_text": "Stay In The Know"
12
- },
13
- "c_tagline": {
14
- "c_tagline_classes": "pmc-u-font-size-14 u-font-style-italic pmc-u-font-family-basic pmc-u-text-align-center",
15
- "c_tagline_text": "Sign up for our daily newsletter"
16
- },
17
- "o_email_capture_form": o_email_capture_form
18
- };
17
+ footer_newsletter_classes: 'lrv-u-text-align-center lrv-u-color-white lrv-u-background-color-black lrv-u-flex lrv-u-flex-direction-column lrv-u-align-items-center',
18
+ c_title: c_title,
19
+ c_tagline: c_tagline,
20
+ o_email_capture_form: o_email_capture_form_minimal
21
+ };
@@ -2,4 +2,4 @@
2
2
  {% include "@larva/components/c-title/c-title.twig" with c_title %}
3
3
  {% include "@larva/components/c-tagline/c-tagline.twig" with c_tagline %}
4
4
  {% include "@larva/objects/o-email-capture-form/o-email-capture-form.twig" with o_email_capture_form %}
5
- </section>
5
+ </section>
@@ -0,0 +1,3 @@
1
+ # footer-social
2
+
3
+ This module is included in `footer` and does not have its own JSON configuration file. Refer to the `footer` readme for details on implementing the footer in a theme.
@@ -1,30 +1,36 @@
1
- const path = require( 'path' );
2
- const clone = require( '@penskemediacorp/larva' ).clone;// This should be in this repo, probably
3
- const c_icon_path = path.resolve( __dirname, '../../components/c-icon/c-icon.prototype' );
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_icon_prototype = require( '../../components/c-icon/c-icon.prototype' );
4
+ const c_title = clonedeep( require( '../../components/c-title/c-title.prototype' ) );
5
+ const c_tagline = clonedeep( require( '../../components/c-tagline/c-tagline.prototype' ) );
6
+ const o_social_list = clonedeep( require( '../../objects/o-social-list/o-social-list.prototype' ) );
7
+
8
+ c_title.c_title_url = false;
9
+ c_title.c_title_classes = 'lrv-u-margin-b-025 lrv-u-font-family-primary lrv-u-text-align-center';
10
+ c_title.c_title_text = 'Connect with Us';
11
+
12
+ c_tagline.c_tagline_classes = 'lrv-u-font-size-14 u-font-style-italic lrv-u-font-family-basic lrv-u-text-align-center';
13
+ c_tagline.c_tagline_text = 'Get our latest stories in the feed of your favorite networks';
4
14
 
5
15
  const social = [ 'instagram', 'pinit', 'twitter', 'facebook', 'youtube' ];
6
- const o_social_list_icons = [];
16
+
17
+ // Clear existing icons, update classes
18
+ o_social_list.o_social_list_icons = [];
19
+ o_social_list.o_social_list_classes = 'lrv-a-unstyle-list lrv-u-flex lrv-u-align-items-center lrv-u-justify-content-center';
20
+
7
21
 
8
22
  for (let i = 0; i < social.length; i++) {
9
- let c_icon = clone( c_icon_path );
23
+ let c_icon = clonedeep( c_icon_prototype );
24
+ c_icon.c_icon_url = '#';
10
25
  c_icon.c_icon_name = social[i];
11
- c_icon.c_icon_link_classes += ' pmc-u-display-block pmc-u-border-radius-50p pmc-u-color-grey pmc-u-margin-lr-025 pmc-u-padding-a-050 pmc-u-background-white pmc-u-color-grey:hover';
26
+ c_icon.c_icon_link_classes += ' lrv-u-display-block lrv-u-border-radius-50p lrv-u-color-grey lrv-u-margin-lr-050 lrv-u-padding-a-050 lrv-u-background-color-white lrv-u-color-grey-dark:hover';
12
27
 
13
- o_social_list_icons.push( c_icon );
28
+ o_social_list.o_social_list_icons.push( c_icon );
14
29
  }
15
30
 
16
31
  module.exports = {
17
- "footer_social_classes": "pmc-u-text-align-center pmc-u-color-white pmc-u-background-black",
18
- "c_title": {
19
- "c_title_classes": "pmc-u-margin-b-025 pmc-u-font-family-primary pmc-u-text-align-center",
20
- "c_title_text": "Connect with Us"
21
- },
22
- "c_tagline": {
23
- "c_tagline_classes": "pmc-u-font-size-14 u-font-style-italic pmc-u-font-family-basic pmc-u-text-align-center",
24
- "c_tagline_text": "Get our latest stories in the feed of your favorite networks"
25
- },
26
- "o_social_list": {
27
- "o_social_list_classes": "pmc-a-unstyle-list pmc-u-flex pmc-u-align-items-center pmc-u-justify-content-center",
28
- "o_social_list_icons": o_social_list_icons
29
- }
30
- };
32
+ footer_social_classes: 'lrv-u-text-align-center lrv-u-color-white lrv-u-background-color-black',
33
+ c_title: c_title,
34
+ c_tagline: c_tagline,
35
+ o_social_list: o_social_list
36
+ };
@@ -2,4 +2,4 @@
2
2
  {% include "@larva/components/c-title/c-title.twig" with c_title %}
3
3
  {% include "@larva/components/c-tagline/c-tagline.twig" with c_tagline %}
4
4
  {% include "@larva/objects/o-social-list/o-social-list.twig" with o_social_list %}
5
- </section>
5
+ </section>
@@ -1,21 +1,23 @@
1
- const path = require( 'path' );
2
- const clone = require( '@penskemediacorp/larva' ).clone;// This should be in this repo, probably
3
- const c_button = clone( path.resolve( __dirname, '../../components/c-button/c-button.stripped' ) );
1
+ const clonedeep = require( 'lodash.clonedeep' );
4
2
 
5
- c_button.c_button_classes += "pmc-u-color-white pmc-u-color-grey-light:hover pmc-u-background-black pmc-u-font-size-12 pmc-u-font-weight-bold pmc-u-text-transform-uppercase a-icon-after a-icon-arrow-right a-icon-invert";
6
- c_button.c_button_text = "Send Us a Tip";
7
- c_button.c_button_url = "https://google.com";
8
- c_button.c_button_inner_classes = "pmc-u-color-white pmc-u-color-grey-light:hover";
3
+ const c_button = clonedeep( require( '../../components/c-button/c-button.stripped' ) );
4
+ const c_title = clonedeep( require( '../../components/c-title/c-title.prototype' ) );
5
+ const c_tagline = clonedeep( require( '../../components/c-tagline/c-tagline.prototype' ) );
6
+
7
+ c_button.c_button_classes += 'lrv-u-color-white lrv-u-color-grey-light:hover lrv-u-background-color-black lrv-u-font-size-12 lrv-u-font-weight-bold lrv-u-text-transform-uppercase lrv-a-icon-after lrv-a-icon-arrow-right lrv-a-icon-invert';
8
+ c_button.c_button_text = 'Send Us a Tip';
9
+ c_button.c_button_url = 'https://google.com';
10
+ c_button.c_button_inner_classes = 'lrv-u-color-white lrv-u-color-grey-light:hover';
11
+
12
+ c_title.c_title_classes = 'lrv-u-margin-b-025 lrv-u-font-family-primary';
13
+ c_title.c_title_text = 'Have a Tip?';
14
+
15
+ c_tagline.c_tagline_classes = 'lrv-u-font-size-14 u-font-style-italic lrv-u-font-family-basic';
16
+ c_tagline.c_tagline_text = 'We want to hear from you! Send us a tip using our anonymous form.';
9
17
 
10
18
  module.exports = {
11
- "footer_tip_classes": "pmc-u-text-align-center pmc-u-color-white pmc-u-background-black",
12
- "c_title": {
13
- "c_title_classes": "pmc-u-margin-b-025 pmc-u-font-family-primary",
14
- "c_title_text": "Have a Tip?"
15
- },
16
- "c_tagline": {
17
- "c_tagline_classes": "pmc-u-font-size-14 u-font-style-italic pmc-u-font-family-basic",
18
- "c_tagline_text": "We want to hear from you! Send us a tip using our annonymous form."
19
- },
20
- "c_button": c_button
19
+ footer_tip_classes: 'lrv-u-text-align-center lrv-u-color-white lrv-u-background-color-black',
20
+ c_title: c_title,
21
+ c_tagline: c_tagline,
22
+ c_button: c_button
21
23
  };
@@ -2,4 +2,4 @@
2
2
  {% include "@larva/components/c-title/c-title.twig" with c_title %}
3
3
  {% include "@larva/components/c-tagline/c-tagline.twig" with c_tagline %}
4
4
  {% include "@larva/components/c-button/c-button.twig" with c_button %}
5
- </section>
5
+ </section>
@@ -0,0 +1,39 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const header_prototype = require( './header.prototype' );
4
+ const header = clonedeep( header_prototype );
5
+
6
+ const header_sticky_prototype = require( '../header-sticky/header-sticky.article' );
7
+ const header_sticky = clonedeep( header_sticky_prototype );
8
+ header.header_sticky = header_sticky;
9
+
10
+ header.is_home = false;
11
+ header.header_classes = 'lrv-a-glue-parent';
12
+ header.header_inner_classes = 'lrv-u-background-color-white lrv-u-border-b-1 lrv-u-border-t-1 lrv-u-width-100p';
13
+ header.header_sticky_outer_classes = ' lrv-u-width-100p';
14
+ header.header_contents_classes = 'lrv-u-flex lrv-u-justify-content-space-between';
15
+ header.header_outer_classes='lrv-u-border-t-5 lrv-u-padding-t-025 lrv-u-width-100p';
16
+ header.header_logo_classes='lrv-u-flex lrv-u-text-align-center';
17
+ header.header_content_primary_classes = 'lrv-a-wrapper lrv-a-space-children-horizontal lrv-u-align-items-center lrv-u-flex';
18
+ header.header_content_secondary_classes = 'lrv-u-align-items-center lrv-u-border-b-1 lrv-u-border-t-1 lrv-u-flex lrv-u-justify-content-center lrv-u-margin-t-025 lrv-u-padding-tb-075';
19
+ header.header_links_primary_classes = 'lrv-u-align-items-center lrv-u-padding-r-1 lrv-u-border-r-1 lrv-a-space-children--050 lrv-a-space-children-horizontal lrv-u-flex';
20
+ header.header_links_secondary_classes = 'lrv-a-space-children--1 lrv-a-space-children-horizontal lrv-u-flex lrv-u-margin-l-auto';
21
+ header.c_logo.c_logo_classes += 'lrv-u-color-brand-primary lrv-u-color-brand-primary:hover lrv-u-display-inline-flex lrv-u-justify-content-center lrv-u-width-100p lrv-u-width-150';
22
+ header.header_content_menu_classes='lrv-u-margin-l-125 lrv-a-space-children--050 lrv-a-space-children-horizontal lrv-u-flex';
23
+
24
+ header.o_icon_button_menu.c_icon.c_icon_classes = 'lrv-u-display-block lrv-u-width-30 lrv-u-height-30';
25
+ header.o_icon_button_menu.o_icon_button_classes = 'js-MegaMenu-Trigger lrv-u-align-items-center lrv-u-border-a-0 lrv-u-flex lrv-u-padding-lr-1 lrv-u-background-color-transparent lrv-u-color-brand-primary:hover';
26
+ header.o_icon_button_menu.o_icon_button_screen_reader_text = 'Click to expand the Mega Menu';
27
+ header.o_icon_button_menu.c_span.c_span_text = '';
28
+
29
+ header.header_menu.o_nav.o_nav_list_item_classes = 'lrv-a-font-body-s lrv-a-space-children--2 lrv-a-space-children-horizontal lrv-a-unstyle-list lrv-u-flex lrv-u-justify-content-center lrv-u-text-transform-uppercase lrv-u-padding-t-050';
30
+ const header_menu_items = header.header_menu.o_nav.o_nav_list_items;
31
+
32
+ for (let i = 0; i < header_menu_items.length; i++) {
33
+ header.header_menu.o_nav.o_nav_list_items[i].c_link_classes = 'lrv-u-padding-tb-075 lrv-a-unstyle-link lrv-u-color-brand-primary:hover lrv-a-hover-effect lrv-u-whitespace-nowrap lrv-u-border-b-6 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover lrv-u-line-height-large lrv-u-display-inline-block';
34
+ }
35
+
36
+ header.expandable_search.expandable_search_inner_classes = 'lrv-u-height-auto lrv-a-glue lrv-a-glue--r-0 lrv-a-glue--t-50p lrv-u-flex lrv-u-transform-translateY-n50p';
37
+ header.expandable_search.expandable_search_classes += ' sticky-expandable';
38
+
39
+ module.exports = header;
@@ -0,0 +1,90 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const header_sticky_prototype = require( '../header-sticky/header-sticky.prototype' );
4
+ const header_menu_prototype = require( '../header-menu/header-menu.prototype' );
5
+ const expandable_search_prototype = require( '../expandable-search/expandable-search.prototype' );
6
+ const c_link_prototype = require( '../../components/c-link/c-link.prototype' );
7
+ const o_icon_button_prototype = require( '../../objects/o-icon-button/o-icon-button.prototype' );
8
+ const o_icon_button_search_prototype = require( '../../objects/o-icon-button/o-icon-button.search' );
9
+ const o_header_buttons_prototype = require( '../../objects/o-header-buttons/o-header-buttons.prototype' );
10
+ const o_header_buttons_column_prototype = require( '../../objects/o-header-buttons/o-header-buttons.column' );
11
+
12
+ const header_sticky = clonedeep( header_sticky_prototype );
13
+
14
+ const expandable_search = clonedeep( expandable_search_prototype );
15
+
16
+ const header_menu = clonedeep( header_menu_prototype );
17
+ header_menu.o_nav.o_nav_list_classes = 'lrv-a-font-body-s lrv-a-space-children--2 lrv-a-space-children-horizontal lrv-a-unstyle-list lrv-u-flex lrv-u-font-family-body lrv-u-justify-content-center lrv-u-text-transform-uppercase';
18
+ const header_menu_items = header_menu.o_nav.o_nav_list_items;
19
+ for (let i = 0; i < header_menu_items.length; i++) {
20
+ header_menu.o_nav.o_nav_list_items[i].c_link_classes = ' lrv-u-padding-b-050 lrv-a-unstyle-link lrv-u-color-brand-primary:hover lrv-a-hover-effect lrv-u-whitespace-nowrap lrv-u-border-b-6 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover';
21
+ }
22
+
23
+ const o_account_menu = clonedeep( require( '../../objects/o-account-menu/o-account-menu.prototype') );
24
+ o_account_menu.o_account_menu_classes += ' lrv-a-hidden';
25
+
26
+ const c_shop_link = clonedeep( c_link_prototype );
27
+ c_shop_link.c_link_text = 'RS shop';
28
+ c_shop_link.c_link_classes = 'lrv-u-margin-b-050 lrv-a-unstyle-link lrv-u-display-inline lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover lrv-u-font-family-body lrv-u-text-transform-uppercase lrv-a-font-body-xxs';
29
+
30
+ const c_login_link = clonedeep( c_link_prototype );
31
+ c_login_link.c_link_text = 'Log In';
32
+ c_login_link.c_link_classes = 'subscriber-login-link lrv-u-margin-b-050 lrv-a-unstyle-link lrv-u-display-inline lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover lrv-u-font-family-body lrv-u-text-transform-uppercase lrv-a-font-body-xxs lrv-a-hidden@mobile-max ';
33
+
34
+ const c_subscribe_link = clonedeep( c_link_prototype );
35
+ c_subscribe_link.c_link_text = 'Subscribe';
36
+ c_subscribe_link.c_link_classes = 'subscribe-link cx-dynamic-link lrv-u-margin-b-050 lrv-a-unstyle-link lrv-u-display-inline lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover lrv-u-font-family-body lrv-u-text-transform-uppercase lrv-a-font-body-xxs';
37
+
38
+ const c_got_a_tip = clonedeep( c_link_prototype );
39
+ c_got_a_tip.c_link_text = 'Got A Tip?';
40
+ c_got_a_tip.c_link_classes = 'lrv-u-margin-b-050 lrv-a-unstyle-link lrv-u-display-inline lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover lrv-u-font-family-body lrv-u-text-transform-uppercase lrv-a-font-body-xxs';
41
+
42
+ const c_logo_prototype = require( '../../components/c-logo/c-logo.prototype' );
43
+ const c_logo = clonedeep( c_logo_prototype );
44
+ c_logo.c_logo_classes += 'lrv-u-color-brand-primary lrv-u-color-brand-primary:hover lrv-u-display-inline-flex lrv-u-justify-content-center lrv-u-width-100p';
45
+ c_logo.c_logo_is_h1 = true;
46
+
47
+ const o_icon_button_search = clonedeep( o_icon_button_search_prototype );
48
+ const o_icon_button_menu = clonedeep( o_icon_button_prototype );
49
+
50
+ o_icon_button_menu.o_icon_button_classes += ' js-MegaMenu-Trigger lrv-u-margin-r-auto lrv-u-color-brand-primary:hover lrv-a-glue-parent';
51
+ o_icon_button_menu.c_icon.c_icon_classes = 'lrv-u-display-block lrv-u-width-30 lrv-u-height-30';
52
+ o_icon_button_menu.c_span.c_span_text = '';
53
+ o_icon_button_menu.o_icon_button_screen_reader_text = 'Click to expand the Mega Menu';
54
+
55
+ const o_header_buttons = clonedeep( o_header_buttons_prototype );
56
+
57
+ const o_header_buttons_column = clonedeep( o_header_buttons_column_prototype );
58
+
59
+ module.exports = {
60
+ header_classes: 'lrv-a-glue-parent',
61
+ header_inner_classes: 'lrv-u-width-100p lrv-u-padding-t-1 lrv-u-background-color-white',
62
+ header_sticky_outer_classes: ' lrv-u-width-100p',
63
+ header_outer_classes: 'lrv-u-flex lrv-u-justify-content-space-between',
64
+ header_contents_classes: '',
65
+ header_logo_classes: 'lrv-u-text-align-center lrv-u-width-40p@tablet',
66
+ header_content_primary_classes: 'lrv-u-flex lrv-u-justify-content-space-between lrv-u-align-items-center lrv-u-margin-b-050 lrv-u-padding-b-1',
67
+ header_content_secondary_classes: 'lrv-a-hidden@mobile-max lrv-u-align-items-center lrv-u-flex lrv-u-justify-content-center',
68
+ header_links_primary_classes: 'lrv-a-hidden@mobile-max lrv-u-width-30p lrv-a-space-children--050 lrv-a-space-children-vertical',
69
+ header_links_secondary_classes:'lrv-u-width-30p lrv-u-text-align-right lrv-a-space-children--050 lrv-a-space-children-vertical',
70
+ header_mobile_button_classes:'lrv-a-hidden@tablet lrv-u-width-22p@mobile-max',
71
+ header_links_primary_inner_classes:'lrv-u-display-inline-flex lrv-u-flex-direction-column',
72
+ header_links_secondary_inner_classes:'lrv-u-display-inline-flex lrv-u-flex-direction-column ',
73
+ header_content_secondary_outer_classes:'lrv-u-border-t-6',
74
+ header_content_secondary_inner_classes:'lrv-u-border-b-1 lrv-u-border-t-1 lrv-u-margin-t-050 lrv-u-padding-t-050 lrv-u-padding-b-050 lrv-u-border-b-1 lrv-u-border-t-1 lrv-u-margin-t-050 lrv-u-margin-t-025@mobile-max lrv-u-border-b-00@mobile-max',
75
+ header_content_menu_classes:'lrv-u-margin-l-125 lrv-a-space-children--050 lrv-a-space-children-vertical',
76
+ c_logo,
77
+ c_link_left_primary: c_shop_link,
78
+ c_link_left_secondary: c_got_a_tip,
79
+ c_link_right_primary: c_subscribe_link,
80
+ c_link_right_secondary: c_login_link,
81
+ o_icon_button_menu,
82
+ o_icon_button_search,
83
+ header_menu,
84
+ header_sticky,
85
+ expandable_search,
86
+ is_home: true,
87
+ o_header_buttons,
88
+ o_header_buttons_column,
89
+ o_account_menu,
90
+ };
@@ -0,0 +1,74 @@
1
+ {% if is_home %}
2
+ <header class="header // js-Header {{ header_classes }}">
3
+ <div class="header-content // js-Header-contents {{ header_contents_classes }}">
4
+ <div class="header-outer // js-hide-when-sticky {{ header_outer_classes }}">
5
+ <div class="header-inner // {{ header_inner_classes }} ">
6
+ <div class="header-content-primary // lrv-a-wrapper {{ header_content_primary_classes }}">
7
+ <div class="header-mobile-button // {{ header_mobile_button_classes }} ">
8
+ {% include "@larva/objects/o-icon-button/o-icon-button.twig" with o_icon_button_menu %}
9
+ </div>
10
+ <div class="header-links-primary // {{ header_links_primary_classes }} ">
11
+ <div class="header-links-primary-inner // {{ header_links_primary_inner_classes }} ">
12
+ {% include "@larva/components/c-link/c-link.twig" with c_link_left_primary %}
13
+ {% include "@larva/components/c-link/c-link.twig" with c_link_left_secondary %}
14
+ </div>
15
+ </div>
16
+ <div class="header-logo // {{ header_logo_classes }} ">
17
+ {% include "@larva/components/c-logo/c-logo.twig" with c_logo %}
18
+ </div>
19
+ <div class="header-links-secondary // {{ header_links_secondary_classes }} ">
20
+ <div class="header-links-secondary-inner // {{ header_links_secondary_inner_classes }} ">
21
+ {% include "@larva/components/c-link/c-link.twig" with c_link_right_primary %}
22
+ {% include "@larva/components/c-link/c-link.twig" with c_link_right_secondary %}
23
+ {% include "@larva/objects/o-account-menu/o-account-menu.twig" with o_account_menu %}
24
+ </div>
25
+ </div>
26
+ </div>
27
+ <div class="header-content-secondary-outer // {{ header_content_secondary_outer_classes }} ">
28
+ <div class="header-content-secondary-inner // {{ header_content_secondary_inner_classes }} ">
29
+ <div class="header-content-secondary // lrv-a-wrapper {{ header_content_secondary_classes }} ">
30
+ {% include "@larva/objects/o-icon-button/o-icon-button.twig" with o_icon_button_menu %}
31
+ {% include "@larva/modules/header-menu/header-menu.twig" with header_menu %}
32
+ {% include "@larva/modules/expandable-search/expandable-search.twig" with expandable_search %}
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ {% if header_sticky %}
39
+ <div class="header-sticky-outer // js-show-when-sticky js-sticky-header-slidedown {{ header_sticky_outer_classes }}">
40
+ {% include "@larva/modules/header-sticky/header-sticky.twig" with header_sticky %}
41
+ </div>
42
+ {% endif %}
43
+ </div>
44
+ </header>
45
+ {% else %}
46
+ <header class="header // js-Header {{ header_classes }}">
47
+ <div class="header-content // js-Header-contents {{ header_contents_classes }}">
48
+ <div class="header-outer // js-hide-when-sticky {{ header_outer_classes }}">
49
+ <div class="header-inner // {{ header_inner_classes }} ">
50
+ <div class="header-content-primary // {{ header_content_primary_classes }}">
51
+ <div class="header-logo // {{ header_logo_classes }} ">
52
+ {% include "@larva/components/c-logo/c-logo.twig" with c_logo %}
53
+ </div>
54
+ <div class="header-links-primary // {{ header_links_primary_classes }} ">
55
+ {% include "@larva/objects/o-icon-button/o-icon-button.twig" with o_icon_button_menu %}
56
+ {% include "@larva/modules/expandable-search/expandable-search.twig" with expandable_search %}
57
+ </div>
58
+ <div class="header-content-menu // {{ header_content_menu_classes }} ">
59
+ {% include "@larva/modules/header-menu/header-menu.twig" with header_menu %}
60
+ </div>
61
+ <div class="header-links-secondary // {{ header_links_secondary_classes }} ">
62
+ {% include "@larva/objects/o-header-buttons/o-header-buttons.twig" with o_header_buttons_column %}
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ {% if header_sticky %}
68
+ <div class="header-sticky-outer // js-show-when-sticky js-sticky-header-slidedown {{ header_sticky_outer_classes }}">
69
+ {% include "@larva/modules/header-sticky/header-sticky.twig" with header_sticky %}
70
+ </div>
71
+ {% endif %}
72
+ </div>
73
+ </header>
74
+ {% endif %}
@@ -0,0 +1,26 @@
1
+ const clonedeep = require('lodash.clonedeep');
2
+ const o_nav = clonedeep(require('../../objects/o-nav/o-nav.prototype'));
3
+
4
+ o_nav.o_nav_list_items = [];
5
+ const menuLinks = ['News', 'Market', 'Reviews', 'Video'];
6
+
7
+ for (let i = 0; i < menuLinks.length; i++) {
8
+ let c_link = clonedeep(require('../../components/c-link/c-link.prototype'));
9
+
10
+ if ('icon' === menuLinks[i]) {
11
+ c_link.c_link_text = '';
12
+ c_link.c_link_classes = 'lrv-a-unstyle-link lrv-u-color-brand-primary:hover lrv-a-hover-effect lrv-u-text-transform-uppercase';
13
+ } else {
14
+ c_link.c_link_text = menuLinks[i];
15
+ c_link.c_link_classes = 'lrv-a-unstyle-link lrv-u-color-brand-primary:hover lrv-a-hover-effect lrv-u-whitespace-nowrap lrv-u-text-transform-uppercase';
16
+ }
17
+
18
+ o_nav.o_nav_list_items.push(c_link);
19
+ }
20
+
21
+ o_nav.o_nav_list_classes = 'lrv-a-unstyle-list lrv-u-flex lrv-u-justify-content-center lrv-a-space-children-horizontal lrv-a-space-children--2 lrv-u-font-family-primary';
22
+
23
+ module.exports = {
24
+ o_nav: o_nav,
25
+ header_menu_classes:'',
26
+ };
@@ -0,0 +1,3 @@
1
+ <div class="header-menu // {{ header_menu_classes }}">
2
+ {% include "@larva/objects/o-nav/o-nav.twig" with o_nav %}
3
+ </div>
@@ -0,0 +1,43 @@
1
+ const clonedeep = require('lodash.clonedeep');
2
+
3
+ const header_sticky_prototype = require('./header-sticky.prototype');
4
+ const c_icon_prototype = require( '../../components/c-icon/c-icon.prototype' );
5
+ const read_next_prototype = require('../read-next/read-next.prototype');
6
+ const o_social_list_prototype = require('../../objects/o-social-list/o-social-list.prototype');
7
+
8
+ const read_next = clonedeep(read_next_prototype);
9
+ read_next.read_next_classes += ' lrv-u-margin-l-125 lrv-u-overflow-hidden lrv-u-margin-r-1';
10
+ read_next.c_span.c_span_text = 'Music';
11
+ read_next.c_span.c_span_classes = 'lrv-u-whitespace-nowrap lrv-u-text-transform-uppercase lrv-a-font-body-m lrv-u-font-weight-700';
12
+ read_next.c_title.c_title_link_classes = 'lrv-a-unstyle-link lrv-u-whitespace-nowrap lrv-a-font-body-m';
13
+
14
+ const o_social_list = clonedeep(o_social_list_prototype);
15
+ const social_icons = ['facebook-rs', 'twitter', 'email'];
16
+ const social_list_icons = [];
17
+ o_social_list.o_social_list_icons = [];
18
+ for (let i = 0; i < social_icons.length; i++) {
19
+ const c_icon = clonedeep(c_icon_prototype);
20
+ c_icon.c_icon_name = social_icons[i];
21
+ c_icon.c_icon_url = '#';
22
+ c_icon.c_icon_link_classes +=
23
+ 'lrv-u-background-color-white lrv-u-border-radius-50p lrv-u-color-black lrv-u-color-brand-primary:hover lrv-u-display-block';
24
+ c_icon.c_icon_rel_name = 'noopener noreferrer';
25
+ social_list_icons.push(c_icon);
26
+ }
27
+ o_social_list.o_social_list_icons = social_list_icons;
28
+
29
+ const header_sticky = clonedeep(header_sticky_prototype);
30
+
31
+ header_sticky.o_social_list = o_social_list;
32
+ header_sticky.o_social_list.o_social_list_classes = ' lrv-u-flex lrv-a-space-children--1 lrv-a-space-children-horizontal lrv-u-align-items-center lrv-a-unstyle-list lrv-u-margin-l-auto lrv-u-margin-r-150';
33
+
34
+ header_sticky.expandable_search.expandable_search_classes += ' sticky-expandable';
35
+
36
+ header_sticky.read_next = read_next;
37
+
38
+ header_sticky.header_sticky_classes = 'lrv-u-border-color-grey-light lrv-u-border-b-1 lrv-u-background-color-white lrv-u-width-100p u-box-shadow-medium article-sticky-header';
39
+ header_sticky.header_sticky_links_classes = 'lrv-u-align-items-center lrv-u-flex lrv-u-justify-content-end lrv-u-width-21p';
40
+ header_sticky.header_sticky_logo_classes += ' lrv-u-order-n1';
41
+ header_sticky.header_sticky_icons_classes = 'lrv-a-glue-parent lrv-u-align-items-center lrv-u-flex lrv-u-padding-r-1 lrv-u-border-r-1';
42
+
43
+ module.exports = header_sticky;