@affinda/wc 0.0.14 → 0.0.16

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 (767) hide show
  1. package/dist/affinda/af-aspect-ratio.entry.esm.js.map +1 -1
  2. package/dist/affinda/af-button.entry.esm.js.map +1 -1
  3. package/dist/affinda/af-card.entry.esm.js.map +1 -1
  4. package/dist/affinda/af-checkbox.entry.esm.js.map +1 -0
  5. package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -1
  6. package/dist/affinda/af-feature-accordion.entry.esm.js.map +1 -1
  7. package/dist/affinda/af-feature-card.entry.esm.js.map +1 -0
  8. package/dist/affinda/af-feature-grid.entry.esm.js.map +1 -0
  9. package/dist/affinda/af-fieldset.entry.esm.js.map +1 -0
  10. package/dist/affinda/af-footer.entry.esm.js.map +1 -1
  11. package/dist/affinda/af-grid-callout.entry.esm.js.map +1 -0
  12. package/dist/affinda/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.esm.js.map +1 -1
  13. package/dist/affinda/af-hero-section.entry.esm.js.map +1 -1
  14. package/dist/affinda/af-icon-box.entry.esm.js.map +1 -0
  15. package/dist/affinda/af-icon-button.entry.esm.js.map +1 -1
  16. package/dist/affinda/af-icon-text.entry.esm.js.map +1 -0
  17. package/dist/affinda/af-icon.entry.esm.js.map +1 -0
  18. package/dist/affinda/af-illustrated-card.entry.esm.js.map +1 -0
  19. package/dist/affinda/af-image.entry.esm.js.map +1 -0
  20. package/dist/affinda/af-in-page-banner.entry.esm.js.map +1 -0
  21. package/dist/affinda/af-input.entry.esm.js.map +1 -0
  22. package/dist/affinda/af-logo-well.entry.esm.js.map +1 -1
  23. package/dist/affinda/af-nav-card.entry.esm.js.map +1 -0
  24. package/dist/affinda/af-nav-menu-nest.entry.esm.js.map +1 -0
  25. package/dist/affinda/af-nav-menu.entry.esm.js.map +1 -0
  26. package/dist/affinda/af-number-badge.entry.esm.js.map +1 -0
  27. package/dist/affinda/af-progress-line.entry.esm.js.map +1 -0
  28. package/dist/affinda/af-radio.entry.esm.js.map +1 -0
  29. package/dist/affinda/af-section.entry.esm.js.map +1 -1
  30. package/dist/affinda/af-split-section.entry.esm.js.map +1 -0
  31. package/dist/affinda/af-switch.entry.esm.js.map +1 -0
  32. package/dist/affinda/af-tab-bar.entry.esm.js.map +1 -0
  33. package/dist/affinda/af-tab.entry.esm.js.map +1 -0
  34. package/dist/affinda/af-tag.entry.esm.js.map +1 -0
  35. package/dist/affinda/af-testimonial-carousel.entry.esm.js.map +1 -1
  36. package/dist/affinda/af-testimonial-stat.entry.esm.js.map +1 -1
  37. package/dist/affinda/af-testimonial.entry.esm.js.map +1 -1
  38. package/dist/affinda/af-text-image-nest.entry.esm.js.map +1 -0
  39. package/dist/affinda/af-text-image.entry.esm.js.map +1 -0
  40. package/dist/affinda/af-textarea.entry.esm.js.map +1 -0
  41. package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
  42. package/dist/affinda/af-video-container.entry.esm.js.map +1 -0
  43. package/dist/affinda/affinda.css +1 -1
  44. package/dist/affinda/affinda.esm.js +1 -1
  45. package/dist/affinda/index.esm.js +1 -1
  46. package/dist/affinda/index.esm.js.map +1 -1
  47. package/dist/affinda/p-0cd160a4.entry.js +2 -0
  48. package/dist/affinda/p-0cd160a4.entry.js.map +1 -0
  49. package/dist/affinda/p-10801ee1.entry.js +2 -0
  50. package/dist/affinda/p-10801ee1.entry.js.map +1 -0
  51. package/dist/affinda/p-1d65fd18.entry.js +2 -0
  52. package/dist/affinda/p-1d65fd18.entry.js.map +1 -0
  53. package/dist/affinda/p-1d9e532f.entry.js +2 -0
  54. package/dist/affinda/p-231ba1d0.entry.js +2 -0
  55. package/dist/affinda/p-231ba1d0.entry.js.map +1 -0
  56. package/dist/affinda/p-2b4dc22c.entry.js +2 -0
  57. package/dist/affinda/p-2b4dc22c.entry.js.map +1 -0
  58. package/dist/affinda/{p-a49dc8ac.entry.js → p-31d4c1a4.entry.js} +2 -2
  59. package/dist/affinda/p-3d3c9f62.entry.js +2 -0
  60. package/dist/affinda/p-3d3c9f62.entry.js.map +1 -0
  61. package/dist/affinda/p-3f691578.entry.js +2 -0
  62. package/dist/affinda/p-3f691578.entry.js.map +1 -0
  63. package/dist/affinda/p-425253ee.entry.js +2 -0
  64. package/dist/affinda/{p-52f7ea33.entry.js.map → p-425253ee.entry.js.map} +1 -1
  65. package/dist/affinda/p-44b25840.entry.js +2 -0
  66. package/dist/affinda/p-44b25840.entry.js.map +1 -0
  67. package/dist/affinda/p-45e1923c.entry.js +2 -0
  68. package/dist/affinda/p-45e1923c.entry.js.map +1 -0
  69. package/dist/affinda/p-52ab3bf0.entry.js +2 -0
  70. package/dist/affinda/p-52ab3bf0.entry.js.map +1 -0
  71. package/dist/affinda/p-53ae16fe.entry.js +2 -0
  72. package/dist/affinda/p-53b5149d.entry.js +2 -0
  73. package/dist/affinda/p-53b5149d.entry.js.map +1 -0
  74. package/dist/affinda/p-57713942.entry.js +2 -0
  75. package/dist/affinda/p-57713942.entry.js.map +1 -0
  76. package/dist/affinda/p-5bbf2c8c.entry.js +2 -0
  77. package/dist/affinda/p-5bbf2c8c.entry.js.map +1 -0
  78. package/dist/affinda/p-697bf0b7.entry.js +2 -0
  79. package/dist/affinda/p-697bf0b7.entry.js.map +1 -0
  80. package/dist/affinda/p-6b2d0ff4.entry.js +2 -0
  81. package/dist/affinda/p-6b2d0ff4.entry.js.map +1 -0
  82. package/dist/affinda/p-71144002.entry.js +2 -0
  83. package/dist/affinda/p-71144002.entry.js.map +1 -0
  84. package/dist/affinda/{p-dec4c4d5.entry.js → p-72f02343.entry.js} +2 -2
  85. package/dist/affinda/p-77bf8a81.entry.js +2 -0
  86. package/dist/affinda/p-77bf8a81.entry.js.map +1 -0
  87. package/dist/affinda/p-7f20fbe0.entry.js +2 -0
  88. package/dist/affinda/p-7f20fbe0.entry.js.map +1 -0
  89. package/dist/affinda/p-81571029.entry.js +2 -0
  90. package/dist/affinda/p-81571029.entry.js.map +1 -0
  91. package/dist/affinda/p-85a78bcf.entry.js +2 -0
  92. package/dist/affinda/p-85a78bcf.entry.js.map +1 -0
  93. package/dist/affinda/p-861f4f57.entry.js +2 -0
  94. package/dist/affinda/p-861f4f57.entry.js.map +1 -0
  95. package/dist/affinda/p-864778d0.entry.js +2 -0
  96. package/dist/affinda/p-864778d0.entry.js.map +1 -0
  97. package/dist/affinda/p-8ea22b5d.entry.js +2 -0
  98. package/dist/affinda/p-8ea22b5d.entry.js.map +1 -0
  99. package/dist/affinda/{p-97f9f774.entry.js → p-96eac3af.entry.js} +2 -2
  100. package/dist/affinda/p-98901734.entry.js +2 -0
  101. package/dist/affinda/p-98901734.entry.js.map +1 -0
  102. package/dist/affinda/p-9f470d8b.entry.js +2 -0
  103. package/dist/affinda/p-9f470d8b.entry.js.map +1 -0
  104. package/dist/affinda/p-BmU_CFQ4.js +3 -0
  105. package/dist/affinda/p-BmU_CFQ4.js.map +1 -0
  106. package/dist/affinda/p-a36abb83.entry.js +2 -0
  107. package/dist/affinda/{p-bf4543ff.entry.js.map → p-a36abb83.entry.js.map} +1 -1
  108. package/dist/affinda/p-a4e4eb4d.entry.js +2 -0
  109. package/dist/affinda/{p-d3b2ab0e.entry.js.map → p-a4e4eb4d.entry.js.map} +1 -1
  110. package/dist/affinda/p-a6365e94.entry.js +2 -0
  111. package/dist/affinda/p-a6365e94.entry.js.map +1 -0
  112. package/dist/affinda/p-aaa28806.entry.js +2 -0
  113. package/dist/affinda/p-aaa28806.entry.js.map +1 -0
  114. package/dist/affinda/p-acbbe39a.entry.js +2 -0
  115. package/dist/affinda/{p-ce89c4f1.entry.js.map → p-acbbe39a.entry.js.map} +1 -1
  116. package/dist/affinda/p-b17735c9.entry.js +2 -0
  117. package/dist/affinda/p-b17735c9.entry.js.map +1 -0
  118. package/dist/affinda/p-b3b0ed0c.entry.js +2 -0
  119. package/dist/affinda/p-b3b0ed0c.entry.js.map +1 -0
  120. package/dist/affinda/p-be049760.entry.js +2 -0
  121. package/dist/affinda/p-be049760.entry.js.map +1 -0
  122. package/dist/affinda/p-c0ee2420.entry.js +2 -0
  123. package/dist/affinda/p-c0ee2420.entry.js.map +1 -0
  124. package/dist/affinda/{p-3a9646e6.entry.js → p-c11088fa.entry.js} +2 -2
  125. package/dist/affinda/p-c298b370.entry.js +2 -0
  126. package/dist/affinda/p-c298b370.entry.js.map +1 -0
  127. package/dist/affinda/p-c3e31251.entry.js +2 -0
  128. package/dist/affinda/p-c3e31251.entry.js.map +1 -0
  129. package/dist/affinda/p-ce3356f1.entry.js +2 -0
  130. package/dist/affinda/p-ce3356f1.entry.js.map +1 -0
  131. package/dist/affinda/p-df148383.entry.js +2 -0
  132. package/dist/affinda/{p-07990b1f.entry.js.map → p-df148383.entry.js.map} +1 -1
  133. package/dist/affinda/{p-f8ac0120.entry.js → p-e5af21c2.entry.js} +2 -2
  134. package/dist/affinda/p-e5d9913c.entry.js +2 -0
  135. package/dist/affinda/p-e5d9913c.entry.js.map +1 -0
  136. package/dist/affinda/p-ea06c83b.entry.js +2 -0
  137. package/dist/affinda/p-ea06c83b.entry.js.map +1 -0
  138. package/dist/affinda/p-f45b0060.entry.js +2 -0
  139. package/dist/affinda/{p-050f98cd.entry.js.map → p-f45b0060.entry.js.map} +1 -1
  140. package/dist/cjs/af-aspect-ratio.cjs.entry.js +2 -2
  141. package/dist/cjs/af-aspect-ratio.entry.cjs.js.map +1 -1
  142. package/dist/cjs/af-button-group.cjs.entry.js +2 -2
  143. package/dist/cjs/af-button.cjs.entry.js +25 -12
  144. package/dist/cjs/af-button.entry.cjs.js.map +1 -1
  145. package/dist/cjs/af-card.cjs.entry.js +17 -7
  146. package/dist/cjs/af-card.entry.cjs.js.map +1 -1
  147. package/dist/cjs/af-checkbox.cjs.entry.js +58 -0
  148. package/dist/cjs/af-checkbox.entry.cjs.js.map +1 -0
  149. package/dist/cjs/af-client-carousel.cjs.entry.js +5 -7
  150. package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -1
  151. package/dist/cjs/af-color-swatch.cjs.entry.js +1 -1
  152. package/dist/cjs/af-contact-item.cjs.entry.js +2 -2
  153. package/dist/cjs/af-container.cjs.entry.js +1 -1
  154. package/dist/cjs/af-feature-accordion.cjs.entry.js +4 -4
  155. package/dist/cjs/af-feature-accordion.entry.cjs.js.map +1 -1
  156. package/dist/cjs/af-feature-card.cjs.entry.js +59 -0
  157. package/dist/cjs/af-feature-card.entry.cjs.js.map +1 -0
  158. package/dist/cjs/af-feature-grid.cjs.entry.js +93 -0
  159. package/dist/cjs/af-feature-grid.entry.cjs.js.map +1 -0
  160. package/dist/cjs/af-fieldset.cjs.entry.js +37 -0
  161. package/dist/cjs/af-fieldset.entry.cjs.js.map +1 -0
  162. package/dist/cjs/af-footer-column.cjs.entry.js +2 -2
  163. package/dist/cjs/af-footer-link.cjs.entry.js +2 -2
  164. package/dist/cjs/af-footer.cjs.entry.js +3 -3
  165. package/dist/cjs/af-footer.entry.cjs.js.map +1 -1
  166. package/dist/cjs/af-grid-callout.cjs.entry.js +51 -0
  167. package/dist/cjs/af-grid-callout.entry.cjs.js.map +1 -0
  168. package/dist/cjs/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.cjs.js.map +1 -1
  169. package/dist/cjs/af-heading_5.cjs.entry.js +69 -20
  170. package/dist/cjs/af-hero-section.cjs.entry.js +11 -5
  171. package/dist/cjs/af-hero-section.entry.cjs.js.map +1 -1
  172. package/dist/cjs/af-icon-box.cjs.entry.js +30 -0
  173. package/dist/cjs/af-icon-box.entry.cjs.js.map +1 -0
  174. package/dist/cjs/af-icon-button.cjs.entry.js +6 -3
  175. package/dist/cjs/af-icon-button.entry.cjs.js.map +1 -1
  176. package/dist/cjs/af-icon-text.cjs.entry.js +36 -0
  177. package/dist/cjs/af-icon-text.entry.cjs.js.map +1 -0
  178. package/dist/cjs/af-icon.cjs.entry.js +352 -0
  179. package/dist/cjs/af-icon.entry.cjs.js.map +1 -0
  180. package/dist/cjs/af-illustrated-card.cjs.entry.js +36 -0
  181. package/dist/cjs/af-illustrated-card.entry.cjs.js.map +1 -0
  182. package/dist/cjs/af-image.cjs.entry.js +18 -0
  183. package/dist/cjs/af-image.entry.cjs.js.map +1 -0
  184. package/dist/cjs/af-in-page-banner.cjs.entry.js +47 -0
  185. package/dist/cjs/af-in-page-banner.entry.cjs.js.map +1 -0
  186. package/dist/cjs/af-input.cjs.entry.js +104 -0
  187. package/dist/cjs/af-input.entry.cjs.js.map +1 -0
  188. package/dist/cjs/af-logo-well.cjs.entry.js +3 -3
  189. package/dist/cjs/af-logo-well.entry.cjs.js.map +1 -1
  190. package/dist/cjs/af-nav-card.cjs.entry.js +37 -0
  191. package/dist/cjs/af-nav-card.entry.cjs.js.map +1 -0
  192. package/dist/cjs/af-nav-menu-nest.cjs.entry.js +43 -0
  193. package/dist/cjs/af-nav-menu-nest.entry.cjs.js.map +1 -0
  194. package/dist/cjs/af-nav-menu.cjs.entry.js +41 -0
  195. package/dist/cjs/af-nav-menu.entry.cjs.js.map +1 -0
  196. package/dist/cjs/af-number-badge.cjs.entry.js +42 -0
  197. package/dist/cjs/af-number-badge.entry.cjs.js.map +1 -0
  198. package/dist/cjs/af-progress-line.cjs.entry.js +33 -0
  199. package/dist/cjs/af-progress-line.entry.cjs.js.map +1 -0
  200. package/dist/cjs/af-radio.cjs.entry.js +43 -0
  201. package/dist/cjs/af-radio.entry.cjs.js.map +1 -0
  202. package/dist/cjs/af-section.cjs.entry.js +6 -6
  203. package/dist/cjs/af-section.entry.cjs.js.map +1 -1
  204. package/dist/cjs/af-social-link.cjs.entry.js +2 -2
  205. package/dist/cjs/af-split-section.cjs.entry.js +41 -0
  206. package/dist/cjs/af-split-section.entry.cjs.js.map +1 -0
  207. package/dist/cjs/af-switch.cjs.entry.js +48 -0
  208. package/dist/cjs/af-switch.entry.cjs.js.map +1 -0
  209. package/dist/cjs/af-tab-bar.cjs.entry.js +88 -0
  210. package/dist/cjs/af-tab-bar.entry.cjs.js.map +1 -0
  211. package/dist/cjs/af-tab.cjs.entry.js +64 -0
  212. package/dist/cjs/af-tab.entry.cjs.js.map +1 -0
  213. package/dist/cjs/af-tag.cjs.entry.js +37 -0
  214. package/dist/cjs/af-tag.entry.cjs.js.map +1 -0
  215. package/dist/cjs/af-testimonial-carousel.cjs.entry.js +27 -15
  216. package/dist/cjs/af-testimonial-carousel.entry.cjs.js.map +1 -1
  217. package/dist/cjs/af-testimonial-stat.cjs.entry.js +3 -3
  218. package/dist/cjs/af-testimonial-stat.entry.cjs.js.map +1 -1
  219. package/dist/cjs/af-testimonial.cjs.entry.js +27 -3
  220. package/dist/cjs/af-testimonial.entry.cjs.js.map +1 -1
  221. package/dist/cjs/af-text-image-nest.cjs.entry.js +30 -0
  222. package/dist/cjs/af-text-image-nest.entry.cjs.js.map +1 -0
  223. package/dist/cjs/af-text-image.cjs.entry.js +63 -0
  224. package/dist/cjs/af-text-image.entry.cjs.js.map +1 -0
  225. package/dist/cjs/af-textarea.cjs.entry.js +93 -0
  226. package/dist/cjs/af-textarea.entry.cjs.js.map +1 -0
  227. package/dist/cjs/af-typography-lockup.cjs.entry.js +7 -7
  228. package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
  229. package/dist/cjs/af-video-container.cjs.entry.js +35 -0
  230. package/dist/cjs/af-video-container.entry.cjs.js.map +1 -0
  231. package/dist/cjs/affinda.cjs.js +2 -2
  232. package/dist/cjs/{index-DfEVhbS6.js → index-ybEiHT0b.js} +130 -6
  233. package/dist/cjs/index-ybEiHT0b.js.map +1 -0
  234. package/dist/cjs/index.cjs.js +23 -1
  235. package/dist/cjs/index.cjs.js.map +1 -1
  236. package/dist/cjs/loader.cjs.js +2 -2
  237. package/dist/collection/assets/backgrounds/wave-overlay-inkwell.svg +3 -0
  238. package/dist/collection/assets/backgrounds/wave-overlay-mist-green.svg +3 -0
  239. package/dist/collection/assets/backgrounds/wave-overlay-soft-clay.svg +3 -0
  240. package/dist/collection/assets/backgrounds/wave-overlay-white-ivory.svg +3 -0
  241. package/dist/collection/assets/logo-affinda.svg +19 -0
  242. package/dist/collection/collection-manifest.json +28 -2
  243. package/dist/collection/components/af-aspect-ratio/af-aspect-ratio.css +2 -0
  244. package/dist/collection/components/af-button/af-button.css +177 -64
  245. package/dist/collection/components/af-button/af-button.js +50 -42
  246. package/dist/collection/components/af-button/af-button.js.map +1 -1
  247. package/dist/collection/components/af-button-group/af-button-group.js +1 -1
  248. package/dist/collection/components/af-card/af-card.css +96 -64
  249. package/dist/collection/components/af-card/af-card.js +32 -33
  250. package/dist/collection/components/af-card/af-card.js.map +1 -1
  251. package/dist/collection/components/af-checkbox/af-checkbox.css +96 -0
  252. package/dist/collection/components/af-checkbox/af-checkbox.js +186 -0
  253. package/dist/collection/components/af-checkbox/af-checkbox.js.map +1 -0
  254. package/dist/collection/components/af-client-carousel/af-client-carousel.css +77 -32
  255. package/dist/collection/components/af-client-carousel/af-client-carousel.js +21 -33
  256. package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -1
  257. package/dist/collection/components/af-contact-item/af-contact-item.js +1 -1
  258. package/dist/collection/components/af-feature-accordion/af-feature-accordion.css +21 -35
  259. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +15 -5
  260. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js.map +1 -1
  261. package/dist/collection/components/af-feature-card/af-feature-card.css +219 -0
  262. package/dist/collection/components/af-feature-card/af-feature-card.js +199 -0
  263. package/dist/collection/components/af-feature-card/af-feature-card.js.map +1 -0
  264. package/dist/collection/components/af-feature-grid/af-feature-grid.css +119 -0
  265. package/dist/collection/components/af-feature-grid/af-feature-grid.js +156 -0
  266. package/dist/collection/components/af-feature-grid/af-feature-grid.js.map +1 -0
  267. package/dist/collection/components/af-fieldset/af-fieldset.css +61 -0
  268. package/dist/collection/components/af-fieldset/af-fieldset.js +109 -0
  269. package/dist/collection/components/af-fieldset/af-fieldset.js.map +1 -0
  270. package/dist/collection/components/af-footer/af-footer.css +1 -1
  271. package/dist/collection/components/af-footer/af-footer.js +1 -1
  272. package/dist/collection/components/af-footer-column/af-footer-column.js +1 -1
  273. package/dist/collection/components/af-footer-link/af-footer-link.js +1 -1
  274. package/dist/collection/components/af-grid-callout/af-grid-callout.css +191 -0
  275. package/dist/collection/components/af-grid-callout/af-grid-callout.js +191 -0
  276. package/dist/collection/components/af-grid-callout/af-grid-callout.js.map +1 -0
  277. package/dist/collection/components/af-heading/af-heading.css +25 -33
  278. package/dist/collection/components/af-heading/af-heading.js +8 -26
  279. package/dist/collection/components/af-heading/af-heading.js.map +1 -1
  280. package/dist/collection/components/af-hero-section/af-hero-section.css +118 -12
  281. package/dist/collection/components/af-hero-section/af-hero-section.js +102 -10
  282. package/dist/collection/components/af-hero-section/af-hero-section.js.map +1 -1
  283. package/dist/collection/components/af-icon/af-icon.css +28 -0
  284. package/dist/collection/components/af-icon/af-icon.js +116 -0
  285. package/dist/collection/components/af-icon/af-icon.js.map +1 -0
  286. package/dist/collection/components/af-icon-box/af-icon-box.css +36 -0
  287. package/dist/collection/components/af-icon-box/af-icon-box.js +97 -0
  288. package/dist/collection/components/af-icon-box/af-icon-box.js.map +1 -0
  289. package/dist/collection/components/af-icon-button/af-icon-button.css +42 -54
  290. package/dist/collection/components/af-icon-button/af-icon-button.js +8 -5
  291. package/dist/collection/components/af-icon-button/af-icon-button.js.map +1 -1
  292. package/dist/collection/components/af-icon-text/af-icon-text.css +43 -0
  293. package/dist/collection/components/af-icon-text/af-icon-text.js +150 -0
  294. package/dist/collection/components/af-icon-text/af-icon-text.js.map +1 -0
  295. package/dist/collection/components/af-illustrated-card/af-illustrated-card.css +99 -0
  296. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +115 -0
  297. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +1 -0
  298. package/dist/collection/components/af-image/af-image.css +27 -0
  299. package/dist/collection/components/af-image/af-image.js +65 -0
  300. package/dist/collection/components/af-image/af-image.js.map +1 -0
  301. package/dist/collection/components/af-in-page-banner/af-in-page-banner.css +379 -0
  302. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js +266 -0
  303. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +1 -0
  304. package/dist/collection/components/af-input/af-input.css +246 -0
  305. package/dist/collection/components/af-input/af-input.js +527 -0
  306. package/dist/collection/components/af-input/af-input.js.map +1 -0
  307. package/dist/collection/components/af-logo/af-logo.css +4 -3
  308. package/dist/collection/components/af-logo/af-logo.js +1 -1
  309. package/dist/collection/components/af-logo/af-logo.js.map +1 -1
  310. package/dist/collection/components/af-logo-well/af-logo-well.css +15 -4
  311. package/dist/collection/components/af-logo-well/af-logo-well.js +1 -1
  312. package/dist/collection/components/af-nav-card/af-nav-card.css +70 -0
  313. package/dist/collection/components/af-nav-card/af-nav-card.js +138 -0
  314. package/dist/collection/components/af-nav-card/af-nav-card.js.map +1 -0
  315. package/dist/collection/components/af-nav-item/af-nav-item.css +161 -28
  316. package/dist/collection/components/af-nav-item/af-nav-item.js +27 -0
  317. package/dist/collection/components/af-nav-item/af-nav-item.js.map +1 -1
  318. package/dist/collection/components/af-nav-menu/af-nav-menu.css +91 -0
  319. package/dist/collection/components/af-nav-menu/af-nav-menu.js +131 -0
  320. package/dist/collection/components/af-nav-menu/af-nav-menu.js.map +1 -0
  321. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.css +79 -0
  322. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +129 -0
  323. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js.map +1 -0
  324. package/dist/collection/components/af-navbar/af-navbar.css +91 -8
  325. package/dist/collection/components/af-navbar/af-navbar.js +113 -3
  326. package/dist/collection/components/af-navbar/af-navbar.js.map +1 -1
  327. package/dist/collection/components/af-number-badge/af-number-badge.css +30 -0
  328. package/dist/collection/components/af-number-badge/af-number-badge.js +131 -0
  329. package/dist/collection/components/af-number-badge/af-number-badge.js.map +1 -0
  330. package/dist/collection/components/af-progress-line/af-progress-line.css +44 -0
  331. package/dist/collection/components/af-progress-line/af-progress-line.js +86 -0
  332. package/dist/collection/components/af-progress-line/af-progress-line.js.map +1 -0
  333. package/dist/collection/components/af-radio/af-radio.css +97 -0
  334. package/dist/collection/components/af-radio/af-radio.js +150 -0
  335. package/dist/collection/components/af-radio/af-radio.js.map +1 -0
  336. package/dist/collection/components/af-section/af-section.css +230 -24
  337. package/dist/collection/components/af-section/af-section.js +11 -10
  338. package/dist/collection/components/af-section/af-section.js.map +1 -1
  339. package/dist/collection/components/af-social-link/af-social-link.js +1 -1
  340. package/dist/collection/components/af-split-section/af-split-section.css +46 -0
  341. package/dist/collection/components/af-split-section/af-split-section.js +145 -0
  342. package/dist/collection/components/af-split-section/af-split-section.js.map +1 -0
  343. package/dist/collection/components/af-switch/af-switch.css +104 -0
  344. package/dist/collection/components/af-switch/af-switch.js +155 -0
  345. package/dist/collection/components/af-switch/af-switch.js.map +1 -0
  346. package/dist/collection/components/af-tab/af-tab.css +182 -0
  347. package/dist/collection/components/af-tab/af-tab.js +251 -0
  348. package/dist/collection/components/af-tab/af-tab.js.map +1 -0
  349. package/dist/collection/components/af-tab-bar/af-tab-bar.css +87 -0
  350. package/dist/collection/components/af-tab-bar/af-tab-bar.js +171 -0
  351. package/dist/collection/components/af-tab-bar/af-tab-bar.js.map +1 -0
  352. package/dist/collection/components/af-tag/af-tag.css +92 -0
  353. package/dist/collection/components/af-tag/af-tag.js +126 -0
  354. package/dist/collection/components/af-tag/af-tag.js.map +1 -0
  355. package/dist/collection/components/af-testimonial/af-testimonial.css +30 -46
  356. package/dist/collection/components/af-testimonial/af-testimonial.js +118 -1
  357. package/dist/collection/components/af-testimonial/af-testimonial.js.map +1 -1
  358. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.css +6 -66
  359. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +48 -13
  360. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js.map +1 -1
  361. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.css +9 -16
  362. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
  363. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js.map +1 -1
  364. package/dist/collection/components/af-text/af-text.css +13 -36
  365. package/dist/collection/components/af-text/af-text.js +10 -28
  366. package/dist/collection/components/af-text/af-text.js.map +1 -1
  367. package/dist/collection/components/af-text-image/af-text-image.css +228 -0
  368. package/dist/collection/components/af-text-image/af-text-image.js +173 -0
  369. package/dist/collection/components/af-text-image/af-text-image.js.map +1 -0
  370. package/dist/collection/components/af-text-image-nest/af-text-image-nest.css +110 -0
  371. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +71 -0
  372. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js.map +1 -0
  373. package/dist/collection/components/af-textarea/af-textarea.css +175 -0
  374. package/dist/collection/components/af-textarea/af-textarea.js +443 -0
  375. package/dist/collection/components/af-textarea/af-textarea.js.map +1 -0
  376. package/dist/collection/components/af-typography-lockup/af-typography-lockup.css +126 -40
  377. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +5 -5
  378. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +1 -1
  379. package/dist/collection/components/af-video-container/af-video-container.css +102 -0
  380. package/dist/collection/components/af-video-container/af-video-container.js +142 -0
  381. package/dist/collection/components/af-video-container/af-video-container.js.map +1 -0
  382. package/dist/collection/components.js +11 -0
  383. package/dist/collection/components.js.map +1 -1
  384. package/dist/components/af-aspect-ratio.js +1 -1
  385. package/dist/components/af-button-group.js +1 -1
  386. package/dist/components/af-button.js +1 -1
  387. package/dist/components/af-card.js +1 -39
  388. package/dist/components/af-card.js.map +1 -1
  389. package/dist/components/{af-cta-section.d.ts → af-checkbox.d.ts} +4 -4
  390. package/dist/components/af-checkbox.js +9 -0
  391. package/dist/components/af-checkbox.js.map +1 -0
  392. package/dist/components/af-client-carousel.js +6 -9
  393. package/dist/components/af-client-carousel.js.map +1 -1
  394. package/dist/components/af-color-swatch.js +1 -1
  395. package/dist/components/af-contact-item.js +2 -2
  396. package/dist/components/af-container.js +1 -1
  397. package/dist/components/af-feature-accordion.js +4 -4
  398. package/dist/components/af-feature-accordion.js.map +1 -1
  399. package/dist/components/af-feature-card.d.ts +11 -0
  400. package/dist/components/af-feature-card.js +9 -0
  401. package/dist/components/af-feature-card.js.map +1 -0
  402. package/dist/components/af-feature-grid.d.ts +11 -0
  403. package/dist/components/af-feature-grid.js +124 -0
  404. package/dist/components/af-feature-grid.js.map +1 -0
  405. package/dist/components/af-fieldset.d.ts +11 -0
  406. package/dist/components/af-fieldset.js +9 -0
  407. package/dist/components/af-fieldset.js.map +1 -0
  408. package/dist/components/af-footer-column.js +2 -2
  409. package/dist/components/af-footer-link.js +2 -2
  410. package/dist/components/af-footer.js +3 -3
  411. package/dist/components/af-footer.js.map +1 -1
  412. package/dist/components/af-grid-callout.d.ts +11 -0
  413. package/dist/components/af-grid-callout.js +82 -0
  414. package/dist/components/af-grid-callout.js.map +1 -0
  415. package/dist/components/af-heading.js +1 -1
  416. package/dist/components/af-hero-section.js +25 -9
  417. package/dist/components/af-hero-section.js.map +1 -1
  418. package/dist/components/af-icon-box.d.ts +11 -0
  419. package/dist/components/af-icon-box.js +9 -0
  420. package/dist/components/af-icon-box.js.map +1 -0
  421. package/dist/components/af-icon-button.js +1 -1
  422. package/dist/components/af-icon-text.d.ts +11 -0
  423. package/dist/components/af-icon-text.js +78 -0
  424. package/dist/components/af-icon-text.js.map +1 -0
  425. package/dist/components/af-icon.d.ts +11 -0
  426. package/dist/components/af-icon.js +9 -0
  427. package/dist/components/af-icon.js.map +1 -0
  428. package/dist/components/af-illustrated-card.d.ts +11 -0
  429. package/dist/components/af-illustrated-card.js +9 -0
  430. package/dist/components/af-illustrated-card.js.map +1 -0
  431. package/dist/components/af-image.d.ts +11 -0
  432. package/dist/components/af-image.js +9 -0
  433. package/dist/components/af-image.js.map +1 -0
  434. package/dist/components/af-in-page-banner.d.ts +11 -0
  435. package/dist/components/af-in-page-banner.js +82 -0
  436. package/dist/components/af-in-page-banner.js.map +1 -0
  437. package/dist/components/af-input.d.ts +11 -0
  438. package/dist/components/af-input.js +9 -0
  439. package/dist/components/af-input.js.map +1 -0
  440. package/dist/components/af-logo-well.js +3 -3
  441. package/dist/components/af-logo-well.js.map +1 -1
  442. package/dist/components/af-logo.js +1 -1
  443. package/dist/components/af-nav-card.d.ts +11 -0
  444. package/dist/components/af-nav-card.js +63 -0
  445. package/dist/components/af-nav-card.js.map +1 -0
  446. package/dist/components/af-nav-item.js +1 -1
  447. package/dist/components/af-nav-menu-nest.d.ts +11 -0
  448. package/dist/components/af-nav-menu-nest.js +67 -0
  449. package/dist/components/af-nav-menu-nest.js.map +1 -0
  450. package/dist/components/af-nav-menu.d.ts +11 -0
  451. package/dist/components/af-nav-menu.js +66 -0
  452. package/dist/components/af-nav-menu.js.map +1 -0
  453. package/dist/components/af-navbar.js +1 -1
  454. package/dist/components/af-number-badge.d.ts +11 -0
  455. package/dist/components/af-number-badge.js +66 -0
  456. package/dist/components/af-number-badge.js.map +1 -0
  457. package/dist/components/af-progress-line.d.ts +11 -0
  458. package/dist/components/af-progress-line.js +9 -0
  459. package/dist/components/af-progress-line.js.map +1 -0
  460. package/dist/components/af-radio.d.ts +11 -0
  461. package/dist/components/af-radio.js +9 -0
  462. package/dist/components/af-radio.js.map +1 -0
  463. package/dist/components/af-section.js +8 -8
  464. package/dist/components/af-section.js.map +1 -1
  465. package/dist/components/af-social-link.js +2 -2
  466. package/dist/components/af-split-section.d.ts +11 -0
  467. package/dist/components/af-split-section.js +71 -0
  468. package/dist/components/af-split-section.js.map +1 -0
  469. package/dist/components/af-switch.d.ts +11 -0
  470. package/dist/components/af-switch.js +9 -0
  471. package/dist/components/af-switch.js.map +1 -0
  472. package/dist/components/af-tab-bar.d.ts +11 -0
  473. package/dist/components/af-tab-bar.js +9 -0
  474. package/dist/components/af-tab-bar.js.map +1 -0
  475. package/dist/components/af-tab.d.ts +11 -0
  476. package/dist/components/af-tab.js +9 -0
  477. package/dist/components/af-tab.js.map +1 -0
  478. package/dist/components/af-tag.d.ts +11 -0
  479. package/dist/components/af-tag.js +9 -0
  480. package/dist/components/af-tag.js.map +1 -0
  481. package/dist/components/af-testimonial-carousel.js +35 -17
  482. package/dist/components/af-testimonial-carousel.js.map +1 -1
  483. package/dist/components/af-testimonial-stat.js +16 -4
  484. package/dist/components/af-testimonial-stat.js.map +1 -1
  485. package/dist/components/af-testimonial.js +56 -5
  486. package/dist/components/af-testimonial.js.map +1 -1
  487. package/dist/components/af-text-image-nest.d.ts +11 -0
  488. package/dist/components/af-text-image-nest.js +51 -0
  489. package/dist/components/af-text-image-nest.js.map +1 -0
  490. package/dist/components/af-text-image.d.ts +11 -0
  491. package/dist/components/af-text-image.js +94 -0
  492. package/dist/components/af-text-image.js.map +1 -0
  493. package/dist/components/af-text.js +1 -1
  494. package/dist/components/af-textarea.d.ts +11 -0
  495. package/dist/components/af-textarea.js +9 -0
  496. package/dist/components/af-textarea.js.map +1 -0
  497. package/dist/components/af-typography-lockup.js +1 -1
  498. package/dist/components/af-video-container.d.ts +11 -0
  499. package/dist/components/af-video-container.js +70 -0
  500. package/dist/components/af-video-container.js.map +1 -0
  501. package/dist/components/index.js +24 -13
  502. package/dist/components/index.js.map +1 -1
  503. package/dist/components/{p-BBivIwbE.js → p-6uEhsUaO.js} +3 -3
  504. package/dist/components/{p-BBivIwbE.js.map → p-6uEhsUaO.js.map} +1 -1
  505. package/dist/components/{p-PLXzXWgX.js → p-BHKA-yEm.js} +4 -4
  506. package/dist/components/p-BHKA-yEm.js.map +1 -0
  507. package/dist/components/p-BMp8QbY-.js +68 -0
  508. package/dist/components/p-BMp8QbY-.js.map +1 -0
  509. package/dist/components/p-BRN73McC.js +59 -0
  510. package/dist/components/p-BRN73McC.js.map +1 -0
  511. package/dist/components/p-BRsO61_R.js +58 -0
  512. package/dist/components/p-BRsO61_R.js.map +1 -0
  513. package/dist/components/p-BXZ7aJQf.js +372 -0
  514. package/dist/components/p-BXZ7aJQf.js.map +1 -0
  515. package/dist/components/p-Bh4YP9vE.js +74 -0
  516. package/dist/components/p-Bh4YP9vE.js.map +1 -0
  517. package/dist/components/p-Br0VERLB.js +81 -0
  518. package/dist/components/p-Br0VERLB.js.map +1 -0
  519. package/dist/components/{p-7a3XpKXs.js → p-ByHIHg3l.js} +4 -4
  520. package/dist/components/{p-7a3XpKXs.js.map → p-ByHIHg3l.js.map} +1 -1
  521. package/dist/components/p-C0f6y_zg.js +94 -0
  522. package/dist/components/p-C0f6y_zg.js.map +1 -0
  523. package/dist/components/p-CCAq3Zj6.js +68 -0
  524. package/dist/components/p-CCAq3Zj6.js.map +1 -0
  525. package/dist/components/p-CZyCImor.js +127 -0
  526. package/dist/components/p-CZyCImor.js.map +1 -0
  527. package/dist/components/p-C_M8AOaj.js +65 -0
  528. package/dist/components/p-C_M8AOaj.js.map +1 -0
  529. package/dist/components/p-Cqp0DdgH.js +58 -0
  530. package/dist/components/p-Cqp0DdgH.js.map +1 -0
  531. package/dist/components/{p-Dt4Fpr3O.js → p-CxngDK-N.js} +122 -8
  532. package/dist/components/p-CxngDK-N.js.map +1 -0
  533. package/dist/components/{p-BkEmrXbw.js → p-D3UZ60qM.js} +3 -3
  534. package/dist/components/{p-BkEmrXbw.js.map → p-D3UZ60qM.js.map} +1 -1
  535. package/dist/components/p-D99aXp3U.js +35 -0
  536. package/dist/components/p-D99aXp3U.js.map +1 -0
  537. package/dist/components/p-DBnL9UHx.js +91 -0
  538. package/dist/components/p-DBnL9UHx.js.map +1 -0
  539. package/dist/components/p-DOkvrcIE.js +50 -0
  540. package/dist/components/p-DOkvrcIE.js.map +1 -0
  541. package/dist/components/p-DW5DrJlQ.js +70 -0
  542. package/dist/components/p-DW5DrJlQ.js.map +1 -0
  543. package/dist/components/p-DZ-qivXD.js +55 -0
  544. package/dist/components/p-DZ-qivXD.js.map +1 -0
  545. package/dist/components/p-DhdRcSve.js +89 -0
  546. package/dist/components/p-DhdRcSve.js.map +1 -0
  547. package/dist/components/p-Dvi1lz3x.js +53 -0
  548. package/dist/components/p-Dvi1lz3x.js.map +1 -0
  549. package/dist/components/p-DzkSL2bi.js +141 -0
  550. package/dist/components/p-DzkSL2bi.js.map +1 -0
  551. package/dist/components/p-JepBVz99.js +71 -0
  552. package/dist/components/p-JepBVz99.js.map +1 -0
  553. package/dist/components/p-_bQXTXUb.js +98 -0
  554. package/dist/components/p-_bQXTXUb.js.map +1 -0
  555. package/dist/components/p-l95vl6T1.js +108 -0
  556. package/dist/components/p-l95vl6T1.js.map +1 -0
  557. package/dist/components/p-wwnR-hlX.js +52 -0
  558. package/dist/components/p-wwnR-hlX.js.map +1 -0
  559. package/dist/components/p-xDRMXxWJ.js +37 -0
  560. package/dist/components/p-xDRMXxWJ.js.map +1 -0
  561. package/dist/esm/af-aspect-ratio.entry.js +2 -2
  562. package/dist/esm/af-aspect-ratio.entry.js.map +1 -1
  563. package/dist/esm/af-button-group.entry.js +2 -2
  564. package/dist/esm/af-button.entry.js +25 -12
  565. package/dist/esm/af-button.entry.js.map +1 -1
  566. package/dist/esm/af-card.entry.js +17 -7
  567. package/dist/esm/af-card.entry.js.map +1 -1
  568. package/dist/esm/af-checkbox.entry.js +56 -0
  569. package/dist/esm/af-checkbox.entry.js.map +1 -0
  570. package/dist/esm/af-client-carousel.entry.js +5 -7
  571. package/dist/esm/af-client-carousel.entry.js.map +1 -1
  572. package/dist/esm/af-color-swatch.entry.js +1 -1
  573. package/dist/esm/af-contact-item.entry.js +2 -2
  574. package/dist/esm/af-container.entry.js +1 -1
  575. package/dist/esm/af-feature-accordion.entry.js +4 -4
  576. package/dist/esm/af-feature-accordion.entry.js.map +1 -1
  577. package/dist/esm/af-feature-card.entry.js +57 -0
  578. package/dist/esm/af-feature-card.entry.js.map +1 -0
  579. package/dist/esm/af-feature-grid.entry.js +91 -0
  580. package/dist/esm/af-feature-grid.entry.js.map +1 -0
  581. package/dist/esm/af-fieldset.entry.js +35 -0
  582. package/dist/esm/af-fieldset.entry.js.map +1 -0
  583. package/dist/esm/af-footer-column.entry.js +2 -2
  584. package/dist/esm/af-footer-link.entry.js +2 -2
  585. package/dist/esm/af-footer.entry.js +3 -3
  586. package/dist/esm/af-footer.entry.js.map +1 -1
  587. package/dist/esm/af-grid-callout.entry.js +49 -0
  588. package/dist/esm/af-grid-callout.entry.js.map +1 -0
  589. package/dist/esm/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.js.map +1 -1
  590. package/dist/esm/af-heading_5.entry.js +69 -20
  591. package/dist/esm/af-hero-section.entry.js +11 -5
  592. package/dist/esm/af-hero-section.entry.js.map +1 -1
  593. package/dist/esm/af-icon-box.entry.js +28 -0
  594. package/dist/esm/af-icon-box.entry.js.map +1 -0
  595. package/dist/esm/af-icon-button.entry.js +6 -3
  596. package/dist/esm/af-icon-button.entry.js.map +1 -1
  597. package/dist/esm/af-icon-text.entry.js +34 -0
  598. package/dist/esm/af-icon-text.entry.js.map +1 -0
  599. package/dist/esm/af-icon.entry.js +349 -0
  600. package/dist/esm/af-icon.entry.js.map +1 -0
  601. package/dist/esm/af-illustrated-card.entry.js +34 -0
  602. package/dist/esm/af-illustrated-card.entry.js.map +1 -0
  603. package/dist/esm/af-image.entry.js +16 -0
  604. package/dist/esm/af-image.entry.js.map +1 -0
  605. package/dist/esm/af-in-page-banner.entry.js +45 -0
  606. package/dist/esm/af-in-page-banner.entry.js.map +1 -0
  607. package/dist/esm/af-input.entry.js +102 -0
  608. package/dist/esm/af-input.entry.js.map +1 -0
  609. package/dist/esm/af-logo-well.entry.js +3 -3
  610. package/dist/esm/af-logo-well.entry.js.map +1 -1
  611. package/dist/esm/af-nav-card.entry.js +35 -0
  612. package/dist/esm/af-nav-card.entry.js.map +1 -0
  613. package/dist/esm/af-nav-menu-nest.entry.js +41 -0
  614. package/dist/esm/af-nav-menu-nest.entry.js.map +1 -0
  615. package/dist/esm/af-nav-menu.entry.js +39 -0
  616. package/dist/esm/af-nav-menu.entry.js.map +1 -0
  617. package/dist/esm/af-number-badge.entry.js +40 -0
  618. package/dist/esm/af-number-badge.entry.js.map +1 -0
  619. package/dist/esm/af-progress-line.entry.js +31 -0
  620. package/dist/esm/af-progress-line.entry.js.map +1 -0
  621. package/dist/esm/af-radio.entry.js +41 -0
  622. package/dist/esm/af-radio.entry.js.map +1 -0
  623. package/dist/esm/af-section.entry.js +6 -6
  624. package/dist/esm/af-section.entry.js.map +1 -1
  625. package/dist/esm/af-social-link.entry.js +2 -2
  626. package/dist/esm/af-split-section.entry.js +39 -0
  627. package/dist/esm/af-split-section.entry.js.map +1 -0
  628. package/dist/esm/af-switch.entry.js +46 -0
  629. package/dist/esm/af-switch.entry.js.map +1 -0
  630. package/dist/esm/af-tab-bar.entry.js +86 -0
  631. package/dist/esm/af-tab-bar.entry.js.map +1 -0
  632. package/dist/esm/af-tab.entry.js +62 -0
  633. package/dist/esm/af-tab.entry.js.map +1 -0
  634. package/dist/esm/af-tag.entry.js +35 -0
  635. package/dist/esm/af-tag.entry.js.map +1 -0
  636. package/dist/esm/af-testimonial-carousel.entry.js +27 -15
  637. package/dist/esm/af-testimonial-carousel.entry.js.map +1 -1
  638. package/dist/esm/af-testimonial-stat.entry.js +3 -3
  639. package/dist/esm/af-testimonial-stat.entry.js.map +1 -1
  640. package/dist/esm/af-testimonial.entry.js +27 -3
  641. package/dist/esm/af-testimonial.entry.js.map +1 -1
  642. package/dist/esm/af-text-image-nest.entry.js +28 -0
  643. package/dist/esm/af-text-image-nest.entry.js.map +1 -0
  644. package/dist/esm/af-text-image.entry.js +61 -0
  645. package/dist/esm/af-text-image.entry.js.map +1 -0
  646. package/dist/esm/af-textarea.entry.js +91 -0
  647. package/dist/esm/af-textarea.entry.js.map +1 -0
  648. package/dist/esm/af-typography-lockup.entry.js +7 -7
  649. package/dist/esm/af-typography-lockup.entry.js.map +1 -1
  650. package/dist/esm/af-video-container.entry.js +33 -0
  651. package/dist/esm/af-video-container.entry.js.map +1 -0
  652. package/dist/esm/affinda.js +3 -3
  653. package/dist/esm/{index-DI7b0bCy.js → index-BmU_CFQ4.js} +130 -7
  654. package/dist/esm/index-BmU_CFQ4.js.map +1 -0
  655. package/dist/esm/index.js +12 -1
  656. package/dist/esm/index.js.map +1 -1
  657. package/dist/esm/loader.js +3 -3
  658. package/dist/types/components/af-button/af-button.d.ts +22 -9
  659. package/dist/types/components/af-card/af-card.d.ts +15 -8
  660. package/dist/types/components/af-checkbox/af-checkbox.d.ts +40 -0
  661. package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +10 -5
  662. package/dist/types/components/af-feature-accordion/af-feature-accordion.d.ts +13 -3
  663. package/dist/types/components/af-feature-card/af-feature-card.d.ts +49 -0
  664. package/dist/types/components/af-feature-grid/af-feature-grid.d.ts +32 -0
  665. package/dist/types/components/af-fieldset/af-fieldset.d.ts +23 -0
  666. package/dist/types/components/af-grid-callout/af-grid-callout.d.ts +57 -0
  667. package/dist/types/components/af-heading/af-heading.d.ts +5 -2
  668. package/dist/types/components/af-hero-section/af-hero-section.d.ts +18 -3
  669. package/dist/types/components/af-icon/af-icon.d.ts +28 -0
  670. package/dist/types/components/af-icon-box/af-icon-box.d.ts +27 -0
  671. package/dist/types/components/af-icon-button/af-icon-button.d.ts +5 -2
  672. package/dist/types/components/af-icon-text/af-icon-text.d.ts +44 -0
  673. package/dist/types/components/af-illustrated-card/af-illustrated-card.d.ts +28 -0
  674. package/dist/types/components/af-image/af-image.d.ts +15 -0
  675. package/dist/types/components/af-in-page-banner/af-in-page-banner.d.ts +56 -0
  676. package/dist/types/components/af-input/af-input.d.ts +110 -0
  677. package/dist/types/components/af-nav-card/af-nav-card.d.ts +34 -0
  678. package/dist/types/components/af-nav-item/af-nav-item.d.ts +6 -0
  679. package/dist/types/components/af-nav-menu/af-nav-menu.d.ts +28 -0
  680. package/dist/types/components/af-nav-menu-nest/af-nav-menu-nest.d.ts +42 -0
  681. package/dist/types/components/af-navbar/af-navbar.d.ts +31 -1
  682. package/dist/types/components/af-number-badge/af-number-badge.d.ts +29 -0
  683. package/dist/types/components/af-progress-line/af-progress-line.d.ts +18 -0
  684. package/dist/types/components/af-radio/af-radio.d.ts +33 -0
  685. package/dist/types/components/af-section/af-section.d.ts +4 -3
  686. package/dist/types/components/af-split-section/af-split-section.d.ts +20 -0
  687. package/dist/types/components/af-switch/af-switch.d.ts +32 -0
  688. package/dist/types/components/af-tab/af-tab.d.ts +61 -0
  689. package/dist/types/components/af-tab-bar/af-tab-bar.d.ts +43 -0
  690. package/dist/types/components/af-tag/af-tag.d.ts +33 -0
  691. package/dist/types/components/af-testimonial/af-testimonial.d.ts +23 -0
  692. package/dist/types/components/af-testimonial-carousel/af-testimonial-carousel.d.ts +17 -0
  693. package/dist/types/components/af-text/af-text.d.ts +6 -3
  694. package/dist/types/components/af-text-image/af-text-image.d.ts +30 -0
  695. package/dist/types/components/af-text-image-nest/af-text-image-nest.d.ts +21 -0
  696. package/dist/types/components/af-textarea/af-textarea.d.ts +92 -0
  697. package/dist/types/components/af-video-container/af-video-container.d.ts +45 -0
  698. package/dist/types/components.d.ts +3414 -638
  699. package/package.json +7 -6
  700. package/dist/affinda/af-cta-section.entry.esm.js.map +0 -1
  701. package/dist/affinda/p-050f98cd.entry.js +0 -2
  702. package/dist/affinda/p-07990b1f.entry.js +0 -2
  703. package/dist/affinda/p-4a39ddec.entry.js +0 -2
  704. package/dist/affinda/p-4a39ddec.entry.js.map +0 -1
  705. package/dist/affinda/p-52f7ea33.entry.js +0 -2
  706. package/dist/affinda/p-924e6def.entry.js +0 -2
  707. package/dist/affinda/p-924e6def.entry.js.map +0 -1
  708. package/dist/affinda/p-954963fa.entry.js +0 -2
  709. package/dist/affinda/p-954963fa.entry.js.map +0 -1
  710. package/dist/affinda/p-DI7b0bCy.js +0 -3
  711. package/dist/affinda/p-DI7b0bCy.js.map +0 -1
  712. package/dist/affinda/p-ac7efb48.entry.js +0 -2
  713. package/dist/affinda/p-ac7efb48.entry.js.map +0 -1
  714. package/dist/affinda/p-b67bbaf7.entry.js +0 -2
  715. package/dist/affinda/p-b67bbaf7.entry.js.map +0 -1
  716. package/dist/affinda/p-b6885a9a.entry.js +0 -2
  717. package/dist/affinda/p-b6885a9a.entry.js.map +0 -1
  718. package/dist/affinda/p-b7c63852.entry.js +0 -2
  719. package/dist/affinda/p-b7c63852.entry.js.map +0 -1
  720. package/dist/affinda/p-b7efbfff.entry.js +0 -2
  721. package/dist/affinda/p-b7efbfff.entry.js.map +0 -1
  722. package/dist/affinda/p-bf4543ff.entry.js +0 -2
  723. package/dist/affinda/p-c2b6199e.entry.js +0 -2
  724. package/dist/affinda/p-c2b6199e.entry.js.map +0 -1
  725. package/dist/affinda/p-c5aba33f.entry.js +0 -2
  726. package/dist/affinda/p-ce89c4f1.entry.js +0 -2
  727. package/dist/affinda/p-d3b2ab0e.entry.js +0 -2
  728. package/dist/affinda/p-de52b175.entry.js +0 -2
  729. package/dist/affinda/p-e367e42b.entry.js +0 -2
  730. package/dist/affinda/p-e367e42b.entry.js.map +0 -1
  731. package/dist/cjs/af-cta-section.cjs.entry.js +0 -32
  732. package/dist/cjs/af-cta-section.entry.cjs.js.map +0 -1
  733. package/dist/cjs/index-DfEVhbS6.js.map +0 -1
  734. package/dist/collection/components/af-cta-section/af-cta-section.css +0 -175
  735. package/dist/collection/components/af-cta-section/af-cta-section.js +0 -183
  736. package/dist/collection/components/af-cta-section/af-cta-section.js.map +0 -1
  737. package/dist/components/af-cta-section.js +0 -59
  738. package/dist/components/af-cta-section.js.map +0 -1
  739. package/dist/components/p-BKGrl8ua.js +0 -77
  740. package/dist/components/p-BKGrl8ua.js.map +0 -1
  741. package/dist/components/p-BTEblSAo.js +0 -63
  742. package/dist/components/p-BTEblSAo.js.map +0 -1
  743. package/dist/components/p-BekWfVfB.js +0 -66
  744. package/dist/components/p-BekWfVfB.js.map +0 -1
  745. package/dist/components/p-Bg7dSc4D.js +0 -54
  746. package/dist/components/p-Bg7dSc4D.js.map +0 -1
  747. package/dist/components/p-D4s4u7tL.js +0 -35
  748. package/dist/components/p-D4s4u7tL.js.map +0 -1
  749. package/dist/components/p-DqOwXTsH.js +0 -68
  750. package/dist/components/p-DqOwXTsH.js.map +0 -1
  751. package/dist/components/p-Dt4Fpr3O.js.map +0 -1
  752. package/dist/components/p-PLXzXWgX.js.map +0 -1
  753. package/dist/components/p-Thu9mUEn.js +0 -41
  754. package/dist/components/p-Thu9mUEn.js.map +0 -1
  755. package/dist/components/p-emB0l5gm.js +0 -68
  756. package/dist/components/p-emB0l5gm.js.map +0 -1
  757. package/dist/esm/af-cta-section.entry.js +0 -30
  758. package/dist/esm/af-cta-section.entry.js.map +0 -1
  759. package/dist/esm/index-DI7b0bCy.js.map +0 -1
  760. package/dist/types/components/af-cta-section/af-cta-section.d.ts +0 -21
  761. /package/dist/affinda/{p-de52b175.entry.js.map → p-1d9e532f.entry.js.map} +0 -0
  762. /package/dist/affinda/{p-a49dc8ac.entry.js.map → p-31d4c1a4.entry.js.map} +0 -0
  763. /package/dist/affinda/{p-c5aba33f.entry.js.map → p-53ae16fe.entry.js.map} +0 -0
  764. /package/dist/affinda/{p-dec4c4d5.entry.js.map → p-72f02343.entry.js.map} +0 -0
  765. /package/dist/affinda/{p-97f9f774.entry.js.map → p-96eac3af.entry.js.map} +0 -0
  766. /package/dist/affinda/{p-3a9646e6.entry.js.map → p-c11088fa.entry.js.map} +0 -0
  767. /package/dist/affinda/{p-f8ac0120.entry.js.map → p-e5af21c2.entry.js.map} +0 -0
