@affinda/wc 0.0.28 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (485) hide show
  1. package/dist/affinda/af-card.entry.esm.js.map +1 -1
  2. package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -1
  3. package/dist/affinda/af-feature-accordion.entry.esm.js.map +1 -1
  4. package/dist/affinda/af-footer.entry.esm.js.map +1 -1
  5. package/dist/affinda/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.esm.js.map +1 -1
  6. package/dist/affinda/af-illustrated-card.entry.esm.js.map +1 -1
  7. package/dist/affinda/af-in-page-banner.entry.esm.js.map +1 -1
  8. package/dist/affinda/af-paperclip-decoration.entry.esm.js.map +1 -0
  9. package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
  10. package/dist/affinda/affinda.css +1 -1
  11. package/dist/affinda/affinda.esm.js +1 -1
  12. package/dist/affinda/index.esm.js +1 -1
  13. package/dist/affinda/{p-11e7ddf3.entry.js → p-0137e7a5.entry.js} +2 -2
  14. package/dist/affinda/{p-816deae3.entry.js → p-0201c8bd.entry.js} +2 -2
  15. package/dist/affinda/p-081cc890.entry.js +2 -0
  16. package/dist/affinda/{p-570283f6.entry.js.map → p-081cc890.entry.js.map} +1 -1
  17. package/dist/affinda/{p-94adb381.entry.js → p-083fc528.entry.js} +2 -2
  18. package/dist/affinda/{p-f9e3c2b7.entry.js → p-0e469ad2.entry.js} +2 -2
  19. package/dist/affinda/{p-6eca2722.entry.js → p-15f0bd34.entry.js} +2 -2
  20. package/dist/affinda/{p-2c655ae2.entry.js → p-1c96856a.entry.js} +2 -2
  21. package/dist/affinda/{p-4cbdf940.entry.js → p-24e74c10.entry.js} +2 -2
  22. package/dist/affinda/{p-ab0b621e.entry.js → p-2e6192eb.entry.js} +2 -2
  23. package/dist/affinda/{p-102e8b8c.entry.js → p-35607741.entry.js} +2 -2
  24. package/dist/affinda/{p-c7ba4e7f.entry.js → p-364ffa25.entry.js} +2 -2
  25. package/dist/affinda/p-3a0e45c3.entry.js +2 -0
  26. package/dist/affinda/{p-07f9580c.entry.js.map → p-3a0e45c3.entry.js.map} +1 -1
  27. package/dist/affinda/{p-af3f6e16.entry.js → p-3ee906de.entry.js} +2 -2
  28. package/dist/affinda/{p-d7e29257.entry.js → p-41643147.entry.js} +2 -2
  29. package/dist/affinda/{p-f9b6d1c6.entry.js → p-43f40921.entry.js} +2 -2
  30. package/dist/affinda/{p-8d9d0cb3.entry.js → p-48aadea9.entry.js} +2 -2
  31. package/dist/affinda/{p-cc22a8da.entry.js → p-49521f2e.entry.js} +2 -2
  32. package/dist/affinda/{p-0f3267ea.entry.js → p-4a355b69.entry.js} +2 -2
  33. package/dist/affinda/{p-9bb5202e.entry.js → p-4b154e23.entry.js} +2 -2
  34. package/dist/affinda/{p-3ecf43aa.entry.js → p-4b2c0698.entry.js} +2 -2
  35. package/dist/affinda/{p-2aa112c2.entry.js → p-4c4406bf.entry.js} +2 -2
  36. package/dist/affinda/{p-2aa112c2.entry.js.map → p-4c4406bf.entry.js.map} +1 -1
  37. package/dist/affinda/p-4cf65950.entry.js +2 -0
  38. package/dist/affinda/{p-b14c1a4b.entry.js.map → p-4cf65950.entry.js.map} +1 -1
  39. package/dist/affinda/{p-12652bf5.entry.js → p-4f59b554.entry.js} +2 -2
  40. package/dist/affinda/{p-401fc5b1.entry.js → p-50a67fb6.entry.js} +2 -2
  41. package/dist/affinda/{p-a3865306.entry.js → p-5265e82e.entry.js} +2 -2
  42. package/dist/affinda/{p-5e5d16dd.entry.js → p-56fe6e6e.entry.js} +2 -2
  43. package/dist/affinda/{p-a4d39bdd.entry.js → p-5f6a5741.entry.js} +2 -2
  44. package/dist/affinda/p-6038a213.entry.js +2 -0
  45. package/dist/affinda/{p-50590601.entry.js.map → p-6038a213.entry.js.map} +1 -1
  46. package/dist/affinda/{p-432c7bfc.entry.js → p-6c33fee6.entry.js} +2 -2
  47. package/dist/affinda/{p-a002c784.entry.js → p-6c58b283.entry.js} +2 -2
  48. package/dist/affinda/{p-1dff35bf.entry.js → p-6e40dbdf.entry.js} +2 -2
  49. package/dist/affinda/{p-23aa03dc.entry.js → p-76cb736d.entry.js} +2 -2
  50. package/dist/affinda/{p-77ed47d5.entry.js → p-78518e6c.entry.js} +2 -2
  51. package/dist/affinda/{p-e78112d9.entry.js → p-7867c2ff.entry.js} +2 -2
  52. package/dist/affinda/{p-636045e8.entry.js → p-81706709.entry.js} +2 -2
  53. package/dist/affinda/{p-5e444a9a.entry.js → p-862a2509.entry.js} +2 -2
  54. package/dist/affinda/{p-7238fc21.entry.js → p-86f6dfdc.entry.js} +2 -2
  55. package/dist/affinda/{p-bf941fa7.entry.js → p-8c4e3047.entry.js} +2 -2
  56. package/dist/affinda/{p-e0163836.entry.js → p-90ef7baa.entry.js} +2 -2
  57. package/dist/affinda/{p-159fe9b1.entry.js → p-94f51238.entry.js} +2 -2
  58. package/dist/affinda/{p-3ca3e4dc.entry.js → p-95d4696a.entry.js} +2 -2
  59. package/dist/affinda/{p-892f9bc3.entry.js → p-9aed7039.entry.js} +2 -2
  60. package/dist/affinda/{p-bfc17d0c.entry.js → p-9c1e9bd8.entry.js} +2 -2
  61. package/dist/affinda/{p-8da30e7a.entry.js → p-9eba91fd.entry.js} +2 -2
  62. package/dist/affinda/{p-aa5c6cc0.entry.js → p-9f3e7116.entry.js} +2 -2
  63. package/dist/affinda/p-MwnBSqEY.js +3 -0
  64. package/dist/affinda/p-MwnBSqEY.js.map +1 -0
  65. package/dist/affinda/{p-eb96f29b.entry.js → p-a35029eb.entry.js} +2 -2
  66. package/dist/affinda/{p-5b3ff010.entry.js → p-a6eda8af.entry.js} +2 -2
  67. package/dist/affinda/{p-ef41e743.entry.js → p-a71d528d.entry.js} +2 -2
  68. package/dist/affinda/{p-e9f8ef54.entry.js → p-a84ae4a5.entry.js} +2 -2
  69. package/dist/affinda/{p-2140698f.entry.js → p-ad41f905.entry.js} +2 -2
  70. package/dist/affinda/{p-4e8bd716.entry.js → p-b2633acb.entry.js} +2 -2
  71. package/dist/affinda/{p-d54abc45.entry.js → p-b2b28366.entry.js} +2 -2
  72. package/dist/affinda/p-c8c4783c.entry.js +2 -0
  73. package/dist/affinda/{p-da999c10.entry.js.map → p-c8c4783c.entry.js.map} +1 -1
  74. package/dist/affinda/{p-648e2d76.entry.js → p-da2d84f7.entry.js} +2 -2
  75. package/dist/affinda/{p-8f6884c8.entry.js → p-dbe7ab88.entry.js} +2 -2
  76. package/dist/affinda/{p-be45f85c.entry.js → p-e055407b.entry.js} +2 -2
  77. package/dist/affinda/p-e1cbe95a.entry.js +2 -0
  78. package/dist/affinda/{p-d60d1943.entry.js.map → p-e1cbe95a.entry.js.map} +1 -1
  79. package/dist/affinda/{p-97ac8f5f.entry.js → p-e1e98cd6.entry.js} +2 -2
  80. package/dist/affinda/p-ea42c40b.entry.js +2 -0
  81. package/dist/affinda/p-ea42c40b.entry.js.map +1 -0
  82. package/dist/affinda/{p-80c96efd.entry.js → p-edb1a010.entry.js} +2 -2
  83. package/dist/affinda/{p-6bb831c5.entry.js → p-ef5857cf.entry.js} +2 -2
  84. package/dist/affinda/p-f10a31cb.entry.js +2 -0
  85. package/dist/affinda/p-f10a31cb.entry.js.map +1 -0
  86. package/dist/affinda/{p-7b7d9c6a.entry.js → p-f9315f9e.entry.js} +2 -2
  87. package/dist/affinda/{p-5ab389c6.entry.js → p-feb3d03f.entry.js} +2 -2
  88. package/dist/cjs/af-accordion-item.cjs.entry.js +1 -1
  89. package/dist/cjs/af-accordion.cjs.entry.js +1 -1
  90. package/dist/cjs/af-aspect-ratio.cjs.entry.js +1 -1
  91. package/dist/cjs/af-button-group.cjs.entry.js +1 -1
  92. package/dist/cjs/af-button.cjs.entry.js +1 -1
  93. package/dist/cjs/af-card.cjs.entry.js +2 -2
  94. package/dist/cjs/af-card.entry.cjs.js.map +1 -1
  95. package/dist/cjs/af-center.cjs.entry.js +1 -1
  96. package/dist/cjs/af-checkbox.cjs.entry.js +1 -1
  97. package/dist/cjs/af-client-carousel.cjs.entry.js +21 -6
  98. package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -1
  99. package/dist/cjs/af-color-swatch.cjs.entry.js +1 -1
  100. package/dist/cjs/af-contact-item.cjs.entry.js +1 -1
  101. package/dist/cjs/af-container.cjs.entry.js +1 -1
  102. package/dist/cjs/af-divider.cjs.entry.js +1 -1
  103. package/dist/cjs/af-feature-accordion.cjs.entry.js +2 -2
  104. package/dist/cjs/af-feature-accordion.entry.cjs.js.map +1 -1
  105. package/dist/cjs/af-feature-card.cjs.entry.js +1 -1
  106. package/dist/cjs/af-feature-grid.cjs.entry.js +1 -1
  107. package/dist/cjs/af-fieldset.cjs.entry.js +1 -1
  108. package/dist/cjs/af-footer-column.cjs.entry.js +1 -1
  109. package/dist/cjs/af-footer-link.cjs.entry.js +1 -1
  110. package/dist/cjs/af-footer.cjs.entry.js +2 -2
  111. package/dist/cjs/af-footer.entry.cjs.js.map +1 -1
  112. package/dist/cjs/af-grid-callout.cjs.entry.js +1 -1
  113. package/dist/cjs/af-grid.cjs.entry.js +1 -1
  114. package/dist/cjs/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.cjs.js.map +1 -1
  115. package/dist/cjs/af-heading_5.cjs.entry.js +2 -2
  116. package/dist/cjs/af-icon-box.cjs.entry.js +1 -1
  117. package/dist/cjs/af-icon-button.cjs.entry.js +1 -1
  118. package/dist/cjs/af-icon-text.cjs.entry.js +1 -1
  119. package/dist/cjs/af-icon.cjs.entry.js +1 -1
  120. package/dist/cjs/af-illustrated-card.cjs.entry.js +2 -2
  121. package/dist/cjs/af-illustrated-card.entry.cjs.js.map +1 -1
  122. package/dist/cjs/af-image.cjs.entry.js +1 -1
  123. package/dist/cjs/af-in-page-banner.cjs.entry.js +2 -2
  124. package/dist/cjs/af-in-page-banner.entry.cjs.js.map +1 -1
  125. package/dist/cjs/af-inline.cjs.entry.js +1 -1
  126. package/dist/cjs/af-input.cjs.entry.js +1 -1
  127. package/dist/cjs/af-logo-well.cjs.entry.js +1 -1
  128. package/dist/cjs/af-nav-accordion-item.cjs.entry.js +1 -1
  129. package/dist/cjs/af-nav-accordion.cjs.entry.js +1 -1
  130. package/dist/cjs/af-nav-card.cjs.entry.js +1 -1
  131. package/dist/cjs/af-nav-menu-nest.cjs.entry.js +1 -1
  132. package/dist/cjs/af-nav-menu.cjs.entry.js +1 -1
  133. package/dist/cjs/af-number-badge.cjs.entry.js +1 -1
  134. package/dist/cjs/af-paperclip-decoration.cjs.entry.js +39 -0
  135. package/dist/cjs/af-paperclip-decoration.entry.cjs.js.map +1 -0
  136. package/dist/cjs/af-progress-line.cjs.entry.js +3 -3
  137. package/dist/cjs/af-radio.cjs.entry.js +1 -1
  138. package/dist/cjs/af-section.cjs.entry.js +3 -3
  139. package/dist/cjs/af-show.cjs.entry.js +2 -2
  140. package/dist/cjs/af-social-link.cjs.entry.js +2 -2
  141. package/dist/cjs/af-spacer.cjs.entry.js +2 -2
  142. package/dist/cjs/af-split-section.cjs.entry.js +3 -3
  143. package/dist/cjs/af-stack.cjs.entry.js +2 -2
  144. package/dist/cjs/af-stepper-step.cjs.entry.js +2 -2
  145. package/dist/cjs/af-stepper.cjs.entry.js +2 -2
  146. package/dist/cjs/af-switch.cjs.entry.js +1 -1
  147. package/dist/cjs/af-tab-bar.cjs.entry.js +1 -1
  148. package/dist/cjs/af-tab.cjs.entry.js +1 -1
  149. package/dist/cjs/af-tag.cjs.entry.js +1 -1
  150. package/dist/cjs/af-testimonial-carousel.cjs.entry.js +2 -2
  151. package/dist/cjs/af-testimonial-stat.cjs.entry.js +2 -2
  152. package/dist/cjs/af-testimonial.cjs.entry.js +3 -3
  153. package/dist/cjs/af-text-image-nest.cjs.entry.js +2 -2
  154. package/dist/cjs/af-text-image.cjs.entry.js +1 -1
  155. package/dist/cjs/af-textarea.cjs.entry.js +1 -1
  156. package/dist/cjs/af-theme-override.cjs.entry.js +2 -2
  157. package/dist/cjs/af-typography-lockup.cjs.entry.js +11 -5
  158. package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
  159. package/dist/cjs/af-video-container.cjs.entry.js +2 -2
  160. package/dist/cjs/af-visually-hidden.cjs.entry.js +2 -2
  161. package/dist/cjs/affinda.cjs.js +2 -2
  162. package/dist/cjs/{index-CcvVbx1D.js → index-BzZA0USq.js} +3 -3
  163. package/dist/cjs/index-BzZA0USq.js.map +1 -0
  164. package/dist/cjs/index.cjs.js +1 -1
  165. package/dist/cjs/loader.cjs.js +2 -2
  166. package/dist/collection/collection-manifest.json +1 -0
  167. package/dist/collection/components/af-card/af-card.css +4 -1
  168. package/dist/collection/components/af-client-carousel/af-client-carousel.css +36 -0
  169. package/dist/collection/components/af-client-carousel/af-client-carousel.js +58 -14
  170. package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -1
  171. package/dist/collection/components/af-feature-accordion/af-feature-accordion.css +27 -5
  172. package/dist/collection/components/af-footer/af-footer.css +5 -2
  173. package/dist/collection/components/af-illustrated-card/af-illustrated-card.css +5 -1
  174. package/dist/collection/components/af-in-page-banner/af-in-page-banner.css +6 -4
  175. package/dist/collection/components/af-navbar/af-navbar.css +4 -1
  176. package/dist/collection/components/af-paperclip-decoration/af-paperclip-decoration.css +11 -0
  177. package/dist/collection/components/af-paperclip-decoration/af-paperclip-decoration.js +152 -0
  178. package/dist/collection/components/af-paperclip-decoration/af-paperclip-decoration.js.map +1 -0
  179. package/dist/collection/components/af-progress-line/af-progress-line.js +2 -2
  180. package/dist/collection/components/af-section/af-section.js +2 -2
  181. package/dist/collection/components/af-show/af-show.js +1 -1
  182. package/dist/collection/components/af-social-link/af-social-link.js +1 -1
  183. package/dist/collection/components/af-spacer/af-spacer.js +1 -1
  184. package/dist/collection/components/af-split-section/af-split-section.js +2 -2
  185. package/dist/collection/components/af-stack/af-stack.js +1 -1
  186. package/dist/collection/components/af-stepper/af-stepper.js +1 -1
  187. package/dist/collection/components/af-stepper-step/af-stepper-step.js +1 -1
  188. package/dist/collection/components/af-testimonial/af-testimonial.js +2 -2
  189. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +1 -1
  190. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
  191. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +1 -1
  192. package/dist/collection/components/af-theme-override/af-theme-override.js +1 -1
  193. package/dist/collection/components/af-typography-lockup/af-typography-lockup.css +36 -12
  194. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +20 -8
  195. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +1 -1
  196. package/dist/collection/components/af-video-container/af-video-container.js +1 -1
  197. package/dist/collection/components/af-visually-hidden/af-visually-hidden.js +1 -1
  198. package/dist/components/af-accordion-item.js +1 -1
  199. package/dist/components/af-accordion.js +1 -1
  200. package/dist/components/af-aspect-ratio.js +1 -1
  201. package/dist/components/af-button-group.js +1 -1
  202. package/dist/components/af-button.js +1 -1
  203. package/dist/components/af-card.js +1 -1
  204. package/dist/components/af-center.js +1 -1
  205. package/dist/components/af-checkbox.js +1 -1
  206. package/dist/components/af-client-carousel.js +23 -7
  207. package/dist/components/af-client-carousel.js.map +1 -1
  208. package/dist/components/af-color-swatch.js +1 -1
  209. package/dist/components/af-contact-item.js +1 -1
  210. package/dist/components/af-container.js +1 -1
  211. package/dist/components/af-divider.js +1 -1
  212. package/dist/components/af-feature-accordion.js +2 -2
  213. package/dist/components/af-feature-accordion.js.map +1 -1
  214. package/dist/components/af-feature-card.js +1 -1
  215. package/dist/components/af-feature-grid.js +2 -2
  216. package/dist/components/af-fieldset.js +1 -1
  217. package/dist/components/af-footer-column.js +1 -1
  218. package/dist/components/af-footer-link.js +1 -1
  219. package/dist/components/af-footer.js +2 -2
  220. package/dist/components/af-footer.js.map +1 -1
  221. package/dist/components/af-grid-callout.js +2 -2
  222. package/dist/components/af-grid.js +1 -1
  223. package/dist/components/af-heading.js +1 -1
  224. package/dist/components/af-icon-box.js +1 -1
  225. package/dist/components/af-icon-button.js +1 -1
  226. package/dist/components/af-icon-text.js +4 -4
  227. package/dist/components/af-icon.js +1 -1
  228. package/dist/components/af-illustrated-card.js +1 -1
  229. package/dist/components/af-image.js +1 -1
  230. package/dist/components/af-in-page-banner.js +3 -3
  231. package/dist/components/af-in-page-banner.js.map +1 -1
  232. package/dist/components/af-inline.js +1 -1
  233. package/dist/components/af-input.js +1 -1
  234. package/dist/components/af-logo-well.js +1 -1
  235. package/dist/components/af-logo.js +1 -1
  236. package/dist/components/af-nav-accordion-item.js +1 -1
  237. package/dist/components/af-nav-accordion.js +1 -1
  238. package/dist/components/af-nav-card.js +1 -1
  239. package/dist/components/af-nav-item.js +1 -1
  240. package/dist/components/af-nav-menu-nest.js +1 -1
  241. package/dist/components/af-nav-menu.js +1 -1
  242. package/dist/components/af-navbar.js +1 -1
  243. package/dist/components/af-number-badge.js +1 -1
  244. package/dist/components/af-paperclip-decoration.d.ts +11 -0
  245. package/dist/components/af-paperclip-decoration.js +64 -0
  246. package/dist/components/af-paperclip-decoration.js.map +1 -0
  247. package/dist/components/af-progress-line.js +1 -1
  248. package/dist/components/af-radio.js +1 -1
  249. package/dist/components/af-section.js +4 -4
  250. package/dist/components/af-show.js +2 -2
  251. package/dist/components/af-social-link.js +2 -2
  252. package/dist/components/af-spacer.js +2 -2
  253. package/dist/components/af-split-section.js +4 -4
  254. package/dist/components/af-stack.js +2 -2
  255. package/dist/components/af-stepper-step.js +2 -2
  256. package/dist/components/af-stepper.js +2 -2
  257. package/dist/components/af-switch.js +1 -1
  258. package/dist/components/af-tab-bar.js +1 -1
  259. package/dist/components/af-tab.js +1 -1
  260. package/dist/components/af-tag.js +1 -1
  261. package/dist/components/af-testimonial-carousel.js +3 -3
  262. package/dist/components/af-testimonial-stat.js +4 -4
  263. package/dist/components/af-testimonial.js +6 -6
  264. package/dist/components/af-text-image-nest.js +2 -2
  265. package/dist/components/af-text-image.js +2 -2
  266. package/dist/components/af-text.js +1 -1
  267. package/dist/components/af-textarea.js +1 -1
  268. package/dist/components/af-theme-override.js +2 -2
  269. package/dist/components/af-typography-lockup.js +1 -1
  270. package/dist/components/af-video-container.js +4 -4
  271. package/dist/components/af-visually-hidden.js +2 -2
  272. package/dist/components/index.js +24 -24
  273. package/dist/components/{p-CNuja1ax.js → p--gChEc0P.js} +3 -3
  274. package/dist/components/{p-CNuja1ax.js.map → p--gChEc0P.js.map} +1 -1
  275. package/dist/components/{p-DCu8UsJv.js → p-BRDu9zN1.js} +3 -3
  276. package/dist/components/{p-DCu8UsJv.js.map → p-BRDu9zN1.js.map} +1 -1
  277. package/dist/components/{p-CSsp_M05.js → p-BROLmNeM.js} +3 -3
  278. package/dist/components/{p-CSsp_M05.js.map → p-BROLmNeM.js.map} +1 -1
  279. package/dist/components/{p-Dz4dEIxw.js → p-BT13eL0Y.js} +3 -3
  280. package/dist/components/{p-Dz4dEIxw.js.map → p-BT13eL0Y.js.map} +1 -1
  281. package/dist/components/{p-DAYoQm46.js → p-BW-FxZwa.js} +3 -3
  282. package/dist/components/{p-DAYoQm46.js.map → p-BW-FxZwa.js.map} +1 -1
  283. package/dist/components/{p-aAVeavhK.js → p-B_OoX__z.js} +3 -3
  284. package/dist/components/{p-aAVeavhK.js.map → p-B_OoX__z.js.map} +1 -1
  285. package/dist/components/{p-C0R_vg0S.js → p-BgXXQG75.js} +3 -3
  286. package/dist/components/{p-C0R_vg0S.js.map → p-BgXXQG75.js.map} +1 -1
  287. package/dist/components/{p-CKcuq0NU.js → p-Bh6Cfgtj.js} +3 -3
  288. package/dist/components/{p-CKcuq0NU.js.map → p-Bh6Cfgtj.js.map} +1 -1
  289. package/dist/components/{p-DqgLTGE0.js → p-C4G6votC.js} +3 -3
  290. package/dist/components/{p-DqgLTGE0.js.map → p-C4G6votC.js.map} +1 -1
  291. package/dist/components/{p-TfjpcU9q.js → p-C6-JATRR.js} +6 -6
  292. package/dist/components/{p-TfjpcU9q.js.map → p-C6-JATRR.js.map} +1 -1
  293. package/dist/components/p-CKLkuSI3.js +53 -0
  294. package/dist/components/p-CKLkuSI3.js.map +1 -0
  295. package/dist/components/{p-XrKBGe-M.js → p-CNzQtskW.js} +5 -5
  296. package/dist/components/{p-XrKBGe-M.js.map → p-CNzQtskW.js.map} +1 -1
  297. package/dist/components/{p-CHLm_AuW.js → p-CP8rLe_C.js} +3 -3
  298. package/dist/components/{p-CHLm_AuW.js.map → p-CP8rLe_C.js.map} +1 -1
  299. package/dist/components/{p-Bw8fdMnn.js → p-CX0pktY8.js} +3 -3
  300. package/dist/components/{p-Bw8fdMnn.js.map → p-CX0pktY8.js.map} +1 -1
  301. package/dist/components/{p-CAUqW6Mp.js → p-CYKk6Qhi.js} +3 -3
  302. package/dist/components/{p-CAUqW6Mp.js.map → p-CYKk6Qhi.js.map} +1 -1
  303. package/dist/components/{p-DkaLi-uL.js → p-CoL_hRAR.js} +3 -3
  304. package/dist/components/{p-DkaLi-uL.js.map → p-CoL_hRAR.js.map} +1 -1
  305. package/dist/components/{p-CB9GFAlk.js → p-D8DmhESZ.js} +3 -3
  306. package/dist/components/{p-CB9GFAlk.js.map → p-D8DmhESZ.js.map} +1 -1
  307. package/dist/components/{p-B3Yr4Hxx.js → p-DJC-C2BS.js} +3 -3
  308. package/dist/components/{p-B3Yr4Hxx.js.map → p-DJC-C2BS.js.map} +1 -1
  309. package/dist/components/{p-N0xV1Erp.js → p-DNeNJhuM.js} +14 -8
  310. package/dist/components/p-DNeNJhuM.js.map +1 -0
  311. package/dist/components/{p-DwhGQrZK.js → p-DO9J0XTo.js} +5 -5
  312. package/dist/components/{p-DwhGQrZK.js.map → p-DO9J0XTo.js.map} +1 -1
  313. package/dist/components/{p-CqQyDZ-4.js → p-DOgb6SUj.js} +3 -3
  314. package/dist/components/p-DOgb6SUj.js.map +1 -0
  315. package/dist/components/{p-Dxa6cHAb.js → p-DbVc-b1e.js} +3 -3
  316. package/dist/components/{p-Dxa6cHAb.js.map → p-DbVc-b1e.js.map} +1 -1
  317. package/dist/components/{p-D3oGtcJ5.js → p-Dd3nOGt_.js} +3 -3
  318. package/dist/components/{p-D3oGtcJ5.js.map → p-Dd3nOGt_.js.map} +1 -1
  319. package/dist/components/{p-DGBMGvZK.js → p-Dx_UXI2a.js} +3 -3
  320. package/dist/components/{p-DGBMGvZK.js.map → p-Dx_UXI2a.js.map} +1 -1
  321. package/dist/components/{p-DENib4OL.js → p-DyZaoX4Q.js} +3 -3
  322. package/dist/components/{p-DENib4OL.js.map → p-DyZaoX4Q.js.map} +1 -1
  323. package/dist/components/{p-DRujYIJW.js → p-HMlLQQwp.js} +5 -5
  324. package/dist/components/p-HMlLQQwp.js.map +1 -0
  325. package/dist/components/{p-DMOGClIa.js → p-NtJ_O8-z.js} +3 -3
  326. package/dist/components/{p-DMOGClIa.js.map → p-NtJ_O8-z.js.map} +1 -1
  327. package/dist/components/{p-BHAWxoQE.js → p-i_6TLQJ5.js} +4 -4
  328. package/dist/components/{p-BHAWxoQE.js.map → p-i_6TLQJ5.js.map} +1 -1
  329. package/dist/components/{p-D30gSxh2.js → p-kEqwmn80.js} +3 -3
  330. package/dist/components/{p-D30gSxh2.js.map → p-kEqwmn80.js.map} +1 -1
  331. package/dist/esm/af-accordion-item.entry.js +1 -1
  332. package/dist/esm/af-accordion.entry.js +1 -1
  333. package/dist/esm/af-aspect-ratio.entry.js +1 -1
  334. package/dist/esm/af-button-group.entry.js +1 -1
  335. package/dist/esm/af-button.entry.js +1 -1
  336. package/dist/esm/af-card.entry.js +2 -2
  337. package/dist/esm/af-card.entry.js.map +1 -1
  338. package/dist/esm/af-center.entry.js +1 -1
  339. package/dist/esm/af-checkbox.entry.js +1 -1
  340. package/dist/esm/af-client-carousel.entry.js +21 -6
  341. package/dist/esm/af-client-carousel.entry.js.map +1 -1
  342. package/dist/esm/af-color-swatch.entry.js +1 -1
  343. package/dist/esm/af-contact-item.entry.js +1 -1
  344. package/dist/esm/af-container.entry.js +1 -1
  345. package/dist/esm/af-divider.entry.js +1 -1
  346. package/dist/esm/af-feature-accordion.entry.js +2 -2
  347. package/dist/esm/af-feature-accordion.entry.js.map +1 -1
  348. package/dist/esm/af-feature-card.entry.js +1 -1
  349. package/dist/esm/af-feature-grid.entry.js +1 -1
  350. package/dist/esm/af-fieldset.entry.js +1 -1
  351. package/dist/esm/af-footer-column.entry.js +1 -1
  352. package/dist/esm/af-footer-link.entry.js +1 -1
  353. package/dist/esm/af-footer.entry.js +2 -2
  354. package/dist/esm/af-footer.entry.js.map +1 -1
  355. package/dist/esm/af-grid-callout.entry.js +1 -1
  356. package/dist/esm/af-grid.entry.js +1 -1
  357. package/dist/esm/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.js.map +1 -1
  358. package/dist/esm/af-heading_5.entry.js +2 -2
  359. package/dist/esm/af-icon-box.entry.js +1 -1
  360. package/dist/esm/af-icon-button.entry.js +1 -1
  361. package/dist/esm/af-icon-text.entry.js +1 -1
  362. package/dist/esm/af-icon.entry.js +1 -1
  363. package/dist/esm/af-illustrated-card.entry.js +2 -2
  364. package/dist/esm/af-illustrated-card.entry.js.map +1 -1
  365. package/dist/esm/af-image.entry.js +1 -1
  366. package/dist/esm/af-in-page-banner.entry.js +2 -2
  367. package/dist/esm/af-in-page-banner.entry.js.map +1 -1
  368. package/dist/esm/af-inline.entry.js +1 -1
  369. package/dist/esm/af-input.entry.js +1 -1
  370. package/dist/esm/af-logo-well.entry.js +1 -1
  371. package/dist/esm/af-nav-accordion-item.entry.js +1 -1
  372. package/dist/esm/af-nav-accordion.entry.js +1 -1
  373. package/dist/esm/af-nav-card.entry.js +1 -1
  374. package/dist/esm/af-nav-menu-nest.entry.js +1 -1
  375. package/dist/esm/af-nav-menu.entry.js +1 -1
  376. package/dist/esm/af-number-badge.entry.js +1 -1
  377. package/dist/esm/af-paperclip-decoration.entry.js +37 -0
  378. package/dist/esm/af-paperclip-decoration.entry.js.map +1 -0
  379. package/dist/esm/af-progress-line.entry.js +3 -3
  380. package/dist/esm/af-radio.entry.js +1 -1
  381. package/dist/esm/af-section.entry.js +3 -3
  382. package/dist/esm/af-show.entry.js +2 -2
  383. package/dist/esm/af-social-link.entry.js +2 -2
  384. package/dist/esm/af-spacer.entry.js +2 -2
  385. package/dist/esm/af-split-section.entry.js +3 -3
  386. package/dist/esm/af-stack.entry.js +2 -2
  387. package/dist/esm/af-stepper-step.entry.js +2 -2
  388. package/dist/esm/af-stepper.entry.js +2 -2
  389. package/dist/esm/af-switch.entry.js +1 -1
  390. package/dist/esm/af-tab-bar.entry.js +1 -1
  391. package/dist/esm/af-tab.entry.js +1 -1
  392. package/dist/esm/af-tag.entry.js +1 -1
  393. package/dist/esm/af-testimonial-carousel.entry.js +2 -2
  394. package/dist/esm/af-testimonial-stat.entry.js +2 -2
  395. package/dist/esm/af-testimonial.entry.js +3 -3
  396. package/dist/esm/af-text-image-nest.entry.js +2 -2
  397. package/dist/esm/af-text-image.entry.js +1 -1
  398. package/dist/esm/af-textarea.entry.js +1 -1
  399. package/dist/esm/af-theme-override.entry.js +2 -2
  400. package/dist/esm/af-typography-lockup.entry.js +11 -5
  401. package/dist/esm/af-typography-lockup.entry.js.map +1 -1
  402. package/dist/esm/af-video-container.entry.js +2 -2
  403. package/dist/esm/af-visually-hidden.entry.js +2 -2
  404. package/dist/esm/affinda.js +3 -3
  405. package/dist/esm/{index-nb89SRN6.js → index-MwnBSqEY.js} +3 -3
  406. package/dist/esm/index-MwnBSqEY.js.map +1 -0
  407. package/dist/esm/index.js +1 -1
  408. package/dist/esm/loader.js +3 -3
  409. package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +25 -12
  410. package/dist/types/components/af-paperclip-decoration/af-paperclip-decoration.d.ts +50 -0
  411. package/dist/types/components/af-typography-lockup/af-typography-lockup.d.ts +11 -4
  412. package/dist/types/components.d.ts +233 -46
  413. package/package.json +3 -3
  414. package/dist/affinda/p-07f9580c.entry.js +0 -2
  415. package/dist/affinda/p-50590601.entry.js +0 -2
  416. package/dist/affinda/p-570283f6.entry.js +0 -2
  417. package/dist/affinda/p-9229defb.entry.js +0 -2
  418. package/dist/affinda/p-9229defb.entry.js.map +0 -1
  419. package/dist/affinda/p-b14c1a4b.entry.js +0 -2
  420. package/dist/affinda/p-d60d1943.entry.js +0 -2
  421. package/dist/affinda/p-da999c10.entry.js +0 -2
  422. package/dist/affinda/p-nb89SRN6.js +0 -3
  423. package/dist/affinda/p-nb89SRN6.js.map +0 -1
  424. package/dist/cjs/index-CcvVbx1D.js.map +0 -1
  425. package/dist/components/p-BO4blShf.js +0 -53
  426. package/dist/components/p-BO4blShf.js.map +0 -1
  427. package/dist/components/p-CqQyDZ-4.js.map +0 -1
  428. package/dist/components/p-DRujYIJW.js.map +0 -1
  429. package/dist/components/p-N0xV1Erp.js.map +0 -1
  430. package/dist/esm/index-nb89SRN6.js.map +0 -1
  431. /package/dist/affinda/{p-11e7ddf3.entry.js.map → p-0137e7a5.entry.js.map} +0 -0
  432. /package/dist/affinda/{p-816deae3.entry.js.map → p-0201c8bd.entry.js.map} +0 -0
  433. /package/dist/affinda/{p-94adb381.entry.js.map → p-083fc528.entry.js.map} +0 -0
  434. /package/dist/affinda/{p-f9e3c2b7.entry.js.map → p-0e469ad2.entry.js.map} +0 -0
  435. /package/dist/affinda/{p-6eca2722.entry.js.map → p-15f0bd34.entry.js.map} +0 -0
  436. /package/dist/affinda/{p-2c655ae2.entry.js.map → p-1c96856a.entry.js.map} +0 -0
  437. /package/dist/affinda/{p-4cbdf940.entry.js.map → p-24e74c10.entry.js.map} +0 -0
  438. /package/dist/affinda/{p-ab0b621e.entry.js.map → p-2e6192eb.entry.js.map} +0 -0
  439. /package/dist/affinda/{p-102e8b8c.entry.js.map → p-35607741.entry.js.map} +0 -0
  440. /package/dist/affinda/{p-c7ba4e7f.entry.js.map → p-364ffa25.entry.js.map} +0 -0
  441. /package/dist/affinda/{p-af3f6e16.entry.js.map → p-3ee906de.entry.js.map} +0 -0
  442. /package/dist/affinda/{p-d7e29257.entry.js.map → p-41643147.entry.js.map} +0 -0
  443. /package/dist/affinda/{p-f9b6d1c6.entry.js.map → p-43f40921.entry.js.map} +0 -0
  444. /package/dist/affinda/{p-8d9d0cb3.entry.js.map → p-48aadea9.entry.js.map} +0 -0
  445. /package/dist/affinda/{p-cc22a8da.entry.js.map → p-49521f2e.entry.js.map} +0 -0
  446. /package/dist/affinda/{p-0f3267ea.entry.js.map → p-4a355b69.entry.js.map} +0 -0
  447. /package/dist/affinda/{p-9bb5202e.entry.js.map → p-4b154e23.entry.js.map} +0 -0
  448. /package/dist/affinda/{p-3ecf43aa.entry.js.map → p-4b2c0698.entry.js.map} +0 -0
  449. /package/dist/affinda/{p-12652bf5.entry.js.map → p-4f59b554.entry.js.map} +0 -0
  450. /package/dist/affinda/{p-401fc5b1.entry.js.map → p-50a67fb6.entry.js.map} +0 -0
  451. /package/dist/affinda/{p-a3865306.entry.js.map → p-5265e82e.entry.js.map} +0 -0
  452. /package/dist/affinda/{p-5e5d16dd.entry.js.map → p-56fe6e6e.entry.js.map} +0 -0
  453. /package/dist/affinda/{p-a4d39bdd.entry.js.map → p-5f6a5741.entry.js.map} +0 -0
  454. /package/dist/affinda/{p-432c7bfc.entry.js.map → p-6c33fee6.entry.js.map} +0 -0
  455. /package/dist/affinda/{p-a002c784.entry.js.map → p-6c58b283.entry.js.map} +0 -0
  456. /package/dist/affinda/{p-1dff35bf.entry.js.map → p-6e40dbdf.entry.js.map} +0 -0
  457. /package/dist/affinda/{p-23aa03dc.entry.js.map → p-76cb736d.entry.js.map} +0 -0
  458. /package/dist/affinda/{p-77ed47d5.entry.js.map → p-78518e6c.entry.js.map} +0 -0
  459. /package/dist/affinda/{p-e78112d9.entry.js.map → p-7867c2ff.entry.js.map} +0 -0
  460. /package/dist/affinda/{p-636045e8.entry.js.map → p-81706709.entry.js.map} +0 -0
  461. /package/dist/affinda/{p-5e444a9a.entry.js.map → p-862a2509.entry.js.map} +0 -0
  462. /package/dist/affinda/{p-7238fc21.entry.js.map → p-86f6dfdc.entry.js.map} +0 -0
  463. /package/dist/affinda/{p-bf941fa7.entry.js.map → p-8c4e3047.entry.js.map} +0 -0
  464. /package/dist/affinda/{p-e0163836.entry.js.map → p-90ef7baa.entry.js.map} +0 -0
  465. /package/dist/affinda/{p-159fe9b1.entry.js.map → p-94f51238.entry.js.map} +0 -0
  466. /package/dist/affinda/{p-3ca3e4dc.entry.js.map → p-95d4696a.entry.js.map} +0 -0
  467. /package/dist/affinda/{p-892f9bc3.entry.js.map → p-9aed7039.entry.js.map} +0 -0
  468. /package/dist/affinda/{p-bfc17d0c.entry.js.map → p-9c1e9bd8.entry.js.map} +0 -0
  469. /package/dist/affinda/{p-8da30e7a.entry.js.map → p-9eba91fd.entry.js.map} +0 -0
  470. /package/dist/affinda/{p-aa5c6cc0.entry.js.map → p-9f3e7116.entry.js.map} +0 -0
  471. /package/dist/affinda/{p-eb96f29b.entry.js.map → p-a35029eb.entry.js.map} +0 -0
  472. /package/dist/affinda/{p-5b3ff010.entry.js.map → p-a6eda8af.entry.js.map} +0 -0
  473. /package/dist/affinda/{p-ef41e743.entry.js.map → p-a71d528d.entry.js.map} +0 -0
  474. /package/dist/affinda/{p-e9f8ef54.entry.js.map → p-a84ae4a5.entry.js.map} +0 -0
  475. /package/dist/affinda/{p-2140698f.entry.js.map → p-ad41f905.entry.js.map} +0 -0
  476. /package/dist/affinda/{p-4e8bd716.entry.js.map → p-b2633acb.entry.js.map} +0 -0
  477. /package/dist/affinda/{p-d54abc45.entry.js.map → p-b2b28366.entry.js.map} +0 -0
  478. /package/dist/affinda/{p-648e2d76.entry.js.map → p-da2d84f7.entry.js.map} +0 -0
  479. /package/dist/affinda/{p-8f6884c8.entry.js.map → p-dbe7ab88.entry.js.map} +0 -0
  480. /package/dist/affinda/{p-be45f85c.entry.js.map → p-e055407b.entry.js.map} +0 -0
  481. /package/dist/affinda/{p-97ac8f5f.entry.js.map → p-e1e98cd6.entry.js.map} +0 -0
  482. /package/dist/affinda/{p-80c96efd.entry.js.map → p-edb1a010.entry.js.map} +0 -0
  483. /package/dist/affinda/{p-6bb831c5.entry.js.map → p-ef5857cf.entry.js.map} +0 -0
  484. /package/dist/affinda/{p-7b7d9c6a.entry.js.map → p-f9315f9e.entry.js.map} +0 -0
  485. /package/dist/affinda/{p-5ab389c6.entry.js.map → p-feb3d03f.entry.js.map} +0 -0
