@affinda/wc 0.1.0 → 0.3.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 (489) 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-divider.entry.esm.js.map +1 -1
  4. package/dist/affinda/af-feature-card.entry.esm.js.map +1 -1
  5. package/dist/affinda/af-grid.entry.esm.js.map +1 -1
  6. package/dist/affinda/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.esm.js.map +1 -1
  7. package/dist/affinda/af-hero.entry.esm.js.map +1 -0
  8. package/dist/affinda/af-illustrated-card.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-inline.entry.esm.js.map +1 -1
  11. package/dist/affinda/af-numbered-stepper-item.entry.esm.js.map +1 -0
  12. package/dist/affinda/af-numbered-stepper.entry.esm.js.map +1 -0
  13. package/dist/affinda/af-section.entry.esm.js.map +1 -1
  14. package/dist/affinda/af-split-section.entry.esm.js.map +1 -1
  15. package/dist/affinda/af-stack.entry.esm.js.map +1 -1
  16. package/dist/affinda/af-stat.entry.esm.js.map +1 -0
  17. package/dist/affinda/af-stats-row.entry.esm.js.map +1 -0
  18. package/dist/affinda/af-testimonial-carousel.entry.esm.js.map +1 -1
  19. package/dist/affinda/af-testimonial.entry.esm.js.map +1 -1
  20. package/dist/affinda/af-theme-override.entry.esm.js.map +1 -1
  21. package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
  22. package/dist/affinda/af-video-container.entry.esm.js.map +1 -1
  23. package/dist/affinda/affinda.esm.js +1 -1
  24. package/dist/affinda/index.esm.js +1 -1
  25. package/dist/affinda/index.esm.js.map +1 -1
  26. package/dist/affinda/{p-4cf65950.entry.js → p-068ac2fb.entry.js} +2 -2
  27. package/dist/affinda/{p-f10a31cb.entry.js → p-0acadf6f.entry.js} +2 -2
  28. package/dist/affinda/{p-6e40dbdf.entry.js → p-165c413d.entry.js} +2 -2
  29. package/dist/affinda/p-165c413d.entry.js.map +1 -0
  30. package/dist/affinda/{p-e1e98cd6.entry.js → p-1b4b0c88.entry.js} +2 -2
  31. package/dist/affinda/p-2237e652.entry.js +2 -0
  32. package/dist/affinda/{p-56fe6e6e.entry.js.map → p-2237e652.entry.js.map} +1 -1
  33. package/dist/affinda/p-2526604b.entry.js +2 -0
  34. package/dist/affinda/p-2526604b.entry.js.map +1 -0
  35. package/dist/affinda/{p-8c4e3047.entry.js → p-256970e3.entry.js} +2 -2
  36. package/dist/affinda/p-32d62fbb.entry.js +2 -0
  37. package/dist/affinda/{p-3ee906de.entry.js → p-342b08e5.entry.js} +2 -2
  38. package/dist/affinda/{p-a84ae4a5.entry.js → p-365a75e2.entry.js} +2 -2
  39. package/dist/affinda/p-3ed408f6.entry.js +2 -0
  40. package/dist/affinda/{p-edb1a010.entry.js → p-4058a1eb.entry.js} +2 -2
  41. package/dist/affinda/{p-94f51238.entry.js → p-41bbb218.entry.js} +2 -2
  42. package/dist/affinda/p-436673bb.entry.js +2 -0
  43. package/dist/affinda/p-436673bb.entry.js.map +1 -0
  44. package/dist/affinda/{p-c8c4783c.entry.js → p-44d960ca.entry.js} +2 -2
  45. package/dist/affinda/{p-e1cbe95a.entry.js → p-4a9b192b.entry.js} +2 -2
  46. package/dist/affinda/p-4eeeb8a1.entry.js +2 -0
  47. package/dist/affinda/{p-49521f2e.entry.js.map → p-4eeeb8a1.entry.js.map} +1 -1
  48. package/dist/affinda/{p-b2633acb.entry.js → p-5c163c5b.entry.js} +2 -2
  49. package/dist/affinda/{p-48aadea9.entry.js → p-5e5e7d75.entry.js} +2 -2
  50. package/dist/affinda/{p-da2d84f7.entry.js → p-61a6b43d.entry.js} +2 -2
  51. package/dist/affinda/{p-ea42c40b.entry.js → p-631d141c.entry.js} +2 -2
  52. package/dist/affinda/{p-6038a213.entry.js → p-6475796d.entry.js} +2 -2
  53. package/dist/affinda/{p-50a67fb6.entry.js → p-65dd559a.entry.js} +2 -2
  54. package/dist/affinda/p-6756aa66.entry.js +2 -0
  55. package/dist/affinda/p-6e181b2b.entry.js +2 -0
  56. package/dist/affinda/{p-0201c8bd.entry.js → p-6ea474a3.entry.js} +2 -2
  57. package/dist/affinda/{p-a71d528d.entry.js → p-7111051c.entry.js} +2 -2
  58. package/dist/affinda/p-7d3cdda1.entry.js +2 -0
  59. package/dist/affinda/p-7d3cdda1.entry.js.map +1 -0
  60. package/dist/affinda/{p-0137e7a5.entry.js → p-827f3050.entry.js} +2 -2
  61. package/dist/affinda/{p-78518e6c.entry.js → p-83bb96cc.entry.js} +2 -2
  62. package/dist/affinda/p-85cc55bb.entry.js +2 -0
  63. package/dist/affinda/p-85cc55bb.entry.js.map +1 -0
  64. package/dist/affinda/{p-2e6192eb.entry.js → p-9480f00d.entry.js} +2 -2
  65. package/dist/affinda/{p-e055407b.entry.js → p-9ce0adc2.entry.js} +2 -2
  66. package/dist/affinda/{p-81706709.entry.js → p-a02d6192.entry.js} +2 -2
  67. package/dist/affinda/p-a1e80460.entry.js +2 -0
  68. package/dist/affinda/{p-ef5857cf.entry.js.map → p-a1e80460.entry.js.map} +1 -1
  69. package/dist/affinda/{p-ad41f905.entry.js → p-a25d3257.entry.js} +2 -2
  70. package/dist/affinda/{p-5f6a5741.entry.js → p-a8d75eb1.entry.js} +2 -2
  71. package/dist/affinda/{p-5265e82e.entry.js → p-ae430873.entry.js} +2 -2
  72. package/dist/affinda/{p-081cc890.entry.js → p-b39eea31.entry.js} +2 -2
  73. package/dist/affinda/{p-4c4406bf.entry.js → p-b9ec0e75.entry.js} +2 -2
  74. package/dist/affinda/{p-feb3d03f.entry.js → p-bbfc9df6.entry.js} +2 -2
  75. package/dist/affinda/{p-6c58b283.entry.js → p-bed7d9a1.entry.js} +2 -2
  76. package/dist/affinda/{p-4b154e23.entry.js → p-d362651c.entry.js} +2 -2
  77. package/dist/affinda/p-d362651c.entry.js.map +1 -0
  78. package/dist/affinda/{p-3a0e45c3.entry.js → p-d7d82986.entry.js} +2 -2
  79. package/dist/affinda/p-dabd389a.entry.js +2 -0
  80. package/dist/affinda/p-dabd389a.entry.js.map +1 -0
  81. package/dist/affinda/{p-a35029eb.entry.js → p-dcc89b4c.entry.js} +2 -2
  82. package/dist/affinda/{p-f9315f9e.entry.js → p-e07e27f1.entry.js} +2 -2
  83. package/dist/affinda/{p-dbe7ab88.entry.js → p-eeda78ea.entry.js} +2 -2
  84. package/dist/affinda/{p-b2b28366.entry.js → p-f19cb091.entry.js} +2 -2
  85. package/dist/cjs/af-accordion-item.cjs.entry.js +1 -1
  86. package/dist/cjs/af-accordion.cjs.entry.js +1 -1
  87. package/dist/cjs/af-card.cjs.entry.js +1 -1
  88. package/dist/cjs/af-card.entry.cjs.js.map +1 -1
  89. package/dist/cjs/af-center.cjs.entry.js +1 -1
  90. package/dist/cjs/af-client-carousel.cjs.entry.js +1 -1
  91. package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -1
  92. package/dist/cjs/af-contact-item.cjs.entry.js +1 -1
  93. package/dist/cjs/af-divider.cjs.entry.js +1 -1
  94. package/dist/cjs/af-divider.entry.cjs.js.map +1 -1
  95. package/dist/cjs/af-feature-accordion.cjs.entry.js +2 -2
  96. package/dist/cjs/af-feature-card.entry.cjs.js.map +1 -1
  97. package/dist/cjs/af-feature-grid.cjs.entry.js +1 -1
  98. package/dist/cjs/af-footer-column.cjs.entry.js +1 -1
  99. package/dist/cjs/af-footer-link.cjs.entry.js +1 -1
  100. package/dist/cjs/af-footer.cjs.entry.js +1 -1
  101. package/dist/cjs/af-grid.cjs.entry.js +2 -2
  102. package/dist/cjs/af-grid.entry.cjs.js.map +1 -1
  103. package/dist/cjs/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.cjs.js.map +1 -1
  104. package/dist/cjs/af-heading_5.cjs.entry.js +1 -1
  105. package/dist/cjs/af-hero.cjs.entry.js +94 -0
  106. package/dist/cjs/af-hero.entry.cjs.js.map +1 -0
  107. package/dist/cjs/af-icon-box.cjs.entry.js +1 -1
  108. package/dist/cjs/af-icon-text.cjs.entry.js +1 -1
  109. package/dist/cjs/af-illustrated-card.cjs.entry.js +1 -1
  110. package/dist/cjs/af-illustrated-card.entry.cjs.js.map +1 -1
  111. package/dist/cjs/af-image.cjs.entry.js +1 -1
  112. package/dist/cjs/af-in-page-banner.cjs.entry.js +1 -1
  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-inline.entry.cjs.js.map +1 -1
  116. package/dist/cjs/af-logo-well.cjs.entry.js +1 -1
  117. package/dist/cjs/af-nav-accordion-item.cjs.entry.js +2 -2
  118. package/dist/cjs/af-nav-accordion.cjs.entry.js +1 -1
  119. package/dist/cjs/af-nav-menu-nest.cjs.entry.js +1 -1
  120. package/dist/cjs/af-nav-menu.cjs.entry.js +1 -1
  121. package/dist/cjs/af-number-badge.cjs.entry.js +1 -1
  122. package/dist/cjs/af-numbered-stepper-item.cjs.entry.js +25 -0
  123. package/dist/cjs/af-numbered-stepper-item.entry.cjs.js.map +1 -0
  124. package/dist/cjs/af-numbered-stepper.cjs.entry.js +36 -0
  125. package/dist/cjs/af-numbered-stepper.entry.cjs.js.map +1 -0
  126. package/dist/cjs/af-paperclip-decoration.cjs.entry.js +1 -1
  127. package/dist/cjs/af-progress-line.cjs.entry.js +2 -2
  128. package/dist/cjs/af-section.cjs.entry.js +2 -2
  129. package/dist/cjs/af-section.entry.cjs.js.map +1 -1
  130. package/dist/cjs/af-show.cjs.entry.js +1 -1
  131. package/dist/cjs/af-social-link.cjs.entry.js +1 -1
  132. package/dist/cjs/af-spacer.cjs.entry.js +1 -1
  133. package/dist/cjs/af-split-section.cjs.entry.js +2 -2
  134. package/dist/cjs/af-split-section.entry.cjs.js.map +1 -1
  135. package/dist/cjs/af-stack.cjs.entry.js +1 -1
  136. package/dist/cjs/af-stack.entry.cjs.js.map +1 -1
  137. package/dist/cjs/af-stat.cjs.entry.js +18 -0
  138. package/dist/cjs/af-stat.entry.cjs.js.map +1 -0
  139. package/dist/cjs/af-stats-row.cjs.entry.js +18 -0
  140. package/dist/cjs/af-stats-row.entry.cjs.js.map +1 -0
  141. package/dist/cjs/af-stepper-step.cjs.entry.js +1 -1
  142. package/dist/cjs/af-stepper.cjs.entry.js +1 -1
  143. package/dist/cjs/af-testimonial-carousel.cjs.entry.js +1 -1
  144. package/dist/cjs/af-testimonial-carousel.entry.cjs.js.map +1 -1
  145. package/dist/cjs/af-testimonial-stat.cjs.entry.js +1 -1
  146. package/dist/cjs/af-testimonial.cjs.entry.js +6 -6
  147. package/dist/cjs/af-testimonial.entry.cjs.js.map +1 -1
  148. package/dist/cjs/af-text-image-nest.cjs.entry.js +1 -1
  149. package/dist/cjs/af-theme-override.cjs.entry.js +1 -1
  150. package/dist/cjs/af-theme-override.entry.cjs.js.map +1 -1
  151. package/dist/cjs/af-typography-lockup.cjs.entry.js +1 -1
  152. package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
  153. package/dist/cjs/af-video-container.cjs.entry.js +3 -3
  154. package/dist/cjs/af-video-container.entry.cjs.js.map +1 -1
  155. package/dist/cjs/af-visually-hidden.cjs.entry.js +1 -1
  156. package/dist/cjs/affinda.cjs.js +1 -1
  157. package/dist/cjs/index.cjs.js +2 -0
  158. package/dist/cjs/index.cjs.js.map +1 -1
  159. package/dist/cjs/loader.cjs.js +1 -1
  160. package/dist/collection/collection-manifest.json +5 -0
  161. package/dist/collection/components/af-accordion/af-accordion.js +1 -1
  162. package/dist/collection/components/af-accordion-item/af-accordion-item.js +1 -1
  163. package/dist/collection/components/af-card/af-card.js +9 -3
  164. package/dist/collection/components/af-card/af-card.js.map +1 -1
  165. package/dist/collection/components/af-center/af-center.js +1 -1
  166. package/dist/collection/components/af-client-carousel/af-client-carousel.js +4 -3
  167. package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -1
  168. package/dist/collection/components/af-contact-item/af-contact-item.js +1 -1
  169. package/dist/collection/components/af-divider/af-divider.js +1 -1
  170. package/dist/collection/components/af-divider/af-divider.js.map +1 -1
  171. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +2 -2
  172. package/dist/collection/components/af-feature-card/af-feature-card.js +8 -2
  173. package/dist/collection/components/af-feature-card/af-feature-card.js.map +1 -1
  174. package/dist/collection/components/af-feature-grid/af-feature-grid.js +1 -1
  175. package/dist/collection/components/af-footer/af-footer.js +1 -1
  176. package/dist/collection/components/af-footer-column/af-footer-column.js +1 -1
  177. package/dist/collection/components/af-footer-link/af-footer-link.js +1 -1
  178. package/dist/collection/components/af-grid/af-grid.js +5 -4
  179. package/dist/collection/components/af-grid/af-grid.js.map +1 -1
  180. package/dist/collection/components/af-hero/af-hero.css +282 -0
  181. package/dist/collection/components/af-hero/af-hero.js +314 -0
  182. package/dist/collection/components/af-hero/af-hero.js.map +1 -0
  183. package/dist/collection/components/af-icon-box/af-icon-box.js +1 -1
  184. package/dist/collection/components/af-icon-text/af-icon-text.js +1 -1
  185. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +9 -3
  186. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +1 -1
  187. package/dist/collection/components/af-image/af-image.js +1 -1
  188. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js +7 -6
  189. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +1 -1
  190. package/dist/collection/components/af-inline/af-inline.js +4 -3
  191. package/dist/collection/components/af-inline/af-inline.js.map +1 -1
  192. package/dist/collection/components/af-logo-well/af-logo-well.js +1 -1
  193. package/dist/collection/components/af-nav-accordion/af-nav-accordion.js +1 -1
  194. package/dist/collection/components/af-nav-accordion-item/af-nav-accordion-item.js +2 -2
  195. package/dist/collection/components/af-nav-menu/af-nav-menu.js +1 -1
  196. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +1 -1
  197. package/dist/collection/components/af-navbar/af-navbar.js +10 -4
  198. package/dist/collection/components/af-navbar/af-navbar.js.map +1 -1
  199. package/dist/collection/components/af-number-badge/af-number-badge.js +1 -1
  200. package/dist/collection/components/af-numbered-stepper/af-numbered-stepper.css +30 -0
  201. package/dist/collection/components/af-numbered-stepper/af-numbered-stepper.js +92 -0
  202. package/dist/collection/components/af-numbered-stepper/af-numbered-stepper.js.map +1 -0
  203. package/dist/collection/components/af-numbered-stepper-item/af-numbered-stepper-item.css +113 -0
  204. package/dist/collection/components/af-numbered-stepper-item/af-numbered-stepper-item.js +66 -0
  205. package/dist/collection/components/af-numbered-stepper-item/af-numbered-stepper-item.js.map +1 -0
  206. package/dist/collection/components/af-paperclip-decoration/af-paperclip-decoration.js +1 -1
  207. package/dist/collection/components/af-progress-line/af-progress-line.js +2 -2
  208. package/dist/collection/components/af-section/af-section.js +18 -6
  209. package/dist/collection/components/af-section/af-section.js.map +1 -1
  210. package/dist/collection/components/af-show/af-show.js +1 -1
  211. package/dist/collection/components/af-social-link/af-social-link.js +1 -1
  212. package/dist/collection/components/af-spacer/af-spacer.js +1 -1
  213. package/dist/collection/components/af-split-section/af-split-section.js +16 -8
  214. package/dist/collection/components/af-split-section/af-split-section.js.map +1 -1
  215. package/dist/collection/components/af-stack/af-stack.js +4 -3
  216. package/dist/collection/components/af-stack/af-stack.js.map +1 -1
  217. package/dist/collection/components/af-stat/af-stat.css +25 -0
  218. package/dist/collection/components/af-stat/af-stat.js +69 -0
  219. package/dist/collection/components/af-stat/af-stat.js.map +1 -0
  220. package/dist/collection/components/af-stats-row/af-stats-row.css +32 -0
  221. package/dist/collection/components/af-stats-row/af-stats-row.js +33 -0
  222. package/dist/collection/components/af-stats-row/af-stats-row.js.map +1 -0
  223. package/dist/collection/components/af-stepper/af-stepper.js +1 -1
  224. package/dist/collection/components/af-stepper-step/af-stepper-step.js +1 -1
  225. package/dist/collection/components/af-testimonial/af-testimonial.js +8 -8
  226. package/dist/collection/components/af-testimonial/af-testimonial.js.map +1 -1
  227. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +3 -3
  228. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js.map +1 -1
  229. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
  230. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +1 -1
  231. package/dist/collection/components/af-theme-override/af-theme-override.js +9 -3
  232. package/dist/collection/components/af-theme-override/af-theme-override.js.map +1 -1
  233. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +9 -3
  234. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +1 -1
  235. package/dist/collection/components/af-video-container/af-video-container.js +4 -4
  236. package/dist/collection/components/af-video-container/af-video-container.js.map +1 -1
  237. package/dist/collection/components/af-visually-hidden/af-visually-hidden.js +1 -1
  238. package/dist/collection/components.js +1 -0
  239. package/dist/collection/components.js.map +1 -1
  240. package/dist/collection/types.js +2 -0
  241. package/dist/collection/types.js.map +1 -0
  242. package/dist/components/af-accordion-item.js +1 -1
  243. package/dist/components/af-accordion.js +1 -1
  244. package/dist/components/af-card.js +1 -1
  245. package/dist/components/af-center.js +1 -1
  246. package/dist/components/af-client-carousel.js +1 -1
  247. package/dist/components/af-client-carousel.js.map +1 -1
  248. package/dist/components/af-contact-item.js +1 -1
  249. package/dist/components/af-divider.js +1 -1
  250. package/dist/components/af-divider.js.map +1 -1
  251. package/dist/components/af-feature-accordion.js +2 -2
  252. package/dist/components/af-feature-card.js +1 -1
  253. package/dist/components/af-feature-grid.js +2 -2
  254. package/dist/components/af-footer-column.js +1 -1
  255. package/dist/components/af-footer-link.js +1 -1
  256. package/dist/components/af-footer.js +1 -1
  257. package/dist/components/af-grid-callout.js +1 -1
  258. package/dist/components/af-grid.js +2 -2
  259. package/dist/components/af-grid.js.map +1 -1
  260. package/dist/components/af-hero.d.ts +11 -0
  261. package/dist/components/af-hero.js +9 -0
  262. package/dist/components/af-hero.js.map +1 -0
  263. package/dist/components/af-icon-box.js +1 -1
  264. package/dist/components/af-icon-text.js +3 -3
  265. package/dist/components/af-illustrated-card.js +1 -1
  266. package/dist/components/af-image.js +1 -1
  267. package/dist/components/af-in-page-banner.js +1 -1
  268. package/dist/components/af-in-page-banner.js.map +1 -1
  269. package/dist/components/af-inline.js +1 -1
  270. package/dist/components/af-inline.js.map +1 -1
  271. package/dist/components/af-logo-well.js +1 -1
  272. package/dist/components/af-nav-accordion-item.js +2 -2
  273. package/dist/components/af-nav-accordion.js +1 -1
  274. package/dist/components/af-nav-menu-nest.js +1 -1
  275. package/dist/components/af-nav-menu.js +1 -1
  276. package/dist/components/af-navbar.js +1 -1
  277. package/dist/components/af-number-badge.js +1 -58
  278. package/dist/components/af-number-badge.js.map +1 -1
  279. package/dist/components/af-numbered-stepper-item.d.ts +11 -0
  280. package/dist/components/af-numbered-stepper-item.js +58 -0
  281. package/dist/components/af-numbered-stepper-item.js.map +1 -0
  282. package/dist/components/af-numbered-stepper.d.ts +11 -0
  283. package/dist/components/af-numbered-stepper.js +57 -0
  284. package/dist/components/af-numbered-stepper.js.map +1 -0
  285. package/dist/components/af-paperclip-decoration.js +1 -1
  286. package/dist/components/af-progress-line.js +1 -1
  287. package/dist/components/af-section.js +1 -46
  288. package/dist/components/af-section.js.map +1 -1
  289. package/dist/components/af-show.js +1 -1
  290. package/dist/components/af-social-link.js +1 -1
  291. package/dist/components/af-spacer.js +1 -1
  292. package/dist/components/af-split-section.js +2 -2
  293. package/dist/components/af-split-section.js.map +1 -1
  294. package/dist/components/af-stack.js +1 -1
  295. package/dist/components/af-stack.js.map +1 -1
  296. package/dist/components/af-stat.d.ts +11 -0
  297. package/dist/components/af-stat.js +53 -0
  298. package/dist/components/af-stat.js.map +1 -0
  299. package/dist/components/af-stats-row.d.ts +11 -0
  300. package/dist/components/af-stats-row.js +37 -0
  301. package/dist/components/af-stats-row.js.map +1 -0
  302. package/dist/components/af-stepper-step.js +1 -1
  303. package/dist/components/af-stepper.js +1 -1
  304. package/dist/components/af-testimonial-carousel.js +3 -3
  305. package/dist/components/af-testimonial-carousel.js.map +1 -1
  306. package/dist/components/af-testimonial-stat.js +1 -1
  307. package/dist/components/af-testimonial.js +6 -6
  308. package/dist/components/af-testimonial.js.map +1 -1
  309. package/dist/components/af-text-image-nest.js +1 -1
  310. package/dist/components/af-text-image.js +1 -1
  311. package/dist/components/af-theme-override.js +1 -1
  312. package/dist/components/af-theme-override.js.map +1 -1
  313. package/dist/components/af-typography-lockup.js +1 -1
  314. package/dist/components/af-video-container.js +3 -3
  315. package/dist/components/af-video-container.js.map +1 -1
  316. package/dist/components/af-visually-hidden.js +1 -1
  317. package/dist/components/index.js +5 -4
  318. package/dist/components/index.js.map +1 -1
  319. package/dist/components/{p-C6-JATRR.js → p-3Gzh4deR.js} +5 -5
  320. package/dist/components/p-3Gzh4deR.js.map +1 -0
  321. package/dist/components/{p-DO9J0XTo.js → p-BXmiPS9x.js} +4 -4
  322. package/dist/components/{p-DO9J0XTo.js.map → p-BXmiPS9x.js.map} +1 -1
  323. package/dist/components/{p-CKLkuSI3.js → p-CJxqw006.js} +3 -3
  324. package/dist/components/{p-CKLkuSI3.js.map → p-CJxqw006.js.map} +1 -1
  325. package/dist/components/p-CRnEuh5f.js +136 -0
  326. package/dist/components/p-CRnEuh5f.js.map +1 -0
  327. package/dist/components/{p-DNeNJhuM.js → p-ClZAZSzR.js} +3 -3
  328. package/dist/components/{p-DNeNJhuM.js.map → p-ClZAZSzR.js.map} +1 -1
  329. package/dist/components/{p-HMlLQQwp.js → p-DqJRvNOl.js} +3 -3
  330. package/dist/components/{p-HMlLQQwp.js.map → p-DqJRvNOl.js.map} +1 -1
  331. package/dist/components/{p-Bh6Cfgtj.js → p-LRPXnaSx.js} +3 -3
  332. package/dist/components/{p-Bh6Cfgtj.js.map → p-LRPXnaSx.js.map} +1 -1
  333. package/dist/components/p-O26uYJSV.js +51 -0
  334. package/dist/components/p-O26uYJSV.js.map +1 -0
  335. package/dist/components/p-QoDae21y.js +63 -0
  336. package/dist/components/p-QoDae21y.js.map +1 -0
  337. package/dist/components/{p-CNzQtskW.js → p-mbl86-w6.js} +4 -4
  338. package/dist/components/p-mbl86-w6.js.map +1 -0
  339. package/dist/components/{p-i_6TLQJ5.js → p-nA3Uvhwb.js} +3 -3
  340. package/dist/components/{p-i_6TLQJ5.js.map → p-nA3Uvhwb.js.map} +1 -1
  341. package/dist/esm/af-accordion-item.entry.js +1 -1
  342. package/dist/esm/af-accordion.entry.js +1 -1
  343. package/dist/esm/af-card.entry.js +1 -1
  344. package/dist/esm/af-card.entry.js.map +1 -1
  345. package/dist/esm/af-center.entry.js +1 -1
  346. package/dist/esm/af-client-carousel.entry.js +1 -1
  347. package/dist/esm/af-client-carousel.entry.js.map +1 -1
  348. package/dist/esm/af-contact-item.entry.js +1 -1
  349. package/dist/esm/af-divider.entry.js +1 -1
  350. package/dist/esm/af-divider.entry.js.map +1 -1
  351. package/dist/esm/af-feature-accordion.entry.js +2 -2
  352. package/dist/esm/af-feature-card.entry.js.map +1 -1
  353. package/dist/esm/af-feature-grid.entry.js +1 -1
  354. package/dist/esm/af-footer-column.entry.js +1 -1
  355. package/dist/esm/af-footer-link.entry.js +1 -1
  356. package/dist/esm/af-footer.entry.js +1 -1
  357. package/dist/esm/af-grid.entry.js +2 -2
  358. package/dist/esm/af-grid.entry.js.map +1 -1
  359. package/dist/esm/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.js.map +1 -1
  360. package/dist/esm/af-heading_5.entry.js +1 -1
  361. package/dist/esm/af-hero.entry.js +92 -0
  362. package/dist/esm/af-hero.entry.js.map +1 -0
  363. package/dist/esm/af-icon-box.entry.js +1 -1
  364. package/dist/esm/af-icon-text.entry.js +1 -1
  365. package/dist/esm/af-illustrated-card.entry.js +1 -1
  366. package/dist/esm/af-illustrated-card.entry.js.map +1 -1
  367. package/dist/esm/af-image.entry.js +1 -1
  368. package/dist/esm/af-in-page-banner.entry.js +1 -1
  369. package/dist/esm/af-in-page-banner.entry.js.map +1 -1
  370. package/dist/esm/af-inline.entry.js +1 -1
  371. package/dist/esm/af-inline.entry.js.map +1 -1
  372. package/dist/esm/af-logo-well.entry.js +1 -1
  373. package/dist/esm/af-nav-accordion-item.entry.js +2 -2
  374. package/dist/esm/af-nav-accordion.entry.js +1 -1
  375. package/dist/esm/af-nav-menu-nest.entry.js +1 -1
  376. package/dist/esm/af-nav-menu.entry.js +1 -1
  377. package/dist/esm/af-number-badge.entry.js +1 -1
  378. package/dist/esm/af-numbered-stepper-item.entry.js +23 -0
  379. package/dist/esm/af-numbered-stepper-item.entry.js.map +1 -0
  380. package/dist/esm/af-numbered-stepper.entry.js +34 -0
  381. package/dist/esm/af-numbered-stepper.entry.js.map +1 -0
  382. package/dist/esm/af-paperclip-decoration.entry.js +1 -1
  383. package/dist/esm/af-progress-line.entry.js +2 -2
  384. package/dist/esm/af-section.entry.js +2 -2
  385. package/dist/esm/af-section.entry.js.map +1 -1
  386. package/dist/esm/af-show.entry.js +1 -1
  387. package/dist/esm/af-social-link.entry.js +1 -1
  388. package/dist/esm/af-spacer.entry.js +1 -1
  389. package/dist/esm/af-split-section.entry.js +2 -2
  390. package/dist/esm/af-split-section.entry.js.map +1 -1
  391. package/dist/esm/af-stack.entry.js +1 -1
  392. package/dist/esm/af-stack.entry.js.map +1 -1
  393. package/dist/esm/af-stat.entry.js +16 -0
  394. package/dist/esm/af-stat.entry.js.map +1 -0
  395. package/dist/esm/af-stats-row.entry.js +16 -0
  396. package/dist/esm/af-stats-row.entry.js.map +1 -0
  397. package/dist/esm/af-stepper-step.entry.js +1 -1
  398. package/dist/esm/af-stepper.entry.js +1 -1
  399. package/dist/esm/af-testimonial-carousel.entry.js +1 -1
  400. package/dist/esm/af-testimonial-carousel.entry.js.map +1 -1
  401. package/dist/esm/af-testimonial-stat.entry.js +1 -1
  402. package/dist/esm/af-testimonial.entry.js +6 -6
  403. package/dist/esm/af-testimonial.entry.js.map +1 -1
  404. package/dist/esm/af-text-image-nest.entry.js +1 -1
  405. package/dist/esm/af-theme-override.entry.js +1 -1
  406. package/dist/esm/af-theme-override.entry.js.map +1 -1
  407. package/dist/esm/af-typography-lockup.entry.js +1 -1
  408. package/dist/esm/af-typography-lockup.entry.js.map +1 -1
  409. package/dist/esm/af-video-container.entry.js +3 -3
  410. package/dist/esm/af-video-container.entry.js.map +1 -1
  411. package/dist/esm/af-visually-hidden.entry.js +1 -1
  412. package/dist/esm/affinda.js +1 -1
  413. package/dist/esm/index.js +1 -0
  414. package/dist/esm/index.js.map +1 -1
  415. package/dist/esm/loader.js +1 -1
  416. package/dist/types/components/af-card/af-card.d.ts +2 -1
  417. package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +1 -1
  418. package/dist/types/components/af-divider/af-divider.d.ts +2 -1
  419. package/dist/types/components/af-feature-card/af-feature-card.d.ts +2 -1
  420. package/dist/types/components/af-grid/af-grid.d.ts +1 -1
  421. package/dist/types/components/af-hero/af-hero.d.ts +93 -0
  422. package/dist/types/components/af-illustrated-card/af-illustrated-card.d.ts +2 -1
  423. package/dist/types/components/af-in-page-banner/af-in-page-banner.d.ts +2 -3
  424. package/dist/types/components/af-inline/af-inline.d.ts +1 -1
  425. package/dist/types/components/af-navbar/af-navbar.d.ts +2 -1
  426. package/dist/types/components/af-numbered-stepper/af-numbered-stepper.d.ts +38 -0
  427. package/dist/types/components/af-numbered-stepper-item/af-numbered-stepper-item.d.ts +22 -0
  428. package/dist/types/components/af-section/af-section.d.ts +3 -2
  429. package/dist/types/components/af-split-section/af-split-section.d.ts +2 -3
  430. package/dist/types/components/af-stack/af-stack.d.ts +1 -1
  431. package/dist/types/components/af-stat/af-stat.d.ts +15 -0
  432. package/dist/types/components/af-stats-row/af-stats-row.d.ts +17 -0
  433. package/dist/types/components/af-testimonial/af-testimonial.d.ts +2 -2
  434. package/dist/types/components/af-theme-override/af-theme-override.d.ts +2 -1
  435. package/dist/types/components/af-typography-lockup/af-typography-lockup.d.ts +2 -1
  436. package/dist/types/components/af-video-container/af-video-container.d.ts +1 -1
  437. package/dist/types/components.d.ts +575 -26
  438. package/dist/types/types.d.ts +57 -0
  439. package/package.json +2 -2
  440. package/dist/affinda/p-083fc528.entry.js +0 -2
  441. package/dist/affinda/p-0e469ad2.entry.js +0 -2
  442. package/dist/affinda/p-41643147.entry.js +0 -2
  443. package/dist/affinda/p-49521f2e.entry.js +0 -2
  444. package/dist/affinda/p-4b154e23.entry.js.map +0 -1
  445. package/dist/affinda/p-56fe6e6e.entry.js +0 -2
  446. package/dist/affinda/p-6e40dbdf.entry.js.map +0 -1
  447. package/dist/affinda/p-a6eda8af.entry.js +0 -2
  448. package/dist/affinda/p-ef5857cf.entry.js +0 -2
  449. package/dist/components/p-C6-JATRR.js.map +0 -1
  450. package/dist/components/p-CNzQtskW.js.map +0 -1
  451. /package/dist/affinda/{p-4cf65950.entry.js.map → p-068ac2fb.entry.js.map} +0 -0
  452. /package/dist/affinda/{p-f10a31cb.entry.js.map → p-0acadf6f.entry.js.map} +0 -0
  453. /package/dist/affinda/{p-e1e98cd6.entry.js.map → p-1b4b0c88.entry.js.map} +0 -0
  454. /package/dist/affinda/{p-8c4e3047.entry.js.map → p-256970e3.entry.js.map} +0 -0
  455. /package/dist/affinda/{p-a6eda8af.entry.js.map → p-32d62fbb.entry.js.map} +0 -0
  456. /package/dist/affinda/{p-3ee906de.entry.js.map → p-342b08e5.entry.js.map} +0 -0
  457. /package/dist/affinda/{p-a84ae4a5.entry.js.map → p-365a75e2.entry.js.map} +0 -0
  458. /package/dist/affinda/{p-41643147.entry.js.map → p-3ed408f6.entry.js.map} +0 -0
  459. /package/dist/affinda/{p-edb1a010.entry.js.map → p-4058a1eb.entry.js.map} +0 -0
  460. /package/dist/affinda/{p-94f51238.entry.js.map → p-41bbb218.entry.js.map} +0 -0
  461. /package/dist/affinda/{p-c8c4783c.entry.js.map → p-44d960ca.entry.js.map} +0 -0
  462. /package/dist/affinda/{p-e1cbe95a.entry.js.map → p-4a9b192b.entry.js.map} +0 -0
  463. /package/dist/affinda/{p-b2633acb.entry.js.map → p-5c163c5b.entry.js.map} +0 -0
  464. /package/dist/affinda/{p-48aadea9.entry.js.map → p-5e5e7d75.entry.js.map} +0 -0
  465. /package/dist/affinda/{p-da2d84f7.entry.js.map → p-61a6b43d.entry.js.map} +0 -0
  466. /package/dist/affinda/{p-ea42c40b.entry.js.map → p-631d141c.entry.js.map} +0 -0
  467. /package/dist/affinda/{p-6038a213.entry.js.map → p-6475796d.entry.js.map} +0 -0
  468. /package/dist/affinda/{p-50a67fb6.entry.js.map → p-65dd559a.entry.js.map} +0 -0
  469. /package/dist/affinda/{p-083fc528.entry.js.map → p-6756aa66.entry.js.map} +0 -0
  470. /package/dist/affinda/{p-0e469ad2.entry.js.map → p-6e181b2b.entry.js.map} +0 -0
  471. /package/dist/affinda/{p-0201c8bd.entry.js.map → p-6ea474a3.entry.js.map} +0 -0
  472. /package/dist/affinda/{p-a71d528d.entry.js.map → p-7111051c.entry.js.map} +0 -0
  473. /package/dist/affinda/{p-0137e7a5.entry.js.map → p-827f3050.entry.js.map} +0 -0
  474. /package/dist/affinda/{p-78518e6c.entry.js.map → p-83bb96cc.entry.js.map} +0 -0
  475. /package/dist/affinda/{p-2e6192eb.entry.js.map → p-9480f00d.entry.js.map} +0 -0
  476. /package/dist/affinda/{p-e055407b.entry.js.map → p-9ce0adc2.entry.js.map} +0 -0
  477. /package/dist/affinda/{p-81706709.entry.js.map → p-a02d6192.entry.js.map} +0 -0
  478. /package/dist/affinda/{p-ad41f905.entry.js.map → p-a25d3257.entry.js.map} +0 -0
  479. /package/dist/affinda/{p-5f6a5741.entry.js.map → p-a8d75eb1.entry.js.map} +0 -0
  480. /package/dist/affinda/{p-5265e82e.entry.js.map → p-ae430873.entry.js.map} +0 -0
  481. /package/dist/affinda/{p-081cc890.entry.js.map → p-b39eea31.entry.js.map} +0 -0
  482. /package/dist/affinda/{p-4c4406bf.entry.js.map → p-b9ec0e75.entry.js.map} +0 -0
  483. /package/dist/affinda/{p-feb3d03f.entry.js.map → p-bbfc9df6.entry.js.map} +0 -0
  484. /package/dist/affinda/{p-6c58b283.entry.js.map → p-bed7d9a1.entry.js.map} +0 -0
  485. /package/dist/affinda/{p-3a0e45c3.entry.js.map → p-d7d82986.entry.js.map} +0 -0
  486. /package/dist/affinda/{p-a35029eb.entry.js.map → p-dcc89b4c.entry.js.map} +0 -0
  487. /package/dist/affinda/{p-f9315f9e.entry.js.map → p-e07e27f1.entry.js.map} +0 -0
  488. /package/dist/affinda/{p-dbe7ab88.entry.js.map → p-eeda78ea.entry.js.map} +0 -0
  489. /package/dist/affinda/{p-b2b28366.entry.js.map → p-f19cb091.entry.js.map} +0 -0
