@levo-so/blocks 0.1.54 → 0.1.59

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 (117) hide show
  1. package/package.json +2 -2
  2. package/src/blocks/about-us/about-us-1.schema.ts +14 -0
  3. package/src/blocks/about-us/about-us-1.tsx +4 -2
  4. package/src/blocks/about-us/about-us-2.schema.ts +48 -0
  5. package/src/blocks/about-us/about-us-2.tsx +6 -0
  6. package/src/blocks/blogs/blog-listing-1.schema.ts +10 -0
  7. package/src/blocks/blogs/blog-listing-2.schema.ts +42 -162
  8. package/src/blocks/blogs/blog-listing-2.tsx +7 -0
  9. package/src/blocks/blogs/blog-listing-3.schema.ts +9 -0
  10. package/src/blocks/blogs/blog-post-1.schema.ts +7 -1
  11. package/src/blocks/blogs/blog-post-1.tsx +1 -1
  12. package/src/blocks/blogs/blog-post-2.schema.ts +464 -28
  13. package/src/blocks/blogs/blog-post-2.tsx +6 -13
  14. package/src/blocks/blogs/blog-post-3.schema.ts +42 -0
  15. package/src/blocks/blogs/blog-post-3.tsx +4 -1
  16. package/src/blocks/calendar/calendar-1.schema.ts +537 -0
  17. package/src/blocks/calendar/calendar-1.tsx +145 -0
  18. package/src/blocks/cards/cards-10.schema.ts +52 -4
  19. package/src/blocks/cards/cards-10.tsx +13 -1
  20. package/src/blocks/cards/cards-14.schema.ts +532 -0
  21. package/src/blocks/cards/cards-14.tsx +54 -0
  22. package/src/blocks/cards/cards-15.schema.ts +277 -0
  23. package/src/blocks/cards/cards-15.tsx +40 -0
  24. package/src/blocks/cards/cards-6.schema.ts +46 -0
  25. package/src/blocks/cards/cards-6.tsx +27 -1
  26. package/src/blocks/cards/cards-7.tsx +2 -0
  27. package/src/blocks/carousel/carousel-2.schema.ts +1128 -0
  28. package/src/blocks/carousel/carousel-2.tsx +159 -0
  29. package/src/blocks/content/content-5.schema.ts +112 -6
  30. package/src/blocks/content/content-5.tsx +19 -3
  31. package/src/blocks/content/content-6.schema.ts +16 -3
  32. package/src/blocks/content/content-6.tsx +1 -0
  33. package/src/blocks/content/content-8.schema.ts +125 -0
  34. package/src/blocks/content/content-8.tsx +27 -0
  35. package/src/blocks/content/content-9.schema.ts +2729 -0
  36. package/src/blocks/content/content-9.tsx +91 -0
  37. package/src/blocks/cta/cta-2.schema.ts +46 -4
  38. package/src/blocks/cta/cta-2.tsx +9 -1
  39. package/src/blocks/embed/embed-1.schema.ts +100 -0
  40. package/src/blocks/event/ClientOnly.tsx +27 -0
  41. package/src/blocks/event/event-details.tsx +10 -3
  42. package/src/blocks/event/event-listing-3.tsx +9 -2
  43. package/src/blocks/event/event-listing-4.tsx +11 -2
  44. package/src/blocks/event/event-listing.tsx +11 -4
  45. package/src/blocks/faq/faq-1.schema.ts +58 -1
  46. package/src/blocks/faq/faq-1.tsx +18 -1
  47. package/src/blocks/faq/faq-2.tsx +2 -1
  48. package/src/blocks/faq/faq-3.schema.ts +6 -1
  49. package/src/blocks/faq/faq-3.tsx +1 -0
  50. package/src/blocks/features/features-1/features-1.schema.ts +2 -0
  51. package/src/blocks/features/features-1/variants/index.ts +2 -0
  52. package/src/blocks/features/features-1/variants/stylized-cards-v3.ts +451 -0
  53. package/src/blocks/features/features-4.schema.ts +358 -20
  54. package/src/blocks/features/features-4.tsx +3 -1
  55. package/src/blocks/features/features-6.tsx +2 -0
  56. package/src/blocks/filter-listing/filter-listing-1.schema.ts +614 -0
  57. package/src/blocks/filter-listing/filter-listing-1.tsx +128 -0
  58. package/src/blocks/footer/footer-6.schema.ts +2 -2
  59. package/src/blocks/hero/hero-11.schema.ts +849 -0
  60. package/src/blocks/hero/hero-11.tsx +59 -0
  61. package/src/blocks/hero/hero-12.schema.ts +712 -0
  62. package/src/blocks/hero/hero-12.tsx +76 -0
  63. package/src/blocks/hero/hero-13.schema.ts +238 -0
  64. package/src/blocks/hero/hero-13.tsx +31 -0
  65. package/src/blocks/hero/hero-4.tsx +2 -0
  66. package/src/blocks/hero/hero-5.tsx +2 -0
  67. package/src/blocks/hero/hero-7.tsx +2 -1
  68. package/src/blocks/hero/hero-8.tsx +2 -0
  69. package/src/blocks/hero/hero-9.schema.ts +5 -0
  70. package/src/blocks/hero/hero-9.tsx +2 -0
  71. package/src/blocks/index.ts +27 -0
  72. package/src/blocks/navbar/navbar-1.schema.ts +6 -6
  73. package/src/blocks/navbar/navbar-1.tsx +6 -7
  74. package/src/blocks/navbar/navbar-2.schema.ts +9 -9
  75. package/src/blocks/navbar/navbar-2.tsx +7 -8
  76. package/src/blocks/navbar/navbar-3.schema.ts +9 -9
  77. package/src/blocks/navbar/navbar-3.tsx +139 -114
  78. package/src/blocks/polling/polling-1.schema.ts +134 -0
  79. package/src/blocks/polling/polling-1.tsx +466 -0
  80. package/src/blocks/products/products-listing-2.schema.ts +596 -0
  81. package/src/blocks/products/products-listing-2.tsx +56 -0
  82. package/src/blocks/products/products-listing-3.schema.ts +818 -0
  83. package/src/blocks/products/products-listing-3.tsx +125 -0
  84. package/src/blocks/profile/profile-2.schema.ts +505 -0
  85. package/src/blocks/profile/profile-2.tsx +64 -0
  86. package/src/blocks/profile/profile-3.schema.ts +867 -0
  87. package/src/blocks/profile/profile-3.tsx +98 -0
  88. package/src/blocks/services/service-1.schema.ts +1743 -0
  89. package/src/blocks/services/service-1.tsx +139 -0
  90. package/src/blocks/services/service-2.schema.ts +433 -0
  91. package/src/blocks/services/service-2.tsx +98 -0
  92. package/src/blocks/services/service-3.schema.ts +631 -0
  93. package/src/blocks/services/service-3.tsx +135 -0
  94. package/src/blocks/tabs/tab-1.schema.ts +831 -0
  95. package/src/blocks/tabs/tab-1.tsx +126 -0
  96. package/src/blocks/tabs/tab-2.schema.ts +767 -0
  97. package/src/blocks/tabs/tab-2.tsx +60 -0
  98. package/src/blocks/team/team-3.schema.ts +5 -1
  99. package/src/blocks/team/team-3.tsx +7 -0
  100. package/src/blocks/team/team-4.schema.ts +17 -13
  101. package/src/blocks/team/team-4.tsx +4 -1
  102. package/src/blocks/team/team-5.schema.ts +369 -0
  103. package/src/blocks/team/team-5.tsx +38 -0
  104. package/src/blocks/testimonial/testimonial-1.tsx +0 -1
  105. package/src/blocks/testimonial/testimonial-2.tsx +2 -1
  106. package/src/blocks/testimonial/testimonial-3.tsx +2 -0
  107. package/src/blocks/testimonial/testimonial-4.tsx +2 -1
  108. package/src/blocks/testimonial/testimonial-5.tsx +2 -0
  109. package/src/blocks/testimonial/testimonial-6.tsx +2 -1
  110. package/src/blocks/testimonial/testimonial-7.schema.ts +438 -0
  111. package/src/blocks/testimonial/testimonial-7.tsx +125 -0
  112. package/src/blocks/timeline/timeline-1.schema.ts +741 -0
  113. package/src/blocks/timeline/timeline-1.tsx +52 -0
  114. package/src/blocks/users/edit-profile.schema.ts +294 -0
  115. package/src/blocks/users/edit-profile.tsx +184 -0
  116. package/src/schemas/blocks.ts +64 -12
  117. package/src/schemas/categories.ts +36 -0
