@penskemediacorp/larva-patterns 1.7.0-alpha.0 → 1.7.2

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 (347) 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 -12
  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/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 +10 -0
  24. package/components/c-button/c-button.prototype.js +10 -4
  25. package/components/c-button/c-button.stripped.js +8 -0
  26. package/components/c-button/c-button.twig +13 -7
  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 +5 -0
  31. package/components/c-dek/c-dek.twig +9 -0
  32. package/components/c-email-field/README.md +0 -0
  33. package/components/c-email-field/c-email-field.ghost.js +10 -0
  34. package/components/c-email-field/c-email-field.prototype.js +8 -0
  35. package/components/c-email-field/c-email-field.twig +4 -0
  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 +4 -0
  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/footer/README.md +15 -0
  134. package/modules/footer/footer.prototype.js +14 -0
  135. package/modules/footer/footer.twig +22 -0
  136. package/modules/footer-button-list/footer-button-list.prototype.js +43 -0
  137. package/modules/footer-button-list/footer-button-list.twig +13 -0
  138. package/modules/footer-magazine-image/footer-magazine-image.prototype.js +15 -0
  139. package/modules/footer-magazine-image/footer-magazine-image.twig +3 -0
  140. package/modules/footer-menus/README.md +3 -0
  141. package/modules/footer-menus/footer-menus.prototype.js +9 -9
  142. package/modules/footer-menus/footer-menus.twig +2 -2
  143. package/modules/footer-newsletter/README.md +5 -0
  144. package/modules/footer-newsletter/footer-newsletter.prototype.js +21 -0
  145. package/modules/footer-newsletter/footer-newsletter.twig +5 -0
  146. package/modules/footer-social/README.md +3 -0
  147. package/modules/footer-social/footer-social.prototype.js +27 -20
  148. package/modules/footer-social/footer-social.twig +2 -2
  149. package/modules/footer-tip/footer-tip.prototype.js +21 -13
  150. package/modules/footer-tip/footer-tip.twig +2 -2
  151. package/modules/header/header.article.js +39 -0
  152. package/modules/header/header.prototype.js +90 -0
  153. package/modules/header/header.twig +74 -0
  154. package/modules/header-menu/header-menu.prototype.js +26 -0
  155. package/modules/header-menu/header-menu.twig +3 -0
  156. package/modules/header-sticky/header-sticky.article.js +43 -0
  157. package/modules/header-sticky/header-sticky.prototype.js +39 -0
  158. package/modules/header-sticky/header-sticky.twig +30 -0
  159. package/modules/heading/heading.h1.js +8 -0
  160. package/modules/heading/heading.h2.js +8 -0
  161. package/modules/heading/heading.h3.js +8 -0
  162. package/modules/heading/heading.h4.js +7 -0
  163. package/modules/heading/heading.h5.js +7 -0
  164. package/modules/heading/heading.h6.js +7 -0
  165. package/modules/heading/heading.prototype.js +9 -0
  166. package/modules/heading/heading.twig +3 -0
  167. package/modules/hero-image-story/hero-image-story.prototype.js +41 -0
  168. package/modules/hero-image-story/hero-image-story.twig +8 -0
  169. package/modules/injected-related-content/injected-related-content.prototype.js +61 -0
  170. package/modules/injected-related-content/injected-related-content.twig +23 -0
  171. package/modules/linked-gallery/linked-gallery.prototype.js +53 -0
  172. package/modules/linked-gallery/linked-gallery.twig +22 -0
  173. package/modules/list/list.ordered.js +7 -0
  174. package/modules/list/list.prototype.js +57 -0
  175. package/modules/list/list.twig +11 -0
  176. package/modules/listicle-item/listicle-item.prototype.js +11 -0
  177. package/modules/listicle-item/listicle-item.twig +3 -0
  178. package/modules/mega-menu/mega-menu.prototype.js +16 -0
  179. package/modules/mega-menu/mega-menu.twig +10 -0
  180. package/modules/mega-menu-content/mega-menu-content.prototype.js +10 -0
  181. package/modules/mega-menu-content/mega-menu-content.twig +5 -0
  182. package/modules/mega-menu-footer/mega-menu-footer.prototype.js +41 -0
  183. package/modules/mega-menu-footer/mega-menu-footer.twig +19 -0
  184. package/modules/mega-menu-footer-subscribe/mega-menu-footer-subscribe.prototype.js +20 -0
  185. package/modules/mega-menu-footer-subscribe/mega-menu-footer-subscribe.twig +4 -0
  186. package/modules/mega-menu-item/mega-menu-item.prototype.js +23 -0
  187. package/modules/mega-menu-item/mega-menu-item.twig +13 -0
  188. package/modules/more-stories-button/more-stories-button.profile.js +12 -0
  189. package/modules/more-stories-button/more-stories-button.prototype.js +29 -0
  190. package/modules/more-stories-button/more-stories-button.twig +13 -0
  191. package/modules/newsletter/newsletter.prototype.js +46 -0
  192. package/modules/newsletter/newsletter.twig +21 -0
  193. package/modules/newsletter-cta/newsletter-cta.prototype.js +21 -0
  194. package/modules/newsletter-cta/newsletter-cta.twig +22 -0
  195. package/modules/newswire/newswire.prototype.js +46 -0
  196. package/modules/newswire/newswire.twig +16 -0
  197. package/modules/page-404/page-404.prototype.js +44 -0
  198. package/modules/page-404/page-404.twig +32 -0
  199. package/modules/paragraph/paragraph.narrow.js +8 -0
  200. package/modules/paragraph/paragraph.prototype.js +8 -0
  201. package/modules/paragraph/paragraph.twig +3 -0
  202. package/modules/pmc-footer/pmc-footer.prototype.js +26 -24
  203. package/modules/pmc-footer/pmc-footer.twig +11 -9
  204. package/modules/post-content-image/post-content-image.prototype.js +14 -0
  205. package/modules/post-content-image/post-content-image.twig +3 -0
  206. package/modules/production-credits/production-credits.prototype.js +5 -0
  207. package/modules/production-credits/production-credits.twig +4 -0
  208. package/modules/profile-blurb/profile-blurb.card.js +28 -0
  209. package/modules/profile-blurb/profile-blurb.prototype.js +45 -0
  210. package/modules/profile-blurb/profile-blurb.twig +37 -0
  211. package/modules/profile-body/profile-body.prototype.js +20 -0
  212. package/modules/profile-body/profile-body.twig +15 -0
  213. package/modules/profile-browse-by/profile-browse-by.prototype.js +29 -0
  214. package/modules/profile-browse-by/profile-browse-by.twig +6 -0
  215. package/modules/profile-card-list/profile-card-list.prototype.js +25 -0
  216. package/modules/profile-card-list/profile-card-list.twig +7 -0
  217. package/modules/profile-filter/profile-filter.prototype.js +26 -0
  218. package/modules/profile-filter/profile-filter.twig +15 -0
  219. package/modules/profile-gallery/profile-gallery.prototype.js +28 -0
  220. package/modules/profile-gallery/profile-gallery.twig +13 -0
  221. package/modules/profile-header/profile-header.prototype.js +29 -0
  222. package/modules/profile-header/profile-header.twig +27 -0
  223. package/modules/profile-highlights/profile-highlights.prototype.js +22 -0
  224. package/modules/profile-highlights/profile-highlights.twig +17 -0
  225. package/modules/profile-landing-header/profile-landing-header.prototype.js +17 -0
  226. package/modules/profile-landing-header/profile-landing-header.twig +12 -0
  227. package/modules/profile-landing-river/profile-landing-river.prototype.js +21 -0
  228. package/modules/profile-landing-river/profile-landing-river.twig +13 -0
  229. package/modules/profile-related-stories/profile-related-stories.prototype.js +33 -0
  230. package/modules/profile-related-stories/profile-related-stories.twig +9 -0
  231. package/modules/pullquote/pullquote.prototype.js +8 -0
  232. package/modules/pullquote/pullquote.twig +3 -0
  233. package/modules/read-next/read-next.prototype.js +20 -0
  234. package/modules/read-next/read-next.twig +4 -0
  235. package/modules/search-form/search-form.prototype.js +8 -0
  236. package/modules/search-form/search-form.twig +11 -0
  237. package/modules/secondary-stories/secondary-stories.prototype.js +119 -0
  238. package/modules/secondary-stories/secondary-stories.twig +22 -0
  239. package/modules/separator/separator.prototype.js +4 -0
  240. package/modules/separator/separator.thick.js +7 -0
  241. package/modules/separator/separator.twig +1 -0
  242. package/modules/separator/separator.wide-thick.js +7 -0
  243. package/modules/separator/separator.wide.js +7 -0
  244. package/modules/social-share/social-share.prototype.js +43 -0
  245. package/modules/social-share/social-share.twig +30 -0
  246. package/modules/special-coverage/special-coverage.prototype.js +47 -0
  247. package/modules/special-coverage/special-coverage.twig +29 -0
  248. package/modules/story/story.borders.js +8 -0
  249. package/modules/story/story.center-vertical-borders.js +7 -0
  250. package/modules/story/story.center-vertical.js +11 -0
  251. package/modules/story/story.prototype.js +43 -0
  252. package/modules/story/story.right-borders.js +9 -0
  253. package/modules/story/story.right.js +14 -0
  254. package/modules/story/story.story-arc.js +9 -0
  255. package/modules/story/story.twig +88 -0
  256. package/modules/story/story.vertical-borders.js +7 -0
  257. package/modules/story/story.vertical.js +11 -0
  258. package/modules/story-arc-stories/story-arc-stories.prototype.js +21 -0
  259. package/modules/story-arc-stories/story-arc-stories.twig +14 -0
  260. package/modules/story-featured-quote/story-featured-quote.prototype.js +28 -0
  261. package/modules/story-featured-quote/story-featured-quote.twig +27 -0
  262. package/modules/story-grid/story-grid.prototype.js +24 -0
  263. package/modules/story-grid/story-grid.river.js +15 -0
  264. package/modules/story-grid/story-grid.twig +17 -0
  265. package/modules/sub-header/sub-header.prototype.js +8 -0
  266. package/modules/sub-header/sub-header.twig +7 -0
  267. package/modules/top-stories/top-stories.prototype.js +41 -0
  268. package/modules/top-stories/top-stories.twig +12 -0
  269. package/modules/top-stories/top-stories.xl.js +14 -0
  270. package/modules/vlanding-playlist/README.md +1 -0
  271. package/modules/vlanding-playlist/vlanding-playlist.prototype.js +34 -0
  272. package/modules/vlanding-playlist/vlanding-playlist.twig +20 -0
  273. package/modules/vlanding-video-card/README.md +1 -0
  274. package/modules/vlanding-video-card/vlanding-video-card.prototype.js +25 -0
  275. package/modules/vlanding-video-card/vlanding-video-card.twig +56 -0
  276. package/modules/vlanding-video-showcase/README.md +12 -0
  277. package/modules/vlanding-video-showcase/vlanding-video-showcase.prototype.js +68 -0
  278. package/modules/vlanding-video-showcase/vlanding-video-showcase.twig +46 -0
  279. package/objects/o-account-menu/o-account-menu.prototype.js +35 -0
  280. package/objects/o-account-menu/o-account-menu.twig +25 -0
  281. package/objects/o-author/o-author.prototype.js +13 -0
  282. package/objects/o-author/o-author.twig +13 -0
  283. package/objects/o-card/README.md +1 -0
  284. package/objects/o-card/o-card.prototype.js +25 -0
  285. package/objects/o-card/o-card.twig +75 -0
  286. package/objects/o-card-list/README.md +3 -0
  287. package/objects/o-card-list/o-card-list.prototype.js +13 -0
  288. package/objects/o-card-list/o-card-list.twig +7 -0
  289. package/objects/o-checkbox-input-list/o-checkbox-input-list.prototype.js +16 -0
  290. package/objects/o-checkbox-input-list/o-checkbox-input-list.twig +15 -0
  291. package/objects/o-collection-item/o-collection-item.floated.js +8 -0
  292. package/objects/o-collection-item/o-collection-item.prototype.js +11 -0
  293. package/objects/o-collection-item/o-collection-item.twig +5 -0
  294. package/objects/o-email-capture-form/README.md +11 -0
  295. package/objects/o-email-capture-form/o-email-capture-form.minimal.js +15 -0
  296. package/objects/o-email-capture-form/o-email-capture-form.prototype.js +17 -0
  297. package/objects/o-email-capture-form/o-email-capture-form.twig +16 -0
  298. package/objects/o-figure/README.md +17 -0
  299. package/objects/o-figure/o-figure.prototype.js +15 -7
  300. package/objects/o-figure/o-figure.twig +22 -45
  301. package/objects/o-header/o-header.prototype.js +12 -10
  302. package/objects/o-header/o-header.twig +5 -1
  303. package/objects/o-header-buttons/o-header-buttons.column.js +10 -0
  304. package/objects/o-header-buttons/o-header-buttons.prototype.js +41 -0
  305. package/objects/o-header-buttons/o-header-buttons.twig +42 -0
  306. package/objects/o-icon-button/README.md +5 -0
  307. package/objects/o-icon-button/o-icon-button.prototype.js +21 -0
  308. package/objects/o-icon-button/o-icon-button.search.js +9 -0
  309. package/objects/o-icon-button/o-icon-button.twig +29 -0
  310. package/objects/o-indicator/README.md +1 -0
  311. package/objects/o-indicator/o-indicator.photos.js +12 -0
  312. package/objects/o-indicator/o-indicator.prototype.js +8 -0
  313. package/objects/o-indicator/o-indicator.twig +9 -0
  314. package/objects/o-input-group/o-input-group.prototype.js +11 -0
  315. package/objects/o-input-group/o-input-group.twig +5 -0
  316. package/objects/o-nav/README.md +2 -2
  317. package/objects/o-nav/o-nav.horizontal.js +6 -6
  318. package/objects/o-nav/o-nav.prototype.js +17 -13
  319. package/objects/o-nav/o-nav.twig +29 -3
  320. package/objects/o-select-nav/o-select-nav.prototype.js +17 -0
  321. package/objects/o-select-nav/o-select-nav.twig +9 -0
  322. package/objects/o-social-list/o-social-list.prototype.js +21 -31
  323. package/objects/o-social-list/o-social-list.twig +10 -2
  324. package/objects/o-span-group/README.md +1 -0
  325. package/objects/o-span-group/o-span-group.prototype.js +11 -0
  326. package/objects/o-span-group/o-span-group.twig +5 -0
  327. package/objects/o-sponsored-by/o-sponsored-by.prototype.js +9 -10
  328. package/objects/o-sponsored-by/o-sponsored-by.twig +2 -2
  329. package/objects/o-story-arc-item/o-story-arc-item.prototype.js +29 -0
  330. package/objects/o-story-arc-item/o-story-arc-item.twig +9 -0
  331. package/objects/o-sub-header/o-sub-header.prototype.js +39 -0
  332. package/objects/o-sub-header/o-sub-header.twig +9 -0
  333. package/objects/o-tease/o-tease.prototype.js +24 -20
  334. package/objects/o-tease/o-tease.twig +7 -3
  335. package/objects/o-tease-list/o-tease-list.prototype.js +12 -24
  336. package/objects/o-tease-list/o-tease-list.twig +5 -1
  337. package/package.json +6 -9
  338. package/pattern.html +61 -9
  339. package/style-guide/colors.html +33 -0
  340. package/style-guide/fonts.html +22 -0
  341. package/style-guide/index.html +14 -0
  342. package/components/c-button/c-button.scss +0 -33
  343. package/components/c-tagline/c-tagline.json +0 -4
  344. package/components/c-tagline/c-tagline.scss +0 -19
  345. package/objects/o-figure/o-figure.scss +0 -46
  346. package/objects/o-tease/o-tease.scss +0 -30
  347. package/scratch-pad.css +0 -3
