@levo-so/blocks 0.1.1 → 0.1.52

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 (501) hide show
  1. package/package.json +6 -10
  2. package/src/blocks/about-us/about-us-1.schema.ts +577 -0
  3. package/src/blocks/about-us/about-us-1.tsx +53 -0
  4. package/src/blocks/about-us/about-us-2.schema.ts +269 -0
  5. package/src/blocks/about-us/about-us-2.tsx +47 -0
  6. package/src/blocks/blogs/blog-listing-1.schema.ts +473 -0
  7. package/src/blocks/blogs/blog-listing-1.tsx +102 -0
  8. package/src/blocks/blogs/blog-listing-2.schema.ts +3718 -0
  9. package/src/blocks/blogs/blog-listing-2.tsx +88 -0
  10. package/src/blocks/blogs/blog-listing-3.schema.ts +2476 -0
  11. package/src/blocks/blogs/blog-listing-3.tsx +84 -0
  12. package/src/blocks/blogs/blog-post-1.schema.ts +400 -0
  13. package/src/blocks/blogs/blog-post-1.tsx +52 -0
  14. package/src/blocks/blogs/blog-post-2.schema.ts +791 -0
  15. package/src/blocks/blogs/blog-post-2.tsx +131 -0
  16. package/src/blocks/blogs/blog-post-3.schema.ts +284 -0
  17. package/src/blocks/blogs/blog-post-3.tsx +58 -0
  18. package/src/blocks/cards/cards-10.schema.ts +1012 -0
  19. package/src/blocks/cards/cards-10.tsx +48 -0
  20. package/src/blocks/cards/cards-11.schema.ts +918 -0
  21. package/src/blocks/cards/cards-11.tsx +50 -0
  22. package/src/blocks/cards/cards-12.schema.ts +578 -0
  23. package/src/blocks/cards/cards-12.tsx +54 -0
  24. package/src/blocks/cards/cards-13.schema.ts +615 -0
  25. package/src/blocks/cards/cards-13.tsx +67 -0
  26. package/src/blocks/cards/cards-2.schema.ts +290 -0
  27. package/src/blocks/cards/cards-2.tsx +42 -0
  28. package/src/blocks/cards/cards-3.schema.ts +355 -0
  29. package/src/blocks/cards/cards-3.tsx +49 -0
  30. package/src/blocks/cards/cards-4.schema.ts +655 -0
  31. package/src/blocks/cards/cards-4.tsx +50 -0
  32. package/src/blocks/cards/cards-5.schema.ts +245 -0
  33. package/src/blocks/cards/cards-5.tsx +34 -0
  34. package/src/blocks/cards/cards-6.schema.ts +2139 -0
  35. package/src/blocks/cards/cards-6.tsx +140 -0
  36. package/src/blocks/cards/cards-7.schema.ts +3538 -0
  37. package/src/blocks/cards/cards-7.tsx +197 -0
  38. package/src/blocks/cards/cards-8.schema.ts +691 -0
  39. package/src/blocks/cards/cards-8.tsx +43 -0
  40. package/src/blocks/cards/cards-9.schema.ts +827 -0
  41. package/src/blocks/cards/cards-9.tsx +54 -0
  42. package/src/blocks/carousel/carousel-1.schema.ts +250 -0
  43. package/src/blocks/carousel/carousel-1.tsx +79 -0
  44. package/src/blocks/contact-us/contact-us-1.schema.ts +233 -0
  45. package/src/blocks/contact-us/contact-us-1.tsx +39 -0
  46. package/src/blocks/contact-us/contact-us-2.schema.ts +524 -0
  47. package/src/blocks/contact-us/contact-us-2.tsx +71 -0
  48. package/src/blocks/content/content-1.schema.ts +862 -0
  49. package/src/blocks/content/content-1.tsx +69 -0
  50. package/src/blocks/content/content-2.schema.ts +212 -0
  51. package/src/blocks/content/content-2.tsx +32 -0
  52. package/src/blocks/content/content-3.schema.ts +766 -0
  53. package/src/blocks/content/content-3.tsx +55 -0
  54. package/src/blocks/content/content-4.schema.ts +287 -0
  55. package/src/blocks/content/content-4.tsx +47 -0
  56. package/src/blocks/content/content-5.schema.ts +944 -0
  57. package/src/blocks/content/content-5.tsx +59 -0
  58. package/src/blocks/content/content-6.schema.ts +991 -0
  59. package/src/blocks/content/content-6.tsx +62 -0
  60. package/src/blocks/content/content-7.schema.ts +723 -0
  61. package/src/blocks/content/content-7.tsx +53 -0
  62. package/src/blocks/cta/cta-1.schema.ts +353 -0
  63. package/src/blocks/cta/cta-1.tsx +33 -0
  64. package/src/blocks/cta/cta-2.schema.ts +209 -0
  65. package/src/blocks/cta/cta-2.tsx +28 -0
  66. package/src/blocks/cta/cta-3.schema.ts +216 -0
  67. package/src/blocks/cta/cta-3.tsx +48 -0
  68. package/src/blocks/embed/embed-1.schema.ts +153 -0
  69. package/src/blocks/embed/embed-1.tsx +38 -0
  70. package/src/blocks/event/event-details.schema.ts +732 -0
  71. package/src/blocks/event/event-details.tsx +102 -0
  72. package/src/blocks/event/event-listing-2.schema.ts +555 -0
  73. package/src/blocks/event/event-listing-2.tsx +94 -0
  74. package/src/blocks/event/event-listing-3.schema.ts +621 -0
  75. package/src/blocks/event/event-listing-3.tsx +90 -0
  76. package/src/blocks/event/event-listing-4.schema.ts +3528 -0
  77. package/src/blocks/event/event-listing-4.tsx +97 -0
  78. package/src/blocks/event/event-listing.schema.ts +1353 -0
  79. package/src/blocks/event/event-listing.tsx +88 -0
  80. package/src/blocks/faq/faq-1.schema.ts +360 -0
  81. package/src/blocks/faq/faq-1.tsx +65 -0
  82. package/src/blocks/faq/faq-2.schema.ts +358 -0
  83. package/src/blocks/faq/faq-2.tsx +84 -0
  84. package/src/blocks/faq/faq-3.schema.ts +475 -0
  85. package/src/blocks/faq/faq-3.tsx +70 -0
  86. package/src/blocks/features/features-1/features-1.schema.ts +165 -0
  87. package/src/blocks/features/features-1/features-1.tsx +48 -0
  88. package/src/blocks/features/features-1/variants/default.ts +206 -0
  89. package/{dist/blocks/features/features-1/variants/index.js → src/blocks/features/features-1/variants/index.ts} +7 -1
  90. package/src/blocks/features/features-1/variants/stylized-cards-v1.ts +138 -0
  91. package/src/blocks/features/features-1/variants/stylized-cards-v2.ts +487 -0
  92. package/src/blocks/features/features-2.schema.ts +471 -0
  93. package/src/blocks/features/features-2.tsx +66 -0
  94. package/src/blocks/features/features-3.schema.ts +424 -0
  95. package/src/blocks/features/features-3.tsx +56 -0
  96. package/src/blocks/features/features-4.schema.ts +616 -0
  97. package/src/blocks/features/features-4.tsx +75 -0
  98. package/src/blocks/features/features-5.schema.ts +728 -0
  99. package/src/blocks/features/features-5.tsx +49 -0
  100. package/src/blocks/features/features-6.schema.ts +849 -0
  101. package/src/blocks/features/features-6.tsx +125 -0
  102. package/src/blocks/footer/footer-1.schema.ts +612 -0
  103. package/src/blocks/footer/footer-1.tsx +90 -0
  104. package/src/blocks/footer/footer-2.schema.ts +913 -0
  105. package/src/blocks/footer/footer-2.tsx +77 -0
  106. package/src/blocks/footer/footer-3.schema.ts +412 -0
  107. package/src/blocks/footer/footer-3.tsx +99 -0
  108. package/src/blocks/footer/footer-4.schema.ts +649 -0
  109. package/src/blocks/footer/footer-4.tsx +97 -0
  110. package/src/blocks/footer/footer-5.schema.ts +435 -0
  111. package/src/blocks/footer/footer-5.tsx +99 -0
  112. package/src/blocks/footer/footer-6.schema.ts +730 -0
  113. package/src/blocks/footer/footer-6.tsx +100 -0
  114. package/src/blocks/hero/hero-1.schema.ts +746 -0
  115. package/src/blocks/hero/hero-1.tsx +52 -0
  116. package/src/blocks/hero/hero-10.schema.ts +175 -0
  117. package/src/blocks/hero/hero-10.tsx +35 -0
  118. package/src/blocks/hero/hero-2.schema.ts +272 -0
  119. package/src/blocks/hero/hero-2.tsx +57 -0
  120. package/src/blocks/hero/hero-3.schema.ts +419 -0
  121. package/src/blocks/hero/hero-3.tsx +50 -0
  122. package/src/blocks/hero/hero-4.schema.ts +425 -0
  123. package/src/blocks/hero/hero-4.tsx +89 -0
  124. package/src/blocks/hero/hero-5.schema.ts +198 -0
  125. package/src/blocks/hero/hero-5.tsx +86 -0
  126. package/src/blocks/hero/hero-6.schema.ts +665 -0
  127. package/src/blocks/hero/hero-6.tsx +62 -0
  128. package/src/blocks/hero/hero-7.schema.ts +505 -0
  129. package/src/blocks/hero/hero-7.tsx +115 -0
  130. package/src/blocks/hero/hero-8.schema.ts +376 -0
  131. package/src/blocks/hero/hero-8.tsx +113 -0
  132. package/src/blocks/hero/hero-9.schema.ts +379 -0
  133. package/src/blocks/hero/hero-9.tsx +49 -0
  134. package/src/blocks/index.ts +89 -0
  135. package/src/blocks/logos/logos-1.schema.ts +270 -0
  136. package/src/blocks/logos/logos-1.tsx +60 -0
  137. package/src/blocks/navbar/navbar-1.schema.ts +959 -0
  138. package/src/blocks/navbar/navbar-1.tsx +384 -0
  139. package/src/blocks/navbar/navbar-2.schema.ts +1224 -0
  140. package/src/blocks/navbar/navbar-2.tsx +403 -0
  141. package/src/blocks/navbar/navbar-3.schema.ts +6834 -0
  142. package/src/blocks/navbar/navbar-3.tsx +551 -0
  143. package/src/blocks/pricing/pricing-1.schema.ts +988 -0
  144. package/src/blocks/pricing/pricing-1.tsx +88 -0
  145. package/src/blocks/products/products-listing-1.schema.ts +271 -0
  146. package/src/blocks/products/products-listing-1.tsx +48 -0
  147. package/src/blocks/profile/profile-1.schema.ts +399 -0
  148. package/src/blocks/profile/profile-1.tsx +64 -0
  149. package/src/blocks/stats/stats-1.schema.ts +262 -0
  150. package/src/blocks/stats/stats-1.tsx +38 -0
  151. package/src/blocks/stats/stats-2.schema.ts +111 -0
  152. package/src/blocks/stats/stats-2.tsx +52 -0
  153. package/src/blocks/stats/variants/default.ts +189 -0
  154. package/src/blocks/stats/variants/hero.ts +142 -0
  155. package/{dist/blocks/stats/variants/index.js → src/blocks/stats/variants/index.ts} +1 -0
  156. package/src/blocks/team/team-1.schema.ts +544 -0
  157. package/src/blocks/team/team-1.tsx +86 -0
  158. package/src/blocks/team/team-2.schema.ts +2742 -0
  159. package/src/blocks/team/team-2.tsx +74 -0
  160. package/src/blocks/team/team-3.schema.ts +690 -0
  161. package/src/blocks/team/team-3.tsx +103 -0
  162. package/src/blocks/team/team-4.schema.ts +551 -0
  163. package/src/blocks/team/team-4.tsx +59 -0
  164. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.schema.ts +158 -0
  165. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.tsx +29 -0
  166. package/src/blocks/testimonial/testimonial-1.schema.ts +351 -0
  167. package/src/blocks/testimonial/testimonial-1.tsx +79 -0
  168. package/src/blocks/testimonial/testimonial-2.schema.ts +816 -0
  169. package/src/blocks/testimonial/testimonial-2.tsx +161 -0
  170. package/src/blocks/testimonial/testimonial-3.schema.ts +273 -0
  171. package/src/blocks/testimonial/testimonial-3.tsx +128 -0
  172. package/src/blocks/testimonial/testimonial-4.schema.ts +3378 -0
  173. package/src/blocks/testimonial/testimonial-4.tsx +202 -0
  174. package/src/blocks/testimonial/testimonial-5/variants/default.ts +510 -0
  175. package/src/blocks/testimonial/testimonial-5/variants/index.ts +4 -0
  176. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithLogo.ts +887 -0
  177. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithRatings.ts +923 -0
  178. package/src/blocks/testimonial/testimonial-5.schema.ts +250 -0
  179. package/src/blocks/testimonial/testimonial-5.tsx +130 -0
  180. package/src/blocks/testimonial/testimonial-6.schema.ts +1672 -0
  181. package/src/blocks/testimonial/testimonial-6.tsx +178 -0
  182. package/{dist/index.js → src/index.ts} +5 -2
  183. package/{dist/schemas/blocks.js → src/schemas/blocks.ts} +97 -72
  184. package/src/schemas/categories.ts +140 -0
  185. package/src/styles.d.ts +4 -0
  186. package/dist/blocks/about-us/about-us-1.d.ts +0 -5
  187. package/dist/blocks/about-us/about-us-1.js +0 -5
  188. package/dist/blocks/about-us/about-us-1.schema.d.ts +0 -38
  189. package/dist/blocks/about-us/about-us-1.schema.js +0 -537
  190. package/dist/blocks/blogs/blog-listing-1.d.ts +0 -5
  191. package/dist/blocks/blogs/blog-listing-1.js +0 -12
  192. package/dist/blocks/blogs/blog-listing-1.schema.d.ts +0 -59
  193. package/dist/blocks/blogs/blog-listing-1.schema.js +0 -387
  194. package/dist/blocks/blogs/blog-listing-2.d.ts +0 -5
  195. package/dist/blocks/blogs/blog-listing-2.js +0 -9
  196. package/dist/blocks/blogs/blog-listing-2.schema.d.ts +0 -104
  197. package/dist/blocks/blogs/blog-listing-2.schema.js +0 -572
  198. package/dist/blocks/blogs/blog-post-1.d.ts +0 -6
  199. package/dist/blocks/blogs/blog-post-1.js +0 -8
  200. package/dist/blocks/blogs/blog-post-1.schema.d.ts +0 -48
  201. package/dist/blocks/blogs/blog-post-1.schema.js +0 -358
  202. package/dist/blocks/blogs/blog-post-2.d.ts +0 -6
  203. package/dist/blocks/blogs/blog-post-2.js +0 -8
  204. package/dist/blocks/blogs/blog-post-2.schema.d.ts +0 -74
  205. package/dist/blocks/blogs/blog-post-2.schema.js +0 -779
  206. package/dist/blocks/cards/cards-10.d.ts +0 -6
  207. package/dist/blocks/cards/cards-10.js +0 -4
  208. package/dist/blocks/cards/cards-10.schema.d.ts +0 -44
  209. package/dist/blocks/cards/cards-10.schema.js +0 -405
  210. package/dist/blocks/cards/cards-11.d.ts +0 -6
  211. package/dist/blocks/cards/cards-11.js +0 -4
  212. package/dist/blocks/cards/cards-11.schema.d.ts +0 -58
  213. package/dist/blocks/cards/cards-11.schema.js +0 -406
  214. package/dist/blocks/cards/cards-12.d.ts +0 -6
  215. package/dist/blocks/cards/cards-12.js +0 -4
  216. package/dist/blocks/cards/cards-12.schema.d.ts +0 -38
  217. package/dist/blocks/cards/cards-12.schema.js +0 -545
  218. package/dist/blocks/cards/cards-2.d.ts +0 -5
  219. package/dist/blocks/cards/cards-2.js +0 -4
  220. package/dist/blocks/cards/cards-2.schema.d.ts +0 -46
  221. package/dist/blocks/cards/cards-2.schema.js +0 -260
  222. package/dist/blocks/cards/cards-3.d.ts +0 -6
  223. package/dist/blocks/cards/cards-3.js +0 -5
  224. package/dist/blocks/cards/cards-3.schema.d.ts +0 -36
  225. package/dist/blocks/cards/cards-3.schema.js +0 -351
  226. package/dist/blocks/cards/cards-4.d.ts +0 -6
  227. package/dist/blocks/cards/cards-4.js +0 -4
  228. package/dist/blocks/cards/cards-4.schema.d.ts +0 -40
  229. package/dist/blocks/cards/cards-4.schema.js +0 -648
  230. package/dist/blocks/cards/cards-5.d.ts +0 -5
  231. package/dist/blocks/cards/cards-5.js +0 -4
  232. package/dist/blocks/cards/cards-5.schema.d.ts +0 -48
  233. package/dist/blocks/cards/cards-5.schema.js +0 -238
  234. package/dist/blocks/cards/cards-6.d.ts +0 -5
  235. package/dist/blocks/cards/cards-6.js +0 -45
  236. package/dist/blocks/cards/cards-6.schema.d.ts +0 -50
  237. package/dist/blocks/cards/cards-6.schema.js +0 -608
  238. package/dist/blocks/cards/cards-7.d.ts +0 -5
  239. package/dist/blocks/cards/cards-7.js +0 -45
  240. package/dist/blocks/cards/cards-7.schema.d.ts +0 -87
  241. package/dist/blocks/cards/cards-7.schema.js +0 -1732
  242. package/dist/blocks/cards/cards-8.d.ts +0 -6
  243. package/dist/blocks/cards/cards-8.js +0 -4
  244. package/dist/blocks/cards/cards-8.schema.d.ts +0 -40
  245. package/dist/blocks/cards/cards-8.schema.js +0 -660
  246. package/dist/blocks/cards/cards-9.d.ts +0 -5
  247. package/dist/blocks/cards/cards-9.js +0 -4
  248. package/dist/blocks/cards/cards-9.schema.d.ts +0 -55
  249. package/dist/blocks/cards/cards-9.schema.js +0 -798
  250. package/dist/blocks/carousel/carousel-1.d.ts +0 -5
  251. package/dist/blocks/carousel/carousel-1.js +0 -12
  252. package/dist/blocks/carousel/carousel-1.schema.d.ts +0 -51
  253. package/dist/blocks/carousel/carousel-1.schema.js +0 -236
  254. package/dist/blocks/contact-us/contact-us-1.d.ts +0 -5
  255. package/dist/blocks/contact-us/contact-us-1.js +0 -4
  256. package/dist/blocks/contact-us/contact-us-1.schema.d.ts +0 -31
  257. package/dist/blocks/contact-us/contact-us-1.schema.js +0 -202
  258. package/dist/blocks/contact-us/contact-us-2.d.ts +0 -5
  259. package/dist/blocks/contact-us/contact-us-2.js +0 -4
  260. package/dist/blocks/contact-us/contact-us-2.schema.d.ts +0 -59
  261. package/dist/blocks/contact-us/contact-us-2.schema.js +0 -512
  262. package/dist/blocks/content/content-1.d.ts +0 -6
  263. package/dist/blocks/content/content-1.js +0 -4
  264. package/dist/blocks/content/content-1.schema.d.ts +0 -56
  265. package/dist/blocks/content/content-1.schema.js +0 -807
  266. package/dist/blocks/content/content-2.d.ts +0 -5
  267. package/dist/blocks/content/content-2.js +0 -4
  268. package/dist/blocks/content/content-2.schema.d.ts +0 -78
  269. package/dist/blocks/content/content-2.schema.js +0 -200
  270. package/dist/blocks/content/content-3.d.ts +0 -6
  271. package/dist/blocks/content/content-3.js +0 -5
  272. package/dist/blocks/content/content-3.schema.d.ts +0 -23
  273. package/dist/blocks/content/content-3.schema.js +0 -850
  274. package/dist/blocks/content/content-4.d.ts +0 -6
  275. package/dist/blocks/content/content-4.js +0 -6
  276. package/dist/blocks/content/content-4.schema.d.ts +0 -33
  277. package/dist/blocks/content/content-4.schema.js +0 -252
  278. package/dist/blocks/content/content-5.d.ts +0 -6
  279. package/dist/blocks/content/content-5.js +0 -5
  280. package/dist/blocks/content/content-5.schema.d.ts +0 -37
  281. package/dist/blocks/content/content-5.schema.js +0 -932
  282. package/dist/blocks/content/content-6.d.ts +0 -6
  283. package/dist/blocks/content/content-6.js +0 -5
  284. package/dist/blocks/content/content-6.schema.d.ts +0 -41
  285. package/dist/blocks/content/content-6.schema.js +0 -976
  286. package/dist/blocks/cta/cta-1.d.ts +0 -5
  287. package/dist/blocks/cta/cta-1.js +0 -4
  288. package/dist/blocks/cta/cta-1.schema.d.ts +0 -40
  289. package/dist/blocks/cta/cta-1.schema.js +0 -339
  290. package/dist/blocks/cta/cta-2.d.ts +0 -5
  291. package/dist/blocks/cta/cta-2.js +0 -4
  292. package/dist/blocks/cta/cta-2.schema.d.ts +0 -45
  293. package/dist/blocks/cta/cta-2.schema.js +0 -183
  294. package/dist/blocks/cta/cta-3.d.ts +0 -5
  295. package/dist/blocks/cta/cta-3.js +0 -4
  296. package/dist/blocks/cta/cta-3.schema.d.ts +0 -34
  297. package/dist/blocks/cta/cta-3.schema.js +0 -137
  298. package/dist/blocks/embed/embed-1.d.ts +0 -5
  299. package/dist/blocks/embed/embed-1.js +0 -5
  300. package/dist/blocks/embed/embed-1.schema.d.ts +0 -13
  301. package/dist/blocks/embed/embed-1.schema.js +0 -146
  302. package/dist/blocks/event/event-details.d.ts +0 -5
  303. package/dist/blocks/event/event-details.js +0 -9
  304. package/dist/blocks/event/event-details.schema.d.ts +0 -112
  305. package/dist/blocks/event/event-details.schema.js +0 -685
  306. package/dist/blocks/event/event-listing-2.d.ts +0 -5
  307. package/dist/blocks/event/event-listing-2.js +0 -4
  308. package/dist/blocks/event/event-listing-2.schema.d.ts +0 -84
  309. package/dist/blocks/event/event-listing-2.schema.js +0 -455
  310. package/dist/blocks/event/event-listing-3.d.ts +0 -5
  311. package/dist/blocks/event/event-listing-3.js +0 -10
  312. package/dist/blocks/event/event-listing-3.schema.d.ts +0 -77
  313. package/dist/blocks/event/event-listing-3.schema.js +0 -570
  314. package/dist/blocks/event/event-listing.d.ts +0 -5
  315. package/dist/blocks/event/event-listing.js +0 -10
  316. package/dist/blocks/event/event-listing.schema.d.ts +0 -51
  317. package/dist/blocks/event/event-listing.schema.js +0 -1297
  318. package/dist/blocks/faq/faq-1.d.ts +0 -5
  319. package/dist/blocks/faq/faq-1.js +0 -4
  320. package/dist/blocks/faq/faq-1.schema.d.ts +0 -47
  321. package/dist/blocks/faq/faq-1.schema.js +0 -325
  322. package/dist/blocks/faq/faq-2.d.ts +0 -6
  323. package/dist/blocks/faq/faq-2.js +0 -19
  324. package/dist/blocks/faq/faq-2.schema.d.ts +0 -47
  325. package/dist/blocks/faq/faq-2.schema.js +0 -329
  326. package/dist/blocks/faq/faq-3.d.ts +0 -5
  327. package/dist/blocks/faq/faq-3.js +0 -4
  328. package/dist/blocks/faq/faq-3.schema.d.ts +0 -40
  329. package/dist/blocks/faq/faq-3.schema.js +0 -444
  330. package/dist/blocks/features/features-1/features-1.d.ts +0 -5
  331. package/dist/blocks/features/features-1/features-1.js +0 -4
  332. package/dist/blocks/features/features-1/features-1.schema.d.ts +0 -5
  333. package/dist/blocks/features/features-1/features-1.schema.js +0 -142
  334. package/dist/blocks/features/features-1/variants/default.d.ts +0 -37
  335. package/dist/blocks/features/features-1/variants/default.js +0 -185
  336. package/dist/blocks/features/features-1/variants/index.d.ts +0 -5
  337. package/dist/blocks/features/features-1/variants/stylized-cards-v1.d.ts +0 -3
  338. package/dist/blocks/features/features-1/variants/stylized-cards-v1.js +0 -132
  339. package/dist/blocks/features/features-1/variants/stylized-cards-v2.d.ts +0 -3
  340. package/dist/blocks/features/features-1/variants/stylized-cards-v2.js +0 -484
  341. package/dist/blocks/features/features-2.d.ts +0 -5
  342. package/dist/blocks/features/features-2.js +0 -8
  343. package/dist/blocks/features/features-2.schema.d.ts +0 -41
  344. package/dist/blocks/features/features-2.schema.js +0 -321
  345. package/dist/blocks/features/features-3.d.ts +0 -5
  346. package/dist/blocks/features/features-3.js +0 -4
  347. package/dist/blocks/features/features-3.schema.d.ts +0 -40
  348. package/dist/blocks/features/features-3.schema.js +0 -424
  349. package/dist/blocks/features/features-4.d.ts +0 -5
  350. package/dist/blocks/features/features-4.js +0 -4
  351. package/dist/blocks/features/features-4.schema.d.ts +0 -60
  352. package/dist/blocks/features/features-4.schema.js +0 -594
  353. package/dist/blocks/features/features-5.d.ts +0 -6
  354. package/dist/blocks/features/features-5.js +0 -5
  355. package/dist/blocks/features/features-5.schema.d.ts +0 -28
  356. package/dist/blocks/features/features-5.schema.js +0 -727
  357. package/dist/blocks/features/features-6.d.ts +0 -5
  358. package/dist/blocks/features/features-6.js +0 -31
  359. package/dist/blocks/features/features-6.schema.d.ts +0 -74
  360. package/dist/blocks/features/features-6.schema.js +0 -814
  361. package/dist/blocks/footer/footer-1.d.ts +0 -6
  362. package/dist/blocks/footer/footer-1.js +0 -5
  363. package/dist/blocks/footer/footer-1.schema.d.ts +0 -62
  364. package/dist/blocks/footer/footer-1.schema.js +0 -565
  365. package/dist/blocks/footer/footer-2.d.ts +0 -5
  366. package/dist/blocks/footer/footer-2.js +0 -4
  367. package/dist/blocks/footer/footer-2.schema.d.ts +0 -76
  368. package/dist/blocks/footer/footer-2.schema.js +0 -876
  369. package/dist/blocks/footer/footer-3.d.ts +0 -6
  370. package/dist/blocks/footer/footer-3.js +0 -15
  371. package/dist/blocks/footer/footer-3.schema.d.ts +0 -48
  372. package/dist/blocks/footer/footer-3.schema.js +0 -475
  373. package/dist/blocks/footer/footer-4.d.ts +0 -6
  374. package/dist/blocks/footer/footer-4.js +0 -5
  375. package/dist/blocks/footer/footer-4.schema.d.ts +0 -71
  376. package/dist/blocks/footer/footer-4.schema.js +0 -620
  377. package/dist/blocks/footer/footer-5.d.ts +0 -6
  378. package/dist/blocks/footer/footer-5.js +0 -5
  379. package/dist/blocks/footer/footer-5.schema.d.ts +0 -52
  380. package/dist/blocks/footer/footer-5.schema.js +0 -400
  381. package/dist/blocks/hero/hero-1.d.ts +0 -5
  382. package/dist/blocks/hero/hero-1.js +0 -4
  383. package/dist/blocks/hero/hero-1.schema.d.ts +0 -35
  384. package/dist/blocks/hero/hero-1.schema.js +0 -742
  385. package/dist/blocks/hero/hero-2.d.ts +0 -5
  386. package/dist/blocks/hero/hero-2.js +0 -4
  387. package/dist/blocks/hero/hero-2.schema.d.ts +0 -46
  388. package/dist/blocks/hero/hero-2.schema.js +0 -282
  389. package/dist/blocks/hero/hero-3.d.ts +0 -5
  390. package/dist/blocks/hero/hero-3.js +0 -4
  391. package/dist/blocks/hero/hero-3.schema.d.ts +0 -54
  392. package/dist/blocks/hero/hero-3.schema.js +0 -378
  393. package/dist/blocks/hero/hero-4.d.ts +0 -5
  394. package/dist/blocks/hero/hero-4.js +0 -30
  395. package/dist/blocks/hero/hero-4.schema.d.ts +0 -33
  396. package/dist/blocks/hero/hero-4.schema.js +0 -316
  397. package/dist/blocks/hero/hero-5.d.ts +0 -5
  398. package/dist/blocks/hero/hero-5.js +0 -30
  399. package/dist/blocks/hero/hero-5.schema.d.ts +0 -32
  400. package/dist/blocks/hero/hero-5.schema.js +0 -183
  401. package/dist/blocks/hero/hero-6.d.ts +0 -5
  402. package/dist/blocks/hero/hero-6.js +0 -8
  403. package/dist/blocks/hero/hero-6.schema.d.ts +0 -36
  404. package/dist/blocks/hero/hero-6.schema.js +0 -617
  405. package/dist/blocks/hero/hero-7.d.ts +0 -5
  406. package/dist/blocks/hero/hero-7.js +0 -40
  407. package/dist/blocks/hero/hero-7.schema.d.ts +0 -12
  408. package/dist/blocks/hero/hero-7.schema.js +0 -471
  409. package/dist/blocks/hero/hero-8.d.ts +0 -5
  410. package/dist/blocks/hero/hero-8.js +0 -39
  411. package/dist/blocks/hero/hero-8.schema.d.ts +0 -17
  412. package/dist/blocks/hero/hero-8.schema.js +0 -343
  413. package/dist/blocks/hero/hero-9.d.ts +0 -6
  414. package/dist/blocks/hero/hero-9.js +0 -4
  415. package/dist/blocks/hero/hero-9.schema.d.ts +0 -39
  416. package/dist/blocks/hero/hero-9.schema.js +0 -355
  417. package/dist/blocks/index.d.ts +0 -3
  418. package/dist/blocks/index.js +0 -74
  419. package/dist/blocks/logos/logos-1.d.ts +0 -5
  420. package/dist/blocks/logos/logos-1.js +0 -10
  421. package/dist/blocks/logos/logos-1.schema.d.ts +0 -34
  422. package/dist/blocks/logos/logos-1.schema.js +0 -239
  423. package/dist/blocks/navbar/navbar-1.d.ts +0 -6
  424. package/dist/blocks/navbar/navbar-1.js +0 -100
  425. package/dist/blocks/navbar/navbar-1.schema.d.ts +0 -117
  426. package/dist/blocks/navbar/navbar-1.schema.js +0 -938
  427. package/dist/blocks/navbar/navbar-2.d.ts +0 -6
  428. package/dist/blocks/navbar/navbar-2.js +0 -99
  429. package/dist/blocks/navbar/navbar-2.schema.d.ts +0 -134
  430. package/dist/blocks/navbar/navbar-2.schema.js +0 -1200
  431. package/dist/blocks/pricing/pricing-1.d.ts +0 -5
  432. package/dist/blocks/pricing/pricing-1.js +0 -4
  433. package/dist/blocks/pricing/pricing-1.schema.d.ts +0 -87
  434. package/dist/blocks/pricing/pricing-1.schema.js +0 -976
  435. package/dist/blocks/products/products-listing-1.d.ts +0 -5
  436. package/dist/blocks/products/products-listing-1.js +0 -4
  437. package/dist/blocks/products/products-listing-1.schema.d.ts +0 -36
  438. package/dist/blocks/products/products-listing-1.schema.js +0 -264
  439. package/dist/blocks/stats/stats-1.d.ts +0 -6
  440. package/dist/blocks/stats/stats-1.js +0 -6
  441. package/dist/blocks/stats/stats-1.schema.d.ts +0 -25
  442. package/dist/blocks/stats/stats-1.schema.js +0 -213
  443. package/dist/blocks/stats/stats-2.d.ts +0 -6
  444. package/dist/blocks/stats/stats-2.js +0 -6
  445. package/dist/blocks/stats/stats-2.schema.d.ts +0 -5
  446. package/dist/blocks/stats/stats-2.schema.js +0 -104
  447. package/dist/blocks/stats/variants/default.d.ts +0 -22
  448. package/dist/blocks/stats/variants/default.js +0 -185
  449. package/dist/blocks/stats/variants/hero.d.ts +0 -3
  450. package/dist/blocks/stats/variants/hero.js +0 -151
  451. package/dist/blocks/stats/variants/index.d.ts +0 -4
  452. package/dist/blocks/team/team-1.d.ts +0 -6
  453. package/dist/blocks/team/team-1.js +0 -6
  454. package/dist/blocks/team/team-1.schema.d.ts +0 -65
  455. package/dist/blocks/team/team-1.schema.js +0 -476
  456. package/dist/blocks/team/team-2.d.ts +0 -6
  457. package/dist/blocks/team/team-2.js +0 -6
  458. package/dist/blocks/team/team-2.schema.d.ts +0 -52
  459. package/dist/blocks/team/team-2.schema.js +0 -2732
  460. package/dist/blocks/team/team-3.d.ts +0 -5
  461. package/dist/blocks/team/team-3.js +0 -30
  462. package/dist/blocks/team/team-3.schema.d.ts +0 -32
  463. package/dist/blocks/team/team-3.schema.js +0 -679
  464. package/dist/blocks/termsAndPrivacy/terms-and-conditions-1.d.ts +0 -6
  465. package/dist/blocks/termsAndPrivacy/terms-and-conditions-1.js +0 -4
  466. package/dist/blocks/termsAndPrivacy/terms-and-conditions-1.schema.d.ts +0 -14
  467. package/dist/blocks/termsAndPrivacy/terms-and-conditions-1.schema.js +0 -154
  468. package/dist/blocks/testimonial/testimonial-1.d.ts +0 -5
  469. package/dist/blocks/testimonial/testimonial-1.js +0 -10
  470. package/dist/blocks/testimonial/testimonial-1.schema.d.ts +0 -16
  471. package/dist/blocks/testimonial/testimonial-1.schema.js +0 -314
  472. package/dist/blocks/testimonial/testimonial-2.d.ts +0 -5
  473. package/dist/blocks/testimonial/testimonial-2.js +0 -42
  474. package/dist/blocks/testimonial/testimonial-2.schema.d.ts +0 -54
  475. package/dist/blocks/testimonial/testimonial-2.schema.js +0 -771
  476. package/dist/blocks/testimonial/testimonial-3.d.ts +0 -5
  477. package/dist/blocks/testimonial/testimonial-3.js +0 -38
  478. package/dist/blocks/testimonial/testimonial-3.schema.d.ts +0 -56
  479. package/dist/blocks/testimonial/testimonial-3.schema.js +0 -260
  480. package/dist/blocks/testimonial/testimonial-4.d.ts +0 -5
  481. package/dist/blocks/testimonial/testimonial-4.js +0 -51
  482. package/dist/blocks/testimonial/testimonial-4.schema.d.ts +0 -145
  483. package/dist/blocks/testimonial/testimonial-4.schema.js +0 -3214
  484. package/dist/blocks/testimonial/testimonial-5.d.ts +0 -5
  485. package/dist/blocks/testimonial/testimonial-5.js +0 -31
  486. package/dist/blocks/testimonial/testimonial-5.schema.d.ts +0 -33
  487. package/dist/blocks/testimonial/testimonial-5.schema.js +0 -401
  488. package/dist/blocks/testimonial/testimonial-6.d.ts +0 -5
  489. package/dist/blocks/testimonial/testimonial-6.js +0 -39
  490. package/dist/blocks/testimonial/testimonial-6.schema.d.ts +0 -60
  491. package/dist/blocks/testimonial/testimonial-6.schema.js +0 -695
  492. package/dist/blocks.d.ts +0 -3
  493. package/dist/blocks.js +0 -74
  494. package/dist/index.d.ts +0 -6
  495. package/dist/schemas/blocks.d.ts +0 -3
  496. package/dist/schemas/categories.d.ts +0 -3
  497. package/dist/schemas/categories.js +0 -129
  498. package/dist/schemas/index.d.ts +0 -3
  499. package/dist/schemas.d.ts +0 -3
  500. package/dist/schemas.js +0 -2
  501. /package/{dist/schemas/index.js → src/schemas/index.ts} +0 -0
