@levo-so/blocks 0.1.2 → 0.1.52

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 (115) hide show
  1. package/package.json +2 -2
  2. package/src/blocks/about-us/about-us-1.schema.ts +26 -12
  3. package/src/blocks/about-us/about-us-2.schema.ts +269 -0
  4. package/src/blocks/about-us/about-us-2.tsx +47 -0
  5. package/src/blocks/blogs/blog-listing-1.schema.ts +64 -10
  6. package/src/blocks/blogs/blog-listing-1.tsx +79 -56
  7. package/src/blocks/blogs/blog-listing-2.schema.ts +3141 -31
  8. package/src/blocks/blogs/blog-listing-2.tsx +16 -11
  9. package/src/blocks/blogs/blog-listing-3.schema.ts +2476 -0
  10. package/src/blocks/blogs/blog-listing-3.tsx +84 -0
  11. package/src/blocks/blogs/blog-post-1.schema.ts +17 -9
  12. package/src/blocks/blogs/blog-post-2.schema.ts +13 -56
  13. package/src/blocks/blogs/blog-post-3.schema.ts +284 -0
  14. package/src/blocks/blogs/blog-post-3.tsx +58 -0
  15. package/src/blocks/cards/cards-10.schema.ts +579 -0
  16. package/src/blocks/cards/cards-10.tsx +2 -0
  17. package/src/blocks/cards/cards-11.schema.ts +514 -36
  18. package/src/blocks/cards/cards-13.schema.ts +615 -0
  19. package/src/blocks/cards/cards-13.tsx +67 -0
  20. package/src/blocks/cards/cards-2.schema.ts +14 -17
  21. package/src/blocks/cards/cards-3.schema.ts +15 -25
  22. package/src/blocks/cards/cards-4.schema.ts +22 -44
  23. package/src/blocks/cards/cards-4.tsx +39 -39
  24. package/src/blocks/cards/cards-5.schema.ts +15 -34
  25. package/src/blocks/cards/cards-6.schema.ts +1500 -0
  26. package/src/blocks/cards/cards-6.tsx +11 -7
  27. package/src/blocks/cards/cards-7.schema.ts +1772 -27
  28. package/src/blocks/cards/cards-7.tsx +32 -0
  29. package/src/blocks/cards/cards-8.schema.ts +9 -9
  30. package/src/blocks/contact-us/contact-us-1.schema.ts +13 -6
  31. package/src/blocks/contact-us/contact-us-2.schema.ts +43 -43
  32. package/src/blocks/content/content-1.schema.ts +45 -67
  33. package/src/blocks/content/content-2.schema.ts +14 -11
  34. package/src/blocks/content/content-3.schema.ts +17 -115
  35. package/src/blocks/content/content-3.tsx +1 -0
  36. package/src/blocks/content/content-5.tsx +1 -0
  37. package/src/blocks/content/content-6.tsx +1 -0
  38. package/src/blocks/content/content-7.schema.ts +723 -0
  39. package/src/blocks/content/content-7.tsx +53 -0
  40. package/src/blocks/cta/cta-1.schema.ts +18 -26
  41. package/src/blocks/cta/cta-3.schema.ts +60 -0
  42. package/src/blocks/event/event-details.schema.ts +30 -35
  43. package/src/blocks/event/event-details.tsx +74 -79
  44. package/src/blocks/event/event-listing-2.schema.ts +85 -26
  45. package/src/blocks/event/event-listing-2.tsx +76 -52
  46. package/src/blocks/event/event-listing-3.schema.ts +58 -42
  47. package/src/blocks/event/event-listing-3.tsx +4 -9
  48. package/src/blocks/event/event-listing-4.schema.ts +3528 -0
  49. package/src/blocks/event/event-listing-4.tsx +97 -0
  50. package/src/blocks/event/event-listing.schema.ts +81 -86
  51. package/src/blocks/event/event-listing.tsx +1 -3
  52. package/src/blocks/faq/faq-1.schema.ts +13 -10
  53. package/src/blocks/faq/faq-2.schema.ts +12 -10
  54. package/src/blocks/features/features-1/variants/default.ts +12 -3
  55. package/src/blocks/features/features-2.schema.ts +192 -59
  56. package/src/blocks/features/features-3.schema.ts +11 -25
  57. package/src/blocks/features/features-4.schema.ts +20 -35
  58. package/src/blocks/features/features-5.schema.ts +18 -37
  59. package/src/blocks/footer/footer-1.schema.ts +28 -5
  60. package/src/blocks/footer/footer-2.schema.ts +18 -3
  61. package/src/blocks/footer/footer-3.schema.ts +85 -160
  62. package/src/blocks/footer/footer-3.tsx +1 -2
  63. package/src/blocks/footer/footer-4.schema.ts +10 -5
  64. package/src/blocks/footer/footer-4.tsx +1 -1
  65. package/src/blocks/footer/footer-5.schema.ts +10 -0
  66. package/src/blocks/footer/footer-5.tsx +11 -3
  67. package/src/blocks/footer/footer-6.schema.ts +730 -0
  68. package/src/blocks/footer/footer-6.tsx +100 -0
  69. package/src/blocks/hero/hero-1.schema.ts +165 -185
  70. package/src/blocks/hero/hero-10.schema.ts +175 -0
  71. package/src/blocks/hero/hero-10.tsx +35 -0
  72. package/src/blocks/hero/hero-2.schema.ts +60 -104
  73. package/src/blocks/hero/hero-2.tsx +11 -3
  74. package/src/blocks/hero/hero-3.schema.ts +68 -64
  75. package/src/blocks/hero/hero-4.schema.ts +148 -48
  76. package/src/blocks/hero/hero-5.schema.ts +29 -23
  77. package/src/blocks/hero/hero-6.schema.ts +28 -66
  78. package/src/blocks/hero/hero-7.schema.ts +34 -37
  79. package/src/blocks/hero/hero-8.schema.ts +5 -1
  80. package/src/blocks/index.ts +11 -0
  81. package/src/blocks/logos/logos-1.schema.ts +10 -4
  82. package/src/blocks/navbar/navbar-1.schema.ts +3 -5
  83. package/src/blocks/navbar/navbar-1.tsx +5 -19
  84. package/src/blocks/navbar/navbar-2.schema.ts +2 -4
  85. package/src/blocks/navbar/navbar-2.tsx +4 -18
  86. package/src/blocks/navbar/navbar-3.schema.ts +6834 -0
  87. package/src/blocks/navbar/navbar-3.tsx +551 -0
  88. package/src/blocks/pricing/pricing-1.schema.ts +23 -37
  89. package/src/blocks/products/products-listing-1.schema.ts +73 -76
  90. package/src/blocks/profile/profile-1.schema.ts +399 -0
  91. package/src/blocks/profile/profile-1.tsx +64 -0
  92. package/src/blocks/stats/stats-1.schema.ts +34 -3
  93. package/src/blocks/stats/variants/default.ts +0 -1
  94. package/src/blocks/stats/variants/hero.ts +2 -13
  95. package/src/blocks/team/team-1.schema.ts +50 -22
  96. package/src/blocks/team/team-1.tsx +9 -3
  97. package/src/blocks/team/team-2.schema.ts +96 -167
  98. package/src/blocks/team/team-3.schema.ts +32 -49
  99. package/src/blocks/team/team-4.schema.ts +551 -0
  100. package/src/blocks/team/team-4.tsx +59 -0
  101. package/src/blocks/termsAndPrivacy/terms-and-conditions-1.schema.ts +10 -20
  102. package/src/blocks/testimonial/testimonial-1.schema.ts +14 -8
  103. package/src/blocks/testimonial/testimonial-2.schema.ts +2 -2
  104. package/src/blocks/testimonial/testimonial-3.schema.ts +12 -18
  105. package/src/blocks/testimonial/testimonial-4.schema.ts +131 -126
  106. package/src/blocks/testimonial/testimonial-5/variants/default.ts +510 -0
  107. package/src/blocks/testimonial/testimonial-5/variants/index.ts +4 -0
  108. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithLogo.ts +887 -0
  109. package/src/blocks/testimonial/testimonial-5/variants/testimonialWithRatings.ts +923 -0
  110. package/src/blocks/testimonial/testimonial-5.schema.ts +62 -246
  111. package/src/blocks/testimonial/testimonial-5.tsx +32 -8
  112. package/src/blocks/testimonial/testimonial-6.schema.ts +986 -23
  113. package/src/blocks/testimonial/testimonial-6.tsx +107 -57
  114. package/src/schemas/blocks.ts +22 -0
  115. package/src/schemas/categories.ts +6 -0
