@affinda/wc 0.0.15 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (760) hide show
  1. package/dist/affinda/af-aspect-ratio.entry.esm.js.map +1 -1
  2. package/dist/affinda/af-button.entry.esm.js.map +1 -1
  3. package/dist/affinda/af-card.entry.esm.js.map +1 -1
  4. package/dist/affinda/af-checkbox.entry.esm.js.map +1 -0
  5. package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -1
  6. package/dist/affinda/af-feature-accordion.entry.esm.js.map +1 -1
  7. package/dist/affinda/af-feature-card.entry.esm.js.map +1 -0
  8. package/dist/affinda/af-feature-grid.entry.esm.js.map +1 -0
  9. package/dist/affinda/af-fieldset.entry.esm.js.map +1 -0
  10. package/dist/affinda/af-grid-callout.entry.esm.js.map +1 -0
  11. package/dist/affinda/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.esm.js.map +1 -1
  12. package/dist/affinda/af-hero-section.entry.esm.js.map +1 -1
  13. package/dist/affinda/af-icon-box.entry.esm.js.map +1 -0
  14. package/dist/affinda/af-icon-button.entry.esm.js.map +1 -1
  15. package/dist/affinda/af-icon-text.entry.esm.js.map +1 -0
  16. package/dist/affinda/af-icon.entry.esm.js.map +1 -0
  17. package/dist/affinda/af-illustrated-card.entry.esm.js.map +1 -0
  18. package/dist/affinda/af-image.entry.esm.js.map +1 -0
  19. package/dist/affinda/af-in-page-banner.entry.esm.js.map +1 -0
  20. package/dist/affinda/af-input.entry.esm.js.map +1 -0
  21. package/dist/affinda/af-logo-well.entry.esm.js.map +1 -1
  22. package/dist/affinda/af-nav-card.entry.esm.js.map +1 -0
  23. package/dist/affinda/af-nav-menu-nest.entry.esm.js.map +1 -0
  24. package/dist/affinda/af-nav-menu.entry.esm.js.map +1 -0
  25. package/dist/affinda/af-number-badge.entry.esm.js.map +1 -0
  26. package/dist/affinda/af-progress-line.entry.esm.js.map +1 -0
  27. package/dist/affinda/af-radio.entry.esm.js.map +1 -0
  28. package/dist/affinda/af-section.entry.esm.js.map +1 -1
  29. package/dist/affinda/af-split-section.entry.esm.js.map +1 -0
  30. package/dist/affinda/af-switch.entry.esm.js.map +1 -0
  31. package/dist/affinda/af-tab-bar.entry.esm.js.map +1 -0
  32. package/dist/affinda/af-tab.entry.esm.js.map +1 -0
  33. package/dist/affinda/af-tag.entry.esm.js.map +1 -0
  34. package/dist/affinda/af-testimonial-carousel.entry.esm.js.map +1 -1
  35. package/dist/affinda/af-testimonial-stat.entry.esm.js.map +1 -1
  36. package/dist/affinda/af-testimonial.entry.esm.js.map +1 -1
  37. package/dist/affinda/af-text-image-nest.entry.esm.js.map +1 -0
  38. package/dist/affinda/af-text-image.entry.esm.js.map +1 -0
  39. package/dist/affinda/af-textarea.entry.esm.js.map +1 -0
  40. package/dist/affinda/af-typography-lockup.entry.esm.js.map +1 -1
  41. package/dist/affinda/af-video-container.entry.esm.js.map +1 -0
  42. package/dist/affinda/affinda.css +1 -1
  43. package/dist/affinda/affinda.esm.js +1 -1
  44. package/dist/affinda/index.esm.js +1 -1
  45. package/dist/affinda/index.esm.js.map +1 -1
  46. package/dist/affinda/p-0cd160a4.entry.js +2 -0
  47. package/dist/affinda/p-0cd160a4.entry.js.map +1 -0
  48. package/dist/affinda/p-10801ee1.entry.js +2 -0
  49. package/dist/affinda/p-10801ee1.entry.js.map +1 -0
  50. package/dist/affinda/p-1d65fd18.entry.js +2 -0
  51. package/dist/affinda/p-1d65fd18.entry.js.map +1 -0
  52. package/dist/affinda/p-1d9e532f.entry.js +2 -0
  53. package/dist/affinda/p-231ba1d0.entry.js +2 -0
  54. package/dist/affinda/p-231ba1d0.entry.js.map +1 -0
  55. package/dist/affinda/p-2b4dc22c.entry.js +2 -0
  56. package/dist/affinda/p-2b4dc22c.entry.js.map +1 -0
  57. package/dist/affinda/{p-fb4e3a8d.entry.js → p-31d4c1a4.entry.js} +2 -2
  58. package/dist/affinda/p-3d3c9f62.entry.js +2 -0
  59. package/dist/affinda/p-3d3c9f62.entry.js.map +1 -0
  60. package/dist/affinda/p-3f691578.entry.js +2 -0
  61. package/dist/affinda/p-3f691578.entry.js.map +1 -0
  62. package/dist/affinda/p-425253ee.entry.js +2 -0
  63. package/dist/affinda/{p-9071c2a7.entry.js.map → p-425253ee.entry.js.map} +1 -1
  64. package/dist/affinda/p-44b25840.entry.js +2 -0
  65. package/dist/affinda/p-44b25840.entry.js.map +1 -0
  66. package/dist/affinda/p-45e1923c.entry.js +2 -0
  67. package/dist/affinda/p-45e1923c.entry.js.map +1 -0
  68. package/dist/affinda/p-52ab3bf0.entry.js +2 -0
  69. package/dist/affinda/p-52ab3bf0.entry.js.map +1 -0
  70. package/dist/affinda/p-53ae16fe.entry.js +2 -0
  71. package/dist/affinda/p-53b5149d.entry.js +2 -0
  72. package/dist/affinda/p-53b5149d.entry.js.map +1 -0
  73. package/dist/affinda/p-57713942.entry.js +2 -0
  74. package/dist/affinda/p-57713942.entry.js.map +1 -0
  75. package/dist/affinda/p-5bbf2c8c.entry.js +2 -0
  76. package/dist/affinda/p-5bbf2c8c.entry.js.map +1 -0
  77. package/dist/affinda/p-697bf0b7.entry.js +2 -0
  78. package/dist/affinda/p-697bf0b7.entry.js.map +1 -0
  79. package/dist/affinda/p-6b2d0ff4.entry.js +2 -0
  80. package/dist/affinda/p-6b2d0ff4.entry.js.map +1 -0
  81. package/dist/affinda/p-71144002.entry.js +2 -0
  82. package/dist/affinda/p-71144002.entry.js.map +1 -0
  83. package/dist/affinda/{p-ec7721cc.entry.js → p-72f02343.entry.js} +2 -2
  84. package/dist/affinda/p-77bf8a81.entry.js +2 -0
  85. package/dist/affinda/p-77bf8a81.entry.js.map +1 -0
  86. package/dist/affinda/p-7f20fbe0.entry.js +2 -0
  87. package/dist/affinda/p-7f20fbe0.entry.js.map +1 -0
  88. package/dist/affinda/p-81571029.entry.js +2 -0
  89. package/dist/affinda/p-81571029.entry.js.map +1 -0
  90. package/dist/affinda/p-85a78bcf.entry.js +2 -0
  91. package/dist/affinda/p-85a78bcf.entry.js.map +1 -0
  92. package/dist/affinda/p-861f4f57.entry.js +2 -0
  93. package/dist/affinda/p-861f4f57.entry.js.map +1 -0
  94. package/dist/affinda/p-864778d0.entry.js +2 -0
  95. package/dist/affinda/p-864778d0.entry.js.map +1 -0
  96. package/dist/affinda/p-8ea22b5d.entry.js +2 -0
  97. package/dist/affinda/p-8ea22b5d.entry.js.map +1 -0
  98. package/dist/affinda/{p-bd30e86a.entry.js → p-96eac3af.entry.js} +2 -2
  99. package/dist/affinda/p-98901734.entry.js +2 -0
  100. package/dist/affinda/p-98901734.entry.js.map +1 -0
  101. package/dist/affinda/p-9f470d8b.entry.js +2 -0
  102. package/dist/affinda/p-9f470d8b.entry.js.map +1 -0
  103. package/dist/affinda/p-BmU_CFQ4.js +3 -0
  104. package/dist/affinda/p-BmU_CFQ4.js.map +1 -0
  105. package/dist/affinda/p-a36abb83.entry.js +2 -0
  106. package/dist/affinda/{p-fc2cb8d1.entry.js.map → p-a36abb83.entry.js.map} +1 -1
  107. package/dist/affinda/p-a4e4eb4d.entry.js +2 -0
  108. package/dist/affinda/{p-d3b2ab0e.entry.js.map → p-a4e4eb4d.entry.js.map} +1 -1
  109. package/dist/affinda/p-a6365e94.entry.js +2 -0
  110. package/dist/affinda/p-a6365e94.entry.js.map +1 -0
  111. package/dist/affinda/p-aaa28806.entry.js +2 -0
  112. package/dist/affinda/p-aaa28806.entry.js.map +1 -0
  113. package/dist/affinda/{p-806d129e.entry.js → p-acbbe39a.entry.js} +2 -2
  114. package/dist/affinda/p-b17735c9.entry.js +2 -0
  115. package/dist/affinda/p-b17735c9.entry.js.map +1 -0
  116. package/dist/affinda/p-b3b0ed0c.entry.js +2 -0
  117. package/dist/affinda/p-b3b0ed0c.entry.js.map +1 -0
  118. package/dist/affinda/p-be049760.entry.js +2 -0
  119. package/dist/affinda/p-be049760.entry.js.map +1 -0
  120. package/dist/affinda/p-c0ee2420.entry.js +2 -0
  121. package/dist/affinda/p-c0ee2420.entry.js.map +1 -0
  122. package/dist/affinda/{p-3a9646e6.entry.js → p-c11088fa.entry.js} +2 -2
  123. package/dist/affinda/p-c298b370.entry.js +2 -0
  124. package/dist/affinda/p-c298b370.entry.js.map +1 -0
  125. package/dist/affinda/p-c3e31251.entry.js +2 -0
  126. package/dist/affinda/p-c3e31251.entry.js.map +1 -0
  127. package/dist/affinda/p-ce3356f1.entry.js +2 -0
  128. package/dist/affinda/p-ce3356f1.entry.js.map +1 -0
  129. package/dist/affinda/p-df148383.entry.js +2 -0
  130. package/dist/affinda/{p-350ac7a5.entry.js.map → p-df148383.entry.js.map} +1 -1
  131. package/dist/affinda/{p-f8ac0120.entry.js → p-e5af21c2.entry.js} +2 -2
  132. package/dist/affinda/p-e5d9913c.entry.js +2 -0
  133. package/dist/affinda/p-e5d9913c.entry.js.map +1 -0
  134. package/dist/affinda/p-ea06c83b.entry.js +2 -0
  135. package/dist/affinda/p-ea06c83b.entry.js.map +1 -0
  136. package/dist/affinda/p-f45b0060.entry.js +2 -0
  137. package/dist/affinda/{p-050f98cd.entry.js.map → p-f45b0060.entry.js.map} +1 -1
  138. package/dist/cjs/af-aspect-ratio.cjs.entry.js +2 -2
  139. package/dist/cjs/af-aspect-ratio.entry.cjs.js.map +1 -1
  140. package/dist/cjs/af-button-group.cjs.entry.js +2 -2
  141. package/dist/cjs/af-button.cjs.entry.js +25 -12
  142. package/dist/cjs/af-button.entry.cjs.js.map +1 -1
  143. package/dist/cjs/af-card.cjs.entry.js +17 -7
  144. package/dist/cjs/af-card.entry.cjs.js.map +1 -1
  145. package/dist/cjs/af-checkbox.cjs.entry.js +58 -0
  146. package/dist/cjs/af-checkbox.entry.cjs.js.map +1 -0
  147. package/dist/cjs/af-client-carousel.cjs.entry.js +5 -7
  148. package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -1
  149. package/dist/cjs/af-color-swatch.cjs.entry.js +1 -1
  150. package/dist/cjs/af-contact-item.cjs.entry.js +2 -2
  151. package/dist/cjs/af-container.cjs.entry.js +1 -1
  152. package/dist/cjs/af-feature-accordion.cjs.entry.js +4 -4
  153. package/dist/cjs/af-feature-accordion.entry.cjs.js.map +1 -1
  154. package/dist/cjs/af-feature-card.cjs.entry.js +59 -0
  155. package/dist/cjs/af-feature-card.entry.cjs.js.map +1 -0
  156. package/dist/cjs/af-feature-grid.cjs.entry.js +93 -0
  157. package/dist/cjs/af-feature-grid.entry.cjs.js.map +1 -0
  158. package/dist/cjs/af-fieldset.cjs.entry.js +37 -0
  159. package/dist/cjs/af-fieldset.entry.cjs.js.map +1 -0
  160. package/dist/cjs/af-footer-column.cjs.entry.js +2 -2
  161. package/dist/cjs/af-footer-link.cjs.entry.js +2 -2
  162. package/dist/cjs/af-footer.cjs.entry.js +2 -2
  163. package/dist/cjs/af-grid-callout.cjs.entry.js +51 -0
  164. package/dist/cjs/af-grid-callout.entry.cjs.js.map +1 -0
  165. package/dist/cjs/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.cjs.js.map +1 -1
  166. package/dist/cjs/af-heading_5.cjs.entry.js +67 -27
  167. package/dist/cjs/af-hero-section.cjs.entry.js +11 -5
  168. package/dist/cjs/af-hero-section.entry.cjs.js.map +1 -1
  169. package/dist/cjs/af-icon-box.cjs.entry.js +30 -0
  170. package/dist/cjs/af-icon-box.entry.cjs.js.map +1 -0
  171. package/dist/cjs/af-icon-button.cjs.entry.js +6 -3
  172. package/dist/cjs/af-icon-button.entry.cjs.js.map +1 -1
  173. package/dist/cjs/af-icon-text.cjs.entry.js +36 -0
  174. package/dist/cjs/af-icon-text.entry.cjs.js.map +1 -0
  175. package/dist/cjs/af-icon.cjs.entry.js +352 -0
  176. package/dist/cjs/af-icon.entry.cjs.js.map +1 -0
  177. package/dist/cjs/af-illustrated-card.cjs.entry.js +36 -0
  178. package/dist/cjs/af-illustrated-card.entry.cjs.js.map +1 -0
  179. package/dist/cjs/af-image.cjs.entry.js +18 -0
  180. package/dist/cjs/af-image.entry.cjs.js.map +1 -0
  181. package/dist/cjs/af-in-page-banner.cjs.entry.js +47 -0
  182. package/dist/cjs/af-in-page-banner.entry.cjs.js.map +1 -0
  183. package/dist/cjs/af-input.cjs.entry.js +104 -0
  184. package/dist/cjs/af-input.entry.cjs.js.map +1 -0
  185. package/dist/cjs/af-logo-well.cjs.entry.js +3 -3
  186. package/dist/cjs/af-logo-well.entry.cjs.js.map +1 -1
  187. package/dist/cjs/af-nav-card.cjs.entry.js +37 -0
  188. package/dist/cjs/af-nav-card.entry.cjs.js.map +1 -0
  189. package/dist/cjs/af-nav-menu-nest.cjs.entry.js +43 -0
  190. package/dist/cjs/af-nav-menu-nest.entry.cjs.js.map +1 -0
  191. package/dist/cjs/af-nav-menu.cjs.entry.js +41 -0
  192. package/dist/cjs/af-nav-menu.entry.cjs.js.map +1 -0
  193. package/dist/cjs/af-number-badge.cjs.entry.js +42 -0
  194. package/dist/cjs/af-number-badge.entry.cjs.js.map +1 -0
  195. package/dist/cjs/af-progress-line.cjs.entry.js +33 -0
  196. package/dist/cjs/af-progress-line.entry.cjs.js.map +1 -0
  197. package/dist/cjs/af-radio.cjs.entry.js +43 -0
  198. package/dist/cjs/af-radio.entry.cjs.js.map +1 -0
  199. package/dist/cjs/af-section.cjs.entry.js +6 -6
  200. package/dist/cjs/af-section.entry.cjs.js.map +1 -1
  201. package/dist/cjs/af-social-link.cjs.entry.js +2 -2
  202. package/dist/cjs/af-split-section.cjs.entry.js +41 -0
  203. package/dist/cjs/af-split-section.entry.cjs.js.map +1 -0
  204. package/dist/cjs/af-switch.cjs.entry.js +48 -0
  205. package/dist/cjs/af-switch.entry.cjs.js.map +1 -0
  206. package/dist/cjs/af-tab-bar.cjs.entry.js +88 -0
  207. package/dist/cjs/af-tab-bar.entry.cjs.js.map +1 -0
  208. package/dist/cjs/af-tab.cjs.entry.js +64 -0
  209. package/dist/cjs/af-tab.entry.cjs.js.map +1 -0
  210. package/dist/cjs/af-tag.cjs.entry.js +37 -0
  211. package/dist/cjs/af-tag.entry.cjs.js.map +1 -0
  212. package/dist/cjs/af-testimonial-carousel.cjs.entry.js +27 -15
  213. package/dist/cjs/af-testimonial-carousel.entry.cjs.js.map +1 -1
  214. package/dist/cjs/af-testimonial-stat.cjs.entry.js +3 -3
  215. package/dist/cjs/af-testimonial-stat.entry.cjs.js.map +1 -1
  216. package/dist/cjs/af-testimonial.cjs.entry.js +27 -3
  217. package/dist/cjs/af-testimonial.entry.cjs.js.map +1 -1
  218. package/dist/cjs/af-text-image-nest.cjs.entry.js +30 -0
  219. package/dist/cjs/af-text-image-nest.entry.cjs.js.map +1 -0
  220. package/dist/cjs/af-text-image.cjs.entry.js +63 -0
  221. package/dist/cjs/af-text-image.entry.cjs.js.map +1 -0
  222. package/dist/cjs/af-textarea.cjs.entry.js +93 -0
  223. package/dist/cjs/af-textarea.entry.cjs.js.map +1 -0
  224. package/dist/cjs/af-typography-lockup.cjs.entry.js +7 -7
  225. package/dist/cjs/af-typography-lockup.entry.cjs.js.map +1 -1
  226. package/dist/cjs/af-video-container.cjs.entry.js +35 -0
  227. package/dist/cjs/af-video-container.entry.cjs.js.map +1 -0
  228. package/dist/cjs/affinda.cjs.js +2 -2
  229. package/dist/cjs/{index-DfEVhbS6.js → index-ybEiHT0b.js} +130 -6
  230. package/dist/cjs/index-ybEiHT0b.js.map +1 -0
  231. package/dist/cjs/index.cjs.js +23 -1
  232. package/dist/cjs/index.cjs.js.map +1 -1
  233. package/dist/cjs/loader.cjs.js +2 -2
  234. package/dist/collection/assets/backgrounds/wave-overlay-inkwell.svg +3 -0
  235. package/dist/collection/assets/backgrounds/wave-overlay-mist-green.svg +3 -0
  236. package/dist/collection/assets/backgrounds/wave-overlay-soft-clay.svg +3 -0
  237. package/dist/collection/assets/backgrounds/wave-overlay-white-ivory.svg +3 -0
  238. package/dist/collection/collection-manifest.json +28 -2
  239. package/dist/collection/components/af-aspect-ratio/af-aspect-ratio.css +2 -0
  240. package/dist/collection/components/af-button/af-button.css +177 -64
  241. package/dist/collection/components/af-button/af-button.js +50 -42
  242. package/dist/collection/components/af-button/af-button.js.map +1 -1
  243. package/dist/collection/components/af-button-group/af-button-group.js +1 -1
  244. package/dist/collection/components/af-card/af-card.css +96 -65
  245. package/dist/collection/components/af-card/af-card.js +32 -33
  246. package/dist/collection/components/af-card/af-card.js.map +1 -1
  247. package/dist/collection/components/af-checkbox/af-checkbox.css +96 -0
  248. package/dist/collection/components/af-checkbox/af-checkbox.js +186 -0
  249. package/dist/collection/components/af-checkbox/af-checkbox.js.map +1 -0
  250. package/dist/collection/components/af-client-carousel/af-client-carousel.css +77 -32
  251. package/dist/collection/components/af-client-carousel/af-client-carousel.js +21 -33
  252. package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -1
  253. package/dist/collection/components/af-contact-item/af-contact-item.js +1 -1
  254. package/dist/collection/components/af-feature-accordion/af-feature-accordion.css +21 -35
  255. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js +15 -5
  256. package/dist/collection/components/af-feature-accordion/af-feature-accordion.js.map +1 -1
  257. package/dist/collection/components/af-feature-card/af-feature-card.css +219 -0
  258. package/dist/collection/components/af-feature-card/af-feature-card.js +199 -0
  259. package/dist/collection/components/af-feature-card/af-feature-card.js.map +1 -0
  260. package/dist/collection/components/af-feature-grid/af-feature-grid.css +119 -0
  261. package/dist/collection/components/af-feature-grid/af-feature-grid.js +156 -0
  262. package/dist/collection/components/af-feature-grid/af-feature-grid.js.map +1 -0
  263. package/dist/collection/components/af-fieldset/af-fieldset.css +61 -0
  264. package/dist/collection/components/af-fieldset/af-fieldset.js +109 -0
  265. package/dist/collection/components/af-fieldset/af-fieldset.js.map +1 -0
  266. package/dist/collection/components/af-footer/af-footer.js +1 -1
  267. package/dist/collection/components/af-footer-column/af-footer-column.js +1 -1
  268. package/dist/collection/components/af-footer-link/af-footer-link.js +1 -1
  269. package/dist/collection/components/af-grid-callout/af-grid-callout.css +191 -0
  270. package/dist/collection/components/af-grid-callout/af-grid-callout.js +191 -0
  271. package/dist/collection/components/af-grid-callout/af-grid-callout.js.map +1 -0
  272. package/dist/collection/components/af-heading/af-heading.css +25 -33
  273. package/dist/collection/components/af-heading/af-heading.js +8 -26
  274. package/dist/collection/components/af-heading/af-heading.js.map +1 -1
  275. package/dist/collection/components/af-hero-section/af-hero-section.css +118 -12
  276. package/dist/collection/components/af-hero-section/af-hero-section.js +102 -10
  277. package/dist/collection/components/af-hero-section/af-hero-section.js.map +1 -1
  278. package/dist/collection/components/af-icon/af-icon.css +28 -0
  279. package/dist/collection/components/af-icon/af-icon.js +116 -0
  280. package/dist/collection/components/af-icon/af-icon.js.map +1 -0
  281. package/dist/collection/components/af-icon-box/af-icon-box.css +36 -0
  282. package/dist/collection/components/af-icon-box/af-icon-box.js +97 -0
  283. package/dist/collection/components/af-icon-box/af-icon-box.js.map +1 -0
  284. package/dist/collection/components/af-icon-button/af-icon-button.css +42 -54
  285. package/dist/collection/components/af-icon-button/af-icon-button.js +8 -5
  286. package/dist/collection/components/af-icon-button/af-icon-button.js.map +1 -1
  287. package/dist/collection/components/af-icon-text/af-icon-text.css +43 -0
  288. package/dist/collection/components/af-icon-text/af-icon-text.js +150 -0
  289. package/dist/collection/components/af-icon-text/af-icon-text.js.map +1 -0
  290. package/dist/collection/components/af-illustrated-card/af-illustrated-card.css +99 -0
  291. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js +115 -0
  292. package/dist/collection/components/af-illustrated-card/af-illustrated-card.js.map +1 -0
  293. package/dist/collection/components/af-image/af-image.css +27 -0
  294. package/dist/collection/components/af-image/af-image.js +65 -0
  295. package/dist/collection/components/af-image/af-image.js.map +1 -0
  296. package/dist/collection/components/af-in-page-banner/af-in-page-banner.css +379 -0
  297. package/dist/collection/components/{af-cta-section/af-cta-section.js → af-in-page-banner/af-in-page-banner.js} +78 -17
  298. package/dist/collection/components/af-in-page-banner/af-in-page-banner.js.map +1 -0
  299. package/dist/collection/components/af-input/af-input.css +246 -0
  300. package/dist/collection/components/af-input/af-input.js +527 -0
  301. package/dist/collection/components/af-input/af-input.js.map +1 -0
  302. package/dist/collection/components/af-logo/af-logo.css +0 -7
  303. package/dist/collection/components/af-logo/af-logo.js +2 -55
  304. package/dist/collection/components/af-logo/af-logo.js.map +1 -1
  305. package/dist/collection/components/af-logo-well/af-logo-well.css +15 -4
  306. package/dist/collection/components/af-logo-well/af-logo-well.js +1 -1
  307. package/dist/collection/components/af-nav-card/af-nav-card.css +70 -0
  308. package/dist/collection/components/af-nav-card/af-nav-card.js +138 -0
  309. package/dist/collection/components/af-nav-card/af-nav-card.js.map +1 -0
  310. package/dist/collection/components/af-nav-item/af-nav-item.css +161 -28
  311. package/dist/collection/components/af-nav-item/af-nav-item.js +27 -0
  312. package/dist/collection/components/af-nav-item/af-nav-item.js.map +1 -1
  313. package/dist/collection/components/af-nav-menu/af-nav-menu.css +91 -0
  314. package/dist/collection/components/af-nav-menu/af-nav-menu.js +131 -0
  315. package/dist/collection/components/af-nav-menu/af-nav-menu.js.map +1 -0
  316. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.css +79 -0
  317. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js +129 -0
  318. package/dist/collection/components/af-nav-menu-nest/af-nav-menu-nest.js.map +1 -0
  319. package/dist/collection/components/af-navbar/af-navbar.css +91 -8
  320. package/dist/collection/components/af-navbar/af-navbar.js +84 -3
  321. package/dist/collection/components/af-navbar/af-navbar.js.map +1 -1
  322. package/dist/collection/components/af-number-badge/af-number-badge.css +30 -0
  323. package/dist/collection/components/af-number-badge/af-number-badge.js +131 -0
  324. package/dist/collection/components/af-number-badge/af-number-badge.js.map +1 -0
  325. package/dist/collection/components/af-progress-line/af-progress-line.css +44 -0
  326. package/dist/collection/components/af-progress-line/af-progress-line.js +86 -0
  327. package/dist/collection/components/af-progress-line/af-progress-line.js.map +1 -0
  328. package/dist/collection/components/af-radio/af-radio.css +97 -0
  329. package/dist/collection/components/af-radio/af-radio.js +150 -0
  330. package/dist/collection/components/af-radio/af-radio.js.map +1 -0
  331. package/dist/collection/components/af-section/af-section.css +230 -24
  332. package/dist/collection/components/af-section/af-section.js +11 -10
  333. package/dist/collection/components/af-section/af-section.js.map +1 -1
  334. package/dist/collection/components/af-social-link/af-social-link.js +1 -1
  335. package/dist/collection/components/af-split-section/af-split-section.css +46 -0
  336. package/dist/collection/components/af-split-section/af-split-section.js +145 -0
  337. package/dist/collection/components/af-split-section/af-split-section.js.map +1 -0
  338. package/dist/collection/components/af-switch/af-switch.css +104 -0
  339. package/dist/collection/components/af-switch/af-switch.js +155 -0
  340. package/dist/collection/components/af-switch/af-switch.js.map +1 -0
  341. package/dist/collection/components/af-tab/af-tab.css +182 -0
  342. package/dist/collection/components/af-tab/af-tab.js +251 -0
  343. package/dist/collection/components/af-tab/af-tab.js.map +1 -0
  344. package/dist/collection/components/af-tab-bar/af-tab-bar.css +87 -0
  345. package/dist/collection/components/af-tab-bar/af-tab-bar.js +171 -0
  346. package/dist/collection/components/af-tab-bar/af-tab-bar.js.map +1 -0
  347. package/dist/collection/components/af-tag/af-tag.css +92 -0
  348. package/dist/collection/components/af-tag/af-tag.js +126 -0
  349. package/dist/collection/components/af-tag/af-tag.js.map +1 -0
  350. package/dist/collection/components/af-testimonial/af-testimonial.css +30 -46
  351. package/dist/collection/components/af-testimonial/af-testimonial.js +118 -1
  352. package/dist/collection/components/af-testimonial/af-testimonial.js.map +1 -1
  353. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.css +6 -66
  354. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +48 -13
  355. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js.map +1 -1
  356. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.css +9 -16
  357. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
  358. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js.map +1 -1
  359. package/dist/collection/components/af-text/af-text.css +13 -36
  360. package/dist/collection/components/af-text/af-text.js +10 -28
  361. package/dist/collection/components/af-text/af-text.js.map +1 -1
  362. package/dist/collection/components/af-text-image/af-text-image.css +228 -0
  363. package/dist/collection/components/af-text-image/af-text-image.js +173 -0
  364. package/dist/collection/components/af-text-image/af-text-image.js.map +1 -0
  365. package/dist/collection/components/af-text-image-nest/af-text-image-nest.css +110 -0
  366. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js +71 -0
  367. package/dist/collection/components/af-text-image-nest/af-text-image-nest.js.map +1 -0
  368. package/dist/collection/components/af-textarea/af-textarea.css +175 -0
  369. package/dist/collection/components/af-textarea/af-textarea.js +443 -0
  370. package/dist/collection/components/af-textarea/af-textarea.js.map +1 -0
  371. package/dist/collection/components/af-typography-lockup/af-typography-lockup.css +126 -40
  372. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +5 -5
  373. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js.map +1 -1
  374. package/dist/collection/components/af-video-container/af-video-container.css +102 -0
  375. package/dist/collection/components/af-video-container/af-video-container.js +142 -0
  376. package/dist/collection/components/af-video-container/af-video-container.js.map +1 -0
  377. package/dist/collection/components.js +11 -0
  378. package/dist/collection/components.js.map +1 -1
  379. package/dist/components/af-aspect-ratio.js +1 -1
  380. package/dist/components/af-button-group.js +1 -1
  381. package/dist/components/af-button.js +1 -1
  382. package/dist/components/af-card.js +1 -39
  383. package/dist/components/af-card.js.map +1 -1
  384. package/dist/components/{af-cta-section.d.ts → af-checkbox.d.ts} +4 -4
  385. package/dist/components/af-checkbox.js +9 -0
  386. package/dist/components/af-checkbox.js.map +1 -0
  387. package/dist/components/af-client-carousel.js +6 -9
  388. package/dist/components/af-client-carousel.js.map +1 -1
  389. package/dist/components/af-color-swatch.js +1 -1
  390. package/dist/components/af-contact-item.js +2 -2
  391. package/dist/components/af-container.js +1 -1
  392. package/dist/components/af-feature-accordion.js +4 -4
  393. package/dist/components/af-feature-accordion.js.map +1 -1
  394. package/dist/components/af-feature-card.d.ts +11 -0
  395. package/dist/components/af-feature-card.js +9 -0
  396. package/dist/components/af-feature-card.js.map +1 -0
  397. package/dist/components/af-feature-grid.d.ts +11 -0
  398. package/dist/components/af-feature-grid.js +124 -0
  399. package/dist/components/af-feature-grid.js.map +1 -0
  400. package/dist/components/af-fieldset.d.ts +11 -0
  401. package/dist/components/af-fieldset.js +9 -0
  402. package/dist/components/af-fieldset.js.map +1 -0
  403. package/dist/components/af-footer-column.js +2 -2
  404. package/dist/components/af-footer-link.js +2 -2
  405. package/dist/components/af-footer.js +2 -2
  406. package/dist/components/af-grid-callout.d.ts +11 -0
  407. package/dist/components/af-grid-callout.js +82 -0
  408. package/dist/components/af-grid-callout.js.map +1 -0
  409. package/dist/components/af-heading.js +1 -1
  410. package/dist/components/af-hero-section.js +25 -9
  411. package/dist/components/af-hero-section.js.map +1 -1
  412. package/dist/components/af-icon-box.d.ts +11 -0
  413. package/dist/components/af-icon-box.js +9 -0
  414. package/dist/components/af-icon-box.js.map +1 -0
  415. package/dist/components/af-icon-button.js +1 -1
  416. package/dist/components/af-icon-text.d.ts +11 -0
  417. package/dist/components/af-icon-text.js +78 -0
  418. package/dist/components/af-icon-text.js.map +1 -0
  419. package/dist/components/af-icon.d.ts +11 -0
  420. package/dist/components/af-icon.js +9 -0
  421. package/dist/components/af-icon.js.map +1 -0
  422. package/dist/components/af-illustrated-card.d.ts +11 -0
  423. package/dist/components/af-illustrated-card.js +9 -0
  424. package/dist/components/af-illustrated-card.js.map +1 -0
  425. package/dist/components/af-image.d.ts +11 -0
  426. package/dist/components/af-image.js +9 -0
  427. package/dist/components/af-image.js.map +1 -0
  428. package/dist/components/af-in-page-banner.d.ts +11 -0
  429. package/dist/components/af-in-page-banner.js +82 -0
  430. package/dist/components/af-in-page-banner.js.map +1 -0
  431. package/dist/components/af-input.d.ts +11 -0
  432. package/dist/components/af-input.js +9 -0
  433. package/dist/components/af-input.js.map +1 -0
  434. package/dist/components/af-logo-well.js +3 -3
  435. package/dist/components/af-logo-well.js.map +1 -1
  436. package/dist/components/af-logo.js +1 -1
  437. package/dist/components/af-nav-card.d.ts +11 -0
  438. package/dist/components/af-nav-card.js +63 -0
  439. package/dist/components/af-nav-card.js.map +1 -0
  440. package/dist/components/af-nav-item.js +1 -1
  441. package/dist/components/af-nav-menu-nest.d.ts +11 -0
  442. package/dist/components/af-nav-menu-nest.js +67 -0
  443. package/dist/components/af-nav-menu-nest.js.map +1 -0
  444. package/dist/components/af-nav-menu.d.ts +11 -0
  445. package/dist/components/af-nav-menu.js +66 -0
  446. package/dist/components/af-nav-menu.js.map +1 -0
  447. package/dist/components/af-navbar.js +1 -1
  448. package/dist/components/af-number-badge.d.ts +11 -0
  449. package/dist/components/af-number-badge.js +66 -0
  450. package/dist/components/af-number-badge.js.map +1 -0
  451. package/dist/components/af-progress-line.d.ts +11 -0
  452. package/dist/components/af-progress-line.js +9 -0
  453. package/dist/components/af-progress-line.js.map +1 -0
  454. package/dist/components/af-radio.d.ts +11 -0
  455. package/dist/components/af-radio.js +9 -0
  456. package/dist/components/af-radio.js.map +1 -0
  457. package/dist/components/af-section.js +8 -8
  458. package/dist/components/af-section.js.map +1 -1
  459. package/dist/components/af-social-link.js +2 -2
  460. package/dist/components/af-split-section.d.ts +11 -0
  461. package/dist/components/af-split-section.js +71 -0
  462. package/dist/components/af-split-section.js.map +1 -0
  463. package/dist/components/af-switch.d.ts +11 -0
  464. package/dist/components/af-switch.js +9 -0
  465. package/dist/components/af-switch.js.map +1 -0
  466. package/dist/components/af-tab-bar.d.ts +11 -0
  467. package/dist/components/af-tab-bar.js +9 -0
  468. package/dist/components/af-tab-bar.js.map +1 -0
  469. package/dist/components/af-tab.d.ts +11 -0
  470. package/dist/components/af-tab.js +9 -0
  471. package/dist/components/af-tab.js.map +1 -0
  472. package/dist/components/af-tag.d.ts +11 -0
  473. package/dist/components/af-tag.js +9 -0
  474. package/dist/components/af-tag.js.map +1 -0
  475. package/dist/components/af-testimonial-carousel.js +35 -17
  476. package/dist/components/af-testimonial-carousel.js.map +1 -1
  477. package/dist/components/af-testimonial-stat.js +16 -4
  478. package/dist/components/af-testimonial-stat.js.map +1 -1
  479. package/dist/components/af-testimonial.js +56 -5
  480. package/dist/components/af-testimonial.js.map +1 -1
  481. package/dist/components/af-text-image-nest.d.ts +11 -0
  482. package/dist/components/af-text-image-nest.js +51 -0
  483. package/dist/components/af-text-image-nest.js.map +1 -0
  484. package/dist/components/af-text-image.d.ts +11 -0
  485. package/dist/components/af-text-image.js +94 -0
  486. package/dist/components/af-text-image.js.map +1 -0
  487. package/dist/components/af-text.js +1 -1
  488. package/dist/components/af-textarea.d.ts +11 -0
  489. package/dist/components/af-textarea.js +9 -0
  490. package/dist/components/af-textarea.js.map +1 -0
  491. package/dist/components/af-typography-lockup.js +1 -1
  492. package/dist/components/af-video-container.d.ts +11 -0
  493. package/dist/components/af-video-container.js +70 -0
  494. package/dist/components/af-video-container.js.map +1 -0
  495. package/dist/components/index.js +24 -13
  496. package/dist/components/index.js.map +1 -1
  497. package/dist/components/{p-BBivIwbE.js → p-6uEhsUaO.js} +3 -3
  498. package/dist/components/{p-BBivIwbE.js.map → p-6uEhsUaO.js.map} +1 -1
  499. package/dist/components/{p-PLXzXWgX.js → p-BHKA-yEm.js} +4 -4
  500. package/dist/components/p-BHKA-yEm.js.map +1 -0
  501. package/dist/components/p-BMp8QbY-.js +68 -0
  502. package/dist/components/p-BMp8QbY-.js.map +1 -0
  503. package/dist/components/p-BRN73McC.js +59 -0
  504. package/dist/components/p-BRN73McC.js.map +1 -0
  505. package/dist/components/p-BRsO61_R.js +58 -0
  506. package/dist/components/p-BRsO61_R.js.map +1 -0
  507. package/dist/components/p-BXZ7aJQf.js +372 -0
  508. package/dist/components/p-BXZ7aJQf.js.map +1 -0
  509. package/dist/components/p-Bh4YP9vE.js +74 -0
  510. package/dist/components/p-Bh4YP9vE.js.map +1 -0
  511. package/dist/components/p-Br0VERLB.js +81 -0
  512. package/dist/components/p-Br0VERLB.js.map +1 -0
  513. package/dist/components/{p-DBFWSHR9.js → p-ByHIHg3l.js} +4 -4
  514. package/dist/components/{p-DBFWSHR9.js.map → p-ByHIHg3l.js.map} +1 -1
  515. package/dist/components/p-C0f6y_zg.js +94 -0
  516. package/dist/components/p-C0f6y_zg.js.map +1 -0
  517. package/dist/components/p-CCAq3Zj6.js +68 -0
  518. package/dist/components/p-CCAq3Zj6.js.map +1 -0
  519. package/dist/components/p-CZyCImor.js +127 -0
  520. package/dist/components/p-CZyCImor.js.map +1 -0
  521. package/dist/components/p-C_M8AOaj.js +65 -0
  522. package/dist/components/p-C_M8AOaj.js.map +1 -0
  523. package/dist/components/p-Cqp0DdgH.js +58 -0
  524. package/dist/components/p-Cqp0DdgH.js.map +1 -0
  525. package/dist/components/{p-Dt4Fpr3O.js → p-CxngDK-N.js} +122 -8
  526. package/dist/components/p-CxngDK-N.js.map +1 -0
  527. package/dist/components/{p-BkEmrXbw.js → p-D3UZ60qM.js} +3 -3
  528. package/dist/components/{p-BkEmrXbw.js.map → p-D3UZ60qM.js.map} +1 -1
  529. package/dist/components/p-D99aXp3U.js +35 -0
  530. package/dist/components/p-D99aXp3U.js.map +1 -0
  531. package/dist/components/p-DBnL9UHx.js +91 -0
  532. package/dist/components/p-DBnL9UHx.js.map +1 -0
  533. package/dist/components/p-DOkvrcIE.js +50 -0
  534. package/dist/components/p-DOkvrcIE.js.map +1 -0
  535. package/dist/components/p-DW5DrJlQ.js +70 -0
  536. package/dist/components/p-DW5DrJlQ.js.map +1 -0
  537. package/dist/components/p-DZ-qivXD.js +55 -0
  538. package/dist/components/p-DZ-qivXD.js.map +1 -0
  539. package/dist/components/p-DhdRcSve.js +89 -0
  540. package/dist/components/p-DhdRcSve.js.map +1 -0
  541. package/dist/components/p-Dvi1lz3x.js +53 -0
  542. package/dist/components/p-Dvi1lz3x.js.map +1 -0
  543. package/dist/components/p-DzkSL2bi.js +141 -0
  544. package/dist/components/p-DzkSL2bi.js.map +1 -0
  545. package/dist/components/p-JepBVz99.js +71 -0
  546. package/dist/components/p-JepBVz99.js.map +1 -0
  547. package/dist/components/p-_bQXTXUb.js +98 -0
  548. package/dist/components/p-_bQXTXUb.js.map +1 -0
  549. package/dist/components/p-l95vl6T1.js +108 -0
  550. package/dist/components/p-l95vl6T1.js.map +1 -0
  551. package/dist/components/p-wwnR-hlX.js +52 -0
  552. package/dist/components/p-wwnR-hlX.js.map +1 -0
  553. package/dist/components/p-xDRMXxWJ.js +37 -0
  554. package/dist/components/p-xDRMXxWJ.js.map +1 -0
  555. package/dist/esm/af-aspect-ratio.entry.js +2 -2
  556. package/dist/esm/af-aspect-ratio.entry.js.map +1 -1
  557. package/dist/esm/af-button-group.entry.js +2 -2
  558. package/dist/esm/af-button.entry.js +25 -12
  559. package/dist/esm/af-button.entry.js.map +1 -1
  560. package/dist/esm/af-card.entry.js +17 -7
  561. package/dist/esm/af-card.entry.js.map +1 -1
  562. package/dist/esm/af-checkbox.entry.js +56 -0
  563. package/dist/esm/af-checkbox.entry.js.map +1 -0
  564. package/dist/esm/af-client-carousel.entry.js +5 -7
  565. package/dist/esm/af-client-carousel.entry.js.map +1 -1
  566. package/dist/esm/af-color-swatch.entry.js +1 -1
  567. package/dist/esm/af-contact-item.entry.js +2 -2
  568. package/dist/esm/af-container.entry.js +1 -1
  569. package/dist/esm/af-feature-accordion.entry.js +4 -4
  570. package/dist/esm/af-feature-accordion.entry.js.map +1 -1
  571. package/dist/esm/af-feature-card.entry.js +57 -0
  572. package/dist/esm/af-feature-card.entry.js.map +1 -0
  573. package/dist/esm/af-feature-grid.entry.js +91 -0
  574. package/dist/esm/af-feature-grid.entry.js.map +1 -0
  575. package/dist/esm/af-fieldset.entry.js +35 -0
  576. package/dist/esm/af-fieldset.entry.js.map +1 -0
  577. package/dist/esm/af-footer-column.entry.js +2 -2
  578. package/dist/esm/af-footer-link.entry.js +2 -2
  579. package/dist/esm/af-footer.entry.js +2 -2
  580. package/dist/esm/af-grid-callout.entry.js +49 -0
  581. package/dist/esm/af-grid-callout.entry.js.map +1 -0
  582. package/dist/esm/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.js.map +1 -1
  583. package/dist/esm/af-heading_5.entry.js +67 -27
  584. package/dist/esm/af-hero-section.entry.js +11 -5
  585. package/dist/esm/af-hero-section.entry.js.map +1 -1
  586. package/dist/esm/af-icon-box.entry.js +28 -0
  587. package/dist/esm/af-icon-box.entry.js.map +1 -0
  588. package/dist/esm/af-icon-button.entry.js +6 -3
  589. package/dist/esm/af-icon-button.entry.js.map +1 -1
  590. package/dist/esm/af-icon-text.entry.js +34 -0
  591. package/dist/esm/af-icon-text.entry.js.map +1 -0
  592. package/dist/esm/af-icon.entry.js +349 -0
  593. package/dist/esm/af-icon.entry.js.map +1 -0
  594. package/dist/esm/af-illustrated-card.entry.js +34 -0
  595. package/dist/esm/af-illustrated-card.entry.js.map +1 -0
  596. package/dist/esm/af-image.entry.js +16 -0
  597. package/dist/esm/af-image.entry.js.map +1 -0
  598. package/dist/esm/af-in-page-banner.entry.js +45 -0
  599. package/dist/esm/af-in-page-banner.entry.js.map +1 -0
  600. package/dist/esm/af-input.entry.js +102 -0
  601. package/dist/esm/af-input.entry.js.map +1 -0
  602. package/dist/esm/af-logo-well.entry.js +3 -3
  603. package/dist/esm/af-logo-well.entry.js.map +1 -1
  604. package/dist/esm/af-nav-card.entry.js +35 -0
  605. package/dist/esm/af-nav-card.entry.js.map +1 -0
  606. package/dist/esm/af-nav-menu-nest.entry.js +41 -0
  607. package/dist/esm/af-nav-menu-nest.entry.js.map +1 -0
  608. package/dist/esm/af-nav-menu.entry.js +39 -0
  609. package/dist/esm/af-nav-menu.entry.js.map +1 -0
  610. package/dist/esm/af-number-badge.entry.js +40 -0
  611. package/dist/esm/af-number-badge.entry.js.map +1 -0
  612. package/dist/esm/af-progress-line.entry.js +31 -0
  613. package/dist/esm/af-progress-line.entry.js.map +1 -0
  614. package/dist/esm/af-radio.entry.js +41 -0
  615. package/dist/esm/af-radio.entry.js.map +1 -0
  616. package/dist/esm/af-section.entry.js +6 -6
  617. package/dist/esm/af-section.entry.js.map +1 -1
  618. package/dist/esm/af-social-link.entry.js +2 -2
  619. package/dist/esm/af-split-section.entry.js +39 -0
  620. package/dist/esm/af-split-section.entry.js.map +1 -0
  621. package/dist/esm/af-switch.entry.js +46 -0
  622. package/dist/esm/af-switch.entry.js.map +1 -0
  623. package/dist/esm/af-tab-bar.entry.js +86 -0
  624. package/dist/esm/af-tab-bar.entry.js.map +1 -0
  625. package/dist/esm/af-tab.entry.js +62 -0
  626. package/dist/esm/af-tab.entry.js.map +1 -0
  627. package/dist/esm/af-tag.entry.js +35 -0
  628. package/dist/esm/af-tag.entry.js.map +1 -0
  629. package/dist/esm/af-testimonial-carousel.entry.js +27 -15
  630. package/dist/esm/af-testimonial-carousel.entry.js.map +1 -1
  631. package/dist/esm/af-testimonial-stat.entry.js +3 -3
  632. package/dist/esm/af-testimonial-stat.entry.js.map +1 -1
  633. package/dist/esm/af-testimonial.entry.js +27 -3
  634. package/dist/esm/af-testimonial.entry.js.map +1 -1
  635. package/dist/esm/af-text-image-nest.entry.js +28 -0
  636. package/dist/esm/af-text-image-nest.entry.js.map +1 -0
  637. package/dist/esm/af-text-image.entry.js +61 -0
  638. package/dist/esm/af-text-image.entry.js.map +1 -0
  639. package/dist/esm/af-textarea.entry.js +91 -0
  640. package/dist/esm/af-textarea.entry.js.map +1 -0
  641. package/dist/esm/af-typography-lockup.entry.js +7 -7
  642. package/dist/esm/af-typography-lockup.entry.js.map +1 -1
  643. package/dist/esm/af-video-container.entry.js +33 -0
  644. package/dist/esm/af-video-container.entry.js.map +1 -0
  645. package/dist/esm/affinda.js +3 -3
  646. package/dist/esm/{index-DI7b0bCy.js → index-BmU_CFQ4.js} +130 -7
  647. package/dist/esm/index-BmU_CFQ4.js.map +1 -0
  648. package/dist/esm/index.js +12 -1
  649. package/dist/esm/index.js.map +1 -1
  650. package/dist/esm/loader.js +3 -3
  651. package/dist/types/components/af-button/af-button.d.ts +22 -9
  652. package/dist/types/components/af-card/af-card.d.ts +15 -8
  653. package/dist/types/components/af-checkbox/af-checkbox.d.ts +40 -0
  654. package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +10 -5
  655. package/dist/types/components/af-feature-accordion/af-feature-accordion.d.ts +13 -3
  656. package/dist/types/components/af-feature-card/af-feature-card.d.ts +49 -0
  657. package/dist/types/components/af-feature-grid/af-feature-grid.d.ts +32 -0
  658. package/dist/types/components/af-fieldset/af-fieldset.d.ts +23 -0
  659. package/dist/types/components/af-grid-callout/af-grid-callout.d.ts +57 -0
  660. package/dist/types/components/af-heading/af-heading.d.ts +5 -2
  661. package/dist/types/components/af-hero-section/af-hero-section.d.ts +18 -3
  662. package/dist/types/components/af-icon/af-icon.d.ts +28 -0
  663. package/dist/types/components/af-icon-box/af-icon-box.d.ts +27 -0
  664. package/dist/types/components/af-icon-button/af-icon-button.d.ts +5 -2
  665. package/dist/types/components/af-icon-text/af-icon-text.d.ts +44 -0
  666. package/dist/types/components/af-illustrated-card/af-illustrated-card.d.ts +28 -0
  667. package/dist/types/components/af-image/af-image.d.ts +15 -0
  668. package/dist/types/components/af-in-page-banner/af-in-page-banner.d.ts +56 -0
  669. package/dist/types/components/af-input/af-input.d.ts +110 -0
  670. package/dist/types/components/af-logo/af-logo.d.ts +1 -6
  671. package/dist/types/components/af-nav-card/af-nav-card.d.ts +34 -0
  672. package/dist/types/components/af-nav-item/af-nav-item.d.ts +6 -0
  673. package/dist/types/components/af-nav-menu/af-nav-menu.d.ts +28 -0
  674. package/dist/types/components/af-nav-menu-nest/af-nav-menu-nest.d.ts +42 -0
  675. package/dist/types/components/af-navbar/af-navbar.d.ts +26 -1
  676. package/dist/types/components/af-number-badge/af-number-badge.d.ts +29 -0
  677. package/dist/types/components/af-progress-line/af-progress-line.d.ts +18 -0
  678. package/dist/types/components/af-radio/af-radio.d.ts +33 -0
  679. package/dist/types/components/af-section/af-section.d.ts +4 -3
  680. package/dist/types/components/af-split-section/af-split-section.d.ts +20 -0
  681. package/dist/types/components/af-switch/af-switch.d.ts +32 -0
  682. package/dist/types/components/af-tab/af-tab.d.ts +61 -0
  683. package/dist/types/components/af-tab-bar/af-tab-bar.d.ts +43 -0
  684. package/dist/types/components/af-tag/af-tag.d.ts +33 -0
  685. package/dist/types/components/af-testimonial/af-testimonial.d.ts +23 -0
  686. package/dist/types/components/af-testimonial-carousel/af-testimonial-carousel.d.ts +17 -0
  687. package/dist/types/components/af-text/af-text.d.ts +6 -3
  688. package/dist/types/components/af-text-image/af-text-image.d.ts +30 -0
  689. package/dist/types/components/af-text-image-nest/af-text-image-nest.d.ts +21 -0
  690. package/dist/types/components/af-textarea/af-textarea.d.ts +92 -0
  691. package/dist/types/components/af-video-container/af-video-container.d.ts +45 -0
  692. package/dist/types/components.d.ts +3395 -669
  693. package/package.json +8 -7
  694. package/dist/affinda/af-cta-section.entry.esm.js.map +0 -1
  695. package/dist/affinda/p-050f98cd.entry.js +0 -2
  696. package/dist/affinda/p-0eb8173d.entry.js +0 -2
  697. package/dist/affinda/p-1955dbad.entry.js +0 -2
  698. package/dist/affinda/p-1b18ab28.entry.js +0 -2
  699. package/dist/affinda/p-1b18ab28.entry.js.map +0 -1
  700. package/dist/affinda/p-1e3d40a0.entry.js +0 -2
  701. package/dist/affinda/p-1e3d40a0.entry.js.map +0 -1
  702. package/dist/affinda/p-350ac7a5.entry.js +0 -2
  703. package/dist/affinda/p-71e663b3.entry.js +0 -2
  704. package/dist/affinda/p-71e663b3.entry.js.map +0 -1
  705. package/dist/affinda/p-7b8c36e0.entry.js +0 -2
  706. package/dist/affinda/p-7b8c36e0.entry.js.map +0 -1
  707. package/dist/affinda/p-83b5d5ea.entry.js +0 -2
  708. package/dist/affinda/p-83b5d5ea.entry.js.map +0 -1
  709. package/dist/affinda/p-9071c2a7.entry.js +0 -2
  710. package/dist/affinda/p-954963fa.entry.js +0 -2
  711. package/dist/affinda/p-954963fa.entry.js.map +0 -1
  712. package/dist/affinda/p-DI7b0bCy.js +0 -3
  713. package/dist/affinda/p-DI7b0bCy.js.map +0 -1
  714. package/dist/affinda/p-b2fb60c9.entry.js +0 -2
  715. package/dist/affinda/p-b2fb60c9.entry.js.map +0 -1
  716. package/dist/affinda/p-d3b2ab0e.entry.js +0 -2
  717. package/dist/affinda/p-e1198ca3.entry.js +0 -2
  718. package/dist/affinda/p-e1198ca3.entry.js.map +0 -1
  719. package/dist/affinda/p-e3efc291.entry.js +0 -2
  720. package/dist/affinda/p-e3efc291.entry.js.map +0 -1
  721. package/dist/affinda/p-f692a7bd.entry.js +0 -2
  722. package/dist/affinda/p-f692a7bd.entry.js.map +0 -1
  723. package/dist/affinda/p-fc2cb8d1.entry.js +0 -2
  724. package/dist/cjs/af-cta-section.cjs.entry.js +0 -34
  725. package/dist/cjs/af-cta-section.entry.cjs.js.map +0 -1
  726. package/dist/cjs/index-DfEVhbS6.js.map +0 -1
  727. package/dist/collection/components/af-cta-section/af-cta-section.css +0 -175
  728. package/dist/collection/components/af-cta-section/af-cta-section.js.map +0 -1
  729. package/dist/components/af-cta-section.js +0 -62
  730. package/dist/components/af-cta-section.js.map +0 -1
  731. package/dist/components/p-BKGrl8ua.js +0 -77
  732. package/dist/components/p-BKGrl8ua.js.map +0 -1
  733. package/dist/components/p-BTEblSAo.js +0 -63
  734. package/dist/components/p-BTEblSAo.js.map +0 -1
  735. package/dist/components/p-BekWfVfB.js +0 -66
  736. package/dist/components/p-BekWfVfB.js.map +0 -1
  737. package/dist/components/p-Bg7dSc4D.js +0 -54
  738. package/dist/components/p-Bg7dSc4D.js.map +0 -1
  739. package/dist/components/p-CN_K2ni-.js +0 -45
  740. package/dist/components/p-CN_K2ni-.js.map +0 -1
  741. package/dist/components/p-CgnBqOVh.js +0 -50
  742. package/dist/components/p-CgnBqOVh.js.map +0 -1
  743. package/dist/components/p-DqOwXTsH.js +0 -68
  744. package/dist/components/p-DqOwXTsH.js.map +0 -1
  745. package/dist/components/p-Dt4Fpr3O.js.map +0 -1
  746. package/dist/components/p-LUt2VDjp.js +0 -68
  747. package/dist/components/p-LUt2VDjp.js.map +0 -1
  748. package/dist/components/p-PLXzXWgX.js.map +0 -1
  749. package/dist/esm/af-cta-section.entry.js +0 -32
  750. package/dist/esm/af-cta-section.entry.js.map +0 -1
  751. package/dist/esm/index-DI7b0bCy.js.map +0 -1
  752. package/dist/types/components/af-cta-section/af-cta-section.d.ts +0 -23
  753. /package/dist/affinda/{p-0eb8173d.entry.js.map → p-1d9e532f.entry.js.map} +0 -0
  754. /package/dist/affinda/{p-fb4e3a8d.entry.js.map → p-31d4c1a4.entry.js.map} +0 -0
  755. /package/dist/affinda/{p-1955dbad.entry.js.map → p-53ae16fe.entry.js.map} +0 -0
  756. /package/dist/affinda/{p-ec7721cc.entry.js.map → p-72f02343.entry.js.map} +0 -0
  757. /package/dist/affinda/{p-bd30e86a.entry.js.map → p-96eac3af.entry.js.map} +0 -0
  758. /package/dist/affinda/{p-806d129e.entry.js.map → p-acbbe39a.entry.js.map} +0 -0
  759. /package/dist/affinda/{p-3a9646e6.entry.js.map → p-c11088fa.entry.js.map} +0 -0
  760. /package/dist/affinda/{p-f8ac0120.entry.js.map → p-e5af21c2.entry.js.map} +0 -0
