@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
@@ -1,11 +1,11 @@
1
- const path = require( 'path' );
2
- const clone = require( '@penskemediacorp/larva' ).clone;// This should be in this repo, probably
3
- const c_title = clone( path.resolve( __dirname, '../../components/c-title/c-title.prototype' ) );
4
- const o_figure = clone( path.resolve( __dirname, '../o-figure/o-figure.prototype' ) );
5
- const c_dek = clone( path.resolve( __dirname, '../../components/c-dek/c-dek.prototype' ) );
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_title = clonedeep( require( '../../components/c-title/c-title.prototype' ) );
4
+ const o_figure = clonedeep( require( '../o-figure/o-figure.prototype' ) );
5
+ const c_dek = clonedeep( require( '../../components/c-dek/c-dek.prototype' ) );
6
6
 
7
7
  module.exports = {
8
8
  c_title: c_title,
9
9
  c_dek: c_dek,
10
10
  o_figure: o_figure,
11
- };
11
+ };
@@ -2,4 +2,4 @@
2
2
  {% include "@larva/components/c-title/c-title.twig" with c_title %}
3
3
  {% include "@larva/objects/o-figure/o-figure.twig" with o_figure %}
4
4
  {% include "@larva/components/c-dek/c-dek.twig" with c_dek %}
5
- </div>
5
+ </div>
@@ -0,0 +1,11 @@
1
+ o-email-capture-form is an object intended to collect emails via the ExactTarget API. It accepts an array of c-hidden-fields for this the Opted In and Date ExactTarget data.
2
+
3
+ Although it could be used to collect emails via other services, developers should consider creating project-level patterns for anything other than ExactTarget.
4
+
5
+ Also note that o-email-capture-form should not be used to provide an email input in a longer form – it should be used only when a form required a single input for an email.
6
+
7
+ This pattern is intended to go along with the EmailCapture larva-js package that will handle appending the input value to a success URL when the form is submitted.
8
+
9
+ ## Available configuraitons:
10
+
11
+ * `o-email-capture-form.minimal` – This configuration shows the input as a single line, and the submit button as a small arrow to the right of the input.
@@ -1,15 +1,15 @@
1
- const path = require( 'path' );
2
- const clone = require( '@penskemediacorp/larva' ).clone;// This should be in this repo, probably
3
- const o_email_capture_form = clone( path.resolve( __dirname, './o-email-capture-form.prototype' ) );
4
- const c_button = clone( path.resolve( __dirname, '../../components/c-button/c-button.stripped' ) );
5
- const c_email_field = clone( path.resolve( __dirname, '../../components/c-email-field/c-email-field.ghost' ) );
1
+ const clonedeep = require( 'lodash.clonedeep' );
6
2
 
7
- c_button.c_button_classes += " a-icon-after a-icon-arrow-right";
8
- c_button.c_button_inner_classes = "a-screen-reader-only";
9
- c_button.c_button_type_attr = "submit";
3
+ const o_email_capture_form = clonedeep( require( './o-email-capture-form.prototype' ) );
4
+ const c_button = clonedeep( require( '../../components/c-button/c-button.stripped' ) );
5
+ const c_email_field = clonedeep( require( '../../components/c-email-field/c-email-field.ghost' ) );
6
+
7
+ c_button.c_button_classes += ' lrv-a-icon-after lrv-a-icon-arrow-right';
8
+ c_button.c_button_inner_classes = 'lrv-a-screen-reader-only';
9
+ c_button.c_button_type_attr = 'submit';
10
10
 
11
11
  o_email_capture_form.c_button = c_button;
12
12
  o_email_capture_form.c_email_field = c_email_field;
13
- o_email_capture_form.o_email_capture_form_inner_classes = "pmc-u-flex pmc-u-align-items-center pmc-u-justify-content-center pmc-u-border-b-1 pmc-u-border-color-currentColor";
13
+ o_email_capture_form.o_email_capture_form_inner_classes = 'lrv-u-flex lrv-u-align-items-center lrv-u-justify-content-center lrv-u-border-b-1 lrv-u-border-color-currentColor';
14
14
 
15
- module.exports = o_email_capture_form;
15
+ module.exports = o_email_capture_form;
@@ -1,21 +1,17 @@
1
- const path = require( 'path' );
2
- const clone = require( '@penskemediacorp/larva' ).clone;// This should be in this repo, probably
3
- const c_button = clone( path.resolve( __dirname, '../../components/c-button/c-button.prototype' ) );
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_button = clonedeep( require( '../../components/c-button/c-button.prototype' ) );
4
+ const c_email_field = clonedeep( require( '../../components/c-email-field/c-email-field.prototype' ) );
4
5
 