@@ -0,0 +1,60 @@
1
+ import {
2
+ Box,
3
+ Container,
4
+ Heading,
5
+ Section,
6
+ Typography,
7
+ type ILevoBlockBaseProps,
8
+ TabsRoot,
9
+ TabsList,
10
+ TabsTrigger,
11
+ TabsContent,
12
+ Button,
13
+ } from "@levo-so/studio";
14
+ import React from "react";
15
+ import { ITab2Content } from "./tab-2.schema";
16
+
17
+ const Tab2: React.FC<ILevoBlockBaseProps<ITab2Content>> = ({ content }) => {
18
+ return (
19
+ <Section elementKey="layout">
20
+ <Container elementKey="container">
21
+ <TabsRoot defaultValue="0">
22
+ <Box elementKey="main_content_wrapper">
23
+ <Box elementKey="left_container">
24
+ <Heading elementKey="title" />
25
+ <Box elementKey="tabs_levoGroup" data-levo_group>
26
+ <TabsList elementKey="tabs_tabList">
27
+ {(content.tabs ?? []).map((_: any, index: number) => (
28
+ <TabsTrigger
29
+ value={index.toString()}
30
+ key={index}
31
+ elementKey={`tabs.${index}.TabsTrigger`}
32
+ />
33
+ ))}
34
+ </TabsList>
35
+ </Box>
36
+ </Box>
37
+ <Box elementKey="right_container">
38
+ {(content.tabs ?? []).map((_: any, index: number) => (
39
+ <TabsContent
40
+ value={index.toString()}
41
+ key={index}
42
+ data-levo_group_item
43
+ elementKey={`tabs.${index}.tab_content`}
44
+ >
45
+ <Box elementKey={`tabs.${index}.card_wrapper`}>
46
+ <Heading elementKey={`tabs.${index}.card_title`} />
47
+ <Typography elementKey={`tabs.${index}.card_description`} />
48
+ <Button elementKey={`tabs.${index}.card_cta`} />
49
+ </Box>
50
+ </TabsContent>
51
+ ))}
52
+ </Box>
53
+ </Box>
54
+ </TabsRoot>
55
+ </Container>
56
+ </Section>
57
+ );
58
+ };
59
+
60
+ export default Tab2;
@@ -161,7 +161,11 @@ export const Team3: IBlock = {
161
161
  "Wrapper for each team member card, providing structure and spacing.",
162
162
  },
