@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.
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
@@ -10,6 +10,7 @@ import {
10
10
  Typography,
11
11
  useContentEngine,
12
12
  } from "@levo-so/studio";
13
+ import dayjs from "dayjs";
13
14
 
14
15
  import type { IBlogListing2Content } from "./blog-listing-2.schema";
15
16
 
@@ -45,6 +46,12 @@ const BlogListing2: React.FC<
45
46
  <Icon elementKey={`blogs.${index}.header-icon`} />
46
47
  <Typography elementKey={`blogs.${index}.blog-type`} />
47
48
  </Box>
49
+ <Box elementKey={`blogs.${index}.dateWrapper`}>
50
+ <Icon elementKey={`blogs.${index}.dateIcon`} />
51
+ <Typography elementKey={`blogs.${index}.date`}>
52
+ {dayjs(item?.date).format("MMM D, YYYY")}
53
+ </Typography>
54
+ </Box>
48
55
  <Heading elementKey={`blogs.${index}.title`} />
49
56
  <Typography elementKey={`blogs.${index}.description`} />
50
57
  <Box elementKey={`blogs.${index}.blog-footer`}>
@@ -402,6 +402,7 @@ export const BlogListing3: IBlock = {
402
402
  hint: {
403
403
  prompt_description:
404
404
  "Section heading introducing featured or trending blog articles for this month. Make it concise, bold, and inviting. Use a confident and energetic tone.",
405
+ usecase: "main_title",
405
406
  min_characters: 16,
406
407
  max_characters: 30,
407
408
  },
@@ -413,6 +414,7 @@ export const BlogListing3: IBlock = {
413
414
  hint: {
414
415
  prompt_description:
415
416
  "Primary call-to-action button next to the section heading, inviting users to view all news or blogs. Text should be short (2-4 words), action-oriented, and clear.",
417
+ usecase: "button",
416
418
  min_characters: 10,
417
419
  max_characters: 20,
418
420
  },
@@ -484,6 +486,7 @@ export const BlogListing3: IBlock = {
484
486
  hint: {
485
487
  prompt_description:
486
488
  "Blog post category or topic, e.g., 'Article / Lifestyle'. Should be short, informative, use sentence case, and highlight the type of content.",
489
+ usecase: "date",
487
490
  min_characters: 10,
488
491
  max_characters: 27,
489
492
  },
@@ -495,6 +498,7 @@ export const BlogListing3: IBlock = {
495
498
  hint: {
496
499
  prompt_description:
497
500
  "Headline for the blog post card, designed to attract attention and encourage clicks. Should be clear, engaging, and fit on 1 or 2 lines. Use an editorial, inviting tone.",
501
+ usecase: "title",
498
502
  min_characters: 28,
499
503
  max_characters: 60,
500
504
  },
@@ -506,6 +510,7 @@ export const BlogListing3: IBlock = {
506
510
  hint: {
507
511
  prompt_description:
508
512
  "Short excerpt or summary of the article, displayed on the card. It should generate curiosity and briefly explain the blog's theme or story in 1-2 concise sentences.",
513
+ usecase: "description",
509
514
  min_characters: 60,
510
515
  max_characters: 130,
511
516
  },
@@ -541,6 +546,7 @@ export const BlogListing3: IBlock = {
541
546
  hint: {
542
547
  prompt_description:
543
548
  "Author's display name for the card byline. Should feel authentic and natural.",
549
+ usecase: "author",
544
550
  min_characters: 5,
545
551
  max_characters: 25,
546
552
  },
@@ -570,6 +576,7 @@ export const BlogListing3: IBlock = {
570
576
  hint: {
571
577
  prompt_description:
572
578
  "Estimated reading duration for the article, such as '6 Minutes' or '3 min'. Keep it simple and brief.",
579
+ usecase: "reading_time",
573
580
  min_characters: 6,
574
581
  max_characters: 15,
575
582
  },
@@ -594,6 +601,7 @@ export const BlogListing3: IBlock = {
594
601
  hint: {
595
602
  prompt_description:
596
603
  "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.",
604
+ usecase: "button",
597
605
  min_characters: 5,
598
606
  max_characters: 12,
599
607
  },
@@ -616,6 +624,7 @@ export const BlogListing3: IBlock = {
616
624
  hint: {
617
625
  prompt_description:
618
626
  "Pagination control button to navigate to the next page of blog cards. Should be concise, such as 'Next' or a right arrow. Neutral tone.",
627
+ usecase: "button",
619
628
  min_characters: 4,
620
629
  max_characters: 8,
621
630
  },
@@ -121,6 +121,7 @@ export const BlogPost1: IBlock = {
121
121
  hint: {
122
122
  prompt_description:
123
123
  "A short, descriptive blog post tag or category, such as 'Financial Planning'. Use 1–3 words. Neutral and factual.",
124
+ usecase: "category",
124
125
  min_characters: 7,
125
126
  max_characters: 28,
126
127
  },
@@ -141,6 +142,7 @@ export const BlogPost1: IBlock = {
141
142
  hint: {
142
143
  prompt_description:
143
144
  "Main headline for the blog post. Clear, compelling, and professional. Use sentence case. Aim for strong impact; avoid jargon.",
145
+ usecase: "main_title",
144
146
  min_characters: 28,
145
147
  max_characters: 60,
146
148
  },
@@ -181,7 +183,8 @@ export const BlogPost1: IBlock = {
181
183
  field_interface: "HeadingWidget",
182
184
  hint: {
183
185
  prompt_description:
184
- "Authors full name. Use proper capitalization, 2–3 words, simple formality.",
186
+ "Author's full name. Use proper capitalization, 2–3 words, simple formality.",
187
+ usecase: "author",
185
188
  min_characters: 5,
186
189
  max_characters: 28,
187
190
  },
@@ -193,6 +196,7 @@ export const BlogPost1: IBlock = {
193
196
  hint: {
194
197
  prompt_description:
195
198
  "Date the article was published. Human-readable, e.g., 'April 25, 2025'. Month spelled out.",
199
+ usecase: "date",
196
200
  min_characters: 10,
197
201
  max_characters: 20,
198
202
  },
@@ -204,6 +208,7 @@ export const BlogPost1: IBlock = {
204
208
  hint: {
205
209
  prompt_description:
206
210
  "Estimated reading time in minutes. Use short format: '10 Minutes' or '8 Min'.",
211
+ usecase: "reading_time",
207
212
  min_characters: 6,
208
213
  max_characters: 13,
209
214
  },
@@ -236,6 +241,7 @@ export const BlogPost1: IBlock = {
236
241
  hint: {
237
242
  prompt_description:
238
243
  "Full blog article body. Use formal, professional tone suitable for financial topics. Include headings, paragraphs, and clear explanations. Length should be 800–2000 words for a comprehensive post.",
244
+ usecase: "description",
239
245
  min_characters: 800,
240
246
  max_characters: 12000,
241
247
  },
@@ -43,7 +43,7 @@ const BlogPost1: React.FC<ILevoBlockBaseProps<IBlogPost1Content>> = ({
43
43
  <Media elementKey="blog-cover" alt="Blog Cover" />
44
44
  </Box>
45
45
  <Box elementKey="content-section">
46
- <Typography elementKey="content" className="prose" />
46
+ <Typography elementKey="content" className="LevoProseMirror" />
47
47
  </Box>
48
48
  </Container>
49
49
  </Section>