@@ -21,10 +21,10 @@ export class AfProgressLine {
21
21
  // Clamp progress between 0 and 1
22
22
  const clampedProgress = Math.max(0, Math.min(1, this.progress));
23
23
  const progressPercent = clampedProgress * 100;
24
- return (h(Host, { key: 'ab4db165b98bbd164b87d65f2e013d6719a04f52' }, h("div", { key: 'ef6ffbf323aff182c9de107d07992f032606e422', class: {
24
+ return (h(Host, { key: 'e831de02f8d1263448cf0441085cee677230374e' }, h("div", { key: '57eec77244c1f0c2a1a763d04b22751651069dbc', class: {
25
25
  'progress-line': true,
26
26
  [`progress-line--${this.orientation}`]: true,
27
- }, role: "progressbar", "aria-valuenow": Math.round(progressPercent), "aria-valuemin": 0, "aria-valuemax": 100 }, h("div", { key: 'e7e2ab3850a97dc4d37194132dcdd9c7f3d614e3', class: "progress-line__background" }), h("div", { key: '00c16c1a7eebbcd314db1f12ee4344d2b2bebc9d', class: "progress-line__active", style: { width: `${progressPercent}%` } }))));
27
+ }, role: "progressbar", "aria-valuenow": Math.round(progressPercent), "aria-valuemin": 0, "aria-valuemax": 100 }, h("div", { key: '9b3229746fef82f644953a189959c109104be511', class: "progress-line__background" }), h("div", { key: '0f5ec3a4a51b350b3b9cb26ea446167a40ce4ae4', class: "progress-line__active", style: { width: `${progressPercent}%` } }))));
28
28
  }
