@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
@@ -0,0 +1,84 @@
1
+ import {
2
+ type ILevoBlockBaseProps,
3
+ Box,
4
+ Button,
5
+ Container,
6
+ Heading,
7
+ Icon,
8
+ Media,
9
+ Section,
10
+ Typography,
11
+ useContentEngine,
12
+ } from "@levo-so/studio";
13
+ import dayjs from "dayjs";
14
+
15
+ import type { IBlogListing3Content } from "./blog-listing-3.schema";
16
+
17
+ const BlogListing3: React.FC<
18
+ ILevoBlockBaseProps<IBlogListing3Content>
19
+ > = ({}) => {
20
+ const { data, query, setQuery, meta } = useContentEngine("blogs");
21
+
22
+ const handleNext = () => setQuery({ page: (query?.page || 0) + 1 });
23
+ const handlePrevious = () => setQuery({ page: (query?.page || 0) - 1 });
24
+
25
+ return (
26
+ <Section elementKey="layout">
27
+ <Container elementKey="container">
28
+ <Box elementKey="header-wrapper">
29
+ <Box elementKey="title-wrapper">
30
+ <Icon elementKey="header-icon" />
31
+ <Heading elementKey="header" />
32
+ </Box>
33
+ <Button elementKey="header-cta" />
34
+ </Box>
35
+ <Box elementKey="blogs_levoGroup" data-levo_group>
36
+ {(data || [])?.map((item: any, index: number) => (
37
+ <Box
38
+ key={`blogs.${index}`}
39
+ data-levo_group_item
40
+ elementKey={`blogs.${index}.blog`}
41
+ >
42
+ <Media elementKey={`blogs.${index}.media`} alt="Blog Media" />
43
+ <Box elementKey={`blogs.${index}.blog-info-wrapper`}>
44
+ <Box elementKey={`blogs.${index}.blog-content`}>
45
+ <Box elementKey={`blogs.${index}.blog-header`}>
46
+ <Icon elementKey={`blogs.${index}.header-icon`} />
47
+ <Typography elementKey={`blogs.${index}.blog-type`}>
48
+ {data?.[index]?.["publish-date"] &&
49
+ dayjs(data?.[index]?.["publish-date"]).isValid()
50
+ ? dayjs(data?.[index]?.["publish-date"]).format(
51
+ "DD MMM, YYYY",
52
+ )
53
+ : " "}
54
+ </Typography>
55
+ </Box>
56
+ <Heading elementKey={`blogs.${index}.title`} />
57
+ <Typography elementKey={`blogs.${index}.description`} />
58
+ </Box>
59
+ <Button elementKey={`blogs.${index}.cta`} />
60
+ </Box>
61
+ </Box>
62
+ ))}
63
+ </Box>
64
+ <Box elementKey="pagination-wrapper">
65
+ <Button
66
+ elementKey="pagination-left"
67
+ disabled={query?.page === 1}
68
+ onClick={handlePrevious}
69
+ />
70
+ <Typography elementKey="pagination-text">
71
+ {`${query?.page || 0}/${meta?.pages || 0}`}
72
+ </Typography>
73
+ <Button
74
+ elementKey="pagination-right"
75
+ onClick={handleNext}
76
+ disabled={query?.page === meta?.pages}
77
+ />
78
+ </Box>
79
+ </Container>
80
+ </Section>
81
+ );
82
+ };
83
+
84
+ export default BlogListing3;
@@ -288,7 +288,7 @@ export const BlogPost1: IBlock = {
288
288
  },
