@levo-so/blocks 0.1.59 → 0.1.61

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 (245) hide show
  1. package/package.json +6 -6
  2. package/src/blocks/about-us/about-us-1.schema.ts +60 -58
  3. package/src/blocks/about-us/about-us-1.tsx +2 -4
  4. package/src/blocks/about-us/about-us-2.schema.ts +165 -42
  5. package/src/blocks/about-us/about-us-2.tsx +7 -13
  6. package/src/blocks/blogs/blog-listing-1.schema.ts +7 -14
  7. package/src/blocks/blogs/blog-listing-1.tsx +27 -36
  8. package/src/blocks/blogs/blog-listing-2.schema.ts +17 -34
  9. package/src/blocks/blogs/blog-listing-2.tsx +21 -27
  10. package/src/blocks/blogs/blog-listing-3.schema.ts +32 -64
  11. package/src/blocks/blogs/blog-listing-3.tsx +21 -27
  12. package/src/blocks/blogs/blog-post-1.schema.ts +9 -18
  13. package/src/blocks/blogs/blog-post-1.tsx +3 -14
  14. package/src/blocks/calendar/calendar-1.schema.ts +351 -180
  15. package/src/blocks/calendar/calendar-1.tsx +60 -25
  16. package/src/blocks/cards/cards-10.schema.ts +278 -331
  17. package/src/blocks/cards/cards-10.tsx +18 -15
  18. package/src/blocks/cards/cards-11.schema.ts +178 -356
  19. package/src/blocks/cards/cards-11.tsx +5 -11
  20. package/src/blocks/cards/cards-12.schema.ts +110 -196
  21. package/src/blocks/cards/cards-12.tsx +4 -10
  22. package/src/blocks/cards/cards-13.schema.ts +131 -120
  23. package/src/blocks/cards/cards-13.tsx +4 -6
  24. package/src/blocks/cards/cards-14.schema.ts +51 -154
  25. package/src/blocks/cards/cards-14.tsx +5 -11
  26. package/src/blocks/cards/cards-15.schema.ts +48 -32
  27. package/src/blocks/cards/cards-15.tsx +15 -6
  28. package/src/blocks/cards/cards-2.schema.ts +76 -88
  29. package/src/blocks/cards/cards-2.tsx +12 -17
  30. package/src/blocks/cards/cards-3.schema.ts +68 -70
  31. package/src/blocks/cards/cards-3.tsx +7 -13
  32. package/src/blocks/cards/cards-4.schema.ts +160 -115
  33. package/src/blocks/cards/cards-4.tsx +22 -17
  34. package/src/blocks/cards/cards-5.schema.ts +76 -70
  35. package/src/blocks/cards/cards-5.tsx +10 -10
  36. package/src/blocks/cards/cards-6.schema.ts +755 -985
  37. package/src/blocks/cards/cards-6.tsx +17 -9
  38. package/src/blocks/cards/cards-7.schema.ts +754 -2250
  39. package/src/blocks/cards/cards-7.tsx +18 -24
  40. package/src/blocks/cards/cards-8.schema.ts +171 -363
  41. package/src/blocks/cards/cards-8.tsx +15 -8
  42. package/src/blocks/cards/cards-9.schema.ts +283 -329
  43. package/src/blocks/cards/cards-9.tsx +28 -12
  44. package/src/blocks/carousel/carousel-1.schema.ts +418 -49
  45. package/src/blocks/carousel/carousel-1.tsx +8 -8
  46. package/src/blocks/carousel/carousel-2.schema.ts +153 -127
  47. package/src/blocks/carousel/carousel-2.tsx +16 -20
  48. package/src/blocks/community/community-1.schema.ts +612 -0
  49. package/src/blocks/community/community-1.tsx +557 -0
  50. package/src/blocks/community/community-post-1.schema.ts +408 -0
  51. package/src/blocks/community/community-post-1.tsx +405 -0
  52. package/src/blocks/contact-us/contact-us-1.schema.ts +25 -43
  53. package/src/blocks/contact-us/contact-us-1.tsx +2 -12
  54. package/src/blocks/contact-us/contact-us-2.schema.ts +39 -17
  55. package/src/blocks/contact-us/contact-us-2.tsx +21 -32
  56. package/src/blocks/content/content-1.schema.ts +163 -234
  57. package/src/blocks/content/content-1.tsx +46 -43
  58. package/src/blocks/content/content-2.schema.ts +117 -35
  59. package/src/blocks/content/content-2.tsx +19 -7
  60. package/src/blocks/content/content-3.schema.ts +215 -205
  61. package/src/blocks/content/content-3.tsx +14 -18
  62. package/src/blocks/content/content-4.schema.ts +105 -89
  63. package/src/blocks/content/content-4.tsx +10 -18
  64. package/src/blocks/content/content-5.schema.ts +301 -278
  65. package/src/blocks/content/content-5.tsx +23 -16
  66. package/src/blocks/content/content-6.schema.ts +432 -250
  67. package/src/blocks/content/content-6.tsx +24 -19
  68. package/src/blocks/content/content-7.schema.ts +200 -197
  69. package/src/blocks/content/content-7.tsx +29 -21
  70. package/src/blocks/content/content-8.schema.ts +28 -23
  71. package/src/blocks/content/content-8.tsx +3 -3
  72. package/src/blocks/content/content-9.schema.ts +64 -2208
  73. package/src/blocks/content/content-9.tsx +31 -43
  74. package/src/blocks/cta/cta-1.schema.ts +23 -128
  75. package/src/blocks/cta/cta-2.schema.ts +46 -69
  76. package/src/blocks/cta/cta-2.tsx +2 -6
  77. package/src/blocks/cta/cta-3.schema.ts +77 -72
  78. package/src/blocks/cta/cta-3.tsx +2 -6
  79. package/src/blocks/embed/embed-1.schema.ts +30 -52
  80. package/src/blocks/embed/embed-1.tsx +1 -9
  81. package/src/blocks/event/ClientOnly.tsx +1 -4
  82. package/src/blocks/event/event-details.schema.ts +23 -32
  83. package/src/blocks/event/event-details.tsx +9 -23
  84. package/src/blocks/event/event-listing-2.schema.ts +19 -38
  85. package/src/blocks/event/event-listing-2.tsx +29 -38
  86. package/src/blocks/event/event-listing-3.schema.ts +10 -20
  87. package/src/blocks/event/event-listing-3.tsx +26 -30
  88. package/src/blocks/event/event-listing-4.schema.ts +40 -80
  89. package/src/blocks/event/event-listing-4.tsx +22 -28
  90. package/src/blocks/event/event-listing.schema.ts +12 -24
  91. package/src/blocks/event/event-listing.tsx +26 -30
  92. package/src/blocks/faq/faq-1.schema.ts +150 -112
  93. package/src/blocks/faq/faq-1.tsx +31 -33
  94. package/src/blocks/faq/faq-2.schema.ts +132 -77
  95. package/src/blocks/faq/faq-2.tsx +21 -11
  96. package/src/blocks/faq/faq-3.schema.ts +178 -107
  97. package/src/blocks/faq/faq-3.tsx +30 -22
  98. package/src/blocks/features/features-1/features-1.schema.ts +11 -3
  99. package/src/blocks/features/features-1/features-1.tsx +12 -5
  100. package/src/blocks/features/features-1/variants/default.ts +176 -62
  101. package/src/blocks/features/features-1/variants/index.ts +1 -1
  102. package/src/blocks/features/features-1/variants/stylized-cards-v1.ts +392 -54
  103. package/src/blocks/features/features-1/variants/stylized-cards-v2.ts +119 -103
  104. package/src/blocks/features/features-1/variants/stylized-cards-v3.ts +16 -199
  105. package/src/blocks/features/features-2.schema.ts +149 -48
  106. package/src/blocks/features/features-2.tsx +18 -12
  107. package/src/blocks/features/features-3.schema.ts +255 -68
  108. package/src/blocks/features/features-3.tsx +25 -15
  109. package/src/blocks/features/features-4.schema.ts +367 -188
  110. package/src/blocks/features/features-4.tsx +12 -8
  111. package/src/blocks/features/features-5.schema.ts +195 -200
  112. package/src/blocks/features/features-5.tsx +14 -14
  113. package/src/blocks/features/features-6.schema.ts +230 -215
  114. package/src/blocks/features/features-6.tsx +28 -34
  115. package/src/blocks/filter-listing/filter-listing-1.tsx +12 -36
  116. package/src/blocks/floating-buttons/floating-button-1.schema.ts +100 -0
  117. package/src/blocks/floating-buttons/floating-button-1.tsx +14 -0
  118. package/src/blocks/footer/footer-1.schema.ts +110 -48
  119. package/src/blocks/footer/footer-1.tsx +17 -31
  120. package/src/blocks/footer/footer-2.schema.ts +230 -34
  121. package/src/blocks/footer/footer-2.tsx +19 -29
  122. package/src/blocks/footer/footer-3.schema.ts +335 -59
  123. package/src/blocks/footer/footer-3.tsx +11 -26
  124. package/src/blocks/footer/footer-4.schema.ts +139 -76
  125. package/src/blocks/footer/footer-4.tsx +37 -55
  126. package/src/blocks/footer/footer-5.schema.ts +138 -60
  127. package/src/blocks/footer/footer-5.tsx +16 -30
  128. package/src/blocks/footer/footer-6.schema.ts +62 -149
  129. package/src/blocks/footer/footer-6.tsx +30 -44
  130. package/src/blocks/form/form-1.schema.ts +144 -0
  131. package/src/blocks/form/form-1.tsx +33 -0
  132. package/src/blocks/hero/hero-1.schema.ts +153 -101
  133. package/src/blocks/hero/hero-1.tsx +4 -4
  134. package/src/blocks/hero/hero-10.schema.ts +9 -31
  135. package/src/blocks/hero/hero-10.tsx +4 -4
  136. package/src/blocks/hero/hero-11.schema.ts +196 -89
  137. package/src/blocks/hero/hero-11.tsx +5 -10
  138. package/src/blocks/hero/hero-12.schema.ts +111 -192
  139. package/src/blocks/hero/hero-12.tsx +4 -7
  140. package/src/blocks/hero/hero-13.schema.ts +36 -30
  141. package/src/blocks/hero/hero-13.tsx +1 -1
  142. package/src/blocks/hero/hero-2.schema.ts +30 -58
  143. package/src/blocks/hero/hero-2.tsx +3 -21
  144. package/src/blocks/hero/hero-3.schema.ts +70 -90
  145. package/src/blocks/hero/hero-3.tsx +6 -15
  146. package/src/blocks/hero/hero-4.schema.ts +246 -73
  147. package/src/blocks/hero/hero-4.tsx +22 -16
  148. package/src/blocks/hero/hero-5.schema.ts +104 -47
  149. package/src/blocks/hero/hero-5.tsx +21 -12
  150. package/src/blocks/hero/hero-6.schema.ts +127 -258
  151. package/src/blocks/hero/hero-6.tsx +6 -6
  152. package/src/blocks/hero/hero-7.schema.ts +90 -43
  153. package/src/blocks/hero/hero-7.tsx +6 -4
  154. package/src/blocks/hero/hero-8.schema.ts +342 -138
  155. package/src/blocks/hero/hero-8.tsx +23 -13
  156. package/src/blocks/hero/hero-9.schema.ts +111 -86
  157. package/src/blocks/hero/hero-9.tsx +12 -4
  158. package/src/blocks/index.ts +12 -8
  159. package/src/blocks/jobs/jobs-1.schema.ts +990 -0
  160. package/src/blocks/jobs/jobs-1.tsx +145 -0
  161. package/src/blocks/logos/logos-1.schema.ts +370 -36
  162. package/src/blocks/logos/logos-1.tsx +7 -7
  163. package/src/blocks/navbar/navbar-1.schema.ts +15 -28
  164. package/src/blocks/navbar/navbar-1.tsx +24 -60
  165. package/src/blocks/navbar/navbar-2.schema.ts +14 -28
  166. package/src/blocks/navbar/navbar-2.tsx +26 -56
  167. package/src/blocks/navbar/navbar-3.schema.ts +11 -22
  168. package/src/blocks/navbar/navbar-3.tsx +33 -82
  169. package/src/blocks/navbar/navbar-4.schema.ts +14343 -0
  170. package/src/blocks/navbar/navbar-4.tsx +546 -0
  171. package/src/blocks/polling/polling-1.schema.ts +2 -21
  172. package/src/blocks/polling/polling-1.tsx +24 -39
  173. package/src/blocks/pricing/pricing-1.schema.ts +307 -290
  174. package/src/blocks/pricing/pricing-1.tsx +32 -42
  175. package/src/blocks/products/products-listing-1.schema.ts +115 -36
  176. package/src/blocks/products/products-listing-1.tsx +15 -13
  177. package/src/blocks/products/products-listing-2.schema.ts +178 -220
  178. package/src/blocks/products/products-listing-2.tsx +29 -16
  179. package/src/blocks/products/products-listing-3.schema.ts +412 -154
  180. package/src/blocks/products/products-listing-3.tsx +102 -73
  181. package/src/blocks/profile/profile-1.schema.ts +60 -49
  182. package/src/blocks/profile/profile-1.tsx +5 -10
  183. package/src/blocks/profile/profile-2.schema.ts +71 -92
  184. package/src/blocks/profile/profile-2.tsx +6 -7
  185. package/src/blocks/profile/profile-3.schema.ts +141 -529
  186. package/src/blocks/profile/profile-3.tsx +19 -41
  187. package/src/blocks/{blogs/blog-post-2.schema.ts → profile/profile-4.schema.ts} +75 -97
  188. package/src/blocks/{blogs/blog-post-2.tsx → profile/profile-4.tsx} +32 -61
  189. package/src/blocks/{blogs/blog-post-3.schema.ts → profile/profile-5.schema.ts} +6 -6
  190. package/src/blocks/{blogs/blog-post-3.tsx → profile/profile-5.tsx} +6 -11
  191. package/src/blocks/services/service-1.schema.ts +210 -830
  192. package/src/blocks/services/service-1.tsx +46 -59
  193. package/src/blocks/services/service-2.schema.ts +92 -80
  194. package/src/blocks/services/service-2.tsx +13 -7
  195. package/src/blocks/services/service-3.schema.ts +74 -86
  196. package/src/blocks/services/service-3.tsx +44 -45
  197. package/src/blocks/stats/stats-1.schema.ts +225 -21
  198. package/src/blocks/stats/stats-1.tsx +7 -14
  199. package/src/blocks/stats/stats-2.schema.ts +13 -5
  200. package/src/blocks/stats/stats-2.tsx +12 -15
  201. package/src/blocks/stats/variants/default.ts +59 -41
  202. package/src/blocks/stats/variants/hero.ts +64 -31
  203. package/src/blocks/stats/variants/index.ts +1 -1
  204. package/src/blocks/tabs/tab-1.schema.ts +103 -409
  205. package/src/blocks/tabs/tab-1.tsx +47 -53
  206. package/src/blocks/tabs/tab-2.schema.ts +207 -290
  207. package/src/blocks/tabs/tab-2.tsx +20 -9
  208. package/src/blocks/team/team-1.schema.ts +593 -76
  209. package/src/blocks/team/team-1.tsx +16 -22
  210. package/src/blocks/team/team-2.schema.ts +621 -1453
  211. package/src/blocks/team/team-2.tsx +19 -34
  212. package/src/blocks/team/team-3.schema.ts +127 -78
  213. package/src/blocks/team/team-3.tsx +9 -14
  214. package/src/blocks/team/team-4.schema.ts +197 -63
  215. package/src/blocks/team/team-4.tsx +25 -26
  216. package/src/blocks/team/team-5.schema.ts +65 -54
  217. package/src/blocks/team/team-5.tsx +13 -4
  218. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.schema.ts +9 -26
  219. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.tsx +4 -6
  220. package/src/blocks/testimonial/testimonial-1.schema.ts +713 -65
  221. package/src/blocks/testimonial/testimonial-1.tsx +12 -23
  222. package/src/blocks/testimonial/testimonial-2.schema.ts +1316 -354
  223. package/src/blocks/testimonial/testimonial-2.tsx +21 -37
  224. package/src/blocks/testimonial/testimonial-3.schema.ts +210 -74
  225. package/src/blocks/testimonial/testimonial-3.tsx +17 -27
  226. package/src/blocks/testimonial/testimonial-4.schema.ts +353 -1049
  227. package/src/blocks/testimonial/testimonial-4.tsx +16 -34
  228. package/src/blocks/testimonial/testimonial-5/variants/default.ts +155 -171
  229. package/src/blocks/testimonial/testimonial-5/variants/index.ts +1 -1
  230. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithLogo.ts +201 -501
  231. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithRatings.ts +166 -316
  232. package/src/blocks/testimonial/testimonial-5.schema.ts +2 -6
  233. package/src/blocks/testimonial/testimonial-5.tsx +15 -25
  234. package/src/blocks/testimonial/testimonial-6.schema.ts +226 -315
  235. package/src/blocks/testimonial/testimonial-6.tsx +9 -25
  236. package/src/blocks/testimonial/testimonial-7.schema.ts +74 -45
  237. package/src/blocks/testimonial/testimonial-7.tsx +16 -27
  238. package/src/blocks/timeline/timeline-1.schema.ts +166 -153
  239. package/src/blocks/timeline/timeline-1.tsx +6 -7
  240. package/src/blocks/users/edit-profile.schema.ts +56 -44
  241. package/src/blocks/users/edit-profile.tsx +23 -28
  242. package/src/constants/index.ts +16 -0
  243. package/src/index.ts +1 -1
  244. package/src/schemas/blocks.ts +17 -5
  245. package/src/schemas/categories.ts +26 -2