@@ -5,6 +5,16 @@
5
5
  * It contains typing information for all components that exist in this project.
6
6
  */
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
+ import { IconName } from "@affinda/icons";
9
+ import { NumberBadgeNumber, NumberBadgeVariant } from "./components/af-number-badge/af-number-badge";
10
+ import { TabShape } from "./components/af-tab/af-tab";
11
+ import { TabBarBreakpoint, TabBarShape } from "./components/af-tab-bar/af-tab-bar";
12
+ import { TagSize, TagVariant } from "./components/af-tag/af-tag";
13
+ export { IconName } from "@affinda/icons";
14
+ export { NumberBadgeNumber, NumberBadgeVariant } from "./components/af-number-badge/af-number-badge";
15
+ export { TabShape } from "./components/af-tab/af-tab";
16
+ export { TabBarBreakpoint, TabBarShape } from "./components/af-tab-bar/af-tab-bar";
17
+ export { TagSize, TagVariant } from "./components/af-tag/af-tag";
8
18
  export namespace Components {
9
19
  /**
10
20
  * A container component that maintains a fixed aspect ratio for its content.
@@ -18,23 +28,23 @@ export namespace Components {
18
28
  */
19
29
  "ratio": string;
20
30
  }
31
+ /**
32
+ * Button component that inherits colors from theme context.
33
+ * Colors are determined by the parent theme (af-section, af-hero-section, etc.)
34
+ * via CSS custom properties.
35
+ */
21
36
  interface AfButton {
22
- /**
23
- * Use on dark backgrounds for better contrast
24
- * @default false
25
- */
26
- "darkBackground": boolean;
27
37
  /**
28
38
  * Whether the button is disabled
29
39
  * @default false
30
40
  */
31
41
  "disabled": boolean;
32
42
  /**
33
- * Optional href to render as a link
43
+ * Optional href to render as a link instead of a button
34
44
  */
35
45
  "href"?: string;
36
46
  /**
37
- * The size of the button
47
+ * The size of the button. - `default` - Standard size for primary CTAs - `small` - Compact size for inline or secondary contexts
38
48
  * @default 'default'
39
49
  */
40
50
  "size": 'default' | 'small';
@@ -44,10 +54,10 @@ export namespace Components {
44
54
  */
45
55
  "type": 'button' | 'submit' | 'reset';
46
56
  /**
47
- * The visual variant of the button
57
+ * The visual variant of the button. - `primary` - Main CTA with filled background (use sparingly, 1-2 per view) - `secondary` - Supporting action with outlined style - `tertiary` - Subtle text-link style with underline
48
58
  * @default 'primary'
49
59
  */
50
- "variant": 'primary' | 'secondary' | 'outline' | 'ghost';
60
+ "variant": 'primary' | 'secondary' | 'tertiary';
51
61
  }
52
62
  interface AfButtonGroup {
53
63
  /**
@@ -61,35 +71,65 @@ export namespace Components {
61
71
  */
62
72
  "gap": string;
63
73
  }
74
+ /**
75
+ * Card atom component - a themed container with consistent styling.
76
+ * Provides theme context to children via CSS custom properties.
77
+ * This is a base building block used by molecule components like
78
+ * af-feature-card and af-illustrated-card.
79
+ */
64
80
  interface AfCard {
65
81
  /**
66
- * Background color for the card (CSS color value)
82
+ * When true, the card stretches to fill its container height. Use this when the card is in a flex/grid container and needs to participate in equal-height layouts. The card's content will use flexbox to distribute space between children.
83
+ * @default false
67
84
  */
68
- "backgroundColor"?: string;
85
+ "stretch": boolean;
69
86
  /**
70
- * Background image URL for the card
87
+ * Theme - sets background color and provides theme context to children. Defaults to 'mist-green' if not specified.
88
+ * @default 'mist-green'
71
89
  */
72
- "backgroundImage"?: string;
90
+ "theme"?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay';
91
+ }
92
+ /**
93
+ * Checkbox component for selecting multiple options.
94
+ * Supports checked, unchecked, and indeterminate states.
95
+ */
96
+ interface AfCheckbox {
97
+ /**
98
+ * Whether the checkbox is checked
99
+ * @default false
100
+ */
101
+ "checked": boolean;
102
+ /**
103
+ * Whether the checkbox is disabled
104
+ * @default false
105
+ */
106
+ "disabled": boolean;
73
107
  /**
74
- * Whether to apply a dark gradient overlay (for cards with background images)
108
+ * Whether the checkbox is in an indeterminate state
75
109
  * @default false
76
110
  */
77
- "darkOverlay": boolean;
111
+ "indeterminate": boolean;
112
+ /**
113
+ * The name of the checkbox for form submission
114
+ */
115
+ "name"?: string;
116
+ /**
117
+ * The value of the checkbox for form submission
118
+ */
119
+ "value"?: string;
78
120
  }
79
121
  /**
80
- * Infinite scrolling carousel for client logos
122
+ * Infinite scrolling carousel for client logos.
123
+ * This is a section-level component that spans full width.
124
+ * It supports theming via the `theme` prop.
125
+ * For headlines, use a separate TypographyLockup or Heading component above this carousel.
81
126
  */
82
127
  interface AfClientCarousel {
83
128
  /**
84
- * Headline text
85
- * @default "Trusted by some of the world's leading organisations"
86
- */
87
- "headlineText": string;
88
- /**
89
- * Show headline above carousel
90
- * @default false
129
+ * Theme - sets background color and provides theme context to children
130
+ * @default 'inkwell'
91
131
  */
92
- "showHeadline": boolean;
132
+ "theme": Theme;
93
133
  }
94
134
  interface AfColorSwatch {
95
135
  /**
@@ -134,72 +174,114 @@ export namespace Components {
134
174
  "maxWidth": 'xlarge' | 'large' | 'medium' | 'fluid';
135
175
  }
136
176
  /**
137
- * Call-to-action section component with illustration and decorative background
138
- * Styled to match the affinda.com "See what our AI agents can do for you" section
177
+ * Feature accordion component with expandable items and accompanying image.
178
+ * Used for showcasing product features with visual examples.
179
+ * Features auto-cycling through items with a progress timer.
180
+ * **Must be wrapped in a Section component** to inherit theme styling.
181
+ * The component automatically adapts colors based on the parent Section's theme.
182
+ * @example ```tsx
183
+ * <Section theme="inkwell">
184
+ * <FeatureAccordion heading="Features" items={...} />
185
+ * </Section>
186
+ * ```
139
187
  */
140
- interface AfCtaSection {
188
+ interface AfFeatureAccordion {
189
+ /**
190
+ * Whether auto-cycling is enabled
191
+ * @default true
192
+ */
193
+ "autoCycle": boolean;
141
194
  /**
142
- * Section description
143
- * @default 'Upload your documents and watch our AI agents get to work.'
195
+ * Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds)
196
+ * @default 6000
144
197
  */
145
- "description": string;
198
+ "cycleInterval": number;
146
199
  /**
147
200
  * Section heading
148
- * @default 'See what our AI agents can do for you'
201
+ * @default 'Give AI agents your paperwork'
149
202
  */
150
203
  "heading": string;
151
204
  /**
152
- * Illustration URL - if provided, displays this image
153
- * @default ''
205
+ * JSON string of accordion items
206
+ * @default '[]'
154
207
  */
155
- "illustrationUrl": string;
208
+ "items": string;
209
+ }
210
+ /**
211
+ * Feature Card molecule component that combines a card with an image.
212
+ * Two layout modes:
213
+ * - `standard`: Theme background with text at top and image at bottom
214
+ * - `full-bleed`: Image covers entire card with text overlay at bottom
215
+ * Responsive: Automatically adapts to mobile viewport (≤768px).
216
+ * Uses af-card atom internally and af-typography-lockup for text hierarchy.
217
+ */
218
+ interface AfFeatureCard {
156
219
  /**
157
- * Primary button text
158
- * @default 'Try for free'
220
+ * Card size variant. - 'default': Fixed 544px × 420px - 'large': Fixed 777px × 480px - 'flexible': Fills container (for grid layouts)
221
+ * @default 'default'
159
222
  */
160
- "primaryButtonText": string;
223
+ "cardSize": 'default' | 'large' | 'flexible';
161
224
  /**
162
- * Primary button URL
163
- * @default '#'
225
+ * Heading size for typography lockup (1-5, where 1 is largest).
226
+ * @default 3
164
227
  */
165
- "primaryButtonUrl": string;
228
+ "headingSize": 1 | 2 | 3 | 4 | 5;
229
+ /**
230
+ * Image alt text for accessibility. Provide meaningful alt text for feature images. Only use empty string for purely decorative images.
231
+ * @default ''
232
+ */
233
+ "imageAlt": string;
166
234
  /**
167
- * Secondary button text
168
- * @default 'Talk to us'
235
+ * Background/feature image URL.
169
236
  */
170
- "secondaryButtonText": string;
237
+ "imageSrc"?: string;
171
238
  /**
172
- * Secondary button URL
173
- * @default '#'
239
+ * Layout mode for the card. - 'standard': Theme background with text at top and image at bottom - 'full-bleed': Image covers entire card with text overlay at bottom
240
+ * @default 'standard'
174
241
  */
175
- "secondaryButtonUrl": string;
242
+ "layout": 'standard' | 'full-bleed';
243
+ /**
244
+ * Theme variant - sets background color and provides theme context. Only applies to 'standard' layout mode. Defaults to 'mist-green'.
245
+ * @default 'mist-green'
246
+ */
247
+ "theme"?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay';
176
248
  }
177
249
  /**
178
- * Feature accordion component with expandable items and accompanying image
179
- * Used for showcasing product features with visual examples
180
- * Features auto-cycling through items with a progress timer
250
+ * Feature Grid component - CSS Grid container for feature cards.
251
+ * Desktop: Configurable columns (1-4)
252
+ * Mobile: List (stacked), horizontal scroll, or 2-column grid
181
253
  */
182
- interface AfFeatureAccordion {
254
+ interface AfFeatureGrid {
183
255
  /**
184
- * Whether auto-cycling is enabled
185
- * @default true
256
+ * Number of columns on desktop (1-4).
257
+ * @default 4
186
258
  */
187
- "autoCycle": boolean;
259
+ "columns": 1 | 2 | 3 | 4;
188
260
  /**
189
- * Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds)
190
- * @default 6000
261
+ * Mobile layout behavior. - 'list': Vertical stack (1 column) - 'scroll': Horizontal scroll with progress indicator - 'grid': Maintain 2-column grid on mobile
262
+ * @default 'list'
191
263
  */
192
- "cycleInterval": number;
264
+ "mobileLayout": 'list' | 'scroll' | 'grid';
265
+ }
266
+ /**
267
+ * Fieldset component for grouping related form controls.
268
+ * Supports vertical and horizontal layouts with an optional legend/heading.
269
+ */
270
+ interface AfFieldset {
193
271
  /**
194
- * Section heading
195
- * @default 'Give AI agents your paperwork'
272
+ * Whether the fieldset is disabled (disables all child controls)
273
+ * @default false
196
274
  */
197
- "heading": string;
275
+ "disabled": boolean;
198
276
  /**
199
- * JSON string of accordion items
200
- * @default '[]'
277
+ * The legend/heading text for the fieldset
201
278
  */
202
- "items": string;
279
+ "legend"?: string;
280
+ /**
281
+ * The layout orientation of the fieldset items - `vertical` - Items stack vertically (default) - `horizontal` - Items are laid out horizontally
282
+ * @default 'vertical'
283
+ */
284
+ "orientation": 'vertical' | 'horizontal';
203
285
  }
204
286
  /**
205
287
  * Footer component for marketing pages
@@ -260,6 +342,62 @@ export namespace Components {
260
342
  */
261
343
  "href": string;
262
344
  }
345
+ /**
346
+ * GridCallout organism - a marketing section combining an optional pill-shaped image
347
+ * with a grid of IconText feature items.
348
+ * Composes:
349
+ * - Pill-shaped image container (optional)
350
+ * - Heading via af-typography-lockup
351
+ * - Grid of af-icon-text items
352
+ * - Optional CTA button
353
+ * Inherits theme colors from parent af-section via CSS custom properties.
354
+ * @example ```html
355
+ * <af-section theme="mist-green">
356
+ * <af-grid-callout image-src="/team.jpg" image-alt="Team photo">
357
+ * Affinda blends AI and engineering
358
+ * <span slot="description">Optional description text.</span>
359
+ *
360
+ * <af-icon-text slot="items" icon="settings">
361
+ * Feature One
362
+ * <span slot="description">Feature description.</span>
363
+ * </af-icon-text>
364
+ *
365
+ * <af-button slot="cta" variant="primary">Learn more</af-button>
366
+ * </af-grid-callout>
367
+ * </af-section>
368
+ * ```
369
+ */
370
+ interface AfGridCallout {
371
+ /**
372
+ * Number of columns for the IconText grid on desktop
373
+ * @default 2
374
+ */
375
+ "columns": 2 | 3 | 4;
376
+ /**
377
+ * Heading size for the main title
378
+ * @default 2
379
+ */
380
+ "headingSize": 1 | 2 | 3 | 4 | 5;
381
+ /**
382
+ * Alt text for the image (required for accessibility when imageSrc is provided)
383
+ * @default ''
384
+ */
385
+ "imageAlt": string;
386
+ /**
387
+ * Position of the image relative to the content
388
+ * @default 'left'
389
+ */
390
+ "imagePosition": 'left' | 'right';
391
+ /**
392
+ * Image source URL for the pill-shaped image
393
+ */
394
+ "imageSrc"?: string;
395
+ }
396
+ /**
397
+ * Heading component that inherits color from theme context.
398
+ * Color is determined by the parent theme (af-section, af-hero-section, etc.)
399
+ * via CSS custom properties.
400
+ */
263
401
  interface AfHeading {
264
402
  /**
265
403
  * Visual alignment
@@ -271,32 +409,93 @@ export namespace Components {
271
409
  * @default '1'
272
410
  */
273
411
  "level": 'xl' | '1' | '2' | '3' | '4' | '5';
274
- /**
275
- * Theme for dark backgrounds
276
- * @default 'light'
277
- */
278
- "theme": 'light' | 'dark';
279
412
  }
280
413
  /**
281
- * Hero section component for marketing pages
414
+ * Hero section component for marketing pages.
415
+ * Uses TypographyLockup internally to handle heading, description, and button layout.
416
+ * Sets theme context for all child components via CSS custom properties.
282
417
  */
283
418
  interface AfHeroSection {
419
+ /**
420
+ * Button alignment - horizontal places buttons inline, vertical stacks them
421
+ * @default 'horizontal'
422
+ */
423
+ "buttonAlignment": 'horizontal' | 'vertical';
424
+ /**
425
+ * Heading size for the typography lockup (1-5, where 1 is largest)
426
+ * @default 1
427
+ */
428
+ "headingSize": 1 | 2 | 3 | 4 | 5;
429
+ /**
430
+ * Maximum width for the copy section (in pixels)
431
+ */
432
+ "maxWidth"?: number;
284
433
  /**
285
434
  * Minimum height
286
435
  * @default '60vh'
287
436
  */
288
437
  "minHeight": string;
289
438
  /**
290
- * Hero variant
291
- * @default 'dark'
439
+ * Text alignment for the typography lockup
440
+ * @default 'center'
441
+ */
442
+ "textAlignment": 'left' | 'center';
443
+ /**
444
+ * Theme - sets background color and provides theme context to children
445
+ * @default 'inkwell'
292
446
  */
293
- "variant": 'light' | 'dark';
447
+ "theme": 'white' | 'inkwell' | 'mist-green' | 'soft-clay';
294
448
  /**
295
449
  * Show decorative paperclip
296
450
  * @default false
297
451
  */
298
452
  "withDecoration": boolean;
299
453
  }
454
+ /**
455
+ * Icon component that displays SVG icons from the Affinda icon library.
456
+ * Icons inherit color from their parent via currentColor.
457
+ * Icons are bundled inline, so no runtime fetching is required.
458
+ * This ensures icons work reliably in all bundler contexts.
459
+ * @example ```html
460
+ * <af-icon name="arrow-right" size="24"></af-icon>
461
+ * ```
462
+ */
463
+ interface AfIcon {
464
+ /**
465
+ * Accessible label for the icon (for screen readers)
466
+ */
467
+ "label"?: string;
468
+ /**
469
+ * The name of the icon to display
470
+ */
471
+ "name": IconName;
472
+ /**
473
+ * Size of the icon in pixels
474
+ * @default 24
475
+ */
476
+ "size": number;
477
+ }
478
+ /**
479
+ * IconBox atom - a themed container for displaying an icon with a rounded background.
480
+ * Inherits theme colors from parent Section via CSS custom properties:
481
+ * - Background uses `--af-background-contrast`
482
+ * - Icon color uses `--af-background-icon-default`
483
+ * @example ```html
484
+ * <af-icon-box icon="settings" size="default"></af-icon-box>
485
+ * ```
486
+ */
487
+ interface AfIconBox {
488
+ /**
489
+ * The name of the icon to display (from
490
+ * @affinda /icons)
491
+ */
492
+ "icon": IconName;
493
+ /**
494
+ * Size variant of the icon box - 'small': 48px container, 20px icon - 'default': 64px container, 40px icon - 'large': 80px container, 48px icon
495
+ * @default 'default'
496
+ */
497
+ "size": 'small' | 'default' | 'large';
498
+ }
300
499
  interface AfIconButton {
301
500
  /**
302
501
  * Accessible label for screen readers
@@ -322,841 +521,2895 @@ export namespace Components {
322
521
  */
323
522
  "type": 'button' | 'submit' | 'reset';
324
523
  /**
325
- * The visual variant of the button
524
+ * The visual variant of the button. - `primary` - Main CTA with filled ice background - `secondary` - Supporting action with white background - `tertiary` - Minimal style with transparent background
326
525
  * @default 'primary'
327
526
  */
328
- "variant": 'primary' | 'secondary' | 'outline' | 'ghost';
329
- }
330
- /**
331
- * Affinda logo component
332
- */
333
- interface AfLogo {
527
+ "variant": 'primary' | 'secondary' | 'tertiary';
334
528
  }
335
529
  /**
336
- * A rounded container for displaying client logos
337
- */
338
- interface AfLogoWell {
339
- }
340
- /**
341
- * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
342
- * Supports multiple hierarchy levels, variants, and states (active, hover).
530
+ * IconText molecule - combines an IconBox with a TypographyLockup for feature items.
531
+ * Composes:
532
+ * - af-icon-box: Themed icon container
533
+ * - af-typography-lockup: Heading, description, and button slots
534
+ * Inherits theme colors from parent Section via CSS custom properties.
535
+ * @example ```html
536
+ * <af-icon-text icon="settings" heading-size="4">
537
+ * Feature Heading
538
+ * <span slot="description">Feature description text.</span>
539
+ * <af-button slot="buttons" variant="tertiary">Learn more</af-button>
540
+ * </af-icon-text>
541
+ * ```
343
542
  */
344
- interface AfNavItem {
543
+ interface AfIconText {
345
544
  /**
346
- * Whether this nav item is currently active/selected
347
- * @default false
545
+ * Heading size for the typography lockup (1-5, where 1 is largest)
546
+ * @default 4
348
547
  */
349
- "active": boolean;
548
+ "headingSize": 1 | 2 | 3 | 4 | 5;
350
549
  /**
351
- * Visual hierarchy level of the navigation item - 'primary': Bold, main navigation (larger text, prominent styling) - 'secondary': Lighter, sub-navigation (smaller text, subtle styling)
352
- * @default 'primary'
550
+ * The icon name to display in the IconBox
353
551
  */
354
- "hierarchy": 'primary' | 'secondary';
552
+ "icon": IconName;
355
553
  /**
356
- * URL to navigate to when clicked
554
+ * Size of the icon box
555
+ * @default 'default'
357
556
  */
358
- "href"?: string;
557
+ "iconSize": 'small' | 'default' | 'large';
359
558
  /**
360
- * Visual variant within the hierarchy level - '01': Darker/more prominent styling - '02': Lighter/more subtle styling
361
- * @default '01'
559
+ * Layout orientation - 'vertical': Icon above text (default, used in grid layouts) - 'horizontal': Icon beside text (used in compact layouts)
560
+ * @default 'vertical'
362
561
  */
363
- "variant": '01' | '02';
364
- }
365
- /**
366
- * A full-width navigation bar component that provides the main site navigation.
367
- * Features a pill-shaped container with logo, navigation links, and action buttons.
368
- * Includes mobile hamburger menu.
369
- */
370
- interface AfNavbar {
562
+ "orientation": 'vertical' | 'horizontal';
371
563
  }
372
564
  /**
373
- * Section layout component for consistent spacing and backgrounds
565
+ * Illustrated Card molecule component that combines a card with an illustration.
566
+ * Uses a theme background with text at top and an illustration from
567
+ * @affinda /illustrations at the bottom.
568
+ * Uses af-card atom internally and af-typography-lockup for text hierarchy.
374
569
  */
375
- interface AfSection {
570
+ interface AfIllustratedCard {
376
571
  /**
377
- * Background color
378
- * @default 'white'
572
+ * Responsive breakpoint for typography sizing.
573
+ * @default 'desktop'
379
574
  */
380
- "background": 'white' | 'level1' | 'dark' | 'inkwell';
575
+ "breakpoint": 'desktop' | 'mobile';
381
576
  /**
382
- * Whether to include a Container wrapper
383
- * @default true
577
+ * Card size variant (applies to desktop only).
578
+ * @default 'default'
384
579
  */
385
- "container": boolean;
580
+ "cardSize": 'default' | 'large';
386
581
  /**
387
- * Padding variant
388
- * @default 'default'
582
+ * Theme variant - sets background color and provides theme context. Defaults to 'mist-green'.
583
+ * @default 'mist-green'
389
584
  */
390
- "padding": 'tight' | 'default' | 'loose';
585
+ "theme"?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay';
391
586
  }
392
587
  /**
393
- * Social media link component
394
- * Circular bordered icon link for social media profiles
588
+ * A styled image container with rounded corners and a subtle inset border.
589
+ * Provides consistent image styling across the design system.
395
590
  */
396
- interface AfSocialLink {
591
+ interface AfImage {
397
592
  /**
398
- * Link URL
399
- * @default '#'
593
+ * Alternative text for the image (required for accessibility)
400
594
  */
401
- "href": string;
595
+ "alt": string;
402
596
  /**
403
- * Icon type: 'linkedin', 'youtube', 'github', 'twitter', 'facebook', or 'custom'
404
- * @default 'custom'
597
+ * The image source URL
405
598
  */
406
- "icon": 'linkedin' | 'youtube' | 'github' | 'twitter' | 'facebook' | 'custom';
599
+ "src": string;
600
+ }
601
+ /**
602
+ * In-page banner component for call-to-action content.
603
+ * A banner card with illustration, heading, description, and action buttons.
604
+ * Typically placed inside a neutral (white) Section to show off its themed background.
605
+ * The component has its own theme prop to control its background color and styling.
606
+ * **Illustration Usage:**
607
+ * Use `illustrationUrl` to pass an illustration image URL. For theme-matched illustrations,
608
+ * use `getIllustrationUrlByScene()` from `@affinda/illustrations` in your consuming app:
609
+ * ```tsx
610
+ * import { getIllustrationUrlByScene } from '@affinda/illustrations';
611
+ * <InPageBanner
612
+ * theme="inkwell"
613
+ * illustrationUrl={getIllustrationUrlByScene('automate', 'inkwell')}
614
+ * ...
615
+ * />
616
+ * ```
617
+ * Alternatively, use the `illustration` slot for completely custom content.
618
+ */
619
+ interface AfInPageBanner {
407
620
  /**
408
- * Accessible label for the link
621
+ * Banner description
409
622
  * @default ''
410
623
  */
411
- "label": string;
412
- }
413
- interface AfTestimonial {
624
+ "description": string;
414
625
  /**
415
- * Attribution text (e.g., "– Nathaniel Barrs, CTO, PSC Insurance")
626
+ * Banner heading
627
+ * @default ''
416
628
  */
417
- "attribution": string;
629
+ "heading": string;
418
630
  /**
419
- * Background image URL for the testimonial card
631
+ * Illustration URL. For theme-matched illustrations, use getIllustrationUrlByScene() from
632
+ * @affinda /illustrations in your app code.
633
+ * @default ''
420
634
  */
421
- "backgroundImage"?: string;
635
+ "illustrationUrl": string;
422
636
  /**
423
- * Company logo URL
637
+ * Primary button text
638
+ * @default ''
424
639
  */
425
- "logoImage"?: string;
640
+ "primaryButtonText": string;
426
641
  /**
427
- * Testimonial quote text
642
+ * Primary button URL
643
+ * @default '#'
428
644
  */
429
- "quote": string;
645
+ "primaryButtonUrl": string;
430
646
  /**
431
- * Link to full case study
647
+ * Secondary button text (optional - if empty, button won't show)
648
+ * @default ''
432
649
  */
433
- "readMoreLink"?: string;
434
- }
435
- interface AfTestimonialCarousel {
436
- }
437
- interface AfTestimonialStat {
650
+ "secondaryButtonText": string;
438
651
  /**
439
- * Whether to show left accent border
440
- * @default false
652
+ * Secondary button URL
653
+ * @default '#'
441
654
  */
442
- "accentBorder": boolean;
655
+ "secondaryButtonUrl": string;
443
656
  /**
444
- * Description text for the statistic
657
+ * Whether to show the decorative wave overlay
658
+ * @default true
445
659
  */
446
- "description": string;
660
+ "showWaveDecoration": boolean;
447
661
  /**
448
- * The statistic value (e.g., "95%", "10×", "120,000")
662
+ * Theme - sets the banner background color and typography colors
663
+ * @default 'mist-green'
449
664
  */
450
- "value": string;
665
+ "theme": BannerTheme;
451
666
  }
452
- interface AfText {
667
+ /**
668
+ * Input field component with label, description, and error states.
669
+ * Supports various input types and validation states.
670
+ */
671
+ interface AfInput {
453
672
  /**
454
- * Visual alignment
455
- * @default 'left'
673
+ * Autocomplete attribute for the input
456
674
  */
457
- "align": 'left' | 'center' | 'right';
675
+ "autocomplete"?: string;
458
676
  /**
459
- * Semantic element to render
460
- * @default 'p'
677
+ * Whether to show a clear button when input has value
678
+ * @default false
461
679
  */
462
- "as": 'p' | 'span' | 'div' | 'label';
680
+ "clearable": boolean;
463
681
  /**
464
- * Theme for dark backgrounds
465
- * @default 'light'
682
+ * Description text displayed below the label
466
683
  */
467
- "theme": 'light' | 'dark';
684
+ "description"?: string;
468
685
  /**
469
- * Text variant
470
- * @default 'medium'
686
+ * Whether the input is disabled
687
+ * @default false
471
688
  */
472
- "variant": 'xlarge' | 'large' | 'medium' | 'small' | 'label-button' | 'label-tag';
473
- }
474
- interface AfTypographyLockup {
689
+ "disabled": boolean;
475
690
  /**
476
- * The breakpoint for responsive typography
477
- * @default 'desktop'
691
+ * Error message to display (also sets error state)
478
692
  */
479
- "breakpoint": 'desktop' | 'mobile';
693
+ "error"?: string;
480
694
  /**
481
- * Button alignment (horizontal or vertical stacking)
482
- * @default 'vertical'
695
+ * The label text for the input field
483
696
  */
484
- "buttonAlignment": 'horizontal' | 'vertical';
697
+ "label"?: string;
485
698
  /**
486
- * The heading size (1-5, where 1 is largest)
487
- * @default 2
699
+ * Maximum length of input value
488
700
  */
489
- "headingSize": 1 | 2 | 3 | 4 | 5;
701
+ "maxlength"?: number;
490
702
  /**
491
- * Maximum width for the copy section (in pixels)
703
+ * Minimum length of input value
492
704
  */
493
- "maxWidth"?: number;
705
+ "minlength"?: number;
494
706
  /**
495
- * Text alignment
496
- * @default 'left'
707
+ * The name of the input for form submission
497
708
  */
498
- "textAlignment": 'left' | 'center';
709
+ "name"?: string;
710
+ /**
711
+ * Pattern for input validation (regex)
712
+ */
713
+ "pattern"?: string;
714
+ /**
715
+ * Placeholder text for the input
716
+ */
717
+ "placeholder"?: string;
718
+ /**
719
+ * Whether the input is read-only
720
+ * @default false
721
+ */
722
+ "readonly": boolean;
723
+ /**
724
+ * Whether the input is required
725
+ * @default false
726
+ */
727
+ "required": boolean;
728
+ /**
729
+ * Whether to show the info icon next to the label
730
+ * @default false
731
+ */
732
+ "showInfoIcon": boolean;
733
+ /**
734
+ * Whether to show a search icon in the input
735
+ * @default false
736
+ */
737
+ "showSearchIcon": boolean;
738
+ /**
739
+ * The input type (text, email, password, number, tel, url, search)
740
+ * @default 'text'
741
+ */
742
+ "type": 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
743
+ /**
744
+ * The current value of the input
745
+ * @default ''
746
+ */
747
+ "value": string;
499
748
  }
500
- }
501
- declare global {
502
749
  /**
503
- * A container component that maintains a fixed aspect ratio for its content.
504
- * Useful for images, videos, or any content that needs to maintain specific proportions.
750
+ * Affinda logo component
505
751
  */
506
- interface HTMLAfAspectRatioElement extends Components.AfAspectRatio, HTMLStencilElement {
507
- }
508
- var HTMLAfAspectRatioElement: {
509
- prototype: HTMLAfAspectRatioElement;
510
- new (): HTMLAfAspectRatioElement;
511
- };
512
- interface HTMLAfButtonElement extends Components.AfButton, HTMLStencilElement {
513
- }
514
- var HTMLAfButtonElement: {
515
- prototype: HTMLAfButtonElement;
516
- new (): HTMLAfButtonElement;
517
- };
518
- interface HTMLAfButtonGroupElement extends Components.AfButtonGroup, HTMLStencilElement {
519
- }
520
- var HTMLAfButtonGroupElement: {
521
- prototype: HTMLAfButtonGroupElement;
522
- new (): HTMLAfButtonGroupElement;
523
- };
524
- interface HTMLAfCardElement extends Components.AfCard, HTMLStencilElement {
752
+ interface AfLogo {
525
753
  }
526
- var HTMLAfCardElement: {
527
- prototype: HTMLAfCardElement;
528
- new (): HTMLAfCardElement;
529
- };
530
754
  /**
531
- * Infinite scrolling carousel for client logos
755
+ * A rounded container for displaying client logos
532
756
  */
533
- interface HTMLAfClientCarouselElement extends Components.AfClientCarousel, HTMLStencilElement {
534
- }
535
- var HTMLAfClientCarouselElement: {
536
- prototype: HTMLAfClientCarouselElement;
537
- new (): HTMLAfClientCarouselElement;
538
- };
539
- interface HTMLAfColorSwatchElement extends Components.AfColorSwatch, HTMLStencilElement {
757
+ interface AfLogoWell {
540
758
  }
541
- var HTMLAfColorSwatchElement: {
542
- prototype: HTMLAfColorSwatchElement;
543
- new (): HTMLAfColorSwatchElement;
544
- };
545
759
  /**
546
- * Contact item component for footer
547
- * Displays a label and value pair (e.g., "Sales enquiries" / "contact@example.com")
760
+ * A navigation card component for featured article content in mega-menu dropdowns.
761
+ * Displays an image with a gradient overlay and headline text.
762
+ * **Usage:**
763
+ * - Place in the `sidebar` slot of NavMenuNest
764
+ * - Provide imageSrc, heading, and href props
765
+ * **Hover behavior:**
766
+ * - Slight scale effect (1.02)
767
+ * - Headline underline
548
768
  */
549
- interface HTMLAfContactItemElement extends Components.AfContactItem, HTMLStencilElement {
769
+ interface AfNavCard {
770
+ /**
771
+ * The headline text displayed over the image
772
+ */
773
+ "heading"?: string;
774
+ /**
775
+ * URL to navigate to when clicked
776
+ */
777
+ "href"?: string;
778
+ /**
779
+ * Alternative text for the image
780
+ * @default ''
781
+ */
782
+ "imageAlt": string;
783
+ /**
784
+ * Image source URL for the background
785
+ */
786
+ "imageSrc"?: string;
550
787
  }
551
- var HTMLAfContactItemElement: {
552
- prototype: HTMLAfContactItemElement;
553
- new (): HTMLAfContactItemElement;
554
- };
555
788
  /**
556
- * A responsive container component that provides consistent margins and max-width
557
- * constraints based on the Affinda grid system.
789
+ * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
790
+ * Supports multiple hierarchy levels, variants, and states (active, hover).
558
791
  */
559
- interface HTMLAfContainerElement extends Components.AfContainer, HTMLStencilElement {
792
+ interface AfNavItem {
793
+ /**
794
+ * Whether this nav item is currently active/selected
795
+ * @default false
796
+ */
797
+ "active": boolean;
798
+ /**
799
+ * Breakpoint variant for responsive styling - 'desktop': Desktop-specific styles - 'mobile': Mobile-specific styles (larger text, different spacing)
800
+ * @default 'desktop'
801
+ */
802
+ "breakpoint": 'desktop' | 'mobile';
803
+ /**
804
+ * Visual hierarchy level of the navigation item - 'primary': Bold, main navigation (larger text, prominent styling) - 'secondary': Lighter, sub-navigation (smaller text, subtle styling)
805
+ * @default 'primary'
806
+ */
807
+ "hierarchy": 'primary' | 'secondary';
808
+ /**
809
+ * URL to navigate to when clicked
810
+ */
811
+ "href"?: string;
812
+ /**
813
+ * Visual variant within the hierarchy level - '01': Darker/more prominent styling - '02': Lighter/more subtle styling
814
+ * @default '01'
815
+ */
816
+ "variant": '01' | '02';
560
817
  }
561
- var HTMLAfContainerElement: {
562
- prototype: HTMLAfContainerElement;
563
- new (): HTMLAfContainerElement;
564
- };
565
818
  /**
566
- * Call-to-action section component with illustration and decorative background
567
- * Styled to match the affinda.com "See what our AI agents can do for you" section
819
+ * A grouped navigation menu component with a heading.
820
+ * Used in mega-menu dropdowns to group related navigation items.
568
821
  */
569
- interface HTMLAfCtaSectionElement extends Components.AfCtaSection, HTMLStencilElement {
822
+ interface AfNavMenu {
823
+ /**
824
+ * Breakpoint variant for responsive styling - 'desktop': Desktop-specific styles (right border, horizontal padding) - 'mobile': Mobile-specific styles (bottom border, vertical layout)
825
+ * @default 'desktop'
826
+ */
827
+ "breakpoint": 'desktop' | 'mobile';
828
+ /**
829
+ * Whether to display as a card with background color and rounded corners. Used for highlighted sidebar menus (e.g., solutions-alt variant).
830
+ * @default false
831
+ */
832
+ "cardStyle": boolean;
833
+ /**
834
+ * The heading text displayed above the navigation items
835
+ */
836
+ "heading"?: string;
837
+ /**
838
+ * Whether to show the right border separator. When used inside NavMenuNest, borders are controlled by the parent. Set to true only when using NavMenu standalone.
839
+ * @default false
840
+ */
841
+ "showBorder": boolean;
570
842
  }
571
- var HTMLAfCtaSectionElement: {
572
- prototype: HTMLAfCtaSectionElement;
573
- new (): HTMLAfCtaSectionElement;
574
- };
575
843
  /**
576
- * Feature accordion component with expandable items and accompanying image
577
- * Used for showcasing product features with visual examples
578
- * Features auto-cycling through items with a progress timer
844
+ * A mega-menu dropdown panel component.
845
+ * Acts as a container for NavMenu columns and optionally a sidebar.
846
+ * Used as the dropdown content for navbar items.
847
+ * **Slots:**
848
+ * - default: Place NavMenu components here - they will be displayed as columns
849
+ * - sidebar: Optional sidebar content (NavMenu, NavCard, or any content)
850
+ * **Example:**
851
+ * ```html
852
+ * <af-nav-menu-nest type="solutions" breakpoint="desktop">
853
+ * <af-nav-menu heading="Industries">...</af-nav-menu>
854
+ * <af-nav-menu heading="Use Cases">...</af-nav-menu>
855
+ * <af-nav-menu heading="Documents">...</af-nav-menu>
856
+ * <af-nav-menu slot="sidebar" heading="Resume Parser">...</af-nav-menu>
857
+ * </af-nav-menu-nest>
858
+ * ```
579
859
  */
580
- interface HTMLAfFeatureAccordionElement extends Components.AfFeatureAccordion, HTMLStencilElement {
860
+ interface AfNavMenuNest {
861
+ /**
862
+ * Breakpoint variant for responsive styling - 'desktop': Horizontal multi-column layout - 'mobile': Vertical stacked layout
863
+ * @default 'desktop'
864
+ */
865
+ "breakpoint": 'desktop' | 'mobile';
866
+ /**
867
+ * Whether to show the heavier border on the last column (before sidebar). Set to `true` when sidebar has content, `false` when no sidebar. When `false`, the last column has no border.
868
+ * @default true
869
+ */
870
+ "showSidebarBorder": boolean;
871
+ /**
872
+ * The type/variant of the mega-menu - 'solutions': Multi-column layout (3 columns + sidebar) - 'solutions-alt': Alternative solutions layout - 'resources': Multi-column layout with optional featured card - 'pricing': Simpler layout without sidebar
873
+ * @default 'solutions'
874
+ */
875
+ "type": 'solutions' | 'solutions-alt' | 'resources' | 'pricing';
581
876
  }
582
- var HTMLAfFeatureAccordionElement: {
583
- prototype: HTMLAfFeatureAccordionElement;
584
- new (): HTMLAfFeatureAccordionElement;
585
- };
586
877
  /**
587
- * Footer component for marketing pages
588
- * Provides a flexible, slot-based layout for footer content
589
- * All content is passed via slots - no hardcoded links or content
878
+ * A full-width navigation bar component that provides the main site navigation.
879
+ * Features a pill-shaped container with logo, navigation links, and action buttons.
880
+ * Includes mobile hamburger menu and support for mega-menu dropdowns.
881
+ * The logo slot can be used to provide a custom logo. If no logo is provided,
882
+ * the default Affinda logo will be displayed.
590
883
  */
591
- interface HTMLAfFooterElement extends Components.AfFooter, HTMLStencilElement {
884
+ interface AfNavbar {
885
+ /**
886
+ * Whether to show the default Affinda logo when no logo slot content is provided
887
+ * @default true
888
+ */
889
+ "showDefaultLogo": boolean;
890
+ /**
891
+ * Theme for the spacer background - should match the section below the navbar
892
+ */
893
+ "theme"?: 'white' | 'inkwell' | 'mist-green' | 'soft-clay';
592
894
  }
593
- var HTMLAfFooterElement: {
594
- prototype: HTMLAfFooterElement;
595
- new (): HTMLAfFooterElement;
596
- };
597
895
  /**
598
- * Footer navigation column component
599
- * Used within af-footer to create navigation link groups
896
+ * NumberBadge displays numbers 1-10 in either a filled circle or text-only style.
897
+ * Perfect for numbered lists, step indicators, or ordered content.
898
+ * @example ```html
899
+ * <af-number-badge number="1" variant="inCircle" size="48"></af-number-badge>
900
+ * <af-number-badge number="5" variant="outlined" size="32"></af-number-badge>
901
+ * ```
600
902
  */
601
- interface HTMLAfFooterColumnElement extends Components.AfFooterColumn, HTMLStencilElement {
903
+ interface AfNumberBadge {
904
+ /**
905
+ * The number to display (1-10)
906
+ * @default 1
907
+ */
908
+ "number": NumberBadgeNumber;
909
+ /**
910
+ * Size of the badge in pixels
911
+ * @default 48
912
+ */
913
+ "size": number;
914
+ /**
915
+ * Visual variant of the badge - `inCircle` - Number in filled soft-clay circle - `outlined` - Number text only in mist-green
916
+ * @default 'inCircle'
917
+ */
918
+ "variant": NumberBadgeVariant;
602
919
  }
603
- var HTMLAfFooterColumnElement: {
604
- prototype: HTMLAfFooterColumnElement;
605
- new (): HTMLAfFooterColumnElement;
606
- };
607
920
  /**
608
- * Footer link component
609
- * Styled link for use in footer navigation columns
921
+ * Progress Line atom component for displaying scroll or completion progress.
922
+ * Shows a horizontal bar with a filled portion indicating progress.
923
+ * Used primarily for carousel scroll indicators.
610
924
  */
611
- interface HTMLAfFooterLinkElement extends Components.AfFooterLink, HTMLStencilElement {
612
- }
613
- var HTMLAfFooterLinkElement: {
614
- prototype: HTMLAfFooterLinkElement;
615
- new (): HTMLAfFooterLinkElement;
616
- };
617
- interface HTMLAfHeadingElement extends Components.AfHeading, HTMLStencilElement {
925
+ interface AfProgressLine {
926
+ /**
927
+ * Orientation of the progress line. Currently only horizontal is supported.
928
+ * @default 'horizontal'
929
+ */
930
+ "orientation": 'horizontal';
931
+ /**
932
+ * Progress value from 0 to 1 (0 = 0%, 1 = 100%).
933
+ * @default 0
934
+ */
935
+ "progress": number;
618
936
  }
619
- var HTMLAfHeadingElement: {
620
- prototype: HTMLAfHeadingElement;
621
- new (): HTMLAfHeadingElement;
622
- };
623
937
  /**
624
- * Hero section component for marketing pages
938
+ * Radio component for selecting a single option from a group.
625
939
  */
626
- interface HTMLAfHeroSectionElement extends Components.AfHeroSection, HTMLStencilElement {
627
- }
628
- var HTMLAfHeroSectionElement: {
629
- prototype: HTMLAfHeroSectionElement;
630
- new (): HTMLAfHeroSectionElement;
631
- };
632
- interface HTMLAfIconButtonElement extends Components.AfIconButton, HTMLStencilElement {
940
+ interface AfRadio {
941
+ /**
942
+ * Whether the radio is checked
943
+ * @default false
944
+ */
945
+ "checked": boolean;
946
+ /**
947
+ * Whether the radio is disabled
948
+ * @default false
949
+ */
950
+ "disabled": boolean;
951
+ /**
952
+ * The name of the radio for form submission (radios with same name are grouped)
953
+ */
954
+ "name"?: string;
955
+ /**
956
+ * The value of the radio for form submission
957
+ */
958
+ "value"?: string;
633
959
  }
634
- var HTMLAfIconButtonElement: {
635
- prototype: HTMLAfIconButtonElement;
636
- new (): HTMLAfIconButtonElement;
637
- };
638
960
  /**
639
- * Affinda logo component
961
+ * Section layout component for consistent spacing and backgrounds.
962
+ * Sets theme context for all child components via CSS custom properties.
640
963
  */
641
- interface HTMLAfLogoElement extends Components.AfLogo, HTMLStencilElement {
964
+ interface AfSection {
965
+ /**
966
+ * Whether to include a Container wrapper
967
+ * @default true
968
+ */
969
+ "container": boolean;
970
+ /**
971
+ * Padding variant
972
+ * @default 'default'
973
+ */
974
+ "padding": 'tight' | 'default' | 'loose';
975
+ /**
976
+ * Theme - sets background color and provides theme context to children
977
+ * @default 'white'
978
+ */
979
+ "theme": 'white' | 'inkwell' | 'mist-green' | 'soft-clay' | 'white-ivory';
642
980
  }
643
- var HTMLAfLogoElement: {
644
- prototype: HTMLAfLogoElement;
645
- new (): HTMLAfLogoElement;
646
- };
647
981
  /**
648
- * A rounded container for displaying client logos
982
+ * Social media link component
983
+ * Circular bordered icon link for social media profiles
649
984
  */
650
- interface HTMLAfLogoWellElement extends Components.AfLogoWell, HTMLStencilElement {
651
- }
652
- var HTMLAfLogoWellElement: {
653
- prototype: HTMLAfLogoWellElement;
654
- new (): HTMLAfLogoWellElement;
655
- };
985
+ interface AfSocialLink {
986
+ /**
987
+ * Link URL
988
+ * @default '#'
989
+ */
990
+ "href": string;
991
+ /**
992
+ * Icon type: 'linkedin', 'youtube', 'github', 'twitter', 'facebook', or 'custom'
993
+ * @default 'custom'
994
+ */
995
+ "icon": 'linkedin' | 'youtube' | 'github' | 'twitter' | 'facebook' | 'custom';
996
+ /**
997
+ * Accessible label for the link
998
+ * @default ''
999
+ */
1000
+ "label": string;
1001
+ }
1002
+ /**
1003
+ * Split Section component for layouts with two-tone backgrounds.
1004
+ * Creates a vertical split with different themes for top and bottom halves.
1005
+ * Useful for content that visually spans across two themed areas.
1006
+ * Uses a CSS linear-gradient for the split background effect.
1007
+ */
1008
+ interface AfSplitSection {
1009
+ /**
1010
+ * Theme for the bottom half of the section
1011
+ * @default 'white'
1012
+ */
1013
+ "bottomTheme": Theme;
1014
+ /**
1015
+ * Whether to include a Container wrapper
1016
+ * @default true
1017
+ */
1018
+ "container": boolean;
1019
+ /**
1020
+ * Padding variant
1021
+ * @default 'default'
1022
+ */
1023
+ "padding": 'tight' | 'default' | 'loose';
1024
+ /**
1025
+ * Theme for the top half of the section
1026
+ * @default 'mist-green'
1027
+ */
1028
+ "topTheme": Theme;
1029
+ }
1030
+ /**
1031
+ * Switch component for toggling between on and off states.
1032
+ */
1033
+ interface AfSwitch {
1034
+ /**
1035
+ * Whether the switch is active (on)
1036
+ * @default false
1037
+ */
1038
+ "active": boolean;
1039
+ /**
1040
+ * Whether the switch is disabled
1041
+ * @default false
1042
+ */
1043
+ "disabled": boolean;
1044
+ /**
1045
+ * The name of the switch for form submission
1046
+ */
1047
+ "name"?: string;
1048
+ /**
1049
+ * The value of the switch for form submission
1050
+ */
1051
+ "value"?: string;
1052
+ }
1053
+ /**
1054
+ * Tab component for use within a TabBar.
1055
+ * Represents an individual selectable tab with support for icons and number badges.
1056
+ * @example ```html
1057
+ * <af-tab label="Overview" active></af-tab>
1058
+ * <af-tab label="Details">
1059
+ * <af-icon slot="icon" name="document"></af-icon>
1060
+ * </af-tab>
1061
+ * <af-tab label="Step 1">
1062
+ * <af-number-badge slot="number" number="1"></af-number-badge>
1063
+ * </af-tab>
1064
+ * ```
1065
+ */
1066
+ interface AfTab {
1067
+ /**
1068
+ * Whether the tab is currently active/selected
1069
+ * @default false
1070
+ */
1071
+ "active": boolean;
1072
+ /**
1073
+ * Whether the tab is disabled
1074
+ * @default false
1075
+ */
1076
+ "disabled": boolean;
1077
+ /**
1078
+ * Whether to show the icon slot
1079
+ * @default false
1080
+ */
1081
+ "displayIcon": boolean;
1082
+ /**
1083
+ * Whether to show the number badge slot
1084
+ * @default false
1085
+ */
1086
+ "displayNumber": boolean;
1087
+ /**
1088
+ * The text label for the tab
1089
+ * @default ''
1090
+ */
1091
+ "label": string;
1092
+ /**
1093
+ * Visual shape variant - `square` - Rectangular tab with bottom border indicator - `pill` - Rounded pill shape with background for active state
1094
+ * @default 'square'
1095
+ */
1096
+ "shape": TabShape;
1097
+ /**
1098
+ * Unique value for the tab, used for programmatic selection
1099
+ */
1100
+ "value"?: string;
1101
+ }
1102
+ /**
1103
+ * TabBar component that contains and manages a group of tabs.
1104
+ * Provides horizontal layout, keyboard navigation, and consistent styling.
1105
+ * @example ```html
1106
+ * <af-tab-bar shape="square" breakpoint="desktop">
1107
+ * <af-tab label="Overview" active value="overview"></af-tab>
1108
+ * <af-tab label="Details" value="details"></af-tab>
1109
+ * <af-tab label="Settings" value="settings"></af-tab>
1110
+ * </af-tab-bar>
1111
+ * ```
1112
+ */
1113
+ interface AfTabBar {
1114
+ /**
1115
+ * Responsive breakpoint mode - `mobile` - Compact layout with smaller padding - `desktop` - Larger layout with more generous spacing
1116
+ * @default 'desktop'
1117
+ */
1118
+ "breakpoint": TabBarBreakpoint;
1119
+ /**
1120
+ * Visual shape variant for all tabs - `square` - Rectangular tabs with bottom border indicator - `pill` - Rounded pill tabs with background for active state
1121
+ * @default 'square'
1122
+ */
1123
+ "shape": TabBarShape;
1124
+ }
1125
+ /**
1126
+ * Tag displays a label in a styled container.
1127
+ * Perfect for categorization, topics, or metadata display.
1128
+ * @example ```html
1129
+ * <af-tag>AI</af-tag>
1130
+ * <af-tag size="small">Machine Learning</af-tag>
1131
+ * <af-tag size="large" variant="light">Document Processing</af-tag>
1132
+ * ```
1133
+ */
1134
+ interface AfTag {
1135
+ /**
1136
+ * The URL to navigate to when the tag is clicked (makes the tag a link)
1137
+ */
1138
+ "href"?: string;
1139
+ /**
1140
+ * The size of the tag - `x-small` - Compact tag with minimal padding - `small` - Small tag with moderate padding - `large` - Large tag with generous padding
1141
+ * @default 'small'
1142
+ */
1143
+ "size": TagSize;
1144
+ /**
1145
+ * The visual variant of the tag - `sand` - Soft-clay/tan colored background (default) - `light` - Mist-green/light colored background
1146
+ * @default 'sand'
1147
+ */
1148
+ "variant": TagVariant;
1149
+ }
1150
+ interface AfTestimonial {
1151
+ /**
1152
+ * Attribution text (e.g., "– Nathaniel Barrs, CTO, PSC Insurance")
1153
+ */
1154
+ "attribution": string;
1155
+ /**
1156
+ * Background image URL for the testimonial card
1157
+ */
1158
+ "backgroundImage"?: string;
1159
+ /**
1160
+ * Whether the next button is enabled
1161
+ * @default false
1162
+ */
1163
+ "hasNext": boolean;
1164
+ /**
1165
+ * Whether the previous button is enabled
1166
+ * @default false
1167
+ */
1168
+ "hasPrev": boolean;
1169
+ /**
1170
+ * Company logo URL
1171
+ */
1172
+ "logoImage"?: string;
1173
+ /**
1174
+ * Testimonial quote text
1175
+ */
1176
+ "quote": string;
1177
+ /**
1178
+ * Link to full case study
1179
+ */
1180
+ "readMoreLink"?: string;
1181
+ /**
1182
+ * Whether to show built-in navigation buttons (used when in a carousel)
1183
+ * @default false
1184
+ */
1185
+ "showNavigation": boolean;
1186
+ }
1187
+ /**
1188
+ * TestimonialCarousel - Carousel for displaying multiple customer testimonials.
1189
+ * Handles navigation between testimonials with progress indicator.
1190
+ * Wrap in Section/Container for proper page layout and theming.
1191
+ */
1192
+ interface AfTestimonialCarousel {
1193
+ }
1194
+ interface AfTestimonialStat {
1195
+ /**
1196
+ * Whether to show left accent border
1197
+ * @default false
1198
+ */
1199
+ "accentBorder": boolean;
1200
+ /**
1201
+ * Description text for the statistic
1202
+ */
1203
+ "description": string;
1204
+ /**
1205
+ * The statistic value (e.g., "95%", "10×", "120,000")
1206
+ */
1207
+ "value": string;
1208
+ }
1209
+ /**
1210
+ * Text/body component that inherits color from theme context.
1211
+ * Color is determined by the parent theme (af-section, af-hero-section, etc.)
1212
+ * via CSS custom properties.
1213
+ */
1214
+ interface AfText {
1215
+ /**
1216
+ * Visual alignment
1217
+ * @default 'left'
1218
+ */
1219
+ "align": 'left' | 'center' | 'right';
1220
+ /**
1221
+ * Semantic element to render
1222
+ * @default 'p'
1223
+ */
1224
+ "as": 'p' | 'span' | 'div' | 'label';
1225
+ /**
1226
+ * Text variant
1227
+ * @default 'medium'
1228
+ */
1229
+ "variant": 'xlarge' | 'large' | 'medium' | 'small';
1230
+ }
1231
+ /**
1232
+ * TextImage composite component that combines typography content with an image.
1233
+ * Supports various layout configurations with image position and proportion options.
1234
+ */
1235
+ interface AfTextImage {
1236
+ /**
1237
+ * Image alt text for accessibility
1238
+ * @default ''
1239
+ */
1240
+ "alt": string;
1241
+ /**
1242
+ * Position of the image relative to the text content
1243
+ * @default 'right'
1244
+ */
1245
+ "imagePosition": 'left' | 'right';
1246
+ /**
1247
+ * Proportion of the image in the layout - '1/3': Image takes 1/3 of the width (text takes 2/3) - '1/4': Image takes 1/4 of the width (text takes 3/4) - '100%': Image takes full width below text
1248
+ * @default '1/3'
1249
+ */
1250
+ "imageProportion": '1/3' | '1/4' | '100%';
1251
+ /**
1252
+ * Whether to show a second typography lockup section
1253
+ * @default false
1254
+ */
1255
+ "showSecondLockup": boolean;
1256
+ /**
1257
+ * Image source URL
1258
+ */
1259
+ "src"?: string;
1260
+ }
1261
+ /**
1262
+ * TextImageNest is a layout component that arranges multiple text-image content pieces
1263
+ * in various grid layouts with optional footer buttons.
1264
+ * This component inherits theming from a parent Section or theme-providing container.
1265
+ * Wrap it in an af-section to apply themes.
1266
+ * Supports multiple layout variants:
1267
+ * - `single`: Full-width single item (side-by-side image + text)
1268
+ * - `grid-2`: 2-column grid with stacked items
1269
+ * - `grid-3`: 3-column grid with stacked items
1270
+ * - `grid-4`: 4-column grid with stacked items
1271
+ * - `stacked`: Alternating rows of side-by-side content
1272
+ */
1273
+ interface AfTextImageNest {
1274
+ /**
1275
+ * Layout variant for the content grid
1276
+ * @default 'grid-3'
1277
+ */
1278
+ "layout": 'single' | 'grid-2' | 'grid-3' | 'grid-4' | 'stacked';
1279
+ }
1280
+ /**
1281
+ * Textarea component for multi-line text input with label, description, and error states.
1282
+ */
1283
+ interface AfTextarea {
1284
+ /**
1285
+ * Description text displayed below the label
1286
+ */
1287
+ "description"?: string;
1288
+ /**
1289
+ * Whether the textarea is disabled
1290
+ * @default false
1291
+ */
1292
+ "disabled": boolean;
1293
+ /**
1294
+ * Error message to display (also sets error state)
1295
+ */
1296
+ "error"?: string;
1297
+ /**
1298
+ * The label text for the textarea
1299
+ */
1300
+ "label"?: string;
1301
+ /**
1302
+ * Maximum length of input value
1303
+ */
1304
+ "maxlength"?: number;
1305
+ /**
1306
+ * Minimum length of input value
1307
+ */
1308
+ "minlength"?: number;
1309
+ /**
1310
+ * The name of the textarea for form submission
1311
+ */
1312
+ "name"?: string;
1313
+ /**
1314
+ * Placeholder text for the textarea
1315
+ */
1316
+ "placeholder"?: string;
1317
+ /**
1318
+ * Whether the textarea is read-only
1319
+ * @default false
1320
+ */
1321
+ "readonly": boolean;
1322
+ /**
1323
+ * Whether the textarea is required
1324
+ * @default false
1325
+ */
1326
+ "required": boolean;
1327
+ /**
1328
+ * Whether the textarea is resizable
1329
+ * @default 'vertical'
1330
+ */
1331
+ "resize": 'none' | 'vertical' | 'horizontal' | 'both';
1332
+ /**
1333
+ * Number of visible rows (height)
1334
+ * @default 4
1335
+ */
1336
+ "rows": number;
1337
+ /**
1338
+ * Whether to show the info icon next to the label
1339
+ * @default false
1340
+ */
1341
+ "showInfoIcon": boolean;
1342
+ /**
1343
+ * The current value of the textarea
1344
+ * @default ''
1345
+ */
1346
+ "value": string;
1347
+ }
1348
+ interface AfTypographyLockup {
1349
+ /**
1350
+ * The breakpoint for responsive typography
1351
+ * @default 'desktop'
1352
+ */
1353
+ "breakpoint": 'desktop' | 'mobile';
1354
+ /**
1355
+ * Button alignment (horizontal or vertical stacking)
1356
+ * @default 'vertical'
1357
+ */
1358
+ "buttonAlignment": 'horizontal' | 'vertical';
1359
+ /**
1360
+ * The heading size (1-5, where 1 is largest)
1361
+ * @default 2
1362
+ */
1363
+ "headingSize": 1 | 2 | 3 | 4 | 5;
1364
+ /**
1365
+ * Maximum width for the copy section (in pixels)
1366
+ */
1367
+ "maxWidth"?: number;
1368
+ /**
1369
+ * Text alignment
1370
+ * @default 'left'
1371
+ */
1372
+ "textAlignment": 'left' | 'center';
1373
+ }
1374
+ /**
1375
+ * Video Container molecule component for showcasing video content.
1376
+ * Uses slots for typography lockups above and below the video.
1377
+ * When used inside af-split-section, the top slot inherits the top theme
1378
+ * and the bottom slot inherits the bottom theme for correct colors.
1379
+ * @example ```html
1380
+ * <af-split-section top-theme="mist-green" bottom-theme="white">
1381
+ * <af-video-container video-thumbnail-url="/path/to/thumbnail.jpg">
1382
+ * <af-typography-lockup slot="top" text-alignment="center" heading-size="2">
1383
+ * <af-heading level="2">Watch our product demo</af-heading>
1384
+ * <af-text slot="description">See how Affinda transforms your workflow</af-text>
1385
+ * <af-button slot="buttons" variant="primary">Get Started</af-button>
1386
+ * </af-typography-lockup>
1387
+ * </af-video-container>
1388
+ * </af-split-section>
1389
+ * ```
1390
+ */
1391
+ interface AfVideoContainer {
1392
+ /**
1393
+ * Video alt text for accessibility
1394
+ * @default 'Video thumbnail'
1395
+ */
1396
+ "videoAlt": string;
1397
+ /**
1398
+ * Video thumbnail image URL
1399
+ * @default ''
1400
+ */
1401
+ "videoThumbnailUrl": string;
1402
+ /**
1403
+ * Optional video URL for play button link
1404
+ * @default ''
1405
+ */
1406
+ "videoUrl": string;
1407
+ }
1408
+ }
1409
+ export interface AfCheckboxCustomEvent<T> extends CustomEvent<T> {
1410
+ detail: T;
1411
+ target: HTMLAfCheckboxElement;
1412
+ }
1413
+ export interface AfInputCustomEvent<T> extends CustomEvent<T> {
1414
+ detail: T;
1415
+ target: HTMLAfInputElement;
1416
+ }
1417
+ export interface AfRadioCustomEvent<T> extends CustomEvent<T> {
1418
+ detail: T;
1419
+ target: HTMLAfRadioElement;
1420
+ }
1421
+ export interface AfSwitchCustomEvent<T> extends CustomEvent<T> {
1422
+ detail: T;
1423
+ target: HTMLAfSwitchElement;
1424
+ }
1425
+ export interface AfTabCustomEvent<T> extends CustomEvent<T> {
1426
+ detail: T;
1427
+ target: HTMLAfTabElement;
1428
+ }
1429
+ export interface AfTestimonialCustomEvent<T> extends CustomEvent<T> {
1430
+ detail: T;
1431
+ target: HTMLAfTestimonialElement;
1432
+ }
1433
+ export interface AfTextareaCustomEvent<T> extends CustomEvent<T> {
1434
+ detail: T;
1435
+ target: HTMLAfTextareaElement;
1436
+ }
1437
+ export interface AfVideoContainerCustomEvent<T> extends CustomEvent<T> {
1438
+ detail: T;
1439
+ target: HTMLAfVideoContainerElement;
1440
+ }
1441
+ declare global {
1442
+ /**
1443
+ * A container component that maintains a fixed aspect ratio for its content.
1444
+ * Useful for images, videos, or any content that needs to maintain specific proportions.
1445
+ */
1446
+ interface HTMLAfAspectRatioElement extends Components.AfAspectRatio, HTMLStencilElement {
1447
+ }
1448
+ var HTMLAfAspectRatioElement: {
1449
+ prototype: HTMLAfAspectRatioElement;
1450
+ new (): HTMLAfAspectRatioElement;
1451
+ };
1452
+ /**
1453
+ * Button component that inherits colors from theme context.
1454
+ * Colors are determined by the parent theme (af-section, af-hero-section, etc.)
1455
+ * via CSS custom properties.
1456
+ */
1457
+ interface HTMLAfButtonElement extends Components.AfButton, HTMLStencilElement {
1458
+ }
1459
+ var HTMLAfButtonElement: {
1460
+ prototype: HTMLAfButtonElement;
1461
+ new (): HTMLAfButtonElement;
1462
+ };
1463
+ interface HTMLAfButtonGroupElement extends Components.AfButtonGroup, HTMLStencilElement {
1464
+ }
1465
+ var HTMLAfButtonGroupElement: {
1466
+ prototype: HTMLAfButtonGroupElement;
1467
+ new (): HTMLAfButtonGroupElement;
1468
+ };
1469
+ /**
1470
+ * Card atom component - a themed container with consistent styling.
1471
+ * Provides theme context to children via CSS custom properties.
1472
+ * This is a base building block used by molecule components like
1473
+ * af-feature-card and af-illustrated-card.
1474
+ */
1475
+ interface HTMLAfCardElement extends Components.AfCard, HTMLStencilElement {
1476
+ }
1477
+ var HTMLAfCardElement: {
1478
+ prototype: HTMLAfCardElement;
1479
+ new (): HTMLAfCardElement;
1480
+ };
1481
+ interface HTMLAfCheckboxElementEventMap {
1482
+ "afChange": { checked: boolean };
1483
+ }
1484
+ /**
1485
+ * Checkbox component for selecting multiple options.
1486
+ * Supports checked, unchecked, and indeterminate states.
1487
+ */
1488
+ interface HTMLAfCheckboxElement extends Components.AfCheckbox, HTMLStencilElement {
1489
+ addEventListener<K extends keyof HTMLAfCheckboxElementEventMap>(type: K, listener: (this: HTMLAfCheckboxElement, ev: AfCheckboxCustomEvent<HTMLAfCheckboxElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1490
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1491
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1492
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1493
+ removeEventListener<K extends keyof HTMLAfCheckboxElementEventMap>(type: K, listener: (this: HTMLAfCheckboxElement, ev: AfCheckboxCustomEvent<HTMLAfCheckboxElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1494
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1495
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1496
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1497
+ }
1498
+ var HTMLAfCheckboxElement: {
1499
+ prototype: HTMLAfCheckboxElement;
1500
+ new (): HTMLAfCheckboxElement;
1501
+ };
1502
+ /**
1503
+ * Infinite scrolling carousel for client logos.
1504
+ * This is a section-level component that spans full width.
1505
+ * It supports theming via the `theme` prop.
1506
+ * For headlines, use a separate TypographyLockup or Heading component above this carousel.
1507
+ */
1508
+ interface HTMLAfClientCarouselElement extends Components.AfClientCarousel, HTMLStencilElement {
1509
+ }
1510
+ var HTMLAfClientCarouselElement: {
1511
+ prototype: HTMLAfClientCarouselElement;
1512
+ new (): HTMLAfClientCarouselElement;
1513
+ };
1514
+ interface HTMLAfColorSwatchElement extends Components.AfColorSwatch, HTMLStencilElement {
1515
+ }
1516
+ var HTMLAfColorSwatchElement: {
1517
+ prototype: HTMLAfColorSwatchElement;
1518
+ new (): HTMLAfColorSwatchElement;
1519
+ };
1520
+ /**
1521
+ * Contact item component for footer
1522
+ * Displays a label and value pair (e.g., "Sales enquiries" / "contact@example.com")
1523
+ */
1524
+ interface HTMLAfContactItemElement extends Components.AfContactItem, HTMLStencilElement {
1525
+ }
1526
+ var HTMLAfContactItemElement: {
1527
+ prototype: HTMLAfContactItemElement;
1528
+ new (): HTMLAfContactItemElement;
1529
+ };
1530
+ /**
1531
+ * A responsive container component that provides consistent margins and max-width
1532
+ * constraints based on the Affinda grid system.
1533
+ */
1534
+ interface HTMLAfContainerElement extends Components.AfContainer, HTMLStencilElement {
1535
+ }
1536
+ var HTMLAfContainerElement: {
1537
+ prototype: HTMLAfContainerElement;
1538
+ new (): HTMLAfContainerElement;
1539
+ };
1540
+ /**
1541
+ * Feature accordion component with expandable items and accompanying image.
1542
+ * Used for showcasing product features with visual examples.
1543
+ * Features auto-cycling through items with a progress timer.
1544
+ * **Must be wrapped in a Section component** to inherit theme styling.
1545
+ * The component automatically adapts colors based on the parent Section's theme.
1546
+ * @example ```tsx
1547
+ * <Section theme="inkwell">
1548
+ * <FeatureAccordion heading="Features" items={...} />
1549
+ * </Section>
1550
+ * ```
1551
+ */
1552
+ interface HTMLAfFeatureAccordionElement extends Components.AfFeatureAccordion, HTMLStencilElement {
1553
+ }
1554
+ var HTMLAfFeatureAccordionElement: {
1555
+ prototype: HTMLAfFeatureAccordionElement;
1556
+ new (): HTMLAfFeatureAccordionElement;
1557
+ };
1558
+ /**
1559
+ * Feature Card molecule component that combines a card with an image.
1560
+ * Two layout modes:
1561
+ * - `standard`: Theme background with text at top and image at bottom
1562
+ * - `full-bleed`: Image covers entire card with text overlay at bottom
1563
+ * Responsive: Automatically adapts to mobile viewport (≤768px).
1564
+ * Uses af-card atom internally and af-typography-lockup for text hierarchy.
1565
+ */
1566
+ interface HTMLAfFeatureCardElement extends Components.AfFeatureCard, HTMLStencilElement {
1567
+ }
1568
+ var HTMLAfFeatureCardElement: {
1569
+ prototype: HTMLAfFeatureCardElement;
1570
+ new (): HTMLAfFeatureCardElement;
1571
+ };
1572
+ /**
1573
+ * Feature Grid component - CSS Grid container for feature cards.
1574
+ * Desktop: Configurable columns (1-4)
1575
+ * Mobile: List (stacked), horizontal scroll, or 2-column grid
1576
+ */
1577
+ interface HTMLAfFeatureGridElement extends Components.AfFeatureGrid, HTMLStencilElement {
1578
+ }
1579
+ var HTMLAfFeatureGridElement: {
1580
+ prototype: HTMLAfFeatureGridElement;
1581
+ new (): HTMLAfFeatureGridElement;
1582
+ };
1583
+ /**
1584
+ * Fieldset component for grouping related form controls.
1585
+ * Supports vertical and horizontal layouts with an optional legend/heading.
1586
+ */
1587
+ interface HTMLAfFieldsetElement extends Components.AfFieldset, HTMLStencilElement {
1588
+ }
1589
+ var HTMLAfFieldsetElement: {
1590
+ prototype: HTMLAfFieldsetElement;
1591
+ new (): HTMLAfFieldsetElement;
1592
+ };
1593
+ /**
1594
+ * Footer component for marketing pages
1595
+ * Provides a flexible, slot-based layout for footer content
1596
+ * All content is passed via slots - no hardcoded links or content
1597
+ */
1598
+ interface HTMLAfFooterElement extends Components.AfFooter, HTMLStencilElement {
1599
+ }
1600
+ var HTMLAfFooterElement: {
1601
+ prototype: HTMLAfFooterElement;
1602
+ new (): HTMLAfFooterElement;
1603
+ };
1604
+ /**
1605
+ * Footer navigation column component
1606
+ * Used within af-footer to create navigation link groups
1607
+ */
1608
+ interface HTMLAfFooterColumnElement extends Components.AfFooterColumn, HTMLStencilElement {
1609
+ }
1610
+ var HTMLAfFooterColumnElement: {
1611
+ prototype: HTMLAfFooterColumnElement;
1612
+ new (): HTMLAfFooterColumnElement;
1613
+ };
1614
+ /**
1615
+ * Footer link component
1616
+ * Styled link for use in footer navigation columns
1617
+ */
1618
+ interface HTMLAfFooterLinkElement extends Components.AfFooterLink, HTMLStencilElement {
1619
+ }
1620
+ var HTMLAfFooterLinkElement: {
1621
+ prototype: HTMLAfFooterLinkElement;
1622
+ new (): HTMLAfFooterLinkElement;
1623
+ };
1624
+ /**
1625
+ * GridCallout organism - a marketing section combining an optional pill-shaped image
1626
+ * with a grid of IconText feature items.
1627
+ * Composes:
1628
+ * - Pill-shaped image container (optional)
1629
+ * - Heading via af-typography-lockup
1630
+ * - Grid of af-icon-text items
1631
+ * - Optional CTA button
1632
+ * Inherits theme colors from parent af-section via CSS custom properties.
1633
+ * @example ```html
1634
+ * <af-section theme="mist-green">
1635
+ * <af-grid-callout image-src="/team.jpg" image-alt="Team photo">
1636
+ * Affinda blends AI and engineering
1637
+ * <span slot="description">Optional description text.</span>
1638
+ *
1639
+ * <af-icon-text slot="items" icon="settings">
1640
+ * Feature One
1641
+ * <span slot="description">Feature description.</span>
1642
+ * </af-icon-text>
1643
+ *
1644
+ * <af-button slot="cta" variant="primary">Learn more</af-button>
1645
+ * </af-grid-callout>
1646
+ * </af-section>
1647
+ * ```
1648
+ */
1649
+ interface HTMLAfGridCalloutElement extends Components.AfGridCallout, HTMLStencilElement {
1650
+ }
1651
+ var HTMLAfGridCalloutElement: {
1652
+ prototype: HTMLAfGridCalloutElement;
1653
+ new (): HTMLAfGridCalloutElement;
1654
+ };
1655
+ /**
1656
+ * Heading component that inherits color from theme context.
1657
+ * Color is determined by the parent theme (af-section, af-hero-section, etc.)
1658
+ * via CSS custom properties.
1659
+ */
1660
+ interface HTMLAfHeadingElement extends Components.AfHeading, HTMLStencilElement {
1661
+ }
1662
+ var HTMLAfHeadingElement: {
1663
+ prototype: HTMLAfHeadingElement;
1664
+ new (): HTMLAfHeadingElement;
1665
+ };
1666
+ /**
1667
+ * Hero section component for marketing pages.
1668
+ * Uses TypographyLockup internally to handle heading, description, and button layout.
1669
+ * Sets theme context for all child components via CSS custom properties.
1670
+ */
1671
+ interface HTMLAfHeroSectionElement extends Components.AfHeroSection, HTMLStencilElement {
1672
+ }
1673
+ var HTMLAfHeroSectionElement: {
1674
+ prototype: HTMLAfHeroSectionElement;
1675
+ new (): HTMLAfHeroSectionElement;
1676
+ };
1677
+ /**
1678
+ * Icon component that displays SVG icons from the Affinda icon library.
1679
+ * Icons inherit color from their parent via currentColor.
1680
+ * Icons are bundled inline, so no runtime fetching is required.
1681
+ * This ensures icons work reliably in all bundler contexts.
1682
+ * @example ```html
1683
+ * <af-icon name="arrow-right" size="24"></af-icon>
1684
+ * ```
1685
+ */
1686
+ interface HTMLAfIconElement extends Components.AfIcon, HTMLStencilElement {
1687
+ }
1688
+ var HTMLAfIconElement: {
1689
+ prototype: HTMLAfIconElement;
1690
+ new (): HTMLAfIconElement;
1691
+ };
1692
+ /**
1693
+ * IconBox atom - a themed container for displaying an icon with a rounded background.
1694
+ * Inherits theme colors from parent Section via CSS custom properties:
1695
+ * - Background uses `--af-background-contrast`
1696
+ * - Icon color uses `--af-background-icon-default`
1697
+ * @example ```html
1698
+ * <af-icon-box icon="settings" size="default"></af-icon-box>
1699
+ * ```
1700
+ */
1701
+ interface HTMLAfIconBoxElement extends Components.AfIconBox, HTMLStencilElement {
1702
+ }
1703
+ var HTMLAfIconBoxElement: {
1704
+ prototype: HTMLAfIconBoxElement;
1705
+ new (): HTMLAfIconBoxElement;
1706
+ };
1707
+ interface HTMLAfIconButtonElement extends Components.AfIconButton, HTMLStencilElement {
1708
+ }
1709
+ var HTMLAfIconButtonElement: {
1710
+ prototype: HTMLAfIconButtonElement;
1711
+ new (): HTMLAfIconButtonElement;
1712
+ };
1713
+ /**
1714
+ * IconText molecule - combines an IconBox with a TypographyLockup for feature items.
1715
+ * Composes:
1716
+ * - af-icon-box: Themed icon container
1717
+ * - af-typography-lockup: Heading, description, and button slots
1718
+ * Inherits theme colors from parent Section via CSS custom properties.
1719
+ * @example ```html
1720
+ * <af-icon-text icon="settings" heading-size="4">
1721
+ * Feature Heading
1722
+ * <span slot="description">Feature description text.</span>
1723
+ * <af-button slot="buttons" variant="tertiary">Learn more</af-button>
1724
+ * </af-icon-text>
1725
+ * ```
1726
+ */
1727
+ interface HTMLAfIconTextElement extends Components.AfIconText, HTMLStencilElement {
1728
+ }
1729
+ var HTMLAfIconTextElement: {
1730
+ prototype: HTMLAfIconTextElement;
1731
+ new (): HTMLAfIconTextElement;
1732
+ };
1733
+ /**
1734
+ * Illustrated Card molecule component that combines a card with an illustration.
1735
+ * Uses a theme background with text at top and an illustration from
1736
+ * @affinda /illustrations at the bottom.
1737
+ * Uses af-card atom internally and af-typography-lockup for text hierarchy.
1738
+ */
1739
+ interface HTMLAfIllustratedCardElement extends Components.AfIllustratedCard, HTMLStencilElement {
1740
+ }
1741
+ var HTMLAfIllustratedCardElement: {
1742
+ prototype: HTMLAfIllustratedCardElement;
1743
+ new (): HTMLAfIllustratedCardElement;
1744
+ };
1745
+ /**
1746
+ * A styled image container with rounded corners and a subtle inset border.
1747
+ * Provides consistent image styling across the design system.
1748
+ */
1749
+ interface HTMLAfImageElement extends Components.AfImage, HTMLStencilElement {
1750
+ }
1751
+ var HTMLAfImageElement: {
1752
+ prototype: HTMLAfImageElement;
1753
+ new (): HTMLAfImageElement;
1754
+ };
1755
+ /**
1756
+ * In-page banner component for call-to-action content.
1757
+ * A banner card with illustration, heading, description, and action buttons.
1758
+ * Typically placed inside a neutral (white) Section to show off its themed background.
1759
+ * The component has its own theme prop to control its background color and styling.
1760
+ * **Illustration Usage:**
1761
+ * Use `illustrationUrl` to pass an illustration image URL. For theme-matched illustrations,
1762
+ * use `getIllustrationUrlByScene()` from `@affinda/illustrations` in your consuming app:
1763
+ * ```tsx
1764
+ * import { getIllustrationUrlByScene } from '@affinda/illustrations';
1765
+ * <InPageBanner
1766
+ * theme="inkwell"
1767
+ * illustrationUrl={getIllustrationUrlByScene('automate', 'inkwell')}
1768
+ * ...
1769
+ * />
1770
+ * ```
1771
+ * Alternatively, use the `illustration` slot for completely custom content.
1772
+ */
1773
+ interface HTMLAfInPageBannerElement extends Components.AfInPageBanner, HTMLStencilElement {
1774
+ }
1775
+ var HTMLAfInPageBannerElement: {
1776
+ prototype: HTMLAfInPageBannerElement;
1777
+ new (): HTMLAfInPageBannerElement;
1778
+ };
1779
+ interface HTMLAfInputElementEventMap {
1780
+ "afInput": { value: string };
1781
+ "afBlur": void;
1782
+ "afFocus": void;
1783
+ "afClear": void;
1784
+ "afInfoClick": void;
1785
+ }
1786
+ /**
1787
+ * Input field component with label, description, and error states.
1788
+ * Supports various input types and validation states.
1789
+ */
1790
+ interface HTMLAfInputElement extends Components.AfInput, HTMLStencilElement {
1791
+ addEventListener<K extends keyof HTMLAfInputElementEventMap>(type: K, listener: (this: HTMLAfInputElement, ev: AfInputCustomEvent<HTMLAfInputElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1792
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1793
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1794
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1795
+ removeEventListener<K extends keyof HTMLAfInputElementEventMap>(type: K, listener: (this: HTMLAfInputElement, ev: AfInputCustomEvent<HTMLAfInputElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1796
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1797
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1798
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1799
+ }
1800
+ var HTMLAfInputElement: {
1801
+ prototype: HTMLAfInputElement;
1802
+ new (): HTMLAfInputElement;
1803
+ };
1804
+ /**
1805
+ * Affinda logo component
1806
+ */
1807
+ interface HTMLAfLogoElement extends Components.AfLogo, HTMLStencilElement {
1808
+ }
1809
+ var HTMLAfLogoElement: {
1810
+ prototype: HTMLAfLogoElement;
1811
+ new (): HTMLAfLogoElement;
1812
+ };
1813
+ /**
1814
+ * A rounded container for displaying client logos
1815
+ */
1816
+ interface HTMLAfLogoWellElement extends Components.AfLogoWell, HTMLStencilElement {
1817
+ }
1818
+ var HTMLAfLogoWellElement: {
1819
+ prototype: HTMLAfLogoWellElement;
1820
+ new (): HTMLAfLogoWellElement;
1821
+ };
1822
+ /**
1823
+ * A navigation card component for featured article content in mega-menu dropdowns.
1824
+ * Displays an image with a gradient overlay and headline text.
1825
+ * **Usage:**
1826
+ * - Place in the `sidebar` slot of NavMenuNest
1827
+ * - Provide imageSrc, heading, and href props
1828
+ * **Hover behavior:**
1829
+ * - Slight scale effect (1.02)
1830
+ * - Headline underline
1831
+ */
1832
+ interface HTMLAfNavCardElement extends Components.AfNavCard, HTMLStencilElement {
1833
+ }
1834
+ var HTMLAfNavCardElement: {
1835
+ prototype: HTMLAfNavCardElement;
1836
+ new (): HTMLAfNavCardElement;
1837
+ };
1838
+ /**
1839
+ * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
1840
+ * Supports multiple hierarchy levels, variants, and states (active, hover).
1841
+ */
1842
+ interface HTMLAfNavItemElement extends Components.AfNavItem, HTMLStencilElement {
1843
+ }
1844
+ var HTMLAfNavItemElement: {
1845
+ prototype: HTMLAfNavItemElement;
1846
+ new (): HTMLAfNavItemElement;
1847
+ };
1848
+ /**
1849
+ * A grouped navigation menu component with a heading.
1850
+ * Used in mega-menu dropdowns to group related navigation items.
1851
+ */
1852
+ interface HTMLAfNavMenuElement extends Components.AfNavMenu, HTMLStencilElement {
1853
+ }
1854
+ var HTMLAfNavMenuElement: {
1855
+ prototype: HTMLAfNavMenuElement;
1856
+ new (): HTMLAfNavMenuElement;
1857
+ };
1858
+ /**
1859
+ * A mega-menu dropdown panel component.
1860
+ * Acts as a container for NavMenu columns and optionally a sidebar.
1861
+ * Used as the dropdown content for navbar items.
1862
+ * **Slots:**
1863
+ * - default: Place NavMenu components here - they will be displayed as columns
1864
+ * - sidebar: Optional sidebar content (NavMenu, NavCard, or any content)
1865
+ * **Example:**
1866
+ * ```html
1867
+ * <af-nav-menu-nest type="solutions" breakpoint="desktop">
1868
+ * <af-nav-menu heading="Industries">...</af-nav-menu>
1869
+ * <af-nav-menu heading="Use Cases">...</af-nav-menu>
1870
+ * <af-nav-menu heading="Documents">...</af-nav-menu>
1871
+ * <af-nav-menu slot="sidebar" heading="Resume Parser">...</af-nav-menu>
1872
+ * </af-nav-menu-nest>
1873
+ * ```
1874
+ */
1875
+ interface HTMLAfNavMenuNestElement extends Components.AfNavMenuNest, HTMLStencilElement {
1876
+ }
1877
+ var HTMLAfNavMenuNestElement: {
1878
+ prototype: HTMLAfNavMenuNestElement;
1879
+ new (): HTMLAfNavMenuNestElement;
1880
+ };
1881
+ /**
1882
+ * A full-width navigation bar component that provides the main site navigation.
1883
+ * Features a pill-shaped container with logo, navigation links, and action buttons.
1884
+ * Includes mobile hamburger menu and support for mega-menu dropdowns.
1885
+ * The logo slot can be used to provide a custom logo. If no logo is provided,
1886
+ * the default Affinda logo will be displayed.
1887
+ */
1888
+ interface HTMLAfNavbarElement extends Components.AfNavbar, HTMLStencilElement {
1889
+ }
1890
+ var HTMLAfNavbarElement: {
1891
+ prototype: HTMLAfNavbarElement;
1892
+ new (): HTMLAfNavbarElement;
1893
+ };
1894
+ /**
1895
+ * NumberBadge displays numbers 1-10 in either a filled circle or text-only style.
1896
+ * Perfect for numbered lists, step indicators, or ordered content.
1897
+ * @example ```html
1898
+ * <af-number-badge number="1" variant="inCircle" size="48"></af-number-badge>
1899
+ * <af-number-badge number="5" variant="outlined" size="32"></af-number-badge>
1900
+ * ```
1901
+ */
1902
+ interface HTMLAfNumberBadgeElement extends Components.AfNumberBadge, HTMLStencilElement {
1903
+ }
1904
+ var HTMLAfNumberBadgeElement: {
1905
+ prototype: HTMLAfNumberBadgeElement;
1906
+ new (): HTMLAfNumberBadgeElement;
1907
+ };
1908
+ /**
1909
+ * Progress Line atom component for displaying scroll or completion progress.
1910
+ * Shows a horizontal bar with a filled portion indicating progress.
1911
+ * Used primarily for carousel scroll indicators.
1912
+ */
1913
+ interface HTMLAfProgressLineElement extends Components.AfProgressLine, HTMLStencilElement {
1914
+ }
1915
+ var HTMLAfProgressLineElement: {
1916
+ prototype: HTMLAfProgressLineElement;
1917
+ new (): HTMLAfProgressLineElement;
1918
+ };
1919
+ interface HTMLAfRadioElementEventMap {
1920
+ "afChange": { checked: boolean; value?: string };
1921
+ }
1922
+ /**
1923
+ * Radio component for selecting a single option from a group.
1924
+ */
1925
+ interface HTMLAfRadioElement extends Components.AfRadio, HTMLStencilElement {
1926
+ addEventListener<K extends keyof HTMLAfRadioElementEventMap>(type: K, listener: (this: HTMLAfRadioElement, ev: AfRadioCustomEvent<HTMLAfRadioElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1927
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1928
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1929
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1930
+ removeEventListener<K extends keyof HTMLAfRadioElementEventMap>(type: K, listener: (this: HTMLAfRadioElement, ev: AfRadioCustomEvent<HTMLAfRadioElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1931
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1932
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1933
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1934
+ }
1935
+ var HTMLAfRadioElement: {
1936
+ prototype: HTMLAfRadioElement;
1937
+ new (): HTMLAfRadioElement;
1938
+ };
1939
+ /**
1940
+ * Section layout component for consistent spacing and backgrounds.
1941
+ * Sets theme context for all child components via CSS custom properties.
1942
+ */
1943
+ interface HTMLAfSectionElement extends Components.AfSection, HTMLStencilElement {
1944
+ }
1945
+ var HTMLAfSectionElement: {
1946
+ prototype: HTMLAfSectionElement;
1947
+ new (): HTMLAfSectionElement;
1948
+ };
1949
+ /**
1950
+ * Social media link component
1951
+ * Circular bordered icon link for social media profiles
1952
+ */
1953
+ interface HTMLAfSocialLinkElement extends Components.AfSocialLink, HTMLStencilElement {
1954
+ }
1955
+ var HTMLAfSocialLinkElement: {
1956
+ prototype: HTMLAfSocialLinkElement;
1957
+ new (): HTMLAfSocialLinkElement;
1958
+ };
1959
+ /**
1960
+ * Split Section component for layouts with two-tone backgrounds.
1961
+ * Creates a vertical split with different themes for top and bottom halves.
1962
+ * Useful for content that visually spans across two themed areas.
1963
+ * Uses a CSS linear-gradient for the split background effect.
1964
+ */
1965
+ interface HTMLAfSplitSectionElement extends Components.AfSplitSection, HTMLStencilElement {
1966
+ }
1967
+ var HTMLAfSplitSectionElement: {
1968
+ prototype: HTMLAfSplitSectionElement;
1969
+ new (): HTMLAfSplitSectionElement;
1970
+ };
1971
+ interface HTMLAfSwitchElementEventMap {
1972
+ "afChange": { active: boolean };
1973
+ }
1974
+ /**
1975
+ * Switch component for toggling between on and off states.
1976
+ */
1977
+ interface HTMLAfSwitchElement extends Components.AfSwitch, HTMLStencilElement {
1978
+ addEventListener<K extends keyof HTMLAfSwitchElementEventMap>(type: K, listener: (this: HTMLAfSwitchElement, ev: AfSwitchCustomEvent<HTMLAfSwitchElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
1979
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1980
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
1981
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
1982
+ removeEventListener<K extends keyof HTMLAfSwitchElementEventMap>(type: K, listener: (this: HTMLAfSwitchElement, ev: AfSwitchCustomEvent<HTMLAfSwitchElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
1983
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1984
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
1985
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
1986
+ }
1987
+ var HTMLAfSwitchElement: {
1988
+ prototype: HTMLAfSwitchElement;
1989
+ new (): HTMLAfSwitchElement;
1990
+ };
1991
+ interface HTMLAfTabElementEventMap {
1992
+ "afTabClick": { value?: string };
1993
+ }
1994
+ /**
1995
+ * Tab component for use within a TabBar.
1996
+ * Represents an individual selectable tab with support for icons and number badges.
1997
+ * @example ```html
1998
+ * <af-tab label="Overview" active></af-tab>
1999
+ * <af-tab label="Details">
2000
+ * <af-icon slot="icon" name="document"></af-icon>
2001
+ * </af-tab>
2002
+ * <af-tab label="Step 1">
2003
+ * <af-number-badge slot="number" number="1"></af-number-badge>
2004
+ * </af-tab>
2005
+ * ```
2006
+ */
2007
+ interface HTMLAfTabElement extends Components.AfTab, HTMLStencilElement {
2008
+ addEventListener<K extends keyof HTMLAfTabElementEventMap>(type: K, listener: (this: HTMLAfTabElement, ev: AfTabCustomEvent<HTMLAfTabElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2009
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2010
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2011
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2012
+ removeEventListener<K extends keyof HTMLAfTabElementEventMap>(type: K, listener: (this: HTMLAfTabElement, ev: AfTabCustomEvent<HTMLAfTabElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2013
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2014
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2015
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2016
+ }
2017
+ var HTMLAfTabElement: {
2018
+ prototype: HTMLAfTabElement;
2019
+ new (): HTMLAfTabElement;
2020
+ };
2021
+ /**
2022
+ * TabBar component that contains and manages a group of tabs.
2023
+ * Provides horizontal layout, keyboard navigation, and consistent styling.
2024
+ * @example ```html
2025
+ * <af-tab-bar shape="square" breakpoint="desktop">
2026
+ * <af-tab label="Overview" active value="overview"></af-tab>
2027
+ * <af-tab label="Details" value="details"></af-tab>
2028
+ * <af-tab label="Settings" value="settings"></af-tab>
2029
+ * </af-tab-bar>
2030
+ * ```
2031
+ */
2032
+ interface HTMLAfTabBarElement extends Components.AfTabBar, HTMLStencilElement {
2033
+ }
2034
+ var HTMLAfTabBarElement: {
2035
+ prototype: HTMLAfTabBarElement;
2036
+ new (): HTMLAfTabBarElement;
2037
+ };
2038
+ /**
2039
+ * Tag displays a label in a styled container.
2040
+ * Perfect for categorization, topics, or metadata display.
2041
+ * @example ```html
2042
+ * <af-tag>AI</af-tag>
2043
+ * <af-tag size="small">Machine Learning</af-tag>
2044
+ * <af-tag size="large" variant="light">Document Processing</af-tag>
2045
+ * ```
2046
+ */
2047
+ interface HTMLAfTagElement extends Components.AfTag, HTMLStencilElement {
2048
+ }
2049
+ var HTMLAfTagElement: {
2050
+ prototype: HTMLAfTagElement;
2051
+ new (): HTMLAfTagElement;
2052
+ };
2053
+ interface HTMLAfTestimonialElementEventMap {
2054
+ "navPrev": void;
2055
+ "navNext": void;
2056
+ }
2057
+ interface HTMLAfTestimonialElement extends Components.AfTestimonial, HTMLStencilElement {
2058
+ addEventListener<K extends keyof HTMLAfTestimonialElementEventMap>(type: K, listener: (this: HTMLAfTestimonialElement, ev: AfTestimonialCustomEvent<HTMLAfTestimonialElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2059
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2060
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2061
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2062
+ removeEventListener<K extends keyof HTMLAfTestimonialElementEventMap>(type: K, listener: (this: HTMLAfTestimonialElement, ev: AfTestimonialCustomEvent<HTMLAfTestimonialElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2063
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2064
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2065
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2066
+ }
2067
+ var HTMLAfTestimonialElement: {
2068
+ prototype: HTMLAfTestimonialElement;
2069
+ new (): HTMLAfTestimonialElement;
2070
+ };
2071
+ /**
2072
+ * TestimonialCarousel - Carousel for displaying multiple customer testimonials.
2073
+ * Handles navigation between testimonials with progress indicator.
2074
+ * Wrap in Section/Container for proper page layout and theming.
2075
+ */
2076
+ interface HTMLAfTestimonialCarouselElement extends Components.AfTestimonialCarousel, HTMLStencilElement {
2077
+ }
2078
+ var HTMLAfTestimonialCarouselElement: {
2079
+ prototype: HTMLAfTestimonialCarouselElement;
2080
+ new (): HTMLAfTestimonialCarouselElement;
2081
+ };
2082
+ interface HTMLAfTestimonialStatElement extends Components.AfTestimonialStat, HTMLStencilElement {
2083
+ }
2084
+ var HTMLAfTestimonialStatElement: {
2085
+ prototype: HTMLAfTestimonialStatElement;
2086
+ new (): HTMLAfTestimonialStatElement;
2087
+ };
2088
+ /**
2089
+ * Text/body component that inherits color from theme context.
2090
+ * Color is determined by the parent theme (af-section, af-hero-section, etc.)
2091
+ * via CSS custom properties.
2092
+ */
2093
+ interface HTMLAfTextElement extends Components.AfText, HTMLStencilElement {
2094
+ }
2095
+ var HTMLAfTextElement: {
2096
+ prototype: HTMLAfTextElement;
2097
+ new (): HTMLAfTextElement;
2098
+ };
2099
+ /**
2100
+ * TextImage composite component that combines typography content with an image.
2101
+ * Supports various layout configurations with image position and proportion options.
2102
+ */
2103
+ interface HTMLAfTextImageElement extends Components.AfTextImage, HTMLStencilElement {
2104
+ }
2105
+ var HTMLAfTextImageElement: {
2106
+ prototype: HTMLAfTextImageElement;
2107
+ new (): HTMLAfTextImageElement;
2108
+ };
2109
+ /**
2110
+ * TextImageNest is a layout component that arranges multiple text-image content pieces
2111
+ * in various grid layouts with optional footer buttons.
2112
+ * This component inherits theming from a parent Section or theme-providing container.
2113
+ * Wrap it in an af-section to apply themes.
2114
+ * Supports multiple layout variants:
2115
+ * - `single`: Full-width single item (side-by-side image + text)
2116
+ * - `grid-2`: 2-column grid with stacked items
2117
+ * - `grid-3`: 3-column grid with stacked items
2118
+ * - `grid-4`: 4-column grid with stacked items
2119
+ * - `stacked`: Alternating rows of side-by-side content
2120
+ */
2121
+ interface HTMLAfTextImageNestElement extends Components.AfTextImageNest, HTMLStencilElement {
2122
+ }
2123
+ var HTMLAfTextImageNestElement: {
2124
+ prototype: HTMLAfTextImageNestElement;
2125
+ new (): HTMLAfTextImageNestElement;
2126
+ };
2127
+ interface HTMLAfTextareaElementEventMap {
2128
+ "afInput": { value: string };
2129
+ "afBlur": void;
2130
+ "afFocus": void;
2131
+ "afInfoClick": void;
2132
+ }
2133
+ /**
2134
+ * Textarea component for multi-line text input with label, description, and error states.
2135
+ */
2136
+ interface HTMLAfTextareaElement extends Components.AfTextarea, HTMLStencilElement {
2137
+ addEventListener<K extends keyof HTMLAfTextareaElementEventMap>(type: K, listener: (this: HTMLAfTextareaElement, ev: AfTextareaCustomEvent<HTMLAfTextareaElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2138
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2139
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2140
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2141
+ removeEventListener<K extends keyof HTMLAfTextareaElementEventMap>(type: K, listener: (this: HTMLAfTextareaElement, ev: AfTextareaCustomEvent<HTMLAfTextareaElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2142
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2143
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2144
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2145
+ }
2146
+ var HTMLAfTextareaElement: {
2147
+ prototype: HTMLAfTextareaElement;
2148
+ new (): HTMLAfTextareaElement;
2149
+ };
2150
+ interface HTMLAfTypographyLockupElement extends Components.AfTypographyLockup, HTMLStencilElement {
2151
+ }
2152
+ var HTMLAfTypographyLockupElement: {
2153
+ prototype: HTMLAfTypographyLockupElement;
2154
+ new (): HTMLAfTypographyLockupElement;
2155
+ };
2156
+ interface HTMLAfVideoContainerElementEventMap {
2157
+ "playClick": { videoUrl: string };
2158
+ }
2159
+ /**
2160
+ * Video Container molecule component for showcasing video content.
2161
+ * Uses slots for typography lockups above and below the video.
2162
+ * When used inside af-split-section, the top slot inherits the top theme
2163
+ * and the bottom slot inherits the bottom theme for correct colors.
2164
+ * @example ```html
2165
+ * <af-split-section top-theme="mist-green" bottom-theme="white">
2166
+ * <af-video-container video-thumbnail-url="/path/to/thumbnail.jpg">
2167
+ * <af-typography-lockup slot="top" text-alignment="center" heading-size="2">
2168
+ * <af-heading level="2">Watch our product demo</af-heading>
2169
+ * <af-text slot="description">See how Affinda transforms your workflow</af-text>
2170
+ * <af-button slot="buttons" variant="primary">Get Started</af-button>
2171
+ * </af-typography-lockup>
2172
+ * </af-video-container>
2173
+ * </af-split-section>
2174
+ * ```
2175
+ */
2176
+ interface HTMLAfVideoContainerElement extends Components.AfVideoContainer, HTMLStencilElement {
2177
+ addEventListener<K extends keyof HTMLAfVideoContainerElementEventMap>(type: K, listener: (this: HTMLAfVideoContainerElement, ev: AfVideoContainerCustomEvent<HTMLAfVideoContainerElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
2178
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2179
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
2180
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
2181
+ removeEventListener<K extends keyof HTMLAfVideoContainerElementEventMap>(type: K, listener: (this: HTMLAfVideoContainerElement, ev: AfVideoContainerCustomEvent<HTMLAfVideoContainerElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
2182
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2183
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
2184
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
2185
+ }
2186
+ var HTMLAfVideoContainerElement: {
2187
+ prototype: HTMLAfVideoContainerElement;
2188
+ new (): HTMLAfVideoContainerElement;
2189
+ };
2190
+ interface HTMLElementTagNameMap {
2191
+ "af-aspect-ratio": HTMLAfAspectRatioElement;
2192
+ "af-button": HTMLAfButtonElement;
2193
+ "af-button-group": HTMLAfButtonGroupElement;
2194
+ "af-card": HTMLAfCardElement;
2195
+ "af-checkbox": HTMLAfCheckboxElement;
2196
+ "af-client-carousel": HTMLAfClientCarouselElement;
2197
+ "af-color-swatch": HTMLAfColorSwatchElement;
2198
+ "af-contact-item": HTMLAfContactItemElement;
2199
+ "af-container": HTMLAfContainerElement;
2200
+ "af-feature-accordion": HTMLAfFeatureAccordionElement;
2201
+ "af-feature-card": HTMLAfFeatureCardElement;
2202
+ "af-feature-grid": HTMLAfFeatureGridElement;
2203
+ "af-fieldset": HTMLAfFieldsetElement;
2204
+ "af-footer": HTMLAfFooterElement;
2205
+ "af-footer-column": HTMLAfFooterColumnElement;
2206
+ "af-footer-link": HTMLAfFooterLinkElement;
2207
+ "af-grid-callout": HTMLAfGridCalloutElement;
2208
+ "af-heading": HTMLAfHeadingElement;
2209
+ "af-hero-section": HTMLAfHeroSectionElement;
2210
+ "af-icon": HTMLAfIconElement;
2211
+ "af-icon-box": HTMLAfIconBoxElement;
2212
+ "af-icon-button": HTMLAfIconButtonElement;
2213
+ "af-icon-text": HTMLAfIconTextElement;
2214
+ "af-illustrated-card": HTMLAfIllustratedCardElement;
2215
+ "af-image": HTMLAfImageElement;
2216
+ "af-in-page-banner": HTMLAfInPageBannerElement;
2217
+ "af-input": HTMLAfInputElement;
2218
+ "af-logo": HTMLAfLogoElement;
2219
+ "af-logo-well": HTMLAfLogoWellElement;
2220
+ "af-nav-card": HTMLAfNavCardElement;
2221
+ "af-nav-item": HTMLAfNavItemElement;
2222
+ "af-nav-menu": HTMLAfNavMenuElement;
2223
+ "af-nav-menu-nest": HTMLAfNavMenuNestElement;
2224
+ "af-navbar": HTMLAfNavbarElement;
2225
+ "af-number-badge": HTMLAfNumberBadgeElement;
2226
+ "af-progress-line": HTMLAfProgressLineElement;
2227
+ "af-radio": HTMLAfRadioElement;
2228
+ "af-section": HTMLAfSectionElement;
2229
+ "af-social-link": HTMLAfSocialLinkElement;
2230
+ "af-split-section": HTMLAfSplitSectionElement;
2231
+ "af-switch": HTMLAfSwitchElement;
2232
+ "af-tab": HTMLAfTabElement;
2233
+ "af-tab-bar": HTMLAfTabBarElement;
2234
+ "af-tag": HTMLAfTagElement;
2235
+ "af-testimonial": HTMLAfTestimonialElement;
2236
+ "af-testimonial-carousel": HTMLAfTestimonialCarouselElement;
2237
+ "af-testimonial-stat": HTMLAfTestimonialStatElement;
2238
+ "af-text": HTMLAfTextElement;
2239
+ "af-text-image": HTMLAfTextImageElement;
2240
+ "af-text-image-nest": HTMLAfTextImageNestElement;
2241
+ "af-textarea": HTMLAfTextareaElement;
2242
+ "af-typography-lockup": HTMLAfTypographyLockupElement;
2243
+ "af-video-container": HTMLAfVideoContainerElement;
2244
+ }
2245
+ }
2246
+ declare namespace LocalJSX {
2247
+ /**
2248
+ * A container component that maintains a fixed aspect ratio for its content.
2249
+ * Useful for images, videos, or any content that needs to maintain specific proportions.
2250
+ */
2251
+ interface AfAspectRatio {
2252
+ /**
2253
+ * The aspect ratio to maintain. Can be: - A predefined ratio: '1:1', '16:9', '4:3', 'golden-portrait', 'golden-landscape', 'a4-portrait', 'a4-landscape', 'letter-portrait', 'letter-landscape', etc. - A custom ratio in format 'width / height': '16 / 9', '4 / 3', '1.618 / 1', etc.
2254
+ * @example <af-aspect-ratio ratio="16:9">Content</af-aspect-ratio> <af-aspect-ratio ratio="1.618 / 1">Content</af-aspect-ratio>
2255
+ * @default '1:1'
2256
+ */
2257
+ "ratio"?: string;
2258
+ }
2259
+ /**
2260
+ * Button component that inherits colors from theme context.
2261
+ * Colors are determined by the parent theme (af-section, af-hero-section, etc.)
2262
+ * via CSS custom properties.
2263
+ */
2264
+ interface AfButton {
2265
+ /**
2266
+ * Whether the button is disabled
2267
+ * @default false
2268
+ */
2269
+ "disabled"?: boolean;
2270
+ /**
2271
+ * Optional href to render as a link instead of a button
2272
+ */
2273
+ "href"?: string;
2274
+ /**
2275
+ * The size of the button. - `default` - Standard size for primary CTAs - `small` - Compact size for inline or secondary contexts
2276
+ * @default 'default'
2277
+ */
2278
+ "size"?: 'default' | 'small';
2279
+ /**
2280
+ * Button type (when not using href)
2281
+ * @default 'button'
2282
+ */
2283
+ "type"?: 'button' | 'submit' | 'reset';
2284
+ /**
2285
+ * The visual variant of the button. - `primary` - Main CTA with filled background (use sparingly, 1-2 per view) - `secondary` - Supporting action with outlined style - `tertiary` - Subtle text-link style with underline
2286
+ * @default 'primary'
2287
+ */
2288
+ "variant"?: 'primary' | 'secondary' | 'tertiary';
2289
+ }
2290
+ interface AfButtonGroup {
2291
+ /**
2292
+ * Layout direction of the button group
2293
+ * @default 'horizontal'
2294
+ */
2295
+ "direction"?: 'horizontal' | 'vertical';
2296
+ /**
2297
+ * Gap between buttons
2298
+ * @default '8px'
2299
+ */
2300
+ "gap"?: string;
2301
+ }
2302
+ /**
2303
+ * Card atom component - a themed container with consistent styling.
2304
+ * Provides theme context to children via CSS custom properties.
2305
+ * This is a base building block used by molecule components like
2306
+ * af-feature-card and af-illustrated-card.
2307
+ */
2308
+ interface AfCard {
2309
+ /**
2310
+ * When true, the card stretches to fill its container height. Use this when the card is in a flex/grid container and needs to participate in equal-height layouts. The card's content will use flexbox to distribute space between children.
2311
+ * @default false
2312
+ */
2313
+ "stretch"?: boolean;
2314
+ /**
2315
+ * Theme - sets background color and provides theme context to children. Defaults to 'mist-green' if not specified.
2316
+ * @default 'mist-green'
2317
+ */
2318
+ "theme"?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay';
2319
+ }
2320
+ /**
2321
+ * Checkbox component for selecting multiple options.
2322
+ * Supports checked, unchecked, and indeterminate states.
2323
+ */
2324
+ interface AfCheckbox {
2325
+ /**
2326
+ * Whether the checkbox is checked
2327
+ * @default false
2328
+ */
2329
+ "checked"?: boolean;
2330
+ /**
2331
+ * Whether the checkbox is disabled
2332
+ * @default false
2333
+ */
2334
+ "disabled"?: boolean;
2335
+ /**
2336
+ * Whether the checkbox is in an indeterminate state
2337
+ * @default false
2338
+ */
2339
+ "indeterminate"?: boolean;
2340
+ /**
2341
+ * The name of the checkbox for form submission
2342
+ */
2343
+ "name"?: string;
2344
+ /**
2345
+ * Emitted when the checkbox checked state changes
2346
+ */
2347
+ "onAfChange"?: (event: AfCheckboxCustomEvent<{ checked: boolean }>) => void;
2348
+ /**
2349
+ * The value of the checkbox for form submission
2350
+ */
2351
+ "value"?: string;
2352
+ }
2353
+ /**
2354
+ * Infinite scrolling carousel for client logos.
2355
+ * This is a section-level component that spans full width.
2356
+ * It supports theming via the `theme` prop.
2357
+ * For headlines, use a separate TypographyLockup or Heading component above this carousel.
2358
+ */
2359
+ interface AfClientCarousel {
2360
+ /**
2361
+ * Theme - sets background color and provides theme context to children
2362
+ * @default 'inkwell'
2363
+ */
2364
+ "theme"?: Theme;
2365
+ }
2366
+ interface AfColorSwatch {
2367
+ /**
2368
+ * Color value (hex)
2369
+ */
2370
+ "color": string;
2371
+ /**
2372
+ * Color name
2373
+ */
2374
+ "name": string;
2375
+ /**
2376
+ * Size variant
2377
+ * @default 'default'
2378
+ */
2379
+ "size"?: 'default' | 'large';
2380
+ }
2381
+ /**
2382
+ * Contact item component for footer
2383
+ * Displays a label and value pair (e.g., "Sales enquiries" / "contact@example.com")
2384
+ */
2385
+ interface AfContactItem {
2386
+ /**
2387
+ * Contact label (e.g., "Sales enquiries")
2388
+ * @default ''
2389
+ */
2390
+ "label"?: string;
2391
+ /**
2392
+ * Contact value (e.g., email address)
2393
+ * @default ''
2394
+ */
2395
+ "value"?: string;
2396
+ }
2397
+ /**
2398
+ * A responsive container component that provides consistent margins and max-width
2399
+ * constraints based on the Affinda grid system.
2400
+ */
2401
+ interface AfContainer {
2402
+ /**
2403
+ * Maximum width constraint for the container - 'xlarge': 1440px container (default) - 'large': 1024px container - 'medium': 768px container - 'fluid': No max-width constraint, full width with margins
2404
+ * @default 'xlarge'
2405
+ */
2406
+ "maxWidth"?: 'xlarge' | 'large' | 'medium' | 'fluid';
2407
+ }
2408
+ /**
2409
+ * Feature accordion component with expandable items and accompanying image.
2410
+ * Used for showcasing product features with visual examples.
2411
+ * Features auto-cycling through items with a progress timer.
2412
+ * **Must be wrapped in a Section component** to inherit theme styling.
2413
+ * The component automatically adapts colors based on the parent Section's theme.
2414
+ * @example ```tsx
2415
+ * <Section theme="inkwell">
2416
+ * <FeatureAccordion heading="Features" items={...} />
2417
+ * </Section>
2418
+ * ```
2419
+ */
2420
+ interface AfFeatureAccordion {
2421
+ /**
2422
+ * Whether auto-cycling is enabled
2423
+ * @default true
2424
+ */
2425
+ "autoCycle"?: boolean;
2426
+ /**
2427
+ * Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds)
2428
+ * @default 6000
2429
+ */
2430
+ "cycleInterval"?: number;
2431
+ /**
2432
+ * Section heading
2433
+ * @default 'Give AI agents your paperwork'
2434
+ */
2435
+ "heading"?: string;
2436
+ /**
2437
+ * JSON string of accordion items
2438
+ * @default '[]'
2439
+ */
2440
+ "items"?: string;
2441
+ }
2442
+ /**
2443
+ * Feature Card molecule component that combines a card with an image.
2444
+ * Two layout modes:
2445
+ * - `standard`: Theme background with text at top and image at bottom
2446
+ * - `full-bleed`: Image covers entire card with text overlay at bottom
2447
+ * Responsive: Automatically adapts to mobile viewport (≤768px).
2448
+ * Uses af-card atom internally and af-typography-lockup for text hierarchy.
2449
+ */
2450
+ interface AfFeatureCard {
2451
+ /**
2452
+ * Card size variant. - 'default': Fixed 544px × 420px - 'large': Fixed 777px × 480px - 'flexible': Fills container (for grid layouts)
2453
+ * @default 'default'
2454
+ */
2455
+ "cardSize"?: 'default' | 'large' | 'flexible';
2456
+ /**
2457
+ * Heading size for typography lockup (1-5, where 1 is largest).
2458
+ * @default 3
2459
+ */
2460
+ "headingSize"?: 1 | 2 | 3 | 4 | 5;
2461
+ /**
2462
+ * Image alt text for accessibility. Provide meaningful alt text for feature images. Only use empty string for purely decorative images.
2463
+ * @default ''
2464
+ */
2465
+ "imageAlt"?: string;
2466
+ /**
2467
+ * Background/feature image URL.
2468
+ */
2469
+ "imageSrc"?: string;
2470
+ /**
2471
+ * Layout mode for the card. - 'standard': Theme background with text at top and image at bottom - 'full-bleed': Image covers entire card with text overlay at bottom
2472
+ * @default 'standard'
2473
+ */
2474
+ "layout"?: 'standard' | 'full-bleed';
2475
+ /**
2476
+ * Theme variant - sets background color and provides theme context. Only applies to 'standard' layout mode. Defaults to 'mist-green'.
2477
+ * @default 'mist-green'
2478
+ */
2479
+ "theme"?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay';
2480
+ }
2481
+ /**
2482
+ * Feature Grid component - CSS Grid container for feature cards.
2483
+ * Desktop: Configurable columns (1-4)
2484
+ * Mobile: List (stacked), horizontal scroll, or 2-column grid
2485
+ */
2486
+ interface AfFeatureGrid {
2487
+ /**
2488
+ * Number of columns on desktop (1-4).
2489
+ * @default 4
2490
+ */
2491
+ "columns"?: 1 | 2 | 3 | 4;
2492
+ /**
2493
+ * Mobile layout behavior. - 'list': Vertical stack (1 column) - 'scroll': Horizontal scroll with progress indicator - 'grid': Maintain 2-column grid on mobile
2494
+ * @default 'list'
2495
+ */
2496
+ "mobileLayout"?: 'list' | 'scroll' | 'grid';
2497
+ }
2498
+ /**
2499
+ * Fieldset component for grouping related form controls.
2500
+ * Supports vertical and horizontal layouts with an optional legend/heading.
2501
+ */
2502
+ interface AfFieldset {
2503
+ /**
2504
+ * Whether the fieldset is disabled (disables all child controls)
2505
+ * @default false
2506
+ */
2507
+ "disabled"?: boolean;
2508
+ /**
2509
+ * The legend/heading text for the fieldset
2510
+ */
2511
+ "legend"?: string;
2512
+ /**
2513
+ * The layout orientation of the fieldset items - `vertical` - Items stack vertically (default) - `horizontal` - Items are laid out horizontally
2514
+ * @default 'vertical'
2515
+ */
2516
+ "orientation"?: 'vertical' | 'horizontal';
2517
+ }
2518
+ /**
2519
+ * Footer component for marketing pages
2520
+ * Provides a flexible, slot-based layout for footer content
2521
+ * All content is passed via slots - no hardcoded links or content
2522
+ */
2523
+ interface AfFooter {
2524
+ /**
2525
+ * Copyright text (e.g., "© 2025 Company Name. All rights reserved.")
2526
+ * @default ''
2527
+ */
2528
+ "copyrightText"?: string;
2529
+ /**
2530
+ * Whether to show the status indicator
2531
+ * @default true
2532
+ */
2533
+ "showStatus"?: boolean;
2534
+ /**
2535
+ * Status message text
2536
+ * @default ''
2537
+ */
2538
+ "statusText"?: string;
2539
+ /**
2540
+ * Status page URL
2541
+ * @default ''
2542
+ */
2543
+ "statusUrl"?: string;
2544
+ /**
2545
+ * Whether systems are operational (shows green/red indicator)
2546
+ * @default true
2547
+ */
2548
+ "systemsOperational"?: boolean;
2549
+ }
2550
+ /**
2551
+ * Footer navigation column component
2552
+ * Used within af-footer to create navigation link groups
2553
+ */
2554
+ interface AfFooterColumn {
2555
+ /**
2556
+ * Column heading
2557
+ * @default ''
2558
+ */
2559
+ "heading"?: string;
2560
+ }
656
2561
  /**
657
- * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
658
- * Supports multiple hierarchy levels, variants, and states (active, hover).
2562
+ * Footer link component
2563
+ * Styled link for use in footer navigation columns
659
2564
  */
660
- interface HTMLAfNavItemElement extends Components.AfNavItem, HTMLStencilElement {
2565
+ interface AfFooterLink {
2566
+ /**
2567
+ * Whether this is an external link (opens in new tab)
2568
+ * @default false
2569
+ */
2570
+ "external"?: boolean;
2571
+ /**
2572
+ * Link URL
2573
+ * @default '#'
2574
+ */
2575
+ "href"?: string;
661
2576
  }
662
- var HTMLAfNavItemElement: {
663
- prototype: HTMLAfNavItemElement;
664
- new (): HTMLAfNavItemElement;
665
- };
666
2577
  /**
667
- * A full-width navigation bar component that provides the main site navigation.
668
- * Features a pill-shaped container with logo, navigation links, and action buttons.
669
- * Includes mobile hamburger menu.
2578
+ * GridCallout organism - a marketing section combining an optional pill-shaped image
2579
+ * with a grid of IconText feature items.
2580
+ * Composes:
2581
+ * - Pill-shaped image container (optional)
2582
+ * - Heading via af-typography-lockup
2583
+ * - Grid of af-icon-text items
2584
+ * - Optional CTA button
2585
+ * Inherits theme colors from parent af-section via CSS custom properties.
2586
+ * @example ```html
2587
+ * <af-section theme="mist-green">
2588
+ * <af-grid-callout image-src="/team.jpg" image-alt="Team photo">
2589
+ * Affinda blends AI and engineering
2590
+ * <span slot="description">Optional description text.</span>
2591
+ *
2592
+ * <af-icon-text slot="items" icon="settings">
2593
+ * Feature One
2594
+ * <span slot="description">Feature description.</span>
2595
+ * </af-icon-text>
2596
+ *
2597
+ * <af-button slot="cta" variant="primary">Learn more</af-button>
2598
+ * </af-grid-callout>
2599
+ * </af-section>
2600
+ * ```
670
2601
  */
671
- interface HTMLAfNavbarElement extends Components.AfNavbar, HTMLStencilElement {
2602
+ interface AfGridCallout {
2603
+ /**
2604
+ * Number of columns for the IconText grid on desktop
2605
+ * @default 2
2606
+ */
2607
+ "columns"?: 2 | 3 | 4;
2608
+ /**
2609
+ * Heading size for the main title
2610
+ * @default 2
2611
+ */
2612
+ "headingSize"?: 1 | 2 | 3 | 4 | 5;
2613
+ /**
2614
+ * Alt text for the image (required for accessibility when imageSrc is provided)
2615
+ * @default ''
2616
+ */
2617
+ "imageAlt"?: string;
2618
+ /**
2619
+ * Position of the image relative to the content
2620
+ * @default 'left'
2621
+ */
2622
+ "imagePosition"?: 'left' | 'right';
2623
+ /**
2624
+ * Image source URL for the pill-shaped image
2625
+ */
2626
+ "imageSrc"?: string;
672
2627
  }
673
- var HTMLAfNavbarElement: {
674
- prototype: HTMLAfNavbarElement;
675
- new (): HTMLAfNavbarElement;
676
- };
677
2628
  /**
678
- * Section layout component for consistent spacing and backgrounds
2629
+ * Heading component that inherits color from theme context.
2630
+ * Color is determined by the parent theme (af-section, af-hero-section, etc.)
2631
+ * via CSS custom properties.
679
2632
  */
680
- interface HTMLAfSectionElement extends Components.AfSection, HTMLStencilElement {
2633
+ interface AfHeading {
2634
+ /**
2635
+ * Visual alignment
2636
+ * @default 'left'
2637
+ */
2638
+ "align"?: 'left' | 'center' | 'right';
2639
+ /**
2640
+ * Heading level
2641
+ * @default '1'
2642
+ */
2643
+ "level"?: 'xl' | '1' | '2' | '3' | '4' | '5';
681
2644
  }
682
- var HTMLAfSectionElement: {
683
- prototype: HTMLAfSectionElement;
684
- new (): HTMLAfSectionElement;
685
- };
686
2645
  /**
687
- * Social media link component
688
- * Circular bordered icon link for social media profiles
2646
+ * Hero section component for marketing pages.
2647
+ * Uses TypographyLockup internally to handle heading, description, and button layout.
2648
+ * Sets theme context for all child components via CSS custom properties.
689
2649
  */
690
- interface HTMLAfSocialLinkElement extends Components.AfSocialLink, HTMLStencilElement {
2650
+ interface AfHeroSection {
2651
+ /**
2652
+ * Button alignment - horizontal places buttons inline, vertical stacks them
2653
+ * @default 'horizontal'
2654
+ */
2655
+ "buttonAlignment"?: 'horizontal' | 'vertical';
2656
+ /**
2657
+ * Heading size for the typography lockup (1-5, where 1 is largest)
2658
+ * @default 1
2659
+ */
2660
+ "headingSize"?: 1 | 2 | 3 | 4 | 5;
2661
+ /**
2662
+ * Maximum width for the copy section (in pixels)
2663
+ */
2664
+ "maxWidth"?: number;
2665
+ /**
2666
+ * Minimum height
2667
+ * @default '60vh'
2668
+ */
2669
+ "minHeight"?: string;
2670
+ /**
2671
+ * Text alignment for the typography lockup
2672
+ * @default 'center'
2673
+ */
2674
+ "textAlignment"?: 'left' | 'center';
2675
+ /**
2676
+ * Theme - sets background color and provides theme context to children
2677
+ * @default 'inkwell'
2678
+ */
2679
+ "theme"?: 'white' | 'inkwell' | 'mist-green' | 'soft-clay';
2680
+ /**
2681
+ * Show decorative paperclip
2682
+ * @default false
2683
+ */
2684
+ "withDecoration"?: boolean;
691
2685
  }
692
- var HTMLAfSocialLinkElement: {
693
- prototype: HTMLAfSocialLinkElement;
694
- new (): HTMLAfSocialLinkElement;
695
- };
696
- interface HTMLAfTestimonialElement extends Components.AfTestimonial, HTMLStencilElement {
2686
+ /**
2687
+ * Icon component that displays SVG icons from the Affinda icon library.
2688
+ * Icons inherit color from their parent via currentColor.
2689
+ * Icons are bundled inline, so no runtime fetching is required.
2690
+ * This ensures icons work reliably in all bundler contexts.
2691
+ * @example ```html
2692
+ * <af-icon name="arrow-right" size="24"></af-icon>
2693
+ * ```
2694
+ */
2695
+ interface AfIcon {
2696
+ /**
2697
+ * Accessible label for the icon (for screen readers)
2698
+ */
2699
+ "label"?: string;
2700
+ /**
2701
+ * The name of the icon to display
2702
+ */
2703
+ "name": IconName;
2704
+ /**
2705
+ * Size of the icon in pixels
2706
+ * @default 24
2707
+ */
2708
+ "size"?: number;
697
2709
  }
698
- var HTMLAfTestimonialElement: {
699
- prototype: HTMLAfTestimonialElement;
700
- new (): HTMLAfTestimonialElement;
701
- };
702
- interface HTMLAfTestimonialCarouselElement extends Components.AfTestimonialCarousel, HTMLStencilElement {
2710
+ /**
2711
+ * IconBox atom - a themed container for displaying an icon with a rounded background.
2712
+ * Inherits theme colors from parent Section via CSS custom properties:
2713
+ * - Background uses `--af-background-contrast`
2714
+ * - Icon color uses `--af-background-icon-default`
2715
+ * @example ```html
2716
+ * <af-icon-box icon="settings" size="default"></af-icon-box>
2717
+ * ```
2718
+ */
2719
+ interface AfIconBox {
2720
+ /**
2721
+ * The name of the icon to display (from
2722
+ * @affinda /icons)
2723
+ */
2724
+ "icon": IconName;
2725
+ /**
2726
+ * Size variant of the icon box - 'small': 48px container, 20px icon - 'default': 64px container, 40px icon - 'large': 80px container, 48px icon
2727
+ * @default 'default'
2728
+ */
2729
+ "size"?: 'small' | 'default' | 'large';
703
2730
  }
704
- var HTMLAfTestimonialCarouselElement: {
705
- prototype: HTMLAfTestimonialCarouselElement;
706
- new (): HTMLAfTestimonialCarouselElement;
707
- };
708
- interface HTMLAfTestimonialStatElement extends Components.AfTestimonialStat, HTMLStencilElement {
2731
+ interface AfIconButton {
2732
+ /**
2733
+ * Accessible label for screen readers
2734
+ */
2735
+ "ariaLabel": string;
2736
+ /**
2737
+ * Whether the button is disabled
2738
+ * @default false
2739
+ */
2740
+ "disabled"?: boolean;
2741
+ /**
2742
+ * Optional href to render as a link
2743
+ */
2744
+ "href"?: string;
2745
+ /**
2746
+ * The size of the button
2747
+ * @default 'medium'
2748
+ */
2749
+ "size"?: 'large' | 'medium' | 'small';
2750
+ /**
2751
+ * Button type (when not using href)
2752
+ * @default 'button'
2753
+ */
2754
+ "type"?: 'button' | 'submit' | 'reset';
2755
+ /**
2756
+ * The visual variant of the button. - `primary` - Main CTA with filled ice background - `secondary` - Supporting action with white background - `tertiary` - Minimal style with transparent background
2757
+ * @default 'primary'
2758
+ */
2759
+ "variant"?: 'primary' | 'secondary' | 'tertiary';
709
2760
  }
710
- var HTMLAfTestimonialStatElement: {
711
- prototype: HTMLAfTestimonialStatElement;
712
- new (): HTMLAfTestimonialStatElement;
713
- };
714
- interface HTMLAfTextElement extends Components.AfText, HTMLStencilElement {
2761
+ /**
2762
+ * IconText molecule - combines an IconBox with a TypographyLockup for feature items.
2763
+ * Composes:
2764
+ * - af-icon-box: Themed icon container
2765
+ * - af-typography-lockup: Heading, description, and button slots
2766
+ * Inherits theme colors from parent Section via CSS custom properties.
2767
+ * @example ```html
2768
+ * <af-icon-text icon="settings" heading-size="4">
2769
+ * Feature Heading
2770
+ * <span slot="description">Feature description text.</span>
2771
+ * <af-button slot="buttons" variant="tertiary">Learn more</af-button>
2772
+ * </af-icon-text>
2773
+ * ```
2774
+ */
2775
+ interface AfIconText {
2776
+ /**
2777
+ * Heading size for the typography lockup (1-5, where 1 is largest)
2778
+ * @default 4
2779
+ */
2780
+ "headingSize"?: 1 | 2 | 3 | 4 | 5;
2781
+ /**
2782
+ * The icon name to display in the IconBox
2783
+ */
2784
+ "icon": IconName;
2785
+ /**
2786
+ * Size of the icon box
2787
+ * @default 'default'
2788
+ */
2789
+ "iconSize"?: 'small' | 'default' | 'large';
2790
+ /**
2791
+ * Layout orientation - 'vertical': Icon above text (default, used in grid layouts) - 'horizontal': Icon beside text (used in compact layouts)
2792
+ * @default 'vertical'
2793
+ */
2794
+ "orientation"?: 'vertical' | 'horizontal';
715
2795
  }
716
- var HTMLAfTextElement: {
717
- prototype: HTMLAfTextElement;
718
- new (): HTMLAfTextElement;
719
- };
720
- interface HTMLAfTypographyLockupElement extends Components.AfTypographyLockup, HTMLStencilElement {
2796
+ /**
2797
+ * Illustrated Card molecule component that combines a card with an illustration.
2798
+ * Uses a theme background with text at top and an illustration from
2799
+ * @affinda /illustrations at the bottom.
2800
+ * Uses af-card atom internally and af-typography-lockup for text hierarchy.
2801
+ */
2802
+ interface AfIllustratedCard {
2803
+ /**
2804
+ * Responsive breakpoint for typography sizing.
2805
+ * @default 'desktop'
2806
+ */
2807
+ "breakpoint"?: 'desktop' | 'mobile';
2808
+ /**
2809
+ * Card size variant (applies to desktop only).
2810
+ * @default 'default'
2811
+ */
2812
+ "cardSize"?: 'default' | 'large';
2813
+ /**
2814
+ * Theme variant - sets background color and provides theme context. Defaults to 'mist-green'.
2815
+ * @default 'mist-green'
2816
+ */
2817
+ "theme"?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay';
721
2818
  }
722
- var HTMLAfTypographyLockupElement: {
723
- prototype: HTMLAfTypographyLockupElement;
724
- new (): HTMLAfTypographyLockupElement;
725
- };
726
- interface HTMLElementTagNameMap {
727
- "af-aspect-ratio": HTMLAfAspectRatioElement;
728
- "af-button": HTMLAfButtonElement;
729
- "af-button-group": HTMLAfButtonGroupElement;
730
- "af-card": HTMLAfCardElement;
731
- "af-client-carousel": HTMLAfClientCarouselElement;
732
- "af-color-swatch": HTMLAfColorSwatchElement;
733
- "af-contact-item": HTMLAfContactItemElement;
734
- "af-container": HTMLAfContainerElement;
735
- "af-cta-section": HTMLAfCtaSectionElement;
736
- "af-feature-accordion": HTMLAfFeatureAccordionElement;
737
- "af-footer": HTMLAfFooterElement;
738
- "af-footer-column": HTMLAfFooterColumnElement;
739
- "af-footer-link": HTMLAfFooterLinkElement;
740
- "af-heading": HTMLAfHeadingElement;
741
- "af-hero-section": HTMLAfHeroSectionElement;
742
- "af-icon-button": HTMLAfIconButtonElement;
743
- "af-logo": HTMLAfLogoElement;
744
- "af-logo-well": HTMLAfLogoWellElement;
745
- "af-nav-item": HTMLAfNavItemElement;
746
- "af-navbar": HTMLAfNavbarElement;
747
- "af-section": HTMLAfSectionElement;
748
- "af-social-link": HTMLAfSocialLinkElement;
749
- "af-testimonial": HTMLAfTestimonialElement;
750
- "af-testimonial-carousel": HTMLAfTestimonialCarouselElement;
751
- "af-testimonial-stat": HTMLAfTestimonialStatElement;
752
- "af-text": HTMLAfTextElement;
753
- "af-typography-lockup": HTMLAfTypographyLockupElement;
2819
+ /**
2820
+ * A styled image container with rounded corners and a subtle inset border.
2821
+ * Provides consistent image styling across the design system.
2822
+ */
2823
+ interface AfImage {
2824
+ /**
2825
+ * Alternative text for the image (required for accessibility)
2826
+ */
2827
+ "alt": string;
2828
+ /**
2829
+ * The image source URL
2830
+ */
2831
+ "src": string;
2832
+ }
2833
+ /**
2834
+ * In-page banner component for call-to-action content.
2835
+ * A banner card with illustration, heading, description, and action buttons.
2836
+ * Typically placed inside a neutral (white) Section to show off its themed background.
2837
+ * The component has its own theme prop to control its background color and styling.
2838
+ * **Illustration Usage:**
2839
+ * Use `illustrationUrl` to pass an illustration image URL. For theme-matched illustrations,
2840
+ * use `getIllustrationUrlByScene()` from `@affinda/illustrations` in your consuming app:
2841
+ * ```tsx
2842
+ * import { getIllustrationUrlByScene } from '@affinda/illustrations';
2843
+ * <InPageBanner
2844
+ * theme="inkwell"
2845
+ * illustrationUrl={getIllustrationUrlByScene('automate', 'inkwell')}
2846
+ * ...
2847
+ * />
2848
+ * ```
2849
+ * Alternatively, use the `illustration` slot for completely custom content.
2850
+ */
2851
+ interface AfInPageBanner {
2852
+ /**
2853
+ * Banner description
2854
+ * @default ''
2855
+ */
2856
+ "description"?: string;
2857
+ /**
2858
+ * Banner heading
2859
+ * @default ''
2860
+ */
2861
+ "heading"?: string;
2862
+ /**
2863
+ * Illustration URL. For theme-matched illustrations, use getIllustrationUrlByScene() from
2864
+ * @affinda /illustrations in your app code.
2865
+ * @default ''
2866
+ */
2867
+ "illustrationUrl"?: string;
2868
+ /**
2869
+ * Primary button text
2870
+ * @default ''
2871
+ */
2872
+ "primaryButtonText"?: string;
2873
+ /**
2874
+ * Primary button URL
2875
+ * @default '#'
2876
+ */
2877
+ "primaryButtonUrl"?: string;
2878
+ /**
2879
+ * Secondary button text (optional - if empty, button won't show)
2880
+ * @default ''
2881
+ */
2882
+ "secondaryButtonText"?: string;
2883
+ /**
2884
+ * Secondary button URL
2885
+ * @default '#'
2886
+ */
2887
+ "secondaryButtonUrl"?: string;
2888
+ /**
2889
+ * Whether to show the decorative wave overlay
2890
+ * @default true
2891
+ */
2892
+ "showWaveDecoration"?: boolean;
2893
+ /**
2894
+ * Theme - sets the banner background color and typography colors
2895
+ * @default 'mist-green'
2896
+ */
2897
+ "theme"?: BannerTheme;
754
2898
  }
755
- }
756
- declare namespace LocalJSX {
757
2899
  /**
758
- * A container component that maintains a fixed aspect ratio for its content.
759
- * Useful for images, videos, or any content that needs to maintain specific proportions.
2900
+ * Input field component with label, description, and error states.
2901
+ * Supports various input types and validation states.
760
2902
  */
761
- interface AfAspectRatio {
2903
+ interface AfInput {
762
2904
  /**
763
- * The aspect ratio to maintain. Can be: - A predefined ratio: '1:1', '16:9', '4:3', 'golden-portrait', 'golden-landscape', 'a4-portrait', 'a4-landscape', 'letter-portrait', 'letter-landscape', etc. - A custom ratio in format 'width / height': '16 / 9', '4 / 3', '1.618 / 1', etc.
764
- * @example <af-aspect-ratio ratio="16:9">Content</af-aspect-ratio> <af-aspect-ratio ratio="1.618 / 1">Content</af-aspect-ratio>
765
- * @default '1:1'
2905
+ * Autocomplete attribute for the input
766
2906
  */
767
- "ratio"?: string;
768
- }
769
- interface AfButton {
2907
+ "autocomplete"?: string;
770
2908
  /**
771
- * Use on dark backgrounds for better contrast
2909
+ * Whether to show a clear button when input has value
772
2910
  * @default false
773
2911
  */
774
- "darkBackground"?: boolean;
2912
+ "clearable"?: boolean;
775
2913
  /**
776
- * Whether the button is disabled
2914
+ * Description text displayed below the label
2915
+ */
2916
+ "description"?: string;
2917
+ /**
2918
+ * Whether the input is disabled
777
2919
  * @default false
778
2920
  */
779
2921
  "disabled"?: boolean;
780
2922
  /**
781
- * Optional href to render as a link
2923
+ * Error message to display (also sets error state)
782
2924
  */
783
- "href"?: string;
2925
+ "error"?: string;
784
2926
  /**
785
- * The size of the button
786
- * @default 'default'
2927
+ * The label text for the input field
787
2928
  */
788
- "size"?: 'default' | 'small';
2929
+ "label"?: string;
789
2930
  /**
790
- * Button type (when not using href)
791
- * @default 'button'
2931
+ * Maximum length of input value
792
2932
  */
793
- "type"?: 'button' | 'submit' | 'reset';
2933
+ "maxlength"?: number;
794
2934
  /**
795
- * The visual variant of the button
796
- * @default 'primary'
2935
+ * Minimum length of input value
797
2936
  */
798
- "variant"?: 'primary' | 'secondary' | 'outline' | 'ghost';
799
- }
800
- interface AfButtonGroup {
2937
+ "minlength"?: number;
801
2938
  /**
802
- * Layout direction of the button group
803
- * @default 'horizontal'
2939
+ * The name of the input for form submission
804
2940
  */
805
- "direction"?: 'horizontal' | 'vertical';
2941
+ "name"?: string;
806
2942
  /**
807
- * Gap between buttons
808
- * @default '8px'
2943
+ * Emitted when the input loses focus
809
2944
  */
810
- "gap"?: string;
811
- }
812
- interface AfCard {
2945
+ "onAfBlur"?: (event: AfInputCustomEvent<void>) => void;
813
2946
  /**
814
- * Background color for the card (CSS color value)
2947
+ * Emitted when the clear button is clicked
815
2948
  */
816
- "backgroundColor"?: string;
2949
+ "onAfClear"?: (event: AfInputCustomEvent<void>) => void;
817
2950
  /**
818
- * Background image URL for the card
2951
+ * Emitted when the input gains focus
819
2952
  */
820
- "backgroundImage"?: string;
2953
+ "onAfFocus"?: (event: AfInputCustomEvent<void>) => void;
821
2954
  /**
822
- * Whether to apply a dark gradient overlay (for cards with background images)
823
- * @default false
2955
+ * Emitted when the info icon is clicked
824
2956
  */
825
- "darkOverlay"?: boolean;
826
- }
827
- /**
828
- * Infinite scrolling carousel for client logos
829
- */
830
- interface AfClientCarousel {
2957
+ "onAfInfoClick"?: (event: AfInputCustomEvent<void>) => void;
2958
+ /**
2959
+ * Emitted when the input value changes
2960
+ */
2961
+ "onAfInput"?: (event: AfInputCustomEvent<{ value: string }>) => void;
831
2962
  /**
832
- * Headline text
833
- * @default "Trusted by some of the world's leading organisations"
2963
+ * Pattern for input validation (regex)
834
2964
  */
835
- "headlineText"?: string;
2965
+ "pattern"?: string;
836
2966
  /**
837
- * Show headline above carousel
2967
+ * Placeholder text for the input
2968
+ */
2969
+ "placeholder"?: string;
2970
+ /**
2971
+ * Whether the input is read-only
838
2972
  * @default false
839
2973
  */
840
- "showHeadline"?: boolean;
841
- }
842
- interface AfColorSwatch {
2974
+ "readonly"?: boolean;
843
2975
  /**
844
- * Color value (hex)
2976
+ * Whether the input is required
2977
+ * @default false
845
2978
  */
846
- "color": string;
2979
+ "required"?: boolean;
847
2980
  /**
848
- * Color name
2981
+ * Whether to show the info icon next to the label
2982
+ * @default false
849
2983
  */
850
- "name": string;
2984
+ "showInfoIcon"?: boolean;
851
2985
  /**
852
- * Size variant
853
- * @default 'default'
2986
+ * Whether to show a search icon in the input
2987
+ * @default false
854
2988
  */
855
- "size"?: 'default' | 'large';
856
- }
857
- /**
858
- * Contact item component for footer
859
- * Displays a label and value pair (e.g., "Sales enquiries" / "contact@example.com")
860
- */
861
- interface AfContactItem {
2989
+ "showSearchIcon"?: boolean;
862
2990
  /**
863
- * Contact label (e.g., "Sales enquiries")
864
- * @default ''
2991
+ * The input type (text, email, password, number, tel, url, search)
2992
+ * @default 'text'
865
2993
  */
866
- "label"?: string;
2994
+ "type"?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
867
2995
  /**
868
- * Contact value (e.g., email address)
2996
+ * The current value of the input
869
2997
  * @default ''
870
2998
  */
871
2999
  "value"?: string;
872
3000
  }
873
3001
  /**
874
- * A responsive container component that provides consistent margins and max-width
875
- * constraints based on the Affinda grid system.
3002
+ * Affinda logo component
876
3003
  */
877
- interface AfContainer {
878
- /**
879
- * Maximum width constraint for the container - 'xlarge': 1440px container (default) - 'large': 1024px container - 'medium': 768px container - 'fluid': No max-width constraint, full width with margins
880
- * @default 'xlarge'
881
- */
882
- "maxWidth"?: 'xlarge' | 'large' | 'medium' | 'fluid';
3004
+ interface AfLogo {
3005
+ }
3006
+ /**
3007
+ * A rounded container for displaying client logos
3008
+ */
3009
+ interface AfLogoWell {
883
3010
  }
884
3011
  /**
885
- * Call-to-action section component with illustration and decorative background
886
- * Styled to match the affinda.com "See what our AI agents can do for you" section
3012
+ * A navigation card component for featured article content in mega-menu dropdowns.
3013
+ * Displays an image with a gradient overlay and headline text.
3014
+ * **Usage:**
3015
+ * - Place in the `sidebar` slot of NavMenuNest
3016
+ * - Provide imageSrc, heading, and href props
3017
+ * **Hover behavior:**
3018
+ * - Slight scale effect (1.02)
3019
+ * - Headline underline
887
3020
  */
888
- interface AfCtaSection {
3021
+ interface AfNavCard {
889
3022
  /**
890
- * Section description
891
- * @default 'Upload your documents and watch our AI agents get to work.'
3023
+ * The headline text displayed over the image
892
3024
  */
893
- "description"?: string;
3025
+ "heading"?: string;
894
3026
  /**
895
- * Section heading
896
- * @default 'See what our AI agents can do for you'
3027
+ * URL to navigate to when clicked
897
3028
  */
898
- "heading"?: string;
3029
+ "href"?: string;
899
3030
  /**
900
- * Illustration URL - if provided, displays this image
3031
+ * Alternative text for the image
901
3032
  * @default ''
902
3033
  */
903
- "illustrationUrl"?: string;
3034
+ "imageAlt"?: string;
904
3035
  /**
905
- * Primary button text
906
- * @default 'Try for free'
3036
+ * Image source URL for the background
907
3037
  */
908
- "primaryButtonText"?: string;
3038
+ "imageSrc"?: string;
3039
+ }
3040
+ /**
3041
+ * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
3042
+ * Supports multiple hierarchy levels, variants, and states (active, hover).
3043
+ */
3044
+ interface AfNavItem {
909
3045
  /**
910
- * Primary button URL
911
- * @default '#'
3046
+ * Whether this nav item is currently active/selected
3047
+ * @default false
912
3048
  */
913
- "primaryButtonUrl"?: string;
3049
+ "active"?: boolean;
914
3050
  /**
915
- * Secondary button text
916
- * @default 'Talk to us'
3051
+ * Breakpoint variant for responsive styling - 'desktop': Desktop-specific styles - 'mobile': Mobile-specific styles (larger text, different spacing)
3052
+ * @default 'desktop'
917
3053
  */
918
- "secondaryButtonText"?: string;
3054
+ "breakpoint"?: 'desktop' | 'mobile';
919
3055
  /**
920
- * Secondary button URL
921
- * @default '#'
3056
+ * Visual hierarchy level of the navigation item - 'primary': Bold, main navigation (larger text, prominent styling) - 'secondary': Lighter, sub-navigation (smaller text, subtle styling)
3057
+ * @default 'primary'
922
3058
  */
923
- "secondaryButtonUrl"?: string;
3059
+ "hierarchy"?: 'primary' | 'secondary';
3060
+ /**
3061
+ * URL to navigate to when clicked
3062
+ */
3063
+ "href"?: string;
3064
+ /**
3065
+ * Visual variant within the hierarchy level - '01': Darker/more prominent styling - '02': Lighter/more subtle styling
3066
+ * @default '01'
3067
+ */
3068
+ "variant"?: '01' | '02';
924
3069
  }
925
3070
  /**
926
- * Feature accordion component with expandable items and accompanying image
927
- * Used for showcasing product features with visual examples
928
- * Features auto-cycling through items with a progress timer
3071
+ * A grouped navigation menu component with a heading.
3072
+ * Used in mega-menu dropdowns to group related navigation items.
929
3073
  */
930
- interface AfFeatureAccordion {
3074
+ interface AfNavMenu {
931
3075
  /**
932
- * Whether auto-cycling is enabled
933
- * @default true
3076
+ * Breakpoint variant for responsive styling - 'desktop': Desktop-specific styles (right border, horizontal padding) - 'mobile': Mobile-specific styles (bottom border, vertical layout)
3077
+ * @default 'desktop'
934
3078
  */
935
- "autoCycle"?: boolean;
3079
+ "breakpoint"?: 'desktop' | 'mobile';
936
3080
  /**
937
- * Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds)
938
- * @default 6000
3081
+ * Whether to display as a card with background color and rounded corners. Used for highlighted sidebar menus (e.g., solutions-alt variant).
3082
+ * @default false
939
3083
  */
940
- "cycleInterval"?: number;
3084
+ "cardStyle"?: boolean;
941
3085
  /**
942
- * Section heading
943
- * @default 'Give AI agents your paperwork'
3086
+ * The heading text displayed above the navigation items
944
3087
  */
945
3088
  "heading"?: string;
946
3089
  /**
947
- * JSON string of accordion items
948
- * @default '[]'
3090
+ * Whether to show the right border separator. When used inside NavMenuNest, borders are controlled by the parent. Set to true only when using NavMenu standalone.
3091
+ * @default false
949
3092
  */
950
- "items"?: string;
3093
+ "showBorder"?: boolean;
951
3094
  }
952
3095
  /**
953
- * Footer component for marketing pages
954
- * Provides a flexible, slot-based layout for footer content
955
- * All content is passed via slots - no hardcoded links or content
3096
+ * A mega-menu dropdown panel component.
3097
+ * Acts as a container for NavMenu columns and optionally a sidebar.
3098
+ * Used as the dropdown content for navbar items.
3099
+ * **Slots:**
3100
+ * - default: Place NavMenu components here - they will be displayed as columns
3101
+ * - sidebar: Optional sidebar content (NavMenu, NavCard, or any content)
3102
+ * **Example:**
3103
+ * ```html
3104
+ * <af-nav-menu-nest type="solutions" breakpoint="desktop">
3105
+ * <af-nav-menu heading="Industries">...</af-nav-menu>
3106
+ * <af-nav-menu heading="Use Cases">...</af-nav-menu>
3107
+ * <af-nav-menu heading="Documents">...</af-nav-menu>
3108
+ * <af-nav-menu slot="sidebar" heading="Resume Parser">...</af-nav-menu>
3109
+ * </af-nav-menu-nest>
3110
+ * ```
956
3111
  */
957
- interface AfFooter {
3112
+ interface AfNavMenuNest {
958
3113
  /**
959
- * Copyright text (e.g., 2025 Company Name. All rights reserved.")
960
- * @default ''
3114
+ * Breakpoint variant for responsive styling - 'desktop': Horizontal multi-column layout - 'mobile': Vertical stacked layout
3115
+ * @default 'desktop'
961
3116
  */
962
- "copyrightText"?: string;
3117
+ "breakpoint"?: 'desktop' | 'mobile';
963
3118
  /**
964
- * Whether to show the status indicator
3119
+ * Whether to show the heavier border on the last column (before sidebar). Set to `true` when sidebar has content, `false` when no sidebar. When `false`, the last column has no border.
965
3120
  * @default true
966
3121
  */
967
- "showStatus"?: boolean;
3122
+ "showSidebarBorder"?: boolean;
968
3123
  /**
969
- * Status message text
970
- * @default ''
3124
+ * The type/variant of the mega-menu - 'solutions': Multi-column layout (3 columns + sidebar) - 'solutions-alt': Alternative solutions layout - 'resources': Multi-column layout with optional featured card - 'pricing': Simpler layout without sidebar
3125
+ * @default 'solutions'
971
3126
  */
972
- "statusText"?: string;
3127
+ "type"?: 'solutions' | 'solutions-alt' | 'resources' | 'pricing';
3128
+ }
3129
+ /**
3130
+ * A full-width navigation bar component that provides the main site navigation.
3131
+ * Features a pill-shaped container with logo, navigation links, and action buttons.
3132
+ * Includes mobile hamburger menu and support for mega-menu dropdowns.
3133
+ * The logo slot can be used to provide a custom logo. If no logo is provided,
3134
+ * the default Affinda logo will be displayed.
3135
+ */
3136
+ interface AfNavbar {
973
3137
  /**
974
- * Status page URL
975
- * @default ''
3138
+ * Whether to show the default Affinda logo when no logo slot content is provided
3139
+ * @default true
976
3140
  */
977
- "statusUrl"?: string;
3141
+ "showDefaultLogo"?: boolean;
978
3142
  /**
979
- * Whether systems are operational (shows green/red indicator)
980
- * @default true
3143
+ * Theme for the spacer background - should match the section below the navbar
981
3144
  */
982
- "systemsOperational"?: boolean;
3145
+ "theme"?: 'white' | 'inkwell' | 'mist-green' | 'soft-clay';
983
3146
  }
984
3147
  /**
985
- * Footer navigation column component
986
- * Used within af-footer to create navigation link groups
3148
+ * NumberBadge displays numbers 1-10 in either a filled circle or text-only style.
3149
+ * Perfect for numbered lists, step indicators, or ordered content.
3150
+ * @example ```html
3151
+ * <af-number-badge number="1" variant="inCircle" size="48"></af-number-badge>
3152
+ * <af-number-badge number="5" variant="outlined" size="32"></af-number-badge>
3153
+ * ```
987
3154
  */
988
- interface AfFooterColumn {
3155
+ interface AfNumberBadge {
989
3156
  /**
990
- * Column heading
991
- * @default ''
3157
+ * The number to display (1-10)
3158
+ * @default 1
992
3159
  */
993
- "heading"?: string;
3160
+ "number"?: NumberBadgeNumber;
3161
+ /**
3162
+ * Size of the badge in pixels
3163
+ * @default 48
3164
+ */
3165
+ "size"?: number;
3166
+ /**
3167
+ * Visual variant of the badge - `inCircle` - Number in filled soft-clay circle - `outlined` - Number text only in mist-green
3168
+ * @default 'inCircle'
3169
+ */
3170
+ "variant"?: NumberBadgeVariant;
994
3171
  }
995
3172
  /**
996
- * Footer link component
997
- * Styled link for use in footer navigation columns
3173
+ * Progress Line atom component for displaying scroll or completion progress.
3174
+ * Shows a horizontal bar with a filled portion indicating progress.
3175
+ * Used primarily for carousel scroll indicators.
998
3176
  */
999
- interface AfFooterLink {
3177
+ interface AfProgressLine {
1000
3178
  /**
1001
- * Whether this is an external link (opens in new tab)
3179
+ * Orientation of the progress line. Currently only horizontal is supported.
3180
+ * @default 'horizontal'
3181
+ */
3182
+ "orientation"?: 'horizontal';
3183
+ /**
3184
+ * Progress value from 0 to 1 (0 = 0%, 1 = 100%).
3185
+ * @default 0
3186
+ */
3187
+ "progress"?: number;
3188
+ }
3189
+ /**
3190
+ * Radio component for selecting a single option from a group.
3191
+ */
3192
+ interface AfRadio {
3193
+ /**
3194
+ * Whether the radio is checked
1002
3195
  * @default false
1003
3196
  */
1004
- "external"?: boolean;
3197
+ "checked"?: boolean;
1005
3198
  /**
1006
- * Link URL
1007
- * @default '#'
3199
+ * Whether the radio is disabled
3200
+ * @default false
1008
3201
  */
1009
- "href"?: string;
3202
+ "disabled"?: boolean;
3203
+ /**
3204
+ * The name of the radio for form submission (radios with same name are grouped)
3205
+ */
3206
+ "name"?: string;
3207
+ /**
3208
+ * Emitted when the radio checked state changes
3209
+ */
3210
+ "onAfChange"?: (event: AfRadioCustomEvent<{ checked: boolean; value?: string }>) => void;
3211
+ /**
3212
+ * The value of the radio for form submission
3213
+ */
3214
+ "value"?: string;
1010
3215
  }
1011
- interface AfHeading {
3216
+ /**
3217
+ * Section layout component for consistent spacing and backgrounds.
3218
+ * Sets theme context for all child components via CSS custom properties.
3219
+ */
3220
+ interface AfSection {
1012
3221
  /**
1013
- * Visual alignment
1014
- * @default 'left'
3222
+ * Whether to include a Container wrapper
3223
+ * @default true
1015
3224
  */
1016
- "align"?: 'left' | 'center' | 'right';
3225
+ "container"?: boolean;
1017
3226
  /**
1018
- * Heading level
1019
- * @default '1'
3227
+ * Padding variant
3228
+ * @default 'default'
1020
3229
  */
1021
- "level"?: 'xl' | '1' | '2' | '3' | '4' | '5';
3230
+ "padding"?: 'tight' | 'default' | 'loose';
1022
3231
  /**
1023
- * Theme for dark backgrounds
1024
- * @default 'light'
3232
+ * Theme - sets background color and provides theme context to children
3233
+ * @default 'white'
1025
3234
  */
1026
- "theme"?: 'light' | 'dark';
3235
+ "theme"?: 'white' | 'inkwell' | 'mist-green' | 'soft-clay' | 'white-ivory';
1027
3236
  }
1028
3237
  /**
1029
- * Hero section component for marketing pages
3238
+ * Social media link component
3239
+ * Circular bordered icon link for social media profiles
1030
3240
  */
1031
- interface AfHeroSection {
3241
+ interface AfSocialLink {
1032
3242
  /**
1033
- * Minimum height
1034
- * @default '60vh'
3243
+ * Link URL
3244
+ * @default '#'
1035
3245
  */
1036
- "minHeight"?: string;
3246
+ "href"?: string;
3247
+ /**
3248
+ * Icon type: 'linkedin', 'youtube', 'github', 'twitter', 'facebook', or 'custom'
3249
+ * @default 'custom'
3250
+ */
3251
+ "icon"?: 'linkedin' | 'youtube' | 'github' | 'twitter' | 'facebook' | 'custom';
3252
+ /**
3253
+ * Accessible label for the link
3254
+ * @default ''
3255
+ */
3256
+ "label"?: string;
3257
+ }
3258
+ /**
3259
+ * Split Section component for layouts with two-tone backgrounds.
3260
+ * Creates a vertical split with different themes for top and bottom halves.
3261
+ * Useful for content that visually spans across two themed areas.
3262
+ * Uses a CSS linear-gradient for the split background effect.
3263
+ */
3264
+ interface AfSplitSection {
3265
+ /**
3266
+ * Theme for the bottom half of the section
3267
+ * @default 'white'
3268
+ */
3269
+ "bottomTheme"?: Theme;
3270
+ /**
3271
+ * Whether to include a Container wrapper
3272
+ * @default true
3273
+ */
3274
+ "container"?: boolean;
1037
3275
  /**
1038
- * Hero variant
1039
- * @default 'dark'
3276
+ * Padding variant
3277
+ * @default 'default'
1040
3278
  */
1041
- "variant"?: 'light' | 'dark';
3279
+ "padding"?: 'tight' | 'default' | 'loose';
1042
3280
  /**
1043
- * Show decorative paperclip
1044
- * @default false
3281
+ * Theme for the top half of the section
3282
+ * @default 'mist-green'
1045
3283
  */
1046
- "withDecoration"?: boolean;
3284
+ "topTheme"?: Theme;
1047
3285
  }
1048
- interface AfIconButton {
3286
+ /**
3287
+ * Switch component for toggling between on and off states.
3288
+ */
3289
+ interface AfSwitch {
1049
3290
  /**
1050
- * Accessible label for screen readers
3291
+ * Whether the switch is active (on)
3292
+ * @default false
1051
3293
  */
1052
- "ariaLabel": string;
3294
+ "active"?: boolean;
1053
3295
  /**
1054
- * Whether the button is disabled
3296
+ * Whether the switch is disabled
1055
3297
  * @default false
1056
3298
  */
1057
3299
  "disabled"?: boolean;
1058
3300
  /**
1059
- * Optional href to render as a link
1060
- */
1061
- "href"?: string;
1062
- /**
1063
- * The size of the button
1064
- * @default 'medium'
3301
+ * The name of the switch for form submission
1065
3302
  */
1066
- "size"?: 'large' | 'medium' | 'small';
3303
+ "name"?: string;
1067
3304
  /**
1068
- * Button type (when not using href)
1069
- * @default 'button'
3305
+ * Emitted when the switch state changes
1070
3306
  */
1071
- "type"?: 'button' | 'submit' | 'reset';
3307
+ "onAfChange"?: (event: AfSwitchCustomEvent<{ active: boolean }>) => void;
1072
3308
  /**
1073
- * The visual variant of the button
1074
- * @default 'primary'
3309
+ * The value of the switch for form submission
1075
3310
  */
1076
- "variant"?: 'primary' | 'secondary' | 'outline' | 'ghost';
1077
- }
1078
- /**
1079
- * Affinda logo component
1080
- */
1081
- interface AfLogo {
1082
- }
1083
- /**
1084
- * A rounded container for displaying client logos
1085
- */
1086
- interface AfLogoWell {
3311
+ "value"?: string;
1087
3312
  }
1088
3313
  /**
1089
- * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
1090
- * Supports multiple hierarchy levels, variants, and states (active, hover).
3314
+ * Tab component for use within a TabBar.
3315
+ * Represents an individual selectable tab with support for icons and number badges.
3316
+ * @example ```html
3317
+ * <af-tab label="Overview" active></af-tab>
3318
+ * <af-tab label="Details">
3319
+ * <af-icon slot="icon" name="document"></af-icon>
3320
+ * </af-tab>
3321
+ * <af-tab label="Step 1">
3322
+ * <af-number-badge slot="number" number="1"></af-number-badge>
3323
+ * </af-tab>
3324
+ * ```
1091
3325
  */
1092
- interface AfNavItem {
3326
+ interface AfTab {
1093
3327
  /**
1094
- * Whether this nav item is currently active/selected
3328
+ * Whether the tab is currently active/selected
1095
3329
  * @default false
1096
3330
  */
1097
3331
  "active"?: boolean;
1098
3332
  /**
1099
- * Visual hierarchy level of the navigation item - 'primary': Bold, main navigation (larger text, prominent styling) - 'secondary': Lighter, sub-navigation (smaller text, subtle styling)
1100
- * @default 'primary'
3333
+ * Whether the tab is disabled
3334
+ * @default false
1101
3335
  */
1102
- "hierarchy"?: 'primary' | 'secondary';
3336
+ "disabled"?: boolean;
1103
3337
  /**
1104
- * URL to navigate to when clicked
3338
+ * Whether to show the icon slot
3339
+ * @default false
1105
3340
  */
1106
- "href"?: string;
3341
+ "displayIcon"?: boolean;
1107
3342
  /**
1108
- * Visual variant within the hierarchy level - '01': Darker/more prominent styling - '02': Lighter/more subtle styling
1109
- * @default '01'
3343
+ * Whether to show the number badge slot
3344
+ * @default false
1110
3345
  */
1111
- "variant"?: '01' | '02';
1112
- }
1113
- /**
1114
- * A full-width navigation bar component that provides the main site navigation.
1115
- * Features a pill-shaped container with logo, navigation links, and action buttons.
1116
- * Includes mobile hamburger menu.
1117
- */
1118
- interface AfNavbar {
3346
+ "displayNumber"?: boolean;
3347
+ /**
3348
+ * The text label for the tab
3349
+ * @default ''
3350
+ */
3351
+ "label"?: string;
3352
+ /**
3353
+ * Emitted when the tab is clicked
3354
+ */
3355
+ "onAfTabClick"?: (event: AfTabCustomEvent<{ value?: string }>) => void;
3356
+ /**
3357
+ * Visual shape variant - `square` - Rectangular tab with bottom border indicator - `pill` - Rounded pill shape with background for active state
3358
+ * @default 'square'
3359
+ */
3360
+ "shape"?: TabShape;
3361
+ /**
3362
+ * Unique value for the tab, used for programmatic selection
3363
+ */
3364
+ "value"?: string;
1119
3365
  }
1120
3366
  /**
1121
- * Section layout component for consistent spacing and backgrounds
3367
+ * TabBar component that contains and manages a group of tabs.
3368
+ * Provides horizontal layout, keyboard navigation, and consistent styling.
3369
+ * @example ```html
3370
+ * <af-tab-bar shape="square" breakpoint="desktop">
3371
+ * <af-tab label="Overview" active value="overview"></af-tab>
3372
+ * <af-tab label="Details" value="details"></af-tab>
3373
+ * <af-tab label="Settings" value="settings"></af-tab>
3374
+ * </af-tab-bar>
3375
+ * ```
1122
3376
  */
1123
- interface AfSection {
1124
- /**
1125
- * Background color
1126
- * @default 'white'
1127
- */
1128
- "background"?: 'white' | 'level1' | 'dark' | 'inkwell';
3377
+ interface AfTabBar {
1129
3378
  /**
1130
- * Whether to include a Container wrapper
1131
- * @default true
3379
+ * Responsive breakpoint mode - `mobile` - Compact layout with smaller padding - `desktop` - Larger layout with more generous spacing
3380
+ * @default 'desktop'
1132
3381
  */
1133
- "container"?: boolean;
3382
+ "breakpoint"?: TabBarBreakpoint;
1134
3383
  /**
1135
- * Padding variant
1136
- * @default 'default'
3384
+ * Visual shape variant for all tabs - `square` - Rectangular tabs with bottom border indicator - `pill` - Rounded pill tabs with background for active state
3385
+ * @default 'square'
1137
3386
  */
1138
- "padding"?: 'tight' | 'default' | 'loose';
3387
+ "shape"?: TabBarShape;
1139
3388
  }
1140
3389
  /**
1141
- * Social media link component
1142
- * Circular bordered icon link for social media profiles
3390
+ * Tag displays a label in a styled container.
3391
+ * Perfect for categorization, topics, or metadata display.
3392
+ * @example ```html
3393
+ * <af-tag>AI</af-tag>
3394
+ * <af-tag size="small">Machine Learning</af-tag>
3395
+ * <af-tag size="large" variant="light">Document Processing</af-tag>
3396
+ * ```
1143
3397
  */
1144
- interface AfSocialLink {
3398
+ interface AfTag {
1145
3399
  /**
1146
- * Link URL
1147
- * @default '#'
3400
+ * The URL to navigate to when the tag is clicked (makes the tag a link)
1148
3401
  */
1149
3402
  "href"?: string;
1150
3403
  /**
1151
- * Icon type: 'linkedin', 'youtube', 'github', 'twitter', 'facebook', or 'custom'
1152
- * @default 'custom'
3404
+ * The size of the tag - `x-small` - Compact tag with minimal padding - `small` - Small tag with moderate padding - `large` - Large tag with generous padding
3405
+ * @default 'small'
1153
3406
  */
1154
- "icon"?: 'linkedin' | 'youtube' | 'github' | 'twitter' | 'facebook' | 'custom';
3407
+ "size"?: TagSize;
1155
3408
  /**
1156
- * Accessible label for the link
1157
- * @default ''
3409
+ * The visual variant of the tag - `sand` - Soft-clay/tan colored background (default) - `light` - Mist-green/light colored background
3410
+ * @default 'sand'
1158
3411
  */
1159
- "label"?: string;
3412
+ "variant"?: TagVariant;
1160
3413
  }
1161
3414
  interface AfTestimonial {
1162
3415
  /**
@@ -1167,10 +3420,28 @@ declare namespace LocalJSX {
1167
3420
  * Background image URL for the testimonial card
1168
3421
  */
1169
3422
  "backgroundImage"?: string;
3423
+ /**
3424
+ * Whether the next button is enabled
3425
+ * @default false
3426
+ */
3427
+ "hasNext"?: boolean;
3428
+ /**
3429
+ * Whether the previous button is enabled
3430
+ * @default false
3431
+ */
3432
+ "hasPrev"?: boolean;
1170
3433
  /**
1171
3434
  * Company logo URL
1172
3435
  */
1173
3436
  "logoImage"?: string;
3437
+ /**
3438
+ * Emitted when the next button is clicked
3439
+ */
3440
+ "onNavNext"?: (event: AfTestimonialCustomEvent<void>) => void;
3441
+ /**
3442
+ * Emitted when the previous button is clicked
3443
+ */
3444
+ "onNavPrev"?: (event: AfTestimonialCustomEvent<void>) => void;
1174
3445
  /**
1175
3446
  * Testimonial quote text
1176
3447
  */
@@ -1179,7 +3450,17 @@ declare namespace LocalJSX {
1179
3450
  * Link to full case study
1180
3451
  */
1181
3452
  "readMoreLink"?: string;
3453
+ /**
3454
+ * Whether to show built-in navigation buttons (used when in a carousel)
3455
+ * @default false
3456
+ */
3457
+ "showNavigation"?: boolean;
1182
3458
  }
3459
+ /**
3460
+ * TestimonialCarousel - Carousel for displaying multiple customer testimonials.
3461
+ * Handles navigation between testimonials with progress indicator.
3462
+ * Wrap in Section/Container for proper page layout and theming.
3463
+ */
1183
3464
  interface AfTestimonialCarousel {
1184
3465
  }
1185
3466
  interface AfTestimonialStat {
@@ -1197,6 +3478,11 @@ declare namespace LocalJSX {
1197
3478
  */
1198
3479
  "value": string;
1199
3480
  }
3481
+ /**
3482
+ * Text/body component that inherits color from theme context.
3483
+ * Color is determined by the parent theme (af-section, af-hero-section, etc.)
3484
+ * via CSS custom properties.
3485
+ */
1200
3486
  interface AfText {
1201
3487
  /**
1202
3488
  * Visual alignment
@@ -1208,16 +3494,144 @@ declare namespace LocalJSX {
1208
3494
  * @default 'p'
1209
3495
  */
1210
3496
  "as"?: 'p' | 'span' | 'div' | 'label';
1211
- /**
1212
- * Theme for dark backgrounds
1213
- * @default 'light'
1214
- */
1215
- "theme"?: 'light' | 'dark';
1216
3497
  /**
1217
3498
  * Text variant
1218
3499
  * @default 'medium'
1219
3500
  */
1220
- "variant"?: 'xlarge' | 'large' | 'medium' | 'small' | 'label-button' | 'label-tag';
3501
+ "variant"?: 'xlarge' | 'large' | 'medium' | 'small';
3502
+ }
3503
+ /**
3504
+ * TextImage composite component that combines typography content with an image.
3505
+ * Supports various layout configurations with image position and proportion options.
3506
+ */
3507
+ interface AfTextImage {
3508
+ /**
3509
+ * Image alt text for accessibility
3510
+ * @default ''
3511
+ */
3512
+ "alt"?: string;
3513
+ /**
3514
+ * Position of the image relative to the text content
3515
+ * @default 'right'
3516
+ */
3517
+ "imagePosition"?: 'left' | 'right';
3518
+ /**
3519
+ * Proportion of the image in the layout - '1/3': Image takes 1/3 of the width (text takes 2/3) - '1/4': Image takes 1/4 of the width (text takes 3/4) - '100%': Image takes full width below text
3520
+ * @default '1/3'
3521
+ */
3522
+ "imageProportion"?: '1/3' | '1/4' | '100%';
3523
+ /**
3524
+ * Whether to show a second typography lockup section
3525
+ * @default false
3526
+ */
3527
+ "showSecondLockup"?: boolean;
3528
+ /**
3529
+ * Image source URL
3530
+ */
3531
+ "src"?: string;
3532
+ }
3533
+ /**
3534
+ * TextImageNest is a layout component that arranges multiple text-image content pieces
3535
+ * in various grid layouts with optional footer buttons.
3536
+ * This component inherits theming from a parent Section or theme-providing container.
3537
+ * Wrap it in an af-section to apply themes.
3538
+ * Supports multiple layout variants:
3539
+ * - `single`: Full-width single item (side-by-side image + text)
3540
+ * - `grid-2`: 2-column grid with stacked items
3541
+ * - `grid-3`: 3-column grid with stacked items
3542
+ * - `grid-4`: 4-column grid with stacked items
3543
+ * - `stacked`: Alternating rows of side-by-side content
3544
+ */
3545
+ interface AfTextImageNest {
3546
+ /**
3547
+ * Layout variant for the content grid
3548
+ * @default 'grid-3'
3549
+ */
3550
+ "layout"?: 'single' | 'grid-2' | 'grid-3' | 'grid-4' | 'stacked';
3551
+ }
3552
+ /**
3553
+ * Textarea component for multi-line text input with label, description, and error states.
3554
+ */
3555
+ interface AfTextarea {
3556
+ /**
3557
+ * Description text displayed below the label
3558
+ */
3559
+ "description"?: string;
3560
+ /**
3561
+ * Whether the textarea is disabled
3562
+ * @default false
3563
+ */
3564
+ "disabled"?: boolean;
3565
+ /**
3566
+ * Error message to display (also sets error state)
3567
+ */
3568
+ "error"?: string;
3569
+ /**
3570
+ * The label text for the textarea
3571
+ */
3572
+ "label"?: string;
3573
+ /**
3574
+ * Maximum length of input value
3575
+ */
3576
+ "maxlength"?: number;
3577
+ /**
3578
+ * Minimum length of input value
3579
+ */
3580
+ "minlength"?: number;
3581
+ /**
3582
+ * The name of the textarea for form submission
3583
+ */
3584
+ "name"?: string;
3585
+ /**
3586
+ * Emitted when the textarea loses focus
3587
+ */
3588
+ "onAfBlur"?: (event: AfTextareaCustomEvent<void>) => void;
3589
+ /**
3590
+ * Emitted when the textarea gains focus
3591
+ */
3592
+ "onAfFocus"?: (event: AfTextareaCustomEvent<void>) => void;
3593
+ /**
3594
+ * Emitted when the info icon is clicked
3595
+ */
3596
+ "onAfInfoClick"?: (event: AfTextareaCustomEvent<void>) => void;
3597
+ /**
3598
+ * Emitted when the textarea value changes
3599
+ */
3600
+ "onAfInput"?: (event: AfTextareaCustomEvent<{ value: string }>) => void;
3601
+ /**
3602
+ * Placeholder text for the textarea
3603
+ */
3604
+ "placeholder"?: string;
3605
+ /**
3606
+ * Whether the textarea is read-only
3607
+ * @default false
3608
+ */
3609
+ "readonly"?: boolean;
3610
+ /**
3611
+ * Whether the textarea is required
3612
+ * @default false
3613
+ */
3614
+ "required"?: boolean;
3615
+ /**
3616
+ * Whether the textarea is resizable
3617
+ * @default 'vertical'
3618
+ */
3619
+ "resize"?: 'none' | 'vertical' | 'horizontal' | 'both';
3620
+ /**
3621
+ * Number of visible rows (height)
3622
+ * @default 4
3623
+ */
3624
+ "rows"?: number;
3625
+ /**
3626
+ * Whether to show the info icon next to the label
3627
+ * @default false
3628
+ */
3629
+ "showInfoIcon"?: boolean;
3630
+ /**
3631
+ * The current value of the textarea
3632
+ * @default ''
3633
+ */
3634
+ "value"?: string;
1221
3635
  }
1222
3636
  interface AfTypographyLockup {
1223
3637
  /**
@@ -1245,34 +3659,98 @@ declare namespace LocalJSX {
1245
3659
  */
1246
3660
  "textAlignment"?: 'left' | 'center';
1247
3661
  }
3662
+ /**
3663
+ * Video Container molecule component for showcasing video content.
3664
+ * Uses slots for typography lockups above and below the video.
3665
+ * When used inside af-split-section, the top slot inherits the top theme
3666
+ * and the bottom slot inherits the bottom theme for correct colors.
3667
+ * @example ```html
3668
+ * <af-split-section top-theme="mist-green" bottom-theme="white">
3669
+ * <af-video-container video-thumbnail-url="/path/to/thumbnail.jpg">
3670
+ * <af-typography-lockup slot="top" text-alignment="center" heading-size="2">
3671
+ * <af-heading level="2">Watch our product demo</af-heading>
3672
+ * <af-text slot="description">See how Affinda transforms your workflow</af-text>
3673
+ * <af-button slot="buttons" variant="primary">Get Started</af-button>
3674
+ * </af-typography-lockup>
3675
+ * </af-video-container>
3676
+ * </af-split-section>
3677
+ * ```
3678
+ */
3679
+ interface AfVideoContainer {
3680
+ /**
3681
+ * Emitted when the play button is clicked. Use this to handle video playback (e.g., open modal, embed player). If videoUrl is set and no handler prevents default, opens URL in new tab.
3682
+ */
3683
+ "onPlayClick"?: (event: AfVideoContainerCustomEvent<{ videoUrl: string }>) => void;
3684
+ /**
3685
+ * Video alt text for accessibility
3686
+ * @default 'Video thumbnail'
3687
+ */
3688
+ "videoAlt"?: string;
3689
+ /**
3690
+ * Video thumbnail image URL
3691
+ * @default ''
3692
+ */
3693
+ "videoThumbnailUrl"?: string;
3694
+ /**
3695
+ * Optional video URL for play button link
3696
+ * @default ''
3697
+ */
3698
+ "videoUrl"?: string;
3699
+ }
1248
3700
  interface IntrinsicElements {
1249
3701
  "af-aspect-ratio": AfAspectRatio;
1250
3702
  "af-button": AfButton;
1251
3703
  "af-button-group": AfButtonGroup;
1252
3704
  "af-card": AfCard;
3705
+ "af-checkbox": AfCheckbox;
1253
3706
  "af-client-carousel": AfClientCarousel;
1254
3707
  "af-color-swatch": AfColorSwatch;
1255
3708
  "af-contact-item": AfContactItem;
1256
3709
  "af-container": AfContainer;
1257
- "af-cta-section": AfCtaSection;
1258
3710
  "af-feature-accordion": AfFeatureAccordion;
3711
+ "af-feature-card": AfFeatureCard;
3712
+ "af-feature-grid": AfFeatureGrid;
3713
+ "af-fieldset": AfFieldset;
1259
3714
  "af-footer": AfFooter;
1260
3715
  "af-footer-column": AfFooterColumn;
1261
3716
  "af-footer-link": AfFooterLink;
3717
+ "af-grid-callout": AfGridCallout;
1262
3718
  "af-heading": AfHeading;
1263
3719
  "af-hero-section": AfHeroSection;
3720
+ "af-icon": AfIcon;
3721
+ "af-icon-box": AfIconBox;
1264
3722
  "af-icon-button": AfIconButton;
3723
+ "af-icon-text": AfIconText;
3724
+ "af-illustrated-card": AfIllustratedCard;
3725
+ "af-image": AfImage;
3726
+ "af-in-page-banner": AfInPageBanner;
3727
+ "af-input": AfInput;
1265
3728
  "af-logo": AfLogo;
1266
3729
  "af-logo-well": AfLogoWell;
3730
+ "af-nav-card": AfNavCard;
1267
3731
  "af-nav-item": AfNavItem;
3732
+ "af-nav-menu": AfNavMenu;
3733
+ "af-nav-menu-nest": AfNavMenuNest;
1268
3734
  "af-navbar": AfNavbar;
3735
+ "af-number-badge": AfNumberBadge;
3736
+ "af-progress-line": AfProgressLine;
3737
+ "af-radio": AfRadio;
1269
3738
  "af-section": AfSection;
1270
3739
  "af-social-link": AfSocialLink;
3740
+ "af-split-section": AfSplitSection;
3741
+ "af-switch": AfSwitch;
3742
+ "af-tab": AfTab;
3743
+ "af-tab-bar": AfTabBar;
3744
+ "af-tag": AfTag;
1271
3745
  "af-testimonial": AfTestimonial;
1272
3746
  "af-testimonial-carousel": AfTestimonialCarousel;
1273
3747
  "af-testimonial-stat": AfTestimonialStat;
1274
3748
  "af-text": AfText;
3749
+ "af-text-image": AfTextImage;
3750
+ "af-text-image-nest": AfTextImageNest;
3751
+ "af-textarea": AfTextarea;
1275
3752
  "af-typography-lockup": AfTypographyLockup;
3753
+ "af-video-container": AfVideoContainer;
1276
3754
  }
1277
3755
  }
1278
3756
  export { LocalJSX as JSX };
@@ -1284,11 +3762,30 @@ declare module "@stencil/core" {
1284
3762
  * Useful for images, videos, or any content that needs to maintain specific proportions.
1285
3763
  */
1286
3764
  "af-aspect-ratio": LocalJSX.AfAspectRatio & JSXBase.HTMLAttributes<HTMLAfAspectRatioElement>;
3765
+ /**
3766
+ * Button component that inherits colors from theme context.
3767
+ * Colors are determined by the parent theme (af-section, af-hero-section, etc.)
3768
+ * via CSS custom properties.
3769
+ */
1287
3770
  "af-button": LocalJSX.AfButton & JSXBase.HTMLAttributes<HTMLAfButtonElement>;
1288
3771
  "af-button-group": LocalJSX.AfButtonGroup & JSXBase.HTMLAttributes<HTMLAfButtonGroupElement>;
3772
+ /**
3773
+ * Card atom component - a themed container with consistent styling.
3774
+ * Provides theme context to children via CSS custom properties.
3775
+ * This is a base building block used by molecule components like
3776
+ * af-feature-card and af-illustrated-card.
3777
+ */
1289
3778
  "af-card": LocalJSX.AfCard & JSXBase.HTMLAttributes<HTMLAfCardElement>;
1290
3779
  /**
1291
- * Infinite scrolling carousel for client logos
3780
+ * Checkbox component for selecting multiple options.
3781
+ * Supports checked, unchecked, and indeterminate states.
3782
+ */
3783
+ "af-checkbox": LocalJSX.AfCheckbox & JSXBase.HTMLAttributes<HTMLAfCheckboxElement>;
3784
+ /**
3785
+ * Infinite scrolling carousel for client logos.
3786
+ * This is a section-level component that spans full width.
3787
+ * It supports theming via the `theme` prop.
3788
+ * For headlines, use a separate TypographyLockup or Heading component above this carousel.
1292
3789
  */
1293
3790
  "af-client-carousel": LocalJSX.AfClientCarousel & JSXBase.HTMLAttributes<HTMLAfClientCarouselElement>;
1294
3791
  "af-color-swatch": LocalJSX.AfColorSwatch & JSXBase.HTMLAttributes<HTMLAfColorSwatchElement>;
@@ -1303,16 +3800,38 @@ declare module "@stencil/core" {
1303
3800
  */
1304
3801
  "af-container": LocalJSX.AfContainer & JSXBase.HTMLAttributes<HTMLAfContainerElement>;
1305
3802
  /**
1306
- * Call-to-action section component with illustration and decorative background
1307
- * Styled to match the affinda.com "See what our AI agents can do for you" section
3803
+ * Feature accordion component with expandable items and accompanying image.
3804
+ * Used for showcasing product features with visual examples.
3805
+ * Features auto-cycling through items with a progress timer.
3806
+ * **Must be wrapped in a Section component** to inherit theme styling.
3807
+ * The component automatically adapts colors based on the parent Section's theme.
3808
+ * @example ```tsx
3809
+ * <Section theme="inkwell">
3810
+ * <FeatureAccordion heading="Features" items={...} />
3811
+ * </Section>
3812
+ * ```
1308
3813
  */
1309
- "af-cta-section": LocalJSX.AfCtaSection & JSXBase.HTMLAttributes<HTMLAfCtaSectionElement>;
3814
+ "af-feature-accordion": LocalJSX.AfFeatureAccordion & JSXBase.HTMLAttributes<HTMLAfFeatureAccordionElement>;
1310
3815
  /**
1311
- * Feature accordion component with expandable items and accompanying image
1312
- * Used for showcasing product features with visual examples
1313
- * Features auto-cycling through items with a progress timer
3816
+ * Feature Card molecule component that combines a card with an image.
3817
+ * Two layout modes:
3818
+ * - `standard`: Theme background with text at top and image at bottom
3819
+ * - `full-bleed`: Image covers entire card with text overlay at bottom
3820
+ * Responsive: Automatically adapts to mobile viewport (≤768px).
3821
+ * Uses af-card atom internally and af-typography-lockup for text hierarchy.
1314
3822
  */
1315
- "af-feature-accordion": LocalJSX.AfFeatureAccordion & JSXBase.HTMLAttributes<HTMLAfFeatureAccordionElement>;
3823
+ "af-feature-card": LocalJSX.AfFeatureCard & JSXBase.HTMLAttributes<HTMLAfFeatureCardElement>;
3824
+ /**
3825
+ * Feature Grid component - CSS Grid container for feature cards.
3826
+ * Desktop: Configurable columns (1-4)
3827
+ * Mobile: List (stacked), horizontal scroll, or 2-column grid
3828
+ */
3829
+ "af-feature-grid": LocalJSX.AfFeatureGrid & JSXBase.HTMLAttributes<HTMLAfFeatureGridElement>;
3830
+ /**
3831
+ * Fieldset component for grouping related form controls.
3832
+ * Supports vertical and horizontal layouts with an optional legend/heading.
3833
+ */
3834
+ "af-fieldset": LocalJSX.AfFieldset & JSXBase.HTMLAttributes<HTMLAfFieldsetElement>;
1316
3835
  /**
1317
3836
  * Footer component for marketing pages
1318
3837
  * Provides a flexible, slot-based layout for footer content
@@ -1329,12 +3848,116 @@ declare module "@stencil/core" {
1329
3848
  * Styled link for use in footer navigation columns
1330
3849
  */
1331
3850
  "af-footer-link": LocalJSX.AfFooterLink & JSXBase.HTMLAttributes<HTMLAfFooterLinkElement>;
3851
+ /**
3852
+ * GridCallout organism - a marketing section combining an optional pill-shaped image
3853
+ * with a grid of IconText feature items.
3854
+ * Composes:
3855
+ * - Pill-shaped image container (optional)
3856
+ * - Heading via af-typography-lockup
3857
+ * - Grid of af-icon-text items
3858
+ * - Optional CTA button
3859
+ * Inherits theme colors from parent af-section via CSS custom properties.
3860
+ * @example ```html
3861
+ * <af-section theme="mist-green">
3862
+ * <af-grid-callout image-src="/team.jpg" image-alt="Team photo">
3863
+ * Affinda blends AI and engineering
3864
+ * <span slot="description">Optional description text.</span>
3865
+ *
3866
+ * <af-icon-text slot="items" icon="settings">
3867
+ * Feature One
3868
+ * <span slot="description">Feature description.</span>
3869
+ * </af-icon-text>
3870
+ *
3871
+ * <af-button slot="cta" variant="primary">Learn more</af-button>
3872
+ * </af-grid-callout>
3873
+ * </af-section>
3874
+ * ```
3875
+ */
3876
+ "af-grid-callout": LocalJSX.AfGridCallout & JSXBase.HTMLAttributes<HTMLAfGridCalloutElement>;
3877
+ /**
3878
+ * Heading component that inherits color from theme context.
3879
+ * Color is determined by the parent theme (af-section, af-hero-section, etc.)
3880
+ * via CSS custom properties.
3881
+ */
1332
3882
  "af-heading": LocalJSX.AfHeading & JSXBase.HTMLAttributes<HTMLAfHeadingElement>;
1333
3883
  /**
1334
- * Hero section component for marketing pages
3884
+ * Hero section component for marketing pages.
3885
+ * Uses TypographyLockup internally to handle heading, description, and button layout.
3886
+ * Sets theme context for all child components via CSS custom properties.
1335
3887
  */
1336
3888
  "af-hero-section": LocalJSX.AfHeroSection & JSXBase.HTMLAttributes<HTMLAfHeroSectionElement>;
3889
+ /**
3890
+ * Icon component that displays SVG icons from the Affinda icon library.
3891
+ * Icons inherit color from their parent via currentColor.
3892
+ * Icons are bundled inline, so no runtime fetching is required.
3893
+ * This ensures icons work reliably in all bundler contexts.
3894
+ * @example ```html
3895
+ * <af-icon name="arrow-right" size="24"></af-icon>
3896
+ * ```
3897
+ */
3898
+ "af-icon": LocalJSX.AfIcon & JSXBase.HTMLAttributes<HTMLAfIconElement>;
3899
+ /**
3900
+ * IconBox atom - a themed container for displaying an icon with a rounded background.
3901
+ * Inherits theme colors from parent Section via CSS custom properties:
3902
+ * - Background uses `--af-background-contrast`
3903
+ * - Icon color uses `--af-background-icon-default`
3904
+ * @example ```html
3905
+ * <af-icon-box icon="settings" size="default"></af-icon-box>
3906
+ * ```
3907
+ */
3908
+ "af-icon-box": LocalJSX.AfIconBox & JSXBase.HTMLAttributes<HTMLAfIconBoxElement>;
1337
3909
  "af-icon-button": LocalJSX.AfIconButton & JSXBase.HTMLAttributes<HTMLAfIconButtonElement>;
3910
+ /**
3911
+ * IconText molecule - combines an IconBox with a TypographyLockup for feature items.
3912
+ * Composes:
3913
+ * - af-icon-box: Themed icon container
3914
+ * - af-typography-lockup: Heading, description, and button slots
3915
+ * Inherits theme colors from parent Section via CSS custom properties.
3916
+ * @example ```html
3917
+ * <af-icon-text icon="settings" heading-size="4">
3918
+ * Feature Heading
3919
+ * <span slot="description">Feature description text.</span>
3920
+ * <af-button slot="buttons" variant="tertiary">Learn more</af-button>
3921
+ * </af-icon-text>
3922
+ * ```
3923
+ */
3924
+ "af-icon-text": LocalJSX.AfIconText & JSXBase.HTMLAttributes<HTMLAfIconTextElement>;
3925
+ /**
3926
+ * Illustrated Card molecule component that combines a card with an illustration.
3927
+ * Uses a theme background with text at top and an illustration from
3928
+ * @affinda /illustrations at the bottom.
3929
+ * Uses af-card atom internally and af-typography-lockup for text hierarchy.
3930
+ */
3931
+ "af-illustrated-card": LocalJSX.AfIllustratedCard & JSXBase.HTMLAttributes<HTMLAfIllustratedCardElement>;
3932
+ /**
3933
+ * A styled image container with rounded corners and a subtle inset border.
3934
+ * Provides consistent image styling across the design system.
3935
+ */
3936
+ "af-image": LocalJSX.AfImage & JSXBase.HTMLAttributes<HTMLAfImageElement>;
3937
+ /**
3938
+ * In-page banner component for call-to-action content.
3939
+ * A banner card with illustration, heading, description, and action buttons.
3940
+ * Typically placed inside a neutral (white) Section to show off its themed background.
3941
+ * The component has its own theme prop to control its background color and styling.
3942
+ * **Illustration Usage:**
3943
+ * Use `illustrationUrl` to pass an illustration image URL. For theme-matched illustrations,
3944
+ * use `getIllustrationUrlByScene()` from `@affinda/illustrations` in your consuming app:
3945
+ * ```tsx
3946
+ * import { getIllustrationUrlByScene } from '@affinda/illustrations';
3947
+ * <InPageBanner
3948
+ * theme="inkwell"
3949
+ * illustrationUrl={getIllustrationUrlByScene('automate', 'inkwell')}
3950
+ * ...
3951
+ * />
3952
+ * ```
3953
+ * Alternatively, use the `illustration` slot for completely custom content.
3954
+ */
3955
+ "af-in-page-banner": LocalJSX.AfInPageBanner & JSXBase.HTMLAttributes<HTMLAfInPageBannerElement>;
3956
+ /**
3957
+ * Input field component with label, description, and error states.
3958
+ * Supports various input types and validation states.
3959
+ */
3960
+ "af-input": LocalJSX.AfInput & JSXBase.HTMLAttributes<HTMLAfInputElement>;
1338
3961
  /**
1339
3962
  * Affinda logo component
1340
3963
  */
@@ -1343,19 +3966,75 @@ declare module "@stencil/core" {
1343
3966
  * A rounded container for displaying client logos
1344
3967
  */
1345
3968
  "af-logo-well": LocalJSX.AfLogoWell & JSXBase.HTMLAttributes<HTMLAfLogoWellElement>;
3969
+ /**
3970
+ * A navigation card component for featured article content in mega-menu dropdowns.
3971
+ * Displays an image with a gradient overlay and headline text.
3972
+ * **Usage:**
3973
+ * - Place in the `sidebar` slot of NavMenuNest
3974
+ * - Provide imageSrc, heading, and href props
3975
+ * **Hover behavior:**
3976
+ * - Slight scale effect (1.02)
3977
+ * - Headline underline
3978
+ */
3979
+ "af-nav-card": LocalJSX.AfNavCard & JSXBase.HTMLAttributes<HTMLAfNavCardElement>;
1346
3980
  /**
1347
3981
  * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
1348
3982
  * Supports multiple hierarchy levels, variants, and states (active, hover).
1349
3983
  */
1350
3984
  "af-nav-item": LocalJSX.AfNavItem & JSXBase.HTMLAttributes<HTMLAfNavItemElement>;
3985
+ /**
3986
+ * A grouped navigation menu component with a heading.
3987
+ * Used in mega-menu dropdowns to group related navigation items.
3988
+ */
3989
+ "af-nav-menu": LocalJSX.AfNavMenu & JSXBase.HTMLAttributes<HTMLAfNavMenuElement>;
3990
+ /**
3991
+ * A mega-menu dropdown panel component.
3992
+ * Acts as a container for NavMenu columns and optionally a sidebar.
3993
+ * Used as the dropdown content for navbar items.
3994
+ * **Slots:**
3995
+ * - default: Place NavMenu components here - they will be displayed as columns
3996
+ * - sidebar: Optional sidebar content (NavMenu, NavCard, or any content)
3997
+ * **Example:**
3998
+ * ```html
3999
+ * <af-nav-menu-nest type="solutions" breakpoint="desktop">
4000
+ * <af-nav-menu heading="Industries">...</af-nav-menu>
4001
+ * <af-nav-menu heading="Use Cases">...</af-nav-menu>
4002
+ * <af-nav-menu heading="Documents">...</af-nav-menu>
4003
+ * <af-nav-menu slot="sidebar" heading="Resume Parser">...</af-nav-menu>
4004
+ * </af-nav-menu-nest>
4005
+ * ```
4006
+ */
4007
+ "af-nav-menu-nest": LocalJSX.AfNavMenuNest & JSXBase.HTMLAttributes<HTMLAfNavMenuNestElement>;
1351
4008
  /**
1352
4009
  * A full-width navigation bar component that provides the main site navigation.
1353
4010
  * Features a pill-shaped container with logo, navigation links, and action buttons.
1354
- * Includes mobile hamburger menu.
4011
+ * Includes mobile hamburger menu and support for mega-menu dropdowns.
4012
+ * The logo slot can be used to provide a custom logo. If no logo is provided,
4013
+ * the default Affinda logo will be displayed.
1355
4014
  */
1356
4015
  "af-navbar": LocalJSX.AfNavbar & JSXBase.HTMLAttributes<HTMLAfNavbarElement>;
1357
4016
  /**
1358
- * Section layout component for consistent spacing and backgrounds
4017
+ * NumberBadge displays numbers 1-10 in either a filled circle or text-only style.
4018
+ * Perfect for numbered lists, step indicators, or ordered content.
4019
+ * @example ```html
4020
+ * <af-number-badge number="1" variant="inCircle" size="48"></af-number-badge>
4021
+ * <af-number-badge number="5" variant="outlined" size="32"></af-number-badge>
4022
+ * ```
4023
+ */
4024
+ "af-number-badge": LocalJSX.AfNumberBadge & JSXBase.HTMLAttributes<HTMLAfNumberBadgeElement>;
4025
+ /**
4026
+ * Progress Line atom component for displaying scroll or completion progress.
4027
+ * Shows a horizontal bar with a filled portion indicating progress.
4028
+ * Used primarily for carousel scroll indicators.
4029
+ */
4030
+ "af-progress-line": LocalJSX.AfProgressLine & JSXBase.HTMLAttributes<HTMLAfProgressLineElement>;
4031
+ /**
4032
+ * Radio component for selecting a single option from a group.
4033
+ */
4034
+ "af-radio": LocalJSX.AfRadio & JSXBase.HTMLAttributes<HTMLAfRadioElement>;
4035
+ /**
4036
+ * Section layout component for consistent spacing and backgrounds.
4037
+ * Sets theme context for all child components via CSS custom properties.
1359
4038
  */
1360
4039
  "af-section": LocalJSX.AfSection & JSXBase.HTMLAttributes<HTMLAfSectionElement>;
1361
4040
  /**
@@ -1363,11 +4042,108 @@ declare module "@stencil/core" {
1363
4042
  * Circular bordered icon link for social media profiles
1364
4043
  */
1365
4044
  "af-social-link": LocalJSX.AfSocialLink & JSXBase.HTMLAttributes<HTMLAfSocialLinkElement>;
4045
+ /**
4046
+ * Split Section component for layouts with two-tone backgrounds.
4047
+ * Creates a vertical split with different themes for top and bottom halves.
4048
+ * Useful for content that visually spans across two themed areas.
4049
+ * Uses a CSS linear-gradient for the split background effect.
4050
+ */
4051
+ "af-split-section": LocalJSX.AfSplitSection & JSXBase.HTMLAttributes<HTMLAfSplitSectionElement>;
4052
+ /**
4053
+ * Switch component for toggling between on and off states.
4054
+ */
4055
+ "af-switch": LocalJSX.AfSwitch & JSXBase.HTMLAttributes<HTMLAfSwitchElement>;
4056
+ /**
4057
+ * Tab component for use within a TabBar.
4058
+ * Represents an individual selectable tab with support for icons and number badges.
4059
+ * @example ```html
4060
+ * <af-tab label="Overview" active></af-tab>
4061
+ * <af-tab label="Details">
4062
+ * <af-icon slot="icon" name="document"></af-icon>
4063
+ * </af-tab>
4064
+ * <af-tab label="Step 1">
4065
+ * <af-number-badge slot="number" number="1"></af-number-badge>
4066
+ * </af-tab>
4067
+ * ```
4068
+ */
4069
+ "af-tab": LocalJSX.AfTab & JSXBase.HTMLAttributes<HTMLAfTabElement>;
4070
+ /**
4071
+ * TabBar component that contains and manages a group of tabs.
4072
+ * Provides horizontal layout, keyboard navigation, and consistent styling.
4073
+ * @example ```html
4074
+ * <af-tab-bar shape="square" breakpoint="desktop">
4075
+ * <af-tab label="Overview" active value="overview"></af-tab>
4076
+ * <af-tab label="Details" value="details"></af-tab>
4077
+ * <af-tab label="Settings" value="settings"></af-tab>
4078
+ * </af-tab-bar>
4079
+ * ```
4080
+ */
4081
+ "af-tab-bar": LocalJSX.AfTabBar & JSXBase.HTMLAttributes<HTMLAfTabBarElement>;
4082
+ /**
4083
+ * Tag displays a label in a styled container.
4084
+ * Perfect for categorization, topics, or metadata display.
4085
+ * @example ```html
4086
+ * <af-tag>AI</af-tag>
4087
+ * <af-tag size="small">Machine Learning</af-tag>
4088
+ * <af-tag size="large" variant="light">Document Processing</af-tag>
4089
+ * ```
4090
+ */
4091
+ "af-tag": LocalJSX.AfTag & JSXBase.HTMLAttributes<HTMLAfTagElement>;
1366
4092
  "af-testimonial": LocalJSX.AfTestimonial & JSXBase.HTMLAttributes<HTMLAfTestimonialElement>;
4093
+ /**
4094
+ * TestimonialCarousel - Carousel for displaying multiple customer testimonials.
4095
+ * Handles navigation between testimonials with progress indicator.
4096
+ * Wrap in Section/Container for proper page layout and theming.
4097
+ */
1367
4098
  "af-testimonial-carousel": LocalJSX.AfTestimonialCarousel & JSXBase.HTMLAttributes<HTMLAfTestimonialCarouselElement>;
1368
4099
  "af-testimonial-stat": LocalJSX.AfTestimonialStat & JSXBase.HTMLAttributes<HTMLAfTestimonialStatElement>;
4100
+ /**
4101
+ * Text/body component that inherits color from theme context.
4102
+ * Color is determined by the parent theme (af-section, af-hero-section, etc.)
4103
+ * via CSS custom properties.
4104
+ */
1369
4105
  "af-text": LocalJSX.AfText & JSXBase.HTMLAttributes<HTMLAfTextElement>;
4106
+ /**
4107
+ * TextImage composite component that combines typography content with an image.
4108
+ * Supports various layout configurations with image position and proportion options.
4109
+ */
4110
+ "af-text-image": LocalJSX.AfTextImage & JSXBase.HTMLAttributes<HTMLAfTextImageElement>;
4111
+ /**
4112
+ * TextImageNest is a layout component that arranges multiple text-image content pieces
4113
+ * in various grid layouts with optional footer buttons.
4114
+ * This component inherits theming from a parent Section or theme-providing container.
4115
+ * Wrap it in an af-section to apply themes.
4116
+ * Supports multiple layout variants:
4117
+ * - `single`: Full-width single item (side-by-side image + text)
4118
+ * - `grid-2`: 2-column grid with stacked items
4119
+ * - `grid-3`: 3-column grid with stacked items
4120
+ * - `grid-4`: 4-column grid with stacked items
4121
+ * - `stacked`: Alternating rows of side-by-side content
4122
+ */
4123
+ "af-text-image-nest": LocalJSX.AfTextImageNest & JSXBase.HTMLAttributes<HTMLAfTextImageNestElement>;
4124
+ /**
4125
+ * Textarea component for multi-line text input with label, description, and error states.
4126
+ */
4127
+ "af-textarea": LocalJSX.AfTextarea & JSXBase.HTMLAttributes<HTMLAfTextareaElement>;
1370
4128
  "af-typography-lockup": LocalJSX.AfTypographyLockup & JSXBase.HTMLAttributes<HTMLAfTypographyLockupElement>;
4129
+ /**
4130
+ * Video Container molecule component for showcasing video content.
4131
+ * Uses slots for typography lockups above and below the video.
4132
+ * When used inside af-split-section, the top slot inherits the top theme
4133
+ * and the bottom slot inherits the bottom theme for correct colors.
4134
+ * @example ```html
4135
+ * <af-split-section top-theme="mist-green" bottom-theme="white">
4136
+ * <af-video-container video-thumbnail-url="/path/to/thumbnail.jpg">
4137
+ * <af-typography-lockup slot="top" text-alignment="center" heading-size="2">
4138
+ * <af-heading level="2">Watch our product demo</af-heading>
4139
+ * <af-text slot="description">See how Affinda transforms your workflow</af-text>
4140
+ * <af-button slot="buttons" variant="primary">Get Started</af-button>
4141
+ * </af-typography-lockup>
4142
+ * </af-video-container>
4143
+ * </af-split-section>
4144
+ * ```
4145
+ */
4146
+ "af-video-container": LocalJSX.AfVideoContainer & JSXBase.HTMLAttributes<HTMLAfVideoContainerElement>;
1371
4147
  }
1372
4148
  }
1373
4149
  }