@levo-so/blocks 0.1.58 → 0.1.60

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 (191) hide show
  1. package/package.json +16 -15
  2. package/src/blocks/about-us/about-us-1.schema.ts +75 -58
  3. package/src/blocks/about-us/about-us-2.schema.ts +186 -39
  4. package/src/blocks/blogs/blog-listing-1.tsx +17 -15
  5. package/src/blocks/blogs/blog-listing-2.tsx +17 -15
  6. package/src/blocks/blogs/blog-listing-3.tsx +17 -15
  7. package/src/blocks/calendar/calendar-1.schema.ts +263 -181
  8. package/src/blocks/calendar/calendar-1.tsx +42 -11
  9. package/src/blocks/cards/cards-10.schema.ts +322 -313
  10. package/src/blocks/cards/cards-10.tsx +9 -1
  11. package/src/blocks/cards/cards-11.schema.ts +139 -248
  12. package/src/blocks/cards/cards-12.schema.ts +117 -196
  13. package/src/blocks/cards/cards-13.schema.ts +107 -56
  14. package/src/blocks/cards/cards-14.schema.ts +58 -154
  15. package/src/blocks/cards/cards-15.schema.ts +54 -31
  16. package/src/blocks/cards/cards-15.tsx +13 -2
  17. package/src/blocks/cards/cards-2.schema.ts +83 -88
  18. package/src/blocks/cards/cards-2.tsx +10 -2
  19. package/src/blocks/cards/cards-3.schema.ts +75 -70
  20. package/src/blocks/cards/cards-4.schema.ts +149 -91
  21. package/src/blocks/cards/cards-4.tsx +13 -2
  22. package/src/blocks/cards/cards-5.schema.ts +91 -68
  23. package/src/blocks/cards/cards-5.tsx +9 -1
  24. package/src/blocks/cards/cards-6.schema.ts +794 -972
  25. package/src/blocks/cards/cards-6.tsx +18 -2
  26. package/src/blocks/cards/cards-7.schema.ts +802 -2250
  27. package/src/blocks/cards/cards-7.tsx +14 -1
  28. package/src/blocks/cards/cards-8.schema.ts +166 -347
  29. package/src/blocks/cards/cards-8.tsx +14 -1
  30. package/src/blocks/cards/cards-9.schema.ts +300 -305
  31. package/src/blocks/cards/cards-9.tsx +27 -3
  32. package/src/blocks/carousel/carousel-1.schema.ts +479 -46
  33. package/src/blocks/carousel/carousel-1.tsx +2 -0
  34. package/src/blocks/carousel/carousel-2.schema.ts +170 -118
  35. package/src/blocks/carousel/carousel-2.tsx +10 -2
  36. package/src/blocks/community/community-1.schema.ts +566 -0
  37. package/src/blocks/community/community-1.tsx +690 -0
  38. package/src/blocks/community/community-post-1.schema.ts +417 -0
  39. package/src/blocks/community/community-post-1.tsx +155 -0
  40. package/src/blocks/contact-us/contact-us-1.schema.ts +33 -43
  41. package/src/blocks/contact-us/contact-us-2.schema.ts +39 -17
  42. package/src/blocks/contact-us/contact-us-2.tsx +1 -1
  43. package/src/blocks/content/content-1.schema.ts +184 -234
  44. package/src/blocks/content/content-1.tsx +48 -38
  45. package/src/blocks/content/content-2.schema.ts +143 -32
  46. package/src/blocks/content/content-2.tsx +15 -3
  47. package/src/blocks/content/content-3.schema.ts +215 -205
  48. package/src/blocks/content/content-3.tsx +13 -1
  49. package/src/blocks/content/content-4.schema.ts +124 -85
  50. package/src/blocks/content/content-4.tsx +2 -1
  51. package/src/blocks/content/content-5.schema.ts +296 -278
  52. package/src/blocks/content/content-5.tsx +23 -2
  53. package/src/blocks/content/content-6.schema.ts +474 -244
  54. package/src/blocks/content/content-6.tsx +23 -1
  55. package/src/blocks/content/content-7.schema.ts +173 -133
  56. package/src/blocks/content/content-7.tsx +27 -3
  57. package/src/blocks/content/content-8.schema.ts +27 -17
  58. package/src/blocks/content/content-9.schema.ts +64 -2208
  59. package/src/blocks/content/content-9.tsx +6 -3
  60. package/src/blocks/cta/cta-1.schema.ts +13 -108
  61. package/src/blocks/cta/cta-2.schema.ts +60 -69
  62. package/src/blocks/cta/cta-3.schema.ts +97 -66
  63. package/src/blocks/embed/embed-1.schema.ts +30 -52
  64. package/src/blocks/event/event-details.schema.ts +7 -0
  65. package/src/blocks/event/event-details.tsx +1 -0
  66. package/src/blocks/event/event-listing-2.tsx +17 -15
  67. package/src/blocks/event/event-listing-3.tsx +17 -15
  68. package/src/blocks/event/event-listing-4.tsx +17 -15
  69. package/src/blocks/event/event-listing.tsx +17 -15
  70. package/src/blocks/faq/faq-1.schema.ts +158 -112
  71. package/src/blocks/faq/faq-1.tsx +12 -3
  72. package/src/blocks/faq/faq-2.schema.ts +137 -74
  73. package/src/blocks/faq/faq-2.tsx +10 -1
  74. package/src/blocks/faq/faq-3.schema.ts +185 -105
  75. package/src/blocks/faq/faq-3.tsx +19 -3
  76. package/src/blocks/features/features-1/features-1.schema.ts +11 -3
  77. package/src/blocks/features/features-1/features-1.tsx +10 -1
  78. package/src/blocks/features/features-1/variants/default.ts +172 -54
  79. package/src/blocks/features/features-1/variants/stylized-cards-v1.ts +392 -54
  80. package/src/blocks/features/features-1/variants/stylized-cards-v2.ts +119 -103
  81. package/src/blocks/features/features-1/variants/stylized-cards-v3.ts +16 -199
  82. package/src/blocks/features/features-2.schema.ts +178 -45
  83. package/src/blocks/features/features-2.tsx +10 -2
  84. package/src/blocks/features/features-3.schema.ts +284 -65
  85. package/src/blocks/features/features-3.tsx +22 -3
  86. package/src/blocks/features/features-4.schema.ts +380 -185
  87. package/src/blocks/features/features-4.tsx +9 -1
  88. package/src/blocks/features/features-5.schema.ts +194 -198
  89. package/src/blocks/features/features-5.tsx +12 -1
  90. package/src/blocks/features/features-6.schema.ts +240 -193
  91. package/src/blocks/features/features-6.tsx +16 -2
  92. package/src/blocks/floating-buttons/floating-button-1.schema.ts +105 -0
  93. package/src/blocks/floating-buttons/floating-button-1.tsx +20 -0
  94. package/src/blocks/footer/footer-1.schema.ts +118 -48
  95. package/src/blocks/footer/footer-1.tsx +2 -1
  96. package/src/blocks/footer/footer-2.schema.ts +235 -31
  97. package/src/blocks/footer/footer-2.tsx +2 -1
  98. package/src/blocks/footer/footer-3.schema.ts +334 -57
  99. package/src/blocks/footer/footer-3.tsx +2 -1
  100. package/src/blocks/footer/footer-4.schema.ts +147 -76
  101. package/src/blocks/footer/footer-4.tsx +2 -1
  102. package/src/blocks/footer/footer-5.schema.ts +144 -52
  103. package/src/blocks/footer/footer-5.tsx +2 -1
  104. package/src/blocks/footer/footer-6.schema.ts +68 -140
  105. package/src/blocks/footer/footer-6.tsx +2 -1
  106. package/src/blocks/hero/hero-1.schema.ts +184 -87
  107. package/src/blocks/hero/hero-10.schema.ts +8 -29
  108. package/src/blocks/hero/hero-11.schema.ts +192 -89
  109. package/src/blocks/hero/hero-11.tsx +1 -1
  110. package/src/blocks/hero/hero-12.schema.ts +107 -170
  111. package/src/blocks/hero/hero-12.tsx +1 -1
  112. package/src/blocks/hero/hero-13.schema.ts +42 -28
  113. package/src/blocks/hero/hero-2.schema.ts +33 -58
  114. package/src/blocks/hero/hero-3.schema.ts +42 -34
  115. package/src/blocks/hero/hero-4.schema.ts +265 -70
  116. package/src/blocks/hero/hero-4.tsx +19 -2
  117. package/src/blocks/hero/hero-5.schema.ts +122 -44
  118. package/src/blocks/hero/hero-5.tsx +14 -2
  119. package/src/blocks/hero/hero-6.schema.ts +159 -255
  120. package/src/blocks/hero/hero-7.schema.ts +105 -34
  121. package/src/blocks/hero/hero-7.tsx +4 -1
  122. package/src/blocks/hero/hero-8.schema.ts +363 -133
  123. package/src/blocks/hero/hero-8.tsx +27 -3
  124. package/src/blocks/hero/hero-9.schema.ts +116 -83
  125. package/src/blocks/hero/hero-9.tsx +9 -1
  126. package/src/blocks/index.ts +7 -0
  127. package/src/blocks/logos/logos-1.schema.ts +424 -30
  128. package/src/blocks/polling/polling-1.schema.ts +1 -19
  129. package/src/blocks/pricing/pricing-1.schema.ts +296 -266
  130. package/src/blocks/pricing/pricing-1.tsx +16 -2
  131. package/src/blocks/products/products-listing-1.schema.ts +144 -33
  132. package/src/blocks/products/products-listing-1.tsx +9 -1
  133. package/src/blocks/products/products-listing-2.schema.ts +199 -213
  134. package/src/blocks/products/products-listing-2.tsx +25 -3
  135. package/src/blocks/products/products-listing-3.schema.ts +439 -154
  136. package/src/blocks/products/products-listing-3.tsx +43 -8
  137. package/src/blocks/profile/profile-1.schema.ts +67 -49
  138. package/src/blocks/profile/profile-1.tsx +3 -2
  139. package/src/blocks/profile/profile-2.schema.ts +73 -85
  140. package/src/blocks/profile/profile-2.tsx +2 -1
  141. package/src/blocks/profile/profile-3.schema.ts +162 -529
  142. package/src/blocks/profile/profile-3.tsx +2 -2
  143. package/src/blocks/services/service-1.schema.ts +204 -804
  144. package/src/blocks/services/service-1.tsx +15 -2
  145. package/src/blocks/services/service-2.schema.ts +95 -75
  146. package/src/blocks/services/service-2.tsx +9 -1
  147. package/src/blocks/services/service-3.schema.ts +73 -73
  148. package/src/blocks/services/service-3.tsx +40 -39
  149. package/src/blocks/stats/stats-1.schema.ts +225 -21
  150. package/src/blocks/stats/stats-1.tsx +4 -0
  151. package/src/blocks/stats/stats-2.schema.ts +13 -5
  152. package/src/blocks/stats/stats-2.tsx +9 -1
  153. package/src/blocks/stats/variants/default.ts +59 -41
  154. package/src/blocks/stats/variants/hero.ts +64 -31
  155. package/src/blocks/tabs/tab-1.schema.ts +105 -407
  156. package/src/blocks/tabs/tab-1.tsx +15 -4
  157. package/src/blocks/tabs/tab-2.schema.ts +208 -278
  158. package/src/blocks/tabs/tab-2.tsx +14 -2
  159. package/src/blocks/team/team-1.schema.ts +621 -76
  160. package/src/blocks/team/team-1.tsx +9 -1
  161. package/src/blocks/team/team-2.schema.ts +693 -1421
  162. package/src/blocks/team/team-2.tsx +4 -1
  163. package/src/blocks/team/team-3.schema.ts +147 -74
  164. package/src/blocks/team/team-3.tsx +1 -0
  165. package/src/blocks/team/team-4.schema.ts +216 -57
  166. package/src/blocks/team/team-4.tsx +10 -2
  167. package/src/blocks/team/team-5.schema.ts +67 -42
  168. package/src/blocks/team/team-5.tsx +12 -3
  169. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.schema.ts +9 -26
  170. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.tsx +1 -1
  171. package/src/blocks/testimonial/testimonial-1.schema.ts +712 -63
  172. package/src/blocks/testimonial/testimonial-1.tsx +2 -4
  173. package/src/blocks/testimonial/testimonial-2.schema.ts +1332 -354
  174. package/src/blocks/testimonial/testimonial-2.tsx +4 -1
  175. package/src/blocks/testimonial/testimonial-3.schema.ts +215 -71
  176. package/src/blocks/testimonial/testimonial-3.tsx +5 -2
  177. package/src/blocks/testimonial/testimonial-4.schema.ts +331 -933
  178. package/src/blocks/testimonial/testimonial-4.tsx +4 -1
  179. package/src/blocks/testimonial/testimonial-5/variants/default.ts +179 -171
  180. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithLogo.ts +205 -501
  181. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithRatings.ts +190 -316
  182. package/src/blocks/testimonial/testimonial-6.schema.ts +204 -267
  183. package/src/blocks/testimonial/testimonial-7.schema.ts +74 -45
  184. package/src/blocks/testimonial/testimonial-7.tsx +2 -2
  185. package/src/blocks/timeline/timeline-1.schema.ts +196 -149
  186. package/src/blocks/timeline/timeline-1.tsx +4 -1
  187. package/src/blocks/users/edit-profile.schema.ts +56 -44
  188. package/src/blocks/users/edit-profile.tsx +13 -6
  189. package/src/constants/index.ts +19 -0
  190. package/src/schemas/blocks.ts +6 -0
  191. package/src/schemas/categories.ts +12 -0
