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,83 +1,83 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
/**
|
|
3
|
-
* Lista de moradas do utilizador com opção de adicionar e badge para default.
|
|
4
|
-
* Extraído da variante 1. Todos os textos são parametrizáveis com defaults via i18n.
|
|
5
|
-
* @component
|
|
6
|
-
*/
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<script lang="ts">
|
|
10
|
-
import { MapPin, PlusSignIcon } from "@hugeicons/core-free-icons";
|
|
11
|
-
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
12
|
-
import Badge from "../../../ui/badge/badge.svelte";
|
|
13
|
-
import Button from "../../../ui/button/button.svelte";
|
|
14
|
-
import Skeleton from "../../../ui/skeleton/skeleton.svelte";
|
|
15
|
-
import { cn } from "../../../../utils.js";
|
|
16
|
-
import { t } from "../../../../i18n";
|
|
17
|
-
import type { ProfileUserAddress, ProfileUserAddressProps } from "../types";
|
|
18
|
-
|
|
19
|
-
let {
|
|
20
|
-
addresses,
|
|
21
|
-
isLoading = false,
|
|
22
|
-
onAddAddress,
|
|
23
|
-
className,
|
|
24
|
-
title = $t("profile-user.variant1.addresses.title"),
|
|
25
|
-
addLabel = $t("profile-user.variant1.addresses.add"),
|
|
26
|
-
defaultBadge = $t("profile-user.variant1.addresses.defaultBadge"),
|
|
27
|
-
emptyText = $t("profile-user.variant1.addresses.empty"),
|
|
28
|
-
}: ProfileUserAddressProps & {
|
|
29
|
-
addresses?: ProfileUserAddress[];
|
|
30
|
-
isLoading?: boolean;
|
|
31
|
-
} = $props();
|
|
32
|
-
</script>
|
|
33
|
-
|
|
34
|
-
<section
|
|
35
|
-
class={cn("rounded-lg border bg-card p-6", className)}
|
|
36
|
-
data-slot="profile-user-address"
|
|
37
|
-
>
|
|
38
|
-
<div class="mb-6 flex items-center justify-between">
|
|
39
|
-
<h3 class="text-lg font-semibold">{title}</h3>
|
|
40
|
-
<Button variant="ghost" size="sm" onclick={onAddAddress}>
|
|
41
|
-
<HugeiconsIcon icon={PlusSignIcon} class="size-4" />
|
|
42
|
-
{addLabel}
|
|
43
|
-
</Button>
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
{#if isLoading}
|
|
47
|
-
<div class="grid gap-4 md:grid-cols-2">
|
|
48
|
-
{#each Array.from({ length: 2 }) as _, i (i)}
|
|
49
|
-
<Skeleton class="h-32 w-full rounded-md" />
|
|
50
|
-
{/each}
|
|
51
|
-
</div>
|
|
52
|
-
{:else if addresses && addresses.length > 0}
|
|
53
|
-
<div class="grid gap-4 md:grid-cols-2">
|
|
54
|
-
{#each addresses as address (address.id)}
|
|
55
|
-
<div
|
|
56
|
-
class={cn(
|
|
57
|
-
"rounded-md border p-4 transition-colors",
|
|
58
|
-
address.isDefault ? "border-primary bg-primary/5" : ""
|
|
59
|
-
)}
|
|
60
|
-
>
|
|
61
|
-
<div class="mb-2 flex items-center justify-between">
|
|
62
|
-
<span class="font-medium">{address.label}</span>
|
|
63
|
-
{#if address.isDefault}
|
|
64
|
-
<Badge>{defaultBadge}</Badge>
|
|
65
|
-
{/if}
|
|
66
|
-
</div>
|
|
67
|
-
<div class="flex flex-col gap-1 text-sm text-muted-foreground">
|
|
68
|
-
<p class="flex items-start gap-1.5">
|
|
69
|
-
<HugeiconsIcon icon={MapPin} class="mt-0.5 size-4 shrink-0" />
|
|
70
|
-
{address.street}
|
|
71
|
-
{#if address.apartment}, {address.apartment}{/if}
|
|
72
|
-
</p>
|
|
73
|
-
{#if address.state || address.zip}
|
|
74
|
-
<p class="pl-5.5">{address.state ?? ""} {address.zip ?? ""}</p>
|
|
75
|
-
{/if}
|
|
76
|
-
</div>
|
|
77
|
-
</div>
|
|
78
|
-
{/each}
|
|
79
|
-
</div>
|
|
80
|
-
{:else}
|
|
81
|
-
<p class="text-sm text-muted-foreground">{emptyText}</p>
|
|
82
|
-
{/if}
|
|
83
|
-
</section>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* Lista de moradas do utilizador com opção de adicionar e badge para default.
|
|
4
|
+
* Extraído da variante 1. Todos os textos são parametrizáveis com defaults via i18n.
|
|
5
|
+
* @component
|
|
6
|
+
*/
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<script lang="ts">
|
|
10
|
+
import { MapPin, PlusSignIcon } from "@hugeicons/core-free-icons";
|
|
11
|
+
import { HugeiconsIcon } from "@hugeicons/svelte";
|
|
12
|
+
import Badge from "../../../ui/badge/badge.svelte";
|
|
13
|
+
import Button from "../../../ui/button/button.svelte";
|
|
14
|
+
import Skeleton from "../../../ui/skeleton/skeleton.svelte";
|
|
15
|
+
import { cn } from "../../../../utils.js";
|
|
16
|
+
import { t } from "../../../../i18n";
|
|
17
|
+
import type { ProfileUserAddress, ProfileUserAddressProps } from "../types";
|
|
18
|
+
|
|
19
|
+
let {
|
|
20
|
+
addresses,
|
|
21
|
+
isLoading = false,
|
|
22
|
+
onAddAddress,
|
|
23
|
+
className,
|
|
24
|
+
title = $t("profile-user.variant1.addresses.title"),
|
|
25
|
+
addLabel = $t("profile-user.variant1.addresses.add"),
|
|
26
|
+
defaultBadge = $t("profile-user.variant1.addresses.defaultBadge"),
|
|
27
|
+
emptyText = $t("profile-user.variant1.addresses.empty"),
|
|
28
|
+
}: ProfileUserAddressProps & {
|
|
29
|
+
addresses?: ProfileUserAddress[];
|
|
30
|
+
isLoading?: boolean;
|
|
31
|
+
} = $props();
|
|
32
|
+
</script>
|
|
33
|
+
|
|
34
|
+
<section
|
|
35
|
+
class={cn("rounded-lg border bg-card p-6", className)}
|
|
36
|
+
data-slot="profile-user-address"
|
|
37
|
+
>
|
|
38
|
+
<div class="mb-6 flex items-center justify-between">
|
|
39
|
+
<h3 class="text-lg font-semibold">{title}</h3>
|
|
40
|
+
<Button variant="ghost" size="sm" onclick={onAddAddress}>
|
|
41
|
+
<HugeiconsIcon icon={PlusSignIcon} class="size-4" />
|
|
42
|
+
{addLabel}
|
|
43
|
+
</Button>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
{#if isLoading}
|
|
47
|
+
<div class="grid gap-4 md:grid-cols-2">
|
|
48
|
+
{#each Array.from({ length: 2 }) as _, i (i)}
|
|
49
|
+
<Skeleton class="h-32 w-full rounded-md" />
|
|
50
|
+
{/each}
|
|
51
|
+
</div>
|
|
52
|
+
{:else if addresses && addresses.length > 0}
|
|
53
|
+
<div class="grid gap-4 md:grid-cols-2">
|
|
54
|
+
{#each addresses as address (address.id)}
|
|
55
|
+
<div
|
|
56
|
+
class={cn(
|
|
57
|
+
"rounded-md border p-4 transition-colors",
|
|
58
|
+
address.isDefault ? "border-primary bg-primary/5" : ""
|
|
59
|
+
)}
|
|
60
|
+
>
|
|
61
|
+
<div class="mb-2 flex items-center justify-between">
|
|
62
|
+
<span class="font-medium">{address.label}</span>
|
|
63
|
+
{#if address.isDefault}
|
|
64
|
+
<Badge>{defaultBadge}</Badge>
|
|
65
|
+
{/if}
|
|
66
|
+
</div>
|
|
67
|
+
<div class="flex flex-col gap-1 text-sm text-muted-foreground">
|
|
68
|
+
<p class="flex items-start gap-1.5">
|
|
69
|
+
<HugeiconsIcon icon={MapPin} class="mt-0.5 size-4 shrink-0" />
|
|
70
|
+
{address.street}
|
|
71
|
+
{#if address.apartment}, {address.apartment}{/if}
|
|
72
|
+
</p>
|
|
73
|
+
{#if address.state || address.zip}
|
|
74
|
+
<p class="pl-5.5">{address.state ?? ""} {address.zip ?? ""}</p>
|
|
75
|
+
{/if}
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
{/each}
|
|
79
|
+
</div>
|
|
80
|
+
{:else}
|
|
81
|
+
<p class="text-sm text-muted-foreground">{emptyText}</p>
|
|
82
|
+
{/if}
|
|
83
|
+
</section>
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
/**
|
|
3
|
-
* Barra de tabs reutilizável para as variantes de perfil.
|
|
4
|
-
* Suporta loading state, tabs customizadas, active tab controlável
|
|
5
|
-
* e estilos variantes (underline vs pill).
|
|
6
|
-
* @component
|
|
7
|
-
*/
|
|
8
|
-
export type ProfileUserTabItem = { id: string; label: string };
|
|
9
|
-
export type ProfileUserTabsStyle = "underline" | "pill";
|
|
10
|
-
</script>
|
|
11
|
-
|
|
12
|
-
<script lang="ts">
|
|
13
|
-
import Skeleton from "../../../ui/skeleton/skeleton.svelte";
|
|
14
|
-
import { cn } from "../../../../utils.js";
|
|
15
|
-
|
|
16
|
-
let {
|
|
17
|
-
tabs,
|
|
18
|
-
activeTab = $bindable(),
|
|
19
|
-
style = "underline",
|
|
20
|
-
isLoading = false,
|
|
21
|
-
className,
|
|
22
|
-
onchange,
|
|
23
|
-
}: {
|
|
24
|
-
tabs: ProfileUserTabItem[];
|
|
25
|
-
activeTab?: string;
|
|
26
|
-
style?: ProfileUserTabsStyle;
|
|
27
|
-
isLoading?: boolean;
|
|
28
|
-
className?: string;
|
|
29
|
-
onchange?: (id: string) => void;
|
|
30
|
-
} = $props();
|
|
31
|
-
|
|
32
|
-
const currentTab = $derived(activeTab ?? tabs[0]?.id ?? "");
|
|
33
|
-
|
|
34
|
-
const handleSelect = (id: string) => {
|
|
35
|
-
activeTab = id;
|
|
36
|
-
onchange?.(id);
|
|
37
|
-
};
|
|
38
|
-
</script>
|
|
39
|
-
|
|
40
|
-
<div
|
|
41
|
-
class={cn(
|
|
42
|
-
"mb-6 flex gap-1 border-b overflow-x-auto",
|
|
43
|
-
style === "pill"
|
|
44
|
-
? "-mt-12 mb-6 rounded-t-lg border border-t bg-background px-2 py-1 shadow-sm border-b"
|
|
45
|
-
: "",
|
|
46
|
-
className
|
|
47
|
-
)}
|
|
48
|
-
data-slot="profile-user-tabs"
|
|
49
|
-
>
|
|
50
|
-
{#if isLoading}
|
|
51
|
-
{#each tabs as tab (tab.id)}
|
|
52
|
-
<Skeleton class="h-9 w-32 shrink-0 rounded-t-md" />
|
|
53
|
-
{/each}
|
|
54
|
-
{:else}
|
|
55
|
-
{#each tabs as tab (tab.id)}
|
|
56
|
-
<button
|
|
57
|
-
type="button"
|
|
58
|
-
onclick={() => handleSelect(tab.id)}
|
|
59
|
-
class={cn(
|
|
60
|
-
"shrink-0 px-4 py-2 text-sm font-medium transition-colors whitespace-nowrap",
|
|
61
|
-
style === "underline"
|
|
62
|
-
? cn(
|
|
63
|
-
"border-b-2",
|
|
64
|
-
currentTab === tab.id
|
|
65
|
-
? "border-foreground text-foreground"
|
|
66
|
-
: "border-transparent text-muted-foreground hover:text-foreground"
|
|
67
|
-
)
|
|
68
|
-
: cn(
|
|
69
|
-
"rounded-md",
|
|
70
|
-
currentTab === tab.id
|
|
71
|
-
? "bg-primary/10 text-primary"
|
|
72
|
-
: "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
73
|
-
)
|
|
74
|
-
)}
|
|
75
|
-
>
|
|
76
|
-
{tab.label}
|
|
77
|
-
</button>
|
|
78
|
-
{/each}
|
|
79
|
-
{/if}
|
|
80
|
-
</div>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* Barra de tabs reutilizável para as variantes de perfil.
|
|
4
|
+
* Suporta loading state, tabs customizadas, active tab controlável
|
|
5
|
+
* e estilos variantes (underline vs pill).
|
|
6
|
+
* @component
|
|
7
|
+
*/
|
|
8
|
+
export type ProfileUserTabItem = { id: string; label: string };
|
|
9
|
+
export type ProfileUserTabsStyle = "underline" | "pill";
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<script lang="ts">
|
|
13
|
+
import Skeleton from "../../../ui/skeleton/skeleton.svelte";
|
|
14
|
+
import { cn } from "../../../../utils.js";
|
|
15
|
+
|
|
16
|
+
let {
|
|
17
|
+
tabs,
|
|
18
|
+
activeTab = $bindable(),
|
|
19
|
+
style = "underline",
|
|
20
|
+
isLoading = false,
|
|
21
|
+
className,
|
|
22
|
+
onchange,
|
|
23
|
+
}: {
|
|
24
|
+
tabs: ProfileUserTabItem[];
|
|
25
|
+
activeTab?: string;
|
|
26
|
+
style?: ProfileUserTabsStyle;
|
|
27
|
+
isLoading?: boolean;
|
|
28
|
+
className?: string;
|
|
29
|
+
onchange?: (id: string) => void;
|
|
30
|
+
} = $props();
|
|
31
|
+
|
|
32
|
+
const currentTab = $derived(activeTab ?? tabs[0]?.id ?? "");
|
|
33
|
+
|
|
34
|
+
const handleSelect = (id: string) => {
|
|
35
|
+
activeTab = id;
|
|
36
|
+
onchange?.(id);
|
|
37
|
+
};
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<div
|
|
41
|
+
class={cn(
|
|
42
|
+
"mb-6 flex gap-1 border-b overflow-x-auto",
|
|
43
|
+
style === "pill"
|
|
44
|
+
? "-mt-12 mb-6 rounded-t-lg border border-t bg-background px-2 py-1 shadow-sm border-b"
|
|
45
|
+
: "",
|
|
46
|
+
className
|
|
47
|
+
)}
|
|
48
|
+
data-slot="profile-user-tabs"
|
|
49
|
+
>
|
|
50
|
+
{#if isLoading}
|
|
51
|
+
{#each tabs as tab (tab.id)}
|
|
52
|
+
<Skeleton class="h-9 w-32 shrink-0 rounded-t-md" />
|
|
53
|
+
{/each}
|
|
54
|
+
{:else}
|
|
55
|
+
{#each tabs as tab (tab.id)}
|
|
56
|
+
<button
|
|
57
|
+
type="button"
|
|
58
|
+
onclick={() => handleSelect(tab.id)}
|
|
59
|
+
class={cn(
|
|
60
|
+
"shrink-0 px-4 py-2 text-sm font-medium transition-colors whitespace-nowrap",
|
|
61
|
+
style === "underline"
|
|
62
|
+
? cn(
|
|
63
|
+
"border-b-2",
|
|
64
|
+
currentTab === tab.id
|
|
65
|
+
? "border-foreground text-foreground"
|
|
66
|
+
: "border-transparent text-muted-foreground hover:text-foreground"
|
|
67
|
+
)
|
|
68
|
+
: cn(
|
|
69
|
+
"rounded-md",
|
|
70
|
+
currentTab === tab.id
|
|
71
|
+
? "bg-primary/10 text-primary"
|
|
72
|
+
: "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
73
|
+
)
|
|
74
|
+
)}
|
|
75
|
+
>
|
|
76
|
+
{tab.label}
|
|
77
|
+
</button>
|
|
78
|
+
{/each}
|
|
79
|
+
{/if}
|
|
80
|
+
</div>
|
|
@@ -1,62 +1,62 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
/**
|
|
3
|
-
* @component PageAuth01
|
|
4
|
-
* Shared layout for auth pages (login/register) variant 01.
|
|
5
|
-
* Split layout: hero on the left, auth card on the right with grid pattern.
|
|
6
|
-
*/
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<script lang="ts">
|
|
10
|
-
import type { Snippet } from "svelte";
|
|
11
|
-
import LeftHero from "../../../ui/panel/LeftHero.svelte";
|
|
12
|
-
|
|
13
|
-
type CarouselItem = {
|
|
14
|
-
title: string;
|
|
15
|
-
description: string;
|
|
16
|
-
buttonText: string;
|
|
17
|
-
buttonUrl?: string;
|
|
18
|
-
backgroundUrl?: string;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
type Props = {
|
|
22
|
-
title?: string;
|
|
23
|
-
type?: "NUMBER" | "DOT" | "POINTER";
|
|
24
|
-
carousel?: CarouselItem[];
|
|
25
|
-
children?: Snippet;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
let { title, type, carousel = [], children }: Props = $props();
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<main class="h-screen w-screen flex items-center">
|
|
32
|
-
<div class="hidden md:block md:w-7/12 relative">
|
|
33
|
-
<LeftHero {title} type={type ?? "POINTER"} items={carousel} />
|
|
34
|
-
<svg width="0" height="0" class="absolute">
|
|
35
|
-
<defs>
|
|
36
|
-
<clipPath id="grid-curve-clip" clipPathUnits="objectBoundingBox">
|
|
37
|
-
<path d="M0.35,0 L1,0 C0.85,0.3 1,0.6 0.4,1 L1,1 Z" />
|
|
38
|
-
</clipPath>
|
|
39
|
-
</defs>
|
|
40
|
-
</svg>
|
|
41
|
-
</div>
|
|
42
|
-
<div
|
|
43
|
-
class="w-full md:w-5/12 border-gray-900 overflow-y-auto px-10 bg-gradient"
|
|
44
|
-
>
|
|
45
|
-
{#if children}
|
|
46
|
-
{@render children()}
|
|
47
|
-
{/if}
|
|
48
|
-
</div>
|
|
49
|
-
</main>
|
|
50
|
-
|
|
51
|
-
<style>
|
|
52
|
-
:global(.grid-pattern) {
|
|
53
|
-
background-size: 40px 40px;
|
|
54
|
-
background-image: linear-gradient(
|
|
55
|
-
to right,
|
|
56
|
-
rgba(0, 0, 0, 0.1) 1px,
|
|
57
|
-
transparent 1px
|
|
58
|
-
),
|
|
59
|
-
linear-gradient(to bottom, rgba(0, 0, 0, 0.1) 1px, transparent 1px);
|
|
60
|
-
clip-path: url(#grid-curve-clip);
|
|
61
|
-
}
|
|
62
|
-
</style>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* @component PageAuth01
|
|
4
|
+
* Shared layout for auth pages (login/register) variant 01.
|
|
5
|
+
* Split layout: hero on the left, auth card on the right with grid pattern.
|
|
6
|
+
*/
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<script lang="ts">
|
|
10
|
+
import type { Snippet } from "svelte";
|
|
11
|
+
import LeftHero from "../../../ui/panel/LeftHero.svelte";
|
|
12
|
+
|
|
13
|
+
type CarouselItem = {
|
|
14
|
+
title: string;
|
|
15
|
+
description: string;
|
|
16
|
+
buttonText: string;
|
|
17
|
+
buttonUrl?: string;
|
|
18
|
+
backgroundUrl?: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
type Props = {
|
|
22
|
+
title?: string;
|
|
23
|
+
type?: "NUMBER" | "DOT" | "POINTER";
|
|
24
|
+
carousel?: CarouselItem[];
|
|
25
|
+
children?: Snippet;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
let { title, type, carousel = [], children }: Props = $props();
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<main class="h-screen w-screen flex items-center">
|
|
32
|
+
<div class="hidden md:block md:w-7/12 relative">
|
|
33
|
+
<LeftHero {title} type={type ?? "POINTER"} items={carousel} />
|
|
34
|
+
<svg width="0" height="0" class="absolute">
|
|
35
|
+
<defs>
|
|
36
|
+
<clipPath id="grid-curve-clip" clipPathUnits="objectBoundingBox">
|
|
37
|
+
<path d="M0.35,0 L1,0 C0.85,0.3 1,0.6 0.4,1 L1,1 Z" />
|
|
38
|
+
</clipPath>
|
|
39
|
+
</defs>
|
|
40
|
+
</svg>
|
|
41
|
+
</div>
|
|
42
|
+
<div
|
|
43
|
+
class="w-full md:w-5/12 border-gray-900 overflow-y-auto px-10 bg-gradient"
|
|
44
|
+
>
|
|
45
|
+
{#if children}
|
|
46
|
+
{@render children()}
|
|
47
|
+
{/if}
|
|
48
|
+
</div>
|
|
49
|
+
</main>
|
|
50
|
+
|
|
51
|
+
<style>
|
|
52
|
+
:global(.grid-pattern) {
|
|
53
|
+
background-size: 40px 40px;
|
|
54
|
+
background-image: linear-gradient(
|
|
55
|
+
to right,
|
|
56
|
+
rgba(0, 0, 0, 0.1) 1px,
|
|
57
|
+
transparent 1px
|
|
58
|
+
),
|
|
59
|
+
linear-gradient(to bottom, rgba(0, 0, 0, 0.1) 1px, transparent 1px);
|
|
60
|
+
clip-path: url(#grid-curve-clip);
|
|
61
|
+
}
|
|
62
|
+
</style>
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
/**
|
|
3
|
-
* @component PageAuth02
|
|
4
|
-
* Shared layout for auth pages (login/register) variant 02.
|
|
5
|
-
* Split layout: hero image on the left, auth card on the right.
|
|
6
|
-
*/
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<script lang="ts">
|
|
10
|
-
import type { Snippet } from "svelte";
|
|
11
|
-
import LeftHero from "../login/02/ui/LeftHero02.svelte";
|
|
12
|
-
|
|
13
|
-
type CarouselItem = {
|
|
14
|
-
title: string;
|
|
15
|
-
description: string;
|
|
16
|
-
buttonText: string;
|
|
17
|
-
buttonUrl?: string;
|
|
18
|
-
backgroundUrl?: string;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
type Props = {
|
|
22
|
-
title?: string;
|
|
23
|
-
type?: "NUMBER" | "DOT" | "POINTER";
|
|
24
|
-
carousel?: CarouselItem[];
|
|
25
|
-
children?: Snippet;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
let { title, type, carousel = [], children }: Props = $props();
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<main class="h-screen w-screen flex items-center justify-center">
|
|
32
|
-
<div class="hidden md:flex w-7/12 h-screen">
|
|
33
|
-
<LeftHero {title} type={type ?? "POINTER"} items={carousel} />
|
|
34
|
-
</div>
|
|
35
|
-
<div class="w-full md:w-5/12 flex flex-col h-screen overflow-y-auto">
|
|
36
|
-
{#if children}
|
|
37
|
-
{@render children()}
|
|
38
|
-
{/if}
|
|
39
|
-
</div>
|
|
40
|
-
</main>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* @component PageAuth02
|
|
4
|
+
* Shared layout for auth pages (login/register) variant 02.
|
|
5
|
+
* Split layout: hero image on the left, auth card on the right.
|
|
6
|
+
*/
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<script lang="ts">
|
|
10
|
+
import type { Snippet } from "svelte";
|
|
11
|
+
import LeftHero from "../login/02/ui/LeftHero02.svelte";
|
|
12
|
+
|
|
13
|
+
type CarouselItem = {
|
|
14
|
+
title: string;
|
|
15
|
+
description: string;
|
|
16
|
+
buttonText: string;
|
|
17
|
+
buttonUrl?: string;
|
|
18
|
+
backgroundUrl?: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
type Props = {
|
|
22
|
+
title?: string;
|
|
23
|
+
type?: "NUMBER" | "DOT" | "POINTER";
|
|
24
|
+
carousel?: CarouselItem[];
|
|
25
|
+
children?: Snippet;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
let { title, type, carousel = [], children }: Props = $props();
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<main class="h-screen w-screen flex items-center justify-center">
|
|
32
|
+
<div class="hidden md:flex w-7/12 h-screen">
|
|
33
|
+
<LeftHero {title} type={type ?? "POINTER"} items={carousel} />
|
|
34
|
+
</div>
|
|
35
|
+
<div class="w-full md:w-5/12 flex flex-col h-screen overflow-y-auto">
|
|
36
|
+
{#if children}
|
|
37
|
+
{@render children()}
|
|
38
|
+
{/if}
|
|
39
|
+
</div>
|
|
40
|
+
</main>
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
<script lang="ts" module>
|
|
2
|
-
/**
|
|
3
|
-
* @component PageAuth03
|
|
4
|
-
* Shared layout for auth pages (login/register) variant 03.
|
|
5
|
-
* Split layout with glass morphism: hero on the left, auth card on the right.
|
|
6
|
-
*/
|
|
7
|
-
</script>
|
|
8
|
-
|
|
9
|
-
<script lang="ts">
|
|
10
|
-
import type { Snippet } from "svelte";
|
|
11
|
-
import LeftHero from "../login/03/ui/LeftHero03.svelte";
|
|
12
|
-
|
|
13
|
-
type CarouselItem = {
|
|
14
|
-
title: string;
|
|
15
|
-
description: string;
|
|
16
|
-
buttonText: string;
|
|
17
|
-
buttonUrl?: string;
|
|
18
|
-
backgroundUrl?: string;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
type Props = {
|
|
22
|
-
title?: string;
|
|
23
|
-
type?: "NUMBER" | "DOT" | "POINTER";
|
|
24
|
-
carousel?: CarouselItem[];
|
|
25
|
-
children?: Snippet;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
let { title, type, carousel = [], children }: Props = $props();
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<main class="h-screen w-screen flex items-center justify-center">
|
|
32
|
-
<div class="hidden md:flex w-1/2 h-screen">
|
|
33
|
-
<LeftHero {title} type={type ?? "DOT"} items={carousel} />
|
|
34
|
-
</div>
|
|
35
|
-
<div class="w-full md:w-1/2 flex flex-col h-screen overflow-y-auto">
|
|
36
|
-
{#if children}
|
|
37
|
-
{@render children()}
|
|
38
|
-
{/if}
|
|
39
|
-
</div>
|
|
40
|
-
</main>
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
/**
|
|
3
|
+
* @component PageAuth03
|
|
4
|
+
* Shared layout for auth pages (login/register) variant 03.
|
|
5
|
+
* Split layout with glass morphism: hero on the left, auth card on the right.
|
|
6
|
+
*/
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<script lang="ts">
|
|
10
|
+
import type { Snippet } from "svelte";
|
|
11
|
+
import LeftHero from "../login/03/ui/LeftHero03.svelte";
|
|
12
|
+
|
|
13
|
+
type CarouselItem = {
|
|
14
|
+
title: string;
|
|
15
|
+
description: string;
|
|
16
|
+
buttonText: string;
|
|
17
|
+
buttonUrl?: string;
|
|
18
|
+
backgroundUrl?: string;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
type Props = {
|
|
22
|
+
title?: string;
|
|
23
|
+
type?: "NUMBER" | "DOT" | "POINTER";
|
|
24
|
+
carousel?: CarouselItem[];
|
|
25
|
+
children?: Snippet;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
let { title, type, carousel = [], children }: Props = $props();
|
|
29
|
+
</script>
|
|
30
|
+
|
|
31
|
+
<main class="h-screen w-screen flex items-center justify-center">
|
|
32
|
+
<div class="hidden md:flex w-1/2 h-screen">
|
|
33
|
+
<LeftHero {title} type={type ?? "DOT"} items={carousel} />
|
|
34
|
+
</div>
|
|
35
|
+
<div class="w-full md:w-1/2 flex flex-col h-screen overflow-y-auto">
|
|
36
|
+
{#if children}
|
|
37
|
+
{@render children()}
|
|
38
|
+
{/if}
|
|
39
|
+
</div>
|
|
40
|
+
</main>
|