5
6
  module.exports = {
6
- "o_email_capture_form_classes": "",
7
- "o_email_capture_form_action_url": "",
8
- "o_email_capture_form_button_text": "Sign up",
9
- "o_email_capture_form_name_attr": "email-capture-form",
10
- "o_email_capture_form_base_url": "",
11
- "c_button": c_button,
12
- "c_email_field": {
13
- "c_email_field_classes": "",
14
- "c_email_field_label_classes": "",
15
- "c_email_field_label_for_attr": "",
16
- "c_email_field_label_text": "Your Email",
17
- "c_email_field_input_id_attr": "",
18
- "c_email_field_input_name_attr": "",
19
- "c_email_field_input_placeholder_attr": "you@email.com"
20
- }
21
- }
7
+ o_email_capture_form_classes: '',
8
+ o_email_capture_form_context_name_attr: 'FormPost',
9
+ o_email_capture_form_inner_classes: '',
10
+ o_email_capture_form_action_url: '',
11
+ o_email_capture_form_button_text: 'Sign up',
12
+ o_email_capture_form_name_attr: 'email-capture-form',
13
+ o_email_capture_form_success_url: '',
14
+ c_button: c_button,
15
+ c_email_field: c_email_field,
16
+ o_email_capture_form_hidden_field_items: []
17
+ };
@@ -1,21 +1,16 @@
1
- <form class="o-email-capture-form {{ o_email_capture_form_classes }}" method="post" action="{{ o_email_capture_form_action_url }}" name="{{ o_email_capture_form_name_attr }}" target="_blank">
1
+ <form class="o-email-capture-form lrv-js-EmailCapture {{ o_email_capture_form_classes }}" method="post" action="{{ o_email_capture_form_action_url }}" name="{{ o_email_capture_form_name_attr }}" target="_blank">
2
2
 
3
3
  <div class="o-email-capture-form__inner {{ o_email_capture_form_inner_classes }}">
4
4
  {% include "@larva/components/c-email-field/c-email-field.twig" with c_email_field %}
5
5
  {% include "@larva/components/c-button/c-button.twig" with c_button %}
6
6
  </div>
7
7
 
8
- <input name="Deadline_Breaking_News_Opted_In" value="Yes" type="hidden" />
9
- <input name="Global_Opt_In_Date" value="<?php echo esc_attr( $date ); ?>" type="hidden" />
10
- <input name="Deadline_Breaking_News_Opt_In_Date" value="<?php echo esc_attr( $date ); ?>" type="hidden" />
11
- <input name="source" value="onsite-footer" type="hidden" />
12
-
13
- <input type="hidden" name="__contextName" id="__contextName" value="FormPost" />
14
- <input type="hidden" name="__executionContext" id="__executionContext" value="Post" />
15
- <input name="__successPage" id="__successPage" value="" type="hidden" data-base-url="{{ o_email_capture_form_base_url }}"
16
- />
17
- </form>
18
-
19
-
20
8
 
9
+ <input type="hidden" name="__contextName" value="{{ o_email_capture_form_context_name_attr }}"/>
10
+ <input type="hidden" name="__executionContext" value="Post" />
11
+ <input type="hidden" name="__successPage" data-email-capture-success-url="{{ o_email_capture_form_success_url }}" value="" />
21
12
 
