@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,41 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const o_story_featured = clonedeep( require( '@penskemediacorp/larva-patterns/modules/story/story.center-vertical' ) );
4
+ const o_story = clonedeep( require( '@penskemediacorp/larva-patterns/modules/story/story.vertical' ) );
5
+
6
+ o_story_featured.c_timestamp = false;
7
+ o_story_featured.story_grid_secondary_classes = 'lrv-u-flex lrv-u-flex-direction-column lrv-u-height-100p lrv-u-justify-content-center@tablet lrv-u-text-align-center@tablet';
8
+ o_story_featured.c_title.c_title_classes = 'lrv-a-font-primary-l c-title lrv-u-display-block lrv-u-margin-b-050';
9
+ o_story_featured.c_span.c_span_classes = 'lrv-u-display-inline-block lrv-u-padding-a-050 lrv-u-background-color-white lrv-u-text-transform-uppercase lrv-a-font-basic-l lrv-u-display-inline-block';
10
+ o_story_featured.c_span.c_span_link_classes = 'lrv-u-color-white lrv-u-background-color-brand-primary lrv-u-line-height-normal lrv-u-padding-a-025 lrv-u-padding-lr-050 lrv-u-display-inline-block';
11
+ o_story_featured.c_span.c_span_url = '#';
12
+ o_story_featured.c_dek.c_dek_classes = 'lrv-a-font-secondary-xs lrv-u-margin-tb-050 lrv-u-letter-spacing-0006@tablet lrv-u-width-70p lrv-u-width-100p@mobile-max lrv-u-margin-lr-auto';
13
+ o_story_featured.story_nav_classes = 'lrv-a-font-body-m lrv-u-color-black lrv-u-text-transform-uppercase lrv-u-color-black lrv-u-justify-content-center@tablet';
14
+ o_story_featured.c_tagline_author.c_tagline_classes = 'lrv-u-color-black lrv-u-margin-l-050';
15
+ o_story_featured.story_links_classes = 'lrv-u-justify-content-center@tablet lrv-u-transform-translateY-n50p u-z-index-middle-bottom lrv-u-position-relative lrv-u-margin-b-00@mobile-max';
16
+ o_story_featured.story_nav_layout_classes = 'lrv-u-flex lrv-u-align-items-center lrv-a-space-children-horizontal lrv-a-space-children--2 lrv-u-margin-t-050';
17
+
18
+ o_story.story_grid_secondary_classes = '';
19
+ o_story.c_timestamp = false;
20
+ o_story.c_dek = false;
21
+ o_story.story_classes = '';
22
+ o_story.c_span.c_span_classes = 'lrv-a-font-basic-xs lrv-u-border-b-1 lrv-u-text-transform-uppercase lrv-u-padding-b-050';
23
+ o_story.c_lazy_image.c_lazy_image_classes = 'lrv-u-margin-b-125';
24
+ o_story.c_title.c_title_classes = 'lrv-a-font-primary-m lrv-u-margin-b-050 lrv-u-font-size-26@mobile-max lrv-u-margin-t-050';
25
+ o_story.story_nav_classes = 'lrv-a-font-body-xxs lrv-u-color-black lrv-u-text-transform-uppercase lrv-u-color-black ';
26
+ o_story.c_tagline_author.c_tagline_classes = 'lrv-a-font-body-xxs lrv-u-color-black lrv-u-margin-l-050 lrv-u-letter-spacing-0106@tablet lrv-u-letter-spacing-0140@mobile-max';
27
+ o_story.story_nav_layout_classes = 'lrv-u-flex lrv-u-align-items-center lrv-a-space-children-horizontal lrv-a-space-children--2 lrv-u-margin-t-050';
28
+
29
+ const stories = [
30
+ o_story,
31
+ o_story,
32
+ ];
33
+
34
+ module.exports = {
35
+ o_story_featured,
36
+ top_stories_classes: 'lrv-u-flex lrv-u-flex-wrap-wrap lrv-u-margin-b-075',
37
+ featured_story_classes: 'lrv-u-width-100p@mobile-max lrv-u-width-70p lrv-u-padding-r-125 lrv-u-padding-r-150@desktop lrv-u-padding-r-00@mobile-max lrv-u-padding-b-2@mobile-max lrv-u-margin-b-2@mobile-max u-border-b-1@mobile-max',
38
+ story_items_classes: 'lrv-u-width-30p lrv-u-width-100p@mobile-max lrv-a-children-border-vertical lrv-a-space-children lrv-a-space-children--2 lrv-a-space-children-vertical lrv-u-padding-l-125 lrv-u-padding-l-150@desktop lrv-u-padding-l-00@mobile-max',
39
+ story_item_classes: '',
40
+ stories,
41
+ };
@@ -0,0 +1,12 @@
1
+ <div class="top-stories // {{ top_stories_classes }}">
2
+ <div class="featured-story-item {{ featured_story_classes }}">
3
+ {% include "@larva/modules/story/story.twig" with o_story_featured %}
4
+ </div>
5
+ <div class="story-items {{ story_items_classes }}">
6
+ {% for item in stories %}
7
+ <div class="story-item {{ story_item_classes }}">
8
+ {% include "@larva/modules/story/story.twig" with item %}
9
+ </div>
10
+ {% endfor %}
11
+ </div>
12
+ </div>
@@ -0,0 +1,14 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const top_stories = clonedeep( require( './top-stories.prototype' ) );
4
+
5
+ top_stories.o_story_featured.c_title.c_title_classes = 'lrv-a-font-primary-xl c-title lrv-u-display-block lrv-u-margin-b-050';
6
+ top_stories.o_story_featured.c_link_bottom = false;
7
+
8
+ top_stories.stories.map( ( o_story ) => {
9
+ o_story.c_span = false;
10
+ o_story.c_link_bottom = false;
11
+ });
12
+
13
+
14
+ module.exports = top_stories;
@@ -0,0 +1 @@
1
+ There is nothing fancy about this module - it is as it appears: a large card on the left and a few smaller ones on the right, along with a header that supports a link to "view more" or similar. It is intended to be used with carousels to display curated playlists below the vlanding-video-showcase.
@@ -0,0 +1,34 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const o_header = clonedeep( require( '../../objects/o-header/o-header.prototype' ) );
4
+ const o_card = clonedeep( require( '../../objects/o-card/o-card.prototype' ) );
5
+
6
+ o_header.o_heading_classes = 'lrv-u-flex lrv-u-align-items-center lrv-u-border-b-1 lrv-u-border-color-grey-light lrv-u-margin-b-1';
7
+ o_header.c_heading.c_heading_text = 'Behind the Lens';
8
+ o_header.c_heading.c_heading_classes = 'lrv-u-font-size-32';
9
+
10
+ o_header.c_button.c_button_classes += ' lrv-u-font-weight-bold';
11
+
12
+ o_card.c_span = false;
13
+ o_card.c_timestamp = false;
14
+ o_card.o_card_link_url = '#';
15
+ o_card.o_card_link_classes = 'lrv-a-unstyle-link';
16
+ o_card.c_lazy_image.c_lazy_image_classes = 'lrv-u-margin-b-050';
17
+ o_card.c_lazy_image.c_lazy_image_crop_class = 'lrv-a-crop-4x3';
18
+ o_card.c_title.c_title_url = false;
19
+
20
+ const o_card_large = clonedeep( o_card );
21
+
22
+ o_card.c_title.c_title_classes = 'lrv-u-font-size-12';
23
+ o_card_large.c_title.c_title_classes = 'lrv-u-font-size-20@desktop lrv-u-font-size-12';
24
+
25
+ module.exports = {
26
+ o_header: o_header,
27
+ vlanding_playlist_large_card: o_card_large,
28
+ vlanding_playlist_small_cards: [
29
+ o_card,
30
+ o_card,
31
+ o_card,
32
+ o_card
33
+ ]
34
+ };
@@ -0,0 +1,20 @@
1
+ <section class="vlanding-playlist // lrv-u-padding-tb-2 lrv-u-padding-tb-1@mobile-max">
2
+ {% if o_header %}
3
+ <div class="lrv-a-wrapper">
4
+ {% include "@larva/objects/o-header/o-header.twig" with o_header %}
5
+ </div>
6
+ {% endif %}
7
+
8
+ <div class="lrv-a-wrapper lrv-a-scrollable-grid@desktop-max lrv-a-grid lrv-a-cols2@desktop">
9
+ {% if vlanding_playlist_large_card %}
10
+ {% include "@larva/objects/o-card/o-card.twig" with vlanding_playlist_large_card %}
11
+ {% endif %}
12
+ <div class="lrv-a-scrollable-grid__nested@desktop-max lrv-a-grid lrv-a-cols2@desktop">
13
+ {% for item in vlanding_playlist_small_cards %}
14
+ {% include "@larva/objects/o-card/o-card.twig" with item %}
15
+ {% endfor %}
16
+ </div>
17
+ </div>
18
+ </section>
19
+
20
+
@@ -0,0 +1 @@
1
+ This pattern is included in `vlanding-video-showcase`, and is intended to be used there only.
@@ -0,0 +1,25 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_lazy_image = clonedeep( require( './../../components/c-lazy-image/c-lazy-image.prototype' ) );
4
+ const c_title = clonedeep( require( './../../components/c-title/c-title.prototype' ) );
5
+ const c_span = clonedeep( require( './../../components/c-span/c-span.prototype' ) );
6
+
7
+ module.exports = {
8
+ vlanding_video_card_permalink_url: '#',
9
+ vlanding_video_card_use_button: true,
10
+ vlanding_video_card_link_aria_controls_attr: '',
11
+ vlanding_video_card_link_classes: 'lrv-a-unstyle-link',
12
+ vlanding_video_card_link_showcase_trigger_data_attr: 'x3HbbzHK5Mc',
13
+ vlanding_video_card_link_showcase_type_data_attr: 'youtube',
14
+ vlanding_video_card_link_showcase_dek_data_attr: 'text for the dek, update this',
15
+ vlanding_video_card_link_showcase_title_data_attr: 'title that should be the same as the card',
16
+ vlanding_video_card_link_showcase_permalink_data_url: '#',
17
+ vlanding_video_card_active_txt_attr: 'Now Playing',
18
+ vlanding_video_card_classes: '',
19
+ vlanding_video_card_crop_class: '',
20
+ c_lazy_image: c_lazy_image,
21
+ vlanding_video_card_is_player: '',
22
+ c_title: c_title,
23
+ c_span: c_span,
24
+ vlanding_video_card_social_share_markup: '',
25
+ };
@@ -0,0 +1,56 @@
1
+ {% if vlanding_video_card_permalink_url %}
2
+ {% if vlanding_video_card_use_button %}
3
+ <button class="vlanding-video-card__link lrv-a-unstyle-button lrv-u-width-100p {{ vlanding_video_card_link_classes }}"
4
+ data-video-showcase-trigger="{{ vlanding_video_card_link_showcase_trigger_data_attr }}"
5
+ data-video-showcase-type="{{ vlanding_video_card_link_showcase_type_data_attr }}"
6
+ data-video-showcase-dek="{{ vlanding_video_card_link_showcase_dek_data_attr }}"
7
+ data-video-showcase-title="{{ vlanding_video_card_link_showcase_title_data_attr }}"
8
+ data-video-showcase-permalink="{{ vlanding_video_card_link_showcase_permalink_data_url }}"
9
+ {% if vlanding_video_card_link_aria_controls_attr %}
10
+ aria-controls="{{ vlanding_video_card_link_aria_controls_attr }}"
11
+ {% endif %}
12
+ >
13
+ {% else %}
14
+ <a href="{{ vlanding_video_card_permalink_url }}" class="vlanding-video-card__link {{ vlanding_video_card_link_classes }}" data-video-showcase-trigger="{{ vlanding_video_card_link_showcase_trigger_data_attr }}" data-video-showcase-type="{{ vlanding_video_card_link_showcase_type_data_attr }}" data-video-showcase-dek="{{ vlanding_video_card_link_showcase_dek_data_attr }}" data-video-showcase-title="{{ vlanding_video_card_link_showcase_title_data_attr }}" data-video-showcase-permalink="{{ vlanding_video_card_link_showcase_permalink_data_url }}">
15
+ {% endif %}
16
+ {% endif %}
17
+
18
+ <div class="vlanding-video-card {{ vlanding_video_card_classes }}" data-video-showcase-player>
19
+
20
+ <div class="{{ vlanding_video_card_crop_class }}" data-video-showcase-active-text="{{ vlanding_video_card_active_txt_attr }}">
21
+
22
+ {% if c_lazy_image %}
23
+ {% include "@larva/components/c-lazy-image/c-lazy-image.twig" with c_lazy_image %}
24
+ {% endif %}
25
+
26
+ {% if vlanding_video_card_is_player %}
27
+ <iframe hidden id="youtubePlayerContainer" frameborder="0" data-video-showcase-iframe></iframe>
28
+ <div hidden id="jwplayerContainer" data-video-showcase-jwplayer></div>
29
+ {% endif %}
30
+
31
+ </div>
32
+
33
+ {% if c_span %}
34
+ {% include "@larva/components/c-span/c-span.twig" with c_span %}
35
+ {% endif %}
36
+
37
+ {% if c_title %}
38
+ {% include "@larva/components/c-title/c-title.twig" with c_title %}
39
+ {% endif %}
40
+
41
+ </div>
42
+
43
+ {% if vlanding_video_card_permalink_url %}
44
+ {% if vlanding_video_card_use_button %}
45
+ </button>
46
+ {% else %}
47
+ </a>
48
+ {% endif %}
49
+ {% endif %}
50
+
51
+ {% if vlanding_video_card_social_share_markup %}
52
+ <div class="lrv-a-hidden" data-video-showcase-trigger-social-share>
53
+ {{ vlanding_video_card_social_share_markup }}
54
+ </div>
55
+ {% endif %}
56
+
@@ -0,0 +1,12 @@
1
+ This Video Showcase supports YouTube and JWPlayer videos and an option listing of video thumbnails below the large player. Clicking one of the thumbnails will load its video and associated content in the large player.
2
+
3
+ Options:
4
+ - Set social_share to false, to exclude the share bar in the large video
5
+ - Set vlanding_video_showcase_video_cards to false to exclude the 'Latest Videos'
6
+ - Show a Sponsored badge for the video. Note that this requires a server-side class to hide/show the badge, but retain the DOM markup for future elements. Example logic:
7
+ ```
8
+ // Add a-hidden if not sponsored.
9
+ if ( ! \Deadline\Inc\Article::is_sponsored( $vlanding_video_card['post_id'] ) ) {
10
+ $vlanding_video_showcase['c_span']['c_span_classes'] .= ' lrv-a-hidden';
11
+ }
12
+ ```
@@ -0,0 +1,68 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const vlanding_video_card = clonedeep( require( '../../modules/vlanding-video-card/vlanding-video-card.prototype' ) );
4
+ const social_share = clonedeep( require( '../../modules/social-share/social-share.prototype' ) );
5
+ const c_span = clonedeep( require( '../../components/c-span/c-span.prototype' ) );
6
+ const c_title = clonedeep( require( '../../components/c-title/c-title.prototype' ) );
7
+ const c_dek = clonedeep( require( '../../components/c-dek/c-dek.prototype' ) );
8
+ const c_heading = clonedeep( require( '../../components/c-heading/c-heading.prototype' ) );
9
+
10
+ const vlanding_video_card_player = clonedeep( vlanding_video_card );
11
+ const vlanding_video_showcase_card = clonedeep( vlanding_video_card );
12
+
13
+ const demoVideos = [
14
+ 'TxC_UpC0iyk',
15
+ '_JFOdYRfqBQ',
16
+ 'UmjBAjsLMms',
17
+ 'bgs2PgWE',
18
+ 'getvYflDK98'
19
+ ];
20
+
21
+ const vlanding_video_showcase_video_cards = [];
22
+
23
+ vlanding_video_showcase_card.c_title.c_title_url = false;
24
+ vlanding_video_showcase_card.c_title.c_title_classes = 'lrv-u-font-size-14 lrv-u-font-weight-normal lrv-u-padding-t-050';
25
+
26
+ vlanding_video_showcase_card.c_span.c_span_classes += ' lrv-u-display-block lrv-u-padding-b-00 lrv-u-padding-t-050 lrv-u-font-size-12 lrv-u-font-weight-normal';
27
+
28
+ vlanding_video_card_player.c_title = false;
29
+ vlanding_video_card_player.c_span = false;
30
+
31
+ // Move the crop class to the card so the iframe will position relative to that
32
+ // instead of c-lazy-image
33
+ vlanding_video_card_player.vlanding_video_card_is_player = true;
34
+ vlanding_video_card_player.c_lazy_image.c_lazy_image_crop_class = '';
35
+ vlanding_video_card_player.vlanding_video_card_crop_class = 'lrv-a-crop-16x9';
36
+
37
+ c_title.c_title_classes = 'lrv-u-font-size-24 lrv-u-font-size-32@desktop lrv-u-padding-b-1 js-VideoShowcase-title';
38
+ c_title.c_title_link_classes = 'lrv-a-unstyle-link';
39
+ c_title.c_title_text = 'Roseanne is Cancelled and I\'m So Sad About It';
40
+
41
+ c_dek.c_dek_classes = 'lrv-u-font-size-18 lrv-u-margin-t-00 lrv-a-hidden@mobile-max js-VideoShowcase-dek';
42
+
43
+ c_heading.c_heading_text = 'The Latest Videos';
44
+ c_heading.c_heading_classes = 'lrv-u-font-size-18 lrv-u-font-size-24@desktop lrv-u-font-size-28@desktop-xl lrv-u-border-b-1 lrv-u-border-color-grey-light lrv-u-padding-b-050 lrv-u-margin-tb-1';
45
+
46
+ vlanding_video_showcase_card.vlanding_video_card_link_showcase_trigger_data_attr = '_JFOdYRfqBQ';
47
+ vlanding_video_showcase_card.vlanding_video_card_link_showcase_type_data_attr = 'youtube';
48
+ vlanding_video_showcase_card.c_span = false;
49
+
50
+ demoVideos.map( ( videoId ) => {
51
+ let newVideo = clonedeep( vlanding_video_showcase_card );
52
+
53
+ newVideo.vlanding_video_card_link_showcase_trigger_data_attr = videoId;
54
+ vlanding_video_showcase_video_cards.push( newVideo );
55
+ });
56
+
57
+ module.exports = {
58
+ vlanding_video_showcase_classes: '',
59
+ vlanding_video_card_player: vlanding_video_card_player,
60
+ c_span: c_span,
61
+ c_title: c_title,
62
+ c_dek: c_dek,
63
+ social_share: social_share,
64
+ c_heading: c_heading,
65
+ vlanding_video_showcase_video_cards_classes: 'js-Flickity js-Flickity--fifths js-Flickity--isContained',
66
+ vlanding_video_showcase_video_cards_item_classes: 'js-Flickity-cell lrv-u-margin-r-1',
67
+ vlanding_video_showcase_video_cards: vlanding_video_showcase_video_cards
68
+ };
@@ -0,0 +1,46 @@
1
+ <section class="vlanding-video-showcase // {{ vlanding_video_showcase_classes }}" data-video-showcase="">
2
+ <div class="lrv-a-wrapper lrv-a-grid lrv-a-cols3@tablet">
3
+ <div class="lrv-a-grid-item lrv-a-span2@tablet">
4
+ {% if vlanding_video_card_player %}
5
+ {% include "@larva/modules/vlanding-video-card/vlanding-video-card.twig" with vlanding_video_card_player %}
6
+ {% endif %}
7
+ </div>
8
+ <div class="lrv-a-grid-item lrv-u-margin-tb-auto lrv-u-margin-tb-auto">
9
+ {% if c_span %}
10
+ {% include "@larva/components/c-span/c-span.twig" with c_span %}
11
+ {% endif %}
12
+
13
+ {% if c_title %}
14
+ {% include "@larva/components/c-title/c-title.twig" with c_title %}
15
+ {% endif %}
16
+
17
+ {% if c_dek %}
18
+ {% include "@larva/components/c-dek/c-dek.twig" with c_dek %}
19
+ {% endif %}
20
+
21
+ {% if social_share %}
22
+ {% include "@larva/modules/social-share/social-share.twig" with social_share %}
23
+ {% endif %}
24
+ </div>
25
+ </div>
26
+
27
+ {% if vlanding_video_showcase_video_cards %}
28
+
29
+ <div class="lrv-a-wrapper lrv-u-padding-t-1">
30
+ {% if c_heading %}
31
+ {% include "@larva/components/c-heading/c-heading.twig" with c_heading %}
32
+ {% endif %}
33
+
34
+ <div class="vlanding-video-showcase__video-cards // lrv-u-overflow-hidden lrv-a-glue-parent">
35
+ <ul class="lrv-a-unstyle-list lrv-a-scrollable-grid@desktop-max {{ vlanding_video_showcase_video_cards_classes }}">
36
+ {% for item in vlanding_video_showcase_video_cards %}
37
+ <li class="{{ vlanding_video_showcase_video_cards_item_classes }}">
38
+ {% include "@larva/modules/vlanding-video-card/vlanding-video-card.twig" with item %}
39
+ </li>
40
+ {% endfor %}
41
+ </ul>
42
+ </div>
43
+ </div>
44
+
45
+ {% endif %}
46
+ </section>
@@ -0,0 +1,35 @@
1
+ const clonedeep = require('lodash.clonedeep');
2
+
3
+ const c_link_prototype = require('../../components/c-link/c-link.prototype');
4
+ const c_span_prototype = require('../../components/c-span/c-span.prototype');
5
+
6
+ const c_welcome_span = clonedeep(c_span_prototype);
7
+ c_welcome_span.c_span_classes = 'subscriber-name lrv-a-font-body lrv-u-color-black lrv-u-font-size-12 lrv-u-text-transform-uppercase';
8
+ c_welcome_span.c_span_text = 'Welcome Name';
9
+ c_welcome_span.c_span_link_classes = 'lrv-u-color-black lrv-u-color-brand-primary:hover';
10
+ c_welcome_span.c_span_url = '#';
11
+
12
+ const c_account_link = clonedeep(c_link_prototype);
13
+ c_account_link.c_link_text = 'Account';
14
+ c_account_link.c_link_classes = 'subscriber-account-link lrv-u-font-family-body lrv-u-font-size-12 lrv-u-font-size-8@mobile-max lrv-a-icon-after lrv-a-icon-arrow-down lrv-a-unstyle-link lrv-u-border-b-1 lrv-u-border-color-brand-primary:hover lrv-u-border-color-white lrv-u-color-brand-primary:hover lrv-u-text-transform-uppercase';
15
+
16
+ const c_manage_account = clonedeep(c_link_prototype);
17
+ c_manage_account.c_link_text = 'Manage Account';
18
+ c_manage_account.c_link_classes = 'subscriber-self-care-link lrv-u-text-transform-uppercase lrv-a-font-secondary lrv-u-color-black lrv-u-font-size-12 lrv-u-width-100 lrv-u-text-align-center lrv-u-color-brand-primary:hover';
19
+
20
+ const c_log_out = clonedeep(c_link_prototype);
21
+ c_log_out.c_link_text = 'Sign Out';
22
+ c_log_out.c_link_classes = 'subscriber-logout-link lrv-a-font-secondary lrv-u-color-black lrv-u-color-brand-primary:hover lrv-u-font-size-12 lrv-u-text-transform-uppercase';
23
+
24
+ module.exports = {
25
+ o_account_menu_classes: 'js-Tooltip-parent lrv-a-glue-parent lrv-u-flex',
26
+ o_account_content_classes: 'js-Tooltip lrv-a-glue lrv-a-glue--t-100p lrv-u-box-shadow-medium',
27
+ o_account_content_inner_classes: 'lrv-a-glue-parent lrv-a-icon-after-arrow-top-left lrv-u-background-color-white lrv-u-border-a-2 lrv-u-flex lrv-u-flex-direction-column lrv-u-text-align-left lrv-u-flex-wrap-wrap lrv-u-margin-t-1 lrv-u-padding-tb-050 lrv-u-padding-lr-150 lrv-u-width-200',
28
+ o_account_welcome_span_classes: 'lrv-u-border-b-1 lrv-u-padding-tb-050',
29
+ o_account_manage_account_classes: 'lrv-u-border-b-1 lrv-u-padding-tb-050',
30
+ o_account_logout_classes: 'lrv-u-padding-tb-050',
31
+ c_welcome_span,
32
+ c_account_link,
33
+ c_manage_account,
34
+ c_log_out,
35
+ };
@@ -0,0 +1,25 @@
1
+ <div class="o-account-menu // {{ o_account_menu_classes }}">
2
+ {% include "@larva/components/c-link/c-link.twig" with c_account_link %}
3
+ <div class="o-account-content // {{ o_account_content_classes }}">
4
+ <div class="o-account-content-inner // {{ o_account_content_inner_classes }}">
5
+
6
+ {% if c_welcome_span %}
7
+ <div class="o-account-welcome-span-link // {{ o_account_welcome_span_classes }} ">
8
+ {% include "@larva/components/c-span/c-span.twig" with c_welcome_span %}
9
+ </div>
10
+ {% endif %}
11
+
12
+ {% if c_manage_account %}
13
+ <div class="o-account-manage-account-link // {{ o_account_manage_account_classes }} ">
14
+ {% include "@larva/components/c-link/c-link.twig" with c_manage_account %}
15
+ </div>
16
+ {% endif %}
17
+
18
+ {% if c_log_out %}
19
+ <div class="o-account-logout-link // {{ o_account_logout_classes }} ">
20
+ {% include "@larva/components/c-link/c-link.twig" with c_log_out %}
21
+ </div>
22
+ {% endif %}
23
+ </div>
24
+ </div>
25
+ </div>
@@ -0,0 +1,14 @@
1
+ const { __experimentalCloneWithFallback } = require( '@penskemediacorp/larva' );
2
+
3
+ const c_span = __experimentalCloneWithFallback( 'components/c-span/c-span.prototype' );
4
+ const c_timestamp = __experimentalCloneWithFallback( 'components/c-timestamp/c-timestamp.prototype' );
5
+
6
+ c_span.c_span_text = 'Author Name';
7
+
8
+ module.exports = {
9
+ o_author_classes: 'lrv-a-font-secondary-regular-m',
10
+ o_author_text: 'By ',
11
+ c_span: c_span,
12
+ c_timestamp: c_timestamp,
13
+ c_tagline_author: false,
14
+ };
@@ -0,0 +1,17 @@
1
+ <div class="o-author // {{ o_author_classes }}">
2
+
3
+ <span class="{{ o_author_by_classes }}">{{ o_author_text }}</span>
4
+
5
+ {% if c_span %}
6
+ {% include "@larva/components/c-span/c-span.twig" with c_span %}
7
+ {% endif %}
8
+
9
+ {% if c_tagline_author %}
10
+ {% include "@larva/components/c-tagline/c-tagline.twig" with c_tagline_author %}
11
+ {% endif %}
12
+
13
+ {% if c_timestamp %}
14
+ {% include "@larva/components/c-timestamp/c-timestamp.twig" with c_timestamp %}
15
+ {% endif %}
16
+
17
+ </div>
@@ -0,0 +1 @@
1
+ `o-card` is a pattern generally used for a story or article that features a vertical layout. It is a very flexible pattern that includes several options for included components. The order of these can be modified to some extent using flex and `order` utilities, but developers should try to avoid modifying the display order in a way that could impact the experience for users using the keyboard.
@@ -0,0 +1,25 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+ const { __experimentalCloneWithFallback } = require( '@penskemediacorp/larva' );
3
+
4
+ const c_span = __experimentalCloneWithFallback( 'components/c-span/c-span.tag' );
5
+ const c_timestamp = __experimentalCloneWithFallback( 'components/c-timestamp/c-timestamp.prototype' );
6
+ const c_lazy_image = clonedeep( require( '../../components/c-lazy-image/c-lazy-image.prototype.js' ) );
7
+ const c_title = clonedeep( require( '../../components/c-title/c-title.prototype.js' ) );
8
+
9
+ module.exports = {
10
+ o_card_classes: '',
11
+ o_card_tag_text: '',
12
+ o_card_link_url: '',
13
+ o_card_link_classes: '',
14
+ o_card_image_wrap_classes: '',
15
+ o_card_content_classes: '',
16
+ c_lazy_image: c_lazy_image,
17
+ c_svg: false,
18
+ c_span: c_span,
19
+ c_tagline: false,
20
+ c_title: c_title,
21
+ c_timestamp: c_timestamp,
22
+ o_author: false,
23
+ article_kicker:false,
24
+ article_kicker_outer_classes:'',
25
+ };
@@ -0,0 +1,75 @@
1
+ {% if o_card_tag_text %}
2
+ <{{ o_card_tag_text }} class="o-card {{ modifier_class }} {{ o_card_classes }}">
3
+ {% else %}
4
+ <article class="o-card {{ modifier_class }} {{ o_card_classes }}">
5
+ {% endif %}
6
+
7
+ {% if o_card_link_url %}
8
+ <a tabindex="0" href="{{ o_card_link_url }}" class="{{ o_card_link_classes }}">
9
+ {% endif %}
10
+
11
+ {% if o_card_image_wrap_classes %}
12
+ <div class="o-card__image-wrap {{ o_card_image_wrap_classes }}">
13
+ {% endif %}
14
+
15
+ {% if c_lazy_image %}
16
+ {% include "@larva/components/c-lazy-image/c-lazy-image.twig" with c_lazy_image %}
17
+ {% endif %}
18
+
19
+ {% if o_indicator %}
20
+ {% include "@larva/objects/o-indicator/o-indicator.twig" with o_indicator %}
21
+ {% endif %}
22
+
23
+ {% if o_card_image_wrap_classes %}
24
+ </div>
25
+ {% endif %}
26
+
27
+ <div class="o-card__content {{ o_card_content_classes }}">
28
+ {% if o_span_group %}
29
+ {% include "@larva/objects/o-span-group/o-span-group.twig" with o_span_group %}
30
+ {% endif %}
31
+
32
+ {% if c_svg %}
33
+ {% include "@larva/components/c-svg/c-svg.twig" with c_svg %}
34
+ {% endif %}
35
+
36
+ {% if article_kicker %}
37
+ <div class="article_kicker_outer // {{ article_kicker_outer_classes }}">
38
+ {% include "@larva/modules/article-kicker/article-kicker.twig" with article_kicker %}
39
+ </div>
40
+ {% endif %}
41
+
42
+ {% if c_span %}
43
+ {% include "@larva/components/c-span/c-span.twig" with c_span %}
44
+ {% endif %}
45
+
46
+ {% if c_title %}
47
+ {% include "@larva/components/c-title/c-title.twig" with c_title %}
48
+ {% endif %}
49
+
50
+ {% if c_timestamp %}
51
+ {% include "@larva/components/c-timestamp/c-timestamp.twig" with c_timestamp %}
52
+ {% endif %}
53
+
54
+ {% if c_dek %}
55
+ {% include "@larva/components/c-dek/c-dek.twig" with c_dek %}
56
+ {% endif %}
57
+
58
+ {% if c_tagline %}
59
+ {% include "@larva/components/c-tagline/c-tagline.twig" with c_tagline %}
60
+ {% endif %}
61
+
62
+ {% if o_author %}
63
+ {% include "@larva/objects/o-author/o-author.twig" with o_author %}
64
+ {% endif %}
65
+ </div>
66
+
67
+ {% if o_card_link_url %}
68
+ </a>
69
+ {% endif %}
70
+
71
+ {% if o_card_tag_text %}
72
+ </{{ o_card_tag_text }}>
73
+ {% else %}
74
+ </article>
75
+ {% endif %}
@@ -0,0 +1,3 @@
1
+ `o-card-list` is a simple wrapping patttern for displaying a list of `o-card`s. This pattern is only necessary when semantic list elements are useful, or when a storing classes in a central place for the `li` wrapping element is useful.
2
+
3
+ A future improvement to this pattern would be an option for an `ol` since many of the card lists will be ordered chronologically.
@@ -0,0 +1,13 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const o_card = clonedeep( require( '../o-card/o-card.prototype' ) );
4
+
5
+ module.exports = {
6
+ o_card_list_classes: 'lrv-a-unstyle-list',
7
+ o_card_list_item_classes: '',
8
+ o_card_list_items: [
9
+ o_card,
10
+ o_card,
11
+ o_card
12
+ ]
13
+ };
@@ -0,0 +1,7 @@
1
+ <ul class="o-card-list {{ modifier_class }} {{ o_card_list_classes }}">
2
+ {% for item in o_card_list_items %}
3
+ <li class="o-card-list__item {{ o_card_list_item_classes }}">
4
+ {% include "@larva/objects/o-card/o-card.twig" with item %}
5
+ </li>
6
+ {% endfor %}
7
+ </ul>
@@ -0,0 +1,6 @@
1
+ module.exports = {
2
+ o_category_link_wrap: false,
3
+ o_category_link_classes: 'lrv-a-unstyle-link lrv-u-whitespace-nowrap lrv-u-display-inline-block a-font-accent-s lrv-u-font-weight-bold lrv-u-color-black lrv-u-text-transform-uppercase u-border-b-3 lrv-u-border-color-brand-primary lrv-u-padding-b-025 lrv-u-color-brand-primary:hover lrv-a-hover-effect',
4
+ o_category_link_url: '#',
5
+ o_category_link_text: 'News'
6
+ };
@@ -0,0 +1,5 @@
1
+ <div class="o-category-link-wrap {{ o_category_link_wrap_classes }}">
2
+ <a class="o-category-link // {{ o_category_link_classes }}" href="{{ o_category_link_url }}">
3
+ {{ o_category_link_text }}
4
+ </a>
5
+ </div>
@@ -0,0 +1,16 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_title = clonedeep( require( '../../components/c-title/c-title.prototype' ) );
4
+ const c_checkbox_input = clonedeep( require( '../../components/c-checkbox-input/c-checkbox-input.prototype' ) );
5
+
6
+ c_title.c_title_url = '';
7
+
8
+ module.exports = {
9
+ o_checkbox_input_list_classes: '',
10
+ o_checkbox_input_list_items_classes: 'lrv-a-unstyle-list',
11
+ o_checkbox_input_list_item_classes: '',
12
+ c_title: c_title,
13
+ o_checkbox_input_list_items: [
14
+ c_checkbox_input, c_checkbox_input, c_checkbox_input
15
+ ]
16
+ };
@@ -0,0 +1,15 @@
1
+ <section class="o-checkbox-input-list {{ o_checkbox_input_list_classes }}">
2
+
3
+ {% if c_title %}
4
+ {% include "@larva/components/c-title/c-title.twig" with c_title %}
5
+ {% endif %}
6
+
7
+ <ul class="{{ o_checkbox_input_list_items_classes }}">
8
+ {% for item in o_checkbox_input_list_items %}
9
+ <li class="{{ o_checkbox_input_list_item_classes }}">
10
+ {% include "@larva/components/c-checkbox-input/c-checkbox-input.twig" with item %}
11
+ </li>
12
+ {% endfor %}
13
+ </ul>
14
+
15
+ </section>
@@ -1,8 +1,8 @@
1
- const path = require( 'path' );
2
- const clone = require( '@penskemediacorp/larva' ).clone;// This should be in this repo, probably
3
- const o_collection_item = clone( path.resolve( __dirname, '../o-collection-item.prototype' ) );
1
+ const clonedeep = require( 'lodash.clonedeep' );
4
2
 
5
- o_collection_item.o_collection_item_classes += " a-floated-parent";
6
- o_collection_item.o_figure.o_figure_classes += " a-floated-left";
3
+ const o_collection_item = clonedeep( require( './o-collection-item.prototype' ) );
4
+
5
+ o_collection_item.o_collection_item_classes += ' lrv-a-floated-parent';
6
+ o_collection_item.o_figure.o_figure_classes += ' lrv-a-floated-left';
7
7
 
8
8
  module.exports = o_collection_item;