@affinda/wc 0.0.19 → 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 (466) 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 +6 -6
  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-544b7c9c.entry.js +0 -2
  387. package/dist/affinda/p-544b7c9c.entry.js.map +0 -1
  388. package/dist/affinda/p-567ba536.entry.js +0 -2
  389. package/dist/affinda/p-567ba536.entry.js.map +0 -1
  390. package/dist/affinda/p-57eae3cd.entry.js +0 -2
  391. package/dist/affinda/p-6294b6d1.entry.js +0 -2
  392. package/dist/affinda/p-6294b6d1.entry.js.map +0 -1
  393. package/dist/affinda/p-63314e14.entry.js +0 -2
  394. package/dist/affinda/p-64fa6ae6.entry.js +0 -2
  395. package/dist/affinda/p-64fa6ae6.entry.js.map +0 -1
  396. package/dist/affinda/p-68f1f661.entry.js +0 -2
  397. package/dist/affinda/p-7792cd53.entry.js +0 -2
  398. package/dist/affinda/p-7792cd53.entry.js.map +0 -1
  399. package/dist/affinda/p-7b2671c4.entry.js +0 -2
  400. package/dist/affinda/p-7b2671c4.entry.js.map +0 -1
  401. package/dist/affinda/p-8f24dfe3.entry.js +0 -2
  402. package/dist/affinda/p-8f528f9d.entry.js +0 -2
  403. package/dist/affinda/p-920e6d30.entry.js +0 -2
  404. package/dist/affinda/p-96df0106.entry.js +0 -2
  405. package/dist/affinda/p-b0d668d0.entry.js +0 -2
  406. package/dist/affinda/p-b0d668d0.entry.js.map +0 -1
  407. package/dist/affinda/p-b2338fab.entry.js +0 -2
  408. package/dist/affinda/p-b68748ab.entry.js +0 -2
  409. package/dist/affinda/p-b68748ab.entry.js.map +0 -1
  410. package/dist/affinda/p-bd7170d7.entry.js +0 -2
  411. package/dist/affinda/p-d6e55455.entry.js +0 -2
  412. package/dist/affinda/p-d90366f6.entry.js.map +0 -1
  413. package/dist/affinda/p-f1a5d268.entry.js +0 -2
  414. package/dist/affinda/p-f1a5d268.entry.js.map +0 -1
  415. package/dist/affinda/p-fefe9597.entry.js +0 -2
  416. package/dist/components/p-B7bjlUCu.js +0 -94
  417. package/dist/components/p-B7bjlUCu.js.map +0 -1
  418. package/dist/components/p-BXcRGkhD.js +0 -94
  419. package/dist/components/p-BXcRGkhD.js.map +0 -1
  420. package/dist/components/p-Bi5ytUXg.js +0 -58
  421. package/dist/components/p-Bi5ytUXg.js.map +0 -1
  422. package/dist/components/p-BvIMp8pz.js +0 -37
  423. package/dist/components/p-BvIMp8pz.js.map +0 -1
  424. package/dist/components/p-C8_mFdv5.js.map +0 -1
  425. package/dist/components/p-C_B4CNrh.js +0 -94
  426. package/dist/components/p-C_B4CNrh.js.map +0 -1
  427. package/dist/components/p-ChgW4Hec.js +0 -100
  428. package/dist/components/p-ChgW4Hec.js.map +0 -1
  429. package/dist/components/p-CnNV1GZE.js.map +0 -1
  430. package/dist/components/p-DBnL9UHx.js +0 -91
  431. package/dist/components/p-DBnL9UHx.js.map +0 -1
  432. package/dist/components/p-Dt2AsNUz.js +0 -94
  433. package/dist/components/p-Dt2AsNUz.js.map +0 -1
  434. package/dist/components/p-JepBVz99.js +0 -71
  435. package/dist/components/p-JepBVz99.js.map +0 -1
  436. package/dist/components/p-hOnulRmz.js +0 -84
  437. package/dist/components/p-hOnulRmz.js.map +0 -1
  438. package/dist/components/p-pDs2K2nD.js +0 -100
  439. package/dist/components/p-pDs2K2nD.js.map +0 -1
  440. /package/dist/affinda/{p-01993cc8.entry.js.map → p-0fb16377.entry.js.map} +0 -0
  441. /package/dist/affinda/{p-3d2fb635.entry.js.map → p-1a87dd1c.entry.js.map} +0 -0
  442. /package/dist/affinda/{p-bd7170d7.entry.js.map → p-202bac33.entry.js.map} +0 -0
  443. /package/dist/affinda/{p-adacb8c4.entry.js.map → p-2e8682a0.entry.js.map} +0 -0
  444. /package/dist/affinda/{p-266af3e1.entry.js.map → p-3642589b.entry.js.map} +0 -0
  445. /package/dist/affinda/{p-4c5f92a9.entry.js.map → p-391bb085.entry.js.map} +0 -0
  446. /package/dist/affinda/{p-d51c4b1b.entry.js.map → p-3fc2a3dc.entry.js.map} +0 -0
  447. /package/dist/affinda/{p-f9e7cf8f.entry.js.map → p-45f76ad4.entry.js.map} +0 -0
  448. /package/dist/affinda/{p-c72cfcbd.entry.js.map → p-5591bc79.entry.js.map} +0 -0
  449. /package/dist/affinda/{p-c74481bd.entry.js.map → p-6179957e.entry.js.map} +0 -0
  450. /package/dist/affinda/{p-9e21b6c1.entry.js.map → p-62699653.entry.js.map} +0 -0
  451. /package/dist/affinda/{p-db9249e4.entry.js.map → p-7da3a28f.entry.js.map} +0 -0
  452. /package/dist/affinda/{p-e7d8d909.entry.js.map → p-86a9ff3e.entry.js.map} +0 -0
  453. /package/dist/affinda/{p-e9bc1739.entry.js.map → p-a53d5549.entry.js.map} +0 -0
  454. /package/dist/affinda/{p-02830771.entry.js.map → p-accd917e.entry.js.map} +0 -0
  455. /package/dist/affinda/{p-cc4e73dc.entry.js.map → p-ad9b0eec.entry.js.map} +0 -0
  456. /package/dist/affinda/{p-b10103f4.entry.js.map → p-c01eaa85.entry.js.map} +0 -0
  457. /package/dist/affinda/{p-288c2656.entry.js.map → p-c3d7872c.entry.js.map} +0 -0
  458. /package/dist/affinda/{p-af25dad7.entry.js.map → p-c51a2687.entry.js.map} +0 -0
  459. /package/dist/affinda/{p-9de05d1d.entry.js.map → p-d28b0860.entry.js.map} +0 -0
  460. /package/dist/affinda/{p-d6e55455.entry.js.map → p-d74a7ae9.entry.js.map} +0 -0
  461. /package/dist/affinda/{p-d47a77e2.entry.js.map → p-e2f555fc.entry.js.map} +0 -0
  462. /package/dist/affinda/{p-e156a8bb.entry.js.map → p-e37fea2f.entry.js.map} +0 -0
  463. /package/dist/affinda/{p-b56e9e2d.entry.js.map → p-ea02610f.entry.js.map} +0 -0
  464. /package/dist/affinda/{p-fefe9597.entry.js.map → p-ea0ccbce.entry.js.map} +0 -0
  465. /package/dist/affinda/{p-080cf84f.entry.js.map → p-f4d2a07d.entry.js.map} +0 -0
  466. /package/dist/affinda/{p-f7a13cd3.entry.js.map → p-f78dd237.entry.js.map} +0 -0