13
+ {% for item in o_email_capture_form_hidden_field_items %}
14
+ {% include "@larva/components/c-hidden-field/c-hidden-field.twig" with item %}
15
+ {% endfor %}
16
+ </form>
@@ -0,0 +1,17 @@
1
+ o-figure is designed to support images with a caption and a credit, primarily used within editorial content in `the_content` in WordPress. pmc-core-v2 contains a filter on the `caption` shortcode that applies this pattern. Is it also used in for featured images that include credits and captions.
2
+
3
+ It consists of a `figure` element around a `c-lazy-image` and `c-figcaption`, with an optional link wrapper to make the entire block clickable.
4
+
5
+ There is an option for adding an inline style for the width on the `figure` to provide a smooth paint in post content.
6
+
7
+ The pattern supports Lazy Loading with `c-lazy-image`.
8
+
9
+ ## When to use:
10
+ * For images or content that can stand on its own, outside of the document flow. Read more about [semantic use of `figure` here](http://html5doctor.com/the-figure-figcaption-elements/).
11
+
12
+ ## When not to use:
13
+ * For images that cannot stand on their own as content, e.g. a featured image for a post that requires additional post content to be understood.
14
+ * Logo or icons
15
+
16
+ ## Future:
17
+ Could support non-image figures such as charts, embeds, or quotes.
@@ -1,9 +1,16 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_figcaption = clonedeep( require( '../../components/c-figcaption/c-figcaption.prototype' ) );
4
+ const c_lazy_image = clonedeep( require( '../../components/c-lazy-image/c-lazy-image.prototype' ) );
5
+
1
6
  module.exports = {
2
- "o_figure_permalink_url": "https://notlaura.com",
3
- "o_figure_alt_attr": "Thumbnail image",
4
- "o_figure_placeholder_image_url": "https://placehold.it/300x300",
5
- "o_figure_image_url": "https://placehold.it/300x300",
6
- "o_figure_caption_markup": "Here is some caption text",
7
- "o_figure_credit_text": "Photo Credit",
8
- "o_figure_screen_reader_text": "Text if there is no caption"
9
- }
7
+ c_figcaption: c_figcaption,
8
+ c_lazy_image: c_lazy_image,
9
+ o_figure_link_tabindex_attr: '',
10
+ o_figure_link_target_attr: '_self',
11
+ o_figure_link_url: false,
12
+ o_figure_classes: '',
13
+ o_figure_link_classes: 'lrv-a-unstyle-link ',
14
+ o_figure_figcaption_outer: false,
15
+ o_figure_figcaption_outer_classes: '',
16
+ };
@@ -1,48 +1,34 @@
1
- {% if o_figure_permalink_url %}
2
- <a href="{{ o_figure_permalink_url }}" class="o-figure__link {{ o_figure_link_classes }}">
3
- {% endif %}
4
-
5
- {% if o_figure_screen_reader_text %}
6
- <span class="a-screen-reader-only">{{ o_figure_screen_reader_text }}</span>
1
+ {% if o_figure_link_url %}
2
+ <a href="{{ o_figure_link_url }}" class="o-figure__link {{ o_figure_link_classes }}"
3
+ {% if o_figure_link_target_attr %}
4
+ target="{{ o_figure_link_target_attr }}"
5
+ {% endif %}
6
+ {% if o_figure_link_tabindex_attr %}
7
+ tabindex="{{ o_figure_link_tabindex_attr }}"
8
+ {% endif %}
9
+ >
7
10
  {% endif %}
8
11
 
9
- <figure class="o-figure {{ modifier_class }} {{ o_figure_classes }}" style="{{ o_figure_width_attr }}">
12
+ <figure class="o-figure {{ modifier_class }} {{ o_figure_classes }} lrv-u-max-width-100p" style="{{ o_figure_width_attr }}">
10
13
 
11
- {% if o_figure_crop_class %}
12
- <div class="{{ o_figure_crop_class }}">
13
- {% endif %}
14
-
15
- {% if o_figure_image_markup %}
16
- {{ o_figure_image_markup }}
17
- {% else %}
18
- <img class="o-figure__image {{ o_figure_image_classes }}" src="{{ o_figure_placeholder_image_url }}" data-lazy-src="{{ o_figure_image_url }}" alt="{{ o_figure_alt_attr }}">
19
- {% endif %}
14
+ {% if c_lazy_image %}
15
+ {% include "@larva/components/c-lazy-image/c-lazy-image.twig" with c_lazy_image %}
16
+ {% endif %}
20
17
 
21
- {% if c_button %}
22
- {% include "@larva/components/c-button/c-button.twig" with c_button %}
23
- {% endif %}
18
+ {% if c_figcaption %}
19
+ {% if o_figure_figcaption_outer %}
20
+ <div class="o-figure__figcaption-outer {{ o_figure_figcaption_outer_classes }}">
21
+ {% endif %}
24
22
 
25
- {% if o_figure_crop_class %}
26
- </div>
27
- {% endif %}
23
+ {% include "@larva/components/c-figcaption/c-figcaption.twig" with c_figcaption %}
28
24
 