29
29
  static get is() { return "af-progress-line"; }
30
30
  static get encapsulation() { return "scoped"; }
@@ -13,8 +13,8 @@ export class AfSection {
13
13
  this.container = true;
14
14
  }
15
15
  render() {
16
- const content = h("slot", { key: '9a5e38a56170b65a8bc88191fef5cfd0c7d37cda' });
17
- return (h(Host, { key: '66fa1e6000cebdf1fa4ea850156ff54ec55f5952' }, h("div", { key: '883a3f086eab3b120afed962b2fff8986aaf0b25', class: `section padding-${this.padding} theme-${this.theme}` }, this.container ? (h("af-container", null, content)) : content)));
16
+ const content = h("slot", { key: 'a67ae3c0d94b8b4024ae3cb7c5c0e4f916e1f309' });
17
+ return (h(Host, { key: 'dcdea86aa5b6ce4e3cfe951a90fb441f8a16f7e4' }, h("div", { key: '478836c1570fe89c73405651e03828104a6c069f', class: `section padding-${this.padding} theme-${this.theme}` }, this.container ? (h("af-container", null, content)) : content)));
18
18
  }
19
19
  static get is() { return "af-section"; }
20
20
  static get encapsulation() { return "scoped"; }
@@ -18,7 +18,7 @@ export class AfShow {
18
18
  [`show-above-${this.above}`]: !!this.above,
19
19
  [`show-below-${this.below}`]: !!this.below,
20
20
  };