@@ -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,77 +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
- * A flexible CTA section with customizable content, buttons, and optional illustration
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 {
141
189
  /**
142
- * Section description
143
- * @default ''
190
+ * Whether auto-cycling is enabled
191
+ * @default true
144
192
  */
145
- "description": string;
193
+ "autoCycle": boolean;
194
+ /**
195
+ * Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds)
196
+ * @default 6000
197
+ */
198
+ "cycleInterval": number;
146
199
  /**
147
200
  * Section heading
148
- * @default ''
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 ''
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;
166
229
  /**
167
- * Secondary button text (optional - if empty, button won't show)
230
+ * Image alt text for accessibility. Provide meaningful alt text for feature images. Only use empty string for purely decorative images.
168
231
  * @default ''
169
232
  */
170
- "secondaryButtonText": string;
233
+ "imageAlt": string;
171
234
  /**
172
- * Secondary button URL
173
- * @default '#'
235
+ * Background/feature image URL.
174
236
  */
175
- "secondaryButtonUrl": string;
237
+ "imageSrc"?: string;
176
238
  /**
177
- * Whether to show the decorative wave background
178
- * @default true
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'
179
241
  */
180
- "showWaveDecoration": boolean;
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';
181
248
  }
182
249
  /**
183
- * Feature accordion component with expandable items and accompanying image
184
- * Used for showcasing product features with visual examples
185
- * 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
186
253
  */
