@levo-so/blocks 0.1.0 → 0.1.2

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 (471) hide show
  1. package/package.json +5 -9
  2. package/src/blocks/about-us/about-us-1.schema.ts +563 -0
  3. package/src/blocks/about-us/about-us-1.tsx +53 -0
  4. package/src/blocks/blogs/blog-listing-1.schema.ts +419 -0
  5. package/src/blocks/blogs/blog-listing-1.tsx +79 -0
  6. package/src/blocks/blogs/blog-listing-2.schema.ts +608 -0
  7. package/src/blocks/blogs/blog-listing-2.tsx +83 -0
  8. package/src/blocks/blogs/blog-post-1.schema.ts +392 -0
  9. package/src/blocks/blogs/blog-post-1.tsx +52 -0
  10. package/src/blocks/blogs/blog-post-2.schema.ts +834 -0
  11. package/src/blocks/blogs/blog-post-2.tsx +131 -0
  12. package/src/blocks/cards/cards-10.schema.ts +433 -0
  13. package/src/blocks/cards/cards-10.tsx +46 -0
  14. package/src/blocks/cards/cards-11.schema.ts +440 -0
  15. package/src/blocks/cards/cards-11.tsx +50 -0
  16. package/src/blocks/cards/cards-12.schema.ts +578 -0
  17. package/src/blocks/cards/cards-12.tsx +54 -0
  18. package/src/blocks/cards/cards-2.schema.ts +293 -0
  19. package/src/blocks/cards/cards-2.tsx +42 -0
  20. package/src/blocks/cards/cards-3.schema.ts +365 -0
  21. package/src/blocks/cards/cards-3.tsx +49 -0
  22. package/src/blocks/cards/cards-4.schema.ts +677 -0
  23. package/src/blocks/cards/cards-4.tsx +50 -0
  24. package/src/blocks/cards/cards-5.schema.ts +264 -0
  25. package/src/blocks/cards/cards-5.tsx +34 -0
  26. package/src/blocks/cards/cards-6.schema.ts +639 -0
  27. package/src/blocks/cards/cards-6.tsx +136 -0
  28. package/src/blocks/cards/cards-7.schema.ts +1793 -0
  29. package/src/blocks/cards/cards-7.tsx +165 -0
  30. package/src/blocks/cards/cards-8.schema.ts +691 -0
  31. package/src/blocks/cards/cards-8.tsx +43 -0
  32. package/src/blocks/cards/cards-9.schema.ts +827 -0
  33. package/src/blocks/cards/cards-9.tsx +54 -0
  34. package/src/blocks/carousel/carousel-1.schema.ts +250 -0
  35. package/src/blocks/carousel/carousel-1.tsx +79 -0
  36. package/src/blocks/contact-us/contact-us-1.schema.ts +226 -0
  37. package/src/blocks/contact-us/contact-us-1.tsx +39 -0
  38. package/src/blocks/contact-us/contact-us-2.schema.ts +524 -0
  39. package/src/blocks/contact-us/contact-us-2.tsx +71 -0
  40. package/src/blocks/content/content-1.schema.ts +884 -0
  41. package/src/blocks/content/content-1.tsx +69 -0
  42. package/src/blocks/content/content-2.schema.ts +209 -0
  43. package/src/blocks/content/content-2.tsx +32 -0
  44. package/src/blocks/content/content-3.schema.ts +864 -0
  45. package/src/blocks/content/content-3.tsx +54 -0
  46. package/src/blocks/content/content-4.schema.ts +287 -0
  47. package/src/blocks/content/content-4.tsx +47 -0
  48. package/src/blocks/content/content-5.schema.ts +944 -0
  49. package/src/blocks/content/content-5.tsx +58 -0
  50. package/src/blocks/content/content-6.schema.ts +991 -0
  51. package/src/blocks/content/content-6.tsx +61 -0
  52. package/src/blocks/cta/cta-1.schema.ts +361 -0
  53. package/src/blocks/cta/cta-1.tsx +33 -0
  54. package/src/blocks/cta/cta-2.schema.ts +209 -0
  55. package/src/blocks/cta/cta-2.tsx +28 -0
  56. package/src/blocks/cta/cta-3.schema.ts +156 -0
  57. package/src/blocks/cta/cta-3.tsx +48 -0
  58. package/src/blocks/embed/embed-1.schema.ts +153 -0
  59. package/src/blocks/embed/embed-1.tsx +38 -0
  60. package/src/blocks/event/event-details.schema.ts +737 -0
  61. package/src/blocks/event/event-details.tsx +107 -0
  62. package/src/blocks/event/event-listing-2.schema.ts +496 -0
  63. package/src/blocks/event/event-listing-2.tsx +70 -0
  64. package/src/blocks/event/event-listing-3.schema.ts +605 -0
  65. package/src/blocks/event/event-listing-3.tsx +95 -0
  66. package/src/blocks/event/event-listing.schema.ts +1358 -0
  67. package/src/blocks/event/event-listing.tsx +90 -0
  68. package/src/blocks/faq/faq-1.schema.ts +357 -0
  69. package/src/blocks/faq/faq-1.tsx +65 -0
  70. package/src/blocks/faq/faq-2.schema.ts +356 -0
  71. package/src/blocks/faq/faq-2.tsx +84 -0
  72. package/src/blocks/faq/faq-3.schema.ts +475 -0
  73. package/src/blocks/faq/faq-3.tsx +70 -0
  74. package/src/blocks/features/features-1/features-1.schema.ts +165 -0
  75. package/src/blocks/features/features-1/features-1.tsx +48 -0
  76. package/src/blocks/features/features-1/variants/default.ts +197 -0
  77. package/{dist/blocks/features/features-1/variants/index.js → src/blocks/features/features-1/variants/index.ts} +7 -1
  78. package/src/blocks/features/features-1/variants/stylized-cards-v1.ts +138 -0
  79. package/src/blocks/features/features-1/variants/stylized-cards-v2.ts +487 -0
  80. package/src/blocks/features/features-2.schema.ts +338 -0
  81. package/src/blocks/features/features-2.tsx +66 -0
  82. package/src/blocks/features/features-3.schema.ts +438 -0
  83. package/src/blocks/features/features-3.tsx +56 -0
  84. package/src/blocks/features/features-4.schema.ts +631 -0
  85. package/src/blocks/features/features-4.tsx +75 -0
  86. package/src/blocks/features/features-5.schema.ts +747 -0
  87. package/src/blocks/features/features-5.tsx +49 -0
  88. package/src/blocks/features/features-6.schema.ts +849 -0
  89. package/src/blocks/features/features-6.tsx +125 -0
  90. package/src/blocks/footer/footer-1.schema.ts +589 -0
  91. package/src/blocks/footer/footer-1.tsx +90 -0
  92. package/src/blocks/footer/footer-2.schema.ts +898 -0
  93. package/src/blocks/footer/footer-2.tsx +77 -0
  94. package/src/blocks/footer/footer-3.schema.ts +487 -0
  95. package/src/blocks/footer/footer-3.tsx +100 -0
  96. package/src/blocks/footer/footer-4.schema.ts +644 -0
  97. package/src/blocks/footer/footer-4.tsx +97 -0
  98. package/src/blocks/footer/footer-5.schema.ts +425 -0
  99. package/src/blocks/footer/footer-5.tsx +91 -0
  100. package/src/blocks/hero/hero-1.schema.ts +766 -0
  101. package/src/blocks/hero/hero-1.tsx +52 -0
  102. package/src/blocks/hero/hero-2.schema.ts +316 -0
  103. package/src/blocks/hero/hero-2.tsx +49 -0
  104. package/src/blocks/hero/hero-3.schema.ts +415 -0
  105. package/src/blocks/hero/hero-3.tsx +50 -0
  106. package/src/blocks/hero/hero-4.schema.ts +325 -0
  107. package/src/blocks/hero/hero-4.tsx +89 -0
  108. package/src/blocks/hero/hero-5.schema.ts +192 -0
  109. package/src/blocks/hero/hero-5.tsx +86 -0
  110. package/src/blocks/hero/hero-6.schema.ts +703 -0
  111. package/src/blocks/hero/hero-6.tsx +62 -0
  112. package/src/blocks/hero/hero-7.schema.ts +508 -0
  113. package/src/blocks/hero/hero-7.tsx +115 -0
  114. package/src/blocks/hero/hero-8.schema.ts +372 -0
  115. package/src/blocks/hero/hero-8.tsx +113 -0
  116. package/src/blocks/hero/hero-9.schema.ts +379 -0
  117. package/src/blocks/hero/hero-9.tsx +49 -0
  118. package/src/blocks/index.ts +78 -0
  119. package/src/blocks/logos/logos-1.schema.ts +264 -0
  120. package/src/blocks/logos/logos-1.tsx +60 -0
  121. package/src/blocks/navbar/navbar-1.schema.ts +961 -0
  122. package/src/blocks/navbar/navbar-1.tsx +398 -0
  123. package/src/blocks/navbar/navbar-2.schema.ts +1226 -0
  124. package/src/blocks/navbar/navbar-2.tsx +417 -0
  125. package/src/blocks/pricing/pricing-1.schema.ts +1002 -0
  126. package/src/blocks/pricing/pricing-1.tsx +88 -0
  127. package/src/blocks/products/products-listing-1.schema.ts +274 -0
  128. package/src/blocks/products/products-listing-1.tsx +48 -0
  129. package/src/blocks/stats/stats-1.schema.ts +231 -0
  130. package/src/blocks/stats/stats-1.tsx +38 -0
  131. package/src/blocks/stats/stats-2.schema.ts +111 -0
  132. package/src/blocks/stats/stats-2.tsx +52 -0
  133. package/src/blocks/stats/variants/default.ts +190 -0
  134. package/src/blocks/stats/variants/hero.ts +153 -0
  135. package/{dist/blocks/stats/variants/index.js → src/blocks/stats/variants/index.ts} +1 -0
  136. package/src/blocks/team/team-1.schema.ts +516 -0
  137. package/src/blocks/team/team-1.tsx +80 -0
  138. package/src/blocks/team/team-2.schema.ts +2813 -0
  139. package/src/blocks/team/team-2.tsx +74 -0
  140. package/src/blocks/team/team-3.schema.ts +707 -0
  141. package/src/blocks/team/team-3.tsx +103 -0
  142. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.schema.ts +168 -0
  143. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.tsx +29 -0
  144. package/src/blocks/testimonial/testimonial-1.schema.ts +345 -0
  145. package/src/blocks/testimonial/testimonial-1.tsx +79 -0
  146. package/src/blocks/testimonial/testimonial-2.schema.ts +816 -0
  147. package/src/blocks/testimonial/testimonial-2.tsx +161 -0
  148. package/src/blocks/testimonial/testimonial-3.schema.ts +279 -0
  149. package/src/blocks/testimonial/testimonial-3.tsx +128 -0
  150. package/src/blocks/testimonial/testimonial-4.schema.ts +3373 -0
  151. package/src/blocks/testimonial/testimonial-4.tsx +202 -0
  152. package/src/blocks/testimonial/testimonial-5.schema.ts +434 -0
  153. package/src/blocks/testimonial/testimonial-5.tsx +106 -0
  154. package/src/blocks/testimonial/testimonial-6.schema.ts +709 -0
  155. package/src/blocks/testimonial/testimonial-6.tsx +128 -0
  156. package/{dist/index.js → src/index.ts} +5 -2
  157. package/{dist/schemas/blocks.js → src/schemas/blocks.ts} +75 -72
  158. package/src/schemas/categories.ts +134 -0
  159. package/src/styles.d.ts +4 -0
  160. package/dist/blocks/about-us/about-us-1.d.ts +0 -5
  161. package/dist/blocks/about-us/about-us-1.js +0 -5
  162. package/dist/blocks/about-us/about-us-1.schema.d.ts +0 -38
  163. package/dist/blocks/about-us/about-us-1.schema.js +0 -537
  164. package/dist/blocks/blogs/blog-listing-1.d.ts +0 -5
  165. package/dist/blocks/blogs/blog-listing-1.js +0 -12
  166. package/dist/blocks/blogs/blog-listing-1.schema.d.ts +0 -59
  167. package/dist/blocks/blogs/blog-listing-1.schema.js +0 -387
  168. package/dist/blocks/blogs/blog-listing-2.d.ts +0 -5
  169. package/dist/blocks/blogs/blog-listing-2.js +0 -9
  170. package/dist/blocks/blogs/blog-listing-2.schema.d.ts +0 -104
  171. package/dist/blocks/blogs/blog-listing-2.schema.js +0 -572
  172. package/dist/blocks/blogs/blog-post-1.d.ts +0 -6
  173. package/dist/blocks/blogs/blog-post-1.js +0 -8
  174. package/dist/blocks/blogs/blog-post-1.schema.d.ts +0 -48
  175. package/dist/blocks/blogs/blog-post-1.schema.js +0 -358
  176. package/dist/blocks/blogs/blog-post-2.d.ts +0 -6
  177. package/dist/blocks/blogs/blog-post-2.js +0 -8
  178. package/dist/blocks/blogs/blog-post-2.schema.d.ts +0 -74
  179. package/dist/blocks/blogs/blog-post-2.schema.js +0 -779
  180. package/dist/blocks/cards/cards-10.d.ts +0 -6
  181. package/dist/blocks/cards/cards-10.js +0 -4
  182. package/dist/blocks/cards/cards-10.schema.d.ts +0 -44
  183. package/dist/blocks/cards/cards-10.schema.js +0 -405
  184. package/dist/blocks/cards/cards-11.d.ts +0 -6
  185. package/dist/blocks/cards/cards-11.js +0 -4
  186. package/dist/blocks/cards/cards-11.schema.d.ts +0 -58
  187. package/dist/blocks/cards/cards-11.schema.js +0 -406
  188. package/dist/blocks/cards/cards-12.d.ts +0 -6
  189. package/dist/blocks/cards/cards-12.js +0 -4
  190. package/dist/blocks/cards/cards-12.schema.d.ts +0 -38
  191. package/dist/blocks/cards/cards-12.schema.js +0 -545
  192. package/dist/blocks/cards/cards-2.d.ts +0 -5
  193. package/dist/blocks/cards/cards-2.js +0 -4
  194. package/dist/blocks/cards/cards-2.schema.d.ts +0 -46
  195. package/dist/blocks/cards/cards-2.schema.js +0 -260
  196. package/dist/blocks/cards/cards-3.d.ts +0 -6
  197. package/dist/blocks/cards/cards-3.js +0 -5
  198. package/dist/blocks/cards/cards-3.schema.d.ts +0 -36
  199. package/dist/blocks/cards/cards-3.schema.js +0 -351
  200. package/dist/blocks/cards/cards-4.d.ts +0 -6
  201. package/dist/blocks/cards/cards-4.js +0 -4
  202. package/dist/blocks/cards/cards-4.schema.d.ts +0 -40
  203. package/dist/blocks/cards/cards-4.schema.js +0 -648
  204. package/dist/blocks/cards/cards-5.d.ts +0 -5
  205. package/dist/blocks/cards/cards-5.js +0 -4
  206. package/dist/blocks/cards/cards-5.schema.d.ts +0 -48
  207. package/dist/blocks/cards/cards-5.schema.js +0 -238
  208. package/dist/blocks/cards/cards-6.d.ts +0 -5
  209. package/dist/blocks/cards/cards-6.js +0 -45
  210. package/dist/blocks/cards/cards-6.schema.d.ts +0 -50
  211. package/dist/blocks/cards/cards-6.schema.js +0 -608
  212. package/dist/blocks/cards/cards-7.d.ts +0 -5
  213. package/dist/blocks/cards/cards-7.js +0 -45
  214. package/dist/blocks/cards/cards-7.schema.d.ts +0 -87
  215. package/dist/blocks/cards/cards-7.schema.js +0 -1732
  216. package/dist/blocks/cards/cards-8.d.ts +0 -6
  217. package/dist/blocks/cards/cards-8.js +0 -4
  218. package/dist/blocks/cards/cards-8.schema.d.ts +0 -40
  219. package/dist/blocks/cards/cards-8.schema.js +0 -660
  220. package/dist/blocks/cards/cards-9.d.ts +0 -5
  221. package/dist/blocks/cards/cards-9.js +0 -4
  222. package/dist/blocks/cards/cards-9.schema.d.ts +0 -55
  223. package/dist/blocks/cards/cards-9.schema.js +0 -798
  224. package/dist/blocks/carousel/carousel-1.d.ts +0 -5
  225. package/dist/blocks/carousel/carousel-1.js +0 -12
  226. package/dist/blocks/carousel/carousel-1.schema.d.ts +0 -51
  227. package/dist/blocks/carousel/carousel-1.schema.js +0 -236
  228. package/dist/blocks/contact-us/contact-us-1.d.ts +0 -5
  229. package/dist/blocks/contact-us/contact-us-1.js +0 -4
  230. package/dist/blocks/contact-us/contact-us-1.schema.d.ts +0 -31
  231. package/dist/blocks/contact-us/contact-us-1.schema.js +0 -202
  232. package/dist/blocks/contact-us/contact-us-2.d.ts +0 -5
  233. package/dist/blocks/contact-us/contact-us-2.js +0 -4
  234. package/dist/blocks/contact-us/contact-us-2.schema.d.ts +0 -59
  235. package/dist/blocks/contact-us/contact-us-2.schema.js +0 -512
  236. package/dist/blocks/content/content-1.d.ts +0 -6
  237. package/dist/blocks/content/content-1.js +0 -4
  238. package/dist/blocks/content/content-1.schema.d.ts +0 -56
  239. package/dist/blocks/content/content-1.schema.js +0 -807
  240. package/dist/blocks/content/content-2.d.ts +0 -5
  241. package/dist/blocks/content/content-2.js +0 -4
  242. package/dist/blocks/content/content-2.schema.d.ts +0 -78
  243. package/dist/blocks/content/content-2.schema.js +0 -200
  244. package/dist/blocks/content/content-3.d.ts +0 -6
  245. package/dist/blocks/content/content-3.js +0 -5
  246. package/dist/blocks/content/content-3.schema.d.ts +0 -23
  247. package/dist/blocks/content/content-3.schema.js +0 -850
  248. package/dist/blocks/content/content-4.d.ts +0 -6
  249. package/dist/blocks/content/content-4.js +0 -6
  250. package/dist/blocks/content/content-4.schema.d.ts +0 -33
  251. package/dist/blocks/content/content-4.schema.js +0 -252
  252. package/dist/blocks/content/content-5.d.ts +0 -6
  253. package/dist/blocks/content/content-5.js +0 -5
  254. package/dist/blocks/content/content-5.schema.d.ts +0 -37
  255. package/dist/blocks/content/content-5.schema.js +0 -932
  256. package/dist/blocks/content/content-6.d.ts +0 -6
  257. package/dist/blocks/content/content-6.js +0 -5
  258. package/dist/blocks/content/content-6.schema.d.ts +0 -41
  259. package/dist/blocks/content/content-6.schema.js +0 -976
  260. package/dist/blocks/cta/cta-1.d.ts +0 -5
  261. package/dist/blocks/cta/cta-1.js +0 -4
  262. package/dist/blocks/cta/cta-1.schema.d.ts +0 -40
  263. package/dist/blocks/cta/cta-1.schema.js +0 -339
  264. package/dist/blocks/cta/cta-2.d.ts +0 -5
  265. package/dist/blocks/cta/cta-2.js +0 -4
  266. package/dist/blocks/cta/cta-2.schema.d.ts +0 -45
  267. package/dist/blocks/cta/cta-2.schema.js +0 -183
  268. package/dist/blocks/cta/cta-3.d.ts +0 -5
  269. package/dist/blocks/cta/cta-3.js +0 -4
  270. package/dist/blocks/cta/cta-3.schema.d.ts +0 -34
  271. package/dist/blocks/cta/cta-3.schema.js +0 -137
  272. package/dist/blocks/embed/embed-1.d.ts +0 -5
  273. package/dist/blocks/embed/embed-1.js +0 -5
  274. package/dist/blocks/embed/embed-1.schema.d.ts +0 -13
  275. package/dist/blocks/embed/embed-1.schema.js +0 -146
  276. package/dist/blocks/event/event-details.d.ts +0 -5
  277. package/dist/blocks/event/event-details.js +0 -9
  278. package/dist/blocks/event/event-details.schema.d.ts +0 -112
  279. package/dist/blocks/event/event-details.schema.js +0 -685
  280. package/dist/blocks/event/event-listing-2.d.ts +0 -5
  281. package/dist/blocks/event/event-listing-2.js +0 -4
  282. package/dist/blocks/event/event-listing-2.schema.d.ts +0 -84
  283. package/dist/blocks/event/event-listing-2.schema.js +0 -455
  284. package/dist/blocks/event/event-listing-3.d.ts +0 -5
  285. package/dist/blocks/event/event-listing-3.js +0 -10
  286. package/dist/blocks/event/event-listing-3.schema.d.ts +0 -77
  287. package/dist/blocks/event/event-listing-3.schema.js +0 -570
  288. package/dist/blocks/event/event-listing.d.ts +0 -5
  289. package/dist/blocks/event/event-listing.js +0 -10
  290. package/dist/blocks/event/event-listing.schema.d.ts +0 -51
  291. package/dist/blocks/event/event-listing.schema.js +0 -1297
  292. package/dist/blocks/faq/faq-1.d.ts +0 -5
  293. package/dist/blocks/faq/faq-1.js +0 -4
  294. package/dist/blocks/faq/faq-1.schema.d.ts +0 -47
  295. package/dist/blocks/faq/faq-1.schema.js +0 -325
  296. package/dist/blocks/faq/faq-2.d.ts +0 -6
  297. package/dist/blocks/faq/faq-2.js +0 -19
  298. package/dist/blocks/faq/faq-2.schema.d.ts +0 -47
  299. package/dist/blocks/faq/faq-2.schema.js +0 -329
  300. package/dist/blocks/faq/faq-3.d.ts +0 -5
  301. package/dist/blocks/faq/faq-3.js +0 -4
  302. package/dist/blocks/faq/faq-3.schema.d.ts +0 -40
  303. package/dist/blocks/faq/faq-3.schema.js +0 -444
  304. package/dist/blocks/features/features-1/features-1.d.ts +0 -5
  305. package/dist/blocks/features/features-1/features-1.js +0 -4
  306. package/dist/blocks/features/features-1/features-1.schema.d.ts +0 -5
  307. package/dist/blocks/features/features-1/features-1.schema.js +0 -142
  308. package/dist/blocks/features/features-1/variants/default.d.ts +0 -37
  309. package/dist/blocks/features/features-1/variants/default.js +0 -185
  310. package/dist/blocks/features/features-1/variants/index.d.ts +0 -5
  311. package/dist/blocks/features/features-1/variants/stylized-cards-v1.d.ts +0 -3
  312. package/dist/blocks/features/features-1/variants/stylized-cards-v1.js +0 -132
  313. package/dist/blocks/features/features-1/variants/stylized-cards-v2.d.ts +0 -3
  314. package/dist/blocks/features/features-1/variants/stylized-cards-v2.js +0 -484
  315. package/dist/blocks/features/features-2.d.ts +0 -5
  316. package/dist/blocks/features/features-2.js +0 -8
  317. package/dist/blocks/features/features-2.schema.d.ts +0 -41
  318. package/dist/blocks/features/features-2.schema.js +0 -321
  319. package/dist/blocks/features/features-3.d.ts +0 -5
  320. package/dist/blocks/features/features-3.js +0 -4
  321. package/dist/blocks/features/features-3.schema.d.ts +0 -40
  322. package/dist/blocks/features/features-3.schema.js +0 -424
  323. package/dist/blocks/features/features-4.d.ts +0 -5
  324. package/dist/blocks/features/features-4.js +0 -4
  325. package/dist/blocks/features/features-4.schema.d.ts +0 -60
  326. package/dist/blocks/features/features-4.schema.js +0 -594
  327. package/dist/blocks/features/features-5.d.ts +0 -6
  328. package/dist/blocks/features/features-5.js +0 -5
  329. package/dist/blocks/features/features-5.schema.d.ts +0 -28
  330. package/dist/blocks/features/features-5.schema.js +0 -727
  331. package/dist/blocks/features/features-6.d.ts +0 -5
  332. package/dist/blocks/features/features-6.js +0 -31
  333. package/dist/blocks/features/features-6.schema.d.ts +0 -74
  334. package/dist/blocks/features/features-6.schema.js +0 -814
  335. package/dist/blocks/footer/footer-1.d.ts +0 -6
  336. package/dist/blocks/footer/footer-1.js +0 -5
  337. package/dist/blocks/footer/footer-1.schema.d.ts +0 -62
  338. package/dist/blocks/footer/footer-1.schema.js +0 -565
  339. package/dist/blocks/footer/footer-2.d.ts +0 -5
  340. package/dist/blocks/footer/footer-2.js +0 -4
  341. package/dist/blocks/footer/footer-2.schema.d.ts +0 -76
  342. package/dist/blocks/footer/footer-2.schema.js +0 -876
  343. package/dist/blocks/footer/footer-3.d.ts +0 -6
  344. package/dist/blocks/footer/footer-3.js +0 -15
  345. package/dist/blocks/footer/footer-3.schema.d.ts +0 -48
  346. package/dist/blocks/footer/footer-3.schema.js +0 -475
  347. package/dist/blocks/footer/footer-4.d.ts +0 -6
  348. package/dist/blocks/footer/footer-4.js +0 -5
  349. package/dist/blocks/footer/footer-4.schema.d.ts +0 -71
  350. package/dist/blocks/footer/footer-4.schema.js +0 -620
  351. package/dist/blocks/footer/footer-5.d.ts +0 -6
  352. package/dist/blocks/footer/footer-5.js +0 -5
  353. package/dist/blocks/footer/footer-5.schema.d.ts +0 -52
  354. package/dist/blocks/footer/footer-5.schema.js +0 -400
  355. package/dist/blocks/hero/hero-1.d.ts +0 -5
  356. package/dist/blocks/hero/hero-1.js +0 -4
  357. package/dist/blocks/hero/hero-1.schema.d.ts +0 -35
  358. package/dist/blocks/hero/hero-1.schema.js +0 -742
  359. package/dist/blocks/hero/hero-2.d.ts +0 -5
  360. package/dist/blocks/hero/hero-2.js +0 -4
  361. package/dist/blocks/hero/hero-2.schema.d.ts +0 -46
  362. package/dist/blocks/hero/hero-2.schema.js +0 -282
  363. package/dist/blocks/hero/hero-3.d.ts +0 -5
  364. package/dist/blocks/hero/hero-3.js +0 -4
  365. package/dist/blocks/hero/hero-3.schema.d.ts +0 -54
  366. package/dist/blocks/hero/hero-3.schema.js +0 -378
  367. package/dist/blocks/hero/hero-4.d.ts +0 -5
  368. package/dist/blocks/hero/hero-4.js +0 -30
  369. package/dist/blocks/hero/hero-4.schema.d.ts +0 -33
  370. package/dist/blocks/hero/hero-4.schema.js +0 -316
  371. package/dist/blocks/hero/hero-5.d.ts +0 -5
  372. package/dist/blocks/hero/hero-5.js +0 -30
  373. package/dist/blocks/hero/hero-5.schema.d.ts +0 -32
  374. package/dist/blocks/hero/hero-5.schema.js +0 -183
  375. package/dist/blocks/hero/hero-6.d.ts +0 -5
  376. package/dist/blocks/hero/hero-6.js +0 -8
  377. package/dist/blocks/hero/hero-6.schema.d.ts +0 -36
  378. package/dist/blocks/hero/hero-6.schema.js +0 -617
  379. package/dist/blocks/hero/hero-7.d.ts +0 -5
  380. package/dist/blocks/hero/hero-7.js +0 -40
  381. package/dist/blocks/hero/hero-7.schema.d.ts +0 -12
  382. package/dist/blocks/hero/hero-7.schema.js +0 -471
  383. package/dist/blocks/hero/hero-8.d.ts +0 -5
  384. package/dist/blocks/hero/hero-8.js +0 -39
  385. package/dist/blocks/hero/hero-8.schema.d.ts +0 -17
  386. package/dist/blocks/hero/hero-8.schema.js +0 -343
  387. package/dist/blocks/hero/hero-9.d.ts +0 -6
  388. package/dist/blocks/hero/hero-9.js +0 -4
  389. package/dist/blocks/hero/hero-9.schema.d.ts +0 -39
  390. package/dist/blocks/hero/hero-9.schema.js +0 -355
  391. package/dist/blocks/index.d.ts +0 -3
  392. package/dist/blocks/index.js +0 -74
  393. package/dist/blocks/logos/logos-1.d.ts +0 -5
  394. package/dist/blocks/logos/logos-1.js +0 -10
  395. package/dist/blocks/logos/logos-1.schema.d.ts +0 -34
  396. package/dist/blocks/logos/logos-1.schema.js +0 -239
  397. package/dist/blocks/navbar/navbar-1.d.ts +0 -6
  398. package/dist/blocks/navbar/navbar-1.js +0 -100
  399. package/dist/blocks/navbar/navbar-1.schema.d.ts +0 -117
  400. package/dist/blocks/navbar/navbar-1.schema.js +0 -938
  401. package/dist/blocks/navbar/navbar-2.d.ts +0 -6
  402. package/dist/blocks/navbar/navbar-2.js +0 -99
  403. package/dist/blocks/navbar/navbar-2.schema.d.ts +0 -134
  404. package/dist/blocks/navbar/navbar-2.schema.js +0 -1200
  405. package/dist/blocks/pricing/pricing-1.d.ts +0 -5
  406. package/dist/blocks/pricing/pricing-1.js +0 -4
  407. package/dist/blocks/pricing/pricing-1.schema.d.ts +0 -87
  408. package/dist/blocks/pricing/pricing-1.schema.js +0 -976
  409. package/dist/blocks/products/products-listing-1.d.ts +0 -5
  410. package/dist/blocks/products/products-listing-1.js +0 -4
  411. package/dist/blocks/products/products-listing-1.schema.d.ts +0 -36
  412. package/dist/blocks/products/products-listing-1.schema.js +0 -264
  413. package/dist/blocks/stats/stats-1.d.ts +0 -6
  414. package/dist/blocks/stats/stats-1.js +0 -6
  415. package/dist/blocks/stats/stats-1.schema.d.ts +0 -25
  416. package/dist/blocks/stats/stats-1.schema.js +0 -213
  417. package/dist/blocks/stats/stats-2.d.ts +0 -6
  418. package/dist/blocks/stats/stats-2.js +0 -6
  419. package/dist/blocks/stats/stats-2.schema.d.ts +0 -5
  420. package/dist/blocks/stats/stats-2.schema.js +0 -104
  421. package/dist/blocks/stats/variants/default.d.ts +0 -22
  422. package/dist/blocks/stats/variants/default.js +0 -185
  423. package/dist/blocks/stats/variants/hero.d.ts +0 -3
  424. package/dist/blocks/stats/variants/hero.js +0 -151
  425. package/dist/blocks/stats/variants/index.d.ts +0 -4
  426. package/dist/blocks/team/team-1.d.ts +0 -6
  427. package/dist/blocks/team/team-1.js +0 -6
  428. package/dist/blocks/team/team-1.schema.d.ts +0 -65
  429. package/dist/blocks/team/team-1.schema.js +0 -476
  430. package/dist/blocks/team/team-2.d.ts +0 -6
  431. package/dist/blocks/team/team-2.js +0 -6
  432. package/dist/blocks/team/team-2.schema.d.ts +0 -52
  433. package/dist/blocks/team/team-2.schema.js +0 -2732
  434. package/dist/blocks/team/team-3.d.ts +0 -5
  435. package/dist/blocks/team/team-3.js +0 -30
  436. package/dist/blocks/team/team-3.schema.d.ts +0 -32
  437. package/dist/blocks/team/team-3.schema.js +0 -679
  438. package/dist/blocks/termsAndPrivacy/terms-and-conditions-1.d.ts +0 -6
  439. package/dist/blocks/termsAndPrivacy/terms-and-conditions-1.js +0 -4
  440. package/dist/blocks/termsAndPrivacy/terms-and-conditions-1.schema.d.ts +0 -14
  441. package/dist/blocks/termsAndPrivacy/terms-and-conditions-1.schema.js +0 -154
  442. package/dist/blocks/testimonial/testimonial-1.d.ts +0 -5
  443. package/dist/blocks/testimonial/testimonial-1.js +0 -10
  444. package/dist/blocks/testimonial/testimonial-1.schema.d.ts +0 -16
  445. package/dist/blocks/testimonial/testimonial-1.schema.js +0 -314
  446. package/dist/blocks/testimonial/testimonial-2.d.ts +0 -5
  447. package/dist/blocks/testimonial/testimonial-2.js +0 -42
  448. package/dist/blocks/testimonial/testimonial-2.schema.d.ts +0 -54
  449. package/dist/blocks/testimonial/testimonial-2.schema.js +0 -771
  450. package/dist/blocks/testimonial/testimonial-3.d.ts +0 -5
  451. package/dist/blocks/testimonial/testimonial-3.js +0 -38
  452. package/dist/blocks/testimonial/testimonial-3.schema.d.ts +0 -56
  453. package/dist/blocks/testimonial/testimonial-3.schema.js +0 -260
  454. package/dist/blocks/testimonial/testimonial-4.d.ts +0 -5
  455. package/dist/blocks/testimonial/testimonial-4.js +0 -51
  456. package/dist/blocks/testimonial/testimonial-4.schema.d.ts +0 -145
  457. package/dist/blocks/testimonial/testimonial-4.schema.js +0 -3214
  458. package/dist/blocks/testimonial/testimonial-5.d.ts +0 -5
  459. package/dist/blocks/testimonial/testimonial-5.js +0 -31
  460. package/dist/blocks/testimonial/testimonial-5.schema.d.ts +0 -33
  461. package/dist/blocks/testimonial/testimonial-5.schema.js +0 -401
  462. package/dist/blocks/testimonial/testimonial-6.d.ts +0 -5
  463. package/dist/blocks/testimonial/testimonial-6.js +0 -39
  464. package/dist/blocks/testimonial/testimonial-6.schema.d.ts +0 -60
  465. package/dist/blocks/testimonial/testimonial-6.schema.js +0 -695
  466. package/dist/index.d.ts +0 -6
  467. package/dist/schemas/blocks.d.ts +0 -3
  468. package/dist/schemas/categories.d.ts +0 -3
  469. package/dist/schemas/categories.js +0 -129
  470. package/dist/schemas/index.d.ts +0 -3
  471. /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,279 @@
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
+ width: "18rem",
139
+ height: "18rem",
140
+ "object-fit": "cover",
141
+ "border-radius": "xl",
142
+ "background-color": "background-2",
143
+ },
144
+ };
145
+
146
+ const TESTIMONIALS_STYLES = Array.from({ length: 3 }, () =>
147
+ JSON.parse(JSON.stringify(TESTIMONIAL_STYLE)),
148
+ );
149
+
150
+ export const Testimonial3: IBlock = {
151
+ category_id: "testimonial",
152
+ title: "Testimonial 3",
153
+ key: "testimonial-3",
154
+ version: "v1",
155
+ content_schema: [
156
+ {
157
+ key: "layout",
158
+ label: "Layout",
159
+ field_interface: "LayoutWidget",
160
+ },
161
+ {
162
+ key: "container",
163
+ label: "Container",
164
+ field_interface: "ContainerWidget",
165
+ },
166
+ {
167
+ key: "title",
168
+ label: "Title",
169
+ field_interface: "HeadingWidget",
170
+ },
171
+ {
172
+ key: "testimonials",
173
+ label: "Testimonials",
174
+ field_interface: "ArrayWidget",
175
+ fields: [
176
+ {
177
+ key: "testimonial_wrapper",
178
+ label: "Testimonial Wrapper",
179
+ field_interface: "BoxWidget",
180
+ },
181
+ {
182
+ key: "testimonial_content",
183
+ label: "Testimonial Content",
184
+ field_interface: "BoxWidget",
185
+ },
186
+ {
187
+ key: "author_box",
188
+ label: "Author Box",
189
+ field_interface: "BoxWidget",
190
+ },
191
+ {
192
+ key: "author_name",
193
+ label: "Author Name",
194
+ field_interface: "TypographyWidget",
195
+ },
196
+ {
197
+ key: "author_role",
198
+ label: "Author Role",
199
+ field_interface: "TypographyWidget",
200
+ },
201
+ {
202
+ key: "testimonial_text",
203
+ label: "Testimonial Text",
204
+ field_interface: "TypographyWidget",
205
+ },
206
+ {
207
+ key: "testimonial_controls",
208
+ label: "Testimonial Controls",
209
+ field_interface: "BoxWidget",
210
+ },
211
+ {
212
+ key: "image_box",
213
+ label: "Image Box",
214
+ field_interface: "BoxWidget",
215
+ },
216
+ {
217
+ key: "client_image",
218
+ label: "Client Image",
219
+ field_interface: "ImageWidget",
220
+ },
221
+ ],
222
+ },
223
+ {
224
+ key: "button_prev",
225
+ label: "Button Prev",
226
+ field_interface: "ButtonWidget",
227
+ },
228
+ {
229
+ key: "button_next",
230
+ label: "Button Next",
231
+ field_interface: "ButtonWidget",
232
+ },
233
+ ],
234
+ layouts: [
235
+ {
236
+ key: "default",
237
+ title: "Default",
238
+ styles: {
239
+ container: {
240
+ "max-width": "64rem",
241
+ "margin-left": "auto",
242
+ "margin-right": "auto",
243
+ "padding-top": "7xl",
244
+ "padding-bottom": "7xl",
245
+ "padding-left": "base",
246
+ "padding-right": "base",
247
+ tablet: {
248
+ "padding-left": "3xl",
249
+ "padding-right": "3xl",
250
+ },
251
+ },
252
+ title: {
253
+ "font-size": "4xl",
254
+ "font-weight": "600",
255
+ color: "text-1",
256
+ "margin-bottom": "5xl",
257
+ },
258
+ testimonials: TESTIMONIALS_STYLES,
259
+ },
260
+ content: DEFAULT_CONTENT,
261
+ config: {
262
+ button_prev: {
263
+ button_icons: {
264
+ left: {
265
+ enabled: true,
266
+ },
267
+ },
268
+ },
269
+ button_next: {
270
+ button_icons: {
271
+ right: {
272
+ enabled: true,
273
+ },
274
+ },
275
+ },
276
+ },
277
+ },
278
+ ],
279
+ };
@@ -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;