@universityofmaryland/web-elements-library 1.5.3 → 1.5.6

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 (708) hide show
  1. package/README.md +1 -1
  2. package/dist/_types.d.ts +2 -9
  3. package/dist/_types.d.ts.map +1 -1
  4. package/dist/atomic/_types.d.ts +2 -2
  5. package/dist/atomic/_types.d.ts.map +1 -1
  6. package/dist/atomic/actions/icon.d.ts +1 -5
  7. package/dist/atomic/actions/icon.d.ts.map +1 -1
  8. package/dist/atomic/actions/icon.js +43 -48
  9. package/dist/atomic/actions/icon.js.map +1 -1
  10. package/dist/atomic/actions/icon.mjs +43 -48
  11. package/dist/atomic/actions/icon.mjs.map +1 -1
  12. package/dist/atomic/actions/text.d.ts +4 -16
  13. package/dist/atomic/actions/text.d.ts.map +1 -1
  14. package/dist/atomic/actions/text.js +82 -104
  15. package/dist/atomic/actions/text.js.map +1 -1
  16. package/dist/atomic/actions/text.mjs +81 -106
  17. package/dist/atomic/actions/text.mjs.map +1 -1
  18. package/dist/atomic/animations/actions/indicator.js +1 -1
  19. package/dist/atomic/animations/actions/indicator.js.map +1 -1
  20. package/dist/atomic/animations/actions/indicator.mjs +1 -1
  21. package/dist/atomic/animations/actions/indicator.mjs.map +1 -1
  22. package/dist/atomic/animations/brand/card-stack.d.ts +2 -1
  23. package/dist/atomic/animations/brand/card-stack.d.ts.map +1 -1
  24. package/dist/atomic/animations/brand/card-stack.js +148 -172
  25. package/dist/atomic/animations/brand/card-stack.js.map +1 -1
  26. package/dist/atomic/animations/brand/card-stack.mjs +140 -164
  27. package/dist/atomic/animations/brand/card-stack.mjs.map +1 -1
  28. package/dist/atomic/animations/brand/chevron-scroll.js +1 -1
  29. package/dist/atomic/animations/brand/chevron-scroll.js.map +1 -1
  30. package/dist/atomic/animations/brand/chevron-scroll.mjs +1 -1
  31. package/dist/atomic/animations/brand/chevron-scroll.mjs.map +1 -1
  32. package/dist/atomic/assets/image/background.d.ts +1 -5
  33. package/dist/atomic/assets/image/background.d.ts.map +1 -1
  34. package/dist/atomic/assets/image/background.js +40 -40
  35. package/dist/atomic/assets/image/background.js.map +1 -1
  36. package/dist/atomic/assets/image/background.mjs +23 -40
  37. package/dist/atomic/assets/image/background.mjs.map +1 -1
  38. package/dist/atomic/assets/image/gif.d.ts +1 -5
  39. package/dist/atomic/assets/image/gif.d.ts.map +1 -1
  40. package/dist/atomic/assets/image/gif.js +28 -12
  41. package/dist/atomic/assets/image/gif.js.map +1 -1
  42. package/dist/atomic/assets/image/gif.mjs +11 -12
  43. package/dist/atomic/assets/image/gif.mjs.map +1 -1
  44. package/dist/atomic/assets/image/placeholder.d.ts +1 -5
  45. package/dist/atomic/assets/image/placeholder.d.ts.map +1 -1
  46. package/dist/atomic/assets/video/observed-auto-play.d.ts +1 -9
  47. package/dist/atomic/assets/video/observed-auto-play.d.ts.map +1 -1
  48. package/dist/atomic/assets/video/observed-auto-play.js +9 -5
  49. package/dist/atomic/assets/video/observed-auto-play.js.map +1 -1
  50. package/dist/atomic/assets/video/observed-auto-play.mjs +9 -5
  51. package/dist/atomic/assets/video/observed-auto-play.mjs.map +1 -1
  52. package/dist/atomic/assets/video/toggle.d.ts +1 -9
  53. package/dist/atomic/assets/video/toggle.d.ts.map +1 -1
  54. package/dist/atomic/assets/video/toggle.js +38 -40
  55. package/dist/atomic/assets/video/toggle.js.map +1 -1
  56. package/dist/atomic/assets/video/toggle.mjs +21 -40
  57. package/dist/atomic/assets/video/toggle.mjs.map +1 -1
  58. package/dist/atomic/buttons/fullscreen.d.ts +1 -5
  59. package/dist/atomic/buttons/fullscreen.d.ts.map +1 -1
  60. package/dist/atomic/buttons/fullscreen.js +21 -15
  61. package/dist/atomic/buttons/fullscreen.js.map +1 -1
  62. package/dist/atomic/buttons/fullscreen.mjs +4 -15
  63. package/dist/atomic/buttons/fullscreen.mjs.map +1 -1
  64. package/dist/atomic/events/meta.d.ts +1 -5
  65. package/dist/atomic/events/meta.d.ts.map +1 -1
  66. package/dist/atomic/events/meta.js +48 -48
  67. package/dist/atomic/events/meta.js.map +1 -1
  68. package/dist/atomic/events/meta.mjs +31 -48
  69. package/dist/atomic/events/meta.mjs.map +1 -1
  70. package/dist/atomic/events/sign.d.ts +1 -5
  71. package/dist/atomic/events/sign.d.ts.map +1 -1
  72. package/dist/atomic/events/sign.js +84 -93
  73. package/dist/atomic/events/sign.js.map +1 -1
  74. package/dist/atomic/events/sign.mjs +82 -93
  75. package/dist/atomic/events/sign.mjs.map +1 -1
  76. package/dist/atomic/layout/block/stacked.d.ts +7 -19
  77. package/dist/atomic/layout/block/stacked.d.ts.map +1 -1
  78. package/dist/atomic/layout/block/stacked.js +14 -20
  79. package/dist/atomic/layout/block/stacked.js.map +1 -1
  80. package/dist/atomic/layout/block/stacked.mjs +14 -20
  81. package/dist/atomic/layout/block/stacked.mjs.map +1 -1
  82. package/dist/atomic/layout/overlay/modal.js +1 -1
  83. package/dist/atomic/layout/overlay/modal.js.map +1 -1
  84. package/dist/atomic/layout/overlay/modal.mjs +1 -1
  85. package/dist/atomic/layout/overlay/modal.mjs.map +1 -1
  86. package/dist/atomic/layout/person/columns.d.ts +4 -20
  87. package/dist/atomic/layout/person/columns.d.ts.map +1 -1
  88. package/dist/atomic/layout/person/columns.js +56 -66
  89. package/dist/atomic/layout/person/columns.js.map +1 -1
  90. package/dist/atomic/layout/person/columns.mjs +56 -66
  91. package/dist/atomic/layout/person/columns.mjs.map +1 -1
  92. package/dist/atomic/text/stat.d.ts +2 -3
  93. package/dist/atomic/text/stat.d.ts.map +1 -1
  94. package/dist/atomic/text/stat.js +101 -119
  95. package/dist/atomic/text/stat.js.map +1 -1
  96. package/dist/atomic/text/stat.mjs +100 -119
  97. package/dist/atomic/text/stat.mjs.map +1 -1
  98. package/dist/atomic/text-lockup/contact.d.ts +1 -5
  99. package/dist/atomic/text-lockup/contact.d.ts.map +1 -1
  100. package/dist/atomic/text-lockup/contact.js +65 -105
  101. package/dist/atomic/text-lockup/contact.js.map +1 -1
  102. package/dist/atomic/text-lockup/contact.mjs +60 -103
  103. package/dist/atomic/text-lockup/contact.mjs.map +1 -1
  104. package/dist/atomic/text-lockup/date.d.ts.map +1 -1
  105. package/dist/atomic/text-lockup/date.js +6 -1
  106. package/dist/atomic/text-lockup/date.js.map +1 -1
  107. package/dist/atomic/text-lockup/date.mjs +6 -1
  108. package/dist/atomic/text-lockup/date.mjs.map +1 -1
  109. package/dist/atomic/text-lockup/large.d.ts +3 -7
  110. package/dist/atomic/text-lockup/large.d.ts.map +1 -1
  111. package/dist/atomic/text-lockup/large.js +62 -71
  112. package/dist/atomic/text-lockup/large.js.map +1 -1
  113. package/dist/atomic/text-lockup/large.mjs +59 -71
  114. package/dist/atomic/text-lockup/large.mjs.map +1 -1
  115. package/dist/atomic/text-lockup/medium.d.ts +5 -9
  116. package/dist/atomic/text-lockup/medium.d.ts.map +1 -1
  117. package/dist/atomic/text-lockup/medium.js +76 -84
  118. package/dist/atomic/text-lockup/medium.js.map +1 -1
  119. package/dist/atomic/text-lockup/medium.mjs +70 -82
  120. package/dist/atomic/text-lockup/medium.mjs.map +1 -1
  121. package/dist/atomic/text-lockup/person.d.ts +1 -5
  122. package/dist/atomic/text-lockup/person.d.ts.map +1 -1
  123. package/dist/atomic/text-lockup/person.js +102 -101
  124. package/dist/atomic/text-lockup/person.js.map +1 -1
  125. package/dist/atomic/text-lockup/person.mjs +99 -101
  126. package/dist/atomic/text-lockup/person.mjs.map +1 -1
  127. package/dist/atomic/text-lockup/small-scaling.d.ts +1 -5
  128. package/dist/atomic/text-lockup/small-scaling.d.ts.map +1 -1
  129. package/dist/atomic/text-lockup/small-scaling.js +64 -39
  130. package/dist/atomic/text-lockup/small-scaling.js.map +1 -1
  131. package/dist/atomic/text-lockup/small-scaling.mjs +44 -38
  132. package/dist/atomic/text-lockup/small-scaling.mjs.map +1 -1
  133. package/dist/atomic/text-lockup/small.d.ts +11 -25
  134. package/dist/atomic/text-lockup/small.d.ts.map +1 -1
  135. package/dist/atomic/text-lockup/small.js +70 -69
  136. package/dist/atomic/text-lockup/small.js.map +1 -1
  137. package/dist/atomic/text-lockup/small.mjs +64 -66
  138. package/dist/atomic/text-lockup/small.mjs.map +1 -1
  139. package/dist/composite/alert/elements/closeButton.d.ts +7 -0
  140. package/dist/composite/alert/elements/closeButton.d.ts.map +1 -0
  141. package/dist/composite/alert/elements/closeButton.js +51 -0
  142. package/dist/composite/alert/elements/closeButton.js.map +1 -0
  143. package/dist/composite/alert/elements/closeButton.mjs +34 -0
  144. package/dist/composite/alert/elements/closeButton.mjs.map +1 -0
  145. package/dist/composite/alert/elements/text.d.ts +3 -13
  146. package/dist/composite/alert/elements/text.d.ts.map +1 -1
  147. package/dist/composite/alert/elements/text.js +60 -81
  148. package/dist/composite/alert/elements/text.js.map +1 -1
  149. package/dist/composite/alert/elements/text.mjs +56 -80
  150. package/dist/composite/alert/elements/text.mjs.map +1 -1
  151. package/dist/composite/alert/globals.d.ts +4 -0
  152. package/dist/composite/alert/globals.d.ts.map +1 -0
  153. package/dist/composite/alert/globals.js +7 -0
  154. package/dist/composite/alert/globals.js.map +1 -0
  155. package/dist/composite/alert/globals.mjs +7 -0
  156. package/dist/composite/alert/globals.mjs.map +1 -0
  157. package/dist/composite/alert/index.d.ts +2 -2
  158. package/dist/composite/alert/index.d.ts.map +1 -1
  159. package/dist/composite/alert/index.js +2 -2
  160. package/dist/composite/alert/index.mjs +4 -4
  161. package/dist/composite/alert/page.d.ts +5 -12
  162. package/dist/composite/alert/page.d.ts.map +1 -1
  163. package/dist/composite/alert/page.js +44 -113
  164. package/dist/composite/alert/page.js.map +1 -1
  165. package/dist/composite/alert/page.mjs +44 -112
  166. package/dist/composite/alert/page.mjs.map +1 -1
  167. package/dist/composite/alert/site.d.ts +5 -11
  168. package/dist/composite/alert/site.d.ts.map +1 -1
  169. package/dist/composite/alert/site.js +60 -109
  170. package/dist/composite/alert/site.js.map +1 -1
  171. package/dist/composite/alert/site.mjs +61 -109
  172. package/dist/composite/alert/site.mjs.map +1 -1
  173. package/dist/composite/banner/promo.js +1 -1
  174. package/dist/composite/banner/promo.js.map +1 -1
  175. package/dist/composite/banner/promo.mjs +1 -1
  176. package/dist/composite/banner/promo.mjs.map +1 -1
  177. package/dist/composite/card/block.d.ts +1 -5
  178. package/dist/composite/card/block.d.ts.map +1 -1
  179. package/dist/composite/card/block.js +7 -5
  180. package/dist/composite/card/block.js.map +1 -1
  181. package/dist/composite/card/block.mjs +7 -5
  182. package/dist/composite/card/block.mjs.map +1 -1
  183. package/dist/composite/card/list.d.ts +1 -5
  184. package/dist/composite/card/list.d.ts.map +1 -1
  185. package/dist/composite/card/list.js +52 -64
  186. package/dist/composite/card/list.js.map +1 -1
  187. package/dist/composite/card/list.mjs +52 -64
  188. package/dist/composite/card/list.mjs.map +1 -1
  189. package/dist/composite/card/overlay/color.d.ts +1 -5
  190. package/dist/composite/card/overlay/color.d.ts.map +1 -1
  191. package/dist/composite/card/overlay/color.js +36 -41
  192. package/dist/composite/card/overlay/color.js.map +1 -1
  193. package/dist/composite/card/overlay/color.mjs +36 -41
  194. package/dist/composite/card/overlay/color.mjs.map +1 -1
  195. package/dist/composite/card/overlay/icon.d.ts +1 -5
  196. package/dist/composite/card/overlay/icon.d.ts.map +1 -1
  197. package/dist/composite/card/overlay/icon.js +27 -31
  198. package/dist/composite/card/overlay/icon.js.map +1 -1
  199. package/dist/composite/card/overlay/icon.mjs +27 -31
  200. package/dist/composite/card/overlay/icon.mjs.map +1 -1
  201. package/dist/composite/card/overlay/image.d.ts +2 -1
  202. package/dist/composite/card/overlay/image.d.ts.map +1 -1
  203. package/dist/composite/card/overlay/image.js +74 -93
  204. package/dist/composite/card/overlay/image.js.map +1 -1
  205. package/dist/composite/card/overlay/image.mjs +73 -93
  206. package/dist/composite/card/overlay/image.mjs.map +1 -1
  207. package/dist/composite/card/video/block.d.ts +1 -9
  208. package/dist/composite/card/video/block.d.ts.map +1 -1
  209. package/dist/composite/card/video/block.js +7 -5
  210. package/dist/composite/card/video/block.js.map +1 -1
  211. package/dist/composite/card/video/block.mjs +7 -5
  212. package/dist/composite/card/video/block.mjs.map +1 -1
  213. package/dist/composite/card/video/short.d.ts +1 -5
  214. package/dist/composite/card/video/short.d.ts.map +1 -1
  215. package/dist/composite/card/video/short.js +16 -21
  216. package/dist/composite/card/video/short.js.map +1 -1
  217. package/dist/composite/card/video/short.mjs +16 -21
  218. package/dist/composite/card/video/short.mjs.map +1 -1
  219. package/dist/composite/carousel/_types.d.ts.map +1 -1
  220. package/dist/composite/carousel/default/index.js +1 -1
  221. package/dist/composite/carousel/default/index.js.map +1 -1
  222. package/dist/composite/carousel/default/index.mjs +1 -1
  223. package/dist/composite/carousel/default/index.mjs.map +1 -1
  224. package/dist/composite/carousel/elements/blocks.js +2 -2
  225. package/dist/composite/carousel/elements/blocks.js.map +1 -1
  226. package/dist/composite/carousel/elements/blocks.mjs +2 -2
  227. package/dist/composite/carousel/elements/blocks.mjs.map +1 -1
  228. package/dist/composite/carousel/elements/full-screen.js +7 -5
  229. package/dist/composite/carousel/elements/full-screen.js.map +1 -1
  230. package/dist/composite/carousel/elements/full-screen.mjs +7 -5
  231. package/dist/composite/carousel/elements/full-screen.mjs.map +1 -1
  232. package/dist/composite/carousel/elements/image.js +2 -2
  233. package/dist/composite/carousel/elements/image.js.map +1 -1
  234. package/dist/composite/carousel/elements/image.mjs +2 -2
  235. package/dist/composite/carousel/elements/image.mjs.map +1 -1
  236. package/dist/composite/carousel/elements/overlay.js +2 -2
  237. package/dist/composite/carousel/elements/overlay.js.map +1 -1
  238. package/dist/composite/carousel/elements/overlay.mjs +2 -2
  239. package/dist/composite/carousel/elements/overlay.mjs.map +1 -1
  240. package/dist/composite/carousel/image/multiple.js +11 -9
  241. package/dist/composite/carousel/image/multiple.js.map +1 -1
  242. package/dist/composite/carousel/image/multiple.mjs +11 -9
  243. package/dist/composite/carousel/image/multiple.mjs.map +1 -1
  244. package/dist/composite/carousel/image/standard.js +10 -8
  245. package/dist/composite/carousel/image/standard.js.map +1 -1
  246. package/dist/composite/carousel/image/standard.mjs +10 -8
  247. package/dist/composite/carousel/image/standard.mjs.map +1 -1
  248. package/dist/composite/carousel/thumbnail/index.js +1 -1
  249. package/dist/composite/carousel/thumbnail/index.js.map +1 -1
  250. package/dist/composite/carousel/thumbnail/index.mjs +1 -1
  251. package/dist/composite/carousel/thumbnail/index.mjs.map +1 -1
  252. package/dist/composite/carousel/wide/_elementModel.d.ts +2 -2
  253. package/dist/composite/carousel/wide/_elementModel.d.ts.map +1 -1
  254. package/dist/composite/carousel/wide/_elementModel.js +20 -7
  255. package/dist/composite/carousel/wide/_elementModel.js.map +1 -1
  256. package/dist/composite/carousel/wide/_elementModel.mjs +20 -7
  257. package/dist/composite/carousel/wide/_elementModel.mjs.map +1 -1
  258. package/dist/composite/carousel/wide/container.d.ts.map +1 -1
  259. package/dist/composite/carousel/wide/container.js +9 -15
  260. package/dist/composite/carousel/wide/container.js.map +1 -1
  261. package/dist/composite/carousel/wide/container.mjs +9 -15
  262. package/dist/composite/carousel/wide/container.mjs.map +1 -1
  263. package/dist/composite/carousel/wide/controls.d.ts +1 -5
  264. package/dist/composite/carousel/wide/controls.d.ts.map +1 -1
  265. package/dist/composite/carousel/wide/controls.js +55 -56
  266. package/dist/composite/carousel/wide/controls.js.map +1 -1
  267. package/dist/composite/carousel/wide/controls.mjs +55 -56
  268. package/dist/composite/carousel/wide/controls.mjs.map +1 -1
  269. package/dist/composite/carousel/wide/frames.d.ts.map +1 -1
  270. package/dist/composite/carousel/wide/frames.js +156 -171
  271. package/dist/composite/carousel/wide/frames.js.map +1 -1
  272. package/dist/composite/carousel/wide/frames.mjs +153 -169
  273. package/dist/composite/carousel/wide/frames.mjs.map +1 -1
  274. package/dist/composite/carousel/wide/index.d.ts +1 -5
  275. package/dist/composite/carousel/wide/index.d.ts.map +1 -1
  276. package/dist/composite/carousel/wide/index.js +23 -17
  277. package/dist/composite/carousel/wide/index.js.map +1 -1
  278. package/dist/composite/carousel/wide/index.mjs +23 -17
  279. package/dist/composite/carousel/wide/index.mjs.map +1 -1
  280. package/dist/composite/footer/elements/main-section/call-to-action.d.ts +2 -2
  281. package/dist/composite/footer/elements/main-section/call-to-action.d.ts.map +1 -1
  282. package/dist/composite/footer/elements/main-section/call-to-action.js +19 -28
  283. package/dist/composite/footer/elements/main-section/call-to-action.js.map +1 -1
  284. package/dist/composite/footer/elements/main-section/call-to-action.mjs +18 -28
  285. package/dist/composite/footer/elements/main-section/call-to-action.mjs.map +1 -1
  286. package/dist/composite/footer/elements/main-section/campaign.d.ts +2 -2
  287. package/dist/composite/footer/elements/main-section/campaign.d.ts.map +1 -1
  288. package/dist/composite/footer/elements/main-section/campaign.js +27 -35
  289. package/dist/composite/footer/elements/main-section/campaign.js.map +1 -1
  290. package/dist/composite/footer/elements/main-section/campaign.mjs +27 -35
  291. package/dist/composite/footer/elements/main-section/campaign.mjs.map +1 -1
  292. package/dist/composite/footer/elements/main-section/index.d.ts +2 -2
  293. package/dist/composite/footer/elements/main-section/index.d.ts.map +1 -1
  294. package/dist/composite/footer/elements/main-section/index.js +38 -50
  295. package/dist/composite/footer/elements/main-section/index.js.map +1 -1
  296. package/dist/composite/footer/elements/main-section/index.mjs +38 -50
  297. package/dist/composite/footer/elements/main-section/index.mjs.map +1 -1
  298. package/dist/composite/footer/elements/main-section/row-links/index.d.ts +2 -2
  299. package/dist/composite/footer/elements/main-section/row-links/index.d.ts.map +1 -1
  300. package/dist/composite/footer/elements/main-section/row-links/index.js +24 -36
  301. package/dist/composite/footer/elements/main-section/row-links/index.js.map +1 -1
  302. package/dist/composite/footer/elements/main-section/row-links/index.mjs +24 -36
  303. package/dist/composite/footer/elements/main-section/row-links/index.mjs.map +1 -1
  304. package/dist/composite/footer/elements/main-section/row-links/link-columns.d.ts +2 -2
  305. package/dist/composite/footer/elements/main-section/row-links/link-columns.d.ts.map +1 -1
  306. package/dist/composite/footer/elements/main-section/row-links/link-columns.js +75 -95
  307. package/dist/composite/footer/elements/main-section/row-links/link-columns.js.map +1 -1
  308. package/dist/composite/footer/elements/main-section/row-links/link-columns.mjs +73 -93
  309. package/dist/composite/footer/elements/main-section/row-links/link-columns.mjs.map +1 -1
  310. package/dist/composite/footer/elements/main-section/row-logo/contact.d.ts +2 -2
  311. package/dist/composite/footer/elements/main-section/row-logo/contact.d.ts.map +1 -1
  312. package/dist/composite/footer/elements/main-section/row-logo/contact.js +88 -98
  313. package/dist/composite/footer/elements/main-section/row-logo/contact.js.map +1 -1
  314. package/dist/composite/footer/elements/main-section/row-logo/contact.mjs +88 -98
  315. package/dist/composite/footer/elements/main-section/row-logo/contact.mjs.map +1 -1
  316. package/dist/composite/footer/elements/main-section/row-logo/index.d.ts +2 -2
  317. package/dist/composite/footer/elements/main-section/row-logo/index.d.ts.map +1 -1
  318. package/dist/composite/footer/elements/main-section/row-logo/index.js +30 -43
  319. package/dist/composite/footer/elements/main-section/row-logo/index.js.map +1 -1
  320. package/dist/composite/footer/elements/main-section/row-logo/index.mjs +30 -43
  321. package/dist/composite/footer/elements/main-section/row-logo/index.mjs.map +1 -1
  322. package/dist/composite/footer/elements/main-section/row-logo/logo.d.ts +2 -2
  323. package/dist/composite/footer/elements/main-section/row-logo/logo.d.ts.map +1 -1
  324. package/dist/composite/footer/elements/main-section/row-logo/logo.js +24 -32
  325. package/dist/composite/footer/elements/main-section/row-logo/logo.js.map +1 -1
  326. package/dist/composite/footer/elements/main-section/row-logo/logo.mjs +24 -32
  327. package/dist/composite/footer/elements/main-section/row-logo/logo.mjs.map +1 -1
  328. package/dist/composite/footer/elements/main-section/social.d.ts +2 -2
  329. package/dist/composite/footer/elements/main-section/social.d.ts.map +1 -1
  330. package/dist/composite/footer/elements/main-section/social.js +74 -97
  331. package/dist/composite/footer/elements/main-section/social.js.map +1 -1
  332. package/dist/composite/footer/elements/main-section/social.mjs +74 -97
  333. package/dist/composite/footer/elements/main-section/social.mjs.map +1 -1
  334. package/dist/composite/footer/elements/utility-section/index.d.ts +1 -5
  335. package/dist/composite/footer/elements/utility-section/index.d.ts.map +1 -1
  336. package/dist/composite/footer/elements/utility-section/index.js +56 -83
  337. package/dist/composite/footer/elements/utility-section/index.js.map +1 -1
  338. package/dist/composite/footer/elements/utility-section/index.mjs +56 -83
  339. package/dist/composite/footer/elements/utility-section/index.mjs.map +1 -1
  340. package/dist/composite/footer/options.d.ts +1 -4
  341. package/dist/composite/footer/options.d.ts.map +1 -1
  342. package/dist/composite/footer/options.js +19 -27
  343. package/dist/composite/footer/options.js.map +1 -1
  344. package/dist/composite/footer/options.mjs +19 -27
  345. package/dist/composite/footer/options.mjs.map +1 -1
  346. package/dist/composite/hero/_types.d.ts.map +1 -1
  347. package/dist/composite/hero/custom/expand.d.ts +3 -2
  348. package/dist/composite/hero/custom/expand.d.ts.map +1 -1
  349. package/dist/composite/hero/custom/expand.js +151 -192
  350. package/dist/composite/hero/custom/expand.js.map +1 -1
  351. package/dist/composite/hero/custom/expand.mjs +145 -187
  352. package/dist/composite/hero/custom/expand.mjs.map +1 -1
  353. package/dist/composite/hero/custom/grid.d.ts +1 -5
  354. package/dist/composite/hero/custom/grid.d.ts.map +1 -1
  355. package/dist/composite/hero/custom/grid.js +122 -171
  356. package/dist/composite/hero/custom/grid.js.map +1 -1
  357. package/dist/composite/hero/custom/grid.mjs +116 -166
  358. package/dist/composite/hero/custom/grid.mjs.map +1 -1
  359. package/dist/composite/hero/custom/video-arrow.d.ts +2 -1
  360. package/dist/composite/hero/custom/video-arrow.d.ts.map +1 -1
  361. package/dist/composite/hero/custom/video-arrow.js +83 -105
  362. package/dist/composite/hero/custom/video-arrow.js.map +1 -1
  363. package/dist/composite/hero/custom/video-arrow.mjs +77 -99
  364. package/dist/composite/hero/custom/video-arrow.mjs.map +1 -1
  365. package/dist/composite/hero/logo.d.ts +1 -5
  366. package/dist/composite/hero/logo.d.ts.map +1 -1
  367. package/dist/composite/hero/logo.js +71 -89
  368. package/dist/composite/hero/logo.js.map +1 -1
  369. package/dist/composite/hero/logo.mjs +68 -87
  370. package/dist/composite/hero/logo.mjs.map +1 -1
  371. package/dist/composite/hero/minimal.d.ts +1 -5
  372. package/dist/composite/hero/minimal.d.ts.map +1 -1
  373. package/dist/composite/hero/minimal.js +67 -86
  374. package/dist/composite/hero/minimal.js.map +1 -1
  375. package/dist/composite/hero/minimal.mjs +63 -83
  376. package/dist/composite/hero/minimal.mjs.map +1 -1
  377. package/dist/composite/hero/overlay.d.ts +1 -5
  378. package/dist/composite/hero/overlay.d.ts.map +1 -1
  379. package/dist/composite/hero/overlay.js +107 -135
  380. package/dist/composite/hero/overlay.js.map +1 -1
  381. package/dist/composite/hero/overlay.mjs +103 -132
  382. package/dist/composite/hero/overlay.mjs.map +1 -1
  383. package/dist/composite/hero/stacked.d.ts +1 -5
  384. package/dist/composite/hero/stacked.d.ts.map +1 -1
  385. package/dist/composite/hero/stacked.js +114 -137
  386. package/dist/composite/hero/stacked.js.map +1 -1
  387. package/dist/composite/hero/stacked.mjs +110 -134
  388. package/dist/composite/hero/stacked.mjs.map +1 -1
  389. package/dist/composite/hero/standard.d.ts +1 -5
  390. package/dist/composite/hero/standard.d.ts.map +1 -1
  391. package/dist/composite/hero/standard.js +103 -116
  392. package/dist/composite/hero/standard.js.map +1 -1
  393. package/dist/composite/hero/standard.mjs +100 -114
  394. package/dist/composite/hero/standard.mjs.map +1 -1
  395. package/dist/composite/layout/box/logo.js +1 -1
  396. package/dist/composite/layout/box/logo.js.map +1 -1
  397. package/dist/composite/layout/box/logo.mjs +1 -1
  398. package/dist/composite/layout/box/logo.mjs.map +1 -1
  399. package/dist/composite/layout/image/expand.js +1 -1
  400. package/dist/composite/layout/image/expand.js.map +1 -1
  401. package/dist/composite/layout/image/expand.mjs +1 -1
  402. package/dist/composite/layout/image/expand.mjs.map +1 -1
  403. package/dist/composite/layout/scroll-top/index.js +1 -1
  404. package/dist/composite/layout/scroll-top/index.js.map +1 -1
  405. package/dist/composite/layout/scroll-top/index.mjs +1 -1
  406. package/dist/composite/layout/scroll-top/index.mjs.map +1 -1
  407. package/dist/composite/layout/section-intro/small.d.ts +2 -1
  408. package/dist/composite/layout/section-intro/small.d.ts.map +1 -1
  409. package/dist/composite/layout/section-intro/small.js +97 -107
  410. package/dist/composite/layout/section-intro/small.js.map +1 -1
  411. package/dist/composite/layout/section-intro/small.mjs +95 -106
  412. package/dist/composite/layout/section-intro/small.mjs.map +1 -1
  413. package/dist/composite/layout/section-intro/wide.d.ts +2 -2
  414. package/dist/composite/layout/section-intro/wide.d.ts.map +1 -1
  415. package/dist/composite/layout/section-intro/wide.js +40 -53
  416. package/dist/composite/layout/section-intro/wide.js.map +1 -1
  417. package/dist/composite/layout/section-intro/wide.mjs +39 -53
  418. package/dist/composite/layout/section-intro/wide.mjs.map +1 -1
  419. package/dist/composite/layout/sticky-columns/index.js +1 -1
  420. package/dist/composite/layout/sticky-columns/index.js.map +1 -1
  421. package/dist/composite/layout/sticky-columns/index.mjs +1 -1
  422. package/dist/composite/layout/sticky-columns/index.mjs.map +1 -1
  423. package/dist/composite/media/elements/caption.js +1 -1
  424. package/dist/composite/media/elements/caption.js.map +1 -1
  425. package/dist/composite/media/elements/caption.mjs +1 -1
  426. package/dist/composite/media/elements/caption.mjs.map +1 -1
  427. package/dist/composite/media/elements/gif.d.ts +3 -2
  428. package/dist/composite/media/elements/gif.d.ts.map +1 -1
  429. package/dist/composite/media/elements/gif.js +25 -27
  430. package/dist/composite/media/elements/gif.js.map +1 -1
  431. package/dist/composite/media/elements/gif.mjs +25 -27
  432. package/dist/composite/media/elements/gif.mjs.map +1 -1
  433. package/dist/composite/media/inline/caption.js +2 -2
  434. package/dist/composite/media/inline/caption.js.map +1 -1
  435. package/dist/composite/media/inline/caption.mjs +2 -2
  436. package/dist/composite/media/inline/caption.mjs.map +1 -1
  437. package/dist/composite/media/inline/wrapped.js +2 -2
  438. package/dist/composite/media/inline/wrapped.js.map +1 -1
  439. package/dist/composite/media/inline/wrapped.mjs +2 -2
  440. package/dist/composite/media/inline/wrapped.mjs.map +1 -1
  441. package/dist/composite/navigation/elements/breadcrumb/index.js +1 -1
  442. package/dist/composite/navigation/elements/breadcrumb/index.js.map +1 -1
  443. package/dist/composite/navigation/elements/breadcrumb/index.mjs +1 -1
  444. package/dist/composite/navigation/elements/breadcrumb/index.mjs.map +1 -1
  445. package/dist/composite/navigation/elements/drawer/index.js +1 -1
  446. package/dist/composite/navigation/elements/drawer/index.js.map +1 -1
  447. package/dist/composite/navigation/elements/drawer/index.mjs +1 -1
  448. package/dist/composite/navigation/elements/drawer/index.mjs.map +1 -1
  449. package/dist/composite/navigation/elements/item/index.js +1 -1
  450. package/dist/composite/navigation/elements/item/index.js.map +1 -1
  451. package/dist/composite/navigation/elements/item/index.mjs +1 -1
  452. package/dist/composite/navigation/elements/item/index.mjs.map +1 -1
  453. package/dist/composite/navigation/elements/menu-button/index.js +1 -1
  454. package/dist/composite/navigation/elements/menu-button/index.js.map +1 -1
  455. package/dist/composite/navigation/elements/menu-button/index.mjs +1 -1
  456. package/dist/composite/navigation/elements/menu-button/index.mjs.map +1 -1
  457. package/dist/composite/navigation/elements/slider/action.js +1 -1
  458. package/dist/composite/navigation/elements/slider/action.js.map +1 -1
  459. package/dist/composite/navigation/elements/slider/action.mjs +1 -1
  460. package/dist/composite/navigation/elements/slider/action.mjs.map +1 -1
  461. package/dist/composite/navigation/elements/slider/index.js +1 -1
  462. package/dist/composite/navigation/elements/slider/index.js.map +1 -1
  463. package/dist/composite/navigation/elements/slider/index.mjs +1 -1
  464. package/dist/composite/navigation/elements/slider/index.mjs.map +1 -1
  465. package/dist/composite/navigation/elements/slider/slide-first.js +1 -1
  466. package/dist/composite/navigation/elements/slider/slide-first.js.map +1 -1
  467. package/dist/composite/navigation/elements/slider/slide-first.mjs +1 -1
  468. package/dist/composite/navigation/elements/slider/slide-first.mjs.map +1 -1
  469. package/dist/composite/navigation/elements/slider/slides.js +1 -1
  470. package/dist/composite/navigation/elements/slider/slides.js.map +1 -1
  471. package/dist/composite/navigation/elements/slider/slides.mjs +1 -1
  472. package/dist/composite/navigation/elements/slider/slides.mjs.map +1 -1
  473. package/dist/composite/navigation/header.js +1 -1
  474. package/dist/composite/navigation/header.js.map +1 -1
  475. package/dist/composite/navigation/header.mjs +1 -1
  476. package/dist/composite/navigation/header.mjs.map +1 -1
  477. package/dist/composite/navigation/utility/alert.js +8 -4
  478. package/dist/composite/navigation/utility/alert.js.map +1 -1
  479. package/dist/composite/navigation/utility/alert.mjs +8 -4
  480. package/dist/composite/navigation/utility/alert.mjs.map +1 -1
  481. package/dist/composite/navigation/utility/index.d.ts.map +1 -1
  482. package/dist/composite/navigation/utility/index.js +90 -13
  483. package/dist/composite/navigation/utility/index.js.map +1 -1
  484. package/dist/composite/navigation/utility/index.mjs +90 -13
  485. package/dist/composite/navigation/utility/index.mjs.map +1 -1
  486. package/dist/composite/navigation/utility/search.js +1 -1
  487. package/dist/composite/navigation/utility/search.js.map +1 -1
  488. package/dist/composite/navigation/utility/search.mjs +1 -1
  489. package/dist/composite/navigation/utility/search.mjs.map +1 -1
  490. package/dist/composite/pathway/_common.d.ts +4 -20
  491. package/dist/composite/pathway/_common.d.ts.map +1 -1
  492. package/dist/composite/pathway/_common.js +62 -64
  493. package/dist/composite/pathway/_common.js.map +1 -1
  494. package/dist/composite/pathway/_common.mjs +56 -60
  495. package/dist/composite/pathway/_common.mjs.map +1 -1
  496. package/dist/composite/pathway/hero.d.ts +1 -5
  497. package/dist/composite/pathway/hero.d.ts.map +1 -1
  498. package/dist/composite/pathway/hero.js +119 -140
  499. package/dist/composite/pathway/hero.js.map +1 -1
  500. package/dist/composite/pathway/hero.mjs +113 -135
  501. package/dist/composite/pathway/hero.mjs.map +1 -1
  502. package/dist/composite/pathway/highlight.d.ts +1 -5
  503. package/dist/composite/pathway/highlight.d.ts.map +1 -1
  504. package/dist/composite/pathway/highlight.js +99 -129
  505. package/dist/composite/pathway/highlight.js.map +1 -1
  506. package/dist/composite/pathway/highlight.mjs +98 -129
  507. package/dist/composite/pathway/highlight.mjs.map +1 -1
  508. package/dist/composite/pathway/overlay.d.ts +2 -1
  509. package/dist/composite/pathway/overlay.d.ts.map +1 -1
  510. package/dist/composite/pathway/overlay.js +125 -153
  511. package/dist/composite/pathway/overlay.js.map +1 -1
  512. package/dist/composite/pathway/overlay.mjs +122 -151
  513. package/dist/composite/pathway/overlay.mjs.map +1 -1
  514. package/dist/composite/pathway/standard.d.ts +2 -1
  515. package/dist/composite/pathway/standard.d.ts.map +1 -1
  516. package/dist/composite/pathway/standard.js +96 -123
  517. package/dist/composite/pathway/standard.js.map +1 -1
  518. package/dist/composite/pathway/standard.mjs +95 -123
  519. package/dist/composite/pathway/standard.mjs.map +1 -1
  520. package/dist/composite/pathway/sticky.d.ts +1 -5
  521. package/dist/composite/pathway/sticky.d.ts.map +1 -1
  522. package/dist/composite/pathway/sticky.js +91 -116
  523. package/dist/composite/pathway/sticky.js.map +1 -1
  524. package/dist/composite/pathway/sticky.mjs +88 -114
  525. package/dist/composite/pathway/sticky.mjs.map +1 -1
  526. package/dist/composite/person/bio/full.d.ts +2 -5
  527. package/dist/composite/person/bio/full.d.ts.map +1 -1
  528. package/dist/composite/person/bio/full.js +53 -57
  529. package/dist/composite/person/bio/full.js.map +1 -1
  530. package/dist/composite/person/bio/full.mjs +52 -57
  531. package/dist/composite/person/bio/full.mjs.map +1 -1
  532. package/dist/composite/person/bio/small.d.ts +2 -5
  533. package/dist/composite/person/bio/small.d.ts.map +1 -1
  534. package/dist/composite/person/bio/small.js +85 -98
  535. package/dist/composite/person/bio/small.js.map +1 -1
  536. package/dist/composite/person/bio/small.mjs +84 -98
  537. package/dist/composite/person/bio/small.mjs.map +1 -1
  538. package/dist/composite/person/block.d.ts +2 -5
  539. package/dist/composite/person/block.d.ts.map +1 -1
  540. package/dist/composite/person/block.js +34 -42
  541. package/dist/composite/person/block.js.map +1 -1
  542. package/dist/composite/person/block.mjs +34 -42
  543. package/dist/composite/person/block.mjs.map +1 -1
  544. package/dist/composite/person/hero.d.ts +2 -5
  545. package/dist/composite/person/hero.d.ts.map +1 -1
  546. package/dist/composite/person/hero.js +160 -220
  547. package/dist/composite/person/hero.js.map +1 -1
  548. package/dist/composite/person/hero.mjs +159 -220
  549. package/dist/composite/person/hero.mjs.map +1 -1
  550. package/dist/composite/person/list.d.ts +2 -5
  551. package/dist/composite/person/list.d.ts.map +1 -1
  552. package/dist/composite/person/list.js +19 -19
  553. package/dist/composite/person/list.js.map +1 -1
  554. package/dist/composite/person/list.mjs +19 -19
  555. package/dist/composite/person/list.mjs.map +1 -1
  556. package/dist/composite/person/tabular.d.ts +2 -5
  557. package/dist/composite/person/tabular.d.ts.map +1 -1
  558. package/dist/composite/person/tabular.js +40 -36
  559. package/dist/composite/person/tabular.js.map +1 -1
  560. package/dist/composite/person/tabular.mjs +38 -36
  561. package/dist/composite/person/tabular.mjs.map +1 -1
  562. package/dist/composite/quote/elements/action.d.ts +1 -5
  563. package/dist/composite/quote/elements/action.d.ts.map +1 -1
  564. package/dist/composite/quote/elements/action.js +13 -17
  565. package/dist/composite/quote/elements/action.js.map +1 -1
  566. package/dist/composite/quote/elements/action.mjs +13 -17
  567. package/dist/composite/quote/elements/action.mjs.map +1 -1
  568. package/dist/composite/quote/elements/icon.d.ts +1 -5
  569. package/dist/composite/quote/elements/icon.d.ts.map +1 -1
  570. package/dist/composite/quote/elements/icon.js +37 -40
  571. package/dist/composite/quote/elements/icon.js.map +1 -1
  572. package/dist/composite/quote/elements/icon.mjs +37 -40
  573. package/dist/composite/quote/elements/icon.mjs.map +1 -1
  574. package/dist/composite/quote/elements/image.d.ts +1 -5
  575. package/dist/composite/quote/elements/image.d.ts.map +1 -1
  576. package/dist/composite/quote/elements/image.js +27 -35
  577. package/dist/composite/quote/elements/image.js.map +1 -1
  578. package/dist/composite/quote/elements/image.mjs +27 -35
  579. package/dist/composite/quote/elements/image.mjs.map +1 -1
  580. package/dist/composite/quote/elements/quote.d.ts +1 -5
  581. package/dist/composite/quote/elements/quote.d.ts.map +1 -1
  582. package/dist/composite/quote/elements/quote.js +37 -48
  583. package/dist/composite/quote/elements/quote.js.map +1 -1
  584. package/dist/composite/quote/elements/quote.mjs +35 -46
  585. package/dist/composite/quote/elements/quote.mjs.map +1 -1
  586. package/dist/composite/quote/elements/text.d.ts +1 -5
  587. package/dist/composite/quote/elements/text.d.ts.map +1 -1
  588. package/dist/composite/quote/elements/text.js +60 -73
  589. package/dist/composite/quote/elements/text.js.map +1 -1
  590. package/dist/composite/quote/elements/text.mjs +60 -73
  591. package/dist/composite/quote/elements/text.mjs.map +1 -1
  592. package/dist/composite/quote/featured.d.ts +2 -1
  593. package/dist/composite/quote/featured.d.ts.map +1 -1
  594. package/dist/composite/quote/featured.js +102 -135
  595. package/dist/composite/quote/featured.js.map +1 -1
  596. package/dist/composite/quote/featured.mjs +102 -135
  597. package/dist/composite/quote/featured.mjs.map +1 -1
  598. package/dist/composite/quote/helper/animation.d.ts +2 -2
  599. package/dist/composite/quote/helper/animation.d.ts.map +1 -1
  600. package/dist/composite/quote/helper/animation.js.map +1 -1
  601. package/dist/composite/quote/helper/animation.mjs.map +1 -1
  602. package/dist/composite/quote/inline.d.ts +2 -1
  603. package/dist/composite/quote/inline.d.ts.map +1 -1
  604. package/dist/composite/quote/inline.js +29 -45
  605. package/dist/composite/quote/inline.js.map +1 -1
  606. package/dist/composite/quote/inline.mjs +29 -45
  607. package/dist/composite/quote/inline.mjs.map +1 -1
  608. package/dist/composite/quote/statement.d.ts +1 -5
  609. package/dist/composite/quote/statement.d.ts.map +1 -1
  610. package/dist/composite/slider/events.js +1 -1
  611. package/dist/composite/slider/events.js.map +1 -1
  612. package/dist/composite/slider/events.mjs +1 -1
  613. package/dist/composite/slider/events.mjs.map +1 -1
  614. package/dist/composite/social/sharing.js +1 -1
  615. package/dist/composite/social/sharing.js.map +1 -1
  616. package/dist/composite/social/sharing.mjs +1 -1
  617. package/dist/composite/social/sharing.mjs.map +1 -1
  618. package/dist/composite/tabs/standard.d.ts.map +1 -1
  619. package/dist/composite/tabs/standard.js +3 -2
  620. package/dist/composite/tabs/standard.js.map +1 -1
  621. package/dist/composite/tabs/standard.mjs +3 -2
  622. package/dist/composite/tabs/standard.mjs.map +1 -1
  623. package/dist/index.d.ts +0 -1
  624. package/dist/index.d.ts.map +1 -1
  625. package/dist/index.js +0 -2
  626. package/dist/index.js.map +1 -1
  627. package/dist/index.mjs +1 -3
  628. package/dist/index.mjs.map +1 -1
  629. package/dist/layout/image.js +1 -1
  630. package/dist/layout/image.js.map +1 -1
  631. package/dist/layout/image.mjs +1 -1
  632. package/dist/layout/image.mjs.map +1 -1
  633. package/package.json +10 -9
  634. package/dist/model/elements/actions.d.ts +0 -62
  635. package/dist/model/elements/actions.d.ts.map +0 -1
  636. package/dist/model/elements/actions.js +0 -71
  637. package/dist/model/elements/actions.js.map +0 -1
  638. package/dist/model/elements/actions.mjs +0 -54
  639. package/dist/model/elements/actions.mjs.map +0 -1
  640. package/dist/model/elements/assets.d.ts +0 -30
  641. package/dist/model/elements/assets.d.ts.map +0 -1
  642. package/dist/model/elements/assets.js +0 -42
  643. package/dist/model/elements/assets.js.map +0 -1
  644. package/dist/model/elements/assets.mjs +0 -25
  645. package/dist/model/elements/assets.mjs.map +0 -1
  646. package/dist/model/elements/buttons.d.ts +0 -12
  647. package/dist/model/elements/buttons.d.ts.map +0 -1
  648. package/dist/model/elements/buttons.js +0 -26
  649. package/dist/model/elements/buttons.js.map +0 -1
  650. package/dist/model/elements/buttons.mjs +0 -9
  651. package/dist/model/elements/buttons.mjs.map +0 -1
  652. package/dist/model/elements/event.d.ts +0 -22
  653. package/dist/model/elements/event.d.ts.map +0 -1
  654. package/dist/model/elements/event.js +0 -30
  655. package/dist/model/elements/event.js.map +0 -1
  656. package/dist/model/elements/event.mjs +0 -13
  657. package/dist/model/elements/event.mjs.map +0 -1
  658. package/dist/model/elements/headline.d.ts +0 -67
  659. package/dist/model/elements/headline.d.ts.map +0 -1
  660. package/dist/model/elements/headline.js +0 -74
  661. package/dist/model/elements/headline.js.map +0 -1
  662. package/dist/model/elements/headline.mjs +0 -57
  663. package/dist/model/elements/headline.mjs.map +0 -1
  664. package/dist/model/elements/index.d.ts +0 -34
  665. package/dist/model/elements/index.d.ts.map +0 -1
  666. package/dist/model/elements/index.js +0 -37
  667. package/dist/model/elements/index.js.map +0 -1
  668. package/dist/model/elements/index.mjs +0 -37
  669. package/dist/model/elements/index.mjs.map +0 -1
  670. package/dist/model/elements/layout.d.ts +0 -64
  671. package/dist/model/elements/layout.d.ts.map +0 -1
  672. package/dist/model/elements/layout.js +0 -68
  673. package/dist/model/elements/layout.js.map +0 -1
  674. package/dist/model/elements/layout.mjs +0 -51
  675. package/dist/model/elements/layout.mjs.map +0 -1
  676. package/dist/model/elements/rich-text.d.ts +0 -27
  677. package/dist/model/elements/rich-text.d.ts.map +0 -1
  678. package/dist/model/elements/rich-text.js +0 -68
  679. package/dist/model/elements/rich-text.js.map +0 -1
  680. package/dist/model/elements/rich-text.mjs +0 -51
  681. package/dist/model/elements/rich-text.mjs.map +0 -1
  682. package/dist/model/elements/text.d.ts +0 -22
  683. package/dist/model/elements/text.d.ts.map +0 -1
  684. package/dist/model/elements/text.js +0 -30
  685. package/dist/model/elements/text.js.map +0 -1
  686. package/dist/model/elements/text.mjs +0 -13
  687. package/dist/model/elements/text.mjs.map +0 -1
  688. package/dist/model/index.d.ts +0 -2
  689. package/dist/model/index.d.ts.map +0 -1
  690. package/dist/model/modifiers/_types.d.ts +0 -41
  691. package/dist/model/modifiers/_types.d.ts.map +0 -1
  692. package/dist/model/modifiers/index.d.ts +0 -44
  693. package/dist/model/modifiers/index.d.ts.map +0 -1
  694. package/dist/model/modifiers/index.js +0 -136
  695. package/dist/model/modifiers/index.js.map +0 -1
  696. package/dist/model/modifiers/index.mjs +0 -136
  697. package/dist/model/modifiers/index.mjs.map +0 -1
  698. package/dist/model/modifiers/style.d.ts +0 -19
  699. package/dist/model/modifiers/style.d.ts.map +0 -1
  700. package/dist/model/modifiers/style.js +0 -122
  701. package/dist/model/modifiers/style.js.map +0 -1
  702. package/dist/model/modifiers/style.mjs +0 -105
  703. package/dist/model/modifiers/style.mjs.map +0 -1
  704. package/dist/model.d.ts +0 -2
  705. package/dist/model.js +0 -5
  706. package/dist/model.js.map +0 -1
  707. package/dist/model.mjs +0 -5
  708. package/dist/model.mjs.map +0 -1