@@ -1,100 +0,0 @@
1
- import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
2
- import { d as defineCustomElement$1 } from './p-CLmCtN_R.js';
3
-
4
- const afNavbarCss = ".sc-af-navbar-h{display:block;width:100%}.navbar-spacer.sc-af-navbar{height:100px}.navbar-spacer.theme-white.sc-af-navbar{background-color:var(--colour-brand-white, #FFFFFF)}.navbar-spacer.theme-inkwell.sc-af-navbar{background-color:var(--colour-brand-inkwell, #14343B)}.navbar-spacer.theme-mist-green.sc-af-navbar{background-color:var(--colour-brand-mist-green, #C6D5D1)}.navbar-spacer.theme-soft-clay.sc-af-navbar{background-color:var(--colour-softclay-400, #c0ab8d)}.navbar-container.sc-af-navbar{position:fixed;top:32px;left:0;right:0;z-index:10;padding:0 80px;box-sizing:border-box}.navbar.sc-af-navbar{background:var(--colour-background-white, #ffffff);border-radius:9999px;display:flex;align-items:center;justify-content:space-between;padding:8px 8px 8px 40px;box-sizing:border-box;flex-wrap:nowrap}.navbar-left.sc-af-navbar{display:flex;align-items:center;gap:32px;flex-shrink:0}.logo.sc-af-navbar{display:flex;align-items:center;flex-shrink:0}.mobile-menu-toggle.sc-af-navbar{display:none;background:none;border:none;padding:8px;cursor:pointer;color:var(--colour-brand-inkwell, #14343b);margin-left:auto}.mobile-menu-toggle.sc-af-navbar svg.sc-af-navbar{display:block}.nav-links.sc-af-navbar{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}.navbar-right.sc-af-navbar{display:flex;align-items:center;gap:20px}.nav-actions.sc-af-navbar{display:flex;align-items:center;gap:12px}.nav-button.sc-af-navbar{display:flex;align-items:center}.dropdown-container.sc-af-navbar{position:absolute;top:108px;left:0;right:0;padding:0 80px;pointer-events:none;opacity:0;transform:translateY(-8px);transition:opacity 0.2s ease, transform 0.2s ease}.dropdown-container.is-open.sc-af-navbar{pointer-events:auto;opacity:1;transform:translateY(0)}.dropdown-panel.sc-af-navbar{background:var(--colour-background-base, #ffffff);border-radius:32px;overflow:hidden;box-shadow:0 4px 24px rgba(20, 52, 59, 0.12)}.dropdown-panel.sc-af-navbar:empty{display:none}.mobile-menu-panel.sc-af-navbar{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:var(--colour-background-base, #ffffff);z-index:9;padding:100px 16px 24px 16px;overflow-y:auto;opacity:0;pointer-events:none;transition:opacity 0.2s ease}.mobile-menu-panel.is-open.sc-af-navbar{display:block;opacity:1;pointer-events:auto}.mobile-button-container.sc-af-navbar{margin-bottom:8px}.mobile-button-container.sc-af-navbar-s>*,.mobile-button-container .sc-af-navbar-s>*{width:100%}.mobile-menu-content.sc-af-navbar{width:100%}@media (max-width: 1099px){.nav-actions.sc-af-navbar{display:none}.navbar-right.sc-af-navbar{gap:0}}@media (max-width: 1024px){.navbar-spacer.sc-af-navbar{height:88px}.navbar-container.sc-af-navbar{top:24px;padding:0 40px}.navbar-left.sc-af-navbar{gap:24px}.nav-links.sc-af-navbar{gap:4px}.dropdown-container.sc-af-navbar{padding:0 40px}}@media (max-width: 991px){.navbar-spacer.sc-af-navbar{height:72px}.navbar-container.sc-af-navbar{top:16px;padding:0 16px;z-index:11}.navbar.sc-af-navbar{padding:8px 8px 8px 24px;flex-direction:row;border-radius:9999px;gap:0}.navbar-left.sc-af-navbar{width:auto;flex-direction:row;justify-content:flex-start;align-items:center;gap:16px;flex:1}.mobile-menu-toggle.sc-af-navbar{display:flex;padding:12px;margin-left:auto;border-radius:9999px;border:1px solid var(--colour-brand-inkwell, #14343b)}.mobile-menu-toggle.sc-af-navbar:hover{background:rgba(20, 52, 59, 0.05)}.nav-links.sc-af-navbar{display:none}.navbar-right.sc-af-navbar{display:none}.dropdown-container.sc-af-navbar{display:none}.mobile-menu-panel.sc-af-navbar{padding-top:88px}.mobile-button-container.sc-af-navbar{padding:0 12px;margin-bottom:8px}.mobile-button-container.sc-af-navbar-s>af-button,.mobile-button-container .sc-af-navbar-s>af-button,.mobile-button-container.sc-af-navbar-s>button,.mobile-button-container .sc-af-navbar-s>button{width:100%;display:flex;justify-content:center}}[force-mobile].sc-af-navbar-h .navbar-spacer.sc-af-navbar{height:72px}[force-mobile].sc-af-navbar-h .navbar-container.sc-af-navbar{top:16px;padding:0 16px;z-index:11}[force-mobile].sc-af-navbar-h .navbar.sc-af-navbar{padding:8px 8px 8px 24px;flex-direction:row;border-radius:9999px;gap:0}[force-mobile].sc-af-navbar-h .navbar-left.sc-af-navbar{width:auto;flex-direction:row;justify-content:flex-start;align-items:center;gap:16px;flex:1}[force-mobile].sc-af-navbar-h .mobile-menu-toggle.sc-af-navbar{display:flex;padding:12px;margin-left:auto;border-radius:9999px;border:1px solid var(--colour-brand-inkwell, #14343b)}[force-mobile].sc-af-navbar-h .mobile-menu-toggle.sc-af-navbar:hover{background:rgba(20, 52, 59, 0.05)}[force-mobile].sc-af-navbar-h .nav-links.sc-af-navbar{display:none}[force-mobile].sc-af-navbar-h .navbar-right.sc-af-navbar{display:none}[force-mobile].sc-af-navbar-h .nav-actions.sc-af-navbar{display:none}[force-mobile].sc-af-navbar-h .dropdown-container.sc-af-navbar{display:none}[force-mobile].sc-af-navbar-h .mobile-menu-panel.sc-af-navbar{padding-top:88px}[force-mobile].sc-af-navbar-h .mobile-menu-panel.is-open.sc-af-navbar{display:block;opacity:1;pointer-events:auto}[force-mobile].sc-af-navbar-h .mobile-button-container.sc-af-navbar{padding:0 12px;margin-bottom:8px}.sc-af-navbar-h[force-mobile] .mobile-button-container.sc-af-navbar-s>af-button,.mobile-button-container .sc-af-navbar-s>af-button,.sc-af-navbar-h[force-mobile] .mobile-button-container.sc-af-navbar-s>button,.mobile-button-container .sc-af-navbar-s>button{width:100%;display:flex;justify-content:center}";
5
-
6
- const AfNavbar = /*@__PURE__*/ proxyCustomElement(class AfNavbar extends H {
7
- constructor(registerHost) {
8
- super();
9
- if (registerHost !== false) {
10
- this.__registerHost();
11
- }
12
- this.mobileMenuOpen = false;
13
- /** The currently open dropdown identifier (null if none open) */
14
- this.activeDropdown = null;
15
- /** Whether to show the default Affinda logo when no logo slot content is provided */
16
- this.showDefaultLogo = true;
17
- /** Force mobile layout regardless of viewport size (useful for testing/stories) */
18
- this.forceMobile = false;
19
- this.toggleMobileMenu = () => {
20
- this.mobileMenuOpen = !this.mobileMenuOpen;
21
- // Close any open dropdown when toggling mobile menu
22
- this.activeDropdown = null;
23
- };
24
- /**
25
- * Opens a dropdown by its identifier
26
- */
27
- this.openDropdown = (dropdownId) => {
28
- this.activeDropdown = dropdownId;
29
- };
30
- /**
31
- * Closes the currently open dropdown
32
- */
33
- this.closeDropdown = () => {
34
- this.activeDropdown = null;
35
- };
36
- /**
37
- * Toggles a dropdown by its identifier
38
- */
39
- this.toggleDropdown = (dropdownId) => {
40
- if (this.activeDropdown === dropdownId) {
41
- this.activeDropdown = null;
42
- }
43
- else {
44
- this.activeDropdown = dropdownId;
45
- }
46
- };
47
- }
48
- /**
49
- * Handle clicks outside the navbar to close dropdowns
50
- */
51
- handleDocumentClick(event) {
52
- const path = event.composedPath();
53
- if (!path.includes(this.el)) {
54
- this.closeDropdown();
55
- }
56
- }
57
- /**
58
- * Handle escape key to close dropdowns
59
- */
60
- handleKeyDown(event) {
61
- if (event.key === 'Escape') {
62
- this.closeDropdown();
63
- }
64
- }
65
- render() {
66
- const hasDropdown = this.activeDropdown !== null;
67
- return (h(Host, { key: '92f8f346f85a3dc591a97bde173442b963b37e5c', class: { 'has-dropdown-open': hasDropdown } }, h("div", { key: '059a556fb84aadf47f5e5cc78adf39314f35e7cd', class: `navbar-spacer${this.theme ? ` theme-${this.theme}` : ''}` }), h("nav", { key: 'a724927e2b4e571efcc90baf2bc95047ee9e9e5b', class: "navbar-container" }, h("div", { key: '8459055c4d73dd08cf9e411e39b6a5efd281db33', class: "navbar theme-white" }, h("div", { key: '1672a840e29672b08bdd097decc5d3704f680b53', class: "navbar-left" }, h("div", { key: '6a7dd0e111b1afb93815d92c7ea401c6041b786e', class: "logo" }, h("slot", { key: '49706feeb1ffcf21bccb033baf717e29ed0f6809', name: "logo" }, this.showDefaultLogo && h("af-logo", { key: 'c4894daec4529effc143cd015dc298e3fe68bde6' }))), h("button", { key: '5cc3605bfd31104a8357a270b71bae0d539d459c', class: "mobile-menu-toggle", onClick: this.toggleMobileMenu, "aria-label": "Toggle navigation menu", "aria-expanded": this.mobileMenuOpen ? 'true' : 'false' }, this.mobileMenuOpen ? (h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor" }, h("path", { d: "M18 6L6 18M6 6l12 12", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))) : (h("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor" }, h("path", { d: "M3 12h18M3 6h18M3 18h18", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))), h("div", { key: '37cb78db1c5385f069988d2236aca7c916d24ebe', class: `nav-links ${this.mobileMenuOpen ? 'mobile-open' : ''}` }, h("slot", { key: '446e40b871d0e9c689405b234d15e5a9043058bf', name: "start" }))), h("div", { key: '1112576571e29edaa6e6c33f083b1a058fdaef64', class: `navbar-right ${this.mobileMenuOpen ? 'mobile-open' : ''}` }, h("div", { key: '036a55766ab0e4bbc566b6cfbe6513ea0656ccb3', class: "nav-actions" }, h("slot", { key: '01b2df1708553d51475941e109c8f23652d7e0ff', name: "end" })), h("div", { key: '4429b2e026ec6b730d8c17cf9f716ad5a6a3c050', class: "nav-button" }, h("slot", { key: '0a290b167e6d32441770df9d4f6b3e6104552b77', name: "button" })))), h("div", { key: '08c1695708ddf0ef0a1a18bfbd1c45d66ef1bf4f', class: `dropdown-container ${hasDropdown ? 'is-open' : ''}` }, h("div", { key: 'b54b6dbd58888e9a844b615337ba7ee62bca00c0', class: "dropdown-panel theme-white" }, h("slot", { key: '0f72aff472972bf323e1891518d99eb5d92d2916', name: "dropdown-solutions" }), h("slot", { key: '1f7bf6bb90b334d19737e011e759787105a91fa5', name: "dropdown-pricing" }), h("slot", { key: '52272d982908c702c3447d9b2b7bddcf2cc030df', name: "dropdown-resources" }), h("slot", { key: 'ba1ea577efa7b2a9af9b8a50253eae8eef661bd7', name: "dropdown" })))), h("div", { key: '21f14e04f0c351733f7452dc1c10b6abfb26e1ce', class: `mobile-menu-panel theme-white ${this.mobileMenuOpen ? 'is-open' : ''}` }, h("div", { key: '22565f6b52971a5fe4235c8f9e2fce4ee5a2d006', class: "mobile-button-container" }, h("slot", { key: '2b01297d62d6cca6a58b128701a5a14a02d91e2d', name: "mobile-button" }, h("slot", { key: 'd755113cabd174a46acd6d2d5b65d9454964b759', name: "button" }))), h("div", { key: '31f63fa53ae2c12b5f0f19e7b2235d94f09f50cb', class: "mobile-menu-content" }, h("slot", { key: '748e5a320fb5b5940f1134e332738dccf015748e', name: "mobile-menu" })))));
68
- }
69
- get el() { return this; }
70
- static get style() { return afNavbarCss; }
71
- }, [262, "af-navbar", {
72
- "showDefaultLogo": [4, "show-default-logo"],
73
- "theme": [1],
74
- "forceMobile": [516, "force-mobile"],
75
- "mobileMenuOpen": [32],
76
- "activeDropdown": [32]
77
- }, [[4, "click", "handleDocumentClick"], [4, "keydown", "handleKeyDown"]]]);
78
- function defineCustomElement() {
79
- if (typeof customElements === "undefined") {
80
- return;
81
- }
82
- const components = ["af-navbar", "af-logo"];
83
- components.forEach(tagName => { switch (tagName) {
84
- case "af-navbar":
85
- if (!customElements.get(tagName)) {
86
- customElements.define(tagName, AfNavbar);
87
- }
88
- break;
89
- case "af-logo":
90
- if (!customElements.get(tagName)) {
91
- defineCustomElement$1();
92
- }
93
- break;
94
- } });
95
- }
96
-
97
- export { AfNavbar as A, defineCustomElement as d };
98
- //# sourceMappingURL=p-ChgW4Hec.js.map
99
-
100
- //# sourceMappingURL=p-ChgW4Hec.js.map
@@ -1 +0,0 @@
1
- {"file":"p-ChgW4Hec.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-navbar/af-navbar.css?tag=af-navbar&encapsulation=scoped","src/components/af-navbar/af-navbar.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n/* Spacer element that sits in normal document flow to prevent content overlap */\n.navbar-spacer {\n height: 100px; /* Accounts for navbar height + top margin */\n}\n\n/* Theme variants for spacer background - matches section themes */\n.navbar-spacer.theme-white {\n background-color: var(--colour-brand-white, #FFFFFF);\n}\n\n.navbar-spacer.theme-inkwell {\n background-color: var(--colour-brand-inkwell, #14343B);\n}\n\n.navbar-spacer.theme-mist-green {\n background-color: var(--colour-brand-mist-green, #C6D5D1);\n}\n\n.navbar-spacer.theme-soft-clay {\n background-color: var(--colour-softclay-400, #c0ab8d);\n}\n\n/* Sticky navbar that floats above the spacer */\n.navbar-container {\n position: fixed;\n top: 32px;\n left: 0;\n right: 0;\n z-index: 10;\n padding: 0 80px;\n box-sizing: border-box;\n}\n\n.navbar {\n background: var(--colour-background-white, #ffffff);\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 8px 8px 40px;\n box-sizing: border-box;\n flex-wrap: nowrap; /* Prevent wrapping */\n}\n\n/* Left section */\n.navbar-left {\n display: flex;\n align-items: center;\n gap: 32px;\n flex-shrink: 0;\n}\n\n.logo {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n}\n\n/* Mobile menu toggle button */\n.mobile-menu-toggle {\n display: none;\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: var(--colour-brand-inkwell, #14343b);\n margin-left: auto;\n}\n\n.mobile-menu-toggle svg {\n display: block;\n}\n\n.nav-links {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: nowrap;\n}\n\n/* Right section */\n.navbar-right {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.nav-actions {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.nav-button {\n display: flex;\n align-items: center;\n}\n\n/* Dropdown container */\n.dropdown-container {\n position: absolute;\n top: 108px;\n left: 0;\n right: 0;\n padding: 0 80px;\n pointer-events: none;\n opacity: 0;\n transform: translateY(-8px);\n transition: opacity 0.2s ease, transform 0.2s ease;\n}\n\n.dropdown-container.is-open {\n pointer-events: auto;\n opacity: 1;\n transform: translateY(0);\n}\n\n.dropdown-panel {\n background: var(--colour-background-base, #ffffff);\n border-radius: 32px;\n overflow: hidden;\n box-shadow: 0 4px 24px rgba(20, 52, 59, 0.12);\n}\n\n/* Hide empty dropdown slots */\n.dropdown-panel:empty {\n display: none;\n}\n\n/* Mobile menu panel - separate from navbar for proper positioning */\n.mobile-menu-panel {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--colour-background-base, #ffffff);\n z-index: 9;\n padding: 100px 16px 24px 16px;\n overflow-y: auto;\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.2s ease;\n}\n\n.mobile-menu-panel.is-open {\n display: block;\n opacity: 1;\n pointer-events: auto;\n}\n\n/* Mobile CTA button container */\n.mobile-button-container {\n margin-bottom: 8px;\n}\n\n.mobile-button-container ::slotted(*) {\n width: 100%;\n}\n\n/* Mobile menu content */\n.mobile-menu-content {\n width: 100%;\n}\n\n/* \n * Breakpoint 1: Hide \"Talk to us\" and \"Log in\" (nav-actions) \n * This happens first as the viewport gets narrower\n * Matches affinda.com behavior at ~1100px\n */\n@media (max-width: 1099px) {\n .nav-actions {\n display: none;\n }\n \n .navbar-right {\n gap: 0;\n }\n}\n\n/* Tablet adjustments */\n@media (max-width: 1024px) {\n .navbar-spacer {\n height: 88px;\n }\n\n .navbar-container {\n top: 24px;\n padding: 0 40px;\n }\n\n .navbar-left {\n gap: 24px;\n }\n\n .nav-links {\n gap: 4px;\n }\n\n .dropdown-container {\n padding: 0 40px;\n }\n}\n\n/* \n * Breakpoint 2: Switch to hamburger menu\n * Matches affinda.com behavior at 991px\n */\n@media (max-width: 991px) {\n .navbar-spacer {\n height: 72px;\n }\n\n .navbar-container {\n top: 16px;\n padding: 0 16px;\n z-index: 11; /* Above mobile menu panel */\n }\n\n .navbar {\n padding: 8px 8px 8px 24px; /* Figma: 8px padding right, 24px left on mobile */\n flex-direction: row;\n border-radius: 9999px; /* Keep pill shape on mobile */\n gap: 0;\n }\n\n .navbar-left {\n width: auto;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n gap: 16px;\n flex: 1;\n }\n\n /* Show hamburger button on mobile */\n .mobile-menu-toggle {\n display: flex;\n padding: 12px;\n margin-left: auto;\n border-radius: 9999px;\n border: 1px solid var(--colour-brand-inkwell, #14343b);\n }\n\n .mobile-menu-toggle:hover {\n background: rgba(20, 52, 59, 0.05);\n }\n\n /* Hide nav links on mobile - they're in the mobile menu panel */\n .nav-links {\n display: none;\n }\n\n /* Hide right section on mobile - button is in mobile menu panel */\n .navbar-right {\n display: none;\n }\n\n /* Hide desktop dropdown on mobile */\n .dropdown-container {\n display: none;\n }\n\n /* Mobile menu panel adjustments */\n .mobile-menu-panel {\n padding-top: 88px; /* Accounts for navbar height */\n }\n\n .mobile-button-container {\n padding: 0 12px;\n margin-bottom: 8px;\n }\n\n .mobile-button-container ::slotted(af-button),\n .mobile-button-container ::slotted(button) {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n}\n\n/* ==========================================================================\n Force Mobile Mode\n Apply mobile styles regardless of viewport when force-mobile attribute is set\n ========================================================================== */\n\n:host([force-mobile]) .navbar-spacer {\n height: 72px;\n}\n\n:host([force-mobile]) .navbar-container {\n top: 16px;\n padding: 0 16px;\n z-index: 11;\n}\n\n:host([force-mobile]) .navbar {\n padding: 8px 8px 8px 24px;\n flex-direction: row;\n border-radius: 9999px;\n gap: 0;\n}\n\n:host([force-mobile]) .navbar-left {\n width: auto;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n gap: 16px;\n flex: 1;\n}\n\n:host([force-mobile]) .mobile-menu-toggle {\n display: flex;\n padding: 12px;\n margin-left: auto;\n border-radius: 9999px;\n border: 1px solid var(--colour-brand-inkwell, #14343b);\n}\n\n:host([force-mobile]) .mobile-menu-toggle:hover {\n background: rgba(20, 52, 59, 0.05);\n}\n\n:host([force-mobile]) .nav-links {\n display: none;\n}\n\n:host([force-mobile]) .navbar-right {\n display: none;\n}\n\n:host([force-mobile]) .nav-actions {\n display: none;\n}\n\n:host([force-mobile]) .dropdown-container {\n display: none;\n}\n\n:host([force-mobile]) .mobile-menu-panel {\n padding-top: 88px;\n}\n\n:host([force-mobile]) .mobile-menu-panel.is-open {\n display: block;\n opacity: 1;\n pointer-events: auto;\n}\n\n:host([force-mobile]) .mobile-button-container {\n padding: 0 12px;\n margin-bottom: 8px;\n}\n\n:host([force-mobile]) .mobile-button-container ::slotted(af-button),\n:host([force-mobile]) .mobile-button-container ::slotted(button) {\n width: 100%;\n display: flex;\n justify-content: center;\n}\n","import { Component, State, h, Host, Prop, Element, Listen } from '@stencil/core';\n\n/**\n * A full-width navigation bar component that provides the main site navigation.\n * Features a pill-shaped container with logo, navigation links, and action buttons.\n * Includes mobile hamburger menu and support for mega-menu dropdowns.\n * \n * The logo slot can be used to provide a custom logo. If no logo is provided,\n * the default Affinda logo will be displayed.\n * \n * **Slots:**\n * - `logo` - Logo area (defaults to Affinda logo if empty)\n * - `start` - Primary navigation links (left side, desktop)\n * - `end` - Secondary/utility links (right side)\n * - `button` - Call-to-action button\n * - `dropdown-solutions` - Mega-menu for Solutions dropdown\n * - `dropdown-pricing` - Mega-menu for Pricing dropdown \n * - `dropdown-resources` - Mega-menu for Resources dropdown\n * - `dropdown` - Generic dropdown slot\n * - `mobile-menu` - Mobile menu content (use af-nav-accordion for accordion menus)\n * - `mobile-button` - CTA button for mobile menu (appears at top)\n */\n@Component({\n tag: 'af-navbar',\n styleUrl: 'af-navbar.css',\n shadow: false,\n scoped: true,\n})\nexport class AfNavbar {\n @Element() el!: HTMLElement;\n\n @State() mobileMenuOpen: boolean = false;\n \n /** The currently open dropdown identifier (null if none open) */\n @State() activeDropdown: string | null = null;\n\n /** Whether to show the default Affinda logo when no logo slot content is provided */\n @Prop() showDefaultLogo: boolean = true;\n\n /** Theme for the spacer background - should match the section below the navbar */\n @Prop() theme?: 'white' | 'inkwell' | 'mist-green' | 'soft-clay';\n\n /** Force mobile layout regardless of viewport size (useful for testing/stories) */\n @Prop({ reflect: true }) forceMobile: boolean = false;\n\n private toggleMobileMenu = () => {\n this.mobileMenuOpen = !this.mobileMenuOpen;\n // Close any open dropdown when toggling mobile menu\n this.activeDropdown = null;\n };\n\n /**\n * Opens a dropdown by its identifier\n */\n private openDropdown = (dropdownId: string) => {\n this.activeDropdown = dropdownId;\n };\n\n /**\n * Closes the currently open dropdown\n */\n private closeDropdown = () => {\n this.activeDropdown = null;\n };\n\n /**\n * Toggles a dropdown by its identifier\n */\n private toggleDropdown = (dropdownId: string) => {\n if (this.activeDropdown === dropdownId) {\n this.activeDropdown = null;\n } else {\n this.activeDropdown = dropdownId;\n }\n };\n\n /**\n * Handle clicks outside the navbar to close dropdowns\n */\n @Listen('click', { target: 'document' })\n handleDocumentClick(event: MouseEvent) {\n const path = event.composedPath();\n if (!path.includes(this.el)) {\n this.closeDropdown();\n }\n }\n\n /**\n * Handle escape key to close dropdowns\n */\n @Listen('keydown', { target: 'document' })\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.closeDropdown();\n }\n }\n\n render() {\n const hasDropdown = this.activeDropdown !== null;\n\n return (\n <Host class={{ 'has-dropdown-open': hasDropdown }}>\n {/* Spacer element to prevent content from being hidden behind sticky navbar */}\n <div class={`navbar-spacer${this.theme ? ` theme-${this.theme}` : ''}`}></div>\n \n <nav class=\"navbar-container\">\n <div class=\"navbar theme-white\">\n {/* Left section: Logo + Nav Links */}\n <div class=\"navbar-left\">\n <div class=\"logo\">\n <slot name=\"logo\">\n {/* Default Affinda logo if no slot content provided */}\n {this.showDefaultLogo && <af-logo></af-logo>}\n </slot>\n </div>\n \n {/* Hamburger menu button - mobile only */}\n <button \n class=\"mobile-menu-toggle\"\n onClick={this.toggleMobileMenu}\n aria-label=\"Toggle navigation menu\"\n aria-expanded={this.mobileMenuOpen ? 'true' : 'false'}\n >\n {this.mobileMenuOpen ? (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M18 6L6 18M6 6l12 12\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n ) : (\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3 12h18M3 6h18M3 18h18\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n )}\n </button>\n \n <div class={`nav-links ${this.mobileMenuOpen ? 'mobile-open' : ''}`}>\n <slot name=\"start\"></slot>\n </div>\n </div>\n\n {/* Right section: Actions + Button */}\n <div class={`navbar-right ${this.mobileMenuOpen ? 'mobile-open' : ''}`}>\n <div class=\"nav-actions\">\n <slot name=\"end\"></slot>\n </div>\n <div class=\"nav-button\">\n <slot name=\"button\"></slot>\n </div>\n </div>\n </div>\n\n {/* Dropdown panel container */}\n <div class={`dropdown-container ${hasDropdown ? 'is-open' : ''}`}>\n <div class=\"dropdown-panel theme-white\">\n <slot name=\"dropdown-solutions\"></slot>\n <slot name=\"dropdown-pricing\"></slot>\n <slot name=\"dropdown-resources\"></slot>\n <slot name=\"dropdown\"></slot>\n </div>\n </div>\n </nav>\n\n {/* Mobile menu panel */}\n <div class={`mobile-menu-panel theme-white ${this.mobileMenuOpen ? 'is-open' : ''}`}>\n {/* Mobile CTA button at top */}\n <div class=\"mobile-button-container\">\n <slot name=\"mobile-button\">\n <slot name=\"button\"></slot>\n </slot>\n </div>\n \n {/* Mobile navigation content */}\n <div class=\"mobile-menu-content\">\n <slot name=\"mobile-menu\"></slot>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"p-CnNV1GZE.js","mappings":";;;;AAAA,MAAM,oBAAoB,GAAG,m4DAAm4D;;MCoBn5D,iBAAiB,iBAAAA,kBAAA,CAAA,MAAA,iBAAA,SAAAC,CAAA,CAAA;AAN9B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;AAOE;;;AAGG;AACK,QAAA,IAAK,CAAA,KAAA,GAAsE,YAAY;AAE/F;;AAEG;AACK,QAAA,IAAU,CAAA,UAAA,GAAyB,SAAS;AAEpD;;AAEG;AACK,QAAA,IAAQ,CAAA,QAAA,GAAwB,SAAS;AAqClD;IAnCC,MAAM,GAAA;AACJ,QAAA,MAAM,cAAc,GAAG;AACrB,YAAA,kBAAkB,EAAE,IAAI;AACxB,YAAA,CAAC,gCAAgC,IAAI,CAAC,UAAU,CAAE,CAAA,GAAG,IAAI;AACzD,YAAA,CAAC,0BAA0B,IAAI,CAAC,QAAQ,CAAE,CAAA,GAAG,IAAI;SAClD;AAED,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,cAAc,EAAA,EACxB,CAAA,CAAA,SAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAS,KAAK,EAAE,IAAI,CAAC,KAAK,EAAA,EAExB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,2BAA2B,EAAA,EACpC,CAAA,CAAA,sBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,WAAW,EAAE,CAAC,EACd,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,aAAa,EAAC,MAAM,EACpB,eAAe,EAAC,UAAU,EAAA,EAE1B,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,EACb,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,aAAa,EAAA,EACtB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,MAAM,EAAQ,CAAA,CACpB,CACc,CACnB,EAGN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,qCAAqC,EAAA,EAC9C,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,cAAc,EAAA,CAAQ,CAC7B,CACE,CACN,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-illustrated-card/af-illustrated-card.css?tag=af-illustrated-card&encapsulation=scoped","src/components/af-illustrated-card/af-illustrated-card.tsx"],"sourcesContent":[":host {\n display: flex;\n flex-direction: column;\n width: 100%;\n \n /* Override card atom defaults - illustrated card handles its own spacing */\n --af-card-padding: 0;\n --af-card-gap: 0;\n}\n\n/* ==========================================================================\n Base Illustrated Card Styles\n ========================================================================== */\n\n.illustrated-card {\n min-height: 400px;\n}\n\n/* ==========================================================================\n Content Area\n ========================================================================== */\n\n.illustrated-card__content {\n position: relative;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n z-index: 1;\n}\n\n/* Desktop default size spacing */\n.illustrated-card--breakpoint-desktop.illustrated-card--size-default .illustrated-card__content {\n padding: 40px 32px 12px 32px;\n}\n\n/* Desktop large size spacing */\n.illustrated-card--breakpoint-desktop.illustrated-card--size-large .illustrated-card__content {\n padding: 40px 40px 0 40px;\n}\n\n/* Mobile spacing */\n.illustrated-card--breakpoint-mobile .illustrated-card__content {\n padding: 32px 24px 12px 24px;\n}\n\n/* ==========================================================================\n Illustration Area\n ========================================================================== */\n\n.illustrated-card__illustration-area {\n position: relative;\n width: 100%;\n flex: 1;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n box-sizing: border-box;\n}\n\n/* Desktop illustration area height */\n.illustrated-card--breakpoint-desktop .illustrated-card__illustration-area {\n min-height: 160px;\n}\n\n/* Mobile illustration area height */\n.illustrated-card--breakpoint-mobile .illustrated-card__illustration-area {\n min-height: 192px;\n}\n\n/* Illustration placeholder for when using data attributes */\n.illustrated-card__illustration-placeholder {\n width: 100%;\n height: 100%;\n min-height: 120px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Illustration image styling */\n.illustrated-card__illustration-area ::slotted(img),\n.illustrated-card__illustration-area img {\n max-width: 100%;\n max-height: 200px;\n height: auto;\n object-fit: contain;\n}\n\n/* ==========================================================================\n Typography Lockup Styling\n ========================================================================== */\n\n/* Pass theme colors to typography lockup */\n.illustrated-card af-typography-lockup {\n --colour-typography-heading-primary: var(--af-typography-heading-primary);\n --colour-typography-body-default: var(--af-typography-body-default);\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * Illustrated Card molecule component that combines a card with an illustration.\n * \n * Uses a theme background with text at top and an illustration from\n * @affinda/illustrations at the bottom.\n * \n * Uses af-card atom internally and af-typography-lockup for text hierarchy.\n * \n * @slot - Heading text content\n * @slot body - Description/body text content\n * @slot illustration - Illustration image element\n */\n@Component({\n tag: 'af-illustrated-card',\n styleUrl: 'af-illustrated-card.css',\n shadow: false,\n scoped: true,\n})\nexport class AfIllustratedCard {\n /**\n * Theme variant - sets background color and provides theme context.\n * Defaults to 'mist-green'.\n */\n @Prop() theme?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay' = 'mist-green';\n\n /**\n * Responsive breakpoint for typography sizing.\n */\n @Prop() breakpoint: 'desktop' | 'mobile' = 'desktop';\n\n /**\n * Card size variant (applies to desktop only).\n */\n @Prop() cardSize: 'default' | 'large' = 'default';\n\n render() {\n const wrapperClasses = {\n 'illustrated-card': true,\n [`illustrated-card--breakpoint-${this.breakpoint}`]: true,\n [`illustrated-card--size-${this.cardSize}`]: true,\n };\n\n return (\n <Host>\n <div class={wrapperClasses}>\n <af-card theme={this.theme}>\n {/* Content area with typography lockup */}\n <div class=\"illustrated-card__content\">\n <af-typography-lockup\n headingSize={3}\n breakpoint={this.breakpoint}\n textAlignment=\"left\"\n buttonAlignment=\"vertical\"\n >\n <slot></slot>\n <span slot=\"description\">\n <slot name=\"body\"></slot>\n </span>\n </af-typography-lockup>\n </div>\n\n {/* Illustration area at bottom */}\n <div class=\"illustrated-card__illustration-area\">\n <slot name=\"illustration\"></slot>\n </div>\n </af-card>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,91 +0,0 @@
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=\"tertiary\"]){color:var(--af-button-tertiary-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-small{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-small .icon-left,.size-small .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-small .icon-left.has-content{margin-right:8px}.size-small .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-small .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-tertiary{background:transparent;border-color:transparent;border-radius:0;color:var(--af-button-tertiary-text, var(--colour-brand-inkwell, #14343b));padding-left:0;padding-right:0}.variant-tertiary .label{border-bottom:2px solid var(--af-button-tertiary-stroke, var(--colour-brand-soft-clay, #B09670))}.variant-tertiary .icon-left,.variant-tertiary .icon-right{color:var(--af-button-tertiary-icon, var(--colour-brand-inkwell, #14343b))}.variant-tertiary:hover:not(.disabled){opacity:0.8}.variant-tertiary:focus:not(.disabled),.variant-tertiary:focus-visible:not(.disabled){outline:none}.variant-tertiary:focus-visible:not(.disabled) .label{box-shadow:0 4px 0 0 var(--af-button-tertiary-stroke, var(--colour-brand-soft-clay, #B09670))}.variant-tertiary: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-tertiary.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-tertiary{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-tertiary{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
- * - `tertiary` - Subtle text-link style with underline
17
- */
18
- this.variant = 'primary';
19
- /**
20
- * The size of the button.
21
- * - `default` - Standard size for primary CTAs
22
- * - `small` - Compact size for inline or secondary contexts
23
- */
24
- this.size = 'default';
25
- /**
26
- * Whether the button is disabled
27
- */
28
- this.disabled = false;
29
- /**
30
- * Button type (when not using href)
31
- */
32
- this.type = 'button';
33
- this.hasIconLeft = false;
34
- this.hasIconRight = false;
35
- this.handleSlotChange = (slotName) => (event) => {
36
- const slot = event.target;
37
- const hasContent = slot.assignedNodes().length > 0;
38
- if (slotName === 'icon-left') {
39
- this.hasIconLeft = hasContent;
40
- }
41
- else {
42
- this.hasIconRight = hasContent;
43
- }
44
- };
45
- }
46
- render() {
47
- const classes = {
48
- 'button': true,
49
- [`variant-${this.variant}`]: true,
50
- [`size-${this.size}`]: true,
51
- 'disabled': this.disabled
52
- };
53
- const content = [
54
- h("span", { class: { 'icon-left': true, 'has-content': this.hasIconLeft } }, h("slot", { name: "icon-left", onSlotchange: this.handleSlotChange('icon-left') })),
55
- h("span", { class: "label" }, h("slot", null)),
56
- h("span", { class: { 'icon-right': true, 'has-content': this.hasIconRight } }, h("slot", { name: "icon-right", onSlotchange: this.handleSlotChange('icon-right') }))
57
- ];
58
- // Render as anchor if href is provided (and not disabled)
59
- if (this.href && !this.disabled) {
60
- return (h(Host, null, h("a", { href: this.href, class: classes }, content)));
61
- }
62
- return (h(Host, null, h("button", { type: this.type, disabled: this.disabled, class: classes }, content)));
63
- }
64
- static get style() { return afButtonCss; }
65
- }, [257, "af-button", {
66
- "variant": [513],
67
- "size": [1],
68
- "disabled": [4],
69
- "type": [1],
70
- "href": [1],
71
- "hasIconLeft": [32],
72
- "hasIconRight": [32]
73
- }]);
74
- function defineCustomElement() {
75
- if (typeof customElements === "undefined") {
76
- return;
77
- }
78
- const components = ["af-button"];
79
- components.forEach(tagName => { switch (tagName) {
80
- case "af-button":
81
- if (!customElements.get(tagName)) {
82
- customElements.define(tagName, AfButton);
83
- }
84
- break;
85
- } });
86
- }
87
-
88
- export { AfButton as A, defineCustomElement as d };
89
- //# sourceMappingURL=p-DBnL9UHx.js.map
90
-
91
- //# sourceMappingURL=p-DBnL9UHx.js.map
@@ -1 +0,0 @@
1
- {"file":"p-DBnL9UHx.js","mappings":";;AAAA,MAAM,WAAW,GAAG,k9KAAk9K;;MCgBz9K,QAAQ,iBAAAA,kBAAA,CAAA,MAAA,QAAA,SAAAC,CAAA,CAAA;AALrB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;;;;AAKG;AACsB,QAAA,IAAO,CAAA,OAAA,GAAyC,SAAS;AAElF;;;;AAIG;AACK,QAAA,IAAI,CAAA,IAAA,GAAwB,SAAS;AAE7C;;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=\"tertiary\"]) {\n color: var(--af-button-tertiary-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-small {\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-small .icon-left,\n.size-small .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-small .icon-left.has-content {\n margin-right: 8px;\n}\n\n.size-small .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-small .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-tertiary {\n background: transparent;\n border-color: transparent;\n border-radius: 0;\n color: var(--af-button-tertiary-text, var(--colour-brand-inkwell, #14343b));\n padding-left: 0;\n padding-right: 0;\n}\n\n.variant-tertiary .label {\n border-bottom: 2px solid var(--af-button-tertiary-stroke, var(--colour-brand-soft-clay, #B09670));\n}\n\n.variant-tertiary .icon-left,\n.variant-tertiary .icon-right {\n color: var(--af-button-tertiary-icon, var(--colour-brand-inkwell, #14343b));\n}\n\n.variant-tertiary:hover:not(.disabled) {\n opacity: 0.8;\n}\n\n.variant-tertiary:focus:not(.disabled),\n.variant-tertiary:focus-visible:not(.disabled) {\n outline: none;\n}\n\n.variant-tertiary:focus-visible:not(.disabled) .label {\n box-shadow: 0 4px 0 0 var(--af-button-tertiary-stroke, var(--colour-brand-soft-clay, #B09670));\n}\n\n.variant-tertiary: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-tertiary.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-tertiary {\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-tertiary {\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 * - `tertiary` - Subtle text-link style with underline\n */\n @Prop({ reflect: true }) variant: 'primary' | 'secondary' | 'tertiary' = 'primary';\n\n /**\n * The size of the button.\n * - `default` - Standard size for primary CTAs\n * - `small` - Compact size for inline or secondary contexts\n */\n @Prop() size: 'default' | 'small' = '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}
@@ -1,94 +0,0 @@
1
- import { p as proxyCustomElement, H, h, c as Host } from './p-CxngDK-N.js';
2
- import { d as defineCustomElement$2 } from './p-C8_mFdv5.js';
3
- import { d as defineCustomElement$1 } from './p-hOnulRmz.js';
4
-
5
- const afFeatureCardCss = ".sc-af-feature-card-h{display:block;--af-card-padding:0;--af-card-gap:0}[card-size=\"default\"].sc-af-feature-card-h{width:544px}[card-size=\"large\"].sc-af-feature-card-h{width:777px}[card-size=\"flexible\"].sc-af-feature-card-h{display:flex;width:100%;height:100%}.feature-card.sc-af-feature-card{overflow:hidden;position:relative;display:flex;flex-direction:column;box-sizing:border-box;border-radius:var(--border-radius-card-level-1, 32px);width:100%;height:100%}.feature-card--layout-full-bleed.sc-af-feature-card{background:var(--background-base, var(--colour-brand-inkwell, #14343b))}[card-size=\"default\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card,[card-size=\"large\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{height:660px}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{min-height:480px}.feature-card__background.sc-af-feature-card{position:absolute;inset:0;pointer-events:none;z-index:0}.feature-card__background-image.sc-af-feature-card{width:100%;height:100%;object-fit:cover;object-position:center}.feature-card__overlay.sc-af-feature-card{position:absolute;bottom:0;left:0;right:0;backdrop-filter:blur(2px);background:linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);z-index:1;padding:124px 32px 32px 32px;--af-typography-heading-primary:var(--typography-heading-secondary, #ffffff);--af-typography-heading-secondary:var(--typography-heading-secondary, #ffffff);--af-typography-body-default:var(--typography-body-dark, #ffffff);--colour-typography-heading-primary:var(--typography-heading-secondary, #ffffff);--colour-typography-heading-secondary:var(--typography-heading-secondary, #ffffff);--colour-typography-body-default:var(--typography-body-dark, #ffffff)}.feature-card--layout-standard.sc-af-feature-card{background:var(--background-level-1, var(--colour-mistgreen-200, #e8eeed))}.feature-card--layout-standard.sc-af-feature-card af-card.sc-af-feature-card{--border-radius-card-level-1:0}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-standard.sc-af-feature-card{min-height:400px}.feature-card__content.sc-af-feature-card{position:relative;display:flex;flex-direction:column;box-sizing:border-box;z-index:1;padding:40px 32px 12px 32px;flex:1 1 auto}[card-size=\"large\"].sc-af-feature-card-h .feature-card__content.sc-af-feature-card{padding:40px 40px 0 40px}.feature-card__image-area.sc-af-feature-card{position:relative;width:100%;height:160px;flex-shrink:0;overflow:hidden}.feature-card__image.sc-af-feature-card{width:100%;height:100%;object-fit:cover;object-position:center top}.feature-card.sc-af-feature-card af-typography-lockup.sc-af-feature-card{--colour-typography-heading-primary:var(--af-typography-heading-primary, var(--typography-heading-primary, #14343b));--colour-typography-body-default:var(--af-typography-body-default, var(--typography-body-default, #2b484f))}@media (max-width: 768px){.feature-card.sc-af-feature-card{border-radius:var(--border-radius-card-level-1, 24px)}[card-size=\"default\"].sc-af-feature-card-h,[card-size=\"large\"].sc-af-feature-card-h{width:335px}[card-size=\"default\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card,[card-size=\"large\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{height:442px}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-standard.sc-af-feature-card{min-height:340px}[card-size=\"flexible\"].sc-af-feature-card-h .feature-card--layout-full-bleed.sc-af-feature-card{min-height:380px}.feature-card__overlay.sc-af-feature-card{padding:80px 24px 28px 24px}.feature-card__content.sc-af-feature-card{padding:32px 24px 12px 24px}.feature-card__image-area.sc-af-feature-card{height:192px}}";
6
-
7
- const AfFeatureCard = /*@__PURE__*/ proxyCustomElement(class AfFeatureCard extends H {
8
- constructor(registerHost) {
9
- super();
10
- if (registerHost !== false) {
11
- this.__registerHost();
12
- }
13
- /**
14
- * Theme variant - sets background color and provides theme context.
15
- * Only applies to 'standard' layout mode. Defaults to 'mist-green'.
16
- */
17
- this.theme = 'mist-green';
18
- /**
19
- * Layout mode for the card.
20
- * - 'standard': Theme background with text at top and image at bottom
21
- * - 'full-bleed': Image covers entire card with text overlay at bottom
22
- */
23
- this.layout = 'standard';
24
- /**
25
- * Card size variant.
26
- * - 'default': Fixed 544px × 420px
27
- * - 'large': Fixed 777px × 480px
28
- * - 'flexible': Fills container (for grid layouts)
29
- */
30
- this.cardSize = 'default';
31
- /**
32
- * Heading size for typography lockup (1-5, where 1 is largest).
33
- */
34
- this.headingSize = 3;
35
- /**
36
- * Image alt text for accessibility.
37
- * Provide meaningful alt text for feature images.
38
- * Only use empty string for purely decorative images.
39
- */
40
- this.imageAlt = '';
41
- }
42
- render() {
43
- const hasImage = !!this.imageSrc;
44
- const isFullBleed = this.layout === 'full-bleed';
45
- const wrapperClasses = {
46
- 'feature-card': true,
47
- [`feature-card--layout-${this.layout}`]: true,
48
- [`feature-card--size-${this.cardSize}`]: true,
49
- };
50
- // Full-bleed mode: image background with overlay
51
- if (isFullBleed) {
52
- return (h(Host, null, h("div", { class: wrapperClasses }, hasImage && (h("div", { class: "feature-card__background" }, h("img", { src: this.imageSrc, alt: this.imageAlt, class: "feature-card__background-image" }))), h("div", { class: "feature-card__overlay" }, h("af-typography-lockup", { headingSize: this.headingSize, textAlignment: "left", buttonAlignment: "vertical" }, h("slot", null), h("span", { slot: "description" }, h("slot", { name: "body" })))))));
53
- }
54
- // Standard mode: theme card with image at bottom
55
- const isFlexible = this.cardSize === 'flexible';
56
- return (h(Host, null, h("div", { class: wrapperClasses }, h("af-card", { theme: this.theme, stretch: isFlexible }, h("div", { class: "feature-card__content" }, h("af-typography-lockup", { headingSize: this.headingSize, textAlignment: "left", buttonAlignment: "vertical" }, h("slot", null), h("span", { slot: "description" }, h("slot", { name: "body" })))), hasImage && (h("div", { class: "feature-card__image-area" }, h("img", { src: this.imageSrc, alt: this.imageAlt, class: "feature-card__image" })))))));
57
- }
58
- static get style() { return afFeatureCardCss; }
59
- }, [262, "af-feature-card", {
60
- "theme": [1],
61
- "layout": [1],
62
- "cardSize": [513, "card-size"],
63
- "headingSize": [2, "heading-size"],
64
- "imageSrc": [1, "image-src"],
65
- "imageAlt": [1, "image-alt"]
66
- }]);
67
- function defineCustomElement() {
68
- if (typeof customElements === "undefined") {
69
- return;
70
- }
71
- const components = ["af-feature-card", "af-card", "af-typography-lockup"];
72
- components.forEach(tagName => { switch (tagName) {
73
- case "af-feature-card":
74
- if (!customElements.get(tagName)) {
75
- customElements.define(tagName, AfFeatureCard);
76
- }
77
- break;
78
- case "af-card":
79
- if (!customElements.get(tagName)) {
80
- defineCustomElement$2();
81
- }
82
- break;
83
- case "af-typography-lockup":
84
- if (!customElements.get(tagName)) {
85
- defineCustomElement$1();
86
- }
87
- break;
88
- } });
89
- }
90
-
91
- export { AfFeatureCard as A, defineCustomElement as d };
92
- //# sourceMappingURL=p-Dt2AsNUz.js.map
93
-
94
- //# sourceMappingURL=p-Dt2AsNUz.js.map
@@ -1 +0,0 @@
1
- {"file":"p-Dt2AsNUz.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-feature-card/af-feature-card.css?tag=af-feature-card&encapsulation=scoped","src/components/af-feature-card/af-feature-card.tsx"],"sourcesContent":["/* ==========================================================================\n Feature Card - Figma Specs\n \n Desktop Full-bleed: 544px × 660px, radius 32px\n Desktop Standard default: 544px width, radius 32px\n Desktop Standard large: 777px width, radius 32px\n Mobile Full-bleed: 335px × 442px, radius 24px\n Mobile Standard: 335px width, radius 24px\n ========================================================================== */\n\n/* ==========================================================================\n Host Element - Controls outer dimensions\n ========================================================================== */\n\n:host {\n display: block;\n --af-card-padding: 0;\n --af-card-gap: 0;\n}\n\n/* Fixed size hosts constrain to Figma dimensions */\n:host([card-size=\"default\"]) {\n width: 544px;\n}\n\n:host([card-size=\"large\"]) {\n width: 777px;\n}\n\n/* Flexible cards fill their container */\n:host([card-size=\"flexible\"]) {\n display: flex;\n width: 100%;\n height: 100%;\n}\n\n/* ==========================================================================\n Base Feature Card Styles\n ========================================================================== */\n\n.feature-card {\n overflow: hidden;\n position: relative;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n border-radius: var(--border-radius-card-level-1, 32px);\n width: 100%;\n height: 100%;\n}\n\n/* ==========================================================================\n Full Bleed Layout Mode\n Figma: 544px × 660px (desktop), 335px × 442px (mobile)\n ========================================================================== */\n\n.feature-card--layout-full-bleed {\n background: var(--background-base, var(--colour-brand-inkwell, #14343b));\n}\n\n/* Full-bleed fixed sizes have explicit heights on host */\n:host([card-size=\"default\"]) .feature-card--layout-full-bleed,\n:host([card-size=\"large\"]) .feature-card--layout-full-bleed {\n height: 660px;\n}\n\n/* Full-bleed flexible minimum height */\n:host([card-size=\"flexible\"]) .feature-card--layout-full-bleed {\n min-height: 480px;\n}\n\n.feature-card__background {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n}\n\n.feature-card__background-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n}\n\n/* Overlay gradient with text */\n.feature-card__overlay {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n backdrop-filter: blur(2px);\n background: linear-gradient(to top, rgba(0, 0, 0, 0.9) 0%, rgba(0, 0, 0, 0) 100%);\n z-index: 1;\n /* Desktop: pt-124px px-32px pb-32px */\n padding: 124px 32px 32px 32px;\n\n /* White text on dark overlay */\n --af-typography-heading-primary: var(--typography-heading-secondary, #ffffff);\n --af-typography-heading-secondary: var(--typography-heading-secondary, #ffffff);\n --af-typography-body-default: var(--typography-body-dark, #ffffff);\n --colour-typography-heading-primary: var(--typography-heading-secondary, #ffffff);\n --colour-typography-heading-secondary: var(--typography-heading-secondary, #ffffff);\n --colour-typography-body-default: var(--typography-body-dark, #ffffff);\n}\n\n/* ==========================================================================\n Standard Layout Mode\n \n Structure: .feature-card > af-card[stretch] > [content] + [image-area]\n \n When cardSize=\"flexible\", af-card receives stretch prop which enables\n the flex chain. Content grows to fill space, image stays at bottom.\n ========================================================================== */\n\n.feature-card--layout-standard {\n background: var(--background-level-1, var(--colour-mistgreen-200, #e8eeed));\n}\n\n/* Remove border-radius from inner af-card - outer .feature-card handles rounding */\n.feature-card--layout-standard af-card {\n --border-radius-card-level-1: 0;\n}\n\n/* Standard flexible minimum height */\n:host([card-size=\"flexible\"]) .feature-card--layout-standard {\n min-height: 400px;\n}\n\n/* Content area - grows to push image to bottom (when af-card has stretch) */\n.feature-card__content {\n position: relative;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n z-index: 1;\n /* Desktop default: pt-40px px-32px pb-12px */\n padding: 40px 32px 12px 32px;\n flex: 1 1 auto;\n}\n\n/* Large card content padding: pt-40px px-40px pb-0 */\n:host([card-size=\"large\"]) .feature-card__content {\n padding: 40px 40px 0 40px;\n}\n\n/* ==========================================================================\n Image Area (Standard Layout)\n Figma: 160px height (desktop), 192px height (mobile)\n ========================================================================== */\n\n.feature-card__image-area {\n position: relative;\n width: 100%;\n height: 160px;\n flex-shrink: 0;\n overflow: hidden;\n}\n\n.feature-card__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center top;\n}\n\n/* ==========================================================================\n Typography Lockup Styling\n ========================================================================== */\n\n.feature-card af-typography-lockup {\n --colour-typography-heading-primary: var(--af-typography-heading-primary, var(--typography-heading-primary, #14343b));\n --colour-typography-body-default: var(--af-typography-body-default, var(--typography-body-default, #2b484f));\n}\n\n/* ==========================================================================\n Mobile Responsive Styles (max-width: 768px)\n \n Figma:\n - Full-bleed: 335px × 442px, radius 24px\n - Standard: 335px width, radius 24px\n ========================================================================== */\n\n@media (max-width: 768px) {\n .feature-card {\n border-radius: var(--border-radius-card-level-1, 24px);\n }\n\n /* Mobile fixed widths on host */\n :host([card-size=\"default\"]),\n :host([card-size=\"large\"]) {\n width: 335px;\n }\n\n /* Mobile full-bleed height: 442px */\n :host([card-size=\"default\"]) .feature-card--layout-full-bleed,\n :host([card-size=\"large\"]) .feature-card--layout-full-bleed {\n height: 442px;\n }\n\n /* Mobile flexible minimum heights */\n :host([card-size=\"flexible\"]) .feature-card--layout-standard {\n min-height: 340px;\n }\n\n :host([card-size=\"flexible\"]) .feature-card--layout-full-bleed {\n min-height: 380px;\n }\n\n /* Mobile overlay padding: pt-80px px-24px pb-28px */\n .feature-card__overlay {\n padding: 80px 24px 28px 24px;\n }\n\n /* Mobile content padding: pt-32px px-24px pb-12px */\n .feature-card__content {\n padding: 32px 24px 12px 24px;\n }\n\n /* Mobile image area: 192px height */\n .feature-card__image-area {\n height: 192px;\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\n/**\n * Feature Card molecule component that combines a card with an image.\n * \n * Two layout modes:\n * - `standard`: Theme background with text at top and image at bottom\n * - `full-bleed`: Image covers entire card with text overlay at bottom\n * \n * Responsive: Automatically adapts to mobile viewport (≤768px).\n * \n * Uses af-card atom internally and af-typography-lockup for text hierarchy.\n * \n * @slot - Heading text content\n * @slot body - Description/body text content\n */\n@Component({\n tag: 'af-feature-card',\n styleUrl: 'af-feature-card.css',\n shadow: false,\n scoped: true,\n})\nexport class AfFeatureCard {\n /**\n * Theme variant - sets background color and provides theme context.\n * Only applies to 'standard' layout mode. Defaults to 'mist-green'.\n */\n @Prop() theme?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay' = 'mist-green';\n\n /**\n * Layout mode for the card.\n * - 'standard': Theme background with text at top and image at bottom\n * - 'full-bleed': Image covers entire card with text overlay at bottom\n */\n @Prop() layout: 'standard' | 'full-bleed' = 'standard';\n\n /**\n * Card size variant.\n * - 'default': Fixed 544px × 420px\n * - 'large': Fixed 777px × 480px \n * - 'flexible': Fills container (for grid layouts)\n */\n @Prop({ reflect: true }) cardSize: 'default' | 'large' | 'flexible' = 'default';\n\n /**\n * Heading size for typography lockup (1-5, where 1 is largest).\n */\n @Prop() headingSize: 1 | 2 | 3 | 4 | 5 = 3;\n\n /**\n * Background/feature image URL.\n */\n @Prop() imageSrc?: string;\n\n /**\n * Image alt text for accessibility.\n * Provide meaningful alt text for feature images.\n * Only use empty string for purely decorative images.\n */\n @Prop() imageAlt: string = '';\n\n render() {\n const hasImage = !!this.imageSrc;\n const isFullBleed = this.layout === 'full-bleed';\n\n const wrapperClasses = {\n 'feature-card': true,\n [`feature-card--layout-${this.layout}`]: true,\n [`feature-card--size-${this.cardSize}`]: true,\n };\n\n // Full-bleed mode: image background with overlay\n if (isFullBleed) {\n return (\n <Host>\n <div class={wrapperClasses}>\n {/* Background image */}\n {hasImage && (\n <div class=\"feature-card__background\">\n <img\n src={this.imageSrc}\n alt={this.imageAlt}\n class=\"feature-card__background-image\"\n />\n </div>\n )}\n\n {/* Content overlay with gradient */}\n <div class=\"feature-card__overlay\">\n <af-typography-lockup\n headingSize={this.headingSize}\n textAlignment=\"left\"\n buttonAlignment=\"vertical\"\n >\n <slot></slot>\n <span slot=\"description\">\n <slot name=\"body\"></slot>\n </span>\n </af-typography-lockup>\n </div>\n </div>\n </Host>\n );\n }\n\n // Standard mode: theme card with image at bottom\n const isFlexible = this.cardSize === 'flexible';\n \n return (\n <Host>\n <div class={wrapperClasses}>\n <af-card theme={this.theme} stretch={isFlexible}>\n {/* Content area with typography lockup */}\n <div class=\"feature-card__content\">\n <af-typography-lockup\n headingSize={this.headingSize}\n textAlignment=\"left\"\n buttonAlignment=\"vertical\"\n >\n <slot></slot>\n <span slot=\"description\">\n <slot name=\"body\"></slot>\n </span>\n </af-typography-lockup>\n </div>\n\n {/* Image area at bottom */}\n {hasImage && (\n <div class=\"feature-card__image-area\">\n <img\n src={this.imageSrc}\n alt={this.imageAlt}\n class=\"feature-card__image\"\n />\n </div>\n )}\n </af-card>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -1,71 +0,0 @@
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-tertiary-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-tertiary-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-JepBVz99.js.map
70
-
71
- //# sourceMappingURL=p-JepBVz99.js.map
@@ -1 +0,0 @@
1
- {"file":"p-JepBVz99.js","mappings":";;AAAA,MAAM,eAAe,GAAG,szFAAszF;;MCOj0F,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-tertiary-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-tertiary-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}