187
- interface AfFeatureAccordion {
254
+ interface AfFeatureGrid {
188
255
  /**
189
- * Whether auto-cycling is enabled
190
- * @default true
256
+ * Number of columns on desktop (1-4).
257
+ * @default 4
191
258
  */
192
- "autoCycle": boolean;
259
+ "columns": 1 | 2 | 3 | 4;
193
260
  /**
194
- * Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds)
195
- * @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'
196
263
  */
197
- "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 {
198
271
  /**
199
- * Section heading
200
- * @default 'Give AI agents your paperwork'
272
+ * Whether the fieldset is disabled (disables all child controls)
273
+ * @default false
201
274
  */
202
- "heading": string;
275
+ "disabled": boolean;
203
276
  /**
204
- * JSON string of accordion items
205
- * @default '[]'
277
+ * The legend/heading text for the fieldset
206
278
  */
207
- "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';
208
285
  }
209
286
  /**
210
287
  * Footer component for marketing pages
@@ -265,6 +342,62 @@ export namespace Components {
265
342
  */
266
343
  "href": string;
267
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
+ */
268
401
  interface AfHeading {
269
402
  /**
270
403
  * Visual alignment
@@ -276,32 +409,93 @@ export namespace Components {
276
409
  * @default '1'
277
410
  */
278
411
  "level": 'xl' | '1' | '2' | '3' | '4' | '5';
279
- /**
280
- * Theme for dark backgrounds
281
- * @default 'light'
282
- */
283
- "theme": 'light' | 'dark';
284
412
  }
285
413
  /**
286
- * 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.
287
417
  */
288
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;
289
433
  /**
290
434
  * Minimum height
291
435
  * @default '60vh'
292
436
  */
293
437
  "minHeight": string;
294
438
  /**
295
- * Hero variant
296
- * @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'
297
446
  */
298
- "variant": 'light' | 'dark';
447
+ "theme": 'white' | 'inkwell' | 'mist-green' | 'soft-clay';
299
448
  /**
300
449
  * Show decorative paperclip
301
450
  * @default false
302
451
  */
303
452
  "withDecoration": boolean;
304
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
+ }
305
499
  interface AfIconButton {
306
500
  /**
307
501
  * Accessible label for screen readers
@@ -327,883 +521,2895 @@ export namespace Components {
327
521
  */
328
522
  "type": 'button' | 'submit' | 'reset';
329
523
  /**
330
- * 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
331
525
  * @default 'primary'
332
526
  */
333
- "variant": 'primary' | 'secondary' | 'outline' | 'ghost';
527
+ "variant": 'primary' | 'secondary' | 'tertiary';
334
528
  }
