@affinda/wc 0.0.20 → 0.0.21

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 (442) hide show
  1. package/dist/affinda/af-accordion-item.entry.esm.js.map +1 -1
  2. package/dist/affinda/af-button.entry.esm.js.map +1 -1
  3. package/dist/affinda/af-card.entry.esm.js.map +1 -1
  4. package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -1
  5. package/dist/affinda/af-icon-button.entry.esm.js.map +1 -1
  6. package/dist/affinda/af-icon-text.entry.esm.js.map +1 -1
  7. package/dist/affinda/af-illustrated-card.entry.esm.js.map +1 -1
  8. package/dist/affinda/af-image.entry.esm.js.map +1 -1
  9. package/dist/affinda/af-in-page-banner.entry.esm.js.map +1 -1
  10. package/dist/affinda/af-section.entry.esm.js.map +1 -1
  11. package/dist/affinda/af-stepper-step.entry.esm.js.map +1 -0
  12. package/dist/affinda/af-stepper.entry.esm.js.map +1 -0
  13. package/dist/affinda/af-tag.entry.esm.js.map +1 -1
  14. package/dist/affinda/af-testimonial.entry.esm.js.map +1 -1
  15. package/dist/affinda/af-text-image.entry.esm.js.map +1 -1
  16. package/dist/affinda/af-theme-override.entry.esm.js.map +1 -1
  17. package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
  18. package/dist/affinda/affinda.esm.js +1 -1
  19. package/dist/affinda/index.esm.js +1 -1
  20. package/dist/affinda/p-07efc7a0.entry.js +2 -0
  21. package/dist/affinda/{p-8f24dfe3.entry.js.map → p-07efc7a0.entry.js.map} +1 -1
  22. package/dist/affinda/p-08143c7e.entry.js +2 -0
  23. package/dist/affinda/{p-63314e14.entry.js.map → p-08143c7e.entry.js.map} +1 -1
  24. package/dist/affinda/{p-01993cc8.entry.js → p-0fb16377.entry.js} +2 -2
  25. package/dist/affinda/p-122b6e96.entry.js +2 -0
  26. package/dist/affinda/p-122b6e96.entry.js.map +1 -0
  27. package/dist/affinda/{p-3d2fb635.entry.js → p-1a87dd1c.entry.js} +2 -2
  28. package/dist/affinda/p-202bac33.entry.js +2 -0
  29. package/dist/affinda/p-2e50c27d.entry.js +2 -0
  30. package/dist/affinda/{p-920e6d30.entry.js.map → p-2e50c27d.entry.js.map} +1 -1
  31. package/dist/affinda/{p-adacb8c4.entry.js → p-2e8682a0.entry.js} +2 -2
  32. package/dist/affinda/{p-266af3e1.entry.js → p-3642589b.entry.js} +2 -2
  33. package/dist/affinda/{p-4c5f92a9.entry.js → p-391bb085.entry.js} +2 -2
  34. package/dist/affinda/{p-d51c4b1b.entry.js → p-3fc2a3dc.entry.js} +2 -2
  35. package/dist/affinda/{p-f9e7cf8f.entry.js → p-45f76ad4.entry.js} +2 -2
  36. package/dist/affinda/p-4fcb61d1.entry.js +2 -0
  37. package/dist/affinda/{p-2e5e4960.entry.js.map → p-4fcb61d1.entry.js.map} +1 -1
  38. package/dist/affinda/p-517543bd.entry.js +2 -0
  39. package/dist/affinda/{p-96df0106.entry.js.map → p-517543bd.entry.js.map} +1 -1
  40. package/dist/affinda/{p-c72cfcbd.entry.js → p-5591bc79.entry.js} +2 -2
  41. package/dist/affinda/{p-c74481bd.entry.js → p-6179957e.entry.js} +2 -2
  42. package/dist/affinda/{p-9e21b6c1.entry.js → p-62699653.entry.js} +2 -2
  43. package/dist/affinda/p-6a5fa86a.entry.js +2 -0
  44. package/dist/affinda/{p-68f1f661.entry.js.map → p-6a5fa86a.entry.js.map} +1 -1
  45. package/dist/affinda/p-76475b41.entry.js +2 -0
  46. package/dist/affinda/{p-331f9627.entry.js.map → p-76475b41.entry.js.map} +1 -1
  47. package/dist/affinda/p-78ff69a4.entry.js +2 -0
  48. package/dist/affinda/p-78ff69a4.entry.js.map +1 -0
  49. package/dist/affinda/{p-0b5bc045.entry.js → p-79e6fc73.entry.js} +2 -2
  50. package/dist/affinda/p-79e6fc73.entry.js.map +1 -0
  51. package/dist/affinda/{p-db9249e4.entry.js → p-7da3a28f.entry.js} +2 -2
  52. package/dist/affinda/{p-e7d8d909.entry.js → p-86a9ff3e.entry.js} +2 -2
  53. package/dist/affinda/p-9242c8d1.entry.js +2 -0
  54. package/dist/affinda/p-9242c8d1.entry.js.map +1 -0
  55. package/dist/affinda/p-933560e0.entry.js +2 -0
  56. package/dist/affinda/{p-16f808d5.entry.js.map → p-933560e0.entry.js.map} +1 -1
  57. package/dist/affinda/{p-e9bc1739.entry.js → p-a53d5549.entry.js} +2 -2
  58. package/dist/affinda/{p-02830771.entry.js → p-accd917e.entry.js} +2 -2
  59. package/dist/affinda/{p-cc4e73dc.entry.js → p-ad9b0eec.entry.js} +2 -2
  60. package/dist/affinda/p-b18767cf.entry.js +2 -0
  61. package/dist/affinda/{p-57eae3cd.entry.js.map → p-b18767cf.entry.js.map} +1 -1
  62. package/dist/affinda/p-b85e2bff.entry.js +2 -0
  63. package/dist/affinda/{p-1c32cfcb.entry.js.map → p-b85e2bff.entry.js.map} +1 -1
  64. package/dist/affinda/{p-d90366f6.entry.js → p-bb67cf12.entry.js} +2 -2
  65. package/dist/affinda/p-bb67cf12.entry.js.map +1 -0
  66. package/dist/affinda/{p-b10103f4.entry.js → p-c01eaa85.entry.js} +2 -2
  67. package/dist/affinda/p-c225ac8c.entry.js +2 -0
  68. package/dist/affinda/p-c225ac8c.entry.js.map +1 -0
  69. package/dist/affinda/{p-288c2656.entry.js → p-c3d7872c.entry.js} +2 -2
  70. package/dist/affinda/{p-af25dad7.entry.js → p-c51a2687.entry.js} +2 -2
  71. package/dist/affinda/{p-9de05d1d.entry.js → p-d28b0860.entry.js} +2 -2
  72. package/dist/affinda/p-d74a7ae9.entry.js +2 -0
  73. package/dist/affinda/{p-d47a77e2.entry.js → p-e2f555fc.entry.js} +2 -2
  74. package/dist/affinda/{p-e156a8bb.entry.js → p-e37fea2f.entry.js} +2 -2
  75. package/dist/affinda/{p-b56e9e2d.entry.js → p-ea02610f.entry.js} +2 -2
  76. package/dist/affinda/p-ea0ccbce.entry.js +2 -0
  77. package/dist/affinda/p-eebb5101.entry.js +2 -0
  78. package/dist/affinda/{p-8f528f9d.entry.js.map → p-eebb5101.entry.js.map} +1 -1
  79. package/dist/affinda/p-f1dd31bd.entry.js +2 -0
  80. package/dist/affinda/p-f1dd31bd.entry.js.map +1 -0
  81. package/dist/affinda/{p-080cf84f.entry.js → p-f4d2a07d.entry.js} +2 -2
  82. package/dist/affinda/{p-f7a13cd3.entry.js → p-f78dd237.entry.js} +2 -2
  83. package/dist/affinda/p-f8bdddf5.entry.js +2 -0
  84. package/dist/affinda/{p-b2338fab.entry.js.map → p-f8bdddf5.entry.js.map} +1 -1
  85. package/dist/cjs/af-accordion-item.cjs.entry.js +1 -27
  86. package/dist/cjs/af-accordion-item.entry.cjs.js.map +1 -1
  87. package/dist/cjs/af-accordion.cjs.entry.js +1 -1
  88. package/dist/cjs/af-button.cjs.entry.js +5 -4
  89. package/dist/cjs/af-button.entry.cjs.js.map +1 -1
  90. package/dist/cjs/af-card.cjs.entry.js +2 -2
  91. package/dist/cjs/af-card.entry.cjs.js.map +1 -1
  92. package/dist/cjs/af-center.cjs.entry.js +1 -1
  93. package/dist/cjs/af-client-carousel.cjs.entry.js +11 -1
  94. package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -1
  95. package/dist/cjs/af-contact-item.cjs.entry.js +1 -1
  96. package/dist/cjs/af-divider.cjs.entry.js +1 -1
  97. package/dist/cjs/af-feature-accordion.cjs.entry.js +2 -2
  98. package/dist/cjs/af-feature-grid.cjs.entry.js +1 -1
  99. package/dist/cjs/af-footer-column.cjs.entry.js +1 -1
  100. package/dist/cjs/af-footer-link.cjs.entry.js +1 -1
  101. package/dist/cjs/af-footer.cjs.entry.js +1 -1
  102. package/dist/cjs/af-grid.cjs.entry.js +2 -2
  103. package/dist/cjs/af-icon-box.cjs.entry.js +1 -1
  104. package/dist/cjs/af-icon-button.cjs.entry.js +1 -1
  105. package/dist/cjs/af-icon-button.entry.cjs.js.map +1 -1
  106. package/dist/cjs/af-icon-text.cjs.entry.js +1 -1
  107. package/dist/cjs/af-icon-text.entry.cjs.js.map +1 -1
  108. package/dist/cjs/af-illustrated-card.cjs.entry.js +1 -1
  109. package/dist/cjs/af-illustrated-card.entry.cjs.js.map +1 -1
  110. package/dist/cjs/af-image.cjs.entry.js +12 -2
  111. package/dist/cjs/af-image.entry.cjs.js.map +1 -1
  112. package/dist/cjs/af-in-page-banner.cjs.entry.js +2 -2
  113. package/dist/cjs/af-in-page-banner.entry.cjs.js.map +1 -1
  114. package/dist/cjs/af-inline.cjs.entry.js +1 -1
  115. package/dist/cjs/af-logo-well.cjs.entry.js +1 -1
  116. package/dist/cjs/af-nav-accordion-item.cjs.entry.js +2 -2
  117. package/dist/cjs/af-nav-accordion.cjs.entry.js +1 -1
  118. package/dist/cjs/af-nav-menu-nest.cjs.entry.js +1 -1
  119. package/dist/cjs/af-nav-menu.cjs.entry.js +1 -1
  120. package/dist/cjs/af-number-badge.cjs.entry.js +1 -1
  121. package/dist/cjs/af-progress-line.cjs.entry.js +2 -2
  122. package/dist/cjs/af-section.cjs.entry.js +3 -3
  123. package/dist/cjs/af-section.entry.cjs.js.map +1 -1
  124. package/dist/cjs/af-show.cjs.entry.js +1 -1
  125. package/dist/cjs/af-social-link.cjs.entry.js +1 -1
  126. package/dist/cjs/af-spacer.cjs.entry.js +1 -1
  127. package/dist/cjs/af-split-section.cjs.entry.js +2 -2
  128. package/dist/cjs/af-stack.cjs.entry.js +1 -1
  129. package/dist/cjs/af-stepper-step.cjs.entry.js +23 -0
  130. package/dist/cjs/af-stepper-step.entry.cjs.js.map +1 -0
  131. package/dist/cjs/af-stepper.cjs.entry.js +34 -0
  132. package/dist/cjs/af-stepper.entry.cjs.js.map +1 -0
  133. package/dist/cjs/af-tag.cjs.entry.js +7 -8
  134. package/dist/cjs/af-tag.entry.cjs.js.map +1 -1
  135. package/dist/cjs/af-testimonial-carousel.cjs.entry.js +1 -1
  136. package/dist/cjs/af-testimonial-stat.cjs.entry.js +1 -1
  137. package/dist/cjs/af-testimonial.cjs.entry.js +3 -3
  138. package/dist/cjs/af-testimonial.entry.cjs.js.map +1 -1
  139. package/dist/cjs/af-text-image-nest.cjs.entry.js +1 -1
  140. package/dist/cjs/af-text-image.cjs.entry.js +1 -1
  141. package/dist/cjs/af-text-image.entry.cjs.js.map +1 -1
  142. package/dist/cjs/af-theme-override.cjs.entry.js +2 -2
  143. package/dist/cjs/af-theme-override.entry.cjs.js.map +1 -1
  144. package/dist/cjs/af-typography-lockup.cjs.entry.js +21 -4
  145. package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
  146. package/dist/cjs/af-video-container.cjs.entry.js +1 -1
  147. package/dist/cjs/af-visually-hidden.cjs.entry.js +1 -1
  148. package/dist/cjs/affinda.cjs.js +1 -1
  149. package/dist/cjs/loader.cjs.js +1 -1
  150. package/dist/collection/collection-manifest.json +2 -0
  151. package/dist/collection/components/af-accordion/af-accordion.js +1 -1
  152. package/dist/collection/components/af-accordion-item/af-accordion-item.js +1 -27
  153. package/dist/collection/components/af-accordion-item/af-accordion-item.js.map +1 -1
  154. package/dist/collection/components/af-button/af-button.css +24 -24
  155. package/dist/collection/components/af-button/af-button.js +10 -9
  156. package/dist/collection/components/af-button/af-button.js.map +1 -1
  157. package/dist/collection/components/af-card/af-card.css +2 -2
  158. package/dist/collection/components/af-card/af-card.js +1 -1
  159. package/dist/collection/components/af-center/af-center.js +1 -1
  160. package/dist/collection/components/af-client-carousel/af-client-carousel.js +33 -2
  161. package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -1
  162. package/dist/collection/components/af-contact-item/af-contact-item.js +1 -1
  163. package/dist/collection/components/af-divider/af-divider.js +1 -1
  164. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +2 -2
  165. package/dist/collection/components/af-feature-grid/af-feature-grid.js +1 -1
  166. package/dist/collection/components/af-footer/af-footer.js +1 -1
  167. package/dist/collection/components/af-footer-column/af-footer-column.js +1 -1
  168. package/dist/collection/components/af-footer-link/af-footer-link.js +1 -1
  169. package/dist/collection/components/af-grid/af-grid.js +2 -2
  170. package/dist/collection/components/af-icon-box/af-icon-box.js +1 -1
  171. package/dist/collection/components/af-icon-button/af-icon-button.css +2 -2
  172. package/dist/collection/components/af-icon-text/af-icon-text.js +3 -3
  173. package/dist/collection/components/af-icon-text/af-icon-text.js.map +1 -1
  174. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +4 -3
  175. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +1 -1
  176. package/dist/collection/components/af-image/af-image.css +21 -4
  177. package/dist/collection/components/af-image/af-image.js +33 -1
  178. package/dist/collection/components/af-image/af-image.js.map +1 -1
  179. package/dist/collection/components/af-in-page-banner/af-in-page-banner.css +3 -3
  180. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js +11 -1
  181. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +1 -1
  182. package/dist/collection/components/af-inline/af-inline.js +1 -1
  183. package/dist/collection/components/af-logo-well/af-logo-well.js +1 -1
  184. package/dist/collection/components/af-nav-accordion/af-nav-accordion.js +1 -1
  185. package/dist/collection/components/af-nav-accordion-item/af-nav-accordion-item.js +2 -2
  186. package/dist/collection/components/af-nav-menu/af-nav-menu.js +1 -1
  187. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +1 -1
  188. package/dist/collection/components/af-number-badge/af-number-badge.js +3 -3
  189. package/dist/collection/components/af-progress-line/af-progress-line.js +2 -2
  190. package/dist/collection/components/af-section/af-section.css +15 -15
  191. package/dist/collection/components/af-section/af-section.js +2 -2
  192. package/dist/collection/components/af-show/af-show.js +1 -1
  193. package/dist/collection/components/af-social-link/af-social-link.js +1 -1
  194. package/dist/collection/components/af-spacer/af-spacer.js +1 -1
  195. package/dist/collection/components/af-split-section/af-split-section.js +2 -2
  196. package/dist/collection/components/af-stack/af-stack.js +1 -1
  197. package/dist/collection/components/af-stepper/af-stepper.css +54 -0
  198. package/dist/collection/components/af-stepper/af-stepper.js +83 -0
  199. package/dist/collection/components/af-stepper/af-stepper.js.map +1 -0
  200. package/dist/collection/components/af-stepper-step/af-stepper-step.css +85 -0
  201. package/dist/collection/components/af-stepper-step/af-stepper-step.js +60 -0
  202. package/dist/collection/components/af-stepper-step/af-stepper-step.js.map +1 -0
  203. package/dist/collection/components/af-tab/af-tab.js +1 -1
  204. package/dist/collection/components/af-tab-bar/af-tab-bar.js +2 -2
  205. package/dist/collection/components/af-tag/af-tag.css +41 -21
  206. package/dist/collection/components/af-tag/af-tag.js +18 -15
  207. package/dist/collection/components/af-tag/af-tag.js.map +1 -1
  208. package/dist/collection/components/af-testimonial/af-testimonial.css +28 -6
  209. package/dist/collection/components/af-testimonial/af-testimonial.js +14 -6
  210. package/dist/collection/components/af-testimonial/af-testimonial.js.map +1 -1
  211. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +1 -1
  212. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
  213. package/dist/collection/components/af-text-image/af-text-image.css +5 -3
  214. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +1 -1
  215. package/dist/collection/components/af-theme-override/af-theme-override.css +15 -15
  216. package/dist/collection/components/af-theme-override/af-theme-override.js +1 -1
  217. package/dist/collection/components/af-typography-lockup/af-typography-lockup.css +22 -4
  218. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +60 -3
  219. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +1 -1
  220. package/dist/collection/components/af-video-container/af-video-container.js +1 -1
  221. package/dist/collection/components/af-visually-hidden/af-visually-hidden.js +1 -1
  222. package/dist/components/af-accordion-item.js +1 -27
  223. package/dist/components/af-accordion-item.js.map +1 -1
  224. package/dist/components/af-accordion.js +1 -1
  225. package/dist/components/af-button.js +1 -1
  226. package/dist/components/af-card.js +1 -1
  227. package/dist/components/af-center.js +1 -1
  228. package/dist/components/af-client-carousel.js +13 -2
  229. package/dist/components/af-client-carousel.js.map +1 -1
  230. package/dist/components/af-contact-item.js +1 -1
  231. package/dist/components/af-divider.js +1 -1
  232. package/dist/components/af-feature-accordion.js +2 -2
  233. package/dist/components/af-feature-card.js +1 -1
  234. package/dist/components/af-feature-grid.js +2 -2
  235. package/dist/components/af-footer-column.js +1 -1
  236. package/dist/components/af-footer-link.js +1 -1
  237. package/dist/components/af-footer.js +1 -1
  238. package/dist/components/af-grid-callout.js +1 -1
  239. package/dist/components/af-grid.js +2 -2
  240. package/dist/components/af-icon-box.js +1 -1
  241. package/dist/components/af-icon-button.js +1 -1
  242. package/dist/components/af-icon-text.js +3 -3
  243. package/dist/components/af-icon-text.js.map +1 -1
  244. package/dist/components/af-illustrated-card.js +1 -1
  245. package/dist/components/af-image.js +1 -1
  246. package/dist/components/af-in-page-banner.js +3 -3
  247. package/dist/components/af-in-page-banner.js.map +1 -1
  248. package/dist/components/af-inline.js +1 -1
  249. package/dist/components/af-logo-well.js +1 -1
  250. package/dist/components/af-nav-accordion-item.js +2 -2
  251. package/dist/components/af-nav-accordion.js +1 -1
  252. package/dist/components/af-nav-menu-nest.js +1 -1
  253. package/dist/components/af-nav-menu.js +1 -1
  254. package/dist/components/af-number-badge.js +1 -1
  255. package/dist/components/af-progress-line.js +1 -1
  256. package/dist/components/af-section.js +3 -3
  257. package/dist/components/af-section.js.map +1 -1
  258. package/dist/components/af-show.js +1 -1
  259. package/dist/components/af-social-link.js +1 -1
  260. package/dist/components/af-spacer.js +1 -1
  261. package/dist/components/af-split-section.js +2 -2
  262. package/dist/components/af-stack.js +1 -1
  263. package/dist/components/af-stepper-step.d.ts +11 -0
  264. package/dist/components/af-stepper-step.js +44 -0
  265. package/dist/components/af-stepper-step.js.map +1 -0
  266. package/dist/components/af-stepper.d.ts +11 -0
  267. package/dist/components/af-stepper.js +55 -0
  268. package/dist/components/af-stepper.js.map +1 -0
  269. package/dist/components/af-tag.js +1 -1
  270. package/dist/components/af-testimonial-carousel.js +2 -2
  271. package/dist/components/af-testimonial-stat.js +1 -1
  272. package/dist/components/af-testimonial.js +9 -15
  273. package/dist/components/af-testimonial.js.map +1 -1
  274. package/dist/components/af-text-image-nest.js +1 -1
  275. package/dist/components/af-text-image.js +2 -2
  276. package/dist/components/af-text-image.js.map +1 -1
  277. package/dist/components/af-theme-override.js +2 -2
  278. package/dist/components/af-theme-override.js.map +1 -1
  279. package/dist/components/af-typography-lockup.js +1 -1
  280. package/dist/components/af-video-container.js +1 -1
  281. package/dist/components/af-visually-hidden.js +1 -1
  282. package/dist/components/index.js +6 -6
  283. package/dist/components/p-80hb0CR2.js +71 -0
  284. package/dist/components/p-80hb0CR2.js.map +1 -0
  285. package/dist/components/p-BHyABfs0.js +92 -0
  286. package/dist/components/p-BHyABfs0.js.map +1 -0
  287. package/dist/components/p-BIgPDyJK.js +103 -0
  288. package/dist/components/p-BIgPDyJK.js.map +1 -0
  289. package/dist/components/{p-C8_mFdv5.js → p-BfAQ7eko.js} +4 -4
  290. package/dist/components/p-BfAQ7eko.js.map +1 -0
  291. package/dist/components/{p-D66k2SSB.js → p-CFBeRDmV.js} +4 -4
  292. package/dist/components/{p-D66k2SSB.js.map → p-CFBeRDmV.js.map} +1 -1
  293. package/dist/components/p-CNtgySkk.js +48 -0
  294. package/dist/components/p-CNtgySkk.js.map +1 -0
  295. package/dist/components/{p-BUoRUEpQ.js → p-D_xTKF7j.js} +3 -3
  296. package/dist/components/{p-BUoRUEpQ.js.map → p-D_xTKF7j.js.map} +1 -1
  297. package/dist/components/{p-CnNV1GZE.js → p-DcJ8wKzl.js} +5 -5
  298. package/dist/components/p-DcJ8wKzl.js.map +1 -0
  299. package/dist/components/p-DnHD91HB.js +57 -0
  300. package/dist/components/p-DnHD91HB.js.map +1 -0
  301. package/dist/components/{p-WmKa3rDn.js → p-pudFjW3W.js} +4 -4
  302. package/dist/components/{p-WmKa3rDn.js.map → p-pudFjW3W.js.map} +1 -1
  303. package/dist/esm/af-accordion-item.entry.js +1 -27
  304. package/dist/esm/af-accordion-item.entry.js.map +1 -1
  305. package/dist/esm/af-accordion.entry.js +1 -1
  306. package/dist/esm/af-button.entry.js +5 -4
  307. package/dist/esm/af-button.entry.js.map +1 -1
  308. package/dist/esm/af-card.entry.js +2 -2
  309. package/dist/esm/af-card.entry.js.map +1 -1
  310. package/dist/esm/af-center.entry.js +1 -1
  311. package/dist/esm/af-client-carousel.entry.js +11 -1
  312. package/dist/esm/af-client-carousel.entry.js.map +1 -1
  313. package/dist/esm/af-contact-item.entry.js +1 -1
  314. package/dist/esm/af-divider.entry.js +1 -1
  315. package/dist/esm/af-feature-accordion.entry.js +2 -2
  316. package/dist/esm/af-feature-grid.entry.js +1 -1
  317. package/dist/esm/af-footer-column.entry.js +1 -1
  318. package/dist/esm/af-footer-link.entry.js +1 -1
  319. package/dist/esm/af-footer.entry.js +1 -1
  320. package/dist/esm/af-grid.entry.js +2 -2
  321. package/dist/esm/af-icon-box.entry.js +1 -1
  322. package/dist/esm/af-icon-button.entry.js +1 -1
  323. package/dist/esm/af-icon-button.entry.js.map +1 -1
  324. package/dist/esm/af-icon-text.entry.js +1 -1
  325. package/dist/esm/af-icon-text.entry.js.map +1 -1
  326. package/dist/esm/af-illustrated-card.entry.js +1 -1
  327. package/dist/esm/af-illustrated-card.entry.js.map +1 -1
  328. package/dist/esm/af-image.entry.js +12 -2
  329. package/dist/esm/af-image.entry.js.map +1 -1
  330. package/dist/esm/af-in-page-banner.entry.js +2 -2
  331. package/dist/esm/af-in-page-banner.entry.js.map +1 -1
  332. package/dist/esm/af-inline.entry.js +1 -1
  333. package/dist/esm/af-logo-well.entry.js +1 -1
  334. package/dist/esm/af-nav-accordion-item.entry.js +2 -2
  335. package/dist/esm/af-nav-accordion.entry.js +1 -1
  336. package/dist/esm/af-nav-menu-nest.entry.js +1 -1
  337. package/dist/esm/af-nav-menu.entry.js +1 -1
  338. package/dist/esm/af-number-badge.entry.js +1 -1
  339. package/dist/esm/af-progress-line.entry.js +2 -2
  340. package/dist/esm/af-section.entry.js +3 -3
  341. package/dist/esm/af-section.entry.js.map +1 -1
  342. package/dist/esm/af-show.entry.js +1 -1
  343. package/dist/esm/af-social-link.entry.js +1 -1
  344. package/dist/esm/af-spacer.entry.js +1 -1
  345. package/dist/esm/af-split-section.entry.js +2 -2
  346. package/dist/esm/af-stack.entry.js +1 -1
  347. package/dist/esm/af-stepper-step.entry.js +21 -0
  348. package/dist/esm/af-stepper-step.entry.js.map +1 -0
  349. package/dist/esm/af-stepper.entry.js +32 -0
  350. package/dist/esm/af-stepper.entry.js.map +1 -0
  351. package/dist/esm/af-tag.entry.js +7 -8
  352. package/dist/esm/af-tag.entry.js.map +1 -1
  353. package/dist/esm/af-testimonial-carousel.entry.js +1 -1
  354. package/dist/esm/af-testimonial-stat.entry.js +1 -1
  355. package/dist/esm/af-testimonial.entry.js +3 -3
  356. package/dist/esm/af-testimonial.entry.js.map +1 -1
  357. package/dist/esm/af-text-image-nest.entry.js +1 -1
  358. package/dist/esm/af-text-image.entry.js +1 -1
  359. package/dist/esm/af-text-image.entry.js.map +1 -1
  360. package/dist/esm/af-theme-override.entry.js +2 -2
  361. package/dist/esm/af-theme-override.entry.js.map +1 -1
  362. package/dist/esm/af-typography-lockup.entry.js +21 -4
  363. package/dist/esm/af-typography-lockup.entry.js.map +1 -1
  364. package/dist/esm/af-video-container.entry.js +1 -1
  365. package/dist/esm/af-visually-hidden.entry.js +1 -1
  366. package/dist/esm/affinda.js +1 -1
  367. package/dist/esm/loader.js +1 -1
  368. package/dist/types/components/af-button/af-button.d.ts +6 -5
  369. package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +11 -1
  370. package/dist/types/components/af-icon-text/af-icon-text.d.ts +2 -2
  371. package/dist/types/components/af-illustrated-card/af-illustrated-card.d.ts +3 -2
  372. package/dist/types/components/af-image/af-image.d.ts +10 -0
  373. package/dist/types/components/af-in-page-banner/af-in-page-banner.d.ts +10 -0
  374. package/dist/types/components/af-stepper/af-stepper.d.ts +30 -0
  375. package/dist/types/components/af-stepper-step/af-stepper-step.d.ts +18 -0
  376. package/dist/types/components/af-tag/af-tag.d.ts +10 -7
  377. package/dist/types/components/af-testimonial/af-testimonial.d.ts +11 -2
  378. package/dist/types/components/af-typography-lockup/af-typography-lockup.d.ts +15 -0
  379. package/dist/types/components.d.ts +268 -38
  380. package/package.json +4 -4
  381. package/dist/affinda/p-0b5bc045.entry.js.map +0 -1
  382. package/dist/affinda/p-16f808d5.entry.js +0 -2
  383. package/dist/affinda/p-1c32cfcb.entry.js +0 -2
  384. package/dist/affinda/p-2e5e4960.entry.js +0 -2
  385. package/dist/affinda/p-331f9627.entry.js +0 -2
  386. package/dist/affinda/p-57eae3cd.entry.js +0 -2
  387. package/dist/affinda/p-6294b6d1.entry.js +0 -2
  388. package/dist/affinda/p-6294b6d1.entry.js.map +0 -1
  389. package/dist/affinda/p-63314e14.entry.js +0 -2
  390. package/dist/affinda/p-68f1f661.entry.js +0 -2
  391. package/dist/affinda/p-7792cd53.entry.js +0 -2
  392. package/dist/affinda/p-7792cd53.entry.js.map +0 -1
  393. package/dist/affinda/p-8f24dfe3.entry.js +0 -2
  394. package/dist/affinda/p-8f528f9d.entry.js +0 -2
  395. package/dist/affinda/p-920e6d30.entry.js +0 -2
  396. package/dist/affinda/p-96df0106.entry.js +0 -2
  397. package/dist/affinda/p-b0d668d0.entry.js +0 -2
  398. package/dist/affinda/p-b0d668d0.entry.js.map +0 -1
  399. package/dist/affinda/p-b2338fab.entry.js +0 -2
  400. package/dist/affinda/p-bd7170d7.entry.js +0 -2
  401. package/dist/affinda/p-d6e55455.entry.js +0 -2
  402. package/dist/affinda/p-d90366f6.entry.js.map +0 -1
  403. package/dist/affinda/p-fefe9597.entry.js +0 -2
  404. package/dist/components/p-Bi5ytUXg.js +0 -58
  405. package/dist/components/p-Bi5ytUXg.js.map +0 -1
  406. package/dist/components/p-BvIMp8pz.js +0 -37
  407. package/dist/components/p-BvIMp8pz.js.map +0 -1
  408. package/dist/components/p-C8_mFdv5.js.map +0 -1
  409. package/dist/components/p-CnNV1GZE.js.map +0 -1
  410. package/dist/components/p-DBnL9UHx.js +0 -91
  411. package/dist/components/p-DBnL9UHx.js.map +0 -1
  412. package/dist/components/p-JepBVz99.js +0 -71
  413. package/dist/components/p-JepBVz99.js.map +0 -1
  414. package/dist/components/p-hOnulRmz.js +0 -84
  415. package/dist/components/p-hOnulRmz.js.map +0 -1
  416. /package/dist/affinda/{p-01993cc8.entry.js.map → p-0fb16377.entry.js.map} +0 -0
  417. /package/dist/affinda/{p-3d2fb635.entry.js.map → p-1a87dd1c.entry.js.map} +0 -0
  418. /package/dist/affinda/{p-bd7170d7.entry.js.map → p-202bac33.entry.js.map} +0 -0
  419. /package/dist/affinda/{p-adacb8c4.entry.js.map → p-2e8682a0.entry.js.map} +0 -0
  420. /package/dist/affinda/{p-266af3e1.entry.js.map → p-3642589b.entry.js.map} +0 -0
  421. /package/dist/affinda/{p-4c5f92a9.entry.js.map → p-391bb085.entry.js.map} +0 -0
  422. /package/dist/affinda/{p-d51c4b1b.entry.js.map → p-3fc2a3dc.entry.js.map} +0 -0
  423. /package/dist/affinda/{p-f9e7cf8f.entry.js.map → p-45f76ad4.entry.js.map} +0 -0
  424. /package/dist/affinda/{p-c72cfcbd.entry.js.map → p-5591bc79.entry.js.map} +0 -0
  425. /package/dist/affinda/{p-c74481bd.entry.js.map → p-6179957e.entry.js.map} +0 -0
  426. /package/dist/affinda/{p-9e21b6c1.entry.js.map → p-62699653.entry.js.map} +0 -0
  427. /package/dist/affinda/{p-db9249e4.entry.js.map → p-7da3a28f.entry.js.map} +0 -0
  428. /package/dist/affinda/{p-e7d8d909.entry.js.map → p-86a9ff3e.entry.js.map} +0 -0
  429. /package/dist/affinda/{p-e9bc1739.entry.js.map → p-a53d5549.entry.js.map} +0 -0
  430. /package/dist/affinda/{p-02830771.entry.js.map → p-accd917e.entry.js.map} +0 -0
  431. /package/dist/affinda/{p-cc4e73dc.entry.js.map → p-ad9b0eec.entry.js.map} +0 -0
  432. /package/dist/affinda/{p-b10103f4.entry.js.map → p-c01eaa85.entry.js.map} +0 -0
  433. /package/dist/affinda/{p-288c2656.entry.js.map → p-c3d7872c.entry.js.map} +0 -0
  434. /package/dist/affinda/{p-af25dad7.entry.js.map → p-c51a2687.entry.js.map} +0 -0
  435. /package/dist/affinda/{p-9de05d1d.entry.js.map → p-d28b0860.entry.js.map} +0 -0
  436. /package/dist/affinda/{p-d6e55455.entry.js.map → p-d74a7ae9.entry.js.map} +0 -0
  437. /package/dist/affinda/{p-d47a77e2.entry.js.map → p-e2f555fc.entry.js.map} +0 -0
  438. /package/dist/affinda/{p-e156a8bb.entry.js.map → p-e37fea2f.entry.js.map} +0 -0
  439. /package/dist/affinda/{p-b56e9e2d.entry.js.map → p-ea02610f.entry.js.map} +0 -0
  440. /package/dist/affinda/{p-fefe9597.entry.js.map → p-ea0ccbce.entry.js.map} +0 -0
  441. /package/dist/affinda/{p-080cf84f.entry.js.map → p-f4d2a07d.entry.js.map} +0 -0
  442. /package/dist/affinda/{p-f7a13cd3.entry.js.map → p-f78dd237.entry.js.map} +0 -0
