@affinda/wc 0.0.20 → 0.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (442) hide show
  1. package/dist/affinda/af-accordion-item.entry.esm.js.map +1 -1
  2. package/dist/affinda/af-button.entry.esm.js.map +1 -1
  3. package/dist/affinda/af-card.entry.esm.js.map +1 -1
  4. package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -1
  5. package/dist/affinda/af-icon-button.entry.esm.js.map +1 -1
  6. package/dist/affinda/af-icon-text.entry.esm.js.map +1 -1
  7. package/dist/affinda/af-illustrated-card.entry.esm.js.map +1 -1
  8. package/dist/affinda/af-image.entry.esm.js.map +1 -1
  9. package/dist/affinda/af-in-page-banner.entry.esm.js.map +1 -1
  10. package/dist/affinda/af-section.entry.esm.js.map +1 -1
  11. package/dist/affinda/af-stepper-step.entry.esm.js.map +1 -0
  12. package/dist/affinda/af-stepper.entry.esm.js.map +1 -0
  13. package/dist/affinda/af-tag.entry.esm.js.map +1 -1
  14. package/dist/affinda/af-testimonial.entry.esm.js.map +1 -1
  15. package/dist/affinda/af-text-image.entry.esm.js.map +1 -1
  16. package/dist/affinda/af-theme-override.entry.esm.js.map +1 -1
  17. package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
  18. package/dist/affinda/affinda.esm.js +1 -1
  19. package/dist/affinda/index.esm.js +1 -1
  20. package/dist/affinda/p-07efc7a0.entry.js +2 -0
  21. package/dist/affinda/{p-8f24dfe3.entry.js.map → p-07efc7a0.entry.js.map} +1 -1
  22. package/dist/affinda/p-08143c7e.entry.js +2 -0
  23. package/dist/affinda/{p-63314e14.entry.js.map → p-08143c7e.entry.js.map} +1 -1
  24. package/dist/affinda/{p-01993cc8.entry.js → p-0fb16377.entry.js} +2 -2
  25. package/dist/affinda/p-122b6e96.entry.js +2 -0
  26. package/dist/affinda/p-122b6e96.entry.js.map +1 -0
  27. package/dist/affinda/{p-3d2fb635.entry.js → p-1a87dd1c.entry.js} +2 -2
  28. package/dist/affinda/p-202bac33.entry.js +2 -0
  29. package/dist/affinda/p-2e50c27d.entry.js +2 -0
  30. package/dist/affinda/{p-920e6d30.entry.js.map → p-2e50c27d.entry.js.map} +1 -1
  31. package/dist/affinda/{p-adacb8c4.entry.js → p-2e8682a0.entry.js} +2 -2
  32. package/dist/affinda/{p-266af3e1.entry.js → p-3642589b.entry.js} +2 -2
  33. package/dist/affinda/{p-4c5f92a9.entry.js → p-391bb085.entry.js} +2 -2
  34. package/dist/affinda/{p-d51c4b1b.entry.js → p-3fc2a3dc.entry.js} +2 -2
  35. package/dist/affinda/{p-f9e7cf8f.entry.js → p-45f76ad4.entry.js} +2 -2
  36. package/dist/affinda/p-4fcb61d1.entry.js +2 -0
  37. package/dist/affinda/{p-2e5e4960.entry.js.map → p-4fcb61d1.entry.js.map} +1 -1
  38. package/dist/affinda/p-517543bd.entry.js +2 -0
  39. package/dist/affinda/{p-96df0106.entry.js.map → p-517543bd.entry.js.map} +1 -1
  40. package/dist/affinda/{p-c72cfcbd.entry.js → p-5591bc79.entry.js} +2 -2
  41. package/dist/affinda/{p-c74481bd.entry.js → p-6179957e.entry.js} +2 -2
  42. package/dist/affinda/{p-9e21b6c1.entry.js → p-62699653.entry.js} +2 -2
  43. package/dist/affinda/p-6a5fa86a.entry.js +2 -0
  44. package/dist/affinda/{p-68f1f661.entry.js.map → p-6a5fa86a.entry.js.map} +1 -1
  45. package/dist/affinda/p-76475b41.entry.js +2 -0
  46. package/dist/affinda/{p-331f9627.entry.js.map → p-76475b41.entry.js.map} +1 -1
  47. package/dist/affinda/p-78ff69a4.entry.js +2 -0
  48. package/dist/affinda/p-78ff69a4.entry.js.map +1 -0
  49. package/dist/affinda/{p-0b5bc045.entry.js → p-79e6fc73.entry.js} +2 -2
  50. package/dist/affinda/p-79e6fc73.entry.js.map +1 -0
  51. package/dist/affinda/{p-db9249e4.entry.js → p-7da3a28f.entry.js} +2 -2
  52. package/dist/affinda/{p-e7d8d909.entry.js → p-86a9ff3e.entry.js} +2 -2
  53. package/dist/affinda/p-9242c8d1.entry.js +2 -0
  54. package/dist/affinda/p-9242c8d1.entry.js.map +1 -0
  55. package/dist/affinda/p-933560e0.entry.js +2 -0
  56. package/dist/affinda/{p-16f808d5.entry.js.map → p-933560e0.entry.js.map} +1 -1
  57. package/dist/affinda/{p-e9bc1739.entry.js → p-a53d5549.entry.js} +2 -2
  58. package/dist/affinda/{p-02830771.entry.js → p-accd917e.entry.js} +2 -2
  59. package/dist/affinda/{p-cc4e73dc.entry.js → p-ad9b0eec.entry.js} +2 -2
  60. package/dist/affinda/p-b18767cf.entry.js +2 -0
  61. package/dist/affinda/{p-57eae3cd.entry.js.map → p-b18767cf.entry.js.map} +1 -1
  62. package/dist/affinda/p-b85e2bff.entry.js +2 -0
  63. package/dist/affinda/{p-1c32cfcb.entry.js.map → p-b85e2bff.entry.js.map} +1 -1
  64. package/dist/affinda/{p-d90366f6.entry.js → p-bb67cf12.entry.js} +2 -2
  65. package/dist/affinda/p-bb67cf12.entry.js.map +1 -0
  66. package/dist/affinda/{p-b10103f4.entry.js → p-c01eaa85.entry.js} +2 -2
  67. package/dist/affinda/p-c225ac8c.entry.js +2 -0
  68. package/dist/affinda/p-c225ac8c.entry.js.map +1 -0
  69. package/dist/affinda/{p-288c2656.entry.js → p-c3d7872c.entry.js} +2 -2
  70. package/dist/affinda/{p-af25dad7.entry.js → p-c51a2687.entry.js} +2 -2
  71. package/dist/affinda/{p-9de05d1d.entry.js → p-d28b0860.entry.js} +2 -2
  72. package/dist/affinda/p-d74a7ae9.entry.js +2 -0
  73. package/dist/affinda/{p-d47a77e2.entry.js → p-e2f555fc.entry.js} +2 -2
  74. package/dist/affinda/{p-e156a8bb.entry.js → p-e37fea2f.entry.js} +2 -2
  75. package/dist/affinda/{p-b56e9e2d.entry.js → p-ea02610f.entry.js} +2 -2
  76. package/dist/affinda/p-ea0ccbce.entry.js +2 -0
  77. package/dist/affinda/p-eebb5101.entry.js +2 -0
  78. package/dist/affinda/{p-8f528f9d.entry.js.map → p-eebb5101.entry.js.map} +1 -1
  79. package/dist/affinda/p-f1dd31bd.entry.js +2 -0
  80. package/dist/affinda/p-f1dd31bd.entry.js.map +1 -0
  81. package/dist/affinda/{p-080cf84f.entry.js → p-f4d2a07d.entry.js} +2 -2
  82. package/dist/affinda/{p-f7a13cd3.entry.js → p-f78dd237.entry.js} +2 -2
  83. package/dist/affinda/p-f8bdddf5.entry.js +2 -0
  84. package/dist/affinda/{p-b2338fab.entry.js.map → p-f8bdddf5.entry.js.map} +1 -1
  85. package/dist/cjs/af-accordion-item.cjs.entry.js +1 -27
  86. package/dist/cjs/af-accordion-item.entry.cjs.js.map +1 -1
  87. package/dist/cjs/af-accordion.cjs.entry.js +1 -1
  88. package/dist/cjs/af-button.cjs.entry.js +5 -4
  89. package/dist/cjs/af-button.entry.cjs.js.map +1 -1
  90. package/dist/cjs/af-card.cjs.entry.js +2 -2
  91. package/dist/cjs/af-card.entry.cjs.js.map +1 -1
  92. package/dist/cjs/af-center.cjs.entry.js +1 -1
  93. package/dist/cjs/af-client-carousel.cjs.entry.js +11 -1
  94. package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -1
  95. package/dist/cjs/af-contact-item.cjs.entry.js +1 -1
  96. package/dist/cjs/af-divider.cjs.entry.js +1 -1
  97. package/dist/cjs/af-feature-accordion.cjs.entry.js +2 -2
  98. package/dist/cjs/af-feature-grid.cjs.entry.js +1 -1
  99. package/dist/cjs/af-footer-column.cjs.entry.js +1 -1
  100. package/dist/cjs/af-footer-link.cjs.entry.js +1 -1
  101. package/dist/cjs/af-footer.cjs.entry.js +1 -1
  102. package/dist/cjs/af-grid.cjs.entry.js +2 -2
  103. package/dist/cjs/af-icon-box.cjs.entry.js +1 -1
  104. package/dist/cjs/af-icon-button.cjs.entry.js +1 -1
  105. package/dist/cjs/af-icon-button.entry.cjs.js.map +1 -1
  106. package/dist/cjs/af-icon-text.cjs.entry.js +1 -1
  107. package/dist/cjs/af-icon-text.entry.cjs.js.map +1 -1
  108. package/dist/cjs/af-illustrated-card.cjs.entry.js +1 -1
  109. package/dist/cjs/af-illustrated-card.entry.cjs.js.map +1 -1
  110. package/dist/cjs/af-image.cjs.entry.js +12 -2
  111. package/dist/cjs/af-image.entry.cjs.js.map +1 -1
  112. package/dist/cjs/af-in-page-banner.cjs.entry.js +2 -2
  113. package/dist/cjs/af-in-page-banner.entry.cjs.js.map +1 -1
  114. package/dist/cjs/af-inline.cjs.entry.js +1 -1
  115. package/dist/cjs/af-logo-well.cjs.entry.js +1 -1
  116. package/dist/cjs/af-nav-accordion-item.cjs.entry.js +2 -2
  117. package/dist/cjs/af-nav-accordion.cjs.entry.js +1 -1
  118. package/dist/cjs/af-nav-menu-nest.cjs.entry.js +1 -1
  119. package/dist/cjs/af-nav-menu.cjs.entry.js +1 -1
  120. package/dist/cjs/af-number-badge.cjs.entry.js +1 -1
  121. package/dist/cjs/af-progress-line.cjs.entry.js +2 -2
  122. package/dist/cjs/af-section.cjs.entry.js +3 -3
  123. package/dist/cjs/af-section.entry.cjs.js.map +1 -1
  124. package/dist/cjs/af-show.cjs.entry.js +1 -1
  125. package/dist/cjs/af-social-link.cjs.entry.js +1 -1
  126. package/dist/cjs/af-spacer.cjs.entry.js +1 -1
  127. package/dist/cjs/af-split-section.cjs.entry.js +2 -2
  128. package/dist/cjs/af-stack.cjs.entry.js +1 -1
  129. package/dist/cjs/af-stepper-step.cjs.entry.js +23 -0
  130. package/dist/cjs/af-stepper-step.entry.cjs.js.map +1 -0
  131. package/dist/cjs/af-stepper.cjs.entry.js +34 -0
  132. package/dist/cjs/af-stepper.entry.cjs.js.map +1 -0
  133. package/dist/cjs/af-tag.cjs.entry.js +7 -8
  134. package/dist/cjs/af-tag.entry.cjs.js.map +1 -1
  135. package/dist/cjs/af-testimonial-carousel.cjs.entry.js +1 -1
  136. package/dist/cjs/af-testimonial-stat.cjs.entry.js +1 -1
  137. package/dist/cjs/af-testimonial.cjs.entry.js +3 -3
  138. package/dist/cjs/af-testimonial.entry.cjs.js.map +1 -1
  139. package/dist/cjs/af-text-image-nest.cjs.entry.js +1 -1
  140. package/dist/cjs/af-text-image.cjs.entry.js +1 -1
  141. package/dist/cjs/af-text-image.entry.cjs.js.map +1 -1
  142. package/dist/cjs/af-theme-override.cjs.entry.js +2 -2
  143. package/dist/cjs/af-theme-override.entry.cjs.js.map +1 -1
  144. package/dist/cjs/af-typography-lockup.cjs.entry.js +21 -4
  145. package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
  146. package/dist/cjs/af-video-container.cjs.entry.js +1 -1
  147. package/dist/cjs/af-visually-hidden.cjs.entry.js +1 -1
  148. package/dist/cjs/affinda.cjs.js +1 -1
  149. package/dist/cjs/loader.cjs.js +1 -1
  150. package/dist/collection/collection-manifest.json +2 -0
  151. package/dist/collection/components/af-accordion/af-accordion.js +1 -1
  152. package/dist/collection/components/af-accordion-item/af-accordion-item.js +1 -27
  153. package/dist/collection/components/af-accordion-item/af-accordion-item.js.map +1 -1
  154. package/dist/collection/components/af-button/af-button.css +24 -24
  155. package/dist/collection/components/af-button/af-button.js +10 -9
  156. package/dist/collection/components/af-button/af-button.js.map +1 -1
  157. package/dist/collection/components/af-card/af-card.css +2 -2
  158. package/dist/collection/components/af-card/af-card.js +1 -1
  159. package/dist/collection/components/af-center/af-center.js +1 -1
  160. package/dist/collection/components/af-client-carousel/af-client-carousel.js +33 -2
  161. package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -1
  162. package/dist/collection/components/af-contact-item/af-contact-item.js +1 -1
  163. package/dist/collection/components/af-divider/af-divider.js +1 -1
  164. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +2 -2
  165. package/dist/collection/components/af-feature-grid/af-feature-grid.js +1 -1
  166. package/dist/collection/components/af-footer/af-footer.js +1 -1
  167. package/dist/collection/components/af-footer-column/af-footer-column.js +1 -1
  168. package/dist/collection/components/af-footer-link/af-footer-link.js +1 -1
  169. package/dist/collection/components/af-grid/af-grid.js +2 -2
  170. package/dist/collection/components/af-icon-box/af-icon-box.js +1 -1
  171. package/dist/collection/components/af-icon-button/af-icon-button.css +2 -2
  172. package/dist/collection/components/af-icon-text/af-icon-text.js +3 -3
  173. package/dist/collection/components/af-icon-text/af-icon-text.js.map +1 -1
  174. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +4 -3
  175. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +1 -1
  176. package/dist/collection/components/af-image/af-image.css +21 -4
  177. package/dist/collection/components/af-image/af-image.js +33 -1
  178. package/dist/collection/components/af-image/af-image.js.map +1 -1
  179. package/dist/collection/components/af-in-page-banner/af-in-page-banner.css +3 -3
  180. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js +11 -1
  181. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +1 -1
  182. package/dist/collection/components/af-inline/af-inline.js +1 -1
  183. package/dist/collection/components/af-logo-well/af-logo-well.js +1 -1
  184. package/dist/collection/components/af-nav-accordion/af-nav-accordion.js +1 -1
  185. package/dist/collection/components/af-nav-accordion-item/af-nav-accordion-item.js +2 -2
  186. package/dist/collection/components/af-nav-menu/af-nav-menu.js +1 -1
  187. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +1 -1
  188. package/dist/collection/components/af-number-badge/af-number-badge.js +3 -3
  189. package/dist/collection/components/af-progress-line/af-progress-line.js +2 -2
  190. package/dist/collection/components/af-section/af-section.css +15 -15
  191. package/dist/collection/components/af-section/af-section.js +2 -2
  192. package/dist/collection/components/af-show/af-show.js +1 -1
  193. package/dist/collection/components/af-social-link/af-social-link.js +1 -1
  194. package/dist/collection/components/af-spacer/af-spacer.js +1 -1
  195. package/dist/collection/components/af-split-section/af-split-section.js +2 -2
  196. package/dist/collection/components/af-stack/af-stack.js +1 -1
  197. package/dist/collection/components/af-stepper/af-stepper.css +54 -0
  198. package/dist/collection/components/af-stepper/af-stepper.js +83 -0
  199. package/dist/collection/components/af-stepper/af-stepper.js.map +1 -0
  200. package/dist/collection/components/af-stepper-step/af-stepper-step.css +85 -0
  201. package/dist/collection/components/af-stepper-step/af-stepper-step.js +60 -0
  202. package/dist/collection/components/af-stepper-step/af-stepper-step.js.map +1 -0
  203. package/dist/collection/components/af-tab/af-tab.js +1 -1
  204. package/dist/collection/components/af-tab-bar/af-tab-bar.js +2 -2
  205. package/dist/collection/components/af-tag/af-tag.css +41 -21
  206. package/dist/collection/components/af-tag/af-tag.js +18 -15
  207. package/dist/collection/components/af-tag/af-tag.js.map +1 -1
  208. package/dist/collection/components/af-testimonial/af-testimonial.css +28 -6
  209. package/dist/collection/components/af-testimonial/af-testimonial.js +14 -6
  210. package/dist/collection/components/af-testimonial/af-testimonial.js.map +1 -1
  211. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +1 -1
  212. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
  213. package/dist/collection/components/af-text-image/af-text-image.css +5 -3
  214. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +1 -1
  215. package/dist/collection/components/af-theme-override/af-theme-override.css +15 -15
  216. package/dist/collection/components/af-theme-override/af-theme-override.js +1 -1
  217. package/dist/collection/components/af-typography-lockup/af-typography-lockup.css +22 -4
  218. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +60 -3
  219. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +1 -1
  220. package/dist/collection/components/af-video-container/af-video-container.js +1 -1
  221. package/dist/collection/components/af-visually-hidden/af-visually-hidden.js +1 -1
  222. package/dist/components/af-accordion-item.js +1 -27
  223. package/dist/components/af-accordion-item.js.map +1 -1
  224. package/dist/components/af-accordion.js +1 -1
  225. package/dist/components/af-button.js +1 -1
  226. package/dist/components/af-card.js +1 -1
  227. package/dist/components/af-center.js +1 -1
  228. package/dist/components/af-client-carousel.js +13 -2
  229. package/dist/components/af-client-carousel.js.map +1 -1
  230. package/dist/components/af-contact-item.js +1 -1
  231. package/dist/components/af-divider.js +1 -1
  232. package/dist/components/af-feature-accordion.js +2 -2
  233. package/dist/components/af-feature-card.js +1 -1
  234. package/dist/components/af-feature-grid.js +2 -2
  235. package/dist/components/af-footer-column.js +1 -1
  236. package/dist/components/af-footer-link.js +1 -1
  237. package/dist/components/af-footer.js +1 -1
  238. package/dist/components/af-grid-callout.js +1 -1
  239. package/dist/components/af-grid.js +2 -2
  240. package/dist/components/af-icon-box.js +1 -1
  241. package/dist/components/af-icon-button.js +1 -1
  242. package/dist/components/af-icon-text.js +3 -3
  243. package/dist/components/af-icon-text.js.map +1 -1
  244. package/dist/components/af-illustrated-card.js +1 -1
  245. package/dist/components/af-image.js +1 -1
  246. package/dist/components/af-in-page-banner.js +3 -3
  247. package/dist/components/af-in-page-banner.js.map +1 -1
  248. package/dist/components/af-inline.js +1 -1
  249. package/dist/components/af-logo-well.js +1 -1
  250. package/dist/components/af-nav-accordion-item.js +2 -2
  251. package/dist/components/af-nav-accordion.js +1 -1
  252. package/dist/components/af-nav-menu-nest.js +1 -1
  253. package/dist/components/af-nav-menu.js +1 -1
  254. package/dist/components/af-number-badge.js +1 -1
  255. package/dist/components/af-progress-line.js +1 -1
  256. package/dist/components/af-section.js +3 -3
  257. package/dist/components/af-section.js.map +1 -1
  258. package/dist/components/af-show.js +1 -1
  259. package/dist/components/af-social-link.js +1 -1
  260. package/dist/components/af-spacer.js +1 -1
  261. package/dist/components/af-split-section.js +2 -2
  262. package/dist/components/af-stack.js +1 -1
  263. package/dist/components/af-stepper-step.d.ts +11 -0
  264. package/dist/components/af-stepper-step.js +44 -0
  265. package/dist/components/af-stepper-step.js.map +1 -0
  266. package/dist/components/af-stepper.d.ts +11 -0
  267. package/dist/components/af-stepper.js +55 -0
  268. package/dist/components/af-stepper.js.map +1 -0
  269. package/dist/components/af-tag.js +1 -1
  270. package/dist/components/af-testimonial-carousel.js +2 -2
  271. package/dist/components/af-testimonial-stat.js +1 -1
  272. package/dist/components/af-testimonial.js +9 -15
  273. package/dist/components/af-testimonial.js.map +1 -1
  274. package/dist/components/af-text-image-nest.js +1 -1
  275. package/dist/components/af-text-image.js +2 -2
  276. package/dist/components/af-text-image.js.map +1 -1
  277. package/dist/components/af-theme-override.js +2 -2
  278. package/dist/components/af-theme-override.js.map +1 -1
  279. package/dist/components/af-typography-lockup.js +1 -1
  280. package/dist/components/af-video-container.js +1 -1
  281. package/dist/components/af-visually-hidden.js +1 -1
  282. package/dist/components/index.js +6 -6
  283. package/dist/components/p-80hb0CR2.js +71 -0
  284. package/dist/components/p-80hb0CR2.js.map +1 -0
  285. package/dist/components/p-BHyABfs0.js +92 -0
  286. package/dist/components/p-BHyABfs0.js.map +1 -0
  287. package/dist/components/p-BIgPDyJK.js +103 -0
  288. package/dist/components/p-BIgPDyJK.js.map +1 -0
  289. package/dist/components/{p-C8_mFdv5.js → p-BfAQ7eko.js} +4 -4
  290. package/dist/components/p-BfAQ7eko.js.map +1 -0
  291. package/dist/components/{p-D66k2SSB.js → p-CFBeRDmV.js} +4 -4
  292. package/dist/components/{p-D66k2SSB.js.map → p-CFBeRDmV.js.map} +1 -1
  293. package/dist/components/p-CNtgySkk.js +48 -0
  294. package/dist/components/p-CNtgySkk.js.map +1 -0
  295. package/dist/components/{p-BUoRUEpQ.js → p-D_xTKF7j.js} +3 -3
  296. package/dist/components/{p-BUoRUEpQ.js.map → p-D_xTKF7j.js.map} +1 -1
  297. package/dist/components/{p-CnNV1GZE.js → p-DcJ8wKzl.js} +5 -5
  298. package/dist/components/p-DcJ8wKzl.js.map +1 -0
  299. package/dist/components/p-DnHD91HB.js +57 -0
  300. package/dist/components/p-DnHD91HB.js.map +1 -0
  301. package/dist/components/{p-WmKa3rDn.js → p-pudFjW3W.js} +4 -4
  302. package/dist/components/{p-WmKa3rDn.js.map → p-pudFjW3W.js.map} +1 -1
  303. package/dist/esm/af-accordion-item.entry.js +1 -27
  304. package/dist/esm/af-accordion-item.entry.js.map +1 -1
  305. package/dist/esm/af-accordion.entry.js +1 -1
  306. package/dist/esm/af-button.entry.js +5 -4
  307. package/dist/esm/af-button.entry.js.map +1 -1
  308. package/dist/esm/af-card.entry.js +2 -2
  309. package/dist/esm/af-card.entry.js.map +1 -1
  310. package/dist/esm/af-center.entry.js +1 -1
  311. package/dist/esm/af-client-carousel.entry.js +11 -1
  312. package/dist/esm/af-client-carousel.entry.js.map +1 -1
  313. package/dist/esm/af-contact-item.entry.js +1 -1
  314. package/dist/esm/af-divider.entry.js +1 -1
  315. package/dist/esm/af-feature-accordion.entry.js +2 -2
  316. package/dist/esm/af-feature-grid.entry.js +1 -1
  317. package/dist/esm/af-footer-column.entry.js +1 -1
  318. package/dist/esm/af-footer-link.entry.js +1 -1
  319. package/dist/esm/af-footer.entry.js +1 -1
  320. package/dist/esm/af-grid.entry.js +2 -2
  321. package/dist/esm/af-icon-box.entry.js +1 -1
  322. package/dist/esm/af-icon-button.entry.js +1 -1
  323. package/dist/esm/af-icon-button.entry.js.map +1 -1
  324. package/dist/esm/af-icon-text.entry.js +1 -1
  325. package/dist/esm/af-icon-text.entry.js.map +1 -1
  326. package/dist/esm/af-illustrated-card.entry.js +1 -1
  327. package/dist/esm/af-illustrated-card.entry.js.map +1 -1
  328. package/dist/esm/af-image.entry.js +12 -2
  329. package/dist/esm/af-image.entry.js.map +1 -1
  330. package/dist/esm/af-in-page-banner.entry.js +2 -2
  331. package/dist/esm/af-in-page-banner.entry.js.map +1 -1
  332. package/dist/esm/af-inline.entry.js +1 -1
  333. package/dist/esm/af-logo-well.entry.js +1 -1
  334. package/dist/esm/af-nav-accordion-item.entry.js +2 -2
  335. package/dist/esm/af-nav-accordion.entry.js +1 -1
  336. package/dist/esm/af-nav-menu-nest.entry.js +1 -1
  337. package/dist/esm/af-nav-menu.entry.js +1 -1
  338. package/dist/esm/af-number-badge.entry.js +1 -1
  339. package/dist/esm/af-progress-line.entry.js +2 -2
  340. package/dist/esm/af-section.entry.js +3 -3
  341. package/dist/esm/af-section.entry.js.map +1 -1
  342. package/dist/esm/af-show.entry.js +1 -1
  343. package/dist/esm/af-social-link.entry.js +1 -1
  344. package/dist/esm/af-spacer.entry.js +1 -1
  345. package/dist/esm/af-split-section.entry.js +2 -2
  346. package/dist/esm/af-stack.entry.js +1 -1
  347. package/dist/esm/af-stepper-step.entry.js +21 -0
  348. package/dist/esm/af-stepper-step.entry.js.map +1 -0
  349. package/dist/esm/af-stepper.entry.js +32 -0
  350. package/dist/esm/af-stepper.entry.js.map +1 -0
  351. package/dist/esm/af-tag.entry.js +7 -8
  352. package/dist/esm/af-tag.entry.js.map +1 -1
  353. package/dist/esm/af-testimonial-carousel.entry.js +1 -1
  354. package/dist/esm/af-testimonial-stat.entry.js +1 -1
  355. package/dist/esm/af-testimonial.entry.js +3 -3
  356. package/dist/esm/af-testimonial.entry.js.map +1 -1
  357. package/dist/esm/af-text-image-nest.entry.js +1 -1
  358. package/dist/esm/af-text-image.entry.js +1 -1
  359. package/dist/esm/af-text-image.entry.js.map +1 -1
  360. package/dist/esm/af-theme-override.entry.js +2 -2
  361. package/dist/esm/af-theme-override.entry.js.map +1 -1
  362. package/dist/esm/af-typography-lockup.entry.js +21 -4
  363. package/dist/esm/af-typography-lockup.entry.js.map +1 -1
  364. package/dist/esm/af-video-container.entry.js +1 -1
  365. package/dist/esm/af-visually-hidden.entry.js +1 -1
  366. package/dist/esm/affinda.js +1 -1
  367. package/dist/esm/loader.js +1 -1
  368. package/dist/types/components/af-button/af-button.d.ts +6 -5
  369. package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +11 -1
  370. package/dist/types/components/af-icon-text/af-icon-text.d.ts +2 -2
  371. package/dist/types/components/af-illustrated-card/af-illustrated-card.d.ts +3 -2
  372. package/dist/types/components/af-image/af-image.d.ts +10 -0
  373. package/dist/types/components/af-in-page-banner/af-in-page-banner.d.ts +10 -0
  374. package/dist/types/components/af-stepper/af-stepper.d.ts +30 -0
  375. package/dist/types/components/af-stepper-step/af-stepper-step.d.ts +18 -0
  376. package/dist/types/components/af-tag/af-tag.d.ts +10 -7
  377. package/dist/types/components/af-testimonial/af-testimonial.d.ts +11 -2
  378. package/dist/types/components/af-typography-lockup/af-typography-lockup.d.ts +15 -0
  379. package/dist/types/components.d.ts +268 -38
  380. package/package.json +4 -4
  381. package/dist/affinda/p-0b5bc045.entry.js.map +0 -1
  382. package/dist/affinda/p-16f808d5.entry.js +0 -2
  383. package/dist/affinda/p-1c32cfcb.entry.js +0 -2
  384. package/dist/affinda/p-2e5e4960.entry.js +0 -2
  385. package/dist/affinda/p-331f9627.entry.js +0 -2
  386. package/dist/affinda/p-57eae3cd.entry.js +0 -2
  387. package/dist/affinda/p-6294b6d1.entry.js +0 -2
  388. package/dist/affinda/p-6294b6d1.entry.js.map +0 -1
  389. package/dist/affinda/p-63314e14.entry.js +0 -2
  390. package/dist/affinda/p-68f1f661.entry.js +0 -2
  391. package/dist/affinda/p-7792cd53.entry.js +0 -2
  392. package/dist/affinda/p-7792cd53.entry.js.map +0 -1
  393. package/dist/affinda/p-8f24dfe3.entry.js +0 -2
  394. package/dist/affinda/p-8f528f9d.entry.js +0 -2
  395. package/dist/affinda/p-920e6d30.entry.js +0 -2
  396. package/dist/affinda/p-96df0106.entry.js +0 -2
  397. package/dist/affinda/p-b0d668d0.entry.js +0 -2
  398. package/dist/affinda/p-b0d668d0.entry.js.map +0 -1
  399. package/dist/affinda/p-b2338fab.entry.js +0 -2
  400. package/dist/affinda/p-bd7170d7.entry.js +0 -2
  401. package/dist/affinda/p-d6e55455.entry.js +0 -2
  402. package/dist/affinda/p-d90366f6.entry.js.map +0 -1
  403. package/dist/affinda/p-fefe9597.entry.js +0 -2
  404. package/dist/components/p-Bi5ytUXg.js +0 -58
  405. package/dist/components/p-Bi5ytUXg.js.map +0 -1
  406. package/dist/components/p-BvIMp8pz.js +0 -37
  407. package/dist/components/p-BvIMp8pz.js.map +0 -1
  408. package/dist/components/p-C8_mFdv5.js.map +0 -1
  409. package/dist/components/p-CnNV1GZE.js.map +0 -1
  410. package/dist/components/p-DBnL9UHx.js +0 -91
  411. package/dist/components/p-DBnL9UHx.js.map +0 -1
  412. package/dist/components/p-JepBVz99.js +0 -71
  413. package/dist/components/p-JepBVz99.js.map +0 -1
  414. package/dist/components/p-hOnulRmz.js +0 -84
  415. package/dist/components/p-hOnulRmz.js.map +0 -1
  416. /package/dist/affinda/{p-01993cc8.entry.js.map → p-0fb16377.entry.js.map} +0 -0
  417. /package/dist/affinda/{p-3d2fb635.entry.js.map → p-1a87dd1c.entry.js.map} +0 -0
  418. /package/dist/affinda/{p-bd7170d7.entry.js.map → p-202bac33.entry.js.map} +0 -0
  419. /package/dist/affinda/{p-adacb8c4.entry.js.map → p-2e8682a0.entry.js.map} +0 -0
  420. /package/dist/affinda/{p-266af3e1.entry.js.map → p-3642589b.entry.js.map} +0 -0
  421. /package/dist/affinda/{p-4c5f92a9.entry.js.map → p-391bb085.entry.js.map} +0 -0
  422. /package/dist/affinda/{p-d51c4b1b.entry.js.map → p-3fc2a3dc.entry.js.map} +0 -0
  423. /package/dist/affinda/{p-f9e7cf8f.entry.js.map → p-45f76ad4.entry.js.map} +0 -0
  424. /package/dist/affinda/{p-c72cfcbd.entry.js.map → p-5591bc79.entry.js.map} +0 -0
  425. /package/dist/affinda/{p-c74481bd.entry.js.map → p-6179957e.entry.js.map} +0 -0
  426. /package/dist/affinda/{p-9e21b6c1.entry.js.map → p-62699653.entry.js.map} +0 -0
  427. /package/dist/affinda/{p-db9249e4.entry.js.map → p-7da3a28f.entry.js.map} +0 -0
  428. /package/dist/affinda/{p-e7d8d909.entry.js.map → p-86a9ff3e.entry.js.map} +0 -0
  429. /package/dist/affinda/{p-e9bc1739.entry.js.map → p-a53d5549.entry.js.map} +0 -0
  430. /package/dist/affinda/{p-02830771.entry.js.map → p-accd917e.entry.js.map} +0 -0
  431. /package/dist/affinda/{p-cc4e73dc.entry.js.map → p-ad9b0eec.entry.js.map} +0 -0
  432. /package/dist/affinda/{p-b10103f4.entry.js.map → p-c01eaa85.entry.js.map} +0 -0
  433. /package/dist/affinda/{p-288c2656.entry.js.map → p-c3d7872c.entry.js.map} +0 -0
  434. /package/dist/affinda/{p-af25dad7.entry.js.map → p-c51a2687.entry.js.map} +0 -0
  435. /package/dist/affinda/{p-9de05d1d.entry.js.map → p-d28b0860.entry.js.map} +0 -0
  436. /package/dist/affinda/{p-d6e55455.entry.js.map → p-d74a7ae9.entry.js.map} +0 -0
  437. /package/dist/affinda/{p-d47a77e2.entry.js.map → p-e2f555fc.entry.js.map} +0 -0
  438. /package/dist/affinda/{p-e156a8bb.entry.js.map → p-e37fea2f.entry.js.map} +0 -0
  439. /package/dist/affinda/{p-b56e9e2d.entry.js.map → p-ea02610f.entry.js.map} +0 -0
  440. /package/dist/affinda/{p-fefe9597.entry.js.map → p-ea0ccbce.entry.js.map} +0 -0
  441. /package/dist/affinda/{p-080cf84f.entry.js.map → p-f4d2a07d.entry.js.map} +0 -0
  442. /package/dist/affinda/{p-f7a13cd3.entry.js.map → p-f78dd237.entry.js.map} +0 -0