335
529
  /**
336
- * Logo component with default Affinda branding
337
- * Can be customized with a custom logo URL or by using the slot
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
+ * ```
338
542
  */
339
- interface AfLogo {
543
+ interface AfIconText {
340
544
  /**
341
- * Alt text for the logo
342
- * @default 'Affinda'
545
+ * Heading size for the typography lockup (1-5, where 1 is largest)
546
+ * @default 4
343
547
  */
344
- "alt": string;
548
+ "headingSize": 1 | 2 | 3 | 4 | 5;
345
549
  /**
346
- * Custom logo image URL. If provided, displays this instead of the default Affinda logo
550
+ * The icon name to display in the IconBox
347
551
  */
348
- "src"?: string;
349
- }
350
- /**
351
- * A rounded container for displaying client logos
352
- */
353
- interface AfLogoWell {
552
+ "icon": IconName;
553
+ /**
554
+ * Size of the icon box
555
+ * @default 'default'
556
+ */
557
+ "iconSize": 'small' | 'default' | 'large';
558
+ /**
559
+ * Layout orientation - 'vertical': Icon above text (default, used in grid layouts) - 'horizontal': Icon beside text (used in compact layouts)
560
+ * @default 'vertical'
561
+ */
562
+ "orientation": 'vertical' | 'horizontal';
354
563
  }
355
564
  /**
356
- * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
357
- * Supports multiple hierarchy levels, variants, and states (active, hover).
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.
358
569
  */
359
- interface AfNavItem {
570
+ interface AfIllustratedCard {
360
571
  /**
361
- * Whether this nav item is currently active/selected
362
- * @default false
363
- */
364
- "active": boolean;
365
- /**
366
- * Visual hierarchy level of the navigation item - 'primary': Bold, main navigation (larger text, prominent styling) - 'secondary': Lighter, sub-navigation (smaller text, subtle styling)
367
- * @default 'primary'
572
+ * Responsive breakpoint for typography sizing.
573
+ * @default 'desktop'
368
574
  */
369
- "hierarchy": 'primary' | 'secondary';
575
+ "breakpoint": 'desktop' | 'mobile';
370
576
  /**
371
- * URL to navigate to when clicked
577
+ * Card size variant (applies to desktop only).
578
+ * @default 'default'
372
579
  */
373
- "href"?: string;
580
+ "cardSize": 'default' | 'large';
374
581
  /**
375
- * Visual variant within the hierarchy level - '01': Darker/more prominent styling - '02': Lighter/more subtle styling
376
- * @default '01'
582
+ * Theme variant - sets background color and provides theme context. Defaults to 'mist-green'.
583
+ * @default 'mist-green'
377
584
  */
378
- "variant": '01' | '02';
585
+ "theme"?: 'white' | 'white-ivory' | 'inkwell' | 'mist-green' | 'soft-clay';
379
586
  }
380
587
  /**
381
- * A full-width navigation bar component that provides the main site navigation.
382
- * Features a pill-shaped container with logo, navigation links, and action buttons.
383
- * Includes mobile hamburger menu.
384
- * The logo slot can be used to provide a custom logo. If no logo is provided,
385
- * the default Affinda logo will be displayed.
588
+ * A styled image container with rounded corners and a subtle inset border.
589
+ * Provides consistent image styling across the design system.
386
590
  */
387
- interface AfNavbar {
591
+ interface AfImage {
388
592
  /**
389
- * Whether to show the default Affinda logo when no logo slot content is provided
390
- * @default true
593
+ * Alternative text for the image (required for accessibility)
391
594
  */
392
- "showDefaultLogo": boolean;
595
+ "alt": string;
596
+ /**
597
+ * The image source URL
598
+ */
599
+ "src": string;
393
600
  }
394
601
  /**
395
- * Section layout component for consistent spacing and backgrounds
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.
396
618
  */
397
- interface AfSection {
619
+ interface AfInPageBanner {
398
620
  /**
399
- * Background color
400
- * @default 'white'
621
+ * Banner description
622
+ * @default ''
401
623
  */
402
- "background": 'white' | 'level1' | 'dark' | 'inkwell';
624
+ "description": string;
403
625
  /**
404
- * Whether to include a Container wrapper
405
- * @default true
626
+ * Banner heading
627
+ * @default ''
406
628
  */
407
- "container": boolean;
629
+ "heading": string;
408
630
  /**
409
- * Padding variant
410
- * @default 'default'
631
+ * Illustration URL. For theme-matched illustrations, use getIllustrationUrlByScene() from
632
+ * @affinda /illustrations in your app code.
633
+ * @default ''
411
634
  */
412
- "padding": 'tight' | 'default' | 'loose';
413
- }
414
- /**
415
- * Social media link component
416
- * Circular bordered icon link for social media profiles
417
- */
418
- interface AfSocialLink {
635
+ "illustrationUrl": string;
419
636
  /**
420
- * Link URL
421
- * @default '#'
637
+ * Primary button text
638
+ * @default ''
422
639
  */
423
- "href": string;
640
+ "primaryButtonText": string;
424
641
  /**
425
- * Icon type: 'linkedin', 'youtube', 'github', 'twitter', 'facebook', or 'custom'
426
- * @default 'custom'
642
+ * Primary button URL
643
+ * @default '#'
427
644
  */
428
- "icon": 'linkedin' | 'youtube' | 'github' | 'twitter' | 'facebook' | 'custom';
645
+ "primaryButtonUrl": string;
429
646
  /**
430
- * Accessible label for the link
647
+ * Secondary button text (optional - if empty, button won't show)
431
648
  * @default ''
432
649
  */
433
- "label": string;
434
- }
435
- interface AfTestimonial {
650
+ "secondaryButtonText": string;
436
651
  /**
437
- * Attribution text (e.g., "– Nathaniel Barrs, CTO, PSC Insurance")
652
+ * Secondary button URL
653
+ * @default '#'
438
654
  */
439
- "attribution": string;
655
+ "secondaryButtonUrl": string;
440
656
  /**
441
- * Background image URL for the testimonial card
657
+ * Whether to show the decorative wave overlay
658
+ * @default true
442
659
  */
443
- "backgroundImage"?: string;
660
+ "showWaveDecoration": boolean;
444
661
  /**
445
- * Company logo URL
662
+ * Theme - sets the banner background color and typography colors
663
+ * @default 'mist-green'
446
664
  */
447
- "logoImage"?: string;
665
+ "theme": BannerTheme;
666
+ }
667
+ /**
668
+ * Input field component with label, description, and error states.
669
+ * Supports various input types and validation states.
670
+ */
671
+ interface AfInput {
448
672
  /**
449
- * Testimonial quote text
673
+ * Autocomplete attribute for the input
450
674
  */
451
- "quote": string;
675
+ "autocomplete"?: string;
452
676
  /**
453
- * Link to full case study
677
+ * Whether to show a clear button when input has value
678
+ * @default false
454
679
  */
455
- "readMoreLink"?: string;
456
- }
457
- interface AfTestimonialCarousel {
458
- }
459
- interface AfTestimonialStat {
680
+ "clearable": boolean;
460
681
  /**
461
- * Whether to show left accent border
682
+ * Description text displayed below the label
683
+ */
684
+ "description"?: string;
685
+ /**
686
+ * Whether the input is disabled
462
687
  * @default false
463
688
  */
464
- "accentBorder": boolean;
689
+ "disabled": boolean;
465
690
  /**
466
- * Description text for the statistic
691
+ * Error message to display (also sets error state)
467
692
  */
468
- "description": string;
693
+ "error"?: string;
469
694
  /**
470
- * The statistic value (e.g., "95%", "10×", "120,000")
695
+ * The label text for the input field
471
696
  */
472
- "value": string;
473
- }
474
- interface AfText {
697
+ "label"?: string;
475
698
  /**
476
- * Visual alignment
477
- * @default 'left'
699
+ * Maximum length of input value
478
700
  */
479
- "align": 'left' | 'center' | 'right';
701
+ "maxlength"?: number;
480
702
  /**
481
- * Semantic element to render
482
- * @default 'p'
703
+ * Minimum length of input value
483
704
  */
484
- "as": 'p' | 'span' | 'div' | 'label';
705
+ "minlength"?: number;
485
706
  /**
486
- * Theme for dark backgrounds
487
- * @default 'light'
707
+ * The name of the input for form submission
488
708
  */
489
- "theme": 'light' | 'dark';
709
+ "name"?: string;
490
710
  /**
491
- * Text variant
492
- * @default 'medium'
711
+ * Pattern for input validation (regex)
493
712
  */
494
- "variant": 'xlarge' | 'large' | 'medium' | 'small' | 'label-button' | 'label-tag';
495
- }
496
- interface AfTypographyLockup {
713
+ "pattern"?: string;
497
714
  /**
498
- * The breakpoint for responsive typography
499
- * @default 'desktop'
715
+ * Placeholder text for the input
500
716
  */
501
- "breakpoint": 'desktop' | 'mobile';
717
+ "placeholder"?: string;
502
718
  /**
503
- * Button alignment (horizontal or vertical stacking)
504
- * @default 'vertical'
719
+ * Whether the input is read-only
720
+ * @default false
505
721
  */
506
- "buttonAlignment": 'horizontal' | 'vertical';
722
+ "readonly": boolean;
507
723
  /**
508
- * The heading size (1-5, where 1 is largest)
509
- * @default 2
724
+ * Whether the input is required
725
+ * @default false
510
726
  */
511
- "headingSize": 1 | 2 | 3 | 4 | 5;
727
+ "required": boolean;
512
728
  /**
513
- * Maximum width for the copy section (in pixels)
729
+ * Whether to show the info icon next to the label
730
+ * @default false
514
731
  */
515
- "maxWidth"?: number;
732
+ "showInfoIcon": boolean;
516
733
  /**
517
- * Text alignment
518
- * @default 'left'
734
+ * Whether to show a search icon in the input
735
+ * @default false
519
736
  */
520
- "textAlignment": 'left' | 'center';
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;
521
748
  }
522
- }
523
- declare global {
524
749
  /**
525
- * A container component that maintains a fixed aspect ratio for its content.
526
- * Useful for images, videos, or any content that needs to maintain specific proportions.
750
+ * Affinda logo component
527
751
  */
528
- interface HTMLAfAspectRatioElement extends Components.AfAspectRatio, HTMLStencilElement {
529
- }
530
- var HTMLAfAspectRatioElement: {
531
- prototype: HTMLAfAspectRatioElement;
532
- new (): HTMLAfAspectRatioElement;
533
- };
534
- interface HTMLAfButtonElement extends Components.AfButton, HTMLStencilElement {
535
- }
536
- var HTMLAfButtonElement: {
537
- prototype: HTMLAfButtonElement;
538
- new (): HTMLAfButtonElement;
539
- };
540
- interface HTMLAfButtonGroupElement extends Components.AfButtonGroup, HTMLStencilElement {
541
- }
542
- var HTMLAfButtonGroupElement: {
543
- prototype: HTMLAfButtonGroupElement;
544
- new (): HTMLAfButtonGroupElement;
545
- };
546
- interface HTMLAfCardElement extends Components.AfCard, HTMLStencilElement {
752
+ interface AfLogo {
547
753
  }
548
- var HTMLAfCardElement: {
549
- prototype: HTMLAfCardElement;
550
- new (): HTMLAfCardElement;
551
- };
552
754
  /**
553
- * Infinite scrolling carousel for client logos
755
+ * A rounded container for displaying client logos
554
756
  */
555
- interface HTMLAfClientCarouselElement extends Components.AfClientCarousel, HTMLStencilElement {
556
- }
557
- var HTMLAfClientCarouselElement: {
558
- prototype: HTMLAfClientCarouselElement;
559
- new (): HTMLAfClientCarouselElement;
560
- };
561
- interface HTMLAfColorSwatchElement extends Components.AfColorSwatch, HTMLStencilElement {
757
+ interface AfLogoWell {
562
758
  }
563
- var HTMLAfColorSwatchElement: {
564
- prototype: HTMLAfColorSwatchElement;
565
- new (): HTMLAfColorSwatchElement;
566
- };
567
759
  /**
568
- * Contact item component for footer
569
- * 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
570
768
  */
571
- 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;
572
787
  }
573
- var HTMLAfContactItemElement: {
574
- prototype: HTMLAfContactItemElement;
575
- new (): HTMLAfContactItemElement;
576
- };
577
788
  /**
578
- * A responsive container component that provides consistent margins and max-width
579
- * 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).
580
791
  */
581
- 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';
582
817
  }
583
- var HTMLAfContainerElement: {
584
- prototype: HTMLAfContainerElement;
585
- new (): HTMLAfContainerElement;
586
- };
587
818
  /**
588
- * Call-to-action section component with illustration and decorative background
589
- * A flexible CTA section with customizable content, buttons, and optional illustration
819
+ * A grouped navigation menu component with a heading.
820
+ * Used in mega-menu dropdowns to group related navigation items.
590
821
  */
591
- 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;
592
842
  }
593
- var HTMLAfCtaSectionElement: {
594
- prototype: HTMLAfCtaSectionElement;
595
- new (): HTMLAfCtaSectionElement;
596
- };
597
843
  /**
598
- * Feature accordion component with expandable items and accompanying image
599
- * Used for showcasing product features with visual examples
600
- * 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
+ * ```
601
859
  */
602
- 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';
603
876
  }
604
- var HTMLAfFeatureAccordionElement: {
605
- prototype: HTMLAfFeatureAccordionElement;
606
- new (): HTMLAfFeatureAccordionElement;
607
- };
608
877
  /**
609
- * Footer component for marketing pages
610
- * Provides a flexible, slot-based layout for footer content
611
- * 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.
612
883
  */
613
- 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';
614
894
  }
615
- var HTMLAfFooterElement: {
616
- prototype: HTMLAfFooterElement;
617
- new (): HTMLAfFooterElement;
618
- };
619
895
  /**
620
- * Footer navigation column component
621
- * 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
+ * ```
622
902
  */
623
- 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;
624
919
  }
