@affinda/wc 0.0.7 → 0.0.8

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 (218) hide show
  1. package/dist/affinda/af-button.entry.esm.js.map +1 -1
  2. package/dist/affinda/af-card.entry.esm.js.map +1 -1
  3. package/dist/affinda/af-client-carousel.entry.esm.js.map +1 -0
  4. package/dist/affinda/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.esm.js.map +1 -1
  5. package/dist/affinda/af-hero-section.entry.esm.js.map +1 -0
  6. package/dist/affinda/af-logo-well.entry.esm.js.map +1 -0
  7. package/dist/affinda/af-section.entry.esm.js.map +1 -0
  8. package/dist/affinda/af-testimonial-carousel.entry.esm.js.map +1 -1
  9. package/dist/affinda/affinda.css +1 -1
  10. package/dist/affinda/affinda.esm.js +1 -1
  11. package/dist/affinda/index.esm.js +1 -1
  12. package/dist/affinda/p-0c4a30a4.entry.js +2 -0
  13. package/dist/affinda/p-0c4a30a4.entry.js.map +1 -0
  14. package/dist/affinda/p-0fb55acf.entry.js +2 -0
  15. package/dist/affinda/{p-56284540.entry.js.map → p-0fb55acf.entry.js.map} +1 -1
  16. package/dist/affinda/p-10288f13.entry.js +2 -0
  17. package/dist/affinda/p-10288f13.entry.js.map +1 -0
  18. package/dist/affinda/p-13c30dd8.entry.js +2 -0
  19. package/dist/affinda/p-13c30dd8.entry.js.map +1 -0
  20. package/dist/affinda/{p-c8628633.entry.js → p-23aedaa4.entry.js} +2 -2
  21. package/dist/affinda/{p-eff7eff1.entry.js → p-39e917eb.entry.js} +2 -2
  22. package/dist/affinda/{p-16c84e60.entry.js → p-430127fa.entry.js} +2 -2
  23. package/dist/affinda/{p-43324b6d.entry.js → p-45d0f3e3.entry.js} +2 -2
  24. package/dist/affinda/p-45d0f3e3.entry.js.map +1 -0
  25. package/dist/affinda/{p-f53b4847.entry.js → p-46edc753.entry.js} +2 -2
  26. package/dist/affinda/{p-32f46944.entry.js → p-56a15842.entry.js} +2 -2
  27. package/dist/affinda/p-7c115698.entry.js +2 -0
  28. package/dist/affinda/p-7c115698.entry.js.map +1 -0
  29. package/dist/affinda/p-867c5141.entry.js +2 -0
  30. package/dist/affinda/{p-UbNmjSSX.js → p-Agei6ZJQ.js} +3 -3
  31. package/dist/affinda/p-Agei6ZJQ.js.map +1 -0
  32. package/dist/affinda/{p-750a694b.entry.js → p-d7ff9fd9.entry.js} +2 -2
  33. package/dist/affinda/{p-9e5bef28.entry.js → p-e2c40f4e.entry.js} +2 -2
  34. package/dist/affinda/{p-9e5bef28.entry.js.map → p-e2c40f4e.entry.js.map} +1 -1
  35. package/dist/affinda/p-e56182e4.entry.js +2 -0
  36. package/dist/affinda/p-e56182e4.entry.js.map +1 -0
  37. package/dist/affinda/{p-66daadde.entry.js → p-f6f2f1c4.entry.js} +2 -2
  38. package/dist/cjs/af-aspect-ratio.cjs.entry.js +1 -1
  39. package/dist/cjs/af-button-group.cjs.entry.js +2 -2
  40. package/dist/cjs/af-button.cjs.entry.js +7 -2
  41. package/dist/cjs/af-button.entry.cjs.js.map +1 -1
  42. package/dist/cjs/af-card.cjs.entry.js +3 -3
  43. package/dist/cjs/af-card.entry.cjs.js.map +1 -1
  44. package/dist/cjs/af-client-carousel.cjs.entry.js +22 -0
  45. package/dist/cjs/af-client-carousel.entry.cjs.js.map +1 -0
  46. package/dist/cjs/af-color-swatch.cjs.entry.js +1 -1
  47. package/dist/cjs/af-container.cjs.entry.js +1 -1
  48. package/dist/cjs/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.cjs.js.map +1 -1
  49. package/dist/cjs/af-heading_5.cjs.entry.js +22 -12
  50. package/dist/cjs/af-hero-section.cjs.entry.js +24 -0
  51. package/dist/cjs/af-hero-section.entry.cjs.js.map +1 -0
  52. package/dist/cjs/af-icon-button.cjs.entry.js +1 -1
  53. package/dist/cjs/af-logo-well.cjs.entry.js +18 -0
  54. package/dist/cjs/af-logo-well.entry.cjs.js.map +1 -0
  55. package/dist/cjs/af-section.cjs.entry.js +25 -0
  56. package/dist/cjs/af-section.entry.cjs.js.map +1 -0
  57. package/dist/cjs/af-testimonial-carousel.cjs.entry.js +4 -4
  58. package/dist/cjs/af-testimonial-carousel.entry.cjs.js.map +1 -1
  59. package/dist/cjs/af-testimonial-stat.cjs.entry.js +2 -2
  60. package/dist/cjs/af-testimonial.cjs.entry.js +2 -2
  61. package/dist/cjs/af-typography-lockup.cjs.entry.js +2 -2
  62. package/dist/cjs/affinda.cjs.js +2 -2
  63. package/dist/cjs/{index-CNijn8X5.js → index-D_ItFcqt.js} +3 -3
  64. package/dist/cjs/index-D_ItFcqt.js.map +1 -0
  65. package/dist/cjs/index.cjs.js +1 -1
  66. package/dist/cjs/loader.cjs.js +2 -2
  67. package/dist/collection/assets/paperclip-decoration.svg +3 -0
  68. package/dist/collection/collection-manifest.json +4 -0
  69. package/dist/collection/components/af-button/af-button.js +26 -1
  70. package/dist/collection/components/af-button/af-button.js.map +1 -1
  71. package/dist/collection/components/af-button-group/af-button-group.js +1 -1
  72. package/dist/collection/components/af-card/af-card.css +10 -7
  73. package/dist/collection/components/af-card/af-card.js +1 -1
  74. package/dist/collection/components/af-client-carousel/af-client-carousel.css +112 -0
  75. package/dist/collection/components/af-client-carousel/af-client-carousel.js +72 -0
  76. package/dist/collection/components/af-client-carousel/af-client-carousel.js.map +1 -0
  77. package/dist/collection/components/af-heading/af-heading.css +9 -0
  78. package/dist/collection/components/af-heading/af-heading.js +26 -3
  79. package/dist/collection/components/af-heading/af-heading.js.map +1 -1
  80. package/dist/collection/components/af-hero-section/af-hero-section.css +69 -0
  81. package/dist/collection/components/af-hero-section/af-hero-section.js +94 -0
  82. package/dist/collection/components/af-hero-section/af-hero-section.js.map +1 -0
  83. package/dist/collection/components/af-logo/af-logo.js +1 -1
  84. package/dist/collection/components/af-logo-well/af-logo-well.css +27 -0
  85. package/dist/collection/components/af-logo-well/af-logo-well.js +22 -0
  86. package/dist/collection/components/af-logo-well/af-logo-well.js.map +1 -0
  87. package/dist/collection/components/af-navbar/af-navbar.css +40 -3
  88. package/dist/collection/components/af-navbar/af-navbar.js +13 -1
  89. package/dist/collection/components/af-navbar/af-navbar.js.map +1 -1
  90. package/dist/collection/components/af-section/af-section.css +52 -0
  91. package/dist/collection/components/af-section/af-section.js +95 -0
  92. package/dist/collection/components/af-section/af-section.js.map +1 -0
  93. package/dist/collection/components/af-testimonial/af-testimonial.js +1 -1
  94. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.css +3 -2
  95. package/dist/collection/components/af-testimonial-carousel/af-testimonial-carousel.js +2 -2
  96. package/dist/collection/components/af-testimonial-stat/af-testimonial-stat.js +1 -1
  97. package/dist/collection/components/af-text/af-text.css +9 -0
  98. package/dist/collection/components/af-text/af-text.js +26 -3
  99. package/dist/collection/components/af-text/af-text.js.map +1 -1
  100. package/dist/collection/components/af-typography-lockup/af-typography-lockup.js +1 -1
  101. package/dist/components/af-aspect-ratio.js +1 -1
  102. package/dist/components/af-button-group.js +1 -1
  103. package/dist/components/af-button.js +1 -1
  104. package/dist/components/af-card.js +3 -3
  105. package/dist/components/af-card.js.map +1 -1
  106. package/dist/components/af-client-carousel.d.ts +11 -0
  107. package/dist/components/af-client-carousel.js +45 -0
  108. package/dist/components/af-client-carousel.js.map +1 -0
  109. package/dist/components/af-color-swatch.js +1 -1
  110. package/dist/components/af-container.js +1 -1
  111. package/dist/components/af-heading.js +1 -1
  112. package/dist/components/af-hero-section.d.ts +11 -0
  113. package/dist/components/af-hero-section.js +53 -0
  114. package/dist/components/af-hero-section.js.map +1 -0
  115. package/dist/components/af-icon-button.js +1 -1
  116. package/dist/components/af-logo-well.d.ts +11 -0
  117. package/dist/components/af-logo-well.js +38 -0
  118. package/dist/components/af-logo-well.js.map +1 -0
  119. package/dist/components/af-logo.js +1 -1
  120. package/dist/components/af-nav-item.js +1 -1
  121. package/dist/components/af-navbar.js +1 -1
  122. package/dist/components/af-section.d.ts +11 -0
  123. package/dist/components/af-section.js +54 -0
  124. package/dist/components/af-section.js.map +1 -0
  125. package/dist/components/af-testimonial-carousel.js +4 -4
  126. package/dist/components/af-testimonial-carousel.js.map +1 -1
  127. package/dist/components/af-testimonial-stat.js +2 -2
  128. package/dist/components/af-testimonial.js +2 -2
  129. package/dist/components/af-text.js +1 -1
  130. package/dist/components/af-typography-lockup.js +1 -1
  131. package/dist/components/index.js +13 -13
  132. package/dist/components/{p-Bxv9iL3G.js → p-BMl1ggbQ.js} +3 -3
  133. package/dist/components/{p-Bxv9iL3G.js.map → p-BMl1ggbQ.js.map} +1 -1
  134. package/dist/components/{p-KtmLxy7z.js → p-BSewwIfD.js} +3 -3
  135. package/dist/components/{p-KtmLxy7z.js.map → p-BSewwIfD.js.map} +1 -1
  136. package/dist/components/{p-Bdy85P7Z.js → p-BeQlNDyY.js} +4 -4
  137. package/dist/components/{p-Bdy85P7Z.js.map → p-BeQlNDyY.js.map} +1 -1
  138. package/dist/components/{p-DPooX_NW.js → p-BpXkQGDQ.js} +3 -3
  139. package/dist/components/{p-DPooX_NW.js.map → p-BpXkQGDQ.js.map} +1 -1
  140. package/dist/components/{p-C0zUdiRs.js → p-C1C1Him5.js} +12 -8
  141. package/dist/components/p-C1C1Him5.js.map +1 -0
  142. package/dist/components/{p-Cfj594pp.js → p-CUr7n62X.js} +3 -3
  143. package/dist/components/{p-Cfj594pp.js.map → p-CUr7n62X.js.map} +1 -1
  144. package/dist/components/{p-ChRDoPDm.js → p-CZlTvZAm.js} +3 -3
  145. package/dist/components/p-CZlTvZAm.js.map +1 -0
  146. package/dist/components/{p-D021PjqL.js → p-CcNomA2o.js} +11 -5
  147. package/dist/components/p-CcNomA2o.js.map +1 -0
  148. package/dist/components/p-Csie_upq.js +41 -0
  149. package/dist/components/p-Csie_upq.js.map +1 -0
  150. package/dist/components/{p-CLA_jBiH.js → p-D4NomvK5.js} +4 -4
  151. package/dist/components/{p-CLA_jBiH.js.map → p-D4NomvK5.js.map} +1 -1
  152. package/dist/components/{p-BuySFAGS.js → p-Vu-NeL7U.js} +12 -8
  153. package/dist/components/p-Vu-NeL7U.js.map +1 -0
  154. package/dist/components/{p-C4sw-kYH.js → p-sJI0-JlJ.js} +4 -4
  155. package/dist/components/{p-C4sw-kYH.js.map → p-sJI0-JlJ.js.map} +1 -1
  156. package/dist/components/{p-XAy0kGYd.js → p-tFlyM2Th.js} +3 -3
  157. package/dist/components/{p-XAy0kGYd.js.map → p-tFlyM2Th.js.map} +1 -1
  158. package/dist/esm/af-aspect-ratio.entry.js +1 -1
  159. package/dist/esm/af-button-group.entry.js +2 -2
  160. package/dist/esm/af-button.entry.js +7 -2
  161. package/dist/esm/af-button.entry.js.map +1 -1
  162. package/dist/esm/af-card.entry.js +3 -3
  163. package/dist/esm/af-card.entry.js.map +1 -1
  164. package/dist/esm/af-client-carousel.entry.js +20 -0
  165. package/dist/esm/af-client-carousel.entry.js.map +1 -0
  166. package/dist/esm/af-color-swatch.entry.js +1 -1
  167. package/dist/esm/af-container.entry.js +1 -1
  168. package/dist/esm/af-heading.af-logo.af-nav-item.af-navbar.af-text.entry.js.map +1 -1
  169. package/dist/esm/af-heading_5.entry.js +22 -12
  170. package/dist/esm/af-hero-section.entry.js +22 -0
  171. package/dist/esm/af-hero-section.entry.js.map +1 -0
  172. package/dist/esm/af-icon-button.entry.js +1 -1
  173. package/dist/esm/af-logo-well.entry.js +16 -0
  174. package/dist/esm/af-logo-well.entry.js.map +1 -0
  175. package/dist/esm/af-section.entry.js +23 -0
  176. package/dist/esm/af-section.entry.js.map +1 -0
  177. package/dist/esm/af-testimonial-carousel.entry.js +4 -4
  178. package/dist/esm/af-testimonial-carousel.entry.js.map +1 -1
  179. package/dist/esm/af-testimonial-stat.entry.js +2 -2
  180. package/dist/esm/af-testimonial.entry.js +2 -2
  181. package/dist/esm/af-typography-lockup.entry.js +2 -2
  182. package/dist/esm/affinda.js +3 -3
  183. package/dist/esm/{index-UbNmjSSX.js → index-Agei6ZJQ.js} +3 -3
  184. package/dist/esm/index-Agei6ZJQ.js.map +1 -0
  185. package/dist/esm/index.js +1 -1
  186. package/dist/esm/loader.js +3 -3
  187. package/dist/types/components/af-button/af-button.d.ts +4 -0
  188. package/dist/types/components/af-client-carousel/af-client-carousel.d.ts +10 -0
  189. package/dist/types/components/af-heading/af-heading.d.ts +2 -0
  190. package/dist/types/components/af-hero-section/af-hero-section.d.ts +12 -0
  191. package/dist/types/components/af-logo-well/af-logo-well.d.ts +6 -0
  192. package/dist/types/components/af-navbar/af-navbar.d.ts +3 -0
  193. package/dist/types/components/af-section/af-section.d.ts +12 -0
  194. package/dist/types/components/af-text/af-text.d.ts +2 -0
  195. package/dist/types/components.d.ts +214 -0
  196. package/package.json +13 -9
  197. package/dist/affinda/p-43324b6d.entry.js.map +0 -1
  198. package/dist/affinda/p-56284540.entry.js +0 -2
  199. package/dist/affinda/p-9c0b3380.entry.js +0 -2
  200. package/dist/affinda/p-UbNmjSSX.js.map +0 -1
  201. package/dist/affinda/p-fedaec5a.entry.js +0 -2
  202. package/dist/affinda/p-fedaec5a.entry.js.map +0 -1
  203. package/dist/cjs/index-CNijn8X5.js.map +0 -1
  204. package/dist/components/p-BuySFAGS.js.map +0 -1
  205. package/dist/components/p-C0zUdiRs.js.map +0 -1
  206. package/dist/components/p-CJccTfm5.js +0 -35
  207. package/dist/components/p-CJccTfm5.js.map +0 -1
  208. package/dist/components/p-ChRDoPDm.js.map +0 -1
  209. package/dist/components/p-D021PjqL.js.map +0 -1
  210. package/dist/esm/index-UbNmjSSX.js.map +0 -1
  211. /package/dist/affinda/{p-c8628633.entry.js.map → p-23aedaa4.entry.js.map} +0 -0
  212. /package/dist/affinda/{p-eff7eff1.entry.js.map → p-39e917eb.entry.js.map} +0 -0
  213. /package/dist/affinda/{p-16c84e60.entry.js.map → p-430127fa.entry.js.map} +0 -0
  214. /package/dist/affinda/{p-f53b4847.entry.js.map → p-46edc753.entry.js.map} +0 -0
  215. /package/dist/affinda/{p-32f46944.entry.js.map → p-56a15842.entry.js.map} +0 -0
  216. /package/dist/affinda/{p-9c0b3380.entry.js.map → p-867c5141.entry.js.map} +0 -0
  217. /package/dist/affinda/{p-750a694b.entry.js.map → p-d7ff9fd9.entry.js.map} +0 -0
  218. /package/dist/affinda/{p-66daadde.entry.js.map → p-f6f2f1c4.entry.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"file":"af-client-carousel.js","mappings":";;AAAA,MAAM,mBAAmB,GAAG,guCAAguC;;MCU/uCA,kBAAgB,iBAAAC,kBAAA,CAAA,MAAA,gBAAA,SAAAC,CAAA,CAAA;AAL7B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;;AAOU,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK;;AAG7B,QAAA,IAAY,CAAA,YAAA,GAAW,sDAAsD;AAmCtF;IAjCC,MAAM,GAAA;QACJ,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,iBAAiB,EAAA,EACzB,IAAI,CAAC,YAAY,KAChB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,UAAU,EAAA,EACnB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,UAAU,EAAA,EACnB,CAAA,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EAAK,IAAI,CAAC,YAAY,CAAM,CACvB,CACH,CACP,EAED,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,oBAAoB,EAAA,EAE7B,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,0BAA0B,EAAA,EACnC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAA,EACrB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAQ,CAAA,EAC1B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,OAAO,EAAA,CAAQ,CACtB,CACF,EAGN,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,2BAA2B,EAAA,EACpC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAA,EACrB,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAQ,CAAA,EAC1B,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,OAAO,EAAQ,CAAA,CACtB,CACF,CACF,CACF,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["AfClientCarousel","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-client-carousel/af-client-carousel.css?tag=af-client-carousel&encapsulation=shadow","src/components/af-client-carousel/af-client-carousel.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n background-color: var(--colour-brand-inkwell, #14343B);\n}\n\n.client-carousel {\n padding: 48px 80px;\n display: flex;\n flex-direction: column;\n gap: 40px;\n align-items: center;\n}\n\n.headline {\n text-align: center;\n padding: 24px 220px;\n}\n\n.headline h3 {\n font-family: var(--typography-primaryfont, 'NeuSans', sans-serif);\n font-weight: 500;\n font-size: 34px;\n line-height: 1;\n letter-spacing: -0.68px;\n color: var(--colour-brand-mist-green, #C6D5D1);\n margin: 0;\n}\n\n.carousel-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n overflow: hidden;\n}\n\n.carousel-row {\n display: flex;\n width: 100%;\n overflow: hidden;\n position: relative;\n}\n\n.logo-track {\n display: flex;\n gap: 16px;\n animation-timing-function: linear;\n animation-iteration-count: infinite;\n}\n\n/* Scroll left animation */\n.scroll-left .logo-track {\n animation-name: scroll-left;\n animation-duration: 40s;\n}\n\n/* Scroll right animation */\n.scroll-right .logo-track {\n animation-name: scroll-right;\n animation-duration: 40s;\n}\n\n@keyframes scroll-left {\n 0% {\n transform: translateX(0);\n }\n 100% {\n transform: translateX(-50%);\n }\n}\n\n@keyframes scroll-right {\n 0% {\n transform: translateX(-50%);\n }\n 100% {\n transform: translateX(0);\n }\n}\n\n/* Ensure slotted logos maintain their styling */\n::slotted(*) {\n flex-shrink: 0;\n}\n\n/* Tablet adjustments */\n@media (max-width: 1024px) {\n .client-carousel {\n padding: 32px 40px;\n }\n \n .headline {\n padding: 16px 40px;\n }\n}\n\n/* Mobile adjustments */\n@media (max-width: 767px) {\n .client-carousel {\n padding: 24px 16px;\n }\n \n .headline {\n padding: 16px;\n }\n \n .headline h3 {\n font-size: 25px;\n }\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Infinite scrolling carousel for client logos\n */\n@Component({\n tag: 'af-client-carousel',\n styleUrl: 'af-client-carousel.css',\n shadow: true,\n})\nexport class AfClientCarousel {\n /** Show headline above carousel */\n @Prop() showHeadline: boolean = false;\n \n /** Headline text */\n @Prop() headlineText: string = \"Trusted by some of the world's leading organisations\";\n\n render() {\n return (\n <Host>\n <div class=\"client-carousel\">\n {this.showHeadline && (\n <div class=\"headline\">\n <slot name=\"headline\">\n <h3>{this.headlineText}</h3>\n </slot>\n </div>\n )}\n \n <div class=\"carousel-container\">\n {/* Top row - scrolls left */}\n <div class=\"carousel-row scroll-left\">\n <div class=\"logo-track\">\n <slot name=\"row-1\"></slot>\n <slot name=\"row-1\"></slot>\n </div>\n </div>\n \n {/* Bottom row - scrolls right */}\n <div class=\"carousel-row scroll-right\">\n <div class=\"logo-track\">\n <slot name=\"row-2\"></slot>\n <slot name=\"row-2\"></slot>\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { A as AfColorSwatch$1, d as defineCustomElement$1 } from './p-KtmLxy7z.js';
1
+ import { A as AfColorSwatch$1, d as defineCustomElement$1 } from './p-BSewwIfD.js';
2
2
 
3
3
  const AfColorSwatch = AfColorSwatch$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { A as AfContainer$1, d as defineCustomElement$1 } from './p-DPooX_NW.js';
1
+ import { A as AfContainer$1, d as defineCustomElement$1 } from './p-BpXkQGDQ.js';
2
2
 
3
3
  const AfContainer = AfContainer$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { A as AfHeading$1, d as defineCustomElement$1 } from './p-BuySFAGS.js';
1
+ import { A as AfHeading$1, d as defineCustomElement$1 } from './p-Vu-NeL7U.js';
2
2
 
3
3
  const AfHeading = AfHeading$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface AfHeroSection extends Components.AfHeroSection, HTMLElement {}
4
+ export const AfHeroSection: {
5
+ prototype: AfHeroSection;
6
+ new (): AfHeroSection;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,53 @@
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CZlTvZAm.js';
2
+ import { d as defineCustomElement$2 } from './p-BpXkQGDQ.js';
3
+
4
+ const afHeroSectionCss = ".sc-af-hero-section-h{display:block;width:100%}.hero-section.sc-af-hero-section{width:100%;padding-top:calc(32px + 8px + 22px + 4rem);padding-bottom:4rem;display:flex;align-items:center;justify-content:center;margin-top:0;position:relative;z-index:1;overflow:hidden}.variant-light.sc-af-hero-section{background-color:var(--colour-background-white, #FFFFFF)}.variant-dark.sc-af-hero-section{background-color:var(--colour-brand-inkwell, #14343B)}.variant-dark.sc-af-hero-section af-heading.sc-af-hero-section,.variant-dark.sc-af-hero-section af-text.sc-af-hero-section{--typography-heading-primary:var(--colour-brand-mist-green, #C6D5D1);--typography-body-default:var(--colour-brand-mist-green, #C6D5D1)}.hero-decoration.sc-af-hero-section{position:absolute;inset:0;pointer-events:none;z-index:0;height:0;width:0;overflow:visible}.hero-decoration.sc-af-hero-section-s>*,.hero-decoration .sc-af-hero-section-s>*{position:absolute !important;bottom:208px;right:-557px;width:1212px;height:753px;opacity:0.5}.hero-content.sc-af-hero-section{text-align:center;max-width:1000px;margin:0 auto;position:relative;z-index:1}@media (max-width: 768px){.hero-section.sc-af-hero-section{padding:2rem 1rem}}";
5
+
6
+ const AfHeroSection$1 = /*@__PURE__*/ proxyCustomElement(class AfHeroSection extends H {
7
+ constructor(registerHost) {
8
+ super();
9
+ if (registerHost !== false) {
10
+ this.__registerHost();
11
+ }
12
+ /** Hero variant */
13
+ this.variant = 'dark';
14
+ /** Show decorative paperclip */
15
+ this.withDecoration = false;
16
+ /** Minimum height */
17
+ this.minHeight = '60vh';
18
+ }
19
+ render() {
20
+ return (h(Host, { key: '85061979e5f4d2a766574cbc355e2f833160050b' }, h("div", { key: 'f0c1f36c7f5f241d5a3ce590a2eff5b5e9c6f3bc', class: `hero-section variant-${this.variant}`, style: { minHeight: this.minHeight } }, this.withDecoration && (h("div", { key: '4a680dcbb970ea9c31fdcd1d4e16ec9b43e859b6', class: "hero-decoration" }, h("slot", { key: 'f8c629d60b6fbb0627e0720967bbc5bfeecbfecd', name: "decoration" }))), h("af-container", { key: '07ed025ef1b11880896a0ca72916592f4b36dddf' }, h("div", { key: 'dbe586394c6e10ed672d12326e21832376661ed1', class: "hero-content" }, h("slot", { key: 'd3906e6fd0bdb1439df2c4e6b48e090472bcc2e5' }))))));
21
+ }
22
+ static get style() { return afHeroSectionCss; }
23
+ }, [262, "af-hero-section", {
24
+ "variant": [1],
25
+ "withDecoration": [4, "with-decoration"],
26
+ "minHeight": [1, "min-height"]
27
+ }]);
28
+ function defineCustomElement$1() {
29
+ if (typeof customElements === "undefined") {
30
+ return;
31
+ }
32
+ const components = ["af-hero-section", "af-container"];
33
+ components.forEach(tagName => { switch (tagName) {
34
+ case "af-hero-section":
35
+ if (!customElements.get(tagName)) {
36
+ customElements.define(tagName, AfHeroSection$1);
37
+ }
38
+ break;
39
+ case "af-container":
40
+ if (!customElements.get(tagName)) {
41
+ defineCustomElement$2();
42
+ }
43
+ break;
44
+ } });
45
+ }
46
+
47
+ const AfHeroSection = AfHeroSection$1;
48
+ const defineCustomElement = defineCustomElement$1;
49
+
50
+ export { AfHeroSection, defineCustomElement };
51
+ //# sourceMappingURL=af-hero-section.js.map
52
+
53
+ //# sourceMappingURL=af-hero-section.js.map
@@ -0,0 +1 @@
1
+ {"file":"af-hero-section.js","mappings":";;;AAAA,MAAM,gBAAgB,GAAG,wqCAAwqC;;MCWprCA,eAAa,iBAAAC,kBAAA,CAAA,MAAA,aAAA,SAAAC,CAAA,CAAA;AAN1B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAQU,QAAA,IAAO,CAAA,OAAA,GAAqB,MAAM;;AAGlC,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK;;AAG/B,QAAA,IAAS,CAAA,SAAA,GAAW,MAAM;AAoBnC;IAlBC,MAAM,GAAA;QACJ,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,CAAA,qBAAA,EAAwB,IAAI,CAAC,OAAO,CAAA,CAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAA,EACrF,IAAI,CAAC,cAAc,KAClB,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,iBAAiB,EAAA,EAC1B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,YAAY,EAAA,CAAQ,CAC3B,CACP,EACD,CAAA,CAAA,cAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,cAAc,EAAA,EACvB,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACO,CACX,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["AfHeroSection","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-hero-section/af-hero-section.css?tag=af-hero-section&encapsulation=scoped","src/components/af-hero-section/af-hero-section.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.hero-section {\n width: 100%;\n padding-top: calc(32px + 8px + 22px + 4rem); /* navbar top offset + navbar height + gap + content padding */\n padding-bottom: 4rem;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 0;\n position: relative;\n z-index: 1;\n overflow: hidden;\n}\n\n/* Light variant */\n.variant-light {\n background-color: var(--colour-background-white, #FFFFFF);\n}\n\n/* Dark variant */\n.variant-dark {\n background-color: var(--colour-brand-inkwell, #14343B);\n}\n\n/* Set theme colors on dark backgrounds */\n.variant-dark af-heading,\n.variant-dark af-text {\n --typography-heading-primary: var(--colour-brand-mist-green, #C6D5D1);\n --typography-body-default: var(--colour-brand-mist-green, #C6D5D1);\n}\n\n.hero-decoration {\n position: absolute;\n inset: 0;\n pointer-events: none;\n z-index: 0;\n height: 0;\n width: 0;\n overflow: visible;\n}\n\n.hero-decoration ::slotted(*) {\n position: absolute !important;\n bottom: 208px;\n right: -557px;\n width: 1212px;\n height: 753px;\n opacity: 0.5;\n}\n\n.hero-content {\n text-align: center;\n max-width: 1000px;\n margin: 0 auto;\n position: relative;\n z-index: 1;\n}\n\n/* Mobile adjustments */\n@media (max-width: 768px) {\n .hero-section {\n padding: 2rem 1rem;\n }\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Hero section component for marketing pages\n */\n@Component({\n tag: 'af-hero-section',\n styleUrl: 'af-hero-section.css',\n shadow: false,\n scoped: true,\n})\nexport class AfHeroSection {\n /** Hero variant */\n @Prop() variant: 'light' | 'dark' = 'dark';\n \n /** Show decorative paperclip */\n @Prop() withDecoration: boolean = false;\n \n /** Minimum height */\n @Prop() minHeight: string = '60vh';\n\n render() {\n return (\n <Host>\n <div class={`hero-section variant-${this.variant}`} style={{ minHeight: this.minHeight }}>\n {this.withDecoration && (\n <div class=\"hero-decoration\">\n <slot name=\"decoration\"></slot>\n </div>\n )}\n <af-container>\n <div class=\"hero-content\">\n <slot></slot>\n </div>\n </af-container>\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { A as AfIconButton$1, d as defineCustomElement$1 } from './p-XAy0kGYd.js';
1
+ import { A as AfIconButton$1, d as defineCustomElement$1 } from './p-tFlyM2Th.js';
2
2
 
3
3
  const AfIconButton = AfIconButton$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface AfLogoWell extends Components.AfLogoWell, HTMLElement {}
4
+ export const AfLogoWell: {
5
+ prototype: AfLogoWell;
6
+ new (): AfLogoWell;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,38 @@
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CZlTvZAm.js';
2
+
3
+ const afLogoWellCss = ":host{display:inline-block}.logo-well{background:var(--colour-tints-inkwell-600, #1A3038);border-radius:16px;height:88px;display:flex;align-items:center;justify-content:center;padding:24px 40px;box-sizing:border-box;min-width:120px}::slotted(img){max-height:40px;width:auto;display:block;filter:brightness(0) invert(1);}::slotted(div){white-space:nowrap}";
4
+
5
+ const AfLogoWell$1 = /*@__PURE__*/ proxyCustomElement(class AfLogoWell extends H {
6
+ constructor(registerHost) {
7
+ super();
8
+ if (registerHost !== false) {
9
+ this.__registerHost();
10
+ }
11
+ this.__attachShadow();
12
+ }
13
+ render() {
14
+ return (h(Host, { key: '6443fda91c37fd9f2efd49fbd10b1899f311cd54' }, h("div", { key: '30ec1e2891dfd89af7cc310986d3c5c48e05c556', class: "logo-well" }, h("slot", { key: '4601797d3cef6ed117dc6c93083652dd22f51f05' }))));
15
+ }
16
+ static get style() { return afLogoWellCss; }
17
+ }, [257, "af-logo-well"]);
18
+ function defineCustomElement$1() {
19
+ if (typeof customElements === "undefined") {
20
+ return;
21
+ }
22
+ const components = ["af-logo-well"];
23
+ components.forEach(tagName => { switch (tagName) {
24
+ case "af-logo-well":
25
+ if (!customElements.get(tagName)) {
26
+ customElements.define(tagName, AfLogoWell$1);
27
+ }
28
+ break;
29
+ } });
30
+ }
31
+
32
+ const AfLogoWell = AfLogoWell$1;
33
+ const defineCustomElement = defineCustomElement$1;
34
+
35
+ export { AfLogoWell, defineCustomElement };
36
+ //# sourceMappingURL=af-logo-well.js.map
37
+
38
+ //# sourceMappingURL=af-logo-well.js.map
@@ -0,0 +1 @@
1
+ {"file":"af-logo-well.js","mappings":";;AAAA,MAAM,aAAa,GAAG,oWAAoW;;MCU7WA,YAAU,iBAAAC,kBAAA,CAAA,MAAA,UAAA,SAAAC,CAAA,CAAA;;;;;;;;IACrB,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,WAAW,EAAA,EACpB,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACD;;;;;;;;;;;;;;;;;;;;;;;","names":["AfLogoWell","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-logo-well/af-logo-well.css?tag=af-logo-well&encapsulation=shadow","src/components/af-logo-well/af-logo-well.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.logo-well {\n background: var(--colour-tints-inkwell-600, #1A3038);\n border-radius: 16px;\n height: 88px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px 40px;\n box-sizing: border-box;\n min-width: 120px;\n}\n\n::slotted(img) {\n max-height: 40px;\n width: auto;\n display: block;\n filter: brightness(0) invert(1); /* Make logos white */\n}\n\n::slotted(div) {\n white-space: nowrap;\n}\n\n","import { Component, h, Host } from '@stencil/core';\n\n/**\n * A rounded container for displaying client logos\n */\n@Component({\n tag: 'af-logo-well',\n styleUrl: 'af-logo-well.css',\n shadow: true,\n})\nexport class AfLogoWell {\n render() {\n return (\n <Host>\n <div class=\"logo-well\">\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { A as AfLogo$1, d as defineCustomElement$1 } from './p-C4sw-kYH.js';
1
+ import { A as AfLogo$1, d as defineCustomElement$1 } from './p-sJI0-JlJ.js';
2
2
 
3
3
  const AfLogo = AfLogo$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { A as AfNavItem$1, d as defineCustomElement$1 } from './p-Cfj594pp.js';
1
+ import { A as AfNavItem$1, d as defineCustomElement$1 } from './p-CUr7n62X.js';
2
2
 
3
3
  const AfNavItem = AfNavItem$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { A as AfNavbar$1, d as defineCustomElement$1 } from './p-CJccTfm5.js';
1
+ import { A as AfNavbar$1, d as defineCustomElement$1 } from './p-Csie_upq.js';
2
2
 
3
3
  const AfNavbar = AfNavbar$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -0,0 +1,11 @@
1
+ import type { Components, JSX } from "../types/components";
2
+
3
+ interface AfSection extends Components.AfSection, HTMLElement {}
4
+ export const AfSection: {
5
+ prototype: AfSection;
6
+ new (): AfSection;
7
+ };
8
+ /**
9
+ * Used to define this component and all nested components recursively.
10
+ */
11
+ export const defineCustomElement: () => void;
@@ -0,0 +1,54 @@
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CZlTvZAm.js';
2
+ import { d as defineCustomElement$2 } from './p-BpXkQGDQ.js';
3
+
4
+ const afSectionCss = ".sc-af-section-h{display:block;width:100%}.section.sc-af-section{width:100%;position:relative}.padding-tight.sc-af-section{padding:48px 0}.padding-default.sc-af-section{padding:96px 0}.padding-loose.sc-af-section{padding:120px 0 96px}.bg-white.sc-af-section{background-color:var(--colour-background-white, #FFFFFF)}.bg-level1.sc-af-section{background-color:var(--colour-background-level-1, #E8EEED)}.bg-dark.sc-af-section,.bg-inkwell.sc-af-section{background-color:var(--colour-brand-inkwell, #14343B)}@media (max-width: 768px){.padding-tight.sc-af-section{padding:32px 0}.padding-default.sc-af-section{padding:64px 0}.padding-loose.sc-af-section{padding:80px 0 64px}}";
5
+
6
+ const AfSection$1 = /*@__PURE__*/ proxyCustomElement(class AfSection extends H {
7
+ constructor(registerHost) {
8
+ super();
9
+ if (registerHost !== false) {
10
+ this.__registerHost();
11
+ }
12
+ /** Padding variant */
13
+ this.padding = 'default';
14
+ /** Background color */
15
+ this.background = 'white';
16
+ /** Whether to include a Container wrapper */
17
+ this.container = true;
18
+ }
19
+ render() {
20
+ const content = h("slot", { key: '269517d1852d1e459db9dc2673b88b4d8042f61b' });
21
+ return (h(Host, { key: 'a080f296f2f7178db29e973cce05048847e66c83' }, h("div", { key: '54bdca28715bdd18e38d85e2ed95a5699f793d3e', class: `section padding-${this.padding} bg-${this.background}` }, this.container ? (h("af-container", null, content)) : content)));
22
+ }
23
+ static get style() { return afSectionCss; }
24
+ }, [262, "af-section", {
25
+ "padding": [1],
26
+ "background": [1],
27
+ "container": [4]
28
+ }]);
29
+ function defineCustomElement$1() {
30
+ if (typeof customElements === "undefined") {
31
+ return;
32
+ }
33
+ const components = ["af-section", "af-container"];
34
+ components.forEach(tagName => { switch (tagName) {
35
+ case "af-section":
36
+ if (!customElements.get(tagName)) {
37
+ customElements.define(tagName, AfSection$1);
38
+ }
39
+ break;
40
+ case "af-container":
41
+ if (!customElements.get(tagName)) {
42
+ defineCustomElement$2();
43
+ }
44
+ break;
45
+ } });
46
+ }
47
+
48
+ const AfSection = AfSection$1;
49
+ const defineCustomElement = defineCustomElement$1;
50
+
51
+ export { AfSection, defineCustomElement };
52
+ //# sourceMappingURL=af-section.js.map
53
+
54
+ //# sourceMappingURL=af-section.js.map
@@ -0,0 +1 @@
1
+ {"file":"af-section.js","mappings":";;;AAAA,MAAM,YAAY,GAAG,8pBAA8pB;;MCWtqBA,WAAS,iBAAAC,kBAAA,CAAA,MAAA,SAAA,SAAAC,CAAA,CAAA;AANtB,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAQU,QAAA,IAAO,CAAA,OAAA,GAAkC,SAAS;;AAGlD,QAAA,IAAU,CAAA,UAAA,GAA4C,OAAO;;AAG7D,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI;AAelC;IAbC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa;QAE7B,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,CAAmB,gBAAA,EAAA,IAAI,CAAC,OAAO,CAAO,IAAA,EAAA,IAAI,CAAC,UAAU,CAAA,CAAE,EAAA,EAChE,IAAI,CAAC,SAAS,IACb,CAAe,CAAA,cAAA,EAAA,IAAA,EAAA,OAAO,CAAgB,IACpC,OAAO,CACP,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["AfSection","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-section/af-section.css?tag=af-section&encapsulation=scoped","src/components/af-section/af-section.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.section {\n width: 100%;\n position: relative;\n}\n\n/* Padding variants */\n.padding-tight {\n padding: 48px 0;\n}\n\n.padding-default {\n padding: 96px 0;\n}\n\n.padding-loose {\n padding: 120px 0 96px;\n}\n\n/* Background variants */\n.bg-white {\n background-color: var(--colour-background-white, #FFFFFF);\n}\n\n.bg-level1 {\n background-color: var(--colour-background-level-1, #E8EEED);\n}\n\n.bg-dark,\n.bg-inkwell {\n background-color: var(--colour-brand-inkwell, #14343B);\n}\n\n/* Mobile adjustments */\n@media (max-width: 768px) {\n .padding-tight {\n padding: 32px 0;\n }\n \n .padding-default {\n padding: 64px 0;\n }\n \n .padding-loose {\n padding: 80px 0 64px;\n }\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n/**\n * Section layout component for consistent spacing and backgrounds\n */\n@Component({\n tag: 'af-section',\n styleUrl: 'af-section.css',\n shadow: false,\n scoped: true,\n})\nexport class AfSection {\n /** Padding variant */\n @Prop() padding: 'tight' | 'default' | 'loose' = 'default';\n \n /** Background color */\n @Prop() background: 'white' | 'level1' | 'dark' | 'inkwell' = 'white';\n \n /** Whether to include a Container wrapper */\n @Prop() container: boolean = true;\n\n render() {\n const content = <slot></slot>;\n \n return (\n <Host>\n <div class={`section padding-${this.padding} bg-${this.background}`}>\n {this.container ? (\n <af-container>{content}</af-container>\n ) : content}\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
@@ -1,6 +1,6 @@
1
- import { p as proxyCustomElement, H, h, c as Host } from './p-ChRDoPDm.js';
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CZlTvZAm.js';
2
2
 
3
- const afTestimonialCarouselCss = ".sc-af-testimonial-carousel-h{display:block;width:100%;overflow:hidden}.testimonial-carousel.sc-af-testimonial-carousel{position:relative;width:100%}.testimonial-slides.sc-af-testimonial-carousel{position:relative;width:100%;min-height:544px;overflow:hidden}.testimonial-slides.sc-af-testimonial-carousel-s>af-testimonial,.testimonial-slides .sc-af-testimonial-carousel-s>af-testimonial{position:absolute;top:0;left:0;width:100%;transition:transform 0.5s ease-in-out, opacity 0.5s ease-in-out}.testimonial-progress.sc-af-testimonial-carousel{display:flex;gap:12px;justify-content:center;margin-top:32px;padding:0 220px}.progress-dot.sc-af-testimonial-carousel{width:100%;max-width:840px;height:3px;background:var(--colour-background-border-default, #d1ddda);border-radius:2px;cursor:pointer;transition:background 0.3s ease;position:relative;overflow:hidden}.progress-dot.active.sc-af-testimonial-carousel{background:var(--colour-background-border-active, #8a7049)}.progress-dot.sc-af-testimonial-carousel:hover:not(.active){background:var(--colour-background-border-default, #c1cdc9)}.carousel-navigation.sc-af-testimonial-carousel{position:absolute;bottom:48px;left:48px;display:flex;gap:12px;align-items:center;z-index:10}.nav-button.sc-af-testimonial-carousel{width:48px;height:48px;border-radius:50%;border:1px solid var(--colour-brand-inkwell, #14343b);background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.2s ease;color:var(--colour-brand-inkwell, #14343b)}.nav-button.sc-af-testimonial-carousel:hover:not(:disabled){background:rgba(255, 255, 255, 0.1);transform:translateY(-2px)}.nav-button.sc-af-testimonial-carousel:disabled{opacity:0.4;cursor:not-allowed;border-color:var(--colour-brand-inkwell, #14343b)}.nav-button.sc-af-testimonial-carousel svg.sc-af-testimonial-carousel{width:24px;height:24px}";
3
+ const afTestimonialCarouselCss = ".sc-af-testimonial-carousel-h{display:block;width:100%;overflow:hidden}.testimonial-carousel.sc-af-testimonial-carousel{position:relative;width:100%}.testimonial-slides.sc-af-testimonial-carousel{position:relative;width:100%;min-height:544px;overflow:hidden}.testimonial-slides.sc-af-testimonial-carousel-s>af-testimonial,.testimonial-slides .sc-af-testimonial-carousel-s>af-testimonial{position:absolute;top:0;left:0;width:100%;transition:transform 0.5s ease-in-out, opacity 0.5s ease-in-out}.testimonial-progress.sc-af-testimonial-carousel{display:flex;gap:12px;justify-content:center;margin-top:32px;padding:0 220px}.progress-dot.sc-af-testimonial-carousel{width:100%;max-width:840px;height:3px;background:var(--colour-background-border-default, #d1ddda);border-radius:2px;cursor:pointer;transition:background 0.3s ease;position:relative;overflow:hidden}.progress-dot.active.sc-af-testimonial-carousel{background:var(--colour-background-border-active, #8a7049)}.progress-dot.sc-af-testimonial-carousel:hover:not(.active){background:var(--colour-background-border-default, #c1cdc9)}.carousel-navigation.sc-af-testimonial-carousel{position:absolute;bottom:48px;left:50%;margin-left:48px;display:flex;gap:12px;align-items:center;z-index:10}.nav-button.sc-af-testimonial-carousel{width:48px;height:48px;border-radius:50%;border:1px solid var(--colour-brand-inkwell, #14343b);background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all 0.2s ease;color:var(--colour-brand-inkwell, #14343b)}.nav-button.sc-af-testimonial-carousel:hover:not(:disabled){background:rgba(255, 255, 255, 0.1);transform:translateY(-2px)}.nav-button.sc-af-testimonial-carousel:disabled{opacity:0.4;cursor:not-allowed;border-color:var(--colour-brand-inkwell, #14343b)}.nav-button.sc-af-testimonial-carousel svg.sc-af-testimonial-carousel{width:24px;height:24px}";
4
4
 
5
5
  const AfTestimonialCarousel$1 = /*@__PURE__*/ proxyCustomElement(class AfTestimonialCarousel extends H {
6
6
  constructor(registerHost) {
@@ -72,7 +72,7 @@ const AfTestimonialCarousel$1 = /*@__PURE__*/ proxyCustomElement(class AfTestimo
72
72
  render() {
73
73
  const hasPrev = this.currentIndex > 0;
74
74
  const hasNext = this.currentIndex < this.testimonialCount - 1;
75
- return (h(Host, { key: 'ffa14246fa8a47d1cc079b0026df5a914e2b9362' }, h("div", { key: 'e984a28fd99ca671d8bdd55a780fbf76d7a189dc', class: "testimonial-carousel" }, h("div", { key: '55d09df04a1ee008d30a9227d3e6914dce46e173', class: "testimonial-slides" }, h("slot", { key: '992ac1e4849bcc042ccd0eeb47319b3e34364a1f' })), this.testimonialCount > 1 && (h("div", { key: '247420c536242d5e66ada662a23828eaa0190c84', class: "testimonial-progress" }, Array.from({ length: this.testimonialCount }).map((_, index) => (h("div", { class: `progress-dot ${index === this.currentIndex ? 'active' : ''}`, onClick: () => {
75
+ return (h(Host, { key: '93e4222eaa683eda0e5d68d445691e5dcf764b10' }, h("div", { key: '8679d282c0644b463eee86fa90282f59ba1c6cb5', class: "testimonial-carousel" }, h("div", { key: '6779793a882493c73b31bdf5742e2d068b8db72f', class: "testimonial-slides" }, h("slot", { key: '4326f6b06a60174edc2ba74c3d5704707965bf5d' })), this.testimonialCount > 1 && (h("div", { key: 'ba63a40e6a0789df3af7ff51d36a0f9c2e0651c6', class: "testimonial-progress" }, Array.from({ length: this.testimonialCount }).map((_, index) => (h("div", { class: `progress-dot ${index === this.currentIndex ? 'active' : ''}`, onClick: () => {
76
76
  if (!this.isAnimating && index !== this.currentIndex) {
77
77
  this.isAnimating = true;
78
78
  this.currentIndex = index;
@@ -81,7 +81,7 @@ const AfTestimonialCarousel$1 = /*@__PURE__*/ proxyCustomElement(class AfTestimo
81
81
  this.isAnimating = false;
82
82
  }, 500);
83
83
  }
84
- } }))))), this.testimonialCount > 1 && (h("div", { key: 'dc31d36ed57808d5c28d2c1dcb2729e6ed5342f7', class: "carousel-navigation" }, h("button", { key: '37f18430b88a9e983fc6e673d206be03c4cc1d40', class: "nav-button prev", disabled: !hasPrev, onClick: this.goToPrevious, "aria-label": "Previous testimonial" }, h("svg", { key: '9292c82f1b5f993aa8cffd301592dba8f5261c10', width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, h("path", { key: '0c34f308ae42547d24584858769ee295e01e02c9', d: "M19 12H5M5 12L12 19M5 12L12 5", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))), h("button", { key: '984436b6d311d92623a9740d871c57d09de1a06e', class: "nav-button next", disabled: !hasNext, onClick: this.goToNext, "aria-label": "Next testimonial" }, h("svg", { key: 'e3d55f1efb6c29a74256c4db64283cb1abaa0aa5', width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, h("path", { key: 'c9404bc3ad64ccb8ad0da3291ce7d4b622637e3d', d: "M5 12H19M19 12L12 5M19 12L12 19", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))))))));
84
+ } }))))), this.testimonialCount > 1 && (h("div", { key: 'e15676334f291d496302381e3625b8c18f46626d', class: "carousel-navigation" }, h("button", { key: '511c7cf3b514d07ec4b2c6e9a6a2231a6c98b1d3', class: "nav-button prev", disabled: !hasPrev, onClick: this.goToPrevious, "aria-label": "Previous testimonial" }, h("svg", { key: '477016d99fb337bed5ae757ff14dc290819450ba', width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, h("path", { key: '989e2119171bb332ca39a45d9b18d46736e0a82f', d: "M19 12H5M5 12L12 19M5 12L12 5", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))), h("button", { key: '5b52c2b3d6aef2b17e144ae30eebd6c6a3c07323', class: "nav-button next", disabled: !hasNext, onClick: this.goToNext, "aria-label": "Next testimonial" }, h("svg", { key: '9d03ebe923108338a4fdab149d02c04e19df6e5e', width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, h("path", { key: 'a90a52e8cfb3df339d42894448b184b1229f429d', d: "M5 12H19M19 12L12 5M19 12L12 19", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }))))))));
85
85
  }
86
86
  get host() { return this; }
87
87
  static get style() { return afTestimonialCarouselCss; }
@@ -1 +1 @@
1
- {"file":"af-testimonial-carousel.js","mappings":"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","names":["AfTestimonialCarousel","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-testimonial-carousel/af-testimonial-carousel.css?tag=af-testimonial-carousel&encapsulation=scoped","src/components/af-testimonial-carousel/af-testimonial-carousel.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n overflow: hidden;\n}\n\n.testimonial-carousel {\n position: relative;\n width: 100%;\n}\n\n.testimonial-slides {\n position: relative;\n width: 100%;\n min-height: 544px;\n overflow: hidden;\n}\n\n.testimonial-slides ::slotted(af-testimonial) {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out;\n}\n\n/* Progress indicator */\n.testimonial-progress {\n display: flex;\n gap: 12px;\n justify-content: center;\n margin-top: 32px;\n padding: 0 220px;\n}\n\n.progress-dot {\n width: 100%;\n max-width: 840px;\n height: 3px;\n background: var(--colour-background-border-default, #d1ddda);\n border-radius: 2px;\n cursor: pointer;\n transition: background 0.3s ease;\n position: relative;\n overflow: hidden;\n}\n\n.progress-dot.active {\n background: var(--colour-background-border-active, #8a7049);\n}\n\n.progress-dot:hover:not(.active) {\n background: var(--colour-background-border-default, #c1cdc9);\n}\n\n/* Navigation buttons - positioned bottom left, next to each other */\n.carousel-navigation {\n position: absolute;\n bottom: 48px;\n left: 48px;\n display: flex;\n gap: 12px;\n align-items: center;\n z-index: 10;\n}\n\n.nav-button {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n border: 1px solid var(--colour-brand-inkwell, #14343b);\n background: transparent;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--colour-brand-inkwell, #14343b);\n}\n\n.nav-button:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.1);\n transform: translateY(-2px);\n}\n\n.nav-button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n border-color: var(--colour-brand-inkwell, #14343b);\n}\n\n.nav-button svg {\n width: 24px;\n height: 24px;\n}\n\n","import { Component, State, h, Host, Element } from '@stencil/core';\n\n@Component({\n tag: 'af-testimonial-carousel',\n styleUrl: 'af-testimonial-carousel.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonialCarousel {\n @Element() host!: HTMLElement;\n @State() currentIndex: number = 0;\n @State() isAnimating: boolean = false;\n @State() testimonialCount: number = 0;\n\n private testimonials: HTMLElement[] = [];\n private observer: MutationObserver | undefined;\n\n componentDidLoad() {\n this.detectTestimonials();\n \n // Watch for testimonials being added (for React async rendering)\n this.observer = new MutationObserver(() => {\n this.detectTestimonials();\n });\n \n this.observer.observe(this.host, {\n childList: true,\n subtree: true\n });\n }\n\n disconnectedCallback() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n private detectTestimonials() {\n const newTestimonials = Array.from(this.host.querySelectorAll('af-testimonial')) as HTMLElement[];\n \n if (newTestimonials.length !== this.testimonials.length) {\n this.testimonials = newTestimonials;\n this.testimonialCount = newTestimonials.length;\n console.log('Found testimonials:', this.testimonials.length);\n \n if (this.testimonials.length > 0) {\n this.currentIndex = 0;\n this.updateVisibleTestimonial();\n }\n }\n }\n\n private updateVisibleTestimonial() {\n this.testimonials.forEach((testimonial, index) => {\n const offset = (index - this.currentIndex) * 100;\n testimonial.style.transform = `translateX(${offset}%)`;\n testimonial.style.opacity = index === this.currentIndex ? '1' : '0';\n testimonial.style.pointerEvents = index === this.currentIndex ? 'auto' : 'none';\n });\n }\n\n private goToPrevious = () => {\n if (this.isAnimating || this.currentIndex === 0) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex - 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n private goToNext = () => {\n if (this.isAnimating || this.currentIndex >= this.testimonialCount - 1) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex + 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n render() {\n const hasPrev = this.currentIndex > 0;\n const hasNext = this.currentIndex < this.testimonialCount - 1;\n\n return (\n <Host>\n <div class=\"testimonial-carousel\">\n <div class=\"testimonial-slides\">\n <slot></slot>\n </div>\n \n {/* Progress indicator */}\n {this.testimonialCount > 1 && (\n <div class=\"testimonial-progress\">\n {Array.from({ length: this.testimonialCount }).map((_, index) => (\n <div \n class={`progress-dot ${index === this.currentIndex ? 'active' : ''}`}\n onClick={() => {\n if (!this.isAnimating && index !== this.currentIndex) {\n this.isAnimating = true;\n this.currentIndex = index;\n this.updateVisibleTestimonial();\n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n }\n }}\n />\n ))}\n </div>\n )}\n\n {/* Navigation buttons */}\n {this.testimonialCount > 1 && (\n <div class=\"carousel-navigation\">\n <button \n class=\"nav-button prev\" \n disabled={!hasPrev}\n onClick={this.goToPrevious}\n aria-label=\"Previous testimonial\"\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M19 12H5M5 12L12 19M5 12L12 5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <button \n class=\"nav-button next\" \n disabled={!hasNext}\n onClick={this.goToNext}\n aria-label=\"Next testimonial\"\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M5 12H19M19 12L12 5M19 12L12 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
1
+ {"file":"af-testimonial-carousel.js","mappings":"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","names":["AfTestimonialCarousel","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-testimonial-carousel/af-testimonial-carousel.css?tag=af-testimonial-carousel&encapsulation=scoped","src/components/af-testimonial-carousel/af-testimonial-carousel.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n overflow: hidden;\n}\n\n.testimonial-carousel {\n position: relative;\n width: 100%;\n}\n\n.testimonial-slides {\n position: relative;\n width: 100%;\n min-height: 544px;\n overflow: hidden;\n}\n\n.testimonial-slides ::slotted(af-testimonial) {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n transition: transform 0.5s ease-in-out, opacity 0.5s ease-in-out;\n}\n\n/* Progress indicator */\n.testimonial-progress {\n display: flex;\n gap: 12px;\n justify-content: center;\n margin-top: 32px;\n padding: 0 220px;\n}\n\n.progress-dot {\n width: 100%;\n max-width: 840px;\n height: 3px;\n background: var(--colour-background-border-default, #d1ddda);\n border-radius: 2px;\n cursor: pointer;\n transition: background 0.3s ease;\n position: relative;\n overflow: hidden;\n}\n\n.progress-dot.active {\n background: var(--colour-background-border-active, #8a7049);\n}\n\n.progress-dot:hover:not(.active) {\n background: var(--colour-background-border-default, #c1cdc9);\n}\n\n/* Navigation buttons - positioned bottom left of content area (not on image) */\n.carousel-navigation {\n position: absolute;\n bottom: 48px;\n left: 50%;\n margin-left: 48px;\n display: flex;\n gap: 12px;\n align-items: center;\n z-index: 10;\n}\n\n.nav-button {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n border: 1px solid var(--colour-brand-inkwell, #14343b);\n background: transparent;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--colour-brand-inkwell, #14343b);\n}\n\n.nav-button:hover:not(:disabled) {\n background: rgba(255, 255, 255, 0.1);\n transform: translateY(-2px);\n}\n\n.nav-button:disabled {\n opacity: 0.4;\n cursor: not-allowed;\n border-color: var(--colour-brand-inkwell, #14343b);\n}\n\n.nav-button svg {\n width: 24px;\n height: 24px;\n}\n\n","import { Component, State, h, Host, Element } from '@stencil/core';\n\n@Component({\n tag: 'af-testimonial-carousel',\n styleUrl: 'af-testimonial-carousel.css',\n shadow: false,\n scoped: true,\n})\nexport class AfTestimonialCarousel {\n @Element() host!: HTMLElement;\n @State() currentIndex: number = 0;\n @State() isAnimating: boolean = false;\n @State() testimonialCount: number = 0;\n\n private testimonials: HTMLElement[] = [];\n private observer: MutationObserver | undefined;\n\n componentDidLoad() {\n this.detectTestimonials();\n \n // Watch for testimonials being added (for React async rendering)\n this.observer = new MutationObserver(() => {\n this.detectTestimonials();\n });\n \n this.observer.observe(this.host, {\n childList: true,\n subtree: true\n });\n }\n\n disconnectedCallback() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n private detectTestimonials() {\n const newTestimonials = Array.from(this.host.querySelectorAll('af-testimonial')) as HTMLElement[];\n \n if (newTestimonials.length !== this.testimonials.length) {\n this.testimonials = newTestimonials;\n this.testimonialCount = newTestimonials.length;\n console.log('Found testimonials:', this.testimonials.length);\n \n if (this.testimonials.length > 0) {\n this.currentIndex = 0;\n this.updateVisibleTestimonial();\n }\n }\n }\n\n private updateVisibleTestimonial() {\n this.testimonials.forEach((testimonial, index) => {\n const offset = (index - this.currentIndex) * 100;\n testimonial.style.transform = `translateX(${offset}%)`;\n testimonial.style.opacity = index === this.currentIndex ? '1' : '0';\n testimonial.style.pointerEvents = index === this.currentIndex ? 'auto' : 'none';\n });\n }\n\n private goToPrevious = () => {\n if (this.isAnimating || this.currentIndex === 0) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex - 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n private goToNext = () => {\n if (this.isAnimating || this.currentIndex >= this.testimonialCount - 1) return;\n \n this.isAnimating = true;\n this.currentIndex = this.currentIndex + 1;\n this.updateVisibleTestimonial();\n \n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n };\n\n render() {\n const hasPrev = this.currentIndex > 0;\n const hasNext = this.currentIndex < this.testimonialCount - 1;\n\n return (\n <Host>\n <div class=\"testimonial-carousel\">\n <div class=\"testimonial-slides\">\n <slot></slot>\n </div>\n \n {/* Progress indicator */}\n {this.testimonialCount > 1 && (\n <div class=\"testimonial-progress\">\n {Array.from({ length: this.testimonialCount }).map((_, index) => (\n <div \n class={`progress-dot ${index === this.currentIndex ? 'active' : ''}`}\n onClick={() => {\n if (!this.isAnimating && index !== this.currentIndex) {\n this.isAnimating = true;\n this.currentIndex = index;\n this.updateVisibleTestimonial();\n setTimeout(() => {\n this.isAnimating = false;\n }, 500);\n }\n }}\n />\n ))}\n </div>\n )}\n\n {/* Navigation buttons */}\n {this.testimonialCount > 1 && (\n <div class=\"carousel-navigation\">\n <button \n class=\"nav-button prev\" \n disabled={!hasPrev}\n onClick={this.goToPrevious}\n aria-label=\"Previous testimonial\"\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M19 12H5M5 12L12 19M5 12L12 5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n <button \n class=\"nav-button next\" \n disabled={!hasNext}\n onClick={this.goToNext}\n aria-label=\"Next testimonial\"\n >\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n <path d=\"M5 12H19M19 12L12 5M19 12L12 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </button>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, c as Host } from './p-ChRDoPDm.js';
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CZlTvZAm.js';
2
2
 
3
3
  const afTestimonialStatCss = ".sc-af-testimonial-stat-h{display:block;flex:1;min-width:0}.stat.sc-af-testimonial-stat{display:flex;flex-direction:column;gap:8px}.stat--accent.sc-af-testimonial-stat{border-left:2px solid var(--colour-background-border-active, #8a7049);padding-left:16px;min-height:76px;justify-content:center}.stat-value.sc-af-testimonial-stat{font-family:'NeuSans', 'Inter', 'Segoe UI', system-ui, sans-serif;font-size:44px;font-weight:400;line-height:1;letter-spacing:-0.88px;color:var(--colour-typography-heading-secondary, #8a7049);margin:0}.stat-description.sc-af-testimonial-stat{font-family:'NeuSans', 'Inter', 'Segoe UI', system-ui, sans-serif;font-size:16px;font-weight:400;line-height:24px;color:var(--colour-typography-body-dark, #14343b);margin:0;overflow:hidden;text-overflow:ellipsis}";
4
4
 
@@ -14,7 +14,7 @@ const AfTestimonialStat$1 = /*@__PURE__*/ proxyCustomElement(class AfTestimonial
14
14
  this.accentBorder = false;
15
15
  }
16
16
  render() {
17
- return (h(Host, { key: 'dec2d76b0cdf8e2b4c9a996046e6537b586ff674' }, h("div", { key: 'c7a9a5c15735850e7eec668e700da23494424c3c', class: `stat ${this.accentBorder ? 'stat--accent' : ''}` }, h("p", { key: 'c876b9e81e3150ef5cc651ee8f7435671b40966b', class: "stat-value" }, this.value), h("p", { key: 'f369972595ed4301eb827a0084388284096ec47f', class: "stat-description" }, this.description))));
17
+ return (h(Host, { key: '38055fcad76047030e7907ad11933c229e33fe05' }, h("div", { key: 'ae01845c6494f9da213f7b823aa5a57b51d94e96', class: `stat ${this.accentBorder ? 'stat--accent' : ''}` }, h("p", { key: 'd1ee0c278a840f343e442178fa2c8ae35e04304e', class: "stat-value" }, this.value), h("p", { key: '29322d5a6e3048f6c1a3df68393f6367bb4b6631', class: "stat-description" }, this.description))));
18
18
  }
19
19
  static get style() { return afTestimonialStatCss; }
20
20
  }, [258, "af-testimonial-stat", {
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, c as Host } from './p-ChRDoPDm.js';
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CZlTvZAm.js';
2
2
 
3
3
  const afTestimonialCss = ".sc-af-testimonial-h{display:block;width:100%}.testimonial-card.sc-af-testimonial{background:var(--colour-background-level-1, #e8eeed);border-radius:var(--border-radius-card-level-1, 32px);overflow:hidden;display:flex;height:544px;box-sizing:border-box}.testimonial-image.sc-af-testimonial{position:relative;width:519px;height:100%;background:#000000;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}.testimonial-bg-image.sc-af-testimonial{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0.7}.testimonial-logo.sc-af-testimonial{position:relative;z-index:1;padding:0 108px;max-width:100%}.testimonial-logo.sc-af-testimonial img.sc-af-testimonial{width:100%;height:auto;display:block}.testimonial-content.sc-af-testimonial{flex:1;display:flex;flex-direction:column;gap:32px;padding:48px;border:1px solid rgba(255, 255, 255, 0.08);border-left:1px solid rgba(255, 255, 255, 0.08);box-sizing:border-box}.testimonial-quote-section.sc-af-testimonial{flex:1;display:flex;flex-direction:column;gap:12px}.testimonial-quote-icon.sc-af-testimonial{width:48px;height:48px;color:var(--colour-brand-inkwell, #14343b);flex-shrink:0}.testimonial-text.sc-af-testimonial{font-family:'NeuSans', 'Inter', 'Segoe UI', system-ui, sans-serif;font-size:22px;font-weight:400;line-height:1.4;color:var(--colour-typography-body-default, #2b484f);margin:0;max-height:155px;overflow:hidden;text-overflow:ellipsis}.testimonial-attribution.sc-af-testimonial{font-family:'NeuSans', 'Inter', 'Segoe UI', system-ui, sans-serif;font-size:22px;font-weight:400;line-height:1.4;color:var(--colour-typography-body-dark, #14343b);margin:0}.testimonial-stats.sc-af-testimonial{display:flex;gap:32px;width:100%}.testimonial-footer.sc-af-testimonial{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--colour-background-border-default, #d1ddda);padding-top:32px}.testimonial-nav.sc-af-testimonial{display:flex;gap:12px}.testimonial-cta.sc-af-testimonial{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;border:1px solid var(--colour-brand-inkwell, #14343b);border-radius:9999px;font-family:'NeuSans', 'Inter', 'Segoe UI', system-ui, sans-serif;font-size:17px;font-weight:500;line-height:20px;color:var(--colour-brand-inkwell, #14343b);text-decoration:none;cursor:pointer;transition:all 0.2s ease}.testimonial-cta.sc-af-testimonial:hover{background:var(--colour-background-level-1, #e8eeed);transform:translateY(-1px)}.testimonial-cta.sc-af-testimonial svg.sc-af-testimonial{width:24px;height:24px}";
4
4
 
@@ -10,7 +10,7 @@ const AfTestimonial$1 = /*@__PURE__*/ proxyCustomElement(class AfTestimonial ext
10
10
  }
11
11
  }
12
12
  render() {
13
- return (h(Host, { key: '963791303c22cdea677a7923ffce8b16ea97cb26' }, h("div", { key: '369ad62ceb17461c4511f0cb7338a5f812b69717', class: "testimonial-card" }, h("div", { key: 'e548a64653054d54b282b83c0a64326c0973122d', class: "testimonial-image" }, this.backgroundImage && (h("img", { key: '21f779030e13675278b4cd18ae2df0c0bf9c59a3', src: this.backgroundImage, alt: "", class: "testimonial-bg-image" })), this.logoImage && (h("div", { key: '23298bd5b1c3db0ed5bff4c1d1cd0582e09b50a2', class: "testimonial-logo" }, h("img", { key: '357214f50e38cfa9e53cf7914c87f22c7971f1d5', src: this.logoImage, alt: "Company logo" })))), h("div", { key: 'd2913ca4d9b38a048ebedb123fdb0b7b9e78cc6f', class: "testimonial-content" }, h("div", { key: '92756afbcbd391a7fcb8b1a99d92bcc370f3787d', class: "testimonial-quote-section" }, h("div", { key: '40f844093eb232bf06b353a27c066f5ae99a85bf', class: "testimonial-quote-icon" }, h("slot", { key: '3cf6da2811c1cdf6a4540f72727fe479c7d4d4ca', name: "quote-icon" }, h("svg", { key: 'f59e4ceb77b67bbba1b5d647d10dd6f15b1d9319', width: "48", height: "48", viewBox: "0 0 48 48", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'dbcc67a7e7ab90b4d1172f0cced568eeeb182150', d: "M10.5 25.5C10.5 23.0147 12.5147 21 15 21H18C18.8284 21 19.5 20.3284 19.5 19.5V15C19.5 12.5147 17.4853 10.5 15 10.5H10.5C6.35786 10.5 3 13.8579 3 18V33C3 35.4853 5.01472 37.5 7.5 37.5H15C17.4853 37.5 19.5 35.4853 19.5 33V25.5C19.5 23.0147 17.4853 21 15 21H10.5ZM33 25.5C33 23.0147 35.0147 21 37.5 21H40.5C41.3284 21 42 20.3284 42 19.5V15C42 12.5147 39.9853 10.5 37.5 10.5H33C28.8579 10.5 25.5 13.8579 25.5 18V33C25.5 35.4853 27.5147 37.5 30 37.5H37.5C39.9853 37.5 42 35.4853 42 33V25.5C42 23.0147 39.9853 21 37.5 21H33Z", fill: "currentColor" })))), h("p", { key: '1b487f7ab688642b9c5166a3fc8eb1191e1daa36', class: "testimonial-text" }, this.quote), h("p", { key: '539600a1d6eb098ea329307d40cac941d1d631a4', class: "testimonial-attribution" }, this.attribution)), h("div", { key: '307e784601fd66cdd4573eaf0a83c8d61ab83301', class: "testimonial-stats" }, h("slot", { key: '2ab5758e92ed670e6d6ed554f3fce7a7e1fc0077', name: "stats" })), h("div", { key: 'b13d6b51a27f5e94d40929f6c337513ca84af1cd', class: "testimonial-footer" }, h("div", { key: '69b92a55946c936cdc78d7f317caacb8fd334779', class: "testimonial-nav" }, h("slot", { key: '41c0ef3a1497d33d7c2dc7b34a267d9158ff1aa0', name: "navigation" })), this.readMoreLink && (h("a", { key: 'd4c7e0acce78b7fb16085cd9c7c8762325dc6b6c', href: this.readMoreLink, class: "testimonial-cta" }, h("span", { key: '0576e6e26afeb35f07aa4ad0190cdd6e3b4242c1' }, "Read full story"), h("svg", { key: 'd3c6d905c55782f2b22e6070a4adcca4bd0164cf', width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, h("path", { key: '61c7ecddf75102a501626fc59fe55cd1402b06e2', d: "M5 12H19M19 12L12 5M19 12L12 19", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))))))));
13
+ return (h(Host, { key: 'b4a23c841092c119b7e8abd4249b75985f8edf95' }, h("div", { key: '65fec4f695a746ef51d4539b33dc166d4f1cb95c', class: "testimonial-card" }, h("div", { key: 'ad5ec6edb4fd3577f14d9cbcce925c1c68d6262e', class: "testimonial-image" }, this.backgroundImage && (h("img", { key: '4e51da94bd106ae50c63186c7cbedee3e86d341e', src: this.backgroundImage, alt: "", class: "testimonial-bg-image" })), this.logoImage && (h("div", { key: '68eea0c228eb7d3e92a3cbab11ee4d1b3d9e590e', class: "testimonial-logo" }, h("img", { key: '5f2225a849003d6b4b5ccc08073da121e3d27cf4', src: this.logoImage, alt: "Company logo" })))), h("div", { key: '9e6dbb02f4d87829af74c66029bd93ce3f3c65dd', class: "testimonial-content" }, h("div", { key: 'efd25f8dc722d79006835406a972da0d5fd7f77f', class: "testimonial-quote-section" }, h("div", { key: '46064d44eeed1712130c6c24007f5481b9cc3cf7', class: "testimonial-quote-icon" }, h("slot", { key: 'e1389d94a5cbb1181862963fd799d7c14b2d3ee5', name: "quote-icon" }, h("svg", { key: '6a935e48920b1964036f02fbc830b1319a20f057', width: "48", height: "48", viewBox: "0 0 48 48", fill: "none", xmlns: "http://www.w3.org/2000/svg" }, h("path", { key: 'cf0de3883bdf5a39cd377591ec34a02d75afd39c', d: "M10.5 25.5C10.5 23.0147 12.5147 21 15 21H18C18.8284 21 19.5 20.3284 19.5 19.5V15C19.5 12.5147 17.4853 10.5 15 10.5H10.5C6.35786 10.5 3 13.8579 3 18V33C3 35.4853 5.01472 37.5 7.5 37.5H15C17.4853 37.5 19.5 35.4853 19.5 33V25.5C19.5 23.0147 17.4853 21 15 21H10.5ZM33 25.5C33 23.0147 35.0147 21 37.5 21H40.5C41.3284 21 42 20.3284 42 19.5V15C42 12.5147 39.9853 10.5 37.5 10.5H33C28.8579 10.5 25.5 13.8579 25.5 18V33C25.5 35.4853 27.5147 37.5 30 37.5H37.5C39.9853 37.5 42 35.4853 42 33V25.5C42 23.0147 39.9853 21 37.5 21H33Z", fill: "currentColor" })))), h("p", { key: 'db71848c9ae10a2a24cdcb6797f8f2b4fbf6cea9', class: "testimonial-text" }, this.quote), h("p", { key: 'ad7c4fd0a91a1c2ea42d4abcc3ab949e51c3d313', class: "testimonial-attribution" }, this.attribution)), h("div", { key: '8042208ced311c39c8d91968ac1bc37c76971ec1', class: "testimonial-stats" }, h("slot", { key: 'b5c40fdb83b6776b2de0a57e37045a1fde50e78f', name: "stats" })), h("div", { key: '1b19fc1264136cf90cb0c32841678129f5dd711d', class: "testimonial-footer" }, h("div", { key: '77058648a8e25ed63b622c7bbf873c299e39e42d', class: "testimonial-nav" }, h("slot", { key: '9231316a8dd17ae30c754e1ff1ba9ea70c327c82', name: "navigation" })), this.readMoreLink && (h("a", { key: '01072189417f44da780b5c5a8849e9e66a2a9b0d', href: this.readMoreLink, class: "testimonial-cta" }, h("span", { key: '8c5008a42d4c4160bb4950f562872a67ac26c15c' }, "Read full story"), h("svg", { key: '881176b723a0f4c3d941d2be0f8983ddc0468ee6', width: "24", height: "24", viewBox: "0 0 24 24", fill: "none" }, h("path", { key: 'd8fd8469aa2c45286891751b269c692ee90426c0', d: "M5 12H19M19 12L12 5M19 12L12 19", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" })))))))));
14
14
  }
15
15
  static get style() { return afTestimonialCss; }
16
16
  }, [262, "af-testimonial", {
@@ -1,4 +1,4 @@
1
- import { A as AfText$1, d as defineCustomElement$1 } from './p-C0zUdiRs.js';
1
+ import { A as AfText$1, d as defineCustomElement$1 } from './p-C1C1Him5.js';
2
2
 
3
3
  const AfText = AfText$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { A as AfTypographyLockup$1, d as defineCustomElement$1 } from './p-CLA_jBiH.js';
1
+ import { A as AfTypographyLockup$1, d as defineCustomElement$1 } from './p-D4NomvK5.js';
2
2
 
3
3
  const AfTypographyLockup = AfTypographyLockup$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,16 +1,16 @@
1
- export { g as getAssetPath, r as render, s as setAssetPath, a as setNonce, b as setPlatformOptions } from './p-ChRDoPDm.js';
2
- export { A as AfHeading } from './p-BuySFAGS.js';
3
- export { A as AfText } from './p-C0zUdiRs.js';
4
- export { A as AfColorSwatch } from './p-KtmLxy7z.js';
5
- export { A as AfContainer } from './p-DPooX_NW.js';
6
- export { A as AfAspectRatio } from './p-Bxv9iL3G.js';
7
- export { A as AfNavItem } from './p-Cfj594pp.js';
8
- export { A as AfNavbar } from './p-CJccTfm5.js';
9
- export { A as AfLogo } from './p-C4sw-kYH.js';
10
- export { A as AfButton } from './p-D021PjqL.js';
11
- export { A as AfIconButton } from './p-XAy0kGYd.js';
12
- export { A as AfButtonGroup } from './p-Bdy85P7Z.js';
13
- export { A as AfTypographyLockup } from './p-CLA_jBiH.js';
1
+ export { g as getAssetPath, r as render, s as setAssetPath, a as setNonce, b as setPlatformOptions } from './p-CZlTvZAm.js';
2
+ export { A as AfHeading } from './p-Vu-NeL7U.js';
3
+ export { A as AfText } from './p-C1C1Him5.js';
4
+ export { A as AfColorSwatch } from './p-BSewwIfD.js';
5
+ export { A as AfContainer } from './p-BpXkQGDQ.js';
6
+ export { A as AfAspectRatio } from './p-BMl1ggbQ.js';
7
+ export { A as AfNavItem } from './p-CUr7n62X.js';
8
+ export { A as AfNavbar } from './p-Csie_upq.js';
9
+ export { A as AfLogo } from './p-sJI0-JlJ.js';
10
+ export { A as AfButton } from './p-CcNomA2o.js';
11
+ export { A as AfIconButton } from './p-tFlyM2Th.js';
12
+ export { A as AfButtonGroup } from './p-BeQlNDyY.js';
13
+ export { A as AfTypographyLockup } from './p-D4NomvK5.js';
14
14
  //# sourceMappingURL=index.js.map
15
15
 
16
16
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h } from './p-ChRDoPDm.js';
1
+ import { p as proxyCustomElement, H, h } from './p-CZlTvZAm.js';
2
2
 
3
3
  const afAspectRatioCss = ":host{display:block;width:100%}.aspect-ratio-container{width:100%;position:relative;overflow:hidden}.aspect-ratio-container ::slotted(*){width:100%;height:100%;object-fit:cover}";
4
4
 
@@ -97,6 +97,6 @@ function defineCustomElement() {
97
97
  }
98
98
 
99
99
  export { AfAspectRatio as A, defineCustomElement as d };
100
- //# sourceMappingURL=p-Bxv9iL3G.js.map
100
+ //# sourceMappingURL=p-BMl1ggbQ.js.map
101
101
 
102
- //# sourceMappingURL=p-Bxv9iL3G.js.map
102
+ //# sourceMappingURL=p-BMl1ggbQ.js.map
@@ -1 +1 @@
1
- {"file":"p-Bxv9iL3G.js","mappings":";;AAAA,MAAM,gBAAgB,GAAG,mLAAmL;;MCW/L,aAAa,iBAAAA,kBAAA,CAAA,MAAA,aAAA,SAAAC,CAAA,CAAA;AAL1B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;;;;;;;AAQG;AACK,QAAA,IAAK,CAAA,KAAA,GAAW,KAAK;AAuE9B;IArES,aAAa,GAAA;;AAEnB,QAAA,MAAM,QAAQ,GAA8B;;AAE1C,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;;AAEd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;;AAEhB,YAAA,iBAAiB,EAAE,WAAW;AAC9B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,sBAAsB,EAAE,WAAW;AACnC,YAAA,uBAAuB,EAAE,WAAW;;AAEpC,YAAA,aAAa,EAAE,WAAW;AAC1B,YAAA,cAAc,EAAE,WAAW;AAC3B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,mBAAmB,EAAE,WAAW;;AAEhC,YAAA,iBAAiB,EAAE,WAAW;AAC9B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,sBAAsB,EAAE,WAAW;AACnC,YAAA,uBAAuB,EAAE,WAAW;;AAEpC,YAAA,KAAK,EAAE;SACR;;AAGD,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;;QAI7B,OAAO,IAAI,CAAC,KAAK;;IAGnB,MAAM,GAAA;AACJ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AAEvC,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,wBAAwB,EAC9B,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAA,EAElC,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-aspect-ratio/af-aspect-ratio.css?tag=af-aspect-ratio&encapsulation=shadow","src/components/af-aspect-ratio/af-aspect-ratio.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.aspect-ratio-container {\n width: 100%;\n position: relative;\n overflow: hidden;\n}\n\n/* Ensure slotted content fills the container */\n.aspect-ratio-container ::slotted(*) {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * A container component that maintains a fixed aspect ratio for its content.\n * Useful for images, videos, or any content that needs to maintain specific proportions.\n */\n@Component({\n tag: 'af-aspect-ratio',\n styleUrl: 'af-aspect-ratio.css',\n shadow: true\n})\nexport class AfAspectRatio {\n /**\n * The aspect ratio to maintain. Can be:\n * - A predefined ratio: '1:1', '16:9', '4:3', 'golden-portrait', 'golden-landscape', 'a4-portrait', 'a4-landscape', 'letter-portrait', 'letter-landscape', etc.\n * - A custom ratio in format 'width / height': '16 / 9', '4 / 3', '1.618 / 1', etc.\n *\n * @example\n * <af-aspect-ratio ratio=\"16:9\">Content</af-aspect-ratio>\n * <af-aspect-ratio ratio=\"1.618 / 1\">Content</af-aspect-ratio>\n */\n @Prop() ratio: string = '1:1';\n\n private getRatioValue(): string {\n // Map common ratio shortcuts to actual CSS aspect-ratio values\n const ratioMap: { [key: string]: string } = {\n // Common ratios\n '1:1': '1 / 1',\n '1:2': '1 / 2',\n '2:1': '2 / 1',\n '2:3': '2 / 3',\n '3:1': '3 / 1',\n '3:2': '3 / 2',\n '3:4': '3 / 4',\n '4:1': '4 / 1',\n '4:3': '4 / 3',\n '4:5': '4 / 5',\n '5:2': '5 / 2',\n '5:4': '5 / 4',\n '8:3': '8 / 3',\n '8:5': '8 / 5',\n // Screen ratios\n '9:8': '9 / 8',\n '9:16': '9 / 16',\n '9:21': '9 / 21',\n '10:16': '10 / 16',\n '14:3': '14 / 3',\n '16:5': '16 / 5',\n '16:9': '16 / 9',\n '16:10': '16 / 10',\n '21:9': '21 / 9',\n '32:9': '32 / 9',\n // Golden ratio variants\n 'golden-portrait': '1 / 1.618',\n 'golden-landscape': '1.618 / 1',\n 'golden-portrait-half': '1 / 0.809',\n 'golden-landscape-half': '0.809 / 1',\n // Paper sizes - A4\n 'a4-portrait': '1 / 1.414',\n 'a4-landscape': '1.414 / 1',\n 'a4-portrait-half': '1 / 0.707',\n 'a4-landscape-half': '0.707 / 1',\n // Paper sizes - Letter\n 'letter-portrait': '1 / 1.294',\n 'letter-landscape': '1.294 / 1',\n 'letter-portrait-half': '1 / 0.647',\n 'letter-landscape-half': '0.647 / 1',\n // Special\n '6:7': '6 / 7'\n };\n\n // If it's a predefined ratio, return the mapped value\n if (ratioMap[this.ratio]) {\n return ratioMap[this.ratio];\n }\n\n // Otherwise, assume it's a custom ratio already in the correct format\n return this.ratio;\n }\n\n render() {\n const ratioValue = this.getRatioValue();\n\n return (\n <div\n class=\"aspect-ratio-container\"\n style={{ aspectRatio: ratioValue }}\n >\n <slot></slot>\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"p-BMl1ggbQ.js","mappings":";;AAAA,MAAM,gBAAgB,GAAG,mLAAmL;;MCW/L,aAAa,iBAAAA,kBAAA,CAAA,MAAA,aAAA,SAAAC,CAAA,CAAA;AAL1B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;;;;;;;AAQG;AACK,QAAA,IAAK,CAAA,KAAA,GAAW,KAAK;AAuE9B;IArES,aAAa,GAAA;;AAEnB,QAAA,MAAM,QAAQ,GAA8B;;AAE1C,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;;AAEd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;;AAEhB,YAAA,iBAAiB,EAAE,WAAW;AAC9B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,sBAAsB,EAAE,WAAW;AACnC,YAAA,uBAAuB,EAAE,WAAW;;AAEpC,YAAA,aAAa,EAAE,WAAW;AAC1B,YAAA,cAAc,EAAE,WAAW;AAC3B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,mBAAmB,EAAE,WAAW;;AAEhC,YAAA,iBAAiB,EAAE,WAAW;AAC9B,YAAA,kBAAkB,EAAE,WAAW;AAC/B,YAAA,sBAAsB,EAAE,WAAW;AACnC,YAAA,uBAAuB,EAAE,WAAW;;AAEpC,YAAA,KAAK,EAAE;SACR;;AAGD,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACxB,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;;;QAI7B,OAAO,IAAI,CAAC,KAAK;;IAGnB,MAAM,GAAA;AACJ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;AAEvC,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,wBAAwB,EAC9B,KAAK,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAA,EAElC,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-aspect-ratio/af-aspect-ratio.css?tag=af-aspect-ratio&encapsulation=shadow","src/components/af-aspect-ratio/af-aspect-ratio.tsx"],"sourcesContent":[":host {\n display: block;\n width: 100%;\n}\n\n.aspect-ratio-container {\n width: 100%;\n position: relative;\n overflow: hidden;\n}\n\n/* Ensure slotted content fills the container */\n.aspect-ratio-container ::slotted(*) {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n/**\n * A container component that maintains a fixed aspect ratio for its content.\n * Useful for images, videos, or any content that needs to maintain specific proportions.\n */\n@Component({\n tag: 'af-aspect-ratio',\n styleUrl: 'af-aspect-ratio.css',\n shadow: true\n})\nexport class AfAspectRatio {\n /**\n * The aspect ratio to maintain. Can be:\n * - A predefined ratio: '1:1', '16:9', '4:3', 'golden-portrait', 'golden-landscape', 'a4-portrait', 'a4-landscape', 'letter-portrait', 'letter-landscape', etc.\n * - A custom ratio in format 'width / height': '16 / 9', '4 / 3', '1.618 / 1', etc.\n *\n * @example\n * <af-aspect-ratio ratio=\"16:9\">Content</af-aspect-ratio>\n * <af-aspect-ratio ratio=\"1.618 / 1\">Content</af-aspect-ratio>\n */\n @Prop() ratio: string = '1:1';\n\n private getRatioValue(): string {\n // Map common ratio shortcuts to actual CSS aspect-ratio values\n const ratioMap: { [key: string]: string } = {\n // Common ratios\n '1:1': '1 / 1',\n '1:2': '1 / 2',\n '2:1': '2 / 1',\n '2:3': '2 / 3',\n '3:1': '3 / 1',\n '3:2': '3 / 2',\n '3:4': '3 / 4',\n '4:1': '4 / 1',\n '4:3': '4 / 3',\n '4:5': '4 / 5',\n '5:2': '5 / 2',\n '5:4': '5 / 4',\n '8:3': '8 / 3',\n '8:5': '8 / 5',\n // Screen ratios\n '9:8': '9 / 8',\n '9:16': '9 / 16',\n '9:21': '9 / 21',\n '10:16': '10 / 16',\n '14:3': '14 / 3',\n '16:5': '16 / 5',\n '16:9': '16 / 9',\n '16:10': '16 / 10',\n '21:9': '21 / 9',\n '32:9': '32 / 9',\n // Golden ratio variants\n 'golden-portrait': '1 / 1.618',\n 'golden-landscape': '1.618 / 1',\n 'golden-portrait-half': '1 / 0.809',\n 'golden-landscape-half': '0.809 / 1',\n // Paper sizes - A4\n 'a4-portrait': '1 / 1.414',\n 'a4-landscape': '1.414 / 1',\n 'a4-portrait-half': '1 / 0.707',\n 'a4-landscape-half': '0.707 / 1',\n // Paper sizes - Letter\n 'letter-portrait': '1 / 1.294',\n 'letter-landscape': '1.294 / 1',\n 'letter-portrait-half': '1 / 0.647',\n 'letter-landscape-half': '0.647 / 1',\n // Special\n '6:7': '6 / 7'\n };\n\n // If it's a predefined ratio, return the mapped value\n if (ratioMap[this.ratio]) {\n return ratioMap[this.ratio];\n }\n\n // Otherwise, assume it's a custom ratio already in the correct format\n return this.ratio;\n }\n\n render() {\n const ratioValue = this.getRatioValue();\n\n return (\n <div\n class=\"aspect-ratio-container\"\n style={{ aspectRatio: ratioValue }}\n >\n <slot></slot>\n </div>\n );\n }\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h } from './p-ChRDoPDm.js';
1
+ import { p as proxyCustomElement, H, h } from './p-CZlTvZAm.js';
2
2
 
3
3
  const afColorSwatchCss = ":host{display:block}.swatch{display:flex;flex-direction:column;border-radius:8px;overflow:hidden;border:1px solid #ece6f5;background:white}.color-preview{width:100%;height:120px;flex-shrink:0}.size-large .color-preview{height:140px}.color-info{padding:16px;display:flex;flex-direction:column;gap:4px}.color-name{font-family:'NeuSans', 'Inter', system-ui, sans-serif;font-size:16px;font-weight:500;color:#14343B}.color-value{font-family:'Helvetica', 'Inter', monospace, system-ui, sans-serif;font-size:14px;color:#708380}";
4
4
 
@@ -39,6 +39,6 @@ function defineCustomElement() {
39
39
  }
40
40
 
41
41
  export { AfColorSwatch as A, defineCustomElement as d };
42
- //# sourceMappingURL=p-KtmLxy7z.js.map
42
+ //# sourceMappingURL=p-BSewwIfD.js.map
43
43
 
44
- //# sourceMappingURL=p-KtmLxy7z.js.map
44
+ //# sourceMappingURL=p-BSewwIfD.js.map
@@ -1 +1 @@
1
- {"file":"p-KtmLxy7z.js","mappings":";;AAAA,MAAM,gBAAgB,GAAG,0gBAA0gB;;MCOthB,aAAa,iBAAAA,kBAAA,CAAA,MAAA,aAAA,SAAAC,CAAA,CAAA;AAL1B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;;AAaU,QAAA,IAAI,CAAA,IAAA,GAAwB,SAAS;AAoB9C;IAlBC,MAAM,GAAA;QACJ,QACE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE;AACV,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG;aACxB,EAAE,IAAI,EAAC,MAAM,EAAA,EACZ,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,eAAe,EACrB,IAAI,EAAC,SAAS,EACd,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,EACjC,CAAA,EACP,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAA,EACjC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAE,EAAA,IAAI,CAAC,IAAI,CAAO,EACrD,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,OAAO,EAAE,EAAA,IAAI,CAAC,KAAK,CAAO,CACpD,CACF;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-color-swatch/af-color-swatch.css?tag=af-color-swatch&encapsulation=shadow","src/components/af-color-swatch/af-color-swatch.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.swatch {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid #ece6f5;\n background: white;\n}\n\n.color-preview {\n width: 100%;\n height: 120px;\n flex-shrink: 0;\n}\n\n.size-large .color-preview {\n height: 140px;\n}\n\n.color-info {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.color-name {\n font-family: 'NeuSans', 'Inter', system-ui, sans-serif;\n font-size: 16px;\n font-weight: 500;\n color: #14343B;\n}\n\n.color-value {\n font-family: 'Helvetica', 'Inter', monospace, system-ui, sans-serif;\n font-size: 14px;\n color: #708380;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-color-swatch',\n styleUrl: 'af-color-swatch.css',\n shadow: true\n})\nexport class AfColorSwatch {\n /** Color value (hex) */\n @Prop() color!: string;\n\n /** Color name */\n @Prop() name!: string;\n\n /** Size variant */\n @Prop() size: 'default' | 'large' = 'default';\n\n render() {\n return (\n <div class={{\n 'swatch': true,\n [`size-${this.size}`]: true\n }} part=\"base\">\n <div\n class=\"color-preview\"\n part=\"preview\"\n style={{ backgroundColor: this.color }}\n ></div>\n <div class=\"color-info\" part=\"info\">\n <div class=\"color-name\" part=\"name\">{this.name}</div>\n <div class=\"color-value\" part=\"value\">{this.color}</div>\n </div>\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"p-BSewwIfD.js","mappings":";;AAAA,MAAM,gBAAgB,GAAG,0gBAA0gB;;MCOthB,aAAa,iBAAAA,kBAAA,CAAA,MAAA,aAAA,SAAAC,CAAA,CAAA;AAL1B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;;AAaU,QAAA,IAAI,CAAA,IAAA,GAAwB,SAAS;AAoB9C;IAlBC,MAAM,GAAA;QACJ,QACE,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE;AACV,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAE,CAAA,GAAG;aACxB,EAAE,IAAI,EAAC,MAAM,EAAA,EACZ,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,eAAe,EACrB,IAAI,EAAC,SAAS,EACd,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,EACjC,CAAA,EACP,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAA,EACjC,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,YAAY,EAAC,IAAI,EAAC,MAAM,EAAE,EAAA,IAAI,CAAC,IAAI,CAAO,EACrD,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,aAAa,EAAC,IAAI,EAAC,OAAO,EAAE,EAAA,IAAI,CAAC,KAAK,CAAO,CACpD,CACF;;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-color-swatch/af-color-swatch.css?tag=af-color-swatch&encapsulation=shadow","src/components/af-color-swatch/af-color-swatch.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.swatch {\n display: flex;\n flex-direction: column;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid #ece6f5;\n background: white;\n}\n\n.color-preview {\n width: 100%;\n height: 120px;\n flex-shrink: 0;\n}\n\n.size-large .color-preview {\n height: 140px;\n}\n\n.color-info {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.color-name {\n font-family: 'NeuSans', 'Inter', system-ui, sans-serif;\n font-size: 16px;\n font-weight: 500;\n color: #14343B;\n}\n\n.color-value {\n font-family: 'Helvetica', 'Inter', monospace, system-ui, sans-serif;\n font-size: 14px;\n color: #708380;\n}\n","import { Component, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-color-swatch',\n styleUrl: 'af-color-swatch.css',\n shadow: true\n})\nexport class AfColorSwatch {\n /** Color value (hex) */\n @Prop() color!: string;\n\n /** Color name */\n @Prop() name!: string;\n\n /** Size variant */\n @Prop() size: 'default' | 'large' = 'default';\n\n render() {\n return (\n <div class={{\n 'swatch': true,\n [`size-${this.size}`]: true\n }} part=\"base\">\n <div\n class=\"color-preview\"\n part=\"preview\"\n style={{ backgroundColor: this.color }}\n ></div>\n <div class=\"color-info\" part=\"info\">\n <div class=\"color-name\" part=\"name\">{this.name}</div>\n <div class=\"color-value\" part=\"value\">{this.color}</div>\n </div>\n </div>\n );\n }\n}\n"],"version":3}
@@ -1,4 +1,4 @@
1
- import { p as proxyCustomElement, H, h, c as Host } from './p-ChRDoPDm.js';
1
+ import { p as proxyCustomElement, H, h, c as Host } from './p-CZlTvZAm.js';
2
2
 
3
3
  const afButtonGroupCss = ":host{display:inline-block}.button-group{display:inline-flex;align-items:center;box-sizing:border-box}.direction-horizontal{flex-direction:row}.direction-vertical{flex-direction:column}::slotted(*){flex-shrink:0}";
4
4
 
@@ -23,7 +23,7 @@ const AfButtonGroup = /*@__PURE__*/ proxyCustomElement(class AfButtonGroup exten
23
23
  'button-group': true,
24
24
  [`direction-${this.direction}`]: true
25
25
  };
26
- return (h(Host, { key: 'c6cab092c05c6e6b7b859c662f318067590b51e3' }, h("div", { key: '289501b3693d0eeb68c4b2f85bb3b8398ca7610b', class: classes, style: { gap: this.gap } }, h("slot", { key: 'b852bcf016846022ee0cf8d23ce5a57aa0856adf' }))));
26
+ return (h(Host, { key: '5f8f8c8acd7b401c9e217a05200dfca367691723' }, h("div", { key: 'b4d14e81177523a584a961e0f20b6e7be101a8e3', class: classes, style: { gap: this.gap } }, h("slot", { key: '68cb3173bcf193eb877d66b1588500882aa52a63' }))));
27
27
  }
28
28
  static get style() { return afButtonGroupCss; }
29
29
  }, [257, "af-button-group", {
@@ -45,6 +45,6 @@ function defineCustomElement() {
45
45
  }
46
46
 
47
47
  export { AfButtonGroup as A, defineCustomElement as d };
48
- //# sourceMappingURL=p-Bdy85P7Z.js.map
48
+ //# sourceMappingURL=p-BeQlNDyY.js.map
49
49
 
50
- //# sourceMappingURL=p-Bdy85P7Z.js.map
50
+ //# sourceMappingURL=p-BeQlNDyY.js.map
@@ -1 +1 @@
1
- {"file":"p-Bdy85P7Z.js","mappings":";;AAAA,MAAM,gBAAgB,GAAG,sNAAsN;;MCOlO,aAAa,iBAAAA,kBAAA,CAAA,MAAA,aAAA,SAAAC,CAAA,CAAA;AAL1B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;AAEG;AACK,QAAA,IAAS,CAAA,SAAA,GAA8B,YAAY;AAE3D;;AAEG;AACK,QAAA,IAAG,CAAA,GAAA,GAAW,KAAK;AAgB5B;IAdC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,CAAC,aAAa,IAAI,CAAC,SAAS,CAAE,CAAA,GAAG;SAClC;QAED,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAA,EAC3C,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACD;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-button-group/af-button-group.css?tag=af-button-group&encapsulation=shadow","src/components/af-button-group/af-button-group.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.button-group {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}\n\n.direction-horizontal {\n flex-direction: row;\n}\n\n.direction-vertical {\n flex-direction: column;\n}\n\n/* Ensure slotted buttons align properly */\n::slotted(*) {\n flex-shrink: 0;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-button-group',\n styleUrl: 'af-button-group.css',\n shadow: true\n})\nexport class AfButtonGroup {\n /**\n * Layout direction of the button group\n */\n @Prop() direction: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Gap between buttons\n */\n @Prop() gap: string = '8px';\n\n render() {\n const classes = {\n 'button-group': true,\n [`direction-${this.direction}`]: true\n };\n\n return (\n <Host>\n <div class={classes} style={{ gap: this.gap }}>\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"p-BeQlNDyY.js","mappings":";;AAAA,MAAM,gBAAgB,GAAG,sNAAsN;;MCOlO,aAAa,iBAAAA,kBAAA,CAAA,MAAA,aAAA,SAAAC,CAAA,CAAA;AAL1B,IAAA,WAAA,CAAA,YAAA,EAAA;;;;;;AAME;;AAEG;AACK,QAAA,IAAS,CAAA,SAAA,GAA8B,YAAY;AAE3D;;AAEG;AACK,QAAA,IAAG,CAAA,GAAA,GAAW,KAAK;AAgB5B;IAdC,MAAM,GAAA;AACJ,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,CAAC,aAAa,IAAI,CAAC,SAAS,CAAE,CAAA,GAAG;SAClC;QAED,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAA,EAC3C,CAAa,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACT,CACD;;;;;;;;;;;;;;;;;;;;;;;","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/af-button-group/af-button-group.css?tag=af-button-group&encapsulation=shadow","src/components/af-button-group/af-button-group.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.button-group {\n display: inline-flex;\n align-items: center;\n box-sizing: border-box;\n}\n\n.direction-horizontal {\n flex-direction: row;\n}\n\n.direction-vertical {\n flex-direction: column;\n}\n\n/* Ensure slotted buttons align properly */\n::slotted(*) {\n flex-shrink: 0;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'af-button-group',\n styleUrl: 'af-button-group.css',\n shadow: true\n})\nexport class AfButtonGroup {\n /**\n * Layout direction of the button group\n */\n @Prop() direction: 'horizontal' | 'vertical' = 'horizontal';\n\n /**\n * Gap between buttons\n */\n @Prop() gap: string = '8px';\n\n render() {\n const classes = {\n 'button-group': true,\n [`direction-${this.direction}`]: true\n };\n\n return (\n <Host>\n <div class={classes} style={{ gap: this.gap }}>\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}