@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.
- package/package.json +13 -14
- package/src/blocks/about-us/about-us-1.schema.ts +15 -30
- package/src/blocks/about-us/about-us-1.tsx +2 -4
- package/src/blocks/about-us/about-us-2.schema.ts +24 -48
- package/src/blocks/about-us/about-us-2.tsx +7 -13
- package/src/blocks/blogs/blog-listing-1.schema.ts +7 -14
- package/src/blocks/blogs/blog-listing-1.tsx +10 -21
- package/src/blocks/blogs/blog-listing-2.schema.ts +17 -34
- package/src/blocks/blogs/blog-listing-2.tsx +4 -12
- package/src/blocks/blogs/blog-listing-3.schema.ts +32 -64
- package/src/blocks/blogs/blog-listing-3.tsx +4 -12
- package/src/blocks/blogs/blog-post-1.schema.ts +9 -18
- package/src/blocks/blogs/blog-post-1.tsx +3 -14
- package/src/blocks/calendar/calendar-1.schema.ts +95 -6
- package/src/blocks/calendar/calendar-1.tsx +33 -29
- package/src/blocks/cards/cards-10.schema.ts +62 -124
- package/src/blocks/cards/cards-10.tsx +9 -14
- package/src/blocks/cards/cards-11.schema.ts +69 -138
- package/src/blocks/cards/cards-11.tsx +5 -11
- package/src/blocks/cards/cards-12.schema.ts +7 -14
- package/src/blocks/cards/cards-12.tsx +4 -10
- package/src/blocks/cards/cards-13.schema.ts +40 -80
- package/src/blocks/cards/cards-13.tsx +4 -6
- package/src/blocks/cards/cards-14.schema.ts +7 -14
- package/src/blocks/cards/cards-14.tsx +5 -11
- package/src/blocks/cards/cards-15.schema.ts +7 -14
- package/src/blocks/cards/cards-15.tsx +2 -4
- package/src/blocks/cards/cards-2.schema.ts +7 -14
- package/src/blocks/cards/cards-2.tsx +2 -15
- package/src/blocks/cards/cards-3.schema.ts +7 -14
- package/src/blocks/cards/cards-3.tsx +7 -13
- package/src/blocks/cards/cards-4.schema.ts +13 -26
- package/src/blocks/cards/cards-4.tsx +9 -15
- package/src/blocks/cards/cards-5.schema.ts +17 -34
- package/src/blocks/cards/cards-5.tsx +1 -9
- package/src/blocks/cards/cards-6.schema.ts +52 -104
- package/src/blocks/cards/cards-6.tsx +12 -20
- package/src/blocks/cards/cards-7.schema.ts +48 -96
- package/src/blocks/cards/cards-7.tsx +8 -27
- package/src/blocks/cards/cards-8.schema.ts +9 -20
- package/src/blocks/cards/cards-8.tsx +5 -11
- package/src/blocks/cards/cards-9.schema.ts +41 -82
- package/src/blocks/cards/cards-9.tsx +14 -22
- package/src/blocks/carousel/carousel-1.schema.ts +64 -128
- package/src/blocks/carousel/carousel-1.tsx +6 -8
- package/src/blocks/carousel/carousel-2.schema.ts +26 -52
- package/src/blocks/carousel/carousel-2.tsx +11 -23
- package/src/blocks/community/community-1.schema.ts +78 -32
- package/src/blocks/community/community-1.tsx +417 -550
- package/src/blocks/community/community-post-1.schema.ts +21 -30
- package/src/blocks/community/community-post-1.tsx +334 -84
- package/src/blocks/contact-us/contact-us-1.schema.ts +8 -16
- package/src/blocks/contact-us/contact-us-1.tsx +2 -12
- package/src/blocks/contact-us/contact-us-2.tsx +20 -31
- package/src/blocks/content/content-1.schema.ts +21 -42
- package/src/blocks/content/content-1.tsx +10 -17
- package/src/blocks/content/content-2.schema.ts +29 -58
- package/src/blocks/content/content-2.tsx +4 -4
- package/src/blocks/content/content-3.tsx +13 -29
- package/src/blocks/content/content-4.schema.ts +23 -46
- package/src/blocks/content/content-4.tsx +8 -17
- package/src/blocks/content/content-5.schema.ts +29 -24
- package/src/blocks/content/content-5.tsx +13 -27
- package/src/blocks/content/content-6.schema.ts +46 -94
- package/src/blocks/content/content-6.tsx +14 -31
- package/src/blocks/content/content-7.schema.ts +35 -72
- package/src/blocks/content/content-7.tsx +15 -31
- package/src/blocks/content/content-8.schema.ts +1 -6
- package/src/blocks/content/content-8.tsx +3 -3
- package/src/blocks/content/content-9.tsx +26 -41
- package/src/blocks/cta/cta-1.schema.ts +10 -20
- package/src/blocks/cta/cta-2.schema.ts +14 -28
- package/src/blocks/cta/cta-2.tsx +2 -6
- package/src/blocks/cta/cta-3.schema.ts +24 -50
- package/src/blocks/cta/cta-3.tsx +2 -6
- package/src/blocks/embed/embed-1.tsx +1 -9
- package/src/blocks/event/ClientOnly.tsx +1 -4
- package/src/blocks/event/event-details.schema.ts +16 -32
- package/src/blocks/event/event-details.tsx +8 -23
- package/src/blocks/event/event-listing-2.schema.ts +19 -38
- package/src/blocks/event/event-listing-2.tsx +12 -23
- package/src/blocks/event/event-listing-3.schema.ts +10 -20
- package/src/blocks/event/event-listing-3.tsx +9 -15
- package/src/blocks/event/event-listing-4.schema.ts +40 -80
- package/src/blocks/event/event-listing-4.tsx +5 -13
- package/src/blocks/event/event-listing.schema.ts +12 -24
- package/src/blocks/event/event-listing.tsx +9 -15
- package/src/blocks/faq/faq-1.schema.ts +8 -16
- package/src/blocks/faq/faq-1.tsx +19 -30
- package/src/blocks/faq/faq-2.schema.ts +8 -16
- package/src/blocks/faq/faq-2.tsx +11 -10
- package/src/blocks/faq/faq-3.schema.ts +9 -18
- package/src/blocks/faq/faq-3.tsx +11 -19
- package/src/blocks/features/features-1/features-1.tsx +2 -4
- package/src/blocks/features/features-1/variants/default.ts +4 -8
- package/src/blocks/features/features-1/variants/index.ts +1 -1
- package/src/blocks/features/features-2.schema.ts +32 -64
- package/src/blocks/features/features-2.tsx +8 -10
- package/src/blocks/features/features-3.schema.ts +32 -64
- package/src/blocks/features/features-3.tsx +7 -16
- package/src/blocks/features/features-4.schema.ts +16 -32
- package/src/blocks/features/features-4.tsx +3 -7
- package/src/blocks/features/features-5.schema.ts +1 -2
- package/src/blocks/features/features-5.tsx +6 -17
- package/src/blocks/features/features-6.schema.ts +32 -64
- package/src/blocks/features/features-6.tsx +16 -36
- package/src/blocks/filter-listing/filter-listing-1.tsx +12 -36
- package/src/blocks/floating-buttons/floating-button-1.schema.ts +5 -10
- package/src/blocks/floating-buttons/floating-button-1.tsx +3 -9
- package/src/blocks/footer/footer-1.schema.ts +8 -16
- package/src/blocks/footer/footer-1.tsx +15 -30
- package/src/blocks/footer/footer-2.schema.ts +8 -16
- package/src/blocks/footer/footer-2.tsx +17 -28
- package/src/blocks/footer/footer-3.schema.ts +1 -2
- package/src/blocks/footer/footer-3.tsx +9 -25
- package/src/blocks/footer/footer-4.schema.ts +8 -16
- package/src/blocks/footer/footer-4.tsx +35 -54
- package/src/blocks/footer/footer-5.schema.ts +10 -24
- package/src/blocks/footer/footer-5.tsx +14 -29
- package/src/blocks/footer/footer-6.schema.ts +10 -25
- package/src/blocks/footer/footer-6.tsx +29 -44
- package/src/blocks/form/form-1.schema.ts +144 -0
- package/src/blocks/form/form-1.tsx +33 -0
- package/src/blocks/hero/hero-1.schema.ts +45 -90
- package/src/blocks/hero/hero-1.tsx +4 -4
- package/src/blocks/hero/hero-10.schema.ts +1 -2
- package/src/blocks/hero/hero-10.tsx +4 -4
- package/src/blocks/hero/hero-11.schema.ts +18 -14
- package/src/blocks/hero/hero-11.tsx +4 -9
- package/src/blocks/hero/hero-12.schema.ts +18 -36
- package/src/blocks/hero/hero-12.tsx +3 -6
- package/src/blocks/hero/hero-13.schema.ts +8 -16
- package/src/blocks/hero/hero-13.tsx +1 -1
- package/src/blocks/hero/hero-2.schema.ts +3 -6
- package/src/blocks/hero/hero-2.tsx +3 -21
- package/src/blocks/hero/hero-3.schema.ts +28 -56
- package/src/blocks/hero/hero-3.tsx +6 -15
- package/src/blocks/hero/hero-4.schema.ts +22 -44
- package/src/blocks/hero/hero-4.tsx +16 -27
- package/src/blocks/hero/hero-5.schema.ts +21 -42
- package/src/blocks/hero/hero-5.tsx +15 -18
- package/src/blocks/hero/hero-6.schema.ts +35 -70
- package/src/blocks/hero/hero-6.tsx +6 -6
- package/src/blocks/hero/hero-7.schema.ts +24 -48
- package/src/blocks/hero/hero-7.tsx +2 -3
- package/src/blocks/hero/hero-8.schema.ts +24 -50
- package/src/blocks/hero/hero-8.tsx +5 -19
- package/src/blocks/hero/hero-9.schema.ts +8 -16
- package/src/blocks/hero/hero-9.tsx +3 -3
- package/src/blocks/index.ts +8 -11
- package/src/blocks/jobs/jobs-1.schema.ts +990 -0
- package/src/blocks/jobs/jobs-1.tsx +145 -0
- package/src/blocks/logos/logos-1.schema.ts +53 -113
- package/src/blocks/logos/logos-1.tsx +7 -7
- package/src/blocks/navbar/navbar-1.schema.ts +15 -28
- package/src/blocks/navbar/navbar-1.tsx +24 -60
- package/src/blocks/navbar/navbar-2.schema.ts +14 -28
- package/src/blocks/navbar/navbar-2.tsx +26 -56
- package/src/blocks/navbar/navbar-3.schema.ts +11 -22
- package/src/blocks/navbar/navbar-3.tsx +33 -82
- package/src/blocks/navbar/navbar-4.schema.ts +14343 -0
- package/src/blocks/navbar/navbar-4.tsx +546 -0
- package/src/blocks/polling/polling-1.schema.ts +1 -2
- package/src/blocks/polling/polling-1.tsx +24 -39
- package/src/blocks/pricing/pricing-1.schema.ts +13 -26
- package/src/blocks/pricing/pricing-1.tsx +20 -44
- package/src/blocks/products/products-listing-1.schema.ts +32 -64
- package/src/blocks/products/products-listing-1.tsx +6 -12
- package/src/blocks/products/products-listing-2.schema.ts +26 -54
- package/src/blocks/products/products-listing-2.tsx +8 -17
- package/src/blocks/products/products-listing-3.schema.ts +25 -52
- package/src/blocks/products/products-listing-3.tsx +87 -93
- package/src/blocks/profile/profile-1.schema.ts +7 -14
- package/src/blocks/profile/profile-1.tsx +2 -8
- package/src/blocks/profile/profile-2.schema.ts +9 -18
- package/src/blocks/profile/profile-2.tsx +4 -6
- package/src/blocks/profile/profile-3.schema.ts +21 -42
- package/src/blocks/profile/profile-3.tsx +18 -40
- package/src/blocks/{blogs/blog-post-2.schema.ts → profile/profile-4.schema.ts} +75 -97
- package/src/blocks/{blogs/blog-post-2.tsx → profile/profile-4.tsx} +32 -61
- package/src/blocks/{blogs/blog-post-3.schema.ts → profile/profile-5.schema.ts} +6 -6
- package/src/blocks/{blogs/blog-post-3.tsx → profile/profile-5.tsx} +6 -11
- package/src/blocks/services/service-1.schema.ts +20 -40
- package/src/blocks/services/service-1.tsx +45 -71
- package/src/blocks/services/service-2.schema.ts +8 -16
- package/src/blocks/services/service-2.tsx +4 -6
- package/src/blocks/services/service-3.schema.ts +12 -24
- package/src/blocks/services/service-3.tsx +4 -6
- package/src/blocks/stats/stats-1.tsx +3 -14
- package/src/blocks/stats/stats-2.tsx +3 -14
- package/src/blocks/stats/variants/index.ts +1 -1
- package/src/blocks/tabs/tab-1.schema.ts +4 -8
- package/src/blocks/tabs/tab-1.tsx +47 -64
- package/src/blocks/tabs/tab-2.schema.ts +13 -26
- package/src/blocks/tabs/tab-2.tsx +14 -15
- package/src/blocks/team/team-1.schema.ts +28 -56
- package/src/blocks/team/team-1.tsx +7 -21
- package/src/blocks/team/team-2.schema.ts +104 -208
- package/src/blocks/team/team-2.tsx +15 -33
- package/src/blocks/team/team-3.schema.ts +24 -48
- package/src/blocks/team/team-3.tsx +8 -14
- package/src/blocks/team/team-4.schema.ts +25 -50
- package/src/blocks/team/team-4.tsx +15 -24
- package/src/blocks/team/team-5.schema.ts +14 -28
- package/src/blocks/team/team-5.tsx +1 -1
- package/src/blocks/termsAndPrivacy/terms-and-conditions-1.tsx +3 -5
- package/src/blocks/testimonial/testimonial-1.schema.ts +1 -2
- package/src/blocks/testimonial/testimonial-1.tsx +10 -19
- package/src/blocks/testimonial/testimonial-2.schema.ts +16 -32
- package/src/blocks/testimonial/testimonial-2.tsx +17 -36
- package/src/blocks/testimonial/testimonial-3.schema.ts +8 -16
- package/src/blocks/testimonial/testimonial-3.tsx +13 -26
- package/src/blocks/testimonial/testimonial-4.schema.ts +94 -188
- package/src/blocks/testimonial/testimonial-4.tsx +12 -33
- package/src/blocks/testimonial/testimonial-5/variants/default.ts +24 -48
- package/src/blocks/testimonial/testimonial-5/variants/index.ts +1 -1
- package/src/blocks/testimonial/testimonial-5/variants/testimonialWithLogo.ts +4 -8
- package/src/blocks/testimonial/testimonial-5/variants/testimonialWithRatings.ts +24 -48
- package/src/blocks/testimonial/testimonial-5.schema.ts +2 -6
- package/src/blocks/testimonial/testimonial-5.tsx +15 -25
- package/src/blocks/testimonial/testimonial-6.schema.ts +26 -52
- package/src/blocks/testimonial/testimonial-6.tsx +9 -25
- package/src/blocks/testimonial/testimonial-7.tsx +15 -26
- package/src/blocks/timeline/timeline-1.schema.ts +34 -68
- package/src/blocks/timeline/timeline-1.tsx +2 -6
- package/src/blocks/users/edit-profile.tsx +10 -22
- package/src/constants/index.ts +3 -6
- package/src/index.ts +1 -1
- package/src/schemas/blocks.ts +14 -8
- 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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
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
|
-
|
|
66
|
-
|
|
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
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
|
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
|
|
27
|
+
export type IProfile5Content = typeof DEFAULT_CONTENT;
|
|
28
28
|
|
|
29
|
-
export const
|
|
30
|
-
category_id: "
|
|
31
|
-
title: "
|
|
32
|
-
key: "
|
|
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
|
|
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 {
|
|
12
|
+
import type { IProfile5Content } from "./profile-5.schema";
|
|
13
13
|
|
|
14
|
-
const
|
|
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="
|
|
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={`
|
|
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
|
|
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
|
-
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
"
|
|
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
|
-
|
|
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
|
-
|
|
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}.
|
|
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}.
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
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
|
-
|
|
95
|
+
key={`feature-${featureIndex}`}
|
|
96
|
+
data-levo_group_item
|
|
97
|
+
elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.feature-container`}
|
|
131
98
|
>
|
|
132
|
-
<
|
|
133
|
-
elementKey={`service-cards.${cardIndex}.service-features.${featureIndex}.
|
|
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
|
-
|
|
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
|
-
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
"
|
|
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
|
|
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 (
|