625
- var HTMLAfFooterColumnElement: {
626
- prototype: HTMLAfFooterColumnElement;
627
- new (): HTMLAfFooterColumnElement;
628
- };
629
920
  /**
630
- * Footer link component
631
- * 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.
632
924
  */
633
- interface HTMLAfFooterLinkElement extends Components.AfFooterLink, HTMLStencilElement {
634
- }
635
- var HTMLAfFooterLinkElement: {
636
- prototype: HTMLAfFooterLinkElement;
637
- new (): HTMLAfFooterLinkElement;
638
- };
639
- 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;
640
936
  }
641
- var HTMLAfHeadingElement: {
642
- prototype: HTMLAfHeadingElement;
643
- new (): HTMLAfHeadingElement;
644
- };
645
937
  /**
646
- * Hero section component for marketing pages
938
+ * Radio component for selecting a single option from a group.
647
939
  */
648
- interface HTMLAfHeroSectionElement extends Components.AfHeroSection, HTMLStencilElement {
649
- }
650
- var HTMLAfHeroSectionElement: {
651
- prototype: HTMLAfHeroSectionElement;
652
- new (): HTMLAfHeroSectionElement;
653
- };
654
- 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;
655
959
  }
656
- var HTMLAfIconButtonElement: {
657
- prototype: HTMLAfIconButtonElement;
658
- new (): HTMLAfIconButtonElement;
659
- };
660
960
  /**
661
- * Logo component with default Affinda branding
662
- * Can be customized with a custom logo URL or by using the slot
961
+ * Section layout component for consistent spacing and backgrounds.
962
+ * Sets theme context for all child components via CSS custom properties.
663
963
  */
