@levo-so/blocks 0.1.60 → 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 (230) hide show
  1. package/package.json +13 -14
  2. package/src/blocks/about-us/about-us-1.schema.ts +15 -30
  3. package/src/blocks/about-us/about-us-1.tsx +2 -4
  4. package/src/blocks/about-us/about-us-2.schema.ts +24 -48
  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 +10 -21
  8. package/src/blocks/blogs/blog-listing-2.schema.ts +17 -34
  9. package/src/blocks/blogs/blog-listing-2.tsx +4 -12
  10. package/src/blocks/blogs/blog-listing-3.schema.ts +32 -64
  11. package/src/blocks/blogs/blog-listing-3.tsx +4 -12
  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 +95 -6
  15. package/src/blocks/calendar/calendar-1.tsx +33 -29
  16. package/src/blocks/cards/cards-10.schema.ts +62 -124
  17. package/src/blocks/cards/cards-10.tsx +9 -14
  18. package/src/blocks/cards/cards-11.schema.ts +69 -138
  19. package/src/blocks/cards/cards-11.tsx +5 -11
  20. package/src/blocks/cards/cards-12.schema.ts +7 -14
  21. package/src/blocks/cards/cards-12.tsx +4 -10
  22. package/src/blocks/cards/cards-13.schema.ts +40 -80
  23. package/src/blocks/cards/cards-13.tsx +4 -6
  24. package/src/blocks/cards/cards-14.schema.ts +7 -14
  25. package/src/blocks/cards/cards-14.tsx +5 -11
  26. package/src/blocks/cards/cards-15.schema.ts +7 -14
  27. package/src/blocks/cards/cards-15.tsx +2 -4
  28. package/src/blocks/cards/cards-2.schema.ts +7 -14
  29. package/src/blocks/cards/cards-2.tsx +2 -15
  30. package/src/blocks/cards/cards-3.schema.ts +7 -14
  31. package/src/blocks/cards/cards-3.tsx +7 -13
  32. package/src/blocks/cards/cards-4.schema.ts +13 -26
  33. package/src/blocks/cards/cards-4.tsx +9 -15
  34. package/src/blocks/cards/cards-5.schema.ts +17 -34
  35. package/src/blocks/cards/cards-5.tsx +1 -9
  36. package/src/blocks/cards/cards-6.schema.ts +52 -104
  37. package/src/blocks/cards/cards-6.tsx +12 -20
  38. package/src/blocks/cards/cards-7.schema.ts +48 -96
  39. package/src/blocks/cards/cards-7.tsx +8 -27
  40. package/src/blocks/cards/cards-8.schema.ts +9 -20
  41. package/src/blocks/cards/cards-8.tsx +5 -11
  42. package/src/blocks/cards/cards-9.schema.ts +41 -82
  43. package/src/blocks/cards/cards-9.tsx +14 -22
  44. package/src/blocks/carousel/carousel-1.schema.ts +64 -128
  45. package/src/blocks/carousel/carousel-1.tsx +6 -8
  46. package/src/blocks/carousel/carousel-2.schema.ts +26 -52
  47. package/src/blocks/carousel/carousel-2.tsx +11 -23
  48. package/src/blocks/community/community-1.schema.ts +78 -32
  49. package/src/blocks/community/community-1.tsx +417 -550
  50. package/src/blocks/community/community-post-1.schema.ts +21 -30
  51. package/src/blocks/community/community-post-1.tsx +334 -84
  52. package/src/blocks/contact-us/contact-us-1.schema.ts +8 -16
  53. package/src/blocks/contact-us/contact-us-1.tsx +2 -12
  54. package/src/blocks/contact-us/contact-us-2.tsx +20 -31
  55. package/src/blocks/content/content-1.schema.ts +21 -42
  56. package/src/blocks/content/content-1.tsx +10 -17
  57. package/src/blocks/content/content-2.schema.ts +29 -58
  58. package/src/blocks/content/content-2.tsx +4 -4
  59. package/src/blocks/content/content-3.tsx +13 -29
  60. package/src/blocks/content/content-4.schema.ts +23 -46
  61. package/src/blocks/content/content-4.tsx +8 -17
  62. package/src/blocks/content/content-5.schema.ts +29 -24
  63. package/src/blocks/content/content-5.tsx +13 -27
  64. package/src/blocks/content/content-6.schema.ts +46 -94
  65. package/src/blocks/content/content-6.tsx +14 -31
  66. package/src/blocks/content/content-7.schema.ts +35 -72
  67. package/src/blocks/content/content-7.tsx +15 -31
  68. package/src/blocks/content/content-8.schema.ts +1 -6
  69. package/src/blocks/content/content-8.tsx +3 -3
  70. package/src/blocks/content/content-9.tsx +26 -41
  71. package/src/blocks/cta/cta-1.schema.ts +10 -20
  72. package/src/blocks/cta/cta-2.schema.ts +14 -28
  73. package/src/blocks/cta/cta-2.tsx +2 -6
  74. package/src/blocks/cta/cta-3.schema.ts +24 -50
  75. package/src/blocks/cta/cta-3.tsx +2 -6
  76. package/src/blocks/embed/embed-1.tsx +1 -9
  77. package/src/blocks/event/ClientOnly.tsx +1 -4
  78. package/src/blocks/event/event-details.schema.ts +16 -32
  79. package/src/blocks/event/event-details.tsx +8 -23
  80. package/src/blocks/event/event-listing-2.schema.ts +19 -38
  81. package/src/blocks/event/event-listing-2.tsx +12 -23
  82. package/src/blocks/event/event-listing-3.schema.ts +10 -20
  83. package/src/blocks/event/event-listing-3.tsx +9 -15
  84. package/src/blocks/event/event-listing-4.schema.ts +40 -80
  85. package/src/blocks/event/event-listing-4.tsx +5 -13
  86. package/src/blocks/event/event-listing.schema.ts +12 -24
  87. package/src/blocks/event/event-listing.tsx +9 -15
  88. package/src/blocks/faq/faq-1.schema.ts +8 -16
  89. package/src/blocks/faq/faq-1.tsx +19 -30
  90. package/src/blocks/faq/faq-2.schema.ts +8 -16
  91. package/src/blocks/faq/faq-2.tsx +11 -10
  92. package/src/blocks/faq/faq-3.schema.ts +9 -18
  93. package/src/blocks/faq/faq-3.tsx +11 -19
  94. package/src/blocks/features/features-1/features-1.tsx +2 -4
  95. package/src/blocks/features/features-1/variants/default.ts +4 -8
  96. package/src/blocks/features/features-1/variants/index.ts +1 -1
  97. package/src/blocks/features/features-2.schema.ts +32 -64
  98. package/src/blocks/features/features-2.tsx +8 -10
  99. package/src/blocks/features/features-3.schema.ts +32 -64
  100. package/src/blocks/features/features-3.tsx +7 -16
  101. package/src/blocks/features/features-4.schema.ts +16 -32
  102. package/src/blocks/features/features-4.tsx +3 -7
  103. package/src/blocks/features/features-5.schema.ts +1 -2
  104. package/src/blocks/features/features-5.tsx +6 -17
  105. package/src/blocks/features/features-6.schema.ts +32 -64
  106. package/src/blocks/features/features-6.tsx +16 -36
  107. package/src/blocks/filter-listing/filter-listing-1.tsx +12 -36
  108. package/src/blocks/floating-buttons/floating-button-1.schema.ts +5 -10
  109. package/src/blocks/floating-buttons/floating-button-1.tsx +3 -9
  110. package/src/blocks/footer/footer-1.schema.ts +8 -16
  111. package/src/blocks/footer/footer-1.tsx +15 -30
  112. package/src/blocks/footer/footer-2.schema.ts +8 -16
  113. package/src/blocks/footer/footer-2.tsx +17 -28
  114. package/src/blocks/footer/footer-3.schema.ts +1 -2
  115. package/src/blocks/footer/footer-3.tsx +9 -25
  116. package/src/blocks/footer/footer-4.schema.ts +8 -16
  117. package/src/blocks/footer/footer-4.tsx +35 -54
  118. package/src/blocks/footer/footer-5.schema.ts +10 -24
  119. package/src/blocks/footer/footer-5.tsx +14 -29
  120. package/src/blocks/footer/footer-6.schema.ts +10 -25
  121. package/src/blocks/footer/footer-6.tsx +29 -44
  122. package/src/blocks/form/form-1.schema.ts +144 -0
  123. package/src/blocks/form/form-1.tsx +33 -0
  124. package/src/blocks/hero/hero-1.schema.ts +45 -90
  125. package/src/blocks/hero/hero-1.tsx +4 -4
  126. package/src/blocks/hero/hero-10.schema.ts +1 -2
  127. package/src/blocks/hero/hero-10.tsx +4 -4
  128. package/src/blocks/hero/hero-11.schema.ts +18 -14
  129. package/src/blocks/hero/hero-11.tsx +4 -9
  130. package/src/blocks/hero/hero-12.schema.ts +18 -36
  131. package/src/blocks/hero/hero-12.tsx +3 -6
  132. package/src/blocks/hero/hero-13.schema.ts +8 -16
  133. package/src/blocks/hero/hero-13.tsx +1 -1
  134. package/src/blocks/hero/hero-2.schema.ts +3 -6
  135. package/src/blocks/hero/hero-2.tsx +3 -21
  136. package/src/blocks/hero/hero-3.schema.ts +28 -56
  137. package/src/blocks/hero/hero-3.tsx +6 -15
  138. package/src/blocks/hero/hero-4.schema.ts +22 -44
  139. package/src/blocks/hero/hero-4.tsx +16 -27
  140. package/src/blocks/hero/hero-5.schema.ts +21 -42
  141. package/src/blocks/hero/hero-5.tsx +15 -18
  142. package/src/blocks/hero/hero-6.schema.ts +35 -70
  143. package/src/blocks/hero/hero-6.tsx +6 -6
  144. package/src/blocks/hero/hero-7.schema.ts +24 -48
  145. package/src/blocks/hero/hero-7.tsx +2 -3
  146. package/src/blocks/hero/hero-8.schema.ts +24 -50
  147. package/src/blocks/hero/hero-8.tsx +5 -19
  148. package/src/blocks/hero/hero-9.schema.ts +8 -16
  149. package/src/blocks/hero/hero-9.tsx +3 -3
  150. package/src/blocks/index.ts +8 -11
  151. package/src/blocks/jobs/jobs-1.schema.ts +990 -0
  152. package/src/blocks/jobs/jobs-1.tsx +145 -0
  153. package/src/blocks/logos/logos-1.schema.ts +53 -113
  154. package/src/blocks/logos/logos-1.tsx +7 -7
  155. package/src/blocks/navbar/navbar-1.schema.ts +15 -28
  156. package/src/blocks/navbar/navbar-1.tsx +24 -60
  157. package/src/blocks/navbar/navbar-2.schema.ts +14 -28
  158. package/src/blocks/navbar/navbar-2.tsx +26 -56
  159. package/src/blocks/navbar/navbar-3.schema.ts +11 -22
  160. package/src/blocks/navbar/navbar-3.tsx +33 -82
  161. package/src/blocks/navbar/navbar-4.schema.ts +14343 -0
  162. package/src/blocks/navbar/navbar-4.tsx +546 -0
  163. package/src/blocks/polling/polling-1.schema.ts +1 -2
  164. package/src/blocks/polling/polling-1.tsx +24 -39
  165. package/src/blocks/pricing/pricing-1.schema.ts +13 -26
  166. package/src/blocks/pricing/pricing-1.tsx +20 -44
  167. package/src/blocks/products/products-listing-1.schema.ts +32 -64
  168. package/src/blocks/products/products-listing-1.tsx +6 -12
  169. package/src/blocks/products/products-listing-2.schema.ts +26 -54
  170. package/src/blocks/products/products-listing-2.tsx +8 -17
  171. package/src/blocks/products/products-listing-3.schema.ts +25 -52
  172. package/src/blocks/products/products-listing-3.tsx +87 -93
  173. package/src/blocks/profile/profile-1.schema.ts +7 -14
  174. package/src/blocks/profile/profile-1.tsx +2 -8
  175. package/src/blocks/profile/profile-2.schema.ts +9 -18
  176. package/src/blocks/profile/profile-2.tsx +4 -6
  177. package/src/blocks/profile/profile-3.schema.ts +21 -42
  178. package/src/blocks/profile/profile-3.tsx +18 -40
  179. package/src/blocks/{blogs/blog-post-2.schema.ts → profile/profile-4.schema.ts} +75 -97
  180. package/src/blocks/{blogs/blog-post-2.tsx → profile/profile-4.tsx} +32 -61
  181. package/src/blocks/{blogs/blog-post-3.schema.ts → profile/profile-5.schema.ts} +6 -6
  182. package/src/blocks/{blogs/blog-post-3.tsx → profile/profile-5.tsx} +6 -11
  183. package/src/blocks/services/service-1.schema.ts +20 -40
  184. package/src/blocks/services/service-1.tsx +45 -71
  185. package/src/blocks/services/service-2.schema.ts +8 -16
  186. package/src/blocks/services/service-2.tsx +4 -6
  187. package/src/blocks/services/service-3.schema.ts +12 -24
  188. package/src/blocks/services/service-3.tsx +4 -6
  189. package/src/blocks/stats/stats-1.tsx +3 -14
  190. package/src/blocks/stats/stats-2.tsx +3 -14
  191. package/src/blocks/stats/variants/index.ts +1 -1
  192. package/src/blocks/tabs/tab-1.schema.ts +4 -8
  193. package/src/blocks/tabs/tab-1.tsx +47 -64
  194. package/src/blocks/tabs/tab-2.schema.ts +13 -26
  195. package/src/blocks/tabs/tab-2.tsx +14 -15
  196. package/src/blocks/team/team-1.schema.ts +28 -56
  197. package/src/blocks/team/team-1.tsx +7 -21
  198. package/src/blocks/team/team-2.schema.ts +104 -208
  199. package/src/blocks/team/team-2.tsx +15 -33
  200. package/src/blocks/team/team-3.schema.ts +24 -48
  201. package/src/blocks/team/team-3.tsx +8 -14
  202. package/src/blocks/team/team-4.schema.ts +25 -50
  203. package/src/blocks/team/team-4.tsx +15 -24
  204. package/src/blocks/team/team-5.schema.ts +14 -28
  205. package/src/blocks/team/team-5.tsx +1 -1
  206. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.tsx +3 -5
  207. package/src/blocks/testimonial/testimonial-1.schema.ts +1 -2
  208. package/src/blocks/testimonial/testimonial-1.tsx +10 -19
  209. package/src/blocks/testimonial/testimonial-2.schema.ts +16 -32
  210. package/src/blocks/testimonial/testimonial-2.tsx +17 -36
  211. package/src/blocks/testimonial/testimonial-3.schema.ts +8 -16
  212. package/src/blocks/testimonial/testimonial-3.tsx +13 -26
  213. package/src/blocks/testimonial/testimonial-4.schema.ts +94 -188
  214. package/src/blocks/testimonial/testimonial-4.tsx +12 -33
  215. package/src/blocks/testimonial/testimonial-5/variants/default.ts +24 -48
  216. package/src/blocks/testimonial/testimonial-5/variants/index.ts +1 -1
  217. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithLogo.ts +4 -8
  218. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithRatings.ts +24 -48
  219. package/src/blocks/testimonial/testimonial-5.schema.ts +2 -6
  220. package/src/blocks/testimonial/testimonial-5.tsx +15 -25
  221. package/src/blocks/testimonial/testimonial-6.schema.ts +26 -52
  222. package/src/blocks/testimonial/testimonial-6.tsx +9 -25
  223. package/src/blocks/testimonial/testimonial-7.tsx +15 -26
  224. package/src/blocks/timeline/timeline-1.schema.ts +34 -68
  225. package/src/blocks/timeline/timeline-1.tsx +2 -6
  226. package/src/blocks/users/edit-profile.tsx +10 -22
  227. package/src/constants/index.ts +3 -6
  228. package/src/index.ts +1 -1
  229. package/src/schemas/blocks.ts +14 -8
  230. package/src/schemas/categories.ts +14 -2