@@ -26,14 +26,14 @@ export class AfSplitSection {
26
26
  this.container = true;
27
27
  }
28
28
  render() {
29
- const content = h("slot", { key: 'bb153079c8b48a5f2a8bb093f3344f1ed58448f0' });
29
+ const content = h("slot", { key: 'c87789ab65b2406b2eefc66dec06800dfc0d26de' });
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: '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)));
36
+ return (h(Host, { key: '194e34213dc52bb9e41f121873a983ba32eb27c9' }, h("div", { key: 'c987cd1f760d33e7cb7f8c150d7de151bd5a06bd', 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"; }
@@ -57,8 +57,9 @@ export class AfSplitSection {
57
57
  "resolved": "\"inkwell\" | \"mist-green\" | \"soft-clay\" | \"white\" | \"white-ivory\"",
58
58
  "references": {
59
59
  "Theme": {
60
- "location": "global",
61
- "id": "global::Theme"
60
+ "location": "import",
61
+ "path": "../../types",
62
+ "id": "src/types.ts::Theme"
62
63
  }
63
64
  }
64
65
  },
@@ -82,8 +83,9 @@ export class AfSplitSection {
82
83
  "resolved": "\"inkwell\" | \"mist-green\" | \"soft-clay\" | \"white\" | \"white-ivory\"",
83
84
  "references": {
84
85
  "Theme": {
85
- "location": "global",
86
- "id": "global::Theme"
86
+ "location": "import",
87
+ "path": "../../types",
88
+ "id": "src/types.ts::Theme"
87
89
  }
88
90
  }
89
91
  },
@@ -103,9 +105,15 @@ export class AfSplitSection {
103
105
  "type": "string",
104
106
  "mutable": false,
105
107
  "complexType": {
106
- "original": "'none' | 'tight' | 'default' | 'loose'",
108
+ "original": "Padding",
107
109
  "resolved": "\"default\" | \"loose\" | \"none\" | \"tight\"",
108
- "references": {}
110
+ "references": {
111
+ "Padding": {
112
+ "location": "import",
113
+ "path": "../../types",
114
+ "id": "src/types.ts::Padding"
115
+ }
116
+ }
109
117
  },
110
118
  "required": false,
111
119
  "optional": false,
@@ -1 +1 @@
1
- {"version":3,"file":"af-split-section.js","sourceRoot":"","sources":["../../../src/components/af-split-section/af-split-section.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAIzD,sCAAsC;AACtC,MAAM,WAAW,GAA0B;IACzC,OAAO,EAAE,oCAAoC;IAC7C,SAAS,EAAE,sCAAsC;IACjD,YAAY,EAAE,yCAAyC;IACvD,WAAW,EAAE,qCAAqC;IAClD,aAAa,EAAE,0CAA0C;CAC1D,CAAC;AAEF;;;;;;GAMG;AAOH,MAAM,OAAO,cAAc;IAN3B;QAOE,4CAA4C;QACpC,aAAQ,GAAU,YAAY,CAAC;QAEvC,+CAA+C;QACvC,gBAAW,GAAU,OAAO,CAAC;QAErC,sBAAsB;QACd,YAAO,GAA2C,SAAS,CAAC;QAEpE,6CAA6C;QACrC,cAAS,GAAY,IAAI,CAAC;KAyBnC;IAvBC,MAAM;QACJ,MAAM,OAAO,GAAG,8DAAa,CAAC;QAE9B,iDAAiD;QACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG;YACtB,UAAU,EAAE,8BAA8B,QAAQ,QAAQ,QAAQ,SAAS,WAAW,SAAS,WAAW,QAAQ;SACnH,CAAC;QAEF,OAAO,CACL,EAAC,IAAI;YACH,4DACE,KAAK,EAAE,yBAAyB,IAAI,CAAC,OAAO,cAAc,IAAI,CAAC,QAAQ,EAAE,EACzE,KAAK,EAAE,eAAe,IAErB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAChB,wBAAe,OAAO,CAAgB,CACvC,CAAC,CAAC,CAAC,OAAO,CACP,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Host, Prop } from '@stencil/core';\n\ntype Theme = 'white' | 'inkwell' | 'mist-green' | 'soft-clay' | 'white-ivory';\n\n// Map theme names to CSS color values\nconst themeColors: Record<Theme, string> = {\n 'white': 'var(--colour-brand-white, #FFFFFF)',\n 'inkwell': 'var(--colour-brand-inkwell, #14343B)',\n 'mist-green': 'var(--colour-brand-mist-green, #C6D5D1)',\n 'soft-clay': 'var(--colour-softclay-400, #c0ab8d)',\n 'white-ivory': 'var(--colour-brand-ivory-paper, #fff9ee)',\n};\n\n/**\n * Split Section component for layouts with two-tone backgrounds.\n * Creates a vertical split with different themes for top and bottom halves.\n * Useful for content that visually spans across two themed areas.\n * \n * Uses a CSS linear-gradient for the split background effect.\n */\n@Component({\n tag: 'af-split-section',\n styleUrl: 'af-split-section.css',\n shadow: false,\n scoped: true,\n})\nexport class AfSplitSection {\n /** Theme for the top half of the section */\n @Prop() topTheme: Theme = 'mist-green';\n\n /** Theme for the bottom half of the section */\n @Prop() bottomTheme: Theme = 'white';\n\n /** Padding variant */\n @Prop() padding: 'none' | 'tight' | 'default' | 'loose' = 'default';\n\n /** Whether to include a Container wrapper */\n @Prop() container: boolean = true;\n\n render() {\n const content = <slot></slot>;\n \n // Create the split background using CSS gradient\n const topColor = themeColors[this.topTheme];\n const bottomColor = themeColors[this.bottomTheme];\n const backgroundStyle = {\n background: `linear-gradient(to bottom, ${topColor} 0%, ${topColor} 50%, ${bottomColor} 50%, ${bottomColor} 100%)`\n };\n\n return (\n <Host>\n <div\n class={`split-section padding-${this.padding} top-theme-${this.topTheme}`}\n style={backgroundStyle}\n >\n {this.container ? (\n <af-container>{content}</af-container>\n ) : content}\n </div>\n </Host>\n );\n }\n}\n\n"]}
1
+ {"version":3,"file":"af-split-section.js","sourceRoot":"","sources":["../../../src/components/af-split-section/af-split-section.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGzD,sCAAsC;AACtC,MAAM,WAAW,GAA0B;IACzC,OAAO,EAAE,oCAAoC;IAC7C,SAAS,EAAE,sCAAsC;IACjD,YAAY,EAAE,yCAAyC;IACvD,WAAW,EAAE,qCAAqC;IAClD,aAAa,EAAE,0CAA0C;CAC1D,CAAC;AAEF;;;;;;GAMG;AAOH,MAAM,OAAO,cAAc;IAN3B;QAOE,4CAA4C;QACpC,aAAQ,GAAU,YAAY,CAAC;QAEvC,+CAA+C;QACvC,gBAAW,GAAU,OAAO,CAAC;QAErC,sBAAsB;QACd,YAAO,GAAY,SAAS,CAAC;QAErC,6CAA6C;QACrC,cAAS,GAAY,IAAI,CAAC;KAyBnC;IAvBC,MAAM;QACJ,MAAM,OAAO,GAAG,8DAAa,CAAC;QAE9B,iDAAiD;QACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG;YACtB,UAAU,EAAE,8BAA8B,QAAQ,QAAQ,QAAQ,SAAS,WAAW,SAAS,WAAW,QAAQ;SACnH,CAAC;QAEF,OAAO,CACL,EAAC,IAAI;YACH,4DACE,KAAK,EAAE,yBAAyB,IAAI,CAAC,OAAO,cAAc,IAAI,CAAC,QAAQ,EAAE,EACzE,KAAK,EAAE,eAAe,IAErB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAChB,wBAAe,OAAO,CAAgB,CACvC,CAAC,CAAC,CAAC,OAAO,CACP,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Host, Prop } from '@stencil/core';\nimport type { Padding, Theme } from '../../types';\n\n// Map theme names to CSS color values\nconst themeColors: Record<Theme, string> = {\n 'white': 'var(--colour-brand-white, #FFFFFF)',\n 'inkwell': 'var(--colour-brand-inkwell, #14343B)',\n 'mist-green': 'var(--colour-brand-mist-green, #C6D5D1)',\n 'soft-clay': 'var(--colour-softclay-400, #c0ab8d)',\n 'white-ivory': 'var(--colour-brand-ivory-paper, #fff9ee)',\n};\n\n/**\n * Split Section component for layouts with two-tone backgrounds.\n * Creates a vertical split with different themes for top and bottom halves.\n * Useful for content that visually spans across two themed areas.\n * \n * Uses a CSS linear-gradient for the split background effect.\n */\n@Component({\n tag: 'af-split-section',\n styleUrl: 'af-split-section.css',\n shadow: false,\n scoped: true,\n})\nexport class AfSplitSection {\n /** Theme for the top half of the section */\n @Prop() topTheme: Theme = 'mist-green';\n\n /** Theme for the bottom half of the section */\n @Prop() bottomTheme: Theme = 'white';\n\n /** Padding variant */\n @Prop() padding: Padding = 'default';\n\n /** Whether to include a Container wrapper */\n @Prop() container: boolean = true;\n\n render() {\n const content = <slot></slot>;\n \n // Create the split background using CSS gradient\n const topColor = themeColors[this.topTheme];\n const bottomColor = themeColors[this.bottomTheme];\n const backgroundStyle = {\n background: `linear-gradient(to bottom, ${topColor} 0%, ${topColor} 50%, ${bottomColor} 50%, ${bottomColor} 100%)`\n };\n\n return (\n <Host>\n <div\n class={`split-section padding-${this.padding} top-theme-${this.topTheme}`}\n style={backgroundStyle}\n >\n {this.container ? (\n <af-container>{content}</af-container>\n ) : content}\n </div>\n </Host>\n );\n }\n}\n\n"]}
@@ -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: '8762617789ee74b277ccc75e01a11e0722d46d71', style: style }, h("slot", { key: '81cacfb758661b513d8e16db5d23a9a14c1d5c16' })));
58
+ return (h(Host, { key: 'c851a39e7fc6c8a256c341a67bcac60ecbdb63b8', style: style }, h("slot", { key: 'a0e45727aacbbb4a0fe2d9396120bbae94cc3a46' })));
59
59
  }
60
60
  static get is() { return "af-stack"; }
61
61
  static get encapsulation() { return "shadow"; }
@@ -104,8 +104,9 @@ export class AfStack {
104
104
  "resolved": "\"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"8\"",
105
105
  "references": {
106
106
  "Gap": {
107
- "location": "global",
108
- "id": "global::Gap"
107
+ "location": "import",
108
+ "path": "../../types",
109
+ "id": "src/types.ts::Gap"
109
110
  }
110
111
  }
111
112
  },
@@ -1 +1 @@
1
- {"version":3,"file":"af-stack.js","sourceRoot":"","sources":["../../../src/components/af-stack/af-stack.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAOzD;;;;;GAKG;AAMH,MAAM,OAAO,OAAO;IALpB;QAME;;;;WAIG;QACK,cAAS,GAAc,UAAU,CAAC;QAE1C;;;WAGG;QACK,QAAG,GAAQ,GAAG,CAAC;QAEvB;;WAEG;QACK,UAAK,GAAU,SAAS,CAAC;QAEjC;;WAEG;QACK,YAAO,GAAY,OAAO,CAAC;QAEnC;;WAEG;QACK,SAAI,GAAY,KAAK,CAAC;KAmC/B;IAjCC,MAAM;QACJ,MAAM,QAAQ,GAA0B;YACtC,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,UAAU;YACf,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,UAAU;SACrB,CAAC;QAEF,MAAM,UAAU,GAA4B;YAC1C,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,UAAU;YACf,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,cAAc;SACvB,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YAC/D,GAAG,EAAE,eAAe,IAAI,CAAC,GAAG,GAAG;YAC/B,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAChC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACd,CAAC;QAE5B,OAAO,CACL,EAAC,IAAI,qDAAC,KAAK,EAAE,KAAK;YAChB,8DAAa,CACR,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Host, Prop } from '@stencil/core';\n\ntype Gap = '1' | '2' | '3' | '4' | '5' | '6' | '8';\ntype Direction = 'vertical' | 'horizontal';\ntype Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\ntype Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\n/**\n * Stack layout component for vertical or horizontal flex layouts with consistent gap spacing.\n * Uses design tokens for gap values.\n *\n * @slot - Content to stack\n */\n@Component({\n tag: 'af-stack',\n styleUrl: 'af-stack.css',\n shadow: true,\n})\nexport class AfStack {\n /**\n * Stack direction.\n * - 'vertical': Items stack top to bottom (flex-direction: column)\n * - 'horizontal': Items stack left to right (flex-direction: row)\n */\n @Prop() direction: Direction = 'vertical';\n\n /**\n * Gap between items using space tokens (1-8).\n * Maps to --space-1 through --space-8 (4px to 32px).\n */\n @Prop() gap: Gap = '4';\n\n /**\n * Align items on the cross axis.\n */\n @Prop() align: Align = 'stretch';\n\n /**\n * Justify content on the main axis.\n */\n @Prop() justify: Justify = 'start';\n\n /**\n * Whether items should wrap to the next line.\n */\n @Prop() wrap: boolean = false;\n\n render() {\n const alignMap: Record<Align, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n };\n\n const justifyMap: Record<Justify, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n };\n\n const style = {\n display: 'flex',\n flexDirection: this.direction === 'vertical' ? 'column' : 'row',\n gap: `var(--space-${this.gap})`,\n alignItems: alignMap[this.align],\n justifyContent: justifyMap[this.justify],\n flexWrap: this.wrap ? 'wrap' : 'nowrap',\n } as Record<string, string>;\n\n return (\n <Host style={style}>\n <slot></slot>\n </Host>\n );\n }\n}\n\n"]}
1
+ {"version":3,"file":"af-stack.js","sourceRoot":"","sources":["../../../src/components/af-stack/af-stack.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAOzD;;;;;GAKG;AAMH,MAAM,OAAO,OAAO;IALpB;QAME;;;;WAIG;QACK,cAAS,GAAc,UAAU,CAAC;QAE1C;;;WAGG;QACK,QAAG,GAAQ,GAAG,CAAC;QAEvB;;WAEG;QACK,UAAK,GAAU,SAAS,CAAC;QAEjC;;WAEG;QACK,YAAO,GAAY,OAAO,CAAC;QAEnC;;WAEG;QACK,SAAI,GAAY,KAAK,CAAC;KAmC/B;IAjCC,MAAM;QACJ,MAAM,QAAQ,GAA0B;YACtC,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,UAAU;YACf,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,UAAU;SACrB,CAAC;QAEF,MAAM,UAAU,GAA4B;YAC1C,KAAK,EAAE,YAAY;YACnB,MAAM,EAAE,QAAQ;YAChB,GAAG,EAAE,UAAU;YACf,OAAO,EAAE,eAAe;YACxB,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,cAAc;SACvB,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,OAAO,EAAE,MAAM;YACf,aAAa,EAAE,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;YAC/D,GAAG,EAAE,eAAe,IAAI,CAAC,GAAG,GAAG;YAC/B,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YAChC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;SACd,CAAC;QAE5B,OAAO,CACL,EAAC,IAAI,qDAAC,KAAK,EAAE,KAAK;YAChB,8DAAa,CACR,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Host, Prop } from '@stencil/core';\nimport type { Gap } from '../../types';\n\ntype Direction = 'vertical' | 'horizontal';\ntype Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\ntype Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\n/**\n * Stack layout component for vertical or horizontal flex layouts with consistent gap spacing.\n * Uses design tokens for gap values.\n *\n * @slot - Content to stack\n */\n@Component({\n tag: 'af-stack',\n styleUrl: 'af-stack.css',\n shadow: true,\n})\nexport class AfStack {\n /**\n * Stack direction.\n * - 'vertical': Items stack top to bottom (flex-direction: column)\n * - 'horizontal': Items stack left to right (flex-direction: row)\n */\n @Prop() direction: Direction = 'vertical';\n\n /**\n * Gap between items using space tokens (1-8).\n * Maps to --space-1 through --space-8 (4px to 32px).\n */\n @Prop() gap: Gap = '4';\n\n /**\n * Align items on the cross axis.\n */\n @Prop() align: Align = 'stretch';\n\n /**\n * Justify content on the main axis.\n */\n @Prop() justify: Justify = 'start';\n\n /**\n * Whether items should wrap to the next line.\n */\n @Prop() wrap: boolean = false;\n\n render() {\n const alignMap: Record<Align, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n };\n\n const justifyMap: Record<Justify, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n };\n\n const style = {\n display: 'flex',\n flexDirection: this.direction === 'vertical' ? 'column' : 'row',\n gap: `var(--space-${this.gap})`,\n alignItems: alignMap[this.align],\n justifyContent: justifyMap[this.justify],\n flexWrap: this.wrap ? 'wrap' : 'nowrap',\n } as Record<string, string>;\n\n return (\n <Host style={style}>\n <slot></slot>\n </Host>\n );\n }\n}\n\n"]}
@@ -0,0 +1,25 @@
1
+ :host {
2
+ display: block;
3
+ flex: 1 1 0;
4
+ min-width: 0;
5
+ /* Left accent border mirrors the website's stats-row styling. Reads
6
+ the active border colour from whatever theme the ancestor sets. */
7
+ border-left: 2px solid var(--af-background-border-active, var(--colour-brand-soft-clay, #b09670));
8
+ padding-left: var(--space-4, 16px);
9
+ }
10
+
11
+ .stat {
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: var(--space-2, 8px);
15
+ min-height: 76px;
16
+ justify-content: center;
17
+ }
18
+
19
+ /* Nudge the value towards the theme's secondary heading colour for that
20
+ gold/ochre accent on light themes — matches af-testimonial-stat. */
21
+ .stat__value {
22
+ --af-typography-heading-primary: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #b09670));
23
+ letter-spacing: -0.88px;
24
+ white-space: nowrap;
25
+ }
@@ -0,0 +1,69 @@
1
+ import { h, Host } from "@stencil/core";
2
+ /**
3
+ * Individual stat — a large value (e.g. "1B+") paired with a descriptive label.
4
+ *
5
+ * Intended as a slotted child of `af-stats-row`, but renders standalone too.
6
+ * Colour is inherited from the ancestor theme context (`af-section` /
7
+ * `af-card` / `af-theme-override`) via the `--af-typography-*` tokens that
8
+ * `af-heading` and `af-text` already consume — no theme prop needed here.
9
+ */
10
+ export class AfStat {
11
+ render() {
12
+ return (h(Host, { key: '8ad0756b599ad60c0761bf4dfc7f40df26fd302e' }, h("div", { key: '839b8e6e4e20a87061db4cc9e1a595d9722ec306', class: "stat" }, h("af-heading", { key: 'eaf23a804729cd381184d2a290fe7af4682166cc', level: "2", class: "stat__value" }, this.value), h("af-text", { key: '67893f26ba74118ab99329771dd5db211d3cfc56', variant: "medium", class: "stat__label" }, this.label))));
13
+ }
14
+ static get is() { return "af-stat"; }
15
+ static get encapsulation() { return "shadow"; }
16
+ static get originalStyleUrls() {
17
+ return {
18
+ "$": ["af-stat.css"]
19
+ };
20
+ }
21
+ static get styleUrls() {
22
+ return {
23
+ "$": ["af-stat.css"]
24
+ };
25
+ }
26
+ static get properties() {
27
+ return {
28
+ "value": {
29
+ "type": "string",
30
+ "mutable": false,
31
+ "complexType": {
32
+ "original": "string",
33
+ "resolved": "string",
34
+ "references": {}
35
+ },
36
+ "required": true,
37
+ "optional": false,
38
+ "docs": {
39
+ "tags": [],
40
+ "text": "The statistic headline value (e.g. \"1B+\", \"95%\", \"10+\")."
41
+ },
42
+ "getter": false,
43
+ "setter": false,
44
+ "reflect": false,
45
+ "attribute": "value"
46
+ },
47
+ "label": {
48
+ "type": "string",
49
+ "mutable": false,
50
+ "complexType": {
51
+ "original": "string",
52
+ "resolved": "string",
53
+ "references": {}
54
+ },
55
+ "required": true,
56
+ "optional": false,
57
+ "docs": {
58
+ "tags": [],
59
+ "text": "Description / caption rendered beneath the value."
60
+ },
61
+ "getter": false,
62
+ "setter": false,
63
+ "reflect": false,
64
+ "attribute": "label"
65
+ }
66
+ };
67
+ }
68
+ }
69
+ //# sourceMappingURL=af-stat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"af-stat.js","sourceRoot":"","sources":["../../../src/components/af-stat/af-stat.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzD;;;;;;;GAOG;AAMH,MAAM,OAAO,MAAM;IAOjB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAC,MAAM;gBACf,mEAAY,KAAK,EAAC,GAAG,EAAC,KAAK,EAAC,aAAa,IAAE,IAAI,CAAC,KAAK,CAAc;gBACnE,gEAAS,OAAO,EAAC,QAAQ,EAAC,KAAK,EAAC,aAAa,IAAE,IAAI,CAAC,KAAK,CAAW,CAChE,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * Individual stat — a large value (e.g. \"1B+\") paired with a descriptive label.\n *\n * Intended as a slotted child of `af-stats-row`, but renders standalone too.\n * Colour is inherited from the ancestor theme context (`af-section` /\n * `af-card` / `af-theme-override`) via the `--af-typography-*` tokens that\n * `af-heading` and `af-text` already consume — no theme prop needed here.\n */\n@Component({\n tag: 'af-stat',\n styleUrl: 'af-stat.css',\n shadow: true,\n})\nexport class AfStat {\n /** The statistic headline value (e.g. \"1B+\", \"95%\", \"10+\"). */\n @Prop() value!: string;\n\n /** Description / caption rendered beneath the value. */\n @Prop() label!: string;\n\n render() {\n return (\n <Host>\n <div class=\"stat\">\n <af-heading level=\"2\" class=\"stat__value\">{this.value}</af-heading>\n <af-text variant=\"medium\" class=\"stat__label\">{this.label}</af-text>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,32 @@
1
+ :host {
2
+ display: block;
3
+ width: 100%;
4
+ }
5
+
6
+ .stats-row {
7
+ display: flex;
8
+ flex-wrap: wrap;
9
+ gap: var(--space-6, 24px);
10
+ align-items: stretch;
11
+ }
12
+
13
+ /* Ensure each stat claims an equal share of the row. Descendant (not
14
+ child) combinator — see AGENTS.md "Stencil scoped-slot `>` gotcha". */
15
+ .stats-row af-stat {
16
+ flex: 1 1 calc(50% - var(--space-6, 24px));
17
+ min-width: 0;
18
+ }
19
+
20
+ /* On wider viewports, prefer 4-up without wrapping when there's room. */
21
+ @media (min-width: 768px) {
22
+ .stats-row af-stat {
23
+ flex: 1 1 0;
24
+ }
25
+ }
26
+
27
+ /* Narrow: stack to a single column for readability. */
28
+ @media (max-width: 480px) {
29
+ .stats-row af-stat {
30
+ flex: 1 1 100%;
31
+ }
32
+ }
@@ -0,0 +1,33 @@
1
+ import { h, Host } from "@stencil/core";
2
+ /**
3
+ * Layout container for a horizontal row of `af-stat` children.
4
+ *
5
+ * Flex row that wraps to a grid on narrow viewports. Uses `scoped: true`
6
+ * so slotted `<af-stat>` children stay in the light DOM and inherit the
7
+ * ancestor theme (`af-section`) via the cascaded `.theme-*` class.
8
+ *
9
+ * Intentionally has **no `theme` prop** — a stats row is always flush
10
+ * against its section background, so a local theme would fight the
11
+ * ancestor. If you need a different background for the row, wrap it in
12
+ * its own `af-section` or `af-theme-override`.
13
+ *
14
+ * @slot - `af-stat` elements (typically 3–4 for a balanced row).
15
+ */
16
+ export class AfStatsRow {
17
+ render() {
18
+ return (h(Host, { key: '1185dc84bcb132d6b4727e75f050e1441ff1bc5d' }, h("div", { key: '3d2671840ea84d06b37d4828387a2da2c8d7c85b', class: "stats-row" }, h("slot", { key: '192d3629812be1a1d3939ad8c37dd1fd1c5b7fa7' }))));
19
+ }
20
+ static get is() { return "af-stats-row"; }
21
+ static get encapsulation() { return "scoped"; }
22
+ static get originalStyleUrls() {
23
+ return {
24
+ "$": ["af-stats-row.css"]
25
+ };
26
+ }
27
+ static get styleUrls() {
28
+ return {
29
+ "$": ["af-stats-row.css"]
30
+ };
31
+ }
32
+ }
33
+ //# sourceMappingURL=af-stats-row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"af-stats-row.js","sourceRoot":"","sources":["../../../src/components/af-stats-row/af-stats-row.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;;;;;;;;GAaG;AAOH,MAAM,OAAO,UAAU;IACrB,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAC,WAAW;gBACpB,8DAAa,CACT,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;CACF","sourcesContent":["import { Component, h, Host } from '@stencil/core';\n\n/**\n * Layout container for a horizontal row of `af-stat` children.\n *\n * Flex row that wraps to a grid on narrow viewports. Uses `scoped: true`\n * so slotted `<af-stat>` children stay in the light DOM and inherit the\n * ancestor theme (`af-section`) via the cascaded `.theme-*` class.\n *\n * Intentionally has **no `theme` prop** — a stats row is always flush\n * against its section background, so a local theme would fight the\n * ancestor. If you need a different background for the row, wrap it in\n * its own `af-section` or `af-theme-override`.\n *\n * @slot - `af-stat` elements (typically 3–4 for a balanced row).\n */\n@Component({\n tag: 'af-stats-row',\n styleUrl: 'af-stats-row.css',\n shadow: false,\n scoped: true,\n})\nexport class AfStatsRow {\n render() {\n return (\n <Host>\n <div class=\"stats-row\">\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -40,7 +40,7 @@ export class AfStepper {
40
40
  });
41
41
  }
42
42
  render() {
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' })));
43
+ return (h(Host, { key: '3f2ad37be78c6ff11fb60d09535e6bbd24dc04e1', class: `stepper stepper--${this.orientation}` }, h("div", { key: '6991c841716e24e95e75590dfeb1a9cb1ba1ea77', class: "stepper__connector", "aria-hidden": "true" }), h("slot", { key: '849622c3adb413d03114d1f498c504235a7f8e8a' })));
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: '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" })))));
21
+ return (h(Host, { key: '80d8f05130125e97dc3158f66c31fa07c4133a77' }, h("span", { key: 'f39cbbdf710035e6f0dd6e6f40345316f23421a1', class: "stepper-step__badge" }, this.index), h("div", { key: 'dc6772b131b6b058b40367f93a41458e75fa6029', class: "stepper-step__content" }, h("div", { key: '8b9bd944a5a3f956d2311b02a5b07d5afc9835a8', class: "stepper-step__heading" }, h("slot", { key: 'e16e133764c32ee00e99a2963624b242f4e99b3e', name: "heading" })), h("div", { key: 'fd124afd080b392b03c9f193cb2a210224b7715e', class: "stepper-step__body" }, h("slot", { key: 'cf09b3c7f8551f35df808b41205ba4ec15d2e71f', name: "body" })))));
22
22
  }
23
23
  static get is() { return "af-stepper-step"; }
24
24
  static get encapsulation() { return "scoped"; }
@@ -22,18 +22,18 @@ export class AfTestimonial {
22
22
  */
23
23
  this.hasNext = false;
24
24
  this.handlePrev = () => {
25
- this.navPrev.emit();
25
+ this.afNavPrev.emit();
26
26
  };
27
27
  this.handleNext = () => {
28
- this.navNext.emit();
28
+ this.afNavNext.emit();
29
29
  };
30
30
  }
31
31
  render() {
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 ? (
32
+ return (h(Host, { key: '6e9852855010e696e1f3f8d250541da3f99675bb' }, h("div", { key: '779f2f42b5443b384b5d02bcdcbb8c2ea904d793', class: "testimonial-card" }, h("div", { key: 'da08dac0b57e4861d941d9ee1347234a23bc76cd', class: "testimonial-image" }, this.backgroundImage && (h("img", { key: 'a02cb9792a2ac5d31ad06842dfe9914e02bc5f65', src: this.backgroundImage, alt: "", class: "testimonial-bg-image" })), this.logoImage && (h("div", { key: 'fe75369fdff4bd79c96eb4de4d162b124f8f8037', class: "testimonial-logo" }, h("img", { key: '21bb43f47b0c4f759f23bdbfa3ff8e07ed6d709c', src: this.logoImage, alt: "Company logo" })))), h("div", { key: 'aa07b37eb9eb25e98eb7a7ed7bda01028ef1521f', class: "testimonial-content" }, h("div", { key: '4f30fb4aaf739e1f7b05152bad8ccd0a90da0c5f', class: "testimonial-quote-section" }, h("div", { key: '3ecc3a1c62fd853bf61c8399885572f48be95f40', class: "testimonial-quote-icon" }, h("slot", { key: '838996eaa0db4d93e8ccd400021b069f32ce63ec', name: "quote-icon" }, h("af-icon", { key: '8de2e75dbf0de964f0213d3a4c4b1c3ff399cd90', name: "quote", size: 48 }))), h("div", { key: '54aa8e50eb467db8479d2bd1f18960e5016e56ae', class: "testimonial-text" }, h("slot", { key: 'f4b67d5a449754c8258db5b60d761420a836923d', name: "quote-body" }, this.quote)), h("div", { key: '80076fa3891101465cc5c94739c7b5a71448b81c', class: "testimonial-attribution" }, this.attribution)), h("div", { key: '7dc0037ded29ba32536fa4b1ef68a383849cef3d', class: "testimonial-stats" }, h("slot", { key: '6146b401ec0a2f840f6f4e80b3352c1ff51c243d', name: "stats" })), h("div", { key: 'a5c3f27c91aaa05c24f6db2fe507a6a3ae7a4457', class: "testimonial-footer" }, h("div", { key: '82aac81fe42e157bd713bde5562832b6d2a3a08c', 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: '4ab4295ecbd966fe1749c2db6ac8c96c50b3bb0d', variant: "secondary", href: this.readMoreLink }, "Read full story", h("af-icon", { key: 'd96405c3f90f36768fa3dbe2dd9f83347f31f53e', slot: "icon-right", name: "arrow-right", size: 24 }))))))));
36
+ h("slot", { name: "navigation" }))), this.readMoreLink && (h("af-button", { key: '8f3ff6293ae51a697c90d6c4e0c74276abb9da1a', variant: "secondary", href: this.readMoreLink }, "Read full story", h("af-icon", { key: 'afcaf06157c82fbc85eed2dd8cb2794d48b7d7fe', 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"; }
@@ -208,8 +208,8 @@ export class AfTestimonial {
208
208
  }
209
209
  static get events() {
210
210
  return [{
211
- "method": "navPrev",
212
- "name": "navPrev",
211
+ "method": "afNavPrev",
212
+ "name": "afNavPrev",
213
213
  "bubbles": true,
214
214
  "cancelable": true,
215
215
  "composed": true,
@@ -223,8 +223,8 @@ export class AfTestimonial {
223
223
  "references": {}
224
224
  }
225
225
  }, {
226
- "method": "navNext",
227
- "name": "navNext",
226
+ "method": "afNavNext",
227
+ "name": "afNavNext",
228
228
  "bubbles": true,
229
229
  "cancelable": true,
230
230
  "composed": true,
@@ -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/**\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"]}
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/**\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() afNavPrev!: EventEmitter<void>;\n\n /**\n * Emitted when the next button is clicked\n */\n @Event() afNavNext!: EventEmitter<void>;\n\n private handlePrev = () => {\n this.afNavPrev.emit();\n };\n\n private handleNext = () => {\n this.afNavNext.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: '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() }))))));
97
+ return (h(Host, { key: 'a3dba3e3073b5a0009a68896c962269dec2ec580' }, h("div", { key: '21e3310b04dced5b58bf88ffbe773ad7ed3f56be', class: "testimonial-carousel" }, h("div", { key: '85fe5a7dc6b0dc55e7602c75b273492082b17ab5', class: "testimonial-slides" }, h("slot", { key: '6712252f49721d7d63b4e136ddff6f40a043cd4e' })), this.testimonialCount > 1 && (h("div", { key: '212be1b74d47c371f1942808475fbb459760aff5', class: "testimonial-progress" }, h("af-progress-line", { key: '7b8ec0176748a0e20cf5cfc653bb3be798a1e6df', progress: this.getProgress() }))))));
98
98
  }
99
99
  static get is() { return "af-testimonial-carousel"; }
100
100
  static get encapsulation() { return "scoped"; }
@@ -118,13 +118,13 @@ export class AfTestimonialCarousel {
118
118
  static get elementRef() { return "host"; }
119
119
  static get listeners() {
120
120
  return [{
121
- "name": "navPrev",
121
+ "name": "afNavPrev",
122
122
  "method": "handleNavPrev",
123
123
  "target": undefined,
124
124
  "capture": false,
125
125
  "passive": false
126
126
  }, {
127
- "name": "navNext",
127
+ "name": "afNavNext",
128
128
  "method": "handleNavNext",
129
129
  "target": undefined,
130
130
  "capture": false,
@@ -1 +1 @@
1
- {"version":3,"file":"af-testimonial-carousel.js","sourceRoot":"","sources":["../../../src/components/af-testimonial-carousel/af-testimonial-carousel.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, State, h, Host, Element, Listen } from '@stencil/core';\n\n/**\n * TestimonialCarousel - Carousel for displaying multiple customer testimonials.\n * \n * Handles navigation between testimonials with progress indicator.\n * Wrap in Section/Container for proper page layout and theming.\n * \n * @slot - Testimonial components to display in the carousel\n */\n@Component({\n tag: 'af-testimonial-carousel',\n styleUrl: 'af-testimonial-carousel.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonialCarousel {\n @Element() host!: HTMLElement;\n @State() currentIndex: number = 0;\n @State() isAnimating: boolean = false;\n @State() testimonialCount: number = 0;\n\n private testimonials: HTMLElement[] = [];\n private observer: MutationObserver | undefined;\n\n componentDidLoad() {\n this.detectTestimonials();\n \n // Watch for testimonials being added (for React async rendering)\n this.observer = new MutationObserver(() => {\n this.detectTestimonials();\n });\n \n this.observer.observe(this.host, {\n childList: true,\n subtree: true\n });\n }\n\n disconnectedCallback() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n /**\n * Listen for navigation events from testimonials\n */\n @Listen('navPrev')\n handleNavPrev() {\n this.goToPrevious();\n }\n\n @Listen('navNext')\n handleNavNext() {\n this.goToNext();\n }\n\n private detectTestimonials() {\n const newTestimonials = Array.from(this.host.querySelectorAll('af-testimonial')) as HTMLElement[];\n \n if (newTestimonials.length !== this.testimonials.length) {\n this.testimonials = newTestimonials;\n this.testimonialCount = newTestimonials.length;\n \n if (this.testimonials.length > 0) {\n this.currentIndex = 0;\n this.updateVisibleTestimonial();\n }\n }\n }\n\n private updateVisibleTestimonial() {\n const hasPrev = this.currentIndex > 0;\n const hasNext = this.currentIndex < this.testimonialCount - 1;\n const showNav = this.testimonialCount > 1;\n\n this.testimonials.forEach((testimonial, index) => {\n const offset = (index - this.currentIndex) * 100;\n testimonial.style.transform = `translateX(${offset}%)`;\n testimonial.style.opacity = index === this.currentIndex ? '1' : '0';\n testimonial.style.pointerEvents = index === this.currentIndex ? 'auto' : 'none';\n \n // Set navigation props on testimonials (directly on the element for Stencil)\n (testimonial as any).showNavigation = showNav;\n (testimonial as any).hasPrev = hasPrev;\n (testimonial as any).hasNext = hasNext;\n });\n }\n\n private goToPrevious = () => {\n if (this.isAnimating || this.currentIndex === 0) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex - 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n private goToNext = () => {\n if (this.isAnimating || this.currentIndex >= this.testimonialCount - 1) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex + 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n /**\n * Calculate progress value (0 to 1) based on current position\n */\n private getProgress(): number {\n if (this.testimonialCount <= 1) return 0;\n return (this.currentIndex + 1) / this.testimonialCount;\n }\n\n render() {\n return (\n <Host>\n <div class=\"testimonial-carousel\">\n <div class=\"testimonial-slides\">\n <slot></slot>\n </div>\n \n {/* Progress indicator using af-progress-line atom */}\n {this.testimonialCount > 1 && (\n <div class=\"testimonial-progress\">\n <af-progress-line progress={this.getProgress()} />\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n\n"]}
1
+ {"version":3,"file":"af-testimonial-carousel.js","sourceRoot":"","sources":["../../../src/components/af-testimonial-carousel/af-testimonial-carousel.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, State, h, Host, Element, Listen } from '@stencil/core';\n\n/**\n * TestimonialCarousel - Carousel for displaying multiple customer testimonials.\n * \n * Handles navigation between testimonials with progress indicator.\n * Wrap in Section/Container for proper page layout and theming.\n * \n * @slot - Testimonial components to display in the carousel\n */\n@Component({\n tag: 'af-testimonial-carousel',\n styleUrl: 'af-testimonial-carousel.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonialCarousel {\n @Element() host!: HTMLElement;\n @State() currentIndex: number = 0;\n @State() isAnimating: boolean = false;\n @State() testimonialCount: number = 0;\n\n private testimonials: HTMLElement[] = [];\n private observer: MutationObserver | undefined;\n\n componentDidLoad() {\n this.detectTestimonials();\n \n // Watch for testimonials being added (for React async rendering)\n this.observer = new MutationObserver(() => {\n this.detectTestimonials();\n });\n \n this.observer.observe(this.host, {\n childList: true,\n subtree: true\n });\n }\n\n disconnectedCallback() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n /**\n * Listen for navigation events from testimonials\n */\n @Listen('afNavPrev')\n handleNavPrev() {\n this.goToPrevious();\n }\n\n @Listen('afNavNext')\n handleNavNext() {\n this.goToNext();\n }\n\n private detectTestimonials() {\n const newTestimonials = Array.from(this.host.querySelectorAll('af-testimonial')) as HTMLElement[];\n \n if (newTestimonials.length !== this.testimonials.length) {\n this.testimonials = newTestimonials;\n this.testimonialCount = newTestimonials.length;\n \n if (this.testimonials.length > 0) {\n this.currentIndex = 0;\n this.updateVisibleTestimonial();\n }\n }\n }\n\n private updateVisibleTestimonial() {\n const hasPrev = this.currentIndex > 0;\n const hasNext = this.currentIndex < this.testimonialCount - 1;\n const showNav = this.testimonialCount > 1;\n\n this.testimonials.forEach((testimonial, index) => {\n const offset = (index - this.currentIndex) * 100;\n testimonial.style.transform = `translateX(${offset}%)`;\n testimonial.style.opacity = index === this.currentIndex ? '1' : '0';\n testimonial.style.pointerEvents = index === this.currentIndex ? 'auto' : 'none';\n \n // Set navigation props on testimonials (directly on the element for Stencil)\n (testimonial as any).showNavigation = showNav;\n (testimonial as any).hasPrev = hasPrev;\n (testimonial as any).hasNext = hasNext;\n });\n }\n\n private goToPrevious = () => {\n if (this.isAnimating || this.currentIndex === 0) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex - 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n private goToNext = () => {\n if (this.isAnimating || this.currentIndex >= this.testimonialCount - 1) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex + 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n /**\n * Calculate progress value (0 to 1) based on current position\n */\n private getProgress(): number {\n if (this.testimonialCount <= 1) return 0;\n return (this.currentIndex + 1) / this.testimonialCount;\n }\n\n render() {\n return (\n <Host>\n <div class=\"testimonial-carousel\">\n <div class=\"testimonial-slides\">\n <slot></slot>\n </div>\n \n {/* Progress indicator using af-progress-line atom */}\n {this.testimonialCount > 1 && (\n <div class=\"testimonial-progress\">\n <af-progress-line progress={this.getProgress()} />\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n\n"]}
@@ -7,7 +7,7 @@ export class AfTestimonialStat {
7
7
  this.accentBorder = false;
8
8
  }
9
9
  render() {
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))));
10
+ return (h(Host, { key: '555836fed68760965fadc4c2e2f159b9d303918a' }, h("div", { key: 'd98e8e344674b0260cac3e47be6434c0cc920bca', class: `stat ${this.accentBorder ? 'stat--accent' : ''}` }, h("af-heading", { key: 'c8fa22df6f81e30b5dd5c10bd7c8c74f4aa33ea3', level: 2, class: "stat-value" }, this.value), h("af-text", { key: '77421992735b6287dd061f791a0f17d16f639e5f', 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: '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" }))))));
32
+ return (h(Host, { key: 'f55d86894fb1bb10f9d93cab3bc8050bfcdc7224' }, h("div", { key: '57b4ec709278e0d0c7cd4b7b30d99beb21d954ad', class: containerClasses }, h("div", { key: '62f691c6a7e3ab8b166cbb0a1a17144a7857ce7b', class: "nest__content" }, h("div", { key: '5fa9223861becb07444a67db5541bae057b65744', class: gridClasses }, h("slot", { key: 'fd29c150a6399eba74ace37bdbc7fadbc9df626b' })), h("div", { key: '4b956265f2b9ec119d0965f8cc9a323bcd37e426', class: "nest__footer" }, h("slot", { key: '934747fcb6cc7103fa894f5a74a32e32154013a4', 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: '6398825554ab3e9ab2a87012c4fb94e711663eb3' }, h("div", { key: '1353455a87e0efb9a5653938f13f5e325cec561d', class: `theme-override theme-${this.theme}` }, h("slot", { key: '60fa7a4fff57320ce113f693afc497bb63d3bc97' }))));
21
+ return (h(Host, { key: '4bad1c421cf71e65fb64a21287a3e91ae0de171d' }, h("div", { key: '1c987ccbf6027aea445d12c87e478dfb8c248223', class: `theme-override theme-${this.theme}` }, h("slot", { key: 'c6083e7acb42da22d9fe0692fc7de501def3b33d' }))));
22
22
  }
23
23
  static get is() { return "af-theme-override"; }
24
24
  static get encapsulation() { return "scoped"; }
@@ -38,9 +38,15 @@ export class AfThemeOverride {
38
38
  "type": "string",
39
39
  "mutable": false,
40
40
  "complexType": {
41
- "original": "'white' | 'inkwell' | 'mist-green' | 'soft-clay' | 'white-ivory'",
41
+ "original": "Theme",
42
42
  "resolved": "\"inkwell\" | \"mist-green\" | \"soft-clay\" | \"white\" | \"white-ivory\"",
43
- "references": {}
43
+ "references": {
44
+ "Theme": {
45
+ "location": "import",
46
+ "path": "../../types",
47
+ "id": "src/types.ts::Theme"
48
+ }
49
+ }
44
50
  },
45
51
  "required": false,
46
52
  "optional": false,
@@ -1 +1 @@
1
- {"version":3,"file":"af-theme-override.js","sourceRoot":"","sources":["../../../src/components/af-theme-override/af-theme-override.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzD;;;;;;;;;GASG;AAOH,MAAM,OAAO,eAAe;IAN5B;QAOE;;;WAGG;QACK,UAAK,GAAqE,OAAO,CAAC;KAW3F;IATC,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAE,wBAAwB,IAAI,CAAC,KAAK,EAAE;gBAC9C,8DAAa,CACT,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Theme Override utility component.\n * Wraps content and applies an explicit theme, overriding any inherited theme\n * from parent containers like AfSection or AfCard.\n * \n * Unlike AfSection, this component does NOT apply a background color - \n * it only sets the CSS custom properties that child components consume.\n * \n * @slot - Content to be themed\n */\n@Component({\n tag: 'af-theme-override',\n styleUrl: 'af-theme-override.css',\n shadow: false,\n scoped: true,\n})\nexport class AfThemeOverride {\n /** \n * The theme to apply to child components.\n * Overrides any inherited theme from parent containers.\n */\n @Prop() theme: 'white' | 'inkwell' | 'mist-green' | 'soft-clay' | 'white-ivory' = 'white';\n\n render() {\n return (\n <Host>\n <div class={`theme-override theme-${this.theme}`}>\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n\n"]}
1
+ {"version":3,"file":"af-theme-override.js","sourceRoot":"","sources":["../../../src/components/af-theme-override/af-theme-override.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGzD;;;;;;;;;GASG;AAOH,MAAM,OAAO,eAAe;IAN5B;QAOE;;;WAGG;QACK,UAAK,GAAU,OAAO,CAAC;KAWhC;IATC,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,4DAAK,KAAK,EAAE,wBAAwB,IAAI,CAAC,KAAK,EAAE;gBAC9C,8DAAa,CACT,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Host, Prop } from '@stencil/core';\nimport type { Theme } from '../../types';\n\n/**\n * Theme Override utility component.\n * Wraps content and applies an explicit theme, overriding any inherited theme\n * from parent containers like AfSection or AfCard.\n * \n * Unlike AfSection, this component does NOT apply a background color - \n * it only sets the CSS custom properties that child components consume.\n * \n * @slot - Content to be themed\n */\n@Component({\n tag: 'af-theme-override',\n styleUrl: 'af-theme-override.css',\n shadow: false,\n scoped: true,\n})\nexport class AfThemeOverride {\n /** \n * The theme to apply to child components.\n * Overrides any inherited theme from parent containers.\n */\n @Prop() theme: Theme = 'white';\n\n render() {\n return (\n <Host>\n <div class={`theme-override theme-${this.theme}`}>\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n\n"]}
@@ -138,7 +138,7 @@ export class AfTypographyLockup {
138
138
  [`align-${effectiveButtonsAlignment}`]: true
139
139
  };
140
140
  const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};
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) })))));
141
+ return (h(Host, { key: '1c25556c2117158964c3a72c80bb0453fdd871bc' }, h("div", { key: '817f5ee187f7c9fbd2c18fe4857ced5ebb46e871', class: containerClasses }, h("div", { key: 'eefc5dc2b46cd392b658b0698de9dbab9262808b', class: "copy", style: copyStyle }, h("div", { key: '454e5991fde5bc8f8cf26c3b2942601de263b374', class: headingClasses, part: "heading" }, h("slot", { key: 'd3c76e6730ccc5eb5c0deae5ae544b844d04bf3e' })), h("div", { key: '5b4d41b67bfcd2e72ced102c53f4fc840c226e9f', class: descriptionClasses, part: "body", hidden: !this.hasDescription }, h("slot", { key: 'eb9b013dbe5462d9171c90238b90878df936e954', name: "description", ref: (el) => (this.descriptionSlot = el) }))), h("div", { key: '105bf269969148e14449ee0dda6dd83f1714df97', class: buttonsClasses, part: "buttons", hidden: !this.hasButtons }, h("slot", { key: 'bbf519061574d79fdba1639894c34d70ee662f2b', name: "buttons", ref: (el) => (this.buttonsSlot = el) })))));
142
142
  }
143
143
  static get is() { return "af-typography-lockup"; }
144
144
  static get encapsulation() { return "shadow"; }
@@ -158,9 +158,15 @@ export class AfTypographyLockup {
158
158
  "type": "any",
159
159
  "mutable": false,
160
160
  "complexType": {
161
- "original": "1 | 2 | 3 | 4 | 5 | 'card'",
161
+ "original": "HeadingSize",
162
162
  "resolved": "\"card\" | 1 | 2 | 3 | 4 | 5",
163
- "references": {}
163
+ "references": {
164
+ "HeadingSize": {
165
+ "location": "import",
166
+ "path": "../../types",
167
+ "id": "src/types.ts::HeadingSize"
168
+ }
169
+ }
164
170
  },
165
171
  "required": false,
166
172
  "optional": false,