@affinda/wc 0.0.15 → 0.0.17

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 (760) hide show
  1. package/dist/affinda/af-aspect-ratio.entry.esm.js.map +1 -1
  2. package/dist/affinda/af-button.entry.esm.js.map +1 -1
  3. package/dist/affinda/af-card.entry.esm.js.map +1 -1
  4. package/dist/affinda/af-checkbox.entry.esm.js.map +1 -0
  5. package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -1
  6. package/dist/affinda/af-feature-accordion.entry.esm.js.map +1 -1
  7. package/dist/affinda/af-feature-card.entry.esm.js.map +1 -0
  8. package/dist/affinda/af-feature-grid.entry.esm.js.map +1 -0
  9. package/dist/affinda/af-fieldset.entry.esm.js.map +1 -0
  10. package/dist/affinda/af-grid-callout.entry.esm.js.map +1 -0
  11. package/dist/affinda/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.esm.js.map +1 -1
  12. package/dist/affinda/af-hero-section.entry.esm.js.map +1 -1
  13. package/dist/affinda/af-icon-box.entry.esm.js.map +1 -0
  14. package/dist/affinda/af-icon-button.entry.esm.js.map +1 -1
  15. package/dist/affinda/af-icon-text.entry.esm.js.map +1 -0
  16. package/dist/affinda/af-icon.entry.esm.js.map +1 -0
  17. package/dist/affinda/af-illustrated-card.entry.esm.js.map +1 -0
  18. package/dist/affinda/af-image.entry.esm.js.map +1 -0
  19. package/dist/affinda/af-in-page-banner.entry.esm.js.map +1 -0
  20. package/dist/affinda/af-input.entry.esm.js.map +1 -0
  21. package/dist/affinda/af-logo-well.entry.esm.js.map +1 -1
  22. package/dist/affinda/af-nav-card.entry.esm.js.map +1 -0
  23. package/dist/affinda/af-nav-menu-nest.entry.esm.js.map +1 -0
  24. package/dist/affinda/af-nav-menu.entry.esm.js.map +1 -0
  25. package/dist/affinda/af-number-badge.entry.esm.js.map +1 -0
  26. package/dist/affinda/af-progress-line.entry.esm.js.map +1 -0
  27. package/dist/affinda/af-radio.entry.esm.js.map +1 -0
  28. package/dist/affinda/af-section.entry.esm.js.map +1 -1
  29. package/dist/affinda/af-split-section.entry.esm.js.map +1 -0
  30. package/dist/affinda/af-switch.entry.esm.js.map +1 -0
  31. package/dist/affinda/af-tab-bar.entry.esm.js.map +1 -0
  32. package/dist/affinda/af-tab.entry.esm.js.map +1 -0
  33. package/dist/affinda/af-tag.entry.esm.js.map +1 -0
  34. package/dist/affinda/af-testimonial-carousel.entry.esm.js.map +1 -1
  35. package/dist/affinda/af-testimonial-stat.entry.esm.js.map +1 -1
  36. package/dist/affinda/af-testimonial.entry.esm.js.map +1 -1
  37. package/dist/affinda/af-text-image-nest.entry.esm.js.map +1 -0
  38. package/dist/affinda/af-text-image.entry.esm.js.map +1 -0
  39. package/dist/affinda/af-textarea.entry.esm.js.map +1 -0
  40. package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
  41. package/dist/affinda/af-video-container.entry.esm.js.map +1 -0
  42. package/dist/affinda/affinda.css +1 -1
  43. package/dist/affinda/affinda.esm.js +1 -1
  44. package/dist/affinda/index.esm.js +1 -1
  45. package/dist/affinda/index.esm.js.map +1 -1
  46. package/dist/affinda/p-0cd160a4.entry.js +2 -0
  47. package/dist/affinda/p-0cd160a4.entry.js.map +1 -0
  48. package/dist/affinda/p-10801ee1.entry.js +2 -0
  49. package/dist/affinda/p-10801ee1.entry.js.map +1 -0
  50. package/dist/affinda/p-1d65fd18.entry.js +2 -0
  51. package/dist/affinda/p-1d65fd18.entry.js.map +1 -0
  52. package/dist/affinda/p-1d9e532f.entry.js +2 -0
  53. package/dist/affinda/p-231ba1d0.entry.js +2 -0
  54. package/dist/affinda/p-231ba1d0.entry.js.map +1 -0
  55. package/dist/affinda/p-2b4dc22c.entry.js +2 -0
  56. package/dist/affinda/p-2b4dc22c.entry.js.map +1 -0
  57. package/dist/affinda/{p-fb4e3a8d.entry.js → p-31d4c1a4.entry.js} +2 -2
  58. package/dist/affinda/p-3d3c9f62.entry.js +2 -0
  59. package/dist/affinda/p-3d3c9f62.entry.js.map +1 -0
  60. package/dist/affinda/p-3f691578.entry.js +2 -0
  61. package/dist/affinda/p-3f691578.entry.js.map +1 -0
  62. package/dist/affinda/p-425253ee.entry.js +2 -0
  63. package/dist/affinda/{p-9071c2a7.entry.js.map → p-425253ee.entry.js.map} +1 -1
  64. package/dist/affinda/p-44b25840.entry.js +2 -0
  65. package/dist/affinda/p-44b25840.entry.js.map +1 -0
  66. package/dist/affinda/p-45e1923c.entry.js +2 -0
  67. package/dist/affinda/p-45e1923c.entry.js.map +1 -0
  68. package/dist/affinda/p-52ab3bf0.entry.js +2 -0
  69. package/dist/affinda/p-52ab3bf0.entry.js.map +1 -0
  70. package/dist/affinda/p-53ae16fe.entry.js +2 -0
  71. package/dist/affinda/p-53b5149d.entry.js +2 -0
  72. package/dist/affinda/p-53b5149d.entry.js.map +1 -0
  73. package/dist/affinda/p-57713942.entry.js +2 -0
  74. package/dist/affinda/p-57713942.entry.js.map +1 -0
  75. package/dist/affinda/p-5bbf2c8c.entry.js +2 -0
  76. package/dist/affinda/p-5bbf2c8c.entry.js.map +1 -0
  77. package/dist/affinda/p-697bf0b7.entry.js +2 -0
  78. package/dist/affinda/p-697bf0b7.entry.js.map +1 -0
  79. package/dist/affinda/p-6b2d0ff4.entry.js +2 -0
  80. package/dist/affinda/p-6b2d0ff4.entry.js.map +1 -0
  81. package/dist/affinda/p-71144002.entry.js +2 -0
  82. package/dist/affinda/p-71144002.entry.js.map +1 -0
  83. package/dist/affinda/{p-ec7721cc.entry.js → p-72f02343.entry.js} +2 -2
  84. package/dist/affinda/p-77bf8a81.entry.js +2 -0
  85. package/dist/affinda/p-77bf8a81.entry.js.map +1 -0
  86. package/dist/affinda/p-7f20fbe0.entry.js +2 -0
  87. package/dist/affinda/p-7f20fbe0.entry.js.map +1 -0
  88. package/dist/affinda/p-81571029.entry.js +2 -0
  89. package/dist/affinda/p-81571029.entry.js.map +1 -0
  90. package/dist/affinda/p-85a78bcf.entry.js +2 -0
  91. package/dist/affinda/p-85a78bcf.entry.js.map +1 -0
  92. package/dist/affinda/p-861f4f57.entry.js +2 -0
  93. package/dist/affinda/p-861f4f57.entry.js.map +1 -0
  94. package/dist/affinda/p-864778d0.entry.js +2 -0
  95. package/dist/affinda/p-864778d0.entry.js.map +1 -0
  96. package/dist/affinda/p-8ea22b5d.entry.js +2 -0
  97. package/dist/affinda/p-8ea22b5d.entry.js.map +1 -0
  98. package/dist/affinda/{p-bd30e86a.entry.js → p-96eac3af.entry.js} +2 -2
  99. package/dist/affinda/p-98901734.entry.js +2 -0
  100. package/dist/affinda/p-98901734.entry.js.map +1 -0
  101. package/dist/affinda/p-9f470d8b.entry.js +2 -0
  102. package/dist/affinda/p-9f470d8b.entry.js.map +1 -0
  103. package/dist/affinda/p-BmU_CFQ4.js +3 -0
  104. package/dist/affinda/p-BmU_CFQ4.js.map +1 -0
  105. package/dist/affinda/p-a36abb83.entry.js +2 -0
  106. package/dist/affinda/{p-fc2cb8d1.entry.js.map → p-a36abb83.entry.js.map} +1 -1
  107. package/dist/affinda/p-a4e4eb4d.entry.js +2 -0
  108. package/dist/affinda/{p-d3b2ab0e.entry.js.map → p-a4e4eb4d.entry.js.map} +1 -1
  109. package/dist/affinda/p-a6365e94.entry.js +2 -0
  110. package/dist/affinda/p-a6365e94.entry.js.map +1 -0
  111. package/dist/affinda/p-aaa28806.entry.js +2 -0
  112. package/dist/affinda/p-aaa28806.entry.js.map +1 -0
  113. package/dist/affinda/{p-806d129e.entry.js → p-acbbe39a.entry.js} +2 -2
  114. package/dist/affinda/p-b17735c9.entry.js +2 -0
  115. package/dist/affinda/p-b17735c9.entry.js.map +1 -0
  116. package/dist/affinda/p-b3b0ed0c.entry.js +2 -0
  117. package/dist/affinda/p-b3b0ed0c.entry.js.map +1 -0
  118. package/dist/affinda/p-be049760.entry.js +2 -0
  119. package/dist/affinda/p-be049760.entry.js.map +1 -0
  120. package/dist/affinda/p-c0ee2420.entry.js +2 -0
  121. package/dist/affinda/p-c0ee2420.entry.js.map +1 -0
  122. package/dist/affinda/{p-3a9646e6.entry.js → p-c11088fa.entry.js} +2 -2
  123. package/dist/affinda/p-c298b370.entry.js +2 -0
  124. package/dist/affinda/p-c298b370.entry.js.map +1 -0
  125. package/dist/affinda/p-c3e31251.entry.js +2 -0
  126. package/dist/affinda/p-c3e31251.entry.js.map +1 -0
  127. package/dist/affinda/p-ce3356f1.entry.js +2 -0
  128. package/dist/affinda/p-ce3356f1.entry.js.map +1 -0
  129. package/dist/affinda/p-df148383.entry.js +2 -0
  130. package/dist/affinda/{p-350ac7a5.entry.js.map → p-df148383.entry.js.map} +1 -1
  131. package/dist/affinda/{p-f8ac0120.entry.js → p-e5af21c2.entry.js} +2 -2
  132. package/dist/affinda/p-e5d9913c.entry.js +2 -0
  133. package/dist/affinda/p-e5d9913c.entry.js.map +1 -0
  134. package/dist/affinda/p-ea06c83b.entry.js +2 -0
  135. package/dist/affinda/p-ea06c83b.entry.js.map +1 -0
  136. package/dist/affinda/p-f45b0060.entry.js +2 -0
  137. package/dist/affinda/{p-050f98cd.entry.js.map → p-f45b0060.entry.js.map} +1 -1
  138. package/dist/cjs/af-aspect-ratio.cjs.entry.js +2 -2
  139. package/dist/cjs/af-aspect-ratio.entry.cjs.js.map +1 -1
  140. package/dist/cjs/af-button-group.cjs.entry.js +2 -2
  141. package/dist/cjs/af-button.cjs.entry.js +25 -12
  142. package/dist/cjs/af-button.entry.cjs.js.map +1 -1
  143. package/dist/cjs/af-card.cjs.entry.js +17 -7
  144. package/dist/cjs/af-card.entry.cjs.js.map +1 -1
  145. package/dist/cjs/af-checkbox.cjs.entry.js +58 -0
  146. package/dist/cjs/af-checkbox.entry.cjs.js.map +1 -0
  147. package/dist/cjs/af-client-carousel.cjs.entry.js +5 -7
  148. package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -1
  149. package/dist/cjs/af-color-swatch.cjs.entry.js +1 -1
  150. package/dist/cjs/af-contact-item.cjs.entry.js +2 -2
  151. package/dist/cjs/af-container.cjs.entry.js +1 -1
  152. package/dist/cjs/af-feature-accordion.cjs.entry.js +4 -4
  153. package/dist/cjs/af-feature-accordion.entry.cjs.js.map +1 -1
  154. package/dist/cjs/af-feature-card.cjs.entry.js +59 -0
  155. package/dist/cjs/af-feature-card.entry.cjs.js.map +1 -0
  156. package/dist/cjs/af-feature-grid.cjs.entry.js +93 -0
  157. package/dist/cjs/af-feature-grid.entry.cjs.js.map +1 -0
  158. package/dist/cjs/af-fieldset.cjs.entry.js +37 -0
  159. package/dist/cjs/af-fieldset.entry.cjs.js.map +1 -0
  160. package/dist/cjs/af-footer-column.cjs.entry.js +2 -2
  161. package/dist/cjs/af-footer-link.cjs.entry.js +2 -2
  162. package/dist/cjs/af-footer.cjs.entry.js +2 -2
  163. package/dist/cjs/af-grid-callout.cjs.entry.js +51 -0
  164. package/dist/cjs/af-grid-callout.entry.cjs.js.map +1 -0
  165. package/dist/cjs/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.cjs.js.map +1 -1
  166. package/dist/cjs/af-heading_5.cjs.entry.js +67 -27
  167. package/dist/cjs/af-hero-section.cjs.entry.js +11 -5
  168. package/dist/cjs/af-hero-section.entry.cjs.js.map +1 -1
  169. package/dist/cjs/af-icon-box.cjs.entry.js +30 -0
  170. package/dist/cjs/af-icon-box.entry.cjs.js.map +1 -0
  171. package/dist/cjs/af-icon-button.cjs.entry.js +6 -3
  172. package/dist/cjs/af-icon-button.entry.cjs.js.map +1 -1
  173. package/dist/cjs/af-icon-text.cjs.entry.js +36 -0
  174. package/dist/cjs/af-icon-text.entry.cjs.js.map +1 -0
  175. package/dist/cjs/af-icon.cjs.entry.js +352 -0
  176. package/dist/cjs/af-icon.entry.cjs.js.map +1 -0
  177. package/dist/cjs/af-illustrated-card.cjs.entry.js +36 -0
  178. package/dist/cjs/af-illustrated-card.entry.cjs.js.map +1 -0
  179. package/dist/cjs/af-image.cjs.entry.js +18 -0
  180. package/dist/cjs/af-image.entry.cjs.js.map +1 -0
  181. package/dist/cjs/af-in-page-banner.cjs.entry.js +47 -0
  182. package/dist/cjs/af-in-page-banner.entry.cjs.js.map +1 -0
  183. package/dist/cjs/af-input.cjs.entry.js +104 -0
  184. package/dist/cjs/af-input.entry.cjs.js.map +1 -0
  185. package/dist/cjs/af-logo-well.cjs.entry.js +3 -3
  186. package/dist/cjs/af-logo-well.entry.cjs.js.map +1 -1
  187. package/dist/cjs/af-nav-card.cjs.entry.js +37 -0
  188. package/dist/cjs/af-nav-card.entry.cjs.js.map +1 -0
  189. package/dist/cjs/af-nav-menu-nest.cjs.entry.js +43 -0
  190. package/dist/cjs/af-nav-menu-nest.entry.cjs.js.map +1 -0
  191. package/dist/cjs/af-nav-menu.cjs.entry.js +41 -0
  192. package/dist/cjs/af-nav-menu.entry.cjs.js.map +1 -0
  193. package/dist/cjs/af-number-badge.cjs.entry.js +42 -0
  194. package/dist/cjs/af-number-badge.entry.cjs.js.map +1 -0
  195. package/dist/cjs/af-progress-line.cjs.entry.js +33 -0
  196. package/dist/cjs/af-progress-line.entry.cjs.js.map +1 -0
  197. package/dist/cjs/af-radio.cjs.entry.js +43 -0
  198. package/dist/cjs/af-radio.entry.cjs.js.map +1 -0
  199. package/dist/cjs/af-section.cjs.entry.js +6 -6
  200. package/dist/cjs/af-section.entry.cjs.js.map +1 -1
  201. package/dist/cjs/af-social-link.cjs.entry.js +2 -2
  202. package/dist/cjs/af-split-section.cjs.entry.js +41 -0
  203. package/dist/cjs/af-split-section.entry.cjs.js.map +1 -0
  204. package/dist/cjs/af-switch.cjs.entry.js +48 -0
  205. package/dist/cjs/af-switch.entry.cjs.js.map +1 -0
  206. package/dist/cjs/af-tab-bar.cjs.entry.js +88 -0
  207. package/dist/cjs/af-tab-bar.entry.cjs.js.map +1 -0
  208. package/dist/cjs/af-tab.cjs.entry.js +64 -0
  209. package/dist/cjs/af-tab.entry.cjs.js.map +1 -0
  210. package/dist/cjs/af-tag.cjs.entry.js +37 -0
  211. package/dist/cjs/af-tag.entry.cjs.js.map +1 -0
  212. package/dist/cjs/af-testimonial-carousel.cjs.entry.js +27 -15
  213. package/dist/cjs/af-testimonial-carousel.entry.cjs.js.map +1 -1
  214. package/dist/cjs/af-testimonial-stat.cjs.entry.js +3 -3
  215. package/dist/cjs/af-testimonial-stat.entry.cjs.js.map +1 -1
  216. package/dist/cjs/af-testimonial.cjs.entry.js +27 -3
  217. package/dist/cjs/af-testimonial.entry.cjs.js.map +1 -1
  218. package/dist/cjs/af-text-image-nest.cjs.entry.js +30 -0
  219. package/dist/cjs/af-text-image-nest.entry.cjs.js.map +1 -0
  220. package/dist/cjs/af-text-image.cjs.entry.js +63 -0
  221. package/dist/cjs/af-text-image.entry.cjs.js.map +1 -0
  222. package/dist/cjs/af-textarea.cjs.entry.js +93 -0
  223. package/dist/cjs/af-textarea.entry.cjs.js.map +1 -0
  224. package/dist/cjs/af-typography-lockup.cjs.entry.js +7 -7
  225. package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
  226. package/dist/cjs/af-video-container.cjs.entry.js +35 -0
  227. package/dist/cjs/af-video-container.entry.cjs.js.map +1 -0
  228. package/dist/cjs/affinda.cjs.js +2 -2
  229. package/dist/cjs/{index-DfEVhbS6.js → index-ybEiHT0b.js} +130 -6
  230. package/dist/cjs/index-ybEiHT0b.js.map +1 -0
  231. package/dist/cjs/index.cjs.js +23 -1
  232. package/dist/cjs/index.cjs.js.map +1 -1
  233. package/dist/cjs/loader.cjs.js +2 -2
  234. package/dist/collection/assets/backgrounds/wave-overlay-inkwell.svg +3 -0
  235. package/dist/collection/assets/backgrounds/wave-overlay-mist-green.svg +3 -0
  236. package/dist/collection/assets/backgrounds/wave-overlay-soft-clay.svg +3 -0
  237. package/dist/collection/assets/backgrounds/wave-overlay-white-ivory.svg +3 -0
  238. package/dist/collection/collection-manifest.json +28 -2
  239. package/dist/collection/components/af-aspect-ratio/af-aspect-ratio.css +2 -0
  240. package/dist/collection/components/af-button/af-button.css +177 -64
  241. package/dist/collection/components/af-button/af-button.js +50 -42
  242. package/dist/collection/components/af-button/af-button.js.map +1 -1
  243. package/dist/collection/components/af-button-group/af-button-group.js +1 -1
  244. package/dist/collection/components/af-card/af-card.css +96 -65
  245. package/dist/collection/components/af-card/af-card.js +32 -33
  246. package/dist/collection/components/af-card/af-card.js.map +1 -1
  247. package/dist/collection/components/af-checkbox/af-checkbox.css +96 -0
  248. package/dist/collection/components/af-checkbox/af-checkbox.js +186 -0
  249. package/dist/collection/components/af-checkbox/af-checkbox.js.map +1 -0
  250. package/dist/collection/components/af-client-carousel/af-client-carousel.css +77 -32
  251. package/dist/collection/components/af-client-carousel/af-client-carousel.js +21 -33
  252. package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -1
  253. package/dist/collection/components/af-contact-item/af-contact-item.js +1 -1
  254. package/dist/collection/components/af-feature-accordion/af-feature-accordion.css +21 -35
  255. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +15 -5
  256. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js.map +1 -1
  257. package/dist/collection/components/af-feature-card/af-feature-card.css +219 -0
  258. package/dist/collection/components/af-feature-card/af-feature-card.js +199 -0
  259. package/dist/collection/components/af-feature-card/af-feature-card.js.map +1 -0
  260. package/dist/collection/components/af-feature-grid/af-feature-grid.css +119 -0
  261. package/dist/collection/components/af-feature-grid/af-feature-grid.js +156 -0
  262. package/dist/collection/components/af-feature-grid/af-feature-grid.js.map +1 -0
  263. package/dist/collection/components/af-fieldset/af-fieldset.css +61 -0
  264. package/dist/collection/components/af-fieldset/af-fieldset.js +109 -0
  265. package/dist/collection/components/af-fieldset/af-fieldset.js.map +1 -0
  266. package/dist/collection/components/af-footer/af-footer.js +1 -1
  267. package/dist/collection/components/af-footer-column/af-footer-column.js +1 -1
  268. package/dist/collection/components/af-footer-link/af-footer-link.js +1 -1
  269. package/dist/collection/components/af-grid-callout/af-grid-callout.css +191 -0
  270. package/dist/collection/components/af-grid-callout/af-grid-callout.js +191 -0
  271. package/dist/collection/components/af-grid-callout/af-grid-callout.js.map +1 -0
  272. package/dist/collection/components/af-heading/af-heading.css +25 -33
  273. package/dist/collection/components/af-heading/af-heading.js +8 -26
  274. package/dist/collection/components/af-heading/af-heading.js.map +1 -1
  275. package/dist/collection/components/af-hero-section/af-hero-section.css +118 -12
  276. package/dist/collection/components/af-hero-section/af-hero-section.js +102 -10
  277. package/dist/collection/components/af-hero-section/af-hero-section.js.map +1 -1
  278. package/dist/collection/components/af-icon/af-icon.css +28 -0
  279. package/dist/collection/components/af-icon/af-icon.js +116 -0
  280. package/dist/collection/components/af-icon/af-icon.js.map +1 -0
  281. package/dist/collection/components/af-icon-box/af-icon-box.css +36 -0
  282. package/dist/collection/components/af-icon-box/af-icon-box.js +97 -0
  283. package/dist/collection/components/af-icon-box/af-icon-box.js.map +1 -0
  284. package/dist/collection/components/af-icon-button/af-icon-button.css +42 -54
  285. package/dist/collection/components/af-icon-button/af-icon-button.js +8 -5
  286. package/dist/collection/components/af-icon-button/af-icon-button.js.map +1 -1
  287. package/dist/collection/components/af-icon-text/af-icon-text.css +43 -0
  288. package/dist/collection/components/af-icon-text/af-icon-text.js +150 -0
  289. package/dist/collection/components/af-icon-text/af-icon-text.js.map +1 -0
  290. package/dist/collection/components/af-illustrated-card/af-illustrated-card.css +99 -0
  291. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +115 -0
  292. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +1 -0
  293. package/dist/collection/components/af-image/af-image.css +27 -0
  294. package/dist/collection/components/af-image/af-image.js +65 -0
  295. package/dist/collection/components/af-image/af-image.js.map +1 -0
  296. package/dist/collection/components/af-in-page-banner/af-in-page-banner.css +379 -0
  297. package/dist/collection/components/{af-cta-section/af-cta-section.js → af-in-page-banner/af-in-page-banner.js} +78 -17
  298. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +1 -0
  299. package/dist/collection/components/af-input/af-input.css +246 -0
  300. package/dist/collection/components/af-input/af-input.js +527 -0
  301. package/dist/collection/components/af-input/af-input.js.map +1 -0
  302. package/dist/collection/components/af-logo/af-logo.css +0 -7
  303. package/dist/collection/components/af-logo/af-logo.js +2 -55
  304. package/dist/collection/components/af-logo/af-logo.js.map +1 -1
  305. package/dist/collection/components/af-logo-well/af-logo-well.css +15 -4
  306. package/dist/collection/components/af-logo-well/af-logo-well.js +1 -1
  307. package/dist/collection/components/af-nav-card/af-nav-card.css +70 -0
  308. package/dist/collection/components/af-nav-card/af-nav-card.js +138 -0
  309. package/dist/collection/components/af-nav-card/af-nav-card.js.map +1 -0
  310. package/dist/collection/components/af-nav-item/af-nav-item.css +161 -28
  311. package/dist/collection/components/af-nav-item/af-nav-item.js +27 -0
  312. package/dist/collection/components/af-nav-item/af-nav-item.js.map +1 -1
  313. package/dist/collection/components/af-nav-menu/af-nav-menu.css +91 -0
  314. package/dist/collection/components/af-nav-menu/af-nav-menu.js +131 -0
  315. package/dist/collection/components/af-nav-menu/af-nav-menu.js.map +1 -0
  316. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.css +79 -0
  317. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +129 -0
  318. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js.map +1 -0
  319. package/dist/collection/components/af-navbar/af-navbar.css +91 -8
  320. package/dist/collection/components/af-navbar/af-navbar.js +84 -3
  321. package/dist/collection/components/af-navbar/af-navbar.js.map +1 -1
  322. package/dist/collection/components/af-number-badge/af-number-badge.css +30 -0
  323. package/dist/collection/components/af-number-badge/af-number-badge.js +131 -0
  324. package/dist/collection/components/af-number-badge/af-number-badge.js.map +1 -0
  325. package/dist/collection/components/af-progress-line/af-progress-line.css +44 -0
  326. package/dist/collection/components/af-progress-line/af-progress-line.js +86 -0
  327. package/dist/collection/components/af-progress-line/af-progress-line.js.map +1 -0
  328. package/dist/collection/components/af-radio/af-radio.css +97 -0
  329. package/dist/collection/components/af-radio/af-radio.js +150 -0
  330. package/dist/collection/components/af-radio/af-radio.js.map +1 -0
  331. package/dist/collection/components/af-section/af-section.css +230 -24
  332. package/dist/collection/components/af-section/af-section.js +11 -10
  333. package/dist/collection/components/af-section/af-section.js.map +1 -1
  334. package/dist/collection/components/af-social-link/af-social-link.js +1 -1
  335. package/dist/collection/components/af-split-section/af-split-section.css +46 -0
  336. package/dist/collection/components/af-split-section/af-split-section.js +145 -0
  337. package/dist/collection/components/af-split-section/af-split-section.js.map +1 -0
  338. package/dist/collection/components/af-switch/af-switch.css +104 -0
  339. package/dist/collection/components/af-switch/af-switch.js +155 -0
  340. package/dist/collection/components/af-switch/af-switch.js.map +1 -0
  341. package/dist/collection/components/af-tab/af-tab.css +182 -0
  342. package/dist/collection/components/af-tab/af-tab.js +251 -0
  343. package/dist/collection/components/af-tab/af-tab.js.map +1 -0
  344. package/dist/collection/components/af-tab-bar/af-tab-bar.css +87 -0
  345. package/dist/collection/components/af-tab-bar/af-tab-bar.js +171 -0
  346. package/dist/collection/components/af-tab-bar/af-tab-bar.js.map +1 -0
  347. package/dist/collection/components/af-tag/af-tag.css +92 -0
  348. package/dist/collection/components/af-tag/af-tag.js +126 -0
  349. package/dist/collection/components/af-tag/af-tag.js.map +1 -0
  350. package/dist/collection/components/af-testimonial/af-testimonial.css +30 -46
  351. package/dist/collection/components/af-testimonial/af-testimonial.js +118 -1
  352. package/dist/collection/components/af-testimonial/af-testimonial.js.map +1 -1
  353. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.css +6 -66
  354. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +48 -13
  355. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js.map +1 -1
  356. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.css +9 -16
  357. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
  358. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js.map +1 -1
  359. package/dist/collection/components/af-text/af-text.css +13 -36
  360. package/dist/collection/components/af-text/af-text.js +10 -28
  361. package/dist/collection/components/af-text/af-text.js.map +1 -1
  362. package/dist/collection/components/af-text-image/af-text-image.css +228 -0
  363. package/dist/collection/components/af-text-image/af-text-image.js +173 -0
  364. package/dist/collection/components/af-text-image/af-text-image.js.map +1 -0
  365. package/dist/collection/components/af-text-image-nest/af-text-image-nest.css +110 -0
  366. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +71 -0
  367. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js.map +1 -0
  368. package/dist/collection/components/af-textarea/af-textarea.css +175 -0
  369. package/dist/collection/components/af-textarea/af-textarea.js +443 -0
  370. package/dist/collection/components/af-textarea/af-textarea.js.map +1 -0
  371. package/dist/collection/components/af-typography-lockup/af-typography-lockup.css +126 -40
  372. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +5 -5
  373. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +1 -1
  374. package/dist/collection/components/af-video-container/af-video-container.css +102 -0
  375. package/dist/collection/components/af-video-container/af-video-container.js +142 -0
  376. package/dist/collection/components/af-video-container/af-video-container.js.map +1 -0
  377. package/dist/collection/components.js +11 -0
  378. package/dist/collection/components.js.map +1 -1
  379. package/dist/components/af-aspect-ratio.js +1 -1
  380. package/dist/components/af-button-group.js +1 -1
  381. package/dist/components/af-button.js +1 -1
  382. package/dist/components/af-card.js +1 -39
  383. package/dist/components/af-card.js.map +1 -1
  384. package/dist/components/{af-cta-section.d.ts → af-checkbox.d.ts} +4 -4
  385. package/dist/components/af-checkbox.js +9 -0
  386. package/dist/components/af-checkbox.js.map +1 -0
  387. package/dist/components/af-client-carousel.js +6 -9
  388. package/dist/components/af-client-carousel.js.map +1 -1
  389. package/dist/components/af-color-swatch.js +1 -1
  390. package/dist/components/af-contact-item.js +2 -2
  391. package/dist/components/af-container.js +1 -1
  392. package/dist/components/af-feature-accordion.js +4 -4
  393. package/dist/components/af-feature-accordion.js.map +1 -1
  394. package/dist/components/af-feature-card.d.ts +11 -0
  395. package/dist/components/af-feature-card.js +9 -0
  396. package/dist/components/af-feature-card.js.map +1 -0
  397. package/dist/components/af-feature-grid.d.ts +11 -0
  398. package/dist/components/af-feature-grid.js +124 -0
  399. package/dist/components/af-feature-grid.js.map +1 -0
  400. package/dist/components/af-fieldset.d.ts +11 -0
  401. package/dist/components/af-fieldset.js +9 -0
  402. package/dist/components/af-fieldset.js.map +1 -0
  403. package/dist/components/af-footer-column.js +2 -2
  404. package/dist/components/af-footer-link.js +2 -2
  405. package/dist/components/af-footer.js +2 -2
  406. package/dist/components/af-grid-callout.d.ts +11 -0
  407. package/dist/components/af-grid-callout.js +82 -0
  408. package/dist/components/af-grid-callout.js.map +1 -0
  409. package/dist/components/af-heading.js +1 -1
  410. package/dist/components/af-hero-section.js +25 -9
  411. package/dist/components/af-hero-section.js.map +1 -1
  412. package/dist/components/af-icon-box.d.ts +11 -0
  413. package/dist/components/af-icon-box.js +9 -0
  414. package/dist/components/af-icon-box.js.map +1 -0
  415. package/dist/components/af-icon-button.js +1 -1
  416. package/dist/components/af-icon-text.d.ts +11 -0
  417. package/dist/components/af-icon-text.js +78 -0
  418. package/dist/components/af-icon-text.js.map +1 -0
  419. package/dist/components/af-icon.d.ts +11 -0
  420. package/dist/components/af-icon.js +9 -0
  421. package/dist/components/af-icon.js.map +1 -0
  422. package/dist/components/af-illustrated-card.d.ts +11 -0
  423. package/dist/components/af-illustrated-card.js +9 -0
  424. package/dist/components/af-illustrated-card.js.map +1 -0
  425. package/dist/components/af-image.d.ts +11 -0
  426. package/dist/components/af-image.js +9 -0
  427. package/dist/components/af-image.js.map +1 -0
  428. package/dist/components/af-in-page-banner.d.ts +11 -0
  429. package/dist/components/af-in-page-banner.js +82 -0
  430. package/dist/components/af-in-page-banner.js.map +1 -0
  431. package/dist/components/af-input.d.ts +11 -0
  432. package/dist/components/af-input.js +9 -0
  433. package/dist/components/af-input.js.map +1 -0
  434. package/dist/components/af-logo-well.js +3 -3
  435. package/dist/components/af-logo-well.js.map +1 -1
  436. package/dist/components/af-logo.js +1 -1
  437. package/dist/components/af-nav-card.d.ts +11 -0
  438. package/dist/components/af-nav-card.js +63 -0
  439. package/dist/components/af-nav-card.js.map +1 -0
  440. package/dist/components/af-nav-item.js +1 -1
  441. package/dist/components/af-nav-menu-nest.d.ts +11 -0
  442. package/dist/components/af-nav-menu-nest.js +67 -0
  443. package/dist/components/af-nav-menu-nest.js.map +1 -0
  444. package/dist/components/af-nav-menu.d.ts +11 -0
  445. package/dist/components/af-nav-menu.js +66 -0
  446. package/dist/components/af-nav-menu.js.map +1 -0
  447. package/dist/components/af-navbar.js +1 -1
  448. package/dist/components/af-number-badge.d.ts +11 -0
  449. package/dist/components/af-number-badge.js +66 -0
  450. package/dist/components/af-number-badge.js.map +1 -0
  451. package/dist/components/af-progress-line.d.ts +11 -0
  452. package/dist/components/af-progress-line.js +9 -0
  453. package/dist/components/af-progress-line.js.map +1 -0
  454. package/dist/components/af-radio.d.ts +11 -0
  455. package/dist/components/af-radio.js +9 -0
  456. package/dist/components/af-radio.js.map +1 -0
  457. package/dist/components/af-section.js +8 -8
  458. package/dist/components/af-section.js.map +1 -1
  459. package/dist/components/af-social-link.js +2 -2
  460. package/dist/components/af-split-section.d.ts +11 -0
  461. package/dist/components/af-split-section.js +71 -0
  462. package/dist/components/af-split-section.js.map +1 -0
  463. package/dist/components/af-switch.d.ts +11 -0
  464. package/dist/components/af-switch.js +9 -0
  465. package/dist/components/af-switch.js.map +1 -0
  466. package/dist/components/af-tab-bar.d.ts +11 -0
  467. package/dist/components/af-tab-bar.js +9 -0
  468. package/dist/components/af-tab-bar.js.map +1 -0
  469. package/dist/components/af-tab.d.ts +11 -0
  470. package/dist/components/af-tab.js +9 -0
  471. package/dist/components/af-tab.js.map +1 -0
  472. package/dist/components/af-tag.d.ts +11 -0
  473. package/dist/components/af-tag.js +9 -0
  474. package/dist/components/af-tag.js.map +1 -0
  475. package/dist/components/af-testimonial-carousel.js +35 -17
  476. package/dist/components/af-testimonial-carousel.js.map +1 -1
  477. package/dist/components/af-testimonial-stat.js +16 -4
  478. package/dist/components/af-testimonial-stat.js.map +1 -1
  479. package/dist/components/af-testimonial.js +56 -5
  480. package/dist/components/af-testimonial.js.map +1 -1
  481. package/dist/components/af-text-image-nest.d.ts +11 -0
  482. package/dist/components/af-text-image-nest.js +51 -0
  483. package/dist/components/af-text-image-nest.js.map +1 -0
  484. package/dist/components/af-text-image.d.ts +11 -0
  485. package/dist/components/af-text-image.js +94 -0
  486. package/dist/components/af-text-image.js.map +1 -0
  487. package/dist/components/af-text.js +1 -1
  488. package/dist/components/af-textarea.d.ts +11 -0
  489. package/dist/components/af-textarea.js +9 -0
  490. package/dist/components/af-textarea.js.map +1 -0
  491. package/dist/components/af-typography-lockup.js +1 -1
  492. package/dist/components/af-video-container.d.ts +11 -0
  493. package/dist/components/af-video-container.js +70 -0
  494. package/dist/components/af-video-container.js.map +1 -0
  495. package/dist/components/index.js +24 -13
  496. package/dist/components/index.js.map +1 -1
  497. package/dist/components/{p-BBivIwbE.js → p-6uEhsUaO.js} +3 -3
  498. package/dist/components/{p-BBivIwbE.js.map → p-6uEhsUaO.js.map} +1 -1
  499. package/dist/components/{p-PLXzXWgX.js → p-BHKA-yEm.js} +4 -4
  500. package/dist/components/p-BHKA-yEm.js.map +1 -0
  501. package/dist/components/p-BMp8QbY-.js +68 -0
  502. package/dist/components/p-BMp8QbY-.js.map +1 -0
  503. package/dist/components/p-BRN73McC.js +59 -0
  504. package/dist/components/p-BRN73McC.js.map +1 -0
  505. package/dist/components/p-BRsO61_R.js +58 -0
  506. package/dist/components/p-BRsO61_R.js.map +1 -0
  507. package/dist/components/p-BXZ7aJQf.js +372 -0
  508. package/dist/components/p-BXZ7aJQf.js.map +1 -0
  509. package/dist/components/p-Bh4YP9vE.js +74 -0
  510. package/dist/components/p-Bh4YP9vE.js.map +1 -0
  511. package/dist/components/p-Br0VERLB.js +81 -0
  512. package/dist/components/p-Br0VERLB.js.map +1 -0
  513. package/dist/components/{p-DBFWSHR9.js → p-ByHIHg3l.js} +4 -4
  514. package/dist/components/{p-DBFWSHR9.js.map → p-ByHIHg3l.js.map} +1 -1
  515. package/dist/components/p-C0f6y_zg.js +94 -0
  516. package/dist/components/p-C0f6y_zg.js.map +1 -0
  517. package/dist/components/p-CCAq3Zj6.js +68 -0
  518. package/dist/components/p-CCAq3Zj6.js.map +1 -0
  519. package/dist/components/p-CZyCImor.js +127 -0
  520. package/dist/components/p-CZyCImor.js.map +1 -0
  521. package/dist/components/p-C_M8AOaj.js +65 -0
  522. package/dist/components/p-C_M8AOaj.js.map +1 -0
  523. package/dist/components/p-Cqp0DdgH.js +58 -0
  524. package/dist/components/p-Cqp0DdgH.js.map +1 -0
  525. package/dist/components/{p-Dt4Fpr3O.js → p-CxngDK-N.js} +122 -8
  526. package/dist/components/p-CxngDK-N.js.map +1 -0
  527. package/dist/components/{p-BkEmrXbw.js → p-D3UZ60qM.js} +3 -3
  528. package/dist/components/{p-BkEmrXbw.js.map → p-D3UZ60qM.js.map} +1 -1
  529. package/dist/components/p-D99aXp3U.js +35 -0
  530. package/dist/components/p-D99aXp3U.js.map +1 -0
  531. package/dist/components/p-DBnL9UHx.js +91 -0
  532. package/dist/components/p-DBnL9UHx.js.map +1 -0
  533. package/dist/components/p-DOkvrcIE.js +50 -0
  534. package/dist/components/p-DOkvrcIE.js.map +1 -0
  535. package/dist/components/p-DW5DrJlQ.js +70 -0
  536. package/dist/components/p-DW5DrJlQ.js.map +1 -0
  537. package/dist/components/p-DZ-qivXD.js +55 -0
  538. package/dist/components/p-DZ-qivXD.js.map +1 -0
  539. package/dist/components/p-DhdRcSve.js +89 -0
  540. package/dist/components/p-DhdRcSve.js.map +1 -0
  541. package/dist/components/p-Dvi1lz3x.js +53 -0
  542. package/dist/components/p-Dvi1lz3x.js.map +1 -0
  543. package/dist/components/p-DzkSL2bi.js +141 -0
  544. package/dist/components/p-DzkSL2bi.js.map +1 -0
  545. package/dist/components/p-JepBVz99.js +71 -0
  546. package/dist/components/p-JepBVz99.js.map +1 -0
  547. package/dist/components/p-_bQXTXUb.js +98 -0
  548. package/dist/components/p-_bQXTXUb.js.map +1 -0
  549. package/dist/components/p-l95vl6T1.js +108 -0
  550. package/dist/components/p-l95vl6T1.js.map +1 -0
  551. package/dist/components/p-wwnR-hlX.js +52 -0
  552. package/dist/components/p-wwnR-hlX.js.map +1 -0
  553. package/dist/components/p-xDRMXxWJ.js +37 -0
  554. package/dist/components/p-xDRMXxWJ.js.map +1 -0
  555. package/dist/esm/af-aspect-ratio.entry.js +2 -2
  556. package/dist/esm/af-aspect-ratio.entry.js.map +1 -1
  557. package/dist/esm/af-button-group.entry.js +2 -2
  558. package/dist/esm/af-button.entry.js +25 -12
  559. package/dist/esm/af-button.entry.js.map +1 -1
  560. package/dist/esm/af-card.entry.js +17 -7
  561. package/dist/esm/af-card.entry.js.map +1 -1
  562. package/dist/esm/af-checkbox.entry.js +56 -0
  563. package/dist/esm/af-checkbox.entry.js.map +1 -0
  564. package/dist/esm/af-client-carousel.entry.js +5 -7
  565. package/dist/esm/af-client-carousel.entry.js.map +1 -1
  566. package/dist/esm/af-color-swatch.entry.js +1 -1
  567. package/dist/esm/af-contact-item.entry.js +2 -2
  568. package/dist/esm/af-container.entry.js +1 -1
  569. package/dist/esm/af-feature-accordion.entry.js +4 -4
  570. package/dist/esm/af-feature-accordion.entry.js.map +1 -1
  571. package/dist/esm/af-feature-card.entry.js +57 -0
  572. package/dist/esm/af-feature-card.entry.js.map +1 -0
  573. package/dist/esm/af-feature-grid.entry.js +91 -0
  574. package/dist/esm/af-feature-grid.entry.js.map +1 -0
  575. package/dist/esm/af-fieldset.entry.js +35 -0
  576. package/dist/esm/af-fieldset.entry.js.map +1 -0
  577. package/dist/esm/af-footer-column.entry.js +2 -2
  578. package/dist/esm/af-footer-link.entry.js +2 -2
  579. package/dist/esm/af-footer.entry.js +2 -2
  580. package/dist/esm/af-grid-callout.entry.js +49 -0
  581. package/dist/esm/af-grid-callout.entry.js.map +1 -0
  582. package/dist/esm/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.js.map +1 -1
  583. package/dist/esm/af-heading_5.entry.js +67 -27
  584. package/dist/esm/af-hero-section.entry.js +11 -5
  585. package/dist/esm/af-hero-section.entry.js.map +1 -1
  586. package/dist/esm/af-icon-box.entry.js +28 -0
  587. package/dist/esm/af-icon-box.entry.js.map +1 -0
  588. package/dist/esm/af-icon-button.entry.js +6 -3
  589. package/dist/esm/af-icon-button.entry.js.map +1 -1
  590. package/dist/esm/af-icon-text.entry.js +34 -0
  591. package/dist/esm/af-icon-text.entry.js.map +1 -0
  592. package/dist/esm/af-icon.entry.js +349 -0
  593. package/dist/esm/af-icon.entry.js.map +1 -0
  594. package/dist/esm/af-illustrated-card.entry.js +34 -0
  595. package/dist/esm/af-illustrated-card.entry.js.map +1 -0
  596. package/dist/esm/af-image.entry.js +16 -0
  597. package/dist/esm/af-image.entry.js.map +1 -0
  598. package/dist/esm/af-in-page-banner.entry.js +45 -0
  599. package/dist/esm/af-in-page-banner.entry.js.map +1 -0
  600. package/dist/esm/af-input.entry.js +102 -0
  601. package/dist/esm/af-input.entry.js.map +1 -0
  602. package/dist/esm/af-logo-well.entry.js +3 -3
  603. package/dist/esm/af-logo-well.entry.js.map +1 -1
  604. package/dist/esm/af-nav-card.entry.js +35 -0
  605. package/dist/esm/af-nav-card.entry.js.map +1 -0
  606. package/dist/esm/af-nav-menu-nest.entry.js +41 -0
  607. package/dist/esm/af-nav-menu-nest.entry.js.map +1 -0
  608. package/dist/esm/af-nav-menu.entry.js +39 -0
  609. package/dist/esm/af-nav-menu.entry.js.map +1 -0
  610. package/dist/esm/af-number-badge.entry.js +40 -0
  611. package/dist/esm/af-number-badge.entry.js.map +1 -0
  612. package/dist/esm/af-progress-line.entry.js +31 -0
  613. package/dist/esm/af-progress-line.entry.js.map +1 -0
  614. package/dist/esm/af-radio.entry.js +41 -0
  615. package/dist/esm/af-radio.entry.js.map +1 -0
  616. package/dist/esm/af-section.entry.js +6 -6
  617. package/dist/esm/af-section.entry.js.map +1 -1
  618. package/dist/esm/af-social-link.entry.js +2 -2
  619. package/dist/esm/af-split-section.entry.js +39 -0
  620. package/dist/esm/af-split-section.entry.js.map +1 -0
  621. package/dist/esm/af-switch.entry.js +46 -0
  622. package/dist/esm/af-switch.entry.js.map +1 -0
  623. package/dist/esm/af-tab-bar.entry.js +86 -0
  624. package/dist/esm/af-tab-bar.entry.js.map +1 -0
  625. package/dist/esm/af-tab.entry.js +62 -0
  626. package/dist/esm/af-tab.entry.js.map +1 -0
  627. package/dist/esm/af-tag.entry.js +35 -0
  628. package/dist/esm/af-tag.entry.js.map +1 -0
  629. package/dist/esm/af-testimonial-carousel.entry.js +27 -15
  630. package/dist/esm/af-testimonial-carousel.entry.js.map +1 -1
  631. package/dist/esm/af-testimonial-stat.entry.js +3 -3
  632. package/dist/esm/af-testimonial-stat.entry.js.map +1 -1
  633. package/dist/esm/af-testimonial.entry.js +27 -3
  634. package/dist/esm/af-testimonial.entry.js.map +1 -1
  635. package/dist/esm/af-text-image-nest.entry.js +28 -0
  636. package/dist/esm/af-text-image-nest.entry.js.map +1 -0
  637. package/dist/esm/af-text-image.entry.js +61 -0
  638. package/dist/esm/af-text-image.entry.js.map +1 -0
  639. package/dist/esm/af-textarea.entry.js +91 -0
  640. package/dist/esm/af-textarea.entry.js.map +1 -0
  641. package/dist/esm/af-typography-lockup.entry.js +7 -7
  642. package/dist/esm/af-typography-lockup.entry.js.map +1 -1
  643. package/dist/esm/af-video-container.entry.js +33 -0
  644. package/dist/esm/af-video-container.entry.js.map +1 -0
  645. package/dist/esm/affinda.js +3 -3
  646. package/dist/esm/{index-DI7b0bCy.js → index-BmU_CFQ4.js} +130 -7
  647. package/dist/esm/index-BmU_CFQ4.js.map +1 -0
  648. package/dist/esm/index.js +12 -1
  649. package/dist/esm/index.js.map +1 -1
  650. package/dist/esm/loader.js +3 -3
  651. package/dist/types/components/af-button/af-button.d.ts +22 -9
  652. package/dist/types/components/af-card/af-card.d.ts +15 -8
  653. package/dist/types/components/af-checkbox/af-checkbox.d.ts +40 -0
  654. package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +10 -5
  655. package/dist/types/components/af-feature-accordion/af-feature-accordion.d.ts +13 -3
  656. package/dist/types/components/af-feature-card/af-feature-card.d.ts +49 -0
  657. package/dist/types/components/af-feature-grid/af-feature-grid.d.ts +32 -0
  658. package/dist/types/components/af-fieldset/af-fieldset.d.ts +23 -0
  659. package/dist/types/components/af-grid-callout/af-grid-callout.d.ts +57 -0
  660. package/dist/types/components/af-heading/af-heading.d.ts +5 -2
  661. package/dist/types/components/af-hero-section/af-hero-section.d.ts +18 -3
  662. package/dist/types/components/af-icon/af-icon.d.ts +28 -0
  663. package/dist/types/components/af-icon-box/af-icon-box.d.ts +27 -0
  664. package/dist/types/components/af-icon-button/af-icon-button.d.ts +5 -2
  665. package/dist/types/components/af-icon-text/af-icon-text.d.ts +44 -0
  666. package/dist/types/components/af-illustrated-card/af-illustrated-card.d.ts +28 -0
  667. package/dist/types/components/af-image/af-image.d.ts +15 -0
  668. package/dist/types/components/af-in-page-banner/af-in-page-banner.d.ts +56 -0
  669. package/dist/types/components/af-input/af-input.d.ts +110 -0
  670. package/dist/types/components/af-logo/af-logo.d.ts +1 -6
  671. package/dist/types/components/af-nav-card/af-nav-card.d.ts +34 -0
  672. package/dist/types/components/af-nav-item/af-nav-item.d.ts +6 -0
  673. package/dist/types/components/af-nav-menu/af-nav-menu.d.ts +28 -0
  674. package/dist/types/components/af-nav-menu-nest/af-nav-menu-nest.d.ts +42 -0
  675. package/dist/types/components/af-navbar/af-navbar.d.ts +26 -1
  676. package/dist/types/components/af-number-badge/af-number-badge.d.ts +29 -0
  677. package/dist/types/components/af-progress-line/af-progress-line.d.ts +18 -0
  678. package/dist/types/components/af-radio/af-radio.d.ts +33 -0
  679. package/dist/types/components/af-section/af-section.d.ts +4 -3
  680. package/dist/types/components/af-split-section/af-split-section.d.ts +20 -0
  681. package/dist/types/components/af-switch/af-switch.d.ts +32 -0
  682. package/dist/types/components/af-tab/af-tab.d.ts +61 -0
  683. package/dist/types/components/af-tab-bar/af-tab-bar.d.ts +43 -0
  684. package/dist/types/components/af-tag/af-tag.d.ts +33 -0
  685. package/dist/types/components/af-testimonial/af-testimonial.d.ts +23 -0
  686. package/dist/types/components/af-testimonial-carousel/af-testimonial-carousel.d.ts +17 -0
  687. package/dist/types/components/af-text/af-text.d.ts +6 -3
  688. package/dist/types/components/af-text-image/af-text-image.d.ts +30 -0
  689. package/dist/types/components/af-text-image-nest/af-text-image-nest.d.ts +21 -0
  690. package/dist/types/components/af-textarea/af-textarea.d.ts +92 -0
  691. package/dist/types/components/af-video-container/af-video-container.d.ts +45 -0
  692. package/dist/types/components.d.ts +3395 -669
  693. package/package.json +8 -7
  694. package/dist/affinda/af-cta-section.entry.esm.js.map +0 -1
  695. package/dist/affinda/p-050f98cd.entry.js +0 -2
  696. package/dist/affinda/p-0eb8173d.entry.js +0 -2
  697. package/dist/affinda/p-1955dbad.entry.js +0 -2
  698. package/dist/affinda/p-1b18ab28.entry.js +0 -2
  699. package/dist/affinda/p-1b18ab28.entry.js.map +0 -1
  700. package/dist/affinda/p-1e3d40a0.entry.js +0 -2
  701. package/dist/affinda/p-1e3d40a0.entry.js.map +0 -1
  702. package/dist/affinda/p-350ac7a5.entry.js +0 -2
  703. package/dist/affinda/p-71e663b3.entry.js +0 -2
  704. package/dist/affinda/p-71e663b3.entry.js.map +0 -1
  705. package/dist/affinda/p-7b8c36e0.entry.js +0 -2
  706. package/dist/affinda/p-7b8c36e0.entry.js.map +0 -1
  707. package/dist/affinda/p-83b5d5ea.entry.js +0 -2
  708. package/dist/affinda/p-83b5d5ea.entry.js.map +0 -1
  709. package/dist/affinda/p-9071c2a7.entry.js +0 -2
  710. package/dist/affinda/p-954963fa.entry.js +0 -2
  711. package/dist/affinda/p-954963fa.entry.js.map +0 -1
  712. package/dist/affinda/p-DI7b0bCy.js +0 -3
  713. package/dist/affinda/p-DI7b0bCy.js.map +0 -1
  714. package/dist/affinda/p-b2fb60c9.entry.js +0 -2
  715. package/dist/affinda/p-b2fb60c9.entry.js.map +0 -1
  716. package/dist/affinda/p-d3b2ab0e.entry.js +0 -2
  717. package/dist/affinda/p-e1198ca3.entry.js +0 -2
  718. package/dist/affinda/p-e1198ca3.entry.js.map +0 -1
  719. package/dist/affinda/p-e3efc291.entry.js +0 -2
  720. package/dist/affinda/p-e3efc291.entry.js.map +0 -1
  721. package/dist/affinda/p-f692a7bd.entry.js +0 -2
  722. package/dist/affinda/p-f692a7bd.entry.js.map +0 -1
  723. package/dist/affinda/p-fc2cb8d1.entry.js +0 -2
  724. package/dist/cjs/af-cta-section.cjs.entry.js +0 -34
  725. package/dist/cjs/af-cta-section.entry.cjs.js.map +0 -1
  726. package/dist/cjs/index-DfEVhbS6.js.map +0 -1
  727. package/dist/collection/components/af-cta-section/af-cta-section.css +0 -175
  728. package/dist/collection/components/af-cta-section/af-cta-section.js.map +0 -1
  729. package/dist/components/af-cta-section.js +0 -62
  730. package/dist/components/af-cta-section.js.map +0 -1
  731. package/dist/components/p-BKGrl8ua.js +0 -77
  732. package/dist/components/p-BKGrl8ua.js.map +0 -1
  733. package/dist/components/p-BTEblSAo.js +0 -63
  734. package/dist/components/p-BTEblSAo.js.map +0 -1
  735. package/dist/components/p-BekWfVfB.js +0 -66
  736. package/dist/components/p-BekWfVfB.js.map +0 -1
  737. package/dist/components/p-Bg7dSc4D.js +0 -54
  738. package/dist/components/p-Bg7dSc4D.js.map +0 -1
  739. package/dist/components/p-CN_K2ni-.js +0 -45
  740. package/dist/components/p-CN_K2ni-.js.map +0 -1
  741. package/dist/components/p-CgnBqOVh.js +0 -50
  742. package/dist/components/p-CgnBqOVh.js.map +0 -1
  743. package/dist/components/p-DqOwXTsH.js +0 -68
  744. package/dist/components/p-DqOwXTsH.js.map +0 -1
  745. package/dist/components/p-Dt4Fpr3O.js.map +0 -1
  746. package/dist/components/p-LUt2VDjp.js +0 -68
  747. package/dist/components/p-LUt2VDjp.js.map +0 -1
  748. package/dist/components/p-PLXzXWgX.js.map +0 -1
  749. package/dist/esm/af-cta-section.entry.js +0 -32
  750. package/dist/esm/af-cta-section.entry.js.map +0 -1
  751. package/dist/esm/index-DI7b0bCy.js.map +0 -1
  752. package/dist/types/components/af-cta-section/af-cta-section.d.ts +0 -23
  753. /package/dist/affinda/{p-0eb8173d.entry.js.map → p-1d9e532f.entry.js.map} +0 -0
  754. /package/dist/affinda/{p-fb4e3a8d.entry.js.map → p-31d4c1a4.entry.js.map} +0 -0
  755. /package/dist/affinda/{p-1955dbad.entry.js.map → p-53ae16fe.entry.js.map} +0 -0
  756. /package/dist/affinda/{p-ec7721cc.entry.js.map → p-72f02343.entry.js.map} +0 -0
  757. /package/dist/affinda/{p-bd30e86a.entry.js.map → p-96eac3af.entry.js.map} +0 -0
  758. /package/dist/affinda/{p-806d129e.entry.js.map → p-acbbe39a.entry.js.map} +0 -0
  759. /package/dist/affinda/{p-3a9646e6.entry.js.map → p-c11088fa.entry.js.map} +0 -0
  760. /package/dist/affinda/{p-f8ac0120.entry.js.map → p-e5af21c2.entry.js.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DfEVhbS6.js');
3
+ var index = require('./index-ybEiHT0b.js');
4
4
 
5
- const afFeatureAccordionCss = ".sc-af-feature-accordion-h{display:block;width:100%}.feature-accordion.sc-af-feature-accordion{background-color:var(--colour-background-level1, #E8EFED);padding:80px 0}.feature-accordion__container.sc-af-feature-accordion{max-width:1280px;margin:0 auto;padding:0 40px}.feature-accordion__heading.sc-af-feature-accordion{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:400;font-size:clamp(36px, 5vw, 52px);line-height:1.05;letter-spacing:-0.025em;color:var(--colour-brand-inkwell, #14343B);margin:0 0 56px 0}.feature-accordion__content.sc-af-feature-accordion{display:flex;gap:48px}.feature-accordion__list.sc-af-feature-accordion{display:flex;flex-direction:column;flex:1;min-width:0}.accordion-item.sc-af-feature-accordion{border-bottom:1px solid rgba(20, 52, 59, 0.12)}.accordion-item.sc-af-feature-accordion:first-child{border-top:1px solid rgba(20, 52, 59, 0.12)}.accordion-item__header.sc-af-feature-accordion{display:flex;align-items:center;justify-content:space-between;width:100%;padding:24px 0;background:none;border:none;cursor:pointer;text-align:left;gap:16px}.accordion-item__header.sc-af-feature-accordion:hover .accordion-item__title.sc-af-feature-accordion{color:var(--colour-brand-inkwell, #14343B)}.accordion-item__title.sc-af-feature-accordion{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:500;font-size:22px;line-height:1.25;color:var(--colour-brand-inkwell, #14343B);margin:0;flex:1;transition:color 0.2s ease}.accordion-item.sc-af-feature-accordion:not(.accordion-item--expanded) .accordion-item__title.sc-af-feature-accordion{color:rgba(20, 52, 59, 0.7)}.accordion-item__icon.sc-af-feature-accordion{flex-shrink:0;width:24px;height:24px;color:var(--colour-brand-inkwell, #14343B);transition:transform 0.2s ease}.accordion-item.sc-af-feature-accordion:not(.accordion-item--expanded) .accordion-item__icon.sc-af-feature-accordion{color:rgba(20, 52, 59, 0.5)}.accordion-item__content.sc-af-feature-accordion{overflow:hidden;transition:max-height 0.3s ease, opacity 0.3s ease}.accordion-item__description.sc-af-feature-accordion{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:400;font-size:17px;line-height:1.6;color:rgba(20, 52, 59, 0.85);margin:0 0 20px 0;padding-right:40px}.accordion-item__timer-track.sc-af-feature-accordion{height:3px;background-color:rgba(20, 52, 59, 0.1);border-radius:2px;margin-bottom:8px;overflow:hidden;display:flex;justify-content:flex-start}.accordion-item__timer-progress.sc-af-feature-accordion{height:100%;background-color:var(--colour-brand-teal, #00B5AD);border-radius:2px;transition:width 0.05s linear}.feature-accordion__image-container.sc-af-feature-accordion{display:flex;align-items:center;justify-content:center;background-color:#B8C9C5;border-radius:20px;overflow:hidden;flex:1;min-width:0}.feature-accordion__image-wrapper.sc-af-feature-accordion{display:flex;align-items:center;justify-content:center;width:100%;padding:32px}.feature-accordion__image.sc-af-feature-accordion{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:12px;box-shadow:0 8px 32px rgba(0, 0, 0, 0.12)}.feature-accordion__image-placeholder.sc-af-feature-accordion{width:100%;height:100%;display:flex;align-items:center;justify-content:center}@media (max-width: 1024px){.feature-accordion.sc-af-feature-accordion{padding:60px 0}.feature-accordion__container.sc-af-feature-accordion{padding:0 24px}.feature-accordion__content.sc-af-feature-accordion{gap:32px}.feature-accordion__heading.sc-af-feature-accordion{margin-bottom:40px}.accordion-item__title.sc-af-feature-accordion{font-size:20px}}@media (max-width: 768px){.feature-accordion.sc-af-feature-accordion{padding:48px 0}.feature-accordion__content.sc-af-feature-accordion{flex-direction:column;gap:32px}.feature-accordion__image-container.sc-af-feature-accordion{order:-1;min-height:280px;flex:none}.feature-accordion__list.sc-af-feature-accordion{flex:none}.accordion-item__title.sc-af-feature-accordion{font-size:18px}.accordion-item__description.sc-af-feature-accordion{font-size:15px;padding-right:0}}";
5
+ const afFeatureAccordionCss = ".sc-af-feature-accordion-h{display:block;width:100%}.feature-accordion.sc-af-feature-accordion{padding:0 24px;--_heading-color:var(--af-typography-heading-primary, var(--colour-brand-inkwell, #14343b));--_body-color:var(--af-typography-body-default, var(--colour-inkwell-400, #2b484f));--_border-color:var(--af-background-border-default, rgba(20, 52, 59, 0.12));--_level-1-bg:var(--af-background-level-1, var(--colour-mistgreen-300, #dde6e3))}.feature-accordion__heading.sc-af-feature-accordion{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:400;font-size:clamp(36px, 5vw, 52px);line-height:1.05;letter-spacing:-0.025em;color:var(--_heading-color);margin:0 0 56px 0}.feature-accordion__content.sc-af-feature-accordion{display:flex;gap:48px}.feature-accordion__list.sc-af-feature-accordion{display:flex;flex-direction:column;flex:1;min-width:0}.accordion-item.sc-af-feature-accordion{border-bottom:1px solid var(--_border-color)}.accordion-item.sc-af-feature-accordion:first-child{border-top:1px solid var(--_border-color)}.accordion-item__header.sc-af-feature-accordion{display:flex;align-items:center;justify-content:space-between;width:100%;padding:24px 0;background:none;border:none;cursor:pointer;text-align:left;gap:16px}.accordion-item__header.sc-af-feature-accordion:hover .accordion-item__title.sc-af-feature-accordion{color:var(--_heading-color)}.accordion-item__title.sc-af-feature-accordion{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:500;font-size:22px;line-height:1.25;color:var(--_heading-color);margin:0;flex:1;transition:color 0.2s ease}.accordion-item.sc-af-feature-accordion:not(.accordion-item--expanded) .accordion-item__title.sc-af-feature-accordion{opacity:0.7}.accordion-item__icon.sc-af-feature-accordion{flex-shrink:0;width:24px;height:24px;color:var(--_heading-color);transition:transform 0.2s ease}.accordion-item.sc-af-feature-accordion:not(.accordion-item--expanded) .accordion-item__icon.sc-af-feature-accordion{opacity:0.5}.accordion-item__content.sc-af-feature-accordion{overflow:hidden;transition:max-height 0.3s ease, opacity 0.3s ease}.accordion-item__description.sc-af-feature-accordion{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:400;font-size:17px;line-height:1.6;color:var(--_body-color);margin:0 0 20px 0;padding-right:40px;opacity:0.85}.accordion-item__timer-track.sc-af-feature-accordion{height:3px;background-color:var(--_border-color);border-radius:2px;margin-bottom:8px;overflow:hidden;display:flex;justify-content:flex-start}.accordion-item__timer-progress.sc-af-feature-accordion{height:100%;background-color:var(--colour-brand-ice, #a6fffb);border-radius:2px;transition:width 0.05s linear}.feature-accordion__image-container.sc-af-feature-accordion{display:flex;align-items:center;justify-content:center;background-color:var(--_level-1-bg);border-radius:20px;overflow:hidden;flex:1;min-width:0}.feature-accordion__image-wrapper.sc-af-feature-accordion{display:flex;align-items:center;justify-content:center;width:100%;padding:32px}.feature-accordion__image.sc-af-feature-accordion{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:12px;box-shadow:0 8px 32px rgba(0, 0, 0, 0.12)}.feature-accordion__image-placeholder.sc-af-feature-accordion{width:100%;height:100%;display:flex;align-items:center;justify-content:center}@media (max-width: 1024px){.feature-accordion__content.sc-af-feature-accordion{gap:32px}.feature-accordion__heading.sc-af-feature-accordion{margin-bottom:40px}.accordion-item__title.sc-af-feature-accordion{font-size:20px}}@media (max-width: 768px){.feature-accordion__content.sc-af-feature-accordion{flex-direction:column;gap:32px}.feature-accordion__image-container.sc-af-feature-accordion{order:-1;min-height:280px;flex:none}.feature-accordion__list.sc-af-feature-accordion{flex:none}.accordion-item__title.sc-af-feature-accordion{font-size:18px}.accordion-item__description.sc-af-feature-accordion{font-size:15px;padding-right:0}}";
6
6
 
7
7
  const AfFeatureAccordion = class {
8
8
  constructor(hostRef) {
@@ -89,13 +89,13 @@ const AfFeatureAccordion = class {
89
89
  render() {
90
90
  const items = this.getItems();
91
91
  const currentItem = items[this.expandedIndex];
92
- return (index.h(index.Host, { key: 'aa44ec62bc38804560dc42a04c2716cdc64e405e' }, index.h("div", { key: 'a1501fda9da01a893a99e155edf0eb59dc1eca93', class: "feature-accordion" }, index.h("div", { key: '17485346b1e80bc08bdcb6a2bcc04e9866421dee', class: "feature-accordion__container" }, index.h("h2", { key: '2943cd58657e62eb90c91543ee0e210644eb035e', class: "feature-accordion__heading" }, this.heading), index.h("div", { key: 'f4491b7072d36a032b742262dd0e699ae7836e52', class: "feature-accordion__content" }, index.h("div", { key: '553cec48f7a089d56522231f29c931f2e3e861c2', class: "feature-accordion__list" }, items.map((item, index$1) => (index.h("div", { class: {
92
+ return (index.h(index.Host, { key: '8285d5116d64b9f02d758fa8e0ecb8c4129636d0' }, index.h("div", { key: '53894f00e6ba9a9900fa63fe199e4448d21e8886', class: "feature-accordion" }, index.h("div", { key: 'e50c879453d39367bd88e02cc5756a59292b7b71', class: "feature-accordion__container" }, index.h("h2", { key: 'd2c797f6d1feddafd01b2b933e73e3d71063ae1d', class: "feature-accordion__heading" }, this.heading), index.h("div", { key: '48ba662a3cd7ab981fd947c4063f81e6ef94773f', class: "feature-accordion__content" }, index.h("div", { key: '05b190936f6c4a9e849de1b724a577dbf33aba12', class: "feature-accordion__list" }, items.map((item, index$1) => (index.h("div", { class: {
93
93
  'accordion-item': true,
94
94
  'accordion-item--expanded': this.expandedIndex === index$1
95
95
  }, key: index$1 }, index.h("button", { class: "accordion-item__header", onClick: () => this.handleItemClick(index$1), "aria-expanded": this.expandedIndex === index$1 ? 'true' : 'false' }, index.h("h4", { class: "accordion-item__title" }, item.title), index.h("span", { class: "accordion-item__icon" }, this.expandedIndex === index$1 ? (index.h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, index.h("path", { d: "M5 12H19", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }))) : (index.h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, index.h("path", { d: "M12 5V19M5 12H19", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }))))), index.h("div", { class: "accordion-item__content", style: {
96
96
  maxHeight: this.expandedIndex === index$1 ? '200px' : '0',
97
97
  opacity: this.expandedIndex === index$1 ? '1' : '0'
98
- } }, index.h("p", { class: "accordion-item__description" }, item.description), this.expandedIndex === index$1 && this.autoCycle && (index.h("div", { class: "accordion-item__timer-track" }, index.h("div", { class: "accordion-item__timer-progress", style: { width: `${this.timerProgress}%` } })))))))), index.h("div", { key: '6f138ad4516c470f4772e36b6cae5c4b55aea44e', class: "feature-accordion__image-container" }, index.h("div", { key: 'e0ddfa8fe67626d3d35fd00b4d18df5276a3ef47', class: "feature-accordion__image-wrapper" }, currentItem?.imageUrl && (index.h("img", { key: 'b0979552365a6dc833b4e9f82093896d4f9c60d4', src: currentItem.imageUrl, alt: currentItem.imageAlt || currentItem.title, class: "feature-accordion__image" })), !currentItem?.imageUrl && (index.h("div", { key: '9bfe132fc469c3d582b13fc0869bdbc3bf4617f8', class: "feature-accordion__image-placeholder" }, index.h("slot", { key: 'c7b885939fee402ffb093376fa344f3c2b31997a', name: "image" }))))))))));
98
+ } }, index.h("p", { class: "accordion-item__description" }, item.description), this.expandedIndex === index$1 && this.autoCycle && (index.h("div", { class: "accordion-item__timer-track" }, index.h("div", { class: "accordion-item__timer-progress", style: { width: `${this.timerProgress}%` } })))))))), index.h("div", { key: '34a3497894ab6aa63acafa62cc8a7029848731e8', class: "feature-accordion__image-container" }, index.h("div", { key: '3a60c7ffb55e49194d2d3dfb9a324382f1bd2e6a', class: "feature-accordion__image-wrapper" }, currentItem?.imageUrl && (index.h("img", { key: '1120770253d6442130baea4e74deae1694a36bf7', src: currentItem.imageUrl, alt: currentItem.imageAlt || currentItem.title, class: "feature-accordion__image" })), !currentItem?.imageUrl && (index.h("div", { key: '50a4b4201d0141f018d7e9ce2e03e2cfc090e2fc', class: "feature-accordion__image-placeholder" }, index.h("slot", { key: '2d029a56bc680d3f40be5c18841a5477de9c3862', name: "image" }))))))))));
99
99
  }
100
100
  get el() { return index.getElement(this); }
101
101
  static get watchers() { return {
@@ -1 +1 @@
1
- {"version":3,"file":"af-feature-accordion.entry.cjs.js","sources":["src/components/af-feature-accordion/af-feature-accordion.css?tag=af-feature-accordion&encapsulation=scoped","src/components/af-feature-accordion/af-feature-accordion.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.feature-accordion {\n background-color: var(--colour-background-level1, #E8EFED);\n padding: 80px 0;\n}\n\n.feature-accordion__container {\n max-width: 1280px;\n margin: 0 auto;\n padding: 0 40px;\n}\n\n.feature-accordion__heading {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 400;\n font-size: clamp(36px, 5vw, 52px);\n line-height: 1.05;\n letter-spacing: -0.025em;\n color: var(--colour-brand-inkwell, #14343B);\n margin: 0 0 56px 0;\n}\n\n.feature-accordion__content {\n display: flex;\n gap: 48px;\n}\n\n/* Accordion List */\n.feature-accordion__list {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n}\n\n/* Accordion Item */\n.accordion-item {\n border-bottom: 1px solid rgba(20, 52, 59, 0.12);\n}\n\n.accordion-item:first-child {\n border-top: 1px solid rgba(20, 52, 59, 0.12);\n}\n\n.accordion-item__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 24px 0;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n gap: 16px;\n}\n\n.accordion-item__header:hover .accordion-item__title {\n color: var(--colour-brand-inkwell, #14343B);\n}\n\n.accordion-item__title {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 500;\n font-size: 22px;\n line-height: 1.25;\n color: var(--colour-brand-inkwell, #14343B);\n margin: 0;\n flex: 1;\n transition: color 0.2s ease;\n}\n\n/* Collapsed items have lighter text */\n.accordion-item:not(.accordion-item--expanded) .accordion-item__title {\n color: rgba(20, 52, 59, 0.7);\n}\n\n.accordion-item__icon {\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n color: var(--colour-brand-inkwell, #14343B);\n transition: transform 0.2s ease;\n}\n\n.accordion-item:not(.accordion-item--expanded) .accordion-item__icon {\n color: rgba(20, 52, 59, 0.5);\n}\n\n.accordion-item__content {\n overflow: hidden;\n transition: max-height 0.3s ease, opacity 0.3s ease;\n}\n\n.accordion-item__description {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 400;\n font-size: 17px;\n line-height: 1.6;\n color: rgba(20, 52, 59, 0.85);\n margin: 0 0 20px 0;\n padding-right: 40px;\n}\n\n/* Timer track - the progress bar at the bottom of expanded items */\n.accordion-item__timer-track {\n height: 3px;\n background-color: rgba(20, 52, 59, 0.1);\n border-radius: 2px;\n margin-bottom: 8px;\n overflow: hidden;\n /* Right-align the progress bar so it drains from right to left */\n display: flex;\n justify-content: flex-start;\n}\n\n.accordion-item__timer-progress {\n height: 100%;\n background-color: var(--colour-brand-teal, #00B5AD);\n border-radius: 2px;\n /* Smooth animation for progress */\n transition: width 0.05s linear;\n}\n\n/* Image Container - stretches full height to align with accordion */\n.feature-accordion__image-container {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: #B8C9C5;\n border-radius: 20px;\n overflow: hidden;\n /* Take up remaining space and stretch full height */\n flex: 1;\n min-width: 0;\n}\n\n.feature-accordion__image-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n padding: 32px;\n}\n\n.feature-accordion__image {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n object-fit: contain;\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n}\n\n.feature-accordion__image-placeholder {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Tablet */\n@media (max-width: 1024px) {\n .feature-accordion {\n padding: 60px 0;\n }\n\n .feature-accordion__container {\n padding: 0 24px;\n }\n\n .feature-accordion__content {\n gap: 32px;\n }\n\n .feature-accordion__heading {\n margin-bottom: 40px;\n }\n\n .accordion-item__title {\n font-size: 20px;\n }\n}\n\n/* Mobile */\n@media (max-width: 768px) {\n .feature-accordion {\n padding: 48px 0;\n }\n\n .feature-accordion__content {\n flex-direction: column;\n gap: 32px;\n }\n\n .feature-accordion__image-container {\n order: -1;\n min-height: 280px;\n flex: none;\n }\n\n .feature-accordion__list {\n flex: none;\n }\n\n .accordion-item__title {\n font-size: 18px;\n }\n\n .accordion-item__description {\n font-size: 15px;\n padding-right: 0;\n }\n}\n","import { Component, h, Host, Prop, State, Element, Watch } from '@stencil/core';\n\nexport interface FeatureAccordionItem {\n title: string;\n description: string;\n imageUrl?: string;\n imageAlt?: string;\n}\n\n/**\n * Feature accordion component with expandable items and accompanying image\n * Used for showcasing product features with visual examples\n * Features auto-cycling through items with a progress timer\n */\n@Component({\n tag: 'af-feature-accordion',\n styleUrl: 'af-feature-accordion.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFeatureAccordion {\n @Element() el!: HTMLElement;\n\n /** Section heading */\n @Prop() heading: string = 'Give AI agents your paperwork';\n\n /** JSON string of accordion items */\n @Prop() items: string = '[]';\n\n /** Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds) */\n @Prop() cycleInterval: number = 6000;\n\n /** Whether auto-cycling is enabled */\n @Prop() autoCycle: boolean = true;\n\n /** Currently expanded item index */\n @State() expandedIndex: number = 0;\n\n /** Progress of current timer (0-100) */\n @State() timerProgress: number = 100;\n\n private progressTimer: number | null = null;\n private progressStartTime: number = 0;\n\n componentDidLoad() {\n if (this.autoCycle) {\n this.startCycling();\n }\n }\n\n disconnectedCallback() {\n this.stopCycling();\n }\n\n @Watch('autoCycle')\n handleAutoCycleChange(newValue: boolean) {\n if (newValue) {\n this.startCycling();\n } else {\n this.stopCycling();\n }\n }\n\n private getItems(): FeatureAccordionItem[] {\n try {\n return JSON.parse(this.items);\n } catch {\n return [];\n }\n }\n\n private startCycling() {\n this.stopCycling();\n this.progressStartTime = Date.now();\n this.timerProgress = 100;\n \n // Progress animation frame\n const updateProgress = () => {\n const elapsed = Date.now() - this.progressStartTime;\n const remaining = this.cycleInterval - elapsed;\n \n if (remaining <= 0) {\n this.moveToNextItem();\n } else {\n this.timerProgress = (remaining / this.cycleInterval) * 100;\n this.progressTimer = requestAnimationFrame(updateProgress);\n }\n };\n \n this.progressTimer = requestAnimationFrame(updateProgress);\n }\n\n private stopCycling() {\n if (this.progressTimer) {\n cancelAnimationFrame(this.progressTimer);\n this.progressTimer = null;\n }\n }\n\n private moveToNextItem() {\n const items = this.getItems();\n if (items.length === 0) return;\n \n this.expandedIndex = (this.expandedIndex + 1) % items.length;\n // Restart the cycling timer for the new item\n this.startCycling();\n }\n\n private handleItemClick(index: number) {\n // Reset timer when user clicks\n this.expandedIndex = index;\n // Restart the cycling timer for the clicked item\n if (this.autoCycle) {\n this.startCycling();\n }\n }\n\n render() {\n const items = this.getItems();\n const currentItem = items[this.expandedIndex];\n\n return (\n <Host>\n <div class=\"feature-accordion\">\n <div class=\"feature-accordion__container\">\n <h2 class=\"feature-accordion__heading\">{this.heading}</h2>\n \n <div class=\"feature-accordion__content\">\n {/* Left side - Accordion */}\n <div class=\"feature-accordion__list\">\n {items.map((item, index) => (\n <div \n class={{\n 'accordion-item': true,\n 'accordion-item--expanded': this.expandedIndex === index\n }}\n key={index}\n >\n <button \n class=\"accordion-item__header\"\n onClick={() => this.handleItemClick(index)}\n aria-expanded={this.expandedIndex === index ? 'true' : 'false'}\n >\n <h4 class=\"accordion-item__title\">{item.title}</h4>\n <span class=\"accordion-item__icon\">\n {this.expandedIndex === index ? (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12H19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n ) : (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 5V19M5 12H19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n )}\n </span>\n </button>\n <div \n class=\"accordion-item__content\"\n style={{ \n maxHeight: this.expandedIndex === index ? '200px' : '0',\n opacity: this.expandedIndex === index ? '1' : '0'\n }}\n >\n <p class=\"accordion-item__description\">{item.description}</p>\n {this.expandedIndex === index && this.autoCycle && (\n <div class=\"accordion-item__timer-track\">\n <div \n class=\"accordion-item__timer-progress\"\n style={{ width: `${this.timerProgress}%` }}\n ></div>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* Right side - Image */}\n <div class=\"feature-accordion__image-container\">\n <div class=\"feature-accordion__image-wrapper\">\n {currentItem?.imageUrl && (\n <img \n src={currentItem.imageUrl} \n alt={currentItem.imageAlt || currentItem.title}\n class=\"feature-accordion__image\"\n />\n )}\n {!currentItem?.imageUrl && (\n <div class=\"feature-accordion__image-placeholder\">\n <slot name=\"image\"></slot>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host","index"],"mappings":"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"}
1
+ {"version":3,"file":"af-feature-accordion.entry.cjs.js","sources":["src/components/af-feature-accordion/af-feature-accordion.css?tag=af-feature-accordion&encapsulation=scoped","src/components/af-feature-accordion/af-feature-accordion.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.feature-accordion {\n /* Inherits theme from parent Section via CSS custom properties */\n padding: 0 24px;\n \n /* Internal custom properties that inherit from parent Section's theme */\n --_heading-color: var(--af-typography-heading-primary, var(--colour-brand-inkwell, #14343b));\n --_body-color: var(--af-typography-body-default, var(--colour-inkwell-400, #2b484f));\n --_border-color: var(--af-background-border-default, rgba(20, 52, 59, 0.12));\n --_level-1-bg: var(--af-background-level-1, var(--colour-mistgreen-300, #dde6e3));\n}\n\n.feature-accordion__heading {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 400;\n font-size: clamp(36px, 5vw, 52px);\n line-height: 1.05;\n letter-spacing: -0.025em;\n color: var(--_heading-color);\n margin: 0 0 56px 0;\n}\n\n.feature-accordion__content {\n display: flex;\n gap: 48px;\n}\n\n/* Accordion List */\n.feature-accordion__list {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n}\n\n/* Accordion Item */\n.accordion-item {\n border-bottom: 1px solid var(--_border-color);\n}\n\n.accordion-item:first-child {\n border-top: 1px solid var(--_border-color);\n}\n\n.accordion-item__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 24px 0;\n background: none;\n border: none;\n cursor: pointer;\n text-align: left;\n gap: 16px;\n}\n\n.accordion-item__header:hover .accordion-item__title {\n color: var(--_heading-color);\n}\n\n.accordion-item__title {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 500;\n font-size: 22px;\n line-height: 1.25;\n color: var(--_heading-color);\n margin: 0;\n flex: 1;\n transition: color 0.2s ease;\n}\n\n/* Collapsed items have lighter text */\n.accordion-item:not(.accordion-item--expanded) .accordion-item__title {\n opacity: 0.7;\n}\n\n.accordion-item__icon {\n flex-shrink: 0;\n width: 24px;\n height: 24px;\n color: var(--_heading-color);\n transition: transform 0.2s ease;\n}\n\n.accordion-item:not(.accordion-item--expanded) .accordion-item__icon {\n opacity: 0.5;\n}\n\n.accordion-item__content {\n overflow: hidden;\n transition: max-height 0.3s ease, opacity 0.3s ease;\n}\n\n.accordion-item__description {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 400;\n font-size: 17px;\n line-height: 1.6;\n color: var(--_body-color);\n margin: 0 0 20px 0;\n padding-right: 40px;\n opacity: 0.85;\n}\n\n/* Timer track - the progress bar at the bottom of expanded items */\n.accordion-item__timer-track {\n height: 3px;\n background-color: var(--_border-color);\n border-radius: 2px;\n margin-bottom: 8px;\n overflow: hidden;\n display: flex;\n justify-content: flex-start;\n}\n\n.accordion-item__timer-progress {\n height: 100%;\n background-color: var(--colour-brand-ice, #a6fffb);\n border-radius: 2px;\n transition: width 0.05s linear;\n}\n\n/* Image Container - stretches full height to align with accordion */\n.feature-accordion__image-container {\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--_level-1-bg);\n border-radius: 20px;\n overflow: hidden;\n flex: 1;\n min-width: 0;\n}\n\n.feature-accordion__image-wrapper {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n padding: 32px;\n}\n\n.feature-accordion__image {\n max-width: 100%;\n max-height: 100%;\n width: auto;\n height: auto;\n object-fit: contain;\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n}\n\n.feature-accordion__image-placeholder {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Tablet */\n@media (max-width: 1024px) {\n .feature-accordion__content {\n gap: 32px;\n }\n\n .feature-accordion__heading {\n margin-bottom: 40px;\n }\n\n .accordion-item__title {\n font-size: 20px;\n }\n}\n\n/* Mobile */\n@media (max-width: 768px) {\n .feature-accordion__content {\n flex-direction: column;\n gap: 32px;\n }\n\n .feature-accordion__image-container {\n order: -1;\n min-height: 280px;\n flex: none;\n }\n\n .feature-accordion__list {\n flex: none;\n }\n\n .accordion-item__title {\n font-size: 18px;\n }\n\n .accordion-item__description {\n font-size: 15px;\n padding-right: 0;\n }\n}\n","import { Component, h, Host, Prop, State, Element, Watch } from '@stencil/core';\n\nexport interface FeatureAccordionItem {\n title: string;\n description: string;\n imageUrl?: string;\n imageAlt?: string;\n}\n\n/**\n * Feature accordion component with expandable items and accompanying image.\n * Used for showcasing product features with visual examples.\n * Features auto-cycling through items with a progress timer.\n * \n * **Must be wrapped in a Section component** to inherit theme styling.\n * The component automatically adapts colors based on the parent Section's theme.\n * \n * @example\n * ```tsx\n * <Section theme=\"inkwell\">\n * <FeatureAccordion heading=\"Features\" items={...} />\n * </Section>\n * ```\n */\n@Component({\n tag: 'af-feature-accordion',\n styleUrl: 'af-feature-accordion.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFeatureAccordion {\n @Element() el!: HTMLElement;\n\n /** Section heading */\n @Prop() heading: string = 'Give AI agents your paperwork';\n\n /** JSON string of accordion items */\n @Prop() items: string = '[]';\n\n /** Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds) */\n @Prop() cycleInterval: number = 6000;\n\n /** Whether auto-cycling is enabled */\n @Prop() autoCycle: boolean = true;\n\n /** Currently expanded item index */\n @State() expandedIndex: number = 0;\n\n /** Progress of current timer (0-100) */\n @State() timerProgress: number = 100;\n\n private progressTimer: number | null = null;\n private progressStartTime: number = 0;\n\n componentDidLoad() {\n if (this.autoCycle) {\n this.startCycling();\n }\n }\n\n disconnectedCallback() {\n this.stopCycling();\n }\n\n @Watch('autoCycle')\n handleAutoCycleChange(newValue: boolean) {\n if (newValue) {\n this.startCycling();\n } else {\n this.stopCycling();\n }\n }\n\n private getItems(): FeatureAccordionItem[] {\n try {\n return JSON.parse(this.items);\n } catch {\n return [];\n }\n }\n\n private startCycling() {\n this.stopCycling();\n this.progressStartTime = Date.now();\n this.timerProgress = 100;\n \n // Progress animation frame\n const updateProgress = () => {\n const elapsed = Date.now() - this.progressStartTime;\n const remaining = this.cycleInterval - elapsed;\n \n if (remaining <= 0) {\n this.moveToNextItem();\n } else {\n this.timerProgress = (remaining / this.cycleInterval) * 100;\n this.progressTimer = requestAnimationFrame(updateProgress);\n }\n };\n \n this.progressTimer = requestAnimationFrame(updateProgress);\n }\n\n private stopCycling() {\n if (this.progressTimer) {\n cancelAnimationFrame(this.progressTimer);\n this.progressTimer = null;\n }\n }\n\n private moveToNextItem() {\n const items = this.getItems();\n if (items.length === 0) return;\n \n this.expandedIndex = (this.expandedIndex + 1) % items.length;\n // Restart the cycling timer for the new item\n this.startCycling();\n }\n\n private handleItemClick(index: number) {\n // Reset timer when user clicks\n this.expandedIndex = index;\n // Restart the cycling timer for the clicked item\n if (this.autoCycle) {\n this.startCycling();\n }\n }\n\n render() {\n const items = this.getItems();\n const currentItem = items[this.expandedIndex];\n\n return (\n <Host>\n <div class=\"feature-accordion\">\n <div class=\"feature-accordion__container\">\n <h2 class=\"feature-accordion__heading\">{this.heading}</h2>\n \n <div class=\"feature-accordion__content\">\n {/* Left side - Accordion */}\n <div class=\"feature-accordion__list\">\n {items.map((item, index) => (\n <div \n class={{\n 'accordion-item': true,\n 'accordion-item--expanded': this.expandedIndex === index\n }}\n key={index}\n >\n <button \n class=\"accordion-item__header\"\n onClick={() => this.handleItemClick(index)}\n aria-expanded={this.expandedIndex === index ? 'true' : 'false'}\n >\n <h4 class=\"accordion-item__title\">{item.title}</h4>\n <span class=\"accordion-item__icon\">\n {this.expandedIndex === index ? (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12H19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n ) : (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 5V19M5 12H19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"/>\n </svg>\n )}\n </span>\n </button>\n <div \n class=\"accordion-item__content\"\n style={{ \n maxHeight: this.expandedIndex === index ? '200px' : '0',\n opacity: this.expandedIndex === index ? '1' : '0'\n }}\n >\n <p class=\"accordion-item__description\">{item.description}</p>\n {this.expandedIndex === index && this.autoCycle && (\n <div class=\"accordion-item__timer-track\">\n <div \n class=\"accordion-item__timer-progress\"\n style={{ width: `${this.timerProgress}%` }}\n ></div>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n\n {/* Right side - Image */}\n <div class=\"feature-accordion__image-container\">\n <div class=\"feature-accordion__image-wrapper\">\n {currentItem?.imageUrl && (\n <img \n src={currentItem.imageUrl} \n alt={currentItem.imageAlt || currentItem.title}\n class=\"feature-accordion__image\"\n />\n )}\n {!currentItem?.imageUrl && (\n <div class=\"feature-accordion__image-placeholder\">\n <slot name=\"image\"></slot>\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host","index"],"mappings":";;;;AAAA,MAAM,qBAAqB,GAAG,k8HAAk8H;;MC8Bn9H,kBAAkB,GAAA,MAAA;AAN/B,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAUU,QAAA,IAAO,CAAA,OAAA,GAAW,+BAA+B;;AAGjD,QAAA,IAAK,CAAA,KAAA,GAAW,IAAI;;AAGpB,QAAA,IAAa,CAAA,aAAA,GAAW,IAAI;;AAG5B,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI;;AAGxB,QAAA,IAAa,CAAA,aAAA,GAAW,CAAC;;AAGzB,QAAA,IAAa,CAAA,aAAA,GAAW,GAAG;AAE5B,QAAA,IAAa,CAAA,aAAA,GAAkB,IAAI;AACnC,QAAA,IAAiB,CAAA,iBAAA,GAAW,CAAC;AA8JtC;IA5JC,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE;;;IAIvB,oBAAoB,GAAA;QAClB,IAAI,CAAC,WAAW,EAAE;;AAIpB,IAAA,qBAAqB,CAAC,QAAiB,EAAA;QACrC,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,YAAY,EAAE;;aACd;YACL,IAAI,CAAC,WAAW,EAAE;;;IAId,QAAQ,GAAA;AACd,QAAA,IAAI;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;;AAC7B,QAAA,MAAM;AACN,YAAA,OAAO,EAAE;;;IAIL,YAAY,GAAA;QAClB,IAAI,CAAC,WAAW,EAAE;AAClB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE;AACnC,QAAA,IAAI,CAAC,aAAa,GAAG,GAAG;;QAGxB,MAAM,cAAc,GAAG,MAAK;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB;AACnD,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO;AAE9C,YAAA,IAAI,SAAS,IAAI,CAAC,EAAE;gBAClB,IAAI,CAAC,cAAc,EAAE;;iBAChB;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,IAAI,GAAG;AAC3D,gBAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,cAAc,CAAC;;AAE9D,SAAC;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,qBAAqB,CAAC,cAAc,CAAC;;IAGpD,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC;AACxC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;;IAIrB,cAAc,GAAA;AACpB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;AAC7B,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;AAExB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM;;QAE5D,IAAI,CAAC,YAAY,EAAE;;AAGb,IAAA,eAAe,CAAC,KAAa,EAAA;;AAEnC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAE1B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,YAAY,EAAE;;;IAIvB,MAAM,GAAA;AACJ,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;QAC7B,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;QAE7C,QACEA,QAACC,UAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACHD,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,mBAAmB,EAAA,EAC5BA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,8BAA8B,EAAA,EACvCA,OAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAI,KAAK,EAAC,4BAA4B,IAAE,IAAI,CAAC,OAAO,CAAM,EAE1DA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,4BAA4B,EAAA,EAErCA,OAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,yBAAyB,IACjC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAEE,OAAK,MACrBF,OAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE;AACL,gBAAA,gBAAgB,EAAE,IAAI;AACtB,gBAAA,0BAA0B,EAAE,IAAI,CAAC,aAAa,KAAKE;aACpD,EACD,GAAG,EAAEA,OAAK,EAAA,EAEVF,OAAA,CAAA,QAAA,EAAA,EACE,KAAK,EAAC,wBAAwB,EAC9B,OAAO,EAAE,MAAM,IAAI,CAAC,eAAe,CAACE,OAAK,CAAC,EAAA,eAAA,EAC3B,IAAI,CAAC,aAAa,KAAKA,OAAK,GAAG,MAAM,GAAG,OAAO,EAAA,EAE9DF,OAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAC,uBAAuB,IAAE,IAAI,CAAC,KAAK,CAAM,EACnDA,OAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAC,sBAAsB,EAAA,EAC/B,IAAI,CAAC,aAAa,KAAKE,OAAK,IAC3BF,iBAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAA,EAC5FA,OAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,UAAU,EAAC,MAAM,EAAC,cAAc,EAAA,cAAA,EAAc,GAAG,EAAA,gBAAA,EAAgB,OAAO,EAAE,CAAA,CAC9E,KAENA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,EAAA,EAC5FA,OAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,kBAAkB,EAAC,MAAM,EAAC,cAAc,EAAc,cAAA,EAAA,GAAG,oBAAgB,OAAO,EAAA,CAAE,CACtF,CACP,CACI,CACA,EACTA,OAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,yBAAyB,EAC/B,KAAK,EAAE;AACL,gBAAA,SAAS,EAAE,IAAI,CAAC,aAAa,KAAKE,OAAK,GAAG,OAAO,GAAG,GAAG;AACvD,gBAAA,OAAO,EAAE,IAAI,CAAC,aAAa,KAAKA,OAAK,GAAG,GAAG,GAAG;AAC/C,aAAA,EAAA,EAEDF,OAAA,CAAA,GAAA,EAAA,EAAG,KAAK,EAAC,6BAA6B,IAAE,IAAI,CAAC,WAAW,CAAK,EAC5D,IAAI,CAAC,aAAa,KAAKE,OAAK,IAAI,IAAI,CAAC,SAAS,KAC7CF,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,6BAA6B,EAAA,EACtCA,OACE,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,gCAAgC,EACtC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAG,EAAA,IAAI,CAAC,aAAa,GAAG,EAAE,EACrC,CAAA,CACH,CACP,CACG,CACF,CACP,CAAC,CACE,EAGNA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,oCAAoC,EAAA,EAC7CA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,kCAAkC,EAAA,EAC1C,WAAW,EAAE,QAAQ,KACpBA,OAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,GAAG,EAAE,WAAW,CAAC,QAAQ,EACzB,GAAG,EAAE,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,KAAK,EAC9C,KAAK,EAAC,0BAA0B,EAAA,CAChC,CACH,EACA,CAAC,WAAW,EAAE,QAAQ,KACrBA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,sCAAsC,EAAA,EAC/CA,OAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,OAAO,EAAA,CAAQ,CACtB,CACP,CACG,CACF,CACF,CACF,CACF,CACD;;;;;;;;;;;"}
@@ -0,0 +1,59 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-ybEiHT0b.js');
4
+
5
+ const afFeatureCardCss = ".sc-af-feature-card-h{display:block;--af-card-padding:0;--af-card-gap:0}[card-size=\"default\"].sc-af-feature-card-h{width:544px}[card-size=\"large\"].sc-af-feature-card-h{width:777px}[card-size=\"flexible\"].sc-af-feature-card-h{display:flex;width:100%;height:100%}.feature-card.sc-af-feature-card{overflow:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box;border-radius:var(--border-radius-card-level-1, 32px);width:100%;height:100%}.feature-card--layout-full-bleed.sc-af-feature-card{background:var(--background-base, var(--colour-brand-inkwell, #14343b))}[card-size=\"default\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card,[card-size=\"large\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{height:660px}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{min-height:480px}.feature-card__background.sc-af-feature-card{position:absolute;inset:0;pointer-events:none;z-index:0}.feature-card__background-image.sc-af-feature-card{width:100%;height:100%;object-fit:cover;object-position:center}.feature-card__overlay.sc-af-feature-card{position:absolute;bottom:0;left:0;right:0;backdrop-filter:blur(2px);background:linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);z-index:1;padding:124px 32px 32px 32px;--af-typography-heading-primary:var(--typography-heading-secondary, #ffffff);--af-typography-heading-secondary:var(--typography-heading-secondary, #ffffff);--af-typography-body-default:var(--typography-body-dark, #ffffff);--colour-typography-heading-primary:var(--typography-heading-secondary, #ffffff);--colour-typography-heading-secondary:var(--typography-heading-secondary, #ffffff);--colour-typography-body-default:var(--typography-body-dark, #ffffff)}.feature-card--layout-standard.sc-af-feature-card{background:var(--background-level-1, var(--colour-mistgreen-200, #e8eeed))}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-standard.sc-af-feature-card{min-height:400px}.feature-card__content.sc-af-feature-card{position:relative;display:flex;flex-direction:column;box-sizing:border-box;z-index:1;padding:40px 32px 12px 32px;flex:1 1 auto}[card-size=\"large\"].sc-af-feature-card-h .feature-card__content.sc-af-feature-card{padding:40px 40px 0 40px}.feature-card__image-area.sc-af-feature-card{position:relative;width:100%;height:160px;flex-shrink:0;overflow:hidden}.feature-card__image.sc-af-feature-card{width:100%;height:100%;object-fit:cover;object-position:center top}.feature-card.sc-af-feature-card af-typography-lockup.sc-af-feature-card{--colour-typography-heading-primary:var(--af-typography-heading-primary, var(--typography-heading-primary, #14343b));--colour-typography-body-default:var(--af-typography-body-default, var(--typography-body-default, #2b484f))}@media (max-width: 768px){.feature-card.sc-af-feature-card{border-radius:var(--border-radius-card-level-1, 24px)}[card-size=\"default\"].sc-af-feature-card-h,[card-size=\"large\"].sc-af-feature-card-h{width:335px}[card-size=\"default\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card,[card-size=\"large\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{height:442px}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-standard.sc-af-feature-card{min-height:340px}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{min-height:380px}.feature-card__overlay.sc-af-feature-card{padding:80px 24px 28px 24px}.feature-card__content.sc-af-feature-card{padding:32px 24px 12px 24px}.feature-card__image-area.sc-af-feature-card{height:192px}}";
6
+
7
+ const AfFeatureCard = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ /**
11
+ * Theme variant - sets background color and provides theme context.
12
+ * Only applies to 'standard' layout mode. Defaults to 'mist-green'.
13
+ */
14
+ this.theme = 'mist-green';
15
+ /**
16
+ * Layout mode for the card.
17
+ * - 'standard': Theme background with text at top and image at bottom
18
+ * - 'full-bleed': Image covers entire card with text overlay at bottom
19
+ */
20
+ this.layout = 'standard';
21
+ /**
22
+ * Card size variant.
23
+ * - 'default': Fixed 544px × 420px
24
+ * - 'large': Fixed 777px × 480px
25
+ * - 'flexible': Fills container (for grid layouts)
26
+ */
27
+ this.cardSize = 'default';
28
+ /**
29
+ * Heading size for typography lockup (1-5, where 1 is largest).
30
+ */
31
+ this.headingSize = 3;
32
+ /**
33
+ * Image alt text for accessibility.
34
+ * Provide meaningful alt text for feature images.
35
+ * Only use empty string for purely decorative images.
36
+ */
37
+ this.imageAlt = '';
38
+ }
39
+ render() {
40
+ const hasImage = !!this.imageSrc;
41
+ const isFullBleed = this.layout === 'full-bleed';
42
+ const wrapperClasses = {
43
+ 'feature-card': true,
44
+ [`feature-card--layout-${this.layout}`]: true,
45
+ [`feature-card--size-${this.cardSize}`]: true,
46
+ };
47
+ // Full-bleed mode: image background with overlay
48
+ if (isFullBleed) {
49
+ return (index.h(index.Host, null, index.h("div", { class: wrapperClasses }, hasImage && (index.h("div", { class: "feature-card__background" }, index.h("img", { src: this.imageSrc, alt: this.imageAlt, class: "feature-card__background-image" }))), index.h("div", { class: "feature-card__overlay" }, index.h("af-typography-lockup", { headingSize: this.headingSize, textAlignment: "left", buttonAlignment: "vertical" }, index.h("slot", null), index.h("span", { slot: "description" }, index.h("slot", { name: "body" })))))));
50
+ }
51
+ // Standard mode: theme card with image at bottom
52
+ const isFlexible = this.cardSize === 'flexible';
53
+ return (index.h(index.Host, null, index.h("div", { class: wrapperClasses }, index.h("af-card", { theme: this.theme, stretch: isFlexible }, index.h("div", { class: "feature-card__content" }, index.h("af-typography-lockup", { headingSize: this.headingSize, textAlignment: "left", buttonAlignment: "vertical" }, index.h("slot", null), index.h("span", { slot: "description" }, index.h("slot", { name: "body" })))), hasImage && (index.h("div", { class: "feature-card__image-area" }, index.h("img", { src: this.imageSrc, alt: this.imageAlt, class: "feature-card__image" })))))));
54
+ }
55
+ };
56
+ AfFeatureCard.style = afFeatureCardCss;
57
+
58
+ exports.af_feature_card = AfFeatureCard;
59
+ //# sourceMappingURL=af-feature-card.entry.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"af-feature-card.entry.cjs.js","sources":["src/components/af-feature-card/af-feature-card.css?tag=af-feature-card&encapsulation=scoped","src/components/af-feature-card/af-feature-card.tsx"],"sourcesContent":["/* ==========================================================================\n Feature Card - Figma Specs\n \n Desktop Full-bleed: 544px × 660px, radius 32px\n Desktop Standard default: 544px width, radius 32px\n Desktop Standard large: 777px width, radius 32px\n Mobile Full-bleed: 335px × 442px, radius 24px\n Mobile Standard: 335px width, radius 24px\n ========================================================================== */\n\n/* ==========================================================================\n Host Element - Controls outer dimensions\n ========================================================================== */\n\n:host {\n display: block;\n --af-card-padding: 0;\n --af-card-gap: 0;\n}\n\n/* Fixed size hosts constrain to Figma dimensions */\n:host([card-size=\"default\"]) {\n width: 544px;\n}\n\n:host([card-size=\"large\"]) {\n width: 777px;\n}\n\n/* Flexible cards fill their container */\n:host([card-size=\"flexible\"]) {\n display: flex;\n width: 100%;\n height: 100%;\n}\n\n/* ==========================================================================\n Base Feature Card Styles\n ========================================================================== */\n\n.feature-card {\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n border-radius: var(--border-radius-card-level-1, 32px);\n width: 100%;\n height: 100%;\n}\n\n/* ==========================================================================\n Full Bleed Layout Mode\n Figma: 544px × 660px (desktop), 335px × 442px (mobile)\n ========================================================================== */\n\n.feature-card--layout-full-bleed {\n background: var(--background-base, var(--colour-brand-inkwell, #14343b));\n}\n\n/* Full-bleed fixed sizes have explicit heights on host */\n:host([card-size=\"default\"]) .feature-card--layout-full-bleed,\n:host([card-size=\"large\"]) .feature-card--layout-full-bleed {\n height: 660px;\n}\n\n/* Full-bleed flexible minimum height */\n:host([card-size=\"flexible\"]) .feature-card--layout-full-bleed {\n min-height: 480px;\n}\n\n.feature-card__background {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n}\n\n.feature-card__background-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n}\n\n/* Overlay gradient with text */\n.feature-card__overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n backdrop-filter: blur(2px);\n background: linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);\n z-index: 1;\n /* Desktop: pt-124px px-32px pb-32px */\n padding: 124px 32px 32px 32px;\n\n /* White text on dark overlay */\n --af-typography-heading-primary: var(--typography-heading-secondary, #ffffff);\n --af-typography-heading-secondary: var(--typography-heading-secondary, #ffffff);\n --af-typography-body-default: var(--typography-body-dark, #ffffff);\n --colour-typography-heading-primary: var(--typography-heading-secondary, #ffffff);\n --colour-typography-heading-secondary: var(--typography-heading-secondary, #ffffff);\n --colour-typography-body-default: var(--typography-body-dark, #ffffff);\n}\n\n/* ==========================================================================\n Standard Layout Mode\n \n Structure: .feature-card > af-card[stretch] > [content] + [image-area]\n \n When cardSize=\"flexible\", af-card receives stretch prop which enables\n the flex chain. Content grows to fill space, image stays at bottom.\n ========================================================================== */\n\n.feature-card--layout-standard {\n background: var(--background-level-1, var(--colour-mistgreen-200, #e8eeed));\n}\n\n/* Standard flexible minimum height */\n:host([card-size=\"flexible\"]) .feature-card--layout-standard {\n min-height: 400px;\n}\n\n/* Content area - grows to push image to bottom (when af-card has stretch) */\n.feature-card__content {\n position: relative;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n z-index: 1;\n /* Desktop default: pt-40px px-32px pb-12px */\n padding: 40px 32px 12px 32px;\n flex: 1 1 auto;\n}\n\n/* Large card content padding: pt-40px px-40px pb-0 */\n:host([card-size=\"large\"]) .feature-card__content {\n padding: 40px 40px 0 40px;\n}\n\n/* ==========================================================================\n Image Area (Standard Layout)\n Figma: 160px height (desktop), 192px height (mobile)\n ========================================================================== */\n\n.feature-card__image-area {\n position: relative;\n width: 100%;\n height: 160px;\n flex-shrink: 0;\n overflow: hidden;\n}\n\n.feature-card__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center top;\n}\n\n/* ==========================================================================\n Typography Lockup Styling\n ========================================================================== */\n\n.feature-card af-typography-lockup {\n --colour-typography-heading-primary: var(--af-typography-heading-primary, var(--typography-heading-primary, #14343b));\n --colour-typography-body-default: var(--af-typography-body-default, var(--typography-body-default, #2b484f));\n}\n\n/* ==========================================================================\n Mobile Responsive Styles (max-width: 768px)\n \n Figma:\n - Full-bleed: 335px × 442px, radius 24px\n - Standard: 335px width, radius 24px\n ========================================================================== */\n\n@media (max-width: 768px) {\n .feature-card {\n border-radius: var(--border-radius-card-level-1, 24px);\n }\n\n /* Mobile fixed widths on host */\n :host([card-size=\"default\"]),\n :host([card-size=\"large\"]) {\n width: 335px;\n }\n\n /* Mobile full-bleed height: 442px */\n :host([card-size=\"default\"]) .feature-card--layout-full-bleed,\n :host([card-size=\"large\"]) .feature-card--layout-full-bleed {\n height: 442px;\n }\n\n /* Mobile flexible minimum heights */\n :host([card-size=\"flexible\"]) .feature-card--layout-standard {\n min-height: 340px;\n }\n\n :host([card-size=\"flexible\"]) .feature-card--layout-full-bleed {\n min-height: 380px;\n }\n\n /* Mobile overlay padding: pt-80px px-24px pb-28px */\n .feature-card__overlay {\n padding: 80px 24px 28px 24px;\n }\n\n /* Mobile content padding: pt-32px px-24px pb-12px */\n .feature-card__content {\n padding: 32px 24px 12px 24px;\n }\n\n /* Mobile image area: 192px height */\n .feature-card__image-area {\n height: 192px;\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * Feature Card molecule component that combines a card with an image.\n * \n * Two layout modes:\n * - `standard`: Theme background with text at top and image at bottom\n * - `full-bleed`: Image covers entire card with text overlay at bottom\n * \n * Responsive: Automatically adapts to mobile viewport (≤768px).\n * \n * Uses af-card atom internally and af-typography-lockup for text hierarchy.\n * \n * @slot - Heading text content\n * @slot body - Description/body text content\n */\n@Component({\n tag: 'af-feature-card',\n styleUrl: 'af-feature-card.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFeatureCard {\n /**\n * Theme variant - sets background color and provides theme context.\n * Only applies to 'standard' layout mode. Defaults to 'mist-green'.\n */\n @Prop() theme?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay' = 'mist-green';\n\n /**\n * Layout mode for the card.\n * - 'standard': Theme background with text at top and image at bottom\n * - 'full-bleed': Image covers entire card with text overlay at bottom\n */\n @Prop() layout: 'standard' | 'full-bleed' = 'standard';\n\n /**\n * Card size variant.\n * - 'default': Fixed 544px × 420px\n * - 'large': Fixed 777px × 480px \n * - 'flexible': Fills container (for grid layouts)\n */\n @Prop({ reflect: true }) cardSize: 'default' | 'large' | 'flexible' = 'default';\n\n /**\n * Heading size for typography lockup (1-5, where 1 is largest).\n */\n @Prop() headingSize: 1 | 2 | 3 | 4 | 5 = 3;\n\n /**\n * Background/feature image URL.\n */\n @Prop() imageSrc?: string;\n\n /**\n * Image alt text for accessibility.\n * Provide meaningful alt text for feature images.\n * Only use empty string for purely decorative images.\n */\n @Prop() imageAlt: string = '';\n\n render() {\n const hasImage = !!this.imageSrc;\n const isFullBleed = this.layout === 'full-bleed';\n\n const wrapperClasses = {\n 'feature-card': true,\n [`feature-card--layout-${this.layout}`]: true,\n [`feature-card--size-${this.cardSize}`]: true,\n };\n\n // Full-bleed mode: image background with overlay\n if (isFullBleed) {\n return (\n <Host>\n <div class={wrapperClasses}>\n {/* Background image */}\n {hasImage && (\n <div class=\"feature-card__background\">\n <img\n src={this.imageSrc}\n alt={this.imageAlt}\n class=\"feature-card__background-image\"\n />\n </div>\n )}\n\n {/* Content overlay with gradient */}\n <div class=\"feature-card__overlay\">\n <af-typography-lockup\n headingSize={this.headingSize}\n textAlignment=\"left\"\n buttonAlignment=\"vertical\"\n >\n <slot></slot>\n <span slot=\"description\">\n <slot name=\"body\"></slot>\n </span>\n </af-typography-lockup>\n </div>\n </div>\n </Host>\n );\n }\n\n // Standard mode: theme card with image at bottom\n const isFlexible = this.cardSize === 'flexible';\n \n return (\n <Host>\n <div class={wrapperClasses}>\n <af-card theme={this.theme} stretch={isFlexible}>\n {/* Content area with typography lockup */}\n <div class=\"feature-card__content\">\n <af-typography-lockup\n headingSize={this.headingSize}\n textAlignment=\"left\"\n buttonAlignment=\"vertical\"\n >\n <slot></slot>\n <span slot=\"description\">\n <slot name=\"body\"></slot>\n </span>\n </af-typography-lockup>\n </div>\n\n {/* Image area at bottom */}\n {hasImage && (\n <div class=\"feature-card__image-area\">\n <img\n src={this.imageSrc}\n alt={this.imageAlt}\n class=\"feature-card__image\"\n />\n </div>\n )}\n </af-card>\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host"],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-ybEiHT0b.js');
4
+
5
+ const afFeatureGridCss = ".sc-af-feature-grid-h{display:block;width:100%}.feature-grid.sc-af-feature-grid{display:flex;flex-direction:column;align-items:center;width:100%}.feature-grid__cards.sc-af-feature-grid{display:grid;grid-template-columns:repeat(4, 1fr);gap:24px;width:100%;max-width:1440px;align-items:stretch}.feature-grid__cards.sc-af-feature-grid>af-feature-card.sc-af-feature-grid{height:100%}.feature-grid--cols-3.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(3, 1fr)}.feature-grid--cols-2.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(2, 1fr)}.feature-grid--cols-1.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:1fr}.feature-grid__progress.sc-af-feature-grid{display:none;width:100%;margin-top:16px}@media (max-width: 768px){.feature-grid__cards.sc-af-feature-grid{gap:16px}.feature-grid--mobile-list.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:1fr;gap:20px}.feature-grid--mobile-grid.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(2, 1fr)}.feature-grid--mobile-scroll.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:16px;padding-bottom:8px;scrollbar-width:none;-ms-overflow-style:none}.feature-grid--mobile-scroll.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid::-webkit-scrollbar{display:none}.feature-grid--mobile-scroll.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid>af-feature-card.sc-af-feature-grid{flex:0 0 280px;scroll-snap-align:start}.feature-grid--mobile-scroll.sc-af-feature-grid .feature-grid__progress.sc-af-feature-grid{display:block}}@media (min-width: 769px) and (max-width: 1024px){.feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(2, 1fr)}.feature-grid--cols-3.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid,.feature-grid--cols-4.sc-af-feature-grid .feature-grid__cards.sc-af-feature-grid{grid-template-columns:repeat(2, 1fr)}}";
6
+
7
+ const AfFeatureGrid = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ /**
11
+ * Number of columns on desktop (1-4).
12
+ */
13
+ this.columns = 4;
14
+ /**
15
+ * Mobile layout behavior.
16
+ * - 'list': Vertical stack (1 column)
17
+ * - 'scroll': Horizontal scroll with progress indicator
18
+ * - 'grid': Maintain 2-column grid on mobile
19
+ */
20
+ this.mobileLayout = 'list';
21
+ this.scrollProgress = 0;
22
+ this.handleScroll = () => {
23
+ if (!this.scrollContainer)
24
+ return;
25
+ const { scrollLeft, scrollWidth, clientWidth } = this.scrollContainer;
26
+ const maxScroll = scrollWidth - clientWidth;
27
+ if (maxScroll > 0) {
28
+ this.scrollProgress = scrollLeft / maxScroll;
29
+ }
30
+ else {
31
+ this.scrollProgress = 0;
32
+ }
33
+ };
34
+ }
35
+ componentDidLoad() {
36
+ this.setupScrollListener();
37
+ // Watch for cards being added (for React async rendering)
38
+ this.observer = new MutationObserver(() => {
39
+ this.setupScrollListener();
40
+ });
41
+ this.observer.observe(this.host, {
42
+ childList: true,
43
+ subtree: true,
44
+ });
45
+ }
46
+ disconnectedCallback() {
47
+ if (this.observer) {
48
+ this.observer.disconnect();
49
+ }
50
+ if (this.resizeObserver) {
51
+ this.resizeObserver.disconnect();
52
+ }
53
+ }
54
+ onMobileLayoutChange() {
55
+ this.setupScrollListener();
56
+ }
57
+ setupScrollListener() {
58
+ if (this.scrollContainer) {
59
+ this.scrollContainer.removeEventListener('scroll', this.handleScroll);
60
+ }
61
+ requestAnimationFrame(() => {
62
+ this.scrollContainer = this.host.querySelector('.feature-grid__cards');
63
+ if (this.scrollContainer && this.mobileLayout === 'scroll') {
64
+ this.scrollContainer.addEventListener('scroll', this.handleScroll, { passive: true });
65
+ this.handleScroll();
66
+ if (this.resizeObserver) {
67
+ this.resizeObserver.disconnect();
68
+ }
69
+ this.resizeObserver = new ResizeObserver(() => {
70
+ this.handleScroll();
71
+ });
72
+ this.resizeObserver.observe(this.scrollContainer);
73
+ }
74
+ });
75
+ }
76
+ render() {
77
+ const gridClasses = {
78
+ 'feature-grid': true,
79
+ [`feature-grid--cols-${this.columns}`]: true,
80
+ [`feature-grid--mobile-${this.mobileLayout}`]: true,
81
+ };
82
+ const showProgressLine = this.mobileLayout === 'scroll';
83
+ return (index.h(index.Host, { key: '9f86e8111e73d046e6e391d54781972ca0c1a78a' }, index.h("div", { key: '409d9c22be533612e2f079f38bc613e3a1f35fe2', class: gridClasses }, index.h("div", { key: '18261ef9c3dab6b7dfc5c947fd0b21712f1e6416', class: "feature-grid__cards" }, index.h("slot", { key: '9f90257092482cce17c374813116bf5ea6338401' })), showProgressLine && (index.h("div", { key: '208800f5dfe5d944f9bc4198fbe656696471ce21', class: "feature-grid__progress" }, index.h("af-progress-line", { key: 'c95b717d018803c4f56a9066bf7aa869c01cb1aa', progress: this.scrollProgress }))))));
84
+ }
85
+ get host() { return index.getElement(this); }
86
+ static get watchers() { return {
87
+ "mobileLayout": ["onMobileLayoutChange"]
88
+ }; }
89
+ };
90
+ AfFeatureGrid.style = afFeatureGridCss;
91
+
92
+ exports.af_feature_grid = AfFeatureGrid;
93
+ //# sourceMappingURL=af-feature-grid.entry.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"af-feature-grid.entry.cjs.js","sources":["src/components/af-feature-grid/af-feature-grid.css?tag=af-feature-grid&encapsulation=scoped","src/components/af-feature-grid/af-feature-grid.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n/* ==========================================================================\n Base Feature Grid Styles\n ========================================================================== */\n\n.feature-grid {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 100%;\n}\n\n/* ==========================================================================\n Cards Container - CSS Grid Layout\n ========================================================================== */\n\n.feature-grid__cards {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 24px;\n width: 100%;\n max-width: 1440px;\n align-items: stretch;\n}\n\n/* Ensure feature cards fill their grid cells */\n.feature-grid__cards>af-feature-card {\n height: 100%;\n}\n\n/* Column variants */\n.feature-grid--cols-3 .feature-grid__cards {\n grid-template-columns: repeat(3, 1fr);\n}\n\n.feature-grid--cols-2 .feature-grid__cards {\n grid-template-columns: repeat(2, 1fr);\n}\n\n.feature-grid--cols-1 .feature-grid__cards {\n grid-template-columns: 1fr;\n}\n\n/* ==========================================================================\n Progress Line (scroll mode indicator)\n ========================================================================== */\n\n.feature-grid__progress {\n display: none;\n width: 100%;\n margin-top: 16px;\n}\n\n/* ==========================================================================\n Mobile Responsive Styles (max-width: 768px)\n ========================================================================== */\n\n@media (max-width: 768px) {\n .feature-grid__cards {\n gap: 16px;\n }\n\n /* Mobile List Mode - single column stack */\n .feature-grid--mobile-list .feature-grid__cards {\n grid-template-columns: 1fr;\n gap: 20px;\n }\n\n /* Mobile Grid Mode - keep 2 columns */\n .feature-grid--mobile-grid .feature-grid__cards {\n grid-template-columns: repeat(2, 1fr);\n }\n\n /* Mobile Scroll Mode - horizontal scroll */\n .feature-grid--mobile-scroll .feature-grid__cards {\n display: flex;\n flex-wrap: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n scroll-snap-type: x mandatory;\n -webkit-overflow-scrolling: touch;\n gap: 16px;\n padding-bottom: 8px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n\n .feature-grid--mobile-scroll .feature-grid__cards::-webkit-scrollbar {\n display: none;\n }\n\n .feature-grid--mobile-scroll .feature-grid__cards>af-feature-card {\n flex: 0 0 280px;\n scroll-snap-align: start;\n }\n\n .feature-grid--mobile-scroll .feature-grid__progress {\n display: block;\n }\n}\n\n/* ==========================================================================\n Tablet breakpoint (769px - 1024px)\n ========================================================================== */\n\n@media (min-width: 769px) and (max-width: 1024px) {\n .feature-grid__cards {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .feature-grid--cols-3 .feature-grid__cards,\n .feature-grid--cols-4 .feature-grid__cards {\n grid-template-columns: repeat(2, 1fr);\n }\n}","import { Component, Prop, State, h, Host, Element, Watch } from '@stencil/core';\n\n/**\n * Feature Grid component - CSS Grid container for feature cards.\n *\n * Desktop: Configurable columns (1-4)\n * Mobile: List (stacked), horizontal scroll, or 2-column grid\n *\n * @slot - Feature card components (af-feature-card)\n */\n@Component({\n tag: 'af-feature-grid',\n styleUrl: 'af-feature-grid.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFeatureGrid {\n @Element() host!: HTMLElement;\n\n /**\n * Number of columns on desktop (1-4).\n */\n @Prop() columns: 1 | 2 | 3 | 4 = 4;\n\n /**\n * Mobile layout behavior.\n * - 'list': Vertical stack (1 column)\n * - 'scroll': Horizontal scroll with progress indicator\n * - 'grid': Maintain 2-column grid on mobile\n */\n @Prop() mobileLayout: 'list' | 'scroll' | 'grid' = 'list';\n\n @State() scrollProgress: number = 0;\n\n private scrollContainer: HTMLElement | undefined;\n private observer: MutationObserver | undefined;\n private resizeObserver: ResizeObserver | undefined;\n\n componentDidLoad() {\n this.setupScrollListener();\n\n // Watch for cards being added (for React async rendering)\n this.observer = new MutationObserver(() => {\n this.setupScrollListener();\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 if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n @Watch('mobileLayout')\n onMobileLayoutChange() {\n this.setupScrollListener();\n }\n\n private setupScrollListener() {\n if (this.scrollContainer) {\n this.scrollContainer.removeEventListener('scroll', this.handleScroll);\n }\n\n requestAnimationFrame(() => {\n this.scrollContainer = this.host.querySelector('.feature-grid__cards') as HTMLElement;\n\n if (this.scrollContainer && this.mobileLayout === 'scroll') {\n this.scrollContainer.addEventListener('scroll', this.handleScroll, { passive: true });\n this.handleScroll();\n\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n this.resizeObserver = new ResizeObserver(() => {\n this.handleScroll();\n });\n this.resizeObserver.observe(this.scrollContainer);\n }\n });\n }\n\n private handleScroll = () => {\n if (!this.scrollContainer) return;\n\n const { scrollLeft, scrollWidth, clientWidth } = this.scrollContainer;\n const maxScroll = scrollWidth - clientWidth;\n\n if (maxScroll > 0) {\n this.scrollProgress = scrollLeft / maxScroll;\n } else {\n this.scrollProgress = 0;\n }\n };\n\n render() {\n const gridClasses = {\n 'feature-grid': true,\n [`feature-grid--cols-${this.columns}`]: true,\n [`feature-grid--mobile-${this.mobileLayout}`]: true,\n };\n\n const showProgressLine = this.mobileLayout === 'scroll';\n\n return (\n <Host>\n <div class={gridClasses}>\n <div class=\"feature-grid__cards\">\n <slot></slot>\n </div>\n\n {showProgressLine && (\n <div class=\"feature-grid__progress\">\n <af-progress-line progress={this.scrollProgress} />\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"names":["h","Host"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-ybEiHT0b.js');
4
+
5
+ const afFieldsetCss = ":host{display:block}.fieldset{display:flex;flex-direction:column;border:none;padding:0;margin:0;min-inline-size:0}.fieldset.disabled{opacity:0.5;pointer-events:none}.legend{display:block;font-family:var(--typography-headingfont, 'NeuSans', sans-serif);font-weight:var(--font-weight-book, 500);font-size:var(--font-size-heading-5-desktop, 20px);line-height:var(--line-height-heading-relaxed, 1.2);letter-spacing:var(--letter-spacing-heading, -0.02em);color:var(--colour-typography-heading-primary, var(--colour-brand-inkwell, #14343b));padding:0;margin:0 0 12px 0;width:100%}.items{display:flex}.items.orientation-vertical{flex-direction:column;gap:8px;align-items:flex-start}.items.orientation-horizontal{flex-direction:row;flex-wrap:wrap;gap:28px;align-items:center}::slotted(*){flex-shrink:0}.items.orientation-vertical ::slotted(*){width:100%}";
6
+
7
+ const AfFieldset = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ /**
11
+ * The layout orientation of the fieldset items
12
+ * - `vertical` - Items stack vertically (default)
13
+ * - `horizontal` - Items are laid out horizontally
14
+ */
15
+ this.orientation = 'vertical';
16
+ /**
17
+ * Whether the fieldset is disabled (disables all child controls)
18
+ */
19
+ this.disabled = false;
20
+ }
21
+ render() {
22
+ const fieldsetClasses = {
23
+ 'fieldset': true,
24
+ [`orientation-${this.orientation}`]: true,
25
+ 'disabled': this.disabled
26
+ };
27
+ const itemsClasses = {
28
+ 'items': true,
29
+ [`orientation-${this.orientation}`]: true
30
+ };
31
+ return (index.h(index.Host, { key: '367a58328f883d5df31989021ad7dba14ed3ab6c' }, index.h("fieldset", { key: 'f43a04b8808db04886a0997b42593af2445b185d', class: fieldsetClasses, disabled: this.disabled }, this.legend && (index.h("legend", { key: 'fc08d5e1464ffeb00005fda04169ceb2654a00b8', class: "legend" }, this.legend)), index.h("div", { key: '815f2dc77dc417791e1a3d736e1b0ce91250a325', class: itemsClasses }, index.h("slot", { key: 'd080ec923b57a3ae95cc868be6bf42b57df08e7a' })))));
32
+ }
33
+ };
34
+ AfFieldset.style = afFieldsetCss;
35
+
36
+ exports.af_fieldset = AfFieldset;
37
+ //# sourceMappingURL=af-fieldset.entry.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"af-fieldset.entry.cjs.js","sources":["src/components/af-fieldset/af-fieldset.css?tag=af-fieldset&encapsulation=shadow","src/components/af-fieldset/af-fieldset.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.fieldset {\n display: flex;\n flex-direction: column;\n border: none;\n padding: 0;\n margin: 0;\n min-inline-size: 0;\n}\n\n.fieldset.disabled {\n opacity: 0.5;\n pointer-events: none;\n}\n\n/* Legend/heading styling - uses heading 5 style */\n.legend {\n display: block;\n font-family: var(--typography-headingfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-book, 500);\n font-size: var(--font-size-heading-5-desktop, 20px);\n line-height: var(--line-height-heading-relaxed, 1.2);\n letter-spacing: var(--letter-spacing-heading, -0.02em);\n color: var(--colour-typography-heading-primary, var(--colour-brand-inkwell, #14343b));\n padding: 0;\n margin: 0 0 12px 0;\n width: 100%;\n}\n\n/* Items container */\n.items {\n display: flex;\n}\n\n/* Vertical layout */\n.items.orientation-vertical {\n flex-direction: column;\n gap: 8px;\n align-items: flex-start;\n}\n\n/* Horizontal layout */\n.items.orientation-horizontal {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 28px;\n align-items: center;\n}\n\n/* Slotted content styling */\n::slotted(*) {\n flex-shrink: 0;\n}\n\n/* Full width items in vertical layout */\n.items.orientation-vertical ::slotted(*) {\n width: 100%;\n}\n","import { Component, h, Prop, Host } from '@stencil/core';\n\n/**\n * Fieldset component for grouping related form controls.\n * Supports vertical and horizontal layouts with an optional legend/heading.\n * \n * @slot - Form controls (checkboxes, radios, etc.)\n */\n@Component({\n tag: 'af-fieldset',\n styleUrl: 'af-fieldset.css',\n shadow: true\n})\nexport class AfFieldset {\n /**\n * The legend/heading text for the fieldset\n */\n @Prop() legend?: string;\n\n /**\n * The layout orientation of the fieldset items\n * - `vertical` - Items stack vertically (default)\n * - `horizontal` - Items are laid out horizontally\n */\n @Prop() orientation: 'vertical' | 'horizontal' = 'vertical';\n\n /**\n * Whether the fieldset is disabled (disables all child controls)\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n render() {\n const fieldsetClasses = {\n 'fieldset': true,\n [`orientation-${this.orientation}`]: true,\n 'disabled': this.disabled\n };\n\n const itemsClasses = {\n 'items': true,\n [`orientation-${this.orientation}`]: true\n };\n\n return (\n <Host>\n <fieldset class={fieldsetClasses} disabled={this.disabled}>\n {this.legend && (\n <legend class=\"legend\">{this.legend}</legend>\n )}\n <div class={itemsClasses}>\n <slot></slot>\n </div>\n </fieldset>\n </Host>\n );\n }\n}\n\n"],"names":["h","Host"],"mappings":";;;;AAAA,MAAM,aAAa,GAAG,g1BAAg1B;;MCaz1B,UAAU,GAAA,MAAA;AALvB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAWE;;;;AAIG;AACK,QAAA,IAAW,CAAA,WAAA,GAA8B,UAAU;AAE3D;;AAEG;AACsB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AA2BnD;IAzBC,MAAM,GAAA;AACJ,QAAA,MAAM,eAAe,GAAG;AACtB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,CAAC,eAAe,IAAI,CAAC,WAAW,CAAE,CAAA,GAAG,IAAI;YACzC,UAAU,EAAE,IAAI,CAAC;SAClB;AAED,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,CAAC,eAAe,IAAI,CAAC,WAAW,CAAE,CAAA,GAAG;SACtC;AAED,QAAA,QACEA,QAACC,UAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACHD,OAAU,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAA,EACtD,IAAI,CAAC,MAAM,KACVA,OAAQ,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,QAAQ,EAAE,EAAA,IAAI,CAAC,MAAM,CAAU,CAC9C,EACDA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,YAAY,EAAA,EACtBA,OAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACG,CACN;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DfEVhbS6.js');
3
+ var index = require('./index-ybEiHT0b.js');
4
4
 