@@ -1,145 +1,12 @@
1
1
  import type { IBlock } from "@levo-so/studio";
2
2
 
3
- const DUMMY_ICON = {
4
- kind: "icon",
5
- data: {
6
- id: "archive-minus",
7
- label: "Archive Minus",
8
- tags: ["archive", "custom", "directional", "minus"],
9
- svgCode:
10
- '<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M14.5 11.4H9.5C9.09 11.4 8.75 11.06 8.75 10.65C8.75 10.24 9.09 9.90002 9.5 9.90002H14.5C14.91 9.90002 15.25 10.24 15.25 10.65C15.25 11.06 14.91 11.4 14.5 11.4Z" fill="var(--color-icon-primary)"/>\n<path d="M4.92957 22.75C4.50957 22.75 4.11957 22.65 3.76957 22.45C2.99957 22 2.55957 21.09 2.55957 19.96V5.86C2.55957 3.32 4.62957 1.25 7.16957 1.25H16.8196C19.3596 1.25 21.4296 3.32 21.4296 5.86V19.95C21.4296 21.08 20.9896 21.99 20.2196 22.44C19.4496 22.89 18.4396 22.84 17.4496 22.29L12.5696 19.58C12.2796 19.42 11.7096 19.42 11.4196 19.58L6.53957 22.29C5.99957 22.59 5.44957 22.75 4.92957 22.75ZM7.17957 2.75C5.46957 2.75 4.06957 4.15 4.06957 5.86V19.95C4.06957 20.54 4.23957 20.98 4.53957 21.15C4.83957 21.33 5.30957 21.27 5.81957 20.98L10.6996 18.27C11.4396 17.86 12.5596 17.86 13.2996 18.27L18.1796 20.98C18.6896 21.27 19.1596 21.33 19.4596 21.15C19.7596 20.97 19.9296 20.53 19.9296 19.95V5.86C19.9296 4.15 18.5296 2.75 16.8196 2.75H7.17957Z" fill="var(--color-icon-primary)"/>\n</svg>',
11
- },
12
- };
13
-
14
- const DEFAULT_TESTIMONIALS_CONTENT = [
15
- {
16
- card: null,
17
- profileSection: null,
18
- avatar: DUMMY_ICON,
19
- clientInfo: null,
20
- name: "John Smith",
21
- position: "Director, Global Supply Chain",
22
- quote:
23
- "Partnering with SwiftLink, has completely transformed the way we manage our global supply chain. Their ability to provide real-time tracking, proactive communication, and adaptive logistics solutions has helped us reduce delays by over 30% and increase customer satisfaction across regions. What truly sets them apart is their commitment - they feel more like an extension of our internal team than an external vendor.",
24
- },
25
- {
26
- card: null,
27
- profileSection: null,
28
- avatar: DUMMY_ICON,
29
- clientInfo: null,
30
- name: "Sarah Chen",
31
- position: "VP of Operations",
32
- quote:
33
- "The platform's innovative approach to supply chain management has revolutionized our operations. The real-time visibility and predictive analytics have enabled us to make data-driven decisions that significantly improved our efficiency and customer satisfaction rates.",
34
- },
35
- {
36
- card: null,
37
- profileSection: null,
38
- avatar: DUMMY_ICON,
39
- clientInfo: null,
40
- name: "Michael Rodriguez",
41
- position: "Chief Technology Officer",
42
- quote:
43
- "Implementation was seamless and the results were immediate. The team's expertise and dedication to understanding our unique challenges made all the difference. We've seen remarkable improvements in our logistics performance metrics.",
44
- },
45
- {
46
- card: null,
47
- profileSection: null,
48
- avatar: DUMMY_ICON,
49
- clientInfo: null,
50
- name: "Emily Johnson",
51
- position: "Supply Chain Manager",
52
- quote:
53
- "What impressed us most was their proactive approach to problem-solving. They don't just react to issues - they anticipate them. This forward-thinking methodology has saved us countless hours and resources.",
54
- },
55
- ];
56
-
57
- const DEFAULT_CONTENT = {
58
- layout: null,
59
- container: null,
60
- header: null,
61
- textWrapper: null,
62
- title: "What Our Clients Say",
63
- description:
64
- "Hear from industry leaders about their experience with our innovative supply chain solutions.",
65
- testimonials: DEFAULT_TESTIMONIALS_CONTENT,
66
- "carousel-navigation-container": null,
67
- "carousel-navigation": null,
68
- "carousel-navigation-pill": null,
69
- };
3
+ import type { DEFAULT_CONTENT } from "./testimonial-5/variants";
4
+ import { defaultTestimonial5Variant } from "./testimonial-5/variants";
5
+ import { testimonialWithRatings } from "./testimonial-5/variants/testimonialWithRatings";
6
+ import { testimonialWithLogo } from "./testimonial-5/variants/testimonialWithLogo";
70
7
 