@@ -1,20 +1,11 @@
1
1
  import type { ILevoBlockBaseProps } from "@levo-so/studio";
2
- import {
3
- Box,
4
- Button,
5
- Container,
6
- Form,
7
- Heading,
8
- Icon,
9
- Section,
10
- Typography,
11
- } from "@levo-so/studio";
2
+ import { Box, Button, Container, Form, Heading, Icon, Section, Typography } from "@levo-so/studio";
12
3
  import dayjs from "dayjs";
13
4
  import type React from "react";
14
- import type { IBlogPost2Content } from "./blog-post-2.schema";
15
- const BlogPost2: React.FC<ILevoBlockBaseProps<IBlogPost2Content>> = ({
16
- content,
17
- }) => (
5
+
6
+ import type { IProfile4Content } from "./profile-4.schema";
7
+
8
+ const Profile4: React.FC<ILevoBlockBaseProps<IProfile4Content>> = ({ content }) => (
18
9
  <Section elementKey="layout">
19
10
  <Container elementKey="container">
20
11
  <Box elementKey="main-content">
@@ -22,22 +13,13 @@ const BlogPost2: React.FC<ILevoBlockBaseProps<IBlogPost2Content>> = ({
22
13
  <Box elementKey="sidebar">
23
14
  {/* Three Cards */}
24
15
  <Box elementKey="sidebar-cards_levoGroup" data-levo_group>
25
- {(content?.["sidebar-cards"] ?? []).map(
26
- (_: unknown, index: number) => (
27
- <Box
28
- key={index}
29
- data-levo_group_item
30
- elementKey={`sidebar-cards.${index}.card`}
31
- >
32
- <Heading elementKey={`sidebar-cards.${index}.heading`} />
33
- {/* Repeatable Titles and Descriptions */}
34
- <Box
35
- elementKey={`sidebar-cards.${index}.content_levoGroup`}
36
- data-levo_group
37
- >
38
- {(
39
- content?.["sidebar-cards"]?.[index]?.["content"] ?? []
40
- ).map((_: unknown, contentIndex: number) => (
16
+ {(content?.["sidebar-cards"] ?? []).map((_: unknown, index: number) => (
17
+ <Box key={index} data-levo_group_item elementKey={`sidebar-cards.${index}.card`}>
18
+ <Heading elementKey={`sidebar-cards.${index}.heading`} />
19
+ {/* Repeatable Titles and Descriptions */}
20
+ <Box elementKey={`sidebar-cards.${index}.content_levoGroup`} data-levo_group>
21
+ {(content?.["sidebar-cards"]?.[index]?.["content"] ?? []).map(
22
+ (_: unknown, contentIndex: number) => (
41
23
  <Box
42
24
  key={contentIndex}
43
25
  data-levo_group_item
@@ -50,26 +32,20 @@ const BlogPost2: React.FC<ILevoBlockBaseProps<IBlogPost2Content>> = ({
50
32
  elementKey={`sidebar-cards.${index}.content.${contentIndex}.description`}
51
33
  />
52
34
  </Box>
53
- ))}
54
- </Box>
55
- <Button elementKey={`sidebar-cards.${index}.button`} />
35
+ ),
36
+ )}
56
37
  </Box>
57
- ),
58
- )}
38
+ <Button elementKey={`sidebar-cards.${index}.button`} />
39
+ </Box>
40
+ ))}
59
41
  </Box>
60
42
  {/* Social Media Icons */}
61
43
  <Box elementKey="social-section">
62
44
  <Typography elementKey="social-title" />
63
45
  <Box elementKey="social-icons_levoGroup" data-levo_group>
64
- {(content?.["social-icons"] ?? []).map(
65
- (_: unknown, index: number) => (
66
- <Icon
67
- key={index}
68
- data-levo_group_item
69
- elementKey={`social-icons.${index}.icon`}
70
- />
71
- ),
72
- )}
46
+ {(content?.["social-icons"] ?? []).map((_: unknown, index: number) => (
47
+ <Icon key={index} data-levo_group_item elementKey={`social-icons.${index}.icon`} />
48
+ ))}
73
49
  </Box>
74
50
  </Box>
75
51
  </Box>
@@ -78,28 +54,23 @@ const BlogPost2: React.FC<ILevoBlockBaseProps<IBlogPost2Content>> = ({
78
54
  {/* Top Content Icons */}
79
55
  <Box elementKey="content-meta">
80
56
  <Box elementKey="content-icons_levoGroup" data-levo_group>
81
- {(content?.["content-icons"] ?? []).map(
82
- (_: unknown, index: number) => (
83
- <Box
84
- key={index}
85
- data-levo_group_item
86
- elementKey={`content-icons.${index}.icon-wrapper`}
87
- >
88
- <Icon elementKey={`content-icons.${index}.icon`} />
89
- <Typography
90
- elementKey={`content-icons.${index}.description`}
91
- />
92
- </Box>
93
- ),
94
- )}
57
+ {(content?.["content-icons"] ?? []).map((_: unknown, index: number) => (
58
+ <Box
59
+ key={index}
60
+ data-levo_group_item
61
+ elementKey={`content-icons.${index}.icon-wrapper`}
62
+ >
63
+ <Icon elementKey={`content-icons.${index}.icon`} />
64
+ <Typography elementKey={`content-icons.${index}.description`} />
65
+ </Box>
66
+ ))}
95
67
  </Box>
96
68
  {/* Calendar and Time (fixed icons) */}
97
69
  <Box elementKey="meta-info">
98
70
  <Box elementKey="date-wrapper">
99
71
  <Icon elementKey="calendar-icon" />
100
72
  <Typography elementKey="publish-date">
101
- {content?.["publish-date"] &&
102
- dayjs(content?.["publish-date"]).isValid()
73
+ {content?.["publish-date"] && dayjs(content?.["publish-date"]).isValid()
103
74
  ? dayjs(content?.["publish-date"]).format("DD MMM, YYYY")
104
75
  : " "}
105
76
  </Typography>
@@ -121,4 +92,4 @@ const BlogPost2: React.FC<ILevoBlockBaseProps<IBlogPost2Content>> = ({
121
92
  </Container>
122
93
  </Section>
123
94
  );
124
- export default BlogPost2;
95
+ export default Profile4;
@@ -24,15 +24,15 @@ const DEFAULT_CONTENT = {
24
24
  "Our team of expert developers and designers work collaboratively to deliver innovative solutions that drive business growth. We combine cutting-edge technology with industry best practices to create digital experiences that engage and inspire users.",
25
25
  };
26
26
 
27
- export type IBlogPost3Content = typeof DEFAULT_CONTENT;
27
+ export type IProfile5Content = typeof DEFAULT_CONTENT;
28
28
 
29
- export const BlogPost3: IBlock = {
30
- category_id: "blogs",
31
- title: "Blog Post 3",
32
- key: "blog-post-3",
29
+ export const Profile5: IBlock = {
30
+ category_id: "profile",
31
+ title: "Profile 5",
32
+ key: "profile-5",
33
33
  version: "v1",
34
34
  prompt_description:
35
- "A blog post layout with left-right container featuring image, social icons, and experience content",
35
+ "A profile layout with left-right container featuring image, social icons, and experience content",
36
36
  content_schema: [
37
37
  {
38
38
  key: "layout",
@@ -9,16 +9,14 @@ import {
9
9
  Typography,
10
10
  } from "@levo-so/studio";
11
11
 
12
- import type { IBlogPost3Content } from "./blog-post-3.schema";
12
+ import type { IProfile5Content } from "./profile-5.schema";
13
13
 
14
- const BlogPost3: React.FC<ILevoBlockBaseProps<IBlogPost3Content>> = ({
15
- content,
16
- }) => (
14
+ const Profile5: React.FC<ILevoBlockBaseProps<IProfile5Content>> = ({ content }) => (
17
15
  <Section elementKey="layout">
18
16
  <Container elementKey="container">
19
17
  <Box elementKey="main_container">
20
18
  <Box elementKey="left_container">
21
- <Image elementKey="image" alt="Blog post image" />
19
+ <Image elementKey="image" alt="Profile image" />
22
20
  <Box elementKey="social_icons">
23
21
  <Icon elementKey="social_icon_1" />
24
22
  <Icon elementKey="social_icon_2" />
@@ -28,7 +26,7 @@ const BlogPost3: React.FC<ILevoBlockBaseProps<IBlogPost3Content>> = ({
28
26
  {(content?.ctas || [])?.map((_, index) => (
29
27
  <Button
30
28
  elementKey={`ctas.${index}.button`}
31
- key={`blog-post-3-cta-${index}`}
29
+ key={`profile-5-cta-${index}`}
32
30
  data-levo_group_item
33
31
  />
34
32
  ))}
@@ -47,10 +45,7 @@ const BlogPost3: React.FC<ILevoBlockBaseProps<IBlogPost3Content>> = ({
47
45
  </Box>
48
46
  </Box>
49
47
  <Box elementKey="content_container">
50
- <Typography
51
- elementKey="content_description"
52
- className="LevoProseMirror"
53
- />
48
+ <Typography elementKey="content_description" className="LevoProseMirror" />
54
49
  </Box>
55
50
  </Box>
56
51
  </Box>
@@ -58,4 +53,4 @@ const BlogPost3: React.FC<ILevoBlockBaseProps<IBlogPost3Content>> = ({
58
53
  </Section>
59
54
  );
60
55
 
61
- export default BlogPost3;
56
+ export default Profile5;
@@ -6,20 +6,13 @@ const MEDIA = {
6
6
  kind: "image",
7
7
  location: "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI.png",
8
8
  srcset: {
9
- "1080w":
10
- "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-1080w.webp",
11
- "1200w":
12
- "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-1200w.webp",
13
- "1920w":
14
- "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-1920w.webp",
15
- "320w":
16
- "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-320w.webp",
17
- "640w":
18
- "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-640w.webp",
19
- "750w":
20
- "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-750w.webp",
21
- "828w":
22
- "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-828w.webp",
9
+ "1080w": "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-1080w.webp",
10
+ "1200w": "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-1200w.webp",
11
+ "1920w": "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-1920w.webp",
12
+ "320w": "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-320w.webp",
13
+ "640w": "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-640w.webp",
14
+ "750w": "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-750w.webp",
15
+ "828w": "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-828w.webp",
23
16
  path: "https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-320w.webp 320w, https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-640w.webp 640w, https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-1080w.webp 1080w, https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/services-1-PzNoMN1prgDI-1920w.webp 1920w",
24
17
  },
25
18
  mimetype: "image/png",
@@ -117,20 +110,17 @@ const DEFAULT_CONTENT = {
117
110
  {
118
111
  "feature-item": null,
119
112
  title: "Expert Team",
120
- description:
121
- "Seasoned professionals with deep industry knowledge and proven track records.",
113
+ description: "Seasoned professionals with deep industry knowledge and proven track records.",
122
114
  },
123
115
  {
124
116
  "feature-item": null,
125
117
  title: "Custom Solutions",
126
- description:
127
- "Tailored approaches designed specifically for your unique business challenges.",
118
+ description: "Tailored approaches designed specifically for your unique business challenges.",
128
119
  },
129
120
  {
130
121
  "feature-item": null,
131
122
  title: "24/7 Support",
132
- description:
133
- "Round-the-clock assistance and dedicated account management.",
123
+ description: "Round-the-clock assistance and dedicated account management.",
134
124
  },
135
125
  ],
136
126
  "right-container": null,
@@ -222,8 +212,7 @@ export const Service1: IBlock = {
222
212
  label: "Main Wrapper",
223
213
  field_interface: "BoxWidget",
224
214
  hint: {
225
- prompt_description:
226
- "Main wrapper for the two-column layout. No content needed.",
215
+ prompt_description: "Main wrapper for the two-column layout. No content needed.",
227
216
  },
228
217
  },
229
218
 
@@ -233,8 +222,7 @@ export const Service1: IBlock = {
233
222
  label: "Left Container",
234
223
  field_interface: "BoxWidget",
235
224
  hint: {
236
- prompt_description:
237
- "Left side container with main content box. No content needed.",
225
+ prompt_description: "Left side container with main content box. No content needed.",
238
226
  },
239
227
  },
240
228
  {
@@ -310,8 +298,7 @@ export const Service1: IBlock = {
310
298
  },
311
299
  ],
312
300
  hint: {
313
- prompt_description:
314
- "Collapsible FAQ items about services and solutions.",
301
+ prompt_description: "Collapsible FAQ items about services and solutions.",
315
302
  min_items: 3,
316
303
  max_items: 6,
317
304
  },
@@ -323,8 +310,7 @@ export const Service1: IBlock = {
323
310
  label: "Features Section",
324
311
  field_interface: "BoxWidget",
325
312
  hint: {
326
- prompt_description:
327
- "Section containing key service features. No content needed.",
313
+ prompt_description: "Section containing key service features. No content needed.",
328
314
  },
329
315
  },
330
316
  {
@@ -332,8 +318,7 @@ export const Service1: IBlock = {
332
318
  label: "Features Title",
333
319
  field_interface: "HeadingWidget",
334
320
  hint: {
335
- prompt_description:
336
- "Title for the features section. Should highlight key benefits.",
321
+ prompt_description: "Title for the features section. Should highlight key benefits.",
337
322
  min_characters: 8,
338
323
  max_characters: 30,
339
324
  },
@@ -349,8 +334,7 @@ export const Service1: IBlock = {
349
334
  label: "Title",
350
335
  field_interface: "TypographyWidget",
351
336
  hint: {
352
- prompt_description:
353
- "Feature title highlighting a specific service benefit.",
337
+ prompt_description: "Feature title highlighting a specific service benefit.",
354
338
  min_characters: 8,
355
339
  max_characters: 30,
356
340
  },
@@ -391,8 +375,7 @@ export const Service1: IBlock = {
391
375
  label: "Title",
392
376
  field_interface: "HeadingWidget",
393
377
  hint: {
394
- prompt_description:
395
- "Service card title. Should be descriptive and professional.",
378
+ prompt_description: "Service card title. Should be descriptive and professional.",
396
379
  min_characters: 10,
397
380
  max_characters: 40,
398
381
  },
@@ -414,8 +397,7 @@ export const Service1: IBlock = {
414
397
  label: "Description",
415
398
  field_interface: "TypographyWidget",
416
399
  hint: {
417
- prompt_description:
418
- "Service description explaining the benefits and approach.",
400
+ prompt_description: "Service description explaining the benefits and approach.",
419
401
  min_characters: 40,
420
402
  max_characters: 150,
421
403
  },
@@ -455,8 +437,7 @@ export const Service1: IBlock = {
455
437
  label: "Icon",
456
438
  field_interface: "IconWidget",
457
439
  hint: {
458
- prompt_description:
459
- "Icon representing the service feature or benefit.",
440
+ prompt_description: "Icon representing the service feature or benefit.",
460
441
  orientation: "square",
461
442
  size: "icon",
462
443
  usecase: "icon",
@@ -472,8 +453,7 @@ export const Service1: IBlock = {
472
453
  label: "Title",
473
454
  field_interface: "TypographyWidget",
474
455
  hint: {
475
- prompt_description:
476
- "Feature title highlighting a specific service advantage.",
456
+ prompt_description: "Feature title highlighting a specific service advantage.",
477
457
  min_characters: 8,
478
458
  max_characters: 30,
479
459
  },
@@ -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
- <Heading
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,56 +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
- <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
- )}
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
+ ))}
107
85
  </Box>
108
86
 
109
- {content?.["service-cards"]?.[cardIndex]?.[
110
- "service-features"
111
- ] && (
87
+ {content?.["service-cards"]?.[cardIndex]?.["service-features"] && (
112
88
  <Box
113
89
  elementKey={`service-cards.${cardIndex}.service-features_levoGroup`}
114
90
  data-levo_group
115
91
  >
116
- {(
117
- content?.["service-cards"]?.[cardIndex]?.[
118
- "service-features"
119
- ] ?? []
120
- ).map((_, featureIndex) => (
121
- <Box
122
- key={`feature-${featureIndex}`}
123
- data-levo_group_item
124
- elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.feature-container`}
125
- >
126
- <Icon
127
- elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.icon`}
128
- />
92
+ {(content?.["service-cards"]?.[cardIndex]?.["service-features"] ?? []).map(
93
+ (_, featureIndex) => (
129
94
  <Box
130
- 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`}
131
98
  >
132
- <Typography
133
- elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.title`}
134
- />
135
- <Typography
136
- elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.description`}
99
+ <Icon
100
+ elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.icon`}
137
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>
138
112
  </Box>
139
- </Box>
140
- ))}
113
+ ),
114
+ )}
141
115
  </Box>
142
116
  )}
143
117
  </Box>
@@ -6,20 +6,13 @@ const MEDIA = {
6
6
  kind: "image",
7
7
  location: "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw.png",
8
8
  srcset: {
9
- "1080w":
10
- "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1080w.webp",
11
- "1200w":
12
- "https://static.levocdn.com/WLZ1TXTD/services-2-n3qJfSsRwAGw-1200w.webp",
13
- "1920w":
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",
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",
23
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",
24
17
  },
25
18
  mimetype: "image/png",
@@ -242,8 +235,7 @@ export const Service2: IBlock = {
242
235
  label: "Search Button",
243
236
  field_interface: "ButtonWidget",
244
237
  hint: {
245
- prompt_description:
246
- "Button that initiates the search based on entered zipcode.",
238
+ prompt_description: "Button that initiates the search based on entered zipcode.",
247
239
  min_characters: 8,
248
240
  max_characters: 20,
249
241
  },
@@ -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 (