@@ -1,29 +1,33 @@
1
1
  "use strict";
2
- const token = require("@universityofmaryland/web-styles-library/token");
2
+ const webBuilderLibrary = require("@universityofmaryland/web-builder-library");
3
+ const token = require("@universityofmaryland/web-token-library");
3
4
  require("@universityofmaryland/web-styles-library/element");
5
+ require("@universityofmaryland/web-styles-library/layout");
6
+ require("@universityofmaryland/web-styles-library/animation");
7
+ require("@universityofmaryland/web-styles-library/typography");
4
8
  require("@universityofmaryland/web-utilities-library/media");
5
9
  require("@universityofmaryland/web-utilities-library/dom");
6
10
  require("@universityofmaryland/web-icons-library/controls");
7
11
  require("@universityofmaryland/web-icons-library/communication");
8
12
  require("@universityofmaryland/web-icons-library/files");
9
13
  require("@universityofmaryland/web-icons-library/brand");
10
- const index$1 = require("../../../model/elements/index.js");
11
14
  require("@universityofmaryland/web-icons-library/arrows");
12
15
  require("../../../atomic/animations/actions/indicator.js");
13
16
  require("../../../atomic/animations/brand/chevron-scroll.js");
14
17
  require("../../../atomic/animations/brand/card-stack.js");