@@ -7,21 +7,21 @@ export { A as AfAspectRatio } from './p-BHKA-yEm.js';
7
7
  export { A as AfNavItem } from './p-DkvJiyn0.js';
8
8
  export { A as AfNavbar } from './p-nwZ2iAi9.js';
9
9
  export { A as AfLogo } from './p-CLmCtN_R.js';
10
- export { A as AfButton } from './p-DBnL9UHx.js';
11
- export { A as AfIconButton } from './p-JepBVz99.js';
10
+ export { A as AfButton } from './p-BHyABfs0.js';
11
+ export { A as AfIconButton } from './p-80hb0CR2.js';
12
12
  export { A as AfButtonGroup } from './p-CAYG3IzP.js';
13
- export { A as AfTypographyLockup } from './p-hOnulRmz.js';
13
+ export { A as AfTypographyLockup } from './p-BIgPDyJK.js';
14
14
  export { A as AfCheckbox } from './p-Dd7Lt2QL.js';
15
15
  export { A as AfRadio } from './p-CUSad8vm.js';
16
16
  export { A as AfSwitch } from './p-DUQu3N38.js';
17
17
  export { A as AfFieldset } from './p-zDoPXonz.js';
18
18
  export { A as AfInput } from './p-Dvo_cxk-.js';