29
- {% if o_figure_credit_text %}
30
- <figcaption class="o-figure__caption {{ o_figure_figcaption_classes }}">
31
- {% if o_figure_caption_markup %}
32
- <span class="{{ o_figure_caption_classes }}">{{ o_figure_caption_markup }}</span>
33
- {% endif %}
34
- {% if o_figure_credit_text %}
35
- <span class="{{ o_figure_credit_classes }}">{{ o_figure_credit_text }}</span>
25
+ {% if o_figure_figcaption_outer %}
26
+ </div>
36
27
  {% endif %}
37
- </figcaption>
38
- {% endif %}
39
-
40
- {% if c_play_badge %}
41
- {% include "@larva/components/c-play-badge/c-play-badge.twig" with c_play_badge %}
42
- {% endif %}
28
+ {% endif %}
43
29
 
44
30
  </figure>
45
31
 
46
- {% if o_figure_permalink_url %}
32
+ {% if o_figure_link_url %}
47
33
  </a>
48
34
  {% endif %}
@@ -1,12 +1,14 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_heading = clonedeep( require( '../../components/c-heading/c-heading.prototype' ) );
4
+ const c_button = clonedeep( require( '../../components/c-button/c-button.prototype' ) );
5
+
6
+ c_button.c_button_classes = 'lrv-u-font-size-12 lrv-u-text-transform-uppercase lrv-a-icon-after lrv-a-icon-arrow-right lrv-u-margin-l-auto';
7
+ c_button.c_button_text = 'Link';
8
+ c_button.c_button_url = '#';
9
+
1
10
  module.exports = {
2
- "o_heading_classes": "u-flex u-align-items-center pmc-u-background-black pmc-u-padding-a-1",
3
- "c_heading": {
4
- "c_heading_classes": "pmc-u-color-white",
5
- "c_heading_text": "Section Heading"
6
- },
7
- "c_button": {
8
- "modifier_class": "c-button--plain pmc-u-font-size-12 pmc-u-color-white pmc-u-text-transform-uppercase a-icon-after a-icon-arrow-right u-margin-l-auto",
9
- "c_button_url": "#",
10
- "c_button_text": "Link"
11
- }
11
+ o_heading_classes: 'lrv-u-flex lrv-u-align-items-center lrv-u-padding-a-1',
12
+ c_heading: c_heading,
13
+ c_button: c_button
12
14
  };
@@ -1,4 +1,4 @@
1
- <header class="o-heading {{ modifier_class }} {{ o_heading_classes }}">
1
+ <header class="o-header {{ modifier_class }} {{ o_heading_classes }}">
2
2
  {% if c_heading %}
3
3
  {% include "@larva/components/c-heading/c-heading.twig" with c_heading %}
4
4
  {% endif %}
@@ -11,6 +11,10 @@
11
11
  {% include "@larva/components/c-button/c-button.twig" with c_button %}
12
12
  {% endif %}
13
13
 
14
+ {% if c_svg %}
15
+ {% include "@larva/components/c-svg/c-svg.twig" with c_svg %}
16
+ {% endif %}
17
+
14
18
  {% if o_sponsored_by %}
15
19
  {% include "@larva/objects/o-sponsored-by/o-sponsored-by.twig" with o_sponsored_by %}
16
20
  {% endif %}