21
- return (h(Host, { key: '0e1fa54d81a3a30c5547bd08f83bf43bf357038f', class: classes }, h("slot", { key: '52af3932d49d463f0d807bb7654ecbff02f7db8e' })));
21
+ return (h(Host, { key: 'f1325c8342cdd48103996664aa410ba6da9c6566', class: classes }, h("slot", { key: '0ce4cacaa80ef10104549af9fa9068ea7d28a406' })));
22
22
  }
23
23
  static get is() { return "af-show"; }
24
24
  static get encapsulation() { return "shadow"; }
@@ -29,7 +29,7 @@ export class AfSocialLink {
29
29
  }
30
30
  }
31
31
  render() {
32
- return (h(Host, { key: '9cd9c78a4b964d2a43f9d85ff528abb63eea31e2' }, h("a", { key: '2fc0c44720aa6f58229a5ad285269ab7b73c07cc', href: this.href, target: "_blank", rel: "noopener noreferrer", class: "social-link", "aria-label": this.label }, this.renderIcon())));
32
+ return (h(Host, { key: '1637b2b00bf3808ad48979fde1248a6baae16d50' }, h("a", { key: '57cec6aa80ee7cedccdd03ac40f4931c6012bb48', href: this.href, target: "_blank", rel: "noopener noreferrer", class: "social-link", "aria-label": this.label }, this.renderIcon())));
33
33
  }
34
34
  static get is() { return "af-social-link"; }
35
35
  static get encapsulation() { return "scoped"; }
@@ -34,7 +34,7 @@ export class AfSpacer {
34
34
  style.height = sizeValue;
35
35
  }
36
36
  }
37
- return h(Host, { key: '667181ea8f243b47e0a54fbfc5441b7551d69082', style: style, "aria-hidden": "true" });
37
+ return h(Host, { key: '17bd07b1aeb2346f614d3cf5c663f545622a82af', style: style, "aria-hidden": "true" });
38
38
  }
39
39
  static get is() { return "af-spacer"; }
40
40
  static get encapsulation() { return "shadow"; }
@@ -26,14 +26,14 @@ export class AfSplitSection {
26
26
  this.container = true;
27
27
  }
28
28
  render() {
29
- const content = h("slot", { key: 'de39e81b9bc88da7323663c248faf7a4faf20f7f' });
29
+ const content = h("slot", { key: 'bb153079c8b48a5f2a8bb093f3344f1ed58448f0' });
30
30
  // Create the split background using CSS gradient
31
31
  const topColor = themeColors[this.topTheme];
32
32
  const bottomColor = themeColors[this.bottomTheme];
33
33
  const backgroundStyle = {
34
34
  background: `linear-gradient(to bottom, ${topColor} 0%, ${topColor} 50%, ${bottomColor} 50%, ${bottomColor} 100%)`
35
35
  };
36
- return (h(Host, { key: '4b140cb28dd9ec3dd2a5148737aada241dbbfb1d' }, h("div", { key: '7eeb358bbae0e98e403e39020482505248c3bb69', class: `split-section padding-${this.padding} top-theme-${this.topTheme}`, style: backgroundStyle }, this.container ? (h("af-container", null, content)) : content)));
36
+ return (h(Host, { key: 'ec4824dfd25f5e9122d7cfd4ad4df8768b949028' }, h("div", { key: '4de289849c8cb6cb7b70446fe6c4b8ca0f5ae648', class: `split-section padding-${this.padding} top-theme-${this.topTheme}`, style: backgroundStyle }, this.container ? (h("af-container", null, content)) : content)));
37
37
  }
38
38
  static get is() { return "af-split-section"; }
39
39
  static get encapsulation() { return "scoped"; }
@@ -55,7 +55,7 @@ export class AfStack {
55
55
  justifyContent: justifyMap[this.justify],
56
56
  flexWrap: this.wrap ? 'wrap' : 'nowrap',
57
57
  };
58
- return (h(Host, { key: '757fee5201ab0831e7dc51aa0f7dc2cad4279f95', style: style }, h("slot", { key: '06e94b64a308a3465e54d79e1a5ffb3758c6e626' })));
58
+ return (h(Host, { key: '8762617789ee74b277ccc75e01a11e0722d46d71', style: style }, h("slot", { key: '81cacfb758661b513d8e16db5d23a9a14c1d5c16' })));
59
59
  }
60
60
  static get is() { return "af-stack"; }
61
61
  static get encapsulation() { return "shadow"; }
@@ -40,7 +40,7 @@ export class AfStepper {
40
40
  });
41
41
  }
42
42
  render() {
43
- return (h(Host, { key: '0ca79e9f0006bfbe3ab6e18cceaafd0257f4defb', class: `stepper stepper--${this.orientation}` }, h("div", { key: '8682fe5e58f7df3fb9866966fb6c04715203fd87', class: "stepper__connector", "aria-hidden": "true" }), h("slot", { key: 'ecdf79d87ee099666521dbb6f8e32375dd829fea' })));
43
+ return (h(Host, { key: '857011a248f8c9adc46c3a1c69b55cd33f0f7b36', class: `stepper stepper--${this.orientation}` }, h("div", { key: '5654c1431e991475429e1594832509236dc1a3ba', class: "stepper__connector", "aria-hidden": "true" }), h("slot", { key: '23293d2c3cc463a714f1acdfad2a3fb6e1d3cf0a' })));
44
44
  }
45
45
  static get is() { return "af-stepper"; }
46
46
  static get encapsulation() { return "scoped"; }
@@ -18,7 +18,7 @@ export class AfStepperStep {
18
18
  this.index = 1;
19
19
  }
20
20
  render() {
21
- return (h(Host, { key: '36a45ffc037fb0efd1352fb1aa8482205faada04' }, h("span", { key: '93a75d705f40f920b3480607dfe2ed9f4ba37e55', class: "stepper-step__badge" }, this.index), h("div", { key: '2eb52b18397349da4fd3a9322fb7f1af0a271b4c', class: "stepper-step__content" }, h("div", { key: 'cf0fff2d73189a63e675017b1d431d2edc03e0c6', class: "stepper-step__heading" }, h("slot", { key: '6649a32664e82bc04e6f53c05d92050ad9b828d6', name: "heading" })), h("div", { key: '8f66cf21ff1b3e1bb4e817e6e85b418c1bdffd24', class: "stepper-step__body" }, h("slot", { key: 'a38c1c2c19d5d821ca513f098cd1b4fe6d007a92', name: "body" })))));
21
+ return (h(Host, { key: 'c4b991bb2f6a9e153ee940b8f5090340e40159e9' }, h("span", { key: '7cf8db3a00d2bf0ad3b84d0795b2bfae5bf9359a', class: "stepper-step__badge" }, this.index), h("div", { key: '3e7db621c832d3dfc5415a5b9159994fd1b2379c', class: "stepper-step__content" }, h("div", { key: 'fa4ed0245ae043579a46506d0427a2e6e9a0c9c5', class: "stepper-step__heading" }, h("slot", { key: '24f2c339c855548e72e4c1b708fcdf3f9ac0c030', name: "heading" })), h("div", { key: '1449b56f91745a08ed7a6404a94cee5c4c478015', class: "stepper-step__body" }, h("slot", { key: '8ad129720c27a408b91fcda2ccaf448fd0d91826', name: "body" })))));
22
22
  }
23
23
  static get is() { return "af-stepper-step"; }
24
24
  static get encapsulation() { return "scoped"; }
@@ -29,11 +29,11 @@ export class AfTestimonial {
29
29
  };
30
30
  }
31
31
  render() {
32
- return (h(Host, { key: 'ece3fb36d1f133e0429a59f8fe24dadae0d25e51' }, h("div", { key: '874ba61ab34378a92f496d9143b817d3cbbce2ef', class: "testimonial-card" }, h("div", { key: 'c7812c978b4b0ce7ad5f23e2fc429986c787ec4e', class: "testimonial-image" }, this.backgroundImage && (h("img", { key: 'd8ae7c602c4e7a78037f8ca1dfb1363136499942', src: this.backgroundImage, alt: "", class: "testimonial-bg-image" })), this.logoImage && (h("div", { key: '1e2b8f1252b1bf4d480bd453fd558c3ab8cf4888', class: "testimonial-logo" }, h("img", { key: '7d9dda13479c1f46f97bca5e3628ac03925c058a', src: this.logoImage, alt: "Company logo" })))), h("div", { key: '4bfabf5919bb04b966ba56aeba9d5ecbb473c6df', class: "testimonial-content" }, h("div", { key: 'ceb09f4ea4fa02cb1289501b94b87a378b8388bf', class: "testimonial-quote-section" }, h("div", { key: '26388df84c2fa2191edc36c844e46a131133741f', class: "testimonial-quote-icon" }, h("slot", { key: '76862abdc6eb6a79abe4e1024045252cc843fbd8', name: "quote-icon" }, h("af-icon", { key: 'ad6a19f54dd5c19d2fd41b6c8d8689e35ee5fc47', name: "quote", size: 48 }))), h("div", { key: '3773864a3bbb9bcb6788ca49b401eb59d140cbf2', class: "testimonial-text" }, h("slot", { key: 'e98fb304d608a76e95b08c3dc29e54ab556327b6', name: "quote-body" }, this.quote)), h("div", { key: 'e056c13a838325f20767bf35a3659d898843767d', class: "testimonial-attribution" }, this.attribution)), h("div", { key: 'b568594caa24f709dc3723c58eb3fa6263f229b9', class: "testimonial-stats" }, h("slot", { key: 'e463d0484e771db9fcf598f67adb6c8f4ebd2eae', name: "stats" })), h("div", { key: '3e645d385530722738d88c7764b41997385e5811', class: "testimonial-footer" }, h("div", { key: 'aa8d161c9a9030cb19f0e49e7614d665200b6c43', class: "testimonial-nav" }, this.showNavigation ? (
32
+ return (h(Host, { key: '8569be1c99d6591352606630716aa70ac4a9134d' }, h("div", { key: 'adb4ecf4962b068fc0d0bb9d7b74510b22bb2770', class: "testimonial-card" }, h("div", { key: 'db1decd942f7dbca4d0b75579c511e8b9e94bbc0', class: "testimonial-image" }, this.backgroundImage && (h("img", { key: '143fb0ef560023d9b6224623e363d99cc300bf03', src: this.backgroundImage, alt: "", class: "testimonial-bg-image" })), this.logoImage && (h("div", { key: 'f4b17a16293f12aa0d131944e2c69d31242f1105', class: "testimonial-logo" }, h("img", { key: '3b055aeb3b2eec2fa9df98592f5bcbe6a3a63cb0', src: this.logoImage, alt: "Company logo" })))), h("div", { key: 'f2731d7ed1364ca9dec2b104023908302fdff54a', class: "testimonial-content" }, h("div", { key: '9ae2d70a5a4dfbb890ce8aa9e475f80b04457fae', class: "testimonial-quote-section" }, h("div", { key: '5085969f61a7e1df88898cbd9c40400ad0ab91bc', class: "testimonial-quote-icon" }, h("slot", { key: 'a2ea0e72c9267548af02132d481ae73d158f9fd4', name: "quote-icon" }, h("af-icon", { key: '6ba9c790a1ed14d6b979f008bdb6fc4fb181d8ba', name: "quote", size: 48 }))), h("div", { key: 'd44e1066b30701dcd123a0a25390cf77578b8b6e', class: "testimonial-text" }, h("slot", { key: 'e7605429bac4865b598ead216287e5277eb99cd9', name: "quote-body" }, this.quote)), h("div", { key: '470481474dad18baa1fe22d6536bb5f5c02c8faa', class: "testimonial-attribution" }, this.attribution)), h("div", { key: 'd2fc708759c8b4c6638522bfc5f42589bccf7a82', class: "testimonial-stats" }, h("slot", { key: 'e3181ab8145788a9e374c2f9ea2d9823504c5543', name: "stats" })), h("div", { key: 'ff9a5d3b5cdb0da6e16ed2763680854686546f12', class: "testimonial-footer" }, h("div", { key: 'bc3e4a3229f8814e6140d40cab2f6997e212cd00', class: "testimonial-nav" }, this.showNavigation ? (
33
33
  // Render built-in navigation buttons
34
34
  h("div", { class: "testimonial-nav-buttons" }, h("af-icon-button", { variant: "secondary", disabled: !this.hasPrev, onClick: this.handlePrev, ariaLabel: "Previous testimonial" }, h("af-icon", { name: "arrow-left", size: 24 })), h("af-icon-button", { variant: "secondary", disabled: !this.hasNext, onClick: this.handleNext, ariaLabel: "Next testimonial" }, h("af-icon", { name: "arrow-right", size: 24 })))) : (
35
35
  // Allow custom navigation via slot
36
- h("slot", { name: "navigation" }))), this.readMoreLink && (h("af-button", { key: '3764047858f6661077ec1a696c327c6dc80c5056', variant: "secondary", href: this.readMoreLink }, "Read full story", h("af-icon", { key: 'bd1cc25cf7e59c030fc4c2d94593e1437e57cd81', slot: "icon-right", name: "arrow-right", size: 24 }))))))));
36
+ h("slot", { name: "navigation" }))), this.readMoreLink && (h("af-button", { key: '4ab4295ecbd966fe1749c2db6ac8c96c50b3bb0d', variant: "secondary", href: this.readMoreLink }, "Read full story", h("af-icon", { key: 'd96405c3f90f36768fa3dbe2dd9f83347f31f53e', slot: "icon-right", name: "arrow-right", size: 24 }))))))));
37
37
  }