71
8
  export type ITestimonial5Content = typeof DEFAULT_CONTENT;
72
9
 
73
- const TESTIMONIAL_CARD_STYLE = {
74
- card: {
75
- display: "flex",
76
- "flex-direction": "column",
77
- "background-color": "var(--color-background)",
78
- "border-radius": "2xl",
79
- "box-shadow": "lg",
80
- padding: "2xl",
81
- "row-gap": "xl",
82
- border: "1px solid",
83
- "border-color": "var(--color-border)",
84
- height: "100%",
85
- mobile: {
86
- padding: "lg",
87
- "row-gap": "lg",
88
- },
89
- },
90
- profileSection: {
91
- display: "flex",
92
- "align-items": "center",
93
- "column-gap": "lg",
94
- mobile: {
95
- "column-gap": "sm",
96
- },
97
- },
98
- avatar: {
99
- height: "64px",
100
- width: "64px",
101
- "border-radius": "50%",
102
- "object-fit": "cover",
103
- border: "2px solid",
104
- "border-color": "var(--color-border)",
105
- mobile: {
106
- height: "48px",
107
- width: "48px",
108
- },
109
- },
110
- clientInfo: {
111
- display: "flex",
112
- "flex-direction": "column",
113
- "row-gap": "4xs",
114
- },
115
- name: {
116
- color: "var(--color-text-1)",
117
- "font-size": "xl",
118
- "font-weight": "bold",
119
- mobile: {
120
- "font-size": "lg",
121
- },
122
- },
123
- position: {
124
- color: "var(--color-text-2)",
125
- "font-size": "sm",
126
- "font-weight": "medium",
127
- },
128
- quote: {
129
- color: "var(--color-text-1)",
130
- "font-size": "base",
131
- "line-height": 1.6,
132
- "font-style": "italic",
133
- mobile: {
134
- "font-size": "sm",
135
- },
136
- },
137
- };
138
-
139
- const TESTIMONIALS_STYLES = Array(DEFAULT_TESTIMONIALS_CONTENT.length)
140
- ?.fill(0)
141
- ?.map(() => TESTIMONIAL_CARD_STYLE);
142
-
143
10
  export const Testimonial5: IBlock = {
144
11
  category_id: "testimonial",
145
12
  title: "Testimonial 5",
@@ -248,6 +115,40 @@ export const Testimonial5: IBlock = {
248
115
  "Main container for individual testimonial card with shadow and border styling.",
249
116
  },
250
117
  },
