@levo-so/blocks 0.1.81 → 0.1.83
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 +8 -5
- package/src/blocks/blogs/blog-post-1.schema.ts +7 -4
- package/src/blocks/blogs/blog-post-1.tsx +1 -1
- package/src/blocks/cards/cards-19.schema.ts +1341 -0
- package/src/blocks/cards/cards-19.tsx +89 -0
- package/src/blocks/cards/cards-20.schema.ts +536 -0
- package/src/blocks/cards/cards-20.tsx +85 -0
- package/src/blocks/cards/cards-21.schema.ts +611 -0
- package/src/blocks/cards/cards-21.tsx +93 -0
- package/src/blocks/cards/cards-22.schema.ts +3488 -0
- package/src/blocks/cards/cards-22.tsx +100 -0
- package/src/blocks/cards/cards-23.schema.ts +388 -0
- package/src/blocks/cards/cards-23.tsx +66 -0
- package/src/blocks/community/MEMBER_RESPONSE.ts +141 -0
- package/src/blocks/community/community-1.schema.ts +1 -6
- package/src/blocks/community/community-1.tsx +70 -6
- package/src/blocks/community/community-post-1.schema.ts +1 -5
- package/src/blocks/community/community-post-1.tsx +85 -13
- package/src/blocks/event/event-details.schema.ts +25 -3
- package/src/blocks/index.ts +148 -122
- package/src/index.ts +1 -2
- package/src/schemas/blocks.ts +10 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { ILevoBlockBaseProps } from "@levo-so/studio";
|
|
2
|
+
import {
|
|
3
|
+
Box,
|
|
4
|
+
Button,
|
|
5
|
+
Container,
|
|
6
|
+
Heading,
|
|
7
|
+
Icon,
|
|
8
|
+
Image,
|
|
9
|
+
Section,
|
|
10
|
+
Typography,
|
|
11
|
+
useContentEngine,
|
|
12
|
+
} from "@levo-so/studio";
|
|
13
|
+
import dayjs from "dayjs";
|
|
14
|
+
|
|
15
|
+
import { ClientOnly } from "../event/ClientOnly";
|
|
16
|
+
import type { ICards22Content } from "./cards-22.schema";
|
|
17
|
+
|
|
18
|
+
const Cards22: React.FC<ILevoBlockBaseProps<ICards22Content>> = () => {
|
|
19
|
+
const { data, query, setQuery, meta } = useContentEngine("events");
|
|
20
|
+
|
|
21
|
+
const handleNext = () => setQuery({ page: (query?.page || 1) + 1 });
|
|
22
|
+
const handlePrevious = () => setQuery({ page: (query?.page || 1) - 1 });
|
|
23
|
+
return (
|
|
24
|
+
<Section elementKey="layout">
|
|
25
|
+
<Container elementKey="container">
|
|
26
|
+
<Box elementKey="header-container">
|
|
27
|
+
<Heading elementKey="title" />
|
|
28
|
+
<Button elementKey="cta-button" />
|
|
29
|
+
</Box>
|
|
30
|
+
|
|
31
|
+
<Box elementKey="events_levoGroup" data-levo_group>
|
|
32
|
+
{(data || [])?.map((item: any, index: number) => (
|
|
33
|
+
<Box
|
|
34
|
+
key={`events-listing-element-${index}`}
|
|
35
|
+
data-levo_group_item
|
|
36
|
+
elementKey={`events.${index}.eventWrapper`}
|
|
37
|
+
>
|
|
38
|
+
<Image elementKey={`events.${index}.image`} alt="event poster" />
|
|
39
|
+
<Box elementKey={`events.${index}.text-wrapper`}>
|
|
40
|
+
<Box elementKey={`events.${index}.content-container`}>
|
|
41
|
+
<Typography elementKey={`events.${index}.caption-text`} />
|
|
42
|
+
<Typography elementKey={`events.${index}.title`} />
|
|
43
|
+
|
|
44
|
+
<Box elementKey={`events.${index}.text-container`}>
|
|
45
|
+
<Box elementKey={`events.${index}.date-wrapper`}>
|
|
46
|
+
<Icon elementKey={`events.${index}.date-icon`} />
|
|
47
|
+
<Typography elementKey={`events.${index}.publishedAt-header`}>
|
|
48
|
+
<ClientOnly>
|
|
49
|
+
{dayjs(item?.["publishedAt-header"]).format("MMM D, YYYY")}
|
|
50
|
+
</ClientOnly>
|
|
51
|
+
</Typography>
|
|
52
|
+
<Typography elementKey={`events.${index}.role-text`} />
|
|
53
|
+
</Box>
|
|
54
|
+
|
|
55
|
+
<Box elementKey={`events.${index}.event-end-date-wrapper`}>
|
|
56
|
+
<Icon elementKey={`events.${index}.event-end-date-icon`} />
|
|
57
|
+
<Typography elementKey={`events.${index}.event-end-date`}>
|
|
58
|
+
<ClientOnly>
|
|
59
|
+
{dayjs(item?.["event-end-date"]).format("MMM D, YYYY")}
|
|
60
|
+
</ClientOnly>
|
|
61
|
+
</Typography>
|
|
62
|
+
<Typography elementKey={`events.${index}.company-text`} />
|
|
63
|
+
</Box>
|
|
64
|
+
</Box>
|
|
65
|
+
<Typography elementKey={`events.${index}.description`} />
|
|
66
|
+
<Box elementKey={`events.${index}.social_media_icon_wrapper`}>
|
|
67
|
+
<Icon elementKey={`events.${index}.social_media_icon_1`} />
|
|
68
|
+
<Icon elementKey={`events.${index}.social_media_icon_2`} />
|
|
69
|
+
<Icon elementKey={`events.${index}.social_media_icon_3`} />
|
|
70
|
+
</Box>
|
|
71
|
+
<Button elementKey={`events.${index}.cta`} />
|
|
72
|
+
</Box>
|
|
73
|
+
</Box>
|
|
74
|
+
</Box>
|
|
75
|
+
))}
|
|
76
|
+
</Box>
|
|
77
|
+
{(meta?.pages || 0) > 1 && (
|
|
78
|
+
<Box elementKey="paginationWrapper">
|
|
79
|
+
<Button
|
|
80
|
+
elementKey="paginationLeftButton"
|
|
81
|
+
disabled={query?.page === 1}
|
|
82
|
+
onClick={handlePrevious}
|
|
83
|
+
/>
|
|
84
|
+
|
|
85
|
+
<Typography elementKey="paginationText">
|
|
86
|
+
{`${query?.page || 1}/${meta?.pages || 0}`}
|
|
87
|
+
</Typography>
|
|
88
|
+
<Button
|
|
89
|
+
elementKey="paginationRightButton"
|
|
90
|
+
onClick={handleNext}
|
|
91
|
+
disabled={query?.page === meta?.pages}
|
|
92
|
+
/>
|
|
93
|
+
</Box>
|
|
94
|
+
)}
|
|
95
|
+
</Container>
|
|
96
|
+
</Section>
|
|
97
|
+
);
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
export default Cards22;
|
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
import type { IBlock } from "@levo-so/studio";
|
|
2
|
+
|
|
3
|
+
const IMG = {
|
|
4
|
+
object: "media",
|
|
5
|
+
id: "CISGrrD9ohrh",
|
|
6
|
+
workspace_id: "WLZ1TXTD",
|
|
7
|
+
folder_id: null,
|
|
8
|
+
filename: "cards-10-1.png",
|
|
9
|
+
kind: "image",
|
|
10
|
+
path: "WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA.png",
|
|
11
|
+
location: "https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA.png",
|
|
12
|
+
metadata: {
|
|
13
|
+
etag: '"18f3d5149ae311c287da5e758ec0fc60"',
|
|
14
|
+
mimetype: "image/png",
|
|
15
|
+
size: 1187245,
|
|
16
|
+
},
|
|
17
|
+
srcset: {
|
|
18
|
+
"1080w": "https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-1080w.webp",
|
|
19
|
+
"1200w": "https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-1200w.webp",
|
|
20
|
+
"1920w": "https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-1920w.webp",
|
|
21
|
+
"320w": "https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-320w.webp",
|
|
22
|
+
"640w": "https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-640w.webp",
|
|
23
|
+
"750w": "https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-750w.webp",
|
|
24
|
+
"828w": "https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-828w.webp",
|
|
25
|
+
path: "https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-320w.webp 320w, https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-750w.webp 750w, https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-828w.webp 828w, https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-1080w.webp 1080w, https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-1200w.webp 1200w, https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-1920w.webp 1920w, https://static.levocdn.com/WLZ1TXTD/cards-10-1-PzNvMN1Lc8rA-640w.webp 640w",
|
|
26
|
+
},
|
|
27
|
+
tags: [],
|
|
28
|
+
created_at: "2025-12-20T08:15:13.432Z",
|
|
29
|
+
updated_at: "2025-12-20T08:15:13.432Z",
|
|
30
|
+
created_by: null,
|
|
31
|
+
updated_by: null,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const ICON = {
|
|
35
|
+
kind: "icon",
|
|
36
|
+
data: {
|
|
37
|
+
id: "check-circle",
|
|
38
|
+
label: "Check Circle",
|
|
39
|
+
tags: ["check", "circle", "success", "done"],
|
|
40
|
+
svgCode:
|
|
41
|
+
'<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM11.0026 16L18.0737 8.92893L16.6595 7.51472L11.0026 13.1716L8.17421 10.3431L6.76 11.7574L11.0026 16Z" fill="currentColor"/></svg>',
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const DEFAULT_CONTENT = {
|
|
46
|
+
layout: null,
|
|
47
|
+
container: null,
|
|
48
|
+
header_section: null,
|
|
49
|
+
main_title: "<h2>Featured Properties</h2>",
|
|
50
|
+
description: "<p>Explore our premium real estate collection</p>",
|
|
51
|
+
cards_grid: null,
|
|
52
|
+
cards: [
|
|
53
|
+
{
|
|
54
|
+
card: null,
|
|
55
|
+
card_content: null,
|
|
56
|
+
image: IMG,
|
|
57
|
+
title: "Nivaara",
|
|
58
|
+
description: "<p>Available Now</p>",
|
|
59
|
+
features: [
|
|
60
|
+
{
|
|
61
|
+
feature_container: null,
|
|
62
|
+
icon: ICON,
|
|
63
|
+
text: "<p>2 BHK</p>",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
feature_container: null,
|
|
67
|
+
icon: ICON,
|
|
68
|
+
text: "<p>1200 Sq. Ft</p>",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
feature_container: null,
|
|
72
|
+
icon: ICON,
|
|
73
|
+
text: "<p>1/2 Available</p>",
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
bottom_typography: "<p>From ₹31,000 <small>/month (per room)</small></p>",
|
|
77
|
+
buttons: [
|
|
78
|
+
{
|
|
79
|
+
cta: "Read More",
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
card: null,
|
|
85
|
+
card_content: null,
|
|
86
|
+
image: IMG,
|
|
87
|
+
|
|
88
|
+
title: "Nivaara",
|
|
89
|
+
description: "<p>Available Now</p>",
|
|
90
|
+
features: [
|
|
91
|
+
{
|
|
92
|
+
feature_container: null,
|
|
93
|
+
icon: {
|
|
94
|
+
kind: "icon",
|
|
95
|
+
data: {
|
|
96
|
+
id: "check-circle",
|
|
97
|
+
label: "Check Circle",
|
|
98
|
+
tags: ["check", "circle", "success", "done"],
|
|
99
|
+
svgCode:
|
|
100
|
+
'<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM11.0026 16L18.0737 8.92893L16.6595 7.51472L11.0026 13.1716L8.17421 10.3431L6.76 11.7574L11.0026 16Z" fill="currentColor"/></svg>',
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
text: "<p>2 BHK</p>",
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
feature_container: null,
|
|
107
|
+
icon: {
|
|
108
|
+
kind: "icon",
|
|
109
|
+
data: {
|
|
110
|
+
id: "check-circle",
|
|
111
|
+
label: "Check Circle",
|
|
112
|
+
tags: ["check", "circle", "success", "done"],
|
|
113
|
+
svgCode:
|
|
114
|
+
'<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM11.0026 16L18.0737 8.92893L16.6595 7.51472L11.0026 13.1716L8.17421 10.3431L6.76 11.7574L11.0026 16Z" fill="currentColor"/></svg>',
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
text: "<p>1200 Sq. Ft</p>",
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
feature_container: null,
|
|
121
|
+
icon: {
|
|
122
|
+
kind: "icon",
|
|
123
|
+
data: {
|
|
124
|
+
id: "check-circle",
|
|
125
|
+
label: "Check Circle",
|
|
126
|
+
tags: ["check", "circle", "success", "done"],
|
|
127
|
+
svgCode:
|
|
128
|
+
'<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM11.0026 16L18.0737 8.92893L16.6595 7.51472L11.0026 13.1716L8.17421 10.3431L6.76 11.7574L11.0026 16Z" fill="currentColor"/></svg>',
|
|
129
|
+
},
|
|
130
|
+
},
|
|
131
|
+
text: "<p>1/2 Available</p>",
|
|
132
|
+
},
|
|
133
|
+
],
|
|
134
|
+
bottom_typography: "<p>From ₹31,000 <small>/month (per room)</small></p>",
|
|
135
|
+
buttons: [
|
|
136
|
+
{
|
|
137
|
+
cta: "Read More",
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
card: null,
|
|
143
|
+
card_content: null,
|
|
144
|
+
image: IMG,
|
|
145
|
+
title: "Nivaara",
|
|
146
|
+
description: "<p>Available Now</p>",
|
|
147
|
+
features: [
|
|
148
|
+
{
|
|
149
|
+
feature_container: null,
|
|
150
|
+
icon: {
|
|
151
|
+
kind: "icon",
|
|
152
|
+
data: {
|
|
153
|
+
id: "check-circle",
|
|
154
|
+
label: "Check Circle",
|
|
155
|
+
tags: ["check", "circle", "success", "done"],
|
|
156
|
+
svgCode:
|
|
157
|
+
'<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM11.0026 16L18.0737 8.92893L16.6595 7.51472L11.0026 13.1716L8.17421 10.3431L6.76 11.7574L11.0026 16Z" fill="currentColor"/></svg>',
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
text: "<p>2 BHK</p>",
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
feature_container: null,
|
|
164
|
+
icon: {
|
|
165
|
+
kind: "icon",
|
|
166
|
+
data: {
|
|
167
|
+
id: "check-circle",
|
|
168
|
+
label: "Check Circle",
|
|
169
|
+
tags: ["check", "circle", "success", "done"],
|
|
170
|
+
svgCode:
|
|
171
|
+
'<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM11.0026 16L18.0737 8.92893L16.6595 7.51472L11.0026 13.1716L8.17421 10.3431L6.76 11.7574L11.0026 16Z" fill="currentColor"/></svg>',
|
|
172
|
+
},
|
|
173
|
+
},
|
|
174
|
+
text: "<p>1200 Sq. Ft</p>",
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
feature_container: null,
|
|
178
|
+
icon: {
|
|
179
|
+
kind: "icon",
|
|
180
|
+
data: {
|
|
181
|
+
id: "check-circle",
|
|
182
|
+
label: "Check Circle",
|
|
183
|
+
tags: ["check", "circle", "success", "done"],
|
|
184
|
+
svgCode:
|
|
185
|
+
'<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22ZM11.0026 16L18.0737 8.92893L16.6595 7.51472L11.0026 13.1716L8.17421 10.3431L6.76 11.7574L11.0026 16Z" fill="currentColor"/></svg>',
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
text: "<p>1/2 Available</p>",
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
bottom_typography: "<p>From ₹31,000 <small>/month (per room)</small></p>",
|
|
192
|
+
buttons: [
|
|
193
|
+
{
|
|
194
|
+
cta: "Read More",
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
export type ICards23Content = typeof DEFAULT_CONTENT;
|
|
202
|
+
|
|
203
|
+
export const Cards23: IBlock = {
|
|
204
|
+
category_id: "cards",
|
|
205
|
+
title: "Cards 23",
|
|
206
|
+
key: "cards-23",
|
|
207
|
+
version: "v1",
|
|
208
|
+
prompt_description:
|
|
209
|
+
"Real estate listing cards with image, title, availability status, feature icons (BHK, Area, Availability, House Rules), and price. Repetable cards with flexible feature rows.",
|
|
210
|
+
content_schema: [
|
|
211
|
+
{
|
|
212
|
+
key: "layout",
|
|
213
|
+
label: "Layout",
|
|
214
|
+
field_interface: "LayoutWidget",
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
key: "container",
|
|
218
|
+
label: "Container",
|
|
219
|
+
field_interface: "ContainerWidget",
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
key: "header_section",
|
|
223
|
+
label: "Header Section",
|
|
224
|
+
field_interface: "BoxWidget",
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
key: "main_title",
|
|
228
|
+
label: "Main Title",
|
|
229
|
+
field_interface: "HeadingWidget",
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
key: "description",
|
|
233
|
+
label: "Description",
|
|
234
|
+
field_interface: "TypographyWidget",
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
key: "cards_grid",
|
|
238
|
+
label: "Cards Grid",
|
|
239
|
+
field_interface: "BoxWidget",
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
key: "cards",
|
|
243
|
+
label: "Cards",
|
|
244
|
+
kind: "group",
|
|
245
|
+
field_interface: "BoxWidget",
|
|
246
|
+
fields: [
|
|
247
|
+
{
|
|
248
|
+
key: "card",
|
|
249
|
+
label: "Card",
|
|
250
|
+
field_interface: "BoxWidget",
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
key: "card_content",
|
|
254
|
+
label: "Card Content Container",
|
|
255
|
+
field_interface: "BoxWidget",
|
|
256
|
+
},
|
|
257
|
+
{
|
|
258
|
+
key: "image",
|
|
259
|
+
label: "Image",
|
|
260
|
+
field_interface: "ImageWidget",
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
key: "title",
|
|
264
|
+
label: "Title",
|
|
265
|
+
field_interface: "HeadingWidget",
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
key: "description",
|
|
269
|
+
label: "Description",
|
|
270
|
+
field_interface: "TypographyWidget",
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
key: "features",
|
|
274
|
+
label: "Features",
|
|
275
|
+
kind: "group",
|
|
276
|
+
field_interface: "BoxWidget",
|
|
277
|
+
fields: [
|
|
278
|
+
{
|
|
279
|
+
key: "feature_container",
|
|
280
|
+
label: "Feature Container",
|
|
281
|
+
field_interface: "BoxWidget",
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
key: "icon",
|
|
285
|
+
label: "Icon",
|
|
286
|
+
field_interface: "IconWidget",
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
key: "text",
|
|
290
|
+
label: "Text",
|
|
291
|
+
field_interface: "TypographyWidget",
|
|
292
|
+
},
|
|
293
|
+
],
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
key: "bottom_typography",
|
|
297
|
+
label: "Bottom Typography",
|
|
298
|
+
field_interface: "TypographyWidget",
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
key: "buttons",
|
|
302
|
+
label: "Buttons",
|
|
303
|
+
kind: "group",
|
|
304
|
+
field_interface: "BoxWidget",
|
|
305
|
+
fields: [
|
|
306
|
+
{
|
|
307
|
+
key: "cta",
|
|
308
|
+
label: "CTA",
|
|
309
|
+
field_interface: "ButtonWidget",
|
|
310
|
+
},
|
|
311
|
+
],
|
|
312
|
+
},
|
|
313
|
+
],
|
|
314
|
+
},
|
|
315
|
+
],
|
|
316
|
+
layouts: [
|
|
317
|
+
{
|
|
318
|
+
title: "Default",
|
|
319
|
+
key: "default",
|
|
320
|
+
styles: {
|
|
321
|
+
layout: {},
|
|
322
|
+
container: {},
|
|
323
|
+
header_section: {
|
|
324
|
+
display: "flex",
|
|
325
|
+
"flex-direction": "column",
|
|
326
|
+
"margin-bottom": "3xl",
|
|
327
|
+
"row-gap": "base",
|
|
328
|
+
},
|
|
329
|
+
main_title: {},
|
|
330
|
+
description: {
|
|
331
|
+
"max-width": "600px",
|
|
332
|
+
color: "text-2",
|
|
333
|
+
},
|
|
334
|
+
cards_grid: {
|
|
335
|
+
width: "100%",
|
|
336
|
+
},
|
|
337
|
+
cards_levoGroupItem: {
|
|
338
|
+
features: {},
|
|
339
|
+
features_levoGroupItem: {
|
|
340
|
+
feature_container: {
|
|
341
|
+
display: "flex",
|
|
342
|
+
"justify-content": "center",
|
|
343
|
+
"align-items": "center",
|
|
344
|
+
"column-gap": "2xs",
|
|
345
|
+
},
|
|
346
|
+
},
|
|
347
|
+
card: {
|
|
348
|
+
"border-style": "solid",
|
|
349
|
+
"border-width": "1px",
|
|
350
|
+
"border-color": "var(--color-border)",
|
|
351
|
+
"border-radius": "base",
|
|
352
|
+
},
|
|
353
|
+
card_content: {
|
|
354
|
+
padding: "base",
|
|
355
|
+
display: "flex",
|
|
356
|
+
"flex-direction": "column",
|
|
357
|
+
"row-gap": "2xs",
|
|
358
|
+
},
|
|
359
|
+
title: {
|
|
360
|
+
"font-size": "xl",
|
|
361
|
+
},
|
|
362
|
+
features_levoGroup: {
|
|
363
|
+
display: "flex",
|
|
364
|
+
"column-gap": "base",
|
|
365
|
+
},
|
|
366
|
+
},
|
|
367
|
+
cards: [{}, {}, {}],
|
|
368
|
+
cards_levoGroup: {
|
|
369
|
+
display: "flex",
|
|
370
|
+
"column-gap": "base",
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
content: DEFAULT_CONTENT,
|
|
374
|
+
config: {
|
|
375
|
+
main_title: {
|
|
376
|
+
selectedVariants: {
|
|
377
|
+
Heading_Level: "H2",
|
|
378
|
+
},
|
|
379
|
+
},
|
|
380
|
+
"cards.$.title": {
|
|
381
|
+
selectedVariants: {
|
|
382
|
+
Heading_Level: "H3",
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
},
|
|
386
|
+
},
|
|
387
|
+
],
|
|
388
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Box,
|
|
3
|
+
Button,
|
|
4
|
+
Container,
|
|
5
|
+
Heading,
|
|
6
|
+
Icon,
|
|
7
|
+
type ILevoBlockBaseProps,
|
|
8
|
+
Image,
|
|
9
|
+
Section,
|
|
10
|
+
Typography,
|
|
11
|
+
} from "@levo-so/studio";
|
|
12
|
+
import type React from "react";
|
|
13
|
+
|
|
14
|
+
import type { ICards23Content } from "./cards-23.schema";
|
|
15
|
+
|
|
16
|
+
const Cards23: React.FC<ILevoBlockBaseProps<ICards23Content>> = ({ content }) => (
|
|
17
|
+
<Section elementKey="layout">
|
|
18
|
+
<Container elementKey="container">
|
|
19
|
+
<Box elementKey="header_section">
|
|
20
|
+
<Heading elementKey="main_title" />
|
|
21
|
+
<Typography elementKey="description" />
|
|
22
|
+
</Box>
|
|
23
|
+
<Box elementKey="cards_grid">
|
|
24
|
+
<Box elementKey="cards_levoGroup" data-levo_group>
|
|
25
|
+
{(content?.cards ?? []).map((card: any, index: number) => (
|
|
26
|
+
<Box
|
|
27
|
+
key={`cards-23-card-${index}`}
|
|
28
|
+
data-levo_group_item
|
|
29
|
+
elementKey={`cards.${index}.card`}
|
|
30
|
+
>
|
|
31
|
+
<Image elementKey={`cards.${index}.image`} alt="Card image" />
|
|
32
|
+
<Box elementKey={`cards.${index}.card_content`}>
|
|
33
|
+
<Heading elementKey={`cards.${index}.title`} />
|
|
34
|
+
<Typography elementKey={`cards.${index}.description`} />
|
|
35
|
+
<Box elementKey={`cards.${index}.features_levoGroup`} data-levo_group>
|
|
36
|
+
{(card?.features ?? []).map((_: any, featureIndex: number) => (
|
|
37
|
+
<Box
|
|
38
|
+
key={`cards-${index}-feature-${featureIndex}`}
|
|
39
|
+
data-levo_group_item
|
|
40
|
+
elementKey={`cards.${index}.features.${featureIndex}.feature_container`}
|
|
41
|
+
>
|
|
42
|
+
<Icon elementKey={`cards.${index}.features.${featureIndex}.icon`} />
|
|
43
|
+
<Typography elementKey={`cards.${index}.features.${featureIndex}.text`} />
|
|
44
|
+
</Box>
|
|
45
|
+
))}
|
|
46
|
+
</Box>
|
|
47
|
+
<Typography elementKey={`cards.${index}.bottom_typography`} />
|
|
48
|
+
<Box elementKey={`cards.${index}.buttons_levoGroup`} data-levo_group>
|
|
49
|
+
{(card?.buttons ?? []).map((_: any, btnIndex: number) => (
|
|
50
|
+
<Button
|
|
51
|
+
key={`cards-${index}-button-${btnIndex}`}
|
|
52
|
+
data-levo_group_item
|
|
53
|
+
elementKey={`cards.${index}.buttons.${btnIndex}.cta`}
|
|
54
|
+
/>
|
|
55
|
+
))}
|
|
56
|
+
</Box>
|
|
57
|
+
</Box>
|
|
58
|
+
</Box>
|
|
59
|
+
))}
|
|
60
|
+
</Box>
|
|
61
|
+
</Box>
|
|
62
|
+
</Container>
|
|
63
|
+
</Section>
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
export default Cards23;
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
export const SAMPLE_GET_MEMBER_RESPONSE = {
|
|
2
|
+
content: {
|
|
3
|
+
data: {
|
|
4
|
+
member: {
|
|
5
|
+
_id: "7434551783313809540",
|
|
6
|
+
forum: {
|
|
7
|
+
_id: "7433534778029270324",
|
|
8
|
+
name: "Sample Forum",
|
|
9
|
+
slug: "sample-forum",
|
|
10
|
+
description: "",
|
|
11
|
+
cover_image: null,
|
|
12
|
+
status: "active",
|
|
13
|
+
settings: {
|
|
14
|
+
enable_ai_moderation_for_comment: false,
|
|
15
|
+
enable_auto_approve_for_comment: true,
|
|
16
|
+
allow_reporting_for_comment: true,
|
|
17
|
+
allow_moderator_to_delete_comment: true,
|
|
18
|
+
allow_moderator_to_unpublish_comment: true,
|
|
19
|
+
enable_ai_moderation_for_post: false,
|
|
20
|
+
enable_auto_approve_for_post: true,
|
|
21
|
+
allow_reporting_for_post: true,
|
|
22
|
+
allow_moderator_to_delete_post: true,
|
|
23
|
+
allow_moderator_to_unpublish_post: true,
|
|
24
|
+
allow_users_to_create_post: true,
|
|
25
|
+
invite_only: true,
|
|
26
|
+
allow_join_requests: true,
|
|
27
|
+
allow_public_view_for_post: false,
|
|
28
|
+
allow_public_view_for_comment: false,
|
|
29
|
+
},
|
|
30
|
+
created_at: "2026-02-28T15:33:19.493Z",
|
|
31
|
+
created_by: null,
|
|
32
|
+
updated_at: "2026-02-28T15:33:19.493Z",
|
|
33
|
+
updated_by: null,
|
|
34
|
+
posts: [],
|
|
35
|
+
categories: [],
|
|
36
|
+
tags: [],
|
|
37
|
+
},
|
|
38
|
+
account: {
|
|
39
|
+
_id: "preview-user-id",
|
|
40
|
+
first_name: "John",
|
|
41
|
+
last_name: "Doe",
|
|
42
|
+
slug: "john-doe",
|
|
43
|
+
username: "johndoe",
|
|
44
|
+
email: "john.doe@example.com",
|
|
45
|
+
display_email: "john.doe@example.com",
|
|
46
|
+
reducted_email: "jo***@example.com",
|
|
47
|
+
email_verified: true,
|
|
48
|
+
email_verified_at: new Date().toISOString(),
|
|
49
|
+
verified_at: new Date().toISOString(),
|
|
50
|
+
mobile: null,
|
|
51
|
+
reducted_mobile: null,
|
|
52
|
+
mobile_verified: false,
|
|
53
|
+
mobile_verified_at: null,
|
|
54
|
+
profile_picture: null,
|
|
55
|
+
oauth_credentials: [],
|
|
56
|
+
account_locked_at: null,
|
|
57
|
+
credentials_expired_at: null,
|
|
58
|
+
deactivated_at: null,
|
|
59
|
+
last_access_at: new Date().toISOString(),
|
|
60
|
+
flagged_at: null,
|
|
61
|
+
created_at: new Date().toISOString(),
|
|
62
|
+
updated_at: new Date().toISOString(),
|
|
63
|
+
deleted_at: null,
|
|
64
|
+
},
|
|
65
|
+
created_by: {
|
|
66
|
+
approval_status: null,
|
|
67
|
+
approval_updated_at: null,
|
|
68
|
+
approval_updated_by: null,
|
|
69
|
+
bio: "",
|
|
70
|
+
_id: "URB3BU",
|
|
71
|
+
whatsapp_number: "",
|
|
72
|
+
preferred_mode_of_networking: "",
|
|
73
|
+
tags: [],
|
|
74
|
+
role: [],
|
|
75
|
+
expectations: [],
|
|
76
|
+
website: "",
|
|
77
|
+
city: "",
|
|
78
|
+
summery: "",
|
|
79
|
+
microvc_coupon: "",
|
|
80
|
+
organization_name: "",
|
|
81
|
+
socials: null,
|
|
82
|
+
designation: "",
|
|
83
|
+
notes: "",
|
|
84
|
+
partner_type: "",
|
|
85
|
+
account_locked_at: null,
|
|
86
|
+
acquisition_page: null,
|
|
87
|
+
acquisition_visit: null,
|
|
88
|
+
conversion_page: null,
|
|
89
|
+
conversion_visit: null,
|
|
90
|
+
created_at: "2022-06-09T15:35:49.119Z",
|
|
91
|
+
credentials_expired_at: null,
|
|
92
|
+
deactivated_at: null,
|
|
93
|
+
deleted_at: null,
|
|
94
|
+
display_email: "staff@example.test",
|
|
95
|
+
email: "staff@example.test",
|
|
96
|
+
email_verified_at: "2022-06-09T15:35:49.119Z",
|
|
97
|
+
first_name: "Sample",
|
|
98
|
+
flagged_at: null,
|
|
99
|
+
last_access_at: null,
|
|
100
|
+
last_name: "Staff",
|
|
101
|
+
mobile: "",
|
|
102
|
+
mobile_verified_at: null,
|
|
103
|
+
modified_by: "staff_sync",
|
|
104
|
+
oauth_credentials: [],
|
|
105
|
+
onboarded_at: null,
|
|
106
|
+
organizations: [],
|
|
107
|
+
password: "",
|
|
108
|
+
profile_picture: {
|
|
109
|
+
location:
|
|
110
|
+
"https://lh3.googleusercontent.com/a/ACg8ocI7onaJy7p1ykSyMuWAPTHeG9jZZAkUSQbct-WlbaV06NG9QzhY=s96-c",
|
|
111
|
+
},
|
|
112
|
+
reducted_email: "st***@example.test",
|
|
113
|
+
reducted_mobile: "",
|
|
114
|
+
referral_code: "AYAD0VXK",
|
|
115
|
+
slug: "sample-staff",
|
|
116
|
+
source: {
|
|
117
|
+
context: "",
|
|
118
|
+
context_label: "",
|
|
119
|
+
identifier: "",
|
|
120
|
+
identifier_label: "",
|
|
121
|
+
kind: "dashboard",
|
|
122
|
+
method: "staff_sync",
|
|
123
|
+
module: "so.levo.membership",
|
|
124
|
+
resource: "",
|
|
125
|
+
},
|
|
126
|
+
status: "public",
|
|
127
|
+
tfa_secret: "",
|
|
128
|
+
updated_at: "2026-02-11T08:41:34.252Z",
|
|
129
|
+
username: "sample-staff",
|
|
130
|
+
verified_at: "2022-06-09T15:35:49.119Z",
|
|
131
|
+
staff: "URB3BU",
|
|
132
|
+
},
|
|
133
|
+
created_at: "2026-03-03T10:54:32.434Z",
|
|
134
|
+
updated_at: null,
|
|
135
|
+
},
|
|
136
|
+
join_request: null,
|
|
137
|
+
staff: null,
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
status: true,
|
|
141
|
+
};
|