38
38
  static get is() { return "af-testimonial"; }
39
39
  static get encapsulation() { return "scoped"; }
@@ -94,7 +94,7 @@ export class AfTestimonialCarousel {
94
94
  return (this.currentIndex + 1) / this.testimonialCount;
95
95
  }
96
96
  render() {
97
- return (h(Host, { key: 'eb9042ba8aa89a99b81f8f6b477b50e44f6ef747' }, h("div", { key: 'aeeab184ea0954c9be173c4cc0e18b9f840cbf4d', class: "testimonial-carousel" }, h("div", { key: '57e2d480f737af4e6edad66475d3394eb7d4f6d7', class: "testimonial-slides" }, h("slot", { key: '21167cf84f89dcecbc87f2d1010f6fcf77975ca1' })), this.testimonialCount > 1 && (h("div", { key: '3c3211d3d523a4cf8f9178294f3dba4b491a82dc', class: "testimonial-progress" }, h("af-progress-line", { key: '63013ffeb317f2365d27843611e4210a4baa4984', progress: this.getProgress() }))))));
97
+ return (h(Host, { key: '0b3ff300953cdb7f1ef8f4e6fa3f52811892c1a1' }, h("div", { key: '5106fa052b9e1b4d166a03b043305affadf20eb6', class: "testimonial-carousel" }, h("div", { key: '90ac4c283e3b5d6f2a20be866b6aa79e39b6adf6', class: "testimonial-slides" }, h("slot", { key: 'db7b93b76346a33092cbf69e1c3f150d393ff32d' })), this.testimonialCount > 1 && (h("div", { key: 'd81f5ff6ae68237385cf9c18428a0883c23dc766', class: "testimonial-progress" }, h("af-progress-line", { key: '7fed7be1bede0e492cd3b1df33e529778a34666b', progress: this.getProgress() }))))));
98
98
  }
99
99
  static get is() { return "af-testimonial-carousel"; }
100
100
  static get encapsulation() { return "scoped"; }
@@ -7,7 +7,7 @@ export class AfTestimonialStat {
7
7
  this.accentBorder = false;
8
8
  }
9
9
  render() {
10
- return (h(Host, { key: '3854dc5e24bdfdfc96ff889f65231ed765f1cb2a' }, h("div", { key: 'bde58050e26a65197cf0d3cdb1de385c00f4ea14', class: `stat ${this.accentBorder ? 'stat--accent' : ''}` }, h("af-heading", { key: '37fc274547ef0bc7ff3c9e539f88b996c496ad52', level: 2, class: "stat-value" }, this.value), h("af-text", { key: '83519d54647b39ac39649b22f93f21039e047d63', variant: "medium", class: "stat-description" }, this.description))));
10
+ return (h(Host, { key: '4e5314a0a58cc128f9f84bab0a414cfdf725d9a7' }, h("div", { key: '6b6a91315b2084942c9ba501c71673445d71cd3d', class: `stat ${this.accentBorder ? 'stat--accent' : ''}` }, h("af-heading", { key: 'f7f4b15a953a5cb0d67874f16f537d1846792a08', level: 2, class: "stat-value" }, this.value), h("af-text", { key: '8358643895dc0e8a9d06ec0fd119ee9065bbcdf4', variant: "medium", class: "stat-description" }, this.description))));
11
11
  }
12
12
  static get is() { return "af-testimonial-stat"; }
13
13
  static get encapsulation() { return "scoped"; }
@@ -29,7 +29,7 @@ export class AfTextImageNest {
29
29
  'nest__grid': true,
30
30
  [`grid-${this.layout}`]: true,
31
31
  };
32
- return (h(Host, { key: '016ac9532a42a1494490c49dcffa488f49d1d5c8' }, h("div", { key: '38e16d51c44d69323e0b66e51449564631cc9077', class: containerClasses }, h("div", { key: 'a4c596c73303dde115357b80ece979b1a383e6a8', class: "nest__content" }, h("div", { key: '8d097e97a0cf9149fc3f775b27010d6d6d6c50e4', class: gridClasses }, h("slot", { key: '25ae554ae7f9091e503f1692115e483e552c6170' })), h("div", { key: 'e6105ef43ed3438ee6cd7edc671fc627d60ffef0', class: "nest__footer" }, h("slot", { key: 'ede8c7fa69237042eea88a7d0ed54f3551764e68', name: "buttons" }))))));
32
+ return (h(Host, { key: '6236efcd1868aea0a8ae6647790ea6d6afb86b51' }, h("div", { key: '863feee89464ff752ad04fefa2011224fb98e13e', class: containerClasses }, h("div", { key: 'd09229ad450d4426defe18db4052eee784f0dde2', class: "nest__content" }, h("div", { key: '1c622be554abd392c0f29272a4f93ef74cebd83d', class: gridClasses }, h("slot", { key: 'e99c2569d4b764d7d27d52479f3d536aceb9d085' })), h("div", { key: '82e03d0f533835f4c25aeca901125ec390906037', class: "nest__footer" }, h("slot", { key: '132ff2ea9b3cd73d2dc5e634748ec65bf2ab959d', name: "buttons" }))))));
33
33
  }
34
34
  static get is() { return "af-text-image-nest"; }
35
35
  static get encapsulation() { return "scoped"; }
@@ -18,7 +18,7 @@ export class AfThemeOverride {
18
18
  this.theme = 'white';
19
19
  }
20
20
  render() {
21
- return (h(Host, { key: '67765126b10a933cf927169cab2c88135f9b9c9d' }, h("div", { key: '00e00242c786f339f93c30005e1bbdc2eb5cdae6', class: `theme-override theme-${this.theme}` }, h("slot", { key: '19b1cfc18e8d8218a2bc0e04fb70b2e2e3a68121' }))));
21
+ return (h(Host, { key: '6398825554ab3e9ab2a87012c4fb94e711663eb3' }, h("div", { key: '1353455a87e0efb9a5653938f13f5e325cec561d', class: `theme-override theme-${this.theme}` }, h("slot", { key: '60fa7a4fff57320ce113f693afc497bb63d3bc97' }))));
22
22
  }
23
23
  static get is() { return "af-theme-override"; }
24
24
  static get encapsulation() { return "scoped"; }
@@ -29,16 +29,18 @@
29
29
  gap: var(--space-4, 16px);
30
30
  }
31
31
 
32
- /* Heading 3 mobile, 4 desktop, 5 desktop: 12px gap */
32
+ /* Heading 3 mobile, 4 desktop, 5 desktop, card desktop: 12px gap */
33
33
  .breakpoint-mobile.heading-3.lockup,
34
34
  .breakpoint-desktop.heading-4.lockup,
35
- .breakpoint-desktop.heading-5.lockup {
35
+ .breakpoint-desktop.heading-5.lockup,
36
+ .breakpoint-desktop.heading-card.lockup {
36
37
  gap: var(--space-3, 12px);
37
38
  }
38
39
 
39
- /* Heading 4 mobile, 5 mobile: 8px gap */
40
+ /* Heading 4 mobile, 5 mobile, card mobile: 8px gap */
40
41
  .breakpoint-mobile.heading-4.lockup,
41
- .breakpoint-mobile.heading-5.lockup {
42
+ .breakpoint-mobile.heading-5.lockup,
43
+ .breakpoint-mobile.heading-card.lockup {
42
44
  gap: var(--space-2, 8px);
43
45
  }
44
46
 
@@ -110,16 +112,18 @@
110
112
  gap: var(--space-4, 16px);
111
113
  }
112
114
 
113
- /* Heading 3 mobile, 4 desktop, 5 desktop: 12px gap */
115
+ /* Heading 3 mobile, 4 desktop, 5 desktop, card desktop: 12px gap */
114
116
  .breakpoint-mobile.heading-3 .copy,
115
117
  .breakpoint-desktop.heading-4 .copy,
116
- .breakpoint-desktop.heading-5 .copy {
118
+ .breakpoint-desktop.heading-5 .copy,
119
+ .breakpoint-desktop.heading-card .copy {
117
120
  gap: var(--space-3, 12px);
118
121
  }
119
122
 
120
- /* Heading 4 mobile, 5 mobile: 8px gap */
123
+ /* Heading 4 mobile, 5 mobile, card mobile: 8px gap */
121
124
  .breakpoint-mobile.heading-4 .copy,
122
- .breakpoint-mobile.heading-5 .copy {
125
+ .breakpoint-mobile.heading-5 .copy,
126
+ .breakpoint-mobile.heading-card .copy {
123
127
  gap: var(--space-2, 8px);
124
128
  }
125
129
 
@@ -150,18 +154,31 @@
150
154
  font-size: var(--font-size-heading-2-desktop, 44px);
151
155
  }
152
156
 
157
+ /* Explicit px line-heights (38/30/24) for heading 3/4/5 replace the
158
+ * previous ratio-based values (1.1/1.2) — renders identically within a
159
+ * pixel but exposes a predictable token consumers can reference directly. */
153
160
  .breakpoint-desktop.heading-3 .heading {
154
161
  font-size: var(--font-size-heading-3-desktop, 34px);
162
+ line-height: var(--line-height-heading-3, 38px);
155
163
  }
156
164
 
157
165
  .breakpoint-desktop.heading-4 .heading {
158
166
  font-size: var(--font-size-heading-4-desktop, 24px);
159
- line-height: var(--line-height-heading-relaxed, 1.2);
167
+ line-height: var(--line-height-heading-4, 30px);
160
168
  }
161
169
 
162
170
  .breakpoint-desktop.heading-5 .heading {
163
171
  font-size: var(--font-size-heading-5-desktop, 20px);
164
- line-height: var(--line-height-heading-relaxed, 1.2);
172
+ line-height: var(--line-height-heading-5, 24px);
173
+ }
174
+
175
+ /* Card-title scale (22/20px): retires the bespoke heading sizes on
176
+ * diff-card h3, NumberedStepper title, and expert-insights related-card h3
177
+ * on the website. Sits between heading-4 (24px) and heading-5 (20px) at
178
+ * desktop, and between heading-4 and heading-5 (both 20px→18px) at mobile. */
179
+ .breakpoint-desktop.heading-card .heading {
180
+ font-size: var(--font-size-heading-card-desktop, 22px);
181
+ line-height: var(--line-height-heading-card, 28px);
165
182
  }
166
183
 
167
184
  /* Mobile heading sizes */
@@ -187,6 +204,11 @@
187
204
  line-height: var(--line-height-heading-normal, 1.1);
188
205
  }
189
206
 
207
+ .breakpoint-mobile.heading-card .heading {
208
+ font-size: var(--font-size-heading-card-mobile, 20px);
209
+ line-height: var(--line-height-heading-card, 28px);
210
+ }
211
+
190
212
  /* Description/body text - default (body/large) */
191
213
  .description {
192
214
  font-family: var(--typography-bodyfont, 'NeuSans', sans-serif);
@@ -215,12 +237,14 @@
215
237
  color: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670));
216
238
  }
217
239
 
218
- /* Description text size variations - smaller for heading 3 mobile, 4, and 5 */
240
+ /* Description text size variations - smaller for heading 3 mobile, 4, 5, and card */
219
241
  .breakpoint-mobile.heading-3 .description,
220
242
  .breakpoint-desktop.heading-4 .description,
221
243
  .breakpoint-mobile.heading-4 .description,
222
244
  .breakpoint-desktop.heading-5 .description,
