@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,551 @@
1
+ "use client";
2
+ // Test libraries-only change
3
+
4
+ import React, { useEffect, useState } from "react";
5
+ import { cn } from "@levo-so/react";
6
+ import type { ILevoBlockBaseProps } from "@levo-so/studio";
7
+ import {
8
+ Box,
9
+ Button,
10
+ Heading,
11
+ Image,
12
+ PopoverRoot,
13
+ PopoverContent,
14
+ PopoverTrigger,
15
+ Typography,
16
+ Section,
17
+ Container,
18
+ Icon,
19
+ UserMenu,
20
+ } from "@levo-so/studio";
21
+ import { ChevronDown, Menu, X, ChevronRight } from "lucide-react";
22
+
23
+ import type { INavbar3Content } from "./navbar-3.schema";
24
+
25
+ const NestedDropdownItem: React.FC<{
26
+ subItem: any;
27
+ parentIndex: number;
28
+ subIndex: number;
29
+ }> = ({ subItem, parentIndex, subIndex }) => {
30
+ const [isNestedDropdownOpen, setIsNestedDropdownOpen] =
31
+ useState<boolean>(false);
32
+ const nestedSubItems = subItem?.["sub-sub-items"] as Array<any>;
33
+
34
+ return (
35
+ <Box
36
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.nested-dropdown-container`}
37
+ >
38
+ <Box
39
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.nested-dropdown-trigger`}
40
+ onMouseEnter={() => setIsNestedDropdownOpen(true)}
41
+ onMouseLeave={() => setIsNestedDropdownOpen(false)}
42
+ data-levo_group_item
43
+ className="group relative"
44
+ >
45
+ <Box
46
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-link`}
47
+ data-levo_group_item
48
+ className="flex items-center justify-between"
49
+ >
50
+ <div className="flex items-center gap-3">
51
+ {subItem?.["sub-item-icon"] && (
52
+ <Box
53
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-icon-container`}
54
+ className=""
55
+ >
56
+ <Icon
57
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-icon`}
58
+ />
59
+ </Box>
60
+ )}
61
+ <Box
62
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-text-container`}
63
+ className=""
64
+ >
65
+ <Heading
66
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-title`}
67
+ />
68
+ <Typography
69
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-description`}
70
+ />
71
+ </Box>
72
+ </div>
73
+ {nestedSubItems &&
74
+ Array.isArray(nestedSubItems) &&
75
+ nestedSubItems.length > 0 && (
76
+ <div className="group-hover:text-text-1 text-white">
77
+ <ChevronRight
78
+ aria-hidden="true"
79
+ className="h-[14px] w-[14px] transition-colors"
80
+ />
81
+ </div>
82
+ )}
83
+ </Box>
84
+
85
+ {/* Nested dropdown content inside same container */}
86
+ {isNestedDropdownOpen &&
87
+ nestedSubItems &&
88
+ Array.isArray(nestedSubItems) &&
89
+ nestedSubItems.length > 0 && (
90
+ <Box
91
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items_levoGroup`}
92
+ data-levo_group
93
+ className="absolute top-0 left-full z-50 ml-1 w-48 rounded-md border border-gray-200 bg-white shadow-lg"
94
+ onMouseEnter={() => setIsNestedDropdownOpen(true)}
95
+ onMouseLeave={() => setIsNestedDropdownOpen(false)}
96
+ >
97
+ {nestedSubItems?.map((_: any, nestedIdx: number) => (
98
+ <Box
99
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-container`}
100
+ key={`nestedSubItem_${parentIndex}_${subIndex}_${nestedIdx}`}
101
+ data-levo_group_item
102
+ className="px-5 py-3"
103
+ >
104
+ <Heading
105
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-title`}
106
+ />
107
+ <Typography
108
+ elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-description`}
109
+ />
110
+ </Box>
111
+ ))}
112
+ </Box>
113
+ )}
114
+ </Box>
115
+ </Box>
116
+ );
117
+ };
118
+
119
+ const DropdownNavigationItem: React.FC<{
120
+ navItem: any;
121
+ index: number;
122
+ }> = ({ navItem, index }) => {
123
+ const [isDropdownPopoverOpen, setIsDropdownPopoverOpen] =
124
+ useState<boolean>(false);
125
+
126
+ const subItems = navItem?.["sub-items"] as Array<any>;
127
+
128
+ return (
129
+ <PopoverRoot
130
+ open={isDropdownPopoverOpen}
131
+ onOpenChange={(open) => setIsDropdownPopoverOpen(open)}
132
+ defaultOpen
133
+ >
134
+ <PopoverTrigger
135
+ elementKey={`desktop-nav-menu.${index}.nav-item-dropdown-trigger`}
136
+ onMouseEnter={() => setIsDropdownPopoverOpen(true)}
137
+ data-levo_group_item
138
+ >
139
+ <Heading
140
+ elementKey={`desktop-nav-menu.${index}.nav-item-dropdown-trigger-title`}
141
+ />
142
+ <ChevronDown
143
+ aria-hidden="true"
144
+ style={{
145
+ position: "relative",
146
+ top: "1px",
147
+ height: "14px",
148
+ width: "14px",
149
+ transitionProperty:
150
+ "color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",
151
+ transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
152
+ transitionDuration: "300ms",
153
+ rotate: isDropdownPopoverOpen ? "180deg" : "0deg",
154
+ color: "var(--color-text-1)",
155
+ }}
156
+ />
157
+ </PopoverTrigger>
158
+ <PopoverContent
159
+ elementKey={`desktop-nav-menu.${index}.sub-items_levoGroup`}
160
+ data-levo_group
161
+ onMouseLeave={() => setIsDropdownPopoverOpen(false)}
162
+ inPortal={false}
163
+ >
164
+ {subItems && Array?.isArray(subItems)
165
+ ? subItems?.map((subItem: any, idx: number) => (
166
+ <NestedDropdownItem
167
+ key={`subItem_${index}_${idx}`}
168
+ subItem={subItem}
169
+ parentIndex={index}
170
+ subIndex={idx}
171
+ />
172
+ ))
173
+ : null}
174
+ </PopoverContent>
175
+ </PopoverRoot>
176
+ );
177
+ };
178
+
179
+ const DesktopNavItem: React.FC<{
180
+ navItem: any;
181
+ index: number;
182
+ }> = ({ index, navItem }) => {
183
+ const navSubItems = navItem?.["sub-items"] ?? [];
184
+ const isNavItemDropdown =
185
+ navSubItems && Array.isArray(navSubItems) && navSubItems?.length > 0;
186
+
187
+ return (
188
+ <>
189
+ {isNavItemDropdown && (
190
+ <DropdownNavigationItem navItem={navItem} index={index} />
191
+ )}
192
+ {!isNavItemDropdown && (
193
+ <Heading
194
+ data-levo_group_item
195
+ elementKey={`desktop-nav-menu.${index}.nav-item-title`}
196
+ />
197
+ )}
198
+ </>
199
+ );
200
+ };
201
+
202
+ const DesktopNavigationMenu: React.FC<{
203
+ navItems: any;
204
+ }> = ({ navItems }) => {
205
+ return (
206
+ <Box elementKey="desktop-nav-menu_levoGroup" data-levo_group>
207
+ {navItems?.map((item: any, index: number) => {
208
+ return (
209
+ <DesktopNavItem
210
+ navItem={item}
211
+ index={index}
212
+ key={`desktop-nav-menu.${index}`}
213
+ />
214
+ );
215
+ })}
216
+ </Box>
217
+ );
218
+ };
219
+
220
+ const NestedDropdownItemMobile: React.FC<any> = ({
221
+ subItem,
222
+ parentIndex,
223
+ subIndex,
224
+ }) => {
225
+ const [isNestedDropdownOpen, setIsNestedDropdownOpen] =
226
+ useState<boolean>(false);
227
+
228
+ const nestedSubItems = subItem?.["sub-sub-items"] as Array<any>;
229
+
230
+ return (
231
+ <>
232
+ <Box
233
+ elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.nested-dropdown-trigger`}
234
+ onClick={() => setIsNestedDropdownOpen((prev) => !prev)}
235
+ className="flex w-full items-center"
236
+ >
237
+ <Box
238
+ elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-text-container`}
239
+ >
240
+ <Heading
241
+ elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-title`}
242
+ >
243
+ {subItem?.title}
244
+ </Heading>
245
+ <Typography
246
+ elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-description`}
247
+ >
248
+ {subItem?.description}
249
+ </Typography>
250
+ </Box>
251
+
252
+ <ChevronDown
253
+ aria-hidden="true"
254
+ className="flex-shrink-0"
255
+ style={{
256
+ height: "16px",
257
+ width: "16px",
258
+ transition: "transform 300ms cubic-bezier(0.4, 0, 0.2, 1)",
259
+ transform: isNestedDropdownOpen ? "rotate(180deg)" : "rotate(0deg)",
260
+ color: "black",
261
+ }}
262
+ />
263
+ </Box>
264
+
265
+ {isNestedDropdownOpen && Array.isArray(nestedSubItems) && (
266
+ <Box
267
+ elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items_levoGroup`}
268
+ data-levo_group
269
+ className="ml-4"
270
+ >
271
+ {nestedSubItems.map((nestedSubItem, nestedIdx) => (
272
+ <Box
273
+ key={`nestedSubItem_${parentIndex}_${subIndex}_${nestedIdx}`}
274
+ elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-link`}
275
+ className={cn("")}
276
+ data-levo_group_item
277
+ >
278
+ <Box
279
+ elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-text-container`}
280
+ >
281
+ <Heading
282
+ elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-title`}
283
+ >
284
+ {nestedSubItem?.title}
285
+ </Heading>
286
+ <Typography
287
+ elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-description`}
288
+ >
289
+ {nestedSubItem?.description}
290
+ </Typography>
291
+ </Box>
292
+ </Box>
293
+ ))}
294
+ </Box>
295
+ )}
296
+ </>
297
+ );
298
+ };
299
+
300
+ const DropdownNavigationItemMobile: React.FC<{
301
+ navItem: any;
302
+ index: number;
303
+ setIsOpen: (value: boolean) => void;
304
+ }> = ({ navItem, index, setIsOpen }) => {
305
+ const [isDropdownOpen, setIsDropdownOpen] = useState<boolean>(false);
306
+
307
+ const subItems = navItem?.["sub-items"] as Array<any>;
308
+ const hasSubItems =
309
+ subItems && Array.isArray(subItems) && subItems.length > 0;
310
+ const hasSubSubItems = hasSubItems;
311
+
312
+ return (
313
+ <Box elementKey={`mobile-nav-menu.${index}.nav-item-dropdown-container`}>
314
+ <Box
315
+ elementKey={`mobile-nav-menu.${index}.nav-item-dropdown-trigger`}
316
+ onClick={() => setIsDropdownOpen((prev) => !prev)}
317
+ className="flex items-center justify-between"
318
+ >
319
+ <Heading
320
+ elementKey={`mobile-nav-menu.${index}.nav-item-dropdown-trigger-title`}
321
+ />
322
+ {hasSubSubItems && (
323
+ <ChevronDown
324
+ aria-hidden="true"
325
+ style={{
326
+ position: "relative",
327
+ top: "2px",
328
+ height: "16px",
329
+ width: "16px",
330
+ transitionProperty:
331
+ "color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",
332
+ transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
333
+ transitionDuration: "300ms",
334
+ rotate: isDropdownOpen ? "180deg" : "0deg",
335
+ color: "var(--color-text-1)",
336
+ }}
337
+ />
338
+ )}
339
+ </Box>
340
+ {isDropdownOpen && hasSubItems && (
341
+ <Box
342
+ elementKey={`mobile-nav-menu.${index}.sub-items_levoGroup`}
343
+ data-levo_group
344
+ >
345
+ {subItems?.map((subItem: any, idx: number) => {
346
+ const nestedSubItems = subItem?.["sub-sub-items"] as Array<any>;
347
+ const hasNestedItems =
348
+ nestedSubItems &&
349
+ Array.isArray(nestedSubItems) &&
350
+ nestedSubItems.length > 0;
351
+
352
+ return (
353
+ <Box
354
+ key={`subItem_${index}_${idx}`}
355
+ elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-link`}
356
+ data-levo_group_item
357
+ className={cn("")}
358
+ >
359
+ {hasNestedItems ? (
360
+ <NestedDropdownItemMobile
361
+ subItem={subItem}
362
+ parentIndex={index}
363
+ subIndex={idx}
364
+ setIsOpen={setIsOpen}
365
+ />
366
+ ) : (
367
+ <Box
368
+ elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-text-container`}
369
+ >
370
+ <Heading
371
+ elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-title`}
372
+ />
373
+ <Typography
374
+ elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-description`}
375
+ />
376
+ </Box>
377
+ )}
378
+ </Box>
379
+ );
380
+ })}
381
+ </Box>
382
+ )}
383
+ </Box>
384
+ );
385
+ };
386
+
387
+ const MobileNavItem: React.FC<{
388
+ navItem: any;
389
+ index: number;
390
+ setIsOpen: (value: boolean) => void;
391
+ }> = ({ navItem, index, setIsOpen }) => {
392
+ const navSubItems = navItem?.["sub-items"] ?? [];
393
+ const isNavItemDropdown =
394
+ navSubItems && Array.isArray(navSubItems) && navSubItems?.length > 0;
395
+
396
+ return (
397
+ <React.Fragment>
398
+ {isNavItemDropdown && (
399
+ <DropdownNavigationItemMobile
400
+ navItem={navItem}
401
+ setIsOpen={setIsOpen}
402
+ index={index}
403
+ />
404
+ )}
405
+ {!isNavItemDropdown && (
406
+ <Box
407
+ data-levo_group_item
408
+ elementKey={`mobile-nav-menu.${index}.nav-item-title-container`}
409
+ onClick={() => setIsOpen(false)}
410
+ >
411
+ <Heading elementKey={`mobile-nav-menu.${index}.nav-item-title`} />
412
+ </Box>
413
+ )}
414
+ </React.Fragment>
415
+ );
416
+ };
417
+
418
+ const MobileNavigationSheet: React.FC<{
419
+ navItems: any;
420
+ content: any;
421
+ isOpen: boolean;
422
+ setIsOpen: (value: boolean) => void;
423
+ }> = ({ navItems, content, isOpen, setIsOpen }) => {
424
+ return (
425
+ <React.Fragment>
426
+ <Button
427
+ elementKey="mobile-nav-menu-button"
428
+ aria-label="Open navigation"
429
+ onClick={() => setIsOpen(!isOpen)}
430
+ >
431
+ {isOpen ? <X size={24} /> : <Menu size={24} />}
432
+ </Button>
433
+ {isOpen && (
434
+ <Box elementKey="mobile-nav-menu-wrapper">
435
+ <Box elementKey="mobile-nav-menu_levoGroup" data-levo_group>
436
+ {Array.isArray(navItems)
437
+ ? navItems?.map((item, index) => {
438
+ return (
439
+ <MobileNavItem
440
+ navItem={item}
441
+ key={`${item?.["nav-item-title"]}_${index}`}
442
+ setIsOpen={setIsOpen}
443
+ index={index}
444
+ />
445
+ );
446
+ })
447
+ : null}
448
+ </Box>
449
+ {content?.["mobile-cta-group"]?.length > 0 && (
450
+ <Box elementKey="mobile-cta-group_levoGroup" data-levo_group>
451
+ {content?.["mobile-cta-group"]?.map((_: any, index: number) => (
452
+ <Button
453
+ key={`mobile-cta-group.${index}.cta`}
454
+ elementKey={`mobile-cta-group.${index}.cta`}
455
+ data-levo_group_item
456
+ className="mb-2 w-full"
457
+ >
458
+ {content?.["mobile-cta-group"]?.[index]?.cta}
459
+ </Button>
460
+ ))}
461
+ </Box>
462
+ )}
463
+ <Box elementKey="icon_links_levoGroup" data-levo_group>
464
+ {((content as any)?.icon_links ?? [])?.map(
465
+ (_: any, index: number) => (
466
+ <Icon
467
+ key={`footer-1-icon-${index}`}
468
+ data-levo_group_item
469
+ elementKey={`icon_links.${index}.icon`}
470
+ />
471
+ ),
472
+ )}
473
+ </Box>
474
+ </Box>
475
+ )}
476
+ </React.Fragment>
477
+ );
478
+ };
479
+
480
+ const Navbar3: React.FC<ILevoBlockBaseProps<INavbar3Content>> = ({
481
+ content,
482
+ }) => {
483
+ const [isScrolled, setIsScrolled] = useState(false);
484
+ const [isOpen, setIsOpen] = useState(false);
485
+
486
+ useEffect(() => {
487
+ const handleScroll = () => {
488
+ if (window.scrollY === 0 && isScrolled) {
489
+ setIsScrolled(false);
490
+ } else if (window.scrollY >= 40 && !isScrolled) {
491
+ setIsScrolled(true);
492
+ }
493
+ };
494
+
495
+ document.addEventListener("scroll", handleScroll);
496
+
497
+ return () => {
498
+ document.removeEventListener("scroll", handleScroll);
499
+ };
500
+ }, [isScrolled]);
501
+
502
+ const desktopNavLinks = content?.["desktop-nav-menu"];
503
+ const mobileNavLinks = content?.["mobile-nav-menu"];
504
+
505
+ return (
506
+ <>
507
+ {isOpen && (
508
+ <Box
509
+ elementKey="mobile-background-overlay"
510
+ onClick={() => setIsOpen(false)}
511
+ className="fixed top-0 right-0 bottom-0 left-0 z-20 bg-black/20"
512
+ />
513
+ )}
514
+ <Section
515
+ elementKey="layout"
516
+ className={cn(isScrolled ? "top-2" : "top-8")}
517
+ >
518
+ <Container elementKey="nav-container">
519
+ <Image elementKey="nav-logo" alt="Logo" />
520
+ {desktopNavLinks &&
521
+ Array?.isArray(desktopNavLinks) &&
522
+ desktopNavLinks?.length > 0 && (
523
+ <DesktopNavigationMenu navItems={desktopNavLinks} />
524
+ )}
525
+ <MobileNavigationSheet
526
+ navItems={mobileNavLinks || []}
527
+ content={content}
528
+ isOpen={isOpen}
529
+ setIsOpen={setIsOpen}
530
+ />
531
+
532
+ <Box elementKey="desktop-cta-group_levoGroup" data-levo_group>
533
+ {content?.["desktop-cta-group"]?.length > 0 &&
534
+ content?.["desktop-cta-group"]?.map((_: any, index: number) => (
535
+ <Button
536
+ key={`desktop-cta-group.${index}.cta`}
537
+ elementKey={`desktop-cta-group.${index}.cta`}
538
+ data-levo_group_item
539
+ >
540
+ {content?.["desktop-cta-group"]?.[index]?.cta}
541
+ </Button>
542
+ ))}
543
+ <UserMenu elementKey="usermenu" />
544
+ </Box>
545
+ </Container>
546
+ </Section>
547
+ </>
548
+ );
549
+ };
550
+
551
+ export default Navbar3;