289
289
  "tag-container": {
290
290
  width: "fit-content",
291
- "border-radius": "lg",
291
+ "border-radius": "base",
292
292
  border: "1px solid",
293
293
  "border-color": "var(--color-border)",
294
294
  "background-color": "#E9E9EB",
@@ -309,11 +309,7 @@ export const BlogPost1: IBlock = {
309
309
  },
310
310
  title: {
311
311
  "text-align": "center",
312
- "font-size": "5xl",
313
- "font-weight": "bold",
314
- mobile: {
315
- "font-size": "3xl",
316
- },
312
+ color: "text-1",
317
313
  },
318
314
  "meta-info": {
319
315
  display: "flex",
@@ -338,8 +334,6 @@ export const BlogPost1: IBlock = {
338
334
  "border-radius": "100%",
339
335
  },
340
336
  "author-name": {
341
- "font-size": "sm",
342
- "font-weight": "normal",
343
337
  color: "var(--color-text-2)",
344
338
  },
345
339
  "publish-date": {
@@ -386,7 +380,21 @@ export const BlogPost1: IBlock = {
386
380
  },
387
381
  },
388
382
  content: DEFAULT_CONTENT,
389
- config: {},
383
+ config: {
384
+ title: {
385
+ heading: {
386
+ level: 2,
387
+ },
388
+ selectedVariants: {
389
+ Heading_Level: "H2",
390
+ },
391
+ },
392
+ "author-name": {
393
+ selectedVariants: {
394
+ Heading_Level: "H6",
395
+ },
396
+ },
397
+ },
390
398
  },
391
399
  ],
392
400
  };
@@ -506,14 +506,12 @@ export const BlogPost2: IBlock = {
506
506
  "border-radius": "lg",
507
507
  border: "1px solid",
508
508
  "border-color": "var(--color-border)",
509
- "background-color": "var(--color-background-1)",
509
+
510
510
  display: "flex",
511
511
  "flex-direction": "column",
512
512
  "row-gap": "base",
513
513
  },
514
514
  heading: {
515
- "font-size": "xl",
516
- "font-weight": "bold",
517
515
  color: "var(--color-text-1)",
518
516
  "margin-bottom": "base",
519
517
  },
@@ -528,8 +526,6 @@ export const BlogPost2: IBlock = {
528
526
  "margin-bottom": "sm",
529
527
  },
530
528
  title: {
531
- "font-size": "lg",
532
- "font-weight": "semibold",
533
529
  "margin-bottom": "xs",
534
530
  color: "var(--color-text-1)",
535
531
  },
@@ -544,8 +540,6 @@ export const BlogPost2: IBlock = {
544
540
  "margin-bottom": "sm",
545
541
  },
546
542
  title: {
547
- "font-size": "lg",
548
- "font-weight": "semibold",
549
543
  "margin-bottom": "xs",
550
544
  color: "var(--color-text-1)",
551
545
  },
@@ -556,20 +550,6 @@ export const BlogPost2: IBlock = {
556
550
  },
557
551
  },
558
552
  ],
559
- button: {
560
- "padding-top": "xs",
561
- "padding-bottom": "xs",
562
- "padding-left": "base",
563
- "padding-right": "base",
564
- "background-color": "var(--color-background-1)",
565
- "border-radius": "base",
566
- border: "1px solid",
567
- "border-color": "var(--color-border)",
568
- "font-size": "sm",
569
- "font-weight": "medium",
570
- color: "var(--color-text-1)",
571
- "margin-top": "auto",
572
- },
573
553
  },
574
554
  {
575
555
  card: {
@@ -580,7 +560,7 @@ export const BlogPost2: IBlock = {
580
560
  "border-radius": "lg",
581
561
  border: "1px solid",
582
562
  "border-color": "var(--color-border)",
583
- "background-color": "var(--color-background-1)",
563
+
584
564
  display: "flex",
585
565
  "flex-direction": "column",
586
566
  "row-gap": "base",
@@ -601,8 +581,6 @@ export const BlogPost2: IBlock = {
601
581
  "margin-bottom": "sm",
602
582
  },
603
583
  title: {
604
- "font-size": "lg",
605
- "font-weight": "semibold",
606
584
  "margin-bottom": "xs",
607
585
  color: "var(--color-text-1)",
608
586
  },
@@ -613,20 +591,6 @@ export const BlogPost2: IBlock = {
613
591
  },
614
592
  },
615
593
  ],
616
- button: {
617
- "padding-top": "xs",
618
- "padding-bottom": "xs",
619
- "padding-left": "base",
620
- "padding-right": "base",
621
- "background-color": "var(--color-background-1)",
622
- "border-radius": "base",
623
- border: "1px solid",
624
- "border-color": "var(--color-border)",
625
- "font-size": "sm",
626
- "font-weight": "medium",
627
- color: "var(--color-text-1)",
628
- "margin-top": "auto",
629
- },
630
594
  },