@@ -0,0 +1,29 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_heading = clonedeep( require( '@penskemediacorp/larva-patterns/components/c-heading/c-heading.prototype' ) );
4
+ const c_title = clonedeep( require( '@penskemediacorp/larva-patterns/components/c-title/c-title.prototype' ) );
5
+ const c_icon = clonedeep( require( '@penskemediacorp/larva-patterns/components/c-icon/c-icon.prototype' ) );
6
+
7
+
8
+ c_heading.c_heading_text = 'Breaking News';
9
+ c_heading.c_heading_classes = 'lrv-a-font-secondary-bold-l lrv-u-margin-r-1 lrv-u-text-transform-uppercase lrv-u-margin-b-050@mobile-max';
10
+
11
+ c_title.c_title_text = 'US Stadiums Partnership, Inc. Files for Bankruptcy Amid Historic Cancellations';
12
+ c_title.c_title_classes = 'lrv-u-font-size-18 lrv-u-line-height-copy lrv-u-font-weight-normal lrv-u-font-family-basic';
13
+ c_title.c_title_link_classes = 'lrv-a-unstyle-link ';
14
+
15
+ c_icon.c_icon_link_classes = 'dismiss-news-banner lrv-u-color-white lrv-u-cursor-pointer lrv-u-width-16 lrv-u-height-16 lrv-u-color-white:hover lrv-u-margin-l-auto';
16
+ c_icon.c_icon_url = '#';
17
+ c_icon.c_icon_target_attr = false;
18
+ c_icon.c_icon_name = 'close';
19
+ c_icon.c_icon_link_screen_reader_text = false;
20
+ c_icon.c_icon_screen_reader_text = 'close';
21
+ c_icon.c_icon_screen_reader_title_attr = 'close';
22
+
23
+ module.exports = {
24
+ breaking_news_classes: 'lrv-u-background-color-brand-primary lrv-u-color-white',
25
+ breaking_news_inner_classes: 'lrv-a-wrapper lrv-u-flex lrv-u-flex-direction-column@mobile-max lrv-u-align-items-center lrv-u-padding-tb-1',
26
+ c_heading: c_heading,
27
+ c_title: c_title,
28
+ c_icon: c_icon
29
+ };
@@ -0,0 +1,18 @@
1
+ <section class="breaking-news // pmc-breaking-news {{ breaking_news_classes }} ">
2
+
3
+ <div class="{{breaking_news_inner_classes}}">
4
+
5
+ {% if c_heading %}
6
+ {% include "@larva/components/c-heading/c-heading.twig" with c_heading %}
7
+ {% endif %}
8
+
9
+ {% if c_title %}
10
+ {% include "@larva/components/c-title/c-title.twig" with c_title %}
11
+ {% endif %}
12
+
13
+ {% if c_icon %}
14
+ {% include "@larva/components/c-icon/c-icon.twig" with c_icon %}
15
+ {% endif %}
16
+ </div>
17
+
18
+ </section>
@@ -0,0 +1,9 @@
1
+ module.exports = {
2
+ button_url: null,
3
+ button_classes: 'lrv-u-padding-tb-050 lrv-u-padding-lr-1',
4
+ button_markup: 'Button Text',
5
+ button_background_color_class: 'lrv-u-background-color-brand-primary',
6
+ button_color_class: 'lrv-u-color-white',
7
+ button_typography_class: '',
8
+ button_width_class: '',
9
+ };
@@ -0,0 +1,7 @@
1
+ <a class="button larva // {{ button_classes }} {{ button_typography_class }} {{ button_background_color_class }} {{ button_color_class }} {{ button_width_class }}"
2
+ {% if button_url %}
3
+ href="{{ button_url }}"
4
+ {% endif %}
5
+ >
6
+ {{ button_markup }}
7
+ </a>
@@ -0,0 +1,36 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ // Image
4
+ const c_lazy_image_prototype = require( '@penskemediacorp/larva-patterns/components/c-lazy-image/c-lazy-image.prototype' );
5
+
6
+ const c_lazy_image = clonedeep( c_lazy_image_prototype );
7
+
8
+ c_lazy_image.c_lazy_image_srcset_attr = false;
9
+ c_lazy_image.c_lazy_image_sizes_attr = false;
10
+ c_lazy_image.c_lazy_image_crop_class = 'lrv-a-crop-1x1';
11
+
12
+ // Icon Button
13
+ const c_icon_button = clonedeep( require( '../../objects/o-icon-button/o-icon-button.prototype' ) );
14
+
15
+ c_icon_button.o_icon_button_url = true;
16
+ c_icon_button.o_button_url = '#';
17
+ c_icon_button.o_icon_button_classes += ' lrv-a-buy-now__button lrv-u-font-size-14 lrv-u-font-weight-bold lrv-u-text-transform-uppercase lrv-u-border-t-3 lrv-u-border-r-1 lrv-u-border-b-3 lrv-u-border-l-1 lrv-u-padding-tb-050 lrv-u-padding-lr-1 lrv-u-background-color-white lrv-u-color-black lrv-u-border-color-currentColor';
18
+ c_icon_button.o_icon_button_target_attr = '_blank';
19
+ c_icon_button.o_icon_button_rel_attr = 'nofollow';
20
+
21
+ c_icon_button.c_icon.c_icon_name = 'triangle-right';
22
+ c_icon_button.c_icon.c_icon_screen_reader_text = '';
23
+ c_icon_button.c_span.c_span_text = 'Buy Now';
24
+
25
+ // Export
26
+ module.exports = {
27
+ buy_now_div_classes: 'lrv-a-buy-now lrv-u-font-family-basic',
28
+ buy_now_hr_top_classes: 'lrv-a-buy-now__hr lrv-a-buy-now__hr--top',
29
+ buy_now_img_classes: 'lrv-a-buy-now__image',
30
+ buy_now_hr_bottom_classes: 'lrv-a-buy-now__hr lrv-a-buy-now__hr--bottom',
31
+ buy_now_p_classes: 'lrv-a-buy-now__p lrv-u-font-family-basic lrv-u-font-size-14',
32
+ buy_now_span_classes: 'lrv-a-buy-now__span lrv-u-font-weight-bold lrv-u-text-transform-uppercase lrv-u-color-grey lrv-u-font-size-10',
33
+ buy_now_store_credit_text: '', // 'Amazon' for example
34
+ c_lazy_image,
35
+ c_icon_button,
36
+ };
@@ -0,0 +1,23 @@
1
+ {% if c_lazy_image %}
2
+ <div class="{{ buy_now_div_classes }}">
3
+ <hr class="{{ buy_now_hr_top_classes }}">
4
+
5
+ <div class="{{ buy_now_img_classes }}">
6
+ {% include "@larva/components/c-lazy-image/c-lazy-image.twig" with c_lazy_image %}
7
+ </div>
8
+
9
+ {% include "@larva/objects/o-icon-button/o-icon-button.twig" with c_icon_button %}
10
+
11
+ <hr class="{{ buy_now_hr_bottom_classes }}">
12
+
13
+ {% if buy_now_store_credit_text %}
14
+ <span class="{{ buy_now_span_classes }}">
15
+ {{ buy_now_store_credit_text }}
16
+ </span>
17
+ {% endif %}
18
+ </div>
19
+ {% else %}
20
+ <p class="{{ buy_now_p_classes }}">
21
+ {% include "@larva/objects/o-icon-button/o-icon-button.twig" with c_icon_button %}
22
+ </p>
23
+ {% endif %}
@@ -0,0 +1,7 @@
1
+ This module renders Carousel block posts in the Gutenberg editor.
2
+
3
+ The default pattern renders a primary post, with two secondary posts in the sidebar.
4
+
5
+ The overlay pattern displays a fuller width primary post with text overlay, and a stacked row of three secondary posts.
6
+
7
+ The primary post displays section title, a post image and title, author byline and timestamp; the secondary posts display a post image and title only.
@@ -0,0 +1,26 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+ const { __experimentalCloneWithFallback } = require( '@penskemediacorp/larva' );
3
+
4
+ const carousel_grid_overlay = __experimentalCloneWithFallback( 'modules/carousel-grid/carousel-grid.prototype' );
5
+
6
+ carousel_grid_overlay.o_card_large.o_card_classes = 'lrv-a-carousel-grid__overlay--primary';
7
+ carousel_grid_overlay.o_card_large.o_card_content_classes += ' lrv-a-carousel-grid__overlay--primary-content';
8
+
9
+ carousel_grid_overlay.o_card_large.c_lazy_image.c_lazy_image_classes = 'lrv-a-carousel-grid__overlay--primary-img';
10
+ carousel_grid_overlay.o_card_large.c_lazy_image.c_lazy_image_crop_class = 'lrv-a-crop-3x2';
11
+
12
+ carousel_grid_overlay.carousel_grid_overlay_layout_classes = 'lrv-a-carousel-grid__overlay';
13
+ carousel_grid_overlay.carousel_grid_overlay_secondary_classes = 'lrv-a-carousel-grid__overlay--secondary';
14
+
15
+ const o_card_item = clonedeep( carousel_grid_overlay.o_card_items[0] );
16
+
17
+ carousel_grid_overlay.o_card_items = [o_card_item, o_card_item, o_card_item];
18
+
19
+ o_card_item.o_card_classes += ' lrv-a-carousel-grid__overlay--secondary-card lrv-u-align-items-center';
20
+
21
+ o_card_item.c_title.c_title_classes = 'lrv-a-font-secondary-m';
22
+
23
+ o_card_item.c_lazy_image.c_lazy_image_classes += ' lrv-u-width-100p';
24
+ o_card_item.c_lazy_image.c_lazy_image_crop_class = 'lrv-a-crop-1x1';
25
+
26
+ module.exports = carousel_grid_overlay;
@@ -0,0 +1,50 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+ const { __experimentalCloneWithFallback } = require( '@penskemediacorp/larva' );
3
+
4
+ const o_card_prototype = clonedeep( require( '../../objects/o-card/o-card.prototype' ) );
5
+ const o_author = __experimentalCloneWithFallback( 'objects/o-author/o-author.prototype' );
6
+ const o_card = clonedeep( o_card_prototype );
7
+
8
+ o_card.o_card_classes = 'lrv-u-margin-b-1';
9
+ o_card.o_card_content_classes = ' lrv-u-margin-t-050';
10
+
11
+ o_card.c_lazy_image.c_lazy_image_classes += ' ';
12
+ o_card.c_lazy_image.c_lazy_image_crop_class = 'lrv-a-crop-3x2';
13
+
14
+ o_card.c_lazy_image.c_lazy_image_link_url = '#';
15
+
16
+ o_card.c_span.c_span_url = '#';
17
+ o_card.c_span.c_span_text = false;
18
+
19
+ o_card.c_title.c_title_text = '‘Solo: A Star Wars Story’ Is Going to Cannes, So Does That Mean It’s Good?';
20
+ o_card.c_title.c_title_classes = 'lrv-a-font-primary-xxxs';
21
+ o_card.c_title.c_title_link_classes = 'lrv-a-unstyle-link';
22
+
23
+ o_card.c_timestamp.c_timestamp_text = false;
24
+
25
+ const o_card_large = clonedeep( o_card );
26
+
27
+ o_card_large.c_span.c_span_text = 'Film';
28
+
29
+ o_card_large.c_title.c_title_text = '‘Avengers: Infinity War’ vs. ‘Black Panther’: 10 Factors That Will Determine Which Film Is Box-Office King';
30
+
31
+ o_card_large.o_author = clonedeep( o_author );
32
+ o_card_large.o_author.o_author_text = 'By ';
33
+ o_card_large.o_author.c_span.c_span_text = 'Author Name';
34
+ o_card_large.o_author.c_timestamp.c_timestamp_text = 'July 7, 2021';
35
+ o_card_large.o_author.c_timestamp.c_timestamp_classes = 'lrv-a-icon-before lrv-a-icon-bullet';
36
+
37
+ // o_card_large uses o_author components that are not needed/used by o_card.
38
+ o_card.o_author = false;
39
+
40
+ o_card_large.o_card_classes = '';
41
+ o_card_large.o_card_content_classes = 'lrv-u-padding-a-1';
42
+ o_card_large.c_title.c_title_classes = 'lrv-a-font-primary-xs lrv-u-margin-tb-050';
43
+
44
+ module.exports = {
45
+ o_card_large,
46
+ o_card_items: [
47
+ o_card,
48
+ o_card
49
+ ]
50
+ };
@@ -0,0 +1,17 @@
1
+ <div class="carousel-grid //">
2
+ <div class="lrv-a-wrapper">
3
+ <div class="lrv-a-carousel-grid {{ carousel_grid_overlay_layout_classes }}">
4
+
5
+ <div class="lrv-u-padding-a-1">
6
+ {% include "@larva/objects/o-card/o-card.twig" with o_card_large %}
7
+ </div>
8
+
9
+ <div class="lrv-u-padding-a-1 {{ carousel_grid_overlay_secondary_classes }}">
10
+ {% for item in o_card_items %}
11
+ {% include "@larva/objects/o-card/o-card.twig" with item %}
12
+ {% endfor %}
13
+ </div>
14
+
15
+ </div>
16
+ </div>
17
+ </div>
@@ -0,0 +1,56 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+ const { __experimentalCloneWithFallback } = require( '@penskemediacorp/larva' );
3
+
4
+ const c_heading_prototype = require( '../../components/c-heading/c-heading.prototype' );
5
+ const c_heading = clonedeep( c_heading_prototype );
6
+
7
+ const c_icon_prototype = require( '../../components/c-icon/c-icon.prototype' );
8
+ const c_icon = clonedeep( c_icon_prototype );
9
+
10
+ const o_card_prototype = require( '../../objects/o-card/o-card.prototype' );
11
+ const o_card = clonedeep( o_card_prototype );
12
+
13
+ const o_indicator_photos = __experimentalCloneWithFallback( 'objects/o-indicator/o-indicator.photos' );
14
+
15
+ o_card.o_indicator = o_indicator_photos;
16
+
17
+ o_card.o_card_link_url = '#';
18
+ o_card.o_card_link_classes = 'lrv-a-unstyle-link lrv-u-display-block';
19
+ o_card.c_lazy_image.c_lazy_image_classes = 'lrv-u-margin-b-050@mobile-max lrv-u-margin-b-1';
20
+ o_card.c_lazy_image.c_lazy_image_crop_class = 'lrv-a-crop-16x9';
21
+ o_card.c_lazy_image.c_lazy_image_image_classes = 'u-box-shadow-medium';
22
+ o_card.c_lazy_image.c_lazy_image_placeholder_url = 'https://live.staticflickr.com/4685/24635253357_483728d136_c.jpg';
23
+ o_card.o_card_image_wrap_classes = 'lrv-a-glue-parent';
24
+ o_card.c_lazy_image.c_lazy_image_caption_markup = false;
25
+ o_card.c_lazy_image.c_lazy_image_credit_text = false;
26
+ o_card.c_span = false;
27
+ o_card.c_timestamp = false;
28
+ o_card.c_title.c_title_link_classes = 'lrv-a-unstyle-link';
29
+ o_card.c_title.c_title_classes = 'lrv-a-font-primary-xxs lrv-u-text-align-center';
30
+ o_card.c_title.c_title_url = false;
31
+ o_card.c_title.c_title_id_attr = false;
32
+
33
+ const titles = [
34
+ 'Banksy Painting Sells for Record-Demolishing $12.2 M. at Sotheby’s London',
35
+ 'Famed Art Historian Germano Celant to Curate KAWS Exhibition in Qatar',
36
+ 'Yayoi Kusama ‘Infinity Room’ Heads to Toledo Museum of Art as Part of ‘Multi-Sensory Experience’ Push',
37
+ 'After the Flood: Artists Fill Amsterdam Gallery with Wet Clay, Establish Safety Fund',
38
+ 'Frieze London Sales Accumulate, Museum Boards Go Under the Scope, and More—Morning Links from October 3, 2019',
39
+ 'KAWS Hit With Criticism in China for Mao-Based Artwork—Artist Responds [Updated]',
40
+ 'Deborah Marrow, Game-Changing Getty Foundation Leader, Has Died',
41
+ 'As Brexit Looms at Frieze London, $6.5 M. Twombly and $5 M. Guston Sell, While $32 M. Botticelli Awaits Buyer',
42
+ 'German Museum to Give Walid Raad Art Prize Despite City Government’s Objection: Report',
43
+ 'Pace Gallery Plans Paris Presence'
44
+ ];
45
+
46
+ let galleries = [];
47
+
48
+ for (let i = 0; i < titles.length; i++) {
49
+ let card = clonedeep( o_card );
50
+ card.c_title.c_title_text = titles[i];
51
+ galleries.push( card );
52
+ }
53
+
54
+ module.exports = {
55
+ galleries: galleries,
56
+ };
@@ -0,0 +1,11 @@
1
+ <section class="carousel-slider //">
2
+ <div class="lrv-a-wrapper lrv-u-padding-tb-1">
3
+ <div class="js-Flickity js-Flickity--one-thirds js-Flickity--nav-top-right js-Flickity--hide-nav@mobile-max">
4
+ {% for item in galleries %}
5
+ <div class="js-Flickity-cell lrv-u-margin-r-150">
6
+ {% include "@larva/objects/o-card/o-card.twig" with item %}
7
+ </div>
8
+ {% endfor %}
9
+ </div>
10
+ </div>
11
+ </section>
@@ -0,0 +1,3 @@
1
+ Generic module for a containing element around HTML/markup.
2
+
3
+ This could be updated to support an action.
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ container_markup: 'hello markup',
3
+ container_classes: 'lrv-a-font-body-m lrv-u-width-75p lrv-u-margin-lr-auto',
4
+ container_background_color_class: '',
5
+ container_color_class: '',
6
+ container_text_align_class: '',
7
+ }
@@ -0,0 +1 @@
1
+ <div class="container // {{ container_classes }} {{ container_background_color_class }} {{ container_color_class }} {{ container_text_align_class }}">{{ container_markup }}</div>
@@ -0,0 +1,30 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const o_card = clonedeep( require( '@penskemediacorp/larva-patterns/objects/o-card/o-card.prototype' ) );
4
+ const article_kicker = clonedeep( require( '../article-kicker/article-kicker.prototype' ) );
5
+
6
+ o_card.o_card_classes = 'lrv-u-display-inline-flex lrv-u-flex-basis-100p@desktop-xl lrv-u-flex-basis-100p@desktop lrv-u-padding-tb-075@mobile-max';
7
+ o_card.o_card_link_classes = 'lrv-u-flex';
8
+ o_card.o_card_link_url = '#';
9
+ o_card.o_card_image_wrap_classes = 'lrv-u-flex-basis-40p@desktop lrv-u-flex-basis-40p@desktop-xl lrv-u-flex-basis-25p@mobile-max';
10
+ o_card.o_card_content_classes = 'lrv-u-margin-l-1 lrv-u-color-brand-primary:hover lrv-u-flex-basis-60p@desktop lrv-u-flex-basis-60p@desktop-xl lrv-u-flex-basis-55p@mobile-max';
11
+
12
+ o_card.c_lazy_image.c_lazy_image_link_url = '';
13
+ o_card.c_lazy_image.c_lazy_image_classes = 'lrv-u-margin-l-auto lrv-u-width-100';
14
+ o_card.c_lazy_image.c_lazy_image_crop_class = 'lrv-a-crop-1x1';
15
+ o_card.article_kicker = article_kicker;
16
+ o_card.article_kicker.article_kicker_text = 'Article Kicker';
17
+
18
+ o_card.o_span_group = false;
19
+ o_card.c_span = false;
20
+ o_card.c_title.c_title_url = '';
21
+ o_card.c_title.c_title_text = 'Perfection is rarely achieved in movies, but this heaven-sent concert doc hits the sweet spot.';
22
+ o_card.c_title.c_title_classes = 'lrv-u-font-weight-normal lrv-u-margin-tb-1';
23
+ o_card.c_timestamp = false;
24
+ o_card.c_tagline = false;
25
+ o_card.o_author = false;
26
+
27
+ module.exports = {
28
+ content_showcase_items_classes: 'lrv-u-flex lrv-u-flex-direction-column@mobile-max lrv-u-padding-tb-1@desktop lrv-u-width-100p lrv-u-padding-lr-125@mobile-max',
29
+ content_showcase_items: [ o_card, o_card, o_card ]
30
+ }
@@ -0,0 +1,33 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const content_showcase = clonedeep( require( './content-showcase.prototype' ) );
4
+ const o_card = clonedeep( require( '../../objects/o-card/o-card.prototype' ) );
5
+ const article_kicker = clonedeep( require( '../article-kicker/article-kicker.prototype' ) );
6
+
7
+ o_card.c_dek = false;
8
+ o_card.c_span = false;
9
+ o_card.c_timestamp = false;
10
+ o_card.c_tagline = false;
11
+ o_card.o_author = false;
12
+
13
+ o_card.o_card_classes = 'lrv-u-display-inline-flex lrv-u-flex-basis-100p@desktop-xl lrv-u-flex-basis-100p@desktop lrv-u-padding-tb-00@mobile-max lrv-u-flex-shrink-0@mobile-max';
14
+ o_card.o_card_link_classes = 'lrv-u-flex';
15
+ o_card.o_card_link_url = '#';
16
+ o_card.o_card_image_wrap_classes = 'lrv-u-flex-basis-40p@desktop lrv-u-flex-basis-40p@desktop-xl lrv-u-flex-basis-25p@mobile-max';
17
+ o_card.c_lazy_image.c_lazy_image_classes = 'lrv-u-width-100';
18
+ o_card.o_card_content_classes = 'lrv-u-margin-l-1 lrv-u-color-brand-primary:hover lrv-u-flex-basis-60p@desktop lrv-u-flex-basis-60p@desktop-xl lrv-u-flex-basis-55p@mobile-max lrv-u-color-black';
19
+ o_card.c_title.c_title_text = 'Canceling Noodle The Pug';
20
+ o_card.c_title.c_title_classes = 'lrv-a-font-body-l lrv-u-text-decoration-underline:hover lrv-u-margin-b-00 lrv-u-margin-t-050 lrv-u-line-height-copy';
21
+ o_card.c_title.c_title_link_classes = 'lrv-u-color-black lrv-u-color-brand-secondary-dark:hover';
22
+ o_card.c_lazy_image.c_lazy_image_crop_class = 'lrv-a-crop-1x1';
23
+ o_card.article_kicker = article_kicker;
24
+ o_card.article_kicker.article_kicker_classes = 'lrv-u-color-black lrv-u-color-brand-secondary-dark:hover lrv-u-text-transform-uppercase lrv-a-font-basic-s lrv-u-position-relative lrv-u-padding-b-050';
25
+ o_card.article_kicker.article_kicker_link_classes = 'lrv-u-color-black';
26
+
27
+
28
+ content_showcase.content_showcase_classes = 'the-moth lrv-u-border-t-1 lrv-u-font-family-body lrv-a-glue-parent';
29
+ content_showcase.content_showcase_items_classes = 'the-moth-items lrv-u-overflow-auto@mobile-max lrv-u-padding-r-2@mobile-max lrv-u-flex-shrink-0@mobile-max lrv-u-border-b-1 lrv-u-border-t-1 lrv-u-flex lrv-u-margin-t-025 lrv-u-padding-lr-125@mobile-max lrv-u-padding-tb-150 lrv-u-width-100p';
30
+
31
+ content_showcase.content_showcase_items = [ o_card, o_card, o_card, o_card ];
32
+
33
+ module.exports = content_showcase;
@@ -0,0 +1,7 @@
1
+ <div class="content-showcase larva // {{ content_showcase_classes }}">
2
+ <div class="content-showcase-items // {{ content_showcase_items_classes }}">
3
+ {% for item in content_showcase_items %}
4
+ {% include "@larva/objects/o-card/o-card.twig" with item %}
5
+ {% endfor %}
6
+ </div>
7
+ </div>
@@ -0,0 +1,19 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const o_icon_button_search_prototype = require( '../../objects/o-icon-button/o-icon-button.search' );
4
+ const search_form_prototype = require( '../search-form/search-form.prototype' );
5
+
6
+ const search_form = clonedeep( search_form_prototype );
7
+ search_form.search_form_input_placeholder_attr = 'Search...';
8
+
9
+ const o_icon_button_search = clonedeep( o_icon_button_search_prototype );
10
+ o_icon_button_search.o_icon_button_classes += ' js-ExpandableSearch-trigger';
11
+ o_icon_button_search.c_icon.c_icon_classes = ' lrv-u-display-block lrv-u-width-24 lrv-u-height-24 lrv-u-color-brand-primary:hover';
12
+
13
+ module.exports = {
14
+ expandable_search_outer_classes: 'js-ExpandableSearch lrv-u-flex lrv-u-margin-l-auto lrv-a-glue-parent',
15
+ expandable_search_classes: 'js-ExpandableSearch-target lrv-a-unstyle-button lrv-u-color-black js-fade js-fade-is-out',
16
+ expandable_search_inner_classes:'lrv-u-height-auto lrv-a-glue lrv-a-glue--l-0 lrv-a-glue--t-50p lrv-u-flex lrv-u-transform-translateY-n50p',
17
+ o_icon_button_search: o_icon_button_search,
18
+ search_form: search_form,
19
+ };
@@ -0,0 +1,9 @@
1
+ <div class="expandable-search-outer // {{ expandable_search_outer_classes }}">
2
+
3
+ {% include "@larva/objects/o-icon-button/o-icon-button.twig" with o_icon_button_search %}
4
+ <div class="expandable-search // {{ expandable_search_classes }}" hidden>
5
+ <div class="expandable_search-inner {{ expandable_search_inner_classes }}" data-header-search-trigger="">
6
+ {% include "@larva/modules/search-form/search-form.twig" with search_form %}
7
+ </div>
8
+ </div>
9
+ </div>
@@ -0,0 +1,27 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const story_prototype = require( '@penskemediacorp/larva-patterns/modules/story/story.prototype' );
4
+ const article_kicker = require( '@penskemediacorp/larva-patterns/modules/article-kicker/article-kicker.prototype' );
5
+
6
+ const story = clonedeep( story_prototype );
7
+
8
+ story.story_grid_classes = '';
9
+
10
+ story.story_grid_primary_classes = 'lrv-u-margin-r-00';
11
+
12
+ story.story_grid_secondary_classes += ' lrv-u-padding-lr-1 lrv-u-padding-lr-2@desktop-xl lrv-u-padding-tb-075 lrv-u-padding-tb-150@desktop-xl';
13
+
14
+ const featured_story = clonedeep( story );
15
+
16
+ story.article_kicker = article_kicker;
17
+ story.c_span = false;
18
+
19
+ /**
20
+ * Budle all objects.
21
+ */
22
+ module.exports = {
23
+ featured_stories_classes: '',
24
+ featured_story,
25
+ featured_stories_secondary_classes: 'lrv-a-grid lrv-a-cols3@desktop',
26
+ story_items: [ story, story, story ],
27
+ };
@@ -0,0 +1,18 @@
1
+ <div class="featured-stories // {{ featured_stories_classes }}">
2
+
3
+ {% if featured_story %}
4
+ <div class="featured-stories__primary // {{ featured_stories_primary_classes }}" >
5
+ {% include "@larva/modules/story/story.twig" with featured_story %}
6
+ </div>
7
+ {% endif %}
8
+
9
+ {% if c_heading %}
10
+ {% include "@larva/components/c-heading/c-heading.twig" with c_heading %}
11
+ {% endif %}
12
+
13
+ <div class="featured-stories__secondary {{ featured_stories_secondary_classes }}">
14
+ {% for item in story_items %}
15
+ {% include "@larva/modules/story/story.twig" with item %}
16
+ {% endfor %}
17
+ </div>
18
+ </div>
@@ -0,0 +1,15 @@
1
+ # footer
2
+
3
+ This module is the large footer at the bottom of each of PMC's sites. It contains a set of menus with corporate and company information, a newsletter signup, list of social networks, and a tip submission prompt.
4
+
5
+ This module should not be designed according to brand, and should only assume the primary font family for headings. It relies on the MobileHeightToggle JS pattern for handling the menus on smaller screens.
6
+
7
+ To use this module in a theme, the templates should be parsed from Larva, as well as the JSON for `footer` parsed from Larva.
8
+
9
+ If this module or any of the modules included in it are updated, follow these steps to update the module in a theme, or to use it for the first time:
10
+
11
+ 1. Uncomment the relativeSrcOverride key in the `parser` object in larva.config.js
12
+ 2. Ensure that the modified file time of the Twig file is later than the PHP files, or delete the existing PHP template files
13
+ 3. run `npm run parser` from theme/assets/
14
+ 4. run `npm run write-json larva modules footer` from theme/assets/
15
+ 5. Re-comment relativeSrcOverride key in the `parser` object in larva.config.js
@@ -0,0 +1,14 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const footer_menus = clonedeep( require( '../footer-menus/footer-menus.prototype' ) );
4
+ const footer_social = clonedeep( require( '../footer-social/footer-social.prototype' ) );
5
+ const footer_tip = clonedeep( require( '../footer-tip/footer-tip.prototype' ) );
6
+ const footer_newsletter = clonedeep( require( '../footer-newsletter/footer-newsletter.prototype' ) );
7
+
8
+ module.exports = {
9
+ footer_classes: "lrv-u-background-color-black lrv-u-color-white lrv-u-padding-tb-1",
10
+ footer_menus: footer_menus,
11
+ footer_social: footer_social,
12
+ footer_tip: footer_tip,
13
+ footer_newsletter: footer_newsletter,
14
+ };
@@ -0,0 +1,22 @@
1
+ <footer class="footer // {{ footer_classes }}">
2
+ <div class="lrv-a-wrapper">
3
+ {% include "@larva/modules/footer-menus/footer-menus.twig" with footer_menus %}
4
+
5
+ {% if footer_social %}
6
+
7
+ <div class="lrv-a-grid lrv-a-cols3@desktop lrv-u-border-t-1 lrv-u-border-color-grey lrv-u-padding-tb-1">
8
+ <div class="lrv-u-border-r-1 lrv-u-border-color-grey lrv-u-padding-a-1 lrv-u-border-r-1@desktop">
9
+ {% include "@larva/modules/footer-social/footer-social.twig" with footer_social %}
10
+ </div>
11
+ <div class="lrv-u-border-r-1 lrv-u-border-color-grey lrv-u-padding-a-1 lrv-u-border-t-1 lrv-u-border-t-0@desktop lrv-u-border-r-1@desktop">
12
+ {% include "@larva/modules/footer-tip/footer-tip.twig" with footer_tip %}
13
+ </div>
14
+ <div class="lrv-u-border-r-1 lrv-u-border-color-grey lrv-u-padding-a-1 lrv-u-border-t-1 lrv-u-border-t-0@desktop">
15
+ {% include "@larva/modules/footer-newsletter/footer-newsletter.twig" with footer_newsletter %}
16
+ </div>
17
+ </div>
18
+
19
+ {% endif %}
20
+
21
+ </div>
22
+ </footer>
@@ -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.