@@ -0,0 +1,10 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const header_buttons_prototype = require( './o-header-buttons.prototype' );
4
+ const header_buttons = clonedeep( header_buttons_prototype );
5
+
6
+ header_buttons.button_wrap = true;
7
+ header_buttons.c_subscribe_link.c_link_classes = 'lrv-a-unstyle-link lrv-u-text-transform-uppercase lrv-u-font-family-body lrv-u-font-size-12 lrv-u-font-size-8@mobile-max lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-currentColor lrv-u-margin-b-025';
8
+ header_buttons.c_got_a_tip.c_link_classes = 'lrv-a-unstyle-link lrv-u-text-transform-uppercase lrv-u-font-family-body lrv-u-font-size-12 lrv-u-font-size-8@mobile-max lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover lrv-u-margin-tb-025';
9
+ header_buttons.o_header_button_classes = 'lrv-u-align-items-stretch lrv-a-space-children-horizontal lrv-a-space-children--1';
10
+ module.exports = header_buttons;
@@ -0,0 +1,41 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_link_prototype = require( '../../components/c-link/c-link.prototype' );
4
+ const o_account_menu_prototype = require( '../../objects/o-account-menu/o-account-menu.prototype');
5
+
6
+ const c_login_link = clonedeep( c_link_prototype );
7
+ c_login_link.c_link_text = 'Log In';
8
+ c_login_link.c_link_classes = ' lrv-a-unstyle-link lrv-u-text-transform-uppercase lrv-u-font-family-body lrv-u-font-size-12 lrv-u-font-size-8@mobile-max lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover';
9
+
10
+ const c_subscribe_link = clonedeep( c_link_prototype );
11
+ c_subscribe_link.c_link_text = 'Subscribe';
12
+ c_subscribe_link.c_link_classes = 'lrv-a-unstyle-button lrv-a-unstyle-link lrv-u-text-transform-uppercase lrv-u-font-family-body lrv-u-font-size-12 lrv-u-font-size-8@mobile-max lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover';
13
+
14
+ const c_account_link = clonedeep( c_link_prototype );
15
+ c_account_link.c_link_text = 'Account';
16
+ c_account_link.c_link_classes = 'lrv-u-text-transform-uppercase lrv-u-font-family-body lrv-u-font-size-12 lrv-u-font-size-8@mobile-max lrv-u-color-brand-primary:hover lrv-u-border-color-white lrv-u-border-color-brand-primary:hover';
17
+
18
+ const c_got_a_tip = clonedeep( c_link_prototype );
19
+ c_got_a_tip.c_link_text = 'Got A Tip?';
20
+ c_got_a_tip.c_link_classes = 'lrv-a-unstyle-link lrv-u-text-transform-uppercase lrv-u-font-family-body lrv-u-font-size-12 lrv-u-font-size-8@mobile-max lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover';
21
+
22
+ const o_account_menu = clonedeep( o_account_menu_prototype );
23
+
24
+ o_account_menu.c_account_link.c_link_classes = ' lrv-a-unstyle-link lrv-u-text-transform-uppercase lrv-u-font-family-body lrv-u-font-size-12 lrv-u-font-size-8@mobile-max lrv-u-color-brand-primary:hover lrv-u-border-b-1 lrv-u-border-color-white lrv-u-border-color-brand-primary:hover lrv-u-margin-tb-025';
25
+
26
+ module.exports = {
27
+ c_login_link,
28
+ c_subscribe_link,
29
+ o_account_menu,
30
+ c_got_a_tip,
31
+ c_account_link,
32
+ button_wrap: false,
33
+ show_flyout: true,
34
+ o_header_button_classes: 'lrv-a-space-children-horizontal lrv-a-space-children--1',
35
+ got_tip_wrapper_classes: 'lrv-u-border-l-00@mobile-max lrv-u-border-l-1 lrv-u-padding-l-1 lrv-u-padding-tb-025 lrv-u-flex lrv-u-align-items-center lrv-u-margin-tb-025',
36
+ account_menu_classes: 'lrv-u-flex lrv-u-align-items-center lrv-u-border-l-00@mobile-max lrv-u-border-l-1 lrv-u-padding-l-1 lrv-u-padding-tb-025 lrv-u-margin-tb-025',
37
+ hide_flyout_classes: ' ',
38
+ subscribe_wrapper_classes: 'subscribe-link cx-dynamic-link lrv-u-border-l-00@mobile-max lrv-u-border-l-1 lrv-u-padding-l-1 lrv-u-padding-tb-025 lrv-u-margin-tb-025',
39
+ login_wrapper_classes: 'subscriber-login-link lrv-u-border-l-00@mobile-max lrv-u-border-l-1 lrv-u-padding-l-1 lrv-u-padding-tb-025 lrv-u-margin-tb-025',
40
+ button_wrap_classes: 'lrv-u-flex lrv-u-flex-direction-column lrv-u-align-items-center lrv-u-border-l-00@mobile-max lrv-u-border-l-1 lrv-u-padding-l-1 lrv-u-margin-tb-025',
41
+ };
@@ -0,0 +1,42 @@
1
+ <div class="lrv-u-flex {{o_header_button_classes}}">
2
+ <div class="item-wrap // {{ got_tip_wrapper_classes }}">
3
+ {% include "@larva/components/c-link/c-link.twig" with c_got_a_tip %}
4
+ </div>
5
+
6
+ {% if show_flyout %}
7
+
8
+ <div class="item-wrap // {{ account_menu_classes }} ">
9
+ {% include "@larva/objects/o-account-menu/o-account-menu.twig" with o_account_menu %}
10
+ </div>
11
+
12
+ {% else %}
13
+
14
+ <div class="item-wrap // {{ account_menu_classes }} {{ hide_flyout_classes}}">
15
+ {% include "@larva/components/c-link/c-link.twig" with c_account_link %}
16
+ </div>
17
+
18
+ {% endif %}
19
+
20
+ {% if button_wrap %}
21
+
22
+ <div class="items-wrap // {{ button_wrap_classes }}">
23
+ {% if c_subscribe_link %}
24
+ {% include "@larva/components/c-link/c-link.twig" with c_subscribe_link %}
25
+ {% endif %}
26
+
27
+ {% include "@larva/components/c-link/c-link.twig" with c_login_link %}
28
+ </div>
29
+
30
+ {% else %}
31
+
32
+ <div class="item-wrap // {{ subscribe_wrapper_classes }}">
33
+ {% if c_subscribe_link %}
34
+ {% include "@larva/components/c-link/c-link.twig" with c_subscribe_link %}
35
+ {% endif %}
36
+ </div>
37
+ <div class="item-wrap // {{ login_wrapper_classes }} ">
38
+ {% include "@larva/components/c-link/c-link.twig" with c_login_link %}
39
+ </div>
40
+
41
+ {% endif %}
42
+ </div>
@@ -0,0 +1,5 @@
1
+ The Icon button is comprised of c_icon and c_span. While c_icon and c_span both support URLs, any URL for o-icon-button should be passed using o_icon_button_url. In this case, it will render an anchor tag instead of a button tag.
2
+
3
+ ## Available configurations:
4
+
5
+ * `o-icon-button.search` – Contains search icon from `c-icon` and no text.
@@ -0,0 +1,21 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_span = clonedeep( require( '../../components/c-span/c-span.prototype' ) );
4
+ const c_icon = clonedeep( require( '../../components/c-icon/c-icon.prototype' ) );
5
+
6
+ c_icon.c_icon_name = 'hamburger';
7
+ c_icon.c_icon_url = false;
8
+
9
+ c_span.c_span_text = 'Menu';
10
+ c_span.c_span_classes = 'lrv-u-margin-l-050';
11
+ c_span.c_span_url = false;
12
+
13
+ module.exports = {
14
+ o_icon_button_classes: 'lrv-a-unstyle-button lrv-a-unstyle-link lrv-u-cursor-pointer lrv-u-flex',
15
+ o_icon_button_ga_tracking: {}, // by default we do not want to enable any ga tracking
16
+ o_icon_button_rel_attr: '',
17
+ o_icon_button_screen_reader_text: '',
18
+ o_icon_button_target_attr: '',
19
+ c_icon: c_icon,
20
+ c_span: c_span,
21
+ };
@@ -0,0 +1,9 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const o_icon_button_search = clonedeep( require( './o-icon-button.prototype' ) );
4
+
5
+ o_icon_button_search.c_icon.c_icon_name = 'search';
6
+ o_icon_button_search.o_icon_button_screen_reader_text = 'Click to Expand Search Input';
7
+ o_icon_button_search.c_span = false;
8
+
9
+ module.exports = o_icon_button_search;
@@ -0,0 +1,29 @@
1
+ {% if o_icon_button_url %}
2
+ <a href="{{ o_button_url }}" class="{{ o_icon_button_classes }}" target="{{ o_icon_button_target_attr }}" rel="{{ o_icon_button_rel_attr }}" data-pmc-sp-product="{{ o_icon_button_guid_attr }}" data-category-name="{{ o_icon_button_category_attr }}" {{ wp_action( 'pmc_do_render_custom_ga_tracking_attr', o_icon_button_ga_tracking ) }}>
3
+ {% else %}
4
+ {% if o_icon_use_span %}
5
+ <span class="o-icon-button {{ o_icon_button_classes }}">
6
+ {% else %}
7
+ <button class="o-icon-button {{ o_icon_button_classes }}">
8
+ {% endif %}
9
+ {% endif %}
10
+
11
+ {% include "@larva/components/c-icon/c-icon.twig" with c_icon %}
12
+
13
+ {% if o_icon_button_screen_reader_text %}
14
+ <span class="lrv-a-screen-reader-only">{{ o_icon_button_screen_reader_text }}</span>
15
+ {% endif %}
16
+
17
+ {% if c_span %}
18
+ {% include "@larva/components/c-span/c-span.twig" with c_span %}
19
+ {% endif %}
20
+
21
+ {% if o_icon_button_url %}
22
+ </a>
23
+ {% else %}
24
+ {% if o_icon_use_span %}
25
+ </span>
26
+ {% else %}
27
+ </button>
28
+ {% endif %}
29
+ {% endif %}
@@ -0,0 +1 @@
1
+ The indicator object supports `c-span` and/or `c-icon`. It is useful for arbitrary icons or text that visually support other elements, for example, the "Photos" or "Video" indication stuck to the image in a `story` excerpt. Works nicely with `a-glue`.
@@ -0,0 +1,12 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const o_indicator = clonedeep( require( './o-indicator.prototype' ) );
4
+ const c_icon = clonedeep( require( '../../components/c-icon/c-icon.prototype' ) );
5
+
6
+ o_indicator.c_icon = clonedeep( c_icon );
7
+ o_indicator.c_icon.c_icon_name = 'gallery';
8
+ o_indicator.c_span.c_span_text = 'Photos';
9
+ o_indicator.c_span.c_span_classes += ' lrv-u-margin-l-050 lrv-u-text-transform-uppercase lrv-a-font-secondary-s';
10
+ o_indicator.o_indicator_classes += ' lrv-u-flex lrv-u-background-color-black lrv-u-color-white lrv-u-padding-a-050 lrv-u-border-radius-5 lrv-u-margin-a-050';
11
+
12
+ module.exports = o_indicator;
@@ -0,0 +1,8 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+
3
+ const c_span = clonedeep( require( '../../components/c-span/c-span.prototype.js' ) );
4
+
5
+ module.exports = {
6
+ o_indicator_classes: 'lrv-a-glue lrv-a-glue--b-0 lrv-a-glue--r-0 u-pointer-events-none',
7
+ c_span: c_span
8
+ };
@@ -0,0 +1,9 @@
1
+ <span class="o-indicator {{ o_indicator_classes }}">
2
+ {% if c_icon %}
3
+ {% include "@larva/components/c-icon/c-icon.twig" with c_icon %}
4
+ {% endif %}
5
+
6
+ {% if c_span %}
7
+ {% include "@larva/components/c-span/c-span.twig" with c_span %}
8
+ {% endif %}
9
+ </span>
@@ -0,0 +1,11 @@
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+ const c_input = clonedeep(require('@penskemediacorp/larva-patterns/components/c-input/c-input.prototype'));
3
+
4
+ module.exports = {
5
+ o_input_group_class: '',
6
+ o_input_group_items: [
7
+ c_input,
8
+ c_input,
9
+ c_input
10
+ ]
11
+ };
@@ -0,0 +1,5 @@
1
+ <div class="o-input-group {{ o_input_group_class }}">
2
+ {% for item in o_input_group_items %}
3
+ {% include "@larva/components/c-input/c-input.twig" with item %}
4
+ {% endfor %}
5
+ </div>
@@ -1,3 +1,3 @@
1
- # Nav
1
+ o-nav is an object with a `nav` element containing an unordered list with list items in a for loop that contain an instance of `c-link`. It contains an optional `h4` list title. o-nav is useful for menus with several items, and the ability to apply utilities to all `li`s inside the loop with a single key can useful.
2
2
 
