@levo-so/blocks 0.1.54 → 0.1.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/blocks/about-us/about-us-1.schema.ts +14 -0
- package/src/blocks/about-us/about-us-1.tsx +4 -2
- package/src/blocks/about-us/about-us-2.schema.ts +48 -0
- package/src/blocks/about-us/about-us-2.tsx +6 -0
- package/src/blocks/blogs/blog-listing-1.schema.ts +10 -0
- package/src/blocks/blogs/blog-listing-2.schema.ts +42 -162
- package/src/blocks/blogs/blog-listing-2.tsx +7 -0
- package/src/blocks/blogs/blog-listing-3.schema.ts +9 -0
- package/src/blocks/blogs/blog-post-1.schema.ts +7 -1
- package/src/blocks/blogs/blog-post-1.tsx +1 -1
- package/src/blocks/blogs/blog-post-2.schema.ts +464 -28
- package/src/blocks/blogs/blog-post-2.tsx +6 -13
- package/src/blocks/blogs/blog-post-3.schema.ts +42 -0
- package/src/blocks/blogs/blog-post-3.tsx +4 -1
- package/src/blocks/calendar/calendar-1.schema.ts +537 -0
- package/src/blocks/calendar/calendar-1.tsx +145 -0
- package/src/blocks/cards/cards-10.schema.ts +52 -4
- package/src/blocks/cards/cards-10.tsx +13 -1
- package/src/blocks/cards/cards-14.schema.ts +532 -0
- package/src/blocks/cards/cards-14.tsx +54 -0
- package/src/blocks/cards/cards-15.schema.ts +277 -0
- package/src/blocks/cards/cards-15.tsx +40 -0
- package/src/blocks/cards/cards-6.schema.ts +46 -0
- package/src/blocks/cards/cards-6.tsx +27 -1
- package/src/blocks/cards/cards-7.tsx +2 -0
- package/src/blocks/carousel/carousel-2.schema.ts +1128 -0
- package/src/blocks/carousel/carousel-2.tsx +159 -0
- package/src/blocks/content/content-5.schema.ts +112 -6
- package/src/blocks/content/content-5.tsx +19 -3
- package/src/blocks/content/content-6.schema.ts +16 -3
- package/src/blocks/content/content-6.tsx +1 -0
- package/src/blocks/content/content-8.schema.ts +125 -0
- package/src/blocks/content/content-8.tsx +27 -0
- package/src/blocks/content/content-9.schema.ts +2729 -0
- package/src/blocks/content/content-9.tsx +91 -0
- package/src/blocks/cta/cta-2.schema.ts +46 -4
- package/src/blocks/cta/cta-2.tsx +9 -1
- package/src/blocks/embed/embed-1.schema.ts +100 -0
- package/src/blocks/event/ClientOnly.tsx +27 -0
- package/src/blocks/event/event-details.tsx +10 -3
- package/src/blocks/event/event-listing-3.tsx +9 -2
- package/src/blocks/event/event-listing-4.tsx +11 -2
- package/src/blocks/event/event-listing.tsx +11 -4
- package/src/blocks/faq/faq-1.schema.ts +58 -1
- package/src/blocks/faq/faq-1.tsx +18 -1
- package/src/blocks/faq/faq-2.tsx +2 -1
- package/src/blocks/faq/faq-3.schema.ts +6 -1
- package/src/blocks/faq/faq-3.tsx +1 -0
- package/src/blocks/features/features-1/features-1.schema.ts +2 -0
- package/src/blocks/features/features-1/variants/index.ts +2 -0
- package/src/blocks/features/features-1/variants/stylized-cards-v3.ts +451 -0
- package/src/blocks/features/features-4.schema.ts +358 -20
- package/src/blocks/features/features-4.tsx +3 -1
- package/src/blocks/features/features-6.tsx +2 -0
- package/src/blocks/filter-listing/filter-listing-1.schema.ts +614 -0
- package/src/blocks/filter-listing/filter-listing-1.tsx +128 -0
- package/src/blocks/footer/footer-6.schema.ts +2 -2
- package/src/blocks/hero/hero-11.schema.ts +849 -0
- package/src/blocks/hero/hero-11.tsx +59 -0
- package/src/blocks/hero/hero-12.schema.ts +712 -0
- package/src/blocks/hero/hero-12.tsx +76 -0
- package/src/blocks/hero/hero-13.schema.ts +238 -0
- package/src/blocks/hero/hero-13.tsx +31 -0
- package/src/blocks/hero/hero-4.tsx +2 -0
- package/src/blocks/hero/hero-5.tsx +2 -0
- package/src/blocks/hero/hero-7.tsx +2 -1
- package/src/blocks/hero/hero-8.tsx +2 -0
- package/src/blocks/hero/hero-9.schema.ts +5 -0
- package/src/blocks/hero/hero-9.tsx +2 -0
- package/src/blocks/index.ts +27 -0
- package/src/blocks/navbar/navbar-1.schema.ts +6 -6
- package/src/blocks/navbar/navbar-1.tsx +6 -7
- package/src/blocks/navbar/navbar-2.schema.ts +9 -9
- package/src/blocks/navbar/navbar-2.tsx +7 -8
- package/src/blocks/navbar/navbar-3.schema.ts +9 -9
- package/src/blocks/navbar/navbar-3.tsx +139 -114
- package/src/blocks/polling/polling-1.schema.ts +134 -0
- package/src/blocks/polling/polling-1.tsx +466 -0
- package/src/blocks/products/products-listing-2.schema.ts +596 -0
- package/src/blocks/products/products-listing-2.tsx +56 -0
- package/src/blocks/products/products-listing-3.schema.ts +818 -0
- package/src/blocks/products/products-listing-3.tsx +125 -0
- package/src/blocks/profile/profile-2.schema.ts +505 -0
- package/src/blocks/profile/profile-2.tsx +64 -0
- package/src/blocks/profile/profile-3.schema.ts +867 -0
- package/src/blocks/profile/profile-3.tsx +98 -0
- package/src/blocks/services/service-1.schema.ts +1743 -0
- package/src/blocks/services/service-1.tsx +139 -0
- package/src/blocks/services/service-2.schema.ts +433 -0
- package/src/blocks/services/service-2.tsx +98 -0
- package/src/blocks/services/service-3.schema.ts +631 -0
- package/src/blocks/services/service-3.tsx +135 -0
- package/src/blocks/tabs/tab-1.schema.ts +831 -0
- package/src/blocks/tabs/tab-1.tsx +126 -0
- package/src/blocks/tabs/tab-2.schema.ts +767 -0
- package/src/blocks/tabs/tab-2.tsx +60 -0
- package/src/blocks/team/team-3.schema.ts +5 -1
- package/src/blocks/team/team-3.tsx +7 -0
- package/src/blocks/team/team-4.schema.ts +17 -13
- package/src/blocks/team/team-4.tsx +4 -1
- package/src/blocks/team/team-5.schema.ts +369 -0
- package/src/blocks/team/team-5.tsx +38 -0
- package/src/blocks/testimonial/testimonial-1.tsx +0 -1
- package/src/blocks/testimonial/testimonial-2.tsx +2 -1
- package/src/blocks/testimonial/testimonial-3.tsx +2 -0
- package/src/blocks/testimonial/testimonial-4.tsx +2 -1
- package/src/blocks/testimonial/testimonial-5.tsx +2 -0
- package/src/blocks/testimonial/testimonial-6.tsx +2 -1
- package/src/blocks/testimonial/testimonial-7.schema.ts +438 -0
- package/src/blocks/testimonial/testimonial-7.tsx +125 -0
- package/src/blocks/timeline/timeline-1.schema.ts +741 -0
- package/src/blocks/timeline/timeline-1.tsx +52 -0
- package/src/blocks/users/edit-profile.schema.ts +294 -0
- package/src/blocks/users/edit-profile.tsx +184 -0
- package/src/schemas/blocks.ts +64 -12
- package/src/schemas/categories.ts +36 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@levo-so/blocks",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.59",
|
|
4
4
|
"author": "Levo Engineering <devs@theinternetfolks.com>",
|
|
5
5
|
"description": "Set of blocks for Levo studio",
|
|
6
6
|
"type": "module",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"react-dom": ">=18"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"dayjs": "1.11.
|
|
27
|
+
"dayjs": "1.11.13",
|
|
28
28
|
"embla-carousel-auto-scroll": "8.6.0",
|
|
29
29
|
"embla-carousel-react": "8.6.0",
|
|
30
30
|
"lucide-react": "0.424.0"
|
|
@@ -127,6 +127,15 @@ export const AboutUs1: IBlock = {
|
|
|
127
127
|
"Horizontally groups and vertically aligns the heading, description, features, and call-to-action content to the right of the hero image.",
|
|
128
128
|
},
|
|
129
129
|
},
|
|
130
|
+
{
|
|
131
|
+
key: "textWrapper",
|
|
132
|
+
label: "Text Wrapper",
|
|
133
|
+
field_interface: "BoxWidget",
|
|
134
|
+
hint: {
|
|
135
|
+
prompt_description:
|
|
136
|
+
"Horizontally groups and vertically aligns the heading, description, features, and call-to-action content to the right of the hero image.",
|
|
137
|
+
},
|
|
138
|
+
},
|
|
130
139
|
{
|
|
131
140
|
key: "label",
|
|
132
141
|
label: "Label",
|
|
@@ -134,6 +143,7 @@ export const AboutUs1: IBlock = {
|
|
|
134
143
|
hint: {
|
|
135
144
|
prompt_description:
|
|
136
145
|
"A brief section identifier or label (e.g., 'About Us') shown above the headline, using a muted or subtle style. Keep tone straightforward and concise.",
|
|
146
|
+
usecase: "label",
|
|
137
147
|
min_characters: 5,
|
|
138
148
|
max_characters: 24,
|
|
139
149
|
},
|
|
@@ -145,6 +155,7 @@ export const AboutUs1: IBlock = {
|
|
|
145
155
|
hint: {
|
|
146
156
|
prompt_description:
|
|
147
157
|
"A bold, high-impact headline that captures attention and communicates the agency's mission, benefit, or unique selling proposition. Should be motivating, clear, and direct.",
|
|
158
|
+
usecase: "main_title",
|
|
148
159
|
min_characters: 35,
|
|
149
160
|
max_characters: 75,
|
|
150
161
|
},
|
|
@@ -156,6 +167,7 @@ export const AboutUs1: IBlock = {
|
|
|
156
167
|
hint: {
|
|
157
168
|
prompt_description:
|
|
158
169
|
"A concise yet informative paragraph (1-2 sentences) that elaborates on the section headline with context about the agency, their experience or services. Maintain a professional and approachable tone.",
|
|
170
|
+
usecase: "description",
|
|
159
171
|
min_characters: 60,
|
|
160
172
|
max_characters: 180,
|
|
161
173
|
},
|
|
@@ -200,6 +212,7 @@ export const AboutUs1: IBlock = {
|
|
|
200
212
|
hint: {
|
|
201
213
|
prompt_description:
|
|
202
214
|
"A brief, benefit-driven statement or phrase emphasizing what the agency offers (e.g., 'Growing Businesses', 'Success Campaign'). Tone should be direct and positive.",
|
|
215
|
+
usecase: "feature",
|
|
203
216
|
min_characters: 15,
|
|
204
217
|
max_characters: 36,
|
|
205
218
|
},
|
|
@@ -223,6 +236,7 @@ export const AboutUs1: IBlock = {
|
|
|
223
236
|
hint: {
|
|
224
237
|
prompt_description:
|
|
225
238
|
"A primary, visually distinct action button that encourages users to take the next step (such as learning more or contacting the agency). Copy should be action-oriented and concise.",
|
|
239
|
+
usecase: "cta_button",
|
|
226
240
|
min_characters: 8,
|
|
227
241
|
max_characters: 22,
|
|
228
242
|
},
|
|
@@ -19,8 +19,10 @@ const AboutUs1: React.FC<ILevoBlockBaseProps<IAboutUs1Content>> = ({
|
|
|
19
19
|
<Container elementKey="container">
|
|
20
20
|
<Media alt="media" elementKey="media" />
|
|
21
21
|
<Box elementKey="contentWrapper">
|
|
22
|
-
<
|
|
23
|
-
|
|
22
|
+
<Box elementKey="textWrapper">
|
|
23
|
+
<Typography elementKey="label" />
|
|
24
|
+
<Heading elementKey="title" />
|
|
25
|
+
</Box>
|
|
24
26
|
<Typography elementKey="description" />
|
|
25
27
|
|
|
26
28
|
<Box elementKey="features_levoGroup" data-levo_group>
|
|
@@ -111,11 +111,25 @@ export const AboutUs2: IBlock = {
|
|
|
111
111
|
key: "title",
|
|
112
112
|
label: "Title",
|
|
113
113
|
field_interface: "HeadingWidget",
|
|
114
|
+
hint: {
|
|
115
|
+
prompt_description:
|
|
116
|
+
"Main section heading that introduces the about section, typically personalized (e.g., 'About Me') or brand-focused (e.g., 'About Us').",
|
|
117
|
+
usecase: "main_title",
|
|
118
|
+
min_characters: 8,
|
|
119
|
+
max_characters: 50,
|
|
120
|
+
},
|
|
114
121
|
},
|
|
115
122
|
{
|
|
116
123
|
key: "description",
|
|
117
124
|
label: "Description",
|
|
118
125
|
field_interface: "TypographyWidget",
|
|
126
|
+
hint: {
|
|
127
|
+
prompt_description:
|
|
128
|
+
"Descriptive paragraph explaining the mission, background, or expertise. Should be informative yet engaging, establishing credibility and connection.",
|
|
129
|
+
usecase: "description",
|
|
130
|
+
min_characters: 80,
|
|
131
|
+
max_characters: 250,
|
|
132
|
+
},
|
|
119
133
|
},
|
|
120
134
|
{
|
|
121
135
|
key: "stats",
|
|
@@ -132,11 +146,45 @@ export const AboutUs2: IBlock = {
|
|
|
132
146
|
key: "number",
|
|
133
147
|
label: "Number",
|
|
134
148
|
field_interface: "TypographyWidget",
|
|
149
|
+
hint: {
|
|
150
|
+
prompt_description:
|
|
151
|
+
"Statistical number showcasing achievement or credibility (e.g., '200+', '10+', '5+'). Should be impactful and concise.",
|
|
152
|
+
usecase: "stat_number",
|
|
153
|
+
min_characters: 2,
|
|
154
|
+
max_characters: 10,
|
|
155
|
+
},
|
|
135
156
|
},
|
|
136
157
|
{
|
|
137
158
|
key: "label",
|
|
138
159
|
label: "Label",
|
|
139
160
|
field_interface: "TypographyWidget",
|
|
161
|
+
hint: {
|
|
162
|
+
prompt_description:
|
|
163
|
+
"Description that explains what the statistic represents (e.g., 'Clients Guided', 'Years Experience', 'Organizations'). Should be clear and contextual.",
|
|
164
|
+
usecase: "stat_label",
|
|
165
|
+
min_characters: 10,
|
|
166
|
+
max_characters: 30,
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
key: "ctas",
|
|
173
|
+
label: "CTA",
|
|
174
|
+
kind: "group",
|
|
175
|
+
field_interface: "BoxWidget",
|
|
176
|
+
fields: [
|
|
177
|
+
{
|
|
178
|
+
key: "button",
|
|
179
|
+
label: "Button",
|
|
180
|
+
field_interface: "ButtonWidget",
|
|
181
|
+
hint: {
|
|
182
|
+
prompt_description:
|
|
183
|
+
"Primary call-to-action button encouraging visitor engagement (e.g., 'Learn More', 'Get Started', 'Contact Us'). Should be action-oriented.",
|
|
184
|
+
usecase: "cta_button",
|
|
185
|
+
min_characters: 8,
|
|
186
|
+
max_characters: 22,
|
|
187
|
+
},
|
|
140
188
|
},
|
|
141
189
|
],
|
|
142
190
|
},
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
Heading,
|
|
7
7
|
Typography,
|
|
8
8
|
Media,
|
|
9
|
+
Button,
|
|
9
10
|
} from "@levo-so/studio";
|
|
10
11
|
|
|
11
12
|
import type { IAboutUs2Content } from "./about-us-2.schema";
|
|
@@ -38,6 +39,11 @@ const AboutUs2: React.FC<ILevoBlockBaseProps<IAboutUs2Content>> = ({
|
|
|
38
39
|
</Box>
|
|
39
40
|
))}
|
|
40
41
|
</Box>
|
|
42
|
+
<Box elementKey="ctas_levoGroup" data-levo_group>
|
|
43
|
+
{(content?.ctas ?? []).map((_: any, index: any) => (
|
|
44
|
+
<Button key={index} elementKey={`ctas.${index}.button`} />
|
|
45
|
+
))}
|
|
46
|
+
</Box>
|
|
41
47
|
</Box>
|
|
42
48
|
</Box>
|
|
43
49
|
</Container>
|
|
@@ -190,6 +190,7 @@ export const BlogListing1: IBlock = {
|
|
|
190
190
|
hint: {
|
|
191
191
|
prompt_description:
|
|
192
192
|
"Primary headline for the blog/news section. Should be concise, attention-grabbing, and indicate trending or popular content for this month. Use a confident, informative, energetic tone.",
|
|
193
|
+
usecase: "main_title",
|
|
193
194
|
min_characters: 20,
|
|
194
195
|
max_characters: 35,
|
|
195
196
|
},
|
|
@@ -201,6 +202,7 @@ export const BlogListing1: IBlock = {
|
|
|
201
202
|
hint: {
|
|
202
203
|
prompt_description:
|
|
203
204
|
"Short supporting introduction for the section, summarizing the purpose or value of the featured content. Should be informative, aspirational, and encourage browsing. 1-2 lines.",
|
|
205
|
+
usecase: "description",
|
|
204
206
|
min_characters: 60,
|
|
205
207
|
max_characters: 140,
|
|
206
208
|
},
|
|
@@ -272,6 +274,7 @@ export const BlogListing1: IBlock = {
|
|
|
272
274
|
hint: {
|
|
273
275
|
prompt_description:
|
|
274
276
|
"Publish time information for the blog post. Should be brief (e.g. 'Today', '6 minutes ago', or 'June 5'). Neutral, clear style.",
|
|
277
|
+
usecase: "date",
|
|
275
278
|
min_characters: 8,
|
|
276
279
|
max_characters: 20,
|
|
277
280
|
},
|
|
@@ -289,6 +292,7 @@ export const BlogListing1: IBlock = {
|
|
|
289
292
|
hint: {
|
|
290
293
|
prompt_description:
|
|
291
294
|
"Blog article headline. Clear, bold, and appealing. Should entice users to read. Ideally not more than one line in the card, use a friendly, magazine-like tone.",
|
|
295
|
+
usecase: "title",
|
|
292
296
|
min_characters: 35,
|
|
293
297
|
max_characters: 60,
|
|
294
298
|
},
|
|
@@ -300,6 +304,7 @@ export const BlogListing1: IBlock = {
|
|
|
300
304
|
hint: {
|
|
301
305
|
prompt_description:
|
|
302
306
|
"Short excerpt or summary of the blog post content. Should be 1-2 sentences, informative, and prompt curiosity. Keep it concise and editorial.",
|
|
307
|
+
usecase: "description",
|
|
303
308
|
min_characters: 60,
|
|
304
309
|
max_characters: 130,
|
|
305
310
|
},
|
|
@@ -335,6 +340,7 @@ export const BlogListing1: IBlock = {
|
|
|
335
340
|
hint: {
|
|
336
341
|
prompt_description:
|
|
337
342
|
"Author's full name, as displayed in byline. Preferably real or realistic names.",
|
|
343
|
+
usecase: "author",
|
|
338
344
|
min_characters: 5,
|
|
339
345
|
max_characters: 25,
|
|
340
346
|
},
|
|
@@ -346,6 +352,7 @@ export const BlogListing1: IBlock = {
|
|
|
346
352
|
hint: {
|
|
347
353
|
prompt_description:
|
|
348
354
|
"Short description or job title of the author, e.g., 'Content Strategist', 'Lifestyle Editor'. Keep it short and professional.",
|
|
355
|
+
usecase: "designation",
|
|
349
356
|
min_characters: 10,
|
|
350
357
|
max_characters: 30,
|
|
351
358
|
},
|
|
@@ -357,6 +364,7 @@ export const BlogListing1: IBlock = {
|
|
|
357
364
|
hint: {
|
|
358
365
|
prompt_description:
|
|
359
366
|
"Primary action button label for each article card. Should prompt the user to read or learn more, concise (1-3 words), action-oriented.",
|
|
367
|
+
usecase: "button",
|
|
360
368
|
min_characters: 6,
|
|
361
369
|
max_characters: 16,
|
|
362
370
|
},
|
|
@@ -377,6 +385,7 @@ export const BlogListing1: IBlock = {
|
|
|
377
385
|
hint: {
|
|
378
386
|
prompt_description:
|
|
379
387
|
"Pagination control button to navigate to the previous page of blog cards. Keep the label brief, such as 'Previous' or a left arrow. Tone should be neutral and functional.",
|
|
388
|
+
usecase: "button",
|
|
380
389
|
min_characters: 5,
|
|
381
390
|
max_characters: 12,
|
|
382
391
|
},
|
|
@@ -399,6 +408,7 @@ export const BlogListing1: IBlock = {
|
|
|
399
408
|
hint: {
|
|
400
409
|
prompt_description:
|
|
401
410
|
"Pagination control button to navigate to the next page of blog cards. Should be concise, such as 'Next' or a right arrow. Neutral tone.",
|
|
411
|
+
usecase: "button",
|
|
402
412
|
min_characters: 4,
|
|
403
413
|
max_characters: 8,
|
|
404
414
|
},
|