@@ -3,11 +3,15 @@ import { h, Host } from "@stencil/core";
3
3
  * Tag displays a label in a styled container.
4
4
  * Perfect for categorization, topics, or metadata display.
5
5
  *
6
+ * The `default` variant inherits its colors from the parent theme context
7
+ * (af-section, af-card). Use explicit variants (`inkwell`, `white`,
8
+ * `soft-clay`, `mist-green`) to override.
9
+ *
6
10
  * @example
7
11
  * ```html
8
12
  * <af-tag>AI</af-tag>
9
- * <af-tag size="small">Machine Learning</af-tag>
10
- * <af-tag size="large" variant="light">Document Processing</af-tag>
13
+ * <af-tag size="small" variant="inkwell">Machine Learning</af-tag>
14
+ * <af-tag size="large" variant="white">Document Processing</af-tag>
11
15
  * ```
12
16
  */
13
17
  export class AfTag {
@@ -15,25 +19,24 @@ export class AfTag {
15
19
  /**
16
20
  * The size of the tag
17
21
  * - `x-small` - Compact tag with minimal padding
18
- * - `small` - Small tag with moderate padding
22
+ * - `small` - Small tag with moderate padding (default)
19
23
  * - `large` - Large tag with generous padding
20
24
  */
21
25
  this.size = 'small';
22
26
  /**
23
- * The visual variant of the tag
24
- * - `sand` - Soft-clay/tan colored background (default)
25
- * - `light` - Mist-green/light colored background
27
+ * Visual variant of the tag. `default` inherits tag colors from the
28
+ * parent theme context. Theme-named variants force a specific palette.
26
29
  */
27
- this.variant = 'sand';
30
+ this.variant = 'default';
28
31
  }
29
32
  render() {
30
33
  const TagElement = this.href ? 'a' : 'span';
31
34
  const linkProps = this.href ? { href: this.href } : {};
32
- return (h(Host, { key: '7114f4a8e55509fb2c45561967d0dab339b7a75c' }, h(TagElement, { key: '868a14474ecd8edb4a90489d39913e5862c033c4', class: {
35
+ return (h(Host, { key: '168820b68d12f7e66a926c92f9f93c1a8dca20b0' }, h(TagElement, { key: '5f4d4ee9eeb5971003c0906e886c863186068d5e', class: {
33
36
  'tag': true,
34
37
  [`size-${this.size}`]: true,
35
38
  [`variant-${this.variant}`]: true,
36
- }, ...linkProps }, h("slot", { key: '57d2975785b2ec3ac74256510c1a26bfe2b6d96b' }))));
39
+ }, ...linkProps }, h("slot", { key: 'd756e89c36ce088ed425153cc1199f21a6047461' }))));
37
40
  }
38
41
  static get is() { return "af-tag"; }
39
42
  static get encapsulation() { return "shadow"; }
@@ -58,7 +61,7 @@ export class AfTag {
58
61
  "references": {
59
62
  "TagSize": {
60
63
  "location": "local",
61
- "path": "/home/elle/affinda-ui/packages/wc/src/components/af-tag/af-tag.tsx",
64
+ "path": "/home/andrew/affinda-ui/packages/wc/src/components/af-tag/af-tag.tsx",
62
65
  "id": "src/components/af-tag/af-tag.tsx::TagSize"
63
66
  }
64
67
  }
@@ -67,7 +70,7 @@ export class AfTag {
67
70
  "optional": false,
68
71
  "docs": {
69
72
  "tags": [],
70
- "text": "The size of the tag\n- `x-small` - Compact tag with minimal padding\n- `small` - Small tag with moderate padding\n- `large` - Large tag with generous padding"
73
+ "text": "The size of the tag\n- `x-small` - Compact tag with minimal padding\n- `small` - Small tag with moderate padding (default)\n- `large` - Large tag with generous padding"
71
74
  },
72
75
  "getter": false,
73
76
  "setter": false,
@@ -80,11 +83,11 @@ export class AfTag {
80
83
  "mutable": false,
81
84
  "complexType": {
82
85
  "original": "TagVariant",
83
- "resolved": "\"light\" | \"sand\"",
86
+ "resolved": "\"default\" | \"inkwell\" | \"mist-green\" | \"soft-clay\" | \"white\"",
84
87
  "references": {
85
88
  "TagVariant": {
86
89
  "location": "local",
87
- "path": "/home/elle/affinda-ui/packages/wc/src/components/af-tag/af-tag.tsx",
90
+ "path": "/home/andrew/affinda-ui/packages/wc/src/components/af-tag/af-tag.tsx",
88
91
  "id": "src/components/af-tag/af-tag.tsx::TagVariant"
89
92
  }
90
93
  }
@@ -93,13 +96,13 @@ export class AfTag {
93
96
  "optional": false,
94
97
  "docs": {
95
98
  "tags": [],
96
- "text": "The visual variant of the tag\n- `sand` - Soft-clay/tan colored background (default)\n- `light` - Mist-green/light colored background"
99
+ "text": "Visual variant of the tag. `default` inherits tag colors from the\nparent theme context. Theme-named variants force a specific palette."
97
100
  },
98
101
  "getter": false,
99
102
  "setter": false,
100
103
  "reflect": false,
101
104
  "attribute": "variant",
102
- "defaultValue": "'sand'"
105
+ "defaultValue": "'default'"
103
106
  },
104
107
  "href": {
105
108
  "type": "string",
@@ -1 +1 @@
1
- {"version":3,"file":"af-tag.js","sourceRoot":"","sources":["../../../src/components/af-tag/af-tag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAKzD;;;;;;;;;;GAUG;AAMH,MAAM,OAAO,KAAK;IALlB;QAME;;;;;WAKG;QACK,SAAI,GAAY,OAAO,CAAC;QAEhC;;;;WAIG;QACK,YAAO,GAAe,MAAM,CAAC;KA0BtC;IAnBC,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvD,OAAO,CACL,EAAC,IAAI;YACH,EAAC,UAAU,qDACT,KAAK,EAAE;oBACL,KAAK,EAAE,IAAI;oBACX,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI;oBAC3B,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI;iBAClC,KACG,SAAS;gBAEb,8DAAQ,CACG,CACR,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Prop, Host } from '@stencil/core';\n\nexport type TagSize = 'x-small' | 'small' | 'large';\nexport type TagVariant = 'sand' | 'light';\n\n/**\n * Tag displays a label in a styled container.\n * Perfect for categorization, topics, or metadata display.\n * \n * @example\n * ```html\n * <af-tag>AI</af-tag>\n * <af-tag size=\"small\">Machine Learning</af-tag>\n * <af-tag size=\"large\" variant=\"light\">Document Processing</af-tag>\n * ```\n */\n@Component({\n tag: 'af-tag',\n styleUrl: 'af-tag.css',\n shadow: true\n})\nexport class AfTag {\n /**\n * The size of the tag\n * - `x-small` - Compact tag with minimal padding\n * - `small` - Small tag with moderate padding\n * - `large` - Large tag with generous padding\n */\n @Prop() size: TagSize = 'small';\n\n /**\n * The visual variant of the tag\n * - `sand` - Soft-clay/tan colored background (default)\n * - `light` - Mist-green/light colored background\n */\n @Prop() variant: TagVariant = 'sand';\n\n /**\n * The URL to navigate to when the tag is clicked (makes the tag a link)\n */\n @Prop() href?: string;\n\n render() {\n const TagElement = this.href ? 'a' : 'span';\n const linkProps = this.href ? { href: this.href } : {};\n\n return (\n <Host>\n <TagElement\n class={{\n 'tag': true,\n [`size-${this.size}`]: true,\n [`variant-${this.variant}`]: true,\n }}\n {...linkProps}\n >\n <slot />\n </TagElement>\n </Host>\n );\n }\n}\n\n"]}
1
+ {"version":3,"file":"af-tag.js","sourceRoot":"","sources":["../../../src/components/af-tag/af-tag.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAKzD;;;;;;;;;;;;;;GAcG;AAMH,MAAM,OAAO,KAAK;IALlB;QAME;;;;;WAKG;QACK,SAAI,GAAY,OAAO,CAAC;QAEhC;;;WAGG;QACK,YAAO,GAAe,SAAS,CAAC;KA0BzC;IAnBC,MAAM;QACJ,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEvD,OAAO,CACL,EAAC,IAAI;YACH,EAAC,UAAU,qDACT,KAAK,EAAE;oBACL,KAAK,EAAE,IAAI;oBACX,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI;oBAC3B,CAAC,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI;iBAClC,KACG,SAAS;gBAEb,8DAAQ,CACG,CACR,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Prop, Host } from '@stencil/core';\n\nexport type TagSize = 'x-small' | 'small' | 'large';\nexport type TagVariant = 'default' | 'inkwell' | 'white' | 'soft-clay' | 'mist-green';\n\n/**\n * Tag displays a label in a styled container.\n * Perfect for categorization, topics, or metadata display.\n *\n * The `default` variant inherits its colors from the parent theme context\n * (af-section, af-card). Use explicit variants (`inkwell`, `white`,\n * `soft-clay`, `mist-green`) to override.\n *\n * @example\n * ```html\n * <af-tag>AI</af-tag>\n * <af-tag size=\"small\" variant=\"inkwell\">Machine Learning</af-tag>\n * <af-tag size=\"large\" variant=\"white\">Document Processing</af-tag>\n * ```\n */\n@Component({\n tag: 'af-tag',\n styleUrl: 'af-tag.css',\n shadow: true\n})\nexport class AfTag {\n /**\n * The size of the tag\n * - `x-small` - Compact tag with minimal padding\n * - `small` - Small tag with moderate padding (default)\n * - `large` - Large tag with generous padding\n */\n @Prop() size: TagSize = 'small';\n\n /**\n * Visual variant of the tag. `default` inherits tag colors from the\n * parent theme context. Theme-named variants force a specific palette.\n */\n @Prop() variant: TagVariant = 'default';\n\n /**\n * The URL to navigate to when the tag is clicked (makes the tag a link)\n */\n @Prop() href?: string;\n\n render() {\n const TagElement = this.href ? 'a' : 'span';\n const linkProps = this.href ? { href: this.href } : {};\n\n return (\n <Host>\n <TagElement\n class={{\n 'tag': true,\n [`size-${this.size}`]: true,\n [`variant-${this.variant}`]: true,\n }}\n {...linkProps}\n >\n <slot />\n </TagElement>\n </Host>\n );\n }\n}\n"]}
@@ -16,7 +16,7 @@
16
16
  /* Image side - 40.5% of card width (519px of 1280px in Figma) */
17
17
  .testimonial-image {
18
18
  position: relative;
19
- width: 40.5%;
19
+ width: 50%;
20
20
  min-width: 300px;
21
21
  /* Minimum for readability */
22
22
  max-width: 519px;
@@ -84,16 +84,38 @@
84
84
  flex-shrink: 0;
85
85
  }
86
86
 
87
- /* Quote text - layout only, typography comes from af-text */
87
+ /* Quote text 22px / 140% per Webflow reference. Accepts either the
88
+ `quote` prop (rendered as plain text) or the `quote-body` slot (rich). */
88
89
  .testimonial-text {
89
- max-height: 155px;
90
- overflow: hidden;
91
- text-overflow: ellipsis;
90
+ font-family: var(--typography-bodyfont, 'NeuSans', sans-serif);
91
+ font-size: 22px;
92
+ line-height: 1.4;
93
+ font-weight: var(--font-weight-regular, 400);
94
+ color: var(--af-typography-body-default, var(--colour-brand-inkwell, #14343b));
95
+ }
96
+ .testimonial-text ::slotted(p),
97
+ .testimonial-text p {
98
+ font: inherit;
99
+ color: inherit;
100
+ margin: 0 0 12px 0;
101
+ }
102
+ .testimonial-text ::slotted(p:last-child),
103
+ .testimonial-text p:last-child {
104
+ margin-bottom: 0;
105
+ }
106
+ .testimonial-text ::slotted(ul),
107
+ .testimonial-text ul {
108
+ margin: 0 0 12px 0;
109
+ padding-left: 20px;
92
110
  }
93
111
 
94
112
  /* Attribution uses body-dark color for emphasis */
95
113
  .testimonial-attribution {
96
- --af-typography-body-default: var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343b));
114
+ font-family: var(--typography-bodyfont, 'NeuSans', sans-serif);
115
+ font-size: 16px;
116
+ line-height: 24px;
117
+ color: var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343b));
118
+ margin-top: 12px;
97
119
  }
98
120
 
99
121
  .testimonial-stats {
@@ -1,4 +1,12 @@
1
1
  import { h, Host } from "@stencil/core";
2
+ /**
3
+ * @slot quote-body - Rich quote content (paragraphs, lists). Overrides the
4
+ * `quote` string prop when provided. Use for testimonials that include
5
+ * multiple paragraphs, bulleted points, or inline emphasis.
6
+ * @slot quote-icon - Quote icon (defaults to af-icon name="quote").
7
+ * @slot stats - Statistic items (af-testimonial-stat components).
8
+ * @slot navigation - Custom nav controls (when not using built-in ones).
9
+ */
2
10
  export class AfTestimonial {
3
11
  constructor() {
4
12
  /**
@@ -21,11 +29,11 @@ export class AfTestimonial {
21
29
  };
22
30
  }
23
31
  render() {
24
- return (h(Host, { key: '3e77d8e2922ae899fdddfa2ff5f495e97a4f0014' }, h("div", { key: 'fc304bd6b0c74f09ee4be159480c447a3788a919', class: "testimonial-card" }, h("div", { key: 'be695215e50b0a0c0ba0903ddb0bf8b134316185', class: "testimonial-image" }, this.backgroundImage && (h("img", { key: '898522a8038ca9fdde2ea014f65e2a92b925cb22', src: this.backgroundImage, alt: "", class: "testimonial-bg-image" })), this.logoImage && (h("div", { key: 'a94f0ddf5ea5b19894296267ef5fa02a4ad123d1', class: "testimonial-logo" }, h("img", { key: '82a2a7adf088ccfbf50a5c5181d2377f002e7e2d', src: this.logoImage, alt: "Company logo" })))), h("div", { key: '39248255de8f8dd551a69ea0b36877ac762bebc2', class: "testimonial-content" }, h("div", { key: '0f6f8aa1d0a0cb96f8ef05c272afa2c349bcc9ce', class: "testimonial-quote-section" }, h("div", { key: 'bc29a0d1b408f44445d3951824b347d14c4f615e', class: "testimonial-quote-icon" }, h("slot", { key: '9c611e4faf05905c5188374a10932610858990ec', name: "quote-icon" }, h("af-icon", { key: 'a7e1862ccdd9d0492ed028372dbb77febb15fcb6', name: "quote", size: 48 }))), h("af-text", { key: '8b654e90692d7106be3c7c023977cf3eb0d449c8', variant: "xlarge", class: "testimonial-text" }, this.quote), h("af-text", { key: '89011282ffd9e5857cdf121abdfb183a1e8ea87c', variant: "xlarge", class: "testimonial-attribution" }, this.attribution)), h("div", { key: '195335ab3ab060c48c60780ac0d62e6dc6dff639', class: "testimonial-stats" }, h("slot", { key: 'bdd887e8dfe27d9879dcfe92cc4a212be78e83d1', name: "stats" })), h("div", { key: '579b975917923bcda4d8b9e5efea6ab76b96756f', class: "testimonial-footer" }, h("div", { key: '15b64a7ad6e409692c8c38823b438102733e2b5f', class: "testimonial-nav" }, this.showNavigation ? (
32
+ return (h(Host, { key: 'fcdb1ff31040a9cb20381ada0ddb3f0ebe468b92' }, h("div", { key: 'b13944c9bb22271b9e11ffd08871aed9675eeb6b', class: "testimonial-card" }, h("div", { key: 'cc18afbd35481da173c9fcf7dc1ece3bf21ec0a6', class: "testimonial-image" }, this.backgroundImage && (h("img", { key: 'a4fccdc7ac9efbaa3e6f80aa2b1221a856e4b41b', src: this.backgroundImage, alt: "", class: "testimonial-bg-image" })), this.logoImage && (h("div", { key: '0fc4a5b3815aa9123ccb2b8788610fd7dfc49b8b', class: "testimonial-logo" }, h("img", { key: '5fc97a62298e8c484d169faffbbb891bc499c4ca', src: this.logoImage, alt: "Company logo" })))), h("div", { key: '05db0629d3d182ec5c9aa62d0687f7db93b17358', class: "testimonial-content" }, h("div", { key: 'd810a2544ac07ebdeee3b9598fcbdd900b43a200', class: "testimonial-quote-section" }, h("div", { key: '7f82479f01c29dc55d4757cfdf2563ba7f5b27b2', class: "testimonial-quote-icon" }, h("slot", { key: '598e43eb74d9436f7e91389f5e8703b24be025f1', name: "quote-icon" }, h("af-icon", { key: '8a513b9ddccfbbd09fde07925ff9dd2a9e429d6b', name: "quote", size: 48 }))), h("div", { key: '208146b160dddb380eadaed8c2d64b1125ee7de4', class: "testimonial-text" }, h("slot", { key: '54dfc479096474c67ebaaf91ef2aa2f9f9035f6c', name: "quote-body" }, this.quote)), h("div", { key: 'bb6e20af12cece4b746052f3c3c34affb0b07627', class: "testimonial-attribution" }, this.attribution)), h("div", { key: 'd97ec31aaa11702b1f0564cc594230bba99c4fa0', class: "testimonial-stats" }, h("slot", { key: '73a0fceb1e056fadd9e3675a3bb1bcb2aa121ef7', name: "stats" })), h("div", { key: '52bda4be7e6be1a539c719717e4ae47740390d98', class: "testimonial-footer" }, h("div", { key: '5117302dd9ac52b587d95b766b1454aca7206ba4', class: "testimonial-nav" }, this.showNavigation ? (
25
33
  // Render built-in navigation buttons
26
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 })))) : (
27
35
  // Allow custom navigation via slot
28
- h("slot", { name: "navigation" }))), this.readMoreLink && (h("af-button", { key: '96f5417e1afd667746a06a0e52f108840dfc3e85', variant: "secondary", href: this.readMoreLink }, "Read full story", h("af-icon", { key: 'ede339436c8332c9463a4f1252b97235aae80f70', slot: "icon-right", name: "arrow-right", size: 24 }))))))));
36
+ h("slot", { name: "navigation" }))), this.readMoreLink && (h("af-button", { key: '9664bad03640cb9b5d1e93f10c85b4b4307c689e', variant: "secondary", href: this.readMoreLink }, "Read full story", h("af-icon", { key: '2dccacf7aaa0a734587916604823f81a2b35b9f9', slot: "icon-right", name: "arrow-right", size: 24 }))))))));
29
37
  }
30
38
  static get is() { return "af-testimonial"; }
31
39
  static get encapsulation() { return "scoped"; }
@@ -84,14 +92,14 @@ export class AfTestimonial {
84
92
  "mutable": false,
85
93
  "complexType": {
86
94
  "original": "string",
87
- "resolved": "string",
95
+ "resolved": "string | undefined",
88
96
  "references": {}
89
97
  },
90
- "required": true,
91
- "optional": false,
98
+ "required": false,
99
+ "optional": true,
92
100
  "docs": {
93
101
  "tags": [],
94
- "text": "Testimonial quote text"
102
+ "text": "Testimonial quote text. Falls back to the `quote-body` slot if that\nslot has content."
95
103
  },
96
104
  "getter": false,
97
105
  "setter": false,
@@ -1 +1 @@
1
- {"version":3,"file":"af-testimonial.js","sourceRoot":"","sources":["../../../src/components/af-testimonial/af-testimonial.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Host, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'af-testimonial',\n styleUrl: 'af-testimonial.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonial {\n /**\n * Background image URL for the testimonial card\n */\n @Prop() backgroundImage?: string;\n\n /**\n * Company logo URL\n */\n @Prop() logoImage?: string;\n\n /**\n * Testimonial quote text\n */\n @Prop() quote!: string;\n\n /**\n * Attribution text (e.g., \"– Nathaniel Barrs, CTO, PSC Insurance\")\n */\n @Prop() attribution!: string;\n\n /**\n * Link to full case study\n */\n @Prop() readMoreLink?: string;\n\n /**\n * Whether to show built-in navigation buttons (used when in a carousel)\n */\n @Prop({ mutable: true }) showNavigation: boolean = false;\n\n /**\n * Whether the previous button is enabled\n */\n @Prop({ mutable: true }) hasPrev: boolean = false;\n\n /**\n * Whether the next button is enabled\n */\n @Prop({ mutable: true }) hasNext: boolean = false;\n\n /**\n * Emitted when the previous button is clicked\n */\n @Event() navPrev!: EventEmitter<void>;\n\n /**\n * Emitted when the next button is clicked\n */\n @Event() navNext!: EventEmitter<void>;\n\n private handlePrev = () => {\n this.navPrev.emit();\n };\n\n private handleNext = () => {\n this.navNext.emit();\n };\n\n render() {\n return (\n <Host>\n <div class=\"testimonial-card\">\n {/* Image side */}\n <div class=\"testimonial-image\">\n {this.backgroundImage && (\n <img src={this.backgroundImage} alt=\"\" class=\"testimonial-bg-image\" />\n )}\n {this.logoImage && (\n <div class=\"testimonial-logo\">\n <img src={this.logoImage} alt=\"Company logo\" />\n </div>\n )}\n </div>\n\n {/* Content side */}\n <div class=\"testimonial-content\">\n <div class=\"testimonial-quote-section\">\n {/* Quote icon - using af-icon atom with slot for flexibility */}\n <div class=\"testimonial-quote-icon\">\n <slot name=\"quote-icon\">\n <af-icon name=\"quote\" size={48} />\n </slot>\n </div>\n\n {/* Quote text - using af-text atom for proper theming */}\n <af-text variant=\"xlarge\" class=\"testimonial-text\">{this.quote}</af-text>\n {/* Attribution - using af-text atom with dark variant styling */}\n <af-text variant=\"xlarge\" class=\"testimonial-attribution\">{this.attribution}</af-text>\n </div>\n\n {/* Statistics slot */}\n <div class=\"testimonial-stats\">\n <slot name=\"stats\"></slot>\n </div>\n\n {/* Footer with navigation and CTA */}\n <div class=\"testimonial-footer\">\n <div class=\"testimonial-nav\">\n {this.showNavigation ? (\n // Render built-in navigation buttons\n <div class=\"testimonial-nav-buttons\">\n <af-icon-button\n variant=\"secondary\"\n disabled={!this.hasPrev}\n onClick={this.handlePrev}\n ariaLabel=\"Previous testimonial\"\n >\n <af-icon name=\"arrow-left\" size={24} />\n </af-icon-button>\n <af-icon-button\n variant=\"secondary\"\n disabled={!this.hasNext}\n onClick={this.handleNext}\n ariaLabel=\"Next testimonial\"\n >\n <af-icon name=\"arrow-right\" size={24} />\n </af-icon-button>\n </div>\n ) : (\n // Allow custom navigation via slot\n <slot name=\"navigation\"></slot>\n )}\n </div>\n {this.readMoreLink && (\n <af-button variant=\"secondary\" href={this.readMoreLink}>\n Read full story\n <af-icon slot=\"icon-right\" name=\"arrow-right\" size={24} />\n </af-button>\n )}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n\n"]}
1
+ {"version":3,"file":"af-testimonial.js","sourceRoot":"","sources":["../../../src/components/af-testimonial/af-testimonial.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AAE9E;;;;;;;GAOG;AAOH,MAAM,OAAO,aAAa;IAN1B;QAiCE;;WAEG;QACsB,mBAAc,GAAY,KAAK,CAAC;QAEzD;;WAEG;QACsB,YAAO,GAAY,KAAK,CAAC;QAElD;;WAEG;QACsB,YAAO,GAAY,KAAK,CAAC;QAY1C,eAAU,GAAG,GAAG,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC;QAEM,eAAU,GAAG,GAAG,EAAE;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC;KAiFH;IA/EC,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAC,kBAAkB;gBAE3B,4DAAK,KAAK,EAAC,mBAAmB;oBAC3B,IAAI,CAAC,eAAe,IAAI,CACvB,4DAAK,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAC,EAAE,EAAC,KAAK,EAAC,sBAAsB,GAAG,CACvE;oBACA,IAAI,CAAC,SAAS,IAAI,CACjB,4DAAK,KAAK,EAAC,kBAAkB;wBAC3B,4DAAK,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAC,cAAc,GAAG,CAC3C,CACP,CACG;gBAGN,4DAAK,KAAK,EAAC,qBAAqB;oBAC9B,4DAAK,KAAK,EAAC,2BAA2B;wBAEpC,4DAAK,KAAK,EAAC,wBAAwB;4BACjC,6DAAM,IAAI,EAAC,YAAY;gCACrB,gEAAS,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,GAAI,CAC7B,CACH;wBAGN,4DAAK,KAAK,EAAC,kBAAkB;4BAC3B,6DAAM,IAAI,EAAC,YAAY,IAAE,IAAI,CAAC,KAAK,CAAQ,CACvC;wBAEN,4DAAK,KAAK,EAAC,yBAAyB,IAAE,IAAI,CAAC,WAAW,CAAO,CACzD;oBAGN,4DAAK,KAAK,EAAC,mBAAmB;wBAC5B,6DAAM,IAAI,EAAC,OAAO,GAAQ,CACtB;oBAGN,4DAAK,KAAK,EAAC,oBAAoB;wBAC7B,4DAAK,KAAK,EAAC,iBAAiB,IACzB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;wBACrB,qCAAqC;wBACrC,WAAK,KAAK,EAAC,yBAAyB;4BAClC,sBACE,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,EACvB,OAAO,EAAE,IAAI,CAAC,UAAU,EACxB,SAAS,EAAC,sBAAsB;gCAEhC,eAAS,IAAI,EAAC,YAAY,EAAC,IAAI,EAAE,EAAE,GAAI,CACxB;4BACjB,sBACE,OAAO,EAAC,WAAW,EACnB,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,EACvB,OAAO,EAAE,IAAI,CAAC,UAAU,EACxB,SAAS,EAAC,kBAAkB;gCAE5B,eAAS,IAAI,EAAC,aAAa,EAAC,IAAI,EAAE,EAAE,GAAI,CACzB,CACb,CACP,CAAC,CAAC,CAAC;wBACF,mCAAmC;wBACnC,YAAM,IAAI,EAAC,YAAY,GAAQ,CAChC,CACG;wBACL,IAAI,CAAC,YAAY,IAAI,CACpB,kEAAW,OAAO,EAAC,WAAW,EAAC,IAAI,EAAE,IAAI,CAAC,YAAY;;4BAEpD,gEAAS,IAAI,EAAC,YAAY,EAAC,IAAI,EAAC,aAAa,EAAC,IAAI,EAAE,EAAE,GAAI,CAChD,CACb,CACG,CACF,CACF,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, Host, Event, EventEmitter } from '@stencil/core';\n\n/**\n * @slot quote-body - Rich quote content (paragraphs, lists). Overrides the\n * `quote` string prop when provided. Use for testimonials that include\n * multiple paragraphs, bulleted points, or inline emphasis.\n * @slot quote-icon - Quote icon (defaults to af-icon name=\"quote\").\n * @slot stats - Statistic items (af-testimonial-stat components).\n * @slot navigation - Custom nav controls (when not using built-in ones).\n */\n@Component({\n tag: 'af-testimonial',\n styleUrl: 'af-testimonial.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonial {\n /**\n * Background image URL for the testimonial card\n */\n @Prop() backgroundImage?: string;\n\n /**\n * Company logo URL\n */\n @Prop() logoImage?: string;\n\n /**\n * Testimonial quote text. Falls back to the `quote-body` slot if that\n * slot has content.\n */\n @Prop() quote?: string;\n\n /**\n * Attribution text (e.g., \"– Nathaniel Barrs, CTO, PSC Insurance\")\n */\n @Prop() attribution!: string;\n\n /**\n * Link to full case study\n */\n @Prop() readMoreLink?: string;\n\n /**\n * Whether to show built-in navigation buttons (used when in a carousel)\n */\n @Prop({ mutable: true }) showNavigation: boolean = false;\n\n /**\n * Whether the previous button is enabled\n */\n @Prop({ mutable: true }) hasPrev: boolean = false;\n\n /**\n * Whether the next button is enabled\n */\n @Prop({ mutable: true }) hasNext: boolean = false;\n\n /**\n * Emitted when the previous button is clicked\n */\n @Event() navPrev!: EventEmitter<void>;\n\n /**\n * Emitted when the next button is clicked\n */\n @Event() navNext!: EventEmitter<void>;\n\n private handlePrev = () => {\n this.navPrev.emit();\n };\n\n private handleNext = () => {\n this.navNext.emit();\n };\n\n render() {\n return (\n <Host>\n <div class=\"testimonial-card\">\n {/* Image side */}\n <div class=\"testimonial-image\">\n {this.backgroundImage && (\n <img src={this.backgroundImage} alt=\"\" class=\"testimonial-bg-image\" />\n )}\n {this.logoImage && (\n <div class=\"testimonial-logo\">\n <img src={this.logoImage} alt=\"Company logo\" />\n </div>\n )}\n </div>\n\n {/* Content side */}\n <div class=\"testimonial-content\">\n <div class=\"testimonial-quote-section\">\n {/* Quote icon - using af-icon atom with slot for flexibility */}\n <div class=\"testimonial-quote-icon\">\n <slot name=\"quote-icon\">\n <af-icon name=\"quote\" size={48} />\n </slot>\n </div>\n\n {/* Quote text slot takes priority; falls back to prop. */}\n <div class=\"testimonial-text\">\n <slot name=\"quote-body\">{this.quote}</slot>\n </div>\n {/* Attribution */}\n <div class=\"testimonial-attribution\">{this.attribution}</div>\n </div>\n\n {/* Statistics slot */}\n <div class=\"testimonial-stats\">\n <slot name=\"stats\"></slot>\n </div>\n\n {/* Footer with navigation and CTA */}\n <div class=\"testimonial-footer\">\n <div class=\"testimonial-nav\">\n {this.showNavigation ? (\n // Render built-in navigation buttons\n <div class=\"testimonial-nav-buttons\">\n <af-icon-button\n variant=\"secondary\"\n disabled={!this.hasPrev}\n onClick={this.handlePrev}\n ariaLabel=\"Previous testimonial\"\n >\n <af-icon name=\"arrow-left\" size={24} />\n </af-icon-button>\n <af-icon-button\n variant=\"secondary\"\n disabled={!this.hasNext}\n onClick={this.handleNext}\n ariaLabel=\"Next testimonial\"\n >\n <af-icon name=\"arrow-right\" size={24} />\n </af-icon-button>\n </div>\n ) : (\n // Allow custom navigation via slot\n <slot name=\"navigation\"></slot>\n )}\n </div>\n {this.readMoreLink && (\n <af-button variant=\"secondary\" href={this.readMoreLink}>\n Read full story\n <af-icon slot=\"icon-right\" name=\"arrow-right\" size={24} />\n </af-button>\n )}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n\n"]}
@@ -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: 'deda1bbad2330b3e82ebc7a6b1f424ba76b72c29' }, h("div", { key: '1146c1a67a3a682114c95bcfa37993ccf2a1fd3e', class: "testimonial-carousel" }, h("div", { key: '38c56a104b2f8956acb144f95a7607b35220f99b', class: "testimonial-slides" }, h("slot", { key: '981f9b3eb29f8f72095568747b45d56eb4d58ca3' })), this.testimonialCount > 1 && (h("div", { key: '5f49d3b23edf9748e5c1205b1ee25948b9d5817b', class: "testimonial-progress" }, h("af-progress-line", { key: 'ef7d80cbae1f4284e58a25cad35120880b6746d2', progress: this.getProgress() }))))));
97
+ return (h(Host, { key: 'fda7e141f1657586828a58e7b82f18be8e4317c3' }, h("div", { key: '99dff39b6d4396358ed8aefdd8b7d6cc728f81da', class: "testimonial-carousel" }, h("div", { key: '3d89451d92c9fbf339936390b9637a90d726d62a', class: "testimonial-slides" }, h("slot", { key: '6cf20af5e78756e401aa5175911b5937e8abeab7' })), this.testimonialCount > 1 && (h("div", { key: 'f6e41055d74ad466524a7f96377c5a582e974a51', class: "testimonial-progress" }, h("af-progress-line", { key: 'aa68920e47fe7ec219374d6fadde33897f2b0df9', 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: 'a52644b3c724b893aa469f41611026c4fcd51494' }, h("div", { key: '7dd93afb4f9767e144223640e398e589659d613d', class: `stat ${this.accentBorder ? 'stat--accent' : ''}` }, h("af-heading", { key: '203a0b96fb9b3704f2afb0441d21fead46a55cb0', level: 2, class: "stat-value" }, this.value), h("af-text", { key: 'a8786177a797f6251cb97d771ff831aec4dc92fc', variant: "medium", class: "stat-description" }, this.description))));
10
+ return (h(Host, { key: '1310f77d569265f5399b7f355d41511552e97df3' }, h("div", { key: '37ebace6631dde10e180cc6a74bd943eec494a37', class: `stat ${this.accentBorder ? 'stat--accent' : ''}` }, h("af-heading", { key: '39d3f362017c8f2e268b3fd704968f83603f681d', level: 2, class: "stat-value" }, this.value), h("af-text", { key: 'ba1ee71f010217ec6e98f4a40b40997d2237a53b', 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"; }
@@ -19,8 +19,10 @@
19
19
  gap: var(--space-8, 32px);
20
20
  }
21
21
 
22
+ /* DOM order is controlled from the TSX (image first for image-left, text
23
+ first for image-right), so both variants use plain row flow. */
22
24
  .text-image--image-left {
23
- flex-direction: row-reverse;
25
+ flex-direction: row;
24
26
  }
25
27
 
26
28
  .text-image--image-right {
@@ -99,7 +101,7 @@
99
101
  line-height: var(--line-height-heading-tight, 1);
100
102
  letter-spacing: var(--letter-spacing-heading, -0.02em);
101
103
  color: var(--af-typography-heading-primary, #14343B);
102
- white-space: pre-wrap;
104
+ white-space: normal;
103
105
  }
104
106
 
105
107
  .text-image__heading:empty {
@@ -113,7 +115,7 @@
113
115
  font-size: var(--font-size-body-large, 18px);
114
116
  line-height: var(--line-height-body-large, 26px);
115
117
  color: var(--af-typography-body-default, #2B484F);
116
- white-space: pre-wrap;
118
+ white-space: normal;
117
119
  }
118
120
 
119
121
  .text-image__description:empty {
@@ -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: 'fda547a6eaca9705f52fbbed04113534e438f3c8' }, h("div", { key: '565730e0ed6a4b127ef191536b1f10f1c8b417d6', class: containerClasses }, h("div", { key: '65e97a6335b837f1ffd259e5c128c01c1c212f17', class: "nest__content" }, h("div", { key: 'c6eab25a6e3fc7c6c864a6aa6182c6adc7b22032', class: gridClasses }, h("slot", { key: 'e936abaaf1854605ebb1be90130df7d2d100ef49' })), h("div", { key: '11f48762fb08c787ac90256b55bb1a351e92c505', class: "nest__footer" }, h("slot", { key: '8a0f8c1ad853f3aa9deea5df5a3f0b565a1f631e', name: "buttons" }))))));
32
+ return (h(Host, { key: 'b4400fe3d9f67e8966c653af0f4207fe28d89c2c' }, h("div", { key: 'e07cea2ad66bb7bf1f666417382881958ef4e7f2', class: containerClasses }, h("div", { key: '81376b5775f3059d3b26ae64eb3e9587965a4468', class: "nest__content" }, h("div", { key: '2f3d5ba877aef7dbae680ebcc3d83fcdc0242cb9', class: gridClasses }, h("slot", { key: 'cf907125930e3799d05b7b8b4ad498fe1bd174c9' })), h("div", { key: '9964efe303d3a98e65516d824b4eaccc1e14834b', class: "nest__footer" }, h("slot", { key: '93db921b203add1ec75f10c584669a6e13a1369e', name: "buttons" }))))));
33
33
  }
34
34
  static get is() { return "af-text-image-nest"; }
35
35
  static get encapsulation() { return "scoped"; }
@@ -54,9 +54,9 @@
54
54
  --af-button-secondary-stroke: var(--colour-brand-inkwell, #14343b);
55
55
 
56
56
  /* Button - Tertiary */
57
- --af-button-tertiary-text: var(--colour-brand-inkwell, #14343b);
58
- --af-button-tertiary-icon: var(--colour-brand-inkwell, #14343b);
59
- --af-button-tertiary-stroke: var(--colour-brand-soft-clay, #B09670);
57
+ --af-button-ghost-text: var(--colour-brand-inkwell, #14343b);
58
+ --af-button-ghost-icon: var(--colour-brand-inkwell, #14343b);
59
+ --af-button-ghost-stroke: var(--colour-brand-soft-clay, #B09670);
60
60
 
61
61
  /* Input tokens */
62
62
  --af-input-label: var(--af-typography-body-dark);
@@ -126,9 +126,9 @@
126
126
  --af-button-secondary-stroke: var(--colour-brand-white, #ffffff);
127
127
 
128
128
  /* Button - Tertiary */
129
- --af-button-tertiary-text: var(--colour-brand-white, #ffffff);
130
- --af-button-tertiary-icon: var(--colour-brand-white, #ffffff);
131
- --af-button-tertiary-stroke: var(--colour-brand-ice, #A6FFFB);
129
+ --af-button-ghost-text: var(--colour-brand-white, #ffffff);
130
+ --af-button-ghost-icon: var(--colour-brand-white, #ffffff);
131
+ --af-button-ghost-stroke: var(--colour-brand-ice, #A6FFFB);
132
132
 
133
133
  /* Input tokens */
134
134
  --af-input-label: var(--af-typography-body-dark);
@@ -198,9 +198,9 @@
198
198
  --af-button-secondary-stroke: var(--colour-brand-inkwell, #14343b);
199
199
 
200
200
  /* Button - Tertiary */
201
- --af-button-tertiary-text: var(--colour-brand-inkwell, #14343b);
202
- --af-button-tertiary-icon: var(--colour-brand-inkwell, #14343b);
203
- --af-button-tertiary-stroke: var(--colour-brand-soft-clay, #B09670);
201
+ --af-button-ghost-text: var(--colour-brand-inkwell, #14343b);
202
+ --af-button-ghost-icon: var(--colour-brand-inkwell, #14343b);
203
+ --af-button-ghost-stroke: var(--colour-brand-soft-clay, #B09670);
204
204
 
205
205
  /* Input tokens */
206
206
  --af-input-label: var(--af-typography-body-dark);
@@ -270,9 +270,9 @@
270
270
  --af-button-secondary-stroke: var(--colour-brand-inkwell, #14343b);
271
271
 
272
272
  /* Button - Tertiary */
273
- --af-button-tertiary-text: var(--colour-brand-inkwell, #14343b);
274
- --af-button-tertiary-icon: var(--colour-brand-inkwell, #14343b);
275
- --af-button-tertiary-stroke: var(--colour-brand-inkwell, #14343b);
273
+ --af-button-ghost-text: var(--colour-brand-inkwell, #14343b);
274
+ --af-button-ghost-icon: var(--colour-brand-inkwell, #14343b);
275
+ --af-button-ghost-stroke: var(--colour-brand-inkwell, #14343b);
276
276
 
277
277
  /* Input tokens */
278
278
  --af-input-label: var(--af-typography-body-dark);
@@ -342,9 +342,9 @@
342
342
  --af-button-secondary-stroke: var(--colour-brand-inkwell, #14343b);
343
343
 
344
344
  /* Button - Tertiary */
345
- --af-button-tertiary-text: var(--colour-brand-inkwell, #14343b);
346
- --af-button-tertiary-icon: var(--colour-brand-inkwell, #14343b);
347
- --af-button-tertiary-stroke: var(--colour-brand-soft-clay, #b09670);
345
+ --af-button-ghost-text: var(--colour-brand-inkwell, #14343b);
346
+ --af-button-ghost-icon: var(--colour-brand-inkwell, #14343b);
347
+ --af-button-ghost-stroke: var(--colour-brand-soft-clay, #b09670);
348
348
 
349
349
  /* Input tokens */
350
350
  --af-input-label: var(--af-typography-body-dark);
@@ -18,7 +18,7 @@ export class AfThemeOverride {
18
18
  this.theme = 'white';
19
19
  }
20
20
  render() {
21
- return (h(Host, { key: '303d518d6047bb01db2b315a93169014c849a78e' }, h("div", { key: '6d208731e221d7514d384543fe79e68c0830a3fb', class: `theme-override theme-${this.theme}` }, h("slot", { key: '75de070f92a698b39286eacc5981b3d7d642b49a' }))));
21
+ return (h(Host, { key: '50001378d57949164fc08ca1789372a448be5544' }, h("div", { key: '9404950a7fad99904b3600a234a9d1ea2d424054', class: `theme-override theme-${this.theme}` }, h("slot", { key: 'c5db6376b0e3dbb08eafb48f22ae8a70364deb3e' }))));
22
22
  }
23
23
  static get is() { return "af-theme-override"; }
24
24
  static get encapsulation() { return "scoped"; }
@@ -123,14 +123,14 @@
123
123
  gap: var(--space-2, 8px);
124
124
  }
125
125
 
126
- /* Heading styles */
126
+ /* Heading styles - font-weight 400 (regular) matches Webflow's NeuSans usage */
127
127
  .heading {
128
128
  font-family: var(--typography-headingfont, 'NeuSans', sans-serif);
129
- font-weight: var(--font-weight-book, 500);
129
+ font-weight: var(--font-weight-regular, 400);
130
130
  color: var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B));
131
131
  line-height: var(--line-height-heading-tight, 1);
132
132
  letter-spacing: var(--letter-spacing-heading, -0.02em);
133
- white-space: pre-wrap;
133
+ white-space: normal;
134
134
  }
135
135
 
136
136
  /* Desktop heading sizes */
@@ -186,7 +186,25 @@
186
186
  font-weight: var(--font-weight-regular, 400);
187
187
  line-height: var(--line-height-body-large, 26px);
188
188
  color: var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F));
189
- white-space: pre-wrap;
189
+ white-space: normal;
190
+ }
191
+
192
+ /* Heading colour variants — matches Webflow's h1.primary / h1.secondary pattern */
193
+ .heading.heading-color-primary {
194
+ color: var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B));
195
+ }
196
+
197
+ .heading.heading-color-secondary {
198
+ color: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670));
199
+ }
200
+
201
+ /* Description colour variants */
202
+ .description.description-color-default {
203
+ color: var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F));
204
+ }
205
+
206
+ .description.description-color-secondary {
207
+ color: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670));
190
208
  }
191
209
 
192
210
  /* Description text size variations - smaller for heading 3 mobile, 4, and 5 */
@@ -18,6 +18,21 @@ export class AfTypographyLockup {
18
18
  * Button layout direction (horizontal or vertical stacking)
19
19
  */
20
20
  this.buttonLayout = 'vertical';
21
+ /**
22
+ * Heading colour variant. Matches the Webflow pattern of `h1.primary` vs
23
+ * `h1.secondary`, where "secondary" renders in the theme's accent/heading-
24
+ * secondary colour (soft-clay on most themes).
25
+ * - `primary` (default) - uses `--af-typography-heading-primary`
26
+ * - `secondary` - uses `--af-typography-heading-secondary`
27
+ */
28
+ this.headingColor = 'primary';
29
+ /**
30
+ * Description colour variant. Same pattern as `headingColor`; useful for
31
+ * hero-style lockups where the description is rendered in the accent colour.
32
+ * - `default` (default) - uses `--af-typography-body-default`
33
+ * - `secondary` - uses `--af-typography-heading-secondary`
34
+ */
35
+ this.descriptionColor = 'default';
21
36
  }
22
37
  render() {
23
38
  const effectiveHeadingAlignment = this.headingAlignment ?? this.textAlignment;
@@ -32,18 +47,20 @@ export class AfTypographyLockup {
32
47
  };
33
48
  const headingClasses = {
34
49
  'heading': true,
35
- [`align-${effectiveHeadingAlignment}`]: true
50
+ [`align-${effectiveHeadingAlignment}`]: true,
51
+ [`heading-color-${this.headingColor}`]: true
36
52
  };
37
53
  const descriptionClasses = {
38
54
  'description': true,
39
- [`align-${effectiveDescriptionAlignment}`]: true
55
+ [`align-${effectiveDescriptionAlignment}`]: true,
56
+ [`description-color-${this.descriptionColor}`]: true
40
57
  };
41
58
  const buttonsClasses = {
42
59
  'buttons': true,
43
60
  [`align-${effectiveButtonsAlignment}`]: true
44
61
  };
45
62
  const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};
46
- return (h(Host, { key: '8cb507e162ef7a2bca263b7fecb7ef480382e615' }, h("div", { key: '94106d59d250a47ca21c15f2e8cb5c1bef7a3936', class: containerClasses }, h("div", { key: 'f465704d4f7b1bf77611e32958674a6093813abc', class: "copy", style: copyStyle }, h("div", { key: 'd4bcad644d1194c2ecfa593bf9b6a6f185e4a7c2', class: headingClasses, part: "heading" }, h("slot", { key: '97558da091bfc3b63cf57ec0816eb3b952cb201a' })), h("div", { key: 'c0839f719f0165ecaa296bb0be321a2d8c482e87', class: descriptionClasses, part: "body" }, h("slot", { key: '946a5ff890fb09144fee49687fb9de83f45c7aac', name: "description" }))), h("div", { key: '6f06d69183d006be1031eb1f73164f10811df9b1', class: buttonsClasses, part: "buttons" }, h("slot", { key: '253ba8fada86b55b5516d4dd8732aa19dfeda620', name: "buttons" })))));
63
+ return (h(Host, { key: 'e27de1c33a4f7b9e28c1a2045fc858d2b9bd9253' }, h("div", { key: '0fc659232e499590465bcafb7d72caa6319ad962', class: containerClasses }, h("div", { key: 'c21ef0bbf92217bd988263f0b2e2483ed4e00421', class: "copy", style: copyStyle }, h("div", { key: '13f847be028122f4462c44f2ee8dd05b261c93a0', class: headingClasses, part: "heading" }, h("slot", { key: '2a9f921c75a2cb4e90ba3c3f10e9444ee74437e9' })), h("div", { key: 'aaa6c2bb8d8e186d6d1c05b2a72ee74ed806994a', class: descriptionClasses, part: "body" }, h("slot", { key: '435caeb349e749edb1fe02e66614c7f94c8ca1a5', name: "description" }))), h("div", { key: '21bf7d348b950564d41e2f3cb6a827463edc1d77', class: buttonsClasses, part: "buttons" }, h("slot", { key: 'b92d0e35e21f3f2f7e41e29439388652435c636b', name: "buttons" })))));
47
64
  }
48
65
  static get is() { return "af-typography-lockup"; }
49
66
  static get encapsulation() { return "shadow"; }
@@ -234,6 +251,46 @@ export class AfTypographyLockup {
234
251
  "setter": false,
235
252
  "reflect": false,
236
253
  "attribute": "max-width"
254
+ },
255
+ "headingColor": {
256
+ "type": "string",
257
+ "mutable": false,
258
+ "complexType": {
259
+ "original": "'primary' | 'secondary'",
260
+ "resolved": "\"primary\" | \"secondary\"",
261
+ "references": {}
262
+ },
263
+ "required": false,
264
+ "optional": false,
265
+ "docs": {
266
+ "tags": [],
267
+ "text": "Heading colour variant. Matches the Webflow pattern of `h1.primary` vs\n`h1.secondary`, where \"secondary\" renders in the theme's accent/heading-\nsecondary colour (soft-clay on most themes).\n- `primary` (default) - uses `--af-typography-heading-primary`\n- `secondary` - uses `--af-typography-heading-secondary`"
268
+ },
269
+ "getter": false,
270
+ "setter": false,
271
+ "reflect": false,
272
+ "attribute": "heading-color",
273
+ "defaultValue": "'primary'"
274
+ },
275
+ "descriptionColor": {
276
+ "type": "string",
277
+ "mutable": false,
278
+ "complexType": {
279
+ "original": "'default' | 'secondary'",
280
+ "resolved": "\"default\" | \"secondary\"",
281
+ "references": {}
282
+ },
283
+ "required": false,
284
+ "optional": false,
285
+ "docs": {
286
+ "tags": [],
287
+ "text": "Description colour variant. Same pattern as `headingColor`; useful for\nhero-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`"
288
+ },
289
+ "getter": false,
290
+ "setter": false,
291
+ "reflect": false,
292
+ "attribute": "description-color",
293
+ "defaultValue": "'default'"
237
294
  }
238
295
  };
239
296
  }
@@ -1 +1 @@
1
- {"version":3,"file":"af-typography-lockup.js","sourceRoot":"","sources":["../../../src/components/af-typography-lockup/af-typography-lockup.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AASzD,MAAM,OAAO,kBAAkB;IAL/B;QAME;;WAEG;QACK,gBAAW,GAAsB,CAAC,CAAC;QAE3C;;WAEG;QACK,eAAU,GAAyB,SAAS,CAAC;QAErD;;;WAGG;QACK,kBAAa,GAAc,MAAM,CAAC;QAY1C;;WAEG;QACK,iBAAY,GAA8B,UAAU,CAAC;KA4D9D;IAhDC,MAAM;QACJ,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC;QAC9E,MAAM,6BAA6B,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,aAAa,CAAC;QACtF,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC;QAE9E,MAAM,gBAAgB,GAAG;YACvB,QAAQ,EAAE,IAAI;YACd,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI;YACpC,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI;YACrC,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI;YACrC,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;SACxC,CAAC;QAEF,MAAM,cAAc,GAAG;YACrB,SAAS,EAAE,IAAI;YACf,CAAC,SAAS,yBAAyB,EAAE,CAAC,EAAE,IAAI;SAC7C,CAAC;QAEF,MAAM,kBAAkB,GAAG;YACzB,aAAa,EAAE,IAAI;YACnB,CAAC,SAAS,6BAA6B,EAAE,CAAC,EAAE,IAAI;SACjD,CAAC;QAEF,MAAM,cAAc,GAAG;YACrB,SAAS,EAAE,IAAI;YACf,CAAC,SAAS,yBAAyB,EAAE,CAAC,EAAE,IAAI;SAC7C,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1E,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAE,gBAAgB;gBAC1B,4DAAK,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,SAAS;oBAChC,4DAAK,KAAK,EAAE,cAAc,EAAE,IAAI,EAAC,SAAS;wBACxC,8DAAa,CACT;oBACN,4DAAK,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAC,MAAM;wBACzC,6DAAM,IAAI,EAAC,aAAa,GAAQ,CAC5B,CACF;gBACN,4DAAK,KAAK,EAAE,cAAc,EAAE,IAAI,EAAC,SAAS;oBACxC,6DAAM,IAAI,EAAC,SAAS,GAAQ,CACxB,CACF,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Prop, Host } from '@stencil/core';\n\ntype TextAlign = 'left' | 'center' | 'right' | 'justify';\n\n@Component({\n tag: 'af-typography-lockup',\n styleUrl: 'af-typography-lockup.css',\n shadow: true\n})\nexport class AfTypographyLockup {\n /**\n * The heading size (1-5, where 1 is largest)\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 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 };\n\n const descriptionClasses = {\n 'description': true,\n [`align-${effectiveDescriptionAlignment}`]: 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\">\n <slot name=\"description\"></slot>\n </div>\n </div>\n <div class={buttonsClasses} part=\"buttons\">\n <slot name=\"buttons\"></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":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AASzD,MAAM,OAAO,kBAAkB;IAL/B;QAME;;WAEG;QACK,gBAAW,GAAsB,CAAC,CAAC;QAE3C;;WAEG;QACK,eAAU,GAAyB,SAAS,CAAC;QAErD;;;WAGG;QACK,kBAAa,GAAc,MAAM,CAAC;QAY1C;;WAEG;QACK,iBAAY,GAA8B,UAAU,CAAC;QAY7D;;;;;;WAMG;QACK,iBAAY,GAA4B,SAAS,CAAC;QAE1D;;;;;WAKG;QACK,qBAAgB,GAA4B,SAAS,CAAC;KAoD/D;IAlDC,MAAM;QACJ,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC;QAC9E,MAAM,6BAA6B,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,aAAa,CAAC;QACtF,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC;QAE9E,MAAM,gBAAgB,GAAG;YACvB,QAAQ,EAAE,IAAI;YACd,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI;YACpC,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI;YACrC,CAAC,WAAW,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI;YACrC,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI;SACxC,CAAC;QAEF,MAAM,cAAc,GAAG;YACrB,SAAS,EAAE,IAAI;YACf,CAAC,SAAS,yBAAyB,EAAE,CAAC,EAAE,IAAI;YAC5C,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI;SAC7C,CAAC;QAEF,MAAM,kBAAkB,GAAG;YACzB,aAAa,EAAE,IAAI;YACnB,CAAC,SAAS,6BAA6B,EAAE,CAAC,EAAE,IAAI;YAChD,CAAC,qBAAqB,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,IAAI;SACrD,CAAC;QAEF,MAAM,cAAc,GAAG;YACrB,SAAS,EAAE,IAAI;YACf,CAAC,SAAS,yBAAyB,EAAE,CAAC,EAAE,IAAI;SAC7C,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1E,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAE,gBAAgB;gBAC1B,4DAAK,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,SAAS;oBAChC,4DAAK,KAAK,EAAE,cAAc,EAAE,IAAI,EAAC,SAAS;wBACxC,8DAAa,CACT;oBACN,4DAAK,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAC,MAAM;wBACzC,6DAAM,IAAI,EAAC,aAAa,GAAQ,CAC5B,CACF;gBACN,4DAAK,KAAK,EAAE,cAAc,EAAE,IAAI,EAAC,SAAS;oBACxC,6DAAM,IAAI,EAAC,SAAS,GAAQ,CACxB,CACF,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Prop, Host } from '@stencil/core';\n\ntype TextAlign = 'left' | 'center' | 'right' | 'justify';\n\n@Component({\n tag: 'af-typography-lockup',\n styleUrl: 'af-typography-lockup.css',\n shadow: true\n})\nexport class AfTypographyLockup {\n /**\n * The heading size (1-5, where 1 is largest)\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 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\">\n <slot name=\"description\"></slot>\n </div>\n </div>\n <div class={buttonsClasses} part=\"buttons\">\n <slot name=\"buttons\"></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: '8ea21d7dbe736b27b79c0fc7890796f1b1b282aa' }, h("div", { key: '92bb0cbf3d58a3304f891109433f965e7fd23816', class: "video-container" }, h("div", { key: 'ecec6d6ca2a76e5dd06d3b2e9bc370ac3e41ba00', class: "video-container__top" }, h("slot", { key: '2d8243cc440b70409910953186ae6ba36e36d4ca', name: "top" })), h("div", { key: '3bbafe7f6cbaa57da83c576f7fa5a17f2d8244a1', class: "video-container__video" }, h("af-aspect-ratio", { key: '7f1504a644c406c7f61b5a01707778c104746789', ratio: "16:9" }, h("div", { key: 'fe18441bf7e4b46e123d1d18a394336a416cf373', class: "video-container__thumbnail-wrapper" }, this.videoThumbnailUrl && (h("img", { key: 'd624e7c7299f465d8ffde109e5215512126fc60c', src: this.videoThumbnailUrl, alt: this.videoAlt, class: "video-container__thumbnail", loading: "lazy" })), h("button", { key: 'bef98e5cb47e9a9f9849547edd3c8f56baff778e', class: "video-container__play-button", onClick: this.handlePlayClick, "aria-label": "Play video", type: "button" }, h("af-icon", { key: 'e3c6cbb6236d1a60a39e5081ad4285896791cd9d', name: "play", size: 24 }))))), h("div", { key: '60ef6d0a51d15b03af7b3ab09d2d8214daedbcab', class: "video-container__bottom" }, h("slot", { key: 'fec2c7b7101caf72142fda6a0c1fa281785b08e3', name: "bottom" })))));
45
+ return (h(Host, { key: '2957c01ece0612a8475be10e3f4d4dfadd93a983' }, h("div", { key: '5d305aaeeca5d29ee53f6623563438c2750cf0bd', class: "video-container" }, h("div", { key: '8cec69a4441615cea1358e97186cf4dfda68e53a', class: "video-container__top" }, h("slot", { key: '3d4df805bfe1c12a0e7fa7bdb90b1fcf05da8c12', name: "top" })), h("div", { key: 'a91bde38acaab8c71b6eb98fae13711d8a83d98c', class: "video-container__video" }, h("af-aspect-ratio", { key: '7ecb697869a1bb8e564746d76390259b1066d616', ratio: "16:9" }, h("div", { key: 'e6322afbe0dfd1ffc2d1b268fe2d53c289f6cec0', class: "video-container__thumbnail-wrapper" }, this.videoThumbnailUrl && (h("img", { key: '609e1fe39072233e28f850d804a919e2dd6001f4', src: this.videoThumbnailUrl, alt: this.videoAlt, class: "video-container__thumbnail", loading: "lazy" })), h("button", { key: '5a1d1acf6e23f9d2f0257ed7f383490c2870ea52', class: "video-container__play-button", onClick: this.handlePlayClick, "aria-label": "Play video", type: "button" }, h("af-icon", { key: '8d35a930f1248440547b595a57334cc6d1059ea4', name: "play", size: 24 }))))), h("div", { key: '00c7f37ebcead64a55a3bf440efd02427668989b', class: "video-container__bottom" }, h("slot", { key: 'd897fd3c57f62464b0a9ca6b901cbae51e9f3219', 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: '7c6e072e0ef0882ba20138c59d76a7c3db2851c4', class: { 'focusable': this.focusable } }, h("slot", { key: '759af7ecc05e1a715a0be376c350adcf55ce3a04' })));
18
+ return (h(Host, { key: 'd6621c547bf297f4d90d1529175bdcf5fa427888', class: { 'focusable': this.focusable } }, h("slot", { key: '23ae63d9d6bac054a49e49b7ea280c6b6593defd' })));
19
19
  }
20
20
  static get is() { return "af-visually-hidden"; }
21
21
  static get encapsulation() { return "shadow"; }