@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
@@ -1,24 +1,22 @@
1
1
  import {
2
- type ILevoBlockBaseProps,
2
+ AccordionContent,
3
+ AccordionItem,
4
+ AccordionRoot,
5
+ AccordionTrigger,
6
+ Box,
7
+ Button,
8
+ Container,
3
9
  Heading,
4
10
  Icon,
11
+ type ILevoBlockBaseProps,
5
12
  Image,
6
- Typography,
7
- Container,
8
13
  Section,
9
- Box,
10
- AccordionRoot,
11
- AccordionItem,
12
- AccordionTrigger,
13
- AccordionContent,
14
- Button,
14
+ Typography,
15
15
  } from "@levo-so/studio";
16
16
 
17
17
  import type { IService1Content } from "./service-1.schema";
18
18
 
19
- const Service1: React.FC<ILevoBlockBaseProps<IService1Content>> = ({
20
- content,
21
- }) => (
19
+ const Service1: React.FC<ILevoBlockBaseProps<IService1Content>> = ({ content }) => (
22
20
  <Section elementKey="layout">
23
21
  <Container elementKey="container">
24
22
  <Box elementKey="main-wrapper">
@@ -39,23 +37,13 @@ const Service1: React.FC<ILevoBlockBaseProps<IService1Content>> = ({
39
37
  elementKey={`services-accordion.${index}.wrapper`}
40
38
  data-levo_group_item
41
39
  >
42
- <AccordionTrigger
43
- elementKey={`services-accordion.${index}.trigger`}
44
- >
45
- <Box
46
- elementKey={`services-accordion.${index}.iconQuestionWrapper`}
47
- >
48
- <Typography
49
- elementKey={`services-accordion.${index}.question`}
50
- />
40
+ <AccordionTrigger elementKey={`services-accordion.${index}.trigger`}>
41
+ <Box elementKey={`services-accordion.${index}.iconQuestionWrapper`}>
42
+ <Heading elementKey={`services-accordion.${index}.question`} />
51
43
  </Box>
52
44
  </AccordionTrigger>
53
- <AccordionContent
54
- elementKey={`services-accordion.${index}.content`}
55
- >
56
- <Typography
57
- elementKey={`services-accordion.${index}.answer`}
58
- />
45
+ <AccordionContent elementKey={`services-accordion.${index}.content`}>
46
+ <Typography elementKey={`services-accordion.${index}.answer`} />
59
47
  </AccordionContent>
60
48
  </AccordionItem>
61
49
  ))}
@@ -66,10 +54,7 @@ const Service1: React.FC<ILevoBlockBaseProps<IService1Content>> = ({
66
54
  <Heading elementKey="features-title" />
67
55
  <Box elementKey="features-list_levoGroup" data-levo_group>
68
56
  {(content?.["features-list"] ?? []).map((_, index) => (
69
- <Typography
70
- key={index}
71
- elementKey={`features-list.${index}.title`}
72
- />
57
+ <Typography key={index} elementKey={`features-list.${index}.title`} />
73
58
  ))}
74
59
  </Box>
75
60
  </Box>
@@ -88,43 +73,45 @@ const Service1: React.FC<ILevoBlockBaseProps<IService1Content>> = ({
88
73
  elementKey={`service-cards.${cardIndex}.image`}
89
74
  alt={`Service ${cardIndex + 1} image`}
90
75
  />
91
- <Typography
92
- elementKey={`service-cards.${cardIndex}.description`}
93
- />
94
- <Button elementKey={`service-cards.${cardIndex}.cta`} />
76
+ <Typography elementKey={`service-cards.${cardIndex}.description`} />
77
+ <Box elementKey={`service-cards.${cardIndex}.ctas_levoGroup`} data-levo_group>
78
+ {(content?.["service-cards"]?.[cardIndex]?.ctas ?? []).map((_, ctaIndex) => (
79
+ <Button
80
+ key={`service-cards.${cardIndex}.ctas.${ctaIndex}.cta`}
81
+ elementKey={`service-cards.${cardIndex}.ctas.${ctaIndex}.cta`}
82
+ data-levo_group_item
83
+ />
84
+ ))}
85
+ </Box>
95
86
 
96
- {content?.["service-cards"]?.[cardIndex]?.[
97
- "service-features"
98
- ] && (
87
+ {content?.["service-cards"]?.[cardIndex]?.["service-features"] && (
99
88
  <Box
100
89
  elementKey={`service-cards.${cardIndex}.service-features_levoGroup`}
101
90
  data-levo_group
102
91
  >
103
- {(
104
- content?.["service-cards"]?.[cardIndex]?.[
105
- "service-features"
106
- ] ?? []
107
- ).map((_, featureIndex) => (
108
- <Box
109
- key={`feature-${featureIndex}`}
110
- data-levo_group_item
111
- elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.feature-container`}
112
- >
113
- <Icon
114
- elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.icon`}
115
- />
92
+ {(content?.["service-cards"]?.[cardIndex]?.["service-features"] ?? []).map(
93
+ (_, featureIndex) => (
116
94
  <Box
117
- elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.text-container`}
95
+ key={`feature-${featureIndex}`}
96
+ data-levo_group_item
97
+ elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.feature-container`}
118
98
  >
119
- <Typography
120
- elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.title`}
121
- />
122
- <Typography
123
- elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.description`}
99
+ <Icon
100
+ elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.icon`}
124
101
  />
102
+ <Box
103
+ elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.text-container`}
104
+ >
105
+ <Typography
106
+ elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.title`}
107
+ />
108
+ <Typography
109
+ elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.description`}
110
+ />
111
+ </Box>
125
112
  </Box>
126
- </Box>
127
- ))}
113
+ ),
114
+ )}
128
115
  </Box>
129
116
  )}
130
117
  </Box>
@@ -1,23 +1,23 @@
1
1
  import type { IBlock } from "@levo-so/studio";
2
- const DUMMY_IMAGE = {
3
- id: "7141014160938075687",
4
- location: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH.png",
2
+
3
+ const MEDIA = {
4
+ id: "pKkmltJTMHQl",
5
+ filename: "services-2.png",
5
6
  kind: "image",
6
- mimetype: "image/png",
7
+ location: "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw.png",
7
8
  srcset: {
8
- "1080w":
9
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp",
10
- "1200w":
11
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1200w.webp",
12
- "1920w":
13
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1920w.webp",
14
- "320w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp",
15
- "640w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp",
16
- "750w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-750w.webp",
17
- "828w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-828w.webp",
18
- 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",
9
+ "1080w": "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1080w.webp",
10
+ "1200w": "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1200w.webp",
11
+ "1920w": "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1920w.webp",
12
+ "320w": "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-320w.webp",
13
+ "640w": "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-640w.webp",
14
+ "750w": "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-750w.webp",
15
+ "828w": "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-828w.webp",
16
+ path: "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-640w.webp 640w, https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1080w.webp 1080w, https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1920w.webp 1920w, https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-320w.webp 320w",
19
17
  },
18
+ mimetype: "image/png",
20
19
  };
20
+
21
21
  const DEFAULT_CONTENT = {
22
22
  layout: null,
23
23
  container: null,
@@ -28,7 +28,15 @@ const DEFAULT_CONTENT = {
28
28
  title: "Expert Business Consulting Solutions",
29
29
  description:
30
30
  "Strategic consulting services that drive growth and innovation for your business. Our expert team delivers tailored solutions for sustainable success.",
31
- cta: "Get Started",
31
+ ctas_levoGroup: null,
32
+ ctas: [
33
+ {
34
+ cta: "Get Started",
35
+ },
36
+ {
37
+ cta: "Learn More",
38
+ },
39
+ ],
32
40
  stats_container: null,
33
41
  stats: [
34
42
  {
@@ -50,7 +58,7 @@ const DEFAULT_CONTENT = {
50
58
  search_input_wrapper: null,
51
59
  search_button: "Search",
52
60
  right_container: null,
53
- hero_image: DUMMY_IMAGE,
61
+ hero_image: MEDIA,
54
62
  };
55
63
 
56
64
  export type IService2Content = typeof DEFAULT_CONTENT;
@@ -136,15 +144,23 @@ export const Service2: IBlock = {
136
144
  },
137
145
  },
138
146
  {
139
- key: "cta",
140
- label: "Call to Action",
141
- field_interface: "ButtonWidget",
142
- hint: {
143
- prompt_description:
144
- "Primary action button that encourages user engagement. Should be clear and action-oriented.",
145
- min_characters: 8,
146
- max_characters: 20,
147
- },
147
+ key: "ctas",
148
+ label: "CTA Buttons Group",
149
+ field_interface: "BoxWidget",
150
+ kind: "group",
151
+ fields: [
152
+ {
153
+ key: "cta",
154
+ label: "Call to Action",
155
+ field_interface: "ButtonWidget",
156
+ hint: {
157
+ prompt_description:
158
+ "Primary action button that encourages user engagement. Should be clear and action-oriented.",
159
+ min_characters: 8,
160
+ max_characters: 20,
161
+ },
162
+ },
163
+ ],
148
164
  },
149
165
  {
150
166
  key: "stats_container",
@@ -219,8 +235,7 @@ export const Service2: IBlock = {
219
235
  label: "Search Button",
220
236
  field_interface: "ButtonWidget",
221
237
  hint: {
222
- prompt_description:
223
- "Button that initiates the search based on entered zipcode.",
238
+ prompt_description: "Button that initiates the search based on entered zipcode.",
224
239
  min_characters: 8,
225
240
  max_characters: 20,
226
241
  },
@@ -266,30 +281,8 @@ export const Service2: IBlock = {
266
281
  title: "Default",
267
282
  key: "default",
268
283
  styles: {
269
- layout: {
270
- "padding-top": "5xl",
271
- "padding-bottom": "5xl",
272
- "padding-left": "xl",
273
- "padding-right": "xl",
274
- "background-color": "oklch(0.9643 0.0169 61.9599)",
275
- tablet: {
276
- "padding-top": "4xl",
277
- "padding-bottom": "4xl",
278
- "padding-left": "lg",
279
- "padding-right": "lg",
280
- },
281
- mobile: {
282
- "padding-top": "3xl",
283
- "padding-bottom": "3xl",
284
- "padding-left": "base",
285
- "padding-right": "base",
286
- },
287
- },
288
- container: {
289
- "max-width": "1280px",
290
- "margin-left": "auto",
291
- "margin-right": "auto",
292
- },
284
+ layout: {},
285
+ container: {},
293
286
  main_wrapper: {
294
287
  display: "flex",
295
288
  "align-items": "center",
@@ -321,23 +314,24 @@ export const Service2: IBlock = {
321
314
  "padding-right": "2xs",
322
315
  "padding-top": "4xs",
323
316
  "padding-bottom": "4xs",
324
- color: "white",
325
- },
326
- title: {
327
- color: "text-1",
328
- },
329
- description: {
330
- color: "text-2",
317
+ color: "brandForeground",
331
318
  },
332
- cta: {
333
- "background-color": "oklch(0.3451 0.1175 164.4309)",
334
- color: "white",
335
- "padding-top": "sm",
336
- "padding-bottom": "sm",
337
- "padding-left": "lg",
338
- "padding-right": "lg",
319
+ title: {},
320
+ description: {},
321
+ ctas_levoGroup: {
322
+ display: "flex",
323
+ "flex-direction": "row",
324
+ "column-gap": "md",
325
+ "row-gap": "md",
326
+ "flex-wrap": "wrap",
327
+ "align-items": "center",
339
328
  "align-self": "flex-start",
340
329
  },
330
+ ctas: Array(2)
331
+ .fill(0)
332
+ .map(() => ({
333
+ cta: {},
334
+ })),
341
335
  stats_container: {
342
336
  display: "flex",
343
337
  "flex-direction": "column",
@@ -372,12 +366,8 @@ export const Service2: IBlock = {
372
366
  "flex-direction": "column",
373
367
  "row-gap": "xs",
374
368
  },
375
- value: {
376
- color: "text-1",
377
- },
378
- label: {
379
- color: "text-2",
380
- },
369
+ value: {},
370
+ label: {},
381
371
  },
382
372
  {
383
373
  stat_wrapper: {
@@ -385,9 +375,7 @@ export const Service2: IBlock = {
385
375
  "flex-direction": "column",
386
376
  "row-gap": "xs",
387
377
  },
388
- value: {
389
- color: "text-1",
390
- },
378
+ value: {},
391
379
  label: {
392
380
  color: "text-2",
393
381
  },
@@ -398,9 +386,7 @@ export const Service2: IBlock = {
398
386
  "flex-direction": "column",
399
387
  "row-gap": "xs",
400
388
  },
401
- value: {
402
- color: "text-1",
403
- },
389
+ value: {},
404
390
  label: {
405
391
  color: "text-2",
406
392
  },
@@ -411,10 +397,10 @@ export const Service2: IBlock = {
411
397
  config: {
412
398
  title: {
413
399
  heading: {
414
- level: 1,
400
+ level: "2",
415
401
  },
416
402
  selectedVariants: {
417
- Heading_Level: "H1",
403
+ Heading_Level: "H2",
418
404
  },
419
405
  },
420
406
  cta: {
@@ -427,6 +413,32 @@ export const Service2: IBlock = {
427
413
  Button_Variants: "Secondary",
428
414
  },
429
415
  },
416
+ stats: [
417
+ {
418
+ value: {
419
+ heading: {
420
+ level: "4",
421
+ },
422
+ selectedVariants: {
423
+ Heading_Level: "H3",
424
+ },
425
+ },
426
+ },
427
+ {
428
+ value: {
429
+ selectedVariants: {
430
+ Heading_Level: "H3",
431
+ },
432
+ },
433
+ },
434
+ {
435
+ value: {
436
+ selectedVariants: {
437
+ Heading_Level: "H3",
438
+ },
439
+ },
440
+ },
441
+ ],
430
442
  },
431
443
  },
432
444
  ],
@@ -4,20 +4,18 @@ import {
4
4
  Container,
5
5
  Heading,
6
6
  Icon,
7
+ type ILevoBlockBaseProps,
7
8
  Image,
8
9
  Section,
9
10
  Typography,
10
11
  useBlockContext,
11
- type ILevoBlockBaseProps,
12
12
  } from "@levo-so/studio";
13
- import React, { useState } from "react";
13
+ import type React from "react";
14
+ import { useState } from "react";
14
15
 
15
16
  import type { IService2Content } from "./service-2.schema";
16
17
 
17
- const Service2: React.FC<ILevoBlockBaseProps<IService2Content>> = ({
18
- content,
19
- config,
20
- }) => {
18
+ const Service2: React.FC<ILevoBlockBaseProps<IService2Content>> = ({ content, config }) => {
21
19
  const [zipcode, setZipcode] = useState("");
22
20
  const { isBuilder } = useBlockContext();
23
21
  return (
@@ -29,7 +27,15 @@ const Service2: React.FC<ILevoBlockBaseProps<IService2Content>> = ({
29
27
  <Typography elementKey="label" />
30
28
  <Heading elementKey="title" />
31
29
  <Typography elementKey="description" />
32
- <Button elementKey="cta" />
30
+ <Box elementKey="ctas_levoGroup" data-levo_group>
31
+ {(content?.ctas ?? []).map((_: any, index: number) => (
32
+ <Button
33
+ key={`ctas.${index}.cta`}
34
+ elementKey={`ctas.${index}.cta`}
35
+ data-levo_group_item
36
+ />
37
+ ))}
38
+ </Box>
33
39
  </Box>
34
40
  <Box elementKey="stats_container">
35
41
  <Box elementKey="stats_levoGroup" data-levo_group>