118
+ {
119
+ key: "stars_wrapper",
120
+ label: "Stars Wrapper",
121
+ field_interface: "BoxWidget",
122
+ hint: {
123
+ prompt_description:
124
+ "Container for the star rating display above the testimonial quote.",
125
+ },
126
+ },
127
+ {
128
+ key: "stars",
129
+ label: "Stars",
130
+ kind: "group",
131
+ field_interface: "BoxWidget",
132
+ fields: [
133
+ {
134
+ key: "star",
135
+ label: "Star",
136
+ field_interface: "IconWidget",
137
+ hint: {
138
+ prompt_description:
139
+ "Individual star icon for rating display. Typically shows a filled star.",
140
+ usecase: "icon",
141
+ size: "small",
142
+ },
143
+ },
144
+ ],
145
+ hint: {
146
+ prompt_description:
147
+ "Collection of star icons representing the client's rating. Usually 5 stars for testimonials.",
148
+ min_items: 3,
149
+ max_items: 5,
150
+ },
151
+ },
251
152
  {
252
153
  key: "profileSection",
253
154
  label: "Profile Section",
@@ -257,6 +158,15 @@ export const Testimonial5: IBlock = {
257
158
  "Container grouping the client avatar and their information (name and position).",
258
159
  },
259
160
  },
