@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.
- package/package.json +2 -2
- package/src/blocks/about-us/about-us-1.schema.ts +14 -0
- package/src/blocks/about-us/about-us-1.tsx +4 -2
- package/src/blocks/about-us/about-us-2.schema.ts +48 -0
- package/src/blocks/about-us/about-us-2.tsx +6 -0
- package/src/blocks/blogs/blog-listing-1.schema.ts +10 -0
- package/src/blocks/blogs/blog-listing-2.schema.ts +42 -162
- package/src/blocks/blogs/blog-listing-2.tsx +7 -0
- package/src/blocks/blogs/blog-listing-3.schema.ts +9 -0
- package/src/blocks/blogs/blog-post-1.schema.ts +7 -1
- package/src/blocks/blogs/blog-post-1.tsx +1 -1
- package/src/blocks/blogs/blog-post-2.schema.ts +464 -28
- package/src/blocks/blogs/blog-post-2.tsx +6 -13
- package/src/blocks/blogs/blog-post-3.schema.ts +42 -0
- package/src/blocks/blogs/blog-post-3.tsx +4 -1
- package/src/blocks/calendar/calendar-1.schema.ts +537 -0
- package/src/blocks/calendar/calendar-1.tsx +145 -0
- package/src/blocks/cards/cards-10.schema.ts +52 -4
- package/src/blocks/cards/cards-10.tsx +13 -1
- package/src/blocks/cards/cards-14.schema.ts +532 -0
- package/src/blocks/cards/cards-14.tsx +54 -0
- package/src/blocks/cards/cards-15.schema.ts +277 -0
- package/src/blocks/cards/cards-15.tsx +40 -0
- package/src/blocks/cards/cards-6.schema.ts +46 -0
- package/src/blocks/cards/cards-6.tsx +27 -1
- package/src/blocks/cards/cards-7.tsx +2 -0
- package/src/blocks/carousel/carousel-2.schema.ts +1128 -0
- package/src/blocks/carousel/carousel-2.tsx +159 -0
- package/src/blocks/content/content-5.schema.ts +112 -6
- package/src/blocks/content/content-5.tsx +19 -3
- package/src/blocks/content/content-6.schema.ts +16 -3
- package/src/blocks/content/content-6.tsx +1 -0
- package/src/blocks/content/content-8.schema.ts +125 -0
- package/src/blocks/content/content-8.tsx +27 -0
- package/src/blocks/content/content-9.schema.ts +2729 -0
- package/src/blocks/content/content-9.tsx +91 -0
- package/src/blocks/cta/cta-2.schema.ts +46 -4
- package/src/blocks/cta/cta-2.tsx +9 -1
- package/src/blocks/embed/embed-1.schema.ts +100 -0
- package/src/blocks/event/ClientOnly.tsx +27 -0
- package/src/blocks/event/event-details.tsx +10 -3
- package/src/blocks/event/event-listing-3.tsx +9 -2
- package/src/blocks/event/event-listing-4.tsx +11 -2
- package/src/blocks/event/event-listing.tsx +11 -4
- package/src/blocks/faq/faq-1.schema.ts +58 -1
- package/src/blocks/faq/faq-1.tsx +18 -1
- package/src/blocks/faq/faq-2.tsx +2 -1
- package/src/blocks/faq/faq-3.schema.ts +6 -1
- package/src/blocks/faq/faq-3.tsx +1 -0
- package/src/blocks/features/features-1/features-1.schema.ts +2 -0
- package/src/blocks/features/features-1/variants/index.ts +2 -0
- package/src/blocks/features/features-1/variants/stylized-cards-v3.ts +451 -0
- package/src/blocks/features/features-4.schema.ts +358 -20
- package/src/blocks/features/features-4.tsx +3 -1
- package/src/blocks/features/features-6.tsx +2 -0
- package/src/blocks/filter-listing/filter-listing-1.schema.ts +614 -0
- package/src/blocks/filter-listing/filter-listing-1.tsx +128 -0
- package/src/blocks/footer/footer-6.schema.ts +2 -2
- package/src/blocks/hero/hero-11.schema.ts +849 -0
- package/src/blocks/hero/hero-11.tsx +59 -0
- package/src/blocks/hero/hero-12.schema.ts +712 -0
- package/src/blocks/hero/hero-12.tsx +76 -0
- package/src/blocks/hero/hero-13.schema.ts +238 -0
- package/src/blocks/hero/hero-13.tsx +31 -0
- package/src/blocks/hero/hero-4.tsx +2 -0
- package/src/blocks/hero/hero-5.tsx +2 -0
- package/src/blocks/hero/hero-7.tsx +2 -1
- package/src/blocks/hero/hero-8.tsx +2 -0
- package/src/blocks/hero/hero-9.schema.ts +5 -0
- package/src/blocks/hero/hero-9.tsx +2 -0
- package/src/blocks/index.ts +27 -0
- package/src/blocks/navbar/navbar-1.schema.ts +6 -6
- package/src/blocks/navbar/navbar-1.tsx +6 -7
- package/src/blocks/navbar/navbar-2.schema.ts +9 -9
- package/src/blocks/navbar/navbar-2.tsx +7 -8
- package/src/blocks/navbar/navbar-3.schema.ts +9 -9
- package/src/blocks/navbar/navbar-3.tsx +139 -114
- package/src/blocks/polling/polling-1.schema.ts +134 -0
- package/src/blocks/polling/polling-1.tsx +466 -0
- package/src/blocks/products/products-listing-2.schema.ts +596 -0
- package/src/blocks/products/products-listing-2.tsx +56 -0
- package/src/blocks/products/products-listing-3.schema.ts +818 -0
- package/src/blocks/products/products-listing-3.tsx +125 -0
- package/src/blocks/profile/profile-2.schema.ts +505 -0
- package/src/blocks/profile/profile-2.tsx +64 -0
- package/src/blocks/profile/profile-3.schema.ts +867 -0
- package/src/blocks/profile/profile-3.tsx +98 -0
- package/src/blocks/services/service-1.schema.ts +1743 -0
- package/src/blocks/services/service-1.tsx +139 -0
- package/src/blocks/services/service-2.schema.ts +433 -0
- package/src/blocks/services/service-2.tsx +98 -0
- package/src/blocks/services/service-3.schema.ts +631 -0
- package/src/blocks/services/service-3.tsx +135 -0
- package/src/blocks/tabs/tab-1.schema.ts +831 -0
- package/src/blocks/tabs/tab-1.tsx +126 -0
- package/src/blocks/tabs/tab-2.schema.ts +767 -0
- package/src/blocks/tabs/tab-2.tsx +60 -0
- package/src/blocks/team/team-3.schema.ts +5 -1
- package/src/blocks/team/team-3.tsx +7 -0
- package/src/blocks/team/team-4.schema.ts +17 -13
- package/src/blocks/team/team-4.tsx +4 -1
- package/src/blocks/team/team-5.schema.ts +369 -0
- package/src/blocks/team/team-5.tsx +38 -0
- package/src/blocks/testimonial/testimonial-1.tsx +0 -1
- package/src/blocks/testimonial/testimonial-2.tsx +2 -1
- package/src/blocks/testimonial/testimonial-3.tsx +2 -0
- package/src/blocks/testimonial/testimonial-4.tsx +2 -1
- package/src/blocks/testimonial/testimonial-5.tsx +2 -0
- package/src/blocks/testimonial/testimonial-6.tsx +2 -1
- package/src/blocks/testimonial/testimonial-7.schema.ts +438 -0
- package/src/blocks/testimonial/testimonial-7.tsx +125 -0
- package/src/blocks/timeline/timeline-1.schema.ts +741 -0
- package/src/blocks/timeline/timeline-1.tsx +52 -0
- package/src/blocks/users/edit-profile.schema.ts +294 -0
- package/src/blocks/users/edit-profile.tsx +184 -0
- package/src/schemas/blocks.ts +64 -12
- package/src/schemas/categories.ts +36 -0
|
@@ -211,7 +211,7 @@ export const Navbar2: IBlock = {
|
|
|
211
211
|
{
|
|
212
212
|
key: "nav-item-title",
|
|
213
213
|
label: "Nav Item Title",
|
|
214
|
-
field_interface: "
|
|
214
|
+
field_interface: "TypographyWidget",
|
|
215
215
|
},
|
|
216
216
|
{
|
|
217
217
|
key: "nav-item-dropdown-trigger",
|
|
@@ -221,7 +221,7 @@ export const Navbar2: IBlock = {
|
|
|
221
221
|
{
|
|
222
222
|
key: "nav-item-dropdown-trigger-title",
|
|
223
223
|
label: "Nav Item Dropdown Trigger Title",
|
|
224
|
-
field_interface: "
|
|
224
|
+
field_interface: "TypographyWidget",
|
|
225
225
|
},
|
|
226
226
|
{
|
|
227
227
|
key: "sub-items",
|
|
@@ -252,7 +252,7 @@ export const Navbar2: IBlock = {
|
|
|
252
252
|
{
|
|
253
253
|
key: "sub-item-title",
|
|
254
254
|
label: "Sub Item Title",
|
|
255
|
-
field_interface: "
|
|
255
|
+
field_interface: "TypographyWidget",
|
|
256
256
|
},
|
|
257
257
|
{
|
|
258
258
|
key: "sub-item-description",
|
|
@@ -272,7 +272,7 @@ export const Navbar2: IBlock = {
|
|
|
272
272
|
{
|
|
273
273
|
key: "nav-item-title",
|
|
274
274
|
label: "Nav Item Title",
|
|
275
|
-
field_interface: "
|
|
275
|
+
field_interface: "TypographyWidget",
|
|
276
276
|
},
|
|
277
277
|
{
|
|
278
278
|
key: "nav-item-dropdown-trigger",
|
|
@@ -282,7 +282,7 @@ export const Navbar2: IBlock = {
|
|
|
282
282
|
{
|
|
283
283
|
key: "nav-item-dropdown-trigger-title",
|
|
284
284
|
label: "Nav Item Dropdown Trigger Title",
|
|
285
|
-
field_interface: "
|
|
285
|
+
field_interface: "TypographyWidget",
|
|
286
286
|
},
|
|
287
287
|
{
|
|
288
288
|
key: "sub-items",
|
|
@@ -313,7 +313,7 @@ export const Navbar2: IBlock = {
|
|
|
313
313
|
{
|
|
314
314
|
key: "sub-item-title",
|
|
315
315
|
label: "Sub Item Title",
|
|
316
|
-
field_interface: "
|
|
316
|
+
field_interface: "TypographyWidget",
|
|
317
317
|
},
|
|
318
318
|
{
|
|
319
319
|
key: "sub-item-description",
|
|
@@ -366,7 +366,7 @@ export const Navbar2: IBlock = {
|
|
|
366
366
|
{
|
|
367
367
|
key: "nav-item-title",
|
|
368
368
|
label: "Nav Item Title",
|
|
369
|
-
field_interface: "
|
|
369
|
+
field_interface: "TypographyWidget",
|
|
370
370
|
},
|
|
371
371
|
{
|
|
372
372
|
key: "nav-item-dropdown-container",
|
|
@@ -381,7 +381,7 @@ export const Navbar2: IBlock = {
|
|
|
381
381
|
{
|
|
382
382
|
key: "nav-item-dropdown-trigger-title",
|
|
383
383
|
label: "Nav Item Dropdown Trigger Title",
|
|
384
|
-
field_interface: "
|
|
384
|
+
field_interface: "TypographyWidget",
|
|
385
385
|
},
|
|
386
386
|
{
|
|
387
387
|
key: "sub-items",
|
|
@@ -417,7 +417,7 @@ export const Navbar2: IBlock = {
|
|
|
417
417
|
{
|
|
418
418
|
key: "sub-item-title",
|
|
419
419
|
label: "Sub Item Title",
|
|
420
|
-
field_interface: "
|
|
420
|
+
field_interface: "TypographyWidget",
|
|
421
421
|
},
|
|
422
422
|
{
|
|
423
423
|
key: "sub-item-description",
|
|
@@ -6,12 +6,11 @@ import type { ILevoBlockBaseProps } from "@levo-so/studio";
|
|
|
6
6
|
import {
|
|
7
7
|
Box,
|
|
8
8
|
Button,
|
|
9
|
-
|
|
9
|
+
Typography,
|
|
10
10
|
Image,
|
|
11
11
|
PopoverRoot,
|
|
12
12
|
PopoverContent,
|
|
13
13
|
PopoverTrigger,
|
|
14
|
-
Typography,
|
|
15
14
|
Container,
|
|
16
15
|
Section,
|
|
17
16
|
Icon,
|
|
@@ -40,7 +39,7 @@ const DropdownNavigationItem: React.FC<{
|
|
|
40
39
|
onMouseEnter={() => setIsDropdownPopoverOpen(true)}
|
|
41
40
|
data-levo_group_item
|
|
42
41
|
>
|
|
43
|
-
<
|
|
42
|
+
<Typography
|
|
44
43
|
elementKey={`${prefixKey}.${index}.nav-item-dropdown-trigger-title`}
|
|
45
44
|
/>
|
|
46
45
|
<ChevronDown
|
|
@@ -86,7 +85,7 @@ const DropdownNavigationItem: React.FC<{
|
|
|
86
85
|
<Box
|
|
87
86
|
elementKey={`left-desktop-nav-menu.${index}.sub-items.${idx}.sub-item-text-container`}
|
|
88
87
|
>
|
|
89
|
-
<
|
|
88
|
+
<Typography
|
|
90
89
|
elementKey={`left-desktop-nav-menu.${index}.sub-items.${idx}.sub-item-title`}
|
|
91
90
|
/>
|
|
92
91
|
<Typography
|
|
@@ -120,7 +119,7 @@ const DesktopNavItem: React.FC<{
|
|
|
120
119
|
/>
|
|
121
120
|
)}
|
|
122
121
|
{!isNavItemDropdown && (
|
|
123
|
-
<
|
|
122
|
+
<Typography
|
|
124
123
|
data-levo_group_item
|
|
125
124
|
elementKey={`${prefixKey}.${index}.nav-item-title`}
|
|
126
125
|
/>
|
|
@@ -164,7 +163,7 @@ const DropdownNavigationItemMobile: React.FC<{
|
|
|
164
163
|
elementKey={`mobile-nav-menu.${index}.nav-item-dropdown-trigger`}
|
|
165
164
|
onClick={() => setIsDropdownOpen((prev) => !prev)}
|
|
166
165
|
>
|
|
167
|
-
<
|
|
166
|
+
<Typography
|
|
168
167
|
elementKey={`mobile-nav-menu.${index}.nav-item-dropdown-trigger-title`}
|
|
169
168
|
/>
|
|
170
169
|
<ChevronDown
|
|
@@ -217,7 +216,7 @@ const DropdownNavigationItemMobile: React.FC<{
|
|
|
217
216
|
elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-title-container`}
|
|
218
217
|
onClick={() => setIsOpen(false)}
|
|
219
218
|
>
|
|
220
|
-
<
|
|
219
|
+
<Typography
|
|
221
220
|
elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-title`}
|
|
222
221
|
/>
|
|
223
222
|
</Box>
|
|
@@ -260,7 +259,7 @@ const MobileNavItem: React.FC<{
|
|
|
260
259
|
elementKey={`mobile-nav-menu.${index}.nav-item-title-container`}
|
|
261
260
|
onClick={() => setIsOpen(false)}
|
|
262
261
|
>
|
|
263
|
-
<
|
|
262
|
+
<Typography elementKey={`mobile-nav-menu.${index}.nav-item-title`} />
|
|
264
263
|
</Box>
|
|
265
264
|
)}
|
|
266
265
|
</React.Fragment>
|
|
@@ -569,7 +569,7 @@ export const Navbar3: IBlock = {
|
|
|
569
569
|
{
|
|
570
570
|
key: "nav-item-title",
|
|
571
571
|
label: "Nav Item Title",
|
|
572
|
-
field_interface: "
|
|
572
|
+
field_interface: "TypographyWidget",
|
|
573
573
|
},
|
|
574
574
|
{
|
|
575
575
|
key: "nav-item-dropdown-trigger",
|
|
@@ -579,7 +579,7 @@ export const Navbar3: IBlock = {
|
|
|
579
579
|
{
|
|
580
580
|
key: "nav-item-dropdown-trigger-title",
|
|
581
581
|
label: "Nav Item Dropdown Trigger Title",
|
|
582
|
-
field_interface: "
|
|
582
|
+
field_interface: "TypographyWidget",
|
|
583
583
|
},
|
|
584
584
|
{
|
|
585
585
|
key: "sub-items",
|
|
@@ -610,7 +610,7 @@ export const Navbar3: IBlock = {
|
|
|
610
610
|
{
|
|
611
611
|
key: "sub-item-title",
|
|
612
612
|
label: "Sub Item Title",
|
|
613
|
-
field_interface: "
|
|
613
|
+
field_interface: "TypographyWidget",
|
|
614
614
|
},
|
|
615
615
|
{
|
|
616
616
|
key: "sub-item-description",
|
|
@@ -631,7 +631,7 @@ export const Navbar3: IBlock = {
|
|
|
631
631
|
{
|
|
632
632
|
key: "nested-sub-item-title",
|
|
633
633
|
label: "Nested Sub Item Title",
|
|
634
|
-
field_interface: "
|
|
634
|
+
field_interface: "TypographyWidget",
|
|
635
635
|
},
|
|
636
636
|
{
|
|
637
637
|
key: "nested-sub-item-description",
|
|
@@ -675,7 +675,7 @@ export const Navbar3: IBlock = {
|
|
|
675
675
|
{
|
|
676
676
|
key: "mobile-nav-title",
|
|
677
677
|
label: "Mobile Nav Title",
|
|
678
|
-
field_interface: "
|
|
678
|
+
field_interface: "TypographyWidget",
|
|
679
679
|
},
|
|
680
680
|
{
|
|
681
681
|
key: "mobile-nav-menu-wrapper",
|
|
@@ -697,7 +697,7 @@ export const Navbar3: IBlock = {
|
|
|
697
697
|
{
|
|
698
698
|
key: "nav-item-title",
|
|
699
699
|
label: "Nav Item Title",
|
|
700
|
-
field_interface: "
|
|
700
|
+
field_interface: "TypographyWidget",
|
|
701
701
|
},
|
|
702
702
|
{
|
|
703
703
|
key: "nav-item-dropdown-container",
|
|
@@ -712,7 +712,7 @@ export const Navbar3: IBlock = {
|
|
|
712
712
|
{
|
|
713
713
|
key: "nav-item-dropdown-trigger-title",
|
|
714
714
|
label: "Nav Item Dropdown Trigger Title",
|
|
715
|
-
field_interface: "
|
|
715
|
+
field_interface: "TypographyWidget",
|
|
716
716
|
},
|
|
717
717
|
{
|
|
718
718
|
key: "sub-items",
|
|
@@ -743,7 +743,7 @@ export const Navbar3: IBlock = {
|
|
|
743
743
|
{
|
|
744
744
|
key: "sub-item-title",
|
|
745
745
|
label: "Sub Item Title",
|
|
746
|
-
field_interface: "
|
|
746
|
+
field_interface: "TypographyWidget",
|
|
747
747
|
},
|
|
748
748
|
{
|
|
749
749
|
key: "sub-item-description",
|
|
@@ -764,7 +764,7 @@ export const Navbar3: IBlock = {
|
|
|
764
764
|
{
|
|
765
765
|
key: "nested-sub-item-title",
|
|
766
766
|
label: "Nested Sub Item Title",
|
|
767
|
-
field_interface: "
|
|
767
|
+
field_interface: "TypographyWidget",
|
|
768
768
|
},
|
|
769
769
|
{
|
|
770
770
|
key: "nested-sub-item-description",
|
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
// Test libraries-only change
|
|
3
|
-
|
|
4
|
-
import React, { useEffect, useState } from "react";
|
|
5
1
|
import { cn } from "@levo-so/react";
|
|
6
2
|
import type { ILevoBlockBaseProps } from "@levo-so/studio";
|
|
7
3
|
import {
|
|
8
4
|
Box,
|
|
9
5
|
Button,
|
|
10
|
-
|
|
6
|
+
Container,
|
|
7
|
+
Icon,
|
|
11
8
|
Image,
|
|
12
|
-
PopoverRoot,
|
|
13
9
|
PopoverContent,
|
|
10
|
+
PopoverRoot,
|
|
14
11
|
PopoverTrigger,
|
|
15
|
-
Typography,
|
|
16
12
|
Section,
|
|
17
|
-
|
|
18
|
-
Icon,
|
|
13
|
+
Typography,
|
|
19
14
|
UserMenu,
|
|
20
15
|
} from "@levo-so/studio";
|
|
21
|
-
import { ChevronDown, Menu, X
|
|
16
|
+
import { ChevronDown, ChevronRight, Menu, X } from "lucide-react";
|
|
17
|
+
import React, { useEffect, useState } from "react";
|
|
22
18
|
|
|
23
19
|
import type { INavbar3Content } from "./navbar-3.schema";
|
|
24
20
|
|
|
@@ -30,89 +26,126 @@ const NestedDropdownItem: React.FC<{
|
|
|
30
26
|
const [isNestedDropdownOpen, setIsNestedDropdownOpen] =
|
|
31
27
|
useState<boolean>(false);
|
|
32
28
|
const nestedSubItems = subItem?.["sub-sub-items"] as Array<any>;
|
|
29
|
+
const hasNestedItems =
|
|
30
|
+
nestedSubItems &&
|
|
31
|
+
Array.isArray(nestedSubItems) &&
|
|
32
|
+
nestedSubItems.length > 0;
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.nested-dropdown-container`}
|
|
37
|
-
>
|
|
34
|
+
if (!hasNestedItems) {
|
|
35
|
+
return (
|
|
38
36
|
<Box
|
|
39
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.
|
|
40
|
-
onMouseEnter={() => setIsNestedDropdownOpen(true)}
|
|
41
|
-
onMouseLeave={() => setIsNestedDropdownOpen(false)}
|
|
37
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-link`}
|
|
42
38
|
data-levo_group_item
|
|
43
|
-
className="
|
|
39
|
+
className="flex items-center gap-3"
|
|
44
40
|
>
|
|
41
|
+
{subItem?.["sub-item-icon"] && (
|
|
42
|
+
<Box
|
|
43
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-icon-container`}
|
|
44
|
+
className=""
|
|
45
|
+
>
|
|
46
|
+
<Icon
|
|
47
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-icon`}
|
|
48
|
+
/>
|
|
49
|
+
</Box>
|
|
50
|
+
)}
|
|
45
51
|
<Box
|
|
46
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-
|
|
47
|
-
|
|
48
|
-
className="flex items-center justify-between"
|
|
52
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-text-container`}
|
|
53
|
+
className=""
|
|
49
54
|
>
|
|
50
|
-
<
|
|
51
|
-
{
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
<Icon
|
|
57
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-icon`}
|
|
58
|
-
/>
|
|
59
|
-
</Box>
|
|
60
|
-
)}
|
|
61
|
-
<Box
|
|
62
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-text-container`}
|
|
63
|
-
className=""
|
|
64
|
-
>
|
|
65
|
-
<Heading
|
|
66
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-title`}
|
|
67
|
-
/>
|
|
68
|
-
<Typography
|
|
69
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-description`}
|
|
70
|
-
/>
|
|
71
|
-
</Box>
|
|
72
|
-
</div>
|
|
73
|
-
{nestedSubItems &&
|
|
74
|
-
Array.isArray(nestedSubItems) &&
|
|
75
|
-
nestedSubItems.length > 0 && (
|
|
76
|
-
<div className="group-hover:text-text-1 text-white">
|
|
77
|
-
<ChevronRight
|
|
78
|
-
aria-hidden="true"
|
|
79
|
-
className="h-[14px] w-[14px] transition-colors"
|
|
80
|
-
/>
|
|
81
|
-
</div>
|
|
82
|
-
)}
|
|
55
|
+
<Typography
|
|
56
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-title`}
|
|
57
|
+
/>
|
|
58
|
+
<Typography
|
|
59
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-description`}
|
|
60
|
+
/>
|
|
83
61
|
</Box>
|
|
62
|
+
</Box>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
84
65
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
66
|
+
return (
|
|
67
|
+
<PopoverRoot
|
|
68
|
+
open={isNestedDropdownOpen}
|
|
69
|
+
onOpenChange={setIsNestedDropdownOpen}
|
|
70
|
+
>
|
|
71
|
+
<PopoverTrigger
|
|
72
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-link`}
|
|
73
|
+
onMouseEnter={() => setIsNestedDropdownOpen(true)}
|
|
74
|
+
data-levo_group_item
|
|
75
|
+
className="group flex items-center justify-between px-4 py-2 focus:outline-none"
|
|
76
|
+
>
|
|
77
|
+
<div className="flex items-center gap-3">
|
|
78
|
+
{subItem?.["sub-item-icon"] && (
|
|
90
79
|
<Box
|
|
91
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-
|
|
92
|
-
|
|
93
|
-
className="absolute top-0 left-full z-50 ml-1 w-48 rounded-md border border-gray-200 bg-white shadow-lg"
|
|
94
|
-
onMouseEnter={() => setIsNestedDropdownOpen(true)}
|
|
95
|
-
onMouseLeave={() => setIsNestedDropdownOpen(false)}
|
|
80
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-icon-container`}
|
|
81
|
+
className=""
|
|
96
82
|
>
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
key={`nestedSubItem_${parentIndex}_${subIndex}_${nestedIdx}`}
|
|
101
|
-
data-levo_group_item
|
|
102
|
-
className="px-5 py-3"
|
|
103
|
-
>
|
|
104
|
-
<Heading
|
|
105
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-title`}
|
|
106
|
-
/>
|
|
107
|
-
<Typography
|
|
108
|
-
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-description`}
|
|
109
|
-
/>
|
|
110
|
-
</Box>
|
|
111
|
-
))}
|
|
83
|
+
<Icon
|
|
84
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-icon`}
|
|
85
|
+
/>
|
|
112
86
|
</Box>
|
|
113
87
|
)}
|
|
114
|
-
|
|
115
|
-
|
|
88
|
+
<Box
|
|
89
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-text-container`}
|
|
90
|
+
className=""
|
|
91
|
+
>
|
|
92
|
+
<Typography
|
|
93
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-title`}
|
|
94
|
+
/>
|
|
95
|
+
<Typography
|
|
96
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-description`}
|
|
97
|
+
/>
|
|
98
|
+
</Box>
|
|
99
|
+
</div>
|
|
100
|
+
<div className="group-hover:text-text-1 ml-auto">
|
|
101
|
+
<ChevronRight
|
|
102
|
+
aria-hidden="true"
|
|
103
|
+
style={{
|
|
104
|
+
position: "relative",
|
|
105
|
+
top: "1px",
|
|
106
|
+
height: "14px",
|
|
107
|
+
width: "14px",
|
|
108
|
+
transitionProperty:
|
|
109
|
+
"color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",
|
|
110
|
+
transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
|
|
111
|
+
transitionDuration: "300ms",
|
|
112
|
+
color: "var(--color-text-1)",
|
|
113
|
+
}}
|
|
114
|
+
/>
|
|
115
|
+
</div>
|
|
116
|
+
</PopoverTrigger>
|
|
117
|
+
<PopoverContent
|
|
118
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items`}
|
|
119
|
+
onMouseLeave={() => setIsNestedDropdownOpen(false)}
|
|
120
|
+
inPortal={true}
|
|
121
|
+
className="z-[60] min-w-48 rounded-md border border-gray-200 !bg-white shadow-lg focus:outline-none"
|
|
122
|
+
style={{
|
|
123
|
+
backgroundColor: "white !important",
|
|
124
|
+
background: "white",
|
|
125
|
+
outline: "none",
|
|
126
|
+
boxShadow:
|
|
127
|
+
"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)",
|
|
128
|
+
}}
|
|
129
|
+
side="right"
|
|
130
|
+
align="start"
|
|
131
|
+
>
|
|
132
|
+
{nestedSubItems?.map((_: any, nestedIdx: number) => (
|
|
133
|
+
<Box
|
|
134
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-container`}
|
|
135
|
+
key={`nestedSubItem_${parentIndex}_${subIndex}_${nestedIdx}`}
|
|
136
|
+
data-levo_group_item
|
|
137
|
+
className="-mx-2 cursor-pointer rounded px-2 py-2 whitespace-nowrap hover:bg-gray-50 focus:outline-none"
|
|
138
|
+
>
|
|
139
|
+
<Typography
|
|
140
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-title`}
|
|
141
|
+
/>
|
|
142
|
+
<Typography
|
|
143
|
+
elementKey={`desktop-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-description`}
|
|
144
|
+
/>
|
|
145
|
+
</Box>
|
|
146
|
+
))}
|
|
147
|
+
</PopoverContent>
|
|
148
|
+
</PopoverRoot>
|
|
116
149
|
);
|
|
117
150
|
};
|
|
118
151
|
|
|
@@ -135,8 +168,9 @@ const DropdownNavigationItem: React.FC<{
|
|
|
135
168
|
elementKey={`desktop-nav-menu.${index}.nav-item-dropdown-trigger`}
|
|
136
169
|
onMouseEnter={() => setIsDropdownPopoverOpen(true)}
|
|
137
170
|
data-levo_group_item
|
|
171
|
+
className="focus:outline-none"
|
|
138
172
|
>
|
|
139
|
-
<
|
|
173
|
+
<Typography
|
|
140
174
|
elementKey={`desktop-nav-menu.${index}.nav-item-dropdown-trigger-title`}
|
|
141
175
|
/>
|
|
142
176
|
<ChevronDown
|
|
@@ -160,6 +194,7 @@ const DropdownNavigationItem: React.FC<{
|
|
|
160
194
|
data-levo_group
|
|
161
195
|
onMouseLeave={() => setIsDropdownPopoverOpen(false)}
|
|
162
196
|
inPortal={false}
|
|
197
|
+
className="focus:outline-none"
|
|
163
198
|
>
|
|
164
199
|
{subItems && Array?.isArray(subItems)
|
|
165
200
|
? subItems?.map((subItem: any, idx: number) => (
|
|
@@ -190,7 +225,7 @@ const DesktopNavItem: React.FC<{
|
|
|
190
225
|
<DropdownNavigationItem navItem={navItem} index={index} />
|
|
191
226
|
)}
|
|
192
227
|
{!isNavItemDropdown && (
|
|
193
|
-
<
|
|
228
|
+
<Typography
|
|
194
229
|
data-levo_group_item
|
|
195
230
|
elementKey={`desktop-nav-menu.${index}.nav-item-title`}
|
|
196
231
|
/>
|
|
@@ -232,21 +267,19 @@ const NestedDropdownItemMobile: React.FC<any> = ({
|
|
|
232
267
|
<Box
|
|
233
268
|
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.nested-dropdown-trigger`}
|
|
234
269
|
onClick={() => setIsNestedDropdownOpen((prev) => !prev)}
|
|
235
|
-
|
|
270
|
+
data-levo_group_item
|
|
271
|
+
className="flex w-full items-center focus:outline-none"
|
|
236
272
|
>
|
|
237
273
|
<Box
|
|
238
274
|
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-text-container`}
|
|
239
275
|
>
|
|
240
|
-
<
|
|
276
|
+
<Typography
|
|
241
277
|
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-title`}
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
</Heading>
|
|
278
|
+
/>
|
|
279
|
+
|
|
245
280
|
<Typography
|
|
246
281
|
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-item-description`}
|
|
247
|
-
|
|
248
|
-
{subItem?.description}
|
|
249
|
-
</Typography>
|
|
282
|
+
/>
|
|
250
283
|
</Box>
|
|
251
284
|
|
|
252
285
|
<ChevronDown
|
|
@@ -264,31 +297,23 @@ const NestedDropdownItemMobile: React.FC<any> = ({
|
|
|
264
297
|
|
|
265
298
|
{isNestedDropdownOpen && Array.isArray(nestedSubItems) && (
|
|
266
299
|
<Box
|
|
267
|
-
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.
|
|
268
|
-
|
|
269
|
-
className="ml-4"
|
|
300
|
+
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.nested-dropdown-trigger`}
|
|
301
|
+
className="ml-4 focus:outline-none"
|
|
270
302
|
>
|
|
271
303
|
{nestedSubItems.map((nestedSubItem, nestedIdx) => (
|
|
272
304
|
<Box
|
|
273
305
|
key={`nestedSubItem_${parentIndex}_${subIndex}_${nestedIdx}`}
|
|
274
|
-
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-
|
|
275
|
-
className={cn("")}
|
|
306
|
+
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-container`}
|
|
307
|
+
className={cn("focus:outline-none")}
|
|
276
308
|
data-levo_group_item
|
|
277
309
|
>
|
|
278
|
-
<
|
|
279
|
-
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
</Heading>
|
|
286
|
-
<Typography
|
|
287
|
-
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-description`}
|
|
288
|
-
>
|
|
289
|
-
{nestedSubItem?.description}
|
|
290
|
-
</Typography>
|
|
291
|
-
</Box>
|
|
310
|
+
<Typography
|
|
311
|
+
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-title`}
|
|
312
|
+
/>
|
|
313
|
+
|
|
314
|
+
<Typography
|
|
315
|
+
elementKey={`mobile-nav-menu.${parentIndex}.sub-items.${subIndex}.sub-sub-items.${nestedIdx}.nested-sub-item-description`}
|
|
316
|
+
/>
|
|
292
317
|
</Box>
|
|
293
318
|
))}
|
|
294
319
|
</Box>
|
|
@@ -314,9 +339,9 @@ const DropdownNavigationItemMobile: React.FC<{
|
|
|
314
339
|
<Box
|
|
315
340
|
elementKey={`mobile-nav-menu.${index}.nav-item-dropdown-trigger`}
|
|
316
341
|
onClick={() => setIsDropdownOpen((prev) => !prev)}
|
|
317
|
-
className="flex items-center justify-between"
|
|
342
|
+
className="flex items-center justify-between focus:outline-none"
|
|
318
343
|
>
|
|
319
|
-
<
|
|
344
|
+
<Typography
|
|
320
345
|
elementKey={`mobile-nav-menu.${index}.nav-item-dropdown-trigger-title`}
|
|
321
346
|
/>
|
|
322
347
|
{hasSubSubItems && (
|
|
@@ -367,7 +392,7 @@ const DropdownNavigationItemMobile: React.FC<{
|
|
|
367
392
|
<Box
|
|
368
393
|
elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-text-container`}
|
|
369
394
|
>
|
|
370
|
-
<
|
|
395
|
+
<Typography
|
|
371
396
|
elementKey={`mobile-nav-menu.${index}.sub-items.${idx}.sub-item-title`}
|
|
372
397
|
/>
|
|
373
398
|
<Typography
|
|
@@ -408,7 +433,7 @@ const MobileNavItem: React.FC<{
|
|
|
408
433
|
elementKey={`mobile-nav-menu.${index}.nav-item-title-container`}
|
|
409
434
|
onClick={() => setIsOpen(false)}
|
|
410
435
|
>
|
|
411
|
-
<
|
|
436
|
+
<Typography elementKey={`mobile-nav-menu.${index}.nav-item-title`} />
|
|
412
437
|
</Box>
|
|
413
438
|
)}
|
|
414
439
|
</React.Fragment>
|