631
595
  {
632
596
  card: {
@@ -637,7 +601,7 @@ export const BlogPost2: IBlock = {
637
601
  "border-radius": "lg",
638
602
  border: "1px solid",
639
603
  "border-color": "var(--color-border)",
640
- "background-color": "var(--color-background-1)",
604
+
641
605
  display: "flex",
642
606
  "flex-direction": "column",
643
607
  "row-gap": "base",
@@ -658,8 +622,6 @@ export const BlogPost2: IBlock = {
658
622
  "margin-bottom": "sm",
659
623
  },
660
624
  title: {
661
- "font-size": "lg",
662
- "font-weight": "semibold",
663
625
  "margin-bottom": "xs",
664
626
  color: "var(--color-text-1)",
665
627
  },
@@ -670,20 +632,6 @@ export const BlogPost2: IBlock = {
670
632
  },
671
633
  },
672
634
  ],
673
- button: {
674
- "padding-top": "xs",
675
- "padding-bottom": "xs",
676
- "padding-left": "base",
677
- "padding-right": "base",
678
- "background-color": "var(--color-background-1)",
679
- "border-radius": "base",
680
- border: "1px solid",
681
- "border-color": "var(--color-border)",
682
- "font-size": "sm",
683
- "font-weight": "medium",
684
- color: "var(--color-text-1)",
685
- "margin-top": "auto",
686
- },
687
635
  },
688
636
  ],
689
637
 
@@ -828,7 +776,16 @@ export const BlogPost2: IBlock = {
828
776
  },
829
777
  },
830
778
  content: DEFAULT_CONTENT,
831
- config: {},
779
+ config: {
780
+ title: {
781
+ heading: {
782
+ level: 2,
783
+ },
784
+ selectedVariants: {
785
+ Heading_Level: "H2",
786
+ },
787
+ },
788
+ },
832
789
  },
833
790
  ],
834
791
  };