19
19
  export { A as AfTextarea } from './p-Dwhi37rN.js';
20
- export { A as AfTag } from './p-Bi5ytUXg.js';
20
+ export { A as AfTag } from './p-DnHD91HB.js';
21
21
  export { A as AfTab } from './p-DZ6UMG8G.js';
22
22
  export { A as AfTabBar } from './p-Ws-qvw9w.js';
23
- export { A as AfFeatureCard } from './p-WmKa3rDn.js';
24
- export { A as AfIllustratedCard } from './p-CnNV1GZE.js';
23
+ export { A as AfFeatureCard } from './p-pudFjW3W.js';
24
+ export { A as AfIllustratedCard } from './p-DcJ8wKzl.js';
25
25
  //# sourceMappingURL=index.js.map
26
26
 
27
27
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,71 @@
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
2
+
3
+ const afIconButtonCss = ":host{display:inline-block}:host([variant=\"secondary\"]){color:var(--af-button-secondary-icon, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)))}:host([variant=\"primary\"]){color:var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343B))}:host([variant=\"tertiary\"]){color:var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343B))}.icon-button{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;transition:all 0.2s ease;border:1px solid transparent;box-sizing:border-box;flex-shrink:0;text-decoration:none;padding:0}.size-large{width:72px;height:72px;padding:24px}.size-large .icon{width:24px;height:24px}.size-medium{width:48px;height:48px;padding:12px}.size-medium .icon{width:24px;height:24px}.size-small{width:36px;height:36px;padding:8px}.size-small .icon{width:20px;height:20px}.icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:inherit}.icon ::slotted(*){width:100%;height:100%;color:inherit}.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #A6FFFB));border-color:var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343B));color:var(--af-button-primary-text, var(--colour-brand-inkwell, #14343B))}.variant-primary:hover:not(.disabled){background:var(--af-button-primary-bg-hover, #95e6e2)}.variant-primary:active:not(.disabled){background:var(--af-button-primary-bg-hover, #95e6e2)}.variant-secondary{background:var(--af-button-secondary-bg, transparent);border-color:var(--af-button-secondary-stroke, currentColor);color:var(--af-button-secondary-text, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)))}.variant-secondary:hover:not(.disabled){background:var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1))}.variant-secondary:active:not(.disabled){background:var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1))}.variant-tertiary{background:transparent;border-color:transparent;color:var(--af-button-ghost-text, var(--colour-brand-inkwell, #14343B))}.variant-tertiary:hover:not(.disabled){opacity:0.8}.variant-tertiary:active:not(.disabled){opacity:0.6}.disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}button.icon-button{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer}button.icon-button.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #A6FFFB));border:1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343B))}button.icon-button.variant-secondary{background:var(--af-button-secondary-bg, transparent);border:1px solid var(--af-button-secondary-stroke, currentColor);color:var(--af-button-secondary-text, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)))}button.icon-button.variant-tertiary{background:transparent;border:1px solid transparent}";
4
+
5
+ const AfIconButton = /*@__PURE__*/ proxyCustomElement(class AfIconButton extends H {
6
+ constructor(registerHost) {
7
+ super();
8
+ if (registerHost !== false) {
9
+ this.__registerHost();
10
+ }
11
+ this.__attachShadow();
12
+ /**
13
+ * The visual variant of the button.
14
+ * - `primary` - Main CTA with filled ice background
15
+ * - `secondary` - Supporting action with white background
16
+ * - `tertiary` - Minimal style with transparent background
17
+ */
18
+ this.variant = 'primary';
19
+ /**
20
+ * The size of the button
21
+ */
22
+ this.size = 'medium';
23
+ /**
24
+ * Whether the button is disabled
25
+ */
26
+ this.disabled = false;
27
+ /**
28
+ * Button type (when not using href)
29
+ */
30
+ this.type = 'button';
31
+ }
32
+ render() {
33
+ const classes = {
34
+ 'icon-button': true,
35
+ [`variant-${this.variant}`]: true,
36
+ [`size-${this.size}`]: true,
37
+ 'disabled': this.disabled
38
+ };
39
+ const content = (h("span", { class: "icon" }, h("slot", null)));
40
+ if (this.href && !this.disabled) {
41
+ return (h(Host, null, h("a", { href: this.href, class: classes, "aria-label": this.ariaLabel }, content)));
42
+ }
43
+ return (h(Host, null, h("button", { type: this.type, disabled: this.disabled, class: classes, "aria-label": this.ariaLabel }, content)));
44
+ }
45
+ static get style() { return afIconButtonCss; }
46
+ }, [257, "af-icon-button", {
47
+ "variant": [513],
48
+ "size": [1],
49
+ "disabled": [4],
50
+ "href": [1],
51
+ "type": [1],
52
+ "ariaLabel": [1, "aria-label"]
53
+ }]);
54
+ function defineCustomElement() {
55
+ if (typeof customElements === "undefined") {
56
+ return;
57
+ }
58
+ const components = ["af-icon-button"];
59
+ components.forEach(tagName => { switch (tagName) {
60
+ case "af-icon-button":
61
+ if (!customElements.get(tagName)) {
62
+ customElements.define(tagName, AfIconButton);
63
+ }
64
+ break;
65
+ } });
66
+ }
67
+
68
+ export { AfIconButton as A, defineCustomElement as d };
69
+ //# sourceMappingURL=p-80hb0CR2.js.map
70
+
71
+ //# sourceMappingURL=p-80hb0CR2.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-80hb0CR2.js","mappings":";;AAAA,MAAM,eAAe,GAAG,gzFAAgzF;;MCO3zF,YAAY,iBAAAA,kBAAA,CAAA,MAAA,YAAA,SAAAC,CAAA,CAAA;AALzB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;;;;AAKG;AACsB,QAAA,IAAO,CAAA,OAAA,GAAyC,SAAS;AAElF;;AAEG;AACK,QAAA,IAAI,CAAA,IAAA,GAAiC,QAAQ;AAErD;;AAEG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AAOjC;;AAEG;AACK,QAAA,IAAI,CAAA,IAAA,GAAkC,QAAQ;AAuCvD;IAhCC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,CAAC,WAAW,IAAI,CAAC,OAAO,CAAE,CAAA,GAAG,IAAI;AACjC,YAAA,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;YAC3B,UAAU,EAAE,IAAI,CAAC;SAClB;QAED,MAAM,OAAO,IACX,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,MAAM,EAAA,EAChB,CAAa,CAAA,MAAA,EAAA,IAAA,CAAA,CACR,CACR;QAED,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC/B,YAAA,QACE,EAAC,IAAI,EAAA,IAAA,EACH,CAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAc,YAAA,EAAA,IAAI,CAAC,SAAS,EAAA,EAC3D,OAAO,CACN,CACC;;AAIX,QAAA,QACE,EAAC,IAAI,EAAA,IAAA,EACH,CAAQ,CAAA,QAAA,EAAA,EAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAc,YAAA,EAAA,IAAI,CAAC,SAAS,IACzF,OAAO,CACD,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-icon-button/af-icon-button.css?tag=af-icon-button&encapsulation=shadow","src/components/af-icon-button/af-icon-button.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n/* Set color on host for slotted content inheritance */\n:host([variant=\"secondary\"]) {\n color: var(--af-button-secondary-icon, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)));\n}\n\n:host([variant=\"primary\"]) {\n color: var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343B));\n}\n\n:host([variant=\"tertiary\"]) {\n color: var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343B));\n}\n\n.icon-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 1px solid transparent;\n box-sizing: border-box;\n flex-shrink: 0;\n text-decoration: none;\n padding: 0;\n}\n\n/* Size variants */\n.size-large {\n width: 72px;\n height: 72px;\n padding: 24px;\n}\n\n.size-large .icon {\n width: 24px;\n height: 24px;\n}\n\n.size-medium {\n width: 48px;\n height: 48px;\n padding: 12px;\n}\n\n.size-medium .icon {\n width: 24px;\n height: 24px;\n}\n\n.size-small {\n width: 36px;\n height: 36px;\n padding: 8px;\n}\n\n.size-small .icon {\n width: 20px;\n height: 20px;\n}\n\n/* Icon slot - inherits color from parent */\n.icon {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n color: inherit;\n}\n\n.icon ::slotted(*) {\n width: 100%;\n height: 100%;\n color: inherit;\n}\n\n/* Primary variant (ice background) */\n.variant-primary {\n background: var(--af-button-primary-bg, var(--colour-brand-ice, #A6FFFB));\n border-color: var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343B));\n color: var(--af-button-primary-text, var(--colour-brand-inkwell, #14343B));\n}\n\n.variant-primary:hover:not(.disabled) {\n background: var(--af-button-primary-bg-hover, #95e6e2);\n}\n\n.variant-primary:active:not(.disabled) {\n background: var(--af-button-primary-bg-hover, #95e6e2);\n}\n\n/* Secondary variant (outlined) */\n.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border-color: var(--af-button-secondary-stroke, currentColor);\n color: var(--af-button-secondary-text, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)));\n}\n\n.variant-secondary:hover:not(.disabled) {\n background: var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1));\n}\n\n.variant-secondary:active:not(.disabled) {\n background: var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1));\n}\n\n/* Tertiary variant (minimal, no border) */\n.variant-tertiary {\n background: transparent;\n border-color: transparent;\n color: var(--af-button-ghost-text, var(--colour-brand-inkwell, #14343B));\n}\n\n.variant-tertiary:hover:not(.disabled) {\n opacity: 0.8;\n}\n\n.variant-tertiary:active:not(.disabled) {\n opacity: 0.6;\n}\n\n/* Disabled state */\n.disabled {\n opacity: 0.4;\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* Remove default button styles */\nbutton.icon-button {\n background: none;\n border: none;\n padding: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n}\n\nbutton.icon-button.variant-primary {\n background: var(--af-button-primary-bg, var(--colour-brand-ice, #A6FFFB));\n border: 1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343B));\n}\n\nbutton.icon-button.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border: 1px solid var(--af-button-secondary-stroke, currentColor);\n color: var(--af-button-secondary-text, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)));\n}\n\nbutton.icon-button.variant-tertiary {\n background: transparent;\n border: 1px solid transparent;\n}\n","import { Component, h, Prop, Host } from '@stencil/core';\n\n@Component({\n tag: 'af-icon-button',\n styleUrl: 'af-icon-button.css',\n shadow: true\n})\nexport class AfIconButton {\n /**\n * The visual variant of the button.\n * - `primary` - Main CTA with filled ice background\n * - `secondary` - Supporting action with white background\n * - `tertiary` - Minimal style with transparent background\n */\n @Prop({ reflect: true }) variant: 'primary' | 'secondary' | 'tertiary' = 'primary';\n\n /**\n * The size of the button\n */\n @Prop() size: 'large' | 'medium' | 'small' = 'medium';\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Optional href to render as a link\n */\n @Prop() href?: string;\n\n /**\n * Button type (when not using href)\n */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * Accessible label for screen readers\n */\n @Prop() ariaLabel!: string;\n\n render() {\n const classes = {\n 'icon-button': true,\n [`variant-${this.variant}`]: true,\n [`size-${this.size}`]: true,\n 'disabled': this.disabled\n };\n\n const content = (\n <span class=\"icon\">\n <slot></slot>\n </span>\n );\n\n if (this.href && !this.disabled) {\n return (\n <Host>\n <a href={this.href} class={classes} aria-label={this.ariaLabel}>\n {content}\n </a>\n </Host>\n );\n }\n\n return (\n <Host>\n <button type={this.type} disabled={this.disabled} class={classes} aria-label={this.ariaLabel}>\n {content}\n </button>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,92 @@
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
2
+
3
+ const afButtonCss = ":host{display:inline-block}:host([variant=\"primary\"]){color:var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343B))}:host([variant=\"secondary\"]){color:var(--af-button-secondary-icon, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)))}:host([variant=\"ghost\"]){color:var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343B))}:host([full-width]),:host(.full-width){display:block;width:100%}:host([full-width]) .button,:host(.full-width) .button{width:100%}.button{display:inline-flex;align-items:center;justify-content:center;gap:0;border-radius:9999px;font-family:var(--typography-primaryfont, 'NeuSans', sans-serif);font-weight:500;text-decoration:none;cursor:pointer;transition:all 0.2s ease;border:1px solid transparent;box-sizing:border-box;white-space:nowrap;width:var(--af-button-width, auto)}.size-default{padding:12px 24px;font-size:17px;line-height:20px}.size-thin{padding:8px 16px;font-size:14px;line-height:16px}.icon-left,.icon-right{display:none;align-items:center;justify-content:center;flex-shrink:0}.icon-left.has-content,.icon-right.has-content{display:flex}.size-default .icon-left,.size-default .icon-right{width:24px;height:24px}.size-thin .icon-left,.size-thin .icon-right{width:20px;height:20px}.size-default .icon-left.has-content{margin-right:12px}.size-default .icon-right.has-content{margin-left:12px}.size-thin .icon-left.has-content{margin-right:8px}.size-thin .icon-right.has-content{margin-left:8px}.label{flex:0 1 auto;display:flex;align-items:center;justify-content:center}.size-default .label{height:24px}.size-thin .label{height:20px}.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));border-color:var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b));color:var(--af-button-primary-text, var(--colour-brand-inkwell, #14343b))}.variant-primary .icon-left,.variant-primary .icon-right{color:var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343b))}.variant-primary:hover:not(.disabled){background:var(--af-button-primary-bg-hover, #95E6E2);border-color:var(--af-button-primary-stroke, #14343B)}.variant-primary:focus:not(.disabled),.variant-primary:focus-visible:not(.disabled){background:var(--af-button-primary-bg, #A6FFFB);border-color:var(--af-button-primary-stroke, #14343B);box-shadow:0 0 0 4px var(--af-background-base, #FFF), 0 0 0 5px var(--af-button-primary-stroke, #14343B);outline:none}.variant-primary:active:not(.disabled){background:var(--af-button-primary-bg-hover, #95E6E2)}.variant-secondary{background:var(--af-button-secondary-bg, transparent);border-color:var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));color:var(--af-button-secondary-text, var(--colour-brand-inkwell, #14343b))}.variant-secondary .icon-left,.variant-secondary .icon-right{color:var(--af-button-secondary-icon, var(--colour-brand-inkwell, #14343b))}.variant-secondary:hover:not(.disabled){background:var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1));border-color:var(--af-button-secondary-stroke, currentColor)}.variant-secondary:focus:not(.disabled),.variant-secondary:focus-visible:not(.disabled){background:var(--af-background-base, #FFF);border-color:var(--af-button-secondary-stroke, currentColor);box-shadow:0 0 0 4px var(--af-background-base, #FFF), 0 0 0 5px var(--af-button-secondary-stroke, currentColor);outline:none}.variant-secondary:active:not(.disabled){background:var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1))}.variant-ghost{background:transparent;border-color:transparent;border-radius:0;color:var(--af-button-ghost-text, var(--colour-brand-inkwell, #14343b));padding-left:0;padding-right:0}.variant-ghost .label{border-bottom:2px solid var(--af-button-ghost-stroke, var(--colour-brand-soft-clay, #B09670))}.variant-ghost .icon-left,.variant-ghost .icon-right{color:var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343b))}.variant-ghost:hover:not(.disabled){opacity:0.8}.variant-ghost:focus:not(.disabled),.variant-ghost:focus-visible:not(.disabled){outline:none}.variant-ghost:focus-visible:not(.disabled) .label{box-shadow:0 4px 0 0 var(--af-button-ghost-stroke, var(--colour-brand-soft-clay, #B09670))}.variant-ghost:active:not(.disabled){opacity:0.6}.disabled{cursor:not-allowed;pointer-events:none}.variant-primary.disabled{border:1px solid var(--af-button-primary-stroke, #14343B);background:var(--af-button-primary-bg, #A6FFFB);opacity:0.6}.variant-secondary.disabled{border:1px solid var(--af-button-secondary-stroke, currentColor);opacity:0.6}.variant-ghost.disabled{opacity:0.6}button.button{font:inherit;cursor:pointer}button.button.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));border:1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b))}button.button.variant-secondary{background:var(--af-button-secondary-bg, transparent);border:1px solid var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b))}button.button.variant-ghost{background:transparent;border:none}a.button{text-decoration:none;color:inherit}a.button.variant-primary{background:var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));border:1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b))}a.button.variant-secondary{background:var(--af-button-secondary-bg, transparent);border:1px solid var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b))}a.button.variant-ghost{background:transparent;border:none}";
4
+
5
+ const AfButton = /*@__PURE__*/ proxyCustomElement(class AfButton extends H {
6
+ constructor(registerHost) {
7
+ super();
8
+ if (registerHost !== false) {
9
+ this.__registerHost();
10
+ }
11
+ this.__attachShadow();
12
+ /**
13
+ * The visual variant of the button.
14
+ * - `primary` - Main CTA with filled background (use sparingly, 1-2 per view)
15
+ * - `secondary` - Supporting action with outlined style
16
+ * - `ghost` - Link-style with themed underline on the label; commonly paired
17
+ * with a right-pointing icon. Matches Webflow's "button ghost" variant.
18
+ */
19
+ this.variant = 'primary';
20
+ /**
21
+ * The size of the button.
22
+ * - `default` - Standard size for primary CTAs (12/24px padding)
23
+ * - `thin` - Compact inline/secondary size (8/16px padding)
24
+ */
25
+ this.size = 'default';
26
+ /**
27
+ * Whether the button is disabled
28
+ */
29
+ this.disabled = false;
30
+ /**
31
+ * Button type (when not using href)
32
+ */
33
+ this.type = 'button';
34
+ this.hasIconLeft = false;
35
+ this.hasIconRight = false;
36
+ this.handleSlotChange = (slotName) => (event) => {
37
+ const slot = event.target;
38
+ const hasContent = slot.assignedNodes().length > 0;
39
+ if (slotName === 'icon-left') {
40
+ this.hasIconLeft = hasContent;
41
+ }
42
+ else {
43
+ this.hasIconRight = hasContent;
44
+ }
45
+ };
46
+ }
47
+ render() {
48
+ const classes = {
49
+ 'button': true,
50
+ [`variant-${this.variant}`]: true,
51
+ [`size-${this.size}`]: true,
52
+ 'disabled': this.disabled
53
+ };
54
+ const content = [
55
+ h("span", { class: { 'icon-left': true, 'has-content': this.hasIconLeft } }, h("slot", { name: "icon-left", onSlotchange: this.handleSlotChange('icon-left') })),
56
+ h("span", { class: "label" }, h("slot", null)),
57
+ h("span", { class: { 'icon-right': true, 'has-content': this.hasIconRight } }, h("slot", { name: "icon-right", onSlotchange: this.handleSlotChange('icon-right') }))
58
+ ];
59
+ // Render as anchor if href is provided (and not disabled)
60
+ if (this.href && !this.disabled) {
61
+ return (h(Host, null, h("a", { href: this.href, class: classes }, content)));
62
+ }
63
+ return (h(Host, null, h("button", { type: this.type, disabled: this.disabled, class: classes }, content)));
64
+ }
65
+ static get style() { return afButtonCss; }
66
+ }, [257, "af-button", {
67
+ "variant": [513],
68
+ "size": [1],
69
+ "disabled": [4],
70
+ "type": [1],
71
+ "href": [1],
72
+ "hasIconLeft": [32],
73
+ "hasIconRight": [32]
74
+ }]);
75
+ function defineCustomElement() {
76
+ if (typeof customElements === "undefined") {
77
+ return;
78
+ }
79
+ const components = ["af-button"];
80
+ components.forEach(tagName => { switch (tagName) {
81
+ case "af-button":
82
+ if (!customElements.get(tagName)) {
83
+ customElements.define(tagName, AfButton);
84
+ }
85
+ break;
86
+ } });
87
+ }
88
+
89
+ export { AfButton as A, defineCustomElement as d };
90
+ //# sourceMappingURL=p-BHyABfs0.js.map
91
+
92
+ //# sourceMappingURL=p-BHyABfs0.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-BHyABfs0.js","mappings":";;AAAA,MAAM,WAAW,GAAG,s5KAAs5K;;MCgB75K,QAAQ,iBAAAA,kBAAA,CAAA,MAAA,QAAA,SAAAC,CAAA,CAAA;AALrB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;;;;;AAMG;AACsB,QAAA,IAAO,CAAA,OAAA,GAAsC,SAAS;AAE/E;;;;AAIG;AACK,QAAA,IAAI,CAAA,IAAA,GAAuB,SAAS;AAE5C;;AAEG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;AAEjC;;AAEG;AACK,QAAA,IAAI,CAAA,IAAA,GAAkC,QAAQ;AAO7C,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK;AAC5B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK;QAE9B,IAAgB,CAAA,gBAAA,GAAG,CAAC,QAAoC,KAAK,CAAC,KAAY,KAAI;AACpF,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAyB;YAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC;AAClD,YAAA,IAAI,QAAQ,KAAK,WAAW,EAAE;AAC5B,gBAAA,IAAI,CAAC,WAAW,GAAG,UAAU;;iBACxB;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,UAAU;;AAElC,SAAC;AAyCF;IAvCC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,CAAC,WAAW,IAAI,CAAC,OAAO,CAAE,CAAA,GAAG,IAAI;AACjC,YAAA,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;YAC3B,UAAU,EAAE,IAAI,CAAC;SAClB;AAED,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,WAAW,EAAE,EAAA,EACjE,CAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAC,WAAW,EAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,GAAS,CAC3E;AACP,YAAA,CAAM,CAAA,MAAA,EAAA,EAAA,KAAK,EAAC,OAAO,EAAA,EACjB,CAAA,CAAA,MAAA,EAAA,IAAA,CAAa,CACR;AACP,YAAA,CAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,YAAY,EAAE,EAAA,EACnE,CAAA,CAAA,MAAA,EAAA,EAAM,IAAI,EAAC,YAAY,EAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAS;SAErF;;QAGD,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC/B,QACE,EAAC,IAAI,EAAA,IAAA,EACH,CAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAC/B,EAAA,OAAO,CACN,CACC;;AAIX,QAAA,QACE,EAAC,IAAI,EAAA,IAAA,EACH,CAAQ,CAAA,QAAA,EAAA,EAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAA,EAC7D,OAAO,CACD,CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-button/af-button.css?tag=af-button&encapsulation=shadow","src/components/af-button/af-button.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n/* Set color on host for slotted content (icons) inheritance */\n:host([variant=\"primary\"]) {\n color: var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343B));\n}\n\n:host([variant=\"secondary\"]) {\n color: var(--af-button-secondary-icon, var(--af-typography-body-dark, var(--colour-brand-inkwell, #14343B)));\n}\n\n:host([variant=\"ghost\"]) {\n color: var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343B));\n}\n\n/* Full-width mode - when host is display: block */\n:host([full-width]),\n:host(.full-width) {\n display: block;\n width: 100%;\n}\n\n:host([full-width]) .button,\n:host(.full-width) .button {\n width: 100%;\n}\n\n.button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 0;\n border-radius: 9999px;\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 500;\n text-decoration: none;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 1px solid transparent;\n box-sizing: border-box;\n white-space: nowrap;\n /* Allow width to be controlled from outside via CSS custom property */\n width: var(--af-button-width, auto);\n}\n\n/* Size variants */\n.size-default {\n padding: 12px 24px;\n font-size: 17px;\n line-height: 20px;\n}\n\n.size-thin {\n padding: 8px 16px;\n font-size: 14px;\n line-height: 16px;\n}\n\n/* Icon slots - only show when they have slotted content */\n.icon-left,\n.icon-right {\n display: none;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n\n.icon-left.has-content,\n.icon-right.has-content {\n display: flex;\n}\n\n.size-default .icon-left,\n.size-default .icon-right {\n width: 24px;\n height: 24px;\n}\n\n.size-thin .icon-left,\n.size-thin .icon-right {\n width: 20px;\n height: 20px;\n}\n\n/* Add spacing between icon and label only when icon is present */\n.size-default .icon-left.has-content {\n margin-right: 12px;\n}\n\n.size-default .icon-right.has-content {\n margin-left: 12px;\n}\n\n.size-thin .icon-left.has-content {\n margin-right: 8px;\n}\n\n.size-thin .icon-right.has-content {\n margin-left: 8px;\n}\n\n/* Label styling */\n.label {\n flex: 0 1 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.size-default .label {\n height: 24px;\n}\n\n.size-thin .label {\n height: 20px;\n}\n\n/* ==========================================================================\n Primary Button\n Filled background with ice color, inkwell text\n ========================================================================== */\n\n.variant-primary {\n background: var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));\n border-color: var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b));\n color: var(--af-button-primary-text, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-primary .icon-left,\n.variant-primary .icon-right {\n color: var(--af-button-primary-icon, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-primary:hover:not(.disabled) {\n background: var(--af-button-primary-bg-hover, #95E6E2);\n border-color: var(--af-button-primary-stroke, #14343B);\n}\n\n.variant-primary:focus:not(.disabled),\n.variant-primary:focus-visible:not(.disabled) {\n background: var(--af-button-primary-bg, #A6FFFB);\n border-color: var(--af-button-primary-stroke, #14343B);\n box-shadow: 0 0 0 4px var(--af-background-base, #FFF), 0 0 0 5px var(--af-button-primary-stroke, #14343B);\n outline: none;\n}\n\n.variant-primary:active:not(.disabled) {\n background: var(--af-button-primary-bg-hover, #95E6E2);\n}\n\n/* ==========================================================================\n Secondary Button\n Transparent background with visible border\n ========================================================================== */\n\n.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border-color: var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));\n color: var(--af-button-secondary-text, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-secondary .icon-left,\n.variant-secondary .icon-right {\n color: var(--af-button-secondary-icon, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-secondary:hover:not(.disabled) {\n background: var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1));\n border-color: var(--af-button-secondary-stroke, currentColor);\n}\n\n.variant-secondary:focus:not(.disabled),\n.variant-secondary:focus-visible:not(.disabled) {\n background: var(--af-background-base, #FFF);\n border-color: var(--af-button-secondary-stroke, currentColor);\n box-shadow: 0 0 0 4px var(--af-background-base, #FFF), 0 0 0 5px var(--af-button-secondary-stroke, currentColor);\n outline: none;\n}\n\n.variant-secondary:active:not(.disabled) {\n background: var(--af-button-secondary-bg-hover, rgba(128, 128, 128, 0.1));\n}\n\n/* ==========================================================================\n Tertiary Button\n Text-only link style with underline, no border or background\n ========================================================================== */\n\n.variant-ghost {\n background: transparent;\n border-color: transparent;\n border-radius: 0;\n color: var(--af-button-ghost-text, var(--colour-brand-inkwell, #14343b));\n padding-left: 0;\n padding-right: 0;\n}\n\n.variant-ghost .label {\n border-bottom: 2px solid var(--af-button-ghost-stroke, var(--colour-brand-soft-clay, #B09670));\n}\n\n.variant-ghost .icon-left,\n.variant-ghost .icon-right {\n color: var(--af-button-ghost-icon, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-ghost:hover:not(.disabled) {\n opacity: 0.8;\n}\n\n.variant-ghost:focus:not(.disabled),\n.variant-ghost:focus-visible:not(.disabled) {\n outline: none;\n}\n\n.variant-ghost:focus-visible:not(.disabled) .label {\n box-shadow: 0 4px 0 0 var(--af-button-ghost-stroke, var(--colour-brand-soft-clay, #B09670));\n}\n\n.variant-ghost:active:not(.disabled) {\n opacity: 0.6;\n}\n\n/* ==========================================================================\n Disabled states\n ========================================================================== */\n\n.disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.variant-primary.disabled {\n border: 1px solid var(--af-button-primary-stroke, #14343B);\n background: var(--af-button-primary-bg, #A6FFFB);\n opacity: 0.6;\n}\n\n.variant-secondary.disabled {\n border: 1px solid var(--af-button-secondary-stroke, currentColor);\n opacity: 0.6;\n}\n\n.variant-ghost.disabled {\n opacity: 0.6;\n}\n\n/* ==========================================================================\n Reset button element styles\n ========================================================================== */\n\nbutton.button {\n font: inherit;\n cursor: pointer;\n}\n\nbutton.button.variant-primary {\n background: var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));\n border: 1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n\nbutton.button.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border: 1px solid var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n\nbutton.button.variant-ghost {\n background: transparent;\n border: none;\n}\n\n/* ==========================================================================\n Reset anchor element styles (when using href prop)\n ========================================================================== */\n\na.button {\n text-decoration: none;\n color: inherit;\n}\n\na.button.variant-primary {\n background: var(--af-button-primary-bg, var(--colour-brand-ice, #a6fffb));\n border: 1px solid var(--af-button-primary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n\na.button.variant-secondary {\n background: var(--af-button-secondary-bg, transparent);\n border: 1px solid var(--af-button-secondary-stroke, var(--colour-brand-inkwell, #14343b));\n}\n\na.button.variant-ghost {\n background: transparent;\n border: none;\n}\n","import { Component, h, Prop, Host, State } from '@stencil/core';\n\n/**\n * Button component that inherits colors from theme context.\n * Colors are determined by the parent theme (af-section, af-card, etc.)\n * via CSS custom properties.\n * \n * @slot - Button label text\n * @slot icon-left - Icon displayed before the label\n * @slot icon-right - Icon displayed after the label\n */\n@Component({\n tag: 'af-button',\n styleUrl: 'af-button.css',\n shadow: true\n})\nexport class AfButton {\n /**\n * The visual variant of the button.\n * - `primary` - Main CTA with filled background (use sparingly, 1-2 per view)\n * - `secondary` - Supporting action with outlined style\n * - `ghost` - Link-style with themed underline on the label; commonly paired\n * with a right-pointing icon. Matches Webflow's \"button ghost\" variant.\n */\n @Prop({ reflect: true }) variant: 'primary' | 'secondary' | 'ghost' = 'primary';\n\n /**\n * The size of the button.\n * - `default` - Standard size for primary CTAs (12/24px padding)\n * - `thin` - Compact inline/secondary size (8/16px padding)\n */\n @Prop() size: 'default' | 'thin' = 'default';\n\n /**\n * Whether the button is disabled\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Button type (when not using href)\n */\n @Prop() type: 'button' | 'submit' | 'reset' = 'button';\n\n /**\n * Optional href to render as a link instead of a button\n */\n @Prop() href?: string;\n\n @State() hasIconLeft: boolean = false;\n @State() hasIconRight: boolean = false;\n\n private handleSlotChange = (slotName: 'icon-left' | 'icon-right') => (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n const hasContent = slot.assignedNodes().length > 0;\n if (slotName === 'icon-left') {\n this.hasIconLeft = hasContent;\n } else {\n this.hasIconRight = hasContent;\n }\n };\n\n render() {\n const classes = {\n 'button': true,\n [`variant-${this.variant}`]: true,\n [`size-${this.size}`]: true,\n 'disabled': this.disabled\n };\n\n const content = [\n <span class={{ 'icon-left': true, 'has-content': this.hasIconLeft }}>\n <slot name=\"icon-left\" onSlotchange={this.handleSlotChange('icon-left')}></slot>\n </span>,\n <span class=\"label\">\n <slot></slot>\n </span>,\n <span class={{ 'icon-right': true, 'has-content': this.hasIconRight }}>\n <slot name=\"icon-right\" onSlotchange={this.handleSlotChange('icon-right')}></slot>\n </span>\n ];\n\n // Render as anchor if href is provided (and not disabled)\n if (this.href && !this.disabled) {\n return (\n <Host>\n <a href={this.href} class={classes}>\n {content}\n </a>\n </Host>\n );\n }\n\n return (\n <Host>\n <button type={this.type} disabled={this.disabled} class={classes}>\n {content}\n </button>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,103 @@
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
2
+
3
+ const afTypographyLockupCss = ":host{display:block}.lockup{display:flex;flex-direction:column}.breakpoint-desktop.heading-1.lockup{gap:var(--space-6, 24px)}.breakpoint-mobile.heading-1.lockup{gap:var(--space-5, 20px)}.breakpoint-desktop.heading-2.lockup,.breakpoint-desktop.heading-3.lockup{gap:var(--space-4, 16px)}.breakpoint-mobile.heading-2.lockup{gap:var(--space-4, 16px)}.breakpoint-mobile.heading-3.lockup,.breakpoint-desktop.heading-4.lockup,.breakpoint-desktop.heading-5.lockup{gap:var(--space-3, 12px)}.breakpoint-mobile.heading-4.lockup,.breakpoint-mobile.heading-5.lockup{gap:var(--space-2, 8px)}.text-left{align-items:flex-start}.text-center{align-items:center}.text-right{align-items:flex-end}.text-justify{align-items:stretch}.align-left{text-align:left;--af-text-align:left}.align-center{text-align:center;--af-text-align:center}.align-right{text-align:right;--af-text-align:right}.align-justify{text-align:justify;--af-text-align:justify}.copy{display:flex;flex-direction:column;width:100%;max-width:840px}.breakpoint-desktop.heading-1 .copy{gap:var(--space-6, 24px)}.breakpoint-mobile.heading-1 .copy{gap:var(--space-5, 20px)}.breakpoint-desktop.heading-2 .copy,.breakpoint-desktop.heading-3 .copy{gap:var(--space-4, 16px)}.breakpoint-mobile.heading-2 .copy{gap:var(--space-4, 16px)}.breakpoint-mobile.heading-3 .copy,.breakpoint-desktop.heading-4 .copy,.breakpoint-desktop.heading-5 .copy{gap:var(--space-3, 12px)}.breakpoint-mobile.heading-4 .copy,.breakpoint-mobile.heading-5 .copy{gap:var(--space-2, 8px)}.heading{font-family:var(--typography-headingfont, 'NeuSans', sans-serif);font-weight:var(--font-weight-regular, 400);color:var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B));line-height:var(--line-height-heading-tight, 1);letter-spacing:var(--letter-spacing-heading, -0.02em);white-space:normal}.breakpoint-desktop.heading-1 .heading{font-size:var(--font-size-heading-1-desktop, 56px)}.breakpoint-desktop.heading-2 .heading{font-size:var(--font-size-heading-2-desktop, 44px)}.breakpoint-desktop.heading-3 .heading{font-size:var(--font-size-heading-3-desktop, 34px)}.breakpoint-desktop.heading-4 .heading{font-size:var(--font-size-heading-4-desktop, 24px);line-height:var(--line-height-heading-relaxed, 1.2)}.breakpoint-desktop.heading-5 .heading{font-size:var(--font-size-heading-5-desktop, 20px);line-height:var(--line-height-heading-relaxed, 1.2)}.breakpoint-mobile.heading-1 .heading{font-size:var(--font-size-heading-1-mobile, 38px)}.breakpoint-mobile.heading-2 .heading{font-size:var(--font-size-heading-2-mobile, 32px)}.breakpoint-mobile.heading-3 .heading{font-size:var(--font-size-heading-3-mobile, 25px)}.breakpoint-mobile.heading-4 .heading{font-size:var(--font-size-heading-4-mobile, 20px);line-height:var(--line-height-heading-normal, 1.1)}.breakpoint-mobile.heading-5 .heading{font-size:var(--font-size-heading-5-mobile, 18px);line-height:var(--line-height-heading-normal, 1.1)}.description{font-family:var(--typography-bodyfont, 'NeuSans', sans-serif);font-size:var(--font-size-body-large, 18px);font-weight:var(--font-weight-regular, 400);line-height:var(--line-height-body-large, 26px);color:var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F));white-space:normal}.heading.heading-color-primary{color:var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B))}.heading.heading-color-secondary{color:var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670))}.description.description-color-default{color:var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F))}.description.description-color-secondary{color:var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670))}.breakpoint-mobile.heading-3 .description,.breakpoint-desktop.heading-4 .description,.breakpoint-mobile.heading-4 .description,.breakpoint-desktop.heading-5 .description,.breakpoint-mobile.heading-5 .description{font-size:var(--font-size-body-medium, 16px);line-height:var(--line-height-body-medium, 24px)}.description:empty{display:none}.buttons{display:flex;flex-direction:row;gap:var(--space-3, 12px)}.buttons:empty{display:none}.layout-horizontal .buttons{align-items:center}.text-left.layout-horizontal{flex-direction:row;align-items:center;gap:var(--space-4, 16px)}.text-left.layout-horizontal .copy{flex:1 0 0;max-width:950px}.text-left.layout-horizontal.heading-3 .copy,.text-left.layout-horizontal.heading-4 .copy{max-width:840px}.text-left.layout-horizontal .buttons{flex-shrink:0}.layout-vertical .buttons{align-items:flex-start}.buttons.align-left{justify-content:flex-start}.buttons.align-center{justify-content:center}.buttons.align-right{justify-content:flex-end}.buttons.align-justify{justify-content:space-between}.breakpoint-mobile .buttons{flex-direction:column;align-items:stretch}.breakpoint-mobile .buttons.align-center{align-items:center}.breakpoint-mobile .buttons.align-right{align-items:flex-end}.breakpoint-mobile .buttons.align-left{align-items:flex-start}.text-center .copy{max-width:840px}::slotted(*){margin:0}";
4
+
5
+ const AfTypographyLockup = /*@__PURE__*/ proxyCustomElement(class AfTypographyLockup extends H {
6
+ constructor(registerHost) {
7
+ super();
8
+ if (registerHost !== false) {
9
+ this.__registerHost();
10
+ }
11
+ this.__attachShadow();
12
+ /**
13
+ * The heading size (1-5, where 1 is largest)
14
+ */
15
+ this.headingSize = 2;
16
+ /**
17
+ * The breakpoint for responsive typography
18
+ */
19
+ this.breakpoint = 'desktop';
20
+ /**
21
+ * Text alignment for the entire lockup (heading and description).
22
+ * Can be overridden individually with headingAlignment and descriptionAlignment.
23
+ */
24
+ this.textAlignment = 'left';
25
+ /**
26
+ * Button layout direction (horizontal or vertical stacking)
27
+ */
28
+ this.buttonLayout = 'vertical';
29
+ /**
30
+ * Heading colour variant. Matches the Webflow pattern of `h1.primary` vs
31
+ * `h1.secondary`, where "secondary" renders in the theme's accent/heading-
32
+ * secondary colour (soft-clay on most themes).
33
+ * - `primary` (default) - uses `--af-typography-heading-primary`
34
+ * - `secondary` - uses `--af-typography-heading-secondary`
35
+ */
36
+ this.headingColor = 'primary';
37
+ /**
38
+ * Description colour variant. Same pattern as `headingColor`; useful for
39
+ * hero-style lockups where the description is rendered in the accent colour.
40
+ * - `default` (default) - uses `--af-typography-body-default`
41
+ * - `secondary` - uses `--af-typography-heading-secondary`
42
+ */
43
+ this.descriptionColor = 'default';
44
+ }
45
+ render() {
46
+ const effectiveHeadingAlignment = this.headingAlignment ?? this.textAlignment;
47
+ const effectiveDescriptionAlignment = this.descriptionAlignment ?? this.textAlignment;
48
+ const effectiveButtonsAlignment = this.buttonsAlignment ?? this.textAlignment;
49
+ const containerClasses = {
50
+ 'lockup': true,
51
+ [`text-${this.textAlignment}`]: true,
52
+ [`layout-${this.buttonLayout}`]: true,
53
+ [`heading-${this.headingSize}`]: true,
54
+ [`breakpoint-${this.breakpoint}`]: true
55
+ };
56
+ const headingClasses = {
57
+ 'heading': true,
58
+ [`align-${effectiveHeadingAlignment}`]: true,
59
+ [`heading-color-${this.headingColor}`]: true
60
+ };
61
+ const descriptionClasses = {
62
+ 'description': true,
63
+ [`align-${effectiveDescriptionAlignment}`]: true,
64
+ [`description-color-${this.descriptionColor}`]: true
65
+ };
66
+ const buttonsClasses = {
67
+ 'buttons': true,
68
+ [`align-${effectiveButtonsAlignment}`]: true
69
+ };
70
+ const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};
71
+ return (h(Host, { key: 'e27de1c33a4f7b9e28c1a2045fc858d2b9bd9253' }, h("div", { key: '0fc659232e499590465bcafb7d72caa6319ad962', class: containerClasses }, h("div", { key: 'c21ef0bbf92217bd988263f0b2e2483ed4e00421', class: "copy", style: copyStyle }, h("div", { key: '13f847be028122f4462c44f2ee8dd05b261c93a0', class: headingClasses, part: "heading" }, h("slot", { key: '2a9f921c75a2cb4e90ba3c3f10e9444ee74437e9' })), h("div", { key: 'aaa6c2bb8d8e186d6d1c05b2a72ee74ed806994a', class: descriptionClasses, part: "body" }, h("slot", { key: '435caeb349e749edb1fe02e66614c7f94c8ca1a5', name: "description" }))), h("div", { key: '21bf7d348b950564d41e2f3cb6a827463edc1d77', class: buttonsClasses, part: "buttons" }, h("slot", { key: 'b92d0e35e21f3f2f7e41e29439388652435c636b', name: "buttons" })))));
72
+ }
73
+ static get style() { return afTypographyLockupCss; }
74
+ }, [257, "af-typography-lockup", {
75
+ "headingSize": [2, "heading-size"],
76
+ "breakpoint": [1],
77
+ "textAlignment": [1, "text-alignment"],
78
+ "headingAlignment": [1, "heading-alignment"],
79
+ "descriptionAlignment": [1, "description-alignment"],
80
+ "buttonLayout": [1, "button-layout"],
81
+ "buttonsAlignment": [1, "buttons-alignment"],
82
+ "maxWidth": [2, "max-width"],
83
+ "headingColor": [1, "heading-color"],
84
+ "descriptionColor": [1, "description-color"]
85
+ }]);
86
+ function defineCustomElement() {
87
+ if (typeof customElements === "undefined") {
88
+ return;
89
+ }
90
+ const components = ["af-typography-lockup"];
91
+ components.forEach(tagName => { switch (tagName) {
92
+ case "af-typography-lockup":
93
+ if (!customElements.get(tagName)) {
94
+ customElements.define(tagName, AfTypographyLockup);
95
+ }
96
+ break;
97
+ } });
98
+ }
99
+
100
+ export { AfTypographyLockup as A, defineCustomElement as d };
101
+ //# sourceMappingURL=p-BIgPDyJK.js.map
102
+
103
+ //# sourceMappingURL=p-BIgPDyJK.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-BIgPDyJK.js","mappings":";;AAAA,MAAM,qBAAqB,GAAG,09JAA09J;;MCS3+J,kBAAkB,iBAAAA,kBAAA,CAAA,MAAA,kBAAA,SAAAC,CAAA,CAAA;AAL/B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;AAEG;AACK,QAAA,IAAW,CAAA,WAAA,GAAsB,CAAC;AAE1C;;AAEG;AACK,QAAA,IAAU,CAAA,UAAA,GAAyB,SAAS;AAEpD;;;AAGG;AACK,QAAA,IAAa,CAAA,aAAA,GAAc,MAAM;AAYzC;;AAEG;AACK,QAAA,IAAY,CAAA,YAAA,GAA8B,UAAU;AAY5D;;;;;;AAMG;AACK,QAAA,IAAY,CAAA,YAAA,GAA4B,SAAS;AAEzD;;;;;AAKG;AACK,QAAA,IAAgB,CAAA,gBAAA,GAA4B,SAAS;AAoD9D;IAlDC,MAAM,GAAA;QACJ,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa;QAC7E,MAAM,6BAA6B,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,aAAa;QACrF,MAAM,yBAAyB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa;AAE7E,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,CAAC,QAAQ,IAAI,CAAC,aAAa,CAAE,CAAA,GAAG,IAAI;AACpC,YAAA,CAAC,UAAU,IAAI,CAAC,YAAY,CAAE,CAAA,GAAG,IAAI;AACrC,YAAA,CAAC,WAAW,IAAI,CAAC,WAAW,CAAE,CAAA,GAAG,IAAI;AACrC,YAAA,CAAC,cAAc,IAAI,CAAC,UAAU,CAAE,CAAA,GAAG;SACpC;AAED,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,CAAC,CAAS,MAAA,EAAA,yBAAyB,CAAE,CAAA,GAAG,IAAI;AAC5C,YAAA,CAAC,iBAAiB,IAAI,CAAC,YAAY,CAAE,CAAA,GAAG;SACzC;AAED,QAAA,MAAM,kBAAkB,GAAG;AACzB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,CAAC,CAAS,MAAA,EAAA,6BAA6B,CAAE,CAAA,GAAG,IAAI;AAChD,YAAA,CAAC,qBAAqB,IAAI,CAAC,gBAAgB,CAAE,CAAA,GAAG;SACjD;AAED,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,CAAC,CAAS,MAAA,EAAA,yBAAyB,CAAE,CAAA,GAAG;SACzC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,QAAQ,EAAE,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,EAAA,CAAI,EAAE,GAAG,EAAE;AAEzE,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,gBAAgB,EAAA,EAC1B,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,SAAS,EAAA,EAChC,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,cAAc,EAAE,IAAI,EAAC,SAAS,EAAA,EACxC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,EACN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAC,MAAM,EAAA,EACzC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,aAAa,EAAA,CAAQ,CAC5B,CACF,EACN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,cAAc,EAAE,IAAI,EAAC,SAAS,EAAA,EACxC,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,SAAS,EAAA,CAAQ,CACxB,CACF,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-typography-lockup/af-typography-lockup.css?tag=af-typography-lockup&encapsulation=shadow","src/components/af-typography-lockup/af-typography-lockup.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.lockup {\n display: flex;\n flex-direction: column;\n}\n\n/* Lockup gap variations (between copy and buttons) - matches copy internal gap */\n/* Heading 1 desktop: 24px gap */\n.breakpoint-desktop.heading-1.lockup {\n gap: var(--space-6, 24px);\n}\n\n/* Heading 1 mobile: 20px gap */\n.breakpoint-mobile.heading-1.lockup {\n gap: var(--space-5, 20px);\n}\n\n/* Heading 2, 3 desktop: 16px gap */\n.breakpoint-desktop.heading-2.lockup,\n.breakpoint-desktop.heading-3.lockup {\n gap: var(--space-4, 16px);\n}\n\n/* Heading 2 mobile: 16px gap */\n.breakpoint-mobile.heading-2.lockup {\n gap: var(--space-4, 16px);\n}\n\n/* Heading 3 mobile, 4 desktop, 5 desktop: 12px gap */\n.breakpoint-mobile.heading-3.lockup,\n.breakpoint-desktop.heading-4.lockup,\n.breakpoint-desktop.heading-5.lockup {\n gap: var(--space-3, 12px);\n}\n\n/* Heading 4 mobile, 5 mobile: 8px gap */\n.breakpoint-mobile.heading-4.lockup,\n.breakpoint-mobile.heading-5.lockup {\n gap: var(--space-2, 8px);\n}\n\n/* Container alignment (affects flexbox positioning) */\n.text-left {\n align-items: flex-start;\n}\n\n.text-center {\n align-items: center;\n}\n\n.text-right {\n align-items: flex-end;\n}\n\n.text-justify {\n align-items: stretch;\n}\n\n/* Individual text alignment classes */\n.align-left {\n text-align: left;\n --af-text-align: left;\n}\n\n.align-center {\n text-align: center;\n --af-text-align: center;\n}\n\n.align-right {\n text-align: right;\n --af-text-align: right;\n}\n\n.align-justify {\n text-align: justify;\n --af-text-align: justify;\n}\n\n/* Copy section - base styles */\n.copy {\n display: flex;\n flex-direction: column;\n width: 100%;\n max-width: 840px;\n}\n\n/* Copy gap variations based on heading size and breakpoint */\n/* Heading 1 desktop: 24px gap */\n.breakpoint-desktop.heading-1 .copy {\n gap: var(--space-6, 24px);\n}\n\n/* Heading 1 mobile: 20px gap */\n.breakpoint-mobile.heading-1 .copy {\n gap: var(--space-5, 20px);\n}\n\n/* Heading 2, 3 desktop: 16px gap */\n.breakpoint-desktop.heading-2 .copy,\n.breakpoint-desktop.heading-3 .copy {\n gap: var(--space-4, 16px);\n}\n\n/* Heading 2 mobile: 16px gap */\n.breakpoint-mobile.heading-2 .copy {\n gap: var(--space-4, 16px);\n}\n\n/* Heading 3 mobile, 4 desktop, 5 desktop: 12px gap */\n.breakpoint-mobile.heading-3 .copy,\n.breakpoint-desktop.heading-4 .copy,\n.breakpoint-desktop.heading-5 .copy {\n gap: var(--space-3, 12px);\n}\n\n/* Heading 4 mobile, 5 mobile: 8px gap */\n.breakpoint-mobile.heading-4 .copy,\n.breakpoint-mobile.heading-5 .copy {\n gap: var(--space-2, 8px);\n}\n\n/* Heading styles - font-weight 400 (regular) matches Webflow's NeuSans usage */\n.heading {\n font-family: var(--typography-headingfont, 'NeuSans', sans-serif);\n font-weight: var(--font-weight-regular, 400);\n color: var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B));\n line-height: var(--line-height-heading-tight, 1);\n letter-spacing: var(--letter-spacing-heading, -0.02em);\n white-space: normal;\n}\n\n/* Desktop heading sizes */\n.breakpoint-desktop.heading-1 .heading {\n font-size: var(--font-size-heading-1-desktop, 56px);\n}\n\n.breakpoint-desktop.heading-2 .heading {\n font-size: var(--font-size-heading-2-desktop, 44px);\n}\n\n.breakpoint-desktop.heading-3 .heading {\n font-size: var(--font-size-heading-3-desktop, 34px);\n}\n\n.breakpoint-desktop.heading-4 .heading {\n font-size: var(--font-size-heading-4-desktop, 24px);\n line-height: var(--line-height-heading-relaxed, 1.2);\n}\n\n.breakpoint-desktop.heading-5 .heading {\n font-size: var(--font-size-heading-5-desktop, 20px);\n line-height: var(--line-height-heading-relaxed, 1.2);\n}\n\n/* Mobile heading sizes */\n.breakpoint-mobile.heading-1 .heading {\n font-size: var(--font-size-heading-1-mobile, 38px);\n}\n\n.breakpoint-mobile.heading-2 .heading {\n font-size: var(--font-size-heading-2-mobile, 32px);\n}\n\n.breakpoint-mobile.heading-3 .heading {\n font-size: var(--font-size-heading-3-mobile, 25px);\n}\n\n.breakpoint-mobile.heading-4 .heading {\n font-size: var(--font-size-heading-4-mobile, 20px);\n line-height: var(--line-height-heading-normal, 1.1);\n}\n\n.breakpoint-mobile.heading-5 .heading {\n font-size: var(--font-size-heading-5-mobile, 18px);\n line-height: var(--line-height-heading-normal, 1.1);\n}\n\n/* Description/body text - default (body/large) */\n.description {\n font-family: var(--typography-bodyfont, 'NeuSans', sans-serif);\n font-size: var(--font-size-body-large, 18px);\n font-weight: var(--font-weight-regular, 400);\n line-height: var(--line-height-body-large, 26px);\n color: var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F));\n white-space: normal;\n}\n\n/* Heading colour variants — matches Webflow's h1.primary / h1.secondary pattern */\n.heading.heading-color-primary {\n color: var(--af-typography-heading-primary, var(--colour-typography-heading-primary, #14343B));\n}\n\n.heading.heading-color-secondary {\n color: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670));\n}\n\n/* Description colour variants */\n.description.description-color-default {\n color: var(--af-typography-body-default, var(--colour-typography-body-default, #2B484F));\n}\n\n.description.description-color-secondary {\n color: var(--af-typography-heading-secondary, var(--colour-brand-soft-clay, #B09670));\n}\n\n/* Description text size variations - smaller for heading 3 mobile, 4, and 5 */\n.breakpoint-mobile.heading-3 .description,\n.breakpoint-desktop.heading-4 .description,\n.breakpoint-mobile.heading-4 .description,\n.breakpoint-desktop.heading-5 .description,\n.breakpoint-mobile.heading-5 .description {\n font-size: var(--font-size-body-medium, 16px);\n line-height: var(--line-height-body-medium, 24px);\n}\n\n.description:empty {\n display: none;\n}\n\n/* Buttons section */\n.buttons {\n display: flex;\n flex-direction: row;\n gap: var(--space-3, 12px);\n}\n\n.buttons:empty {\n display: none;\n}\n\n/* Button layout - horizontal (inline with copy) */\n.layout-horizontal .buttons {\n align-items: center;\n}\n\n.text-left.layout-horizontal {\n flex-direction: row;\n align-items: center;\n gap: var(--space-4, 16px);\n}\n\n.text-left.layout-horizontal .copy {\n flex: 1 0 0;\n max-width: 950px;\n}\n\n/* Heading 3, 4 horizontal: different max-width */\n.text-left.layout-horizontal.heading-3 .copy,\n.text-left.layout-horizontal.heading-4 .copy {\n max-width: 840px;\n}\n\n.text-left.layout-horizontal .buttons {\n flex-shrink: 0;\n}\n\n/* Button layout - vertical (stacked below copy) */\n.layout-vertical .buttons {\n align-items: flex-start;\n}\n\n/* Button position alignment */\n.buttons.align-left {\n justify-content: flex-start;\n}\n\n.buttons.align-center {\n justify-content: center;\n}\n\n.buttons.align-right {\n justify-content: flex-end;\n}\n\n.buttons.align-justify {\n justify-content: space-between;\n}\n\n/* Mobile button stacking - buttons stack vertically on mobile */\n.breakpoint-mobile .buttons {\n flex-direction: column;\n align-items: stretch;\n}\n\n.breakpoint-mobile .buttons.align-center {\n align-items: center;\n}\n\n.breakpoint-mobile .buttons.align-right {\n align-items: flex-end;\n}\n\n.breakpoint-mobile .buttons.align-left {\n align-items: flex-start;\n}\n\n/* Max width constraints for centered layouts */\n.text-center .copy {\n max-width: 840px;\n}\n\n/* Slot content styling */\n::slotted(*) {\n margin: 0;\n}\n","import { Component, h, Prop, Host } from '@stencil/core';\n\ntype TextAlign = 'left' | 'center' | 'right' | 'justify';\n\n@Component({\n tag: 'af-typography-lockup',\n styleUrl: 'af-typography-lockup.css',\n shadow: true\n})\nexport class AfTypographyLockup {\n /**\n * The heading size (1-5, where 1 is largest)\n */\n @Prop() headingSize: 1 | 2 | 3 | 4 | 5 = 2;\n\n /**\n * The breakpoint for responsive typography\n */\n @Prop() breakpoint: 'desktop' | 'mobile' = 'desktop';\n\n /**\n * Text alignment for the entire lockup (heading and description).\n * Can be overridden individually with headingAlignment and descriptionAlignment.\n */\n @Prop() textAlignment: TextAlign = 'left';\n\n /**\n * Heading text alignment. Falls back to textAlignment if not specified.\n */\n @Prop() headingAlignment?: TextAlign;\n\n /**\n * Description text alignment. Falls back to textAlignment if not specified.\n */\n @Prop() descriptionAlignment?: TextAlign;\n\n /**\n * Button layout direction (horizontal or vertical stacking)\n */\n @Prop() buttonLayout: 'horizontal' | 'vertical' = 'vertical';\n\n /**\n * Buttons position alignment. Falls back to textAlignment if not specified.\n */\n @Prop() buttonsAlignment?: TextAlign;\n\n /**\n * Maximum width for the copy section (in pixels)\n */\n @Prop() maxWidth?: number;\n\n /**\n * Heading colour variant. Matches the Webflow pattern of `h1.primary` vs\n * `h1.secondary`, where \"secondary\" renders in the theme's accent/heading-\n * secondary colour (soft-clay on most themes).\n * - `primary` (default) - uses `--af-typography-heading-primary`\n * - `secondary` - uses `--af-typography-heading-secondary`\n */\n @Prop() headingColor: 'primary' | 'secondary' = 'primary';\n\n /**\n * Description colour variant. Same pattern as `headingColor`; useful for\n * hero-style lockups where the description is rendered in the accent colour.\n * - `default` (default) - uses `--af-typography-body-default`\n * - `secondary` - uses `--af-typography-heading-secondary`\n */\n @Prop() descriptionColor: 'default' | 'secondary' = 'default';\n\n render() {\n const effectiveHeadingAlignment = this.headingAlignment ?? this.textAlignment;\n const effectiveDescriptionAlignment = this.descriptionAlignment ?? this.textAlignment;\n const effectiveButtonsAlignment = this.buttonsAlignment ?? this.textAlignment;\n\n const containerClasses = {\n 'lockup': true,\n [`text-${this.textAlignment}`]: true,\n [`layout-${this.buttonLayout}`]: true,\n [`heading-${this.headingSize}`]: true,\n [`breakpoint-${this.breakpoint}`]: true\n };\n\n const headingClasses = {\n 'heading': true,\n [`align-${effectiveHeadingAlignment}`]: true,\n [`heading-color-${this.headingColor}`]: true\n };\n\n const descriptionClasses = {\n 'description': true,\n [`align-${effectiveDescriptionAlignment}`]: true,\n [`description-color-${this.descriptionColor}`]: true\n };\n\n const buttonsClasses = {\n 'buttons': true,\n [`align-${effectiveButtonsAlignment}`]: true\n };\n\n const copyStyle = this.maxWidth ? { maxWidth: `${this.maxWidth}px` } : {};\n\n return (\n <Host>\n <div class={containerClasses}>\n <div class=\"copy\" style={copyStyle}>\n <div class={headingClasses} part=\"heading\">\n <slot></slot>\n </div>\n <div class={descriptionClasses} part=\"body\">\n <slot name=\"description\"></slot>\n </div>\n </div>\n <div class={buttonsClasses} part=\"buttons\">\n <slot name=\"buttons\"></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,6 +1,6 @@
1
1
  import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
