@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.
- package/package.json +2 -2
- package/src/blocks/about-us/about-us-1.schema.ts +14 -0
- package/src/blocks/about-us/about-us-1.tsx +4 -2
- package/src/blocks/about-us/about-us-2.schema.ts +48 -0
- package/src/blocks/about-us/about-us-2.tsx +6 -0
- package/src/blocks/blogs/blog-listing-1.schema.ts +10 -0
- package/src/blocks/blogs/blog-listing-2.schema.ts +42 -162
- package/src/blocks/blogs/blog-listing-2.tsx +7 -0
- package/src/blocks/blogs/blog-listing-3.schema.ts +9 -0
- package/src/blocks/blogs/blog-post-1.schema.ts +7 -1
- package/src/blocks/blogs/blog-post-1.tsx +1 -1
- package/src/blocks/blogs/blog-post-2.schema.ts +464 -28
- package/src/blocks/blogs/blog-post-2.tsx +6 -13
- package/src/blocks/blogs/blog-post-3.schema.ts +42 -0
- package/src/blocks/blogs/blog-post-3.tsx +4 -1
- package/src/blocks/calendar/calendar-1.schema.ts +537 -0
- package/src/blocks/calendar/calendar-1.tsx +145 -0
- package/src/blocks/cards/cards-10.schema.ts +52 -4
- package/src/blocks/cards/cards-10.tsx +13 -1
- package/src/blocks/cards/cards-14.schema.ts +532 -0
- package/src/blocks/cards/cards-14.tsx +54 -0
- package/src/blocks/cards/cards-15.schema.ts +277 -0
- package/src/blocks/cards/cards-15.tsx +40 -0
- package/src/blocks/cards/cards-6.schema.ts +46 -0
- package/src/blocks/cards/cards-6.tsx +27 -1
- package/src/blocks/cards/cards-7.tsx +2 -0
- package/src/blocks/carousel/carousel-2.schema.ts +1128 -0
- package/src/blocks/carousel/carousel-2.tsx +159 -0
- package/src/blocks/content/content-5.schema.ts +112 -6
- package/src/blocks/content/content-5.tsx +19 -3
- package/src/blocks/content/content-6.schema.ts +16 -3
- package/src/blocks/content/content-6.tsx +1 -0
- package/src/blocks/content/content-8.schema.ts +125 -0
- package/src/blocks/content/content-8.tsx +27 -0
- package/src/blocks/content/content-9.schema.ts +2729 -0
- package/src/blocks/content/content-9.tsx +91 -0
- package/src/blocks/cta/cta-2.schema.ts +46 -4
- package/src/blocks/cta/cta-2.tsx +9 -1
- package/src/blocks/embed/embed-1.schema.ts +100 -0
- package/src/blocks/event/ClientOnly.tsx +27 -0
- package/src/blocks/event/event-details.tsx +10 -3
- package/src/blocks/event/event-listing-3.tsx +9 -2
- package/src/blocks/event/event-listing-4.tsx +11 -2
- package/src/blocks/event/event-listing.tsx +11 -4
- package/src/blocks/faq/faq-1.schema.ts +58 -1
- package/src/blocks/faq/faq-1.tsx +18 -1
- package/src/blocks/faq/faq-2.tsx +2 -1
- package/src/blocks/faq/faq-3.schema.ts +6 -1
- package/src/blocks/faq/faq-3.tsx +1 -0
- package/src/blocks/features/features-1/features-1.schema.ts +2 -0
- package/src/blocks/features/features-1/variants/index.ts +2 -0
- package/src/blocks/features/features-1/variants/stylized-cards-v3.ts +451 -0
- package/src/blocks/features/features-4.schema.ts +358 -20
- package/src/blocks/features/features-4.tsx +3 -1
- package/src/blocks/features/features-6.tsx +2 -0
- package/src/blocks/filter-listing/filter-listing-1.schema.ts +614 -0
- package/src/blocks/filter-listing/filter-listing-1.tsx +128 -0
- package/src/blocks/footer/footer-6.schema.ts +2 -2
- package/src/blocks/hero/hero-11.schema.ts +849 -0
- package/src/blocks/hero/hero-11.tsx +59 -0
- package/src/blocks/hero/hero-12.schema.ts +712 -0
- package/src/blocks/hero/hero-12.tsx +76 -0
- package/src/blocks/hero/hero-13.schema.ts +238 -0
- package/src/blocks/hero/hero-13.tsx +31 -0
- package/src/blocks/hero/hero-4.tsx +2 -0
- package/src/blocks/hero/hero-5.tsx +2 -0
- package/src/blocks/hero/hero-7.tsx +2 -1
- package/src/blocks/hero/hero-8.tsx +2 -0
- package/src/blocks/hero/hero-9.schema.ts +5 -0
- package/src/blocks/hero/hero-9.tsx +2 -0
- package/src/blocks/index.ts +27 -0
- package/src/blocks/navbar/navbar-1.schema.ts +6 -6
- package/src/blocks/navbar/navbar-1.tsx +6 -7
- package/src/blocks/navbar/navbar-2.schema.ts +9 -9
- package/src/blocks/navbar/navbar-2.tsx +7 -8
- package/src/blocks/navbar/navbar-3.schema.ts +9 -9
- package/src/blocks/navbar/navbar-3.tsx +139 -114
- package/src/blocks/polling/polling-1.schema.ts +134 -0
- package/src/blocks/polling/polling-1.tsx +466 -0
- package/src/blocks/products/products-listing-2.schema.ts +596 -0
- package/src/blocks/products/products-listing-2.tsx +56 -0
- package/src/blocks/products/products-listing-3.schema.ts +818 -0
- package/src/blocks/products/products-listing-3.tsx +125 -0
- package/src/blocks/profile/profile-2.schema.ts +505 -0
- package/src/blocks/profile/profile-2.tsx +64 -0
- package/src/blocks/profile/profile-3.schema.ts +867 -0
- package/src/blocks/profile/profile-3.tsx +98 -0
- package/src/blocks/services/service-1.schema.ts +1743 -0
- package/src/blocks/services/service-1.tsx +139 -0
- package/src/blocks/services/service-2.schema.ts +433 -0
- package/src/blocks/services/service-2.tsx +98 -0
- package/src/blocks/services/service-3.schema.ts +631 -0
- package/src/blocks/services/service-3.tsx +135 -0
- package/src/blocks/tabs/tab-1.schema.ts +831 -0
- package/src/blocks/tabs/tab-1.tsx +126 -0
- package/src/blocks/tabs/tab-2.schema.ts +767 -0
- package/src/blocks/tabs/tab-2.tsx +60 -0
- package/src/blocks/team/team-3.schema.ts +5 -1
- package/src/blocks/team/team-3.tsx +7 -0
- package/src/blocks/team/team-4.schema.ts +17 -13
- package/src/blocks/team/team-4.tsx +4 -1
- package/src/blocks/team/team-5.schema.ts +369 -0
- package/src/blocks/team/team-5.tsx +38 -0
- package/src/blocks/testimonial/testimonial-1.tsx +0 -1
- package/src/blocks/testimonial/testimonial-2.tsx +2 -1
- package/src/blocks/testimonial/testimonial-3.tsx +2 -0
- package/src/blocks/testimonial/testimonial-4.tsx +2 -1
- package/src/blocks/testimonial/testimonial-5.tsx +2 -0
- package/src/blocks/testimonial/testimonial-6.tsx +2 -1
- package/src/blocks/testimonial/testimonial-7.schema.ts +438 -0
- package/src/blocks/testimonial/testimonial-7.tsx +125 -0
- package/src/blocks/timeline/timeline-1.schema.ts +741 -0
- package/src/blocks/timeline/timeline-1.tsx +52 -0
- package/src/blocks/users/edit-profile.schema.ts +294 -0
- package/src/blocks/users/edit-profile.tsx +184 -0
- package/src/schemas/blocks.ts +64 -12
- package/src/schemas/categories.ts +36 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Box,
|
|
3
|
+
Carousel,
|
|
4
|
+
CarouselContent,
|
|
5
|
+
CarouselItem,
|
|
6
|
+
Container,
|
|
7
|
+
Heading,
|
|
8
|
+
Icon,
|
|
9
|
+
Image,
|
|
10
|
+
Section,
|
|
11
|
+
Typography,
|
|
12
|
+
type ILevoBlockBaseProps,
|
|
13
|
+
} from "@levo-so/studio";
|
|
14
|
+
import React from "react";
|
|
15
|
+
|
|
16
|
+
import type { IHero12Content } from "./hero-12.schema";
|
|
17
|
+
|
|
18
|
+
const Hero12: React.FC<ILevoBlockBaseProps<IHero12Content>> = ({ content }) => (
|
|
19
|
+
<Section elementKey="layout">
|
|
20
|
+
<Container elementKey="container">
|
|
21
|
+
<Box elementKey="content_wrapper">
|
|
22
|
+
{/* Header Container */}
|
|
23
|
+
<Box elementKey="header_container">
|
|
24
|
+
<Container elementKey="title_container">
|
|
25
|
+
<Box elementKey="label_container">
|
|
26
|
+
<Box elementKey="label_divider" />
|
|
27
|
+
<Typography elementKey="label" />
|
|
28
|
+
</Box>
|
|
29
|
+
<Heading elementKey="title" />
|
|
30
|
+
</Container>
|
|
31
|
+
<Typography elementKey="description" />
|
|
32
|
+
</Box>
|
|
33
|
+
|
|
34
|
+
{/* Bottom Container */}
|
|
35
|
+
<Box elementKey="bottom_container">
|
|
36
|
+
<Carousel
|
|
37
|
+
elementKey="images_levoGroup"
|
|
38
|
+
data-levo_group
|
|
39
|
+
opts={{
|
|
40
|
+
loop: true,
|
|
41
|
+
}}
|
|
42
|
+
>
|
|
43
|
+
<CarouselContent>
|
|
44
|
+
{(content.images ?? []).map((_, index) => (
|
|
45
|
+
<CarouselItem
|
|
46
|
+
key={`hero-12-image-${index}`}
|
|
47
|
+
data-levo_group_item
|
|
48
|
+
>
|
|
49
|
+
<Image elementKey={`images.${index}.image`} alt="Team" />
|
|
50
|
+
</CarouselItem>
|
|
51
|
+
))}
|
|
52
|
+
</CarouselContent>
|
|
53
|
+
</Carousel>
|
|
54
|
+
|
|
55
|
+
<Box elementKey="stats_levoGroup" data-levo_group>
|
|
56
|
+
{(content.stats ?? []).map((_: any, index: number) => (
|
|
57
|
+
<Box
|
|
58
|
+
key={`hero-12-stat-${index}`}
|
|
59
|
+
elementKey={`stats.${index}.stat_box`}
|
|
60
|
+
data-levo_group_item
|
|
61
|
+
>
|
|
62
|
+
<Box elementKey={`stats.${index}.number_container`}>
|
|
63
|
+
<Icon elementKey={`stats.${index}.icon`} />
|
|
64
|
+
<Typography elementKey={`stats.${index}.number`} />
|
|
65
|
+
</Box>
|
|
66
|
+
<Typography elementKey={`stats.${index}.label`} />
|
|
67
|
+
</Box>
|
|
68
|
+
))}
|
|
69
|
+
</Box>
|
|
70
|
+
</Box>
|
|
71
|
+
</Box>
|
|
72
|
+
</Container>
|
|
73
|
+
</Section>
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
export default Hero12;
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import type { IBlock } from "@levo-so/studio";
|
|
2
|
+
|
|
3
|
+
const DEFAULT_CONTENT = {
|
|
4
|
+
layout: null,
|
|
5
|
+
container: null,
|
|
6
|
+
description:
|
|
7
|
+
"<p>Get expert ERP insights, success stories, and growth tips straight to your inbox. No clutter. Just clarity.</p>",
|
|
8
|
+
title:
|
|
9
|
+
"Save 100+ hours in Research. Get your Free NetSuite Implementation Guide.",
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export type IHero13Content = typeof DEFAULT_CONTENT;
|
|
13
|
+
|
|
14
|
+
export const Hero13: IBlock = {
|
|
15
|
+
category_id: "hero",
|
|
16
|
+
title: "Hero 13",
|
|
17
|
+
key: "hero-13",
|
|
18
|
+
version: "v1",
|
|
19
|
+
prompt_description:
|
|
20
|
+
"Two-column layout with bold headline, brief supporting text on the left, paired with a call-to-action button on the right. Similar to Contact Us 1 but optimized for hero sections.",
|
|
21
|
+
content_schema: [
|
|
22
|
+
{
|
|
23
|
+
key: "layout",
|
|
24
|
+
label: "Layout",
|
|
25
|
+
field_interface: "LayoutWidget",
|
|
26
|
+
hint: {
|
|
27
|
+
prompt_description:
|
|
28
|
+
"Overall layout definition. Used to structure the block as a two-column split: left for text content, right for call-to-action. No content needed.",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
key: "container",
|
|
33
|
+
label: "Container",
|
|
34
|
+
field_interface: "ContainerWidget",
|
|
35
|
+
hint: {
|
|
36
|
+
prompt_description:
|
|
37
|
+
"Main outer container for spacing and alignment. No direct content—responsible for the block's padding, background, and width.",
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: "textWrapper",
|
|
42
|
+
label: "Text Wrapper",
|
|
43
|
+
field_interface: "BoxWidget",
|
|
44
|
+
hint: {
|
|
45
|
+
prompt_description:
|
|
46
|
+
"Box to organize and group the title and description on the left side. No text content—used solely for grouping and alignment.",
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: "title",
|
|
51
|
+
label: "Title",
|
|
52
|
+
field_interface: "HeadingWidget",
|
|
53
|
+
hint: {
|
|
54
|
+
prompt_description:
|
|
55
|
+
"Main headline positioned at the top left. Aim for a direct, inspiring, action-oriented message encouraging users to take action. Tone is confident, professional, and motivating.",
|
|
56
|
+
min_characters: 8,
|
|
57
|
+
max_characters: 28,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
key: "description",
|
|
62
|
+
label: "Description",
|
|
63
|
+
field_interface: "TypographyWidget",
|
|
64
|
+
hint: {
|
|
65
|
+
prompt_description:
|
|
66
|
+
"Short explanatory paragraph under the headline providing additional context or reason to get started. Tone is supportive, convincing, and concise.",
|
|
67
|
+
min_characters: 30,
|
|
68
|
+
max_characters: 90,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
key: "formWrapper",
|
|
73
|
+
label: "Form Wrapper",
|
|
74
|
+
field_interface: "BoxWidget",
|
|
75
|
+
hint: {
|
|
76
|
+
prompt_description:
|
|
77
|
+
"Container for the call-to-action button on the right side. Used for positioning and alignment of the action element.",
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
key: "form_title",
|
|
82
|
+
label: "Form Title",
|
|
83
|
+
field_interface: "TypographyWidget",
|
|
84
|
+
hint: {
|
|
85
|
+
prompt_description:
|
|
86
|
+
"Short explanatory paragraph under the headline providing additional context or reason to get started. Tone is supportive, convincing, and concise.",
|
|
87
|
+
min_characters: 30,
|
|
88
|
+
max_characters: 90,
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
key: "contact_form",
|
|
93
|
+
label: "Contact Form",
|
|
94
|
+
field_interface: "FormWidget",
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
layouts: [
|
|
98
|
+
{
|
|
99
|
+
key: "default",
|
|
100
|
+
title: "Default",
|
|
101
|
+
styles: {
|
|
102
|
+
layout: {
|
|
103
|
+
"padding-top": "5xl",
|
|
104
|
+
"padding-bottom": "5xl",
|
|
105
|
+
"padding-left": "3xl",
|
|
106
|
+
"padding-right": "3xl",
|
|
107
|
+
width: "100%",
|
|
108
|
+
position: "relative",
|
|
109
|
+
"min-height": "600px",
|
|
110
|
+
display: "flex",
|
|
111
|
+
"align-items": "center",
|
|
112
|
+
tablet: {
|
|
113
|
+
"padding-top": "4xl",
|
|
114
|
+
"padding-bottom": "4xl",
|
|
115
|
+
"padding-left": "2xl",
|
|
116
|
+
"padding-right": "2xl",
|
|
117
|
+
"min-height": "500px",
|
|
118
|
+
},
|
|
119
|
+
mobile: {
|
|
120
|
+
"padding-top": "3xl",
|
|
121
|
+
"padding-bottom": "3xl",
|
|
122
|
+
"padding-left": "base",
|
|
123
|
+
"padding-right": "base",
|
|
124
|
+
"min-height": "400px",
|
|
125
|
+
},
|
|
126
|
+
"background-image":
|
|
127
|
+
'url("https://static.levostg.online/W6OEVMW8/Frame48097095-2EYwP5YZ0Tovp-1920w.webp")',
|
|
128
|
+
"background-position": "50% 50%",
|
|
129
|
+
"background-size": "cover",
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
container: {
|
|
133
|
+
"margin-left": "auto",
|
|
134
|
+
"margin-right": "auto",
|
|
135
|
+
"z-index": "1",
|
|
136
|
+
display: "flex",
|
|
137
|
+
"flex-direction": "row",
|
|
138
|
+
"justify-content": "space-between",
|
|
139
|
+
"padding-left": "none",
|
|
140
|
+
"padding-right": "none",
|
|
141
|
+
tablet: {
|
|
142
|
+
"flex-direction": "column",
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
description: {
|
|
146
|
+
"font-size": "lg",
|
|
147
|
+
color: "text-1",
|
|
148
|
+
"line-height": "1.6",
|
|
149
|
+
margin: "0",
|
|
150
|
+
tablet: {
|
|
151
|
+
"font-size": "base",
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
|
|
155
|
+
form_title: {
|
|
156
|
+
"font-size": "xl",
|
|
157
|
+
"font-weight": 600,
|
|
158
|
+
color: "text-1",
|
|
159
|
+
margin: "0",
|
|
160
|
+
"text-align": "center",
|
|
161
|
+
},
|
|
162
|
+
form_button: {
|
|
163
|
+
"background-color": "brand",
|
|
164
|
+
color: "text-1",
|
|
165
|
+
"padding-top": "base",
|
|
166
|
+
"padding-bottom": "base",
|
|
167
|
+
"padding-left": "2xl",
|
|
168
|
+
"padding-right": "2xl",
|
|
169
|
+
"border-radius": "base",
|
|
170
|
+
"font-weight": 600,
|
|
171
|
+
width: "100%",
|
|
172
|
+
"text-align": "center",
|
|
173
|
+
},
|
|
174
|
+
features_section: {
|
|
175
|
+
"padding-top": "4xl",
|
|
176
|
+
"padding-bottom": "4xl",
|
|
177
|
+
"padding-left": "3xl",
|
|
178
|
+
"padding-right": "3xl",
|
|
179
|
+
width: "100%",
|
|
180
|
+
tablet: {
|
|
181
|
+
"padding-top": "3xl",
|
|
182
|
+
"padding-bottom": "3xl",
|
|
183
|
+
"padding-left": "2xl",
|
|
184
|
+
"padding-right": "2xl",
|
|
185
|
+
},
|
|
186
|
+
mobile: {
|
|
187
|
+
"padding-top": "2xl",
|
|
188
|
+
"padding-bottom": "2xl",
|
|
189
|
+
"padding-left": "base",
|
|
190
|
+
"padding-right": "base",
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
|
|
194
|
+
textWrapper: {
|
|
195
|
+
width: "55%",
|
|
196
|
+
tablet: {
|
|
197
|
+
width: "100%",
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
contentWrapper: {
|
|
201
|
+
display: "flex",
|
|
202
|
+
},
|
|
203
|
+
formWrapper: {
|
|
204
|
+
"background-color": "background-3",
|
|
205
|
+
"padding-left": "base",
|
|
206
|
+
"padding-right": "base",
|
|
207
|
+
"padding-top": "base",
|
|
208
|
+
"padding-bottom": "base",
|
|
209
|
+
"border-radius": "2xl",
|
|
210
|
+
width: "500px",
|
|
211
|
+
position: "absolute",
|
|
212
|
+
right: "80px",
|
|
213
|
+
"z-index": "9999",
|
|
214
|
+
"box-shadow": {
|
|
215
|
+
x: 0,
|
|
216
|
+
y: 4,
|
|
217
|
+
blur: 8,
|
|
218
|
+
spread: 3,
|
|
219
|
+
color: "#000000",
|
|
220
|
+
opacity: 12,
|
|
221
|
+
},
|
|
222
|
+
tablet: {
|
|
223
|
+
"background-color": "page",
|
|
224
|
+
position: "static",
|
|
225
|
+
width: "100%",
|
|
226
|
+
"margin-top": "none",
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
contact_form: {
|
|
230
|
+
display: "block",
|
|
231
|
+
"flex-direction": "column",
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
content: DEFAULT_CONTENT,
|
|
235
|
+
config: {},
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type ILevoBlockBaseProps,
|
|
3
|
+
Box,
|
|
4
|
+
Container,
|
|
5
|
+
Form,
|
|
6
|
+
Heading,
|
|
7
|
+
Section,
|
|
8
|
+
Typography,
|
|
9
|
+
} from "@levo-so/studio";
|
|
10
|
+
|
|
11
|
+
import type { IHero13Content } from "./hero-13.schema";
|
|
12
|
+
|
|
13
|
+
const Hero13: React.FC<ILevoBlockBaseProps<IHero13Content>> = () => (
|
|
14
|
+
<Section elementKey="layout">
|
|
15
|
+
<Container elementKey="container">
|
|
16
|
+
{/* Left Content Container */}
|
|
17
|
+
<Box elementKey="textWrapper">
|
|
18
|
+
<Heading elementKey="title" />
|
|
19
|
+
<Typography elementKey="description" />
|
|
20
|
+
</Box>
|
|
21
|
+
|
|
22
|
+
{/* Right Form Container */}
|
|
23
|
+
<Box elementKey="formWrapper">
|
|
24
|
+
<Typography elementKey="form_title" />
|
|
25
|
+
<Form elementKey="contact_form" />
|
|
26
|
+
</Box>
|
|
27
|
+
</Container>
|
|
28
|
+
</Section>
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
export default Hero13;
|
|
@@ -174,6 +174,11 @@ export const Hero9: IBlock = {
|
|
|
174
174
|
"Individual statistic container with proper vertical alignment for value and label.",
|
|
175
175
|
},
|
|
176
176
|
},
|
|
177
|
+
{
|
|
178
|
+
key: "icon",
|
|
179
|
+
label: "Icon",
|
|
180
|
+
field_interface: "IconWidget",
|
|
181
|
+
},
|
|
177
182
|
{
|
|
178
183
|
key: "value",
|
|
179
184
|
label: "Stat Value",
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
type ILevoBlockBaseProps,
|
|
8
8
|
Section,
|
|
9
9
|
Typography,
|
|
10
|
+
Icon,
|
|
10
11
|
} from "@levo-so/studio";
|
|
11
12
|
import React from "react";
|
|
12
13
|
|
|
@@ -31,6 +32,7 @@ const Hero9: React.FC<ILevoBlockBaseProps<IHero9Content>> = ({ content }) => (
|
|
|
31
32
|
data-levo_group_item
|
|
32
33
|
elementKey={`stats.${index}.stat_wrapper`}
|
|
33
34
|
>
|
|
35
|
+
<Icon elementKey={`stats.${index}.icon`} />
|
|
34
36
|
<Heading elementKey={`stats.${index}.value`} />
|
|
35
37
|
<Typography elementKey={`stats.${index}.label`} />
|
|
36
38
|
</Box>
|
package/src/blocks/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ export const blocks: Record<string, BlockComponent> = {
|
|
|
10
10
|
"blog-post-1:v1": lazy(() => import("./blogs/blog-post-1")),
|
|
11
11
|
"blog-post-2:v1": lazy(() => import("./blogs/blog-post-2")),
|
|
12
12
|
"blog-post-3:v1": lazy(() => import("./blogs/blog-post-3")),
|
|
13
|
+
"calendar-1:v1": lazy(() => import("./calendar/calendar-1")),
|
|
13
14
|
"cards-2:v1": lazy(() => import("./cards/cards-2")),
|
|
14
15
|
"cards-3:v1": lazy(() => import("./cards/cards-3")),
|
|
15
16
|
"cards-4:v1": lazy(() => import("./cards/cards-4")),
|
|
@@ -21,6 +22,8 @@ export const blocks: Record<string, BlockComponent> = {
|
|
|
21
22
|
"cards-11:v1": lazy(() => import("./cards/cards-11")),
|
|
22
23
|
"cards-12:v1": lazy(() => import("./cards/cards-12")),
|
|
23
24
|
"cards-13:v1": lazy(() => import("./cards/cards-13")),
|
|
25
|
+
"cards-14:v1": lazy(() => import("./cards/cards-14")),
|
|
26
|
+
"cards-15:v1": lazy(() => import("./cards/cards-15")),
|
|
24
27
|
"contact-us-1:v1": lazy(() => import("./contact-us/contact-us-1")),
|
|
25
28
|
"contact-us-2:v1": lazy(() => import("./contact-us/contact-us-2")),
|
|
26
29
|
"content-1:v1": lazy(() => import("./content/content-1")),
|
|
@@ -30,6 +33,9 @@ export const blocks: Record<string, BlockComponent> = {
|
|
|
30
33
|
"content-5:v1": lazy(() => import("./content/content-5")),
|
|
31
34
|
"content-6:v1": lazy(() => import("./content/content-6")),
|
|
32
35
|
"content-7:v1": lazy(() => import("./content/content-7")),
|
|
36
|
+
"content-8:v1": lazy(() => import("./content/content-8")),
|
|
37
|
+
"content-9:v1": lazy(() => import("./content/content-9")),
|
|
38
|
+
"timeline-1:v1": lazy(() => import("./timeline/timeline-1")),
|
|
33
39
|
"cta-1:v1": lazy(() => import("./cta/cta-1")),
|
|
34
40
|
"cta-2:v1": lazy(() => import("./cta/cta-2")),
|
|
35
41
|
"cta-3:v1": lazy(() => import("./cta/cta-3")),
|
|
@@ -54,6 +60,9 @@ export const blocks: Record<string, BlockComponent> = {
|
|
|
54
60
|
"footer-4:v1": lazy(() => import("./footer/footer-4")),
|
|
55
61
|
"footer-5:v1": lazy(() => import("./footer/footer-5")),
|
|
56
62
|
"footer-6:v1": lazy(() => import("./footer/footer-6")),
|
|
63
|
+
"filter-listing-1:v1": lazy(
|
|
64
|
+
() => import("./filter-listing/filter-listing-1"),
|
|
65
|
+
),
|
|
57
66
|
"hero-1:v1": lazy(() => import("./hero/hero-1")),
|
|
58
67
|
"hero-2:v1": lazy(() => import("./hero/hero-2")),
|
|
59
68
|
"hero-4:v1": lazy(() => import("./hero/hero-4")),
|
|
@@ -63,27 +72,45 @@ export const blocks: Record<string, BlockComponent> = {
|
|
|
63
72
|
"hero-8:v1": lazy(() => import("./hero/hero-8")),
|
|
64
73
|
"hero-9:v1": lazy(() => import("./hero/hero-9")),
|
|
65
74
|
"hero-10:v1": lazy(() => import("./hero/hero-10")),
|
|
75
|
+
"hero-11:v1": lazy(() => import("./hero/hero-11")),
|
|
76
|
+
"hero-12:v1": lazy(() => import("./hero/hero-12")),
|
|
77
|
+
"hero-13:v1": lazy(() => import("./hero/hero-13")),
|
|
66
78
|
"logos-1:v1": lazy(() => import("./logos/logos-1")),
|
|
67
79
|
"navbar-1:v1": lazy(() => import("./navbar/navbar-1")),
|
|
68
80
|
"navbar-2:v1": lazy(() => import("./navbar/navbar-2")),
|
|
69
81
|
"navbar-3:v1": lazy(() => import("./navbar/navbar-3")),
|
|
70
82
|
"pricing-1:v1": lazy(() => import("./pricing/pricing-1")),
|
|
83
|
+
"polling-1:v1": lazy(() => import("./polling/polling-1")),
|
|
71
84
|
"products-listing-1:v1": lazy(() => import("./products/products-listing-1")),
|
|
85
|
+
"products-listing-2:v1": lazy(() => import("./products/products-listing-2")),
|
|
86
|
+
"products-listing-3:v1": lazy(() => import("./products/products-listing-3")),
|
|
72
87
|
"stats-1:v1": lazy(() => import("./stats/stats-1")),
|
|
73
88
|
"stats-2:v1": lazy(() => import("./stats/stats-2")),
|
|
74
89
|
"team-1:v1": lazy(() => import("./team/team-1")),
|
|
75
90
|
"team-2:v1": lazy(() => import("./team/team-2")),
|
|
76
91
|
"team-3:v1": lazy(() => import("./team/team-3")),
|
|
77
92
|
"team-4:v1": lazy(() => import("./team/team-4")),
|
|
93
|
+
"team-5:v1": lazy(() => import("./team/team-5")),
|
|
94
|
+
|
|
78
95
|
"testimonial-1:v1": lazy(() => import("./testimonial/testimonial-1")),
|
|
79
96
|
"testimonial-2:v1": lazy(() => import("./testimonial/testimonial-2")),
|
|
80
97
|
"testimonial-3:v1": lazy(() => import("./testimonial/testimonial-3")),
|
|
81
98
|
"testimonial-4:v1": lazy(() => import("./testimonial/testimonial-4")),
|
|
82
99
|
"testimonial-5:v1": lazy(() => import("./testimonial/testimonial-5")),
|
|
83
100
|
"testimonial-6:v1": lazy(() => import("./testimonial/testimonial-6")),
|
|
101
|
+
"testimonial-7:v1": lazy(() => import("./testimonial/testimonial-7")),
|
|
84
102
|
"terms-and-conditions-1:v1": lazy(
|
|
85
103
|
() => import("./termsAndPrivacy/terms-and-conditions-1"),
|
|
86
104
|
),
|
|
87
105
|
"carousel-1:v1": lazy(() => import("./carousel/carousel-1")),
|
|
106
|
+
"carousel-2:v1": lazy(() => import("./carousel/carousel-2")),
|
|
88
107
|
"profile-1:v1": lazy(() => import("./profile/profile-1")),
|
|
108
|
+
"profile-2:v1": lazy(() => import("./profile/profile-2")),
|
|
109
|
+
"profile-3:v1": lazy(() => import("./profile/profile-3")),
|
|
110
|
+
"edit-profile:v1": lazy(() => import("./users/edit-profile")),
|
|
111
|
+
"service-2:v1": lazy(() => import("./services/service-2")),
|
|
112
|
+
"service-3:v1": lazy(() => import("./services/service-3")),
|
|
113
|
+
"tab-1:v1": lazy(() => import("./tabs/tab-1")),
|
|
114
|
+
"tab-2:v1": lazy(() => import("./tabs/tab-2")),
|
|
115
|
+
"service-1:v1": lazy(() => import("./services/service-1")),
|
|
89
116
|
};
|
|
@@ -177,7 +177,7 @@ export const Navbar1: IBlock = {
|
|
|
177
177
|
{
|
|
178
178
|
key: "nav-item-title",
|
|
179
179
|
label: "Nav Item Title",
|
|
180
|
-
field_interface: "
|
|
180
|
+
field_interface: "TypographyWidget",
|
|
181
181
|
},
|
|
182
182
|
{
|
|
183
183
|
key: "nav-item-dropdown-trigger",
|
|
@@ -187,7 +187,7 @@ export const Navbar1: IBlock = {
|
|
|
187
187
|
{
|
|
188
188
|
key: "nav-item-dropdown-trigger-title",
|
|
189
189
|
label: "Nav Item Dropdown Trigger Title",
|
|
190
|
-
field_interface: "
|
|
190
|
+
field_interface: "TypographyWidget",
|
|
191
191
|
},
|
|
192
192
|
{
|
|
193
193
|
key: "sub-items",
|
|
@@ -218,7 +218,7 @@ export const Navbar1: IBlock = {
|
|
|
218
218
|
{
|
|
219
219
|
key: "sub-item-title",
|
|
220
220
|
label: "Sub Item Title",
|
|
221
|
-
field_interface: "
|
|
221
|
+
field_interface: "TypographyWidget",
|
|
222
222
|
},
|
|
223
223
|
{
|
|
224
224
|
key: "sub-item-description",
|
|
@@ -271,7 +271,7 @@ export const Navbar1: IBlock = {
|
|
|
271
271
|
{
|
|
272
272
|
key: "nav-item-title",
|
|
273
273
|
label: "Nav Item Title",
|
|
274
|
-
field_interface: "
|
|
274
|
+
field_interface: "TypographyWidget",
|
|
275
275
|
},
|
|
276
276
|
{
|
|
277
277
|
key: "nav-item-dropdown-container",
|
|
@@ -286,7 +286,7 @@ export const Navbar1: IBlock = {
|
|
|
286
286
|
{
|
|
287
287
|
key: "nav-item-dropdown-trigger-title",
|
|
288
288
|
label: "Nav Item Dropdown Trigger Title",
|
|
289
|
-
field_interface: "
|
|
289
|
+
field_interface: "TypographyWidget",
|
|
290
290
|
},
|
|
291
291
|
{
|
|
292
292
|
key: "sub-items",
|
|
@@ -322,7 +322,7 @@ export const Navbar1: IBlock = {
|
|
|
322
322
|
{
|
|
323
323
|
key: "sub-item-title",
|
|
324
324
|
label: "Sub Item Title",
|
|
325
|
-
field_interface: "
|
|
325
|
+
field_interface: "TypographyWidget",
|
|
326
326
|
},
|
|
327
327
|
{
|
|
328
328
|
key: "sub-item-description",
|
|
@@ -6,7 +6,6 @@ import type { ILevoBlockBaseProps } from "@levo-so/studio";
|
|
|
6
6
|
import {
|
|
7
7
|
Box,
|
|
8
8
|
Button,
|
|
9
|
-
Heading,
|
|
10
9
|
Image,
|
|
11
10
|
PopoverRoot,
|
|
12
11
|
PopoverContent,
|
|
@@ -41,7 +40,7 @@ const DropdownNavigationItem: React.FC<{
|
|
|
41
40
|
onMouseEnter={() => setIsDropdownPopoverOpen(true)}
|
|
42
41
|
data-levo_group_item
|
|
43
42
|
>
|
|
44
|
-
<
|
|
43
|
+
<Typography
|
|
45
44
|
elementKey={`desktop-nav-menu.${index}.nav-item-dropdown-trigger-title`}
|
|
46
45
|
/>
|
|
47
46
|
<ChevronDown
|
|
@@ -89,7 +88,7 @@ const DropdownNavigationItem: React.FC<{
|
|
|
89
88
|
<Box
|
|
90
89
|
elementKey={`desktop-nav-menu.${index}.sub-items.${idx}.sub-item-text-container`}
|
|
91
90
|
>
|
|
92
|
-
<
|
|
91
|
+
<Typography
|
|
93
92
|
elementKey={`desktop-nav-menu.${index}.sub-items.${idx}.sub-item-title`}
|
|
94
93
|
/>
|
|
95
94
|
<Typography
|
|
@@ -118,7 +117,7 @@ const DesktopNavItem: React.FC<{
|
|
|
118
117
|
<DropdownNavigationItem navItem={navItem} index={index} />
|
|
119
118
|
)}
|
|
120
119
|
{!isNavItemDropdown && (
|
|
121
|
-
<
|
|
120
|
+
<Typography
|
|
122
121
|
data-levo_group_item
|
|
123
122
|
elementKey={`desktop-nav-menu.${index}.nav-item-title`}
|
|
124
123
|
/>
|
|
@@ -160,7 +159,7 @@ const DropdownNavigationItemMobile: React.FC<{
|
|
|
160
159
|
elementKey={`mobile-nav-menu.${index}.nav-item-dropdown-trigger`}
|
|
161
160
|
onClick={() => setIsDropdownOpen((prev) => !prev)}
|
|
162
161
|
>
|
|
163
|
-
<
|
|
162
|
+
<Typography
|
|
164
163
|
elementKey={`mobile-nav-menu.${index}.nav-item-dropdown-trigger-title`}
|
|
165
164
|
/>
|
|
166
165
|
<ChevronDown
|
|
@@ -213,7 +212,7 @@ const DropdownNavigationItemMobile: React.FC<{
|
|
|
213
212
|
elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-title-container`}
|
|
214
213
|
onClick={() => setIsOpen(false)}
|
|
215
214
|
>
|
|
216
|
-
<
|
|
215
|
+
<Typography
|
|
217
216
|
elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-title`}
|
|
218
217
|
/>
|
|
219
218
|
</Box>
|
|
@@ -256,7 +255,7 @@ const MobileNavItem: React.FC<{
|
|
|
256
255
|
elementKey={`mobile-nav-menu.${index}.nav-item-title-container`}
|
|
257
256
|
onClick={() => setIsOpen(false)}
|
|
258
257
|
>
|
|
259
|
-
<
|
|
258
|
+
<Typography elementKey={`mobile-nav-menu.${index}.nav-item-title`} />
|
|
260
259
|
</Box>
|
|
261
260
|
)}
|
|
262
261
|
</React.Fragment>
|