@levo-so/blocks 0.1.54 → 0.1.58

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.
Files changed (117) hide show
  1. package/package.json +2 -2
  2. package/src/blocks/about-us/about-us-1.schema.ts +14 -0
  3. package/src/blocks/about-us/about-us-1.tsx +4 -2
  4. package/src/blocks/about-us/about-us-2.schema.ts +48 -0
  5. package/src/blocks/about-us/about-us-2.tsx +6 -0
  6. package/src/blocks/blogs/blog-listing-1.schema.ts +10 -0
  7. package/src/blocks/blogs/blog-listing-2.schema.ts +42 -162
  8. package/src/blocks/blogs/blog-listing-2.tsx +7 -0
  9. package/src/blocks/blogs/blog-listing-3.schema.ts +9 -0
  10. package/src/blocks/blogs/blog-post-1.schema.ts +7 -1
  11. package/src/blocks/blogs/blog-post-1.tsx +1 -1
  12. package/src/blocks/blogs/blog-post-2.schema.ts +464 -28
  13. package/src/blocks/blogs/blog-post-2.tsx +6 -13
  14. package/src/blocks/blogs/blog-post-3.schema.ts +42 -0
  15. package/src/blocks/blogs/blog-post-3.tsx +4 -1
  16. package/src/blocks/calendar/calendar-1.schema.ts +537 -0
  17. package/src/blocks/calendar/calendar-1.tsx +145 -0
  18. package/src/blocks/cards/cards-10.schema.ts +52 -4
  19. package/src/blocks/cards/cards-10.tsx +13 -1
  20. package/src/blocks/cards/cards-14.schema.ts +532 -0
  21. package/src/blocks/cards/cards-14.tsx +54 -0
  22. package/src/blocks/cards/cards-15.schema.ts +277 -0
  23. package/src/blocks/cards/cards-15.tsx +40 -0
  24. package/src/blocks/cards/cards-6.schema.ts +46 -0
  25. package/src/blocks/cards/cards-6.tsx +27 -1
  26. package/src/blocks/cards/cards-7.tsx +2 -0
  27. package/src/blocks/carousel/carousel-2.schema.ts +1128 -0
  28. package/src/blocks/carousel/carousel-2.tsx +159 -0
  29. package/src/blocks/content/content-5.schema.ts +112 -6
  30. package/src/blocks/content/content-5.tsx +19 -3
  31. package/src/blocks/content/content-6.schema.ts +16 -3
  32. package/src/blocks/content/content-6.tsx +1 -0
  33. package/src/blocks/content/content-8.schema.ts +125 -0
  34. package/src/blocks/content/content-8.tsx +27 -0
  35. package/src/blocks/content/content-9.schema.ts +2729 -0
  36. package/src/blocks/content/content-9.tsx +91 -0
  37. package/src/blocks/cta/cta-2.schema.ts +46 -4
  38. package/src/blocks/cta/cta-2.tsx +9 -1
  39. package/src/blocks/embed/embed-1.schema.ts +100 -0
  40. package/src/blocks/event/ClientOnly.tsx +27 -0
  41. package/src/blocks/event/event-details.tsx +10 -3
  42. package/src/blocks/event/event-listing-3.tsx +9 -2
  43. package/src/blocks/event/event-listing-4.tsx +11 -2
  44. package/src/blocks/event/event-listing.tsx +11 -4
  45. package/src/blocks/faq/faq-1.schema.ts +58 -1
  46. package/src/blocks/faq/faq-1.tsx +18 -1
  47. package/src/blocks/faq/faq-2.tsx +2 -1
  48. package/src/blocks/faq/faq-3.schema.ts +6 -1
  49. package/src/blocks/faq/faq-3.tsx +1 -0
  50. package/src/blocks/features/features-1/features-1.schema.ts +2 -0
  51. package/src/blocks/features/features-1/variants/index.ts +2 -0
  52. package/src/blocks/features/features-1/variants/stylized-cards-v3.ts +451 -0
  53. package/src/blocks/features/features-4.schema.ts +358 -20
  54. package/src/blocks/features/features-4.tsx +3 -1
  55. package/src/blocks/features/features-6.tsx +2 -0
  56. package/src/blocks/filter-listing/filter-listing-1.schema.ts +614 -0
  57. package/src/blocks/filter-listing/filter-listing-1.tsx +128 -0
  58. package/src/blocks/footer/footer-6.schema.ts +2 -2
  59. package/src/blocks/hero/hero-11.schema.ts +849 -0
  60. package/src/blocks/hero/hero-11.tsx +59 -0
  61. package/src/blocks/hero/hero-12.schema.ts +712 -0
  62. package/src/blocks/hero/hero-12.tsx +76 -0
  63. package/src/blocks/hero/hero-13.schema.ts +238 -0
  64. package/src/blocks/hero/hero-13.tsx +31 -0
  65. package/src/blocks/hero/hero-4.tsx +2 -0
  66. package/src/blocks/hero/hero-5.tsx +2 -0
  67. package/src/blocks/hero/hero-7.tsx +2 -1
  68. package/src/blocks/hero/hero-8.tsx +2 -0
  69. package/src/blocks/hero/hero-9.schema.ts +5 -0
  70. package/src/blocks/hero/hero-9.tsx +2 -0
  71. package/src/blocks/index.ts +27 -0
  72. package/src/blocks/navbar/navbar-1.schema.ts +6 -6
  73. package/src/blocks/navbar/navbar-1.tsx +6 -7
  74. package/src/blocks/navbar/navbar-2.schema.ts +9 -9
  75. package/src/blocks/navbar/navbar-2.tsx +7 -8
  76. package/src/blocks/navbar/navbar-3.schema.ts +9 -9
  77. package/src/blocks/navbar/navbar-3.tsx +139 -114
  78. package/src/blocks/polling/polling-1.schema.ts +134 -0
  79. package/src/blocks/polling/polling-1.tsx +466 -0
  80. package/src/blocks/products/products-listing-2.schema.ts +596 -0
  81. package/src/blocks/products/products-listing-2.tsx +56 -0
  82. package/src/blocks/products/products-listing-3.schema.ts +818 -0
  83. package/src/blocks/products/products-listing-3.tsx +125 -0
  84. package/src/blocks/profile/profile-2.schema.ts +505 -0
  85. package/src/blocks/profile/profile-2.tsx +64 -0
  86. package/src/blocks/profile/profile-3.schema.ts +867 -0
  87. package/src/blocks/profile/profile-3.tsx +98 -0
  88. package/src/blocks/services/service-1.schema.ts +1743 -0
  89. package/src/blocks/services/service-1.tsx +139 -0
  90. package/src/blocks/services/service-2.schema.ts +433 -0
  91. package/src/blocks/services/service-2.tsx +98 -0
  92. package/src/blocks/services/service-3.schema.ts +631 -0
  93. package/src/blocks/services/service-3.tsx +135 -0
  94. package/src/blocks/tabs/tab-1.schema.ts +831 -0
  95. package/src/blocks/tabs/tab-1.tsx +126 -0
  96. package/src/blocks/tabs/tab-2.schema.ts +767 -0
  97. package/src/blocks/tabs/tab-2.tsx +60 -0
  98. package/src/blocks/team/team-3.schema.ts +5 -1
  99. package/src/blocks/team/team-3.tsx +7 -0
  100. package/src/blocks/team/team-4.schema.ts +17 -13
  101. package/src/blocks/team/team-4.tsx +4 -1
  102. package/src/blocks/team/team-5.schema.ts +369 -0
  103. package/src/blocks/team/team-5.tsx +38 -0
  104. package/src/blocks/testimonial/testimonial-1.tsx +0 -1
  105. package/src/blocks/testimonial/testimonial-2.tsx +2 -1
  106. package/src/blocks/testimonial/testimonial-3.tsx +2 -0
  107. package/src/blocks/testimonial/testimonial-4.tsx +2 -1
  108. package/src/blocks/testimonial/testimonial-5.tsx +2 -0
  109. package/src/blocks/testimonial/testimonial-6.tsx +2 -1
  110. package/src/blocks/testimonial/testimonial-7.schema.ts +438 -0
  111. package/src/blocks/testimonial/testimonial-7.tsx +125 -0
  112. package/src/blocks/timeline/timeline-1.schema.ts +741 -0
  113. package/src/blocks/timeline/timeline-1.tsx +52 -0
  114. package/src/blocks/users/edit-profile.schema.ts +294 -0
  115. package/src/blocks/users/edit-profile.tsx +184 -0
  116. package/src/schemas/blocks.ts +64 -12
  117. 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.54",
3
+ "version": "0.1.58",
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.12",
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
- <Typography elementKey="label" />
23
- <Heading elementKey="title" />
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
  },