223
- .breakpoint-mobile.heading-5 .description {
245
+ .breakpoint-mobile.heading-5 .description,
246
+ .breakpoint-desktop.heading-card .description,
247
+ .breakpoint-mobile.heading-card .description {
224
248
  font-size: var(--font-size-body-medium, 16px);
225
249
  line-height: var(--line-height-body-medium, 24px);
226
250
  }
@@ -4,7 +4,7 @@ import { h, Host } from "@stencil/core";
4
4
  * consistent spacing and alignment driven by the `headingSize` prop.
5
5
  *
6
6
  * **Semantic vs visual:** `headingSize` controls ONLY the visual scale
7
- * (the lockup sets font-size via a `heading-{1..5}` class). The semantic
7
+ * (the lockup sets font-size via a `heading-{1..5|card}` class). The semantic
8
8
  * level (h1-h6) is whatever the consumer slots in as default content.
9
9
  * Keep them aligned by convention so assistive tech and search engines
10
10
  * see the right hierarchy:
@@ -14,18 +14,25 @@ import { h, Host } from "@stencil/core";
14
14
  * headingSize=3 ↔ <h3>
15
15
  * headingSize=4 ↔ <h4>
16
16
  * headingSize=5 ↔ <h5>
17
+ * headingSize="card" ↔ <h3> (card-title scale: 22/20px)
17
18
  *
18
19
  * When a design asks for a visually small H1 or a visually large H3,
19
20
  * pass the two independently — just do it deliberately, not by
20
21
  * accident. A console warning fires in dev mode if the slotted tag is
21
22
  * more than one level away from the prop.
23
+ *
24
+ * The `card` variant renders slightly larger than `5` (22/20px vs 20/18px)
25
+ * and targets card titles in dense grids (diff-card h3, NumberedStepper
26
+ * title, expert-insights related-card h3 on the marketing site). It sits
27
+ * between `4` and `5` in the type ladder.
22
28
  */
23
29
  export class AfTypographyLockup {
24
30
  constructor() {
25
31
  /**
26
- * The heading size (1-5, where 1 is largest). Controls visual scale
32
+ * The heading size (1-5, or "card"; 1 is largest). Controls visual scale
27
33
  * only — pair with a matching <h1>-<h5> slotted element for correct
28
- * document outline (see component docblock).
34
+ * document outline (see component docblock). The `card` variant sits
35
+ * between 4 and 5 at 22/20px and is meant for card titles.
29
36
  */
30
37
  this.headingSize = 2;
31
38
  /**
@@ -90,6 +97,11 @@ export class AfTypographyLockup {
90
97
  return;
91
98
  const slottedLevel = Number(heading.tagName.slice(1));
92
99
  const expected = this.headingSize;
100
+ // The `card` variant is a named scale (card-title), not a semantic level.
101
+ // Skip the numeric-proximity check entirely — convention is <h3>, but
102
+ // consumers may legitimately pair it with <h2>-<h4> depending on context.
103
+ if (expected === 'card')
104
+ return;
93
105
  if (Math.abs(slottedLevel - expected) > 1) {
94
106
  // eslint-disable-next-line no-console
95
107
  console.warn(`[af-typography-lockup] heading-size=${expected} paired with <${heading.tagName.toLowerCase()}>; ` +
@@ -126,7 +138,7 @@ export class AfTypographyLockup {
126
138
  [`align-${effectiveButtonsAlignment}`]: true
127
139
  };
128
140
  const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};
129
- return (h(Host, { key: '9b31ef730abc5e33919d32480e260937ae450529' }, h("div", { key: '95d33308deeb9c5488a89ef7161322a25b2e348f', class: containerClasses }, h("div", { key: '78cff6a371d382a9ff69d06d25180efd667958ab', class: "copy", style: copyStyle }, h("div", { key: '963e6233660bbe45084f42a70e0a1d54236c514e', class: headingClasses, part: "heading" }, h("slot", { key: 'b0b90701b673581cc08be3f79dea8068a85050ab' })), h("div", { key: 'db4b15e80e9bbe683b425e3cc8e92a2fa00774e1', class: descriptionClasses, part: "body", hidden: !this.hasDescription }, h("slot", { key: 'd581dab0571d6e400be15fa6a285d0774f5dc978', name: "description", ref: (el) => (this.descriptionSlot = el) }))), h("div", { key: 'fb160cbfc354f41eefe600f295c3d86146eb6065', class: buttonsClasses, part: "buttons", hidden: !this.hasButtons }, h("slot", { key: 'a801bbb9ac25136b0073f68ab05ae7738d6079e5', name: "buttons", ref: (el) => (this.buttonsSlot = el) })))));
141
+ return (h(Host, { key: 'c4598149d2f3097c4dcd9c0772d7d964bf22a8c6' }, h("div", { key: 'ed1cfbba38c406dccbef2db200895d34e15453eb', class: containerClasses }, h("div", { key: '0664b846ad217e406d220765ed325e10698753e1', class: "copy", style: copyStyle }, h("div", { key: '45bda8dc3ace9cc57127384792379ca208e70826', class: headingClasses, part: "heading" }, h("slot", { key: 'f2125a029762d4813007acaddd2e4e858329e031' })), h("div", { key: '276339fcd8ab195b874a59c755eff42572f9e647', class: descriptionClasses, part: "body", hidden: !this.hasDescription }, h("slot", { key: 'd5d8fc98e3a3926931f598d44f1808ad3cc13905', name: "description", ref: (el) => (this.descriptionSlot = el) }))), h("div", { key: '8a540da24e2e242891549bbfe0848c5af6b8f8be', class: buttonsClasses, part: "buttons", hidden: !this.hasButtons }, h("slot", { key: 'e1cd55e1ca1e99a58a93e14180a817ee63ee15cd', name: "buttons", ref: (el) => (this.buttonsSlot = el) })))));
130
142
  }
131
143
  static get is() { return "af-typography-lockup"; }
132
144
  static get encapsulation() { return "shadow"; }
@@ -143,18 +155,18 @@ export class AfTypographyLockup {
143
155
  static get properties() {
144
156
  return {
145
157
  "headingSize": {
146
- "type": "number",
158
+ "type": "any",
147
159
  "mutable": false,
148
160
  "complexType": {
149
- "original": "1 | 2 | 3 | 4 | 5",
150
- "resolved": "1 | 2 | 3 | 4 | 5",
161
+ "original": "1 | 2 | 3 | 4 | 5 | 'card'",
162
+ "resolved": "\"card\" | 1 | 2 | 3 | 4 | 5",
151
163
  "references": {}
152
164
  },
153
165
  "required": false,
154
166
  "optional": false,
155
167
  "docs": {
156
168
  "tags": [],
157
- "text": "The heading size (1-5, where 1 is largest). Controls visual scale\nonly \u2014 pair with a matching <h1>-<h5> slotted element for correct\ndocument outline (see component docblock)."
169
+ "text": "The heading size (1-5, or \"card\"; 1 is largest). Controls visual scale\nonly \u2014 pair with a matching <h1>-<h5> slotted element for correct\ndocument outline (see component docblock). The `card` variant sits\nbetween 4 and 5 at 22/20px and is meant for card titles."
158
170
  },
159
171
  "getter": false,
160
172
  "setter": false,
@@ -1 +1 @@
1
- {"version":3,"file":"af-typography-lockup.js","sourceRoot":"","sources":["../../../src/components/af-typography-lockup/af-typography-lockup.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Prop, State, Host } from '@stencil/core';\n\ntype TextAlign = 'left' | 'center' | 'right' | 'justify';\n\n/**\n * Marketing-style composition of heading + description + buttons with\n * consistent spacing and alignment driven by the `headingSize` prop.\n *\n * **Semantic vs visual:** `headingSize` controls ONLY the visual scale\n * (the lockup sets font-size via a `heading-{1..5}` class). The semantic\n * level (h1-h6) is whatever the consumer slots in as default content.\n * Keep them aligned by convention so assistive tech and search engines\n * see the right hierarchy:\n *\n * headingSize=1 ↔ <h1> (or <h2> on non-top-of-page sections)\n * headingSize=2 ↔ <h2>\n * headingSize=3 ↔ <h3>\n * headingSize=4 ↔ <h4>\n * headingSize=5 ↔ <h5>\n *\n * When a design asks for a visually small H1 or a visually large H3,\n * pass the two independently — just do it deliberately, not by\n * accident. A console warning fires in dev mode if the slotted tag is\n * more than one level away from the prop.\n */\n@Component({\n tag: 'af-typography-lockup',\n styleUrl: 'af-typography-lockup.css',\n shadow: true\n})\nexport class AfTypographyLockup {\n @Element() el!: HTMLElement;\n\n /**\n * The heading size (1-5, where 1 is largest). Controls visual scale\n * only — pair with a matching <h1>-<h5> slotted element for correct\n * document outline (see component docblock).\n */\n @Prop() headingSize: 1 | 2 | 3 | 4 | 5 = 2;\n\n /**\n * The breakpoint for responsive typography\n */\n @Prop() breakpoint: 'desktop' | 'mobile' = 'desktop';\n\n /**\n * Text alignment for the entire lockup (heading and description).\n * Can be overridden individually with headingAlignment and descriptionAlignment.\n */\n @Prop() textAlignment: TextAlign = 'left';\n\n /**\n * Heading text alignment. Falls back to textAlignment if not specified.\n */\n @Prop() headingAlignment?: TextAlign;\n\n /**\n * Description text alignment. Falls back to textAlignment if not specified.\n */\n @Prop() descriptionAlignment?: TextAlign;\n\n /**\n * Button layout direction (horizontal or vertical stacking)\n */\n @Prop() buttonLayout: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * Buttons position alignment. Falls back to textAlignment if not specified.\n */\n @Prop() buttonsAlignment?: TextAlign;\n\n /**\n * Maximum width for the copy section (in pixels)\n */\n @Prop() maxWidth?: number;\n\n /**\n * Heading colour variant. Matches the Webflow pattern of `h1.primary` vs\n * `h1.secondary`, where \"secondary\" renders in the theme's accent/heading-\n * secondary colour (soft-clay on most themes).\n * - `primary` (default) - uses `--af-typography-heading-primary`\n * - `secondary` - uses `--af-typography-heading-secondary`\n */\n @Prop() headingColor: 'primary' | 'secondary' = 'primary';\n\n /**\n * Description colour variant. Same pattern as `headingColor`; useful for\n * hero-style lockups where the description is rendered in the accent colour.\n * - `default` (default) - uses `--af-typography-body-default`\n * - `secondary` - uses `--af-typography-heading-secondary`\n */\n @Prop() descriptionColor: 'default' | 'secondary' = 'default';\n\n /**\n * Whether the consumer passed anything into the description / buttons\n * slots. The CSS `:empty` selector can't help here — the `<slot>`\n * element itself counts as a child, so the wrapper divs would always\n * render as empty-but-visible lines of gap. Tracked on mount and on\n * any `slotchange` so wrappers collapse cleanly when there's nothing\n * to show.\n */\n @State() hasDescription: boolean = false;\n @State() hasButtons: boolean = false;\n\n private descriptionSlot?: HTMLSlotElement;\n private buttonsSlot?: HTMLSlotElement;\n\n componentDidLoad() {\n this.syncSlotState();\n this.descriptionSlot?.addEventListener('slotchange', this.syncSlotState);\n this.buttonsSlot?.addEventListener('slotchange', this.syncSlotState);\n // Dev-time check that the slotted semantic tag (h1-h6) is within one\n // level of the visual headingSize. Pairs with the class-level docblock;\n // silent in production unless the author explicitly turned on dev mode\n // via `window.__AF_STRICT_HEADINGS__`.\n if (typeof window === 'undefined') return;\n const strict = (window as unknown as { __AF_STRICT_HEADINGS__?: boolean })\n .__AF_STRICT_HEADINGS__;\n if (!strict) return;\n const heading = Array.from(this.el.children).find(\n (child) => !(child as HTMLElement).hasAttribute('slot') && /^h[1-6]$/i.test(child.tagName),\n );\n if (!heading) return;\n const slottedLevel = Number(heading.tagName.slice(1));\n const expected = this.headingSize;\n if (Math.abs(slottedLevel - expected) > 1) {\n // eslint-disable-next-line no-console\n console.warn(\n `[af-typography-lockup] heading-size=${expected} paired with <${heading.tagName.toLowerCase()}>; ` +\n `expected an <h${expected}> for document outline. Pass deliberately or align the two.`,\n );\n }\n }\n\n disconnectedCallback() {\n this.descriptionSlot?.removeEventListener('slotchange', this.syncSlotState);\n this.buttonsSlot?.removeEventListener('slotchange', this.syncSlotState);\n }\n\n private syncSlotState = () => {\n this.hasDescription = (this.descriptionSlot?.assignedNodes({ flatten: true }).length ?? 0) > 0;\n this.hasButtons = (this.buttonsSlot?.assignedNodes({ flatten: true }).length ?? 0) > 0;\n };\n\n render() {\n const effectiveHeadingAlignment = this.headingAlignment ?? this.textAlignment;\n const effectiveDescriptionAlignment = this.descriptionAlignment ?? this.textAlignment;\n const effectiveButtonsAlignment = this.buttonsAlignment ?? this.textAlignment;\n\n const containerClasses = {\n 'lockup': true,\n [`text-${this.textAlignment}`]: true,\n [`layout-${this.buttonLayout}`]: true,\n [`heading-${this.headingSize}`]: true,\n [`breakpoint-${this.breakpoint}`]: true\n };\n\n const headingClasses = {\n 'heading': true,\n [`align-${effectiveHeadingAlignment}`]: true,\n [`heading-color-${this.headingColor}`]: true\n };\n\n const descriptionClasses = {\n 'description': true,\n [`align-${effectiveDescriptionAlignment}`]: true,\n [`description-color-${this.descriptionColor}`]: true\n };\n\n const buttonsClasses = {\n 'buttons': true,\n [`align-${effectiveButtonsAlignment}`]: true\n };\n\n const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};\n\n return (\n <Host>\n <div class={containerClasses}>\n <div class=\"copy\" style={copyStyle}>\n <div class={headingClasses} part=\"heading\">\n <slot></slot>\n </div>\n <div class={descriptionClasses} part=\"body\" hidden={!this.hasDescription}>\n <slot name=\"description\" ref={(el) => (this.descriptionSlot = el as HTMLSlotElement)}></slot>\n </div>\n </div>\n <div class={buttonsClasses} part=\"buttons\" hidden={!this.hasButtons}>\n <slot name=\"buttons\" ref={(el) => (this.buttonsSlot = el as HTMLSlotElement)}></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"af-typography-lockup.js","sourceRoot":"","sources":["../../../src/components/af-typography-lockup/af-typography-lockup.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Prop, State, Host } from '@stencil/core';\n\ntype TextAlign = 'left' | 'center' | 'right' | 'justify';\n\n/**\n * Marketing-style composition of heading + description + buttons with\n * consistent spacing and alignment driven by the `headingSize` prop.\n *\n * **Semantic vs visual:** `headingSize` controls ONLY the visual scale\n * (the lockup sets font-size via a `heading-{1..5|card}` class). The semantic\n * level (h1-h6) is whatever the consumer slots in as default content.\n * Keep them aligned by convention so assistive tech and search engines\n * see the right hierarchy:\n *\n * headingSize=1 ↔ <h1> (or <h2> on non-top-of-page sections)\n * headingSize=2 ↔ <h2>\n * headingSize=3 ↔ <h3>\n * headingSize=4 ↔ <h4>\n * headingSize=5 ↔ <h5>\n * headingSize=\"card\" ↔ <h3> (card-title scale: 22/20px)\n *\n * When a design asks for a visually small H1 or a visually large H3,\n * pass the two independently — just do it deliberately, not by\n * accident. A console warning fires in dev mode if the slotted tag is\n * more than one level away from the prop.\n *\n * The `card` variant renders slightly larger than `5` (22/20px vs 20/18px)\n * and targets card titles in dense grids (diff-card h3, NumberedStepper\n * title, expert-insights related-card h3 on the marketing site). It sits\n * between `4` and `5` in the type ladder.\n */\n@Component({\n tag: 'af-typography-lockup',\n styleUrl: 'af-typography-lockup.css',\n shadow: true\n})\nexport class AfTypographyLockup {\n @Element() el!: HTMLElement;\n\n /**\n * The heading size (1-5, or \"card\"; 1 is largest). Controls visual scale\n * only — pair with a matching <h1>-<h5> slotted element for correct\n * document outline (see component docblock). The `card` variant sits\n * between 4 and 5 at 22/20px and is meant for card titles.\n */\n @Prop() headingSize: 1 | 2 | 3 | 4 | 5 | 'card' = 2;\n\n /**\n * The breakpoint for responsive typography\n */\n @Prop() breakpoint: 'desktop' | 'mobile' = 'desktop';\n\n /**\n * Text alignment for the entire lockup (heading and description).\n * Can be overridden individually with headingAlignment and descriptionAlignment.\n */\n @Prop() textAlignment: TextAlign = 'left';\n\n /**\n * Heading text alignment. Falls back to textAlignment if not specified.\n */\n @Prop() headingAlignment?: TextAlign;\n\n /**\n * Description text alignment. Falls back to textAlignment if not specified.\n */\n @Prop() descriptionAlignment?: TextAlign;\n\n /**\n * Button layout direction (horizontal or vertical stacking)\n */\n @Prop() buttonLayout: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * Buttons position alignment. Falls back to textAlignment if not specified.\n */\n @Prop() buttonsAlignment?: TextAlign;\n\n /**\n * Maximum width for the copy section (in pixels)\n */\n @Prop() maxWidth?: number;\n\n /**\n * Heading colour variant. Matches the Webflow pattern of `h1.primary` vs\n * `h1.secondary`, where \"secondary\" renders in the theme's accent/heading-\n * secondary colour (soft-clay on most themes).\n * - `primary` (default) - uses `--af-typography-heading-primary`\n * - `secondary` - uses `--af-typography-heading-secondary`\n */\n @Prop() headingColor: 'primary' | 'secondary' = 'primary';\n\n /**\n * Description colour variant. Same pattern as `headingColor`; useful for\n * hero-style lockups where the description is rendered in the accent colour.\n * - `default` (default) - uses `--af-typography-body-default`\n * - `secondary` - uses `--af-typography-heading-secondary`\n */\n @Prop() descriptionColor: 'default' | 'secondary' = 'default';\n\n /**\n * Whether the consumer passed anything into the description / buttons\n * slots. The CSS `:empty` selector can't help here — the `<slot>`\n * element itself counts as a child, so the wrapper divs would always\n * render as empty-but-visible lines of gap. Tracked on mount and on\n * any `slotchange` so wrappers collapse cleanly when there's nothing\n * to show.\n */\n @State() hasDescription: boolean = false;\n @State() hasButtons: boolean = false;\n\n private descriptionSlot?: HTMLSlotElement;\n private buttonsSlot?: HTMLSlotElement;\n\n componentDidLoad() {\n this.syncSlotState();\n this.descriptionSlot?.addEventListener('slotchange', this.syncSlotState);\n this.buttonsSlot?.addEventListener('slotchange', this.syncSlotState);\n // Dev-time check that the slotted semantic tag (h1-h6) is within one\n // level of the visual headingSize. Pairs with the class-level docblock;\n // silent in production unless the author explicitly turned on dev mode\n // via `window.__AF_STRICT_HEADINGS__`.\n if (typeof window === 'undefined') return;\n const strict = (window as unknown as { __AF_STRICT_HEADINGS__?: boolean })\n .__AF_STRICT_HEADINGS__;\n if (!strict) return;\n const heading = Array.from(this.el.children).find(\n (child) => !(child as HTMLElement).hasAttribute('slot') && /^h[1-6]$/i.test(child.tagName),\n );\n if (!heading) return;\n const slottedLevel = Number(heading.tagName.slice(1));\n const expected = this.headingSize;\n // The `card` variant is a named scale (card-title), not a semantic level.\n // Skip the numeric-proximity check entirely — convention is <h3>, but\n // consumers may legitimately pair it with <h2>-<h4> depending on context.\n if (expected === 'card') return;\n if (Math.abs(slottedLevel - expected) > 1) {\n // eslint-disable-next-line no-console\n console.warn(\n `[af-typography-lockup] heading-size=${expected} paired with <${heading.tagName.toLowerCase()}>; ` +\n `expected an <h${expected}> for document outline. Pass deliberately or align the two.`,\n );\n }\n }\n\n disconnectedCallback() {\n this.descriptionSlot?.removeEventListener('slotchange', this.syncSlotState);\n this.buttonsSlot?.removeEventListener('slotchange', this.syncSlotState);\n }\n\n private syncSlotState = () => {\n this.hasDescription = (this.descriptionSlot?.assignedNodes({ flatten: true }).length ?? 0) > 0;\n this.hasButtons = (this.buttonsSlot?.assignedNodes({ flatten: true }).length ?? 0) > 0;\n };\n\n render() {\n const effectiveHeadingAlignment = this.headingAlignment ?? this.textAlignment;\n const effectiveDescriptionAlignment = this.descriptionAlignment ?? this.textAlignment;\n const effectiveButtonsAlignment = this.buttonsAlignment ?? this.textAlignment;\n\n const containerClasses = {\n 'lockup': true,\n [`text-${this.textAlignment}`]: true,\n [`layout-${this.buttonLayout}`]: true,\n [`heading-${this.headingSize}`]: true,\n [`breakpoint-${this.breakpoint}`]: true\n };\n\n const headingClasses = {\n 'heading': true,\n [`align-${effectiveHeadingAlignment}`]: true,\n [`heading-color-${this.headingColor}`]: true\n };\n\n const descriptionClasses = {\n 'description': true,\n [`align-${effectiveDescriptionAlignment}`]: true,\n [`description-color-${this.descriptionColor}`]: true\n };\n\n const buttonsClasses = {\n 'buttons': true,\n [`align-${effectiveButtonsAlignment}`]: true\n };\n\n const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};\n\n return (\n <Host>\n <div class={containerClasses}>\n <div class=\"copy\" style={copyStyle}>\n <div class={headingClasses} part=\"heading\">\n <slot></slot>\n </div>\n <div class={descriptionClasses} part=\"body\" hidden={!this.hasDescription}>\n <slot name=\"description\" ref={(el) => (this.descriptionSlot = el as HTMLSlotElement)}></slot>\n </div>\n </div>\n <div class={buttonsClasses} part=\"buttons\" hidden={!this.hasButtons}>\n <slot name=\"buttons\" ref={(el) => (this.buttonsSlot = el as HTMLSlotElement)}></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -42,7 +42,7 @@ export class AfVideoContainer {
42
42
  };
43
43
  }
44
44
  render() {
45
- return (h(Host, { key: '805ef2cb5883f2589729c8f01a6912d9649931ed' }, h("div", { key: '0378ad7aa7ba09981fc87b8701e056cfd71c7ff2', class: "video-container" }, h("div", { key: '0d6581e16ee68472b37d1d7f5135f3ce5b6312a0', class: "video-container__top" }, h("slot", { key: '8802570242c658b176405ab1493254c4c3473d4a', name: "top" })), h("div", { key: 'ff73de6c3dc1597acbaf707dbfcb5559fde6ebdb', class: "video-container__video" }, h("af-aspect-ratio", { key: '092c02fe25891ef4436056056c1443bfe35631ab', ratio: "16:9" }, h("div", { key: '0e1def94ac6e243af93c67e13c1fb7d743eeb808', class: "video-container__thumbnail-wrapper" }, this.videoThumbnailUrl && (h("img", { key: '9437d1ee258da0548225edd8f6f38f3ac1984e66', src: this.videoThumbnailUrl, alt: this.videoAlt, class: "video-container__thumbnail", loading: "lazy" })), h("button", { key: '0269c801acca11d95e383a9d588ba07b30fa28a2', class: "video-container__play-button", onClick: this.handlePlayClick, "aria-label": "Play video", type: "button" }, h("af-icon", { key: '85ba1f8c72057d948ab6c06cdf76be075f81f9d7', name: "play", size: 24 }))))), h("div", { key: '4b50dd7066e2f0390052d0042d762f7e3d3beb1a', class: "video-container__bottom" }, h("slot", { key: 'ef00f995dc3e81e0197846d672701c829a8d61d1', name: "bottom" })))));
45
+ return (h(Host, { key: 'f05355faddc6ea71285398ae46a648b11d919969' }, h("div", { key: '98bb4043023aefe2a9a75d60ff8c3d3349464c39', class: "video-container" }, h("div", { key: 'e72cf9ebebc3fa965bc676b14eed7272d6216c0e', class: "video-container__top" }, h("slot", { key: '638a975a8b805e802ea4a6badcff49b35001da5c', name: "top" })), h("div", { key: '7cbbf984f3680bd6a120a1d5e74bef034334a8bb', class: "video-container__video" }, h("af-aspect-ratio", { key: '76e845c0c959584fa0cd41ac88f33028591c63f6', ratio: "16:9" }, h("div", { key: '796aba9a4180d9ed69e821159a981a1043e0ac8c', class: "video-container__thumbnail-wrapper" }, this.videoThumbnailUrl && (h("img", { key: '0762654f68c216ad26152279174a2b124e5d5150', src: this.videoThumbnailUrl, alt: this.videoAlt, class: "video-container__thumbnail", loading: "lazy" })), h("button", { key: 'e39fe70e65f54a1075d77ea5d4314e88e69febe6', class: "video-container__play-button", onClick: this.handlePlayClick, "aria-label": "Play video", type: "button" }, h("af-icon", { key: '44ef1e1d5ef606e8cf3cb2adb1ee2845da85d910', name: "play", size: 24 }))))), h("div", { key: '861da1a01d91cefad8bd379f75113cfc978be76b', class: "video-container__bottom" }, h("slot", { key: 'ba43d1a4104a69048b5e38965f613734231e9dcb', name: "bottom" })))));
46
46
  }
47
47
  static get is() { return "af-video-container"; }
48
48
  static get encapsulation() { return "scoped"; }
@@ -15,7 +15,7 @@ export class AfVisuallyHidden {
15
15
  this.focusable = false;
16
16
  }
17
17
  render() {
18
- return (h(Host, { key: '9ce559b8f54328432497181c2e8c7a4136ddd67d', class: { 'focusable': this.focusable } }, h("slot", { key: '4d877b02acf7b1ab61dca5e72b4d76c37a9fc7c2' })));
18
+ return (h(Host, { key: 'f687eddee200aa53700847e5bf237656db0d33df', class: { 'focusable': this.focusable } }, h("slot", { key: '96e16af57c3b73cc0a338325b9baec14ae4cce1b' })));
19
19
  }
20
20
  static get is() { return "af-visually-hidden"; }
21
21
  static get encapsulation() { return "shadow"; }
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, d as createEvent, h, c as Host } from './p-CqQyDZ-4.js';
1
+ import { p as proxyCustomElement, H, d as createEvent, h, c as Host } from './p-DOgb6SUj.js';
2
2
 
3
3
  const afAccordionItemCss = ":host{display:block;width:100%}.accordion-item{width:100%}.trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:16px 0;background:transparent;border:none;border-bottom:1px solid var(--af-background-border-subtle, #e8eeed);cursor:pointer;font:inherit;text-align:left;color:var(--af-typography-body-dark, #14343b);transition:background-color 0.2s ease}.trigger:hover:not(:disabled){background-color:var(--af-background-base-hover, rgba(20, 52, 59, 0.02))}.trigger:focus-visible{outline:2px solid var(--af-background-border-active, #8a7049);outline-offset:-2px}.trigger:disabled{cursor:not-allowed;opacity:0.5}.trigger-content{flex:1;min-width:0}.chevron{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;color:var(--af-typography-body-dark, #14343b);transition:transform 0.3s ease}.chevron.is-open{transform:rotate(180deg)}.content-wrapper{overflow:hidden;transition:max-height 0.3s ease}.content{padding:0}:host(.is-disabled) .trigger{cursor:not-allowed;opacity:0.5}:host(.is-disabled) .trigger:hover{background-color:transparent}:host(.is-open) .trigger{border-bottom-color:transparent}";
4
4
 
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, d as createEvent, h, c as Host } from './p-CqQyDZ-4.js';
1
+ import { p as proxyCustomElement, H, d as createEvent, h, c as Host } from './p-DOgb6SUj.js';
2
2
 
3
3
  const afAccordionCss = ".sc-af-accordion-h{display:block;width:100%}.accordion.sc-af-accordion{display:flex;flex-direction:column;width:100%}.sc-af-accordion-s>af-accordion-item{display:block}.sc-af-accordion-s>af-accordion-item:last-child{--accordion-item-border:transparent}";
4
4
 
@@ -1,4 +1,4 @@
1
- import { A as AfAspectRatio$1, d as defineCustomElement$1 } from './p-DkaLi-uL.js';
1
+ import { A as AfAspectRatio$1, d as defineCustomElement$1 } from './p-CoL_hRAR.js';
2
2
 
3
3
  const AfAspectRatio = AfAspectRatio$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { A as AfButtonGroup$1, d as defineCustomElement$1 } from './p-D30gSxh2.js';
1
+ import { A as AfButtonGroup$1, d as defineCustomElement$1 } from './p-kEqwmn80.js';
2
2
 
3
3
  const AfButtonGroup = AfButtonGroup$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { A as AfButton$1, d as defineCustomElement$1 } from './p-CNuja1ax.js';
1
+ import { A as AfButton$1, d as defineCustomElement$1 } from './p--gChEc0P.js';
2
2
 
3
3
  const AfButton = AfButton$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { A as AfCard$1, d as defineCustomElement$1 } from './p-BO4blShf.js';
1
+ import { A as AfCard$1, d as defineCustomElement$1 } from './p-CKLkuSI3.js';
2
2
 
3
3
  const AfCard = AfCard$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, c as Host } from './p-CqQyDZ-4.js';
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-DOgb6SUj.js';
2
2
 