5
5
  const afFooterColumnCss = ".sc-af-footer-column-h{display:block}.footer-column.sc-af-footer-column{display:flex;flex-direction:column;gap:16px}.footer-column__heading.sc-af-footer-column{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:600;color:var(--colour-tints-mistGreen-200, #C6D5D1);margin:0;text-transform:none}.footer-column__list.sc-af-footer-column{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.footer-column__list.sc-af-footer-column-s>li,.footer-column__list .sc-af-footer-column-s>li{margin:0}";
6
6
 
@@ -11,7 +11,7 @@ const AfFooterColumn = class {
11
11
  this.heading = '';
12
12
  }
13
13
  render() {
14
- return (index.h(index.Host, { key: '4725b29d110800bac1faec33016a469bc4f9048e' }, index.h("div", { key: 'ad7d4a123027f6395bc56a70c59586390799f3ff', class: "footer-column" }, this.heading && (index.h("h5", { key: '4fd379858460d92e59e077f3c96719e0e65044c5', class: "footer-column__heading" }, this.heading)), index.h("ul", { key: '17e4adc50c90b4b7f71abe605672d7e63a424c51', class: "footer-column__list" }, index.h("slot", { key: 'c88bf1c9e6ba0a00ca9c9d22fe17508b7a891d44' })))));
14
+ return (index.h(index.Host, { key: '90953efd8907072a4a9c336f5a47eafe0317af61' }, index.h("div", { key: 'cef4b4554d8384e86e24c6329f35a8d9eadf6f44', class: "footer-column" }, this.heading && (index.h("h5", { key: '22119f6749453837427dc0438254b271f13d81f6', class: "footer-column__heading" }, this.heading)), index.h("ul", { key: '6a51a9e7e210654d410842b6b2e9c76054c0ecb8', class: "footer-column__list" }, index.h("slot", { key: '5bc741d972164228b460f30981cc306cdd7435fa' })))));
15
15
  }