161
+ {
162
+ key: "profileSection_content",
163
+ label: "Profile Section Wrapper",
164
+ field_interface: "BoxWidget",
165
+ hint: {
166
+ prompt_description:
167
+ "Container grouping the client avatar and their information (name and position).",
168
+ },
169
+ },
260
170
  {
261
171
  key: "avatar",
262
172
  label: "Avatar",
@@ -300,6 +210,18 @@ export const Testimonial5: IBlock = {
300
210
  max_characters: 50,
301
211
  },
302
212
  },
213
+ {
214
+ key: "org_logo",
215
+ label: "Organization Logo",
216
+ field_interface: "IconWidget",
217
+ hint: {
218
+ prompt_description:
219
+ "Professional headshot or avatar of the client providing the testimonial. Use professional, trustworthy imagery.",
220
+ orientation: "square",
221
+ size: "medium",
222
+ usecase: "icon",
223
+ },
224
+ },
303
225
  {
304
226
  key: "quote",
305
227
  label: "Quote",
@@ -321,114 +243,8 @@ export const Testimonial5: IBlock = {
321
243
  },
322
244
  ],
323
245
  layouts: [
324
- {
325
- key: "default",
326
- title: "Default",
327
- styles: {
328
- layout: {
329
- width: "100%",
330
- "padding-top": "10xl",
331
- "padding-bottom": "10xl",
332
- "padding-right": "8xl",
333
- "padding-left": "8xl",
334
- "media:max:768px": {
335
- "padding-top": "5xl",
336
- "padding-bottom": "5xl",
337
- "padding-right": "5xl",
338
- "padding-left": "5xl",
339
- },
340
- "media:max:480px": {
341
- "padding-top": "2xl",
342
- "padding-bottom": "2xl",
343
- "padding-right": "2xl",
344
- "padding-left": "2xl",
345
- },
346
- },
347
- container: {
348
- width: "100%",
349
- display: "flex",
350
- "flex-direction": "column",
351
- "row-gap": "7xl",
352
- "media:max:768px": {
353
- "row-gap": "3xl",
354
- },
355
- "media:max:480px": {
356
- "row-gap": "4xl",
357
- },
358
- },
359
- header: {
360
- display: "flex",
361
- "justify-content": "center",
362
- "margin-bottom": "3xl",
363
- tablet: {
364
- "margin-bottom": "2xl",
365
- },
366
- },
367
- textWrapper: {
368
- display: "flex",
369
- "flex-direction": "column",
370
- "align-items": "center",
371
- "text-align": "center",
372
- "row-gap": "sm",
373
- "max-width": "600px",
374
- },
375
- title: {
376
- "font-size": "3xl",
377
- "font-weight": "bold",
378
- color: "var(--color-text-1)",
379
- tablet: {
380
- "font-size": "2xl",
381
- },
382
- },
383
- description: {
384
- "font-size": "lg",
385
- color: "var(--color-text-2)",
386
- tablet: {
387
- "font-size": "base",
388
- },
389
- },
390
- testimonials_levoGroup: {
391
- number_of_slides: 1,
392
- tablet: {
393
- number_of_slides: 1,
394
- },
395
- mobile: {
396
- number_of_slides: 1,
397
- },
398
- },
399
- testimonials: TESTIMONIALS_STYLES,
400
- "carousel-navigation-container": {
401
- display: "flex",
402
- "justify-content": "center",
403
- "margin-top": "2xl",
404
- },
405
- "carousel-navigation": {
406
- display: "flex",
407
- "column-gap": "sm",
408
- "align-items": "center",
409
- },
410
- "carousel-navigation-pill": {
411
- width: "8px",
412
- height: "8px",
413
- "border-radius": "8px",
414
- "background-color": "var(--color-border)",
415
- cursor: "pointer",
416
- transition: "all 0.3s ease",
417
- "&:hover": {
418
- "background-color": "var(--color-brand-secondary)",
419
- },
420
- filter: "none",
421
- },
422
- },
423
- content: DEFAULT_CONTENT,
424
- config: {
425
- testimonials_levoGroup: {
426
- carousel: {
427
- loop: true,
428
- autoPlay: false,
429
- },
430
- },
431
- },
432
- },
246
+ defaultTestimonial5Variant,
247
+ testimonialWithRatings,
248
+ testimonialWithLogo,
433
249
  ],