3
3
  const afCenterCss = ":host{display:flex;box-sizing:border-box}:host([hidden]){display:none}";
4
4
 
@@ -1,4 +1,4 @@
1
- import { A as AfCheckbox$1, d as defineCustomElement$1 } from './p-Dxa6cHAb.js';
1
+ import { A as AfCheckbox$1, d as defineCustomElement$1 } from './p-DbVc-b1e.js';
2
2
 
3
3
  const AfCheckbox = AfCheckbox$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,6 +1,6 @@
1
- import { p as proxyCustomElement, H, h, c as Host } from './p-CqQyDZ-4.js';
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-DOgb6SUj.js';
2
2
 
3
- const afClientCarouselCss = ".sc-af-client-carousel-h{display:block;width:100%}.client-carousel.sc-af-client-carousel{padding:48px 0;display:flex;flex-direction:column;align-items:center;width:100%;overflow:hidden}.carousel-container.sc-af-client-carousel{display:flex;flex-direction:column;gap:var(--space-4, 16px);width:100%;overflow:hidden}.carousel-row.sc-af-client-carousel{display:flex;width:100%;overflow:hidden;position:relative}.logo-track.sc-af-client-carousel{display:flex;gap:var(--space-4, 16px);animation-timing-function:linear;animation-iteration-count:infinite}.scroll-left.sc-af-client-carousel .logo-track.sc-af-client-carousel{animation-name:scroll-left;animation-duration:40s}.scroll-right.sc-af-client-carousel .logo-track.sc-af-client-carousel{animation-name:scroll-right;animation-duration:40s}.sc-af-client-carousel-h:hover .logo-track.sc-af-client-carousel{animation-play-state:paused}@media (prefers-reduced-motion: reduce){.logo-track.sc-af-client-carousel,.scroll-left.sc-af-client-carousel .logo-track.sc-af-client-carousel,.scroll-right.sc-af-client-carousel .logo-track.sc-af-client-carousel{animation:none;transform:translateX(0)}}@keyframes scroll-left{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}@keyframes scroll-right{0%{transform:translateX(-50%)}100%{transform:translateX(0)}}.logo-track.sc-af-client-carousel>*.sc-af-client-carousel{display:flex;flex-shrink:0;gap:var(--space-4, 16px);align-items:center}.theme-inkwell.sc-af-client-carousel-h,.client-carousel.theme-inkwell.sc-af-client-carousel{background-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-well-bg:var(--colour-background-level1-dark, #203e45);--af-carousel-logo-color:white;--af-carousel-logo-filter:brightness(0) invert(1)}.theme-white.sc-af-client-carousel-h,.client-carousel.theme-white.sc-af-client-carousel{background-color:var(--colour-brand-white, #FFFFFF);--af-carousel-logo-well-bg:var(--colour-background-level1, #e8eeed);--af-carousel-logo-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-filter:none}.theme-mist-green.sc-af-client-carousel-h,.client-carousel.theme-mist-green.sc-af-client-carousel{background-color:var(--colour-brand-mist-green, #C6D5D1);--af-carousel-logo-well-bg:var(--colour-mistgreen-300, #dde6e3);--af-carousel-logo-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-filter:none}.theme-soft-clay.sc-af-client-carousel-h,.client-carousel.theme-soft-clay.sc-af-client-carousel{background-color:var(--colour-softclay-400, #c0ab8d);--af-carousel-logo-well-bg:var(--colour-softclay-200, #d5c5b0);--af-carousel-logo-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-filter:none}.theme-white-ivory.sc-af-client-carousel-h,.client-carousel.theme-white-ivory.sc-af-client-carousel{background-color:var(--colour-brand-ivory-paper, #fff9ee);--af-carousel-logo-well-bg:var(--colour-softclay-100, #f2eadc);--af-carousel-logo-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-filter:none}@media (max-width: 1024px){.client-carousel.sc-af-client-carousel{padding:32px 0}}@media (max-width: 767px){.client-carousel.sc-af-client-carousel{padding:24px 0}.carousel-container.sc-af-client-carousel{gap:var(--space-3, 12px)}.logo-track.sc-af-client-carousel{gap:var(--space-3, 12px)}.sc-af-client-carousel-s>*{gap:var(--space-3, 12px)}}";
3
+ const afClientCarouselCss = ".sc-af-client-carousel-h{display:block;width:100%}.client-carousel.sc-af-client-carousel{padding:48px 0;display:flex;flex-direction:column;align-items:center;width:100%;overflow:hidden}.carousel-container.sc-af-client-carousel{display:flex;flex-direction:column;gap:var(--space-4, 16px);width:100%;overflow:hidden}.carousel-row.sc-af-client-carousel{display:flex;width:100%;overflow:hidden;position:relative}.logo-track.sc-af-client-carousel{display:flex;gap:var(--space-4, 16px);animation-timing-function:linear;animation-iteration-count:infinite}.scroll-left.sc-af-client-carousel .logo-track.sc-af-client-carousel{animation-name:scroll-left;animation-duration:40s}.scroll-right.sc-af-client-carousel .logo-track.sc-af-client-carousel{animation-name:scroll-right;animation-duration:40s}.sc-af-client-carousel-h:hover .logo-track.sc-af-client-carousel{animation-play-state:paused}@media (prefers-reduced-motion: reduce){.logo-track.sc-af-client-carousel,.scroll-left.sc-af-client-carousel .logo-track.sc-af-client-carousel,.scroll-right.sc-af-client-carousel .logo-track.sc-af-client-carousel{animation:none;transform:translateX(0)}}.client-carousel.mode-static.sc-af-client-carousel .logo-track.sc-af-client-carousel{animation:none;justify-content:center;flex-wrap:wrap;width:100%}.client-carousel.mode-static.sc-af-client-carousel .carousel-row.sc-af-client-carousel{justify-content:center;overflow:visible}.client-carousel.mode-static.sc-af-client-carousel .carousel-container.sc-af-client-carousel{overflow:visible}.client-carousel.mode-static.sc-af-client-carousel{overflow:hidden}@keyframes scroll-left{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}@keyframes scroll-right{0%{transform:translateX(-50%)}100%{transform:translateX(0)}}.logo-track.sc-af-client-carousel>*.sc-af-client-carousel{display:flex;flex-shrink:0;gap:var(--space-4, 16px);align-items:center}.theme-inkwell.sc-af-client-carousel-h,.client-carousel.theme-inkwell.sc-af-client-carousel{background-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-well-bg:var(--colour-background-level1-dark, #203e45);--af-carousel-logo-color:white;--af-carousel-logo-filter:brightness(0) invert(1)}.theme-white.sc-af-client-carousel-h,.client-carousel.theme-white.sc-af-client-carousel{background-color:var(--colour-brand-white, #FFFFFF);--af-carousel-logo-well-bg:var(--colour-background-level1, #e8eeed);--af-carousel-logo-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-filter:none}.theme-mist-green.sc-af-client-carousel-h,.client-carousel.theme-mist-green.sc-af-client-carousel{background-color:var(--colour-brand-mist-green, #C6D5D1);--af-carousel-logo-well-bg:var(--colour-mistgreen-300, #dde6e3);--af-carousel-logo-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-filter:none}.theme-soft-clay.sc-af-client-carousel-h,.client-carousel.theme-soft-clay.sc-af-client-carousel{background-color:var(--colour-softclay-400, #c0ab8d);--af-carousel-logo-well-bg:var(--colour-softclay-200, #d5c5b0);--af-carousel-logo-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-filter:none}.theme-white-ivory.sc-af-client-carousel-h,.client-carousel.theme-white-ivory.sc-af-client-carousel{background-color:var(--colour-brand-ivory-paper, #fff9ee);--af-carousel-logo-well-bg:var(--colour-softclay-100, #f2eadc);--af-carousel-logo-color:var(--colour-brand-inkwell, #14343B);--af-carousel-logo-filter:none}@media (max-width: 1024px){.client-carousel.sc-af-client-carousel{padding:32px 0}}@media (max-width: 767px){.client-carousel.sc-af-client-carousel{padding:24px 0}.carousel-container.sc-af-client-carousel{gap:var(--space-3, 12px)}.logo-track.sc-af-client-carousel{gap:var(--space-3, 12px)}.sc-af-client-carousel-s>*{gap:var(--space-3, 12px)}}";
4
4
 
