negodesign 0.0.80 → 0.0.82
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/README.md +133 -133
- package/dist/components/NegoDesign.svelte +21 -21
- 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/product-details/shared/ProductDetailFilesVertical.svelte +103 -103
- package/dist/components/pages/profile-user/shared/ProfileUserAddress.svelte +83 -83
- package/dist/components/pages/profile-user/shared/ProfileUserTabs.svelte +80 -80
- package/dist/components/pages/security/auth/PageAuth01.svelte +62 -62
- package/dist/components/pages/security/auth/PageAuth02.svelte +40 -40
- package/dist/components/pages/security/auth/PageAuth03.svelte +40 -40
- package/dist/components/pages/security/login/01/ui/FormLogin.svelte +91 -63
- package/dist/components/pages/security/login/01/ui/FormLogin.svelte.d.ts +2 -0
- package/dist/components/pages/security/login/01/ui/FormLoginEmailPassword.svelte +49 -26
- package/dist/components/pages/security/login/01/ui/FormLoginEmailPassword.svelte.d.ts +2 -0
- package/dist/components/pages/security/login/01/ui/FormLoginPhonePassword.svelte +49 -26
- package/dist/components/pages/security/login/01/ui/FormLoginPhonePassword.svelte.d.ts +2 -0
- package/dist/components/pages/security/login/01/ui/FormLoginUsernamePassword.svelte +49 -26
- package/dist/components/pages/security/login/01/ui/FormLoginUsernamePassword.svelte.d.ts +2 -0
- package/dist/components/pages/security/login/01/ui/LoginCard01.svelte +148 -132
- package/dist/components/pages/security/login/01/ui/LoginCard01.svelte.d.ts +2 -0
- package/dist/components/pages/security/login/01/ui/PageLogin01.svelte +66 -64
- package/dist/components/pages/security/login/02/ui/FormLogin02.svelte +82 -72
- package/dist/components/pages/security/login/02/ui/FormLogin02.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/02/ui/FormLoginEmailPassword02.svelte +27 -26
- package/dist/components/pages/security/login/02/ui/FormLoginEmailPassword02.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/02/ui/FormLoginPhonePassword02.svelte +27 -26
- package/dist/components/pages/security/login/02/ui/FormLoginPhonePassword02.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/02/ui/FormLoginUsernamePassword02.svelte +27 -26
- package/dist/components/pages/security/login/02/ui/FormLoginUsernamePassword02.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/02/ui/LoginCard02.svelte +15 -2
- package/dist/components/pages/security/login/02/ui/LoginCard02.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/02/ui/PageLogin02.svelte +2 -0
- package/dist/components/pages/security/login/03/ui/FormLogin03.svelte +94 -91
- package/dist/components/pages/security/login/03/ui/FormLogin03.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/03/ui/FormLoginEmailPassword03.svelte +27 -26
- package/dist/components/pages/security/login/03/ui/FormLoginEmailPassword03.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/03/ui/FormLoginPhonePassword03.svelte +27 -26
- package/dist/components/pages/security/login/03/ui/FormLoginPhonePassword03.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/03/ui/FormLoginUsernamePassword03.svelte +27 -26
- package/dist/components/pages/security/login/03/ui/FormLoginUsernamePassword03.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/03/ui/LoginCard03.svelte +15 -2
- package/dist/components/pages/security/login/03/ui/LoginCard03.svelte.d.ts +1 -0
- package/dist/components/pages/security/login/03/ui/PageLogin03.svelte +2 -0
- package/dist/components/pages/security/login/PageLogin.svelte +30 -30
- package/dist/components/pages/security/login/types.d.ts +1 -0
- package/dist/components/pages/security/register/01/ui/PageRegister01.svelte +78 -76
- package/dist/components/pages/security/register/01/ui/RegisterCard01.svelte +107 -104
- package/dist/components/pages/security/register/01/ui/RegisterCard01.svelte.d.ts +1 -0
- package/dist/components/pages/security/register/02/ui/PageRegister02.svelte +2 -0
- package/dist/components/pages/security/register/02/ui/RegisterCard02.svelte +3 -1
- package/dist/components/pages/security/register/02/ui/RegisterCard02.svelte.d.ts +1 -0
- package/dist/components/pages/security/register/03/ui/PageRegister03.svelte +2 -0
- package/dist/components/pages/security/register/03/ui/RegisterCard03.svelte +3 -1
- package/dist/components/pages/security/register/03/ui/RegisterCard03.svelte.d.ts +1 -0
- package/dist/components/pages/security/register/FormRegister.svelte +148 -146
- package/dist/components/pages/security/register/FormRegister.svelte.d.ts +1 -0
- package/dist/components/pages/security/register/types.d.ts +1 -0
- package/dist/components/ui/avatar/avatar-fallback.svelte +29 -29
- package/dist/components/ui/avatar/avatar-image.svelte +38 -38
- package/dist/components/ui/avatar/avatar.svelte +39 -39
- package/dist/components/ui/badge/badge.svelte +46 -46
- package/dist/components/ui/banner/AdCardBanner.svelte +74 -74
- package/dist/components/ui/banner/CtaCardBanner.svelte +118 -118
- package/dist/components/ui/banner/CtaCardImageBanner.svelte +94 -94
- package/dist/components/ui/breadcrumb/core/breadcrumb-list.svelte +31 -31
- package/dist/components/ui/button/ButtonBack.svelte +18 -18
- package/dist/components/ui/button/ButtonLogin.svelte +19 -15
- package/dist/components/ui/button/ButtonLoginWith.svelte +57 -57
- package/dist/components/ui/button/ButtonSend.svelte +15 -15
- package/dist/components/ui/button/button.svelte +100 -86
- package/dist/components/ui/button/button.svelte.d.ts +1 -0
- package/dist/components/ui/card/core/highlight/01/CardHighlight01.svelte +103 -103
- package/dist/components/ui/card/core/highlight/02/CardHighlight02.svelte +99 -99
- package/dist/components/ui/card/core/highlight/CardHighlight.svelte +22 -22
- package/dist/components/ui/card/core/media/01/CardMedia01.svelte +133 -133
- package/dist/components/ui/card/core/media/02/CardMedia02.svelte +127 -127
- package/dist/components/ui/card/core/media/CardMedia.svelte +18 -18
- package/dist/components/ui/card/core/product/01/CardProduct01.svelte +136 -136
- package/dist/components/ui/card/core/product/02/CardProduct02.svelte +124 -124
- package/dist/components/ui/card/core/product/CardProduct.svelte +22 -22
- package/dist/components/ui/card/core/profile/01/CardProfile01.svelte +134 -134
- package/dist/components/ui/card/core/profile/02/CardProfile02.svelte +132 -132
- package/dist/components/ui/card/core/profile/CardProfile.svelte +18 -18
- package/dist/components/ui/card/core/promotion/CardPromotion.svelte +139 -139
- package/dist/components/ui/card/core/promotion/CardPromotionPrice.svelte +32 -32
- package/dist/components/ui/card/core/shared/CardButton.svelte +42 -42
- package/dist/components/ui/card/core/shared/CardCart.svelte +36 -36
- package/dist/components/ui/card/core/shared/CardDescription.svelte +41 -41
- package/dist/components/ui/card/core/shared/CardFavorite.svelte +33 -33
- package/dist/components/ui/card/core/shared/CardLogo.svelte +19 -19
- package/dist/components/ui/card/core/shared/CardPhoneOrWhatsapp.svelte +45 -45
- package/dist/components/ui/card/core/shared/CardStarRating.svelte +24 -24
- package/dist/components/ui/card/core/shared/CardTags.svelte +95 -95
- package/dist/components/ui/card/core/shared/CardThumbnailVideo.svelte +232 -232
- package/dist/components/ui/card/core/shared/CardTitlePrice.svelte +24 -24
- package/dist/components/ui/card/core/shared/TruncatableText.svelte +49 -49
- package/dist/components/ui/carousel/carousel-content.svelte +56 -56
- package/dist/components/ui/carousel/carousel-item.svelte +29 -29
- package/dist/components/ui/carousel/carousel-next.svelte +40 -40
- package/dist/components/ui/carousel/carousel-previous.svelte +40 -40
- package/dist/components/ui/carousel/carousel.svelte +225 -225
- package/dist/components/ui/carousel/core/badge/ui/CarouselBadge.svelte +108 -108
- package/dist/components/ui/carousel/core/grid/shared/ui/CarouselGridSlot.svelte +38 -38
- package/dist/components/ui/carousel/core/hero/ui/CarouselHero.svelte +181 -181
- package/dist/components/ui/carousel/core/highlights/ui/CarouselHighlights.svelte +67 -67
- package/dist/components/ui/carousel/core/product/ui/CarouselProduct.svelte +57 -57
- package/dist/components/ui/carousel/core/promotion/ui/CarouselPromotion.svelte +67 -67
- package/dist/components/ui/carousel/core/shared/ui/CarouselHeader.svelte +59 -59
- package/dist/components/ui/checkbox/checkbox.svelte +96 -96
- package/dist/components/ui/collapsible/collapsible-content.svelte +30 -30
- package/dist/components/ui/collapsible/collapsible-trigger.svelte +51 -51
- package/dist/components/ui/collapsible/collapsible.svelte +66 -66
- package/dist/components/ui/data-table/flex-render.svelte +40 -40
- package/dist/components/ui/datatable/ui/DataTableActions.svelte +28 -28
- package/dist/components/ui/datatable/ui/DataTableCheckbox.svelte +22 -22
- package/dist/components/ui/datatable/ui/DataTableContent.svelte +59 -59
- package/dist/components/ui/datatable/ui/DataTableCore.svelte +148 -148
- package/dist/components/ui/datatable/ui/DataTableDragHandle.svelte +8 -8
- package/dist/components/ui/datatable/ui/DataTableListFilter.svelte +60 -60
- package/dist/components/ui/datatable/ui/DataTableListPagination.svelte +35 -35
- package/dist/components/ui/drawer/drawer-close.svelte +41 -41
- package/dist/components/ui/drawer/drawer-content.svelte +81 -81
- package/dist/components/ui/drawer/drawer-description.svelte +19 -19
- 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 +34 -34
- package/dist/components/ui/drawer/drawer-overlay.svelte +25 -25
- package/dist/components/ui/drawer/drawer-portal.svelte +19 -19
- package/dist/components/ui/drawer/drawer-title.svelte +19 -19
- package/dist/components/ui/drawer/drawer-trigger.svelte +42 -42
- package/dist/components/ui/drawer/drawer.svelte +74 -74
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +25 -25
- package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +69 -69
- package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +106 -106
- package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +27 -27
- package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +21 -21
- package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +60 -60
- package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +27 -27
- package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +6 -6
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +43 -43
- package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +70 -70
- package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +20 -20
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +33 -33
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +57 -57
- package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +76 -76
- package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +68 -68
- package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +53 -53
- package/dist/components/ui/empty/empty-content.svelte +19 -19
- package/dist/components/ui/empty/empty-description.svelte +19 -19
- package/dist/components/ui/empty/empty-header.svelte +19 -19
- package/dist/components/ui/empty/empty-media.svelte +41 -41
- package/dist/components/ui/empty/empty-title.svelte +19 -19
- package/dist/components/ui/empty/empty.svelte +19 -19
- package/dist/components/ui/footer/ui/Footer.svelte +18 -18
- package/dist/components/ui/form/ui/calendar/Calendar.svelte +193 -193
- package/dist/components/ui/form/ui/calendar/CalendarCard.svelte +89 -89
- package/dist/components/ui/form/ui/calendar/DaysGrid.svelte +75 -75
- package/dist/components/ui/form/ui/calendar/MonthSelect.svelte +49 -49
- package/dist/components/ui/form/ui/calendar/YearSelect.svelte +116 -116
- package/dist/components/ui/form/ui/input-base.svelte +83 -83
- package/dist/components/ui/form/ui/input-calendar-interval.svelte +178 -178
- package/dist/components/ui/form/ui/input-calendar.svelte +109 -109
- package/dist/components/ui/form/ui/input-email-or-phone.svelte +23 -23
- package/dist/components/ui/form/ui/input-email.svelte +23 -23
- package/dist/components/ui/form/ui/input-password-confirm.svelte +23 -23
- package/dist/components/ui/form/ui/input-password.svelte +23 -23
- package/dist/components/ui/form/ui/input-phone.svelte +43 -37
- package/dist/components/ui/form/ui/input-select.svelte +246 -246
- package/dist/components/ui/form/ui/input-username.svelte +22 -22
- package/dist/components/ui/grid/core/ui/01/Grid01.svelte +30 -30
- package/dist/components/ui/grid/core/ui/02/Grid02.svelte +30 -30
- package/dist/components/ui/grid/core/ui/ItemsPanel.svelte +26 -26
- package/dist/components/ui/grid/core/ui/ItemsPanelCarousel.svelte +37 -37
- package/dist/components/ui/grid/core/ui/ItemsPanelGrid.svelte +43 -43
- package/dist/components/ui/grid/core/ui/ItemsSimpleGrid.svelte +45 -45
- package/dist/components/ui/grid/core/ui/shared/DescriptionGrid.svelte +23 -23
- package/dist/components/ui/grid/core/ui/shared/IconRenderGrid.svelte +23 -23
- package/dist/components/ui/grid/core/ui/shared/TitleGrid.svelte +19 -19
- package/dist/components/ui/hero/SimpleHero.svelte +65 -65
- package/dist/components/ui/input-otp/input-otp-group.svelte +22 -22
- package/dist/components/ui/input-otp/input-otp-separator.svelte +27 -27
- package/dist/components/ui/input-otp/input-otp-slot.svelte +63 -63
- package/dist/components/ui/input-otp/input-otp.svelte +181 -181
- package/dist/components/ui/label/core/LabelOr.svelte +25 -25
- package/dist/components/ui/label/label.svelte +19 -19
- package/dist/components/ui/language-switcher/language-switcher.svelte +48 -48
- package/dist/components/ui/light-switch/light-switch.svelte +48 -48
- package/dist/components/ui/link/link-forget-password.svelte +12 -12
- package/dist/components/ui/link/link-privacy-polity.svelte +12 -12
- package/dist/components/ui/link/link-terms-of-service.svelte +12 -12
- package/dist/components/ui/modal/core/ui/ModalCore.svelte +132 -132
- package/dist/components/ui/modal/form/index.d.ts +3 -2
- package/dist/components/ui/modal/form/index.js +2 -1
- package/dist/components/ui/modal/form/types.d.ts +41 -0
- package/dist/components/ui/modal/form/ui/ModalForm.svelte +11 -6
- package/dist/components/ui/modal/form/ui/ModalFormEmailOrPhone.svelte +204 -0
- package/dist/components/ui/modal/form/ui/ModalFormEmailOrPhone.svelte.d.ts +4 -0
- package/dist/components/ui/modal/grid/ui/02/ModalGridSelection02.svelte +146 -146
- package/dist/components/ui/modal/share/ui/ModalShareSelection.svelte +156 -156
- package/dist/components/ui/nav/ui/ComplexMenu.svelte +51 -51
- package/dist/components/ui/nav/ui/Menu.svelte +72 -72
- package/dist/components/ui/nav/ui/SimpleMenu.svelte +14 -14
- package/dist/components/ui/nav/ui/mobile/ComplexMenuMobile.svelte +125 -125
- package/dist/components/ui/nav/ui/mobile/MenuMobile.svelte +54 -54
- package/dist/components/ui/nav/ui/shared/MenuButton.svelte +51 -51
- package/dist/components/ui/nav/ui/shared/MenuLinks.svelte +40 -40
- package/dist/components/ui/nav/ui/shared/MenuListItem.svelte +44 -44
- package/dist/components/ui/nav/ui/shared/MenuLogo.svelte +13 -13
- package/dist/components/ui/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte +30 -30
- package/dist/components/ui/nav/ui/shared/navigation/NavDropdown.svelte +88 -88
- package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItem.svelte +17 -17
- package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemCard.svelte +53 -53
- package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemGrid.svelte +35 -36
- package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemList.svelte +24 -24
- package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItems.svelte +21 -21
- package/dist/components/ui/panel/CarouselSlot.svelte +57 -57
- package/dist/components/ui/panel/LeftHero.svelte +114 -114
- package/dist/components/ui/panel/NotFoundEmpty.svelte +66 -66
- package/dist/components/ui/phone-input/country-selector.svelte +87 -87
- package/dist/components/ui/phone-input/flag.svelte +11 -11
- package/dist/components/ui/phone-input/phone-input.svelte +163 -163
- package/dist/components/ui/popover/popover-close.svelte +25 -25
- package/dist/components/ui/popover/popover-content.svelte +92 -92
- package/dist/components/ui/popover/popover-portal.svelte +6 -6
- package/dist/components/ui/popover/popover-trigger.svelte +68 -68
- package/dist/components/ui/popover/popover.svelte +53 -53
- package/dist/components/ui/search/SearchInput.svelte +32 -32
- package/dist/components/ui/search/shared/SearchInputCore.svelte +66 -66
- package/dist/components/ui/separator/separator.svelte +28 -28
- package/dist/components/ui/sidebar/core/MenuBarSidebar.svelte +70 -70
- package/dist/components/ui/sidebar/core/ui/navbar/NavMenuBarSidebar.svelte +97 -97
- package/dist/components/ui/sidebar/core/ui/navbar/NavMenuBottomSidebar.svelte +33 -33
- package/dist/components/ui/sidebar/core/ui/navbar/NavMenuTopBarSidebar.svelte +101 -101
- package/dist/components/ui/sidebar/core/ui/navbar/nav-menu-header-sidebar.svelte +77 -77
- package/dist/components/ui/sidebar/sidebar-content.svelte +24 -24
- package/dist/components/ui/sidebar/sidebar-footer.svelte +21 -21
- package/dist/components/ui/sidebar/sidebar-group-content.svelte +21 -21
- package/dist/components/ui/sidebar/sidebar-menu-action.svelte +38 -38
- package/dist/components/ui/sidebar/sidebar-menu-button.svelte +70 -70
- package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +39 -39
- package/dist/components/ui/sidebar/sidebar-provider.svelte +62 -62
- package/dist/components/ui/sidebar/sidebar-rail.svelte +36 -36
- package/dist/components/ui/sidebar/sidebar-separator.svelte +21 -21
- package/dist/components/ui/sidebar/sidebar-trigger.svelte +36 -36
- package/dist/components/ui/sidebar/sidebar.svelte +118 -118
- package/dist/components/ui/skeleton/skeleton.svelte +19 -19
- package/dist/components/ui/star-rating/star-rating-star.svelte +66 -66
- package/dist/components/ui/star-rating/star-rating.svelte +149 -149
- 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/data/TabModel.d.ts +1 -0
- package/dist/components/ui/tabs/ui/tab-underline.svelte +47 -43
- package/dist/components/ui/underline-tabs/underline-tabs-content.svelte +33 -33
- package/dist/components/ui/underline-tabs/underline-tabs-list.svelte +40 -40
- package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte +91 -91
- package/dist/components/ui/underline-tabs/underline-tabs.svelte +61 -61
- package/dist/docs/ApiTable.svelte +42 -42
- package/dist/docs/CodeBlock.svelte +26 -26
- package/dist/docs/DocsHeader.svelte +25 -25
- package/dist/docs/DocsSidebar.svelte +108 -108
- package/dist/docs/components.js +624 -584
- package/dist/globals.css +27 -7
- package/dist/i18n/langs/en.d.ts +3 -1
- package/dist/i18n/langs/en.js +3 -1
- package/dist/i18n/langs/pt.d.ts +3 -1
- package/dist/i18n/langs/pt.js +3 -1
- package/dist/i18n/translations.d.ts +6 -2
- package/dist/index.d.ts +12 -0
- package/dist/index.js +12 -0
- package/dist/styles/globals.css +283 -283
- package/dist/types/index.d.ts +3 -1
- package/package.json +81 -81
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { ComplexMenuProps } from "../data/types";
|
|
3
|
-
import {
|
|
4
|
-
isCard,
|
|
5
|
-
isGrid,
|
|
6
|
-
isList,
|
|
7
|
-
isItems,
|
|
8
|
-
isItem,
|
|
9
|
-
} from "../data/complex-menu-utils";
|
|
10
|
-
import NavigationMenuItemGrid from "./shared/navigation/NavigationMenuItemGrid.svelte";
|
|
11
|
-
import NavigationMenuItemCard from "./shared/navigation/NavigationMenuItemCard.svelte";
|
|
12
|
-
import NavigationMenuItem from "./shared/navigation/NavigationMenuItem.svelte";
|
|
13
|
-
import NavigationMenuItemList from "./shared/navigation/NavigationMenuItemList.svelte";
|
|
14
|
-
import NavigationMenuItems from "./shared/navigation/NavigationMenuItems.svelte";
|
|
15
|
-
|
|
16
|
-
let { menus, textClass, subTextClass, hoverClass }: ComplexMenuProps =
|
|
17
|
-
$props();
|
|
18
|
-
</script>
|
|
19
|
-
|
|
20
|
-
<ul
|
|
21
|
-
class="flex list-none flex-1 flex-wrap items-center justify-center {textClass}"
|
|
22
|
-
>
|
|
23
|
-
{#each menus as link, i (i)}
|
|
24
|
-
{#if isCard(link)}
|
|
25
|
-
<NavigationMenuItemCard
|
|
26
|
-
{...link}
|
|
27
|
-
{textClass}
|
|
28
|
-
{subTextClass}
|
|
29
|
-
{hoverClass}
|
|
30
|
-
/>
|
|
31
|
-
{:else if isGrid(link)}
|
|
32
|
-
<NavigationMenuItemGrid
|
|
33
|
-
{...link}
|
|
34
|
-
{textClass}
|
|
35
|
-
{subTextClass}
|
|
36
|
-
{hoverClass}
|
|
37
|
-
/>
|
|
38
|
-
{:else if isList(link)}
|
|
39
|
-
<NavigationMenuItemList
|
|
40
|
-
{...link}
|
|
41
|
-
{textClass}
|
|
42
|
-
{subTextClass}
|
|
43
|
-
{hoverClass}
|
|
44
|
-
/>
|
|
45
|
-
{:else if isItems(link)}
|
|
46
|
-
<NavigationMenuItems {...link} {textClass} {hoverClass} />
|
|
47
|
-
{:else if isItem(link)}
|
|
48
|
-
<NavigationMenuItem {...link} {textClass} {hoverClass} />
|
|
49
|
-
{/if}
|
|
50
|
-
{/each}
|
|
51
|
-
</ul>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ComplexMenuProps } from "../data/types";
|
|
3
|
+
import {
|
|
4
|
+
isCard,
|
|
5
|
+
isGrid,
|
|
6
|
+
isList,
|
|
7
|
+
isItems,
|
|
8
|
+
isItem,
|
|
9
|
+
} from "../data/complex-menu-utils";
|
|
10
|
+
import NavigationMenuItemGrid from "./shared/navigation/NavigationMenuItemGrid.svelte";
|
|
11
|
+
import NavigationMenuItemCard from "./shared/navigation/NavigationMenuItemCard.svelte";
|
|
12
|
+
import NavigationMenuItem from "./shared/navigation/NavigationMenuItem.svelte";
|
|
13
|
+
import NavigationMenuItemList from "./shared/navigation/NavigationMenuItemList.svelte";
|
|
14
|
+
import NavigationMenuItems from "./shared/navigation/NavigationMenuItems.svelte";
|
|
15
|
+
|
|
16
|
+
let { menus, textClass, subTextClass, hoverClass }: ComplexMenuProps =
|
|
17
|
+
$props();
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<ul
|
|
21
|
+
class="flex list-none flex-1 flex-wrap items-center justify-center {textClass}"
|
|
22
|
+
>
|
|
23
|
+
{#each menus as link, i (i)}
|
|
24
|
+
{#if isCard(link)}
|
|
25
|
+
<NavigationMenuItemCard
|
|
26
|
+
{...link}
|
|
27
|
+
{textClass}
|
|
28
|
+
{subTextClass}
|
|
29
|
+
{hoverClass}
|
|
30
|
+
/>
|
|
31
|
+
{:else if isGrid(link)}
|
|
32
|
+
<NavigationMenuItemGrid
|
|
33
|
+
{...link}
|
|
34
|
+
{textClass}
|
|
35
|
+
{subTextClass}
|
|
36
|
+
{hoverClass}
|
|
37
|
+
/>
|
|
38
|
+
{:else if isList(link)}
|
|
39
|
+
<NavigationMenuItemList
|
|
40
|
+
{...link}
|
|
41
|
+
{textClass}
|
|
42
|
+
{subTextClass}
|
|
43
|
+
{hoverClass}
|
|
44
|
+
/>
|
|
45
|
+
{:else if isItems(link)}
|
|
46
|
+
<NavigationMenuItems {...link} {textClass} {hoverClass} />
|
|
47
|
+
{:else if isItem(link)}
|
|
48
|
+
<NavigationMenuItem {...link} {textClass} {hoverClass} />
|
|
49
|
+
{/if}
|
|
50
|
+
{/each}
|
|
51
|
+
</ul>
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { LanguageSwitcher } from "../../language-switcher";
|
|
3
|
-
import { LightSwitch } from "../../light-switch";
|
|
4
|
-
import { useDevice } from "../../../../hooks/responsive.svelte";
|
|
5
|
-
import type { ComplexMenuProps, SimpleMenuProps } from "../../../../types";
|
|
6
|
-
import ComplexMenu from "./ComplexMenu.svelte";
|
|
7
|
-
import ComplexMenuMobile from "./mobile/ComplexMenuMobile.svelte";
|
|
8
|
-
import SimpleMenuMobile from "./mobile/SimpleMenuMobile.svelte";
|
|
9
|
-
import MenuButton from "./shared/MenuButton.svelte";
|
|
10
|
-
import MenuLogo from "./shared/MenuLogo.svelte";
|
|
11
|
-
import type { MenuProps, MenuVarientProps } from "../data/types";
|
|
12
|
-
import SimpleMenu from "./SimpleMenu.svelte";
|
|
13
|
-
|
|
14
|
-
let {
|
|
15
|
-
logo,
|
|
16
|
-
navMenu,
|
|
17
|
-
isBorder,
|
|
18
|
-
navMenuButton,
|
|
19
|
-
isLightSwitch,
|
|
20
|
-
isLanguageSwitcher,
|
|
21
|
-
}: MenuProps & {
|
|
22
|
-
navMenu: MenuVarientProps;
|
|
23
|
-
} = $props();
|
|
24
|
-
|
|
25
|
-
function isLinks(item: MenuVarientProps | undefined): item is SimpleMenuProps {
|
|
26
|
-
return item !== undefined && "links" in item;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
function isMenu(item: MenuVarientProps | undefined): item is ComplexMenuProps {
|
|
30
|
-
return item !== undefined && "menus" in item;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
const responsive = useDevice();
|
|
34
|
-
</script>
|
|
35
|
-
|
|
36
|
-
{#snippet actionButtons()}
|
|
37
|
-
<div class="flex items-center gap-2">
|
|
38
|
-
{#if isLightSwitch}
|
|
39
|
-
<LightSwitch />
|
|
40
|
-
{/if}
|
|
41
|
-
{#if isLanguageSwitcher}
|
|
42
|
-
<LanguageSwitcher />
|
|
43
|
-
{/if}
|
|
44
|
-
{#if navMenuButton}
|
|
45
|
-
<MenuButton {...navMenuButton} />
|
|
46
|
-
{/if}
|
|
47
|
-
</div>
|
|
48
|
-
{/snippet}
|
|
49
|
-
|
|
50
|
-
<nav
|
|
51
|
-
class="flex items-center justify-between p-2 md:p-5 w-full {isBorder
|
|
52
|
-
? 'border-b-2'
|
|
53
|
-
: ''}"
|
|
54
|
-
>
|
|
55
|
-
{#if logo}
|
|
56
|
-
<MenuLogo {...logo} />
|
|
57
|
-
{/if}
|
|
58
|
-
|
|
59
|
-
{#if responsive.isMobile}
|
|
60
|
-
{#if isLinks(navMenu)}
|
|
61
|
-
<SimpleMenuMobile {...navMenu} />
|
|
62
|
-
{:else if isMenu(navMenu)}
|
|
63
|
-
<ComplexMenuMobile {...navMenu} />
|
|
64
|
-
{/if}
|
|
65
|
-
{:else if isLinks(navMenu)}
|
|
66
|
-
<SimpleMenu {...navMenu} />
|
|
67
|
-
{@render actionButtons()}
|
|
68
|
-
{:else if isMenu(navMenu)}
|
|
69
|
-
<ComplexMenu {...navMenu} />
|
|
70
|
-
{@render actionButtons()}
|
|
71
|
-
{/if}
|
|
72
|
-
</nav>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { LanguageSwitcher } from "../../language-switcher";
|
|
3
|
+
import { LightSwitch } from "../../light-switch";
|
|
4
|
+
import { useDevice } from "../../../../hooks/responsive.svelte";
|
|
5
|
+
import type { ComplexMenuProps, SimpleMenuProps } from "../../../../types";
|
|
6
|
+
import ComplexMenu from "./ComplexMenu.svelte";
|
|
7
|
+
import ComplexMenuMobile from "./mobile/ComplexMenuMobile.svelte";
|
|
8
|
+
import SimpleMenuMobile from "./mobile/SimpleMenuMobile.svelte";
|
|
9
|
+
import MenuButton from "./shared/MenuButton.svelte";
|
|
10
|
+
import MenuLogo from "./shared/MenuLogo.svelte";
|
|
11
|
+
import type { MenuProps, MenuVarientProps } from "../data/types";
|
|
12
|
+
import SimpleMenu from "./SimpleMenu.svelte";
|
|
13
|
+
|
|
14
|
+
let {
|
|
15
|
+
logo,
|
|
16
|
+
navMenu,
|
|
17
|
+
isBorder,
|
|
18
|
+
navMenuButton,
|
|
19
|
+
isLightSwitch,
|
|
20
|
+
isLanguageSwitcher,
|
|
21
|
+
}: MenuProps & {
|
|
22
|
+
navMenu: MenuVarientProps;
|
|
23
|
+
} = $props();
|
|
24
|
+
|
|
25
|
+
function isLinks(item: MenuVarientProps | undefined): item is SimpleMenuProps {
|
|
26
|
+
return item !== undefined && "links" in item;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function isMenu(item: MenuVarientProps | undefined): item is ComplexMenuProps {
|
|
30
|
+
return item !== undefined && "menus" in item;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const responsive = useDevice();
|
|
34
|
+
</script>
|
|
35
|
+
|
|
36
|
+
{#snippet actionButtons()}
|
|
37
|
+
<div class="flex items-center gap-2">
|
|
38
|
+
{#if isLightSwitch}
|
|
39
|
+
<LightSwitch />
|
|
40
|
+
{/if}
|
|
41
|
+
{#if isLanguageSwitcher}
|
|
42
|
+
<LanguageSwitcher />
|
|
43
|
+
{/if}
|
|
44
|
+
{#if navMenuButton}
|
|
45
|
+
<MenuButton {...navMenuButton} />
|
|
46
|
+
{/if}
|
|
47
|
+
</div>
|
|
48
|
+
{/snippet}
|
|
49
|
+
|
|
50
|
+
<nav
|
|
51
|
+
class="flex items-center justify-between p-2 md:p-5 w-full {isBorder
|
|
52
|
+
? 'border-b-2'
|
|
53
|
+
: ''}"
|
|
54
|
+
>
|
|
55
|
+
{#if logo}
|
|
56
|
+
<MenuLogo {...logo} />
|
|
57
|
+
{/if}
|
|
58
|
+
|
|
59
|
+
{#if responsive.isMobile}
|
|
60
|
+
{#if isLinks(navMenu)}
|
|
61
|
+
<SimpleMenuMobile {...navMenu} />
|
|
62
|
+
{:else if isMenu(navMenu)}
|
|
63
|
+
<ComplexMenuMobile {...navMenu} />
|
|
64
|
+
{/if}
|
|
65
|
+
{:else if isLinks(navMenu)}
|
|
66
|
+
<SimpleMenu {...navMenu} />
|
|
67
|
+
{@render actionButtons()}
|
|
68
|
+
{:else if isMenu(navMenu)}
|
|
69
|
+
<ComplexMenu {...navMenu} />
|
|
70
|
+
{@render actionButtons()}
|
|
71
|
+
{/if}
|
|
72
|
+
</nav>
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { SimpleMenuProps } from "../data/nav-menu";
|
|
3
|
-
import MenuLinks from "./shared/MenuLinks.svelte";
|
|
4
|
-
|
|
5
|
-
let { ...restProps }: SimpleMenuProps = $props();
|
|
6
|
-
</script>
|
|
7
|
-
|
|
8
|
-
{#if restProps.align === "LINK_INTO_ACTIONS"}
|
|
9
|
-
<div class="flex items-center gap-2 w-full">
|
|
10
|
-
<MenuLinks {...restProps} orientation="vertical" />
|
|
11
|
-
</div>
|
|
12
|
-
{:else}
|
|
13
|
-
<MenuLinks {...restProps} orientation="horizontal" />
|
|
14
|
-
{/if}
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { SimpleMenuProps } from "../data/nav-menu";
|
|
3
|
+
import MenuLinks from "./shared/MenuLinks.svelte";
|
|
4
|
+
|
|
5
|
+
let { ...restProps }: SimpleMenuProps = $props();
|
|
6
|
+
</script>
|
|
7
|
+
|
|
8
|
+
{#if restProps.align === "LINK_INTO_ACTIONS"}
|
|
9
|
+
<div class="flex items-center gap-2 w-full">
|
|
10
|
+
<MenuLinks {...restProps} orientation="vertical" />
|
|
11
|
+
</div>
|
|
12
|
+
{:else}
|
|
13
|
+
<MenuLinks {...restProps} orientation="horizontal" />
|
|
14
|
+
{/if}
|
|
@@ -1,125 +1,125 @@
|
|
|
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(
|
|
25
|
-
header: NonNullable<NavigationMenuItemCardProps["header"]>,
|
|
26
|
-
)}
|
|
27
|
-
<div class="mt-4 mb-2 text-lg font-medium {header.labelClass}">
|
|
28
|
-
{header.label}
|
|
29
|
-
</div>
|
|
30
|
-
<p
|
|
31
|
-
class="text-sm leading-tight {header.descriptionClass ||
|
|
32
|
-
'text-muted-foreground'}"
|
|
33
|
-
>
|
|
34
|
-
{header.description}
|
|
35
|
-
</p>
|
|
36
|
-
{/snippet}
|
|
37
|
-
|
|
38
|
-
<MenuMobile>
|
|
39
|
-
<div class="flex flex-col gap-1">
|
|
40
|
-
{#each links as link, i (i)}
|
|
41
|
-
{#if isCard(link)}
|
|
42
|
-
{@const card = link as NavigationMenuItemCardProps}
|
|
43
|
-
<CollapsibleNavMenu label={card.label ?? card.header?.label ?? ""}>
|
|
44
|
-
<ul class="grid gap-2 p-2">
|
|
45
|
-
{#if card.header}
|
|
46
|
-
<li
|
|
47
|
-
class="relative row-span-3"
|
|
48
|
-
style={card.header.imgUrl
|
|
49
|
-
? `background-image: url(${card.header.imgUrl}); background-repeat: no-repeat; background-size: cover; background-position: center; border-radius: 12px;`
|
|
50
|
-
: ""}
|
|
51
|
-
>
|
|
52
|
-
<a
|
|
53
|
-
href={card.header.href ?? "#"}
|
|
54
|
-
class="flex h-full w-full flex-col justify-end p-4 {card
|
|
55
|
-
.header.imgUrl
|
|
56
|
-
? 'no-underline outline-hidden select-none'
|
|
57
|
-
: 'bg-linear-to-b from-muted/50 to-muted rounded-md'}"
|
|
58
|
-
>
|
|
59
|
-
{@render headerSnippet(card.header)}
|
|
60
|
-
</a>
|
|
61
|
-
</li>
|
|
62
|
-
{/if}
|
|
63
|
-
{#if card.cards}
|
|
64
|
-
{#each card.cards as item, j (j)}
|
|
65
|
-
<NavMenuItem {...item} />
|
|
66
|
-
{/each}
|
|
67
|
-
{/if}
|
|
68
|
-
</ul>
|
|
69
|
-
</CollapsibleNavMenu>
|
|
70
|
-
{:else if isGrid(link)}
|
|
71
|
-
{@const grid = link as NavigationMenuItemGridProps}
|
|
72
|
-
<CollapsibleNavMenu label={grid.label}>
|
|
73
|
-
<ul class="grid grid-cols-2 gap-2 max-h-37.5 overflow-y-auto p-2">
|
|
74
|
-
{#each grid.grids ?? [] as item, j (j)}
|
|
75
|
-
<NavMenuItem {...item} />
|
|
76
|
-
{/each}
|
|
77
|
-
</ul>
|
|
78
|
-
</CollapsibleNavMenu>
|
|
79
|
-
{:else if isList(link)}
|
|
80
|
-
{@const list = link as NavigationMenuItemListProps}
|
|
81
|
-
<CollapsibleNavMenu label={list.label}>
|
|
82
|
-
<ul class="grid gap-4 p-2">
|
|
83
|
-
{#each list.list ?? [] as item, j (j)}
|
|
84
|
-
<li>
|
|
85
|
-
<a
|
|
86
|
-
href={item.href}
|
|
87
|
-
class="block rounded-md p-2 no-underline hover:bg-accent"
|
|
88
|
-
>
|
|
89
|
-
<div class="font-medium">{item.title ?? ""}</div>
|
|
90
|
-
<div class="text-sm text-muted-foreground">
|
|
91
|
-
{item.content}
|
|
92
|
-
</div>
|
|
93
|
-
</a>
|
|
94
|
-
</li>
|
|
95
|
-
{/each}
|
|
96
|
-
</ul>
|
|
97
|
-
</CollapsibleNavMenu>
|
|
98
|
-
{:else if isItems(link)}
|
|
99
|
-
{@const items = link as NavigationMenuItemsProps}
|
|
100
|
-
<CollapsibleNavMenu label={items.label}>
|
|
101
|
-
<ul class="grid min-w-50 gap-4 p-2">
|
|
102
|
-
{#each items.items ?? [] as item, j (j)}
|
|
103
|
-
<li>
|
|
104
|
-
<a
|
|
105
|
-
href={item.href}
|
|
106
|
-
class="block rounded-md px-3 py-2 text-sm font-medium no-underline hover:bg-accent"
|
|
107
|
-
>
|
|
108
|
-
{item.title}
|
|
109
|
-
</a>
|
|
110
|
-
</li>
|
|
111
|
-
{/each}
|
|
112
|
-
</ul>
|
|
113
|
-
</CollapsibleNavMenu>
|
|
114
|
-
{:else if isItem(link)}
|
|
115
|
-
{@const item = link as NavigationMenuItemProps}
|
|
116
|
-
<a
|
|
117
|
-
href={item.href}
|
|
118
|
-
class="block w-full rounded-xl px-3 py-2 text-sm font-medium no-underline hover:bg-accent focus:bg-accent"
|
|
119
|
-
>
|
|
120
|
-
{item.label}
|
|
121
|
-
</a>
|
|
122
|
-
{/if}
|
|
123
|
-
{/each}
|
|
124
|
-
</div>
|
|
125
|
-
</MenuMobile>
|
|
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(
|
|
25
|
+
header: NonNullable<NavigationMenuItemCardProps["header"]>,
|
|
26
|
+
)}
|
|
27
|
+
<div class="mt-4 mb-2 text-lg font-medium {header.labelClass}">
|
|
28
|
+
{header.label}
|
|
29
|
+
</div>
|
|
30
|
+
<p
|
|
31
|
+
class="text-sm leading-tight {header.descriptionClass ||
|
|
32
|
+
'text-muted-foreground'}"
|
|
33
|
+
>
|
|
34
|
+
{header.description}
|
|
35
|
+
</p>
|
|
36
|
+
{/snippet}
|
|
37
|
+
|
|
38
|
+
<MenuMobile>
|
|
39
|
+
<div class="flex flex-col gap-1">
|
|
40
|
+
{#each links as link, i (i)}
|
|
41
|
+
{#if isCard(link)}
|
|
42
|
+
{@const card = link as NavigationMenuItemCardProps}
|
|
43
|
+
<CollapsibleNavMenu label={card.label ?? card.header?.label ?? ""}>
|
|
44
|
+
<ul class="grid gap-2 p-2">
|
|
45
|
+
{#if card.header}
|
|
46
|
+
<li
|
|
47
|
+
class="relative row-span-3"
|
|
48
|
+
style={card.header.imgUrl
|
|
49
|
+
? `background-image: url(${card.header.imgUrl}); background-repeat: no-repeat; background-size: cover; background-position: center; border-radius: 12px;`
|
|
50
|
+
: ""}
|
|
51
|
+
>
|
|
52
|
+
<a
|
|
53
|
+
href={card.header.href ?? "#"}
|
|
54
|
+
class="flex h-full w-full flex-col justify-end p-4 {card
|
|
55
|
+
.header.imgUrl
|
|
56
|
+
? 'no-underline outline-hidden select-none'
|
|
57
|
+
: 'bg-linear-to-b from-muted/50 to-muted rounded-md'}"
|
|
58
|
+
>
|
|
59
|
+
{@render headerSnippet(card.header)}
|
|
60
|
+
</a>
|
|
61
|
+
</li>
|
|
62
|
+
{/if}
|
|
63
|
+
{#if card.cards}
|
|
64
|
+
{#each card.cards as item, j (j)}
|
|
65
|
+
<NavMenuItem {...item} />
|
|
66
|
+
{/each}
|
|
67
|
+
{/if}
|
|
68
|
+
</ul>
|
|
69
|
+
</CollapsibleNavMenu>
|
|
70
|
+
{:else if isGrid(link)}
|
|
71
|
+
{@const grid = link as NavigationMenuItemGridProps}
|
|
72
|
+
<CollapsibleNavMenu label={grid.label}>
|
|
73
|
+
<ul class="grid grid-cols-2 gap-2 max-h-37.5 overflow-y-auto p-2">
|
|
74
|
+
{#each grid.grids ?? [] as item, j (j)}
|
|
75
|
+
<NavMenuItem {...item} />
|
|
76
|
+
{/each}
|
|
77
|
+
</ul>
|
|
78
|
+
</CollapsibleNavMenu>
|
|
79
|
+
{:else if isList(link)}
|
|
80
|
+
{@const list = link as NavigationMenuItemListProps}
|
|
81
|
+
<CollapsibleNavMenu label={list.label}>
|
|
82
|
+
<ul class="grid gap-4 p-2">
|
|
83
|
+
{#each list.list ?? [] as item, j (j)}
|
|
84
|
+
<li>
|
|
85
|
+
<a
|
|
86
|
+
href={item.href}
|
|
87
|
+
class="block rounded-md p-2 no-underline hover:bg-accent"
|
|
88
|
+
>
|
|
89
|
+
<div class="font-medium">{item.title ?? ""}</div>
|
|
90
|
+
<div class="text-sm text-muted-foreground">
|
|
91
|
+
{item.content}
|
|
92
|
+
</div>
|
|
93
|
+
</a>
|
|
94
|
+
</li>
|
|
95
|
+
{/each}
|
|
96
|
+
</ul>
|
|
97
|
+
</CollapsibleNavMenu>
|
|
98
|
+
{:else if isItems(link)}
|
|
99
|
+
{@const items = link as NavigationMenuItemsProps}
|
|
100
|
+
<CollapsibleNavMenu label={items.label}>
|
|
101
|
+
<ul class="grid min-w-50 gap-4 p-2">
|
|
102
|
+
{#each items.items ?? [] as item, j (j)}
|
|
103
|
+
<li>
|
|
104
|
+
<a
|
|
105
|
+
href={item.href}
|
|
106
|
+
class="block rounded-md px-3 py-2 text-sm font-medium no-underline hover:bg-accent"
|
|
107
|
+
>
|
|
108
|
+
{item.title}
|
|
109
|
+
</a>
|
|
110
|
+
</li>
|
|
111
|
+
{/each}
|
|
112
|
+
</ul>
|
|
113
|
+
</CollapsibleNavMenu>
|
|
114
|
+
{:else if isItem(link)}
|
|
115
|
+
{@const item = link as NavigationMenuItemProps}
|
|
116
|
+
<a
|
|
117
|
+
href={item.href}
|
|
118
|
+
class="block w-full rounded-xl px-3 py-2 text-sm font-medium no-underline hover:bg-accent focus:bg-accent"
|
|
119
|
+
>
|
|
120
|
+
{item.label}
|
|
121
|
+
</a>
|
|
122
|
+
{/if}
|
|
123
|
+
{/each}
|
|
124
|
+
</div>
|
|
125
|
+
</MenuMobile>
|
|
@@ -1,54 +1,54 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import * as Drawer from "../../../drawer/index.js";
|
|
3
|
-
import type { NavMenuButtonProps } from "../../data/nav-menu";
|
|
4
|
-
import { buttonVariants } from "../../../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 "../../../light-switch/light-switch.svelte";
|
|
9
|
-
import LanguageSwitcher from "../../../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>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as Drawer from "../../../drawer/index.js";
|
|
3
|
+
import type { NavMenuButtonProps } from "../../data/nav-menu";
|
|
4
|
+
import { buttonVariants } from "../../../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 "../../../light-switch/light-switch.svelte";
|
|
9
|
+
import LanguageSwitcher from "../../../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>
|