163
163
  },
164
-
164
+ {
165
+ key: "img",
166
+ label: "Card Image",
167
+ field_interface: "MediaWidget",
168
+ },
165
169
  {
166
170
  key: "info",
167
171
  label: "Member Info",
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import type { CarouselApi } from "@levo-so/studio";
2
4
  import {
3
5
  type ILevoBlockBaseProps,
@@ -10,6 +12,7 @@ import {
10
12
  CarouselItem,
11
13
  Box,
12
14
  Icon,
15
+ Media,
13
16
  } from "@levo-so/studio";
14
17
  import { useEffect, useState } from "react";
15
18
 
@@ -44,6 +47,10 @@ const Team3: React.FC<ILevoBlockBaseProps<ITeam3Content>> = ({ content }) => {
44
47
  {(content?.team ?? [])?.map((_: any, index: number) => (
45
48
  <CarouselItem key={index} data-levo_group_item>
46
49
  <Box elementKey={`team.${index}.card`}>
50
+ <Media
51
+ elementKey={`team.${index}.img`}
52
+ alt="Team member photo"
53
+ />
47
54
  <Box elementKey={`team.${index}.info`}>
48
55
  <Box elementKey={`team.${index}.name-position-wrapper`}>
49
56
  <Heading elementKey={`team.${index}.name`} />
@@ -1,16 +1,5 @@
1
1
  import type { IBlock } from "@levo-so/studio";
2
2
 
3
- const DUMMY_ICON = {
4
- kind: "icon",
5
- data: {
6
- id: "linkedin",
7
- label: "LinkedIn",
8
- tags: ["social", "professional", "linkedin"],
9
- svgCode:
10
- '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M20.4491 20.4498H16.8931V14.8798C16.8931 13.5518 16.8681 11.8438 15.0431 11.8438C13.1931 11.8438 12.9081 13.2918 12.9081 14.7838V20.4498H9.35312V8.99976H12.7651V10.5608H12.8151C13.2881 9.66176 14.4481 8.71076 16.1811 8.71076C19.7851 8.71076 20.4491 11.0828 20.4491 14.1658V20.4498ZM5.33912 7.43276C4.19312 7.43276 3.27112 6.50676 3.27112 5.36576C3.27112 4.22476 4.19312 3.29976 5.33912 3.29976C6.48012 3.29976 7.40612 4.22476 7.40612 5.36576C7.40612 6.50676 6.48012 7.43276 5.33912 7.43276ZM7.11812 20.4498H3.55812V8.99976H7.11812V20.4498ZM22.2231 0H1.77112C0.79212 0 0 0.77376 0 1.72876V22.2708C0 23.2258 0.79212 24 1.77112 24H22.2231C23.2081 24 24 23.2258 24 22.2708V1.72876C24 0.77376 23.2081 0 22.2231 0Z" fill="var(--color-icon-primary)"/>\n</svg>',
11
- },
12
- };
13
-
14
3
  const DEFAULT_CONTENT = {
15
4
  layout: null,
16
5
  container: null,
@@ -161,6 +150,11 @@ export const Team4: IBlock = {
161
150
  "Wrapper for each team member card, providing structure and spacing with background image.",
162
151
  },
163
152
  },
153
+ {
154
+ key: "img",
155
+ label: "Card Image",
156
+ field_interface: "MediaWidget",
157
+ },
164
158
  {
165
159
  key: "info",
166
160
  label: "Member Info",
@@ -182,7 +176,18 @@ export const Team4: IBlock = {
182
176
  {
183
177
  key: "name",
184
178
  label: "Member Name",
185
- field_interface: "HeadingWidget",
179
+ field_interface: "TypographyWidget",
180
+ hint: {
181
+ prompt_description:
182
+ "Full name of the team member. Use professional, clear naming.",
183
+ min_characters: 8,
184
+ max_characters: 30,
185
+ },
186
+ },
187
+ {
188
+ key: "description",
189
+ label: "Description",
190
+ field_interface: "TypographyWidget",
186
191
  hint: {
187
192
  prompt_description:
188
193
  "Full name of the team member. Use professional, clear naming.",
@@ -190,7 +195,6 @@ export const Team4: IBlock = {
190
195
  max_characters: 30,
191
196
  },
192
197
  },
193
-
194
198
  {
195
199
  key: "social",
196
200
  label: "Social Links",
@@ -7,6 +7,7 @@ import {
7
7
  Box,
8
8
  Icon,
9
9
  Button,
10
+ Media,
10
11
  } from "@levo-so/studio";
11
12
 
12
13
  import type { ITeam4Content } from "./team-4.schema";
@@ -26,9 +27,11 @@ const Team4: React.FC<ILevoBlockBaseProps<ITeam4Content>> = ({ content }) => {
26
27
  data-levo_group_item
27
28
  elementKey={`team.${index}.card`}
28
29
  >
30
+ <Media elementKey={`team.${index}.img`} alt="Team member photo" />
29
31
  <Box elementKey={`team.${index}.info`}>
30
32
  <Box elementKey={`team.${index}.name-position-wrapper`}>
31
- <Heading elementKey={`team.${index}.name`} />
33
+ <Typography elementKey={`team.${index}.name`} />
34
+ <Typography elementKey={`team.${index}.description`} />
32
35
  </Box>
33
36
  <Box
34
37
  elementKey={`team.${index}.social_levoGroup`}
@@ -0,0 +1,369 @@
1
+ import type { IBlock } from "@levo-so/studio";
2
+
3
+ const DEFAULT_CONTENT = {
4
+ layout: null,
5
+ container: null,
6
+ header: null,
7
+ title: "Meet Our Leadership Team",
8
+ description:
9
+ "Discover the talented professionals driving our company's success through innovation, expertise, and unwavering commitment to excellence.",
10
+ main_content: null,
11
+ left_container: null,
12
+ image_wrapper: null,
13
+ main_image: {
14
+ id: "2",
15
+ location: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH.png",
16
+ kind: "image",
17
+ mimetype: "image/png",
18
+ srcset: {
19
+ "320w":
20
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp",
21
+ "640w":
22
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp",
23
+ "1080w":
24
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp",
25
+ path: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp 320w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp 640w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp 1080w",
26
+ },
27
+ },
28
+ overlay_container: null,
29
+ overlay_label: "<p>Richard Murphy</p>",
30
+ overlay_value: "<p>CEO, Mistify</p>",
31
+ right_container: null,
32
+ team_description:
33
+ "<p>Alexandra “Alex” Monroe is a strategic thinker, creative storyteller, and data-driven problem solver with over a decade of experience in brand development, digital transformation, and cross-functional leadership. Known for her ability to blend analytical insight with creative intuition, Alex has helped numerous global organizations redefine their identities, connect authentically with their audiences, and achieve measurable business growth.</p><p>After earning her Master’s degree in Communication and Media Studies from the University of Chicago, Alex began her career as a junior strategist at a boutique marketing firm. Her early exposure to a variety of industries—from consumer technology to sustainable fashion—shaped her holistic approach to brand building. She quickly rose through the ranks, taking on roles that allowed her to lead campaigns across North America, Europe, and Southeast Asia.</p><p>In 2016, Alex co-founded <strong>Maven &amp; Co.</strong>, a creative consultancy dedicated to helping mission-driven companies scale with purpose. Under her leadership, the firm expanded to serve clients in over 15 countries, developing award-winning campaigns recognized by <em>AdWeek</em> and <em>Forbes</em>. Her work has focused on integrating storytelling with technology—leveraging social data, behavioral psychology, and digital design to create brand ecosystems that resonate deeply with modern consumers.</p>",
34
+ cta_wrapper: null,
35
+ cta: "View Profile",
36
+ team_members: [
37
+ {
38
+ card: null,
39
+ content_wrapper: null,
40
+ left_container: null,
41
+ image_wrapper: null,
42
+ member_image: {
43
+ id: "2",
44
+ location: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH.png",
45
+ kind: "image",
46
+ mimetype: "image/png",
47
+ srcset: {
48
+ "320w":
49
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp",
50
+ "640w":
51
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp",
52
+ "1080w":
53
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp",
54
+ path: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp 320w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp 640w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp 1080w",
55
+ },
56
+ },
57
+ overlay_container: null,
58
+ overlay_label: "CTO",
59
+ overlay_value: "Michael Chen",
60
+ right_container: null,
61
+ member_description:
62
+ "Michael leads our technology division with a focus on cutting-edge innovations and scalable solutions. His expertise in cloud architecture and AI integration has positioned us at the forefront of digital transformation.",
63
+ cta_wrapper: null,
64
+ cta: "Learn More",
65
+ },
66
+ {
67
+ card: null,
68
+ content_wrapper: null,
69
+ left_container: null,
70
+ image_wrapper: null,
71
+ member_image: {
72
+ id: "2",
73
+ location: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH.png",
74
+ kind: "image",
75
+ mimetype: "image/png",
76
+ srcset: {
77
+ "320w":
78
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp",
79
+ "640w":
80
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp",
81
+ "1080w":
82
+ "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp",
83
+ path: "https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-320w.webp 320w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-640w.webp 640w, https://space.levo.so/WLZ1TXTD/defaultblue-tryFJ012mgyH-1080w.webp 1080w",
84
+ },
85
+ },
86
+ overlay_container: null,
87
+ overlay_label: "CFO",
88
+ overlay_value: "Emily Rodriguez",
89
+ right_container: null,
90
+ member_description:
91
+ "Emily brings extensive financial expertise and strategic planning to our executive team. Her leadership in financial operations and investor relations has been crucial to our sustained growth and market expansion.",
92
+ cta_wrapper: null,
93
+ cta: "Learn More",
94
+ },
95
+ ],
96
+ };
97
+
98
+ export type ITeam5Content = typeof DEFAULT_CONTENT;
99
+
100
+ export const Team5: IBlock = {
101
+ category_id: "team",
102
+ title: "Team Details",
103
+ key: "team-5",
104
+ version: "v1",
105
+ prompt_description:
106
+ "A team block with header section, featured member section with image overlay, and team member cards with left image (overlay at bottom) and right content with description and CTA",
107
+ content_schema: [
108
+ {
109
+ key: "layout",
110
+ label: "Layout",
111
+ field_interface: "LayoutWidget",
112
+ },
113
+ {
114
+ key: "container",
115
+ label: "Container",
116
+ field_interface: "ContainerWidget",
117
+ },
118
+
119
+ {
120
+ key: "main_content",
121
+ label: "Main Content",
122
+ field_interface: "LayoutWidget",
123
+ },
124
+
125
+ {
126
+ key: "image_wrapper",
127
+ label: "Image Wrapper",
128
+ field_interface: "LayoutWidget",
129
+ },
130
+ {
131
+ key: "main_image",
132
+ label: "Main Image",
133
+ field_interface: "ImageWidget",
134
+ },
135
+ {
136
+ key: "overlay_container",
137
+ label: "Overlay Container",
138
+ field_interface: "LayoutWidget",
139
+ },
140
+ {
141
+ key: "overlay_label",
142
+ label: "Overlay Label",
143
+ field_interface: "TypographyWidget",
144
+ },
145
+ {
146
+ key: "overlay_value",
147
+ label: "Overlay Value",
148
+ field_interface: "TypographyWidget",
149
+ },
150
+ {
151
+ key: "right_container",
152
+ label: "Right Container",
153
+ field_interface: "LayoutWidget",
154
+ },
155
+ {
156
+ key: "team_description",
157
+ label: "Team Description",
158
+ field_interface: "TypographyWidget",
159
+ },
160
+ {
161
+ key: "cta_wrapper",
162
+ label: "CTA Wrapper",
163
+ field_interface: "LayoutWidget",
164
+ },
165
+ {
166
+ key: "cta",
167
+ label: "CTA",
168
+ field_interface: "ButtonWidget",
169
+ },
170
+ ],
171
+ layouts: [
172
+ {
173
+ key: "default",
174
+ title: "Default",
175
+ styles: {
176
+ layout: {
177
+ "padding-top": "3xl",
178
+ "padding-bottom": "3xl",
179
+ "padding-left": "base",
180
+ "padding-right": "base",
181
+ },
182
+ container: {
183
+ "max-width": "1280px",
184
+ "margin-left": "auto",
185
+ "margin-right": "auto",
186
+ "padding-left": "none",
187
+ "padding-right": "none",
188
+ },
189
+ header: {
190
+ "text-align": "center",
191
+ "margin-bottom": "3xl",
192
+ },
193
+ description: {
194
+ "font-size": "lg",
195
+ color: "text-2",
196
+ "line-height": "1.6",
197
+ "max-width": "800px",
198
+ "margin-left": "auto",
199
+ "margin-right": "auto",
200
+ mobile: {
201
+ "font-size": "base",
202
+ },
203
+ },
204
+ main_content: {
205
+ display: "flex",
206
+ "align-items": "start",
207
+ "column-gap": "xl",
208
+ "margin-bottom": "3xl",
209
+ mobile: {
210
+ "flex-direction": "column",
211
+ "row-gap": "xl",
212
+ },
213
+ "justify-content": "start",
214
+ },
215
+ left_container: {
216
+ flex: "1",
217
+ },
218
+ image_wrapper: {
219
+ position: "relative",
220
+ "border-radius": "lg",
221
+ overflow: "hidden",
222
+ width: "30%",
223
+ height: "100%",
224
+ },
225
+ main_image: {
226
+ "border-radius": "lg",
227
+ "object-fit": "cover",
228
+ width: "400px",
229
+ height: "400px",
230
+ },
231
+ overlay_container: {
232
+ position: "absolute",
233
+ bottom: "0",
234
+ left: "0",
235
+ right: "0",
236
+ "padding-top": "lg",
237
+ "padding-bottom": "lg",
238
+ "padding-left": "lg",
239
+ "padding-right": "lg",
240
+ display: "block",
241
+ "flex-direction": "column",
242
+ "row-gap": "xs",
243
+ },
244
+ overlay_label: {
245
+ opacity: "0.8",
246
+ color: "text-1",
247
+ "font-weight": 700,
248
+ "font-size": "lg",
249
+ },
250
+ overlay_value: {},
251
+ right_container: {
252
+ flex: "1",
253
+ display: "flex",
254
+ "flex-direction": "column",
255
+ "row-gap": "lg",
256
+ },
257
+ team_description: {
258
+ "font-size": "base",
259
+ color: "text-2",
260
+ "line-height": "1.6",
261
+ },
262
+ cta_wrapper: {
263
+ display: "flex",
264
+ },
265
+ cta: {},
266
+ team_members_levoGroup: {
267
+ display: "flex",
268
+ "flex-direction": "column",
269
+ "row-gap": "2xl",
270
+ },
271
+ "team_members.*.card": {
272
+ "background-color": "background-2",
273
+ "border-radius": "lg",
274
+ "border-width": "1px",
275
+ "border-color": "border",
276
+ overflow: "hidden",
277
+ },
278
+ "team_members.*.content_wrapper": {
279
+ display: "flex",
280
+ "align-items": "stretch",
281
+ mobile: {
282
+ "flex-direction": "column",
283
+ },
284
+ },
285
+ "team_members.*.left_container": {
286
+ flex: "1",
287
+ position: "relative",
288
+ },
289
+ "team_members.*.image_wrapper": {
290
+ position: "relative",
291
+ height: "300px",
292
+ mobile: {
293
+ height: "250px",
294
+ },
295
+ },
296
+ "team_members.*.member_image": {
297
+ width: "100%",
298
+ height: "100%",
299
+ "object-fit": "cover",
300
+ },
301
+ "team_members.*.overlay_container": {
302
+ position: "absolute",
303
+ bottom: "0",
304
+ left: "0",
305
+ right: "0",
306
+ "background-color": "rgba(0, 0, 0, 0.7)",
307
+ "padding-top": "base",
308
+ "padding-bottom": "base",
309
+ "padding-left": "base",
310
+ "padding-right": "base",
311
+ display: "flex",
312
+ "flex-direction": "column",
313
+ "row-gap": "xs",
314
+ },
315
+ "team_members.*.overlay_label": {
316
+ "font-size": "xs",
317
+ "font-weight": "500",
318
+ color: "text-1",
319
+ opacity: "0.8",
320
+ },
321
+ "team_members.*.overlay_value": {
322
+ "font-size": "lg",
323
+ "font-weight": "600",
324
+ color: "text-1",
325
+ },
326
+ "team_members.*.right_container": {
327
+ flex: "1",
328
+ display: "flex",
329
+ "flex-direction": "column",
330
+ "justify-content": "center",
331
+ "padding-top": "2xl",
332
+ "padding-bottom": "2xl",
333
+ "padding-left": "2xl",
334
+ "padding-right": "2xl",
335
+ "row-gap": "lg",
336
+ },
337
+ "team_members.*.member_description": {
338
+ "font-size": "base",
339
+ color: "text-2",
340
+ "line-height": "1.6",
341
+ flex: "1",
342
+ },
343
+ "team_members.*.cta_wrapper": {
344
+ display: "flex",
345
+ },
346
+ "team_members.*.cta": {
347
+ "background-color": "background-1",
348
+ color: "text-1",
349
+ "padding-top": "base",
350
+ "padding-bottom": "base",
351
+ "padding-left": "2xl",
352
+ "padding-right": "2xl",
353
+ "border-radius": "base",
354
+ "border-width": "1px",
355
+ "border-color": "border",
356
+ "align-self": "flex-start",
357
+ },
358
+ },
359
+ content: DEFAULT_CONTENT,
360
+ config: {
361
+ title: {
362
+ selectedVariants: {
363
+ Heading_Level: "H2",
364
+ },
365
+ },
366
+ },
367
+ },
368
+ ],
369
+ };
@@ -0,0 +1,38 @@
1
+ import {
2
+ type ILevoBlockBaseProps,
3
+ Box,
4
+ Button,
5
+ Container,
6
+ Image,
7
+ Section,
8
+ Typography,
9
+ } from "@levo-so/studio";
10
+
11
+ import type { ITeam5Content } from "./team-5.schema";
12
+
13
+ const Team5: React.FC<ILevoBlockBaseProps<ITeam5Content>> = () => {
14
+ return (
15
+ <Section elementKey="layout">
16
+ <Container elementKey="container">
17
+ <Box elementKey="main_content">
18
+ <Box elementKey="image_wrapper">
19
+ <Image elementKey="main_image" alt="Team member" />
20
+ <Box elementKey="overlay_container">
21
+ <Typography elementKey="overlay_label" />
22
+ <Typography elementKey="overlay_value" />
23
+ </Box>
24
+ </Box>
25
+
26
+ <Box elementKey="right_container">
27
+ <Typography elementKey="team_description" />
28
+ <Box elementKey="cta_wrapper">
29
+ <Button elementKey="cta" />
30
+ </Box>
31
+ </Box>
32
+ </Box>
33
+ </Container>
34
+ </Section>
35
+ );
36
+ };
37
+
38
+ export default Team5;
@@ -6,7 +6,6 @@ import {
6
6
  Container,
7
7
  Section,
8
8
  Box,
9
- Image,
10
9
  Carousel,
11
10
  CarouselContent,
12
11
  CarouselItem,
@@ -1,8 +1,9 @@
1
+ "use client";
2
+
1
3
  import type { CarouselApi } from "@levo-so/studio";
2
4
  import {
3
5
  type ILevoBlockBaseProps,
4
6
  Heading,
5
- Image,
6
7
  Typography,
7
8
  Container,
8
9
  Section,
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import type { CarouselApi } from "@levo-so/studio";
2
4
  import {
3
5
  type ILevoBlockBaseProps,
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import type { CarouselApi } from "@levo-so/studio";
2
4
  import {
3
5
  type ILevoBlockBaseProps,
@@ -9,7 +11,6 @@ import {
9
11
  Container,
10
12
  Heading,
11
13
  Iframe,
12
- Image,
13
14
  Icon,
14
15
  Media,
15
16
  Section,
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import type { CarouselApi } from "@levo-so/studio";
2
4
  import {
3
5
  type ILevoBlockBaseProps,
@@ -1,3 +1,5 @@
1
+ "use client";
2
+
1
3
  import type { CarouselApi } from "@levo-so/studio";
2
4
  import {
3
5
  type ILevoBlockBaseProps,
@@ -9,7 +11,6 @@ import {
9
11
  Container,
10
12
  Heading,
11
13
  Icon,
12
- Image,
13
14
  Section,
14
15
  Typography,
15
16
  } from "@levo-so/studio";