2
2
 
3
- const afCardCss = ".sc-af-card-h{display:block;width:100%}[stretch].sc-af-card-h{display:flex;flex-direction:column;height:100%}[stretch].sc-af-card-h .card.sc-af-card{flex:1 1 auto}[stretch].sc-af-card-h .card__content.sc-af-card{flex:1 1 auto}.card.sc-af-card{border-radius:var(--border-radius-card-level-1, 32px);overflow:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box}.card.theme-white.sc-af-card{background-color:var(--colour-brand-white, #ffffff);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-mistgreen-200, #e8eeed)}.card.theme-white-ivory.sc-af-card{background-color:var(--colour-brand-ivory-paper, #fff9ee);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-ivory-200, #ffefcc)}.card.theme-inkwell.sc-af-card{background-color:var(--colour-brand-inkwell, #14343b);--af-typography-heading-primary:var(--colour-brand-mist-green, #c6d5d1);--af-typography-body-default:var(--colour-inkwell-100, #d0d6d8);--af-background-level-1:var(--colour-inkwell-450, #203e45);--af-button-secondary-text:var(--colour-brand-white, #ffffff);--af-button-secondary-stroke:var(--colour-brand-white, #ffffff);--af-button-tertiary-text:var(--colour-brand-white, #ffffff);--af-button-tertiary-icon:var(--colour-brand-white, #ffffff);--af-form-control-bg:var(--colour-inkwell-450, #203e45);--af-form-control-bg-checked:var(--colour-brand-mist-green, #c6d5d1);--af-form-control-bg-disabled:var(--colour-inkwell-400, #2b484f);--af-form-control-bg-checked-disabled:var(--colour-mistgreen-700, #9eaaa7);--af-form-control-stroke:var(--colour-inkwell-350, #60767b);--af-form-control-stroke-hover:var(--colour-brand-white, #ffffff);--af-form-control-stroke-disabled:var(--colour-inkwell-400, #2b484f);--af-form-control-icon:var(--colour-brand-inkwell, #14343b);--af-form-control-label:var(--colour-brand-white, #ffffff)}.card.theme-mist-green.sc-af-card{background-color:var(--colour-brand-mist-green, #c6d5d1);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-mistgreen-300, #dde6e3)}.card.theme-soft-clay.sc-af-card{background-color:var(--colour-softclay-400, #c0ab8d);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-heading-secondary:var(--colour-brand-ivory-paper, #fff9ee);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-softclay-500, #b09670)}.card__content.sc-af-card{position:relative;padding:var(--af-card-padding, 40px);display:flex;flex-direction:column;gap:var(--af-card-gap, 24px);flex:1;box-sizing:border-box;z-index:1}.card__content.sc-af-card-s>af-heading,.card__content .sc-af-card-s>af-heading{margin-bottom:0}.card__content.sc-af-card-s>af-text,.card__content .sc-af-card-s>af-text{line-height:1.44}";
3
+ const afCardCss = ".sc-af-card-h{display:block;width:100%}[stretch].sc-af-card-h{display:flex;flex-direction:column;height:100%}[stretch].sc-af-card-h .card.sc-af-card{flex:1 1 auto}[stretch].sc-af-card-h .card__content.sc-af-card{flex:1 1 auto}.card.sc-af-card{border-radius:var(--border-radius-card-level-1, 32px);overflow:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box}.card.theme-white.sc-af-card{background-color:var(--colour-brand-white, #ffffff);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-mistgreen-200, #e8eeed)}.card.theme-white-ivory.sc-af-card{background-color:var(--colour-brand-ivory-paper, #fff9ee);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-ivory-200, #ffefcc)}.card.theme-inkwell.sc-af-card{background-color:var(--colour-brand-inkwell, #14343b);--af-typography-heading-primary:var(--colour-brand-mist-green, #c6d5d1);--af-typography-body-default:var(--colour-inkwell-100, #d0d6d8);--af-background-level-1:var(--colour-inkwell-450, #203e45);--af-button-secondary-text:var(--colour-brand-white, #ffffff);--af-button-secondary-stroke:var(--colour-brand-white, #ffffff);--af-button-ghost-text:var(--colour-brand-white, #ffffff);--af-button-ghost-icon:var(--colour-brand-white, #ffffff);--af-form-control-bg:var(--colour-inkwell-450, #203e45);--af-form-control-bg-checked:var(--colour-brand-mist-green, #c6d5d1);--af-form-control-bg-disabled:var(--colour-inkwell-400, #2b484f);--af-form-control-bg-checked-disabled:var(--colour-mistgreen-700, #9eaaa7);--af-form-control-stroke:var(--colour-inkwell-350, #60767b);--af-form-control-stroke-hover:var(--colour-brand-white, #ffffff);--af-form-control-stroke-disabled:var(--colour-inkwell-400, #2b484f);--af-form-control-icon:var(--colour-brand-inkwell, #14343b);--af-form-control-label:var(--colour-brand-white, #ffffff)}.card.theme-mist-green.sc-af-card{background-color:var(--colour-brand-mist-green, #c6d5d1);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-mistgreen-300, #dde6e3)}.card.theme-soft-clay.sc-af-card{background-color:var(--colour-softclay-400, #c0ab8d);--af-typography-heading-primary:var(--colour-brand-inkwell, #14343b);--af-typography-heading-secondary:var(--colour-brand-ivory-paper, #fff9ee);--af-typography-body-default:var(--colour-inkwell-400, #2b484f);--af-background-level-1:var(--colour-softclay-500, #b09670)}.card__content.sc-af-card{position:relative;padding:var(--af-card-padding, 40px);display:flex;flex-direction:column;gap:var(--af-card-gap, 24px);flex:1;box-sizing:border-box;z-index:1}.card__content.sc-af-card-s>af-heading,.card__content .sc-af-card-s>af-heading{margin-bottom:0}.card__content.sc-af-card-s>af-text,.card__content .sc-af-card-s>af-text{line-height:1.44}";
4
4
 
