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,17 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
let {
|
|
3
|
+
description,
|
|
4
|
+
descriptionClass,
|
|
5
|
+
}: {
|
|
6
|
+
description?: string;
|
|
7
|
+
descriptionClass?: string;
|
|
8
|
+
} = $props();
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
{#if description}
|
|
12
|
+
<p
|
|
13
|
+
class="{descriptionClass} text-center min-w-48 md:w-52 lg:w-56 text-muted-foreground line-clamp-2 md:line-clamp-3"
|
|
14
|
+
>
|
|
15
|
+
{description}
|
|
16
|
+
</p>
|
|
17
|
+
{/if}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
3
|
+
import type { IconSvgElement } from "@hugeicons/svelte";
|
|
4
|
+
|
|
5
|
+
let {
|
|
6
|
+
icon,
|
|
7
|
+
}: {
|
|
8
|
+
icon: string | IconSvgElement;
|
|
9
|
+
} = $props();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
{#if typeof icon === "string"}
|
|
13
|
+
<i class="{icon} text-4xl md:text-6xl"></i>
|
|
14
|
+
{:else}
|
|
15
|
+
<HugeiconsIcon {icon} class="size-8 md:size-10" />
|
|
16
|
+
{/if}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { IconSvgElement } from "@hugeicons/svelte";
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
icon: string | IconSvgElement;
|
|
4
|
+
};
|
|
5
|
+
declare const IconRenderGrid: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type IconRenderGrid = ReturnType<typeof IconRenderGrid>;
|
|
7
|
+
export default IconRenderGrid;
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { Button } from "../../ui/button/index.js";
|
|
3
|
-
import type { HeroSimpleProps } from "./types";
|
|
4
|
-
let {
|
|
5
|
-
title,
|
|
6
|
-
subTitle,
|
|
7
|
-
description,
|
|
8
|
-
image,
|
|
9
|
-
buttons,
|
|
10
|
-
titleClass,
|
|
11
|
-
subTitleClass,
|
|
12
|
-
descriptionClass,
|
|
13
|
-
imageClass,
|
|
14
|
-
}: HeroSimpleProps = $props();
|
|
15
|
-
</script>
|
|
16
|
-
|
|
17
|
-
<section class="relative flex p-2">
|
|
18
|
-
<div class="w-full grid grid-cols-10 md:grid-cols-2 min-h-50 md:min-h-125">
|
|
19
|
-
<div class="flex justify-center items-center">
|
|
20
|
-
<div class="space-y-1">
|
|
21
|
-
{#if title}
|
|
22
|
-
<h1
|
|
23
|
-
class="font-bold text-[24px] md:text-[60px] lg:text-[80px] {titleClass}"
|
|
24
|
-
>
|
|
25
|
-
{title}
|
|
26
|
-
</h1>
|
|
27
|
-
{/if}
|
|
28
|
-
{#if subTitle}
|
|
29
|
-
<p class="font-semibold text-[16px] md:text-[40px] {subTitleClass}">
|
|
30
|
-
{subTitle}
|
|
31
|
-
</p>
|
|
32
|
-
{/if}
|
|
33
|
-
{#if description}
|
|
34
|
-
<p
|
|
35
|
-
class="text-[12px] md:text-[20px] md:w-8/12 mt-5 {descriptionClass}"
|
|
36
|
-
>
|
|
37
|
-
{description}
|
|
38
|
-
</p>
|
|
39
|
-
{/if}
|
|
40
|
-
{#if buttons}
|
|
41
|
-
<div class="flex flex-wrap gap-2 mt-5 md:mt-10">
|
|
42
|
-
{#each buttons as button, i (i)}
|
|
43
|
-
<Button
|
|
44
|
-
href={button.href}
|
|
45
|
-
class={button.className}
|
|
46
|
-
onclick={button.onClick}
|
|
47
|
-
>
|
|
48
|
-
{button.label}
|
|
49
|
-
</Button>
|
|
50
|
-
{/each}
|
|
51
|
-
</div>
|
|
52
|
-
{/if}
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
<div class="flex justify-center items-center">
|
|
56
|
-
{#if image}
|
|
57
|
-
<img
|
|
58
|
-
src={image}
|
|
59
|
-
alt={image}
|
|
60
|
-
class="rounded-lg h-50 md:h-125 w-[60%] object-cover {imageClass}"
|
|
61
|
-
/>
|
|
62
|
-
{/if}
|
|
63
|
-
</div>
|
|
64
|
-
</div>
|
|
65
|
-
</section>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Button } from "../../ui/button/index.js";
|
|
3
|
+
import type { HeroSimpleProps } from "./types";
|
|
4
|
+
let {
|
|
5
|
+
title,
|
|
6
|
+
subTitle,
|
|
7
|
+
description,
|
|
8
|
+
image,
|
|
9
|
+
buttons,
|
|
10
|
+
titleClass,
|
|
11
|
+
subTitleClass,
|
|
12
|
+
descriptionClass,
|
|
13
|
+
imageClass,
|
|
14
|
+
}: HeroSimpleProps = $props();
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<section class="relative flex p-2">
|
|
18
|
+
<div class="w-full grid grid-cols-10 md:grid-cols-2 min-h-50 md:min-h-125">
|
|
19
|
+
<div class="flex justify-center items-center">
|
|
20
|
+
<div class="space-y-1">
|
|
21
|
+
{#if title}
|
|
22
|
+
<h1
|
|
23
|
+
class="font-bold text-[24px] md:text-[60px] lg:text-[80px] {titleClass}"
|
|
24
|
+
>
|
|
25
|
+
{title}
|
|
26
|
+
</h1>
|
|
27
|
+
{/if}
|
|
28
|
+
{#if subTitle}
|
|
29
|
+
<p class="font-semibold text-[16px] md:text-[40px] {subTitleClass}">
|
|
30
|
+
{subTitle}
|
|
31
|
+
</p>
|
|
32
|
+
{/if}
|
|
33
|
+
{#if description}
|
|
34
|
+
<p
|
|
35
|
+
class="text-[12px] md:text-[20px] md:w-8/12 mt-5 {descriptionClass}"
|
|
36
|
+
>
|
|
37
|
+
{description}
|
|
38
|
+
</p>
|
|
39
|
+
{/if}
|
|
40
|
+
{#if buttons}
|
|
41
|
+
<div class="flex flex-wrap gap-2 mt-5 md:mt-10">
|
|
42
|
+
{#each buttons as button, i (i)}
|
|
43
|
+
<Button
|
|
44
|
+
href={button.href}
|
|
45
|
+
class={button.className}
|
|
46
|
+
onclick={button.onClick}
|
|
47
|
+
>
|
|
48
|
+
{button.label}
|
|
49
|
+
</Button>
|
|
50
|
+
{/each}
|
|
51
|
+
</div>
|
|
52
|
+
{/if}
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
<div class="flex justify-center items-center">
|
|
56
|
+
{#if image}
|
|
57
|
+
<img
|
|
58
|
+
src={image}
|
|
59
|
+
alt={image}
|
|
60
|
+
class="rounded-lg h-50 md:h-125 w-[60%] object-cover {imageClass}"
|
|
61
|
+
/>
|
|
62
|
+
{/if}
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</section>
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Separator from "../../ui/separator/separator.svelte";
|
|
3
|
-
import { t } from "../../../i18n";
|
|
4
|
-
|
|
5
|
-
type Props = {
|
|
6
|
-
variant?: "SEPARATOR";
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
let { variant }: Props = $props();
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
{#if variant === "SEPARATOR"}
|
|
13
|
-
<div class="relative my-1 text-center">
|
|
14
|
-
<div class="absolute inset-0 flex items-center">
|
|
15
|
-
<Separator />
|
|
16
|
-
</div>
|
|
17
|
-
<span
|
|
18
|
-
class="relative bg-white dark:bg-primary px-4 text-[10px] uppercase text-slate-400 tracking-wider"
|
|
19
|
-
>
|
|
20
|
-
{$t("label.or")}
|
|
21
|
-
</span>
|
|
22
|
-
</div>
|
|
23
|
-
{:else}
|
|
24
|
-
{$t("label.or")}
|
|
25
|
-
{/if}
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Separator from "../../ui/separator/separator.svelte";
|
|
3
|
+
import { t } from "../../../i18n";
|
|
4
|
+
|
|
5
|
+
type Props = {
|
|
6
|
+
variant?: "SEPARATOR";
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
let { variant }: Props = $props();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
{#if variant === "SEPARATOR"}
|
|
13
|
+
<div class="relative my-1 text-center">
|
|
14
|
+
<div class="absolute inset-0 flex items-center">
|
|
15
|
+
<Separator />
|
|
16
|
+
</div>
|
|
17
|
+
<span
|
|
18
|
+
class="relative bg-white dark:bg-primary px-4 text-[10px] uppercase text-slate-400 tracking-wider"
|
|
19
|
+
>
|
|
20
|
+
{$t("label.or")}
|
|
21
|
+
</span>
|
|
22
|
+
</div>
|
|
23
|
+
{:else}
|
|
24
|
+
{$t("label.or")}
|
|
25
|
+
{/if}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { t } from "../../../i18n";
|
|
3
|
-
import type { HTMLAnchorAttributes } from "svelte/elements";
|
|
4
|
-
|
|
5
|
-
type Props = HTMLAnchorAttributes;
|
|
6
|
-
|
|
7
|
-
let { ...restProps }: Props = $props();
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<a {...restProps} class="text-xs text-slate-500 hover:text-slate-800 z-10">
|
|
11
|
-
{$t("link.forget.password")}!
|
|
12
|
-
</a>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { t } from "../../../i18n";
|
|
3
|
+
import type { HTMLAnchorAttributes } from "svelte/elements";
|
|
4
|
+
|
|
5
|
+
type Props = HTMLAnchorAttributes;
|
|
6
|
+
|
|
7
|
+
let { ...restProps }: Props = $props();
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<a {...restProps} class="text-xs text-slate-500 hover:text-slate-800 z-10">
|
|
11
|
+
{$t("link.forget.password")}!
|
|
12
|
+
</a>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { t } from "../../../i18n";
|
|
3
|
-
import type { HTMLAnchorAttributes } from "svelte/elements";
|
|
4
|
-
|
|
5
|
-
type Props = HTMLAnchorAttributes;
|
|
6
|
-
|
|
7
|
-
let { ...restProps }: Props = $props();
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<a {...restProps} class="text-xs text-slate-500 hover:text-slate-800 z-10">
|
|
11
|
-
{$t("link.privacy-policy.label")}
|
|
12
|
-
</a>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { t } from "../../../i18n";
|
|
3
|
+
import type { HTMLAnchorAttributes } from "svelte/elements";
|
|
4
|
+
|
|
5
|
+
type Props = HTMLAnchorAttributes;
|
|
6
|
+
|
|
7
|
+
let { ...restProps }: Props = $props();
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<a {...restProps} class="text-xs text-slate-500 hover:text-slate-800 z-10">
|
|
11
|
+
{$t("link.privacy-policy.label")}
|
|
12
|
+
</a>
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { t } from "../../../i18n";
|
|
3
|
-
import type { HTMLAnchorAttributes } from "svelte/elements";
|
|
4
|
-
|
|
5
|
-
type Props = HTMLAnchorAttributes;
|
|
6
|
-
|
|
7
|
-
let { ...restProps }: Props = $props();
|
|
8
|
-
</script>
|
|
9
|
-
|
|
10
|
-
<a {...restProps} class="text-xs text-slate-500 hover:text-slate-800 z-10">
|
|
11
|
-
{$t("link.terms-of-service.label")}
|
|
12
|
-
</a>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { t } from "../../../i18n";
|
|
3
|
+
import type { HTMLAnchorAttributes } from "svelte/elements";
|
|
4
|
+
|
|
5
|
+
type Props = HTMLAnchorAttributes;
|
|
6
|
+
|
|
7
|
+
let { ...restProps }: Props = $props();
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<a {...restProps} class="text-xs text-slate-500 hover:text-slate-800 z-10">
|
|
11
|
+
{$t("link.terms-of-service.label")}
|
|
12
|
+
</a>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { NavigationMenuItemProps, NavigationMenuItemListProps, NavigationMenuItemCardProps, NavigationMenuItemGridProps, NavigationMenuItemsProps } from "./types";
|
|
2
|
+
export type ComplexMenuItemSlots = NavigationMenuItemCardProps | NavigationMenuItemGridProps | NavigationMenuItemListProps | NavigationMenuItemsProps | NavigationMenuItemProps;
|
|
3
|
+
export declare function isCard(item: ComplexMenuItemSlots): item is NavigationMenuItemCardProps;
|
|
4
|
+
export declare function isGrid(item: ComplexMenuItemSlots): item is NavigationMenuItemGridProps;
|
|
5
|
+
export declare function isList(item: ComplexMenuItemSlots): item is NavigationMenuItemListProps;
|
|
6
|
+
export declare function isItems(item: ComplexMenuItemSlots): item is NavigationMenuItemsProps;
|
|
7
|
+
export declare function isItem(item: ComplexMenuItemSlots): item is NavigationMenuItemProps;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function isCard(item) {
|
|
2
|
+
return "header" in item && "cards" in item;
|
|
3
|
+
}
|
|
4
|
+
export function isGrid(item) {
|
|
5
|
+
return "grids" in item && "label" in item;
|
|
6
|
+
}
|
|
7
|
+
export function isList(item) {
|
|
8
|
+
return "list" in item && "label" in item;
|
|
9
|
+
}
|
|
10
|
+
export function isItems(item) {
|
|
11
|
+
return "items" in item && "label" in item;
|
|
12
|
+
}
|
|
13
|
+
export function isItem(item) {
|
|
14
|
+
return "href" in item && "label" in item;
|
|
15
|
+
}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import type { IconSvgElement } from "@hugeicons/svelte";
|
|
2
|
+
/**
|
|
3
|
+
* Props do logotipo no NavMenu.
|
|
4
|
+
*/
|
|
5
|
+
export interface NavMenuButtonProps {
|
|
6
|
+
buttonClass?: string;
|
|
7
|
+
textButtonLogin?: string;
|
|
8
|
+
textButtonRegister?: string;
|
|
9
|
+
/** Callback ao clicar no botão Login */
|
|
10
|
+
onclickButtonLogin?: () => void;
|
|
11
|
+
/** Callback ao clicar no botão Registar */
|
|
12
|
+
onclickButtonRegister?: () => void;
|
|
13
|
+
}
|
|
2
14
|
/**
|
|
3
15
|
* Props do logotipo no NavMenu.
|
|
4
16
|
*/
|
|
@@ -49,11 +61,7 @@ export interface NavMenuActionsProps {
|
|
|
49
61
|
/** Callback ao clicar na ação */
|
|
50
62
|
onclick?: () => void;
|
|
51
63
|
}
|
|
52
|
-
|
|
53
|
-
* Props do componente NavMenu — barra de navegação principal
|
|
54
|
-
* com logo, links, ações (login/registo), language switcher e light switch.
|
|
55
|
-
*/
|
|
56
|
-
export interface NavMenuProps {
|
|
64
|
+
export type IMenuProps = {
|
|
57
65
|
/** Key nav menu */
|
|
58
66
|
menuKey?: string;
|
|
59
67
|
/** Key CSS nav menu */
|
|
@@ -68,12 +76,18 @@ export interface NavMenuProps {
|
|
|
68
76
|
buttonClass?: string;
|
|
69
77
|
/** Configuração do logotipo */
|
|
70
78
|
logo?: NavMenuLogoProps;
|
|
71
|
-
/** Lista de links de navegação */
|
|
72
|
-
links: NavMenuLinksProps[];
|
|
73
79
|
/** Lista de ações (ex: Login, Registar) */
|
|
74
80
|
actions?: NavMenuActionsProps[];
|
|
75
81
|
/** Alinhamento dos links e das ações */
|
|
76
82
|
align?: 'LINK_SEPARATED_ACTIONS' | 'LINK_INTO_ACTIONS';
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Props do componente NavMenu — barra de navegação principal
|
|
86
|
+
* com logo, links, ações (login/registo), language switcher e light switch.
|
|
87
|
+
*/
|
|
88
|
+
export interface SimpleMenuProps extends IMenuProps {
|
|
89
|
+
/** Lista de links de navegação */
|
|
90
|
+
links: NavMenuLinksProps[];
|
|
77
91
|
/** Exibe o interruptor de tema (claro/escuro) */
|
|
78
92
|
isLightSwitch?: boolean;
|
|
79
93
|
/** Exibe o seletor de idioma */
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { HTMLAttributes } from "svelte/elements";
|
|
2
|
+
import type { IMenuProps, NavMenuButtonProps, NavMenuLogoProps, SimpleMenuProps } from "./nav-menu";
|
|
2
3
|
export type ListItemProps = HTMLAttributes<HTMLAnchorElement> & {
|
|
3
4
|
title: string;
|
|
4
5
|
href: string;
|
|
@@ -36,6 +37,18 @@ export type NavigationMenuItemsProps = {
|
|
|
36
37
|
href: string;
|
|
37
38
|
}[];
|
|
38
39
|
};
|
|
39
|
-
export type
|
|
40
|
-
|
|
40
|
+
export type ComplexMenuProps = IMenuProps & {
|
|
41
|
+
menus: (NavigationMenuItemProps | NavigationMenuItemListProps | NavigationMenuItemCardProps | NavigationMenuItemGridProps | NavigationMenuItemsProps)[];
|
|
42
|
+
textClass?: string;
|
|
43
|
+
};
|
|
44
|
+
export type MenuVarientProps = ComplexMenuProps | SimpleMenuProps;
|
|
45
|
+
export type MenuProps = IMenuProps & {
|
|
46
|
+
logo?: NavMenuLogoProps;
|
|
47
|
+
navMenu: MenuVarientProps;
|
|
48
|
+
navMenuButton?: NavMenuButtonProps;
|
|
49
|
+
isBorder?: boolean;
|
|
50
|
+
/** Exibe o interruptor de tema (claro/escuro) */
|
|
51
|
+
isLightSwitch?: boolean;
|
|
52
|
+
/** Exibe o seletor de idioma */
|
|
53
|
+
isLanguageSwitcher?: boolean;
|
|
41
54
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import * as NavigationMenu from "../../../ui/navigation-menu/index.js";
|
|
3
|
+
import type { ComplexMenuProps } from "../data/types";
|
|
4
|
+
import {
|
|
5
|
+
isCard,
|
|
6
|
+
isGrid,
|
|
7
|
+
isList,
|
|
8
|
+
isItems,
|
|
9
|
+
isItem,
|
|
10
|
+
} from "../data/complex-menu-utils";
|
|
11
|
+
import NavigationMenuItemGrid from "./shared/navigation/NavigationMenuItemGrid.svelte";
|
|
12
|
+
import NavigationMenuItemCard from "./shared/navigation/NavigationMenuItemCard.svelte";
|
|
13
|
+
import NavigationMenuItem from "./shared/navigation/NavigationMenuItem.svelte";
|
|
14
|
+
import NavigationMenuItemList from "./shared/navigation/NavigationMenuItemList.svelte";
|
|
15
|
+
import NavigationMenuItems from "./shared/navigation/NavigationMenuItems.svelte";
|
|
16
|
+
|
|
17
|
+
let { menus: links, textClass }: ComplexMenuProps = $props();
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<NavigationMenu.Root viewport={true}>
|
|
21
|
+
<NavigationMenu.List class="flex-wrap {textClass}">
|
|
22
|
+
{#each links as link, i (i)}
|
|
23
|
+
{#if isCard(link)}
|
|
24
|
+
<NavigationMenuItemCard {...link} />
|
|
25
|
+
{:else if isGrid(link)}
|
|
26
|
+
<NavigationMenuItemGrid {...link} />
|
|
27
|
+
{:else if isList(link)}
|
|
28
|
+
<NavigationMenuItemList {...link} />
|
|
29
|
+
{:else if isItems(link)}
|
|
30
|
+
<NavigationMenuItems {...link} />
|
|
31
|
+
{:else if isItem(link)}
|
|
32
|
+
<NavigationMenuItem {...link} />
|
|
33
|
+
{/if}
|
|
34
|
+
{/each}
|
|
35
|
+
</NavigationMenu.List>
|
|
36
|
+
</NavigationMenu.Root>
|
|
@@ -1,66 +1,70 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
} from "
|
|
12
|
-
import
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
{
|
|
60
|
-
|
|
61
|
-
{
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
{
|
|
65
|
-
|
|
66
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { LanguageSwitcher } from "../../../ui/language-switcher";
|
|
3
|
+
import { LightSwitch } from "../../../ui/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 = $props();
|
|
22
|
+
|
|
23
|
+
function isLinks(item: MenuVarientProps): item is SimpleMenuProps {
|
|
24
|
+
return "links" in item;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function isMenu(item: MenuVarientProps): item is ComplexMenuProps {
|
|
28
|
+
return "menus" in item;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const responsive = useDevice();
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
{#snippet actionButtons()}
|
|
35
|
+
<div class="flex items-center gap-2">
|
|
36
|
+
{#if isLightSwitch}
|
|
37
|
+
<LightSwitch />
|
|
38
|
+
{/if}
|
|
39
|
+
{#if isLanguageSwitcher}
|
|
40
|
+
<LanguageSwitcher />
|
|
41
|
+
{/if}
|
|
42
|
+
{#if navMenuButton}
|
|
43
|
+
<MenuButton {...navMenuButton} />
|
|
44
|
+
{/if}
|
|
45
|
+
</div>
|
|
46
|
+
{/snippet}
|
|
47
|
+
|
|
48
|
+
<nav
|
|
49
|
+
class="flex items-center justify-between p-2 md:p-5 {isBorder
|
|
50
|
+
? 'border-b-2'
|
|
51
|
+
: ''}"
|
|
52
|
+
>
|
|
53
|
+
{#if logo}
|
|
54
|
+
<MenuLogo {...logo} />
|
|
55
|
+
{/if}
|
|
56
|
+
|
|
57
|
+
{#if responsive.isMobile}
|
|
58
|
+
{#if isLinks(navMenu)}
|
|
59
|
+
<SimpleMenuMobile {...navMenu} />
|
|
60
|
+
{:else if isMenu(navMenu)}
|
|
61
|
+
<ComplexMenuMobile {...navMenu} />
|
|
62
|
+
{/if}
|
|
63
|
+
{:else if isLinks(navMenu)}
|
|
64
|
+
<SimpleMenu {...navMenu} />
|
|
65
|
+
{@render actionButtons()}
|
|
66
|
+
{:else if isMenu(navMenu)}
|
|
67
|
+
<ComplexMenu {...navMenu} />
|
|
68
|
+
{@render actionButtons()}
|
|
69
|
+
{/if}
|
|
70
|
+
</nav>
|
|
@@ -0,0 +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">
|
|
10
|
+
<MenuLinks {...restProps} orientation="vertical" />
|
|
11
|
+
</div>
|
|
12
|
+
{:else}
|
|
13
|
+
<MenuLinks {...restProps} orientation="horizontal" />
|
|
14
|
+
{/if}
|