@@ -2,25 +2,23 @@
2
2
 
3
3
  import type { CarouselApi } from "@levo-so/studio";
4
4
  import {
5
- type ILevoBlockBaseProps,
6
- Heading,
7
- Image,
8
- Typography,
9
- Container,
10
- Section,
5
+ Box,
6
+ Button,
11
7
  Carousel,
12
8
  CarouselContent,
13
9
  CarouselItem,
14
- Box,
15
- Button,
10
+ Container,
11
+ Heading,
12
+ type ILevoBlockBaseProps,
13
+ Image,
14
+ Section,
15
+ Typography,
16
16
  } from "@levo-so/studio";
17
17
  import { useEffect, useState } from "react";
18
18
 
19
19
  import type { IFeature6Content } from "./features-6.schema";
20
20
 
21
- const Feature6: React.FC<ILevoBlockBaseProps<IFeature6Content>> = ({
22
- content,
23
- }) => {
21
+ const Feature6: React.FC<ILevoBlockBaseProps<IFeature6Content>> = ({ content }) => {
24
22
  const [api, setApi] = useState<CarouselApi>();
25
23
  const [current, setCurrent] = useState(0);
26
24
  const [count, setCount] = useState(0);
@@ -41,7 +39,10 @@ const Feature6: React.FC<ILevoBlockBaseProps<IFeature6Content>> = ({
41
39
  return (
42
40
  <Section elementKey="layout">
43
41
  <Container elementKey="container">
44
- <Heading elementKey="title" />
42
+ <Box elementKey="header">
43
+ <Heading elementKey="title" />
44
+ <Typography elementKey="description" />
45
+ </Box>
45
46
 
46
47
  <Carousel
47
48
  elementKey="features_levoGroup"
@@ -53,37 +54,30 @@ const Feature6: React.FC<ILevoBlockBaseProps<IFeature6Content>> = ({
53
54
  {(content?.features ?? []).map((_, index: number) => (
54
55
  <CarouselItem key={index} data-levo_group_item>
55
56
  <Box elementKey={`features.${index}.card`}>
56
- <Image
57
- elementKey={`features.${index}.image`}
58
- alt="Feature image"
59
- />
57
+ <Image elementKey={`features.${index}.image`} alt="Feature image" />
60
58
  <Box elementKey={`features.${index}.content_wrapper`}>
61
59
  <Box elementKey={`features.${index}.meta_container`}>
62
60
  <Box elementKey={`features.${index}.date_wrapper`}>
63
- <Image
64
- elementKey={`features.${index}.date_icon`}
65
- alt="Date icon"
66
- />
67
- <Typography
68
- elementKey={`features.${index}.date_text`}
69
- />
61
+ <Image elementKey={`features.${index}.date_icon`} alt="Date icon" />
62
+ <Typography elementKey={`features.${index}.date_text`} />
70
63
  </Box>
71
64
  <Box elementKey={`features.${index}.category_wrapper`}>
72
- <Image
73
- elementKey={`features.${index}.category_icon`}
74
- alt="Category icon"
75
- />
76
- <Typography
77
- elementKey={`features.${index}.category_text`}
78
- />
65
+ <Image elementKey={`features.${index}.category_icon`} alt="Category icon" />
66
+ <Typography elementKey={`features.${index}.category_text`} />
79
67
  </Box>
80
68
  </Box>
81
69
  <Box elementKey={`features.${index}.text_container`}>
82
70
  <Heading elementKey={`features.${index}.feature_title`} />
83
- <Typography
84
- elementKey={`features.${index}.description`}
85
- />
86
- <Button elementKey={`features.${index}.cta`} />
71
+ <Typography elementKey={`features.${index}.description`} />
72
+ <Box elementKey={`features.${index}.ctas_levoGroup`} data-levo_group>
73
+ {(content?.features?.[index]?.ctas ?? []).map((_, ctaIndex) => (
74
+ <Button
75
+ key={`features.${index}.ctas.${ctaIndex}.cta`}
76
+ elementKey={`features.${index}.ctas.${ctaIndex}.cta`}
77
+ data-levo_group_item
78
+ />
79
+ ))}
80
+ </Box>
87
81
  </Box>
88
82
  </Box>
89
83
  </Box>
@@ -1,14 +1,14 @@
1
1
  import {
2
- type ILevoBlockBaseProps,
3
- AccordionRoot,
2
+ AccordionContent,
4
3
  AccordionItem,
4
+ AccordionRoot,
5
5
  AccordionTrigger,
6
- AccordionContent,
7
6
  Box,
8
7
  Button,
9
8
  Container,
10
9
  Heading,
11
10
  Icon,
11
+ type ILevoBlockBaseProps,
12
12
  IntegrationFilters,
13
13
  Media,
14
14
  Section,
@@ -18,9 +18,7 @@ import {
18
18
 
19
19
  import type { IFilterListing1Content } from "./filter-listing-1.schema";
20
20
 
21
- const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({
22
- config,
23
- }) => {
21
+ const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({ config }) => {
24
22
  const { data, query, setQuery, meta } = useContentEngine("listing");
25
23
 
26
24
  const handleNext = () => setQuery({ page: (query?.page || 0) + 1 });
@@ -33,19 +31,10 @@ const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({
33
31
  </Box>
34
32
  <Box elementKey="listing_wrapper">
35
33
  {config?.listing_levoGroup?.filters?.schema && (
36
- <AccordionRoot
37
- type="single"
38
- elementKey="filters_accordion"
39
- defaultValue="filters"
40
- >
41
- <AccordionItem
42
- value="filters"
43
- elementKey="filters_accordion_item"
44
- >
34
+ <AccordionRoot type="single" elementKey="filters_accordion" defaultValue="filters">
35
+ <AccordionItem value="filters" elementKey="filters_accordion_item">
45
36
  <AccordionTrigger elementKey="filters_accordion_trigger">
46
- <Typography elementKey="filters_accordion_title">
47
- Filters
48
- </Typography>
37
+ <Typography elementKey="filters_accordion_title">Filters</Typography>
49
38
  </AccordionTrigger>
50
39
  <AccordionContent elementKey="filters_accordion_content">
51
40
  <Box elementKey="filters_box">
@@ -53,10 +42,7 @@ const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({
53
42
  query={query}
54
43
  setQuery={setQuery}
55
44
  schema={config?.listing_levoGroup?.filters?.schema}
56
- selectedFields={
57
- config?.listing_levoGroup?.filters?.selected_fields ??
58
- []
59
- }
45
+ selectedFields={config?.listing_levoGroup?.filters?.selected_fields ?? []}
60
46
  />
61
47
  </Box>
62
48
  </AccordionContent>
@@ -70,29 +56,19 @@ const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({
70
56
  data-levo_group_item
71
57
  elementKey={`listing.${index}.card`}
72
58
  >
73
- <Media
74
- elementKey={`listing.${index}.media`}
75
- alt="Filter Media"
76
- />
59
+ <Media elementKey={`listing.${index}.media`} alt="Filter Media" />
77
60
  <Box elementKey={`listing.${index}.filter_info_wrapper`}>
78
61
  <Box elementKey={`listing.${index}.filter_content`}>
79
62
  <Heading elementKey={`listing.${index}.title`} />
80
- <Box
81
- elementKey={`listing.${index}.points_levoGroup`}
82
- data-levo_group
83
- >
63
+ <Box elementKey={`listing.${index}.points_levoGroup`} data-levo_group>
84
64
  {(item.points || [])?.map((_: any, pIndex: number) => (
85
65
  <Box
86
66
  key={pIndex}
87
67
  elementKey={`listing.${index}.points.${pIndex}.container`}
88
68
  data-levo_group_item
89
69
  >
90
- <Icon
91
- elementKey={`listing.${index}.points.${pIndex}.icon`}
92
- />
93
- <Typography
94
- elementKey={`listing.${index}.points.${pIndex}.text`}
95
- />
70
+ <Icon elementKey={`listing.${index}.points.${pIndex}.icon`} />
71
+ <Typography elementKey={`listing.${index}.points.${pIndex}.text`} />
96
72
  </Box>
97
73
  ))}
98
74
  </Box>
@@ -0,0 +1,100 @@
1
+ import type { IBlock } from "@levo-so/studio";
2
+
3
+ const DEFAULT_CONTENT = {
4
+ button_group: [
5
+ {
6
+ button: " ",
7
+ button_leftIcon: {
8
+ kind: "custom",
9
+ data: {
10
+ id: "R6ervNbOZfcD9",
11
+ location: "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd.png",
12
+ mimetype: "image/png",
13
+ kind: "image",
14
+ srcset: {
15
+ "1080w":
16
+ "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1080w.webp",
17
+ "1200w":
18
+ "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1200w.webp",
19
+ "1920w":
20
+ "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1920w.webp",
21
+ "320w": "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-320w.webp",
22
+ "640w": "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-640w.webp",
23
+ "750w": "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-750w.webp",
24
+ "828w": "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-828w.webp",
25
+ path: "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1080w.webp 1080w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1920w.webp 1920w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-320w.webp 320w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-640w.webp 640w",
26
+ },
27
+ },
28
+ },
29
+ },
30
+ ],
31
+ };
32
+
33
+ export type IFloatingButton1Content = typeof DEFAULT_CONTENT;
34
+
35
+ export const FloatingButton1: IBlock = {
36
+ category_id: "floating-buttons",
37
+ title: "Floating Button 1",
38
+ key: "floating-button-1",
39
+ version: "v1",
40
+ content_schema: [
41
+ {
42
+ key: "button_group",
43
+ label: "Buttons",
44
+ kind: "group",
45
+ field_interface: "BoxWidget",
46
+ fields: [
47
+ {
48
+ key: "button",
49
+ label: "Button",
50
+ field_interface: "ButtonWidget",
51
+ },
52
+ ],
53
+ },
54
+ ],
55
+ layouts: [
56
+ {
57
+ key: "default",
58
+ title: "Default",
59
+ styles: {
60
+ button_group: [
61
+ {
62
+ button: {
63
+ "border-radius": "3xl",
64
+ "background-color": "transparent",
65
+ },
66
+ button_leftIcon: {
67
+ height: "50px",
68
+ width: "50px",
69
+ "font-size": "50px",
70
+ },
71
+ },
72
+ ],
73
+ button_group_levoGroup: {
74
+ position: "fixed",
75
+ right: "24px",
76
+ bottom: "40px",
77
+ "z-index": "999999",
78
+ display: "flex",
79
+ "flex-direction": "column",
80
+ "align-items": "flex-end",
81
+ "row-gap": "12px",
82
+ },
83
+ },
84
+ content: DEFAULT_CONTENT,
85
+ config: {
86
+ button_group: [
87
+ {
88
+ button: {
89
+ button_icons: {
90
+ left: {
91
+ enabled: true,
92
+ },
93
+ },
94
+ },
95
+ },
96
+ ],
97
+ },
98
+ },
99
+ ],
100
+ };
@@ -0,0 +1,14 @@
1
+ import { Box, Button, type ILevoBlockBaseProps } from "@levo-so/studio";
2
+ import type React from "react";
3
+
4
+ import type { IFloatingButton1Content } from "./floating-button-1.schema";
5
+
6
+ const FloatingButton1: React.FC<ILevoBlockBaseProps<IFloatingButton1Content>> = ({ content }) => (
7
+ <Box elementKey="button_group_levoGroup" data-levo_group>
8
+ {(content?.button_group ?? []).map((_, index) => (
9
+ <Button key={index} elementKey={`button_group.${index}.button`} data-levo_group_item />
10
+ ))}
11
+ </Box>
12
+ );
13
+
14
+ export default FloatingButton1;
@@ -11,6 +11,24 @@ const DUMMY_ICON = {
11
11
  },
12
12
  };
13
13
 
14
+ const MEDIA = {
15
+ id: "A8sG1BvgdtgE",
16
+ filename: "footer-1-logo.png",
17
+ kind: "image",
18
+ location: "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV.png",
19
+ srcset: {
20
+ "1080w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1080w.webp",
21
+ "1200w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1200w.webp",
22
+ "1920w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1920w.webp",
23
+ "320w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-320w.webp",
24
+ "640w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-640w.webp",
25
+ "750w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-750w.webp",
26
+ "828w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-828w.webp",
27
+ path: "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-640w.webp 640w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1080w.webp 1080w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1920w.webp 1920w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-320w.webp 320w",
28
+ },
29
+ mimetype: "image/png",
30
+ };
31
+
14
32
  const DEFAULT_CONTENT = {
15
33
  layout: null,
16
34
  container: null,
@@ -18,29 +36,7 @@ const DEFAULT_CONTENT = {
18
36
 
19
37
  // logo and description
20
38
  logoTextWrapper: null,
21
- logo: {
22
- id: "7141014160938075687",
23
- location: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH.png",
24
- kind: "image",
25
- mimetype: "image/png",
26
- srcset: {
27
- "1080w":
28
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp",
29
- "1200w":
30
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1200w.webp",
31
- "1920w":
32
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1920w.webp",
33
- "320w":
34
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp",
35
- "640w":
36
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp",
37
- "750w":
38
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-750w.webp",
39
- "828w":
40
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-828w.webp",
41
- 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",
42
- },
43
- },
39
+ logo: MEDIA,
44
40
  logoDescription: "Expert Guidance, Ensuring Clear Verdicts Every Time.",
45
41
 
46
42
  // icon links below logo description
@@ -193,7 +189,7 @@ export const Footer1: IBlock = {
193
189
  {
194
190
  key: "category",
195
191
  label: "Category",
196
- field_interface: "TypographyWidget",
192
+ field_interface: "HeadingWidget",
197
193
  },
198
194
  {
199
195
  key: "links",
@@ -256,19 +252,7 @@ export const Footer1: IBlock = {
256
252
  title: "Default",
257
253
  key: "default",
258
254
  styles: {
259
- layout: {
260
- "padding-top": "80px",
261
- "padding-left": "112px",
262
- "padding-right": "112px",
263
- tablet: {
264
- padding: "50px",
265
- "padding-bottom": "0px",
266
- },
267
- mobile: {
268
- padding: "40px",
269
- "padding-bottom": "0px",
270
- },
271
- },
255
+ layout: {},
272
256
  container: {
273
257
  display: "flex",
274
258
  "flex-direction": "column",
@@ -277,7 +261,7 @@ export const Footer1: IBlock = {
277
261
  },
278
262
  footerBottomWrapper: {
279
263
  "border-style": "solid",
280
- "border-color": "var(--color-border)",
264
+ "border-color": "border",
281
265
  "border-top-width": "1px",
282
266
  "padding-top": "xl",
283
267
  display: "flex",
@@ -293,9 +277,7 @@ export const Footer1: IBlock = {
293
277
  footerBottomRightArea: [
294
278
  {
295
279
  link: {},
296
- cta: {
297
- color: "text-2",
298
- },
280
+ cta: {},
299
281
  separator: {
300
282
  width: "1px",
301
283
  height: "1rem",
@@ -306,9 +288,7 @@ export const Footer1: IBlock = {
306
288
  },
307
289
  {
308
290
  link: {},
309
- cta: {
310
- color: "text-2",
311
- },
291
+ cta: {},
312
292
  separator: {
313
293
  width: "1px",
314
294
  height: "1rem",
@@ -392,7 +372,7 @@ export const Footer1: IBlock = {
392
372
  {
393
373
  category: {
394
374
  "margin-bottom": "sm",
395
- color: "text-1",
375
+ "font-weight": 700,
396
376
  },
397
377
  links_levoGroup: {
398
378
  display: "flex",
@@ -465,7 +445,7 @@ export const Footer1: IBlock = {
465
445
  {
466
446
  category: {
467
447
  "margin-bottom": "sm",
468
- color: "text-1",
448
+ "font-weight": 700,
469
449
  },
470
450
  links_levoGroup: {
471
451
  display: "flex",
@@ -550,7 +530,7 @@ export const Footer1: IBlock = {
550
530
  {
551
531
  category: {
552
532
  "margin-bottom": "sm",
553
- color: "text-1",
533
+ "font-weight": 700,
554
534
  },
555
535
  links_levoGroup: {
556
536
  display: "flex",
@@ -605,7 +585,89 @@ export const Footer1: IBlock = {
605
585
  },
606
586
  },
607
587
  },
608
- config: {},
588
+ config: {
589
+ links: [
590
+ {
591
+ category: {
592
+ heading: {
593
+ level: "4",
594
+ },
595
+ selectedVariants: {
596
+ Heading_Level: "H6",
597
+ },
598
+ },
599
+ },
600
+ {
601
+ category: {
602
+ selectedVariants: {
603
+ Heading_Level: "H6",
604
+ },
605
+ heading: {
606
+ level: "4",
607
+ },
608
+ },
609
+ links: [
610
+ {
611
+ iconCtaWrapper: {
612
+ selectedVariants: {},
613
+ },
614
+ },
615
+ {
616
+ iconCtaWrapper: {
617
+ selectedVariants: {},
618
+ },
619
+ },
620
+ {
621
+ iconCtaWrapper: {
622
+ selectedVariants: {},
623
+ },
624
+ },
625
+ {
626
+ iconCtaWrapper: {
627
+ selectedVariants: {},
628
+ },
629
+ },
630
+ {
631
+ iconCtaWrapper: {
632
+ selectedVariants: {},
633
+ },
634
+ },
635
+ {
636
+ iconCtaWrapper: {
637
+ selectedVariants: {},
638
+ },
639
+ },
640
+ ],
641
+ },
642
+ {
643
+ category: {
644
+ selectedVariants: {
645
+ Heading_Level: "H6",
646
+ },
647
+ heading: {
648
+ level: "4",
649
+ },
650
+ },
651
+ links: [
652
+ {
653
+ iconCtaWrapper: {
654
+ selectedVariants: {},
655
+ },
656
+ },
657
+ {
658
+ iconCtaWrapper: {
659
+ selectedVariants: {},
660
+ },
661
+ },
662
+ {
663
+ iconCtaWrapper: {
664
+ selectedVariants: {},
665
+ },
666
+ },
667
+ ],
668
+ },
669
+ ],
670
+ },
609
671
  content: DEFAULT_CONTENT,
610
672
  },
611
673
  ],
@@ -1,19 +1,18 @@
1
- import React from "react";
2
1
  import {
3
2
  Box,
4
3
  Container,
4
+ Heading,
5
5
  Icon,
6
+ type ILevoBlockBaseProps,
6
7
  Image,
7
8
  Section,
8
9
  Typography,
9
- type ILevoBlockBaseProps,
10
10
  } from "@levo-so/studio";
11
+ import React from "react";
11
12
 
12
- import { type IFooter1Content } from "./footer-1.schema";
13
+ import type { IFooter1Content } from "./footer-1.schema";
13
14
 
14
- const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({
15
- content,
16
- }) => (
15
+ const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({ content }) => (
17
16
  <Section elementKey="layout">
18
17
  <Container elementKey="container">
19
18
  <Box elementKey="contentWrapper">
@@ -21,15 +20,13 @@ const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({
21
20
  <Image elementKey="logo" height={26} width={26} alt="footer-logo" />
22
21
  <Typography elementKey="logoDescription" />
23
22
  <Box elementKey="icon_links_levoGroup" data-levo_group>
24
- {((content as any)?.icon_links ?? [])?.map(
25
- (_: any, index: number) => (
26
- <Icon
27
- key={`footer-1-icon-${index}`}
28
- data-levo_group_item
29
- elementKey={`icon_links.${index}.icon`}
30
- />
31
- ),
32
- )}
23
+ {((content as any)?.icon_links ?? [])?.map((_: any, index: number) => (
24
+ <Icon
25
+ key={`footer-1-icon-${index}`}
26
+ data-levo_group_item
27
+ elementKey={`icon_links.${index}.icon`}
28
+ />
29
+ ))}
33
30
  </Box>
34
31
  </Box>
35
32
  <Box data-levo_group elementKey="links_levoGroup">
@@ -39,20 +36,15 @@ const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({
39
36
  key={`footer-1-links-${index}`}
40
37
  data-levo_group_item
41
38
  >
42
- <Typography elementKey={`links.${index}.category`} />
43
- <Box
44
- elementKey={`links.${index}.links_levoGroup`}
45
- data-levo_group
46
- >
39
+ <Heading elementKey={`links.${index}.category`} />
40
+ <Box elementKey={`links.${index}.links_levoGroup`} data-levo_group>
47
41
  {(content?.links?.[index]?.links ?? [])?.map((_, subIndex) => (
48
42
  <Box
49
43
  elementKey={`links.${index}.links.${subIndex}.iconCtaWrapper`}
50
44
  key={`footer-1-links-${index}-${subIndex}`}
51
45
  data-levo_group_item
52
46
  >
53
- <Icon
54
- elementKey={`links.${index}.links.${subIndex}.icon`}
55
- />
47
+ <Icon elementKey={`links.${index}.links.${subIndex}.icon`} />
56
48
  <Typography
57
49
  elementKey={`links.${index}.links.${subIndex}.cta`}
58
50
  key={`footer-1-links-${index}-${subIndex}`}
@@ -69,15 +61,9 @@ const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({
69
61
  <Box elementKey="footerBottomRightArea_levoGroup" data-levo_group>
70
62
  {(content?.footerBottomRightArea ?? [])?.map((_, index) => (
71
63
  <React.Fragment key={`footer-1-right-area-${index}`}>
72
- <Typography
73
- data-levo_group_item
74
- elementKey={`footerBottomRightArea.${index}.cta`}
75
- />
64
+ <Typography data-levo_group_item elementKey={`footerBottomRightArea.${index}.cta`} />
76
65
  {index < (content?.footerBottomRightArea?.length ?? 0) - 1 && (
77
- <Box
78
- elementKey={`footerBottomRightArea.${index}.separator`}
79
- data-levo_group_item
80
- />
66
+ <Box elementKey={`footerBottomRightArea.${index}.separator`} data-levo_group_item />
81
67
  )}
82
68
  </React.Fragment>
83
69
  ))}