@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
@@ -0,0 +1,126 @@
1
+ import {
2
+ Box,
3
+ Container,
4
+ Heading,
5
+ Section,
6
+ Typography,
7
+ type ILevoBlockBaseProps,
8
+ TabsRoot,
9
+ TabsList,
10
+ TabsTrigger,
11
+ TabsContent,
12
+ AccordionRoot,
13
+ AccordionItem,
14
+ AccordionTrigger,
15
+ AccordionContent,
16
+ Icon,
17
+ Media,
18
+ Button,
19
+ } from "@levo-so/studio";
20
+ import React, { useState } from "react";
21
+
22
+ import { type ITab1Content } from "./tab-1.schema";
23
+
24
+ const Tab1: React.FC<ILevoBlockBaseProps<ITab1Content>> = ({ content }) => {
25
+ const [activeIndexes, setActiveIndexes] = useState<{ [key: number]: number }>(
26
+ {},
27
+ );
28
+
29
+ const handleValueChange = (tabIndex: number, value: string | undefined) => {
30
+ if (typeof value === "string") {
31
+ const index = parseInt(value, 10);
32
+ if (!isNaN(index)) {
33
+ setActiveIndexes((prev) => ({
34
+ ...prev,
35
+ [tabIndex]: index,
36
+ }));
37
+ }
38
+ }
39
+ };
40
+
41
+ return (
42
+ <Section elementKey="layout">
43
+ <Container elementKey="container">
44
+ <Box elementKey="header_wrapper">
45
+ <Heading elementKey="title" />
46
+ <Typography elementKey="description" />
47
+ </Box>
48
+ <TabsRoot defaultValue="0">
49
+ <Box elementKey="tabs_levoGroup" data-levo_group>
50
+ <TabsList elementKey={`tabs_tabList`}>
51
+ {(content.tabs ?? []).map((_: any, index: number) => (
52
+ <TabsTrigger
53
+ value={index.toString()}
54
+ key={index}
55
+ elementKey={`tabs.${index}.TabsTrigger`}
56
+ />
57
+ ))}
58
+ </TabsList>
59
+ {(content.tabs ?? []).map((_: any, index: number) => (
60
+ <TabsContent
61
+ value={index.toString()}
62
+ key={index}
63
+ data-levo_group_item
64
+ elementKey={`tabs.${index}.tab_content`}
65
+ >
66
+ <Box elementKey={`tabs.${index}.content_wrapper`}>
67
+ <AccordionRoot
68
+ type="single"
69
+ elementKey={`tabs.${index}.faqs_levoGroup`}
70
+ data-levo_group
71
+ defaultValue="0"
72
+ onValueChange={(value: string) =>
73
+ handleValueChange(index, value)
74
+ }
75
+ >
76
+ {(content.tabs[index]?.faqs ?? []).map(
77
+ (_: any, faqIndex: number) => (
78
+ <AccordionItem
79
+ value={faqIndex.toString()}
80
+ key={faqIndex}
81
+ elementKey={`tabs.${index}.faqs.${faqIndex}.wrapper`}
82
+ data-levo_group_item
83
+ >
84
+ <AccordionTrigger
85
+ elementKey={`tabs.${index}.faqs.${faqIndex}.trigger`}
86
+ >
87
+ <Box
88
+ elementKey={`tabs.${index}.faqs.${faqIndex}.iconQuestionWrapper`}
89
+ >
90
+ <Icon
91
+ elementKey={`tabs.${index}.faqs.${faqIndex}.triggerIcon`}
92
+ />
93
+ <Typography
94
+ elementKey={`tabs.${index}.faqs.${faqIndex}.question`}
95
+ />
96
+ </Box>
97
+ </AccordionTrigger>
98
+ <AccordionContent
99
+ elementKey={`tabs.${index}.faqs.${faqIndex}.content`}
100
+ >
101
+ <Typography
102
+ elementKey={`tabs.${index}.faqs.${faqIndex}.answer`}
103
+ />
104
+ <Button
105
+ elementKey={`tabs.${index}.faqs.${faqIndex}.cta`}
106
+ />
107
+ </AccordionContent>
108
+ </AccordionItem>
109
+ ),
110
+ )}
111
+ </AccordionRoot>
112
+ </Box>
113
+ <Media
114
+ elementKey={`tabs.${index}.faqs.${activeIndexes[index] ?? 0}.media`}
115
+ alt={`FAQ ${(activeIndexes[index] ?? 0) + 1} Media`}
116
+ />
117
+ </TabsContent>
118
+ ))}
119
+ </Box>
120
+ </TabsRoot>
121
+ </Container>
122
+ </Section>
123
+ );
124
+ };
125
+
126
+ export default Tab1;