@@ -0,0 +1,284 @@
1
+ import type { IBlock } from "@levo-so/studio";
2
+
3
+ const DEFAULT_CONTENT = {
4
+ layout: null,
5
+ container: null,
6
+ main_container: null,
7
+ left_container: null,
8
+ image: null,
9
+ social_icons: null,
10
+ social_icon_1: null,
11
+ social_icon_2: null,
12
+ social_icon_3: null,
13
+ ctas: [],
14
+ right_container: null,
15
+ experience_container: null,
16
+ experience_title: "15 Years of Experience",
17
+ experience_description:
18
+ "Leading digital transformation initiatives for Fortune 500 companies worldwide",
19
+ expertise_title: "Technical Expertise",
20
+ expertise_description:
21
+ "Specializing in cloud architecture, AI integration, and scalable web solutions",
22
+ content_container: null,
23
+ content_description:
24
+ "Our team of expert developers and designers work collaboratively to deliver innovative solutions that drive business growth. We combine cutting-edge technology with industry best practices to create digital experiences that engage and inspire users.",
25
+ };
26
+
27
+ export type IBlogPost3Content = typeof DEFAULT_CONTENT;
28
+
29
+ export const BlogPost3: IBlock = {
30
+ category_id: "blogs",
31
+ title: "Blog Post 3",
32
+ key: "blog-post-3",
33
+ version: "v1",
34
+ prompt_description:
35
+ "A blog post layout with left-right container featuring image, social icons, and experience content",
36
+ content_schema: [
37
+ {
38
+ key: "layout",
39
+ label: "Layout",
40
+ field_interface: "LayoutWidget",
41
+ },
42
+ {
43
+ key: "container",
44
+ label: "Container",
45
+ field_interface: "ContainerWidget",
46
+ },
47
+ {
48
+ key: "main_container",
49
+ label: "Main Container",
50
+ field_interface: "BoxWidget",
51
+ },
52
+ {
53
+ key: "left_container",
54
+ label: "Left Container",
55
+ field_interface: "BoxWidget",
56
+ },
57
+ {
58
+ key: "image",
59
+ label: "Image",
60
+ field_interface: "ImageWidget",
61
+ },
62
+ {
63
+ key: "social_icons",
64
+ label: "Social Icons Container",
65
+ field_interface: "BoxWidget",
66
+ },
67
+ {
68
+ key: "social_icon_1",
69
+ label: "Social Icon 1",
70
+ field_interface: "IconWidget",
71
+ },
72
+ {
73
+ key: "social_icon_2",
74
+ label: "Social Icon 2",
75
+ field_interface: "IconWidget",
76
+ },
77
+ {
78
+ key: "social_icon_3",
79
+ label: "Social Icon 3",
80
+ field_interface: "IconWidget",
81
+ },
82
+ {
83
+ key: "ctas",
84
+ label: "Call to Action",
85
+ kind: "group",
86
+ field_interface: "BoxWidget",
87
+ fields: [
88
+ {
89
+ key: "button",
90
+ label: "Button",
91
+ field_interface: "ButtonWidget",
92
+ },
93
+ ],
94
+ },
95
+ {
96
+ key: "right_container",
97
+ label: "Right Container",
98
+ field_interface: "BoxWidget",
99
+ },
100
+ {
101
+ key: "main_text_container",
102
+ label: "Main Text Container",
103
+ field_interface: "BoxWidget",
104
+ },
105
+ {
106
+ key: "name",
107
+ label: "Name",
108
+ field_interface: "TypographyWidget",
109
+ },
110
+ {
111
+ key: "experience_wrapper",
112
+ label: "Experience Wrapper",
113
+ field_interface: "BoxWidget",
114
+ },
115
+ {
116
+ key: "expertise_wrapper",
117
+ label: "Expertise Wrapper",
118
+ field_interface: "BoxWidget",
119
+ },
120
+ {
121
+ key: "experience_title",
122
+ label: "Experience Title",
123
+ field_interface: "TypographyWidget",
124
+ },
125
+ {
126
+ key: "experience_description",
127
+ label: "Experience Description",
128
+ field_interface: "TypographyWidget",
129
+ },
130
+ {
131
+ key: "expertise_title",
132
+ label: "Expertise Title",
133
+ field_interface: "TypographyWidget",
134
+ },
135
+ {
136
+ key: "expertise_description",
137
+ label: "Expertise Description",
138
+ field_interface: "TypographyWidget",
139
+ },
140
+ {
141
+ key: "content_container",
142
+ label: "Content Container",
143
+ field_interface: "BoxWidget",
144
+ },
145
+ {
146
+ key: "content_description",
147
+ label: "Content Description",
148
+ field_interface: "TypographyWidget",
149
+ },
150
+ ],
151
+ layouts: [
152
+ {
153
+ key: "default",
154
+ title: "Default",
155
+ styles: {
156
+ layout: {
157
+ "padding-top": "48px",
158
+ "padding-bottom": "48px",
159
+ "padding-left": "48px",
160
+ "padding-right": "48px",
161
+ },
162
+ container: {
163
+ "max-width": "1280px",
164
+ "margin-left": "auto",
165
+ "margin-right": "auto",
166
+ },
167
+ main_container: {
168
+ display: "flex",
169
+ "flex-direction": "row",
170
+ "align-items": "flex-start",
171
+ "column-gap": "48px",
172
+ tablet: {
173
+ "flex-direction": "column",
174
+ },
175
+ },
176
+ left_container: {
177
+ display: "flex",
178
+ "flex-direction": "column",
179
+ "align-items": "center",
180
+ flex: "1",
181
+ "max-width": "400px",
182
+ tablet: {
183
+ "max-width": "100%",
184
+ },
185
+ },
186
+ image: {
187
+ "border-radius": "12px",
188
+ "margin-bottom": "24px",
189
+ width: "100%",
190
+ height: "300px",
191
+ "object-fit": "cover",
192
+ },
193
+ social_icons: {
194
+ display: "flex",
195
+ "flex-direction": "row",
196
+ "column-gap": "16px",
197
+ "align-items": "center",
198
+ "justify-content": "center",
199
+ },
200
+ social_icon_1: {
201
+ "background-color": "background-1",
202
+ color: "text-1",
203
+ "padding-top": "12px",
204
+ "padding-bottom": "12px",
205
+ "padding-left": "12px",
206
+ "padding-right": "12px",
207
+ "border-radius": "50%",
208
+ "border-color": "border",
209
+ "border-width": "2px",
210
+ },
211
+ social_icon_2: {
212
+ "background-color": "background-1",
213
+ color: "text-1",
214
+ "padding-top": "12px",
215
+ "padding-bottom": "12px",
216
+ "padding-left": "12px",
217
+ "padding-right": "12px",
218
+ "border-radius": "50%",
219
+ "border-color": "border",
220
+ "border-width": "2px",
221
+ },
222
+ social_icon_3: {
223
+ "background-color": "background-1",
224
+ color: "text-1",
225
+ "padding-top": "12px",
226
+ "padding-bottom": "12px",
227
+ "padding-left": "12px",
228
+ "padding-right": "12px",
229
+ "border-radius": "50%",
230
+ "border-color": "border",
231
+ "border-width": "2px",
232
+ },
233
+ right_container: {
234
+ display: "flex",
235
+ "flex-direction": "column",
236
+ "align-items": "flex-start",
237
+ flex: "2",
238
+ "row-gap": "32px",
239
+ },
240
+ experience_container: {
241
+ display: "flex",
242
+ "flex-direction": "column",
243
+ "align-items": "flex-start",
244
+ "row-gap": "16px",
245
+ },
246
+ experience_title: {
247
+ "font-size": "24px",
248
+ "font-weight": "700",
249
+ color: "text-1",
250
+ "margin-bottom": "8px",
251
+ },
252
+ experience_description: {
253
+ "font-size": "16px",
254
+ color: "text-2",
255
+ "line-height": "1.6",
256
+ "margin-bottom": "16px",
257
+ },
258
+ expertise_title: {
259
+ "font-size": "20px",
260
+ "font-weight": "600",
261
+ color: "text-1",
262
+ "margin-bottom": "8px",
263
+ },
264
+ expertise_description: {
265
+ "font-size": "16px",
266
+ color: "text-2",
267
+ "line-height": "1.6",
268
+ },
269
+ content_container: {
270
+ display: "flex",
271
+ "flex-direction": "column",
272
+ "align-items": "flex-start",
273
+ },
274
+ content_description: {
275
+ "font-size": "16px",
276
+ color: "text-2",
277
+ "line-height": "1.6",
278
+ },
279
+ },
280
+ content: DEFAULT_CONTENT,
281
+ config: {},
282
+ },
283
+ ],
284
+ };
@@ -0,0 +1,58 @@
1
+ import {
2
+ Box,
3
+ Button,
4
+ Container,
5
+ Icon,
6
+ type ILevoBlockBaseProps,
7
+ Image,
8
+ Section,
9
+ Typography,
10
+ } from "@levo-so/studio";
11
+
12
+ import type { IBlogPost3Content } from "./blog-post-3.schema";
13
+
14
+ const BlogPost3: React.FC<ILevoBlockBaseProps<IBlogPost3Content>> = ({
15
+ content,
16
+ }) => (
17
+ <Section elementKey="layout">
18
+ <Container elementKey="container">
19
+ <Box elementKey="main_container">
20
+ <Box elementKey="left_container">
21
+ <Image elementKey="image" alt="Blog post image" />
22
+ <Box elementKey="social_icons">
23
+ <Icon elementKey="social_icon_1" />
24
+ <Icon elementKey="social_icon_2" />
25
+ <Icon elementKey="social_icon_3" />
26
+ </Box>
27
+ <Box elementKey="ctas_levoGroup" data-levo_group>
28
+ {(content?.ctas || [])?.map((_, index) => (
29
+ <Button
30
+ elementKey={`ctas.${index}.button`}
31
+ key={`blog-post-3-cta-${index}`}
32
+ data-levo_group_item
33
+ />
34
+ ))}
35
+ </Box>
36
+ </Box>
37
+ <Box elementKey="right_container">
38
+ <Typography elementKey="name" />
39
+ <Box elementKey="main_text_container">
40
+ <Box elementKey="experience_wrapper">
41
+ <Typography elementKey="experience_title" />
42
+ <Typography elementKey="experience_description" />
43
+ </Box>
44
+ <Box elementKey="expertise_wrapper">
45
+ <Typography elementKey="expertise_title" />
46
+ <Typography elementKey="expertise_description" />
47
+ </Box>
48
+ </Box>
49
+ <Box elementKey="content_container">
50
+ <Typography elementKey="content_description" />
51
+ </Box>
52
+ </Box>
53
+ </Box>
54
+ </Container>
55
+ </Section>
56
+ );
57
+
58
+ export default BlogPost3;