5
5
  const AfClientCarousel$1 = /*@__PURE__*/ proxyCustomElement(class AfClientCarousel extends H {
6
6
  constructor(registerHost) {
@@ -11,16 +11,28 @@ const AfClientCarousel$1 = /*@__PURE__*/ proxyCustomElement(class AfClientCarous
11
11
  /** Theme - sets background color and provides theme context to children */
12
12
  this.theme = 'inkwell';
13
13
  /**
14
- * Number of scrolling rows.
15
- * - `1` (default) — single row scrolling left, matches the Webflow reference.
16
- * - `2` — two rows scrolling in opposite directions.
14
+ * Number of rows.
15
+ * - `1` (default) — single row, matches the Webflow reference.
16
+ * - `2` — two rows (scroll in opposite directions, or stacked when static).
17
17
  *
18
18
  * When `rows="2"`, slot `row-1` and `row-2` independently.
19
19
  * When `rows="1"`, slot the default slot (unnamed) or `row-1`.
20
20
  */
21
21
  this.rows = 1;
22
+ /**
23
+ * Layout mode.
24
+ * - `scroll` (default) — infinite animated scroll; rows fill the full
25
+ * width and are cloned for a seamless loop.
26
+ * - `static` — no animation, logos centred horizontally. Use when the
27
+ * logo set is small enough to fit on screen without scrolling.
28
+ */
29
+ this.mode = 'scroll';
22
30
  }
23
31
  componentDidLoad() {
32
+ // Static mode doesn't animate, so the clone trick isn't needed —
33
+ // skipping it avoids rendering every logo twice.
34
+ if (this.mode === 'static')
35
+ return;
24
36
  this.duplicateTrackContent(this.row1TrackRef);
25
37
  if (Number(this.rows) === 2) {
26
38
  this.duplicateTrackContent(this.row2TrackRef);
@@ -49,13 +61,17 @@ const AfClientCarousel$1 = /*@__PURE__*/ proxyCustomElement(class AfClientCarous
49
61
  }
50
62
  render() {
51
63
  const rows = Number(this.rows);
52
- return (h(Host, { key: '46f4a3c383b4f067cc74697860d437e38428a94c', class: `theme-${this.theme}` }, h("div", { key: '3a112f1ba371dee4fbea77994ff2ce5b33d85702', class: `client-carousel theme-${this.theme} rows-${rows}` }, h("div", { key: '32bf5229631e03fdae350f2224cbc7c2728b164d', class: "carousel-container" }, h("div", { key: '265e1f762ad375913bb0d308a1ab313bb75b76c0', class: "carousel-row scroll-left" }, h("div", { key: 'd92c38d3ff861cc1f422b261cf6239dd59b8dbfc', class: "logo-track", ref: (el) => (this.row1TrackRef = el) }, h("slot", { key: 'bf82ec86369fd9bb927a003108959eb7f8ede1bf', name: "row-1" }, h("slot", { key: '6845159319fb23679e7b27968dbe8f86cc7d4bd1' })))), rows === 2 && (h("div", { key: 'a0327e6d2f98e1e34c3ab7b763565b73e511d90d', class: "carousel-row scroll-right" }, h("div", { key: 'ead9bd1658eb547b23967463f84a3a9575e43ad5', class: "logo-track", ref: (el) => (this.row2TrackRef = el) }, h("slot", { key: 'f849ded863bd0ece4cca88143f45c658aa0c9e83', name: "row-2" }))))))));
64
+ // Direction classes are left on in static mode too the `.mode-static`
65
+ // CSS rule overrides `animation` to `none`, so the direction is a no-op
66
+ // visually but keeps the markup shape consistent across modes.
67
+ return (h(Host, { key: 'a60dab195d08a5afa44c871598584c1175cff4af', class: `theme-${this.theme} mode-${this.mode}` }, h("div", { key: 'dafd6b1501a592ceaa0b9babc27d2437ccfb2c62', class: `client-carousel theme-${this.theme} rows-${rows} mode-${this.mode}` }, h("div", { key: 'c318457802deebbc34b289b2d83d0dd50c15cc5c', class: "carousel-container" }, h("div", { key: '878d1a443b488828f54e6915cede096654624435', class: "carousel-row scroll-left" }, h("div", { key: '1e8751fc3ed7429196b6d7e5e9e6fb0255ab277c', class: "logo-track", ref: (el) => (this.row1TrackRef = el) }, h("slot", { key: 'd030308358617334fa318abd95780133d13a0b01', name: "row-1" }, h("slot", { key: '230f591311b0245946dd64c465fe7e9634a9ab99' })))), rows === 2 && (h("div", { key: 'd942aaa3e6994e73f1ad52a2deedc9564f6105fd', class: "carousel-row scroll-right" }, h("div", { key: '96e438271bee8bd840a7645b1634fc0e125617de', class: "logo-track", ref: (el) => (this.row2TrackRef = el) }, h("slot", { key: '90661d285bc8f65b1d1188f66a15edf60503b1a3', name: "row-2" }))))))));
53
68
  }
54
69
  get el() { return this; }
55
70
  static get style() { return afClientCarouselCss; }
56
71
  }, [262, "af-client-carousel", {
57
72
  "theme": [1],
58
- "rows": [2]
73
+ "rows": [2],
74
+ "mode": [1]
59
75
  }]);
60
76
  function defineCustomElement$1() {
61
77
  if (typeof customElements === "undefined") {