negodesign 0.0.55 → 0.0.57
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/dist/components/core/banner/AdCardBanner.svelte +74 -74
- package/dist/components/core/banner/CtaCardBanner.svelte +118 -118
- package/dist/components/core/breadcrumb/breadcrumb-list.svelte +31 -31
- package/dist/components/core/button/ButtonBack.svelte +18 -18
- package/dist/components/core/button/ButtonLogin.svelte +15 -15
- package/dist/components/core/button/ButtonLoginWith.svelte +57 -57
- package/dist/components/core/button/ButtonSend.svelte +15 -15
- package/dist/components/core/card/highlight/01/CardHighlight01.svelte +103 -103
- package/dist/components/core/card/highlight/02/CardHighlight02.svelte +99 -99
- package/dist/components/core/card/highlight/CardHighlight.svelte +22 -22
- package/dist/components/core/card/media/01/CardMedia01.svelte +133 -133
- package/dist/components/core/card/media/02/CardMedia02.svelte +127 -127
- package/dist/components/core/card/media/CardMedia.svelte +18 -18
- package/dist/components/core/card/product/01/CardProduct01.svelte +136 -136
- package/dist/components/core/card/product/02/CardProduct02.svelte +124 -124
- package/dist/components/core/card/product/CardProduct.svelte +22 -22
- package/dist/components/core/card/profile/01/CardProfile01.svelte +134 -134
- package/dist/components/core/card/profile/02/CardProfile02.svelte +132 -132
- package/dist/components/core/card/profile/CardProfile.svelte +18 -18
- package/dist/components/core/card/promotion/CardPromotion.svelte +139 -139
- package/dist/components/core/card/promotion/CardPromotionPrice.svelte +32 -32
- package/dist/components/core/card/shared/CardButton.svelte +42 -42
- package/dist/components/core/card/shared/CardCart.svelte +36 -36
- package/dist/components/core/card/shared/CardDescription.svelte +41 -41
- package/dist/components/core/card/shared/CardFavorite.svelte +33 -33
- package/dist/components/core/card/shared/CardLogo.svelte +19 -19
- package/dist/components/core/card/shared/CardPhoneOrWhatsapp.svelte +45 -45
- package/dist/components/core/card/shared/CardStarRating.svelte +24 -24
- package/dist/components/core/card/shared/CardTags.svelte +95 -95
- package/dist/components/core/card/shared/CardThumbnailVideo.svelte +232 -232
- package/dist/components/core/card/shared/CardTitlePrice.svelte +24 -24
- package/dist/components/core/card/shared/TruncatableText.svelte +49 -49
- package/dist/components/core/card/types.d.ts +4 -0
- package/dist/components/core/carousel/badge/type.d.ts +27 -0
- package/dist/components/core/carousel/badge/ui/CarouselBadge.svelte +109 -109
- package/dist/components/core/carousel/grid/media/types.d.ts +3 -0
- package/dist/components/core/carousel/grid/media/ui/CarouselGridMedia.svelte +2 -1
- package/dist/components/core/carousel/grid/product/types.d.ts +8 -0
- package/dist/components/core/carousel/grid/product/ui/CarouselGridProduct.svelte +14 -4
- package/dist/components/core/carousel/grid/profile/ui/CarouselGridProfile.svelte +1 -1
- package/dist/components/core/carousel/grid/promotion/ui/CarouselGridPromotion.svelte +1 -1
- package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte +8 -3
- package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte.d.ts +2 -1
- package/dist/components/core/carousel/hero/types.d.ts +30 -0
- package/dist/components/core/carousel/hero/{CarouselHero.svelte → ui/CarouselHero.svelte} +163 -161
- package/dist/components/core/carousel/shared/ui/CarouselHeader.svelte +60 -60
- package/dist/components/core/carousel/types.d.ts +2 -56
- package/dist/components/core/datatable/ui/DataTableActions.svelte +28 -28
- package/dist/components/core/datatable/ui/DataTableCheckbox.svelte +22 -22
- package/dist/components/core/datatable/ui/DataTableContent.svelte +59 -59
- package/dist/components/core/datatable/ui/DataTableCore.svelte +151 -151
- package/dist/components/core/datatable/ui/DataTableDragHandle.svelte +8 -8
- package/dist/components/core/datatable/ui/DataTableListFilter.svelte +59 -59
- package/dist/components/core/datatable/ui/DataTableListPagination.svelte +35 -35
- package/dist/components/core/footer/ui/Footer.svelte +18 -18
- package/dist/components/core/form/ui/input-base.svelte +81 -81
- package/dist/components/core/form/ui/input-email-or-phone.svelte +23 -23
- package/dist/components/core/form/ui/input-email.svelte +23 -23
- package/dist/components/core/form/ui/input-password-confirm.svelte +23 -23
- package/dist/components/core/form/ui/input-password.svelte +23 -23
- package/dist/components/core/form/ui/input-phone.svelte +33 -33
- package/dist/components/core/form/ui/input-username.svelte +22 -22
- package/dist/components/core/grid/data/types.d.ts +16 -0
- package/dist/components/core/grid/ui/01/Grid01.svelte +27 -0
- package/dist/components/core/grid/ui/01/Grid01.svelte.d.ts +4 -0
- package/dist/components/core/grid/ui/02/Grid02.svelte +27 -0
- package/dist/components/core/grid/ui/02/Grid02.svelte.d.ts +4 -0
- package/dist/components/core/grid/ui/PanelGrid.svelte +27 -0
- package/dist/components/core/grid/ui/PanelGrid.svelte.d.ts +4 -0
- package/dist/components/core/grid/ui/SimpleGrid.svelte +35 -0
- package/dist/components/core/grid/ui/SimpleGrid.svelte.d.ts +4 -0
- package/dist/components/core/grid/ui/shared/DescriptionGrid.svelte +17 -0
- package/dist/components/core/grid/ui/shared/DescriptionGrid.svelte.d.ts +7 -0
- package/dist/components/core/grid/ui/shared/IconRenderGrid.svelte +16 -0
- package/dist/components/core/grid/ui/shared/IconRenderGrid.svelte.d.ts +7 -0
- package/dist/components/core/grid/ui/shared/TitleGrid.svelte +11 -0
- package/dist/components/core/grid/ui/shared/TitleGrid.svelte.d.ts +7 -0
- package/dist/components/core/hero/SimpleHero.svelte +65 -65
- package/dist/components/core/label/LabelOr.svelte +25 -25
- package/dist/components/core/link/link-forget-password.svelte +12 -12
- package/dist/components/core/link/link-privacy-polity.svelte +12 -12
- package/dist/components/core/link/link-terms-of-service.svelte +12 -12
- package/dist/components/core/nav/data/complex-menu-utils.d.ts +7 -0
- package/dist/components/core/nav/data/complex-menu-utils.js +15 -0
- package/dist/components/core/nav/data/nav-menu.d.ts +21 -7
- package/dist/components/core/nav/{ui/shared → data}/types.d.ts +15 -2
- package/dist/components/core/nav/ui/ComplexMenu.svelte +36 -0
- package/dist/components/core/nav/ui/ComplexMenu.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/Menu.svelte +70 -66
- package/dist/components/core/nav/ui/Menu.svelte.d.ts +1 -1
- package/dist/components/core/nav/ui/SimpleMenu.svelte +14 -0
- package/dist/components/core/nav/ui/SimpleMenu.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/mobile/ComplexMenuMobile.svelte +98 -0
- package/dist/components/core/nav/ui/mobile/ComplexMenuMobile.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/mobile/MenuMobile.svelte +54 -0
- package/dist/components/core/nav/ui/mobile/MenuMobile.svelte.d.ts +11 -0
- package/dist/components/core/nav/ui/mobile/SimpleMenuMobile.svelte +42 -0
- package/dist/components/core/nav/ui/mobile/{nav-menu-drawer.svelte.d.ts → SimpleMenuMobile.svelte.d.ts} +3 -3
- package/dist/components/core/nav/ui/shared/CollapsibleNavMenu.svelte +24 -0
- package/dist/components/core/nav/ui/shared/CollapsibleNavMenu.svelte.d.ts +8 -0
- package/dist/components/core/nav/ui/shared/MenuButton.svelte +51 -0
- package/dist/components/core/nav/ui/shared/MenuButton.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/MenuLinks.svelte +40 -40
- package/dist/components/core/nav/ui/shared/MenuListItem.svelte +48 -48
- package/dist/components/core/nav/ui/shared/MenuListItem.svelte.d.ts +1 -1
- package/dist/components/core/nav/ui/shared/MenuLogo.svelte +13 -0
- package/dist/components/core/nav/ui/shared/MenuLogo.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/NavMenuItem.svelte +28 -0
- package/dist/components/core/nav/ui/shared/NavMenuItem.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownMenuListItem.svelte +40 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownMenuListItem.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItem.svelte +12 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItem.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemCard.svelte +49 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemCard.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte +30 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemList.svelte +24 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemList.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItems.svelte +24 -0
- package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItems.svelte.d.ts +4 -0
- package/dist/components/core/nav/ui/shared/{NavigationMenuItem.svelte → navigation/NavigationMenuItem.svelte} +15 -15
- package/dist/components/core/nav/ui/shared/{NavigationMenuItem.svelte.d.ts → navigation/NavigationMenuItem.svelte.d.ts} +1 -1
- package/dist/components/core/nav/ui/shared/{NavigationMenuItemCard.svelte → navigation/NavigationMenuItemCard.svelte} +62 -62
- package/dist/components/core/nav/ui/shared/{NavigationMenuItemCard.svelte.d.ts → navigation/NavigationMenuItemCard.svelte.d.ts} +1 -1
- package/dist/components/core/nav/ui/shared/{NavigationMenuItemGrid.svelte → navigation/NavigationMenuItemGrid.svelte} +32 -32
- package/dist/components/core/nav/ui/shared/{NavigationMenuItemGrid.svelte.d.ts → navigation/NavigationMenuItemGrid.svelte.d.ts} +1 -1
- package/dist/components/core/nav/ui/shared/{NavigationMenuItemList.svelte → navigation/NavigationMenuItemList.svelte} +24 -24
- package/dist/components/core/nav/ui/shared/{NavigationMenuItemList.svelte.d.ts → navigation/NavigationMenuItemList.svelte.d.ts} +1 -1
- package/dist/components/core/nav/ui/shared/{NavigationMenuItems.svelte → navigation/NavigationMenuItems.svelte} +21 -21
- package/dist/components/core/nav/ui/shared/{NavigationMenuItems.svelte.d.ts → navigation/NavigationMenuItems.svelte.d.ts} +1 -1
- package/dist/components/core/panel/CarouselSlot.svelte +57 -57
- package/dist/components/core/panel/LeftHero.svelte +117 -117
- package/dist/components/core/search/SearchInput.svelte +32 -32
- package/dist/components/core/search/shared/SearchInputCore.svelte +66 -66
- package/dist/components/core/sidebar/MenuBarSidebar.svelte +70 -70
- package/dist/components/core/sidebar/MenuBarSidebar.svelte.d.ts +2 -2
- package/dist/components/core/sidebar/data/nav-menu-sidebar.js +1 -0
- package/dist/components/core/sidebar/data/nav-top-bar-sidebar.js +1 -0
- package/dist/components/core/sidebar/data/nav-user-sidebar.js +1 -0
- package/dist/components/core/sidebar/types.d.ts +2 -2
- package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte +97 -97
- package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte.d.ts +1 -1
- package/dist/components/core/sidebar/ui/navbar/NavMenuBottomSidebar.svelte +33 -33
- package/dist/components/core/sidebar/ui/navbar/NavMenuBottomSidebar.svelte.d.ts +1 -1
- package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte +103 -103
- package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte.d.ts +1 -1
- package/dist/components/core/tabs/ui/tab-underline.svelte +43 -43
- package/dist/components/pages/admin/01/ui/AdminContent.svelte +14 -14
- package/dist/components/pages/admin/01/ui/AdminPanel.svelte +46 -46
- package/dist/components/pages/privacy-policy-or-terms-of-use/types.d.ts +2 -0
- package/dist/components/pages/security/login/01/ui/FormRegister.svelte +28 -28
- package/dist/components/pages/security/login/01/ui/LoginCard.svelte +107 -107
- package/dist/components/pages/security/login/PageLogin.svelte +22 -22
- package/dist/components/ui/badge/badge.svelte +49 -49
- package/dist/components/ui/button/button.svelte +82 -82
- package/dist/components/ui/chart/chart-container.svelte +80 -80
- package/dist/components/ui/chart/chart-style.svelte +37 -37
- package/dist/components/ui/chart/chart-tooltip.svelte +184 -184
- package/dist/components/ui/checkbox/checkbox.svelte +40 -40
- package/dist/components/ui/data-table/flex-render.svelte +40 -40
- package/dist/components/ui/drawer/drawer-close.svelte +7 -7
- package/dist/components/ui/drawer/drawer-content.svelte +33 -33
- package/dist/components/ui/drawer/drawer-description.svelte +17 -17
- package/dist/components/ui/drawer/drawer-footer.svelte +20 -20
- package/dist/components/ui/drawer/drawer-header.svelte +20 -20
- package/dist/components/ui/drawer/drawer-nested.svelte +12 -12
- package/dist/components/ui/drawer/drawer-overlay.svelte +17 -17
- package/dist/components/ui/drawer/drawer-portal.svelte +7 -7
- package/dist/components/ui/drawer/drawer-title.svelte +17 -17
- package/dist/components/ui/drawer/drawer-trigger.svelte +7 -7
- package/dist/components/ui/drawer/drawer.svelte +12 -12
- package/dist/components/ui/select/select-content.svelte +45 -45
- package/dist/components/ui/select/select-group-heading.svelte +21 -21
- package/dist/components/ui/select/select-group.svelte +17 -17
- package/dist/components/ui/select/select-item.svelte +41 -41
- package/dist/components/ui/select/select-label.svelte +20 -20
- package/dist/components/ui/select/select-portal.svelte +7 -7
- package/dist/components/ui/select/select-scroll-down-button.svelte +21 -21
- package/dist/components/ui/select/select-scroll-up-button.svelte +21 -21
- package/dist/components/ui/select/select-separator.svelte +18 -18
- package/dist/components/ui/select/select-trigger.svelte +30 -30
- package/dist/components/ui/select/select.svelte +11 -11
- package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +39 -39
- package/dist/components/ui/star-rating/star-rating-star.svelte +41 -41
- package/dist/components/ui/star-rating/star-rating.svelte +20 -20
- package/dist/components/ui/table/table-body.svelte +15 -15
- package/dist/components/ui/table/table-caption.svelte +20 -20
- package/dist/components/ui/table/table-cell.svelte +15 -15
- package/dist/components/ui/table/table-footer.svelte +20 -20
- package/dist/components/ui/table/table-head.svelte +15 -15
- package/dist/components/ui/table/table-header.svelte +20 -20
- package/dist/components/ui/table/table-row.svelte +15 -15
- package/dist/components/ui/table/table.svelte +17 -17
- package/dist/components/ui/tabs/tabs-content.svelte +17 -17
- package/dist/components/ui/tabs/tabs-list.svelte +40 -40
- package/dist/components/ui/tabs/tabs-trigger.svelte +23 -23
- package/dist/components/ui/tabs/tabs.svelte +19 -19
- package/dist/globals.css +56 -2
- package/dist/index.d.ts +1 -8
- package/dist/index.js +1 -8
- package/dist/styles/globals.css +149 -149
- package/dist/styles/hgi-stroke-rounded.css +1 -1
- package/dist/types/index.d.ts +9 -7
- package/package.json +113 -113
- package/dist/components/core/nav/ui/NavMenu.svelte +0 -122
- package/dist/components/core/nav/ui/NavMenu.svelte.d.ts +0 -4
- package/dist/components/core/nav/ui/mobile/nav-menu-drawer.svelte +0 -85
- package/dist/components/core/{nav/data/nav-menu-sidebar.js → carousel/badge/type.js} +0 -0
- package/dist/components/core/{nav/ui/shared → carousel/hero}/types.js +0 -0
- package/dist/components/core/carousel/hero/{CarouselHero.svelte.d.ts → ui/CarouselHero.svelte.d.ts} +1 -1
- /package/dist/components/core/{nav/data/nav-top-bar-sidebar.js → grid/data/types.js} +0 -0
- /package/dist/components/core/nav/data/{nav-user-sidebar.js → types.js} +0 -0
- /package/dist/components/core/{nav → sidebar}/data/nav-menu-sidebar.d.ts +0 -0
- /package/dist/components/core/{nav → sidebar}/data/nav-top-bar-sidebar.d.ts +0 -0
- /package/dist/components/core/{nav → sidebar}/data/nav-user-sidebar.d.ts +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type {
|
|
3
|
+
ComplexMenuProps,
|
|
4
|
+
NavigationMenuItemCardProps,
|
|
5
|
+
NavigationMenuItemGridProps,
|
|
6
|
+
NavigationMenuItemListProps,
|
|
7
|
+
NavigationMenuItemsProps,
|
|
8
|
+
NavigationMenuItemProps,
|
|
9
|
+
} from "../../data/types";
|
|
10
|
+
import {
|
|
11
|
+
isCard,
|
|
12
|
+
isGrid,
|
|
13
|
+
isList,
|
|
14
|
+
isItems,
|
|
15
|
+
isItem,
|
|
16
|
+
} from "../../data/complex-menu-utils";
|
|
17
|
+
import CollapsibleNavMenu from "../shared/CollapsibleNavMenu.svelte";
|
|
18
|
+
import NavMenuItem from "../shared/NavMenuItem.svelte";
|
|
19
|
+
import MenuMobile from "./MenuMobile.svelte";
|
|
20
|
+
|
|
21
|
+
let { menus: links }: ComplexMenuProps = $props();
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
{#snippet headerSnippet(header: NonNullable<NavigationMenuItemCardProps["header"]>)}
|
|
25
|
+
<div class="mt-4 mb-2 text-lg font-medium {header.labelClass}">{header.label}</div>
|
|
26
|
+
<p class="text-sm leading-tight {header.descriptionClass || 'text-muted-foreground'}">{header.description}</p>
|
|
27
|
+
{/snippet}
|
|
28
|
+
|
|
29
|
+
<MenuMobile>
|
|
30
|
+
<div class="flex flex-col gap-1">
|
|
31
|
+
{#each links as link, i (i)}
|
|
32
|
+
{#if isCard(link)}
|
|
33
|
+
{@const card = link as NavigationMenuItemCardProps}
|
|
34
|
+
<CollapsibleNavMenu label={card.label ?? card.header?.label ?? ""}>
|
|
35
|
+
<ul class="grid gap-2 p-2">
|
|
36
|
+
{#if card.header}
|
|
37
|
+
<li class="relative row-span-3" style={card.header.imgUrl ? `background-image: url(${card.header.imgUrl}); background-repeat: no-repeat; background-size: cover; background-position: center; border-radius: 12px;` : ""}>
|
|
38
|
+
<a href={card.header.href ?? "#"} class="flex h-full w-full flex-col justify-end p-4 {card.header.imgUrl ? "no-underline outline-hidden select-none" : "bg-linear-to-b from-muted/50 to-muted rounded-md"}">
|
|
39
|
+
{@render headerSnippet(card.header)}
|
|
40
|
+
</a>
|
|
41
|
+
</li>
|
|
42
|
+
{/if}
|
|
43
|
+
{#if card.cards}
|
|
44
|
+
{#each card.cards as item, j (j)}
|
|
45
|
+
<NavMenuItem {...item} />
|
|
46
|
+
{/each}
|
|
47
|
+
{/if}
|
|
48
|
+
</ul>
|
|
49
|
+
</CollapsibleNavMenu>
|
|
50
|
+
|
|
51
|
+
{:else if isGrid(link)}
|
|
52
|
+
{@const grid = link as NavigationMenuItemGridProps}
|
|
53
|
+
<CollapsibleNavMenu label={grid.label}>
|
|
54
|
+
<ul class="grid grid-cols-2 gap-2 p-2">
|
|
55
|
+
{#each grid.grids ?? [] as item, j (j)}
|
|
56
|
+
<NavMenuItem {...item} />
|
|
57
|
+
{/each}
|
|
58
|
+
</ul>
|
|
59
|
+
</CollapsibleNavMenu>
|
|
60
|
+
|
|
61
|
+
{:else if isList(link)}
|
|
62
|
+
{@const list = link as NavigationMenuItemListProps}
|
|
63
|
+
<CollapsibleNavMenu label={list.label}>
|
|
64
|
+
<ul class="grid gap-4 p-2">
|
|
65
|
+
{#each list.list ?? [] as item, j (j)}
|
|
66
|
+
<li>
|
|
67
|
+
<a href={item.href} class="block rounded-md p-2 no-underline hover:bg-accent">
|
|
68
|
+
<div class="font-medium">{item.title ?? ""}</div>
|
|
69
|
+
<div class="text-sm text-muted-foreground">{item.content}</div>
|
|
70
|
+
</a>
|
|
71
|
+
</li>
|
|
72
|
+
{/each}
|
|
73
|
+
</ul>
|
|
74
|
+
</CollapsibleNavMenu>
|
|
75
|
+
|
|
76
|
+
{:else if isItems(link)}
|
|
77
|
+
{@const items = link as NavigationMenuItemsProps}
|
|
78
|
+
<CollapsibleNavMenu label={items.label}>
|
|
79
|
+
<ul class="grid min-w-50 gap-4 p-2">
|
|
80
|
+
{#each items.items ?? [] as item, j (j)}
|
|
81
|
+
<li>
|
|
82
|
+
<a href={item.href} class="block rounded-md px-3 py-2 text-sm font-medium no-underline hover:bg-accent">
|
|
83
|
+
{item.title}
|
|
84
|
+
</a>
|
|
85
|
+
</li>
|
|
86
|
+
{/each}
|
|
87
|
+
</ul>
|
|
88
|
+
</CollapsibleNavMenu>
|
|
89
|
+
|
|
90
|
+
{:else if isItem(link)}
|
|
91
|
+
{@const item = link as NavigationMenuItemProps}
|
|
92
|
+
<a href={item.href} class="block w-full rounded-xl px-3 py-2 text-sm font-medium no-underline hover:bg-accent focus:bg-accent">
|
|
93
|
+
{item.label}
|
|
94
|
+
</a>
|
|
95
|
+
{/if}
|
|
96
|
+
{/each}
|
|
97
|
+
</div>
|
|
98
|
+
</MenuMobile>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as Drawer from "../../../../ui/drawer/index.js";
|
|
3
|
+
import type { NavMenuButtonProps } from "../../data/nav-menu";
|
|
4
|
+
import { buttonVariants } from "../../../../ui/button/index.js";
|
|
5
|
+
import { cn } from "../../../../../utils.js";
|
|
6
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
7
|
+
import { Menu } from "@hugeicons/core-free-icons";
|
|
8
|
+
import LightSwitch from "../../../../ui/light-switch/light-switch.svelte";
|
|
9
|
+
import LanguageSwitcher from "../../../../ui/language-switcher/language-switcher.svelte";
|
|
10
|
+
import { t } from "../../../../../i18n";
|
|
11
|
+
import type { Snippet } from "svelte";
|
|
12
|
+
|
|
13
|
+
type Props = {
|
|
14
|
+
navMenuButton?: NavMenuButtonProps;
|
|
15
|
+
isLightSwitch?: boolean;
|
|
16
|
+
isLanguageSwitcher?: boolean;
|
|
17
|
+
children: Snippet;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const { navMenuButton, isLightSwitch, isLanguageSwitcher, children }: Props =
|
|
21
|
+
$props();
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<div class="flex flex-wrap gap-2">
|
|
25
|
+
<Drawer.Root direction="right">
|
|
26
|
+
<Drawer.Trigger
|
|
27
|
+
class={cn(buttonVariants({ variant: "outline" }), "capitalize")}
|
|
28
|
+
>
|
|
29
|
+
<HugeiconsIcon icon={Menu} />
|
|
30
|
+
</Drawer.Trigger>
|
|
31
|
+
<Drawer.Content
|
|
32
|
+
class="data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]"
|
|
33
|
+
>
|
|
34
|
+
<Drawer.Header>
|
|
35
|
+
<Drawer.Title>{$t("label.menu")}</Drawer.Title>
|
|
36
|
+
<Drawer.Description>
|
|
37
|
+
{$t("label.navigation.text")}
|
|
38
|
+
</Drawer.Description>
|
|
39
|
+
</Drawer.Header>
|
|
40
|
+
<div class="no-scrollbar overflow-y-auto px-4">
|
|
41
|
+
{@render children()}
|
|
42
|
+
</div>
|
|
43
|
+
<Drawer.Footer>
|
|
44
|
+
<div class="flex justify-center gap-5 py-5">
|
|
45
|
+
<LightSwitch />
|
|
46
|
+
<LanguageSwitcher />
|
|
47
|
+
</div>
|
|
48
|
+
<Drawer.Close class={buttonVariants({ variant: "outline" })}>
|
|
49
|
+
{$t("label.close")}
|
|
50
|
+
</Drawer.Close>
|
|
51
|
+
</Drawer.Footer>
|
|
52
|
+
</Drawer.Content>
|
|
53
|
+
</Drawer.Root>
|
|
54
|
+
</div>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { NavMenuButtonProps } from "../../data/nav-menu";
|
|
2
|
+
import type { Snippet } from "svelte";
|
|
3
|
+
type Props = {
|
|
4
|
+
navMenuButton?: NavMenuButtonProps;
|
|
5
|
+
isLightSwitch?: boolean;
|
|
6
|
+
isLanguageSwitcher?: boolean;
|
|
7
|
+
children: Snippet;
|
|
8
|
+
};
|
|
9
|
+
declare const MenuMobile: import("svelte").Component<Props, {}, "">;
|
|
10
|
+
type MenuMobile = ReturnType<typeof MenuMobile>;
|
|
11
|
+
export default MenuMobile;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Button } from "../../../../ui/button/index.js";
|
|
3
|
+
import type { NavMenuLinksProps } from "../../data/nav-menu";
|
|
4
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
5
|
+
import { Login03Icon, User03Icon } from "@hugeicons/core-free-icons";
|
|
6
|
+
import MenuLinks from "../shared/MenuLinks.svelte";
|
|
7
|
+
import MenuMobile from "./MenuMobile.svelte";
|
|
8
|
+
import { t } from "../../../../../i18n";
|
|
9
|
+
|
|
10
|
+
type Props = {
|
|
11
|
+
links: NavMenuLinksProps[];
|
|
12
|
+
onclickButtonLogin?: () => void;
|
|
13
|
+
onclickButtonRegister?: () => void;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const { links, onclickButtonLogin, onclickButtonRegister }: Props = $props();
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<MenuMobile>
|
|
20
|
+
<nav>
|
|
21
|
+
<div class="mt-5 mb-4 font-semibold">{$t("label.navigation")}</div>
|
|
22
|
+
<MenuLinks {links} groupClass="space-y-3" orientation="vertical" />
|
|
23
|
+
</nav>
|
|
24
|
+
|
|
25
|
+
<div class="mt-5">
|
|
26
|
+
<div class="mt-5 mb-4 font-semibold">{$t("label.action")}</div>
|
|
27
|
+
<section>
|
|
28
|
+
{#if onclickButtonRegister}
|
|
29
|
+
<Button variant="outline" onclick={onclickButtonRegister}>
|
|
30
|
+
<HugeiconsIcon icon={User03Icon} />
|
|
31
|
+
{$t("label.register")}
|
|
32
|
+
</Button>
|
|
33
|
+
{/if}
|
|
34
|
+
{#if onclickButtonLogin}
|
|
35
|
+
<Button variant="outline" onclick={onclickButtonLogin}>
|
|
36
|
+
<HugeiconsIcon icon={Login03Icon} />
|
|
37
|
+
{$t("label.login")}
|
|
38
|
+
</Button>
|
|
39
|
+
{/if}
|
|
40
|
+
</section>
|
|
41
|
+
</div>
|
|
42
|
+
</MenuMobile>
|
|
@@ -4,6 +4,6 @@ type Props = {
|
|
|
4
4
|
onclickButtonLogin?: () => void;
|
|
5
5
|
onclickButtonRegister?: () => void;
|
|
6
6
|
};
|
|
7
|
-
declare const
|
|
8
|
-
type
|
|
9
|
-
export default
|
|
7
|
+
declare const SimpleMenuMobile: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type SimpleMenuMobile = ReturnType<typeof SimpleMenuMobile>;
|
|
9
|
+
export default SimpleMenuMobile;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as Collapsible from "../../../../ui/collapsible/index.js";
|
|
3
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
4
|
+
import { ArrowDown01Icon } from "@hugeicons/core-free-icons";
|
|
5
|
+
import type { Snippet } from "svelte";
|
|
6
|
+
|
|
7
|
+
let { label, children }: { label: string; children: Snippet } = $props();
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<Collapsible.Root>
|
|
11
|
+
<Collapsible.Trigger
|
|
12
|
+
class="group flex w-full items-center justify-between rounded-xl px-3 py-2 text-sm font-medium outline-hidden select-none hover:bg-accent focus:bg-accent data-[state=open]:bg-accent"
|
|
13
|
+
>
|
|
14
|
+
{label}
|
|
15
|
+
<HugeiconsIcon
|
|
16
|
+
icon={ArrowDown01Icon}
|
|
17
|
+
strokeWidth={2}
|
|
18
|
+
class="ml-auto size-4 transition-transform duration-200 group-data-[state=open]:rotate-180"
|
|
19
|
+
/>
|
|
20
|
+
</Collapsible.Trigger>
|
|
21
|
+
<Collapsible.Content class="overflow-hidden">
|
|
22
|
+
{@render children()}
|
|
23
|
+
</Collapsible.Content>
|
|
24
|
+
</Collapsible.Root>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Snippet } from "svelte";
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
label: string;
|
|
4
|
+
children: Snippet;
|
|
5
|
+
};
|
|
6
|
+
declare const CollapsibleNavMenu: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
|
+
type CollapsibleNavMenu = ReturnType<typeof CollapsibleNavMenu>;
|
|
8
|
+
export default CollapsibleNavMenu;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { NavMenuButtonProps } from "../../data/nav-menu";
|
|
3
|
+
import { Login03Icon, User03Icon } from "@hugeicons/core-free-icons";
|
|
4
|
+
import { HugeiconsIcon, type IconSvgElement } from "@hugeicons/svelte";
|
|
5
|
+
import { Button } from "../../../../ui/button/index.js";
|
|
6
|
+
import { t } from "../../../../../i18n";
|
|
7
|
+
|
|
8
|
+
let {
|
|
9
|
+
buttonClass,
|
|
10
|
+
textButtonLogin,
|
|
11
|
+
textButtonRegister,
|
|
12
|
+
onclickButtonLogin,
|
|
13
|
+
onclickButtonRegister,
|
|
14
|
+
}: NavMenuButtonProps = $props();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
{#if onclickButtonRegister}
|
|
18
|
+
{@render actionButtons({
|
|
19
|
+
text: textButtonRegister || $t("label.register"),
|
|
20
|
+
icon: User03Icon,
|
|
21
|
+
onclick: onclickButtonRegister,
|
|
22
|
+
})}
|
|
23
|
+
{/if}
|
|
24
|
+
{#if onclickButtonLogin}
|
|
25
|
+
{@render actionButtons({
|
|
26
|
+
text: textButtonLogin || $t("label.login"),
|
|
27
|
+
icon: Login03Icon,
|
|
28
|
+
onclick: onclickButtonLogin,
|
|
29
|
+
})}
|
|
30
|
+
{/if}
|
|
31
|
+
|
|
32
|
+
{#snippet actionButtons({
|
|
33
|
+
text,
|
|
34
|
+
icon,
|
|
35
|
+
onclick,
|
|
36
|
+
}: Readonly<{
|
|
37
|
+
text: string;
|
|
38
|
+
icon: IconSvgElement;
|
|
39
|
+
onclick: () => void;
|
|
40
|
+
}>)}
|
|
41
|
+
<Button
|
|
42
|
+
{onclick}
|
|
43
|
+
variant="outline"
|
|
44
|
+
class="flex justify-between items-center gap-3 rounded-full border p-5 md:p-5 cursor-pointer md:text-md"
|
|
45
|
+
>
|
|
46
|
+
<div>{text}</div>
|
|
47
|
+
<div class="border p-2 rounded-full bg-white dark:bg-background mr-0">
|
|
48
|
+
<HugeiconsIcon {icon} />
|
|
49
|
+
</div>
|
|
50
|
+
</Button>
|
|
51
|
+
{/snippet}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
3
|
-
import type { NavMenuLinksProps } from "../../data/nav-menu";
|
|
4
|
-
|
|
5
|
-
type Props = {
|
|
6
|
-
links: NavMenuLinksProps[];
|
|
7
|
-
linkClass?: string;
|
|
8
|
-
groupClass?: string;
|
|
9
|
-
menuKey?: string;
|
|
10
|
-
activeClass?: string;
|
|
11
|
-
orientation?: "horizontal" | "vertical";
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
let {
|
|
15
|
-
links,
|
|
16
|
-
linkClass,
|
|
17
|
-
groupClass,
|
|
18
|
-
menuKey,
|
|
19
|
-
activeClass = "bg-gradient text-white",
|
|
20
|
-
orientation,
|
|
21
|
-
}: Props = $props();
|
|
22
|
-
</script>
|
|
23
|
-
|
|
24
|
-
<ul
|
|
25
|
-
class={`flex ${orientation === "vertical" ? "flex-col" : "items-center"} gap-2 md:gap-5 lg:gap-15 ${groupClass}`}
|
|
26
|
-
>
|
|
27
|
-
{#each links as item (item.label)}
|
|
28
|
-
<li>
|
|
29
|
-
<a
|
|
30
|
-
class={`flex items-center gap-1 ${linkClass} ${item.key && menuKey === item.key ? activeClass : ""}`}
|
|
31
|
-
href={item.url ?? item.href ?? "#"}
|
|
32
|
-
>
|
|
33
|
-
{#if item.icon}
|
|
34
|
-
<HugeiconsIcon icon={item.icon} size={15} />
|
|
35
|
-
{/if}
|
|
36
|
-
{item.label}
|
|
37
|
-
</a>
|
|
38
|
-
</li>
|
|
39
|
-
{/each}
|
|
40
|
-
</ul>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
3
|
+
import type { NavMenuLinksProps } from "../../data/nav-menu";
|
|
4
|
+
|
|
5
|
+
type Props = {
|
|
6
|
+
links: NavMenuLinksProps[];
|
|
7
|
+
linkClass?: string;
|
|
8
|
+
groupClass?: string;
|
|
9
|
+
menuKey?: string;
|
|
10
|
+
activeClass?: string;
|
|
11
|
+
orientation?: "horizontal" | "vertical";
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
let {
|
|
15
|
+
links,
|
|
16
|
+
linkClass,
|
|
17
|
+
groupClass,
|
|
18
|
+
menuKey,
|
|
19
|
+
activeClass = "bg-gradient text-white",
|
|
20
|
+
orientation,
|
|
21
|
+
}: Props = $props();
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<ul
|
|
25
|
+
class={`flex ${orientation === "vertical" ? "flex-col" : "items-center"} gap-2 md:gap-5 lg:gap-15 ${groupClass}`}
|
|
26
|
+
>
|
|
27
|
+
{#each links as item (item.label)}
|
|
28
|
+
<li>
|
|
29
|
+
<a
|
|
30
|
+
class={`flex items-center gap-1 ${linkClass} ${item.key && menuKey === item.key ? activeClass : ""}`}
|
|
31
|
+
href={item.url ?? item.href ?? "#"}
|
|
32
|
+
>
|
|
33
|
+
{#if item.icon}
|
|
34
|
+
<HugeiconsIcon icon={item.icon} size={15} />
|
|
35
|
+
{/if}
|
|
36
|
+
{item.label}
|
|
37
|
+
</a>
|
|
38
|
+
</li>
|
|
39
|
+
{/each}
|
|
40
|
+
</ul>
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
|
|
3
|
-
import { cn } from "../../../../../utils";
|
|
4
|
-
import type { ListItemProps } from "
|
|
5
|
-
let {
|
|
6
|
-
title,
|
|
7
|
-
content,
|
|
8
|
-
href,
|
|
9
|
-
icon,
|
|
10
|
-
class: className,
|
|
11
|
-
...restProps
|
|
12
|
-
}: ListItemProps = $props();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
{#snippet header()}
|
|
16
|
-
<div class="leading-none font-medium">{title}</div>
|
|
17
|
-
{/snippet}
|
|
18
|
-
|
|
19
|
-
<li>
|
|
20
|
-
<NavigationMenu.Link>
|
|
21
|
-
{#snippet child()}
|
|
22
|
-
<a
|
|
23
|
-
{href}
|
|
24
|
-
class={cn(
|
|
25
|
-
"block space-y-1 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
|
|
26
|
-
className,
|
|
27
|
-
)}
|
|
28
|
-
{...restProps}
|
|
29
|
-
>
|
|
30
|
-
{#if icon}
|
|
31
|
-
<div class="flex gap-1 items-center">
|
|
32
|
-
<div>
|
|
33
|
-
<i class={`${icon} size-8 md:size-10`}></i>
|
|
34
|
-
</div>
|
|
35
|
-
<div class="-mt-1">
|
|
36
|
-
{@render header()}
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
{:else}
|
|
40
|
-
{@render header()}
|
|
41
|
-
{/if}
|
|
42
|
-
<p class="line-clamp-2 text-sm leading-snug text-muted-foreground">
|
|
43
|
-
{content}
|
|
44
|
-
</p>
|
|
45
|
-
</a>
|
|
46
|
-
{/snippet}
|
|
47
|
-
</NavigationMenu.Link>
|
|
48
|
-
</li>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
|
|
3
|
+
import { cn } from "../../../../../utils";
|
|
4
|
+
import type { ListItemProps } from "../../data/types";
|
|
5
|
+
let {
|
|
6
|
+
title,
|
|
7
|
+
content,
|
|
8
|
+
href,
|
|
9
|
+
icon,
|
|
10
|
+
class: className,
|
|
11
|
+
...restProps
|
|
12
|
+
}: ListItemProps = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
{#snippet header()}
|
|
16
|
+
<div class="leading-none font-medium">{title}</div>
|
|
17
|
+
{/snippet}
|
|
18
|
+
|
|
19
|
+
<li>
|
|
20
|
+
<NavigationMenu.Link>
|
|
21
|
+
{#snippet child()}
|
|
22
|
+
<a
|
|
23
|
+
{href}
|
|
24
|
+
class={cn(
|
|
25
|
+
"block space-y-1 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
|
|
26
|
+
className,
|
|
27
|
+
)}
|
|
28
|
+
{...restProps}
|
|
29
|
+
>
|
|
30
|
+
{#if icon}
|
|
31
|
+
<div class="flex gap-1 items-center">
|
|
32
|
+
<div>
|
|
33
|
+
<i class={`${icon} size-8 md:size-10`}></i>
|
|
34
|
+
</div>
|
|
35
|
+
<div class="-mt-1">
|
|
36
|
+
{@render header()}
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
{:else}
|
|
40
|
+
{@render header()}
|
|
41
|
+
{/if}
|
|
42
|
+
<p class="line-clamp-2 text-sm leading-snug text-muted-foreground">
|
|
43
|
+
{content}
|
|
44
|
+
</p>
|
|
45
|
+
</a>
|
|
46
|
+
{/snippet}
|
|
47
|
+
</NavigationMenu.Link>
|
|
48
|
+
</li>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { NavMenuLogoProps } from "../../../../../types";
|
|
3
|
+
|
|
4
|
+
let { img, url, label, className, onclick }: NavMenuLogoProps = $props();
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<a href={url} {onclick}>
|
|
8
|
+
{#if img}
|
|
9
|
+
<img src={img} alt="logo of site" class={`max-h-50 ${className}`} />
|
|
10
|
+
{:else if label}
|
|
11
|
+
<span class={className}>{label}</span>
|
|
12
|
+
{/if}
|
|
13
|
+
</a>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ListItemProps } from "../../data/types";
|
|
3
|
+
|
|
4
|
+
let { title, content, href, icon }: ListItemProps = $props();
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<li>
|
|
8
|
+
<a
|
|
9
|
+
{href}
|
|
10
|
+
class="block space-y-1 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground"
|
|
11
|
+
>
|
|
12
|
+
{#if icon}
|
|
13
|
+
<div class="flex items-center gap-1">
|
|
14
|
+
<div>
|
|
15
|
+
<i class={`${icon} size-8 md:size-10`}></i>
|
|
16
|
+
</div>
|
|
17
|
+
<div class="-mt-1">
|
|
18
|
+
<div class="leading-none font-medium">{title}</div>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
{:else}
|
|
22
|
+
<div class="leading-none font-medium">{title}</div>
|
|
23
|
+
{/if}
|
|
24
|
+
<p class="line-clamp-2 text-sm leading-snug text-muted-foreground">
|
|
25
|
+
{content}
|
|
26
|
+
</p>
|
|
27
|
+
</a>
|
|
28
|
+
</li>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from "../../../../../../utils";
|
|
3
|
+
import type { ListItemProps } from "../../../data/types";
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
title,
|
|
7
|
+
content,
|
|
8
|
+
href,
|
|
9
|
+
icon,
|
|
10
|
+
class: className,
|
|
11
|
+
...restProps
|
|
12
|
+
}: ListItemProps = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<li>
|
|
16
|
+
<a
|
|
17
|
+
{href}
|
|
18
|
+
class={cn(
|
|
19
|
+
"block space-y-1 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
|
|
20
|
+
className,
|
|
21
|
+
)}
|
|
22
|
+
{...restProps}
|
|
23
|
+
>
|
|
24
|
+
{#if icon}
|
|
25
|
+
<div class="flex gap-1 items-center">
|
|
26
|
+
<div>
|
|
27
|
+
<i class={`${icon} size-8 md:size-10`}></i>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="-mt-1">
|
|
30
|
+
<div class="leading-none font-medium">{title}</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
{:else}
|
|
34
|
+
<div class="leading-none font-medium">{title}</div>
|
|
35
|
+
{/if}
|
|
36
|
+
<p class="line-clamp-2 text-sm leading-snug text-muted-foreground">
|
|
37
|
+
{content}
|
|
38
|
+
</p>
|
|
39
|
+
</a>
|
|
40
|
+
</li>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as DropdownMenu from "../../../../../ui/dropdown-menu/index.js";
|
|
3
|
+
import type { NavigationMenuItemProps } from "../../../data/types";
|
|
4
|
+
|
|
5
|
+
let { label, href }: NavigationMenuItemProps = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
<DropdownMenu.Item>
|
|
9
|
+
<a {href} class="block w-full px-3 py-2 text-sm font-medium">
|
|
10
|
+
{label}
|
|
11
|
+
</a>
|
|
12
|
+
</DropdownMenu.Item>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { NavigationMenuItemProps } from "../../../data/types";
|
|
2
|
+
declare const DropdownNavigationMenuItem: import("svelte").Component<NavigationMenuItemProps, {}, "">;
|
|
3
|
+
type DropdownNavigationMenuItem = ReturnType<typeof DropdownNavigationMenuItem>;
|
|
4
|
+
export default DropdownNavigationMenuItem;
|