3
- The Nav object is an HTML pattern with a `nav` element containing an unordered list, and an optional `h4` list title.
3
+ In general, o-nav should be used for internal site links. It can be adapted to work with the JS pattern `MobileHeightToggle`. See the footer-menus module for an example.
@@ -1,8 +1,8 @@
1
- const path = require( 'path' );
2
- const clone = require( '../../../larva/lib/utils/clonePatternData' );// This should be in this repo, probably
3
- const o_nav = clone( path.resolve( __dirname, '../../objects/o-nav/o-nav.prototype' ) );
1
+ const clonedeep = require( 'lodash.clonedeep' );
4
2
 
5
- o_nav.o_nav_classes = 'pmc-u-flex';
6
- o_nav.o_nav_list_classes += ' pmc-u-flex pmc-a-space-children-horizontal pmc-a-space-children--1 pmc-u-align-items-center pmc-u-font-family-primary pmc-u-a-unstyle-list';
3
+ const o_nav = clonedeep( require( '../../objects/o-nav/o-nav.prototype' ) );
7
4
 
8
- module.exports = o_nav;
5
+ o_nav.o_nav_classes = 'lrv-u-flex';
6
+ o_nav.o_nav_list_classes += ' lrv-u-flex lrv-a-space-children-horizontal lrv-a-space-children--1 lrv-u-align-items-center lrv-u-a-unstyle-list';
7
+
8
+ module.exports = o_nav;
@@ -1,19 +1,23 @@
1
- const path = require( 'path' );
2
- const clone = require( '../../../larva/lib/utils/clonePatternData' );// This should be in this repo, probably
3
- const c_link = path.resolve( __dirname, '../../components/c-link/c-link.prototype' );
1
+ const clonedeep = require( 'lodash.clonedeep' );
2
+ const c_link_prototype = require( '../../components/c-link/c-link.prototype' );
4
3
 