@@ -45,7 +45,7 @@ const Service1: React.FC<ILevoBlockBaseProps<IService1Content>> = ({
45
45
  <Box
46
46
  elementKey={`services-accordion.${index}.iconQuestionWrapper`}
47
47
  >
48
- <Typography
48
+ <Heading
49
49
  elementKey={`services-accordion.${index}.question`}
50
50
  />
51
51
  </Box>
@@ -91,7 +91,20 @@ const Service1: React.FC<ILevoBlockBaseProps<IService1Content>> = ({
91
91
  <Typography
92
92
  elementKey={`service-cards.${cardIndex}.description`}
93
93
  />
94
- <Button elementKey={`service-cards.${cardIndex}.cta`} />
94
+ <Box
95
+ elementKey={`service-cards.${cardIndex}.ctas_levoGroup`}
96
+ data-levo_group
97
+ >
98
+ {(content?.["service-cards"]?.[cardIndex]?.ctas ?? []).map(
99
+ (_, ctaIndex) => (
100
+ <Button
101
+ key={`service-cards.${cardIndex}.ctas.${ctaIndex}.cta`}
102
+ elementKey={`service-cards.${cardIndex}.ctas.${ctaIndex}.cta`}
103
+ data-levo_group_item
104
+ />
105
+ )
106
+ )}
107
+ </Box>
95
108
 
96
109
  {content?.["service-cards"]?.[cardIndex]?.[
97
110
  "service-features"
@@ -1,23 +1,30 @@
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
9
  "1080w":
9
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp",
10
+ "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1080w.webp",
10
11
  "1200w":
11
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1200w.webp",
12
+ "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1200w.webp",
12
13
  "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",
14
+ "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1920w.webp",
15
+ "320w":
16
+ "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-320w.webp",
17
+ "640w":
18
+ "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-640w.webp",
19
+ "750w":
20
+ "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-750w.webp",
21
+ "828w":
22
+ "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-828w.webp",
23
+ 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
24
  },
25
+ mimetype: "image/png",
20
26
  };
27
+
21
28
  const DEFAULT_CONTENT = {
22
29
  layout: null,
23
30
  container: null,
@@ -28,7 +35,15 @@ const DEFAULT_CONTENT = {
28
35
  title: "Expert Business Consulting Solutions",
29
36
  description:
30
37
  "Strategic consulting services that drive growth and innovation for your business. Our expert team delivers tailored solutions for sustainable success.",
31
- cta: "Get Started",
38
+ ctas_levoGroup: null,
39
+ ctas: [
40
+ {
41
+ cta: "Get Started",
42
+ },
43
+ {
44
+ cta: "Learn More",
45
+ },
46
+ ],
32
47
  stats_container: null,
33
48
  stats: [
34
49
  {
@@ -50,7 +65,7 @@ const DEFAULT_CONTENT = {
50
65
  search_input_wrapper: null,
51
66
  search_button: "Search",
52
67
  right_container: null,
53
- hero_image: DUMMY_IMAGE,
68
+ hero_image: MEDIA,
54
69
  };
55
70
 
56
71
  export type IService2Content = typeof DEFAULT_CONTENT;
@@ -136,15 +151,23 @@ export const Service2: IBlock = {
136
151
  },
137
152
  },
138
153
  {
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
- },
154
+ key: "ctas",
155
+ label: "CTA Buttons Group",
156
+ field_interface: "BoxWidget",
157
+ kind: "group",
158
+ fields: [
159
+ {
160
+ key: "cta",
161
+ label: "Call to Action",
162
+ field_interface: "ButtonWidget",
163
+ hint: {
164
+ prompt_description:
165
+ "Primary action button that encourages user engagement. Should be clear and action-oriented.",
166
+ min_characters: 8,
167
+ max_characters: 20,
168
+ },
169
+ },
170
+ ],
148
171
  },
149
172
  {
150
173
  key: "stats_container",
@@ -266,30 +289,8 @@ export const Service2: IBlock = {
266
289
  title: "Default",
267
290
  key: "default",
268
291
  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
- },
292
+ layout: {},
293
+ container: {},
293
294
  main_wrapper: {
294
295
  display: "flex",
295
296
  "align-items": "center",
@@ -321,23 +322,24 @@ export const Service2: IBlock = {
321
322
  "padding-right": "2xs",
322
323
  "padding-top": "4xs",
323
324
  "padding-bottom": "4xs",
324
- color: "white",
325
+ color: "brandForeground",
325
326
  },
326
- title: {
327
- color: "text-1",
328
- },
329
- description: {
330
- color: "text-2",
331
- },
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",
327
+ title: {},
328
+ description: {},
329
+ ctas_levoGroup: {
330
+ display: "flex",
331
+ "flex-direction": "row",
332
+ "column-gap": "md",
333
+ "row-gap": "md",
334
+ "flex-wrap": "wrap",
335
+ "align-items": "center",
339
336
  "align-self": "flex-start",
340
337
  },
338
+ ctas: Array(2)
339
+ .fill(0)
340
+ .map(() => ({
341
+ cta: {},
342
+ })),
341
343
  stats_container: {
342
344
  display: "flex",
343
345
  "flex-direction": "column",
@@ -372,12 +374,8 @@ export const Service2: IBlock = {
372
374
  "flex-direction": "column",
373
375
  "row-gap": "xs",
374
376
  },
375
- value: {
376
- color: "text-1",
377
- },
378
- label: {
379
- color: "text-2",
380
- },
377
+ value: {},
378
+ label: {},
381
379
  },
382
380
  {
383
381
  stat_wrapper: {
@@ -385,9 +383,7 @@ export const Service2: IBlock = {
385
383
  "flex-direction": "column",
386
384
  "row-gap": "xs",
387
385
  },
388
- value: {
389
- color: "text-1",
390
- },
386
+ value: {},
391
387
  label: {
392
388
  color: "text-2",
393
389
  },
@@ -398,9 +394,7 @@ export const Service2: IBlock = {
398
394
  "flex-direction": "column",
399
395
  "row-gap": "xs",
400
396
  },
401
- value: {
402
- color: "text-1",
403
- },
397
+ value: {},
404
398
  label: {
405
399
  color: "text-2",
406
400
  },
@@ -411,10 +405,10 @@ export const Service2: IBlock = {
411
405
  config: {
412
406
  title: {
413
407
  heading: {
414
- level: 1,
408
+ level: "2",
415
409
  },
416
410
  selectedVariants: {
417
- Heading_Level: "H1",
411
+ Heading_Level: "H2",
418
412
  },
419
413
  },
420
414
  cta: {
@@ -427,6 +421,32 @@ export const Service2: IBlock = {
427
421
  Button_Variants: "Secondary",
428
422
  },
429
423
  },
424
+ stats: [
425
+ {
426
+ value: {
427
+ heading: {
428
+ level: "4",
429
+ },
430
+ selectedVariants: {
431
+ Heading_Level: "H3",
432
+ },
433
+ },
434
+ },
435
+ {
436
+ value: {
437
+ selectedVariants: {
438
+ Heading_Level: "H3",
439
+ },
440
+ },
441
+ },
442
+ {
443
+ value: {
444
+ selectedVariants: {
445
+ Heading_Level: "H3",
446
+ },
447
+ },
448
+ },
449
+ ],
430
450
  },
431
451
  },
432
452
  ],
@@ -29,7 +29,15 @@ const Service2: React.FC<ILevoBlockBaseProps<IService2Content>> = ({
29
29
  <Typography elementKey="label" />
30
30
  <Heading elementKey="title" />
31
31
  <Typography elementKey="description" />
32
- <Button elementKey="cta" />
32
+ <Box elementKey="ctas_levoGroup" data-levo_group>
33
+ {(content?.ctas ?? []).map((_: any, index: number) => (
34
+ <Button
35
+ key={`ctas.${index}.cta`}
36
+ elementKey={`ctas.${index}.cta`}
37
+ data-levo_group_item
38
+ />
39
+ ))}
40
+ </Box>
33
41
  </Box>
34
42
  <Box elementKey="stats_container">
35
43
  <Box elementKey="stats_levoGroup" data-levo_group>
@@ -1,23 +1,28 @@
1
1
  import type { IBlock } from "@levo-so/studio";
2
2
 
3
- const DEFAULT_IMAGE = {
4
- id: "7141014160938075687",
5
- location: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH.png",
3
+ const MEDIA = {
4
+ id: "oilirpqbBMhi",
5
+ filename: "services-3.png",
6
6
  kind: "image",
7
- mimetype: "image/png",
7
+ location: "https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY.png",
8
8
  srcset: {
9
9
  "1080w":
10
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp",
10
+ "https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-1080w.webp",
11
11
  "1200w":
12
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1200w.webp",
12
+ "https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-1200w.webp",
13
13
  "1920w":
14
- "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1920w.webp",
15
- "320w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp",
16
- "640w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp",
17
- "750w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-750w.webp",
18
- "828w": "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-828w.webp",
19
- 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",
14
+ "https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-1920w.webp",
15
+ "320w":
16
+ "https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-320w.webp",
17
+ "640w":
18
+ "https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-640w.webp",
19
+ "750w":
20
+ "https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-750w.webp",
21
+ "828w":
22
+ "https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-828w.webp",
23
+ path: "https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-1920w.webp 1920w, https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-320w.webp 320w, https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-640w.webp 640w, https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/services-3-KQ59QXeCBwMY-1080w.webp 1080w",
20
24
  },
25
+ mimetype: "image/png",
21
26
  };
22
27
 
23
28
  const DUMMY_ICON = {
@@ -36,7 +41,7 @@ const DEFAULT_CONTENT = {
36
41
  container: null,
37
42
  main_wrapper: null,
38
43
  left_container: null,
39
- profile_image: DEFAULT_IMAGE,
44
+ profile_image: MEDIA,
40
45
  right_container: null,
41
46
  content_wrapper: null,
42
47
  title: "Professional Service Package",
@@ -208,10 +213,11 @@ export const Service3: IBlock = {
208
213
  "Wrapper for the main content elements (title, stats, pricing) with proper vertical spacing.",
209
214
  },
210
215
  },
216
+
211
217
  {
212
218
  key: "title",
213
219
  label: "Service Title",
214
- field_interface: "HeadingWidget",
220
+ field_interface: "TypographyWidget",
215
221
  hint: {
216
222
  prompt_description:
217
223
  "Main service headline that communicates the primary offering. Should be professional and clear.",
@@ -219,17 +225,7 @@ export const Service3: IBlock = {
219
225
  max_characters: 60,
220
226
  },
221
227
  },
222
- {
223
- key: "statswrapper",
224
- label: "Stats Wrapper",
225
- field_interface: "BoxWidget",
226
- hint: {
227
- prompt_description:
228
- "Wrapper for the service features or benefits with icons that build credibility and showcase capabilities.",
229
- min_items: 2,
230
- max_items: 4,
231
- },
232
- },
228
+
233
229
  {
234
230
  key: "stats",
235
231
  label: "Service Features",
@@ -359,7 +355,7 @@ export const Service3: IBlock = {
359
355
  {
360
356
  key: "actual_price",
361
357
  label: "Actual Price",
362
- field_interface: "TypographyWidget",
358
+ field_interface: "HeadingWidget",
363
359
  hint: {
364
360
  prompt_description:
365
361
  "Current promotional price that customers will pay (e.g., '$299').",
@@ -435,29 +431,9 @@ export const Service3: IBlock = {
435
431
  key: "default",
436
432
  styles: {
437
433
  layout: {
438
- "padding-top": "5xl",
439
- "padding-bottom": "5xl",
440
- "padding-left": "xl",
441
- "padding-right": "xl",
442
- tablet: {
443
- "padding-top": "4xl",
444
- "padding-bottom": "4xl",
445
- "padding-left": "lg",
446
- "padding-right": "lg",
447
- },
448
- mobile: {
449
- "padding-top": "3xl",
450
- "padding-bottom": "3xl",
451
- "padding-left": "base",
452
- "padding-right": "base",
453
- },
454
434
  "background-color": "oklch(0.9413 0.0138 46.228)",
455
435
  },
456
- container: {
457
- "max-width": "1280px",
458
- "margin-left": "auto",
459
- "margin-right": "auto",
460
- },
436
+ container: {},
461
437
  main_wrapper: {
462
438
  display: "flex",
463
439
  "align-items": "center",
@@ -488,14 +464,10 @@ export const Service3: IBlock = {
488
464
  content_wrapper: {
489
465
  display: "flex",
490
466
  "flex-direction": "column",
491
- "row-gap": "lg",
467
+ "row-gap": "sm",
492
468
  },
493
469
  title: {
494
470
  "margin-bottom": "lg",
495
- "font-size": "4xl",
496
- tablet: {
497
- "font-size": "2xl",
498
- },
499
471
  },
500
472
  stats_levoGroup: {
501
473
  display: "grid",
@@ -517,24 +489,20 @@ export const Service3: IBlock = {
517
489
  "column-gap": "base",
518
490
  },
519
491
  actual_price: {
520
- "font-size": "xl",
521
- "font-weight": "700",
522
- color: "text-1",
492
+ "font-weight": 700,
523
493
  },
524
494
  discount_price: {
525
- "font-size": "sm",
526
495
  color: "text-3",
527
496
  "text-decoration": "line-through",
528
497
  },
529
498
  off_percent: {
530
- "font-size": "sm",
531
- "font-weight": "600",
532
- color: "success",
499
+ "font-weight": 600,
533
500
  },
534
501
  search_input_wrapper: {
535
502
  display: "flex",
536
503
  "flex-direction": "column",
537
504
  "row-gap": "base",
505
+ "margin-top": "base",
538
506
  },
539
507
  stats: [
540
508
  {
@@ -543,9 +511,7 @@ export const Service3: IBlock = {
543
511
  "align-items": "center",
544
512
  "column-gap": "sm",
545
513
  },
546
- label: {
547
- color: "text-2",
548
- },
514
+ label: {},
549
515
  },
550
516
  {
551
517
  stat_wrapper: {
@@ -553,9 +519,7 @@ export const Service3: IBlock = {
553
519
  "align-items": "center",
554
520
  "column-gap": "sm",
555
521
  },
556
- label: {
557
- color: "text-2",
558
- },
522
+ label: {},
559
523
  },
560
524
  {
561
525
  stat_wrapper: {
@@ -563,9 +527,7 @@ export const Service3: IBlock = {
563
527
  "align-items": "center",
564
528
  "column-gap": "sm",
565
529
  },
566
- label: {
567
- color: "text-2",
568
- },
530
+ label: {},
569
531
  },
570
532
  {
571
533
  stat_wrapper: {
@@ -573,9 +535,7 @@ export const Service3: IBlock = {
573
535
  "align-items": "center",
574
536
  "column-gap": "sm",
575
537
  },
576
- label: {
577
- color: "text-2",
578
- },
538
+ label: {},
579
539
  },
580
540
  ],
581
541
  breadcrumbs: [
@@ -614,10 +574,10 @@ export const Service3: IBlock = {
614
574
  config: {
615
575
  title: {
616
576
  heading: {
617
- level: 2,
577
+ level: "3",
618
578
  },
619
579
  selectedVariants: {
620
- Heading_Level: "H2",
580
+ Heading_Level: "H3",
621
581
  },
622
582
  },
623
583
  search_button: {
@@ -625,6 +585,46 @@ export const Service3: IBlock = {
625
585
  Button_Variants: "Primary",
626
586
  },
627
587
  },
588
+ stats: [
589
+ {
590
+ label: {
591
+ selectedVariants: {},
592
+ },
593
+ },
594
+ {
595
+ label: {
596
+ selectedVariants: {},
597
+ },
598
+ },
599
+ {
600
+ label: {
601
+ selectedVariants: {},
602
+ },
603
+ },
604
+ {
605
+ label: {
606
+ selectedVariants: {},
607
+ },
608
+ },
609
+ ],
610
+ actual_price: {
611
+ heading: {
612
+ level: "4",
613
+ },
614
+ selectedVariants: {
615
+ Heading_Level: "H5",
616
+ },
617
+ },
618
+ off_percent: {
619
+ selectedVariants: {
620
+ Typography_Variants: "Large",
621
+ },
622
+ },
623
+ discount_price: {
624
+ selectedVariants: {
625
+ Typography_Variants: "Small",
626
+ },
627
+ },
628
628
  },
629
629
  },
630
630
  ],
@@ -41,47 +41,48 @@ const Service3: React.FC<ILevoBlockBaseProps<IService3Content>> = ({
41
41
  </Box>
42
42
  <Box elementKey="right_container">
43
43
  <Box elementKey="content_wrapper">
44
- <Heading elementKey="title" />
45
- <Box elementKey="statswrapper_levoGroup" data-levo_group>
46
- <Box elementKey="stats_levoGroup" data-levo_group>
47
- {(content?.stats ?? []).map((_, index: number) => (
48
- <Box
49
- key={`stat-${index}`}
50
- data-levo_group_item
51
- elementKey={`stats.${index}.stat_wrapper`}
52
- >
53
- <Icon elementKey={`stats.${index}.icon`} />
54
- <Typography elementKey={`stats.${index}.label`} />
55
- </Box>
56
- ))}
57
- </Box>
58
- <Box elementKey="stats_2_levoGroup" data-levo_group>
59
- {(content?.stats_2 ?? []).map((_: any, index: number) => (
60
- <Box
61
- key={`stat-${index}`}
62
- data-levo_group_item
63
- elementKey={`stats_2.${index}.stat_wrapper`}
64
- >
65
- <Icon elementKey={`stats_2.${index}.icon`} />
66
- <Typography elementKey={`stats_2.${index}.label`} />
67
- </Box>
68
- ))}
69
- </Box>
70
- <Box elementKey="stats_3_levoGroup" data-levo_group>
71
- {(content?.stats_3 ?? []).map((_: any, index: number) => (
72
- <Box
73
- key={`stat-${index}`}
74
- data-levo_group_item
75
- elementKey={`stats_3.${index}.stat_wrapper`}
76
- >
77
- <Icon elementKey={`stats_3.${index}.icon`} />
78
- <Typography elementKey={`stats_3.${index}.label`} />
79
- </Box>
80
- ))}
81
- </Box>
44
+ <Typography elementKey="title" />
45
+
46
+ <Box elementKey="stats_levoGroup" data-levo_group>
47
+ {(content?.stats ?? []).map((_, index: number) => (
48
+ <Box
49
+ key={`stat-${index}`}
50
+ data-levo_group_item
51
+ elementKey={`stats.${index}.stat_wrapper`}
52
+ >
53
+ <Icon elementKey={`stats.${index}.icon`} />
54
+ <Typography elementKey={`stats.${index}.label`} />
55
+ </Box>
56
+ ))}
57
+ </Box>
58
+
59
+ <Box elementKey="stats_2_levoGroup" data-levo_group>
60
+ {(content?.stats_2 ?? []).map((_: any, index: number) => (
61
+ <Box
62
+ key={`stat-${index}`}
63
+ data-levo_group_item
64
+ elementKey={`stats_2.${index}.stat_wrapper`}
65
+ >
66
+ <Icon elementKey={`stats_2.${index}.icon`} />
67
+ <Typography elementKey={`stats_2.${index}.label`} />
68
+ </Box>
69
+ ))}
82
70
  </Box>
71
+ <Box elementKey="stats_3_levoGroup" data-levo_group>
72
+ {(content?.stats_3 ?? []).map((_: any, index: number) => (
73
+ <Box
74
+ key={`stat-${index}`}
75
+ data-levo_group_item
76
+ elementKey={`stats_3.${index}.stat_wrapper`}
77
+ >
78
+ <Icon elementKey={`stats_3.${index}.icon`} />
79
+ <Typography elementKey={`stats_3.${index}.label`} />
80
+ </Box>
81
+ ))}
82
+ </Box>
83
+
83
84
  <Box elementKey="price_container">
84
- <Typography elementKey="actual_price" />
85
+ <Heading elementKey="actual_price" />
85
86
  <Typography elementKey="discount_price" />
86
87
  <Typography elementKey="off_percent" />
87
88
  </Box>