434
250
  };
@@ -52,19 +52,43 @@ const Testimonial5: React.FC<ILevoBlockBaseProps<ITestimonial5Content>> = ({
52
52
  data-levo_group
53
53
  >
54
54
  <CarouselContent>
55
- {(content?.testimonials ?? []).map((_: any, index: number) => (
55
+ {(content?.testimonials ?? []).map((_, index: number) => (
56
56
  <CarouselItem key={index} data-levo_group_item>
57
57
  <Box elementKey={`testimonials.${index}.card`}>
58
+ {(content?.testimonials?.[index] as any)?.stars?.length >
59
+ 0 && (
60
+ <Box elementKey={`testimonials.${index}.stars_wrapper`}>
61
+ <Box
62
+ elementKey={`testimonials.${index}.stars_levoGroup`}
63
+ data-levo_group
64
+ >
65
+ {(
66
+ (content?.testimonials?.[index] as any)?.stars ?? []
67
+ ).map((_: any, starIndex: number) => (
68
+ <Icon
69
+ key={`star-${starIndex}`}
70
+ data-levo_group_item
71
+ elementKey={`testimonials.${index}.stars.${starIndex}.star`}
72
+ />
73
+ ))}
74
+ </Box>
75
+ </Box>
76
+ )}
77
+ <Typography elementKey={`testimonials.${index}.quote`} />
58
78
  <Box elementKey={`testimonials.${index}.profileSection`}>
59
- <Icon elementKey={`testimonials.${index}.avatar`} />
60
- <Box elementKey={`testimonials.${index}.clientInfo`}>
61
- <Heading elementKey={`testimonials.${index}.name`} />
62
- <Typography
63
- elementKey={`testimonials.${index}.position`}
64
- />
79
+ <Box
80
+ elementKey={`testimonials.${index}.profileSection_content`}
81
+ >
82
+ <Icon elementKey={`testimonials.${index}.avatar`} />
83
+ <Box elementKey={`testimonials.${index}.clientInfo`}>
84
+ <Heading elementKey={`testimonials.${index}.name`} />
85
+ <Typography
86
+ elementKey={`testimonials.${index}.position`}
87
+ />
88
+ </Box>
65
89
  </Box>
90
+ <Icon elementKey={`testimonials.${index}.org_logo`} />
66
91
  </Box>
67
- <Typography elementKey={`testimonials.${index}.quote`} />
68
92
  </Box>
69
93
  </CarouselItem>
70
94
  ))}