5
4
  const o_nav_list_items = [
6
- clone( c_link ),
7
- clone( c_link ),
8
- clone( c_link )
5
+ clonedeep( c_link_prototype ),
6
+ clonedeep( c_link_prototype ),
7
+ clonedeep( c_link_prototype )
9
8
  ];
10
9
 
11
10
  module.exports = {
12
- "modifier_class": "",
13
- "o_nav_classes": "",
14
- "o_nav_title_text": "",
15
- "o_nav_title_classes": "",
16
- "o_nav_list_classes" : "pmc-a-unstyle-list",
17
- "o_nav_list_item_classes": "",
18
- "o_nav_list_items": o_nav_list_items
11
+ modifier_class: '',
12
+ o_nav_classes: '',
13
+ o_nav_title_text: '',
14
+ o_nav_title_id_attr: '',
15
+ o_nav_title_classes: '',
16
+ o_nav_aria_labelledby_attr: '',
17
+ o_nav_screen_reader_id_attr: 'optional-screen-reader',
18
+ o_nav_screen_reader_text: 'optional screen reader',
19
+ o_nav_list_classes: 'lrv-a-unstyle-list',
20
+ o_nav_list_item_classes: '',
21
+ o_nav_list_items: o_nav_list_items,
22
+ o_nav_list_labelledby_attr: ''
19
23
  };