15
18
  const background = require("../../../atomic/assets/image/background.js");
19
+ require("@universityofmaryland/web-styles-library");
16
20
  require("@universityofmaryland/web-utilities-library/performance");
17
21
  require("@universityofmaryland/web-utilities-library/accessibility");
18
22
  require("@universityofmaryland/web-icons-library/location");
19
23
  require("@universityofmaryland/web-icons-library/calendar");
24
+ require("@universityofmaryland/web-utilities-library/theme");
20
25
  require("../../../atomic/layout/block/stacked.js");
21
26
  require("../../../atomic/layout/overlay/modal.js");
22
27
  require("../../../atomic/layout/person/columns.js");
23
28
  require("@universityofmaryland/web-icons-library/social");
24
29
  require("../../../atomic/text-lockup/date.js");
25
30
  require("../../../atomic/text-lockup/small.js");
26
- require("@universityofmaryland/web-styles-library/typography");
27
31
  const container = require("./container.js");
28
32
  function _interopNamespaceDefault(e) {
29
33
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -196,23 +200,25 @@ const index = (props) => {
196
200
  const direction = state.currentIndex > index2 ? "reverse" : "advance";
197
201
  animateSlides(refs, state, index2, direction);
198
202
  });
199
- const composite = index$1.createDiv({
200
- className: "umd-carousel-wide",
201
- children: [container$1],
202
- attributes: [
203
- ...title ? [{ title }] : [{ title: "Animated Image Carousel" }]
204
- ],
205
- elementStyles: {
206
- element: {
207
- container: "umd-carousel-wide / inline-size",
208
- display: "block",
209
- position: "relative",
210
- [`@media (${token__namespace.media.queries.large.min})`]: {
211
- paddingBottom: 0
212
- }
203
+ const builder = new webBuilderLibrary.ElementBuilder();
204
+ builder.withClassName("umd-carousel-wide");
205
+ builder.withChild(container$1);
206
+ if (title) {
207
+ builder.withAttribute("title", title);
208
+ } else {
209
+ builder.withAttribute("title", "Animated Image Carousel");
210
+ }
211
+ builder.withStyles({
212
+ element: {
213
+ container: "umd-carousel-wide / inline-size",
214
+ display: "block",
215
+ position: "relative",
216
+ [`@media (${token__namespace.media.queries.large.min})`]: {
217
+ paddingBottom: 0
213
218
  }
214
219
  }
215
220
  });
221
+ const composite = builder.build();
216
222
  const refs = {
217
223
  container: composite.element,
218
224
  ...container$1.refs
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../source/composite/carousel/wide/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { assets } from 'atomic';\nimport { ElementModel } from 'model';\nimport { createContainer } from './container';\nimport { type CarouselWideProps } from '../_types';\n\ninterface CarouselState {\n currentIndex: number;\n isAnimating: boolean;\n slides: CarouselWideProps['slides'];\n}\n\ninterface CarouselRefs {\n container: HTMLElement;\n slidesContainer: HTMLDivElement;\n slides: HTMLElement[];\n previews: {\n left: HTMLElement;\n right: HTMLElement;\n };\n controls: {\n prev: HTMLButtonElement;\n next: HTMLButtonElement;\n };\n indicator: {\n element: HTMLElement;\n position: (index: number) => void;\n };\n info: HTMLParagraphElement;\n}\n\n// Constants\nconst ANIMATION_TIME: 500 = 500;\nconst PREVIEW_ANIMATION_TIME: 440 = 440; // 60ms faster than main animation\n\n// Pure animation functions\nconst getAdjacentIndices = (\n currentIndex: number,\n totalSlides: number,\n): { leftIndex: number; rightIndex: number } => {\n const lastIndex = totalSlides - 1;\n return {\n leftIndex: currentIndex === 0 ? lastIndex : currentIndex - 1,\n rightIndex: currentIndex === lastIndex ? 0 : currentIndex + 1,\n };\n};\n\nconst positionSlideOffScreen = (\n slide: HTMLElement,\n direction: 'left' | 'right',\n): void => {\n slide.setAttribute('data-direction', direction);\n slide.setAttribute('data-animating', 'true');\n slide.offsetHeight; // Force reflow\n};\n\nconst activateSlideTransition = (\n slide: HTMLElement,\n direction?: 'left' | 'right',\n): void => {\n if (direction) {\n slide.setAttribute('data-direction', direction);\n } else {\n slide.removeAttribute('data-direction');\n slide.setAttribute('data-active', 'true');\n }\n};\n\nconst cleanupSlideTransition = (slide: HTMLElement, isNew: boolean): void => {\n if (isNew) {\n slide.removeAttribute('data-animating');\n } else {\n slide.removeAttribute('data-active');\n slide.removeAttribute('data-direction');\n slide.removeAttribute('data-content-visible');\n }\n};\n\n// Pure preview functions\nconst createPreviewElement = (\n slide: CarouselWideProps['slides'][0],\n): HTMLElement => {\n const imageCopy = slide.image.cloneNode(true) as HTMLImageElement;\n const preview = assets.image.background({\n element: imageCopy,\n isScaled: true,\n });\n\n preview.element.style.transition = `transform ${PREVIEW_ANIMATION_TIME}ms ease-in-out`;\n return preview.element;\n};\n\nconst clearPreviewContainer = (container: HTMLElement): void => {\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n};\n\nconst appendPreviewWithAnimation = (\n container: HTMLElement,\n preview: HTMLElement,\n animationDirection: 'reverse' | 'advance',\n): void => {\n // Position off-screen initially based on animation direction\n // For advance (forward), new content comes from right\n // For reverse (backward), new content comes from left\n preview.style.transform =\n animationDirection === 'advance' ? 'translateX(100%)' : 'translateX(-100%)';\n\n container.appendChild(preview);\n\n // Trigger animation to slide in\n requestAnimationFrame(() => {\n preview.style.transform = 'translateX(0)';\n });\n};\n\nconst animatePreviewOut = (\n preview: HTMLElement,\n animationDirection: 'reverse' | 'advance',\n): Promise<void> => {\n return new Promise((resolve) => {\n // For advance (forward), old content exits to left\n // For reverse (backward), old content exits to right\n preview.style.transform =\n animationDirection === 'advance'\n ? 'translateX(-100%)'\n : 'translateX(100%)';\n\n setTimeout(() => {\n if (preview.parentNode) {\n preview.parentNode.removeChild(preview);\n }\n resolve();\n }, PREVIEW_ANIMATION_TIME);\n });\n};\n\n// State management\nconst updatePreviews = (\n refs: CarouselRefs,\n state: CarouselState,\n direction?: 'reverse' | 'advance',\n): void => {\n const { currentIndex, slides } = state;\n const { leftIndex, rightIndex } = getAdjacentIndices(\n currentIndex,\n slides.length,\n );\n\n // Handle left preview\n if (slides[leftIndex]) {\n const existingLeft = refs.previews.left.firstElementChild as HTMLElement;\n if (existingLeft && direction) {\n animatePreviewOut(existingLeft, direction);\n } else if (existingLeft) {\n clearPreviewContainer(refs.previews.left);\n }\n\n const leftPreview = createPreviewElement(slides[leftIndex]);\n if (direction) {\n appendPreviewWithAnimation(refs.previews.left, leftPreview, direction);\n } else {\n refs.previews.left.appendChild(leftPreview);\n }\n }\n\n // Handle right preview\n if (slides[rightIndex]) {\n const existingRight = refs.previews.right.firstElementChild as HTMLElement;\n if (existingRight && direction) {\n animatePreviewOut(existingRight, direction);\n } else if (existingRight) {\n clearPreviewContainer(refs.previews.right);\n }\n\n const rightPreview = createPreviewElement(slides[rightIndex]);\n if (direction) {\n appendPreviewWithAnimation(refs.previews.right, rightPreview, direction);\n } else {\n refs.previews.right.appendChild(rightPreview);\n }\n }\n};\n\nconst updateInfo = (refs: CarouselRefs, newIndex: number) => {\n refs.info.textContent = `Slide ${newIndex + 1} Selected`;\n};\n\nconst animateSlides = (\n refs: CarouselRefs,\n state: CarouselState,\n newIndex: number,\n direction: 'reverse' | 'advance',\n) => {\n if (state.isAnimating || state.currentIndex === newIndex) return;\n state.isAnimating = true;\n\n const currentSlide = refs.slides[state.currentIndex];\n const newSlide = refs.slides[newIndex];\n\n // Disable controls during animation\n refs.controls.prev.setAttribute('disabled', '');\n refs.controls.next.setAttribute('disabled', '');\n\n // Position new slide off-screen\n const newSlideDirection = direction === 'reverse' ? 'left' : 'right';\n positionSlideOffScreen(newSlide, newSlideDirection);\n\n // Update indicator position\n refs.indicator.position(newIndex);\n\n // Start synchronized animations for all frames\n requestAnimationFrame(() => {\n // Animate main slides\n activateSlideTransition(newSlide);\n const currentSlideDirection = direction === 'reverse' ? 'right' : 'left';\n activateSlideTransition(currentSlide, currentSlideDirection);\n\n // Update previews with animation (this will animate in sync)\n const nextState = { ...state, currentIndex: newIndex };\n updatePreviews(refs, nextState, direction);\n });\n\n // Clean up after animation\n setTimeout(() => {\n // Clean up main slides\n cleanupSlideTransition(currentSlide, false);\n cleanupSlideTransition(newSlide, true);\n\n // Show content with fade-in animation\n newSlide.setAttribute('data-content-visible', 'true');\n\n // Re-enable controls\n refs.controls.prev.removeAttribute('disabled');\n refs.controls.next.removeAttribute('disabled');\n\n // Update state\n state.currentIndex = newIndex;\n state.isAnimating = false;\n\n // Update accessibility info\n updateInfo(refs, newIndex);\n }, ANIMATION_TIME);\n};\n\nconst setupSliderControls = (refs: CarouselRefs, state: CarouselState) => {\n const lastIndex = state.slides.length - 1;\n\n refs.controls.prev.addEventListener('click', () => {\n if (state.isAnimating) return;\n\n const newIndex =\n state.currentIndex === lastIndex ? 0 : state.currentIndex + 1;\n animateSlides(refs, state, newIndex, 'advance');\n });\n\n refs.controls.next.addEventListener('click', () => {\n if (state.isAnimating) return;\n\n const newIndex =\n state.currentIndex === 0 ? lastIndex : state.currentIndex - 1;\n animateSlides(refs, state, newIndex, 'reverse');\n });\n};\n\n// Main component\nexport default (props: CarouselWideProps) => {\n const { title } = props;\n\n // Initialize state early\n const state: CarouselState = {\n currentIndex: 0,\n isAnimating: false,\n slides: props.slides,\n };\n\n const container = createContainer(props, (index: number) => {\n if (state.isAnimating || state.currentIndex === index) return;\n\n const direction = state.currentIndex > index ? 'reverse' : 'advance';\n animateSlides(refs, state, index, direction);\n });\n\n const composite = ElementModel.createDiv({\n className: 'umd-carousel-wide',\n children: [container],\n attributes: [\n ...(title ? [{ title }] : [{ title: 'Animated Image Carousel' }]),\n ],\n elementStyles: {\n element: {\n container: 'umd-carousel-wide / inline-size',\n display: 'block',\n position: 'relative',\n\n [`@media (${token.media.queries.large.min})`]: {\n paddingBottom: 0,\n },\n },\n },\n });\n\n // Initialize refs\n const refs: CarouselRefs = {\n container: composite.element,\n ...container.refs,\n };\n\n // Set up event handlers after DOM is ready\n requestAnimationFrame(() => {\n setupSliderControls(refs, state);\n updatePreviews(refs, state); // Initial preview setup without animation\n });\n\n return composite;\n};\n"],"names":["assets.image.background","container","createContainer","index","ElementModel.createDiv","token"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../source/composite/carousel/wide/index.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport { assets } from 'atomic';\nimport { createContainer } from './container';\nimport { type CarouselWideProps } from '../_types';\n\ninterface CarouselState {\n currentIndex: number;\n isAnimating: boolean;\n slides: CarouselWideProps['slides'];\n}\n\ninterface CarouselRefs {\n container: HTMLElement;\n slidesContainer: HTMLDivElement;\n slides: HTMLElement[];\n previews: {\n left: HTMLElement;\n right: HTMLElement;\n };\n controls: {\n prev: HTMLButtonElement;\n next: HTMLButtonElement;\n };\n indicator: {\n element: HTMLElement;\n position: (index: number) => void;\n };\n info: HTMLParagraphElement;\n}\n\n// Constants\nconst ANIMATION_TIME: 500 = 500;\nconst PREVIEW_ANIMATION_TIME: 440 = 440; // 60ms faster than main animation\n\n// Pure animation functions\nconst getAdjacentIndices = (\n currentIndex: number,\n totalSlides: number,\n): { leftIndex: number; rightIndex: number } => {\n const lastIndex = totalSlides - 1;\n return {\n leftIndex: currentIndex === 0 ? lastIndex : currentIndex - 1,\n rightIndex: currentIndex === lastIndex ? 0 : currentIndex + 1,\n };\n};\n\nconst positionSlideOffScreen = (\n slide: HTMLElement,\n direction: 'left' | 'right',\n): void => {\n slide.setAttribute('data-direction', direction);\n slide.setAttribute('data-animating', 'true');\n slide.offsetHeight; // Force reflow\n};\n\nconst activateSlideTransition = (\n slide: HTMLElement,\n direction?: 'left' | 'right',\n): void => {\n if (direction) {\n slide.setAttribute('data-direction', direction);\n } else {\n slide.removeAttribute('data-direction');\n slide.setAttribute('data-active', 'true');\n }\n};\n\nconst cleanupSlideTransition = (slide: HTMLElement, isNew: boolean): void => {\n if (isNew) {\n slide.removeAttribute('data-animating');\n } else {\n slide.removeAttribute('data-active');\n slide.removeAttribute('data-direction');\n slide.removeAttribute('data-content-visible');\n }\n};\n\n// Pure preview functions\nconst createPreviewElement = (\n slide: CarouselWideProps['slides'][0],\n): HTMLElement => {\n const imageCopy = slide.image.cloneNode(true) as HTMLImageElement;\n const preview = assets.image.background({\n element: imageCopy,\n isScaled: true,\n });\n\n preview.element.style.transition = `transform ${PREVIEW_ANIMATION_TIME}ms ease-in-out`;\n return preview.element;\n};\n\nconst clearPreviewContainer = (container: HTMLElement): void => {\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n};\n\nconst appendPreviewWithAnimation = (\n container: HTMLElement,\n preview: HTMLElement,\n animationDirection: 'reverse' | 'advance',\n): void => {\n // Position off-screen initially based on animation direction\n // For advance (forward), new content comes from right\n // For reverse (backward), new content comes from left\n preview.style.transform =\n animationDirection === 'advance' ? 'translateX(100%)' : 'translateX(-100%)';\n\n container.appendChild(preview);\n\n // Trigger animation to slide in\n requestAnimationFrame(() => {\n preview.style.transform = 'translateX(0)';\n });\n};\n\nconst animatePreviewOut = (\n preview: HTMLElement,\n animationDirection: 'reverse' | 'advance',\n): Promise<void> => {\n return new Promise((resolve) => {\n // For advance (forward), old content exits to left\n // For reverse (backward), old content exits to right\n preview.style.transform =\n animationDirection === 'advance'\n ? 'translateX(-100%)'\n : 'translateX(100%)';\n\n setTimeout(() => {\n if (preview.parentNode) {\n preview.parentNode.removeChild(preview);\n }\n resolve();\n }, PREVIEW_ANIMATION_TIME);\n });\n};\n\n// State management\nconst updatePreviews = (\n refs: CarouselRefs,\n state: CarouselState,\n direction?: 'reverse' | 'advance',\n): void => {\n const { currentIndex, slides } = state;\n const { leftIndex, rightIndex } = getAdjacentIndices(\n currentIndex,\n slides.length,\n );\n\n // Handle left preview\n if (slides[leftIndex]) {\n const existingLeft = refs.previews.left.firstElementChild as HTMLElement;\n if (existingLeft && direction) {\n animatePreviewOut(existingLeft, direction);\n } else if (existingLeft) {\n clearPreviewContainer(refs.previews.left);\n }\n\n const leftPreview = createPreviewElement(slides[leftIndex]);\n if (direction) {\n appendPreviewWithAnimation(refs.previews.left, leftPreview, direction);\n } else {\n refs.previews.left.appendChild(leftPreview);\n }\n }\n\n // Handle right preview\n if (slides[rightIndex]) {\n const existingRight = refs.previews.right.firstElementChild as HTMLElement;\n if (existingRight && direction) {\n animatePreviewOut(existingRight, direction);\n } else if (existingRight) {\n clearPreviewContainer(refs.previews.right);\n }\n\n const rightPreview = createPreviewElement(slides[rightIndex]);\n if (direction) {\n appendPreviewWithAnimation(refs.previews.right, rightPreview, direction);\n } else {\n refs.previews.right.appendChild(rightPreview);\n }\n }\n};\n\nconst updateInfo = (refs: CarouselRefs, newIndex: number) => {\n refs.info.textContent = `Slide ${newIndex + 1} Selected`;\n};\n\nconst animateSlides = (\n refs: CarouselRefs,\n state: CarouselState,\n newIndex: number,\n direction: 'reverse' | 'advance',\n) => {\n if (state.isAnimating || state.currentIndex === newIndex) return;\n state.isAnimating = true;\n\n const currentSlide = refs.slides[state.currentIndex];\n const newSlide = refs.slides[newIndex];\n\n // Disable controls during animation\n refs.controls.prev.setAttribute('disabled', '');\n refs.controls.next.setAttribute('disabled', '');\n\n // Position new slide off-screen\n const newSlideDirection = direction === 'reverse' ? 'left' : 'right';\n positionSlideOffScreen(newSlide, newSlideDirection);\n\n // Update indicator position\n refs.indicator.position(newIndex);\n\n // Start synchronized animations for all frames\n requestAnimationFrame(() => {\n // Animate main slides\n activateSlideTransition(newSlide);\n const currentSlideDirection = direction === 'reverse' ? 'right' : 'left';\n activateSlideTransition(currentSlide, currentSlideDirection);\n\n // Update previews with animation (this will animate in sync)\n const nextState = { ...state, currentIndex: newIndex };\n updatePreviews(refs, nextState, direction);\n });\n\n // Clean up after animation\n setTimeout(() => {\n // Clean up main slides\n cleanupSlideTransition(currentSlide, false);\n cleanupSlideTransition(newSlide, true);\n\n // Show content with fade-in animation\n newSlide.setAttribute('data-content-visible', 'true');\n\n // Re-enable controls\n refs.controls.prev.removeAttribute('disabled');\n refs.controls.next.removeAttribute('disabled');\n\n // Update state\n state.currentIndex = newIndex;\n state.isAnimating = false;\n\n // Update accessibility info\n updateInfo(refs, newIndex);\n }, ANIMATION_TIME);\n};\n\nconst setupSliderControls = (refs: CarouselRefs, state: CarouselState) => {\n const lastIndex = state.slides.length - 1;\n\n refs.controls.prev.addEventListener('click', () => {\n if (state.isAnimating) return;\n\n const newIndex =\n state.currentIndex === lastIndex ? 0 : state.currentIndex + 1;\n animateSlides(refs, state, newIndex, 'advance');\n });\n\n refs.controls.next.addEventListener('click', () => {\n if (state.isAnimating) return;\n\n const newIndex =\n state.currentIndex === 0 ? lastIndex : state.currentIndex - 1;\n animateSlides(refs, state, newIndex, 'reverse');\n });\n};\n\n// Main component\nexport default (props: CarouselWideProps) => {\n const { title } = props;\n\n // Initialize state early\n const state: CarouselState = {\n currentIndex: 0,\n isAnimating: false,\n slides: props.slides,\n };\n\n const container = createContainer(props, (index: number) => {\n if (state.isAnimating || state.currentIndex === index) return;\n\n const direction = state.currentIndex > index ? 'reverse' : 'advance';\n animateSlides(refs, state, index, direction);\n });\n\n const builder = new ElementBuilder();\n\n builder.withClassName('umd-carousel-wide');\n builder.withChild(container);\n\n if (title) {\n builder.withAttribute('title', title);\n } else {\n builder.withAttribute('title', 'Animated Image Carousel');\n }\n\n builder.withStyles({\n element: {\n container: 'umd-carousel-wide / inline-size',\n display: 'block',\n position: 'relative',\n\n [`@media (${token.media.queries.large.min})`]: {\n paddingBottom: 0,\n },\n },\n });\n\n const composite = builder.build();\n\n // Initialize refs\n const refs: CarouselRefs = {\n container: composite.element,\n ...container.refs,\n };\n\n // Set up event handlers after DOM is ready\n requestAnimationFrame(() => {\n setupSliderControls(refs, state);\n updatePreviews(refs, state); // Initial preview setup without animation\n });\n\n return composite;\n};\n"],"names":["assets.image.background","container","createContainer","index","ElementBuilder","token"],"mappings":"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"}
@@ -1,28 +1,32 @@
1
- import * as token from "@universityofmaryland/web-styles-library/token";
1
+ import { ElementBuilder } from "@universityofmaryland/web-builder-library";
2
+ import * as token from "@universityofmaryland/web-token-library";
2
3
  import "@universityofmaryland/web-styles-library/element";
4
+ import "@universityofmaryland/web-styles-library/layout";
5
+ import "@universityofmaryland/web-styles-library/animation";
6
+ import "@universityofmaryland/web-styles-library/typography";
3
7
  import "@universityofmaryland/web-utilities-library/media";
4
8
  import "@universityofmaryland/web-utilities-library/dom";
5
9
  import "@universityofmaryland/web-icons-library/controls";
6
10
  import "@universityofmaryland/web-icons-library/communication";
7
11
  import "@universityofmaryland/web-icons-library/files";
8
12
  import "@universityofmaryland/web-icons-library/brand";
9
- import { createDiv } from "../../../model/elements/index.mjs";
10
13
  import "@universityofmaryland/web-icons-library/arrows";
11
14
  import "../../../atomic/animations/actions/indicator.mjs";
12
15
  import "../../../atomic/animations/brand/chevron-scroll.mjs";
13
16
  import "../../../atomic/animations/brand/card-stack.mjs";
14
17
  import imageContainer from "../../../atomic/assets/image/background.mjs";
18
+ import "@universityofmaryland/web-styles-library";
15
19
  import "@universityofmaryland/web-utilities-library/performance";
16
20
  import "@universityofmaryland/web-utilities-library/accessibility";
17
21
  import "@universityofmaryland/web-icons-library/location";
18
22
  import "@universityofmaryland/web-icons-library/calendar";
23
+ import "@universityofmaryland/web-utilities-library/theme";
19
24
  import "../../../atomic/layout/block/stacked.mjs";
20
25
  import "../../../atomic/layout/overlay/modal.mjs";
21
26
  import "../../../atomic/layout/person/columns.mjs";
22
27
  import "@universityofmaryland/web-icons-library/social";
23
28
  import "../../../atomic/text-lockup/date.mjs";
24
29
  import "../../../atomic/text-lockup/small.mjs";
25
- import "@universityofmaryland/web-styles-library/typography";
26
30
  import { createContainer } from "./container.mjs";
27
31
  const ANIMATION_TIME = 500;
28
32
  const PREVIEW_ANIMATION_TIME = 440;
@@ -178,23 +182,25 @@ const index = (props) => {
178
182
  const direction = state.currentIndex > index2 ? "reverse" : "advance";
179
183
  animateSlides(refs, state, index2, direction);
180
184
  });
181
- const composite = createDiv({
182
- className: "umd-carousel-wide",
183
- children: [container],
184
- attributes: [
185
- ...title ? [{ title }] : [{ title: "Animated Image Carousel" }]
186
- ],
187
- elementStyles: {
188
- element: {
189
- container: "umd-carousel-wide / inline-size",
190
- display: "block",
191
- position: "relative",
192
- [`@media (${token.media.queries.large.min})`]: {
193
- paddingBottom: 0
194
- }
185
+ const builder = new ElementBuilder();
186
+ builder.withClassName("umd-carousel-wide");
187
+ builder.withChild(container);
188
+ if (title) {
189
+ builder.withAttribute("title", title);
190
+ } else {
191
+ builder.withAttribute("title", "Animated Image Carousel");
192
+ }
193
+ builder.withStyles({
194
+ element: {
195
+ container: "umd-carousel-wide / inline-size",
196
+ display: "block",
197
+ position: "relative",
198
+ [`@media (${token.media.queries.large.min})`]: {
199
+ paddingBottom: 0
195
200
  }
196
201
  }
197
202
  });
203
+ const composite = builder.build();
198
204
  const refs = {
199
205
  container: composite.element,
200
206
  ...container.refs
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../source/composite/carousel/wide/index.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { assets } from 'atomic';\nimport { ElementModel } from 'model';\nimport { createContainer } from './container';\nimport { type CarouselWideProps } from '../_types';\n\ninterface CarouselState {\n currentIndex: number;\n isAnimating: boolean;\n slides: CarouselWideProps['slides'];\n}\n\ninterface CarouselRefs {\n container: HTMLElement;\n slidesContainer: HTMLDivElement;\n slides: HTMLElement[];\n previews: {\n left: HTMLElement;\n right: HTMLElement;\n };\n controls: {\n prev: HTMLButtonElement;\n next: HTMLButtonElement;\n };\n indicator: {\n element: HTMLElement;\n position: (index: number) => void;\n };\n info: HTMLParagraphElement;\n}\n\n// Constants\nconst ANIMATION_TIME: 500 = 500;\nconst PREVIEW_ANIMATION_TIME: 440 = 440; // 60ms faster than main animation\n\n// Pure animation functions\nconst getAdjacentIndices = (\n currentIndex: number,\n totalSlides: number,\n): { leftIndex: number; rightIndex: number } => {\n const lastIndex = totalSlides - 1;\n return {\n leftIndex: currentIndex === 0 ? lastIndex : currentIndex - 1,\n rightIndex: currentIndex === lastIndex ? 0 : currentIndex + 1,\n };\n};\n\nconst positionSlideOffScreen = (\n slide: HTMLElement,\n direction: 'left' | 'right',\n): void => {\n slide.setAttribute('data-direction', direction);\n slide.setAttribute('data-animating', 'true');\n slide.offsetHeight; // Force reflow\n};\n\nconst activateSlideTransition = (\n slide: HTMLElement,\n direction?: 'left' | 'right',\n): void => {\n if (direction) {\n slide.setAttribute('data-direction', direction);\n } else {\n slide.removeAttribute('data-direction');\n slide.setAttribute('data-active', 'true');\n }\n};\n\nconst cleanupSlideTransition = (slide: HTMLElement, isNew: boolean): void => {\n if (isNew) {\n slide.removeAttribute('data-animating');\n } else {\n slide.removeAttribute('data-active');\n slide.removeAttribute('data-direction');\n slide.removeAttribute('data-content-visible');\n }\n};\n\n// Pure preview functions\nconst createPreviewElement = (\n slide: CarouselWideProps['slides'][0],\n): HTMLElement => {\n const imageCopy = slide.image.cloneNode(true) as HTMLImageElement;\n const preview = assets.image.background({\n element: imageCopy,\n isScaled: true,\n });\n\n preview.element.style.transition = `transform ${PREVIEW_ANIMATION_TIME}ms ease-in-out`;\n return preview.element;\n};\n\nconst clearPreviewContainer = (container: HTMLElement): void => {\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n};\n\nconst appendPreviewWithAnimation = (\n container: HTMLElement,\n preview: HTMLElement,\n animationDirection: 'reverse' | 'advance',\n): void => {\n // Position off-screen initially based on animation direction\n // For advance (forward), new content comes from right\n // For reverse (backward), new content comes from left\n preview.style.transform =\n animationDirection === 'advance' ? 'translateX(100%)' : 'translateX(-100%)';\n\n container.appendChild(preview);\n\n // Trigger animation to slide in\n requestAnimationFrame(() => {\n preview.style.transform = 'translateX(0)';\n });\n};\n\nconst animatePreviewOut = (\n preview: HTMLElement,\n animationDirection: 'reverse' | 'advance',\n): Promise<void> => {\n return new Promise((resolve) => {\n // For advance (forward), old content exits to left\n // For reverse (backward), old content exits to right\n preview.style.transform =\n animationDirection === 'advance'\n ? 'translateX(-100%)'\n : 'translateX(100%)';\n\n setTimeout(() => {\n if (preview.parentNode) {\n preview.parentNode.removeChild(preview);\n }\n resolve();\n }, PREVIEW_ANIMATION_TIME);\n });\n};\n\n// State management\nconst updatePreviews = (\n refs: CarouselRefs,\n state: CarouselState,\n direction?: 'reverse' | 'advance',\n): void => {\n const { currentIndex, slides } = state;\n const { leftIndex, rightIndex } = getAdjacentIndices(\n currentIndex,\n slides.length,\n );\n\n // Handle left preview\n if (slides[leftIndex]) {\n const existingLeft = refs.previews.left.firstElementChild as HTMLElement;\n if (existingLeft && direction) {\n animatePreviewOut(existingLeft, direction);\n } else if (existingLeft) {\n clearPreviewContainer(refs.previews.left);\n }\n\n const leftPreview = createPreviewElement(slides[leftIndex]);\n if (direction) {\n appendPreviewWithAnimation(refs.previews.left, leftPreview, direction);\n } else {\n refs.previews.left.appendChild(leftPreview);\n }\n }\n\n // Handle right preview\n if (slides[rightIndex]) {\n const existingRight = refs.previews.right.firstElementChild as HTMLElement;\n if (existingRight && direction) {\n animatePreviewOut(existingRight, direction);\n } else if (existingRight) {\n clearPreviewContainer(refs.previews.right);\n }\n\n const rightPreview = createPreviewElement(slides[rightIndex]);\n if (direction) {\n appendPreviewWithAnimation(refs.previews.right, rightPreview, direction);\n } else {\n refs.previews.right.appendChild(rightPreview);\n }\n }\n};\n\nconst updateInfo = (refs: CarouselRefs, newIndex: number) => {\n refs.info.textContent = `Slide ${newIndex + 1} Selected`;\n};\n\nconst animateSlides = (\n refs: CarouselRefs,\n state: CarouselState,\n newIndex: number,\n direction: 'reverse' | 'advance',\n) => {\n if (state.isAnimating || state.currentIndex === newIndex) return;\n state.isAnimating = true;\n\n const currentSlide = refs.slides[state.currentIndex];\n const newSlide = refs.slides[newIndex];\n\n // Disable controls during animation\n refs.controls.prev.setAttribute('disabled', '');\n refs.controls.next.setAttribute('disabled', '');\n\n // Position new slide off-screen\n const newSlideDirection = direction === 'reverse' ? 'left' : 'right';\n positionSlideOffScreen(newSlide, newSlideDirection);\n\n // Update indicator position\n refs.indicator.position(newIndex);\n\n // Start synchronized animations for all frames\n requestAnimationFrame(() => {\n // Animate main slides\n activateSlideTransition(newSlide);\n const currentSlideDirection = direction === 'reverse' ? 'right' : 'left';\n activateSlideTransition(currentSlide, currentSlideDirection);\n\n // Update previews with animation (this will animate in sync)\n const nextState = { ...state, currentIndex: newIndex };\n updatePreviews(refs, nextState, direction);\n });\n\n // Clean up after animation\n setTimeout(() => {\n // Clean up main slides\n cleanupSlideTransition(currentSlide, false);\n cleanupSlideTransition(newSlide, true);\n\n // Show content with fade-in animation\n newSlide.setAttribute('data-content-visible', 'true');\n\n // Re-enable controls\n refs.controls.prev.removeAttribute('disabled');\n refs.controls.next.removeAttribute('disabled');\n\n // Update state\n state.currentIndex = newIndex;\n state.isAnimating = false;\n\n // Update accessibility info\n updateInfo(refs, newIndex);\n }, ANIMATION_TIME);\n};\n\nconst setupSliderControls = (refs: CarouselRefs, state: CarouselState) => {\n const lastIndex = state.slides.length - 1;\n\n refs.controls.prev.addEventListener('click', () => {\n if (state.isAnimating) return;\n\n const newIndex =\n state.currentIndex === lastIndex ? 0 : state.currentIndex + 1;\n animateSlides(refs, state, newIndex, 'advance');\n });\n\n refs.controls.next.addEventListener('click', () => {\n if (state.isAnimating) return;\n\n const newIndex =\n state.currentIndex === 0 ? lastIndex : state.currentIndex - 1;\n animateSlides(refs, state, newIndex, 'reverse');\n });\n};\n\n// Main component\nexport default (props: CarouselWideProps) => {\n const { title } = props;\n\n // Initialize state early\n const state: CarouselState = {\n currentIndex: 0,\n isAnimating: false,\n slides: props.slides,\n };\n\n const container = createContainer(props, (index: number) => {\n if (state.isAnimating || state.currentIndex === index) return;\n\n const direction = state.currentIndex > index ? 'reverse' : 'advance';\n animateSlides(refs, state, index, direction);\n });\n\n const composite = ElementModel.createDiv({\n className: 'umd-carousel-wide',\n children: [container],\n attributes: [\n ...(title ? [{ title }] : [{ title: 'Animated Image Carousel' }]),\n ],\n elementStyles: {\n element: {\n container: 'umd-carousel-wide / inline-size',\n display: 'block',\n position: 'relative',\n\n [`@media (${token.media.queries.large.min})`]: {\n paddingBottom: 0,\n },\n },\n },\n });\n\n // Initialize refs\n const refs: CarouselRefs = {\n container: composite.element,\n ...container.refs,\n };\n\n // Set up event handlers after DOM is ready\n requestAnimationFrame(() => {\n setupSliderControls(refs, state);\n updatePreviews(refs, state); // Initial preview setup without animation\n });\n\n return composite;\n};\n"],"names":["assets.image.background","index","ElementModel.createDiv"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../source/composite/carousel/wide/index.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport { assets } from 'atomic';\nimport { createContainer } from './container';\nimport { type CarouselWideProps } from '../_types';\n\ninterface CarouselState {\n currentIndex: number;\n isAnimating: boolean;\n slides: CarouselWideProps['slides'];\n}\n\ninterface CarouselRefs {\n container: HTMLElement;\n slidesContainer: HTMLDivElement;\n slides: HTMLElement[];\n previews: {\n left: HTMLElement;\n right: HTMLElement;\n };\n controls: {\n prev: HTMLButtonElement;\n next: HTMLButtonElement;\n };\n indicator: {\n element: HTMLElement;\n position: (index: number) => void;\n };\n info: HTMLParagraphElement;\n}\n\n// Constants\nconst ANIMATION_TIME: 500 = 500;\nconst PREVIEW_ANIMATION_TIME: 440 = 440; // 60ms faster than main animation\n\n// Pure animation functions\nconst getAdjacentIndices = (\n currentIndex: number,\n totalSlides: number,\n): { leftIndex: number; rightIndex: number } => {\n const lastIndex = totalSlides - 1;\n return {\n leftIndex: currentIndex === 0 ? lastIndex : currentIndex - 1,\n rightIndex: currentIndex === lastIndex ? 0 : currentIndex + 1,\n };\n};\n\nconst positionSlideOffScreen = (\n slide: HTMLElement,\n direction: 'left' | 'right',\n): void => {\n slide.setAttribute('data-direction', direction);\n slide.setAttribute('data-animating', 'true');\n slide.offsetHeight; // Force reflow\n};\n\nconst activateSlideTransition = (\n slide: HTMLElement,\n direction?: 'left' | 'right',\n): void => {\n if (direction) {\n slide.setAttribute('data-direction', direction);\n } else {\n slide.removeAttribute('data-direction');\n slide.setAttribute('data-active', 'true');\n }\n};\n\nconst cleanupSlideTransition = (slide: HTMLElement, isNew: boolean): void => {\n if (isNew) {\n slide.removeAttribute('data-animating');\n } else {\n slide.removeAttribute('data-active');\n slide.removeAttribute('data-direction');\n slide.removeAttribute('data-content-visible');\n }\n};\n\n// Pure preview functions\nconst createPreviewElement = (\n slide: CarouselWideProps['slides'][0],\n): HTMLElement => {\n const imageCopy = slide.image.cloneNode(true) as HTMLImageElement;\n const preview = assets.image.background({\n element: imageCopy,\n isScaled: true,\n });\n\n preview.element.style.transition = `transform ${PREVIEW_ANIMATION_TIME}ms ease-in-out`;\n return preview.element;\n};\n\nconst clearPreviewContainer = (container: HTMLElement): void => {\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n};\n\nconst appendPreviewWithAnimation = (\n container: HTMLElement,\n preview: HTMLElement,\n animationDirection: 'reverse' | 'advance',\n): void => {\n // Position off-screen initially based on animation direction\n // For advance (forward), new content comes from right\n // For reverse (backward), new content comes from left\n preview.style.transform =\n animationDirection === 'advance' ? 'translateX(100%)' : 'translateX(-100%)';\n\n container.appendChild(preview);\n\n // Trigger animation to slide in\n requestAnimationFrame(() => {\n preview.style.transform = 'translateX(0)';\n });\n};\n\nconst animatePreviewOut = (\n preview: HTMLElement,\n animationDirection: 'reverse' | 'advance',\n): Promise<void> => {\n return new Promise((resolve) => {\n // For advance (forward), old content exits to left\n // For reverse (backward), old content exits to right\n preview.style.transform =\n animationDirection === 'advance'\n ? 'translateX(-100%)'\n : 'translateX(100%)';\n\n setTimeout(() => {\n if (preview.parentNode) {\n preview.parentNode.removeChild(preview);\n }\n resolve();\n }, PREVIEW_ANIMATION_TIME);\n });\n};\n\n// State management\nconst updatePreviews = (\n refs: CarouselRefs,\n state: CarouselState,\n direction?: 'reverse' | 'advance',\n): void => {\n const { currentIndex, slides } = state;\n const { leftIndex, rightIndex } = getAdjacentIndices(\n currentIndex,\n slides.length,\n );\n\n // Handle left preview\n if (slides[leftIndex]) {\n const existingLeft = refs.previews.left.firstElementChild as HTMLElement;\n if (existingLeft && direction) {\n animatePreviewOut(existingLeft, direction);\n } else if (existingLeft) {\n clearPreviewContainer(refs.previews.left);\n }\n\n const leftPreview = createPreviewElement(slides[leftIndex]);\n if (direction) {\n appendPreviewWithAnimation(refs.previews.left, leftPreview, direction);\n } else {\n refs.previews.left.appendChild(leftPreview);\n }\n }\n\n // Handle right preview\n if (slides[rightIndex]) {\n const existingRight = refs.previews.right.firstElementChild as HTMLElement;\n if (existingRight && direction) {\n animatePreviewOut(existingRight, direction);\n } else if (existingRight) {\n clearPreviewContainer(refs.previews.right);\n }\n\n const rightPreview = createPreviewElement(slides[rightIndex]);\n if (direction) {\n appendPreviewWithAnimation(refs.previews.right, rightPreview, direction);\n } else {\n refs.previews.right.appendChild(rightPreview);\n }\n }\n};\n\nconst updateInfo = (refs: CarouselRefs, newIndex: number) => {\n refs.info.textContent = `Slide ${newIndex + 1} Selected`;\n};\n\nconst animateSlides = (\n refs: CarouselRefs,\n state: CarouselState,\n newIndex: number,\n direction: 'reverse' | 'advance',\n) => {\n if (state.isAnimating || state.currentIndex === newIndex) return;\n state.isAnimating = true;\n\n const currentSlide = refs.slides[state.currentIndex];\n const newSlide = refs.slides[newIndex];\n\n // Disable controls during animation\n refs.controls.prev.setAttribute('disabled', '');\n refs.controls.next.setAttribute('disabled', '');\n\n // Position new slide off-screen\n const newSlideDirection = direction === 'reverse' ? 'left' : 'right';\n positionSlideOffScreen(newSlide, newSlideDirection);\n\n // Update indicator position\n refs.indicator.position(newIndex);\n\n // Start synchronized animations for all frames\n requestAnimationFrame(() => {\n // Animate main slides\n activateSlideTransition(newSlide);\n const currentSlideDirection = direction === 'reverse' ? 'right' : 'left';\n activateSlideTransition(currentSlide, currentSlideDirection);\n\n // Update previews with animation (this will animate in sync)\n const nextState = { ...state, currentIndex: newIndex };\n updatePreviews(refs, nextState, direction);\n });\n\n // Clean up after animation\n setTimeout(() => {\n // Clean up main slides\n cleanupSlideTransition(currentSlide, false);\n cleanupSlideTransition(newSlide, true);\n\n // Show content with fade-in animation\n newSlide.setAttribute('data-content-visible', 'true');\n\n // Re-enable controls\n refs.controls.prev.removeAttribute('disabled');\n refs.controls.next.removeAttribute('disabled');\n\n // Update state\n state.currentIndex = newIndex;\n state.isAnimating = false;\n\n // Update accessibility info\n updateInfo(refs, newIndex);\n }, ANIMATION_TIME);\n};\n\nconst setupSliderControls = (refs: CarouselRefs, state: CarouselState) => {\n const lastIndex = state.slides.length - 1;\n\n refs.controls.prev.addEventListener('click', () => {\n if (state.isAnimating) return;\n\n const newIndex =\n state.currentIndex === lastIndex ? 0 : state.currentIndex + 1;\n animateSlides(refs, state, newIndex, 'advance');\n });\n\n refs.controls.next.addEventListener('click', () => {\n if (state.isAnimating) return;\n\n const newIndex =\n state.currentIndex === 0 ? lastIndex : state.currentIndex - 1;\n animateSlides(refs, state, newIndex, 'reverse');\n });\n};\n\n// Main component\nexport default (props: CarouselWideProps) => {\n const { title } = props;\n\n // Initialize state early\n const state: CarouselState = {\n currentIndex: 0,\n isAnimating: false,\n slides: props.slides,\n };\n\n const container = createContainer(props, (index: number) => {\n if (state.isAnimating || state.currentIndex === index) return;\n\n const direction = state.currentIndex > index ? 'reverse' : 'advance';\n animateSlides(refs, state, index, direction);\n });\n\n const builder = new ElementBuilder();\n\n builder.withClassName('umd-carousel-wide');\n builder.withChild(container);\n\n if (title) {\n builder.withAttribute('title', title);\n } else {\n builder.withAttribute('title', 'Animated Image Carousel');\n }\n\n builder.withStyles({\n element: {\n container: 'umd-carousel-wide / inline-size',\n display: 'block',\n position: 'relative',\n\n [`@media (${token.media.queries.large.min})`]: {\n paddingBottom: 0,\n },\n },\n });\n\n const composite = builder.build();\n\n // Initialize refs\n const refs: CarouselRefs = {\n container: composite.element,\n ...container.refs,\n };\n\n // Set up event handlers after DOM is ready\n requestAnimationFrame(() => {\n setupSliderControls(refs, state);\n updatePreviews(refs, state); // Initial preview setup without animation\n });\n\n return composite;\n};\n"],"names":["assets.image.background","index"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { BaseProps } from '../../_types';
2
- import { ElementVisual } from '../../../../_types';
2
+ import { UMDElement } from '../../../../_types';
3
3
  export interface CallToActionProps extends BaseProps {
4
4
  slotCta?: HTMLAnchorElement;
5
5
  }
6
- declare const _default: (props: CallToActionProps) => ElementVisual;
6
+ declare const _default: (props: CallToActionProps) => UMDElement;
7
7
  export default _default;
8
8
  //# sourceMappingURL=call-to-action.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"call-to-action.d.ts","sourceRoot":"","sources":["../../../../../source/composite/footer/elements/main-section/call-to-action.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;yBA+Be,OAAO,iBAAiB,KAAG,aAAa;AAAxD,wBAwBE"}
1
+ {"version":3,"file":"call-to-action.d.ts","sourceRoot":"","sources":["../../../../../source/composite/footer/elements/main-section/call-to-action.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;yBA8Be,OAAO,iBAAiB,KAAG,UAAU;AAArD,wBAwBE"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
- const token = require("@universityofmaryland/web-styles-library/token");
3
- const index = require("../../../../model/elements/index.js");
2
+ const webBuilderLibrary = require("@universityofmaryland/web-builder-library");
3
+ const token = require("@universityofmaryland/web-token-library");
4
+ const Styles = require("@universityofmaryland/web-styles-library");
4
5
  const globals = require("../../globals.js");
5
- const actions = require("../../../../model/elements/actions.js");
6
6
  function _interopNamespaceDefault(e) {
7
7
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
8
8
  if (e) {
@@ -20,6 +20,7 @@ function _interopNamespaceDefault(e) {
20
20
  return Object.freeze(n);
21
21
  }
22
22
  const token__namespace = /* @__PURE__ */ _interopNamespaceDefault(token);
23
+ const Styles__namespace = /* @__PURE__ */ _interopNamespaceDefault(Styles);
23
24
  const { LARGE } = globals.BREAKPOINTS;
24
25
  const makeGivingLink = () => {
25
26
  const defaultLink = document.createElement("a");
@@ -29,40 +30,30 @@ const makeGivingLink = () => {
29
30
  defaultLink.rel = "noopener noreferrer";
30
31
  return defaultLink;
31
32
  };
32
- const createLinkElement = (props, link) => {
33
- const { isThemeLight } = props;
34
- return actions.primary({
35
- element: link,
36
- elementStyles: {
37
- element: {
38
- ...isThemeLight && {
39
- color: `${token__namespace.color.white} !important`
40
- }
41
- }
33
+ const createLinkElement = (props, link) => new webBuilderLibrary.ElementBuilder("slot").withClassName("umd-action-primary").styled(Styles__namespace.element.action.primary.normal).withStyles({
34
+ element: {
35
+ ["& a"]: {
36
+ color: `${token__namespace.color.white} !important`
42
37
  }
43
- });
44
- };
38
+ }
39
+ }).withChild(link).build();
45
40
  const createCallToActionContainer = (props) => {
46
41
  const { isTypeSimple, slotCta } = props;
47
42
  const baseLink = slotCta ?? makeGivingLink();
48
43
  const styledLink = createLinkElement(props, baseLink);
49
- return index.createDiv({
50
- className: "umd-footer-call-to-action-container",
51
- children: [styledLink],
52
- elementStyles: {
53
- element: {
54
- marginLeft: "auto",
55
- ...isTypeSimple && {
44
+ return new webBuilderLibrary.ElementBuilder().withClassName("umd-footer-call-to-action-container").withChild(styledLink).withStyles({
45
+ element: {
46
+ marginLeft: "auto",
47
+ ...isTypeSimple && {
48
+ display: "none"
49
+ },
50
+ [`@container (min-width: ${LARGE}px)`]: {
51
+ [`& .umd-footer-logo-container`]: {
56
52
  display: "none"
57
- },
58
- [`@container (min-width: ${LARGE}px)`]: {
59
- [`& .umd-footer-logo-container`]: {
60
- display: "none"
61
- }
62
53
  }
63
54
  }
64
55
  }
65
- });
56
+ }).build();
66
57
  };
67
58
  module.exports = createCallToActionContainer;
68
59
  //# sourceMappingURL=call-to-action.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"call-to-action.js","sources":["../../../../../source/composite/footer/elements/main-section/call-to-action.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { ElementModel } from 'model';\nimport { BREAKPOINTS } from '../../globals';\nimport { BaseProps } from '../../_types';\nimport { type ElementVisual } from '../../../../_types';\n\nexport interface CallToActionProps extends BaseProps {\n slotCta?: HTMLAnchorElement;\n}\n\nconst { LARGE } = BREAKPOINTS;\n\nconst makeGivingLink = (): HTMLAnchorElement => {\n const defaultLink = document.createElement('a');\n defaultLink.textContent = 'Support UMD';\n defaultLink.href = 'https://giving.umd.edu/';\n defaultLink.target = '_blank';\n defaultLink.rel = 'noopener noreferrer';\n return defaultLink;\n};\n\nconst createLinkElement = (\n props: CallToActionProps,\n link: HTMLAnchorElement,\n): ElementVisual => {\n const { isThemeLight } = props;\n\n return ElementModel.actions.primary({\n element: link,\n elementStyles: {\n element: {\n ...(isThemeLight && {\n color: `${token.color.white} !important`,\n }),\n },\n },\n });\n};\n\nexport default (props: CallToActionProps): ElementVisual => {\n const { isTypeSimple, slotCta } = props;\n const baseLink = slotCta ?? makeGivingLink();\n const styledLink = createLinkElement(props, baseLink);\n\n return ElementModel.createDiv({\n className: 'umd-footer-call-to-action-container',\n children: [styledLink],\n elementStyles: {\n element: {\n marginLeft: 'auto',\n\n ...(isTypeSimple && {\n display: 'none',\n }),\n\n [`@container (min-width: ${LARGE}px)`]: {\n [`& .umd-footer-logo-container`]: {\n display: 'none',\n },\n },\n },\n },\n });\n};\n"],"names":["BREAKPOINTS","ElementModel.actions.primary","token","ElementModel.createDiv"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAUA,MAAM,EAAE,UAAUA,QAAAA;AAElB,MAAM,iBAAiB,MAAyB;AAC9C,QAAM,cAAc,SAAS,cAAc,GAAG;AAC9C,cAAY,cAAc;AAC1B,cAAY,OAAO;AACnB,cAAY,SAAS;AACrB,cAAY,MAAM;AAClB,SAAO;AACT;AAEA,MAAM,oBAAoB,CACxB,OACA,SACkB;AAClB,QAAM,EAAE,iBAAiB;AAEzB,SAAOC,gBAA6B;AAAA,IAClC,SAAS;AAAA,IACT,eAAe;AAAA,MACb,SAAS;AAAA,QACP,GAAI,gBAAgB;AAAA,UAClB,OAAO,GAAGC,iBAAM,MAAM,KAAK;AAAA,QAAA;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CACD;AACH;AAEA,MAAA,8BAAe,CAAC,UAA4C;AAC1D,QAAM,EAAE,cAAc,QAAA,IAAY;AAClC,QAAM,WAAW,WAAW,eAAA;AAC5B,QAAM,aAAa,kBAAkB,OAAO,QAAQ;AAEpD,SAAOC,gBAAuB;AAAA,IAC5B,WAAW;AAAA,IACX,UAAU,CAAC,UAAU;AAAA,IACrB,eAAe;AAAA,MACb,SAAS;AAAA,QACP,YAAY;AAAA,QAEZ,GAAI,gBAAgB;AAAA,UAClB,SAAS;AAAA,QAAA;AAAA,QAGX,CAAC,0BAA0B,KAAK,KAAK,GAAG;AAAA,UACtC,CAAC,8BAA8B,GAAG;AAAA,YAChC,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF,CACD;AACH;;"}
1
+ {"version":3,"file":"call-to-action.js","sources":["../../../../../source/composite/footer/elements/main-section/call-to-action.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport { BREAKPOINTS } from '../../globals';\nimport { BaseProps } from '../../_types';\nimport { type UMDElement } from '../../../../_types';\n\nexport interface CallToActionProps extends BaseProps {\n slotCta?: HTMLAnchorElement;\n}\n\nconst { LARGE } = BREAKPOINTS;\n\nconst makeGivingLink = (): HTMLAnchorElement => {\n const defaultLink = document.createElement('a');\n defaultLink.textContent = 'Support UMD';\n defaultLink.href = 'https://giving.umd.edu/';\n defaultLink.target = '_blank';\n defaultLink.rel = 'noopener noreferrer';\n return defaultLink;\n};\n\nconst createLinkElement = (\n props: CallToActionProps,\n link: HTMLAnchorElement,\n): UMDElement =>\n new ElementBuilder('slot')\n .withClassName('umd-action-primary')\n .styled(Styles.element.action.primary.normal)\n .withStyles({\n element: {\n ['& a']: {\n color: `${token.color.white} !important`,\n },\n },\n })\n .withChild(link)\n .build();\n\nexport default (props: CallToActionProps): UMDElement => {\n const { isTypeSimple, slotCta } = props;\n const baseLink = slotCta ?? makeGivingLink();\n const styledLink = createLinkElement(props, baseLink);\n\n return new ElementBuilder()\n .withClassName('umd-footer-call-to-action-container')\n .withChild(styledLink)\n .withStyles({\n element: {\n marginLeft: 'auto',\n\n ...(isTypeSimple && {\n display: 'none',\n }),\n\n [`@container (min-width: ${LARGE}px)`]: {\n [`& .umd-footer-logo-container`]: {\n display: 'none',\n },\n },\n },\n })\n .build();\n};\n"],"names":["BREAKPOINTS","ElementBuilder","Styles","token"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAWA,MAAM,EAAE,UAAUA,QAAAA;AAElB,MAAM,iBAAiB,MAAyB;AAC9C,QAAM,cAAc,SAAS,cAAc,GAAG;AAC9C,cAAY,cAAc;AAC1B,cAAY,OAAO;AACnB,cAAY,SAAS;AACrB,cAAY,MAAM;AAClB,SAAO;AACT;AAEA,MAAM,oBAAoB,CACxB,OACA,SAEA,IAAIC,kBAAAA,eAAe,MAAM,EACtB,cAAc,oBAAoB,EAClC,OAAOC,kBAAO,QAAQ,OAAO,QAAQ,MAAM,EAC3C,WAAW;AAAA,EACV,SAAS;AAAA,IACP,CAAC,KAAK,GAAG;AAAA,MACP,OAAO,GAAGC,iBAAM,MAAM,KAAK;AAAA,IAAA;AAAA,EAC7B;AAEJ,CAAC,EACA,UAAU,IAAI,EACd,MAAA;AAEL,MAAA,8BAAe,CAAC,UAAyC;AACvD,QAAM,EAAE,cAAc,QAAA,IAAY;AAClC,QAAM,WAAW,WAAW,eAAA;AAC5B,QAAM,aAAa,kBAAkB,OAAO,QAAQ;AAEpD,SAAO,IAAIF,kBAAAA,iBACR,cAAc,qCAAqC,EACnD,UAAU,UAAU,EACpB,WAAW;AAAA,IACV,SAAS;AAAA,MACP,YAAY;AAAA,MAEZ,GAAI,gBAAgB;AAAA,QAClB,SAAS;AAAA,MAAA;AAAA,MAGX,CAAC,0BAA0B,KAAK,KAAK,GAAG;AAAA,QACtC,CAAC,8BAA8B,GAAG;AAAA,UAChC,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,IACF;AAAA,EACF,CACD,EACA,MAAA;AACL;;"}
@@ -1,7 +1,7 @@
1
- import * as token from "@universityofmaryland/web-styles-library/token";
2
- import { createDiv } from "../../../../model/elements/index.mjs";
1
+ import { ElementBuilder } from "@universityofmaryland/web-builder-library";
2
+ import * as token from "@universityofmaryland/web-token-library";
3
+ import * as Styles from "@universityofmaryland/web-styles-library";
3
4
  import { BREAKPOINTS } from "../../globals.mjs";
4
- import { primary } from "../../../../model/elements/actions.mjs";
5
5
  const { LARGE } = BREAKPOINTS;
6
6
  const makeGivingLink = () => {
7
7
  const defaultLink = document.createElement("a");
@@ -11,40 +11,30 @@ const makeGivingLink = () => {
11
11
  defaultLink.rel = "noopener noreferrer";
12
12
  return defaultLink;
13
13
  };
14
- const createLinkElement = (props, link) => {
15
- const { isThemeLight } = props;
16
- return primary({
17
- element: link,
18
- elementStyles: {
19
- element: {
20
- ...isThemeLight && {
21
- color: `${token.color.white} !important`
22
- }
23
- }
14
+ const createLinkElement = (props, link) => new ElementBuilder("slot").withClassName("umd-action-primary").styled(Styles.element.action.primary.normal).withStyles({
15
+ element: {
16
+ ["& a"]: {
17
+ color: `${token.color.white} !important`
24
18
  }
25
- });
26
- };
19
+ }
20
+ }).withChild(link).build();
27
21
  const createCallToActionContainer = (props) => {
28
22
  const { isTypeSimple, slotCta } = props;
29
23
  const baseLink = slotCta ?? makeGivingLink();
30
24
  const styledLink = createLinkElement(props, baseLink);
31
- return createDiv({
32
- className: "umd-footer-call-to-action-container",
33
- children: [styledLink],
34
- elementStyles: {
35
- element: {
36
- marginLeft: "auto",
37
- ...isTypeSimple && {
25
+ return new ElementBuilder().withClassName("umd-footer-call-to-action-container").withChild(styledLink).withStyles({
26
+ element: {
27
+ marginLeft: "auto",
28
+ ...isTypeSimple && {
29
+ display: "none"
30
+ },
31
+ [`@container (min-width: ${LARGE}px)`]: {
32
+ [`& .umd-footer-logo-container`]: {
38
33
  display: "none"
39
- },
40
- [`@container (min-width: ${LARGE}px)`]: {
41
- [`& .umd-footer-logo-container`]: {
42
- display: "none"
43
- }
44
34
  }
45
35
  }
46
36
  }
47
- });
37
+ }).build();
48
38
  };
49
39
  export {
50
40
  createCallToActionContainer as default
@@ -1 +1 @@
1
- {"version":3,"file":"call-to-action.mjs","sources":["../../../../../source/composite/footer/elements/main-section/call-to-action.ts"],"sourcesContent":["import * as token from '@universityofmaryland/web-styles-library/token';\nimport { ElementModel } from 'model';\nimport { BREAKPOINTS } from '../../globals';\nimport { BaseProps } from '../../_types';\nimport { type ElementVisual } from '../../../../_types';\n\nexport interface CallToActionProps extends BaseProps {\n slotCta?: HTMLAnchorElement;\n}\n\nconst { LARGE } = BREAKPOINTS;\n\nconst makeGivingLink = (): HTMLAnchorElement => {\n const defaultLink = document.createElement('a');\n defaultLink.textContent = 'Support UMD';\n defaultLink.href = 'https://giving.umd.edu/';\n defaultLink.target = '_blank';\n defaultLink.rel = 'noopener noreferrer';\n return defaultLink;\n};\n\nconst createLinkElement = (\n props: CallToActionProps,\n link: HTMLAnchorElement,\n): ElementVisual => {\n const { isThemeLight } = props;\n\n return ElementModel.actions.primary({\n element: link,\n elementStyles: {\n element: {\n ...(isThemeLight && {\n color: `${token.color.white} !important`,\n }),\n },\n },\n });\n};\n\nexport default (props: CallToActionProps): ElementVisual => {\n const { isTypeSimple, slotCta } = props;\n const baseLink = slotCta ?? makeGivingLink();\n const styledLink = createLinkElement(props, baseLink);\n\n return ElementModel.createDiv({\n className: 'umd-footer-call-to-action-container',\n children: [styledLink],\n elementStyles: {\n element: {\n marginLeft: 'auto',\n\n ...(isTypeSimple && {\n display: 'none',\n }),\n\n [`@container (min-width: ${LARGE}px)`]: {\n [`& .umd-footer-logo-container`]: {\n display: 'none',\n },\n },\n },\n },\n });\n};\n"],"names":["ElementModel.actions.primary","ElementModel.createDiv"],"mappings":";;;;AAUA,MAAM,EAAE,UAAU;AAElB,MAAM,iBAAiB,MAAyB;AAC9C,QAAM,cAAc,SAAS,cAAc,GAAG;AAC9C,cAAY,cAAc;AAC1B,cAAY,OAAO;AACnB,cAAY,SAAS;AACrB,cAAY,MAAM;AAClB,SAAO;AACT;AAEA,MAAM,oBAAoB,CACxB,OACA,SACkB;AAClB,QAAM,EAAE,iBAAiB;AAEzB,SAAOA,QAA6B;AAAA,IAClC,SAAS;AAAA,IACT,eAAe;AAAA,MACb,SAAS;AAAA,QACP,GAAI,gBAAgB;AAAA,UAClB,OAAO,GAAG,MAAM,MAAM,KAAK;AAAA,QAAA;AAAA,MAC7B;AAAA,IACF;AAAA,EACF,CACD;AACH;AAEA,MAAA,8BAAe,CAAC,UAA4C;AAC1D,QAAM,EAAE,cAAc,QAAA,IAAY;AAClC,QAAM,WAAW,WAAW,eAAA;AAC5B,QAAM,aAAa,kBAAkB,OAAO,QAAQ;AAEpD,SAAOC,UAAuB;AAAA,IAC5B,WAAW;AAAA,IACX,UAAU,CAAC,UAAU;AAAA,IACrB,eAAe;AAAA,MACb,SAAS;AAAA,QACP,YAAY;AAAA,QAEZ,GAAI,gBAAgB;AAAA,UAClB,SAAS;AAAA,QAAA;AAAA,QAGX,CAAC,0BAA0B,KAAK,KAAK,GAAG;AAAA,UACtC,CAAC,8BAA8B,GAAG;AAAA,YAChC,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAAA,EACF,CACD;AACH;"}
1
+ {"version":3,"file":"call-to-action.mjs","sources":["../../../../../source/composite/footer/elements/main-section/call-to-action.ts"],"sourcesContent":["import { ElementBuilder } from '@universityofmaryland/web-builder-library';\nimport * as token from '@universityofmaryland/web-token-library';\nimport * as Styles from '@universityofmaryland/web-styles-library';\nimport { BREAKPOINTS } from '../../globals';\nimport { BaseProps } from '../../_types';\nimport { type UMDElement } from '../../../../_types';\n\nexport interface CallToActionProps extends BaseProps {\n slotCta?: HTMLAnchorElement;\n}\n\nconst { LARGE } = BREAKPOINTS;\n\nconst makeGivingLink = (): HTMLAnchorElement => {\n const defaultLink = document.createElement('a');\n defaultLink.textContent = 'Support UMD';\n defaultLink.href = 'https://giving.umd.edu/';\n defaultLink.target = '_blank';\n defaultLink.rel = 'noopener noreferrer';\n return defaultLink;\n};\n\nconst createLinkElement = (\n props: CallToActionProps,\n link: HTMLAnchorElement,\n): UMDElement =>\n new ElementBuilder('slot')\n .withClassName('umd-action-primary')\n .styled(Styles.element.action.primary.normal)\n .withStyles({\n element: {\n ['& a']: {\n color: `${token.color.white} !important`,\n },\n },\n })\n .withChild(link)\n .build();\n\nexport default (props: CallToActionProps): UMDElement => {\n const { isTypeSimple, slotCta } = props;\n const baseLink = slotCta ?? makeGivingLink();\n const styledLink = createLinkElement(props, baseLink);\n\n return new ElementBuilder()\n .withClassName('umd-footer-call-to-action-container')\n .withChild(styledLink)\n .withStyles({\n element: {\n marginLeft: 'auto',\n\n ...(isTypeSimple && {\n display: 'none',\n }),\n\n [`@container (min-width: ${LARGE}px)`]: {\n [`& .umd-footer-logo-container`]: {\n display: 'none',\n },\n },\n },\n })\n .build();\n};\n"],"names":[],"mappings":";;;;AAWA,MAAM,EAAE,UAAU;AAElB,MAAM,iBAAiB,MAAyB;AAC9C,QAAM,cAAc,SAAS,cAAc,GAAG;AAC9C,cAAY,cAAc;AAC1B,cAAY,OAAO;AACnB,cAAY,SAAS;AACrB,cAAY,MAAM;AAClB,SAAO;AACT;AAEA,MAAM,oBAAoB,CACxB,OACA,SAEA,IAAI,eAAe,MAAM,EACtB,cAAc,oBAAoB,EAClC,OAAO,OAAO,QAAQ,OAAO,QAAQ,MAAM,EAC3C,WAAW;AAAA,EACV,SAAS;AAAA,IACP,CAAC,KAAK,GAAG;AAAA,MACP,OAAO,GAAG,MAAM,MAAM,KAAK;AAAA,IAAA;AAAA,EAC7B;AAEJ,CAAC,EACA,UAAU,IAAI,EACd,MAAA;AAEL,MAAA,8BAAe,CAAC,UAAyC;AACvD,QAAM,EAAE,cAAc,QAAA,IAAY;AAClC,QAAM,WAAW,WAAW,eAAA;AAC5B,QAAM,aAAa,kBAAkB,OAAO,QAAQ;AAEpD,SAAO,IAAI,iBACR,cAAc,qCAAqC,EACnD,UAAU,UAAU,EACpB,WAAW;AAAA,IACV,SAAS;AAAA,MACP,YAAY;AAAA,MAEZ,GAAI,gBAAgB;AAAA,QAClB,SAAS;AAAA,MAAA;AAAA,MAGX,CAAC,0BAA0B,KAAK,KAAK,GAAG;AAAA,QACtC,CAAC,8BAA8B,GAAG;AAAA,UAChC,SAAS;AAAA,QAAA;AAAA,MACX;AAAA,IACF;AAAA,EACF,CACD,EACA,MAAA;AACL;"}
@@ -1,7 +1,7 @@
1
1
  import { BaseProps } from '../../_types';
2
- import { ElementVisual } from '../../../../_types';
2
+ import { UMDElement } from '../../../../_types';
3
3
  export interface CampaignProps extends Pick<BaseProps, 'isThemeLight' | 'isCampaignForward'> {
4
4
  }
5
- declare const _default: ({ isThemeLight, isCampaignForward, }: CampaignProps) => ElementVisual;
5
+ declare const _default: ({ isThemeLight, isCampaignForward, }: CampaignProps) => UMDElement;
6
6
  export default _default;
7
7
  //# sourceMappingURL=campaign.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"campaign.d.ts","sourceRoot":"","sources":["../../../../../source/composite/footer/elements/main-section/campaign.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,mBAAmB,CAAC;CAAG;yBAyClD,sCAGb,aAAa,KAAG,aAAa;AAHhC,wBAgDE"}
1
+ {"version":3,"file":"campaign.d.ts","sourceRoot":"","sources":["../../../../../source/composite/footer/elements/main-section/campaign.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,mBAAmB,CAAC;CAAG;yBAyClD,sCAGb,aAAa,KAAG,UAAU;AAH7B,wBA+CE"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
- const token = require("@universityofmaryland/web-styles-library/token");
3
- const Logos = require("@universityofmaryland/web-icons-library/logos");
2
+ const webBuilderLibrary = require("@universityofmaryland/web-builder-library");
3
+ const token = require("@universityofmaryland/web-token-library");
4
4
  const media = require("@universityofmaryland/web-utilities-library/media");
5
- const index = require("../../../../model/elements/index.js");
5
+ const Logos = require("@universityofmaryland/web-icons-library/logos");
6
6
  const globals = require("../../globals.js");
7
7
  function _interopNamespaceDefault(e) {
8
8
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -55,42 +55,34 @@ const createCampaignRow = ({
55
55
  isCampaignForward
56
56
  }) => {
57
57
  const link = isCampaignForward ? createForwardCampaign(!!isThemeLight) : createFearlesslyForwardCampaign(!!isThemeLight);
58
- const linkElement = index.create({
59
- element: link,
60
- className: "campaign-column-link",
61
- elementStyles: {
62
- element: {
63
- display: "block",
64
- marginTop: token__namespace.spacing.lg,
65
- maxWidth: "250px"
66
- }
58
+ const linkElement = new webBuilderLibrary.ElementBuilder(link).withClassName("campaign-column-link").withStyles({
59
+ element: {
60
+ display: "block",
61
+ marginTop: token__namespace.spacing.lg,
62
+ maxWidth: "250px"
67
63
  }
68
- });
69
- return index.createDiv({
70
- className: "campaign-column-wrapper",
71
- children: [linkElement],
72
- elementStyles: {
73
- element: {
74
- [`& img`]: {
75
- maxWidth: "144px",
76
- width: "100%"
77
- },
78
- [`@container (min-width: ${LARGE}px)`]: {
79
- display: "flex",
80
- justifyContent: "flex-end",
81
- marginLeft: "auto",
82
- [`& .umd-footer-logo-container`]: {
83
- display: "none"
84
- }
85
- },
86
- [`@container (max-width: ${LARGE - 1}px)`]: {
87
- [`& .umd-footer-social-column_wrapper &`]: {
88
- display: "none"
89
- }
64
+ }).build();
65
+ return new webBuilderLibrary.ElementBuilder().withClassName("campaign-column-wrapper").withStyles({
66
+ element: {
67
+ [`& img`]: {
68
+ maxWidth: "144px",
69
+ width: "100%"
70
+ },
71
+ [`@container (min-width: ${LARGE}px)`]: {
72
+ display: "flex",
73
+ justifyContent: "flex-end",
74
+ marginLeft: "auto",
75
+ [`& .umd-footer-logo-container`]: {
76
+ display: "none"
77
+ }
78
+ },
79
+ [`@container (max-width: ${LARGE - 1}px)`]: {
80
+ [`& .umd-footer-social-column_wrapper &`]: {
81
+ display: "none"
90
82
  }
91
83
  }
92
84
  }
93
- });
85
+ }).withChild(linkElement).build();
94
86
  };
95
87
  module.exports = createCampaignRow;
96
88
  //# sourceMappingURL=campaign.js.map