@@ -0,0 +1,161 @@
1
+ import type { CarouselApi } from "@levo-so/studio";
2
+ import {
3
+ type ILevoBlockBaseProps,
4
+ Heading,
5
+ Image,
6
+ Typography,
7
+ Container,
8
+ Section,
9
+ Carousel,
10
+ CarouselContent,
11
+ CarouselItem,
12
+ Box,
13
+ Media,
14
+ Iframe,
15
+ Icon,
16
+ } from "@levo-so/studio";
17
+ import { useEffect, useState } from "react";
18
+
19
+ import type { ITestimonial2Content } from "./testimonial-2.schema";
20
+
21
+ const Testimonial2: React.FC<ILevoBlockBaseProps<ITestimonial2Content>> = ({
22
+ content,
23
+ }) => {
24
+ const [api, setApi] = useState<CarouselApi>();
25
+ const [current, setCurrent] = useState(0);
26
+ const [count, setCount] = useState(0);
27
+
28
+ useEffect(() => {
29
+ if (!api) {
30
+ return;
31
+ }
32
+
33
+ setCount(api.scrollSnapList().length);
34
+ setCurrent(api.selectedScrollSnap() + 1);
35
+
36
+ api.on("select", () => {
37
+ setCurrent(api.selectedScrollSnap() + 1);
38
+ });
39
+ }, [api]);
40
+
41
+ return (
42
+ <Section elementKey="layout">
43
+ <Container elementKey="container">
44
+ <Box elementKey="header">
45
+ <Box elementKey="header-content">
46
+ <Box elementKey="badge-container">
47
+ <Typography elementKey="badge-text" />
48
+ </Box>
49
+ <Heading elementKey="title" />
50
+ </Box>
51
+ {count > 0 && (
52
+ <Box elementKey="carousel-navigation-top-container">
53
+ <Box elementKey="carousel-navigation" className="flex gap-x-2">
54
+ {Array(count)
55
+ ?.fill(0)
56
+ ?.map((_, index) => (
57
+ <Box
58
+ key={index}
59
+ elementKey="carousel-navigation-pill"
60
+ style={
61
+ index + 1 === current
62
+ ? {
63
+ backgroundColor: "var(--color-brand)",
64
+ width: "24px",
65
+ }
66
+ : {}
67
+ }
68
+ onClick={() => {
69
+ if (api) {
70
+ api?.scrollTo(index);
71
+ }
72
+ }}
73
+ />
74
+ ))}
75
+ </Box>
76
+ </Box>
77
+ )}
78
+ </Box>
79
+ <Carousel
80
+ elementKey="testimonials_levoGroup"
81
+ className="w-full"
82
+ setApi={setApi}
83
+ data-levo_group
84
+ >
85
+ <CarouselContent>
86
+ {(content?.testimonials ?? [])?.map((_, index) => (
87
+ <CarouselItem key={index} data-levo_group_item>
88
+ <Box elementKey={`testimonials.${index}.testimonial`}>
89
+ <Box elementKey={`testimonials.${index}.cover-container`}>
90
+ <Media
91
+ elementKey={`testimonials.${index}.cover`}
92
+ alt="cover"
93
+ />
94
+ <Iframe elementKey={`testimonials.${index}.cover_embed`} />
95
+ </Box>
96
+ <Box
97
+ elementKey={`testimonials.${index}.testimonial-content-wrapper`}
98
+ >
99
+ <Box
100
+ elementKey={`testimonials.${index}.testimonial-content`}
101
+ >
102
+ <Icon elementKey={`testimonials.${index}.icon`} />
103
+ <Box
104
+ elementKey={`testimonials.${index}.testimonial-info`}
105
+ >
106
+ <Typography
107
+ elementKey={`testimonials.${index}.testimonial-text`}
108
+ />
109
+
110
+ <Box
111
+ elementKey={`testimonials.${index}.author-wrapper`}
112
+ >
113
+ <Heading
114
+ elementKey={`testimonials.${index}.author-name`}
115
+ />
116
+ <Typography
117
+ elementKey={`testimonials.${index}.author-position`}
118
+ />
119
+ </Box>
120
+ </Box>
121
+ </Box>
122
+ </Box>
123
+ </Box>
124
+ </CarouselItem>
125
+ ))}
126
+ </CarouselContent>
127
+ </Carousel>
128
+ <Heading elementKey="title_two" />
129
+ {count > 0 && (
130
+ <Box elementKey="carousel-navigation-bottom-container">
131
+ <Box elementKey="carousel-navigation" className="flex gap-x-2">
132
+ {Array(count)
133
+ ?.fill(0)
134
+ ?.map((_, index) => (
135
+ <Box
136
+ key={index}
137
+ elementKey="carousel-navigation-pill"
138
+ style={
139
+ index + 1 === current
140
+ ? {
141
+ backgroundColor: "var(--color-brand)",
142
+ width: "24px",
143
+ }
144
+ : {}
145
+ }
146
+ onClick={() => {
147
+ if (api) {
148
+ api?.scrollTo(index);
149
+ }
150
+ }}
151
+ />
152
+ ))}
153
+ </Box>
154
+ </Box>
155
+ )}
156
+ </Container>
157
+ </Section>
158
+ );
159
+ };
160
+
161
+ export default Testimonial2;
@@ -0,0 +1,273 @@
1
+ import type { IBlock } from "@levo-so/studio";
2
+
3
+ // Extract image object into a constant for reusability
4
+ const CLIENT_IMAGE = {
5
+ id: "7141014160938075687",
6
+ location: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH.png",
7
+ kind: "image",
8
+ mimetype: "image/png",
9
+ srcset: {
10
+ "1080w":
11
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp",
12
+ "1200w":
13
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1200w.webp",
14
+ "1920w":
15
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1920w.webp",
16
+ "320w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp",
17
+ "640w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp",
18
+ "750w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-750w.webp",
19
+ "828w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-828w.webp",
20
+ path: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp 640w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp 1080w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1200w.webp 1200w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1920w.webp 1920w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp 320w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-750w.webp 750w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-828w.webp 828w",
21
+ },
22
+ };
23
+
24
+ // Array of testimonials content
25
+ const TESTIMONIALS_CONTENT = [
26
+ {
27
+ testimonial_wrapper: null,
28
+ testimonial_content: null,
29
+ author_box: null,
30
+ author_name: "Jeni Smith",
31
+ author_role: "Head of Operations, Shark Ltd.",
32
+ testimonial_text:
33
+ "AI-powered solutions transformed our website! The team's expertise in web development and AI-driven automation helped us build a fast, intuitive, and scalable platform. Our user engagement has skyrocketed, and the seamless AI integrations have made a real impact. Highly recommended!",
34
+ testimonial_controls: null,
35
+ image_box: null,
36
+ client_image: CLIENT_IMAGE,
37
+ },
38
+ {
39
+ testimonial_wrapper: null,
40
+ testimonial_content: null,
41
+ author_box: null,
42
+ author_name: "Mike Johnson",
43
+ author_role: "CTO, Tech Innovations Inc.",
44
+ testimonial_text:
45
+ "The development team exceeded our expectations with their innovative approach to AI integration. Our platform's performance improved dramatically, and the user experience is now seamless across all devices.",
46
+ testimonial_controls: null,
47
+ image_box: null,
48
+ client_image: CLIENT_IMAGE,
49
+ },
50
+ {
51
+ testimonial_wrapper: null,
52
+ testimonial_content: null,
53
+ author_box: null,
54
+ author_name: "Sarah Williams",
55
+ author_role: "Product Manager, Digital Solutions Co.",
56
+ testimonial_text:
57
+ "Working with this team was a game-changer for our business. The AI-powered features they implemented have streamlined our operations and significantly improved our customer satisfaction rates.",
58
+ testimonial_controls: null,
59
+ image_box: null,
60
+ client_image: CLIENT_IMAGE,
61
+ },
62
+ ];
63
+
64
+ const DEFAULT_CONTENT = {
65
+ layout: null,
66
+ container: null,
67
+ title: "What Our Clients Say",
68
+ button_prev: " ",
69
+ button_next: " ",
70
+ testimonials: TESTIMONIALS_CONTENT,
71
+ button_prev_leftIcon: {
72
+ kind: "icon",
73
+ data: {
74
+ id: "arrow-left",
75
+ label: "Arrow Left",
76
+ tags: ["arrow", "custom", "directional", "left"],
77
+ svgCode:
78
+ '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M9.57043 18.82C9.38043 18.82 9.19043 18.75 9.04043 18.6L2.97043 12.53C2.68043 12.24 2.68043 11.76 2.97043 11.47L9.04043 5.4C9.33043 5.11 9.81043 5.11 10.1004 5.4C10.3904 5.69 10.3904 6.17 10.1004 6.46L4.56043 12L10.1004 17.54C10.3904 17.83 10.3904 18.31 10.1004 18.6C9.96043 18.75 9.76043 18.82 9.57043 18.82Z" fill="currentColor"/>\n<path d="M20.4999 12.75H3.66992C3.25992 12.75 2.91992 12.41 2.91992 12C2.91992 11.59 3.25992 11.25 3.66992 11.25H20.4999C20.9099 11.25 21.2499 11.59 21.2499 12C21.2499 12.41 20.9099 12.75 20.4999 12.75Z" fill="currentColor"/>\n</svg>',
79
+ },
80
+ },
81
+ button_next_rightIcon: {
82
+ kind: "icon",
83
+ data: {
84
+ id: "arrow-right-1",
85
+ label: "Arrow Right 1",
86
+ tags: ["arrow", "custom", "directional", "right"],
87
+ svgCode:
88
+ '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M14.4301 18.82C14.2401 18.82 14.0501 18.75 13.9001 18.6C13.6101 18.31 13.6101 17.83 13.9001 17.54L19.4401 12L13.9001 6.46C13.6101 6.17 13.6101 5.69 13.9001 5.4C14.1901 5.11 14.6701 5.11 14.9601 5.4L21.0301 11.47C21.3201 11.76 21.3201 12.24 21.0301 12.53L14.9601 18.6C14.8101 18.75 14.6201 18.82 14.4301 18.82Z" fill="currentColor"/>\n<path d="M20.33 12.75H3.5C3.09 12.75 2.75 12.41 2.75 12C2.75 11.59 3.09 11.25 3.5 11.25H20.33C20.74 11.25 21.08 11.59 21.08 12C21.08 12.41 20.74 12.75 20.33 12.75Z" fill="currentColor"/>\n</svg>',
89
+ },
90
+ },
91
+ };
92
+
93
+ export type ITestimonial3Content = typeof DEFAULT_CONTENT;
94
+
95
+ // Testimonial field styles
96
+ const TESTIMONIAL_STYLE = {
97
+ testimonial_wrapper: {
98
+ display: "flex",
99
+ "flex-direction": "row",
100
+ "align-items": "center",
101
+ gap: "10xl",
102
+ mobile: {
103
+ "flex-direction": "column",
104
+ },
105
+ },
106
+ testimonial_content: {
107
+ flex: "1 1 0%",
108
+ },
109
+ author_box: {
110
+ "margin-bottom": "6xl",
111
+ },
112
+ author_name: {
113
+ "font-weight": "600",
114
+ "font-size": "lg",
115
+ color: "text-1",
116
+ "margin-bottom": "2xs",
117
+ },
118
+ author_role: {
119
+ color: "text-2",
120
+ "font-size": "sm",
121
+ },
122
+ testimonial_text: {
123
+ "font-size": "xl",
124
+ "line-height": "1.625",
125
+ color: "text-1",
126
+ "margin-bottom": "8xl",
127
+ },
128
+ testimonial_controls: {
129
+ display: "flex",
130
+ gap: "base",
131
+ },
132
+ image_box: {
133
+ flex: "1 1 0%",
134
+ display: "flex",
135
+ "justify-content": "center",
136
+ },
137
+ client_image: {
138
+ height: "18rem",
139
+ "object-fit": "cover",
140
+ "border-radius": "base",
141
+ },
142
+ };
143
+
144
+ const TESTIMONIALS_STYLES = Array.from({ length: 3 }, () =>
145
+ JSON.parse(JSON.stringify(TESTIMONIAL_STYLE)),
146
+ );
147
+
148
+ export const Testimonial3: IBlock = {
149
+ category_id: "testimonial",
150
+ title: "Testimonial 3",
151
+ key: "testimonial-3",
152
+ version: "v1",
153
+ content_schema: [
154
+ {
155
+ key: "layout",
156
+ label: "Layout",
157
+ field_interface: "LayoutWidget",
158
+ },
159
+ {
160
+ key: "container",
161
+ label: "Container",
162
+ field_interface: "ContainerWidget",
163
+ },
164
+ {
165
+ key: "title",
166
+ label: "Title",
167
+ field_interface: "HeadingWidget",
168
+ },
169
+ {
170
+ key: "testimonials",
171
+ label: "Testimonials",
172
+ field_interface: "CarouselWidget",
173
+ fields: [
174
+ {
175
+ key: "testimonial_wrapper",
176
+ label: "Testimonial Wrapper",
177
+ field_interface: "BoxWidget",
178
+ },
179
+ {
180
+ key: "testimonial_content",
181
+ label: "Testimonial Content",
182
+ field_interface: "BoxWidget",
183
+ },
184
+ {
185
+ key: "author_box",
186
+ label: "Author Box",
187
+ field_interface: "BoxWidget",
188
+ },
189
+ {
190
+ key: "author_name",
191
+ label: "Author Name",
192
+ field_interface: "TypographyWidget",
193
+ },
194
+ {
195
+ key: "author_role",
196
+ label: "Author Role",
197
+ field_interface: "TypographyWidget",
198
+ },
199
+ {
200
+ key: "testimonial_text",
201
+ label: "Testimonial Text",
202
+ field_interface: "TypographyWidget",
203
+ },
204
+ {
205
+ key: "testimonial_controls",
206
+ label: "Testimonial Controls",
207
+ field_interface: "BoxWidget",
208
+ },
209
+ {
210
+ key: "image_box",
211
+ label: "Image Box",
212
+ field_interface: "BoxWidget",
213
+ },
214
+ {
215
+ key: "client_image",
216
+ label: "Client Image",
217
+ field_interface: "ImageWidget",
218
+ },
219
+ ],
220
+ },
221
+ {
222
+ key: "button_prev",
223
+ label: "Button Prev",
224
+ field_interface: "ButtonWidget",
225
+ },
226
+ {
227
+ key: "button_next",
228
+ label: "Button Next",
229
+ field_interface: "ButtonWidget",
230
+ },
231
+ ],
232
+ layouts: [
233
+ {
234
+ key: "default",
235
+ title: "Default",
236
+ styles: {
237
+ container: {
238
+ "padding-top": "10xl",
239
+ "padding-bottom": "10xl",
240
+ },
241
+ title: {
242
+ "margin-bottom": "5xl",
243
+ tablet: {
244
+ "text-align": "center",
245
+ },
246
+ },
247
+ testimonials: TESTIMONIALS_STYLES,
248
+ },
249
+ content: DEFAULT_CONTENT,
250
+ config: {
251
+ button_prev: {
252
+ button_icons: {
253
+ left: {
254
+ enabled: true,
255
+ },
256
+ },
257
+ },
258
+ button_next: {
259
+ button_icons: {
260
+ right: {
261
+ enabled: true,
262
+ },
263
+ },
264
+ },
265
+ title: {
266
+ selectedVariants: {
267
+ Heading_Level: "H2",
268
+ },
269
+ },
270
+ },
271
+ },
272
+ ],
273
+ };
@@ -0,0 +1,128 @@
1
+ import type { CarouselApi } from "@levo-so/studio";
2
+ import {
3
+ type ILevoBlockBaseProps,
4
+ Button,
5
+ Heading,
6
+ Image,
7
+ Typography,
8
+ Container,
9
+ Section,
10
+ Carousel,
11
+ CarouselContent,
12
+ CarouselItem,
13
+ Box,
14
+ } from "@levo-so/studio";
15
+ import { useEffect, useState } from "react";
16
+
17
+ import type { ITestimonial3Content } from "./testimonial-3.schema";
18
+
19
+ const Testimonial3: React.FC<ILevoBlockBaseProps<ITestimonial3Content>> = ({
20
+ content,
21
+ }) => {
22
+ const [api, setApi] = useState<CarouselApi>();
23
+ const [current, setCurrent] = useState(0);
24
+ const [count, setCount] = useState(0);
25
+
26
+ useEffect(() => {
27
+ if (!api) {
28
+ return;
29
+ }
30
+
31
+ setCount(api.scrollSnapList().length);
32
+ setCurrent(api.selectedScrollSnap());
33
+
34
+ api.on("select", () => {
35
+ setCurrent(api.selectedScrollSnap());
36
+ });
37
+ }, [api]);
38
+
39
+ const isFirstSlide = current === 0;
40
+ const isLastSlide = current === count - 1;
41
+
42
+ const handlePrevious = () => {
43
+ if (api && !isFirstSlide) {
44
+ api.scrollTo(current - 1);
45
+ }
46
+ };
47
+
48
+ const handleNext = () => {
49
+ if (api && !isLastSlide) {
50
+ api.scrollTo(current + 1);
51
+ }
52
+ };
53
+
54
+ return (
55
+ <Section elementKey="layout">
56
+ <Container elementKey="container">
57
+ <Heading elementKey="title" />
58
+ <Carousel
59
+ elementKey="testimonials_levoGroup"
60
+ className="w-full"
61
+ setApi={setApi}
62
+ data-levo_group
63
+ >
64
+ <CarouselContent>
65
+ {(content?.testimonials ?? [])?.map((_, index) => (
66
+ <CarouselItem key={index} className="flex w-full">
67
+ <Box
68
+ elementKey={`testimonials.${index}.testimonial_wrapper`}
69
+ data-levo_group_item
70
+ >
71
+ <Box elementKey={`testimonials.${index}.testimonial_content`}>
72
+ <Box elementKey={`testimonials.${index}.author_box`}>
73
+ <Typography
74
+ elementKey={`testimonials.${index}.author_name`}
75
+ />
76
+ <Typography
77
+ elementKey={`testimonials.${index}.author_role`}
78
+ />
79
+ </Box>
80
+ <Typography
81
+ elementKey={`testimonials.${index}.testimonial_text`}
82
+ />
83
+ <Box
84
+ elementKey={`testimonials.${index}.testimonial_controls`}
85
+ >
86
+ <Button
87
+ elementKey="button_prev"
88
+ onClick={handlePrevious}
89
+ disabled={isFirstSlide}
90
+ style={{
91
+ opacity: isFirstSlide ? 0.5 : 1,
92
+ cursor: isFirstSlide ? "not-allowed" : "pointer",
93
+ }}
94
+ >
95
+ {/* <Image alt="previous-icon" elementKey="button_prev_icon" /> */}
96
+ </Button>
97
+ <Button
98
+ elementKey="button_next"
99
+ onClick={handleNext}
100
+ disabled={isLastSlide}
101
+ style={{
102
+ opacity: isLastSlide ? 0.5 : 1,
103
+ cursor: isLastSlide ? "not-allowed" : "pointer",
104
+ }}
105
+ >
106
+ {/* <Image alt="next-icon" elementKey="button_next_icon" /> */}
107
+ </Button>
108
+ </Box>
109
+ </Box>
110
+ <Box elementKey={`testimonials.${index}.image_box`}>
111
+ <Image
112
+ elementKey={`testimonials.${index}.client_image`}
113
+ width={288}
114
+ height={288}
115
+ alt="Client"
116
+ />
117
+ </Box>
118
+ </Box>
119
+ </CarouselItem>
120
+ ))}
121
+ </CarouselContent>
122
+ </Carousel>
123
+ </Container>
124
+ </Section>
125
+ );
126
+ };
127
+
128
+ export default Testimonial3;