@@ -1,10 +1,36 @@
1
- <nav class="o-nav {{ modifier_class }} {{ o_nav_classes }}">
1
+ {% if o_nav_screen_reader_text %}
2
+ <h2 id="{{ o_nav_screen_reader_id_attr }}" class="lrv-a-screen-reader-only">
3
+ {{ o_nav_screen_reader_text }}
4
+ </h2>
5
+ {% endif %}
6
+ <nav class="o-nav {{ modifier_class }} {{ o_nav_classes }}" data-dropdown="{{ o_nav_data_attributes }}"
7
+ {% if o_nav_title_id_attr %}
8
+ aria-label="{{ o_nav_title_id_attr }}"
9
+ {% endif %}
10
+ {% if o_nav_aria_labelledby_attr %}
11
+ aria-labelledby="{{ o_nav_aria_labelledby_attr }}"
12
+ {% endif %}
13
+ >
2
14
 
3
15
  {% if o_nav_title_text %}
4
- <h4 id="{{ o_nav_title_id_attr }}" class="o-nav__title {{ o_nav_title_classes }}">{{ o_nav_title_text }}</h4>
16
+ {% if o_nav_title_outer %}
17
+ <div class="o-nav__title-outer {{ o_nav_title_outer_classes }}">
18
+ {% endif %}
19
+ {% if o_nav_tag_text %}
20
+ <{{ o_nav_tag_text }} id="{{ o_nav_title_id_attr }}" class="o-nav__title {{ o_nav_title_classes }}">{{ o_nav_title_text }}</{{ o_nav_tag_text }}>
21
+ {% else %}
22
+ <h4 id="{{ o_nav_title_id_attr }}" class="o-nav__title {{ o_nav_title_classes }}">{{ o_nav_title_text }}</h4>
23
+ {% endif %}
24
+ {% if o_nav_title_outer %}
25
+ </div>
26
+ {% endif %}
5
27
  {% endif %}
6
28
 
7
- <ul class="o-nav__list {{ o_nav_list_classes }}" aria-labelledby="{{ o_nav_title_id_attr }}">
29
+ <ul class="o-nav__list {{ o_nav_list_classes }}"
30
+ {% if o_nav_list_labelledby_attr %}
31
+ aria-labelledby="{{ o_nav_list_labelledby_attr }}"
32
+ {% endif %}
33
+ >
8
34
  {% for item in o_nav_list_items %}
9
35
  <li class="o-nav__list-item {{ o_nav_list_item_classes }}">
10
36
  {% include "@larva/components/c-link/c-link.twig" with item %}