664
- 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';
665
980
  }
666
- var HTMLAfLogoElement: {
667
- prototype: HTMLAfLogoElement;
668
- new (): HTMLAfLogoElement;
669
- };
670
981
  /**
671
- * A rounded container for displaying client logos
982
+ * Social media link component
983
+ * Circular bordered icon link for social media profiles
672
984
  */
673
- interface HTMLAfLogoWellElement extends Components.AfLogoWell, HTMLStencilElement {
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;
674
1001
  }
675
- var HTMLAfLogoWellElement: {
676
- prototype: HTMLAfLogoWellElement;
677
- new (): HTMLAfLogoWellElement;
678
- };
679
1002
  /**
680
- * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
681
- * Supports multiple hierarchy levels, variants, and states (active, hover).
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.
682
1007
  */
683
- interface HTMLAfNavItemElement extends Components.AfNavItem, HTMLStencilElement {
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;
684
1029
  }
685
- var HTMLAfNavItemElement: {
686
- prototype: HTMLAfNavItemElement;
687
- new (): HTMLAfNavItemElement;
688
- };
689
1030
  /**
690
- * A full-width navigation bar component that provides the main site navigation.
691
- * Features a pill-shaped container with logo, navigation links, and action buttons.
692
- * Includes mobile hamburger menu.
693
- * The logo slot can be used to provide a custom logo. If no logo is provided,
694
- * the default Affinda logo will be displayed.
1031
+ * Switch component for toggling between on and off states.
695
1032
  */
696
- interface HTMLAfNavbarElement extends Components.AfNavbar, HTMLStencilElement {
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;
697
1052
  }
698
- var HTMLAfNavbarElement: {
699
- prototype: HTMLAfNavbarElement;
700
- new (): HTMLAfNavbarElement;
701
- };
702
1053
  /**
703
- * Section layout component for consistent spacing and backgrounds
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
+ * ```
704
1065
  */
705
- interface HTMLAfSectionElement extends Components.AfSection, HTMLStencilElement {
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;
706
1101
  }
707
- var HTMLAfSectionElement: {
708
- prototype: HTMLAfSectionElement;
709
- new (): HTMLAfSectionElement;
710
- };
711
1102
  /**
712
- * Social media link component
713
- * Circular bordered icon link for social media profiles
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
+ * ```
714
1112
  */
715
- interface HTMLAfSocialLinkElement extends Components.AfSocialLink, HTMLStencilElement {
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;
716
1124
  }
717
- var HTMLAfSocialLinkElement: {
718
- prototype: HTMLAfSocialLinkElement;
719
- new (): HTMLAfSocialLinkElement;
720
- };
721
- interface HTMLAfTestimonialElement extends Components.AfTestimonial, HTMLStencilElement {
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;
722
1149
  }
723
- var HTMLAfTestimonialElement: {
724
- prototype: HTMLAfTestimonialElement;
725
- new (): HTMLAfTestimonialElement;
726
- };
727
- interface HTMLAfTestimonialCarouselElement extends Components.AfTestimonialCarousel, HTMLStencilElement {
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;
728
1186
  }
729
- var HTMLAfTestimonialCarouselElement: {
730
- prototype: HTMLAfTestimonialCarouselElement;
731
- new (): HTMLAfTestimonialCarouselElement;
732
- };
733
- interface HTMLAfTestimonialStatElement extends Components.AfTestimonialStat, HTMLStencilElement {
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 {
734
1193
  }
735
- var HTMLAfTestimonialStatElement: {
736
- prototype: HTMLAfTestimonialStatElement;
737
- new (): HTMLAfTestimonialStatElement;
738
- };
739
- interface HTMLAfTextElement extends Components.AfText, HTMLStencilElement {
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;
740
1208
  }
741
- var HTMLAfTextElement: {
742
- prototype: HTMLAfTextElement;
743
- new (): HTMLAfTextElement;
744
- };
745
- interface HTMLAfTypographyLockupElement extends Components.AfTypographyLockup, HTMLStencilElement {
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';
746
1230
  }
747
- var HTMLAfTypographyLockupElement: {
748
- prototype: HTMLAfTypographyLockupElement;
749
- new (): HTMLAfTypographyLockupElement;
750
- };
751
- interface HTMLElementTagNameMap {
752
- "af-aspect-ratio": HTMLAfAspectRatioElement;
753
- "af-button": HTMLAfButtonElement;
754
- "af-button-group": HTMLAfButtonGroupElement;
755
- "af-card": HTMLAfCardElement;
756
- "af-client-carousel": HTMLAfClientCarouselElement;
757
- "af-color-swatch": HTMLAfColorSwatchElement;
758
- "af-contact-item": HTMLAfContactItemElement;
759
- "af-container": HTMLAfContainerElement;
760
- "af-cta-section": HTMLAfCtaSectionElement;
761
- "af-feature-accordion": HTMLAfFeatureAccordionElement;
762
- "af-footer": HTMLAfFooterElement;
763
- "af-footer-column": HTMLAfFooterColumnElement;
764
- "af-footer-link": HTMLAfFooterLinkElement;
765
- "af-heading": HTMLAfHeadingElement;
766
- "af-hero-section": HTMLAfHeroSectionElement;
767
- "af-icon-button": HTMLAfIconButtonElement;
768
- "af-logo": HTMLAfLogoElement;
769
- "af-logo-well": HTMLAfLogoWellElement;
770
- "af-nav-item": HTMLAfNavItemElement;
771
- "af-navbar": HTMLAfNavbarElement;
772
- "af-section": HTMLAfSectionElement;
773
- "af-social-link": HTMLAfSocialLinkElement;
774
- "af-testimonial": HTMLAfTestimonialElement;
775
- "af-testimonial-carousel": HTMLAfTestimonialCarouselElement;
776
- "af-testimonial-stat": HTMLAfTestimonialStatElement;
777
- "af-text": HTMLAfTextElement;
778
- "af-typography-lockup": HTMLAfTypographyLockupElement;
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;
779
1260
  }
780
- }
781
- declare namespace LocalJSX {
782
1261
  /**
783
- * A container component that maintains a fixed aspect ratio for its content.
784
- * Useful for images, videos, or any content that needs to maintain specific proportions.
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
+ }
2561
+ /**
2562
+ * Footer link component
2563
+ * Styled link for use in footer navigation columns
2564
+ */
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;
2576
+ }
2577
+ /**
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
+ * ```
2601
+ */
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;
2627
+ }
2628
+ /**
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.
2632
+ */
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';
2644
+ }
2645
+ /**
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.
2649
+ */
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;
2685
+ }
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;
2709
+ }
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';
2730
+ }
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';
2760
+ }
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';
2795
+ }
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';
2818
+ }
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;
2898
+ }
2899
+ /**
2900
+ * Input field component with label, description, and error states.
2901
+ * Supports various input types and validation states.
785
2902
  */
