@levo-so/blocks 0.1.60 → 0.1.62
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,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
AccordionRoot,
|
|
2
|
+
AccordionContent,
|
|
4
3
|
AccordionItem,
|
|
4
|
+
AccordionRoot,
|
|
5
5
|
AccordionTrigger,
|
|
6
|
-
AccordionContent,
|
|
7
6
|
Box,
|
|
8
7
|
Button,
|
|
9
8
|
Container,
|
|
10
9
|
Heading,
|
|
11
10
|
Icon,
|
|
11
|
+
type ILevoBlockBaseProps,
|
|
12
12
|
IntegrationFilters,
|
|
13
13
|
Media,
|
|
14
14
|
Section,
|
|
@@ -18,9 +18,7 @@ import {
|
|
|
18
18
|
|
|
19
19
|
import type { IFilterListing1Content } from "./filter-listing-1.schema";
|
|
20
20
|
|
|
21
|
-
const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({
|
|
22
|
-
config,
|
|
23
|
-
}) => {
|
|
21
|
+
const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({ config }) => {
|
|
24
22
|
const { data, query, setQuery, meta } = useContentEngine("listing");
|
|
25
23
|
|
|
26
24
|
const handleNext = () => setQuery({ page: (query?.page || 0) + 1 });
|
|
@@ -33,19 +31,10 @@ const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({
|
|
|
33
31
|
</Box>
|
|
34
32
|
<Box elementKey="listing_wrapper">
|
|
35
33
|
{config?.listing_levoGroup?.filters?.schema && (
|
|
36
|
-
<AccordionRoot
|
|
37
|
-
|
|
38
|
-
elementKey="filters_accordion"
|
|
39
|
-
defaultValue="filters"
|
|
40
|
-
>
|
|
41
|
-
<AccordionItem
|
|
42
|
-
value="filters"
|
|
43
|
-
elementKey="filters_accordion_item"
|
|
44
|
-
>
|
|
34
|
+
<AccordionRoot type="single" elementKey="filters_accordion" defaultValue="filters">
|
|
35
|
+
<AccordionItem value="filters" elementKey="filters_accordion_item">
|
|
45
36
|
<AccordionTrigger elementKey="filters_accordion_trigger">
|
|
46
|
-
<Typography elementKey="filters_accordion_title">
|
|
47
|
-
Filters
|
|
48
|
-
</Typography>
|
|
37
|
+
<Typography elementKey="filters_accordion_title">Filters</Typography>
|
|
49
38
|
</AccordionTrigger>
|
|
50
39
|
<AccordionContent elementKey="filters_accordion_content">
|
|
51
40
|
<Box elementKey="filters_box">
|
|
@@ -53,10 +42,7 @@ const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({
|
|
|
53
42
|
query={query}
|
|
54
43
|
setQuery={setQuery}
|
|
55
44
|
schema={config?.listing_levoGroup?.filters?.schema}
|
|
56
|
-
selectedFields={
|
|
57
|
-
config?.listing_levoGroup?.filters?.selected_fields ??
|
|
58
|
-
[]
|
|
59
|
-
}
|
|
45
|
+
selectedFields={config?.listing_levoGroup?.filters?.selected_fields ?? []}
|
|
60
46
|
/>
|
|
61
47
|
</Box>
|
|
62
48
|
</AccordionContent>
|
|
@@ -70,29 +56,19 @@ const FilterListing1: React.FC<ILevoBlockBaseProps<IFilterListing1Content>> = ({
|
|
|
70
56
|
data-levo_group_item
|
|
71
57
|
elementKey={`listing.${index}.card`}
|
|
72
58
|
>
|
|
73
|
-
<Media
|
|
74
|
-
elementKey={`listing.${index}.media`}
|
|
75
|
-
alt="Filter Media"
|
|
76
|
-
/>
|
|
59
|
+
<Media elementKey={`listing.${index}.media`} alt="Filter Media" />
|
|
77
60
|
<Box elementKey={`listing.${index}.filter_info_wrapper`}>
|
|
78
61
|
<Box elementKey={`listing.${index}.filter_content`}>
|
|
79
62
|
<Heading elementKey={`listing.${index}.title`} />
|
|
80
|
-
<Box
|
|
81
|
-
elementKey={`listing.${index}.points_levoGroup`}
|
|
82
|
-
data-levo_group
|
|
83
|
-
>
|
|
63
|
+
<Box elementKey={`listing.${index}.points_levoGroup`} data-levo_group>
|
|
84
64
|
{(item.points || [])?.map((_: any, pIndex: number) => (
|
|
85
65
|
<Box
|
|
86
66
|
key={pIndex}
|
|
87
67
|
elementKey={`listing.${index}.points.${pIndex}.container`}
|
|
88
68
|
data-levo_group_item
|
|
89
69
|
>
|
|
90
|
-
<Icon
|
|
91
|
-
|
|
92
|
-
/>
|
|
93
|
-
<Typography
|
|
94
|
-
elementKey={`listing.${index}.points.${pIndex}.text`}
|
|
95
|
-
/>
|
|
70
|
+
<Icon elementKey={`listing.${index}.points.${pIndex}.icon`} />
|
|
71
|
+
<Typography elementKey={`listing.${index}.points.${pIndex}.text`} />
|
|
96
72
|
</Box>
|
|
97
73
|
))}
|
|
98
74
|
</Box>
|
|
@@ -8,8 +8,7 @@ const DEFAULT_CONTENT = {
|
|
|
8
8
|
kind: "custom",
|
|
9
9
|
data: {
|
|
10
10
|
id: "R6ervNbOZfcD9",
|
|
11
|
-
location:
|
|
12
|
-
"https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd.png",
|
|
11
|
+
location: "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd.png",
|
|
13
12
|
mimetype: "image/png",
|
|
14
13
|
kind: "image",
|
|
15
14
|
srcset: {
|
|
@@ -19,14 +18,10 @@ const DEFAULT_CONTENT = {
|
|
|
19
18
|
"https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1200w.webp",
|
|
20
19
|
"1920w":
|
|
21
20
|
"https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1920w.webp",
|
|
22
|
-
"320w":
|
|
23
|
-
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
"750w":
|
|
27
|
-
"https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-750w.webp",
|
|
28
|
-
"828w":
|
|
29
|
-
"https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-828w.webp",
|
|
21
|
+
"320w": "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-320w.webp",
|
|
22
|
+
"640w": "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-640w.webp",
|
|
23
|
+
"750w": "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-750w.webp",
|
|
24
|
+
"828w": "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-828w.webp",
|
|
30
25
|
path: "https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1080w.webp 1080w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-1920w.webp 1920w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-320w.webp 320w, https://static.levocdn.com/WLZ1TXTD/whatsapp-logopng4-2EYM5YIjokcd-640w.webp 640w",
|
|
31
26
|
},
|
|
32
27
|
},
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import { Box, Button, type ILevoBlockBaseProps } from "@levo-so/studio";
|
|
2
|
+
import type React from "react";
|
|
3
3
|
|
|
4
4
|
import type { IFloatingButton1Content } from "./floating-button-1.schema";
|
|
5
5
|
|
|
6
|
-
const FloatingButton1: React.FC<
|
|
7
|
-
ILevoBlockBaseProps<IFloatingButton1Content>
|
|
8
|
-
> = ({ content }) => (
|
|
6
|
+
const FloatingButton1: React.FC<ILevoBlockBaseProps<IFloatingButton1Content>> = ({ content }) => (
|
|
9
7
|
<Box elementKey="button_group_levoGroup" data-levo_group>
|
|
10
8
|
{(content?.button_group ?? []).map((_, index) => (
|
|
11
|
-
<Button
|
|
12
|
-
key={index}
|
|
13
|
-
elementKey={`button_group.${index}.button`}
|
|
14
|
-
data-levo_group_item
|
|
15
|
-
/>
|
|
9
|
+
<Button key={index} elementKey={`button_group.${index}.button`} data-levo_group_item />
|
|
16
10
|
))}
|
|
17
11
|
</Box>
|
|
18
12
|
);
|
|
@@ -15,23 +15,15 @@ const MEDIA = {
|
|
|
15
15
|
id: "A8sG1BvgdtgE",
|
|
16
16
|
filename: "footer-1-logo.png",
|
|
17
17
|
kind: "image",
|
|
18
|
-
location:
|
|
19
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV.png",
|
|
18
|
+
location: "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV.png",
|
|
20
19
|
srcset: {
|
|
21
|
-
"1080w":
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-320w.webp",
|
|
29
|
-
"640w":
|
|
30
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-640w.webp",
|
|
31
|
-
"750w":
|
|
32
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-750w.webp",
|
|
33
|
-
"828w":
|
|
34
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-828w.webp",
|
|
20
|
+
"1080w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1080w.webp",
|
|
21
|
+
"1200w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1200w.webp",
|
|
22
|
+
"1920w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1920w.webp",
|
|
23
|
+
"320w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-320w.webp",
|
|
24
|
+
"640w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-640w.webp",
|
|
25
|
+
"750w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-750w.webp",
|
|
26
|
+
"828w": "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-828w.webp",
|
|
35
27
|
path: "https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-640w.webp 640w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1080w.webp 1080w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-1920w.webp 1920w, https://static.levocdn.com/WLZ1TXTD/footer-1-logo-w9fpJutzREEV-320w.webp 320w",
|
|
36
28
|
},
|
|
37
29
|
mimetype: "image/png",
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import {
|
|
3
2
|
Box,
|
|
4
3
|
Container,
|
|
5
4
|
Heading,
|
|
6
5
|
Icon,
|
|
6
|
+
type ILevoBlockBaseProps,
|
|
7
7
|
Image,
|
|
8
8
|
Section,
|
|
9
9
|
Typography,
|
|
10
|
-
type ILevoBlockBaseProps,
|
|
11
10
|
} from "@levo-so/studio";
|
|
11
|
+
import React from "react";
|
|
12
12
|
|
|
13
|
-
import {
|
|
13
|
+
import type { IFooter1Content } from "./footer-1.schema";
|
|
14
14
|
|
|
15
|
-
const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({
|
|
16
|
-
content,
|
|
17
|
-
}) => (
|
|
15
|
+
const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({ content }) => (
|
|
18
16
|
<Section elementKey="layout">
|
|
19
17
|
<Container elementKey="container">
|
|
20
18
|
<Box elementKey="contentWrapper">
|
|
@@ -22,15 +20,13 @@ const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({
|
|
|
22
20
|
<Image elementKey="logo" height={26} width={26} alt="footer-logo" />
|
|
23
21
|
<Typography elementKey="logoDescription" />
|
|
24
22
|
<Box elementKey="icon_links_levoGroup" data-levo_group>
|
|
25
|
-
{((content as any)?.icon_links ?? [])?.map(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
),
|
|
33
|
-
)}
|
|
23
|
+
{((content as any)?.icon_links ?? [])?.map((_: any, index: number) => (
|
|
24
|
+
<Icon
|
|
25
|
+
key={`footer-1-icon-${index}`}
|
|
26
|
+
data-levo_group_item
|
|
27
|
+
elementKey={`icon_links.${index}.icon`}
|
|
28
|
+
/>
|
|
29
|
+
))}
|
|
34
30
|
</Box>
|
|
35
31
|
</Box>
|
|
36
32
|
<Box data-levo_group elementKey="links_levoGroup">
|
|
@@ -41,19 +37,14 @@ const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({
|
|
|
41
37
|
data-levo_group_item
|
|
42
38
|
>
|
|
43
39
|
<Heading elementKey={`links.${index}.category`} />
|
|
44
|
-
<Box
|
|
45
|
-
elementKey={`links.${index}.links_levoGroup`}
|
|
46
|
-
data-levo_group
|
|
47
|
-
>
|
|
40
|
+
<Box elementKey={`links.${index}.links_levoGroup`} data-levo_group>
|
|
48
41
|
{(content?.links?.[index]?.links ?? [])?.map((_, subIndex) => (
|
|
49
42
|
<Box
|
|
50
43
|
elementKey={`links.${index}.links.${subIndex}.iconCtaWrapper`}
|
|
51
44
|
key={`footer-1-links-${index}-${subIndex}`}
|
|
52
45
|
data-levo_group_item
|
|
53
46
|
>
|
|
54
|
-
<Icon
|
|
55
|
-
elementKey={`links.${index}.links.${subIndex}.icon`}
|
|
56
|
-
/>
|
|
47
|
+
<Icon elementKey={`links.${index}.links.${subIndex}.icon`} />
|
|
57
48
|
<Typography
|
|
58
49
|
elementKey={`links.${index}.links.${subIndex}.cta`}
|
|
59
50
|
key={`footer-1-links-${index}-${subIndex}`}
|
|
@@ -70,15 +61,9 @@ const Footer1: React.FC<ILevoBlockBaseProps<IFooter1Content>> = ({
|
|
|
70
61
|
<Box elementKey="footerBottomRightArea_levoGroup" data-levo_group>
|
|
71
62
|
{(content?.footerBottomRightArea ?? [])?.map((_, index) => (
|
|
72
63
|
<React.Fragment key={`footer-1-right-area-${index}`}>
|
|
73
|
-
<Typography
|
|
74
|
-
data-levo_group_item
|
|
75
|
-
elementKey={`footerBottomRightArea.${index}.cta`}
|
|
76
|
-
/>
|
|
64
|
+
<Typography data-levo_group_item elementKey={`footerBottomRightArea.${index}.cta`} />
|
|
77
65
|
{index < (content?.footerBottomRightArea?.length ?? 0) - 1 && (
|
|
78
|
-
<Box
|
|
79
|
-
elementKey={`footerBottomRightArea.${index}.separator`}
|
|
80
|
-
data-levo_group_item
|
|
81
|
-
/>
|
|
66
|
+
<Box elementKey={`footerBottomRightArea.${index}.separator`} data-levo_group_item />
|
|
82
67
|
)}
|
|
83
68
|
</React.Fragment>
|
|
84
69
|
))}
|
|
@@ -15,23 +15,15 @@ const MEDIA = {
|
|
|
15
15
|
id: "6Hg5xxyErnEM",
|
|
16
16
|
filename: "footer-2-logo.png",
|
|
17
17
|
kind: "image",
|
|
18
|
-
location:
|
|
19
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW.png",
|
|
18
|
+
location: "https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW.png",
|
|
20
19
|
srcset: {
|
|
21
|
-
"1080w":
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-320w.webp",
|
|
29
|
-
"640w":
|
|
30
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-640w.webp",
|
|
31
|
-
"750w":
|
|
32
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-750w.webp",
|
|
33
|
-
"828w":
|
|
34
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-828w.webp",
|
|
20
|
+
"1080w": "https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-1080w.webp",
|
|
21
|
+
"1200w": "https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-1200w.webp",
|
|
22
|
+
"1920w": "https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-1920w.webp",
|
|
23
|
+
"320w": "https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-320w.webp",
|
|
24
|
+
"640w": "https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-640w.webp",
|
|
25
|
+
"750w": "https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-750w.webp",
|
|
26
|
+
"828w": "https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-828w.webp",
|
|
35
27
|
path: "https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-1080w.webp 1080w, https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-1920w.webp 1920w, https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-320w.webp 320w, https://static.levocdn.com/WLZ1TXTD/footer-2-logo-sR8ojjdBVGGW-640w.webp 640w",
|
|
36
28
|
},
|
|
37
29
|
mimetype: "image/png",
|
|
@@ -3,17 +3,15 @@ import {
|
|
|
3
3
|
Container,
|
|
4
4
|
Heading,
|
|
5
5
|
Icon,
|
|
6
|
+
type ILevoBlockBaseProps,
|
|
6
7
|
Image,
|
|
7
8
|
Section,
|
|
8
9
|
Typography,
|
|
9
|
-
type ILevoBlockBaseProps,
|
|
10
10
|
} from "@levo-so/studio";
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import type { IFooter2Content } from "./footer-2.schema";
|
|
13
13
|
|
|
14
|
-
const Footer2: React.FC<ILevoBlockBaseProps<IFooter2Content>> = ({
|
|
15
|
-
content,
|
|
16
|
-
}) => (
|
|
14
|
+
const Footer2: React.FC<ILevoBlockBaseProps<IFooter2Content>> = ({ content }) => (
|
|
17
15
|
<Section elementKey="layout">
|
|
18
16
|
<Container elementKey="container">
|
|
19
17
|
<Box elementKey="contentWrapper">
|
|
@@ -30,39 +28,30 @@ const Footer2: React.FC<ILevoBlockBaseProps<IFooter2Content>> = ({
|
|
|
30
28
|
data-levo_group_item
|
|
31
29
|
>
|
|
32
30
|
<Heading elementKey={`links.${index}.category`} />
|
|
33
|
-
<Box
|
|
34
|
-
elementKey={`links.${index}.links_levoGroup`}
|
|
35
|
-
data-levo_group
|
|
36
|
-
>
|
|
31
|
+
<Box elementKey={`links.${index}.links_levoGroup`} data-levo_group>
|
|
37
32
|
{(link?.links ?? [])?.map((subLink: any, subIndex: number) => (
|
|
38
33
|
<Box
|
|
39
34
|
elementKey={`links.${index}.links.${subIndex}.wrapper`}
|
|
40
35
|
key={`footer-2-links-${index}-${subIndex}`}
|
|
41
36
|
data-levo_group_item
|
|
42
37
|
>
|
|
43
|
-
<Icon
|
|
44
|
-
|
|
45
|
-
/>
|
|
46
|
-
<Typography
|
|
47
|
-
elementKey={`links.${index}.links.${subIndex}.cta`}
|
|
48
|
-
/>
|
|
38
|
+
<Icon elementKey={`links.${index}.links.${subIndex}.icon`} />
|
|
39
|
+
<Typography elementKey={`links.${index}.links.${subIndex}.cta`} />
|
|
49
40
|
<Box
|
|
50
41
|
data-levo_group
|
|
51
42
|
elementKey={`links.${index}.links.${subIndex}.icon_links_levoGroup`}
|
|
52
43
|
>
|
|
53
|
-
{(subLink?.icon_links ?? []).map(
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
),
|
|
65
|
-
)}
|
|
44
|
+
{(subLink?.icon_links ?? []).map((_: unknown, linkIndex: number) => (
|
|
45
|
+
<Box
|
|
46
|
+
data-levo_group_item
|
|
47
|
+
elementKey={`links.${index}.links.${subIndex}.icon_links.${linkIndex}.wrapper`}
|
|
48
|
+
key={`footer-2-icon-links-${index}-${subIndex}-${linkIndex}`}
|
|
49
|
+
>
|
|
50
|
+
<Icon
|
|
51
|
+
elementKey={`links.${index}.links.${subIndex}.icon_links.${linkIndex}.icon`}
|
|
52
|
+
/>
|
|
53
|
+
</Box>
|
|
54
|
+
))}
|
|
66
55
|
</Box>
|
|
67
56
|
</Box>
|
|
68
57
|
))}
|
|
@@ -135,8 +135,7 @@ export const Footer3: IBlock = {
|
|
|
135
135
|
title: "Footer 3",
|
|
136
136
|
key: "footer-3",
|
|
137
137
|
version: "v1",
|
|
138
|
-
prompt_description:
|
|
139
|
-
"Professional footer with company info, service links, and contact details",
|
|
138
|
+
prompt_description: "Professional footer with company info, service links, and contact details",
|
|
140
139
|
content_schema: [
|
|
141
140
|
{
|
|
142
141
|
key: "layout",
|
|
@@ -3,17 +3,15 @@ import {
|
|
|
3
3
|
Container,
|
|
4
4
|
Heading,
|
|
5
5
|
Icon,
|
|
6
|
+
type ILevoBlockBaseProps,
|
|
6
7
|
Section,
|
|
7
8
|
Typography,
|
|
8
|
-
type ILevoBlockBaseProps,
|
|
9
9
|
} from "@levo-so/studio";
|
|
10
10
|
import React from "react";
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import type { IFooter3Content } from "./footer-3.schema";
|
|
13
13
|
|
|
14
|
-
const Footer3: React.FC<ILevoBlockBaseProps<IFooter3Content>> = ({
|
|
15
|
-
content,
|
|
16
|
-
}) => (
|
|
14
|
+
const Footer3: React.FC<ILevoBlockBaseProps<IFooter3Content>> = ({ content }) => (
|
|
17
15
|
<Section elementKey="layout">
|
|
18
16
|
<Container elementKey="container">
|
|
19
17
|
<Box elementKey="mainFooterWrapper">
|
|
@@ -25,14 +23,10 @@ const Footer3: React.FC<ILevoBlockBaseProps<IFooter3Content>> = ({
|
|
|
25
23
|
data-levo_group_item
|
|
26
24
|
>
|
|
27
25
|
<Heading elementKey={`links.${sectionIndex}.category`} />
|
|
28
|
-
<Box
|
|
29
|
-
elementKey={`links.${sectionIndex}.links_levoGroup`}
|
|
30
|
-
data-levo_group
|
|
31
|
-
>
|
|
26
|
+
<Box elementKey={`links.${sectionIndex}.links_levoGroup`} data-levo_group>
|
|
32
27
|
{(section?.links ?? [])?.map((link, linkIndex) => {
|
|
33
28
|
// Check if this is a contact item (has icon and contactWrapper)
|
|
34
|
-
const isContactItem =
|
|
35
|
-
"icon" in link && "contactWrapper" in link;
|
|
29
|
+
const isContactItem = "icon" in link && "contactWrapper" in link;
|
|
36
30
|
|
|
37
31
|
if (isContactItem) {
|
|
38
32
|
return (
|
|
@@ -41,12 +35,8 @@ const Footer3: React.FC<ILevoBlockBaseProps<IFooter3Content>> = ({
|
|
|
41
35
|
key={`footer-3-contact-${sectionIndex}-${linkIndex}`}
|
|
42
36
|
data-levo_group_item
|
|
43
37
|
>
|
|
44
|
-
<Icon
|
|
45
|
-
|
|
46
|
-
/>
|
|
47
|
-
<Typography
|
|
48
|
-
elementKey={`links.${sectionIndex}.links.${linkIndex}.text`}
|
|
49
|
-
/>
|
|
38
|
+
<Icon elementKey={`links.${sectionIndex}.links.${linkIndex}.icon`} />
|
|
39
|
+
<Typography elementKey={`links.${sectionIndex}.links.${linkIndex}.text`} />
|
|
50
40
|
</Box>
|
|
51
41
|
);
|
|
52
42
|
} else {
|
|
@@ -70,15 +60,9 @@ const Footer3: React.FC<ILevoBlockBaseProps<IFooter3Content>> = ({
|
|
|
70
60
|
<Box elementKey="bottomLinks_levoGroup" data-levo_group>
|
|
71
61
|
{(content?.bottomLinks ?? [])?.map((_, index) => (
|
|
72
62
|
<React.Fragment key={`footer-3-bottom-${index}`}>
|
|
73
|
-
<Typography
|
|
74
|
-
data-levo_group_item
|
|
75
|
-
elementKey={`bottomLinks.${index}.text`}
|
|
76
|
-
/>
|
|
63
|
+
<Typography data-levo_group_item elementKey={`bottomLinks.${index}.text`} />
|
|
77
64
|
{index < (content?.bottomLinks?.length ?? 0) - 1 && (
|
|
78
|
-
<Box
|
|
79
|
-
elementKey={`bottomLinks.${index}.separator`}
|
|
80
|
-
data-levo_group_item
|
|
81
|
-
/>
|
|
65
|
+
<Box elementKey={`bottomLinks.${index}.separator`} data-levo_group_item />
|
|
82
66
|
)}
|
|
83
67
|
</React.Fragment>
|
|
84
68
|
))}
|
|
@@ -15,23 +15,15 @@ const MEDIA = {
|
|
|
15
15
|
id: "xlotCSMGiB8T",
|
|
16
16
|
filename: "footer-4-logo.png",
|
|
17
17
|
kind: "image",
|
|
18
|
-
location:
|
|
19
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h.png",
|
|
18
|
+
location: "https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h.png",
|
|
20
19
|
srcset: {
|
|
21
|
-
"1080w":
|
|
22
|
-
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-320w.webp",
|
|
29
|
-
"640w":
|
|
30
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-640w.webp",
|
|
31
|
-
"750w":
|
|
32
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-750w.webp",
|
|
33
|
-
"828w":
|
|
34
|
-
"https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-828w.webp",
|
|
20
|
+
"1080w": "https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-1080w.webp",
|
|
21
|
+
"1200w": "https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-1200w.webp",
|
|
22
|
+
"1920w": "https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-1920w.webp",
|
|
23
|
+
"320w": "https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-320w.webp",
|
|
24
|
+
"640w": "https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-640w.webp",
|
|
25
|
+
"750w": "https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-750w.webp",
|
|
26
|
+
"828w": "https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-828w.webp",
|
|
35
27
|
path: "https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-1920w.webp 1920w, https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-320w.webp 320w, https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-1080w.webp 1080w, https://static.levocdn.com/WLZ1TXTD/footer-4-logo-30Wfpd1Qp22h-640w.webp 640w",
|
|
36
28
|
},
|
|
37
29
|
mimetype: "image/png",
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import React from "react";
|
|
2
1
|
import {
|
|
3
2
|
Box,
|
|
4
3
|
Container,
|
|
5
4
|
Heading,
|
|
6
5
|
Icon,
|
|
6
|
+
type ILevoBlockBaseProps,
|
|
7
7
|
Image,
|
|
8
8
|
Section,
|
|
9
9
|
Typography,
|
|
10
|
-
type ILevoBlockBaseProps,
|
|
11
10
|
} from "@levo-so/studio";
|
|
11
|
+
import React from "react";
|
|
12
12
|
|
|
13
|
-
import {
|
|
13
|
+
import type { IFooter4Content } from "./footer-4.schema";
|
|
14
14
|
|
|
15
|
-
const Footer4: React.FC<ILevoBlockBaseProps<IFooter4Content>> = ({
|
|
16
|
-
content,
|
|
17
|
-
}) => (
|
|
15
|
+
const Footer4: React.FC<ILevoBlockBaseProps<IFooter4Content>> = ({ content }) => (
|
|
18
16
|
<Section elementKey="layout">
|
|
19
17
|
<Container elementKey="container">
|
|
20
18
|
<Box elementKey="contentWrapper">
|
|
@@ -22,18 +20,16 @@ const Footer4: React.FC<ILevoBlockBaseProps<IFooter4Content>> = ({
|
|
|
22
20
|
<Image elementKey="logo" height={26} width={26} alt="footer-logo" />
|
|
23
21
|
<Typography elementKey="logoDescription" />
|
|
24
22
|
<Box elementKey="icon_links_levoGroup" data-levo_group>
|
|
25
|
-
{((content as any)?.icon_links ?? [])?.map(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
),
|
|
36
|
-
)}
|
|
23
|
+
{((content as any)?.icon_links ?? [])?.map((_: any, index: number) => (
|
|
24
|
+
<Box
|
|
25
|
+
key={`footer-4-icon-${index}`}
|
|
26
|
+
data-levo_group_item
|
|
27
|
+
elementKey={`icon_links.${index}.iconWrapper`}
|
|
28
|
+
>
|
|
29
|
+
<Icon elementKey={`icon_links.${index}.icon`} />
|
|
30
|
+
<Typography elementKey={`icon_links.${index}.description`} />
|
|
31
|
+
</Box>
|
|
32
|
+
))}
|
|
37
33
|
</Box>
|
|
38
34
|
</Box>
|
|
39
35
|
<Box data-levo_group elementKey="links_levoGroup">
|
|
@@ -44,27 +40,20 @@ const Footer4: React.FC<ILevoBlockBaseProps<IFooter4Content>> = ({
|
|
|
44
40
|
data-levo_group_item
|
|
45
41
|
>
|
|
46
42
|
<Heading elementKey={`links.${index}.category`} />
|
|
47
|
-
<Box
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
43
|
+
<Box elementKey={`links.${index}.links_levoGroup`} data-levo_group>
|
|
44
|
+
{(content?.links?.[index]?.links ?? [])?.map((_: any, subIndex: number) => (
|
|
45
|
+
<Box
|
|
46
|
+
elementKey={`links.${index}.links.${subIndex}.iconWrapper`}
|
|
47
|
+
key={`footer-4-links-${index}-${subIndex}`}
|
|
48
|
+
data-levo_group_item
|
|
49
|
+
>
|
|
50
|
+
<Icon elementKey={`links.${index}.links.${subIndex}.icon`} />
|
|
51
|
+
<Typography
|
|
52
|
+
elementKey={`links.${index}.links.${subIndex}.cta`}
|
|
55
53
|
key={`footer-4-links-${index}-${subIndex}`}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
elementKey={`links.${index}.links.${subIndex}.icon`}
|
|
60
|
-
/>
|
|
61
|
-
<Typography
|
|
62
|
-
elementKey={`links.${index}.links.${subIndex}.cta`}
|
|
63
|
-
key={`footer-4-links-${index}-${subIndex}`}
|
|
64
|
-
/>
|
|
65
|
-
</Box>
|
|
66
|
-
),
|
|
67
|
-
)}
|
|
54
|
+
/>
|
|
55
|
+
</Box>
|
|
56
|
+
))}
|
|
68
57
|
</Box>
|
|
69
58
|
</Box>
|
|
70
59
|
))}
|
|
@@ -73,22 +62,14 @@ const Footer4: React.FC<ILevoBlockBaseProps<IFooter4Content>> = ({
|
|
|
73
62
|
<Box elementKey="footerBottomWrapper">
|
|
74
63
|
<Typography elementKey="copyright" />
|
|
75
64
|
<Box elementKey="footerBottomRightArea_levoGroup" data-levo_group>
|
|
76
|
-
{(content?.footerBottomRightArea ?? [])?.map(
|
|
77
|
-
|
|
78
|
-
<
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
<Box
|
|
85
|
-
elementKey={`footerBottomRightArea.${index}.separator`}
|
|
86
|
-
data-levo_group_item
|
|
87
|
-
/>
|
|
88
|
-
)}
|
|
89
|
-
</React.Fragment>
|
|
90
|
-
),
|
|
91
|
-
)}
|
|
65
|
+
{(content?.footerBottomRightArea ?? [])?.map((_: any, index: number) => (
|
|
66
|
+
<React.Fragment key={`footer-4-right-area-${index}`}>
|
|
67
|
+
<Typography data-levo_group_item elementKey={`footerBottomRightArea.${index}.cta`} />
|
|
68
|
+
{index < (content?.footerBottomRightArea?.length ?? 0) - 1 && (
|
|
69
|
+
<Box elementKey={`footerBottomRightArea.${index}.separator`} data-levo_group_item />
|
|
70
|
+
)}
|
|
71
|
+
</React.Fragment>
|
|
72
|
+
))}
|
|
92
73
|
</Box>
|
|
93
74
|
</Box>
|
|
94
75
|
</Container>
|