@affinda/wc 0.0.21 → 0.0.22

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 (894) hide show
  1. package/dist/affinda/affinda.css +1 -1
  2. package/dist/affinda/affinda.esm.js +1 -2
  3. package/dist/affinda/index.esm.js +1 -2
  4. package/dist/affinda/p-00a226ba.entry.js +1 -0
  5. package/dist/affinda/p-020bd9db.entry.js +1 -0
  6. package/dist/affinda/p-0264279f.entry.js +1 -0
  7. package/dist/affinda/p-08dc48a4.entry.js +1 -0
  8. package/dist/affinda/p-09184969.entry.js +1 -0
  9. package/dist/affinda/p-0ae3495c.entry.js +1 -0
  10. package/dist/affinda/p-0c6b7f0b.entry.js +1 -0
  11. package/dist/affinda/p-14c85efd.entry.js +1 -0
  12. package/dist/affinda/p-20fe557e.entry.js +1 -0
  13. package/dist/affinda/p-26a60b00.entry.js +1 -0
  14. package/dist/affinda/p-289cb56f.entry.js +1 -0
  15. package/dist/affinda/p-29d0a985.entry.js +1 -0
  16. package/dist/affinda/p-2c0c94c5.entry.js +1 -0
  17. package/dist/affinda/p-2ce405df.entry.js +1 -0
  18. package/dist/affinda/p-2d4c1202.entry.js +1 -0
  19. package/dist/affinda/p-2f1e0c44.entry.js +1 -0
  20. package/dist/affinda/p-3899a278.entry.js +1 -0
  21. package/dist/affinda/p-404f2cea.entry.js +1 -0
  22. package/dist/affinda/p-468d16b1.entry.js +1 -0
  23. package/dist/affinda/p-46efe4e4.entry.js +1 -0
  24. package/dist/affinda/p-5136a894.entry.js +1 -0
  25. package/dist/affinda/{p-6af1634a.entry.js → p-54d85947.entry.js} +1 -2
  26. package/dist/affinda/p-589a860a.entry.js +1 -0
  27. package/dist/affinda/p-63e86a14.entry.js +1 -0
  28. package/dist/affinda/p-6c99b2bb.entry.js +1 -0
  29. package/dist/affinda/p-7ed6ee6a.entry.js +1 -0
  30. package/dist/affinda/p-81de8fbd.entry.js +1 -0
  31. package/dist/affinda/p-81eb85ec.entry.js +1 -0
  32. package/dist/affinda/p-854f6a9e.entry.js +1 -0
  33. package/dist/affinda/p-8742f8fe.entry.js +1 -0
  34. package/dist/affinda/p-8c394de2.entry.js +1 -0
  35. package/dist/affinda/p-9018ddec.entry.js +1 -0
  36. package/dist/affinda/p-90edefa8.entry.js +1 -0
  37. package/dist/affinda/p-9fea6229.entry.js +1 -0
  38. package/dist/affinda/p-CPfAC9fk.js +2 -0
  39. package/dist/affinda/p-a5179afb.entry.js +1 -0
  40. package/dist/affinda/p-a5f7d3d6.entry.js +1 -0
  41. package/dist/affinda/p-a8af25d5.entry.js +1 -0
  42. package/dist/affinda/p-ace3c850.entry.js +1 -0
  43. package/dist/affinda/p-ae43f07b.entry.js +1 -0
  44. package/dist/affinda/p-aec05709.entry.js +1 -0
  45. package/dist/affinda/p-af9e25ea.entry.js +1 -0
  46. package/dist/affinda/p-b477c08a.entry.js +1 -0
  47. package/dist/affinda/p-b9f58a18.entry.js +1 -0
  48. package/dist/affinda/p-bd3f81fc.entry.js +1 -0
  49. package/dist/affinda/p-ca14e17a.entry.js +1 -0
  50. package/dist/affinda/p-cb889d6b.entry.js +1 -0
  51. package/dist/affinda/p-cbf0911b.entry.js +1 -0
  52. package/dist/affinda/{p-2e750d43.entry.js → p-cf4d0d8e.entry.js} +1 -2
  53. package/dist/affinda/p-cfb90374.entry.js +1 -0
  54. package/dist/affinda/p-d7129564.entry.js +1 -0
  55. package/dist/affinda/p-d9cfea73.entry.js +1 -0
  56. package/dist/affinda/p-df7b1b09.entry.js +1 -0
  57. package/dist/affinda/p-e0915179.entry.js +1 -0
  58. package/dist/affinda/p-e3cd6671.entry.js +1 -0
  59. package/dist/affinda/p-e61dfb97.entry.js +1 -0
  60. package/dist/affinda/p-e6b4761c.entry.js +1 -0
  61. package/dist/affinda/p-ecab0884.entry.js +1 -0
  62. package/dist/affinda/p-ef754e65.entry.js +1 -0
  63. package/dist/affinda/p-f3d5d1be.entry.js +1 -0
  64. package/dist/affinda/p-f79781ff.entry.js +1 -0
  65. package/dist/affinda/p-f825b81f.entry.js +1 -0
  66. package/dist/affinda/p-fc1452ba.entry.js +1 -0
  67. package/dist/affinda/p-ffdd2c30.entry.js +1 -0
  68. package/dist/cjs/af-accordion-item.cjs.entry.js +7 -6
  69. package/dist/cjs/af-accordion.cjs.entry.js +7 -6
  70. package/dist/cjs/af-aspect-ratio.cjs.entry.js +3 -4
  71. package/dist/cjs/af-button-group.cjs.entry.js +4 -5
  72. package/dist/cjs/af-button.cjs.entry.js +3 -4
  73. package/dist/cjs/af-card.cjs.entry.js +4 -5
  74. package/dist/cjs/af-center.cjs.entry.js +4 -5
  75. package/dist/cjs/af-checkbox.cjs.entry.js +4 -5
  76. package/dist/cjs/af-client-carousel.cjs.entry.js +4 -5
  77. package/dist/cjs/af-color-swatch.cjs.entry.js +3 -4
  78. package/dist/cjs/af-contact-item.cjs.entry.js +4 -5
  79. package/dist/cjs/af-container.cjs.entry.js +3 -4
  80. package/dist/cjs/af-divider.cjs.entry.js +4 -5
  81. package/dist/cjs/af-feature-accordion.cjs.entry.js +8 -7
  82. package/dist/cjs/af-feature-card.cjs.entry.js +3 -4
  83. package/dist/cjs/af-feature-grid.cjs.entry.js +7 -6
  84. package/dist/cjs/af-fieldset.cjs.entry.js +4 -5
  85. package/dist/cjs/af-footer-column.cjs.entry.js +4 -5
  86. package/dist/cjs/af-footer-link.cjs.entry.js +4 -5
  87. package/dist/cjs/af-footer.cjs.entry.js +4 -5
  88. package/dist/cjs/af-grid-callout.cjs.entry.js +3 -4
  89. package/dist/cjs/af-grid.cjs.entry.js +5 -6
  90. package/dist/cjs/af-heading_5.cjs.entry.js +49 -14
  91. package/dist/cjs/af-icon-box.cjs.entry.js +4 -5
  92. package/dist/cjs/af-icon-button.cjs.entry.js +3 -4
  93. package/dist/cjs/af-icon-text.cjs.entry.js +4 -5
  94. package/dist/cjs/af-icon.cjs.entry.js +3 -4
  95. package/dist/cjs/af-illustrated-card.cjs.entry.js +4 -5
  96. package/dist/cjs/af-image.cjs.entry.js +4 -5
  97. package/dist/cjs/af-in-page-banner.cjs.entry.js +4 -5
  98. package/dist/cjs/af-inline.cjs.entry.js +4 -5
  99. package/dist/cjs/af-input.cjs.entry.js +4 -5
  100. package/dist/cjs/af-logo-well.cjs.entry.js +4 -5
  101. package/dist/cjs/af-nav-accordion-item.cjs.entry.js +8 -7
  102. package/dist/cjs/af-nav-accordion.cjs.entry.js +4 -5
  103. package/dist/cjs/af-nav-card.cjs.entry.js +3 -4
  104. package/dist/cjs/af-nav-menu-nest.cjs.entry.js +4 -5
  105. package/dist/cjs/af-nav-menu.cjs.entry.js +4 -5
  106. package/dist/cjs/af-number-badge.cjs.entry.js +4 -5
  107. package/dist/cjs/af-progress-line.cjs.entry.js +5 -6
  108. package/dist/cjs/af-radio.cjs.entry.js +4 -5
  109. package/dist/cjs/af-section.cjs.entry.js +5 -6
  110. package/dist/cjs/af-show.cjs.entry.js +4 -5
  111. package/dist/cjs/af-social-link.cjs.entry.js +4 -5
  112. package/dist/cjs/af-spacer.cjs.entry.js +4 -5
  113. package/dist/cjs/af-split-section.cjs.entry.js +5 -6
  114. package/dist/cjs/af-stack.cjs.entry.js +4 -5
  115. package/dist/cjs/af-stepper-step.cjs.entry.js +4 -5
  116. package/dist/cjs/af-stepper.cjs.entry.js +4 -5
  117. package/dist/cjs/af-switch.cjs.entry.js +4 -5
  118. package/dist/cjs/af-tab-bar.cjs.entry.js +4 -5
  119. package/dist/cjs/af-tab.cjs.entry.js +4 -5
  120. package/dist/cjs/af-tag.cjs.entry.js +5 -6
  121. package/dist/cjs/af-testimonial-carousel.cjs.entry.js +4 -5
  122. package/dist/cjs/af-testimonial-stat.cjs.entry.js +4 -5
  123. package/dist/cjs/af-testimonial.cjs.entry.js +5 -6
  124. package/dist/cjs/af-text-image-nest.cjs.entry.js +4 -5
  125. package/dist/cjs/af-text-image.cjs.entry.js +3 -4
  126. package/dist/cjs/af-textarea.cjs.entry.js +4 -5
  127. package/dist/cjs/af-theme-override.cjs.entry.js +4 -5
  128. package/dist/cjs/af-typography-lockup.cjs.entry.js +4 -5
  129. package/dist/cjs/af-video-container.cjs.entry.js +4 -5
  130. package/dist/cjs/af-visually-hidden.cjs.entry.js +4 -5
  131. package/dist/cjs/affinda.cjs.js +3 -4
  132. package/dist/cjs/{index-n-fnurTP.js → index-C1ry3YPK.js} +462 -260
  133. package/dist/cjs/index.cjs.js +20 -21
  134. package/dist/cjs/loader.cjs.js +2 -3
  135. package/dist/collection/collection-manifest.json +3 -2
  136. package/dist/collection/components/af-accordion/af-accordion.js +1 -2
  137. package/dist/collection/components/af-accordion-item/af-accordion-item.js +1 -2
  138. package/dist/collection/components/af-aspect-ratio/af-aspect-ratio.js +0 -1
  139. package/dist/collection/components/af-button/af-button.js +0 -1
  140. package/dist/collection/components/af-button-group/af-button-group.js +1 -2
  141. package/dist/collection/components/af-card/af-card.js +1 -2
  142. package/dist/collection/components/af-center/af-center.js +1 -2
  143. package/dist/collection/components/af-checkbox/af-checkbox.js +1 -2
  144. package/dist/collection/components/af-client-carousel/af-client-carousel.js +1 -2
  145. package/dist/collection/components/af-color-swatch/af-color-swatch.js +0 -1
  146. package/dist/collection/components/af-contact-item/af-contact-item.js +1 -2
  147. package/dist/collection/components/af-container/af-container.js +0 -1
  148. package/dist/collection/components/af-divider/af-divider.js +1 -2
  149. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +2 -3
  150. package/dist/collection/components/af-feature-card/af-feature-card.js +0 -1
  151. package/dist/collection/components/af-feature-grid/af-feature-grid.js +1 -2
  152. package/dist/collection/components/af-fieldset/af-fieldset.js +1 -2
  153. package/dist/collection/components/af-footer/af-footer.js +1 -2
  154. package/dist/collection/components/af-footer-column/af-footer-column.js +1 -2
  155. package/dist/collection/components/af-footer-link/af-footer-link.js +1 -2
  156. package/dist/collection/components/af-grid/af-grid.js +2 -3
  157. package/dist/collection/components/af-grid-callout/af-grid-callout.js +0 -1
  158. package/dist/collection/components/af-heading/af-heading.js +0 -1
  159. package/dist/collection/components/af-icon/af-icon.js +3 -3
  160. package/dist/collection/components/af-icon-box/af-icon-box.js +4 -4
  161. package/dist/collection/components/af-icon-button/af-icon-button.js +0 -1
  162. package/dist/collection/components/af-icon-text/af-icon-text.js +4 -4
  163. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +1 -2
  164. package/dist/collection/components/af-image/af-image.js +1 -2
  165. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js +1 -2
  166. package/dist/collection/components/af-inline/af-inline.js +1 -2
  167. package/dist/collection/components/af-input/af-input.js +1 -2
  168. package/dist/collection/components/af-logo/af-logo.js +1 -2
  169. package/dist/collection/components/af-logo-well/af-logo-well.js +1 -2
  170. package/dist/collection/components/af-nav-accordion/af-nav-accordion.js +1 -2
  171. package/dist/collection/components/af-nav-accordion-item/af-nav-accordion-item.js +2 -3
  172. package/dist/collection/components/af-nav-card/af-nav-card.js +0 -1
  173. package/dist/collection/components/af-nav-item/af-nav-item.js +0 -1
  174. package/dist/collection/components/af-nav-menu/af-nav-menu.js +1 -2
  175. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +1 -2
  176. package/dist/collection/components/af-navbar/af-navbar.js +47 -6
  177. package/dist/collection/components/af-number-badge/af-number-badge.js +1 -2
  178. package/dist/collection/components/af-progress-line/af-progress-line.js +2 -3
  179. package/dist/collection/components/af-radio/af-radio.js +1 -2
  180. package/dist/collection/components/af-section/af-section.js +2 -3
  181. package/dist/collection/components/af-show/af-show.js +1 -2
  182. package/dist/collection/components/af-social-link/af-social-link.js +1 -2
  183. package/dist/collection/components/af-spacer/af-spacer.js +1 -2
  184. package/dist/collection/components/af-split-section/af-split-section.js +2 -3
  185. package/dist/collection/components/af-stack/af-stack.js +1 -2
  186. package/dist/collection/components/af-stepper/af-stepper.js +1 -2
  187. package/dist/collection/components/af-stepper-step/af-stepper-step.js +1 -2
  188. package/dist/collection/components/af-switch/af-switch.js +1 -2
  189. package/dist/collection/components/af-tab/af-tab.js +1 -2
  190. package/dist/collection/components/af-tab-bar/af-tab-bar.js +1 -2
  191. package/dist/collection/components/af-tag/af-tag.js +2 -3
  192. package/dist/collection/components/af-testimonial/af-testimonial.js +2 -3
  193. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +1 -2
  194. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -2
  195. package/dist/collection/components/af-text/af-text.js +0 -1
  196. package/dist/collection/components/af-text-image/af-text-image.js +0 -1
  197. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +1 -2
  198. package/dist/collection/components/af-textarea/af-textarea.js +1 -2
  199. package/dist/collection/components/af-theme-override/af-theme-override.js +1 -2
  200. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +1 -2
  201. package/dist/collection/components/af-video-container/af-video-container.js +1 -2
  202. package/dist/collection/components/af-visually-hidden/af-visually-hidden.js +1 -2
  203. package/dist/collection/components.js +0 -1
  204. package/dist/collection/index.js +0 -1
  205. package/dist/components/af-accordion-item.js +1 -107
  206. package/dist/components/af-accordion.js +1 -128
  207. package/dist/components/af-aspect-ratio.js +1 -9
  208. package/dist/components/af-button-group.js +1 -9
  209. package/dist/components/af-button.js +1 -9
  210. package/dist/components/af-card.js +1 -9
  211. package/dist/components/af-center.js +1 -66
  212. package/dist/components/af-checkbox.js +1 -9
  213. package/dist/components/af-client-carousel.js +1 -53
  214. package/dist/components/af-color-swatch.js +1 -9
  215. package/dist/components/af-contact-item.js +1 -44
  216. package/dist/components/af-container.js +1 -9
  217. package/dist/components/af-divider.js +1 -66
  218. package/dist/components/af-feature-accordion.js +1 -136
  219. package/dist/components/af-feature-card.js +1 -9
  220. package/dist/components/af-feature-grid.js +1 -124
  221. package/dist/components/af-fieldset.js +1 -9
  222. package/dist/components/af-footer-column.js +1 -41
  223. package/dist/components/af-footer-link.js +1 -44
  224. package/dist/components/af-footer.js +1 -53
  225. package/dist/components/af-grid-callout.js +1 -82
  226. package/dist/components/af-grid.js +1 -71
  227. package/dist/components/af-heading.js +1 -9
  228. package/dist/components/af-icon-box.js +1 -9
  229. package/dist/components/af-icon-button.js +1 -9
  230. package/dist/components/af-icon-text.js +1 -78
  231. package/dist/components/af-icon.js +1 -9
  232. package/dist/components/af-illustrated-card.js +1 -9
  233. package/dist/components/af-image.js +1 -9
  234. package/dist/components/af-in-page-banner.js +1 -82
  235. package/dist/components/af-inline.js +1 -83
  236. package/dist/components/af-input.js +1 -9
  237. package/dist/components/af-logo-well.js +1 -38
  238. package/dist/components/af-logo.js +1 -9
  239. package/dist/components/af-nav-accordion-item.js +1 -117
  240. package/dist/components/af-nav-accordion.js +1 -106
  241. package/dist/components/af-nav-card.js +1 -62
  242. package/dist/components/af-nav-item.js +1 -9
  243. package/dist/components/af-nav-menu-nest.js +1 -67
  244. package/dist/components/af-nav-menu.js +1 -65
  245. package/dist/components/af-navbar.js +1 -9
  246. package/dist/components/af-number-badge.js +1 -66
  247. package/dist/components/af-progress-line.js +1 -9
  248. package/dist/components/af-radio.js +1 -9
  249. package/dist/components/af-section.js +1 -54
  250. package/dist/components/af-show.js +1 -46
  251. package/dist/components/af-social-link.js +1 -63
  252. package/dist/components/af-spacer.js +1 -69
  253. package/dist/components/af-split-section.js +1 -71
  254. package/dist/components/af-stack.js +1 -90
  255. package/dist/components/af-stepper-step.js +1 -44
  256. package/dist/components/af-stepper.js +1 -55
  257. package/dist/components/af-switch.js +1 -9
  258. package/dist/components/af-tab-bar.js +1 -9
  259. package/dist/components/af-tab.js +1 -9
  260. package/dist/components/af-tag.js +1 -9
  261. package/dist/components/af-testimonial-carousel.js +1 -131
  262. package/dist/components/af-testimonial-stat.js +1 -57
  263. package/dist/components/af-testimonial.js +1 -88
  264. package/dist/components/af-text-image-nest.js +1 -51
  265. package/dist/components/af-text-image.js +1 -94
  266. package/dist/components/af-text.js +1 -9
  267. package/dist/components/af-textarea.js +1 -9
  268. package/dist/components/af-theme-override.js +1 -44
  269. package/dist/components/af-typography-lockup.js +1 -9
  270. package/dist/components/af-video-container.js +1 -70
  271. package/dist/components/af-visually-hidden.js +1 -45
  272. package/dist/components/index.d.ts +2 -0
  273. package/dist/components/index.js +1 -27
  274. package/dist/components/p--UJ_xE9Z.js +1 -0
  275. package/dist/components/p-0KrQFK77.js +1 -0
  276. package/dist/components/p-9SgEr6QK.js +1 -0
  277. package/dist/components/p-B6I3yxMd.js +1 -0
  278. package/dist/components/p-BCCbAFc1.js +1 -0
  279. package/dist/components/p-BLzlyxBT.js +1 -0
  280. package/dist/components/p-BUFbtjxU.js +1 -0
  281. package/dist/components/p-BXFj61qz.js +1 -0
  282. package/dist/components/p-BeVM-2kH.js +1 -0
  283. package/dist/components/p-BeX5VmwL.js +1 -0
  284. package/dist/components/p-BlfywPKX.js +1 -0
  285. package/dist/components/p-BqUK0ZTO.js +1 -0
  286. package/dist/components/p-BzH2LxRQ.js +1 -0
  287. package/dist/components/p-CDCZfKNt.js +1 -0
  288. package/dist/components/p-CHNaDIj5.js +1 -0
  289. package/dist/components/p-CTFMTG3E.js +1 -0
  290. package/dist/components/p-CTcar4TG.js +1 -0
  291. package/dist/components/p-CVQiSujq.js +1 -0
  292. package/dist/components/p-C_BrhG1Q.js +1 -0
  293. package/dist/components/p-DOJEJFNa.js +1 -0
  294. package/dist/components/p-DPujlxcb.js +1 -0
  295. package/dist/components/p-DRm58pvc.js +1 -0
  296. package/dist/components/p-DX19jO3u.js +1 -0
  297. package/dist/components/p-DsNqeD3z.js +1 -0
  298. package/dist/components/p-Dx31qPzk.js +1 -0
  299. package/dist/components/p-HhMv1A3-.js +1 -0
  300. package/dist/components/p-UTiuvQaz.js +1 -0
  301. package/dist/components/p-tB2jS8S_.js +1 -0
  302. package/dist/components/p-tF59ipRp.js +1 -0
  303. package/dist/esm/af-accordion-item.entry.js +7 -6
  304. package/dist/esm/af-accordion.entry.js +7 -6
  305. package/dist/esm/af-aspect-ratio.entry.js +3 -4
  306. package/dist/esm/af-button-group.entry.js +4 -5
  307. package/dist/esm/af-button.entry.js +3 -4
  308. package/dist/esm/af-card.entry.js +4 -5
  309. package/dist/esm/af-center.entry.js +4 -5
  310. package/dist/esm/af-checkbox.entry.js +4 -5
  311. package/dist/esm/af-client-carousel.entry.js +4 -5
  312. package/dist/esm/af-color-swatch.entry.js +3 -4
  313. package/dist/esm/af-contact-item.entry.js +4 -5
  314. package/dist/esm/af-container.entry.js +3 -4
  315. package/dist/esm/af-divider.entry.js +4 -5
  316. package/dist/esm/af-feature-accordion.entry.js +8 -7
  317. package/dist/esm/af-feature-card.entry.js +3 -4
  318. package/dist/esm/af-feature-grid.entry.js +7 -6
  319. package/dist/esm/af-fieldset.entry.js +4 -5
  320. package/dist/esm/af-footer-column.entry.js +4 -5
  321. package/dist/esm/af-footer-link.entry.js +4 -5
  322. package/dist/esm/af-footer.entry.js +4 -5
  323. package/dist/esm/af-grid-callout.entry.js +3 -4
  324. package/dist/esm/af-grid.entry.js +5 -6
  325. package/dist/esm/af-heading_5.entry.js +49 -14
  326. package/dist/esm/af-icon-box.entry.js +4 -5
  327. package/dist/esm/af-icon-button.entry.js +3 -4
  328. package/dist/esm/af-icon-text.entry.js +4 -5
  329. package/dist/esm/af-icon.entry.js +3 -4
  330. package/dist/esm/af-illustrated-card.entry.js +4 -5
  331. package/dist/esm/af-image.entry.js +4 -5
  332. package/dist/esm/af-in-page-banner.entry.js +4 -5
  333. package/dist/esm/af-inline.entry.js +4 -5
  334. package/dist/esm/af-input.entry.js +4 -5
  335. package/dist/esm/af-logo-well.entry.js +4 -5
  336. package/dist/esm/af-nav-accordion-item.entry.js +8 -7
  337. package/dist/esm/af-nav-accordion.entry.js +4 -5
  338. package/dist/esm/af-nav-card.entry.js +3 -4
  339. package/dist/esm/af-nav-menu-nest.entry.js +4 -5
  340. package/dist/esm/af-nav-menu.entry.js +4 -5
  341. package/dist/esm/af-number-badge.entry.js +4 -5
  342. package/dist/esm/af-progress-line.entry.js +5 -6
  343. package/dist/esm/af-radio.entry.js +4 -5
  344. package/dist/esm/af-section.entry.js +5 -6
  345. package/dist/esm/af-show.entry.js +4 -5
  346. package/dist/esm/af-social-link.entry.js +4 -5
  347. package/dist/esm/af-spacer.entry.js +4 -5
  348. package/dist/esm/af-split-section.entry.js +5 -6
  349. package/dist/esm/af-stack.entry.js +4 -5
  350. package/dist/esm/af-stepper-step.entry.js +4 -5
  351. package/dist/esm/af-stepper.entry.js +4 -5
  352. package/dist/esm/af-switch.entry.js +4 -5
  353. package/dist/esm/af-tab-bar.entry.js +4 -5
  354. package/dist/esm/af-tab.entry.js +4 -5
  355. package/dist/esm/af-tag.entry.js +5 -6
  356. package/dist/esm/af-testimonial-carousel.entry.js +4 -5
  357. package/dist/esm/af-testimonial-stat.entry.js +4 -5
  358. package/dist/esm/af-testimonial.entry.js +5 -6
  359. package/dist/esm/af-text-image-nest.entry.js +4 -5
  360. package/dist/esm/af-text-image.entry.js +3 -4
  361. package/dist/esm/af-textarea.entry.js +4 -5
  362. package/dist/esm/af-theme-override.entry.js +4 -5
  363. package/dist/esm/af-typography-lockup.entry.js +4 -5
  364. package/dist/esm/af-video-container.entry.js +4 -5
  365. package/dist/esm/af-visually-hidden.entry.js +4 -5
  366. package/dist/esm/affinda.js +4 -5
  367. package/dist/esm/{index-B0LVveHp.js → index-CPfAC9fk.js} +462 -260
  368. package/dist/esm/index.js +2 -3
  369. package/dist/esm/loader.js +3 -4
  370. package/dist/types/components/af-navbar/af-navbar.d.ts +18 -4
  371. package/dist/types/components.d.ts +524 -147
  372. package/dist/types/stencil-public-runtime.d.ts +110 -6
  373. package/package.json +1 -1
  374. package/dist/affinda/af-accordion-item.entry.esm.js.map +0 -1
  375. package/dist/affinda/af-accordion.entry.esm.js.map +0 -1
  376. package/dist/affinda/af-aspect-ratio.entry.esm.js.map +0 -1
  377. package/dist/affinda/af-button-group.entry.esm.js.map +0 -1
  378. package/dist/affinda/af-button.entry.esm.js.map +0 -1
  379. package/dist/affinda/af-card.entry.esm.js.map +0 -1
  380. package/dist/affinda/af-center.entry.esm.js.map +0 -1
  381. package/dist/affinda/af-checkbox.entry.esm.js.map +0 -1
  382. package/dist/affinda/af-client-carousel.entry.esm.js.map +0 -1
  383. package/dist/affinda/af-color-swatch.entry.esm.js.map +0 -1
  384. package/dist/affinda/af-contact-item.entry.esm.js.map +0 -1
  385. package/dist/affinda/af-container.entry.esm.js.map +0 -1
  386. package/dist/affinda/af-divider.entry.esm.js.map +0 -1
  387. package/dist/affinda/af-feature-accordion.entry.esm.js.map +0 -1
  388. package/dist/affinda/af-feature-card.entry.esm.js.map +0 -1
  389. package/dist/affinda/af-feature-grid.entry.esm.js.map +0 -1
  390. package/dist/affinda/af-fieldset.entry.esm.js.map +0 -1
  391. package/dist/affinda/af-footer-column.entry.esm.js.map +0 -1
  392. package/dist/affinda/af-footer-link.entry.esm.js.map +0 -1
  393. package/dist/affinda/af-footer.entry.esm.js.map +0 -1
  394. package/dist/affinda/af-grid-callout.entry.esm.js.map +0 -1
  395. package/dist/affinda/af-grid.entry.esm.js.map +0 -1
  396. package/dist/affinda/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.esm.js.map +0 -1
  397. package/dist/affinda/af-icon-box.entry.esm.js.map +0 -1
  398. package/dist/affinda/af-icon-button.entry.esm.js.map +0 -1
  399. package/dist/affinda/af-icon-text.entry.esm.js.map +0 -1
  400. package/dist/affinda/af-icon.entry.esm.js.map +0 -1
  401. package/dist/affinda/af-illustrated-card.entry.esm.js.map +0 -1
  402. package/dist/affinda/af-image.entry.esm.js.map +0 -1
  403. package/dist/affinda/af-in-page-banner.entry.esm.js.map +0 -1
  404. package/dist/affinda/af-inline.entry.esm.js.map +0 -1
  405. package/dist/affinda/af-input.entry.esm.js.map +0 -1
  406. package/dist/affinda/af-logo-well.entry.esm.js.map +0 -1
  407. package/dist/affinda/af-nav-accordion-item.entry.esm.js.map +0 -1
  408. package/dist/affinda/af-nav-accordion.entry.esm.js.map +0 -1
  409. package/dist/affinda/af-nav-card.entry.esm.js.map +0 -1
  410. package/dist/affinda/af-nav-menu-nest.entry.esm.js.map +0 -1
  411. package/dist/affinda/af-nav-menu.entry.esm.js.map +0 -1
  412. package/dist/affinda/af-number-badge.entry.esm.js.map +0 -1
  413. package/dist/affinda/af-progress-line.entry.esm.js.map +0 -1
  414. package/dist/affinda/af-radio.entry.esm.js.map +0 -1
  415. package/dist/affinda/af-section.entry.esm.js.map +0 -1
  416. package/dist/affinda/af-show.entry.esm.js.map +0 -1
  417. package/dist/affinda/af-social-link.entry.esm.js.map +0 -1
  418. package/dist/affinda/af-spacer.entry.esm.js.map +0 -1
  419. package/dist/affinda/af-split-section.entry.esm.js.map +0 -1
  420. package/dist/affinda/af-stack.entry.esm.js.map +0 -1
  421. package/dist/affinda/af-stepper-step.entry.esm.js.map +0 -1
  422. package/dist/affinda/af-stepper.entry.esm.js.map +0 -1
  423. package/dist/affinda/af-switch.entry.esm.js.map +0 -1
  424. package/dist/affinda/af-tab-bar.entry.esm.js.map +0 -1
  425. package/dist/affinda/af-tab.entry.esm.js.map +0 -1
  426. package/dist/affinda/af-tag.entry.esm.js.map +0 -1
  427. package/dist/affinda/af-testimonial-carousel.entry.esm.js.map +0 -1
  428. package/dist/affinda/af-testimonial-stat.entry.esm.js.map +0 -1
  429. package/dist/affinda/af-testimonial.entry.esm.js.map +0 -1
  430. package/dist/affinda/af-text-image-nest.entry.esm.js.map +0 -1
  431. package/dist/affinda/af-text-image.entry.esm.js.map +0 -1
  432. package/dist/affinda/af-textarea.entry.esm.js.map +0 -1
  433. package/dist/affinda/af-theme-override.entry.esm.js.map +0 -1
  434. package/dist/affinda/af-typography-lockup.entry.esm.js.map +0 -1
  435. package/dist/affinda/af-video-container.entry.esm.js.map +0 -1
  436. package/dist/affinda/af-visually-hidden.entry.esm.js.map +0 -1
  437. package/dist/affinda/affinda.esm.js.map +0 -1
  438. package/dist/affinda/index.esm.js.map +0 -1
  439. package/dist/affinda/loader.esm.js.map +0 -1
  440. package/dist/affinda/p-04de9a0a.entry.js +0 -2
  441. package/dist/affinda/p-04de9a0a.entry.js.map +0 -1
  442. package/dist/affinda/p-07efc7a0.entry.js +0 -2
  443. package/dist/affinda/p-07efc7a0.entry.js.map +0 -1
  444. package/dist/affinda/p-08143c7e.entry.js +0 -2
  445. package/dist/affinda/p-08143c7e.entry.js.map +0 -1
  446. package/dist/affinda/p-0fb16377.entry.js +0 -2
  447. package/dist/affinda/p-0fb16377.entry.js.map +0 -1
  448. package/dist/affinda/p-0fcce1e4.entry.js +0 -2
  449. package/dist/affinda/p-0fcce1e4.entry.js.map +0 -1
  450. package/dist/affinda/p-122b6e96.entry.js +0 -2
  451. package/dist/affinda/p-122b6e96.entry.js.map +0 -1
  452. package/dist/affinda/p-19eb7cb9.entry.js +0 -2
  453. package/dist/affinda/p-19eb7cb9.entry.js.map +0 -1
  454. package/dist/affinda/p-1a87dd1c.entry.js +0 -2
  455. package/dist/affinda/p-1a87dd1c.entry.js.map +0 -1
  456. package/dist/affinda/p-202bac33.entry.js +0 -2
  457. package/dist/affinda/p-202bac33.entry.js.map +0 -1
  458. package/dist/affinda/p-2e50c27d.entry.js +0 -2
  459. package/dist/affinda/p-2e50c27d.entry.js.map +0 -1
  460. package/dist/affinda/p-2e750d43.entry.js.map +0 -1
  461. package/dist/affinda/p-2e8682a0.entry.js +0 -2
  462. package/dist/affinda/p-2e8682a0.entry.js.map +0 -1
  463. package/dist/affinda/p-302d0cf7.entry.js +0 -2
  464. package/dist/affinda/p-302d0cf7.entry.js.map +0 -1
  465. package/dist/affinda/p-3642589b.entry.js +0 -2
  466. package/dist/affinda/p-3642589b.entry.js.map +0 -1
  467. package/dist/affinda/p-389a6246.entry.js +0 -2
  468. package/dist/affinda/p-389a6246.entry.js.map +0 -1
  469. package/dist/affinda/p-391bb085.entry.js +0 -2
  470. package/dist/affinda/p-391bb085.entry.js.map +0 -1
  471. package/dist/affinda/p-3e16bb11.entry.js +0 -2
  472. package/dist/affinda/p-3e16bb11.entry.js.map +0 -1
  473. package/dist/affinda/p-3fc2a3dc.entry.js +0 -2
  474. package/dist/affinda/p-3fc2a3dc.entry.js.map +0 -1
  475. package/dist/affinda/p-45f76ad4.entry.js +0 -2
  476. package/dist/affinda/p-45f76ad4.entry.js.map +0 -1
  477. package/dist/affinda/p-4fcb61d1.entry.js +0 -2
  478. package/dist/affinda/p-4fcb61d1.entry.js.map +0 -1
  479. package/dist/affinda/p-517543bd.entry.js +0 -2
  480. package/dist/affinda/p-517543bd.entry.js.map +0 -1
  481. package/dist/affinda/p-5591bc79.entry.js +0 -2
  482. package/dist/affinda/p-5591bc79.entry.js.map +0 -1
  483. package/dist/affinda/p-6179957e.entry.js +0 -2
  484. package/dist/affinda/p-6179957e.entry.js.map +0 -1
  485. package/dist/affinda/p-62699653.entry.js +0 -2
  486. package/dist/affinda/p-62699653.entry.js.map +0 -1
  487. package/dist/affinda/p-6a5fa86a.entry.js +0 -2
  488. package/dist/affinda/p-6a5fa86a.entry.js.map +0 -1
  489. package/dist/affinda/p-6af1634a.entry.js.map +0 -1
  490. package/dist/affinda/p-6b92463e.entry.js +0 -2
  491. package/dist/affinda/p-6b92463e.entry.js.map +0 -1
  492. package/dist/affinda/p-6bbc1e24.entry.js +0 -2
  493. package/dist/affinda/p-6bbc1e24.entry.js.map +0 -1
  494. package/dist/affinda/p-709271d1.entry.js +0 -2
  495. package/dist/affinda/p-709271d1.entry.js.map +0 -1
  496. package/dist/affinda/p-76475b41.entry.js +0 -2
  497. package/dist/affinda/p-76475b41.entry.js.map +0 -1
  498. package/dist/affinda/p-78ff69a4.entry.js +0 -2
  499. package/dist/affinda/p-78ff69a4.entry.js.map +0 -1
  500. package/dist/affinda/p-79e6fc73.entry.js +0 -2
  501. package/dist/affinda/p-79e6fc73.entry.js.map +0 -1
  502. package/dist/affinda/p-7da3a28f.entry.js +0 -2
  503. package/dist/affinda/p-7da3a28f.entry.js.map +0 -1
  504. package/dist/affinda/p-86a9ff3e.entry.js +0 -2
  505. package/dist/affinda/p-86a9ff3e.entry.js.map +0 -1
  506. package/dist/affinda/p-9242c8d1.entry.js +0 -2
  507. package/dist/affinda/p-9242c8d1.entry.js.map +0 -1
  508. package/dist/affinda/p-933560e0.entry.js +0 -2
  509. package/dist/affinda/p-933560e0.entry.js.map +0 -1
  510. package/dist/affinda/p-B0LVveHp.js +0 -3
  511. package/dist/affinda/p-B0LVveHp.js.map +0 -1
  512. package/dist/affinda/p-a2c71cad.entry.js +0 -2
  513. package/dist/affinda/p-a2c71cad.entry.js.map +0 -1
  514. package/dist/affinda/p-a53d5549.entry.js +0 -2
  515. package/dist/affinda/p-a53d5549.entry.js.map +0 -1
  516. package/dist/affinda/p-a6402689.entry.js +0 -2
  517. package/dist/affinda/p-a6402689.entry.js.map +0 -1
  518. package/dist/affinda/p-a7574570.entry.js +0 -2
  519. package/dist/affinda/p-a7574570.entry.js.map +0 -1
  520. package/dist/affinda/p-a942522f.entry.js +0 -2
  521. package/dist/affinda/p-a942522f.entry.js.map +0 -1
  522. package/dist/affinda/p-accd917e.entry.js +0 -2
  523. package/dist/affinda/p-accd917e.entry.js.map +0 -1
  524. package/dist/affinda/p-ad9b0eec.entry.js +0 -2
  525. package/dist/affinda/p-ad9b0eec.entry.js.map +0 -1
  526. package/dist/affinda/p-b18767cf.entry.js +0 -2
  527. package/dist/affinda/p-b18767cf.entry.js.map +0 -1
  528. package/dist/affinda/p-b85e2bff.entry.js +0 -2
  529. package/dist/affinda/p-b85e2bff.entry.js.map +0 -1
  530. package/dist/affinda/p-bb67cf12.entry.js +0 -2
  531. package/dist/affinda/p-bb67cf12.entry.js.map +0 -1
  532. package/dist/affinda/p-c01eaa85.entry.js +0 -2
  533. package/dist/affinda/p-c01eaa85.entry.js.map +0 -1
  534. package/dist/affinda/p-c225ac8c.entry.js +0 -2
  535. package/dist/affinda/p-c225ac8c.entry.js.map +0 -1
  536. package/dist/affinda/p-c3d7872c.entry.js +0 -2
  537. package/dist/affinda/p-c3d7872c.entry.js.map +0 -1
  538. package/dist/affinda/p-c51a2687.entry.js +0 -2
  539. package/dist/affinda/p-c51a2687.entry.js.map +0 -1
  540. package/dist/affinda/p-d28b0860.entry.js +0 -2
  541. package/dist/affinda/p-d28b0860.entry.js.map +0 -1
  542. package/dist/affinda/p-d74a7ae9.entry.js +0 -2
  543. package/dist/affinda/p-d74a7ae9.entry.js.map +0 -1
  544. package/dist/affinda/p-e2f555fc.entry.js +0 -2
  545. package/dist/affinda/p-e2f555fc.entry.js.map +0 -1
  546. package/dist/affinda/p-e305c2b7.entry.js +0 -2
  547. package/dist/affinda/p-e305c2b7.entry.js.map +0 -1
  548. package/dist/affinda/p-e37fea2f.entry.js +0 -2
  549. package/dist/affinda/p-e37fea2f.entry.js.map +0 -1
  550. package/dist/affinda/p-ea02610f.entry.js +0 -2
  551. package/dist/affinda/p-ea02610f.entry.js.map +0 -1
  552. package/dist/affinda/p-ea0ccbce.entry.js +0 -2
  553. package/dist/affinda/p-ea0ccbce.entry.js.map +0 -1
  554. package/dist/affinda/p-eebb5101.entry.js +0 -2
  555. package/dist/affinda/p-eebb5101.entry.js.map +0 -1
  556. package/dist/affinda/p-f1dd31bd.entry.js +0 -2
  557. package/dist/affinda/p-f1dd31bd.entry.js.map +0 -1
  558. package/dist/affinda/p-f4d2a07d.entry.js +0 -2
  559. package/dist/affinda/p-f4d2a07d.entry.js.map +0 -1
  560. package/dist/affinda/p-f78dd237.entry.js +0 -2
  561. package/dist/affinda/p-f78dd237.entry.js.map +0 -1
  562. package/dist/affinda/p-f8bdddf5.entry.js +0 -2
  563. package/dist/affinda/p-f8bdddf5.entry.js.map +0 -1
  564. package/dist/affinda/p-fd772813.entry.js +0 -2
  565. package/dist/affinda/p-fd772813.entry.js.map +0 -1
  566. package/dist/cjs/af-accordion-item.entry.cjs.js.map +0 -1
  567. package/dist/cjs/af-accordion.entry.cjs.js.map +0 -1
  568. package/dist/cjs/af-aspect-ratio.entry.cjs.js.map +0 -1
  569. package/dist/cjs/af-button-group.entry.cjs.js.map +0 -1
  570. package/dist/cjs/af-button.entry.cjs.js.map +0 -1
  571. package/dist/cjs/af-card.entry.cjs.js.map +0 -1
  572. package/dist/cjs/af-center.entry.cjs.js.map +0 -1
  573. package/dist/cjs/af-checkbox.entry.cjs.js.map +0 -1
  574. package/dist/cjs/af-client-carousel.entry.cjs.js.map +0 -1
  575. package/dist/cjs/af-color-swatch.entry.cjs.js.map +0 -1
  576. package/dist/cjs/af-contact-item.entry.cjs.js.map +0 -1
  577. package/dist/cjs/af-container.entry.cjs.js.map +0 -1
  578. package/dist/cjs/af-divider.entry.cjs.js.map +0 -1
  579. package/dist/cjs/af-feature-accordion.entry.cjs.js.map +0 -1
  580. package/dist/cjs/af-feature-card.entry.cjs.js.map +0 -1
  581. package/dist/cjs/af-feature-grid.entry.cjs.js.map +0 -1
  582. package/dist/cjs/af-fieldset.entry.cjs.js.map +0 -1
  583. package/dist/cjs/af-footer-column.entry.cjs.js.map +0 -1
  584. package/dist/cjs/af-footer-link.entry.cjs.js.map +0 -1
  585. package/dist/cjs/af-footer.entry.cjs.js.map +0 -1
  586. package/dist/cjs/af-grid-callout.entry.cjs.js.map +0 -1
  587. package/dist/cjs/af-grid.entry.cjs.js.map +0 -1
  588. package/dist/cjs/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.cjs.js.map +0 -1
  589. package/dist/cjs/af-icon-box.entry.cjs.js.map +0 -1
  590. package/dist/cjs/af-icon-button.entry.cjs.js.map +0 -1
  591. package/dist/cjs/af-icon-text.entry.cjs.js.map +0 -1
  592. package/dist/cjs/af-icon.entry.cjs.js.map +0 -1
  593. package/dist/cjs/af-illustrated-card.entry.cjs.js.map +0 -1
  594. package/dist/cjs/af-image.entry.cjs.js.map +0 -1
  595. package/dist/cjs/af-in-page-banner.entry.cjs.js.map +0 -1
  596. package/dist/cjs/af-inline.entry.cjs.js.map +0 -1
  597. package/dist/cjs/af-input.entry.cjs.js.map +0 -1
  598. package/dist/cjs/af-logo-well.entry.cjs.js.map +0 -1
  599. package/dist/cjs/af-nav-accordion-item.entry.cjs.js.map +0 -1
  600. package/dist/cjs/af-nav-accordion.entry.cjs.js.map +0 -1
  601. package/dist/cjs/af-nav-card.entry.cjs.js.map +0 -1
  602. package/dist/cjs/af-nav-menu-nest.entry.cjs.js.map +0 -1
  603. package/dist/cjs/af-nav-menu.entry.cjs.js.map +0 -1
  604. package/dist/cjs/af-number-badge.entry.cjs.js.map +0 -1
  605. package/dist/cjs/af-progress-line.entry.cjs.js.map +0 -1
  606. package/dist/cjs/af-radio.entry.cjs.js.map +0 -1
  607. package/dist/cjs/af-section.entry.cjs.js.map +0 -1
  608. package/dist/cjs/af-show.entry.cjs.js.map +0 -1
  609. package/dist/cjs/af-social-link.entry.cjs.js.map +0 -1
  610. package/dist/cjs/af-spacer.entry.cjs.js.map +0 -1
  611. package/dist/cjs/af-split-section.entry.cjs.js.map +0 -1
  612. package/dist/cjs/af-stack.entry.cjs.js.map +0 -1
  613. package/dist/cjs/af-stepper-step.entry.cjs.js.map +0 -1
  614. package/dist/cjs/af-stepper.entry.cjs.js.map +0 -1
  615. package/dist/cjs/af-switch.entry.cjs.js.map +0 -1
  616. package/dist/cjs/af-tab-bar.entry.cjs.js.map +0 -1
  617. package/dist/cjs/af-tab.entry.cjs.js.map +0 -1
  618. package/dist/cjs/af-tag.entry.cjs.js.map +0 -1
  619. package/dist/cjs/af-testimonial-carousel.entry.cjs.js.map +0 -1
  620. package/dist/cjs/af-testimonial-stat.entry.cjs.js.map +0 -1
  621. package/dist/cjs/af-testimonial.entry.cjs.js.map +0 -1
  622. package/dist/cjs/af-text-image-nest.entry.cjs.js.map +0 -1
  623. package/dist/cjs/af-text-image.entry.cjs.js.map +0 -1
  624. package/dist/cjs/af-textarea.entry.cjs.js.map +0 -1
  625. package/dist/cjs/af-theme-override.entry.cjs.js.map +0 -1
  626. package/dist/cjs/af-typography-lockup.entry.cjs.js.map +0 -1
  627. package/dist/cjs/af-video-container.entry.cjs.js.map +0 -1
  628. package/dist/cjs/af-visually-hidden.entry.cjs.js.map +0 -1
  629. package/dist/cjs/affinda.cjs.js.map +0 -1
  630. package/dist/cjs/index-n-fnurTP.js.map +0 -1
  631. package/dist/cjs/index.cjs.js.map +0 -1
  632. package/dist/cjs/loader.cjs.js.map +0 -1
  633. package/dist/collection/components/af-accordion/af-accordion.js.map +0 -1
  634. package/dist/collection/components/af-accordion-item/af-accordion-item.js.map +0 -1
  635. package/dist/collection/components/af-aspect-ratio/af-aspect-ratio.js.map +0 -1
  636. package/dist/collection/components/af-button/af-button.js.map +0 -1
  637. package/dist/collection/components/af-button-group/af-button-group.js.map +0 -1
  638. package/dist/collection/components/af-card/af-card.js.map +0 -1
  639. package/dist/collection/components/af-center/af-center.js.map +0 -1
  640. package/dist/collection/components/af-checkbox/af-checkbox.js.map +0 -1
  641. package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +0 -1
  642. package/dist/collection/components/af-color-swatch/af-color-swatch.js.map +0 -1
  643. package/dist/collection/components/af-contact-item/af-contact-item.js.map +0 -1
  644. package/dist/collection/components/af-container/af-container.js.map +0 -1
  645. package/dist/collection/components/af-divider/af-divider.js.map +0 -1
  646. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js.map +0 -1
  647. package/dist/collection/components/af-feature-card/af-feature-card.js.map +0 -1
  648. package/dist/collection/components/af-feature-grid/af-feature-grid.js.map +0 -1
  649. package/dist/collection/components/af-fieldset/af-fieldset.js.map +0 -1
  650. package/dist/collection/components/af-footer/af-footer.js.map +0 -1
  651. package/dist/collection/components/af-footer-column/af-footer-column.js.map +0 -1
  652. package/dist/collection/components/af-footer-link/af-footer-link.js.map +0 -1
  653. package/dist/collection/components/af-grid/af-grid.js.map +0 -1
  654. package/dist/collection/components/af-grid-callout/af-grid-callout.js.map +0 -1
  655. package/dist/collection/components/af-heading/af-heading.js.map +0 -1
  656. package/dist/collection/components/af-icon/af-icon.js.map +0 -1
  657. package/dist/collection/components/af-icon-box/af-icon-box.js.map +0 -1
  658. package/dist/collection/components/af-icon-button/af-icon-button.js.map +0 -1
  659. package/dist/collection/components/af-icon-text/af-icon-text.js.map +0 -1
  660. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +0 -1
  661. package/dist/collection/components/af-image/af-image.js.map +0 -1
  662. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +0 -1
  663. package/dist/collection/components/af-inline/af-inline.js.map +0 -1
  664. package/dist/collection/components/af-input/af-input.js.map +0 -1
  665. package/dist/collection/components/af-logo/af-logo.js.map +0 -1
  666. package/dist/collection/components/af-logo-well/af-logo-well.js.map +0 -1
  667. package/dist/collection/components/af-nav-accordion/af-nav-accordion.js.map +0 -1
  668. package/dist/collection/components/af-nav-accordion-item/af-nav-accordion-item.js.map +0 -1
  669. package/dist/collection/components/af-nav-card/af-nav-card.js.map +0 -1
  670. package/dist/collection/components/af-nav-item/af-nav-item.js.map +0 -1
  671. package/dist/collection/components/af-nav-menu/af-nav-menu.js.map +0 -1
  672. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js.map +0 -1
  673. package/dist/collection/components/af-navbar/af-navbar.js.map +0 -1
  674. package/dist/collection/components/af-number-badge/af-number-badge.js.map +0 -1
  675. package/dist/collection/components/af-progress-line/af-progress-line.js.map +0 -1
  676. package/dist/collection/components/af-radio/af-radio.js.map +0 -1
  677. package/dist/collection/components/af-section/af-section.js.map +0 -1
  678. package/dist/collection/components/af-show/af-show.js.map +0 -1
  679. package/dist/collection/components/af-social-link/af-social-link.js.map +0 -1
  680. package/dist/collection/components/af-spacer/af-spacer.js.map +0 -1
  681. package/dist/collection/components/af-split-section/af-split-section.js.map +0 -1
  682. package/dist/collection/components/af-stack/af-stack.js.map +0 -1
  683. package/dist/collection/components/af-stepper/af-stepper.js.map +0 -1
  684. package/dist/collection/components/af-stepper-step/af-stepper-step.js.map +0 -1
  685. package/dist/collection/components/af-switch/af-switch.js.map +0 -1
  686. package/dist/collection/components/af-tab/af-tab.js.map +0 -1
  687. package/dist/collection/components/af-tab-bar/af-tab-bar.js.map +0 -1
  688. package/dist/collection/components/af-tag/af-tag.js.map +0 -1
  689. package/dist/collection/components/af-testimonial/af-testimonial.js.map +0 -1
  690. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js.map +0 -1
  691. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js.map +0 -1
  692. package/dist/collection/components/af-text/af-text.js.map +0 -1
  693. package/dist/collection/components/af-text-image/af-text-image.js.map +0 -1
  694. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js.map +0 -1
  695. package/dist/collection/components/af-textarea/af-textarea.js.map +0 -1
  696. package/dist/collection/components/af-theme-override/af-theme-override.js.map +0 -1
  697. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +0 -1
  698. package/dist/collection/components/af-video-container/af-video-container.js.map +0 -1
  699. package/dist/collection/components/af-visually-hidden/af-visually-hidden.js.map +0 -1
  700. package/dist/collection/components.js.map +0 -1
  701. package/dist/collection/index.js.map +0 -1
  702. package/dist/components/af-accordion-item.js.map +0 -1
  703. package/dist/components/af-accordion.js.map +0 -1
  704. package/dist/components/af-aspect-ratio.js.map +0 -1
  705. package/dist/components/af-button-group.js.map +0 -1
  706. package/dist/components/af-button.js.map +0 -1
  707. package/dist/components/af-card.js.map +0 -1
  708. package/dist/components/af-center.js.map +0 -1
  709. package/dist/components/af-checkbox.js.map +0 -1
  710. package/dist/components/af-client-carousel.js.map +0 -1
  711. package/dist/components/af-color-swatch.js.map +0 -1
  712. package/dist/components/af-contact-item.js.map +0 -1
  713. package/dist/components/af-container.js.map +0 -1
  714. package/dist/components/af-divider.js.map +0 -1
  715. package/dist/components/af-feature-accordion.js.map +0 -1
  716. package/dist/components/af-feature-card.js.map +0 -1
  717. package/dist/components/af-feature-grid.js.map +0 -1
  718. package/dist/components/af-fieldset.js.map +0 -1
  719. package/dist/components/af-footer-column.js.map +0 -1
  720. package/dist/components/af-footer-link.js.map +0 -1
  721. package/dist/components/af-footer.js.map +0 -1
  722. package/dist/components/af-grid-callout.js.map +0 -1
  723. package/dist/components/af-grid.js.map +0 -1
  724. package/dist/components/af-heading.js.map +0 -1
  725. package/dist/components/af-icon-box.js.map +0 -1
  726. package/dist/components/af-icon-button.js.map +0 -1
  727. package/dist/components/af-icon-text.js.map +0 -1
  728. package/dist/components/af-icon.js.map +0 -1
  729. package/dist/components/af-illustrated-card.js.map +0 -1
  730. package/dist/components/af-image.js.map +0 -1
  731. package/dist/components/af-in-page-banner.js.map +0 -1
  732. package/dist/components/af-inline.js.map +0 -1
  733. package/dist/components/af-input.js.map +0 -1
  734. package/dist/components/af-logo-well.js.map +0 -1
  735. package/dist/components/af-logo.js.map +0 -1
  736. package/dist/components/af-nav-accordion-item.js.map +0 -1
  737. package/dist/components/af-nav-accordion.js.map +0 -1
  738. package/dist/components/af-nav-card.js.map +0 -1
  739. package/dist/components/af-nav-item.js.map +0 -1
  740. package/dist/components/af-nav-menu-nest.js.map +0 -1
  741. package/dist/components/af-nav-menu.js.map +0 -1
  742. package/dist/components/af-navbar.js.map +0 -1
  743. package/dist/components/af-number-badge.js.map +0 -1
  744. package/dist/components/af-progress-line.js.map +0 -1
  745. package/dist/components/af-radio.js.map +0 -1
  746. package/dist/components/af-section.js.map +0 -1
  747. package/dist/components/af-show.js.map +0 -1
  748. package/dist/components/af-social-link.js.map +0 -1
  749. package/dist/components/af-spacer.js.map +0 -1
  750. package/dist/components/af-split-section.js.map +0 -1
  751. package/dist/components/af-stack.js.map +0 -1
  752. package/dist/components/af-stepper-step.js.map +0 -1
  753. package/dist/components/af-stepper.js.map +0 -1
  754. package/dist/components/af-switch.js.map +0 -1
  755. package/dist/components/af-tab-bar.js.map +0 -1
  756. package/dist/components/af-tab.js.map +0 -1
  757. package/dist/components/af-tag.js.map +0 -1
  758. package/dist/components/af-testimonial-carousel.js.map +0 -1
  759. package/dist/components/af-testimonial-stat.js.map +0 -1
  760. package/dist/components/af-testimonial.js.map +0 -1
  761. package/dist/components/af-text-image-nest.js.map +0 -1
  762. package/dist/components/af-text-image.js.map +0 -1
  763. package/dist/components/af-text.js.map +0 -1
  764. package/dist/components/af-textarea.js.map +0 -1
  765. package/dist/components/af-theme-override.js.map +0 -1
  766. package/dist/components/af-typography-lockup.js.map +0 -1
  767. package/dist/components/af-video-container.js.map +0 -1
  768. package/dist/components/af-visually-hidden.js.map +0 -1
  769. package/dist/components/index.js.map +0 -1
  770. package/dist/components/p-6uEhsUaO.js +0 -44
  771. package/dist/components/p-6uEhsUaO.js.map +0 -1
  772. package/dist/components/p-80hb0CR2.js +0 -71
  773. package/dist/components/p-80hb0CR2.js.map +0 -1
  774. package/dist/components/p-BBVslKpK.js +0 -59
  775. package/dist/components/p-BBVslKpK.js.map +0 -1
  776. package/dist/components/p-BHKA-yEm.js +0 -102
  777. package/dist/components/p-BHKA-yEm.js.map +0 -1
  778. package/dist/components/p-BHyABfs0.js +0 -92
  779. package/dist/components/p-BHyABfs0.js.map +0 -1
  780. package/dist/components/p-BIgPDyJK.js +0 -103
  781. package/dist/components/p-BIgPDyJK.js.map +0 -1
  782. package/dist/components/p-BXZ7aJQf.js +0 -372
  783. package/dist/components/p-BXZ7aJQf.js.map +0 -1
  784. package/dist/components/p-BfAQ7eko.js +0 -53
  785. package/dist/components/p-BfAQ7eko.js.map +0 -1
  786. package/dist/components/p-CAYG3IzP.js +0 -50
  787. package/dist/components/p-CAYG3IzP.js.map +0 -1
  788. package/dist/components/p-CFBeRDmV.js +0 -52
  789. package/dist/components/p-CFBeRDmV.js.map +0 -1
  790. package/dist/components/p-CLmCtN_R.js +0 -35
  791. package/dist/components/p-CLmCtN_R.js.map +0 -1
  792. package/dist/components/p-CNtgySkk.js +0 -48
  793. package/dist/components/p-CNtgySkk.js.map +0 -1
  794. package/dist/components/p-CUSad8vm.js +0 -74
  795. package/dist/components/p-CUSad8vm.js.map +0 -1
  796. package/dist/components/p-CxngDK-N.js +0 -1781
  797. package/dist/components/p-CxngDK-N.js.map +0 -1
  798. package/dist/components/p-D3UZ60qM.js +0 -45
  799. package/dist/components/p-D3UZ60qM.js.map +0 -1
  800. package/dist/components/p-DReSTue0.js +0 -48
  801. package/dist/components/p-DReSTue0.js.map +0 -1
  802. package/dist/components/p-DUQu3N38.js +0 -70
  803. package/dist/components/p-DUQu3N38.js.map +0 -1
  804. package/dist/components/p-DZ6UMG8G.js +0 -89
  805. package/dist/components/p-DZ6UMG8G.js.map +0 -1
  806. package/dist/components/p-D_xTKF7j.js +0 -55
  807. package/dist/components/p-D_xTKF7j.js.map +0 -1
  808. package/dist/components/p-DcJ8wKzl.js +0 -68
  809. package/dist/components/p-DcJ8wKzl.js.map +0 -1
  810. package/dist/components/p-Dd7Lt2QL.js +0 -81
  811. package/dist/components/p-Dd7Lt2QL.js.map +0 -1
  812. package/dist/components/p-DkvJiyn0.js +0 -73
  813. package/dist/components/p-DkvJiyn0.js.map +0 -1
  814. package/dist/components/p-DnHD91HB.js +0 -57
  815. package/dist/components/p-DnHD91HB.js.map +0 -1
  816. package/dist/components/p-Dvo_cxk-.js +0 -141
  817. package/dist/components/p-Dvo_cxk-.js.map +0 -1
  818. package/dist/components/p-Dwhi37rN.js +0 -127
  819. package/dist/components/p-Dwhi37rN.js.map +0 -1
  820. package/dist/components/p-Ws-qvw9w.js +0 -108
  821. package/dist/components/p-Ws-qvw9w.js.map +0 -1
  822. package/dist/components/p-nwZ2iAi9.js +0 -100
  823. package/dist/components/p-nwZ2iAi9.js.map +0 -1
  824. package/dist/components/p-pudFjW3W.js +0 -94
  825. package/dist/components/p-pudFjW3W.js.map +0 -1
  826. package/dist/components/p-zDoPXonz.js +0 -58
  827. package/dist/components/p-zDoPXonz.js.map +0 -1
  828. package/dist/esm/af-accordion-item.entry.js.map +0 -1
  829. package/dist/esm/af-accordion.entry.js.map +0 -1
  830. package/dist/esm/af-aspect-ratio.entry.js.map +0 -1
  831. package/dist/esm/af-button-group.entry.js.map +0 -1
  832. package/dist/esm/af-button.entry.js.map +0 -1
  833. package/dist/esm/af-card.entry.js.map +0 -1
  834. package/dist/esm/af-center.entry.js.map +0 -1
  835. package/dist/esm/af-checkbox.entry.js.map +0 -1
  836. package/dist/esm/af-client-carousel.entry.js.map +0 -1
  837. package/dist/esm/af-color-swatch.entry.js.map +0 -1
  838. package/dist/esm/af-contact-item.entry.js.map +0 -1
  839. package/dist/esm/af-container.entry.js.map +0 -1
  840. package/dist/esm/af-divider.entry.js.map +0 -1
  841. package/dist/esm/af-feature-accordion.entry.js.map +0 -1
  842. package/dist/esm/af-feature-card.entry.js.map +0 -1
  843. package/dist/esm/af-feature-grid.entry.js.map +0 -1
  844. package/dist/esm/af-fieldset.entry.js.map +0 -1
  845. package/dist/esm/af-footer-column.entry.js.map +0 -1
  846. package/dist/esm/af-footer-link.entry.js.map +0 -1
  847. package/dist/esm/af-footer.entry.js.map +0 -1
  848. package/dist/esm/af-grid-callout.entry.js.map +0 -1
  849. package/dist/esm/af-grid.entry.js.map +0 -1
  850. package/dist/esm/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.js.map +0 -1
  851. package/dist/esm/af-icon-box.entry.js.map +0 -1
  852. package/dist/esm/af-icon-button.entry.js.map +0 -1
  853. package/dist/esm/af-icon-text.entry.js.map +0 -1
  854. package/dist/esm/af-icon.entry.js.map +0 -1
  855. package/dist/esm/af-illustrated-card.entry.js.map +0 -1
  856. package/dist/esm/af-image.entry.js.map +0 -1
  857. package/dist/esm/af-in-page-banner.entry.js.map +0 -1
  858. package/dist/esm/af-inline.entry.js.map +0 -1
  859. package/dist/esm/af-input.entry.js.map +0 -1
  860. package/dist/esm/af-logo-well.entry.js.map +0 -1
  861. package/dist/esm/af-nav-accordion-item.entry.js.map +0 -1
  862. package/dist/esm/af-nav-accordion.entry.js.map +0 -1
  863. package/dist/esm/af-nav-card.entry.js.map +0 -1
  864. package/dist/esm/af-nav-menu-nest.entry.js.map +0 -1
  865. package/dist/esm/af-nav-menu.entry.js.map +0 -1
  866. package/dist/esm/af-number-badge.entry.js.map +0 -1
  867. package/dist/esm/af-progress-line.entry.js.map +0 -1
  868. package/dist/esm/af-radio.entry.js.map +0 -1
  869. package/dist/esm/af-section.entry.js.map +0 -1
  870. package/dist/esm/af-show.entry.js.map +0 -1
  871. package/dist/esm/af-social-link.entry.js.map +0 -1
  872. package/dist/esm/af-spacer.entry.js.map +0 -1
  873. package/dist/esm/af-split-section.entry.js.map +0 -1
  874. package/dist/esm/af-stack.entry.js.map +0 -1
  875. package/dist/esm/af-stepper-step.entry.js.map +0 -1
  876. package/dist/esm/af-stepper.entry.js.map +0 -1
  877. package/dist/esm/af-switch.entry.js.map +0 -1
  878. package/dist/esm/af-tab-bar.entry.js.map +0 -1
  879. package/dist/esm/af-tab.entry.js.map +0 -1
  880. package/dist/esm/af-tag.entry.js.map +0 -1
  881. package/dist/esm/af-testimonial-carousel.entry.js.map +0 -1
  882. package/dist/esm/af-testimonial-stat.entry.js.map +0 -1
  883. package/dist/esm/af-testimonial.entry.js.map +0 -1
  884. package/dist/esm/af-text-image-nest.entry.js.map +0 -1
  885. package/dist/esm/af-text-image.entry.js.map +0 -1
  886. package/dist/esm/af-textarea.entry.js.map +0 -1
  887. package/dist/esm/af-theme-override.entry.js.map +0 -1
  888. package/dist/esm/af-typography-lockup.entry.js.map +0 -1
  889. package/dist/esm/af-video-container.entry.js.map +0 -1
  890. package/dist/esm/af-visually-hidden.entry.js.map +0 -1
  891. package/dist/esm/affinda.js.map +0 -1
  892. package/dist/esm/index-B0LVveHp.js.map +0 -1
  893. package/dist/esm/index.js.map +0 -1
  894. package/dist/esm/loader.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-input.entry.esm.js","sources":["src/components/af-input/af-input.css?tag=af-input&encapsulation=shadow","src/components/af-input/af-input.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n/* Wrapper */\n.input-wrapper {\n display: flex;\n flex-direction: column;\n gap: var(--sds-size-space-200, 8px);\n width: 100%;\n}\n\n/* Label row */\n.label-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.label {\n flex: 1;\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-book, 500);\n font-size: 16px;\n line-height: 24px;\n color: var(--af-input-label, var(--af-typography-body-dark, #14343b));\n cursor: default;\n}\n\n.required {\n color: var(--af-input-error, var(--colour-error, #be292a));\n margin-left: 2px;\n}\n\n/* Info icon button */\n.info-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--af-input-icon, var(--af-background-icon-default, #14343b));\n flex-shrink: 0;\n}\n\n.info-icon svg {\n width: 20px;\n height: 20px;\n}\n\n.info-icon:hover {\n opacity: 0.7;\n}\n\n.info-icon:focus-visible {\n outline: 2px solid var(--af-input-focus-ring, var(--af-typography-body-dark, #14343b));\n outline-offset: 2px;\n border-radius: 4px;\n}\n\n/* Description */\n.description {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-regular, 400);\n font-size: 16px;\n line-height: 24px;\n color: var(--af-input-description, var(--af-typography-body-default, #2b484f));\n margin: 0;\n}\n\n/* Input container */\n.input-container {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n background: var(--af-input-bg, #ffffff);\n border: 1px solid var(--af-input-border, var(--af-background-border-default, #d1ddda));\n border-radius: var(--radii-input, 8px);\n transition: all 0.15s ease;\n min-height: 48px;\n box-sizing: border-box;\n}\n\n/* Hover state */\n.input-container.hovered {\n background: var(--af-input-bg-hover, var(--af-background-base-hover, #f4f7f6));\n border-color: var(--af-input-border-hover, var(--af-background-border-heavy, #c6d5d1));\n}\n\n/* Focus state */\n.input-container.focused {\n background: var(--af-input-bg, #ffffff);\n border-color: var(--af-input-border-active, var(--af-typography-body-dark, #14343b));\n box-shadow: \n 0 0 0 4px var(--af-background-base, #ffffff), \n 0 0 0 5px var(--af-input-focus-ring, var(--af-typography-body-dark, #14343b));\n}\n\n/* Error state */\n.input-container.error {\n border-color: var(--af-input-border-error, var(--colour-error, #be292a));\n}\n\n/* Disabled state */\n.input-container.disabled {\n background: var(--af-input-bg-disabled, var(--af-background-level-1, #e8eeed));\n border-color: var(--af-input-border, var(--af-background-border-default, #d1ddda));\n cursor: not-allowed;\n}\n\n/* Search icon */\n.search-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n color: var(--af-input-icon, var(--af-background-icon-default, #14343b));\n}\n\n.search-icon svg {\n width: 20px;\n height: 20px;\n}\n\n.disabled .search-icon {\n opacity: 0.5;\n}\n\n/* Native input */\n.input {\n flex: 1;\n min-width: 0;\n padding: 0;\n border: none;\n background: transparent;\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-regular, 400);\n font-size: 16px;\n line-height: 24px;\n color: var(--af-input-text, var(--af-typography-body-dark, #14343b));\n outline: none;\n}\n\n.input::placeholder {\n color: var(--af-input-placeholder, var(--af-typography-body-subtle, #60767b));\n opacity: 1;\n}\n\n.input:disabled {\n cursor: not-allowed;\n color: var(--af-input-placeholder, var(--af-typography-body-subtle, #60767b));\n}\n\n.input:disabled::placeholder {\n color: var(--af-input-placeholder, var(--af-typography-body-subtle, #60767b));\n}\n\n/* Hide native browser styling for search inputs */\n.input[type=\"search\"]::-webkit-search-decoration,\n.input[type=\"search\"]::-webkit-search-cancel-button,\n.input[type=\"search\"]::-webkit-search-results-button,\n.input[type=\"search\"]::-webkit-search-results-decoration {\n display: none;\n}\n\n/* Hide number input spinners */\n.input[type=\"number\"]::-webkit-inner-spin-button,\n.input[type=\"number\"]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n.input[type=\"number\"] {\n -moz-appearance: textfield;\n}\n\n/* Clear button */\n.clear-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0;\n border: none;\n background: none;\n cursor: pointer;\n color: var(--af-input-icon, var(--af-background-icon-default, #14343b));\n flex-shrink: 0;\n opacity: 0.6;\n transition: opacity 0.15s ease;\n}\n\n.clear-button svg {\n width: 16px;\n height: 16px;\n}\n\n.clear-button:hover {\n opacity: 1;\n}\n\n.clear-button:focus-visible {\n outline: 2px solid var(--af-input-focus-ring, var(--af-typography-body-dark, #14343b));\n outline-offset: 2px;\n border-radius: 4px;\n}\n\n/* Error row */\n.error-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.error-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n color: var(--af-input-error, var(--colour-error, #be292a));\n}\n\n.error-icon svg {\n width: 20px;\n height: 20px;\n}\n\n.error-text {\n flex: 1;\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-regular, 400);\n font-size: 16px;\n line-height: 24px;\n color: var(--af-input-error, var(--colour-error, #be292a));\n}\n","import { Component, h, Prop, Host, Event, EventEmitter, State } from '@stencil/core';\n\n/**\n * Input field component with label, description, and error states.\n * Supports various input types and validation states.\n * \n * @slot label-end - Content to display at the end of the label (e.g., info icon)\n */\n@Component({\n tag: 'af-input',\n styleUrl: 'af-input.css',\n shadow: true\n})\nexport class AfInput {\n /**\n * The label text for the input field\n */\n @Prop() label?: string;\n\n /**\n * Description text displayed below the label\n */\n @Prop() description?: string;\n\n /**\n * Placeholder text for the input\n */\n @Prop() placeholder?: string;\n\n /**\n * The current value of the input\n */\n @Prop({ mutable: true }) value: string = '';\n\n /**\n * The input type (text, email, password, number, tel, url, search)\n */\n @Prop() type: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' = 'text';\n\n /**\n * The name of the input for form submission\n */\n @Prop() name?: string;\n\n /**\n * Whether the input is disabled\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Whether the input is required\n */\n @Prop() required: boolean = false;\n\n /**\n * Whether the input is read-only\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Error message to display (also sets error state)\n */\n @Prop() error?: string;\n\n /**\n * Whether to show the info icon next to the label\n */\n @Prop() showInfoIcon: boolean = false;\n\n /**\n * Whether to show a search icon in the input\n */\n @Prop() showSearchIcon: boolean = false;\n\n /**\n * Whether to show a clear button when input has value\n */\n @Prop() clearable: boolean = false;\n\n /**\n * Autocomplete attribute for the input\n */\n @Prop() autocomplete?: string;\n\n /**\n * Maximum length of input value\n */\n @Prop() maxlength?: number;\n\n /**\n * Minimum length of input value\n */\n @Prop() minlength?: number;\n\n /**\n * Pattern for input validation (regex)\n */\n @Prop() pattern?: string;\n\n /**\n * Emitted when the input value changes\n */\n @Event() afInput!: EventEmitter<{ value: string }>;\n\n /**\n * Emitted when the input loses focus\n */\n @Event() afBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the input gains focus\n */\n @Event() afFocus!: EventEmitter<void>;\n\n /**\n * Emitted when the clear button is clicked\n */\n @Event() afClear!: EventEmitter<void>;\n\n /**\n * Emitted when the info icon is clicked\n */\n @Event() afInfoClick!: EventEmitter<void>;\n\n @State() private isFocused: boolean = false;\n @State() private isHovered: boolean = false;\n\n private inputEl?: HTMLInputElement;\n\n private handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement;\n this.value = target.value;\n this.afInput.emit({ value: this.value });\n };\n\n private handleFocus = () => {\n this.isFocused = true;\n this.afFocus.emit();\n };\n\n private handleBlur = () => {\n this.isFocused = false;\n this.afBlur.emit();\n };\n\n private handleMouseEnter = () => {\n this.isHovered = true;\n };\n\n private handleMouseLeave = () => {\n this.isHovered = false;\n };\n\n private handleClear = () => {\n this.value = '';\n this.afClear.emit();\n this.afInput.emit({ value: '' });\n this.inputEl?.focus();\n };\n\n private handleInfoClick = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.afInfoClick.emit();\n };\n\n render() {\n const hasError = !!this.error;\n const hasValue = !!(this.value && this.value.length > 0);\n\n const wrapperClasses = {\n 'input-wrapper': true,\n 'disabled': this.disabled,\n 'error': hasError,\n 'focused': this.isFocused,\n 'hovered': this.isHovered && !this.disabled && !this.isFocused,\n 'populated': hasValue\n };\n\n const inputContainerClasses = {\n 'input-container': true,\n 'disabled': this.disabled,\n 'error': hasError,\n 'focused': this.isFocused,\n 'hovered': this.isHovered && !this.disabled && !this.isFocused\n };\n\n return (\n <Host>\n <div class={wrapperClasses}>\n {/* Label */}\n {this.label && (\n <div class=\"label-row\">\n <label class=\"label\" htmlFor=\"input\">\n {this.label}\n {this.required && <span class=\"required\">*</span>}\n </label>\n {this.showInfoIcon && (\n <button \n type=\"button\" \n class=\"info-icon\" \n onClick={this.handleInfoClick}\n aria-label=\"More information\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12 16V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12 8H12.01\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n )}\n <slot name=\"label-end\"></slot>\n </div>\n )}\n\n {/* Description */}\n {this.description && (\n <p class=\"description\">{this.description}</p>\n )}\n\n {/* Input container */}\n <div \n class={inputContainerClasses}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n {/* Search icon */}\n {this.showSearchIcon && (\n <span class=\"search-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11 19C15.4183 19 19 15.4183 19 11C19 6.58172 15.4183 3 11 3C6.58172 3 3 6.58172 3 11C3 15.4183 6.58172 19 11 19Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M21 21L16.65 16.65\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n )}\n\n {/* Native input */}\n <input\n ref={(el) => this.inputEl = el ?? undefined}\n id=\"input\"\n class=\"input\"\n type={this.type}\n name={this.name}\n value={this.value}\n placeholder={this.placeholder}\n disabled={this.disabled}\n required={this.required}\n readonly={this.readonly}\n autocomplete={this.autocomplete}\n maxlength={this.maxlength}\n minlength={this.minlength}\n pattern={this.pattern}\n aria-invalid={hasError ? 'true' : undefined}\n aria-describedby={hasError ? 'error-message' : this.description ? 'description' : undefined}\n onInput={this.handleInput}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n />\n\n {/* Clear button */}\n {this.clearable && hasValue && !this.disabled && !this.readonly && (\n <button \n type=\"button\" \n class=\"clear-button\" \n onClick={this.handleClear}\n aria-label=\"Clear input\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M6 6L18 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n )}\n </div>\n\n {/* Error message */}\n {hasError && (\n <div class=\"error-row\" id=\"error-message\">\n <span class=\"error-icon\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12 16V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M12 8H12.01\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </span>\n <span class=\"error-text\">{this.error}</span>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-logo-well.entry.esm.js","sources":["src/components/af-logo-well/af-logo-well.css?tag=af-logo-well&encapsulation=shadow","src/components/af-logo-well/af-logo-well.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.logo-well {\n /* Use theme variable from parent carousel, or fall back to dark theme default */\n background: var(--af-carousel-logo-well-bg, var(--colour-background-level1-dark, #203e45));\n border-radius: var(--radius-logo-well-desktop, 16px);\n height: 72px;\n width: 184px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 20px 32px;\n box-sizing: border-box;\n}\n\n::slotted(img) {\n max-height: 32px;\n max-width: 120px;\n width: auto;\n height: auto;\n display: block;\n object-fit: contain;\n /* Use logo filter from parent theme, default to white logos for dark backgrounds */\n filter: var(--af-carousel-logo-filter, brightness(0) invert(1));\n}\n\n::slotted(svg) {\n max-height: 32px;\n max-width: 120px;\n width: auto;\n height: auto;\n display: block;\n /* SVG color inherits from parent */\n color: var(--af-carousel-logo-color, white);\n}\n\n::slotted(div) {\n white-space: nowrap;\n color: var(--af-carousel-logo-color, white);\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 600;\n font-size: 16px;\n}\n\n/* Mobile adjustments */\n@media (max-width: 767px) {\n .logo-well {\n border-radius: var(--radius-logo-well-mobile, 12px);\n padding: 20px 24px;\n }\n}\n","import { Component, h, Host } from '@stencil/core';\n\n/**\n * A rounded container for displaying client logos\n */\n@Component({\n tag: 'af-logo-well',\n styleUrl: 'af-logo-well.css',\n shadow: true,\n})\nexport class AfLogoWell {\n render() {\n return (\n <Host>\n <div class=\"logo-well\">\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,aAAa,GAAG,02BAA02B;;MCUn3B,UAAU,GAAA,MAAA;;;;IACrB,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EACpB,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACD;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-nav-accordion-item.entry.esm.js","sources":["src/components/af-nav-accordion-item/af-nav-accordion-item.css?tag=af-nav-accordion-item&encapsulation=scoped","src/components/af-nav-accordion-item/af-nav-accordion-item.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.nav-accordion-item {\n width: 100%;\n}\n\n/* Trigger button/link - clickable header */\n.trigger {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n width: 100%;\n padding: 20px 12px;\n background: transparent;\n border: none;\n border-bottom: 1px solid var(--af-nav-border-subtle, var(--af-background-border-subtle, #e8eeed));\n cursor: pointer;\n font: inherit;\n text-align: left;\n text-decoration: none;\n color: inherit;\n box-sizing: border-box;\n}\n\na.trigger {\n color: inherit;\n}\n\n.trigger:hover:not(:disabled) {\n background-color: rgba(20, 52, 59, 0.02);\n}\n\n.trigger:focus-visible {\n outline: 2px solid var(--af-nav-border-active, var(--af-background-border-active, #8a7049));\n outline-offset: -2px;\n}\n\n.trigger:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Trigger content */\n.trigger-content {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n min-height: 24px;\n}\n\n/* Label styling - matches NavItem primary-01 mobile */\n.label {\n font-family: var(--typography-primaryfont, 'NeuSans', 'Inter', system-ui, sans-serif);\n font-weight: var(--typography-headingweight, 500);\n font-size: 20px;\n line-height: 1.1;\n letter-spacing: -0.4px;\n color: var(--af-nav-item-primary, var(--af-typography-body-dark, #14343b));\n}\n\n/* Chevron indicator */\n.chevron,\n.chevron-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n color: var(--af-nav-item-primary, var(--af-typography-body-dark, #14343b));\n transition: transform 0.3s ease;\n}\n\n.chevron-button {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 0;\n}\n\n.chevron-button:hover {\n opacity: 0.7;\n}\n\n.chevron.is-open {\n transform: rotate(180deg);\n}\n\n/* Content wrapper - handles animation */\n.content-wrapper {\n overflow: hidden;\n transition: max-height 0.3s ease;\n}\n\n.content {\n padding: 0;\n background: var(--af-background-base, white);\n}\n\n/* Disabled state */\n:host(.is-disabled) .trigger {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n:host(.is-disabled) .trigger:hover {\n background-color: transparent;\n}\n\n/* Open state styling */\n:host(.is-open) .trigger {\n border-bottom-color: transparent;\n}\n\n/* Mobile breakpoint styling */\n:host(.breakpoint-mobile) .trigger {\n padding: 20px 12px;\n}\n\n:host(.breakpoint-mobile) .label {\n font-size: 20px;\n line-height: 1.1;\n letter-spacing: -0.4px;\n}\n\n/* Desktop breakpoint styling */\n:host(.breakpoint-desktop) .trigger {\n padding: 12px;\n}\n\n:host(.breakpoint-desktop) .label {\n font-size: 16px;\n line-height: 20px;\n letter-spacing: 0;\n}\n\n/* Nested content uses different padding */\n:host(.breakpoint-mobile) .content {\n padding-left: 0;\n}\n\n","import { Component, h, Prop, Host, Event, EventEmitter, Element, State, Watch, Method } from '@stencil/core';\n\n/**\n * Navigation accordion item with NavItem-styled trigger.\n * Combines navigation item styling with accordion collapse behavior.\n * \n * @slot trigger - Custom trigger content (optional - uses label if not provided)\n * @slot - The collapsible content (typically NavMenuNest or NavMenu components)\n */\n@Component({\n tag: 'af-nav-accordion-item',\n styleUrl: 'af-nav-accordion-item.css',\n shadow: false,\n scoped: true,\n})\nexport class AfNavAccordionItem {\n @Element() el!: HTMLElement;\n\n /**\n * Unique identifier for this accordion item\n */\n @Prop({ reflect: true }) itemId!: string;\n\n /**\n * Label text for the navigation item trigger\n */\n @Prop() label?: string;\n\n /**\n * Whether this item is currently expanded\n */\n @Prop({ reflect: true, mutable: true }) open: boolean = false;\n\n /**\n * Whether this item is disabled\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Optional href - if provided, clicking navigates instead of expanding\n * (chevron area would still toggle expansion if both behaviors needed)\n */\n @Prop() href?: string;\n\n /**\n * Breakpoint for styling\n */\n @Prop({ reflect: true }) breakpoint: 'desktop' | 'mobile' = 'mobile';\n\n /**\n * Emitted when the accordion item is toggled\n */\n @Event({ eventName: 'af-nav-accordion-item-toggle' }) navAccordionItemToggle!: EventEmitter<{ itemId: string; open: boolean }>;\n\n @State() contentHeight: number = 0;\n @State() hasTriggerSlot: boolean = false;\n\n private contentRef?: HTMLElement;\n\n @Watch('open')\n handleOpenChange(newValue: boolean) {\n if (newValue) {\n this.measureContent();\n }\n }\n\n componentDidLoad() {\n if (this.open) {\n this.measureContent();\n }\n }\n\n /**\n * Programmatically toggle the accordion item\n */\n @Method()\n async toggle() {\n if (!this.disabled && !this.href) {\n this.open = !this.open;\n this.navAccordionItemToggle.emit({ itemId: this.itemId, open: this.open });\n }\n }\n\n private measureContent() {\n if (this.contentRef) {\n this.contentHeight = this.contentRef.scrollHeight;\n }\n }\n\n private handleTriggerClick = (event: MouseEvent) => {\n // If it's a link, let it navigate (unless they clicked the chevron specifically)\n if (this.href) {\n return;\n }\n event.preventDefault();\n this.toggle();\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if ((event.key === 'Enter' || event.key === ' ') && !this.href) {\n event.preventDefault();\n this.toggle();\n }\n };\n\n private handleSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n this.hasTriggerSlot = slot.assignedNodes().length > 0;\n };\n\n render() {\n const contentStyle = {\n maxHeight: this.open ? `${this.contentHeight}px` : '0px'\n };\n\n const hasDropdownContent = true; // Assume content is always present for accordion items\n\n return (\n <Host \n class={{ \n 'is-open': this.open, \n 'is-disabled': this.disabled,\n [`breakpoint-${this.breakpoint}`]: true\n }}\n >\n <div class=\"nav-accordion-item\">\n {/* Trigger */}\n {this.href ? (\n <a\n href={this.href}\n class=\"trigger\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls={`content-${this.itemId}`}\n >\n <div class=\"trigger-content\">\n <slot name=\"trigger\" onSlotchange={this.handleSlotChange}>\n <span class=\"label\">{this.label}</span>\n </slot>\n </div>\n {hasDropdownContent && (\n <button \n class=\"chevron-button\"\n onClick={(e) => { e.preventDefault(); e.stopPropagation(); this.toggle(); }}\n aria-label={this.open ? 'Collapse' : 'Expand'}\n type=\"button\"\n >\n <div class={{ 'chevron': true, 'is-open': this.open }}>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M6 9l6 6 6-6\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </button>\n )}\n </a>\n ) : (\n <button\n class=\"trigger\"\n onClick={this.handleTriggerClick}\n onKeyDown={this.handleKeyDown}\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls={`content-${this.itemId}`}\n disabled={this.disabled}\n type=\"button\"\n >\n <div class=\"trigger-content\">\n <slot name=\"trigger\" onSlotchange={this.handleSlotChange}>\n <span class=\"label\">{this.label}</span>\n </slot>\n </div>\n <div class={{ 'chevron': true, 'is-open': this.open }}>\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M6 9l6 6 6-6\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n </button>\n )}\n\n {/* Collapsible content */}\n <div\n id={`content-${this.itemId}`}\n class=\"content-wrapper\"\n style={contentStyle}\n aria-hidden={!this.open ? 'true' : 'false'}\n >\n <div class=\"content\" ref={(el) => (this.contentRef = el)}>\n <slot></slot>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-nav-accordion.entry.esm.js","sources":["src/components/af-nav-accordion/af-nav-accordion.css?tag=af-nav-accordion&encapsulation=scoped","src/components/af-nav-accordion/af-nav-accordion.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.nav-accordion {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n/* Mobile breakpoint styling */\n:host(.breakpoint-mobile) .nav-accordion {\n /* Mobile-specific styles */\n}\n\n/* Desktop breakpoint styling */\n:host(.breakpoint-desktop) .nav-accordion {\n /* Desktop-specific styles if needed */\n}\n\n","import { Component, h, Prop, Host, Event, EventEmitter, Element, State, Listen } from '@stencil/core';\n\n/**\n * Navigation-styled accordion for mobile menu patterns.\n * A wrapper around af-accordion with navigation-specific styling.\n * \n * @slot - Place af-nav-accordion-item components here\n */\n@Component({\n tag: 'af-nav-accordion',\n styleUrl: 'af-nav-accordion.css',\n shadow: false,\n scoped: true,\n})\nexport class AfNavAccordion {\n @Element() el!: HTMLElement;\n\n /**\n * Behavior mode for the accordion.\n * - `independent`: Multiple items can be open simultaneously\n * - `exclusive`: Only one item can be open at a time (typical for mobile nav)\n */\n @Prop() mode: 'independent' | 'exclusive' = 'exclusive';\n\n /**\n * Breakpoint for styling\n * - `desktop`: Desktop-specific styles\n * - `mobile`: Mobile-specific styles (default for nav menus)\n */\n @Prop({ reflect: true }) breakpoint: 'desktop' | 'mobile' = 'mobile';\n\n /**\n * Currently open item ID(s)\n */\n @Prop({ mutable: true }) value?: string | string[];\n\n /**\n * Emitted when the open state of items changes\n */\n @Event({ eventName: 'af-nav-accordion-change' }) navAccordionChange!: EventEmitter<{ value: string | string[] | null }>;\n\n @State() internalValue: string[] = [];\n\n componentWillLoad() {\n this.internalValue = this.normalizeValue(this.value);\n }\n\n /**\n * Listen for toggle events from child items\n */\n @Listen('af-nav-accordion-item-toggle')\n handleItemToggle(event: CustomEvent<{ itemId: string; open: boolean }>) {\n event.stopPropagation();\n const { itemId, open } = event.detail;\n\n let newValue: string[];\n\n if (this.mode === 'exclusive') {\n newValue = open ? [itemId] : [];\n } else {\n if (open) {\n newValue = [...this.internalValue, itemId];\n } else {\n newValue = this.internalValue.filter(id => id !== itemId);\n }\n }\n\n this.internalValue = newValue;\n this.syncItems();\n\n const emitValue = this.mode === 'exclusive' \n ? (newValue.length > 0 ? newValue[0] : null)\n : newValue;\n this.navAccordionChange.emit({ value: emitValue });\n }\n\n private normalizeValue(value: string | string[] | undefined): string[] {\n if (value === undefined || value === null) {\n return [];\n }\n if (Array.isArray(value)) {\n return this.mode === 'exclusive' ? value.slice(0, 1) : value;\n }\n return [value];\n }\n\n private syncItems() {\n const items = this.el.querySelectorAll('af-nav-accordion-item');\n items.forEach((element) => {\n const item = element as HTMLElement & { itemId?: string; open?: boolean };\n if (item.itemId) {\n item.open = this.internalValue.includes(item.itemId);\n }\n });\n }\n\n componentDidLoad() {\n this.syncItems();\n }\n\n render() {\n return (\n <Host class={{ [`breakpoint-${this.breakpoint}`]: true, [`mode-${this.mode}`]: true }}>\n <div class=\"nav-accordion\">\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,iBAAiB,GAAG,mIAAmI;;MCchJ,cAAc,GAAA,MAAA;AAN3B,IAAA,WAAA,CAAA,OAAA,EAAA;;;AASE;;;;AAIG;AACK,QAAA,IAAI,CAAA,IAAA,GAAgC,WAAW;AAEvD;;;;AAIG;AACsB,QAAA,IAAU,CAAA,UAAA,GAAyB,QAAQ;AAY3D,QAAA,IAAa,CAAA,aAAA,GAAa,EAAE;AAoEtC;IAlEC,iBAAiB,GAAA;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGtD;;AAEG;AAEH,IAAA,gBAAgB,CAAC,KAAqD,EAAA;QACpE,KAAK,CAAC,eAAe,EAAE;QACvB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM;AAErC,QAAA,IAAI,QAAkB;AAEtB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AAC7B,YAAA,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;;aAC1B;YACL,IAAI,IAAI,EAAE;gBACR,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC;;iBACrC;AACL,gBAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,CAAC;;;AAI7D,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ;QAC7B,IAAI,CAAC,SAAS,EAAE;AAEhB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK;AAC9B,eAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;cACzC,QAAQ;QACZ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;;AAG5C,IAAA,cAAc,CAAC,KAAoC,EAAA;QACzD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,YAAA,OAAO,EAAE;;AAEX,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK;;QAE9D,OAAO,CAAC,KAAK,CAAC;;IAGR,SAAS,GAAA;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;AAC/D,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;YACxB,MAAM,IAAI,GAAG,OAA4D;AACzE,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;;AAExD,SAAC,CAAC;;IAGJ,gBAAgB,GAAA;QACd,IAAI,CAAC,SAAS,EAAE;;IAGlB,MAAM,GAAA;AACJ,QAAA,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,EAAE,CAAC,CAAc,WAAA,EAAA,IAAI,CAAC,UAAU,CAAE,CAAA,GAAG,IAAI,EAAE,CAAC,CAAQ,KAAA,EAAA,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,EAAA,EACnF,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,eAAe,EAAA,EACxB,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACD;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-nav-card.entry.esm.js","sources":["src/components/af-nav-card/af-nav-card.css?tag=af-nav-card&encapsulation=scoped","src/components/af-nav-card/af-nav-card.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.card-link {\n text-decoration: none;\n color: inherit;\n display: block;\n}\n\n/* Card container */\n.nav-card {\n display: flex;\n flex-direction: column;\n position: relative;\n width: 290px;\n height: 360px;\n min-height: 360px;\n border-radius: var(--radii-image, 16px);\n overflow: hidden;\n justify-content: flex-end;\n transition: transform 0.2s ease;\n}\n\n.nav-card.is-hovered {\n transform: scale(1.02);\n}\n\n/* Image container */\n.image-container {\n position: absolute;\n inset: 0;\n overflow: hidden;\n}\n\n.card-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n}\n\n/* Gradient overlay */\n.overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background: linear-gradient(to bottom, rgba(0, 0, 0, 0), #000000);\n padding: 80px 24px 24px 24px;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n/* Heading */\n.heading {\n margin: 0;\n font-family: var(--typography-headingfont, 'NeuSans', 'Inter', system-ui, sans-serif);\n font-weight: var(--font-weight-book, 500);\n font-size: 24px;\n line-height: 1.2;\n letter-spacing: -0.48px;\n color: #ffffff;\n width: 100%;\n}\n\n.nav-card.is-hovered .heading {\n text-decoration: underline;\n}\n","import { Component, h, Prop, Host, State } from '@stencil/core';\n\n/**\n * A navigation card component for featured article content in mega-menu dropdowns.\n * Displays an image with a gradient overlay and headline text.\n * \n * **Usage:**\n * - Place in the `sidebar` slot of NavMenuNest\n * - Provide imageSrc, heading, and href props\n * \n * **Hover behavior:**\n * - Slight scale effect (1.02)\n * - Headline underline\n */\n@Component({\n tag: 'af-nav-card',\n styleUrl: 'af-nav-card.css',\n shadow: false,\n scoped: true,\n})\nexport class AfNavCard {\n /**\n * The headline text displayed over the image\n */\n @Prop() heading?: string;\n\n /**\n * URL to navigate to when clicked\n */\n @Prop() href?: string;\n\n /**\n * Image source URL for the background\n */\n @Prop() imageSrc?: string;\n\n /**\n * Alternative text for the image\n */\n @Prop() imageAlt: string = '';\n\n @State() isHovered: boolean = false;\n\n private handleMouseEnter = () => {\n this.isHovered = true;\n };\n\n private handleMouseLeave = () => {\n this.isHovered = false;\n };\n\n render() {\n const classes = {\n 'nav-card': true,\n 'is-hovered': this.isHovered\n };\n\n const content = (\n <div\n class={classes}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <div class=\"image-container\">\n {this.imageSrc && (\n <img src={this.imageSrc} alt={this.imageAlt} class=\"card-image\" />\n )}\n </div>\n <div class=\"overlay\">\n {this.heading && (\n <h3 class=\"heading\">{this.heading}</h3>\n )}\n </div>\n </div>\n );\n\n if (this.href) {\n return (\n <Host>\n <a href={this.href} class=\"card-link\">\n {content}\n </a>\n </Host>\n );\n }\n\n return <Host>{content}</Host>;\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,YAAY,GAAG,+kCAA+kC;;MCoBvlC,SAAS,GAAA,MAAA;AANtB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAsBE;;AAEG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAW,EAAE;AAEpB,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK;AAE3B,QAAA,IAAgB,CAAA,gBAAA,GAAG,MAAK;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACvB,SAAC;AAEO,QAAA,IAAgB,CAAA,gBAAA,GAAG,MAAK;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACxB,SAAC;AAuCF;IArCC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI,CAAC;SACpB;QAED,MAAM,OAAO,IACX,WACE,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,IAAI,CAAC,gBAAgB,EACnC,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAA,EAEnC,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,iBAAiB,EACzB,EAAA,IAAI,CAAC,QAAQ,KACZ,CAAK,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAC,YAAY,EAAG,CAAA,CACnE,CACG,EACN,CAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAC,SAAS,EAAA,EACjB,IAAI,CAAC,OAAO,KACX,CAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAC,SAAS,EAAA,EAAE,IAAI,CAAC,OAAO,CAAM,CACxC,CACG,CACF,CACP;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,QACE,EAAC,IAAI,EAAA,IAAA,EACH,CAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAC,WAAW,EAClC,EAAA,OAAO,CACN,CACC;;QAIX,OAAO,CAAC,CAAA,IAAI,EAAE,IAAA,EAAA,OAAO,CAAQ;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-nav-menu-nest.entry.esm.js","sources":["src/components/af-nav-menu-nest/af-nav-menu-nest.css?tag=af-nav-menu-nest&encapsulation=scoped","src/components/af-nav-menu-nest/af-nav-menu-nest.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.nav-menu-nest {\n display: inline-flex;\n background: var(--af-background-base, #ffffff);\n border-radius: 32px;\n}\n\n/* Desktop layout */\n.nav-menu-nest.breakpoint-desktop {\n flex-direction: row;\n align-items: stretch;\n}\n\n.nav-menu-nest.breakpoint-desktop .menu-columns {\n display: flex;\n flex-direction: row;\n gap: 32px;\n padding: 24px 0 32px 40px;\n}\n\n.nav-menu-nest.breakpoint-desktop .menu-sidebar {\n display: flex;\n flex-direction: column;\n padding: 24px 40px 32px 32px;\n}\n\n/* Slotted content in sidebar - match column spacing */\n.nav-menu-nest.breakpoint-desktop .menu-sidebar ::slotted(af-nav-menu) {\n padding-top: 16px;\n}\n\n.nav-menu-nest.breakpoint-desktop .menu-sidebar ::slotted(af-nav-card) {\n margin-top: 16px;\n}\n\n/* Slotted NavMenu in columns - add border and spacing */\n.nav-menu-nest.breakpoint-desktop .menu-columns ::slotted(af-nav-menu) {\n border-right: 1px solid var(--af-background-border-subtle, #e8eeed);\n padding-right: 32px;\n padding-top: 16px;\n}\n\n/* Last NavMenu in columns - no border by default */\n.nav-menu-nest.breakpoint-desktop .menu-columns ::slotted(af-nav-menu:last-of-type) {\n border-right: none;\n padding-right: 0;\n}\n\n/* When showSidebarBorder is true, last column gets heavier border */\n:host([show-sidebar-border]) .nav-menu-nest.breakpoint-desktop .menu-columns ::slotted(af-nav-menu:last-of-type) {\n border-right: 1px solid var(--af-background-border-heavy, #c6d5d1);\n padding-right: 32px;\n}\n\n/* Mobile layout */\n.nav-menu-nest.breakpoint-mobile {\n flex-direction: column;\n border-radius: 0;\n}\n\n.nav-menu-nest.breakpoint-mobile .menu-columns {\n display: flex;\n flex-direction: column;\n}\n\n.nav-menu-nest.breakpoint-mobile .menu-sidebar {\n display: flex;\n flex-direction: column;\n padding: 32px 12px;\n border-top: 1px solid var(--af-background-border-subtle, #e8eeed);\n}\n\n.nav-menu-nest.breakpoint-mobile .menu-columns ::slotted(af-nav-menu) {\n border-right: none;\n border-bottom: 1px solid var(--af-background-border-subtle, #e8eeed);\n}\n","import { Component, h, Prop, Host } from '@stencil/core';\n\n/**\n * A mega-menu dropdown panel component.\n * Acts as a container for NavMenu columns and optionally a sidebar.\n * Used as the dropdown content for navbar items.\n * \n * **Slots:**\n * - default: Place NavMenu components here - they will be displayed as columns\n * - sidebar: Optional sidebar content (NavMenu, NavCard, or any content)\n * \n * **Example:**\n * ```html\n * <af-nav-menu-nest type=\"solutions\" breakpoint=\"desktop\">\n * <af-nav-menu heading=\"Industries\">...</af-nav-menu>\n * <af-nav-menu heading=\"Use Cases\">...</af-nav-menu>\n * <af-nav-menu heading=\"Documents\">...</af-nav-menu>\n * <af-nav-menu slot=\"sidebar\" heading=\"Resume Parser\">...</af-nav-menu>\n * </af-nav-menu-nest>\n * ```\n */\n@Component({\n tag: 'af-nav-menu-nest',\n styleUrl: 'af-nav-menu-nest.css',\n shadow: false,\n scoped: true,\n})\nexport class AfNavMenuNest {\n /**\n * The type/variant of the mega-menu\n * - 'solutions': Multi-column layout (3 columns + sidebar)\n * - 'solutions-alt': Alternative solutions layout\n * - 'resources': Multi-column layout with optional featured card\n * - 'pricing': Simpler layout without sidebar\n */\n @Prop() type: 'solutions' | 'solutions-alt' | 'resources' | 'pricing' = 'solutions';\n\n /**\n * Breakpoint variant for responsive styling\n * - 'desktop': Horizontal multi-column layout\n * - 'mobile': Vertical stacked layout\n */\n @Prop() breakpoint: 'desktop' | 'mobile' = 'desktop';\n\n /**\n * Whether to show the heavier border on the last column (before sidebar).\n * Set to `true` when sidebar has content, `false` when no sidebar.\n * When `false`, the last column has no border.\n */\n @Prop({ reflect: true }) showSidebarBorder: boolean = true;\n\n render() {\n const classes = {\n 'nav-menu-nest': true,\n 'theme-white': true,\n [`type-${this.type}`]: true,\n [`breakpoint-${this.breakpoint}`]: true\n };\n\n return (\n <Host>\n <div class={classes}>\n <div class=\"menu-columns\">\n <slot></slot>\n </div>\n <div class=\"menu-sidebar\">\n <slot name=\"sidebar\"></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,gBAAgB,GAAG,2gFAA2gF;;MC2BvhF,aAAa,GAAA,MAAA;AAN1B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAOE;;;;;;AAMG;AACK,QAAA,IAAI,CAAA,IAAA,GAA4D,WAAW;AAEnF;;;;AAIG;AACK,QAAA,IAAU,CAAA,UAAA,GAAyB,SAAS;AAEpD;;;;AAIG;AACsB,QAAA,IAAiB,CAAA,iBAAA,GAAY,IAAI;AAuB3D;IArBC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;AAC3B,YAAA,CAAC,cAAc,IAAI,CAAC,UAAU,CAAE,CAAA,GAAG;SACpC;AAED,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,OAAO,EAAA,EACjB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,cAAc,EAAA,EACvB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,EACN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,cAAc,EAAA,EACvB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,SAAS,EAAA,CAAQ,CACxB,CACF,CACD;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-nav-menu.entry.esm.js","sources":["src/components/af-nav-menu/af-nav-menu.css?tag=af-nav-menu&encapsulation=scoped","src/components/af-nav-menu/af-nav-menu.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.nav-menu {\n display: flex;\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n min-height: 1px;\n min-width: 1px;\n}\n\n/* Desktop styles */\n.nav-menu.breakpoint-desktop {\n padding: 0;\n flex: 1 0 0;\n align-self: stretch;\n}\n\n/* Border is now controlled by parent NavMenuNest via ::slotted()\n Use showBorder prop only when NavMenu is used standalone */\n.nav-menu.breakpoint-desktop.has-border {\n border-right: 1px solid var(--af-background-border-subtle, #e8eeed);\n padding-right: 32px;\n padding-top: 16px;\n}\n\n/* Mobile styles */\n.nav-menu.breakpoint-mobile {\n padding: 32px 12px;\n width: 100%;\n border-bottom: 1px solid var(--af-background-border-subtle, #e8eeed);\n}\n\n/* Menu header */\n.menu-header {\n display: flex;\n gap: 16px;\n align-items: center;\n width: 100%;\n}\n\n.menu-heading {\n margin: 0;\n font-family: var(--typography-headingfont, 'NeuSans', 'Inter', system-ui, sans-serif);\n font-weight: var(--font-weight-book, 500);\n font-size: 20px;\n line-height: 1.2;\n letter-spacing: -0.4px;\n color: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #b09670));\n flex: 1 0 0;\n min-height: 1px;\n min-width: 1px;\n}\n\n/* Mobile heading adjustments */\n.nav-menu.breakpoint-mobile .menu-heading {\n line-height: 1.1;\n}\n\n/* Menu items container */\n.menu-items {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n width: 100%;\n}\n\n/* Mobile items with left padding */\n.nav-menu.breakpoint-mobile .menu-items {\n padding-left: 24px;\n}\n\n/* Slot styling for nav-items */\n::slotted(af-nav-item) {\n width: 100%;\n}\n\n/* Card style variant - adds background and rounded corners */\n.nav-menu.card-style {\n background: var(--af-background-level-1, #e8eeed);\n border-radius: var(--radii-card-level-1, 32px);\n padding: 40px;\n}\n\n.nav-menu.card-style.breakpoint-desktop {\n flex: 1 0 0;\n align-self: stretch;\n}\n\n","import { Component, h, Prop, Host } from '@stencil/core';\n\n/**\n * A grouped navigation menu component with a heading.\n * Used in mega-menu dropdowns to group related navigation items.\n */\n@Component({\n tag: 'af-nav-menu',\n styleUrl: 'af-nav-menu.css',\n shadow: false,\n scoped: true,\n})\nexport class AfNavMenu {\n /**\n * The heading text displayed above the navigation items\n */\n @Prop() heading?: string;\n\n /**\n * Breakpoint variant for responsive styling\n * - 'desktop': Desktop-specific styles (right border, horizontal padding)\n * - 'mobile': Mobile-specific styles (bottom border, vertical layout)\n */\n @Prop() breakpoint: 'desktop' | 'mobile' = 'desktop';\n\n /**\n * Whether to show the right border separator.\n * When used inside NavMenuNest, borders are controlled by the parent.\n * Set to true only when using NavMenu standalone.\n */\n @Prop() showBorder: boolean = false;\n\n /**\n * Whether to display as a card with background color and rounded corners.\n * Used for highlighted sidebar menus (e.g., solutions-alt variant).\n */\n @Prop({ reflect: true }) cardStyle: boolean = false;\n\n render() {\n const classes = {\n 'nav-menu': true,\n [`breakpoint-${this.breakpoint}`]: true,\n 'has-border': this.showBorder,\n 'card-style': this.cardStyle\n };\n\n return (\n <Host>\n <div class={classes}>\n {this.heading && (\n <div class=\"menu-header\">\n <h3 class=\"menu-heading\">{this.heading}</h3>\n </div>\n )}\n <div class=\"menu-items\">\n <slot></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,YAAY,GAAG,69CAA69C;;MCYr+C,SAAS,GAAA,MAAA;AANtB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAYE;;;;AAIG;AACK,QAAA,IAAU,CAAA,UAAA,GAAyB,SAAS;AAEpD;;;;AAIG;AACK,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK;AAEnC;;;AAGG;AACsB,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK;AAyBpD;IAvBC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,CAAC,cAAc,IAAI,CAAC,UAAU,CAAE,CAAA,GAAG,IAAI;YACvC,YAAY,EAAE,IAAI,CAAC,UAAU;YAC7B,YAAY,EAAE,IAAI,CAAC;SACpB;QAED,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,OAAO,EAAA,EAChB,IAAI,CAAC,OAAO,KACX,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,aAAa,EAAA,EACtB,CAAI,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,cAAc,EAAA,EAAE,IAAI,CAAC,OAAO,CAAM,CACxC,CACP,EACD,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAA,EACrB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACF,CACD;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-number-badge.entry.esm.js","sources":["src/components/af-number-badge/af-number-badge.css?tag=af-number-badge&encapsulation=shadow","src/components/af-number-badge/af-number-badge.tsx"],"sourcesContent":[":host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n user-select: none;\n flex-shrink: 0;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: var(--af-font-family-sans, 'NeuSans', Arial, sans-serif);\n font-weight: 500;\n}\n\n/* In Circle variant - filled soft-clay circle */\n.badge.variant-inCircle {\n border-radius: 50%;\n background-color: var(--af-color-brand-soft-clay, #B09670);\n color: var(--af-color-brand-inkwell, #14343B);\n}\n\n/* Outlined variant - text only in mist-green */\n.badge.variant-outlined {\n background-color: transparent;\n color: var(--af-color-brand-mist-green, #C6D5D1);\n}\n\n","import { Component, h, Prop, Host } from '@stencil/core';\n\nexport type NumberBadgeNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;\nexport type NumberBadgeVariant = 'inCircle' | 'outlined';\n\n/**\n * NumberBadge displays numbers 1-10 in either a filled circle or text-only style.\n * Perfect for numbered lists, step indicators, or ordered content.\n * \n * @example\n * ```html\n * <af-number-badge number=\"1\" variant=\"inCircle\" size=\"48\"></af-number-badge>\n * <af-number-badge number=\"5\" variant=\"outlined\" size=\"32\"></af-number-badge>\n * ```\n */\n@Component({\n tag: 'af-number-badge',\n styleUrl: 'af-number-badge.css',\n shadow: true\n})\nexport class AfNumberBadge {\n /**\n * The number to display (1-10)\n */\n @Prop() number: NumberBadgeNumber = 1;\n\n /**\n * Visual variant of the badge\n * - `inCircle` - Number in filled soft-clay circle\n * - `outlined` - Number text only in mist-green\n */\n @Prop() variant: NumberBadgeVariant = 'inCircle';\n\n /**\n * Size of the badge in pixels\n */\n @Prop() size: number = 48;\n\n render() {\n const isInCircle = this.variant === 'inCircle';\n const fontSize = isInCircle ? this.size * 0.4 : this.size * 0.8;\n\n const badgeStyle = {\n width: `${this.size}px`,\n height: `${this.size}px`,\n fontSize: `${fontSize}px`,\n };\n\n return (\n <Host\n role=\"img\"\n aria-label={`Number ${this.number}${isInCircle ? ' badge' : ''}`}\n >\n <span\n class={{\n 'badge': true,\n [`variant-${this.variant}`]: true,\n }}\n style={badgeStyle}\n >\n {this.number}\n </span>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,gBAAgB,GAAG,mgBAAmgB;;MCoB/gB,aAAa,GAAA,MAAA;AAL1B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;AAEG;AACK,QAAA,IAAM,CAAA,MAAA,GAAsB,CAAC;AAErC;;;;AAIG;AACK,QAAA,IAAO,CAAA,OAAA,GAAuB,UAAU;AAEhD;;AAEG;AACK,QAAA,IAAI,CAAA,IAAA,GAAW,EAAE;AA6B1B;IA3BC,MAAM,GAAA;AACJ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,KAAK,UAAU;AAC9C,QAAA,MAAM,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG;AAE/D,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,KAAK,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAI,EAAA,CAAA;AACvB,YAAA,MAAM,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAI,EAAA,CAAA;YACxB,QAAQ,EAAE,CAAG,EAAA,QAAQ,CAAI,EAAA,CAAA;SAC1B;AAED,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EACH,IAAI,EAAC,KAAK,EACE,YAAA,EAAA,CAAU,OAAA,EAAA,IAAI,CAAC,MAAM,CAAA,EAAG,UAAU,GAAG,QAAQ,GAAG,EAAE,EAAE,EAAA,EAEhE,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE;AACL,gBAAA,OAAO,EAAE,IAAI;AACb,gBAAA,CAAC,WAAW,IAAI,CAAC,OAAO,CAAE,CAAA,GAAG,IAAI;aAClC,EACD,KAAK,EAAE,UAAU,EAEhB,EAAA,IAAI,CAAC,MAAM,CACP,CACF;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-progress-line.entry.esm.js","sources":["src/components/af-progress-line/af-progress-line.css?tag=af-progress-line&encapsulation=scoped","src/components/af-progress-line/af-progress-line.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n/* ==========================================================================\n Progress Line Base Styles\n ========================================================================== */\n\n.progress-line {\n position: relative;\n overflow: hidden;\n}\n\n.progress-line--horizontal {\n height: 3px;\n width: 100%;\n}\n\n/* ==========================================================================\n Background Track\n ========================================================================== */\n\n.progress-line__background {\n position: absolute;\n inset: 0;\n background: var(--af-background-border-default, var(--colour-background-border-default, #d1ddda));\n height: 1px;\n top: 50%;\n transform: translateY(-50%);\n}\n\n/* ==========================================================================\n Active Progress\n ========================================================================== */\n\n.progress-line__active {\n position: relative;\n height: 100%;\n min-width: 1px;\n background: var(--af-background-border-active, var(--colour-background-border-active, #8a7049));\n transition: width 0.15s ease-out;\n}\n\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * Progress Line atom component for displaying scroll or completion progress.\n * \n * Shows a horizontal bar with a filled portion indicating progress.\n * Used primarily for carousel scroll indicators.\n */\n@Component({\n tag: 'af-progress-line',\n styleUrl: 'af-progress-line.css',\n shadow: false,\n scoped: true,\n})\nexport class AfProgressLine {\n /**\n * Progress value from 0 to 1 (0 = 0%, 1 = 100%).\n */\n @Prop() progress: number = 0;\n\n /**\n * Orientation of the progress line.\n * Currently only horizontal is supported.\n */\n @Prop() orientation: 'horizontal' = 'horizontal';\n\n render() {\n // Clamp progress between 0 and 1\n const clampedProgress = Math.max(0, Math.min(1, this.progress));\n const progressPercent = clampedProgress * 100;\n\n return (\n <Host>\n <div\n class={{\n 'progress-line': true,\n [`progress-line--${this.orientation}`]: true,\n }}\n role=\"progressbar\"\n aria-valuenow={Math.round(progressPercent)}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div class=\"progress-line__background\" />\n <div\n class=\"progress-line__active\"\n style={{ width: `${progressPercent}%` }}\n />\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,iBAAiB,GAAG,0mBAA0mB;;MCcvnB,cAAc,GAAA,MAAA;AAN3B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAOE;;AAEG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAW,CAAC;AAE5B;;;AAGG;AACK,QAAA,IAAW,CAAA,WAAA,GAAiB,YAAY;AA4BjD;IA1BC,MAAM,GAAA;;AAEJ,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC/D,QAAA,MAAM,eAAe,GAAG,eAAe,GAAG,GAAG;QAE7C,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE;AACL,gBAAA,eAAe,EAAE,IAAI;AACrB,gBAAA,CAAC,kBAAkB,IAAI,CAAC,WAAW,CAAE,CAAA,GAAG,IAAI;AAC7C,aAAA,EACD,IAAI,EAAC,aAAa,EAAA,eAAA,EACH,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAC3B,eAAA,EAAA,CAAC,mBACD,GAAG,EAAA,EAElB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,2BAA2B,EAAG,CAAA,EACzC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,uBAAuB,EAC7B,KAAK,EAAE,EAAE,KAAK,EAAE,CAAG,EAAA,eAAe,CAAG,CAAA,CAAA,EAAE,GACvC,CACE,CACD;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-radio.entry.esm.js","sources":["src/components/af-radio/af-radio.css?tag=af-radio&encapsulation=shadow","src/components/af-radio/af-radio.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.radio {\n display: inline-flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n line-height: 20px;\n color: var(--af-form-control-label, var(--colour-brand-inkwell, #14343b));\n user-select: none;\n}\n\n.radio.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Hidden native input */\n.input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* Custom radio control */\n.control {\n position: relative;\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n border-radius: var(--radii-radio, 9999px);\n /* Use inset box-shadow instead of border to prevent layout shift */\n border: none;\n box-shadow: inset 0 0 0 1px var(--af-form-control-stroke, var(--colour-mistgreen-500, #d0d6d8));\n background: var(--af-form-control-bg, var(--colour-brand-white, #ffffff));\n transition: all 0.15s ease;\n box-sizing: border-box;\n}\n\n/* Checked state */\n.control.checked {\n background: var(--af-form-control-bg-checked, var(--colour-brand-inkwell, #14343b));\n box-shadow: none;\n}\n\n/* Disabled state */\n.control.disabled {\n background: var(--af-form-control-bg-disabled, var(--colour-mistgreen-200, #e8ebeb));\n box-shadow: inset 0 0 0 1px var(--af-form-control-stroke-disabled, var(--colour-mistgreen-500, #d0d6d8));\n}\n\n.control.checked.disabled {\n background: var(--af-form-control-bg-checked-disabled, var(--colour-inkwell-350, #708380));\n box-shadow: none;\n}\n\n/* Hover state */\n.radio:not(.disabled):hover .control:not(.checked) {\n box-shadow: inset 0 0 0 1px var(--af-form-control-stroke-hover, var(--colour-brand-inkwell, #14343b));\n}\n\n/* Focus state */\n.input:focus-visible + .control {\n outline: none;\n box-shadow: \n inset 0 0 0 1px var(--af-form-control-stroke, var(--colour-mistgreen-500, #d0d6d8)),\n 0 0 0 4px var(--af-background-base, var(--colour-brand-white, #ffffff)), \n 0 0 0 5px var(--af-form-control-stroke-hover, var(--colour-brand-inkwell, #14343b));\n}\n\n.input:focus-visible + .control.checked {\n box-shadow: \n 0 0 0 4px var(--af-background-base, var(--colour-brand-white, #ffffff)), \n 0 0 0 5px var(--af-form-control-stroke-hover, var(--colour-brand-inkwell, #14343b));\n}\n\n/* Inner dot - always present, visibility controlled by opacity */\n.dot {\n position: absolute;\n inset: 0;\n margin: auto;\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--af-form-control-icon, var(--colour-brand-white, #ffffff));\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n\n.control.checked .dot {\n opacity: 1;\n}\n\n/* Label styling */\n.label {\n display: flex;\n align-items: center;\n min-height: 24px;\n}\n\n/* Empty label - hide if no content */\n.label:empty {\n display: none;\n}\n","import { Component, h, Prop, Host, Event, EventEmitter, Element } from '@stencil/core';\n\n/**\n * Radio component for selecting a single option from a group.\n * Radios with the same `name` prop are mutually exclusive.\n * \n * @slot - Radio label text\n */\n@Component({\n tag: 'af-radio',\n styleUrl: 'af-radio.css',\n shadow: true\n})\nexport class AfRadio {\n @Element() el!: HTMLElement;\n\n /**\n * Whether the radio is checked\n */\n @Prop({ mutable: true, reflect: true }) checked: boolean = false;\n\n /**\n * Whether the radio is disabled\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * The name of the radio for form submission (radios with same name are grouped)\n */\n @Prop({ reflect: true }) name?: string;\n\n /**\n * The value of the radio for form submission\n */\n @Prop() value?: string;\n\n /**\n * Emitted when the radio checked state changes\n */\n @Event() afChange!: EventEmitter<{ checked: boolean; value?: string; name?: string }>;\n\n private handleClick = () => {\n if (this.disabled || this.checked) return;\n \n // Uncheck other radios with the same name\n if (this.name) {\n const siblings = document.querySelectorAll(`af-radio[name=\"${this.name}\"]`);\n siblings.forEach((radio) => {\n if (radio !== this.el && (radio as any).checked) {\n (radio as any).checked = false;\n }\n });\n }\n \n this.checked = true;\n this.afChange.emit({ checked: this.checked, value: this.value, name: this.name });\n };\n\n render() {\n const radioClasses = {\n 'radio': true,\n 'disabled': this.disabled\n };\n\n const controlClasses = {\n 'control': true,\n 'checked': this.checked,\n 'disabled': this.disabled\n };\n\n return (\n <Host>\n <label class={radioClasses} onClick={this.handleClick}>\n <input\n type=\"radio\"\n class=\"input\"\n checked={this.checked}\n disabled={this.disabled}\n name={this.name}\n value={this.value}\n tabindex={this.disabled ? -1 : 0}\n />\n <span class={controlClasses}>\n <span class=\"dot\"></span>\n </span>\n <span class=\"label\">\n <slot></slot>\n </span>\n </label>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,UAAU,GAAG,2rEAA2rE;;MCajsE,OAAO,GAAA,MAAA;AALpB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAQE;;AAEG;AACqC,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK;AAEhE;;AAEG;AACsB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AAiB1C,QAAA,IAAW,CAAA,WAAA,GAAG,MAAK;AACzB,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO;gBAAE;;AAGnC,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAkB,eAAA,EAAA,IAAI,CAAC,IAAI,CAAI,EAAA,CAAA,CAAC;AAC3E,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;oBACzB,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,IAAK,KAAa,CAAC,OAAO,EAAE;AAC9C,wBAAA,KAAa,CAAC,OAAO,GAAG,KAAK;;AAElC,iBAAC,CAAC;;AAGJ,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;YACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACnF,SAAC;AAoCF;IAlCC,MAAM,GAAA;AACJ,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI,CAAC;SAClB;AAED,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,UAAU,EAAE,IAAI,CAAC;SAClB;AAED,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAO,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAA,EACnD,CACE,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EACZ,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,EAChC,CAAA,EACF,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,cAAc,EAAA,EACzB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,KAAK,EAAA,CAAQ,CACpB,EACP,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,OAAO,EAAA,EACjB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACR,CACD,CACH;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-section.entry.esm.js","sources":["src/components/af-section/af-section.css?tag=af-section&encapsulation=scoped","src/components/af-section/af-section.tsx"],"sourcesContent":["/**\n * Section Component Styles\n * \n * Provides themed containers with proper spacing.\n * Theme classes set CSS custom properties that child components consume.\n */\n\n:host {\n display: block;\n width: 100%;\n}\n\n.section {\n width: 100%;\n position: relative;\n}\n\n/* Padding variants */\n.padding-none {\n padding: 0;\n}\n\n.padding-tight {\n padding: 48px 0;\n}\n\n.padding-default {\n padding: 96px 0;\n}\n\n.padding-loose {\n padding: 120px 0 96px;\n}\n\n/* ==========================================================================\n WHITE THEME\n ========================================================================== */\n\n.theme-white {\n background-color: var(--colour-brand-white, #FFFFFF);\n \n /* Background tokens */\n --af-background-base: var(--colour-brand-white, #FFFFFF);\n --af-background-base-hover: var(--colour-mistgreen-100, #f4f7f6);\n --af-background-contrast: var(--colour-brand-mist-green, #c6d5d1);\n --af-background-level-1: var(--colour-mistgreen-200, #e8eeed);\n --af-background-level-1-hover: var(--colour-mistgreen-300, #dde6e3);\n --af-background-border-subtle: var(--colour-mistgreen-200, #e8eeed);\n --af-background-border-default: var(--colour-mistgreen-400, #d1ddda);\n --af-background-border-heavy: var(--colour-mistgreen-500, #c6d5d1);\n --af-background-border-active: var(--colour-softclay-800, #8a7049);\n --af-background-icon-default: var(--colour-brand-inkwell, #14343b);\n --af-background-icon-accent: var(--colour-brand-soft-clay, #b09670);\n \n /* Typography tokens */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-heading-secondary: var(--colour-brand-soft-clay, #b09670);\n --af-typography-body-dark: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-typography-body-subtle: var(--colour-inkwell-350, #60767b);\n \n /* Button - Primary */\n --af-button-primary-text: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-bg: var(--colour-brand-ice, #a6fffb);\n --af-button-primary-bg-hover: var(--colour-ice-600, #95e6e2);\n --af-button-primary-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Button - Secondary */\n --af-button-secondary-text: var(--colour-brand-inkwell, #14343b);\n --af-button-secondary-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-secondary-bg: transparent;\n --af-button-secondary-bg-hover: rgba(0, 0, 0, 0.08);\n --af-button-secondary-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Button - Tertiary */\n --af-button-ghost-text: var(--colour-brand-inkwell, #14343b);\n --af-button-ghost-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-ghost-stroke: var(--colour-brand-soft-clay, #B09670);\n \n /* Input tokens */\n --af-input-label: var(--af-typography-body-dark);\n --af-input-description: var(--af-typography-body-default);\n --af-input-text: var(--af-typography-body-dark);\n --af-input-placeholder: var(--af-typography-body-subtle);\n --af-input-icon: var(--af-background-icon-default);\n --af-input-bg: var(--colour-brand-white, #ffffff);\n --af-input-bg-hover: var(--colour-mistgreen-100, #f4f7f6);\n --af-input-bg-disabled: var(--af-background-level-1);\n --af-input-border: var(--af-background-border-default);\n --af-input-border-hover: var(--af-background-border-heavy);\n --af-input-border-active: var(--af-typography-body-dark);\n --af-input-border-error: var(--colour-error, #be292a);\n --af-input-error: var(--colour-error, #be292a);\n --af-input-focus-ring: var(--af-typography-body-dark);\n \n /* Form control tokens (checkbox, radio, switch) */\n --af-form-control-bg: var(--colour-brand-white, #ffffff);\n --af-form-control-bg-checked: var(--colour-brand-inkwell, #14343b);\n --af-form-control-bg-disabled: var(--colour-mistgreen-200, #e8ebeb);\n --af-form-control-bg-checked-disabled: var(--colour-inkwell-350, #708380);\n --af-form-control-stroke: var(--colour-mistgreen-500, #d0d6d8);\n --af-form-control-stroke-hover: var(--colour-brand-inkwell, #14343b);\n --af-form-control-stroke-disabled: var(--colour-mistgreen-500, #d0d6d8);\n --af-form-control-icon: var(--colour-brand-white, #ffffff);\n --af-form-control-label: var(--colour-brand-inkwell, #14343b);\n}\n\n/* ==========================================================================\n INKWELL THEME (Dark)\n ========================================================================== */\n\n.theme-inkwell {\n background-color: var(--colour-brand-inkwell, #14343B);\n \n /* Background tokens */\n --af-background-base: var(--colour-brand-inkwell, #14343b);\n --af-background-base-hover: var(--colour-inkwell-600, #102a2f);\n --af-background-contrast: var(--colour-inkwell-700, #102a2f);\n --af-background-level-1: var(--colour-inkwell-450, #203e45);\n --af-background-level-1-hover: var(--colour-inkwell-400, #2b484f);\n --af-background-border-subtle: var(--colour-inkwell-450, #203e45);\n --af-background-border-default: var(--colour-inkwell-400, #2b484f);\n --af-background-border-heavy: var(--colour-inkwell-700, #102a2f);\n --af-background-border-active: var(--colour-brand-ice, #a6fffb);\n --af-background-icon-default: var(--colour-brand-white, #ffffff);\n --af-background-icon-accent: var(--colour-brand-ice, #a6fffb);\n \n /* Typography tokens */\n --af-typography-heading-primary: var(--colour-brand-mist-green, #c6d5d1);\n --af-typography-heading-secondary: var(--colour-brand-white, #ffffff);\n --af-typography-body-dark: var(--colour-brand-white, #ffffff);\n --af-typography-body-default: var(--colour-inkwell-100, #d0d6d8);\n --af-typography-body-subtle: var(--colour-inkwell-200, #a1aeb1);\n \n /* Button - Primary */\n --af-button-primary-text: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-bg: var(--colour-brand-ice, #a6fffb);\n --af-button-primary-bg-hover: var(--colour-ice-600, #95e6e2);\n --af-button-primary-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Button - Secondary */\n --af-button-secondary-text: var(--colour-brand-white, #ffffff);\n --af-button-secondary-icon: var(--colour-brand-white, #ffffff);\n --af-button-secondary-bg: transparent;\n --af-button-secondary-bg-hover: rgba(255, 255, 255, 0.08);\n --af-button-secondary-stroke: var(--colour-brand-white, #ffffff);\n \n /* Button - Tertiary */\n --af-button-ghost-text: var(--colour-brand-white, #ffffff);\n --af-button-ghost-icon: var(--colour-brand-white, #ffffff);\n --af-button-ghost-stroke: var(--colour-brand-ice, #A6FFFB);\n \n /* Input tokens */\n --af-input-label: var(--af-typography-body-dark);\n --af-input-description: var(--af-typography-body-default);\n --af-input-text: var(--af-typography-body-dark);\n --af-input-placeholder: var(--af-typography-body-subtle);\n --af-input-icon: var(--af-background-icon-default);\n --af-input-bg: var(--colour-inkwell-450, #203e45);\n --af-input-bg-hover: var(--colour-inkwell-400, #2b484f);\n --af-input-bg-disabled: var(--colour-inkwell-600, #102a2f);\n --af-input-border: var(--af-background-border-default);\n --af-input-border-hover: var(--af-background-border-heavy);\n --af-input-border-active: var(--colour-brand-ice, #a6fffb);\n --af-input-border-error: var(--colour-error, #be292a);\n --af-input-error: var(--colour-error, #be292a);\n --af-input-focus-ring: var(--colour-brand-ice, #a6fffb);\n \n /* Form control tokens (checkbox, radio, switch) */\n --af-form-control-bg: var(--colour-inkwell-450, #203e45);\n --af-form-control-bg-checked: var(--colour-brand-mist-green, #c6d5d1);\n --af-form-control-bg-disabled: var(--colour-inkwell-400, #2b484f);\n --af-form-control-bg-checked-disabled: var(--colour-mistgreen-700, #9eaaa7);\n --af-form-control-stroke: var(--colour-inkwell-350, #60767b);\n --af-form-control-stroke-hover: var(--colour-brand-white, #ffffff);\n --af-form-control-stroke-disabled: var(--colour-inkwell-400, #2b484f);\n --af-form-control-icon: var(--colour-brand-inkwell, #14343b);\n --af-form-control-label: var(--colour-brand-white, #ffffff);\n}\n\n/* ==========================================================================\n MIST-GREEN THEME\n ========================================================================== */\n\n.theme-mist-green {\n background-color: var(--colour-brand-mist-green, #C6D5D1);\n \n /* Background tokens */\n --af-background-base: var(--colour-brand-mist-green, #c6d5d1);\n --af-background-base-hover: var(--colour-mistgreen-600, #b2c0bc);\n --af-background-contrast: var(--colour-brand-soft-clay, #b09670);\n --af-background-level-1: var(--colour-mistgreen-300, #dde6e3);\n --af-background-level-1-hover: var(--colour-mistgreen-400, #d1ddda);\n --af-background-border-subtle: var(--colour-mistgreen-600, #b2c0bc);\n --af-background-border-default: var(--colour-mistgreen-700, #9eaaa7);\n --af-background-border-heavy: var(--colour-mistgreen-700, #9eaaa7);\n --af-background-border-active: var(--colour-softclay-800, #8a7049);\n --af-background-icon-default: var(--colour-brand-inkwell, #14343b);\n --af-background-icon-accent: var(--colour-brand-soft-clay, #b09670);\n \n /* Typography tokens */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-heading-secondary: var(--colour-brand-soft-clay, #b09670);\n --af-typography-body-dark: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-typography-body-subtle: var(--colour-inkwell-350, #60767b);\n \n /* Button - Primary */\n --af-button-primary-text: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-bg: var(--colour-brand-ice, #a6fffb);\n --af-button-primary-bg-hover: var(--colour-ice-600, #95e6e2);\n --af-button-primary-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Button - Secondary */\n --af-button-secondary-text: var(--colour-brand-inkwell, #14343b);\n --af-button-secondary-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-secondary-bg: transparent;\n --af-button-secondary-bg-hover: rgba(0, 0, 0, 0.08);\n --af-button-secondary-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Button - Tertiary */\n --af-button-ghost-text: var(--colour-brand-inkwell, #14343b);\n --af-button-ghost-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-ghost-stroke: var(--colour-brand-soft-clay, #B09670);\n \n /* Input tokens */\n --af-input-label: var(--af-typography-body-dark);\n --af-input-description: var(--af-typography-body-default);\n --af-input-text: var(--af-typography-body-dark);\n --af-input-placeholder: var(--af-typography-body-subtle);\n --af-input-icon: var(--af-background-icon-default);\n --af-input-bg: var(--colour-brand-white, #ffffff);\n --af-input-bg-hover: var(--colour-mistgreen-100, #f4f7f6);\n --af-input-bg-disabled: var(--af-background-level-1);\n --af-input-border: var(--af-background-border-default);\n --af-input-border-hover: var(--af-background-border-heavy);\n --af-input-border-active: var(--af-typography-body-dark);\n --af-input-border-error: var(--colour-error, #be292a);\n --af-input-error: var(--colour-error, #be292a);\n --af-input-focus-ring: var(--af-typography-body-dark);\n \n /* Form control tokens (checkbox, radio, switch) */\n --af-form-control-bg: var(--colour-brand-white, #ffffff);\n --af-form-control-bg-checked: var(--colour-brand-inkwell, #14343b);\n --af-form-control-bg-disabled: var(--colour-mistgreen-300, #dde6e3);\n --af-form-control-bg-checked-disabled: var(--colour-inkwell-350, #708380);\n --af-form-control-stroke: var(--colour-mistgreen-700, #9eaaa7);\n --af-form-control-stroke-hover: var(--colour-brand-inkwell, #14343b);\n --af-form-control-stroke-disabled: var(--colour-mistgreen-600, #b2c0bc);\n --af-form-control-icon: var(--colour-brand-white, #ffffff);\n --af-form-control-label: var(--colour-brand-inkwell, #14343b);\n}\n\n/* ==========================================================================\n SOFT-CLAY THEME\n ========================================================================== */\n\n.theme-soft-clay {\n background-color: var(--colour-softclay-400, #c0ab8d);\n \n /* Background tokens */\n --af-background-base: var(--colour-softclay-400, #c0ab8d);\n --af-background-base-hover: var(--colour-softclay-500, #b09670);\n --af-background-contrast: var(--colour-brand-mist-green, #c6d5d1);\n --af-background-level-1: var(--colour-softclay-500, #b09670);\n --af-background-level-1-hover: var(--colour-softclay-600, #9e8765);\n --af-background-border-subtle: var(--colour-softclay-600, #9e8765);\n --af-background-border-default: var(--colour-softclay-700, #8d785a);\n --af-background-border-heavy: var(--colour-brand-inkwell, #14343b);\n --af-background-border-active: var(--colour-brand-ice, #a6fffb);\n --af-background-icon-default: var(--colour-brand-inkwell, #14343b);\n --af-background-icon-accent: var(--colour-brand-ivory-paper, #fff9ee);\n \n /* Typography tokens */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-heading-secondary: var(--colour-brand-ivory-paper, #fff9ee);\n --af-typography-body-dark: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-typography-body-subtle: var(--colour-inkwell-350, #60767b);\n \n /* Button - Primary */\n --af-button-primary-text: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-bg: var(--colour-brand-ice, #a6fffb);\n --af-button-primary-bg-hover: var(--colour-ice-600, #95e6e2);\n --af-button-primary-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Button - Secondary */\n --af-button-secondary-text: var(--colour-brand-inkwell, #14343b);\n --af-button-secondary-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-secondary-bg: transparent;\n --af-button-secondary-bg-hover: rgba(0, 0, 0, 0.08);\n --af-button-secondary-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Button - Tertiary */\n --af-button-ghost-text: var(--colour-brand-inkwell, #14343b);\n --af-button-ghost-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-ghost-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Input tokens */\n --af-input-label: var(--af-typography-body-dark);\n --af-input-description: var(--af-typography-body-default);\n --af-input-text: var(--af-typography-body-dark);\n --af-input-placeholder: var(--af-typography-body-subtle);\n --af-input-icon: var(--af-background-icon-default);\n --af-input-bg: var(--colour-brand-white, #ffffff);\n --af-input-bg-hover: var(--colour-mistgreen-100, #f4f7f6);\n --af-input-bg-disabled: var(--af-background-level-1);\n --af-input-border: var(--af-background-border-default);\n --af-input-border-hover: var(--af-background-border-heavy);\n --af-input-border-active: var(--af-typography-body-dark);\n --af-input-border-error: var(--colour-error, #be292a);\n --af-input-error: var(--colour-error, #be292a);\n --af-input-focus-ring: var(--af-typography-body-dark);\n \n /* Form control tokens (checkbox, radio, switch) */\n --af-form-control-bg: var(--colour-brand-white, #ffffff);\n --af-form-control-bg-checked: var(--colour-brand-inkwell, #14343b);\n --af-form-control-bg-disabled: var(--colour-softclay-300, #d0c1a8);\n --af-form-control-bg-checked-disabled: var(--colour-inkwell-350, #708380);\n --af-form-control-stroke: var(--colour-softclay-700, #8d785a);\n --af-form-control-stroke-hover: var(--colour-brand-inkwell, #14343b);\n --af-form-control-stroke-disabled: var(--colour-softclay-600, #9e8765);\n --af-form-control-icon: var(--colour-brand-white, #ffffff);\n --af-form-control-label: var(--colour-brand-inkwell, #14343b);\n}\n\n/* ==========================================================================\n WHITE-IVORY THEME\n ========================================================================== */\n\n.theme-white-ivory {\n background-color: var(--colour-brand-ivory-paper, #fff9ee);\n \n /* Background tokens */\n --af-background-base: var(--colour-brand-ivory-paper, #fff9ee);\n --af-background-base-hover: var(--colour-ivory-100, #fff5e0);\n --af-background-contrast: var(--colour-brand-mist-green, #c6d5d1);\n --af-background-level-1: var(--colour-ivory-200, #ffefcc);\n --af-background-level-1-hover: var(--colour-ivory-300, #ffe9b8);\n --af-background-border-subtle: var(--colour-ivory-200, #ffefcc);\n --af-background-border-default: var(--colour-ivory-400, #ffe3a3);\n --af-background-border-heavy: var(--colour-brand-soft-clay, #b09670);\n --af-background-border-active: var(--colour-brand-soft-clay, #b09670);\n --af-background-icon-default: var(--colour-brand-inkwell, #14343b);\n --af-background-icon-accent: var(--colour-brand-soft-clay, #b09670);\n \n /* Typography tokens */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-heading-secondary: var(--colour-brand-soft-clay, #b09670);\n --af-typography-body-dark: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-typography-body-subtle: var(--colour-inkwell-350, #60767b);\n \n /* Button - Primary */\n --af-button-primary-text: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-primary-bg: var(--colour-brand-ice, #a6fffb);\n --af-button-primary-bg-hover: var(--colour-ice-600, #95e6e2);\n --af-button-primary-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Button - Secondary */\n --af-button-secondary-text: var(--colour-brand-inkwell, #14343b);\n --af-button-secondary-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-secondary-bg: transparent;\n --af-button-secondary-bg-hover: rgba(0, 0, 0, 0.08);\n --af-button-secondary-stroke: var(--colour-brand-inkwell, #14343b);\n \n /* Button - Tertiary */\n --af-button-ghost-text: var(--colour-brand-inkwell, #14343b);\n --af-button-ghost-icon: var(--colour-brand-inkwell, #14343b);\n --af-button-ghost-stroke: var(--colour-brand-soft-clay, #b09670);\n \n /* Input tokens */\n --af-input-label: var(--af-typography-body-dark);\n --af-input-description: var(--af-typography-body-default);\n --af-input-text: var(--af-typography-body-dark);\n --af-input-placeholder: var(--af-typography-body-subtle);\n --af-input-icon: var(--af-background-icon-default);\n --af-input-bg: var(--colour-brand-white, #ffffff);\n --af-input-bg-hover: var(--colour-ivory-100, #fff5e0);\n --af-input-bg-disabled: var(--af-background-level-1);\n --af-input-border: var(--af-background-border-default);\n --af-input-border-hover: var(--af-background-border-heavy);\n --af-input-border-active: var(--af-typography-body-dark);\n --af-input-border-error: var(--colour-error, #be292a);\n --af-input-error: var(--colour-error, #be292a);\n --af-input-focus-ring: var(--af-typography-body-dark);\n \n /* Form control tokens (checkbox, radio, switch) */\n --af-form-control-bg: var(--colour-brand-white, #ffffff);\n --af-form-control-bg-checked: var(--colour-brand-inkwell, #14343b);\n --af-form-control-bg-disabled: var(--colour-ivory-200, #ffefcc);\n --af-form-control-bg-checked-disabled: var(--colour-inkwell-350, #708380);\n --af-form-control-stroke: var(--colour-ivory-400, #ffe3a3);\n --af-form-control-stroke-hover: var(--colour-brand-inkwell, #14343b);\n --af-form-control-stroke-disabled: var(--colour-ivory-300, #ffe9b8);\n --af-form-control-icon: var(--colour-brand-white, #ffffff);\n --af-form-control-label: var(--colour-brand-inkwell, #14343b);\n}\n\n/* Mobile adjustments */\n@media (max-width: 768px) {\n .padding-tight {\n padding: 32px 0;\n }\n \n .padding-default {\n padding: 64px 0;\n }\n \n .padding-loose {\n padding: 80px 0 64px;\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Section layout component for consistent spacing and backgrounds.\n * Sets theme context for all child components via CSS custom properties.\n */\n@Component({\n tag: 'af-section',\n styleUrl: 'af-section.css',\n shadow: false,\n scoped: true,\n})\nexport class AfSection {\n /** Padding variant */\n @Prop() padding: 'none' | 'tight' | 'default' | 'loose' = 'default';\n \n /** Theme - sets background color and provides theme context to children */\n @Prop() theme: 'white' | 'inkwell' | 'mist-green' | 'soft-clay' | 'white-ivory' = 'white';\n \n /** Whether to include a Container wrapper */\n @Prop() container: boolean = true;\n\n render() {\n const content = <slot></slot>;\n \n return (\n <Host>\n <div class={`section padding-${this.padding} theme-${this.theme}`}>\n {this.container ? (\n <af-container>{content}</af-container>\n ) : content}\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,YAAY,GAAG,olgBAAolgB;;MCY5lgB,SAAS,GAAA,MAAA;AANtB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAQU,QAAA,IAAO,CAAA,OAAA,GAA2C,SAAS;;AAG3D,QAAA,IAAK,CAAA,KAAA,GAAqE,OAAO;;AAGjF,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI;AAelC;IAbC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa;QAE7B,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,CAAmB,gBAAA,EAAA,IAAI,CAAC,OAAO,CAAU,OAAA,EAAA,IAAI,CAAC,KAAK,CAAA,CAAE,EAAA,EAC9D,IAAI,CAAC,SAAS,IACb,CAAe,CAAA,cAAA,EAAA,IAAA,EAAA,OAAO,CAAgB,IACpC,OAAO,CACP,CACD;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-show.entry.esm.js","sources":["src/components/af-show/af-show.css?tag=af-show&encapsulation=shadow","src/components/af-show/af-show.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n\n:host([hidden]) {\n display: none !important;\n}\n\n/* Show above breakpoints (hidden below) */\n/* sm: 375px */\n:host(.show-above-sm) {\n display: none;\n}\n@media (min-width: 375px) {\n :host(.show-above-sm) {\n display: contents;\n }\n}\n\n/* md: 768px */\n:host(.show-above-md) {\n display: none;\n}\n@media (min-width: 768px) {\n :host(.show-above-md) {\n display: contents;\n }\n}\n\n/* lg: 1024px */\n:host(.show-above-lg) {\n display: none;\n}\n@media (min-width: 1024px) {\n :host(.show-above-lg) {\n display: contents;\n }\n}\n\n/* xl: 1440px */\n:host(.show-above-xl) {\n display: none;\n}\n@media (min-width: 1440px) {\n :host(.show-above-xl) {\n display: contents;\n }\n}\n\n/* Show below breakpoints (hidden at or above) */\n/* sm: 375px */\n@media (min-width: 375px) {\n :host(.show-below-sm) {\n display: none;\n }\n}\n\n/* md: 768px */\n@media (min-width: 768px) {\n :host(.show-below-md) {\n display: none;\n }\n}\n\n/* lg: 1024px */\n@media (min-width: 1024px) {\n :host(.show-below-lg) {\n display: none;\n }\n}\n\n/* xl: 1440px */\n@media (min-width: 1440px) {\n :host(.show-below-xl) {\n display: none;\n }\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\ntype Breakpoint = 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Show component for responsive visibility control.\n * Show or hide content based on viewport breakpoints.\n *\n * Breakpoints (from tokens):\n * - sm: 375px\n * - md: 768px\n * - lg: 1024px\n * - xl: 1440px\n *\n * @slot - Content to show/hide\n */\n@Component({\n tag: 'af-show',\n styleUrl: 'af-show.css',\n shadow: true,\n})\nexport class AfShow {\n /**\n * Show content only when viewport is at or above this breakpoint.\n * Content is hidden below this breakpoint.\n */\n @Prop() above?: Breakpoint;\n\n /**\n * Show content only when viewport is below this breakpoint.\n * Content is hidden at or above this breakpoint.\n */\n @Prop() below?: Breakpoint;\n\n render() {\n const classes = {\n 'show': true,\n [`show-above-${this.above}`]: !!this.above,\n [`show-below-${this.below}`]: !!this.below,\n };\n\n return (\n <Host class={classes}>\n <slot></slot>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,SAAS,GAAG,itBAAitB;;MCqBttB,MAAM,GAAA,MAAA;;;;IAajB,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,IAAI;YACZ,CAAC,CAAA,WAAA,EAAc,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;YAC1C,CAAC,CAAA,WAAA,EAAc,IAAI,CAAC,KAAK,CAAA,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK;SAC3C;QAED,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,OAAO,EAAA,EAClB,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACR;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-social-link.entry.esm.js","sources":["src/components/af-social-link/af-social-link.css?tag=af-social-link&encapsulation=scoped","src/components/af-social-link/af-social-link.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.social-link {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border: 1px solid rgba(198, 213, 209, 0.3);\n border-radius: 50%;\n color: var(--colour-tints-mistGreen-200, #C6D5D1);\n transition: all 0.2s ease;\n}\n\n.social-link:hover {\n background-color: rgba(198, 213, 209, 0.1);\n border-color: rgba(198, 213, 209, 0.5);\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Social media link component\n * Circular bordered icon link for social media profiles\n */\n@Component({\n tag: 'af-social-link',\n styleUrl: 'af-social-link.css',\n shadow: false,\n scoped: true,\n})\nexport class AfSocialLink {\n /** Link URL */\n @Prop() href: string = '#';\n\n /** Accessible label for the link */\n @Prop() label: string = '';\n\n /** Icon type: 'linkedin', 'youtube', 'github', 'twitter', 'facebook', or 'custom' */\n @Prop() icon: 'linkedin' | 'youtube' | 'github' | 'twitter' | 'facebook' | 'custom' = 'custom';\n\n private renderIcon() {\n switch (this.icon) {\n case 'linkedin':\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\"/>\n <rect x=\"2\" y=\"9\" width=\"4\" height=\"12\"/>\n <circle cx=\"4\" cy=\"4\" r=\"2\"/>\n </svg>\n );\n case 'youtube':\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\"/>\n <polygon points=\"9.75,15.02 15.5,11.75 9.75,8.48\" fill=\"currentColor\" stroke=\"none\"/>\n </svg>\n );\n case 'github':\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"/>\n </svg>\n );\n case 'twitter':\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\"/>\n </svg>\n );\n case 'facebook':\n return (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\">\n <path d=\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\"/>\n </svg>\n );\n default:\n return <slot name=\"icon\"></slot>;\n }\n }\n\n render() {\n return (\n <Host>\n <a \n href={this.href} \n target=\"_blank\" \n rel=\"noopener noreferrer\" \n class=\"social-link\" \n aria-label={this.label}\n >\n {this.renderIcon()}\n </a>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-spacer.entry.esm.js","sources":["src/components/af-spacer/af-spacer.css?tag=af-spacer&encapsulation=shadow","src/components/af-spacer/af-spacer.tsx"],"sourcesContent":[":host {\n display: block;\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\ntype Size = '1' | '2' | '3' | '4' | '5' | '6' | '8';\n\n/**\n * Spacer component for adding fixed or flexible space between elements.\n * Use within flex or grid layouts.\n */\n@Component({\n tag: 'af-spacer',\n styleUrl: 'af-spacer.css',\n shadow: true,\n})\nexport class AfSpacer {\n /**\n * Fixed size using space tokens (1-8).\n * Maps to --space-1 through --space-8 (4px to 32px).\n * Ignored when `flex` is true.\n */\n @Prop() size?: Size;\n\n /**\n * When true, the spacer grows to fill available space (flex: 1).\n * Useful for pushing items apart in a flex container.\n */\n @Prop() flex: boolean = false;\n\n /**\n * Axis for the spacer sizing.\n * - 'horizontal': Width-based spacing\n * - 'vertical': Height-based spacing\n * - 'both': Both dimensions (square)\n *\n * Auto-detected based on parent flex direction when possible.\n */\n @Prop() axis: 'horizontal' | 'vertical' | 'both' = 'both';\n\n render() {\n const style: Record<string, string> = {};\n\n if (this.flex) {\n style.flex = '1';\n } else if (this.size) {\n const sizeValue = `var(--space-${this.size})`;\n\n if (this.axis === 'horizontal' || this.axis === 'both') {\n style.width = sizeValue;\n }\n if (this.axis === 'vertical' || this.axis === 'both') {\n style.height = sizeValue;\n }\n }\n\n return <Host style={style} aria-hidden=\"true\"></Host>;\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,WAAW,GAAG,uFAAuF;;MCa9F,QAAQ,GAAA,MAAA;AALrB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAaE;;;AAGG;AACK,QAAA,IAAI,CAAA,IAAA,GAAY,KAAK;AAE7B;;;;;;;AAOG;AACK,QAAA,IAAI,CAAA,IAAA,GAAuC,MAAM;AAoB1D;IAlBC,MAAM,GAAA;QACJ,MAAM,KAAK,GAA2B,EAAE;AAExC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,KAAK,CAAC,IAAI,GAAG,GAAG;;AACX,aAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACpB,YAAA,MAAM,SAAS,GAAG,CAAA,YAAA,EAAe,IAAI,CAAC,IAAI,GAAG;AAE7C,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACtD,gBAAA,KAAK,CAAC,KAAK,GAAG,SAAS;;AAEzB,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACpD,gBAAA,KAAK,CAAC,MAAM,GAAG,SAAS;;;AAI5B,QAAA,OAAO,CAAA,CAAC,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,KAAK,EAAA,aAAA,EAAc,MAAM,EAAA,CAAQ;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-split-section.entry.esm.js","sources":["src/components/af-split-section/af-split-section.css?tag=af-split-section&encapsulation=scoped","src/components/af-split-section/af-split-section.tsx"],"sourcesContent":["/* Theme CSS custom properties are loaded globally from @affinda/css */\n\n:host {\n display: block;\n width: 100%;\n}\n\n.split-section {\n position: relative;\n width: 100%;\n /* Background is set via inline style with linear-gradient */\n}\n\n/* ==========================================================================\n Padding Variants\n ========================================================================== */\n\n.padding-none {\n padding: 0;\n}\n\n.padding-tight {\n padding: 48px 0;\n}\n\n.padding-default {\n padding: 96px 0;\n}\n\n.padding-loose {\n padding: 120px 0 96px;\n}\n\n/* ==========================================================================\n Mobile Adjustments\n ========================================================================== */\n\n@media (max-width: 768px) {\n .padding-tight {\n padding: 32px 0;\n }\n \n .padding-default {\n padding: 64px 0;\n }\n \n .padding-loose {\n padding: 80px 0 64px;\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\ntype Theme = 'white' | 'inkwell' | 'mist-green' | 'soft-clay' | 'white-ivory';\n\n// Map theme names to CSS color values\nconst themeColors: Record<Theme, string> = {\n 'white': 'var(--colour-brand-white, #FFFFFF)',\n 'inkwell': 'var(--colour-brand-inkwell, #14343B)',\n 'mist-green': 'var(--colour-brand-mist-green, #C6D5D1)',\n 'soft-clay': 'var(--colour-softclay-400, #c0ab8d)',\n 'white-ivory': 'var(--colour-brand-ivory-paper, #fff9ee)',\n};\n\n/**\n * Split Section component for layouts with two-tone backgrounds.\n * Creates a vertical split with different themes for top and bottom halves.\n * Useful for content that visually spans across two themed areas.\n * \n * Uses a CSS linear-gradient for the split background effect.\n */\n@Component({\n tag: 'af-split-section',\n styleUrl: 'af-split-section.css',\n shadow: false,\n scoped: true,\n})\nexport class AfSplitSection {\n /** Theme for the top half of the section */\n @Prop() topTheme: Theme = 'mist-green';\n\n /** Theme for the bottom half of the section */\n @Prop() bottomTheme: Theme = 'white';\n\n /** Padding variant */\n @Prop() padding: 'none' | 'tight' | 'default' | 'loose' = 'default';\n\n /** Whether to include a Container wrapper */\n @Prop() container: boolean = true;\n\n render() {\n const content = <slot></slot>;\n \n // Create the split background using CSS gradient\n const topColor = themeColors[this.topTheme];\n const bottomColor = themeColors[this.bottomTheme];\n const backgroundStyle = {\n background: `linear-gradient(to bottom, ${topColor} 0%, ${topColor} 50%, ${bottomColor} 50%, ${bottomColor} 100%)`\n };\n\n return (\n <Host>\n <div\n class={`split-section padding-${this.padding} top-theme-${this.topTheme}`}\n style={backgroundStyle}\n >\n {this.container ? (\n <af-container>{content}</af-container>\n ) : content}\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,iBAAiB,GAAG,ofAAof;;ACI9gB;AACA,MAAM,WAAW,GAA0B;AACzC,IAAA,OAAO,EAAE,oCAAoC;AAC7C,IAAA,SAAS,EAAE,sCAAsC;AACjD,IAAA,YAAY,EAAE,yCAAyC;AACvD,IAAA,WAAW,EAAE,qCAAqC;AAClD,IAAA,aAAa,EAAE,0CAA0C;CAC1D;MAeY,cAAc,GAAA,MAAA;AAN3B,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAQU,QAAA,IAAQ,CAAA,QAAA,GAAU,YAAY;;AAG9B,QAAA,IAAW,CAAA,WAAA,GAAU,OAAO;;AAG5B,QAAA,IAAO,CAAA,OAAA,GAA2C,SAAS;;AAG3D,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI;AAyBlC;IAvBC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa;;QAG7B,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3C,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;AACjD,QAAA,MAAM,eAAe,GAAG;YACtB,UAAU,EAAE,8BAA8B,QAAQ,CAAA,KAAA,EAAQ,QAAQ,CAAS,MAAA,EAAA,WAAW,CAAS,MAAA,EAAA,WAAW,CAAQ,MAAA;SACnH;AAED,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE,CAAyB,sBAAA,EAAA,IAAI,CAAC,OAAO,CAAc,WAAA,EAAA,IAAI,CAAC,QAAQ,CAAE,CAAA,EACzE,KAAK,EAAE,eAAe,EAErB,EAAA,IAAI,CAAC,SAAS,IACb,wBAAe,OAAO,CAAgB,IACpC,OAAO,CACP,CACD;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-stack.entry.esm.js","sources":["src/components/af-stack/af-stack.css?tag=af-stack&encapsulation=shadow","src/components/af-stack/af-stack.tsx"],"sourcesContent":[":host {\n display: flex;\n box-sizing: border-box;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\ntype Gap = '1' | '2' | '3' | '4' | '5' | '6' | '8';\ntype Direction = 'vertical' | 'horizontal';\ntype Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\ntype Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\n\n/**\n * Stack layout component for vertical or horizontal flex layouts with consistent gap spacing.\n * Uses design tokens for gap values.\n *\n * @slot - Content to stack\n */\n@Component({\n tag: 'af-stack',\n styleUrl: 'af-stack.css',\n shadow: true,\n})\nexport class AfStack {\n /**\n * Stack direction.\n * - 'vertical': Items stack top to bottom (flex-direction: column)\n * - 'horizontal': Items stack left to right (flex-direction: row)\n */\n @Prop() direction: Direction = 'vertical';\n\n /**\n * Gap between items using space tokens (1-8).\n * Maps to --space-1 through --space-8 (4px to 32px).\n */\n @Prop() gap: Gap = '4';\n\n /**\n * Align items on the cross axis.\n */\n @Prop() align: Align = 'stretch';\n\n /**\n * Justify content on the main axis.\n */\n @Prop() justify: Justify = 'start';\n\n /**\n * Whether items should wrap to the next line.\n */\n @Prop() wrap: boolean = false;\n\n render() {\n const alignMap: Record<Align, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n baseline: 'baseline',\n };\n\n const justifyMap: Record<Justify, string> = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n evenly: 'space-evenly',\n };\n\n const style = {\n display: 'flex',\n flexDirection: this.direction === 'vertical' ? 'column' : 'row',\n gap: `var(--space-${this.gap})`,\n alignItems: alignMap[this.align],\n justifyContent: justifyMap[this.justify],\n flexWrap: this.wrap ? 'wrap' : 'nowrap',\n } as Record<string, string>;\n\n return (\n <Host style={style}>\n <slot></slot>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,UAAU,GAAG,wEAAwE;;MCkB9E,OAAO,GAAA,MAAA;AALpB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;;;AAIG;AACK,QAAA,IAAS,CAAA,SAAA,GAAc,UAAU;AAEzC;;;AAGG;AACK,QAAA,IAAG,CAAA,GAAA,GAAQ,GAAG;AAEtB;;AAEG;AACK,QAAA,IAAK,CAAA,KAAA,GAAU,SAAS;AAEhC;;AAEG;AACK,QAAA,IAAO,CAAA,OAAA,GAAY,OAAO;AAElC;;AAEG;AACK,QAAA,IAAI,CAAA,IAAA,GAAY,KAAK;AAmC9B;IAjCC,MAAM,GAAA;AACJ,QAAA,MAAM,QAAQ,GAA0B;AACtC,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,QAAQ,EAAE,UAAU;SACrB;AAED,QAAA,MAAM,UAAU,GAA4B;AAC1C,YAAA,KAAK,EAAE,YAAY;AACnB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,GAAG,EAAE,UAAU;AACf,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,MAAM,EAAE,cAAc;SACvB;AAED,QAAA,MAAM,KAAK,GAAG;AACZ,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,aAAa,EAAE,IAAI,CAAC,SAAS,KAAK,UAAU,GAAG,QAAQ,GAAG,KAAK;AAC/D,YAAA,GAAG,EAAE,CAAA,YAAA,EAAe,IAAI,CAAC,GAAG,CAAG,CAAA,CAAA;AAC/B,YAAA,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AAChC,YAAA,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,GAAG,QAAQ;SACd;QAE3B,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,KAAK,EAAA,EAChB,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACR;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-stepper-step.entry.esm.js","sources":["src/components/af-stepper-step/af-stepper-step.css?tag=af-stepper-step&encapsulation=scoped","src/components/af-stepper-step/af-stepper-step.tsx"],"sourcesContent":[":host {\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n flex: 1 1 0;\n min-width: 0;\n padding: 0 16px;\n position: relative;\n z-index: 1;\n}\n\n.stepper-step__badge {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n border: 1px solid var(--colour-brand-inkwell, #14343b);\n background: var(--colour-background-white, #ffffff);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-family: var(--typography-headingfont, 'NeuSans', sans-serif);\n font-weight: 500;\n font-size: 20px;\n color: var(--colour-brand-inkwell, #14343b);\n margin-bottom: 24px;\n flex-shrink: 0;\n}\n\n.stepper-step__content {\n display: flex;\n flex-direction: column;\n gap: 12px;\n max-width: 320px;\n}\n\n.stepper-step__heading {\n font-family: var(--typography-headingfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-regular, 400);\n font-size: 24px;\n line-height: 1.2;\n letter-spacing: -0.02em;\n color: var(--af-typography-heading-primary, var(--colour-brand-inkwell, #14343b));\n}\n\n.stepper-step__body {\n font-family: var(--typography-bodyfont, 'NeuSans', sans-serif);\n font-size: 16px;\n line-height: 1.5;\n color: var(--af-typography-body-default, var(--colour-brand-inkwell, #14343b));\n}\n\n/* Normalize slotted heading/body tags */\n:host :where(h1, h2, h3, h4, h5, h6),\n:host :where(p) {\n font: inherit;\n color: inherit;\n margin: 0;\n}\n\n/* Vertical orientation — align left */\n:host-context(.stepper--vertical) {\n flex-direction: row;\n align-items: flex-start;\n text-align: left;\n gap: 24px;\n padding: 0;\n}\n\n:host-context(.stepper--vertical) .stepper-step__badge {\n margin-bottom: 0;\n}\n\n@media (max-width: 767px) {\n :host {\n flex-direction: row;\n align-items: flex-start;\n text-align: left;\n gap: 24px;\n padding: 0;\n }\n .stepper-step__badge {\n margin-bottom: 0;\n }\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * A single step within an af-stepper. Renders a numbered circular badge\n * followed by slotted heading + body content.\n *\n * The parent af-stepper auto-assigns the `index` attribute based on DOM\n * order, so consumers don't need to hand-number the steps.\n *\n * @slot heading - Step title (h3/h4 recommended).\n * @slot body - Step description paragraph(s).\n */\n@Component({\n tag: 'af-stepper-step',\n styleUrl: 'af-stepper-step.css',\n shadow: false,\n scoped: true,\n})\nexport class AfStepperStep {\n /**\n * Step number shown in the badge. Auto-assigned by the parent stepper if\n * not explicitly set.\n */\n @Prop({ reflect: true }) index: number = 1;\n\n render() {\n return (\n <Host>\n <span class=\"stepper-step__badge\">{this.index}</span>\n <div class=\"stepper-step__content\">\n <div class=\"stepper-step__heading\">\n <slot name=\"heading\"></slot>\n </div>\n <div class=\"stepper-step__body\">\n <slot name=\"body\"></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,gBAAgB,GAAG,u4DAAu4D;;MCkBn5D,aAAa,GAAA,MAAA;AAN1B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAOE;;;AAGG;AACsB,QAAA,IAAK,CAAA,KAAA,GAAW,CAAC;AAiB3C;IAfC,MAAM,GAAA;QACJ,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,qBAAqB,IAAE,IAAI,CAAC,KAAK,CAAQ,EACrD,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,uBAAuB,EAAA,EAChC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,uBAAuB,EAAA,EAChC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,SAAS,EAAA,CAAQ,CACxB,EACN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,oBAAoB,EAAA,EAC7B,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,MAAM,EAAA,CAAQ,CACrB,CACF,CACD;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-stepper.entry.esm.js","sources":["src/components/af-stepper/af-stepper.css?tag=af-stepper&encapsulation=scoped","src/components/af-stepper/af-stepper.tsx"],"sourcesContent":[":host {\n display: flex;\n width: 100%;\n position: relative;\n max-width: 1120px;\n margin: 0 auto;\n align-items: flex-start;\n justify-content: space-between;\n gap: 24px;\n}\n\n:host(.stepper--vertical) {\n flex-direction: column;\n max-width: 680px;\n gap: 40px;\n}\n\n/* Horizontal connector — thin line running across the row of badges. */\n.stepper--horizontal .stepper__connector {\n position: absolute;\n top: 23px; /* aligned to badge centre (badge height 48px / 2 = 24, minus 1px for line) */\n left: 8%;\n right: 8%;\n height: 2px;\n background: var(--colour-brand-inkwell, #14343b);\n opacity: 0.25;\n z-index: 0;\n}\n\n.stepper--vertical .stepper__connector {\n position: absolute;\n top: 24px;\n bottom: 24px;\n left: 23px;\n width: 2px;\n background: var(--colour-brand-inkwell, #14343b);\n opacity: 0.25;\n z-index: 0;\n}\n\n@media (max-width: 767px) {\n .stepper--horizontal {\n flex-direction: column;\n gap: 32px;\n }\n .stepper--horizontal .stepper__connector {\n top: 24px;\n bottom: 24px;\n left: 23px;\n right: auto;\n width: 2px;\n height: auto;\n }\n}\n","import { Component, h, Host, Prop, Element } from '@stencil/core';\n\n/**\n * Stepper composite for \"Sign up / Upload / See results\"-style marketing\n * flows. Renders children `af-stepper-step` elements in a horizontal row\n * (desktop) or vertical stack (mobile), with a connector line between badges.\n *\n * Matches Webflow's `.stepper` pattern — numbered circled badges, a spine\n * connector, and centered step text.\n *\n * @example\n * ```html\n * <af-stepper>\n * <af-stepper-step>\n * <h3 slot=\"heading\">Sign up for free</h3>\n * <p slot=\"body\">No sales calls, no credit cards.</p>\n * </af-stepper-step>\n * <af-stepper-step>...</af-stepper-step>\n * <af-stepper-step>...</af-stepper-step>\n * </af-stepper>\n * ```\n *\n * @slot - `af-stepper-step` elements.\n */\n@Component({\n tag: 'af-stepper',\n styleUrl: 'af-stepper.css',\n shadow: false,\n scoped: true,\n})\nexport class AfStepper {\n @Element() el!: HTMLElement;\n\n /** Layout orientation. Horizontal on desktop, auto-stacks on mobile. */\n @Prop() orientation: 'horizontal' | 'vertical' = 'horizontal';\n\n componentDidLoad() {\n this.assignIndices();\n }\n\n private assignIndices() {\n const steps = Array.from(this.el.querySelectorAll('af-stepper-step')) as any[];\n steps.forEach((step, i) => {\n // Set via property so Stencil reactively re-renders the badge.\n // Only overwrite when the consumer hasn't explicitly set one.\n if (step.index == null || step.index === 1) {\n step.index = i + 1;\n }\n });\n }\n\n render() {\n return (\n <Host class={`stepper stepper--${this.orientation}`}>\n <div class=\"stepper__connector\" aria-hidden=\"true\"></div>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,YAAY,GAAG,s1BAAs1B;;MC8B91B,SAAS,GAAA,MAAA;AANtB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAUU,QAAA,IAAW,CAAA,WAAA,GAA8B,YAAY;AAyB9D;IAvBC,gBAAgB,GAAA;QACd,IAAI,CAAC,aAAa,EAAE;;IAGd,aAAa,GAAA;AACnB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAU;QAC9E,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;;;AAGxB,YAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC;;AAEtB,SAAC,CAAC;;IAGJ,MAAM,GAAA;QACJ,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,CAAoB,iBAAA,EAAA,IAAI,CAAC,WAAW,CAAE,CAAA,EAAA,EACjD,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,oBAAoB,EAAA,aAAA,EAAa,MAAM,EAAO,CAAA,EACzD,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACR;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-switch.entry.esm.js","sources":["src/components/af-switch/af-switch.css?tag=af-switch&encapsulation=shadow","src/components/af-switch/af-switch.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.switch {\n display: inline-flex;\n align-items: center;\n gap: 12px;\n cursor: pointer;\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-size: 14px;\n line-height: 20px;\n color: var(--af-form-control-label, var(--af-typography-body-dark, #14343b));\n user-select: none;\n}\n\n.switch.disabled {\n cursor: not-allowed;\n opacity: 0.5;\n}\n\n/* Hidden native input */\n.input {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n/* Switch track */\n.track {\n position: relative;\n display: flex;\n align-items: center;\n flex-shrink: 0;\n width: 52px;\n height: 30px;\n border-radius: var(--radii-switch, 9999px);\n background: var(--af-form-control-bg-disabled, var(--af-background-level-1, #e8eeed));\n transition: background 0.2s ease;\n box-sizing: border-box;\n}\n\n/* Track active state */\n.track.active {\n background: var(--af-form-control-bg-checked, var(--colour-brand-inkwell, #14343b));\n}\n\n/* Track disabled state */\n.track.disabled {\n background: var(--af-form-control-bg-disabled, var(--af-background-level-1, #e8eeed));\n}\n\n/* Track active + disabled state */\n.track.active.disabled {\n background: var(--af-form-control-bg-checked-disabled, #708380);\n}\n\n/* Hover state */\n.switch:not(.disabled):hover .track:not(.active) {\n background: var(--af-form-control-stroke, var(--af-background-level-1-hover, #dde6e3));\n}\n\n/* Focus state */\n.input:focus-visible + .track {\n box-shadow: 0 0 0 4px var(--af-background-base, #ffffff), 0 0 0 5px var(--af-form-control-stroke-hover, var(--colour-brand-inkwell, #14343b));\n outline: none;\n}\n\n/* Switch knob */\n.knob {\n position: absolute;\n width: 26px;\n height: 26px;\n border-radius: 50%;\n background: var(--af-form-control-bg, var(--colour-brand-white, #ffffff));\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n transition: transform 0.2s ease, background 0.2s ease;\n transform: translateX(2px);\n}\n\n/* Knob active position */\n.knob.active {\n transform: translateX(24px);\n /* When active, knob should contrast with the checked track */\n background: var(--af-form-control-icon, var(--colour-brand-white, #ffffff));\n}\n\n/* Knob disabled state */\n.knob.disabled {\n background: var(--af-form-control-stroke-disabled, var(--colour-inkwell-200, #a1aeb1));\n box-shadow: none;\n}\n\n/* Label styling */\n.label {\n display: flex;\n align-items: center;\n min-height: 24px;\n}\n\n/* Empty label - hide if no content */\n.label:empty {\n display: none;\n}\n","import { Component, h, Prop, Host, Event, EventEmitter } from '@stencil/core';\n\n/**\n * Switch component for toggling between on and off states.\n * \n * @slot - Switch label text\n */\n@Component({\n tag: 'af-switch',\n styleUrl: 'af-switch.css',\n shadow: true\n})\nexport class AfSwitch {\n /**\n * Whether the switch is active (on)\n */\n @Prop({ mutable: true, reflect: true }) active: boolean = false;\n\n /**\n * Whether the switch is disabled\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * The name of the switch for form submission\n */\n @Prop() name?: string;\n\n /**\n * The value of the switch for form submission\n */\n @Prop() value?: string;\n\n /**\n * Emitted when the switch state changes\n */\n @Event() afChange!: EventEmitter<{ active: boolean }>;\n\n private handleChange = () => {\n if (this.disabled) return;\n this.active = !this.active;\n this.afChange.emit({ active: this.active });\n };\n\n render() {\n const switchClasses = {\n 'switch': true,\n 'active': this.active,\n 'disabled': this.disabled\n };\n\n const trackClasses = {\n 'track': true,\n 'active': this.active,\n 'disabled': this.disabled\n };\n\n const knobClasses = {\n 'knob': true,\n 'active': this.active,\n 'disabled': this.disabled\n };\n\n return (\n <Host>\n <label class={switchClasses}>\n <input\n type=\"checkbox\"\n role=\"switch\"\n class=\"input\"\n checked={this.active}\n disabled={this.disabled}\n name={this.name}\n value={this.value}\n onChange={this.handleChange}\n />\n <span class={trackClasses}>\n <span class={knobClasses}></span>\n </span>\n <span class=\"label\">\n <slot></slot>\n </span>\n </label>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,WAAW,GAAG,+3DAA+3D;;MCYt4D,QAAQ,GAAA,MAAA;AALrB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAME;;AAEG;AACqC,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK;AAE/D;;AAEG;AACsB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AAiB1C,QAAA,IAAY,CAAA,YAAA,GAAG,MAAK;YAC1B,IAAI,IAAI,CAAC,QAAQ;gBAAE;AACnB,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM;AAC1B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AAC7C,SAAC;AA4CF;IA1CC,MAAM,GAAA;AACJ,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC;SAClB;AAED,QAAA,MAAM,YAAY,GAAG;AACnB,YAAA,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC;SAClB;AAED,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC;SAClB;AAED,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAO,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,aAAa,EAAA,EACzB,CAAA,CAAA,OAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,OAAO,EACb,OAAO,EAAE,IAAI,CAAC,MAAM,EACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,QAAQ,EAAE,IAAI,CAAC,YAAY,EAC3B,CAAA,EACF,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,YAAY,EAAA,EACvB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAE,WAAW,EAAA,CAAS,CAC5B,EACP,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,OAAO,EAAA,EACjB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACR,CACD,CACH;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-tab-bar.entry.esm.js","sources":["src/components/af-tab-bar/af-tab-bar.css?tag=af-tab-bar&encapsulation=shadow","src/components/af-tab-bar/af-tab-bar.tsx"],"sourcesContent":["/* TabBar component styles */\n:host {\n display: block;\n width: 100%;\n}\n\n.tab-bar {\n display: flex;\n flex-wrap: nowrap;\n align-items: stretch;\n overflow-x: auto;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: thin;\n scrollbar-color: var(--af-scrollbar-thumb, #8a7049) var(--af-scrollbar-track, #d1ddda);\n}\n\n/* Custom scrollbar for WebKit browsers */\n.tab-bar::-webkit-scrollbar {\n height: 4px;\n}\n\n.tab-bar::-webkit-scrollbar-track {\n background: var(--af-scrollbar-track, #d1ddda);\n border-radius: 2px;\n}\n\n.tab-bar::-webkit-scrollbar-thumb {\n background: var(--af-scrollbar-thumb, #8a7049);\n border-radius: 2px;\n}\n\n.tab-bar::-webkit-scrollbar-thumb:hover {\n background: var(--af-scrollbar-thumb-hover, #8d785a);\n}\n\n/* ==========================================================================\n SHAPE: SQUARE\n ========================================================================== */\n\n.tab-bar.shape-square {\n gap: 0;\n border-bottom: 1px solid var(--af-background-border-subtle, #e8eeed);\n}\n\n/* ==========================================================================\n SHAPE: PILL\n ========================================================================== */\n\n.tab-bar.shape-pill {\n gap: 0;\n padding: var(--space-2, 8px);\n background-color: var(--af-background-level-1, #e8eeed);\n border-radius: var(--radius-pill, 999px);\n}\n\n/* ==========================================================================\n BREAKPOINT: MOBILE\n ========================================================================== */\n\n.tab-bar.breakpoint-mobile {\n /* Mobile uses compact spacing */\n}\n\n.tab-bar.breakpoint-mobile.shape-square {\n /* Tabs handle their own padding in mobile */\n}\n\n.tab-bar.breakpoint-mobile.shape-pill {\n padding: var(--space-1, 4px);\n}\n\n/* ==========================================================================\n BREAKPOINT: DESKTOP\n ========================================================================== */\n\n.tab-bar.breakpoint-desktop {\n /* Desktop uses more generous spacing */\n}\n\n.tab-bar.breakpoint-desktop.shape-square {\n /* Tabs handle their own padding in desktop mode */\n}\n\n.tab-bar.breakpoint-desktop.shape-pill {\n padding: var(--space-2, 8px);\n}\n\n","import { Component, h, Prop, Host, Element, Listen } from '@stencil/core';\n\nexport type TabBarShape = 'square' | 'pill';\nexport type TabBarBreakpoint = 'mobile' | 'desktop';\n\n/**\n * TabBar component that contains and manages a group of tabs.\n * Provides horizontal layout, keyboard navigation, and consistent styling.\n * \n * @slot - Tab elements (af-tab)\n * \n * @example\n * ```html\n * <af-tab-bar shape=\"square\" breakpoint=\"desktop\">\n * <af-tab label=\"Overview\" active value=\"overview\"></af-tab>\n * <af-tab label=\"Details\" value=\"details\"></af-tab>\n * <af-tab label=\"Settings\" value=\"settings\"></af-tab>\n * </af-tab-bar>\n * ```\n */\n@Component({\n tag: 'af-tab-bar',\n styleUrl: 'af-tab-bar.css',\n shadow: true\n})\nexport class AfTabBar {\n @Element() el!: HTMLElement;\n\n /**\n * Visual shape variant for all tabs\n * - `square` - Rectangular tabs with bottom border indicator\n * - `pill` - Rounded pill tabs with background for active state\n */\n @Prop({ reflect: true }) shape: TabBarShape = 'square';\n\n /**\n * Responsive breakpoint mode\n * - `mobile` - Compact layout with smaller padding\n * - `desktop` - Larger layout with more generous spacing\n */\n @Prop({ reflect: true }) breakpoint: TabBarBreakpoint = 'desktop';\n\n componentDidLoad() {\n this.syncChildProps();\n }\n\n componentDidUpdate() {\n this.syncChildProps();\n }\n\n /**\n * Sync shape and breakpoint props to child af-tab elements\n */\n private syncChildProps() {\n const tabs = this.el.querySelectorAll('af-tab');\n tabs.forEach((tab) => {\n tab.setAttribute('shape', this.shape);\n tab.setAttribute('data-breakpoint', this.breakpoint);\n });\n }\n\n /**\n * Handle keyboard navigation between tabs\n */\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n const tabs = Array.from(this.el.querySelectorAll('af-tab:not([disabled])')) as HTMLElement[];\n const currentIndex = tabs.findIndex(tab => tab === document.activeElement || tab.shadowRoot?.activeElement);\n \n if (currentIndex === -1) return;\n\n let newIndex = currentIndex;\n\n switch (event.key) {\n case 'ArrowLeft':\n event.preventDefault();\n newIndex = currentIndex > 0 ? currentIndex - 1 : tabs.length - 1;\n break;\n case 'ArrowRight':\n event.preventDefault();\n newIndex = currentIndex < tabs.length - 1 ? currentIndex + 1 : 0;\n break;\n case 'Home':\n event.preventDefault();\n newIndex = 0;\n break;\n case 'End':\n event.preventDefault();\n newIndex = tabs.length - 1;\n break;\n default:\n return;\n }\n\n // Focus the button inside the shadow DOM of the tab\n const targetTab = tabs[newIndex];\n const button = targetTab.shadowRoot?.querySelector('button');\n if (button) {\n button.focus();\n }\n }\n\n render() {\n const containerClasses = {\n 'tab-bar': true,\n [`shape-${this.shape}`]: true,\n [`breakpoint-${this.breakpoint}`]: true,\n };\n\n return (\n <Host role=\"tablist\">\n <div class={containerClasses}>\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,WAAW,GAAG,qkCAAqkC;;MCyB5kC,QAAQ,GAAA,MAAA;AALrB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAQE;;;;AAIG;AACsB,QAAA,IAAK,CAAA,KAAA,GAAgB,QAAQ;AAEtD;;;;AAIG;AACsB,QAAA,IAAU,CAAA,UAAA,GAAqB,SAAS;AA6ElE;IA3EC,gBAAgB,GAAA;QACd,IAAI,CAAC,cAAc,EAAE;;IAGvB,kBAAkB,GAAA;QAChB,IAAI,CAAC,cAAc,EAAE;;AAGvB;;AAEG;IACK,cAAc,GAAA;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AAC/C,QAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;YACnB,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC;YACrC,GAAG,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC;AACtD,SAAC,CAAC;;AAGJ;;AAEG;AAEH,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAkB;QAC5F,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,CAAC,aAAa,IAAI,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC;QAE3G,IAAI,YAAY,KAAK,EAAE;YAAE;QAEzB,IAAI,QAAQ,GAAG,YAAY;AAE3B,QAAA,QAAQ,KAAK,CAAC,GAAG;AACf,YAAA,KAAK,WAAW;gBACd,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,GAAG,YAAY,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;gBAChE;AACF,YAAA,KAAK,YAAY;gBACf,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC;gBAChE;AACF,YAAA,KAAK,MAAM;gBACT,KAAK,CAAC,cAAc,EAAE;gBACtB,QAAQ,GAAG,CAAC;gBACZ;AACF,YAAA,KAAK,KAAK;gBACR,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;gBAC1B;AACF,YAAA;gBACE;;;AAIJ,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC;QAC5D,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,KAAK,EAAE;;;IAIlB,MAAM,GAAA;AACJ,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,CAAC,SAAS,IAAI,CAAC,KAAK,CAAE,CAAA,GAAG,IAAI;AAC7B,YAAA,CAAC,cAAc,IAAI,CAAC,UAAU,CAAE,CAAA,GAAG,IAAI;SACxC;AAED,QAAA,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,SAAS,EAAA,EAClB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,gBAAgB,EAAA,EAC1B,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACD;;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-tab.entry.esm.js","sources":["src/components/af-tab/af-tab.css?tag=af-tab&encapsulation=shadow","src/components/af-tab/af-tab.tsx"],"sourcesContent":["/* Tab component styles */\n:host {\n display: inline-flex;\n flex-shrink: 0;\n}\n\n.tab {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n font-family: var(--typography-headingfont, 'NeuSans', Arial, sans-serif);\n font-weight: var(--font-weight-book, 500);\n font-size: var(--font-size-label-button, 17px);\n line-height: var(--line-height-label-button, 20px);\n text-align: center;\n transition: \n color 0.15s ease,\n background-color 0.15s ease,\n border-color 0.15s ease,\n box-shadow 0.15s ease;\n}\n\n.tab:focus {\n outline: none;\n}\n\n.tab:focus-visible {\n outline: none;\n box-shadow: \n 0 0 0 4px var(--af-background-base, #ffffff),\n 0 0 0 5px var(--af-background-border-active, #8a7049);\n}\n\n/* ==========================================================================\n SLOTS\n ========================================================================== */\n\n.icon-slot,\n.number-slot {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.icon-slot {\n width: 24px;\n height: 24px;\n}\n\n.number-slot {\n width: 24px;\n height: 24px;\n}\n\n.label {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n padding: 0 var(--space-3, 12px);\n}\n\n/* ==========================================================================\n SHAPE: SQUARE\n ========================================================================== */\n\n.tab.shape-square {\n padding: var(--space-3, 12px);\n border-radius: 0;\n overflow: hidden;\n border-bottom: 3px solid transparent;\n}\n\n/* Square - Default state */\n.tab.shape-square:not(.active):not(.disabled) {\n color: var(--af-typography-body-default, #2b484f);\n border-bottom-color: var(--af-background-border-subtle, #e8eeed);\n}\n\n/* Square - Hover state */\n.tab.shape-square:not(.active):not(.disabled):hover {\n color: var(--af-typography-body-dark, #14343b);\n border-bottom-color: var(--af-background-border-default, #d1ddda);\n}\n\n/* Square - Active state */\n.tab.shape-square.active {\n color: var(--af-typography-body-dark, #14343b);\n border-bottom-color: var(--af-background-border-active, #8a7049);\n}\n\n/* Square - Disabled state */\n.tab.shape-square.disabled {\n color: var(--af-typography-body-subtle, #60767b);\n border-bottom-color: transparent;\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n/* Square - Icon colors */\n.tab.shape-square:not(.active):not(.disabled) .icon-slot {\n color: var(--af-typography-body-default, #2b484f);\n}\n\n.tab.shape-square:not(.active):not(.disabled):hover .icon-slot {\n color: var(--af-typography-body-dark, #14343b);\n}\n\n.tab.shape-square.active .icon-slot {\n color: var(--af-typography-body-dark, #14343b);\n}\n\n/* ==========================================================================\n SHAPE: PILL\n ========================================================================== */\n\n.tab.shape-pill {\n padding: var(--space-3, 12px) var(--space-4, 16px);\n border-radius: var(--radius-pill, 999px);\n overflow: hidden;\n}\n\n/* Pill - Default state */\n.tab.shape-pill:not(.active):not(.disabled) {\n color: var(--af-typography-body-default, #2b484f);\n background-color: transparent;\n}\n\n/* Pill - Hover state */\n.tab.shape-pill:not(.active):not(.disabled):hover {\n color: var(--af-typography-body-dark, #14343b);\n background-color: var(--af-background-level-1-hover, #dde6e3);\n}\n\n/* Pill - Active state */\n.tab.shape-pill.active {\n color: var(--af-typography-body-dark, #14343b);\n background-color: var(--af-background-base, #ffffff);\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.08);\n}\n\n/* Pill - Disabled state */\n.tab.shape-pill.disabled {\n color: var(--af-typography-body-subtle, #60767b);\n background-color: transparent;\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n/* Pill - Icon colors */\n.tab.shape-pill:not(.active):not(.disabled) .icon-slot {\n color: var(--af-typography-body-default, #2b484f);\n}\n\n.tab.shape-pill:not(.active):not(.disabled):hover .icon-slot {\n color: var(--af-typography-body-dark, #14343b);\n}\n\n.tab.shape-pill.active .icon-slot {\n color: var(--af-typography-body-dark, #14343b);\n}\n\n/* ==========================================================================\n DESKTOP BREAKPOINT ADJUSTMENTS\n Tabs in desktop mode get larger padding via the tab-bar parent\n These are applied via CSS custom properties set by af-tab-bar\n ========================================================================== */\n\n:host([data-breakpoint=\"desktop\"]) .tab.shape-square {\n padding: var(--space-6, 24px) var(--space-5, 20px);\n border-bottom-width: 4px;\n}\n\n:host([data-breakpoint=\"desktop\"]) .tab.shape-pill {\n padding: var(--space-3, 12px) var(--space-4, 16px);\n}\n\n","import { Component, h, Prop, Host, Event, EventEmitter } from '@stencil/core';\n\nexport type TabShape = 'square' | 'pill';\n\n/**\n * Tab component for use within a TabBar.\n * Represents an individual selectable tab with support for icons and number badges.\n * \n * @slot icon - Optional icon to display before the label\n * @slot number - Optional number badge to display\n * \n * @example\n * ```html\n * <af-tab label=\"Overview\" active></af-tab>\n * <af-tab label=\"Details\">\n * <af-icon slot=\"icon\" name=\"document\"></af-icon>\n * </af-tab>\n * <af-tab label=\"Step 1\">\n * <af-number-badge slot=\"number\" number=\"1\"></af-number-badge>\n * </af-tab>\n * ```\n */\n@Component({\n tag: 'af-tab',\n styleUrl: 'af-tab.css',\n shadow: true\n})\nexport class AfTab {\n /**\n * The text label for the tab\n */\n @Prop() label: string = '';\n\n /**\n * Whether the tab is currently active/selected\n */\n @Prop({ reflect: true }) active: boolean = false;\n\n /**\n * Whether the tab is disabled\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n\n /**\n * Visual shape variant\n * - `square` - Rectangular tab with bottom border indicator\n * - `pill` - Rounded pill shape with background for active state\n */\n @Prop({ reflect: true }) shape: TabShape = 'square';\n\n /**\n * Whether to show the icon slot\n */\n @Prop() displayIcon: boolean = false;\n\n /**\n * Whether to show the number badge slot\n */\n @Prop() displayNumber: boolean = false;\n\n /**\n * Unique value for the tab, used for programmatic selection\n */\n @Prop() value?: string;\n\n /**\n * Emitted when the tab is clicked\n */\n @Event() afTabClick!: EventEmitter<{ value?: string }>;\n\n private handleClick = () => {\n if (this.disabled) return;\n this.afTabClick.emit({ value: this.value });\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (this.disabled) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.afTabClick.emit({ value: this.value });\n }\n };\n\n render() {\n const tabClasses = {\n 'tab': true,\n 'active': this.active,\n 'disabled': this.disabled,\n [`shape-${this.shape}`]: true,\n };\n\n return (\n <Host>\n <button\n class={tabClasses}\n role=\"tab\"\n aria-selected={this.active ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : undefined}\n tabindex={this.disabled ? -1 : 0}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n disabled={this.disabled}\n >\n {this.displayNumber && (\n <span class=\"number-slot\">\n <slot name=\"number\" />\n </span>\n )}\n {this.displayIcon && (\n <span class=\"icon-slot\">\n <slot name=\"icon\" />\n </span>\n )}\n <span class=\"label\">{this.label}</span>\n </button>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,QAAQ,GAAG,8nGAA8nG;;MC2BloG,KAAK,GAAA,MAAA;AALlB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAME;;AAEG;AACK,QAAA,IAAK,CAAA,KAAA,GAAW,EAAE;AAE1B;;AAEG;AACsB,QAAA,IAAM,CAAA,MAAA,GAAY,KAAK;AAEhD;;AAEG;AACsB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AAElD;;;;AAIG;AACsB,QAAA,IAAK,CAAA,KAAA,GAAa,QAAQ;AAEnD;;AAEG;AACK,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK;AAEpC;;AAEG;AACK,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK;AAY9B,QAAA,IAAW,CAAA,WAAA,GAAG,MAAK;YACzB,IAAI,IAAI,CAAC,QAAQ;gBAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAC;AAEO,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAoB,KAAI;YAC/C,IAAI,IAAI,CAAC,QAAQ;gBAAE;AACnB,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;gBAC9C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;;AAE/C,SAAC;AAqCF;IAnCC,MAAM,GAAA;AACJ,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI,CAAC,QAAQ;AACzB,YAAA,CAAC,SAAS,IAAI,CAAC,KAAK,CAAE,CAAA,GAAG,IAAI;SAC9B;AAED,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE,UAAU,EACjB,IAAI,EAAC,KAAK,EAAA,eAAA,EACK,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,EAAA,eAAA,EAC9B,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,EACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,CAAC,EAChC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAA,EAEtB,IAAI,CAAC,aAAa,KACjB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,aAAa,EAAA,EACvB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,QAAQ,EAAA,CAAG,CACjB,CACR,EACA,IAAI,CAAC,WAAW,KACf,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EACrB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,MAAM,EAAA,CAAG,CACf,CACR,EACD,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,OAAO,EAAE,EAAA,IAAI,CAAC,KAAK,CAAQ,CAChC,CACJ;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-tag.entry.esm.js","sources":["src/components/af-tag/af-tag.css?tag=af-tag&encapsulation=shadow","src/components/af-tag/af-tag.tsx"],"sourcesContent":["/* Tag component styles */\n:host {\n display: inline-flex;\n flex-shrink: 0;\n}\n\n.tag {\n display: inline-flex;\n align-items: center;\n overflow: hidden;\n border-radius: 4px;\n font-family: var(--typography-headingfont, 'NeuSans', Arial, sans-serif);\n font-weight: var(--font-weight-book, 500);\n line-height: 1;\n text-decoration: none;\n transition: background-color 0.15s ease, box-shadow 0.15s ease;\n cursor: default;\n}\n\na.tag {\n cursor: pointer;\n}\n\n/* ==========================================================================\n VARIANT: DEFAULT (inherits from parent theme context)\n ========================================================================== */\n\n.tag.variant-default {\n background-color: var(--af-tag-bg, var(--colour-brand-soft-clay, #b09670));\n color: var(--af-tag-text, var(--colour-brand-inkwell, #14343b));\n}\n\n.tag.variant-default:hover {\n background-color: var(--af-tag-bg-hover, var(--colour-tints-soft-clay-400, #c0ab8d));\n}\n\n/* ==========================================================================\n EXPLICIT THEME VARIANTS\n ========================================================================== */\n\n.tag.variant-inkwell {\n background-color: var(--colour-brand-inkwell, #14343b);\n color: var(--colour-brand-white, #ffffff);\n}\n\n.tag.variant-inkwell:hover {\n background-color: var(--colour-tints-inkwell-500, #1e4a48);\n}\n\n.tag.variant-white {\n background-color: var(--colour-brand-white, #ffffff);\n color: var(--colour-brand-inkwell, #14343b);\n}\n\n.tag.variant-white:hover {\n background-color: var(--colour-tints-mist-green-100, #e1eee1);\n}\n\n.tag.variant-soft-clay {\n background-color: var(--colour-brand-soft-clay, #b09670);\n color: var(--colour-brand-inkwell, #14343b);\n}\n\n.tag.variant-soft-clay:hover {\n background-color: var(--colour-tints-soft-clay-400, #c0ab8d);\n}\n\n.tag.variant-mist-green {\n background-color: var(--colour-brand-mist-green, #c6d5d1);\n color: var(--colour-brand-inkwell, #14343b);\n}\n\n.tag.variant-mist-green:hover {\n background-color: var(--colour-tints-mist-green-200, #d2e8e3);\n}\n\n/* ==========================================================================\n SIZES\n ========================================================================== */\n\n.tag.size-x-small {\n padding: 6px 10px;\n font-size: var(--font-size-label-tag, 14px);\n}\n\n.tag.size-small {\n padding: 8px 12px;\n font-size: var(--font-size-label-tag, 14px);\n}\n\n.tag.size-large {\n padding: 12px 16px;\n font-size: var(--font-size-body-large, 18px);\n}\n\n/* ==========================================================================\n FOCUS STATES\n ========================================================================== */\n\n.tag:focus {\n outline: none;\n box-shadow:\n 0 0 0 4px var(--af-background-base, var(--colour-background-white, #ffffff)),\n 0 0 0 5px var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n\n.tag:focus-visible {\n outline: none;\n box-shadow:\n 0 0 0 4px var(--af-background-base, var(--colour-background-white, #ffffff)),\n 0 0 0 5px var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n","import { Component, h, Prop, Host } from '@stencil/core';\n\nexport type TagSize = 'x-small' | 'small' | 'large';\nexport type TagVariant = 'default' | 'inkwell' | 'white' | 'soft-clay' | 'mist-green';\n\n/**\n * Tag displays a label in a styled container.\n * Perfect for categorization, topics, or metadata display.\n *\n * The `default` variant inherits its colors from the parent theme context\n * (af-section, af-card). Use explicit variants (`inkwell`, `white`,\n * `soft-clay`, `mist-green`) to override.\n *\n * @example\n * ```html\n * <af-tag>AI</af-tag>\n * <af-tag size=\"small\" variant=\"inkwell\">Machine Learning</af-tag>\n * <af-tag size=\"large\" variant=\"white\">Document Processing</af-tag>\n * ```\n */\n@Component({\n tag: 'af-tag',\n styleUrl: 'af-tag.css',\n shadow: true\n})\nexport class AfTag {\n /**\n * The size of the tag\n * - `x-small` - Compact tag with minimal padding\n * - `small` - Small tag with moderate padding (default)\n * - `large` - Large tag with generous padding\n */\n @Prop() size: TagSize = 'small';\n\n /**\n * Visual variant of the tag. `default` inherits tag colors from the\n * parent theme context. Theme-named variants force a specific palette.\n */\n @Prop() variant: TagVariant = 'default';\n\n /**\n * The URL to navigate to when the tag is clicked (makes the tag a link)\n */\n @Prop() href?: string;\n\n render() {\n const TagElement = this.href ? 'a' : 'span';\n const linkProps = this.href ? { href: this.href } : {};\n\n return (\n <Host>\n <TagElement\n class={{\n 'tag': true,\n [`size-${this.size}`]: true,\n [`variant-${this.variant}`]: true,\n }}\n {...linkProps}\n >\n <slot />\n </TagElement>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,QAAQ,GAAG,sjEAAsjE;;MCyB1jE,KAAK,GAAA,MAAA;AALlB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;;;;AAKG;AACK,QAAA,IAAI,CAAA,IAAA,GAAY,OAAO;AAE/B;;;AAGG;AACK,QAAA,IAAO,CAAA,OAAA,GAAe,SAAS;AA0BxC;IAnBC,MAAM,GAAA;AACJ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,MAAM;AAC3C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;QAEtD,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAC,CAAA,UAAU,EACT,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE;AACL,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;AAC3B,gBAAA,CAAC,WAAW,IAAI,CAAC,OAAO,CAAE,CAAA,GAAG,IAAI;AAClC,aAAA,EAAA,GACG,SAAS,EAAA,EAEb,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACG,CACR;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-testimonial-carousel.entry.esm.js","sources":["src/components/af-testimonial-carousel/af-testimonial-carousel.css?tag=af-testimonial-carousel&encapsulation=scoped","src/components/af-testimonial-carousel/af-testimonial-carousel.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.testimonial-carousel {\n position: relative;\n width: 100%;\n overflow: hidden;\n}\n\n.testimonial-slides {\n position: relative;\n width: 100%;\n min-height: 544px;\n overflow: hidden;\n}\n\n.testimonial-slides ::slotted(af-testimonial) {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out;\n}\n\n/* Progress indicator - wraps af-progress-line atom */\n/* Per Figma: centered below the card with horizontal padding */\n.testimonial-progress {\n margin-top: 32px;\n max-width: 840px;\n margin-left: auto;\n margin-right: auto;\n}\n\n/* Navigation is now rendered inside each testimonial's footer via props */\n\n","import { Component, State, h, Host, Element, Listen } from '@stencil/core';\n\n/**\n * TestimonialCarousel - Carousel for displaying multiple customer testimonials.\n * \n * Handles navigation between testimonials with progress indicator.\n * Wrap in Section/Container for proper page layout and theming.\n * \n * @slot - Testimonial components to display in the carousel\n */\n@Component({\n tag: 'af-testimonial-carousel',\n styleUrl: 'af-testimonial-carousel.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonialCarousel {\n @Element() host!: HTMLElement;\n @State() currentIndex: number = 0;\n @State() isAnimating: boolean = false;\n @State() testimonialCount: number = 0;\n\n private testimonials: HTMLElement[] = [];\n private observer: MutationObserver | undefined;\n\n componentDidLoad() {\n this.detectTestimonials();\n \n // Watch for testimonials being added (for React async rendering)\n this.observer = new MutationObserver(() => {\n this.detectTestimonials();\n });\n \n this.observer.observe(this.host, {\n childList: true,\n subtree: true\n });\n }\n\n disconnectedCallback() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n /**\n * Listen for navigation events from testimonials\n */\n @Listen('navPrev')\n handleNavPrev() {\n this.goToPrevious();\n }\n\n @Listen('navNext')\n handleNavNext() {\n this.goToNext();\n }\n\n private detectTestimonials() {\n const newTestimonials = Array.from(this.host.querySelectorAll('af-testimonial')) as HTMLElement[];\n \n if (newTestimonials.length !== this.testimonials.length) {\n this.testimonials = newTestimonials;\n this.testimonialCount = newTestimonials.length;\n \n if (this.testimonials.length > 0) {\n this.currentIndex = 0;\n this.updateVisibleTestimonial();\n }\n }\n }\n\n private updateVisibleTestimonial() {\n const hasPrev = this.currentIndex > 0;\n const hasNext = this.currentIndex < this.testimonialCount - 1;\n const showNav = this.testimonialCount > 1;\n\n this.testimonials.forEach((testimonial, index) => {\n const offset = (index - this.currentIndex) * 100;\n testimonial.style.transform = `translateX(${offset}%)`;\n testimonial.style.opacity = index === this.currentIndex ? '1' : '0';\n testimonial.style.pointerEvents = index === this.currentIndex ? 'auto' : 'none';\n \n // Set navigation props on testimonials (directly on the element for Stencil)\n (testimonial as any).showNavigation = showNav;\n (testimonial as any).hasPrev = hasPrev;\n (testimonial as any).hasNext = hasNext;\n });\n }\n\n private goToPrevious = () => {\n if (this.isAnimating || this.currentIndex === 0) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex - 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n private goToNext = () => {\n if (this.isAnimating || this.currentIndex >= this.testimonialCount - 1) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex + 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n /**\n * Calculate progress value (0 to 1) based on current position\n */\n private getProgress(): number {\n if (this.testimonialCount <= 1) return 0;\n return (this.currentIndex + 1) / this.testimonialCount;\n }\n\n render() {\n return (\n <Host>\n <div class=\"testimonial-carousel\">\n <div class=\"testimonial-slides\">\n <slot></slot>\n </div>\n \n {/* Progress indicator using af-progress-line atom */}\n {this.testimonialCount > 1 && (\n <div class=\"testimonial-progress\">\n <af-progress-line progress={this.getProgress()} />\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-testimonial-stat.entry.esm.js","sources":["src/components/af-testimonial-stat/af-testimonial-stat.css?tag=af-testimonial-stat&encapsulation=scoped","src/components/af-testimonial-stat/af-testimonial-stat.tsx"],"sourcesContent":[":host {\n display: block;\n flex: 1;\n min-width: 0;\n}\n\n.stat {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.stat--accent {\n /* Themed active/accent border color */\n border-left: 2px solid var(--af-background-border-active, var(--colour-softclay-800, #8a7049));\n padding-left: 16px;\n min-height: 76px;\n justify-content: center;\n}\n\n/* Stat value - override af-heading to use secondary color */\n.stat-value {\n /* Override the heading color to use secondary (gold/ochre) instead of primary */\n --af-typography-heading-primary: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #b09670));\n letter-spacing: -0.88px;\n white-space: nowrap;\n}\n\n/* Description - override af-text to use body-dark for emphasis */\n.stat-description {\n --af-typography-body-default: var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343b));\n overflow: hidden;\n text-overflow: ellipsis;\n}","import { Component, Prop, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'af-testimonial-stat',\n styleUrl: 'af-testimonial-stat.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonialStat {\n /**\n * The statistic value (e.g., \"95%\", \"10×\", \"120,000\")\n */\n @Prop() value!: string;\n\n /**\n * Description text for the statistic\n */\n @Prop() description!: string;\n\n /**\n * Whether to show left accent border\n */\n @Prop() accentBorder: boolean = false;\n\n render() {\n return (\n <Host>\n <div class={`stat ${this.accentBorder ? 'stat--accent' : ''}`}>\n {/* Stat value uses secondary heading color via CSS override */}\n <af-heading level={2} class=\"stat-value\">{this.value}</af-heading>\n {/* Description uses af-text for proper theming */}\n <af-text variant=\"medium\" class=\"stat-description\">{this.description}</af-text>\n </div>\n </Host>\n );\n }\n}\n\n\n"],"names":[],"mappings":";;AAAA,MAAM,oBAAoB,GAAG,+qBAA+qB;;MCQ/rB,iBAAiB,GAAA,MAAA;AAN9B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAiBE;;AAEG;AACK,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK;AActC;IAZC,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,QAAQ,IAAI,CAAC,YAAY,GAAG,cAAc,GAAG,EAAE,CAAE,CAAA,EAAA,EAE3D,CAAY,CAAA,YAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,CAAC,EAAE,KAAK,EAAC,YAAY,EAAE,EAAA,IAAI,CAAC,KAAK,CAAc,EAElE,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,OAAO,EAAC,QAAQ,EAAC,KAAK,EAAC,kBAAkB,EAAE,EAAA,IAAI,CAAC,WAAW,CAAW,CAC3E,CACD;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-testimonial.entry.esm.js","sources":["src/components/af-testimonial/af-testimonial.css?tag=af-testimonial&encapsulation=scoped","src/components/af-testimonial/af-testimonial.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.testimonial-card {\n /* Uses themed level-1 background from parent Section */\n background: var(--af-background-level-1, var(--colour-mistgreen-200, #e8eeed));\n border-radius: var(--border-radius-card-level-1, 32px);\n overflow: hidden;\n display: flex;\n height: 544px;\n box-sizing: border-box;\n}\n\n/* Image side - 40.5% of card width (519px of 1280px in Figma) */\n.testimonial-image {\n position: relative;\n width: 50%;\n min-width: 300px;\n /* Minimum for readability */\n max-width: 519px;\n /* Cap at Figma design width */\n height: 100%;\n /* Dark background for image overlay effect - always dark regardless of theme */\n background: var(--colour-brand-inkwell, #14343b);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n overflow: hidden;\n}\n\n.testimonial-bg-image {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n object-fit: cover;\n opacity: 0.7;\n}\n\n.testimonial-logo {\n position: relative;\n z-index: 1;\n padding: 0 108px;\n max-width: 100%;\n}\n\n.testimonial-logo img {\n width: 100%;\n height: auto;\n display: block;\n}\n\n/* Content side */\n.testimonial-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 32px;\n padding: 48px;\n /* Subtle border using themed border token */\n border: 1px solid var(--af-background-border-subtle, var(--colour-mistgreen-200, #e8eeed));\n border-left: 1px solid var(--af-background-border-subtle, var(--colour-mistgreen-200, #e8eeed));\n box-sizing: border-box;\n}\n\n.testimonial-quote-section {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 12px;\n min-height: 0;\n /* Allow flex item to shrink */\n overflow: hidden;\n}\n\n.testimonial-quote-icon {\n width: 48px;\n height: 48px;\n /* Quote icon uses themed secondary heading color (gold/ochre accent) */\n color: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #b09670));\n flex-shrink: 0;\n}\n\n/* Quote text — 22px / 140% per Webflow reference. Accepts either the\n `quote` prop (rendered as plain text) or the `quote-body` slot (rich). */\n.testimonial-text {\n font-family: var(--typography-bodyfont, 'NeuSans', sans-serif);\n font-size: 22px;\n line-height: 1.4;\n font-weight: var(--font-weight-regular, 400);\n color: var(--af-typography-body-default, var(--colour-brand-inkwell, #14343b));\n}\n.testimonial-text ::slotted(p),\n.testimonial-text p {\n font: inherit;\n color: inherit;\n margin: 0 0 12px 0;\n}\n.testimonial-text ::slotted(p:last-child),\n.testimonial-text p:last-child {\n margin-bottom: 0;\n}\n.testimonial-text ::slotted(ul),\n.testimonial-text ul {\n margin: 0 0 12px 0;\n padding-left: 20px;\n}\n\n/* Attribution uses body-dark color for emphasis */\n.testimonial-attribution {\n font-family: var(--typography-bodyfont, 'NeuSans', sans-serif);\n font-size: 16px;\n line-height: 24px;\n color: var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343b));\n margin-top: 12px;\n}\n\n.testimonial-stats {\n display: flex;\n gap: 32px;\n width: 100%;\n flex-shrink: 0;\n}\n\n.testimonial-footer {\n display: flex;\n align-items: center;\n justify-content: space-between;\n /* Themed border color */\n border-top: 1px solid var(--af-background-border-default, var(--colour-mistgreen-400, #d1ddda));\n padding-top: 32px;\n flex-shrink: 0;\n min-height: 48px;\n}\n\n.testimonial-nav {\n display: flex;\n gap: 12px;\n}\n\n.testimonial-nav-buttons {\n display: flex;\n gap: 12px;\n}\n\n/* CTA button is now handled by af-button atom component */","import { Component, Prop, h, Host, Event, EventEmitter } from '@stencil/core';\n\n/**\n * @slot quote-body - Rich quote content (paragraphs, lists). Overrides the\n * `quote` string prop when provided. Use for testimonials that include\n * multiple paragraphs, bulleted points, or inline emphasis.\n * @slot quote-icon - Quote icon (defaults to af-icon name=\"quote\").\n * @slot stats - Statistic items (af-testimonial-stat components).\n * @slot navigation - Custom nav controls (when not using built-in ones).\n */\n@Component({\n tag: 'af-testimonial',\n styleUrl: 'af-testimonial.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonial {\n /**\n * Background image URL for the testimonial card\n */\n @Prop() backgroundImage?: string;\n\n /**\n * Company logo URL\n */\n @Prop() logoImage?: string;\n\n /**\n * Testimonial quote text. Falls back to the `quote-body` slot if that\n * slot has content.\n */\n @Prop() quote?: string;\n\n /**\n * Attribution text (e.g., \"– Nathaniel Barrs, CTO, PSC Insurance\")\n */\n @Prop() attribution!: string;\n\n /**\n * Link to full case study\n */\n @Prop() readMoreLink?: string;\n\n /**\n * Whether to show built-in navigation buttons (used when in a carousel)\n */\n @Prop({ mutable: true }) showNavigation: boolean = false;\n\n /**\n * Whether the previous button is enabled\n */\n @Prop({ mutable: true }) hasPrev: boolean = false;\n\n /**\n * Whether the next button is enabled\n */\n @Prop({ mutable: true }) hasNext: boolean = false;\n\n /**\n * Emitted when the previous button is clicked\n */\n @Event() navPrev!: EventEmitter<void>;\n\n /**\n * Emitted when the next button is clicked\n */\n @Event() navNext!: EventEmitter<void>;\n\n private handlePrev = () => {\n this.navPrev.emit();\n };\n\n private handleNext = () => {\n this.navNext.emit();\n };\n\n render() {\n return (\n <Host>\n <div class=\"testimonial-card\">\n {/* Image side */}\n <div class=\"testimonial-image\">\n {this.backgroundImage && (\n <img src={this.backgroundImage} alt=\"\" class=\"testimonial-bg-image\" />\n )}\n {this.logoImage && (\n <div class=\"testimonial-logo\">\n <img src={this.logoImage} alt=\"Company logo\" />\n </div>\n )}\n </div>\n\n {/* Content side */}\n <div class=\"testimonial-content\">\n <div class=\"testimonial-quote-section\">\n {/* Quote icon - using af-icon atom with slot for flexibility */}\n <div class=\"testimonial-quote-icon\">\n <slot name=\"quote-icon\">\n <af-icon name=\"quote\" size={48} />\n </slot>\n </div>\n\n {/* Quote text — slot takes priority; falls back to prop. */}\n <div class=\"testimonial-text\">\n <slot name=\"quote-body\">{this.quote}</slot>\n </div>\n {/* Attribution */}\n <div class=\"testimonial-attribution\">{this.attribution}</div>\n </div>\n\n {/* Statistics slot */}\n <div class=\"testimonial-stats\">\n <slot name=\"stats\"></slot>\n </div>\n\n {/* Footer with navigation and CTA */}\n <div class=\"testimonial-footer\">\n <div class=\"testimonial-nav\">\n {this.showNavigation ? (\n // Render built-in navigation buttons\n <div class=\"testimonial-nav-buttons\">\n <af-icon-button\n variant=\"secondary\"\n disabled={!this.hasPrev}\n onClick={this.handlePrev}\n ariaLabel=\"Previous testimonial\"\n >\n <af-icon name=\"arrow-left\" size={24} />\n </af-icon-button>\n <af-icon-button\n variant=\"secondary\"\n disabled={!this.hasNext}\n onClick={this.handleNext}\n ariaLabel=\"Next testimonial\"\n >\n <af-icon name=\"arrow-right\" size={24} />\n </af-icon-button>\n </div>\n ) : (\n // Allow custom navigation via slot\n <slot name=\"navigation\"></slot>\n )}\n </div>\n {this.readMoreLink && (\n <af-button variant=\"secondary\" href={this.readMoreLink}>\n Read full story\n <af-icon slot=\"icon-right\" name=\"arrow-right\" size={24} />\n </af-button>\n )}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-text-image-nest.entry.esm.js","sources":["src/components/af-text-image-nest/af-text-image-nest.css?tag=af-text-image-nest&encapsulation=scoped","src/components/af-text-image-nest/af-text-image-nest.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n/* ==========================================================================\n Base Container\n ========================================================================== */\n\n.text-image-nest {\n width: 100%;\n position: relative;\n}\n\n/* ==========================================================================\n Content Layout\n ========================================================================== */\n\n.nest__content {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 48px;\n}\n\n/* ==========================================================================\n Content Grid\n ========================================================================== */\n\n.nest__grid {\n display: grid;\n gap: 40px;\n width: 100%;\n}\n\n/* Single layout - full width */\n.grid-single {\n grid-template-columns: 1fr;\n}\n\n/* 2-column grid */\n.grid-grid-2 {\n grid-template-columns: repeat(2, 1fr);\n}\n\n/* 3-column grid */\n.grid-grid-3 {\n grid-template-columns: repeat(3, 1fr);\n}\n\n/* 4-column grid */\n.grid-grid-4 {\n grid-template-columns: repeat(4, 1fr);\n}\n\n/* Stacked layout - full width with larger gap for alternating rows */\n.grid-stacked {\n grid-template-columns: 1fr;\n gap: 48px;\n}\n\n/* ==========================================================================\n Footer Buttons\n ========================================================================== */\n\n.nest__footer {\n display: flex;\n justify-content: center;\n gap: 12px;\n}\n\n.nest__footer:empty {\n display: none;\n}\n\n/* ==========================================================================\n Mobile Responsive Styles\n ========================================================================== */\n\n@media (max-width: 768px) {\n /* Content gap */\n .nest__content {\n gap: 32px;\n }\n\n /* All grids collapse to single column on mobile */\n .nest__grid {\n grid-template-columns: 1fr;\n gap: 32px;\n }\n\n /* Stacked layout gap on mobile */\n .grid-stacked {\n gap: 40px;\n }\n\n /* Footer buttons stack vertically on mobile */\n .nest__footer {\n flex-direction: column;\n align-items: center;\n }\n}\n\n/* ==========================================================================\n Slot Content Styling\n ========================================================================== */\n\n::slotted(*) {\n margin: 0;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * TextImageNest is a layout component that arranges multiple text-image content pieces\n * in various grid layouts with optional footer buttons.\n * \n * This component inherits theming from a parent Section or theme-providing container.\n * Wrap it in an af-section to apply themes.\n * \n * Supports multiple layout variants:\n * - `single`: Full-width single item (side-by-side image + text)\n * - `grid-2`: 2-column grid with stacked items\n * - `grid-3`: 3-column grid with stacked items\n * - `grid-4`: 4-column grid with stacked items\n * - `stacked`: Alternating rows of side-by-side content\n */\n@Component({\n tag: 'af-text-image-nest',\n styleUrl: 'af-text-image-nest.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTextImageNest {\n /**\n * Layout variant for the content grid\n */\n @Prop() layout: 'single' | 'grid-2' | 'grid-3' | 'grid-4' | 'stacked' = 'grid-3';\n\n render() {\n const containerClasses = {\n 'text-image-nest': true,\n [`layout-${this.layout}`]: true,\n };\n\n const gridClasses = {\n 'nest__grid': true,\n [`grid-${this.layout}`]: true,\n };\n\n return (\n <Host>\n <div class={containerClasses}>\n <div class=\"nest__content\">\n {/* Content Grid */}\n <div class={gridClasses}>\n <slot></slot>\n </div>\n\n {/* Footer Buttons */}\n <div class=\"nest__footer\">\n <slot name=\"buttons\"></slot>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n"],"names":[],"mappings":";;AAAA,MAAM,kBAAkB,GAAG,+iCAA+iC;;MCsB7jC,eAAe,GAAA,MAAA;AAN5B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAOE;;AAEG;AACK,QAAA,IAAM,CAAA,MAAA,GAA0D,QAAQ;AA+BjF;IA7BC,MAAM,GAAA;AACJ,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,CAAC,UAAU,IAAI,CAAC,MAAM,CAAE,CAAA,GAAG,IAAI;SAChC;AAED,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAE,CAAA,GAAG,IAAI;SAC9B;QAED,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,gBAAgB,EAAA,EAC1B,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,eAAe,EAAA,EAExB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,WAAW,EAAA,EACrB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,EAGN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,cAAc,EAAA,EACvB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,SAAS,EAAA,CAAQ,CACxB,CACF,CACF,CACD;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"af-text-image.entry.esm.js","sources":["src/components/af-text-image/af-text-image.css?tag=af-text-image&encapsulation=scoped","src/components/af-text-image/af-text-image.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n/* ==========================================================================\n Container Layout\n ========================================================================== */\n\n.text-image {\n display: flex;\n width: 100%;\n}\n\n/* Side-by-side layout (default for 1/3 and 1/4 proportions) */\n.text-image--side-by-side {\n flex-direction: row;\n align-items: flex-start;\n gap: var(--space-8, 32px);\n}\n\n/* DOM order is controlled from the TSX (image first for image-left, text\n first for image-right), so both variants use plain row flow. */\n.text-image--image-left {\n flex-direction: row;\n}\n\n.text-image--image-right {\n flex-direction: row;\n}\n\n/* Full-width layout (100% proportion) */\n.text-image--full-width {\n flex-direction: column;\n gap: var(--space-8, 32px);\n}\n\n/* ==========================================================================\n Content Area (Typography Lockups Container)\n ========================================================================== */\n\n.text-image__content {\n display: flex;\n flex-direction: column;\n gap: 56px;\n flex: 1;\n min-width: 0;\n}\n\n/* Proportion-based content sizing for side-by-side */\n.text-image--proportion-1-3 .text-image__content {\n flex: 2;\n}\n\n.text-image--proportion-1-4 .text-image__content {\n flex: 3;\n}\n\n.text-image--proportion-100 .text-image__content {\n flex: none;\n width: 100%;\n}\n\n/* Padding for content when image is on opposite side */\n.text-image--image-right .text-image__content {\n padding-right: var(--space-8, 32px);\n}\n\n.text-image--image-left .text-image__content {\n padding-left: var(--space-8, 32px);\n}\n\n.text-image--full-width .text-image__content {\n padding: 0;\n}\n\n/* ==========================================================================\n Typography Lockup\n ========================================================================== */\n\n.text-image__lockup {\n display: flex;\n flex-direction: column;\n gap: var(--space-4, 16px);\n width: 100%;\n}\n\n.text-image__copy {\n display: flex;\n flex-direction: column;\n gap: var(--space-4, 16px);\n max-width: 840px;\n width: 100%;\n}\n\n/* Heading styles - inherits color from theme context */\n.text-image__heading {\n font-family: var(--typography-headingfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-book, 500);\n font-size: var(--font-size-heading-3-desktop, 34px);\n line-height: var(--line-height-heading-tight, 1);\n letter-spacing: var(--letter-spacing-heading, -0.02em);\n color: var(--af-typography-heading-primary, #14343B);\n white-space: normal;\n}\n\n.text-image__heading:empty {\n display: none;\n}\n\n/* Description/body text - inherits color from theme context */\n.text-image__description {\n font-family: var(--typography-bodyfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-regular, 400);\n font-size: var(--font-size-body-large, 18px);\n line-height: var(--line-height-body-large, 26px);\n color: var(--af-typography-body-default, #2B484F);\n white-space: normal;\n}\n\n.text-image__description:empty {\n display: none;\n}\n\n/* Buttons section - wrapper for slotted ButtonGroup */\n.text-image__buttons {\n display: block;\n}\n\n.text-image__buttons:empty {\n display: none;\n}\n\n/* ==========================================================================\n Image Area\n ========================================================================== */\n\n.text-image__image-wrapper {\n flex-shrink: 0;\n overflow: hidden;\n border-radius: var(--radius-md, 12px);\n}\n\n/* Proportion-based image sizing for side-by-side */\n.text-image--proportion-1-3 .text-image__image-wrapper {\n flex: 1;\n min-width: 0;\n}\n\n.text-image--proportion-1-4 .text-image__image-wrapper {\n flex: 1;\n min-width: 0;\n}\n\n.text-image--proportion-100 .text-image__image-wrapper {\n width: 100%;\n}\n\n/* ==========================================================================\n Mobile Responsive Styles\n ========================================================================== */\n\n@media (max-width: 768px) {\n /* Stack everything vertically on mobile */\n .text-image--side-by-side {\n flex-direction: column;\n gap: var(--space-6, 24px);\n }\n\n /* Reset order - text always first on mobile */\n .text-image--image-left,\n .text-image--image-right {\n flex-direction: column;\n }\n\n /* Remove side padding on mobile */\n .text-image--image-right .text-image__content,\n .text-image--image-left .text-image__content {\n padding: 0;\n }\n\n /* Full width for all proportions on mobile */\n .text-image__content,\n .text-image__image-wrapper {\n flex: none !important;\n width: 100%;\n }\n\n /* Smaller heading on mobile */\n .text-image__heading {\n font-size: var(--font-size-heading-3-mobile, 25px);\n }\n\n /* Smaller body text for full-width on mobile */\n .text-image--proportion-100 .text-image__description {\n font-size: var(--font-size-body-medium, 16px);\n line-height: var(--line-height-body-medium, 24px);\n }\n\n /* On mobile, ButtonGroup handles its own responsive behavior */\n\n /* Smaller lockup gap on mobile for full-width */\n .text-image--proportion-100 .text-image__lockup {\n gap: var(--space-3, 12px);\n }\n\n .text-image--proportion-100 .text-image__copy {\n gap: var(--space-3, 12px);\n }\n\n /* Smaller border radius on mobile */\n .text-image__image-wrapper {\n border-radius: var(--radius-sm, 8px);\n }\n}\n\n/* ==========================================================================\n Slot Content Styling\n ========================================================================== */\n\n::slotted(*) {\n margin: 0;\n}\n\n::slotted(p) {\n margin: 0;\n}\n\n\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * TextImage composite component that combines typography content with an image.\n * Supports various layout configurations with image position and proportion options.\n */\n@Component({\n tag: 'af-text-image',\n styleUrl: 'af-text-image.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTextImage {\n /**\n * Position of the image relative to the text content\n */\n @Prop() imagePosition: 'left' | 'right' = 'right';\n\n /**\n * Proportion of the image in the layout\n * - '1/3': Image takes 1/3 of the width (text takes 2/3)\n * - '1/4': Image takes 1/4 of the width (text takes 3/4)\n * - '100%': Image takes full width below text\n */\n @Prop() imageProportion: '1/3' | '1/4' | '100%' = '1/3';\n\n /**\n * Image source URL\n */\n @Prop() src?: string;\n\n /**\n * Image alt text for accessibility\n */\n @Prop() alt: string = '';\n\n /**\n * Whether to show a second typography lockup section\n */\n @Prop() showSecondLockup: boolean = false;\n\n render() {\n const isFullWidth = this.imageProportion === '100%';\n const isImageLeft = this.imagePosition === 'left';\n\n const containerClasses = {\n 'text-image': true,\n 'text-image--full-width': isFullWidth,\n 'text-image--side-by-side': !isFullWidth,\n 'text-image--image-left': isImageLeft && !isFullWidth,\n 'text-image--image-right': !isImageLeft && !isFullWidth,\n [`text-image--proportion-${this.imageProportion.replace('/', '-').replace('%', '')}`]: true,\n };\n\n const renderTypographyLockup = (isSecond: boolean = false) => {\n const prefix = isSecond ? 'second-' : '';\n return (\n <div class={`text-image__lockup ${isSecond ? 'text-image__lockup--second' : ''}`}>\n <div class=\"text-image__copy\">\n <div class=\"text-image__heading\">\n <slot name={isSecond ? 'second-heading' : undefined}></slot>\n </div>\n <div class=\"text-image__description\">\n <slot name={`${prefix}description`}></slot>\n </div>\n </div>\n <div class=\"text-image__buttons\">\n <slot name={`${prefix}buttons`}></slot>\n </div>\n </div>\n );\n };\n\n const renderImage = () => {\n if (!this.src) return null;\n return (\n <div class=\"text-image__image-wrapper\">\n <af-image src={this.src} alt={this.alt}></af-image>\n </div>\n );\n };\n\n // For full-width layout, text is always above image\n if (isFullWidth) {\n return (\n <Host>\n <div class={containerClasses}>\n <div class=\"text-image__content\">\n {renderTypographyLockup()}\n {this.showSecondLockup && renderTypographyLockup(true)}\n </div>\n {renderImage()}\n </div>\n </Host>\n );\n }\n\n // For side-by-side layouts\n const textContent = (\n <div class=\"text-image__content\">\n {renderTypographyLockup()}\n {this.showSecondLockup && renderTypographyLockup(true)}\n </div>\n );\n\n const imageContent = renderImage();\n\n return (\n <Host>\n <div class={containerClasses}>\n {isImageLeft ? (\n [imageContent, textContent]\n ) : (\n [textContent, imageContent]\n )}\n </div>\n </Host>\n );\n }\n}\n\n\n\n"],"names":[],"mappings":"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"}