786
- interface AfAspectRatio {
2903
+ interface AfInput {
787
2904
  /**
788
- * 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.
789
- * @example <af-aspect-ratio ratio="16:9">Content</af-aspect-ratio> <af-aspect-ratio ratio="1.618 / 1">Content</af-aspect-ratio>
790
- * @default '1:1'
2905
+ * Autocomplete attribute for the input
791
2906
  */
792
- "ratio"?: string;
793
- }
794
- interface AfButton {
2907
+ "autocomplete"?: string;
795
2908
  /**
796
- * Use on dark backgrounds for better contrast
2909
+ * Whether to show a clear button when input has value
797
2910
  * @default false
798
2911
  */
799
- "darkBackground"?: boolean;
2912
+ "clearable"?: boolean;
800
2913
  /**
801
- * Whether the button is disabled
2914
+ * Description text displayed below the label
2915
+ */
2916
+ "description"?: string;
2917
+ /**
2918
+ * Whether the input is disabled
802
2919
  * @default false
803
2920
  */
804
2921
  "disabled"?: boolean;
805
2922
  /**
806
- * Optional href to render as a link
2923
+ * Error message to display (also sets error state)
807
2924
  */
808
- "href"?: string;
2925
+ "error"?: string;
809
2926
  /**
810
- * The size of the button
811
- * @default 'default'
2927
+ * The label text for the input field
812
2928
  */
813
- "size"?: 'default' | 'small';
2929
+ "label"?: string;
814
2930
  /**
815
- * Button type (when not using href)
816
- * @default 'button'
2931
+ * Maximum length of input value
817
2932
  */
818
- "type"?: 'button' | 'submit' | 'reset';
2933
+ "maxlength"?: number;
819
2934
  /**
820
- * The visual variant of the button
821
- * @default 'primary'
2935
+ * Minimum length of input value
822
2936
  */
823
- "variant"?: 'primary' | 'secondary' | 'outline' | 'ghost';
824
- }
825
- interface AfButtonGroup {
2937
+ "minlength"?: number;
826
2938
  /**
827
- * Layout direction of the button group
828
- * @default 'horizontal'
2939
+ * The name of the input for form submission
829
2940
  */
830
- "direction"?: 'horizontal' | 'vertical';
2941
+ "name"?: string;
831
2942
  /**
832
- * Gap between buttons
833
- * @default '8px'
2943
+ * Emitted when the input loses focus
834
2944
  */
835
- "gap"?: string;
836
- }
837
- interface AfCard {
2945
+ "onAfBlur"?: (event: AfInputCustomEvent<void>) => void;
838
2946
  /**
839
- * Background color for the card (CSS color value)
2947
+ * Emitted when the clear button is clicked
840
2948
  */
841
- "backgroundColor"?: string;
2949
+ "onAfClear"?: (event: AfInputCustomEvent<void>) => void;
842
2950
  /**
843
- * Background image URL for the card
2951
+ * Emitted when the input gains focus
844
2952
  */
845
- "backgroundImage"?: string;
2953
+ "onAfFocus"?: (event: AfInputCustomEvent<void>) => void;
846
2954
  /**
847
- * Whether to apply a dark gradient overlay (for cards with background images)
848
- * @default false
2955
+ * Emitted when the info icon is clicked
849
2956
  */
850
- "darkOverlay"?: boolean;
851
- }
852
- /**
853
- * Infinite scrolling carousel for client logos
854
- */
855
- interface AfClientCarousel {
2957
+ "onAfInfoClick"?: (event: AfInputCustomEvent<void>) => void;
2958
+ /**
2959
+ * Emitted when the input value changes
2960
+ */
2961
+ "onAfInput"?: (event: AfInputCustomEvent<{ value: string }>) => void;
856
2962
  /**
857
- * Headline text
858
- * @default "Trusted by some of the world's leading organisations"
2963
+ * Pattern for input validation (regex)
859
2964
  */
860
- "headlineText"?: string;
2965
+ "pattern"?: string;
861
2966
  /**
862
- * Show headline above carousel
2967
+ * Placeholder text for the input
2968
+ */
2969
+ "placeholder"?: string;
2970
+ /**
2971
+ * Whether the input is read-only
863
2972
  * @default false
864
2973
  */
865
- "showHeadline"?: boolean;
866
- }
867
- interface AfColorSwatch {
2974
+ "readonly"?: boolean;
868
2975
  /**
869
- * Color value (hex)
2976
+ * Whether the input is required
2977
+ * @default false
870
2978
  */
871
- "color": string;
2979
+ "required"?: boolean;
872
2980
  /**
873
- * Color name
2981
+ * Whether to show the info icon next to the label
2982
+ * @default false
874
2983
  */
875
- "name": string;
2984
+ "showInfoIcon"?: boolean;
876
2985
  /**
877
- * Size variant
878
- * @default 'default'
2986
+ * Whether to show a search icon in the input
2987
+ * @default false
879
2988
  */
880
- "size"?: 'default' | 'large';
881
- }
882
- /**
883
- * Contact item component for footer
884
- * Displays a label and value pair (e.g., "Sales enquiries" / "contact@example.com")
885
- */
886
- interface AfContactItem {
2989
+ "showSearchIcon"?: boolean;
887
2990
  /**
888
- * Contact label (e.g., "Sales enquiries")
889
- * @default ''
2991
+ * The input type (text, email, password, number, tel, url, search)
2992
+ * @default 'text'
890
2993
  */
891
- "label"?: string;
2994
+ "type"?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
892
2995
  /**
893
- * Contact value (e.g., email address)
2996
+ * The current value of the input
894
2997
  * @default ''
895
2998
  */
896
2999
  "value"?: string;
897
3000
  }
898
3001
  /**
899
- * A responsive container component that provides consistent margins and max-width
900
- * constraints based on the Affinda grid system.
3002
+ * Affinda logo component
901
3003
  */
902
- interface AfContainer {
903
- /**
904
- * 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
905
- * @default 'xlarge'
906
- */
907
- "maxWidth"?: 'xlarge' | 'large' | 'medium' | 'fluid';
3004
+ interface AfLogo {
3005
+ }
3006
+ /**
3007
+ * A rounded container for displaying client logos
3008
+ */
3009
+ interface AfLogoWell {
908
3010
  }
909
3011
  /**
910
- * Call-to-action section component with illustration and decorative background
911
- * A flexible CTA section with customizable content, buttons, and optional illustration
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
912
3020
  */
913
- interface AfCtaSection {
3021
+ interface AfNavCard {
914
3022
  /**
915
- * Section description
916
- * @default ''
3023
+ * The headline text displayed over the image
917
3024
  */
918
- "description"?: string;
3025
+ "heading"?: string;
919
3026
  /**
920
- * Section heading
921
- * @default ''
3027
+ * URL to navigate to when clicked
922
3028
  */
923
- "heading"?: string;
3029
+ "href"?: string;
924
3030
  /**
925
- * Illustration URL - if provided, displays this image
3031
+ * Alternative text for the image
926
3032
  * @default ''
927
3033
  */
928
- "illustrationUrl"?: string;
3034
+ "imageAlt"?: string;
929
3035
  /**
930
- * Primary button text
931
- * @default ''
3036
+ * Image source URL for the background
932
3037
  */
933
- "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 {
934
3045
  /**
935
- * Primary button URL
936
- * @default '#'
3046
+ * Whether this nav item is currently active/selected
3047
+ * @default false
937
3048
  */
938
- "primaryButtonUrl"?: string;
3049
+ "active"?: boolean;
939
3050
  /**
940
- * Secondary button text (optional - if empty, button won't show)
941
- * @default ''
3051
+ * Breakpoint variant for responsive styling - 'desktop': Desktop-specific styles - 'mobile': Mobile-specific styles (larger text, different spacing)
3052
+ * @default 'desktop'
942
3053
  */
943
- "secondaryButtonText"?: string;
3054
+ "breakpoint"?: 'desktop' | 'mobile';
944
3055
  /**
945
- * Secondary button URL
946
- * @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'
947
3058
  */
948
- "secondaryButtonUrl"?: string;
3059
+ "hierarchy"?: 'primary' | 'secondary';
949
3060
  /**
950
- * Whether to show the decorative wave background
951
- * @default true
3061
+ * URL to navigate to when clicked
952
3062
  */
953
- "showWaveDecoration"?: boolean;
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';
954
3069
  }
955
3070
  /**
956
- * Feature accordion component with expandable items and accompanying image
957
- * Used for showcasing product features with visual examples
958
- * 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.
959
3073
  */
960
- interface AfFeatureAccordion {
3074
+ interface AfNavMenu {
961
3075
  /**
962
- * Whether auto-cycling is enabled
963
- * @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'
964
3078
  */
965
- "autoCycle"?: boolean;
3079
+ "breakpoint"?: 'desktop' | 'mobile';
966
3080
  /**
967
- * Auto-cycle interval in milliseconds (default: 6000ms = 6 seconds)
968
- * @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
969
3083
  */
970
- "cycleInterval"?: number;
3084
+ "cardStyle"?: boolean;
971
3085
  /**
972
- * Section heading
973
- * @default 'Give AI agents your paperwork'
3086
+ * The heading text displayed above the navigation items
974
3087
  */
975
3088
  "heading"?: string;
976
3089
  /**
977
- * JSON string of accordion items
978
- * @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
979
3092
  */
980
- "items"?: string;
3093
+ "showBorder"?: boolean;
981
3094
  }
982
3095
  /**
983
- * Footer component for marketing pages
984
- * Provides a flexible, slot-based layout for footer content
985
- * 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
+ * ```
986
3111
  */
987
- interface AfFooter {
3112
+ interface AfNavMenuNest {
988
3113
  /**
989
- * Copyright text (e.g., 2025 Company Name. All rights reserved.")
990
- * @default ''
3114
+ * Breakpoint variant for responsive styling - 'desktop': Horizontal multi-column layout - 'mobile': Vertical stacked layout
3115
+ * @default 'desktop'
991
3116
  */
992
- "copyrightText"?: string;
3117
+ "breakpoint"?: 'desktop' | 'mobile';
993
3118
  /**
994
- * 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.
995
3120
  * @default true
996
3121
  */
997
- "showStatus"?: boolean;
3122
+ "showSidebarBorder"?: boolean;
998
3123
  /**
999
- * Status message text
1000
- * @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'
1001
3126
  */
1002
- "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 {
1003
3137
  /**
1004
- * Status page URL
1005
- * @default ''
3138
+ * Whether to show the default Affinda logo when no logo slot content is provided
3139
+ * @default true
1006
3140
  */
1007
- "statusUrl"?: string;
3141
+ "showDefaultLogo"?: boolean;
1008
3142
  /**
1009
- * Whether systems are operational (shows green/red indicator)
1010
- * @default true
3143
+ * Theme for the spacer background - should match the section below the navbar
1011
3144
  */
1012
- "systemsOperational"?: boolean;
3145
+ "theme"?: 'white' | 'inkwell' | 'mist-green' | 'soft-clay';
1013
3146
  }
1014
3147
  /**
1015
- * Footer navigation column component
1016
- * 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
+ * ```
1017
3154
  */
1018
- interface AfFooterColumn {
3155
+ interface AfNumberBadge {
1019
3156
  /**
1020
- * Column heading
1021
- * @default ''
3157
+ * The number to display (1-10)
3158
+ * @default 1
1022
3159
  */
1023
- "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;
1024
3171
  }
1025
3172
  /**
1026
- * Footer link component
1027
- * 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.
1028
3176
  */
1029
- interface AfFooterLink {
3177
+ interface AfProgressLine {
1030
3178
  /**
1031
- * 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
1032
3195
  * @default false
1033
3196
  */
1034
- "external"?: boolean;
3197
+ "checked"?: boolean;
1035
3198
  /**
1036
- * Link URL
1037
- * @default '#'
3199
+ * Whether the radio is disabled
3200
+ * @default false
1038
3201
  */
1039
- "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;
1040
3215
  }
1041
- 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 {
1042
3221
  /**
1043
- * Visual alignment
1044
- * @default 'left'
3222
+ * Whether to include a Container wrapper
3223
+ * @default true
1045
3224
  */
1046
- "align"?: 'left' | 'center' | 'right';
3225
+ "container"?: boolean;
1047
3226
  /**
1048
- * Heading level
1049
- * @default '1'
3227
+ * Padding variant
3228
+ * @default 'default'
1050
3229
  */
1051
- "level"?: 'xl' | '1' | '2' | '3' | '4' | '5';
3230
+ "padding"?: 'tight' | 'default' | 'loose';
1052
3231
  /**
1053
- * Theme for dark backgrounds
1054
- * @default 'light'
3232
+ * Theme - sets background color and provides theme context to children
3233
+ * @default 'white'
1055
3234
  */
1056
- "theme"?: 'light' | 'dark';
3235
+ "theme"?: 'white' | 'inkwell' | 'mist-green' | 'soft-clay' | 'white-ivory';
1057
3236
  }
1058
3237
  /**
1059
- * Hero section component for marketing pages
3238
+ * Social media link component
3239
+ * Circular bordered icon link for social media profiles
1060
3240
  */
1061
- interface AfHeroSection {
3241
+ interface AfSocialLink {
1062
3242
  /**
1063
- * Minimum height
1064
- * @default '60vh'
3243
+ * Link URL
3244
+ * @default '#'
1065
3245
  */
1066
- "minHeight"?: string;
3246
+ "href"?: string;
1067
3247
  /**
1068
- * Hero variant
1069
- * @default 'dark'
3248
+ * Icon type: 'linkedin', 'youtube', 'github', 'twitter', 'facebook', or 'custom'
3249
+ * @default 'custom'
1070
3250
  */
1071
- "variant"?: 'light' | 'dark';
3251
+ "icon"?: 'linkedin' | 'youtube' | 'github' | 'twitter' | 'facebook' | 'custom';
1072
3252
  /**
1073
- * Show decorative paperclip
1074
- * @default false
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;
3275
+ /**
3276
+ * Padding variant
3277
+ * @default 'default'
3278
+ */
3279
+ "padding"?: 'tight' | 'default' | 'loose';
3280
+ /**
3281
+ * Theme for the top half of the section
3282
+ * @default 'mist-green'
1075
3283
  */
1076
- "withDecoration"?: boolean;
3284
+ "topTheme"?: Theme;
1077
3285
  }
1078
- interface AfIconButton {
3286
+ /**
3287
+ * Switch component for toggling between on and off states.
3288
+ */
3289
+ interface AfSwitch {
1079
3290
  /**
1080
- * Accessible label for screen readers
3291
+ * Whether the switch is active (on)
3292
+ * @default false
1081
3293
  */
1082
- "ariaLabel": string;
3294
+ "active"?: boolean;
1083
3295
  /**
1084
- * Whether the button is disabled
3296
+ * Whether the switch is disabled
1085
3297
  * @default false
1086
3298
  */
1087
3299
  "disabled"?: boolean;
1088
3300
  /**
1089
- * Optional href to render as a link
1090
- */
1091
- "href"?: string;
1092
- /**
1093
- * The size of the button
1094
- * @default 'medium'
3301
+ * The name of the switch for form submission
1095
3302
  */
1096
- "size"?: 'large' | 'medium' | 'small';
3303
+ "name"?: string;
1097
3304
  /**
1098
- * Button type (when not using href)
1099
- * @default 'button'
3305
+ * Emitted when the switch state changes
1100
3306
  */
1101
- "type"?: 'button' | 'submit' | 'reset';
3307
+ "onAfChange"?: (event: AfSwitchCustomEvent<{ active: boolean }>) => void;
1102
3308
  /**
1103
- * The visual variant of the button
1104
- * @default 'primary'
3309
+ * The value of the switch for form submission
1105
3310
  */
1106
- "variant"?: 'primary' | 'secondary' | 'outline' | 'ghost';
3311
+ "value"?: string;
1107
3312
  }
1108
3313
  /**
1109
- * Logo component with default Affinda branding
1110
- * Can be customized with a custom logo URL or by using the slot
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
+ * ```
1111
3325
  */
1112
- interface AfLogo {
3326
+ interface AfTab {
1113
3327
  /**
1114
- * Alt text for the logo
1115
- * @default 'Affinda'
3328
+ * Whether the tab is currently active/selected
3329
+ * @default false
1116
3330
  */
1117
- "alt"?: string;
3331
+ "active"?: boolean;
1118
3332
  /**
1119
- * Custom logo image URL. If provided, displays this instead of the default Affinda logo
3333
+ * Whether the tab is disabled
3334
+ * @default false
1120
3335
  */
1121
- "src"?: string;
1122
- }
1123
- /**
1124
- * A rounded container for displaying client logos
1125
- */
1126
- interface AfLogoWell {
1127
- }
1128
- /**
1129
- * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
1130
- * Supports multiple hierarchy levels, variants, and states (active, hover).
1131
- */
1132
- interface AfNavItem {
3336
+ "disabled"?: boolean;
1133
3337
  /**
1134
- * Whether this nav item is currently active/selected
3338
+ * Whether to show the icon slot
1135
3339
  * @default false
1136
3340
  */
1137
- "active"?: boolean;
3341
+ "displayIcon"?: boolean;
1138
3342
  /**
1139
- * Visual hierarchy level of the navigation item - 'primary': Bold, main navigation (larger text, prominent styling) - 'secondary': Lighter, sub-navigation (smaller text, subtle styling)
1140
- * @default 'primary'
3343
+ * Whether to show the number badge slot
3344
+ * @default false
1141
3345
  */
1142
- "hierarchy"?: 'primary' | 'secondary';
3346
+ "displayNumber"?: boolean;
1143
3347
  /**
1144
- * URL to navigate to when clicked
3348
+ * The text label for the tab
3349
+ * @default ''
1145
3350
  */
1146
- "href"?: string;
3351
+ "label"?: string;
1147
3352
  /**
1148
- * Visual variant within the hierarchy level - '01': Darker/more prominent styling - '02': Lighter/more subtle styling
1149
- * @default '01'
3353
+ * Emitted when the tab is clicked
1150
3354
  */
1151
- "variant"?: '01' | '02';
1152
- }
1153
- /**
1154
- * A full-width navigation bar component that provides the main site navigation.
1155
- * Features a pill-shaped container with logo, navigation links, and action buttons.
1156
- * Includes mobile hamburger menu.
1157
- * The logo slot can be used to provide a custom logo. If no logo is provided,
1158
- * the default Affinda logo will be displayed.
1159
- */
1160
- interface AfNavbar {
3355
+ "onAfTabClick"?: (event: AfTabCustomEvent<{ value?: string }>) => void;
1161
3356
  /**
1162
- * Whether to show the default Affinda logo when no logo slot content is provided
1163
- * @default true
3357
+ * Visual shape variant - `square` - Rectangular tab with bottom border indicator - `pill` - Rounded pill shape with background for active state
3358
+ * @default 'square'
1164
3359
  */
1165
- "showDefaultLogo"?: boolean;
3360
+ "shape"?: TabShape;
3361
+ /**
3362
+ * Unique value for the tab, used for programmatic selection
3363
+ */
3364
+ "value"?: string;
1166
3365
  }
1167
3366
  /**
1168
- * 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
+ * ```
1169
3376
  */
1170
- interface AfSection {
3377
+ interface AfTabBar {
1171
3378
  /**
1172
- * Background color
1173
- * @default 'white'
1174
- */
1175
- "background"?: 'white' | 'level1' | 'dark' | 'inkwell';
1176
- /**
1177
- * Whether to include a Container wrapper
1178
- * @default true
3379
+ * Responsive breakpoint mode - `mobile` - Compact layout with smaller padding - `desktop` - Larger layout with more generous spacing
3380
+ * @default 'desktop'
1179
3381
  */
1180
- "container"?: boolean;
3382
+ "breakpoint"?: TabBarBreakpoint;
1181
3383
  /**
1182
- * Padding variant
1183
- * @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'
1184
3386
  */
1185
- "padding"?: 'tight' | 'default' | 'loose';
3387
+ "shape"?: TabBarShape;
1186
3388
  }
1187
3389
  /**
1188
- * Social media link component
1189
- * 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
+ * ```
1190
3397
  */
1191
- interface AfSocialLink {
3398
+ interface AfTag {
1192
3399
  /**
1193
- * Link URL
1194
- * @default '#'
3400
+ * The URL to navigate to when the tag is clicked (makes the tag a link)
1195
3401
  */
1196
3402
  "href"?: string;
1197
3403
  /**
1198
- * Icon type: 'linkedin', 'youtube', 'github', 'twitter', 'facebook', or 'custom'
1199
- * @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'
1200
3406
  */
1201
- "icon"?: 'linkedin' | 'youtube' | 'github' | 'twitter' | 'facebook' | 'custom';
3407
+ "size"?: TagSize;
1202
3408
  /**
1203
- * Accessible label for the link
1204
- * @default ''
3409
+ * The visual variant of the tag - `sand` - Soft-clay/tan colored background (default) - `light` - Mist-green/light colored background
3410
+ * @default 'sand'
1205
3411
  */
1206
- "label"?: string;
3412
+ "variant"?: TagVariant;
1207
3413
  }
1208
3414
  interface AfTestimonial {
1209
3415
  /**
@@ -1214,10 +3420,28 @@ declare namespace LocalJSX {
1214
3420
  * Background image URL for the testimonial card
1215
3421
  */
1216
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;
1217
3433
  /**
1218
3434
  * Company logo URL
1219
3435
  */
1220
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;
1221
3445
  /**
1222
3446
  * Testimonial quote text
1223
3447
  */
@@ -1226,7 +3450,17 @@ declare namespace LocalJSX {
1226
3450
  * Link to full case study
1227
3451
  */
1228
3452
  "readMoreLink"?: string;
3453
+ /**
3454
+ * Whether to show built-in navigation buttons (used when in a carousel)
3455
+ * @default false
3456
+ */
3457
+ "showNavigation"?: boolean;
1229
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
+ */
1230
3464
  interface AfTestimonialCarousel {
1231
3465
  }
1232
3466
  interface AfTestimonialStat {
@@ -1244,6 +3478,11 @@ declare namespace LocalJSX {
1244
3478
  */
1245
3479
  "value": string;
1246
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
+ */
1247
3486
  interface AfText {
1248
3487
  /**
1249
3488
  * Visual alignment
@@ -1255,16 +3494,144 @@ declare namespace LocalJSX {
1255
3494
  * @default 'p'
1256
3495
  */
1257
3496
  "as"?: 'p' | 'span' | 'div' | 'label';
1258
- /**
1259
- * Theme for dark backgrounds
1260
- * @default 'light'
1261
- */
1262
- "theme"?: 'light' | 'dark';
1263
3497
  /**
1264
3498
  * Text variant
1265
3499
  * @default 'medium'
1266
3500
  */
1267
- "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;
1268
3635
  }
1269
3636
  interface AfTypographyLockup {
1270
3637
  /**
@@ -1292,34 +3659,98 @@ declare namespace LocalJSX {
1292
3659
  */
1293
3660
  "textAlignment"?: 'left' | 'center';
1294
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
+ }
1295
3700
  interface IntrinsicElements {
1296
3701
  "af-aspect-ratio": AfAspectRatio;
1297
3702
  "af-button": AfButton;
1298
3703
  "af-button-group": AfButtonGroup;
1299
3704
  "af-card": AfCard;
3705
+ "af-checkbox": AfCheckbox;
1300
3706
  "af-client-carousel": AfClientCarousel;
1301
3707
  "af-color-swatch": AfColorSwatch;
1302
3708
  "af-contact-item": AfContactItem;
1303
3709
  "af-container": AfContainer;
1304
- "af-cta-section": AfCtaSection;
1305
3710
  "af-feature-accordion": AfFeatureAccordion;
3711
+ "af-feature-card": AfFeatureCard;
3712
+ "af-feature-grid": AfFeatureGrid;
3713
+ "af-fieldset": AfFieldset;
1306
3714
  "af-footer": AfFooter;
1307
3715
  "af-footer-column": AfFooterColumn;
1308
3716
  "af-footer-link": AfFooterLink;
3717
+ "af-grid-callout": AfGridCallout;
1309
3718
  "af-heading": AfHeading;
1310
3719
  "af-hero-section": AfHeroSection;
3720
+ "af-icon": AfIcon;
3721
+ "af-icon-box": AfIconBox;
1311
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;
1312
3728
  "af-logo": AfLogo;
1313
3729
  "af-logo-well": AfLogoWell;
3730
+ "af-nav-card": AfNavCard;
1314
3731
  "af-nav-item": AfNavItem;
3732
+ "af-nav-menu": AfNavMenu;
3733
+ "af-nav-menu-nest": AfNavMenuNest;
1315
3734
  "af-navbar": AfNavbar;
3735
+ "af-number-badge": AfNumberBadge;
3736
+ "af-progress-line": AfProgressLine;
3737
+ "af-radio": AfRadio;
1316
3738
  "af-section": AfSection;
1317
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;
1318
3745
  "af-testimonial": AfTestimonial;
1319
3746
  "af-testimonial-carousel": AfTestimonialCarousel;
1320
3747
  "af-testimonial-stat": AfTestimonialStat;
1321
3748
  "af-text": AfText;
3749
+ "af-text-image": AfTextImage;
3750
+ "af-text-image-nest": AfTextImageNest;
3751
+ "af-textarea": AfTextarea;
1322
3752
  "af-typography-lockup": AfTypographyLockup;
3753
+ "af-video-container": AfVideoContainer;
1323
3754
  }
1324
3755
  }
1325
3756
  export { LocalJSX as JSX };
@@ -1331,11 +3762,30 @@ declare module "@stencil/core" {
1331
3762
  * Useful for images, videos, or any content that needs to maintain specific proportions.
1332
3763
  */
1333
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
+ */
1334
3770
  "af-button": LocalJSX.AfButton & JSXBase.HTMLAttributes<HTMLAfButtonElement>;
1335
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
+ */
1336
3778
  "af-card": LocalJSX.AfCard & JSXBase.HTMLAttributes<HTMLAfCardElement>;
1337
3779
  /**
1338
- * 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.
1339
3789
  */
1340
3790
  "af-client-carousel": LocalJSX.AfClientCarousel & JSXBase.HTMLAttributes<HTMLAfClientCarouselElement>;
1341
3791
  "af-color-swatch": LocalJSX.AfColorSwatch & JSXBase.HTMLAttributes<HTMLAfColorSwatchElement>;
@@ -1350,16 +3800,38 @@ declare module "@stencil/core" {
1350
3800
  */
1351
3801
  "af-container": LocalJSX.AfContainer & JSXBase.HTMLAttributes<HTMLAfContainerElement>;
1352
3802
  /**
1353
- * Call-to-action section component with illustration and decorative background
1354
- * A flexible CTA section with customizable content, buttons, and optional illustration
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
+ * ```
1355
3813
  */
1356
- "af-cta-section": LocalJSX.AfCtaSection & JSXBase.HTMLAttributes<HTMLAfCtaSectionElement>;
3814
+ "af-feature-accordion": LocalJSX.AfFeatureAccordion & JSXBase.HTMLAttributes<HTMLAfFeatureAccordionElement>;
1357
3815
  /**
1358
- * Feature accordion component with expandable items and accompanying image
1359
- * Used for showcasing product features with visual examples
1360
- * 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.
1361
3822
  */
1362
- "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>;
1363
3835
  /**
1364
3836
  * Footer component for marketing pages
1365
3837
  * Provides a flexible, slot-based layout for footer content
@@ -1376,36 +3848,193 @@ declare module "@stencil/core" {
1376
3848
  * Styled link for use in footer navigation columns
1377
3849
  */
1378
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
+ */
1379
3882
  "af-heading": LocalJSX.AfHeading & JSXBase.HTMLAttributes<HTMLAfHeadingElement>;
1380
3883
  /**
1381
- * 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.
1382
3887
  */
1383
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>;
1384
3909
  "af-icon-button": LocalJSX.AfIconButton & JSXBase.HTMLAttributes<HTMLAfIconButtonElement>;
1385
3910
  /**
1386
- * Logo component with default Affinda branding
1387
- * Can be customized with a custom logo URL or by using the slot
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>;
3961
+ /**
3962
+ * Affinda logo component
1388
3963
  */
1389
3964
  "af-logo": LocalJSX.AfLogo & JSXBase.HTMLAttributes<HTMLAfLogoElement>;
1390
3965
  /**
1391
3966
  * A rounded container for displaying client logos
1392
3967
  */
1393
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>;
1394
3980
  /**
1395
3981
  * A generic navigation item component that can be used in navigation bars, menus, and sidebars.
1396
3982
  * Supports multiple hierarchy levels, variants, and states (active, hover).
1397
3983
  */
1398
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>;
1399
4008
  /**
1400
4009
  * A full-width navigation bar component that provides the main site navigation.
1401
4010
  * Features a pill-shaped container with logo, navigation links, and action buttons.
1402
- * Includes mobile hamburger menu.
4011
+ * Includes mobile hamburger menu and support for mega-menu dropdowns.
1403
4012
  * The logo slot can be used to provide a custom logo. If no logo is provided,
1404
4013
  * the default Affinda logo will be displayed.
1405
4014
  */
1406
4015
  "af-navbar": LocalJSX.AfNavbar & JSXBase.HTMLAttributes<HTMLAfNavbarElement>;
1407
4016
  /**
1408
- * 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.
1409
4038
  */
1410
4039
  "af-section": LocalJSX.AfSection & JSXBase.HTMLAttributes<HTMLAfSectionElement>;
1411
4040
  /**
@@ -1413,11 +4042,108 @@ declare module "@stencil/core" {
1413
4042
  * Circular bordered icon link for social media profiles
1414
4043
  */
1415
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>;
1416
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
+ */
1417
4098
  "af-testimonial-carousel": LocalJSX.AfTestimonialCarousel & JSXBase.HTMLAttributes<HTMLAfTestimonialCarouselElement>;
1418
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
+ */
1419
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>;
1420
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>;
1421
4147
  }
1422
4148
  }
1423
4149
  }