16
16
  };
17
17
  AfFooterColumn.style = afFooterColumnCss;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DfEVhbS6.js');
3
+ var index = require('./index-ybEiHT0b.js');
4
4
 
5
5
  const afFooterLinkCss = ".sc-af-footer-link-h{display:contents}li.sc-af-footer-link{margin:0;list-style:none}.footer-link.sc-af-footer-link{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:400;color:rgba(198, 213, 209, 0.7);text-decoration:none;transition:color 0.2s ease;display:inline-flex;align-items:center;gap:6px}.footer-link.sc-af-footer-link:hover{color:var(--colour-tints-mistGreen-200, #C6D5D1)}.footer-link__external-icon.sc-af-footer-link{opacity:0.7;flex-shrink:0}";
6
6
 
@@ -13,7 +13,7 @@ const AfFooterLink = class {
13
13
  this.external = false;
14
14
  }
15
15
  render() {
16
- return (index.h(index.Host, { key: 'bd5e75cc92ab3bbf50edb472f7522ab3d1c0f56d' }, index.h("li", { key: '45f8e447b46a79af851c5ac0d7329101e9da4061' }, index.h("a", { key: '569de0a6bd3ef8171507e4fa7d1cf52d707e8eb7', href: this.href, class: "footer-link", target: this.external ? '_blank' : undefined, rel: this.external ? 'noopener noreferrer' : undefined }, index.h("slot", { key: '29cdfcec2c4357b2326fbae766c6a5bcb3c0b4c4' }), this.external && (index.h("svg", { key: '9f2d82cb5a93836c308feca7e3748980b88e2cbe', class: "footer-link__external-icon", width: "12", height: "12", viewBox: "0 0 12 12", fill: "none" }, index.h("path", { key: '40543ee1f0ca0e718a12ebc7b592cd9520bd6dd7', d: "M10 6.5v3a1 1 0 0 1-1 1H2.5a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3M7.5 1.5h3v3M5.5 6.5l5-5", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round", "stroke-linejoin": "round" })))))));
16
+ return (index.h(index.Host, { key: '121d2b0936ddfa70eb6a2db79fc0ae41b28245a8' }, index.h("li", { key: '8528d61539f57e05277b3af353d22e43f61e6c52' }, index.h("a", { key: '05da59ba1868f89e6cc849428b784d530158c0c8', href: this.href, class: "footer-link", target: this.external ? '_blank' : undefined, rel: this.external ? 'noopener noreferrer' : undefined }, index.h("slot", { key: '33aa087cc0634c62e79df7fa210c897720845623' }), this.external && (index.h("svg", { key: 'e024e5e1768b11d113943af0c48a0ae894f4d76d', class: "footer-link__external-icon", width: "12", height: "12", viewBox: "0 0 12 12", fill: "none" }, index.h("path", { key: 'c0ccfe70f94d6df8057ccd1c8ea151e27b9c2dc5', d: "M10 6.5v3a1 1 0 0 1-1 1H2.5a1 1 0 0 1-1-1V3a1 1 0 0 1 1-1h3M7.5 1.5h3v3M5.5 6.5l5-5", stroke: "currentColor", "stroke-width": "1.2", "stroke-linecap": "round", "stroke-linejoin": "round" })))))));
17
17
  }
18
18
  };
19
19
  AfFooterLink.style = afFooterLinkCss;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-DfEVhbS6.js');
3
+ var index = require('./index-ybEiHT0b.js');
4
4
 
5
5
  const afFooterCss = ".sc-af-footer-h{display:block}.footer.sc-af-footer{background-color:var(--colour-brand-inkwell, #14343b);color:var(--colour-tints-mistGreen-200, #C6D5D1);padding:120px 0 0}.footer__container.sc-af-footer{max-width:1280px;margin:0 auto;padding:0 24px}.footer__top.sc-af-footer{display:grid;grid-template-columns:380px 1fr;gap:48px;padding-bottom:48px}.footer__brand.sc-af-footer{display:flex;flex-direction:column;gap:16px}.footer__brand-card.sc-af-footer{background-color:rgba(198, 213, 209, 0.08);border-radius:16px;padding:32px}.footer__logo.sc-af-footer{margin-bottom:24px}.footer__logo.sc-af-footer svg.sc-af-footer,.footer__logo.sc-af-footer img.sc-af-footer{height:32px;width:auto}.footer__social.sc-af-footer{display:flex;gap:12px}.footer__social-link.sc-af-footer{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border:1px solid rgba(198, 213, 209, 0.3);border-radius:50%;color:var(--colour-tints-mistGreen-200, #C6D5D1);transition:all 0.2s ease}.footer__social-link.sc-af-footer:hover{background-color:rgba(198, 213, 209, 0.1);border-color:rgba(198, 213, 209, 0.5)}.footer__contact-card.sc-af-footer{background-color:rgba(198, 213, 209, 0.08);border-radius:16px;padding:24px 32px;display:flex;flex-direction:column;gap:20px}.footer__contact-item.sc-af-footer{display:flex;flex-direction:column;gap:4px}.footer__contact-label.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:600;color:var(--colour-tints-mistGreen-200, #C6D5D1);margin:0}.footer__contact-value.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:400;color:rgba(198, 213, 209, 0.7);margin:0}.footer__nav.sc-af-footer{display:flex;flex-direction:column;justify-content:space-between}.footer__nav-columns.sc-af-footer{display:grid;grid-template-columns:repeat(4, 1fr);gap:32px}.footer__nav-column.sc-af-footer{display:flex;flex-direction:column;gap:16px}.footer__nav-heading.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:600;color:var(--colour-tints-mistGreen-200, #C6D5D1);margin:0;text-transform:none}.footer__nav-list.sc-af-footer{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.footer__nav-list.sc-af-footer li.sc-af-footer{margin:0}.footer__nav-list.sc-af-footer a.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;font-weight:400;color:rgba(198, 213, 209, 0.7);text-decoration:none;transition:color 0.2s ease;display:inline-flex;align-items:center;gap:6px}.footer__nav-list.sc-af-footer a.sc-af-footer:hover{color:var(--colour-tints-mistGreen-200, #C6D5D1)}.footer__external-icon.sc-af-footer{opacity:0.7;flex-shrink:0}.footer__status.sc-af-footer{display:flex;align-items:center;gap:8px;margin-top:32px;padding-top:24px;border-top:1px solid rgba(198, 213, 209, 0.1)}.footer__status-dot.sc-af-footer{width:10px;height:10px;border-radius:50%;flex-shrink:0}.footer__status-dot--operational.sc-af-footer{background-color:#22c55e}.footer__status-dot--issue.sc-af-footer{background-color:#ef4444}.footer__status-text.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;color:rgba(198, 213, 209, 0.7)}.footer__status-link.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;color:var(--colour-tints-mistGreen-200, #C6D5D1);text-decoration:underline;text-underline-offset:2px;margin-left:8px}.footer__status-link.sc-af-footer:hover{text-decoration:none}.footer__bottom.sc-af-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:24px;padding:24px 0;border-top:1px solid rgba(198, 213, 209, 0.1);background-color:rgba(198, 213, 209, 0.05);margin:0 -24px;padding-left:24px;padding-right:24px}.footer__copyright.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;color:rgba(198, 213, 209, 0.7);margin:0}.footer__legal.sc-af-footer{display:flex;gap:24px}.footer__legal.sc-af-footer a.sc-af-footer{font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-size:14px;color:rgba(198, 213, 209, 0.7);text-decoration:underline;text-underline-offset:2px}.footer__legal.sc-af-footer a.sc-af-footer:hover{color:var(--colour-tints-mistGreen-200, #C6D5D1);text-decoration:none}.footer__badges.sc-af-footer{display:flex;gap:16px;align-items:center}.footer__badge.sc-af-footer{width:48px;height:48px;display:flex;align-items:center;justify-content:center}.footer__badge.sc-af-footer svg.sc-af-footer{width:100%;height:100%}@media (max-width: 1024px){.footer__top.sc-af-footer{grid-template-columns:1fr;gap:48px}.footer__brand.sc-af-footer{flex-direction:row;gap:16px}.footer__brand-card.sc-af-footer,.footer__contact-card.sc-af-footer{flex:1}}@media (max-width: 768px){.footer.sc-af-footer{padding:48px 0 0}.footer__top.sc-af-footer{gap:32px}.footer__brand.sc-af-footer{flex-direction:column}.footer__nav-columns.sc-af-footer{grid-template-columns:repeat(2, 1fr);gap:32px}.footer__bottom.sc-af-footer{flex-direction:column;align-items:flex-start;gap:16px}.footer__legal.sc-af-footer{flex-wrap:wrap;gap:16px}}@media (max-width: 480px){.footer__container.sc-af-footer{padding:0 16px}.footer__brand-card.sc-af-footer,.footer__contact-card.sc-af-footer{padding:24px}.footer__nav-columns.sc-af-footer{grid-template-columns:1fr;gap:24px}.footer__bottom.sc-af-footer{margin:0 -16px;padding-left:16px;padding-right:16px}.footer__badges.sc-af-footer{width:100%;justify-content:flex-start}}";
6
6
 
@@ -19,7 +19,7 @@ const AfFooter = class {
19
19
  this.showStatus = true;
20
20
  }
21
21
  render() {
22
- return (index.h(index.Host, { key: '0ead00f00cafcba90071c76f4cb86d6abb1a8e9b' }, index.h("footer", { key: '1e29dad6f35c3a0a7c7acf6bde94d7d26c9f3518', class: "footer" }, index.h("div", { key: '92921a50cbb917fb797a1cd396ea326626be2672', class: "footer__container" }, index.h("div", { key: 'fb7f0c881a3540149af3fd5c9ce5cf4fcf4dc463', class: "footer__top" }, index.h("div", { key: 'dfbab144d98aaa7c5bdeac21b2f7059c2c35c3a2', class: "footer__brand" }, index.h("div", { key: '70a5b6514a32f48e239eed456625b00e5480d515', class: "footer__brand-card" }, index.h("div", { key: '29cebd0316e5e05125545ddc4a6daff19d045569', class: "footer__logo" }, index.h("slot", { key: '1bf39b815103c7ad1ddd9a1a480e1c0ba229e940', name: "logo" })), index.h("div", { key: 'ece78ebc0a579a1425e761e75e91dfe048963057', class: "footer__social" }, index.h("slot", { key: '77713bb66e6a687cfe703af581477112af5a2a56', name: "social" }))), index.h("div", { key: '1224cc9b12934d9a8fc3ead8cb0e78483b391955', class: "footer__contact-card" }, index.h("slot", { key: '3d9ca05b638de9ef155be333ee430107074c933d', name: "contact" }))), index.h("div", { key: '2de06953b17dc7317b6b37c7a5468459efdd11ca', class: "footer__nav" }, index.h("div", { key: '14875d9d7c74722eb703c8c3691ccfc8c1790915', class: "footer__nav-columns" }, index.h("slot", { key: '477ab833a047495184f671fe0767736963a4ecb6', name: "nav" })), this.showStatus && (index.h("div", { key: 'f6e59d3e541d5d7e3688d0ea1f6c24742894fa04', class: "footer__status" }, index.h("span", { key: 'f073d332a366619573ec4b5535117ccc56eed0dc', class: `footer__status-dot ${this.systemsOperational ? 'footer__status-dot--operational' : 'footer__status-dot--issue'}` }), index.h("span", { key: '467e8e24c56e240b84eacd80f390db29ce30d3ac', class: "footer__status-text" }, this.statusText), this.statusUrl && (index.h("a", { key: '630dc864ceabac404a118c8525fe16edd381a28a', href: this.statusUrl, target: "_blank", rel: "noopener noreferrer", class: "footer__status-link" }, "Learn more")))))), index.h("div", { key: '64db3298cdef7d1651234f19319a7aead0fc66ed', class: "footer__bottom" }, this.copyrightText && (index.h("p", { key: 'b268e4cfe2414f94a28492af15bfd3d2b3d53767', class: "footer__copyright" }, this.copyrightText)), index.h("div", { key: '82af0bd4b7310ff9e783b74fbccca3e2df437c86', class: "footer__legal" }, index.h("slot", { key: 'e3cd11fd6f41a577a2452f8e48d524e3a6a2ea46', name: "legal" })), index.h("div", { key: 'b0d6caf4168e1013d682f0b36a480607343cfd6f', class: "footer__badges" }, index.h("slot", { key: '28e7722adc3f88f968c478957d21aa55c451d553', name: "badges" })))))));
22
+ return (index.h(index.Host, { key: '58d15bfa72370f9d72767081d7d821ce7e5cfcad' }, index.h("footer", { key: 'f53cc2cb44f334bc6709344d11663bbc8facbde4', class: "footer" }, index.h("div", { key: 'ad17b47d33fad7fea79fee647817ee8dceade8b8', class: "footer__container" }, index.h("div", { key: '24bf87ec90f567b260fdc3bd7f70c76fc72789bc', class: "footer__top" }, index.h("div", { key: '272bbb94a4d889579b9991c016165a7376559024', class: "footer__brand" }, index.h("div", { key: 'f1a892dab1d6ce935451978ae4584dfd0d50bca4', class: "footer__brand-card" }, index.h("div", { key: '15818798cdfd09873836e109472556a224a40f56', class: "footer__logo" }, index.h("slot", { key: 'd753c7044f3870ec66cf37da700cc2bf2aceda2c', name: "logo" })), index.h("div", { key: '2660af6bab2666242dfffe25dc81e050693d024e', class: "footer__social" }, index.h("slot", { key: '76dd64ed787aaa4698ca3687673b32899ed4a6a2', name: "social" }))), index.h("div", { key: '71c365eae2e2f2748cf42978179a1047d51dd391', class: "footer__contact-card" }, index.h("slot", { key: 'df48c5734759ac12a8ef398cf5002c793f02a309', name: "contact" }))), index.h("div", { key: 'b78002e34cc197ab9157697c48eeded05a3acdcd', class: "footer__nav" }, index.h("div", { key: '715717dd80882654ca91ccaf5474953b827f08a3', class: "footer__nav-columns" }, index.h("slot", { key: '062c88854fbd11d4c007e7daf166828db8db2131', name: "nav" })), this.showStatus && (index.h("div", { key: '39cd615cff666e79f0ed91ef90f6ad414f89addd', class: "footer__status" }, index.h("span", { key: '8396b890dc62b5f65c9ba5eaff2db72b83709a2a', class: `footer__status-dot ${this.systemsOperational ? 'footer__status-dot--operational' : 'footer__status-dot--issue'}` }), index.h("span", { key: '5266b10f2e2e8129425cd61acd0865cc6be38ec0', class: "footer__status-text" }, this.statusText), this.statusUrl && (index.h("a", { key: 'c4e999a03cbb89eaaaae079250c9eda8756ca8d6', href: this.statusUrl, target: "_blank", rel: "noopener noreferrer", class: "footer__status-link" }, "Learn more")))))), index.h("div", { key: '354acdb5d3442c876affc6e44c0e3541a27ff06f', class: "footer__bottom" }, this.copyrightText && (index.h("p", { key: '677a8291f263b026a01855422fc08ddd7fb69b89', class: "footer__copyright" }, this.copyrightText)), index.h("div", { key: '46b34f1634c53ff716c53ee575e1894c60b056e8', class: "footer__legal" }, index.h("slot", { key: 'f7ed01d5374e9c7d627ccf47413f62f7ab049ae7', name: "legal" })), index.h("div", { key: 'db6a6911e45c9c50e2c53d21e4aab25d3aa331f7', class: "footer__badges" }, index.h("slot", { key: '1fa6134c03aac63734592e4325663a1e91f92f02', name: "badges" })))))));
23
23
  }
24
24
  };
25
25
  AfFooter.style = afFooterCss;
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-ybEiHT0b.js');
4
+
5
+ const afGridCalloutCss = ".sc-af-grid-callout-h{display:block;width:100%}.grid-callout.sc-af-grid-callout{display:flex;width:100%;gap:40px;align-items:stretch}.grid-callout__image-container.sc-af-grid-callout{flex:0 0 auto;width:45%;min-height:400px;position:relative;overflow:hidden}.grid-callout--image-left.sc-af-grid-callout .grid-callout__image-container.sc-af-grid-callout{border-radius:0 4000px 4000px 0;margin-left:calc(-1 * var(--container-padding, 80px))}.grid-callout--image-right.sc-af-grid-callout .grid-callout__image-container.sc-af-grid-callout{border-radius:4000px 0 0 4000px;margin-right:calc(-1 * var(--container-padding, 80px))}.grid-callout__image.sc-af-grid-callout{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.grid-callout__content.sc-af-grid-callout{flex:1;display:flex;flex-direction:column;gap:48px;padding:40px 0}.grid-callout--image-left.sc-af-grid-callout .grid-callout__content.sc-af-grid-callout{padding-left:40px}.grid-callout--image-right.sc-af-grid-callout .grid-callout__content.sc-af-grid-callout{padding-right:40px}.grid-callout--no-image.sc-af-grid-callout{flex-direction:column}.grid-callout--no-image.sc-af-grid-callout .grid-callout__content.sc-af-grid-callout{padding:0}.grid-callout__heading.sc-af-grid-callout{max-width:840px}.grid-callout__items.sc-af-grid-callout{display:grid;gap:40px;width:100%}.grid-callout__items--cols-2.sc-af-grid-callout{grid-template-columns:repeat(2, 1fr)}.grid-callout__items--cols-3.sc-af-grid-callout{grid-template-columns:repeat(3, 1fr)}.grid-callout__items--cols-4.sc-af-grid-callout{grid-template-columns:repeat(4, 1fr)}.grid-callout__cta.sc-af-grid-callout{display:flex;gap:12px;flex-wrap:wrap}.grid-callout__cta.sc-af-grid-callout:empty{display:none}@media (max-width: 1024px){.grid-callout.sc-af-grid-callout{gap:32px}.grid-callout__image-container.sc-af-grid-callout{width:40%}.grid-callout__content.sc-af-grid-callout{gap:40px}.grid-callout__items--cols-3.sc-af-grid-callout,.grid-callout__items--cols-4.sc-af-grid-callout{grid-template-columns:repeat(2, 1fr)}.grid-callout__items.sc-af-grid-callout{gap:32px}}@media (max-width: 768px){.grid-callout.sc-af-grid-callout{flex-direction:column;gap:32px}.grid-callout__image-container.sc-af-grid-callout{width:calc(100% + 2 * var(--container-padding, 20px));min-height:280px;margin-left:calc(-1 * var(--container-padding, 20px));margin-right:calc(-1 * var(--container-padding, 20px));border-radius:0}.grid-callout--image-left.sc-af-grid-callout .grid-callout__image-container.sc-af-grid-callout,.grid-callout--image-right.sc-af-grid-callout .grid-callout__image-container.sc-af-grid-callout{border-radius:0;margin-left:calc(-1 * var(--container-padding, 20px));margin-right:calc(-1 * var(--container-padding, 20px))}.grid-callout__content.sc-af-grid-callout{padding:0;gap:32px}.grid-callout--image-left.sc-af-grid-callout .grid-callout__content.sc-af-grid-callout,.grid-callout--image-right.sc-af-grid-callout .grid-callout__content.sc-af-grid-callout{padding-left:0;padding-right:0}.grid-callout__items.sc-af-grid-callout{grid-template-columns:1fr;gap:32px}.grid-callout__items--cols-2.sc-af-grid-callout,.grid-callout__items--cols-3.sc-af-grid-callout,.grid-callout__items--cols-4.sc-af-grid-callout{grid-template-columns:1fr}}";
6
+
7
+ const AfGridCallout = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ /**
11
+ * Alt text for the image (required for accessibility when imageSrc is provided)
12
+ */
13
+ this.imageAlt = '';
14
+ /**
15
+ * Position of the image relative to the content
16
+ */
17
+ this.imagePosition = 'left';
18
+ /**
19
+ * Number of columns for the IconText grid on desktop
20
+ */
21
+ this.columns = 2;
22
+ /**
23
+ * Heading size for the main title
24
+ */
25
+ this.headingSize = 2;
26
+ }
27
+ render() {
28
+ const hasImage = !!this.imageSrc;
29
+ const containerClasses = {
30
+ 'grid-callout': true,
31
+ 'grid-callout--has-image': hasImage,
32
+ 'grid-callout--no-image': !hasImage,
33
+ [`grid-callout--image-${this.imagePosition}`]: hasImage,
34
+ };
35
+ const gridClasses = {
36
+ 'grid-callout__items': true,
37
+ [`grid-callout__items--cols-${this.columns}`]: true,
38
+ };
39
+ const renderImage = () => {
40
+ if (!hasImage)
41
+ return null;
42
+ return (index.h("div", { class: "grid-callout__image-container" }, index.h("img", { src: this.imageSrc, alt: this.imageAlt, class: "grid-callout__image" })));
43
+ };
44
+ const renderContent = () => (index.h("div", { class: "grid-callout__content" }, index.h("af-typography-lockup", { headingSize: this.headingSize, textAlignment: "left", buttonAlignment: "vertical", class: "grid-callout__heading" }, index.h("slot", null), index.h("span", { slot: "description" }, index.h("slot", { name: "description" }))), index.h("div", { class: gridClasses }, index.h("slot", { name: "items" })), index.h("div", { class: "grid-callout__cta" }, index.h("slot", { name: "cta" }))));
45
+ return (index.h(index.Host, null, index.h("div", { class: containerClasses }, this.imagePosition === 'left' && renderImage(), renderContent(), this.imagePosition === 'right' && renderImage())));
46
+ }
47
+ };
48
+ AfGridCallout.style = afGridCalloutCss;
49
+
50
+ exports.af_grid_callout = AfGridCallout;
51
+ //# sourceMappingURL=af-grid-callout.entry.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"af-grid-callout.entry.cjs.js","sources":["src/components/af-grid-callout/af-grid-callout.css?tag=af-grid-callout&encapsulation=scoped","src/components/af-grid-callout/af-grid-callout.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.grid-callout {\n display: flex;\n width: 100%;\n gap: 40px;\n align-items: stretch;\n}\n\n/* ==========================================================================\n Image Container - Pill shape with rounded right edge\n ========================================================================== */\n\n.grid-callout__image-container {\n flex: 0 0 auto;\n width: 45%;\n min-height: 400px;\n position: relative;\n overflow: hidden;\n}\n\n/* Left position - rounded on right side */\n.grid-callout--image-left .grid-callout__image-container {\n border-radius: 0 4000px 4000px 0;\n margin-left: calc(-1 * var(--container-padding, 80px));\n}\n\n/* Right position - rounded on left side */\n.grid-callout--image-right .grid-callout__image-container {\n border-radius: 4000px 0 0 4000px;\n margin-right: calc(-1 * var(--container-padding, 80px));\n}\n\n.grid-callout__image {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n/* ==========================================================================\n Content Area\n ========================================================================== */\n\n.grid-callout__content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 48px;\n padding: 40px 0;\n}\n\n/* Add left padding when image is on left */\n.grid-callout--image-left .grid-callout__content {\n padding-left: 40px;\n}\n\n/* Add right padding when image is on right */\n.grid-callout--image-right .grid-callout__content {\n padding-right: 40px;\n}\n\n/* No image layout - full width content */\n.grid-callout--no-image {\n flex-direction: column;\n}\n\n.grid-callout--no-image .grid-callout__content {\n padding: 0;\n}\n\n.grid-callout__heading {\n max-width: 840px;\n}\n\n/* ==========================================================================\n Items Grid\n ========================================================================== */\n\n.grid-callout__items {\n display: grid;\n gap: 40px;\n width: 100%;\n}\n\n.grid-callout__items--cols-2 {\n grid-template-columns: repeat(2, 1fr);\n}\n\n.grid-callout__items--cols-3 {\n grid-template-columns: repeat(3, 1fr);\n}\n\n.grid-callout__items--cols-4 {\n grid-template-columns: repeat(4, 1fr);\n}\n\n/* ==========================================================================\n CTA Area\n ========================================================================== */\n\n.grid-callout__cta {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.grid-callout__cta:empty {\n display: none;\n}\n\n/* ==========================================================================\n Responsive - Tablet\n ========================================================================== */\n\n@media (max-width: 1024px) {\n .grid-callout {\n gap: 32px;\n }\n\n .grid-callout__image-container {\n width: 40%;\n }\n\n .grid-callout__content {\n gap: 40px;\n }\n\n .grid-callout__items--cols-3,\n .grid-callout__items--cols-4 {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .grid-callout__items {\n gap: 32px;\n }\n}\n\n/* ==========================================================================\n Responsive - Mobile\n ========================================================================== */\n\n@media (max-width: 768px) {\n .grid-callout {\n flex-direction: column;\n gap: 32px;\n }\n\n .grid-callout__image-container {\n width: calc(100% + 2 * var(--container-padding, 20px));\n min-height: 280px;\n margin-left: calc(-1 * var(--container-padding, 20px));\n margin-right: calc(-1 * var(--container-padding, 20px));\n border-radius: 0;\n }\n\n /* Reset rounded corners on mobile */\n .grid-callout--image-left .grid-callout__image-container,\n .grid-callout--image-right .grid-callout__image-container {\n border-radius: 0;\n margin-left: calc(-1 * var(--container-padding, 20px));\n margin-right: calc(-1 * var(--container-padding, 20px));\n }\n\n .grid-callout__content {\n padding: 0;\n gap: 32px;\n }\n\n .grid-callout--image-left .grid-callout__content,\n .grid-callout--image-right .grid-callout__content {\n padding-left: 0;\n padding-right: 0;\n }\n\n .grid-callout__items {\n grid-template-columns: 1fr;\n gap: 32px;\n }\n\n .grid-callout__items--cols-2,\n .grid-callout__items--cols-3,\n .grid-callout__items--cols-4 {\n grid-template-columns: 1fr;\n }\n}\n\n","import { Component, h, Prop, Host } from '@stencil/core';\n\n/**\n * GridCallout organism - a marketing section combining an optional pill-shaped image \n * with a grid of IconText feature items.\n * \n * Composes:\n * - Pill-shaped image container (optional)\n * - Heading via af-typography-lockup\n * - Grid of af-icon-text items\n * - Optional CTA button\n * \n * Inherits theme colors from parent af-section via CSS custom properties.\n * \n * @slot - Main heading text\n * @slot description - Optional description/subheading text\n * @slot items - IconText components for the feature grid\n * @slot cta - CTA button(s) at the bottom\n * \n * @example\n * ```html\n * <af-section theme=\"mist-green\">\n * <af-grid-callout image-src=\"/team.jpg\" image-alt=\"Team photo\">\n * Affinda blends AI and engineering\n * <span slot=\"description\">Optional description text.</span>\n * \n * <af-icon-text slot=\"items\" icon=\"settings\">\n * Feature One\n * <span slot=\"description\">Feature description.</span>\n * </af-icon-text>\n * \n * <af-button slot=\"cta\" variant=\"primary\">Learn more</af-button>\n * </af-grid-callout>\n * </af-section>\n * ```\n */\n@Component({\n tag: 'af-grid-callout',\n styleUrl: 'af-grid-callout.css',\n shadow: false,\n scoped: true,\n})\nexport class AfGridCallout {\n /**\n * Image source URL for the pill-shaped image\n */\n @Prop() imageSrc?: string;\n\n /**\n * Alt text for the image (required for accessibility when imageSrc is provided)\n */\n @Prop() imageAlt: string = '';\n\n /**\n * Position of the image relative to the content\n */\n @Prop() imagePosition: 'left' | 'right' = 'left';\n\n /**\n * Number of columns for the IconText grid on desktop\n */\n @Prop() columns: 2 | 3 | 4 = 2;\n\n /**\n * Heading size for the main title\n */\n @Prop() headingSize: 1 | 2 | 3 | 4 | 5 = 2;\n\n render() {\n const hasImage = !!this.imageSrc;\n \n const containerClasses = {\n 'grid-callout': true,\n 'grid-callout--has-image': hasImage,\n 'grid-callout--no-image': !hasImage,\n [`grid-callout--image-${this.imagePosition}`]: hasImage,\n };\n\n const gridClasses = {\n 'grid-callout__items': true,\n [`grid-callout__items--cols-${this.columns}`]: true,\n };\n\n const renderImage = () => {\n if (!hasImage) return null;\n \n return (\n <div class=\"grid-callout__image-container\">\n <img \n src={this.imageSrc} \n alt={this.imageAlt}\n class=\"grid-callout__image\"\n />\n </div>\n );\n };\n\n const renderContent = () => (\n <div class=\"grid-callout__content\">\n <af-typography-lockup\n headingSize={this.headingSize}\n textAlignment=\"left\"\n buttonAlignment=\"vertical\"\n class=\"grid-callout__heading\"\n >\n <slot></slot>\n <span slot=\"description\">\n <slot name=\"description\"></slot>\n </span>\n </af-typography-lockup>\n\n <div class={gridClasses}>\n <slot name=\"items\"></slot>\n </div>\n\n <div class=\"grid-callout__cta\">\n <slot name=\"cta\"></slot>\n </div>\n </div>\n );\n\n return (\n <Host>\n <div class={containerClasses}>\n {this.imagePosition === 'left' && renderImage()}\n {renderContent()}\n {this.imagePosition === 'right' && renderImage()}\n </div>\n </Host>\n );\n }\n}\n\n"],"names":["h","Host"],"mappings":";;;;AAAA,MAAM,gBAAgB,GAAG,wrGAAwrG;;MC0CpsG,aAAa,GAAA,MAAA;AAN1B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAYE;;AAEG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAW,EAAE;AAE7B;;AAEG;AACK,QAAA,IAAa,CAAA,aAAA,GAAqB,MAAM;AAEhD;;AAEG;AACK,QAAA,IAAO,CAAA,OAAA,GAAc,CAAC;AAE9B;;AAEG;AACK,QAAA,IAAW,CAAA,WAAA,GAAsB,CAAC;AAiE3C;IA/DC,MAAM,GAAA;AACJ,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ;AAEhC,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,yBAAyB,EAAE,QAAQ;YACnC,wBAAwB,EAAE,CAAC,QAAQ;AACnC,YAAA,CAAC,uBAAuB,IAAI,CAAC,aAAa,CAAE,CAAA,GAAG,QAAQ;SACxD;AAED,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,qBAAqB,EAAE,IAAI;AAC3B,YAAA,CAAC,6BAA6B,IAAI,CAAC,OAAO,CAAE,CAAA,GAAG,IAAI;SACpD;QAED,MAAM,WAAW,GAAG,MAAK;AACvB,YAAA,IAAI,CAAC,QAAQ;AAAE,gBAAA,OAAO,IAAI;AAE1B,YAAA,QACEA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,+BAA+B,EAAA,EACxCA,OAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,GAAG,EAAE,IAAI,CAAC,QAAQ,EAClB,KAAK,EAAC,qBAAqB,EAC3B,CAAA,CACE;AAEV,SAAC;QAED,MAAM,aAAa,GAAG,OACpBA,OAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAC,uBAAuB,EAAA,EAChCA,OAAA,CAAA,sBAAA,EAAA,EACE,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,aAAa,EAAC,MAAM,EACpB,eAAe,EAAC,UAAU,EAC1B,KAAK,EAAC,uBAAuB,EAAA,EAE7BA,OAAa,CAAA,MAAA,EAAA,IAAA,CAAA,EACbA,OAAM,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,aAAa,EAAA,EACtBA,OAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAC,aAAa,EAAA,CAAQ,CAC3B,CACc,EAEvBA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,WAAW,EAAA,EACrBA,OAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAC,OAAO,EAAA,CAAQ,CACtB,EAENA,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,mBAAmB,EAAA,EAC5BA,OAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAC,KAAK,GAAQ,CACpB,CACF,CACP;AAED,QAAA,QACEA,QAACC,UAAI,EAAA,IAAA,EACHD,OAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,gBAAgB,EAAA,EACzB,IAAI,CAAC,aAAa,KAAK,MAAM,IAAI,WAAW,EAAE,EAC9C,aAAa,EAAE,EACf,IAAI,CAAC,aAAa,KAAK,OAAO,IAAI,WAAW,EAAE,CAC5C,CACD;;;;;;;"}