5
5
  const AfCard = /*@__PURE__*/ proxyCustomElement(class AfCard extends H {
6
6
  constructor(registerHost) {
@@ -26,7 +26,7 @@ const AfCard = /*@__PURE__*/ proxyCustomElement(class AfCard extends H {
26
26
  'card': true,
27
27
  [`theme-${this.theme}`]: true
28
28
  };
29
- return (h(Host, { key: 'efd6ae011a1fb247ac79b2ecc5feaf4c9589bcba' }, h("div", { key: 'e8e4bba3554986337e2f13c2cf9be83971035158', class: classes }, h("div", { key: 'fecb01569f2b407a1239aa60c66fba67cf3f09dc', class: "card__content" }, h("slot", { key: 'd65732b56be56fe4399297cc35b9f842a7719bd6' })))));
29
+ return (h(Host, { key: 'dbd4b523c8a646e6ed82a774c401822cc3b7bb04' }, h("div", { key: 'a46694f5be510555830b467321a4097630272f5c', class: classes }, h("div", { key: 'fd70362af8c745ae9128364d919310f4a33351a4', class: "card__content" }, h("slot", { key: '262268062acca16738d53a0b0f8b5a94fbfbbd8c' })))));
30
30
  }
31
31
  static get style() { return afCardCss; }
32
32
  }, [262, "af-card", {
@@ -48,6 +48,6 @@ function defineCustomElement() {
48
48
  }
49
49
 
50
50
  export { AfCard as A, defineCustomElement as d };
51
- //# sourceMappingURL=p-C8_mFdv5.js.map
51
+ //# sourceMappingURL=p-BfAQ7eko.js.map
52
52
 
53
- //# sourceMappingURL=p-C8_mFdv5.js.map
53
+ //# sourceMappingURL=p-BfAQ7eko.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-BfAQ7eko.js","mappings":";;AAAA,MAAM,SAAS,GAAG,i/FAAi/F;;MCet/F,MAAM,iBAAAA,kBAAA,CAAA,MAAA,MAAA,SAAAC,CAAA,CAAA;AANnB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;AAOE;;;AAGG;AACK,QAAA,IAAK,CAAA,KAAA,GAAsE,YAAY;AAE/F;;;;;AAKG;AACsB,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK;AAkBlD;IAhBC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,CAAC,SAAS,IAAI,CAAC,KAAK,CAAE,CAAA,GAAG;SAC1B;QAED,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,eAAe,EAAA,EACxB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACF,CACD;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-card/af-card.css?tag=af-card&encapsulation=scoped","src/components/af-card/af-card.tsx"],"sourcesContent":["/* Theme CSS custom properties follow the global token structure from @affinda/tokens */\n\n:host {\n display: block;\n width: 100%;\n}\n\n/* ==========================================================================\n Stretch Mode\n \n When stretch attribute is present, the card fills its container height\n and uses flexbox to distribute space between children. This enables\n equal-height cards in grid/flex layouts.\n ========================================================================== */\n\n:host([stretch]) {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n:host([stretch]) .card {\n flex: 1 1 auto;\n}\n\n:host([stretch]) .card__content {\n flex: 1 1 auto;\n}\n\n/* ==========================================================================\n Base Card Styles\n ========================================================================== */\n\n.card {\n border-radius: var(--border-radius-card-level-1, 32px);\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n/* ==========================================================================\n Theme Variants\n \n Background colors from Figma tokens:\n - white: #ffffff (Colour/Brand/White)\n - white-ivory: #fff9ee (Colour/Brand/Ivory-Paper)\n - inkwell: #14343b (Colour/Brand/Inkwell)\n - mist-green: #c6d5d1 (Colour/Brand/Mist-Green)\n - soft-clay: #c0ab8d (Colour/Softclay/400)\n ========================================================================== */\n\n/* WHITE THEME */\n.card.theme-white {\n background-color: var(--colour-brand-white, #ffffff);\n \n /* Typography */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-background-level-1: var(--colour-mistgreen-200, #e8eeed);\n}\n\n/* WHITE-IVORY THEME */\n.card.theme-white-ivory {\n background-color: var(--colour-brand-ivory-paper, #fff9ee);\n \n /* Typography */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-background-level-1: var(--colour-ivory-200, #ffefcc);\n}\n\n/* INKWELL THEME (Dark) */\n.card.theme-inkwell {\n background-color: var(--colour-brand-inkwell, #14343b);\n \n /* Typography - light colors on dark background */\n --af-typography-heading-primary: var(--colour-brand-mist-green, #c6d5d1);\n --af-typography-body-default: var(--colour-inkwell-100, #d0d6d8);\n --af-background-level-1: var(--colour-inkwell-450, #203e45);\n \n /* Button variants for dark theme */\n --af-button-secondary-text: var(--colour-brand-white, #ffffff);\n --af-button-secondary-stroke: var(--colour-brand-white, #ffffff);\n --af-button-ghost-text: var(--colour-brand-white, #ffffff);\n --af-button-ghost-icon: var(--colour-brand-white, #ffffff);\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/* MIST-GREEN THEME */\n.card.theme-mist-green {\n background-color: var(--colour-brand-mist-green, #c6d5d1);\n \n /* Typography */\n --af-typography-heading-primary: var(--colour-brand-inkwell, #14343b);\n --af-typography-body-default: var(--colour-inkwell-400, #2b484f);\n --af-background-level-1: var(--colour-mistgreen-300, #dde6e3);\n}\n\n/* SOFT-CLAY THEME */\n.card.theme-soft-clay {\n background-color: var(--colour-softclay-400, #c0ab8d);\n \n /* Typography */\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-default: var(--colour-inkwell-400, #2b484f);\n --af-background-level-1: var(--colour-softclay-500, #b09670);\n}\n\n/* ==========================================================================\n Card Content\n ========================================================================== */\n\n.card__content {\n position: relative;\n padding: var(--af-card-padding, 40px);\n display: flex;\n flex-direction: column;\n gap: var(--af-card-gap, 24px);\n flex: 1;\n box-sizing: border-box;\n z-index: 1;\n}\n\n/* Heading spacing within cards */\n.card__content ::slotted(af-heading) {\n margin-bottom: 0;\n}\n\n/* Text line-height within cards */\n.card__content ::slotted(af-text) {\n line-height: 1.44;\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * Card atom component - a themed container with consistent styling.\n * Provides theme context to children via CSS custom properties.\n * \n * This is a base building block used by molecule components like\n * af-feature-card and af-illustrated-card.\n */\n@Component({\n tag: 'af-card',\n styleUrl: 'af-card.css',\n shadow: false,\n scoped: true,\n})\nexport class AfCard {\n /**\n * Theme - sets background color and provides theme context to children.\n * Defaults to 'mist-green' if not specified.\n */\n @Prop() theme?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay' = 'mist-green';\n\n /**\n * When true, the card stretches to fill its container height.\n * Use this when the card is in a flex/grid container and needs to\n * participate in equal-height layouts. The card's content will use\n * flexbox to distribute space between children.\n */\n @Prop({ reflect: true }) stretch: boolean = false;\n\n render() {\n const classes = {\n 'card': true,\n [`theme-${this.theme}`]: true\n };\n\n return (\n <Host>\n <div class={classes}>\n <div class=\"card__content\">\n <slot></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -22,10 +22,10 @@ const AfProgressLine = /*@__PURE__*/ proxyCustomElement(class AfProgressLine ext
22
22
  // Clamp progress between 0 and 1
23
23
  const clampedProgress = Math.max(0, Math.min(1, this.progress));
24
24
  const progressPercent = clampedProgress * 100;
25
- return (h(Host, { key: '62410fb52d8010a3544e4aff10587e656162eb50' }, h("div", { key: '35ecb7c0c89d305456aa07a1db34fa0cf41e9181', class: {
25
+ return (h(Host, { key: 'c02fe013e512c135c429737c54cb13816b477dbf' }, h("div", { key: 'c2928397950acd9ea039fc438feeda4b57a5bc80', class: {
26
26
  'progress-line': true,
27
27
  [`progress-line--${this.orientation}`]: true,
28
- }, role: "progressbar", "aria-valuenow": Math.round(progressPercent), "aria-valuemin": 0, "aria-valuemax": 100 }, h("div", { key: 'd5c61725e5797df2d16555b2035aa58477622b07', class: "progress-line__background" }), h("div", { key: '983d07564432e4f6699dd820a304fd10935e952d', class: "progress-line__active", style: { width: `${progressPercent}%` } }))));
28
+ }, role: "progressbar", "aria-valuenow": Math.round(progressPercent), "aria-valuemin": 0, "aria-valuemax": 100 }, h("div", { key: '877171e53e77401204bedef2bd44d48a70fdf20b', class: "progress-line__background" }), h("div", { key: '86857483735bc4072be844266cc5939b0943fb22', class: "progress-line__active", style: { width: `${progressPercent}%` } }))));
29
29
  }
30
30
  static get style() { return afProgressLineCss; }
31
31
  }, [258, "af-progress-line", {
@@ -47,6 +47,6 @@ function defineCustomElement() {
47
47
  }
48
48
 
49
49
  export { AfProgressLine as A, defineCustomElement as d };
50
- //# sourceMappingURL=p-D66k2SSB.js.map
50
+ //# sourceMappingURL=p-CFBeRDmV.js.map
51
51
 
52
- //# sourceMappingURL=p-D66k2SSB.js.map
52
+ //# sourceMappingURL=p-CFBeRDmV.js.map
@@ -1 +1 @@
1
- {"file":"p-D66k2SSB.js","mappings":";;AAAA,MAAM,iBAAiB,GAAG,0mBAA0mB;;MCcvnB,cAAc,iBAAAA,kBAAA,CAAA,MAAA,cAAA,SAAAC,CAAA,CAAA;AAN3B,IAAA,WAAA,CAAA,YAAA,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;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"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"],"version":3}
1
+ {"file":"p-CFBeRDmV.js","mappings":";;AAAA,MAAM,iBAAiB,GAAG,0mBAA0mB;;MCcvnB,cAAc,iBAAAA,kBAAA,CAAA,MAAA,cAAA,SAAAC,CAAA,CAAA;AAN3B,IAAA,WAAA,CAAA,YAAA,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;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"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"],"version":3}
@@ -0,0 +1,48 @@
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
2
+
3
+ const afImageCss = ".sc-af-image-h{display:block;width:100%}.image-container.sc-af-image{position:relative;overflow:hidden}.image-container--rounded.sc-af-image{border-radius:var(--radius-md, 12px)}.image-container--rounded-left.sc-af-image{border-top-left-radius:var(--radius-md, 12px);border-bottom-left-radius:var(--radius-md, 12px)}.image-container--rounded-right.sc-af-image{border-top-right-radius:var(--radius-md, 12px);border-bottom-right-radius:var(--radius-md, 12px)}.image-container--square.sc-af-image{border-radius:0}.image.sc-af-image{display:block;width:100%;height:auto;object-fit:cover}.image-border.sc-af-image{position:absolute;inset:0;box-shadow:inset 0 0 0 1px var(--af-background-border-subtle, rgba(0, 0, 0, 0.08));pointer-events:none;border-radius:inherit}";
4
+
5
+ const AfImage = /*@__PURE__*/ proxyCustomElement(class AfImage extends H {
6
+ constructor(registerHost) {
7
+ super();
8
+ if (registerHost !== false) {
9
+ this.__registerHost();
10
+ }
11
+ /**
12
+ * Shape / corner rounding variant. Matches Webflow's `.image-fill.rounded-*`
13
+ * patterns where only one edge is rounded so the image bleeds into a
14
+ * neighbouring section.
15
+ * - `rounded` (default) — symmetric rounded corners on all four sides.
16
+ * - `rounded-left` — rounded only on the left edge (top-left + bottom-left).
17
+ * - `rounded-right` — rounded only on the right edge.
18
+ * - `square` — no corner rounding.
19
+ */
20
+ this.shape = 'rounded';
21
+ }
22
+ render() {
23
+ return (h(Host, { key: 'a8954272f3c0defc0b9e33d5f3221c6e1083d927' }, h("div", { key: '2fd3bad5b46360cac57d069031ec2f69103f6542', class: `image-container image-container--${this.shape}` }, h("img", { key: '72a11cde6b65481320d8b6a1d65e85862d4a449e', src: this.src, alt: this.alt, class: "image" }), h("div", { key: '7727e1ac4179e96f8c8928de678136337bd82f44', class: "image-border", "aria-hidden": "true" }))));
24
+ }
25
+ static get style() { return afImageCss; }
26
+ }, [258, "af-image", {
27
+ "src": [1],
28
+ "alt": [1],
29
+ "shape": [1]
30
+ }]);
31
+ function defineCustomElement() {
32
+ if (typeof customElements === "undefined") {
33
+ return;
34
+ }
35
+ const components = ["af-image"];
36
+ components.forEach(tagName => { switch (tagName) {
37
+ case "af-image":
38
+ if (!customElements.get(tagName)) {
39
+ customElements.define(tagName, AfImage);
40
+ }
41
+ break;
42
+ } });
43
+ }
44
+
45
+ export { AfImage as A, defineCustomElement as d };
46
+ //# sourceMappingURL=p-CNtgySkk.js.map
47
+
48
+ //# sourceMappingURL=p-CNtgySkk.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-CNtgySkk.js","mappings":";;AAAA,MAAM,UAAU,GAAG,0vBAA0vB;;MCYhwB,OAAO,iBAAAA,kBAAA,CAAA,MAAA,OAAA,SAAAC,CAAA,CAAA;AANpB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;AAiBE;;;;;;;;AAQG;AACK,QAAA,IAAK,CAAA,KAAA,GAA4D,SAAS;AAYnF;IAVC,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,CAAA,iCAAA,EAAoC,IAAI,CAAC,KAAK,CAAE,CAAA,EAAA,EAC1D,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,EAAC,OAAO,EAAG,CAAA,EACnD,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,cAAc,EAAA,aAAA,EAAa,MAAM,EAAO,CAAA,CAC/C,CACD;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-image/af-image.css?tag=af-image&encapsulation=scoped","src/components/af-image/af-image.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.image-container {\n position: relative;\n overflow: hidden;\n}\n\n/* Shape variants — matches Webflow's rounded-edge image treatments */\n.image-container--rounded {\n border-radius: var(--radius-md, 12px);\n}\n\n.image-container--rounded-left {\n border-top-left-radius: var(--radius-md, 12px);\n border-bottom-left-radius: var(--radius-md, 12px);\n}\n\n.image-container--rounded-right {\n border-top-right-radius: var(--radius-md, 12px);\n border-bottom-right-radius: var(--radius-md, 12px);\n}\n\n.image-container--square {\n border-radius: 0;\n}\n\n.image {\n display: block;\n width: 100%;\n height: auto;\n object-fit: cover;\n}\n\n/* Inset border overlay — inherits the host's border radius via parent clip */\n.image-border {\n position: absolute;\n inset: 0;\n box-shadow: inset 0 0 0 1px var(--af-background-border-subtle, rgba(0, 0, 0, 0.08));\n pointer-events: none;\n border-radius: inherit;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * A styled image container with rounded corners and a subtle inset border.\n * Provides consistent image styling across the design system.\n */\n@Component({\n tag: 'af-image',\n styleUrl: 'af-image.css',\n shadow: false,\n scoped: true\n})\nexport class AfImage {\n /**\n * The image source URL\n */\n @Prop() src!: string;\n\n /**\n * Alternative text for the image (required for accessibility)\n */\n @Prop() alt!: string;\n\n /**\n * Shape / corner rounding variant. Matches Webflow's `.image-fill.rounded-*`\n * patterns where only one edge is rounded so the image bleeds into a\n * neighbouring section.\n * - `rounded` (default) — symmetric rounded corners on all four sides.\n * - `rounded-left` — rounded only on the left edge (top-left + bottom-left).\n * - `rounded-right` — rounded only on the right edge.\n * - `square` — no corner rounding.\n */\n @Prop() shape: 'rounded' | 'rounded-left' | 'rounded-right' | 'square' = 'rounded';\n\n render() {\n return (\n <Host>\n <div class={`image-container image-container--${this.shape}`}>\n <img src={this.src} alt={this.alt} class=\"image\" />\n <div class=\"image-border\" aria-hidden=\"true\"></div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -23,7 +23,7 @@ const AfIconBox = /*@__PURE__*/ proxyCustomElement(class AfIconBox extends H {
23
23
  [`icon-box--size-${this.size}`]: true,
24
24
  };
25
25
  const iconSize = this.size === 'small' ? 20 : this.size === 'large' ? 48 : 40;
26
- return (h(Host, { key: '961d990c78faedbaa7595e26966edd712ffe323a' }, h("div", { key: '499bd1a36c589994cd1f1c848450aa0fe3d43ac0', class: containerClasses }, h("af-icon", { key: '6b48d327dc1a712e764f9ff783ba904252f9873d', name: this.icon, size: iconSize }))));
26
+ return (h(Host, { key: 'b224f522fa4db3081cb97fbe88aec0a4f4198d61' }, h("div", { key: '99ee87a2104918c6d3855cc5d7e90dcbda2d9638', class: containerClasses }, h("af-icon", { key: '778170ce3b08ca6b34289cc6bd1d49ade9583bc1', name: this.icon, size: iconSize }))));
27
27
  }
28
28
  static get style() { return afIconBoxCss; }
29
29
  }, [258, "af-icon-box", {
@@ -50,6 +50,6 @@ function defineCustomElement() {
50
50
  }
51
51
 
52
52
  export { AfIconBox as A, defineCustomElement as d };
53
- //# sourceMappingURL=p-BUoRUEpQ.js.map
53
+ //# sourceMappingURL=p-D_xTKF7j.js.map
54
54
 
55
- //# sourceMappingURL=p-BUoRUEpQ.js.map
55
+ //# sourceMappingURL=p-D_xTKF7j.js.map
@@ -1 +1 @@
1
- {"file":"p-BUoRUEpQ.js","mappings":";;;AAAA,MAAM,YAAY,GAAG,6lBAA6lB;;MCqBrmB,SAAS,iBAAAA,kBAAA,CAAA,MAAA,SAAA,SAAAC,CAAA,CAAA;AANtB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;AAYE;;;;;AAKG;AACK,QAAA,IAAI,CAAA,IAAA,GAAkC,SAAS;AAkBxD;IAhBC,MAAM,GAAA;AACJ,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;SACtC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,EAAE,GAAG,EAAE;QAE7E,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,gBAAgB,EAAA,EAC1B,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAA,CAAY,CAChD,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-icon-box/af-icon-box.css?tag=af-icon-box&encapsulation=scoped","src/components/af-icon-box/af-icon-box.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.icon-box {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 16px;\n background-color: var(--af-background-contrast, var(--colour-brand-mist-green, #c6d5d1));\n color: var(--af-background-icon-default, var(--colour-brand-inkwell, #14343b));\n flex-shrink: 0;\n}\n\n/* Size variants */\n.icon-box--size-small {\n width: 48px;\n height: 48px;\n padding: 14px;\n border-radius: 12px;\n}\n\n.icon-box--size-default {\n width: 64px;\n height: 64px;\n padding: 12px;\n border-radius: 16px;\n}\n\n.icon-box--size-large {\n width: 80px;\n height: 80px;\n padding: 16px;\n border-radius: 20px;\n}\n\n","import { Component, h, Prop, Host } from '@stencil/core';\nimport type { IconName } from '@affinda/icons';\n\n/**\n * IconBox atom - a themed container for displaying an icon with a rounded background.\n * \n * Inherits theme colors from parent Section via CSS custom properties:\n * - Background uses `--af-background-contrast`\n * - Icon color uses `--af-background-icon-default`\n * \n * @example\n * ```html\n * <af-icon-box icon=\"settings\" size=\"default\"></af-icon-box>\n * ```\n */\n@Component({\n tag: 'af-icon-box',\n styleUrl: 'af-icon-box.css',\n shadow: false,\n scoped: true,\n})\nexport class AfIconBox {\n /**\n * The name of the icon to display (from @affinda/icons)\n */\n @Prop() icon!: IconName;\n\n /**\n * Size variant of the icon box\n * - 'small': 48px container, 20px icon\n * - 'default': 64px container, 40px icon\n * - 'large': 80px container, 48px icon\n */\n @Prop() size: 'small' | 'default' | 'large' = 'default';\n\n render() {\n const containerClasses = {\n 'icon-box': true,\n [`icon-box--size-${this.size}`]: true,\n };\n\n const iconSize = this.size === 'small' ? 20 : this.size === 'large' ? 48 : 40;\n\n return (\n <Host>\n <div class={containerClasses}>\n <af-icon name={this.icon} size={iconSize}></af-icon>\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
1
+ {"file":"p-D_xTKF7j.js","mappings":";;;AAAA,MAAM,YAAY,GAAG,6lBAA6lB;;MCqBrmB,SAAS,iBAAAA,kBAAA,CAAA,MAAA,SAAA,SAAAC,CAAA,CAAA;AANtB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;AAYE;;;;;AAKG;AACK,QAAA,IAAI,CAAA,IAAA,GAAkC,SAAS;AAkBxD;IAhBC,MAAM,GAAA;AACJ,QAAA,MAAM,gBAAgB,GAAG;AACvB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG,IAAI;SACtC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,EAAE,GAAG,EAAE;QAE7E,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,gBAAgB,EAAA,EAC1B,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAA,CAAY,CAChD,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-icon-box/af-icon-box.css?tag=af-icon-box&encapsulation=scoped","src/components/af-icon-box/af-icon-box.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.icon-box {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 16px;\n background-color: var(--af-background-contrast, var(--colour-brand-mist-green, #c6d5d1));\n color: var(--af-background-icon-default, var(--colour-brand-inkwell, #14343b));\n flex-shrink: 0;\n}\n\n/* Size variants */\n.icon-box--size-small {\n width: 48px;\n height: 48px;\n padding: 14px;\n border-radius: 12px;\n}\n\n.icon-box--size-default {\n width: 64px;\n height: 64px;\n padding: 12px;\n border-radius: 16px;\n}\n\n.icon-box--size-large {\n width: 80px;\n height: 80px;\n padding: 16px;\n border-radius: 20px;\n}\n\n","import { Component, h, Prop, Host } from '@stencil/core';\nimport type { IconName } from '@affinda/icons';\n\n/**\n * IconBox atom - a themed container for displaying an icon with a rounded background.\n * \n * Inherits theme colors from parent Section via CSS custom properties:\n * - Background uses `--af-background-contrast`\n * - Icon color uses `--af-background-icon-default`\n * \n * @example\n * ```html\n * <af-icon-box icon=\"settings\" size=\"default\"></af-icon-box>\n * ```\n */\n@Component({\n tag: 'af-icon-box',\n styleUrl: 'af-icon-box.css',\n shadow: false,\n scoped: true,\n})\nexport class AfIconBox {\n /**\n * The name of the icon to display (from @affinda/icons)\n */\n @Prop() icon!: IconName;\n\n /**\n * Size variant of the icon box\n * - 'small': 48px container, 20px icon\n * - 'default': 64px container, 40px icon\n * - 'large': 80px container, 48px icon\n */\n @Prop() size: 'small' | 'default' | 'large' = 'default';\n\n render() {\n const containerClasses = {\n 'icon-box': true,\n [`icon-box--size-${this.size}`]: true,\n };\n\n const iconSize = this.size === 'small' ? 20 : this.size === 'large' ? 48 : 40;\n\n return (\n <Host>\n <div class={containerClasses}>\n <af-icon name={this.icon} size={iconSize}></af-icon>\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}