negodesign 0.0.59 → 0.0.60
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/carousel/badge/ui/CarouselBadge.svelte +109 -109
- package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte +38 -38
- package/dist/components/core/carousel/hero/ui/CarouselHero.svelte +163 -163
- package/dist/components/core/carousel/shared/ui/CarouselHeader.svelte +60 -60
- 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/ui/01/Grid01.svelte +28 -28
- package/dist/components/core/grid/ui/02/Grid02.svelte +28 -28
- package/dist/components/core/grid/ui/PanelGrid.svelte +27 -27
- package/dist/components/core/grid/ui/SimpleGrid.svelte +35 -35
- package/dist/components/core/grid/ui/shared/DescriptionGrid.svelte +23 -23
- package/dist/components/core/grid/ui/shared/IconRenderGrid.svelte +21 -21
- package/dist/components/core/grid/ui/shared/TitleGrid.svelte +19 -19
- 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/ui/ComplexMenu.svelte +36 -36
- package/dist/components/core/nav/ui/Menu.svelte +70 -70
- package/dist/components/core/nav/ui/SimpleMenu.svelte +14 -14
- package/dist/components/core/nav/ui/mobile/MenuMobile.svelte +54 -54
- package/dist/components/core/nav/ui/shared/MenuButton.svelte +51 -51
- 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/MenuLogo.svelte +13 -13
- package/dist/components/core/nav/ui/shared/navigation/NavigationMenuItem.svelte +15 -15
- package/dist/components/core/nav/ui/shared/navigation/NavigationMenuItemCard.svelte +62 -62
- package/dist/components/core/nav/ui/shared/navigation/NavigationMenuItemGrid.svelte +32 -32
- package/dist/components/core/nav/ui/shared/navigation/NavigationMenuItemList.svelte +24 -24
- package/dist/components/core/nav/ui/shared/navigation/NavigationMenuItems.svelte +21 -21
- 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/ui/navbar/NavMenuBarSidebar.svelte +97 -97
- package/dist/components/core/sidebar/ui/navbar/NavMenuBottomSidebar.svelte +33 -33
- package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte +103 -103
- 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/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/styles/globals.css +149 -149
- package/package.json +113 -113
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { InputLabelProps } from "../data/InputLabel.svelte";
|
|
3
|
-
import InputBase from "./input-base.svelte";
|
|
4
|
-
import { t } from "../../../../i18n";
|
|
5
|
-
|
|
6
|
-
/** Username input field with icon and label. */
|
|
7
|
-
let {
|
|
8
|
-
label,
|
|
9
|
-
placeholder,
|
|
10
|
-
value = $bindable(""),
|
|
11
|
-
...restProps
|
|
12
|
-
}: InputLabelProps = $props();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
<InputBase
|
|
16
|
-
label={label || $t("input.username.label")}
|
|
17
|
-
placeholder={placeholder || $t("input.username.placeholder")}
|
|
18
|
-
isLabel
|
|
19
|
-
isIcon
|
|
20
|
-
bind:value
|
|
21
|
-
{...restProps}
|
|
22
|
-
/>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { InputLabelProps } from "../data/InputLabel.svelte";
|
|
3
|
+
import InputBase from "./input-base.svelte";
|
|
4
|
+
import { t } from "../../../../i18n";
|
|
5
|
+
|
|
6
|
+
/** Username input field with icon and label. */
|
|
7
|
+
let {
|
|
8
|
+
label,
|
|
9
|
+
placeholder,
|
|
10
|
+
value = $bindable(""),
|
|
11
|
+
...restProps
|
|
12
|
+
}: InputLabelProps = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<InputBase
|
|
16
|
+
label={label || $t("input.username.label")}
|
|
17
|
+
placeholder={placeholder || $t("input.username.placeholder")}
|
|
18
|
+
isLabel
|
|
19
|
+
isIcon
|
|
20
|
+
bind:value
|
|
21
|
+
{...restProps}
|
|
22
|
+
/>
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { ItemGridProps } from "../../data/types";
|
|
3
|
-
import DescriptionGrid from "../shared/DescriptionGrid.svelte";
|
|
4
|
-
import IconRenderGrid from "../shared/IconRenderGrid.svelte";
|
|
5
|
-
import TitleGrid from "../shared/TitleGrid.svelte";
|
|
6
|
-
|
|
7
|
-
let {
|
|
8
|
-
id,
|
|
9
|
-
icon,
|
|
10
|
-
title,
|
|
11
|
-
isLoading,
|
|
12
|
-
titleClass,
|
|
13
|
-
description,
|
|
14
|
-
descriptionClass,
|
|
15
|
-
onClick,
|
|
16
|
-
}: ItemGridProps = $props();
|
|
17
|
-
</script>
|
|
18
|
-
|
|
19
|
-
<button
|
|
20
|
-
onclick={() => {
|
|
21
|
-
if (id && onClick) onClick(id);
|
|
22
|
-
}}
|
|
23
|
-
class="flex flex-col justify-center items-center gap-2"
|
|
24
|
-
>
|
|
25
|
-
<IconRenderGrid {icon} {isLoading} />
|
|
26
|
-
<TitleGrid {titleClass} {title} {isLoading} />
|
|
27
|
-
<DescriptionGrid {descriptionClass} {description} {isLoading} />
|
|
28
|
-
</button>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ItemGridProps } from "../../data/types";
|
|
3
|
+
import DescriptionGrid from "../shared/DescriptionGrid.svelte";
|
|
4
|
+
import IconRenderGrid from "../shared/IconRenderGrid.svelte";
|
|
5
|
+
import TitleGrid from "../shared/TitleGrid.svelte";
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
id,
|
|
9
|
+
icon,
|
|
10
|
+
title,
|
|
11
|
+
isLoading,
|
|
12
|
+
titleClass,
|
|
13
|
+
description,
|
|
14
|
+
descriptionClass,
|
|
15
|
+
onClick,
|
|
16
|
+
}: ItemGridProps = $props();
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<button
|
|
20
|
+
onclick={() => {
|
|
21
|
+
if (id && onClick) onClick(id);
|
|
22
|
+
}}
|
|
23
|
+
class="flex flex-col justify-center items-center gap-2"
|
|
24
|
+
>
|
|
25
|
+
<IconRenderGrid {icon} {isLoading} />
|
|
26
|
+
<TitleGrid {titleClass} {title} {isLoading} />
|
|
27
|
+
<DescriptionGrid {descriptionClass} {description} {isLoading} />
|
|
28
|
+
</button>
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import type { ItemGridProps } from "../../data/types";
|
|
3
|
-
import DescriptionGrid from "../shared/DescriptionGrid.svelte";
|
|
4
|
-
import IconRenderGrid from "../shared/IconRenderGrid.svelte";
|
|
5
|
-
import TitleGrid from "../shared/TitleGrid.svelte";
|
|
6
|
-
|
|
7
|
-
let {
|
|
8
|
-
id,
|
|
9
|
-
icon,
|
|
10
|
-
title,
|
|
11
|
-
isLoading,
|
|
12
|
-
description,
|
|
13
|
-
titleClass,
|
|
14
|
-
descriptionClass,
|
|
15
|
-
onClick,
|
|
16
|
-
}: ItemGridProps = $props();
|
|
17
|
-
</script>
|
|
18
|
-
|
|
19
|
-
<button
|
|
20
|
-
onclick={() => {
|
|
21
|
-
if (id && onClick) onClick(id);
|
|
22
|
-
}}
|
|
23
|
-
class="flex flex-col justify-center items-center gap-2 border rounded-lg p-2 cursor-pointer"
|
|
24
|
-
>
|
|
25
|
-
<IconRenderGrid {icon} {isLoading} />
|
|
26
|
-
<TitleGrid {titleClass} {title} {isLoading} />
|
|
27
|
-
<DescriptionGrid {descriptionClass} {description} {isLoading} />
|
|
28
|
-
</button>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { ItemGridProps } from "../../data/types";
|
|
3
|
+
import DescriptionGrid from "../shared/DescriptionGrid.svelte";
|
|
4
|
+
import IconRenderGrid from "../shared/IconRenderGrid.svelte";
|
|
5
|
+
import TitleGrid from "../shared/TitleGrid.svelte";
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
id,
|
|
9
|
+
icon,
|
|
10
|
+
title,
|
|
11
|
+
isLoading,
|
|
12
|
+
description,
|
|
13
|
+
titleClass,
|
|
14
|
+
descriptionClass,
|
|
15
|
+
onClick,
|
|
16
|
+
}: ItemGridProps = $props();
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<button
|
|
20
|
+
onclick={() => {
|
|
21
|
+
if (id && onClick) onClick(id);
|
|
22
|
+
}}
|
|
23
|
+
class="flex flex-col justify-center items-center gap-2 border rounded-lg p-2 cursor-pointer"
|
|
24
|
+
>
|
|
25
|
+
<IconRenderGrid {icon} {isLoading} />
|
|
26
|
+
<TitleGrid {titleClass} {title} {isLoading} />
|
|
27
|
+
<DescriptionGrid {descriptionClass} {description} {isLoading} />
|
|
28
|
+
</button>
|
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { useDevice } from "../../../../hooks/responsive.svelte";
|
|
3
|
-
import type { GridProps } from "../data/types";
|
|
4
|
-
import Grid02 from "./02/Grid02.svelte";
|
|
5
|
-
import Grid01 from "./01/Grid01.svelte";
|
|
6
|
-
|
|
7
|
-
let { variant, className, isLoading, items, onClick }: GridProps = $props();
|
|
8
|
-
|
|
9
|
-
const styleMobile = "flex justify-between overflow-x-auto no-scrollbar";
|
|
10
|
-
|
|
11
|
-
const responsive = useDevice();
|
|
12
|
-
</script>
|
|
13
|
-
|
|
14
|
-
<div
|
|
15
|
-
class="gap-4 my-2 {responsive.isMobile
|
|
16
|
-
? styleMobile
|
|
17
|
-
: 'grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 max-h-237.5 overflow-y-auto'}
|
|
18
|
-
{className}"
|
|
19
|
-
>
|
|
20
|
-
{#each items as item, i (i)}
|
|
21
|
-
{#if variant == 2}
|
|
22
|
-
<Grid02 {...item} {onClick} {isLoading} />
|
|
23
|
-
{:else}
|
|
24
|
-
<Grid01 {...item} {onClick} {isLoading} />
|
|
25
|
-
{/if}
|
|
26
|
-
{/each}
|
|
27
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { useDevice } from "../../../../hooks/responsive.svelte";
|
|
3
|
+
import type { GridProps } from "../data/types";
|
|
4
|
+
import Grid02 from "./02/Grid02.svelte";
|
|
5
|
+
import Grid01 from "./01/Grid01.svelte";
|
|
6
|
+
|
|
7
|
+
let { variant, className, isLoading, items, onClick }: GridProps = $props();
|
|
8
|
+
|
|
9
|
+
const styleMobile = "flex justify-between overflow-x-auto no-scrollbar";
|
|
10
|
+
|
|
11
|
+
const responsive = useDevice();
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<div
|
|
15
|
+
class="gap-4 my-2 {responsive.isMobile
|
|
16
|
+
? styleMobile
|
|
17
|
+
: 'grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 max-h-237.5 overflow-y-auto'}
|
|
18
|
+
{className}"
|
|
19
|
+
>
|
|
20
|
+
{#each items as item, i (i)}
|
|
21
|
+
{#if variant == 2}
|
|
22
|
+
<Grid02 {...item} {onClick} {isLoading} />
|
|
23
|
+
{:else}
|
|
24
|
+
<Grid01 {...item} {onClick} {isLoading} />
|
|
25
|
+
{/if}
|
|
26
|
+
{/each}
|
|
27
|
+
</div>
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { useDevice } from "../../../../hooks/responsive.svelte";
|
|
3
|
-
import type { GridProps } from "../data/types";
|
|
4
|
-
import Grid02 from "./02/Grid02.svelte";
|
|
5
|
-
import Grid01 from "./01/Grid01.svelte";
|
|
6
|
-
|
|
7
|
-
let { variant, className, isLoading, items }: GridProps = $props();
|
|
8
|
-
|
|
9
|
-
const styleMobile = "flex justify-between overflow-x-auto no-scrollbar";
|
|
10
|
-
|
|
11
|
-
const cols = (): string => {
|
|
12
|
-
const len = items?.length ?? 0;
|
|
13
|
-
if (len <= 3) return "grid grid-cols-3";
|
|
14
|
-
if (len <= 4) return "grid grid-cols-4";
|
|
15
|
-
if (len <= 5) return "grid grid-cols-5";
|
|
16
|
-
if (len <= 6) return "grid grid-cols-6";
|
|
17
|
-
if (len <= 7) return "grid grid-cols-7";
|
|
18
|
-
if (len > 7) return styleMobile;
|
|
19
|
-
return "grid grid-cols-1";
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
const responsive = useDevice();
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
|
-
<div
|
|
26
|
-
class="{responsive.isMobile ? styleMobile : cols()} gap-4 my-2 {className}"
|
|
27
|
-
>
|
|
28
|
-
{#each items as item, i (i)}
|
|
29
|
-
{#if variant == 2}
|
|
30
|
-
<Grid02 {...item} {isLoading} />
|
|
31
|
-
{:else}
|
|
32
|
-
<Grid01 {...item} {isLoading} />
|
|
33
|
-
{/if}
|
|
34
|
-
{/each}
|
|
35
|
-
</div>
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { useDevice } from "../../../../hooks/responsive.svelte";
|
|
3
|
+
import type { GridProps } from "../data/types";
|
|
4
|
+
import Grid02 from "./02/Grid02.svelte";
|
|
5
|
+
import Grid01 from "./01/Grid01.svelte";
|
|
6
|
+
|
|
7
|
+
let { variant, className, isLoading, items }: GridProps = $props();
|
|
8
|
+
|
|
9
|
+
const styleMobile = "flex justify-between overflow-x-auto no-scrollbar";
|
|
10
|
+
|
|
11
|
+
const cols = (): string => {
|
|
12
|
+
const len = items?.length ?? 0;
|
|
13
|
+
if (len <= 3) return "grid grid-cols-3";
|
|
14
|
+
if (len <= 4) return "grid grid-cols-4";
|
|
15
|
+
if (len <= 5) return "grid grid-cols-5";
|
|
16
|
+
if (len <= 6) return "grid grid-cols-6";
|
|
17
|
+
if (len <= 7) return "grid grid-cols-7";
|
|
18
|
+
if (len > 7) return styleMobile;
|
|
19
|
+
return "grid grid-cols-1";
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const responsive = useDevice();
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<div
|
|
26
|
+
class="{responsive.isMobile ? styleMobile : cols()} gap-4 my-2 {className}"
|
|
27
|
+
>
|
|
28
|
+
{#each items as item, i (i)}
|
|
29
|
+
{#if variant == 2}
|
|
30
|
+
<Grid02 {...item} {isLoading} />
|
|
31
|
+
{:else}
|
|
32
|
+
<Grid01 {...item} {isLoading} />
|
|
33
|
+
{/if}
|
|
34
|
+
{/each}
|
|
35
|
+
</div>
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Skeleton from "../../../../ui/skeleton/skeleton.svelte";
|
|
3
|
-
|
|
4
|
-
let {
|
|
5
|
-
isLoading,
|
|
6
|
-
description,
|
|
7
|
-
descriptionClass,
|
|
8
|
-
}: {
|
|
9
|
-
isLoading?: boolean;
|
|
10
|
-
description?: string;
|
|
11
|
-
descriptionClass?: string;
|
|
12
|
-
} = $props();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
{#if isLoading}
|
|
16
|
-
<Skeleton class="w-full h-2.5 bg-gray-500/95" />
|
|
17
|
-
{:else if description}
|
|
18
|
-
<p
|
|
19
|
-
class="{descriptionClass} text-center min-w-48 md:w-52 lg:w-56 text-muted-foreground line-clamp-2 md:line-clamp-3"
|
|
20
|
-
>
|
|
21
|
-
{description}
|
|
22
|
-
</p>
|
|
23
|
-
{/if}
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Skeleton from "../../../../ui/skeleton/skeleton.svelte";
|
|
3
|
+
|
|
4
|
+
let {
|
|
5
|
+
isLoading,
|
|
6
|
+
description,
|
|
7
|
+
descriptionClass,
|
|
8
|
+
}: {
|
|
9
|
+
isLoading?: boolean;
|
|
10
|
+
description?: string;
|
|
11
|
+
descriptionClass?: string;
|
|
12
|
+
} = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
{#if isLoading}
|
|
16
|
+
<Skeleton class="w-full h-2.5 bg-gray-500/95" />
|
|
17
|
+
{:else if description}
|
|
18
|
+
<p
|
|
19
|
+
class="{descriptionClass} text-center min-w-48 md:w-52 lg:w-56 text-muted-foreground line-clamp-2 md:line-clamp-3"
|
|
20
|
+
>
|
|
21
|
+
{description}
|
|
22
|
+
</p>
|
|
23
|
+
{/if}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import Skeleton from "../../../../ui/skeleton/skeleton.svelte";
|
|
3
|
-
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
4
|
-
import type { IconSvgElement } from "@hugeicons/svelte";
|
|
5
|
-
|
|
6
|
-
let {
|
|
7
|
-
icon,
|
|
8
|
-
isLoading,
|
|
9
|
-
}: {
|
|
10
|
-
icon: string | IconSvgElement;
|
|
11
|
-
isLoading?: boolean;
|
|
12
|
-
} = $props();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
{#if isLoading}
|
|
16
|
-
<Skeleton class="min-w-17.5 md:min-w-25 h-2.5 bg-gray-400" />
|
|
17
|
-
{:else if typeof icon === "string"}
|
|
18
|
-
<i class="{icon} text-4xl md:text-6xl"></i>
|
|
19
|
-
{:else}
|
|
20
|
-
<HugeiconsIcon {icon} class="size-8 md:size-10" />
|
|
21
|
-
{/if}
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Skeleton from "../../../../ui/skeleton/skeleton.svelte";
|
|
3
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
4
|
+
import type { IconSvgElement } from "@hugeicons/svelte";
|
|
5
|
+
|
|
6
|
+
let {
|
|
7
|
+
icon,
|
|
8
|
+
isLoading,
|
|
9
|
+
}: {
|
|
10
|
+
icon: string | IconSvgElement;
|
|
11
|
+
isLoading?: boolean;
|
|
12
|
+
} = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
{#if isLoading}
|
|
16
|
+
<Skeleton class="min-w-17.5 md:min-w-25 h-2.5 bg-gray-400" />
|
|
17
|
+
{:else if typeof icon === "string"}
|
|
18
|
+
<i class="{icon} text-4xl md:text-6xl"></i>
|
|
19
|
+
{:else}
|
|
20
|
+
<HugeiconsIcon {icon} class="size-8 md:size-10" />
|
|
21
|
+
{/if}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
<script lang="ts">
|
|
2
|
-
import { Skeleton } from "../../../../ui/skeleton";
|
|
3
|
-
|
|
4
|
-
let {
|
|
5
|
-
isLoading,
|
|
6
|
-
title,
|
|
7
|
-
titleClass,
|
|
8
|
-
}: {
|
|
9
|
-
isLoading?: boolean;
|
|
10
|
-
title?: string;
|
|
11
|
-
titleClass?: string;
|
|
12
|
-
} = $props();
|
|
13
|
-
</script>
|
|
14
|
-
|
|
15
|
-
{#if isLoading}
|
|
16
|
-
<Skeleton class="w-full h-12.5 bg-gray-500/95" />
|
|
17
|
-
{:else}
|
|
18
|
-
<p class={titleClass}>{title}</p>
|
|
19
|
-
{/if}
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Skeleton } from "../../../../ui/skeleton";
|
|
3
|
+
|
|
4
|
+
let {
|
|
5
|
+
isLoading,
|
|
6
|
+
title,
|
|
7
|
+
titleClass,
|
|
8
|
+
}: {
|
|
9
|
+
isLoading?: boolean;
|
|
10
|
+
title?: string;
|
|
11
|
+
titleClass?: string;
|
|
12
|
+
} = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
{#if isLoading}
|
|
16
|
+
<Skeleton class="w-full h-12.5 bg-gray-500/95" />
|
|
17
|
+
{:else}
|
|
18
|
+
<p class={titleClass}>{title}</p>
|
|
19
|
+
{/if}
|
|
@@ -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>
|