negodesign 0.0.56 → 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.
Files changed (216) hide show
  1. package/dist/components/core/banner/AdCardBanner.svelte +74 -74
  2. package/dist/components/core/banner/CtaCardBanner.svelte +118 -118
  3. package/dist/components/core/breadcrumb/breadcrumb-list.svelte +31 -31
  4. package/dist/components/core/button/ButtonBack.svelte +18 -18
  5. package/dist/components/core/button/ButtonLogin.svelte +15 -15
  6. package/dist/components/core/button/ButtonLoginWith.svelte +57 -57
  7. package/dist/components/core/button/ButtonSend.svelte +15 -15
  8. package/dist/components/core/card/highlight/01/CardHighlight01.svelte +103 -103
  9. package/dist/components/core/card/highlight/02/CardHighlight02.svelte +99 -99
  10. package/dist/components/core/card/highlight/CardHighlight.svelte +22 -22
  11. package/dist/components/core/card/media/01/CardMedia01.svelte +133 -133
  12. package/dist/components/core/card/media/02/CardMedia02.svelte +127 -127
  13. package/dist/components/core/card/media/CardMedia.svelte +18 -18
  14. package/dist/components/core/card/product/01/CardProduct01.svelte +136 -136
  15. package/dist/components/core/card/product/02/CardProduct02.svelte +124 -124
  16. package/dist/components/core/card/product/CardProduct.svelte +22 -22
  17. package/dist/components/core/card/profile/01/CardProfile01.svelte +134 -134
  18. package/dist/components/core/card/profile/02/CardProfile02.svelte +132 -132
  19. package/dist/components/core/card/profile/CardProfile.svelte +18 -18
  20. package/dist/components/core/card/promotion/CardPromotion.svelte +139 -139
  21. package/dist/components/core/card/promotion/CardPromotionPrice.svelte +32 -32
  22. package/dist/components/core/card/shared/CardButton.svelte +42 -42
  23. package/dist/components/core/card/shared/CardCart.svelte +36 -36
  24. package/dist/components/core/card/shared/CardDescription.svelte +41 -41
  25. package/dist/components/core/card/shared/CardFavorite.svelte +33 -33
  26. package/dist/components/core/card/shared/CardLogo.svelte +19 -19
  27. package/dist/components/core/card/shared/CardPhoneOrWhatsapp.svelte +45 -45
  28. package/dist/components/core/card/shared/CardStarRating.svelte +24 -24
  29. package/dist/components/core/card/shared/CardTags.svelte +95 -95
  30. package/dist/components/core/card/shared/CardThumbnailVideo.svelte +232 -232
  31. package/dist/components/core/card/shared/CardTitlePrice.svelte +24 -24
  32. package/dist/components/core/card/shared/TruncatableText.svelte +49 -49
  33. package/dist/components/core/card/types.d.ts +4 -0
  34. package/dist/components/core/carousel/badge/type.d.ts +27 -0
  35. package/dist/components/core/carousel/badge/ui/CarouselBadge.svelte +109 -109
  36. package/dist/components/core/carousel/grid/media/types.d.ts +3 -0
  37. package/dist/components/core/carousel/grid/media/ui/CarouselGridMedia.svelte +2 -1
  38. package/dist/components/core/carousel/grid/product/types.d.ts +3 -0
  39. package/dist/components/core/carousel/grid/product/ui/CarouselGridProduct.svelte +5 -4
  40. package/dist/components/core/carousel/grid/profile/ui/CarouselGridProfile.svelte +1 -1
  41. package/dist/components/core/carousel/grid/promotion/ui/CarouselGridPromotion.svelte +1 -1
  42. package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte +8 -3
  43. package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte.d.ts +2 -1
  44. package/dist/components/core/carousel/hero/types.d.ts +30 -0
  45. package/dist/components/core/carousel/hero/{CarouselHero.svelte → ui/CarouselHero.svelte} +163 -161
  46. package/dist/components/core/carousel/shared/ui/CarouselHeader.svelte +60 -60
  47. package/dist/components/core/carousel/types.d.ts +2 -56
  48. package/dist/components/core/datatable/ui/DataTableActions.svelte +28 -28
  49. package/dist/components/core/datatable/ui/DataTableCheckbox.svelte +22 -22
  50. package/dist/components/core/datatable/ui/DataTableContent.svelte +59 -59
  51. package/dist/components/core/datatable/ui/DataTableCore.svelte +151 -151
  52. package/dist/components/core/datatable/ui/DataTableDragHandle.svelte +8 -8
  53. package/dist/components/core/datatable/ui/DataTableListFilter.svelte +59 -59
  54. package/dist/components/core/datatable/ui/DataTableListPagination.svelte +35 -35
  55. package/dist/components/core/footer/ui/Footer.svelte +18 -18
  56. package/dist/components/core/form/ui/input-base.svelte +81 -81
  57. package/dist/components/core/form/ui/input-email-or-phone.svelte +23 -23
  58. package/dist/components/core/form/ui/input-email.svelte +23 -23
  59. package/dist/components/core/form/ui/input-password-confirm.svelte +23 -23
  60. package/dist/components/core/form/ui/input-password.svelte +23 -23
  61. package/dist/components/core/form/ui/input-phone.svelte +33 -33
  62. package/dist/components/core/form/ui/input-username.svelte +22 -22
  63. package/dist/components/core/grid/data/types.d.ts +16 -0
  64. package/dist/components/core/grid/ui/01/Grid01.svelte +27 -0
  65. package/dist/components/core/grid/ui/01/Grid01.svelte.d.ts +4 -0
  66. package/dist/components/core/grid/ui/02/Grid02.svelte +27 -0
  67. package/dist/components/core/grid/ui/02/Grid02.svelte.d.ts +4 -0
  68. package/dist/components/core/grid/ui/PanelGrid.svelte +27 -0
  69. package/dist/components/core/grid/ui/PanelGrid.svelte.d.ts +4 -0
  70. package/dist/components/core/grid/ui/SimpleGrid.svelte +35 -0
  71. package/dist/components/core/grid/ui/SimpleGrid.svelte.d.ts +4 -0
  72. package/dist/components/core/grid/ui/shared/DescriptionGrid.svelte +17 -0
  73. package/dist/components/core/grid/ui/shared/DescriptionGrid.svelte.d.ts +7 -0
  74. package/dist/components/core/grid/ui/shared/IconRenderGrid.svelte +16 -0
  75. package/dist/components/core/grid/ui/shared/IconRenderGrid.svelte.d.ts +7 -0
  76. package/dist/components/core/grid/ui/shared/TitleGrid.svelte +11 -0
  77. package/dist/components/core/grid/ui/shared/TitleGrid.svelte.d.ts +7 -0
  78. package/dist/components/core/hero/SimpleHero.svelte +65 -65
  79. package/dist/components/core/label/LabelOr.svelte +25 -25
  80. package/dist/components/core/link/link-forget-password.svelte +12 -12
  81. package/dist/components/core/link/link-privacy-polity.svelte +12 -12
  82. package/dist/components/core/link/link-terms-of-service.svelte +12 -12
  83. package/dist/components/core/nav/data/complex-menu-utils.d.ts +7 -0
  84. package/dist/components/core/nav/data/complex-menu-utils.js +15 -0
  85. package/dist/components/core/nav/data/nav-menu.d.ts +21 -7
  86. package/dist/components/core/nav/{ui/shared → data}/types.d.ts +15 -2
  87. package/dist/components/core/nav/ui/ComplexMenu.svelte +36 -0
  88. package/dist/components/core/nav/ui/ComplexMenu.svelte.d.ts +4 -0
  89. package/dist/components/core/nav/ui/Menu.svelte +70 -66
  90. package/dist/components/core/nav/ui/Menu.svelte.d.ts +1 -1
  91. package/dist/components/core/nav/ui/SimpleMenu.svelte +14 -0
  92. package/dist/components/core/nav/ui/SimpleMenu.svelte.d.ts +4 -0
  93. package/dist/components/core/nav/ui/mobile/ComplexMenuMobile.svelte +98 -0
  94. package/dist/components/core/nav/ui/mobile/ComplexMenuMobile.svelte.d.ts +4 -0
  95. package/dist/components/core/nav/ui/mobile/MenuMobile.svelte +54 -0
  96. package/dist/components/core/nav/ui/mobile/MenuMobile.svelte.d.ts +11 -0
  97. package/dist/components/core/nav/ui/mobile/SimpleMenuMobile.svelte +42 -0
  98. package/dist/components/core/nav/ui/mobile/{nav-menu-drawer.svelte.d.ts → SimpleMenuMobile.svelte.d.ts} +3 -3
  99. package/dist/components/core/nav/ui/shared/CollapsibleNavMenu.svelte +24 -0
  100. package/dist/components/core/nav/ui/shared/CollapsibleNavMenu.svelte.d.ts +8 -0
  101. package/dist/components/core/nav/ui/shared/MenuButton.svelte +51 -0
  102. package/dist/components/core/nav/ui/shared/MenuButton.svelte.d.ts +4 -0
  103. package/dist/components/core/nav/ui/shared/MenuLinks.svelte +40 -40
  104. package/dist/components/core/nav/ui/shared/MenuListItem.svelte +48 -48
  105. package/dist/components/core/nav/ui/shared/MenuListItem.svelte.d.ts +1 -1
  106. package/dist/components/core/nav/ui/shared/MenuLogo.svelte +13 -0
  107. package/dist/components/core/nav/ui/shared/MenuLogo.svelte.d.ts +4 -0
  108. package/dist/components/core/nav/ui/shared/NavMenuItem.svelte +28 -0
  109. package/dist/components/core/nav/ui/shared/NavMenuItem.svelte.d.ts +4 -0
  110. package/dist/components/core/nav/ui/shared/dropdown/DropdownMenuListItem.svelte +40 -0
  111. package/dist/components/core/nav/ui/shared/dropdown/DropdownMenuListItem.svelte.d.ts +4 -0
  112. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItem.svelte +12 -0
  113. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItem.svelte.d.ts +4 -0
  114. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemCard.svelte +49 -0
  115. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemCard.svelte.d.ts +4 -0
  116. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte +30 -0
  117. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte.d.ts +4 -0
  118. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemList.svelte +24 -0
  119. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItemList.svelte.d.ts +4 -0
  120. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItems.svelte +24 -0
  121. package/dist/components/core/nav/ui/shared/dropdown/DropdownNavigationMenuItems.svelte.d.ts +4 -0
  122. package/dist/components/core/nav/ui/shared/{NavigationMenuItem.svelte → navigation/NavigationMenuItem.svelte} +15 -15
  123. package/dist/components/core/nav/ui/shared/{NavigationMenuItem.svelte.d.ts → navigation/NavigationMenuItem.svelte.d.ts} +1 -1
  124. package/dist/components/core/nav/ui/shared/{NavigationMenuItemCard.svelte → navigation/NavigationMenuItemCard.svelte} +62 -62
  125. package/dist/components/core/nav/ui/shared/{NavigationMenuItemCard.svelte.d.ts → navigation/NavigationMenuItemCard.svelte.d.ts} +1 -1
  126. package/dist/components/core/nav/ui/shared/{NavigationMenuItemGrid.svelte → navigation/NavigationMenuItemGrid.svelte} +32 -32
  127. package/dist/components/core/nav/ui/shared/{NavigationMenuItemGrid.svelte.d.ts → navigation/NavigationMenuItemGrid.svelte.d.ts} +1 -1
  128. package/dist/components/core/nav/ui/shared/{NavigationMenuItemList.svelte → navigation/NavigationMenuItemList.svelte} +24 -24
  129. package/dist/components/core/nav/ui/shared/{NavigationMenuItemList.svelte.d.ts → navigation/NavigationMenuItemList.svelte.d.ts} +1 -1
  130. package/dist/components/core/nav/ui/shared/{NavigationMenuItems.svelte → navigation/NavigationMenuItems.svelte} +21 -21
  131. package/dist/components/core/nav/ui/shared/{NavigationMenuItems.svelte.d.ts → navigation/NavigationMenuItems.svelte.d.ts} +1 -1
  132. package/dist/components/core/panel/CarouselSlot.svelte +57 -57
  133. package/dist/components/core/panel/LeftHero.svelte +117 -117
  134. package/dist/components/core/search/SearchInput.svelte +32 -32
  135. package/dist/components/core/search/shared/SearchInputCore.svelte +66 -66
  136. package/dist/components/core/sidebar/MenuBarSidebar.svelte +70 -70
  137. package/dist/components/core/sidebar/MenuBarSidebar.svelte.d.ts +2 -2
  138. package/dist/components/core/sidebar/data/nav-menu-sidebar.js +1 -0
  139. package/dist/components/core/sidebar/data/nav-top-bar-sidebar.js +1 -0
  140. package/dist/components/core/sidebar/data/nav-user-sidebar.js +1 -0
  141. package/dist/components/core/sidebar/types.d.ts +2 -2
  142. package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte +97 -97
  143. package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte.d.ts +1 -1
  144. package/dist/components/core/sidebar/ui/navbar/NavMenuBottomSidebar.svelte +33 -33
  145. package/dist/components/core/sidebar/ui/navbar/NavMenuBottomSidebar.svelte.d.ts +1 -1
  146. package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte +103 -103
  147. package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte.d.ts +1 -1
  148. package/dist/components/core/tabs/ui/tab-underline.svelte +43 -43
  149. package/dist/components/pages/admin/01/ui/AdminContent.svelte +14 -14
  150. package/dist/components/pages/admin/01/ui/AdminPanel.svelte +46 -46
  151. package/dist/components/pages/privacy-policy-or-terms-of-use/types.d.ts +2 -0
  152. package/dist/components/pages/security/login/01/ui/FormRegister.svelte +28 -28
  153. package/dist/components/pages/security/login/01/ui/LoginCard.svelte +107 -107
  154. package/dist/components/pages/security/login/PageLogin.svelte +22 -22
  155. package/dist/components/ui/badge/badge.svelte +49 -49
  156. package/dist/components/ui/button/button.svelte +82 -82
  157. package/dist/components/ui/chart/chart-container.svelte +80 -80
  158. package/dist/components/ui/chart/chart-style.svelte +37 -37
  159. package/dist/components/ui/chart/chart-tooltip.svelte +184 -184
  160. package/dist/components/ui/checkbox/checkbox.svelte +40 -40
  161. package/dist/components/ui/data-table/flex-render.svelte +40 -40
  162. package/dist/components/ui/drawer/drawer-close.svelte +7 -7
  163. package/dist/components/ui/drawer/drawer-content.svelte +33 -33
  164. package/dist/components/ui/drawer/drawer-description.svelte +17 -17
  165. package/dist/components/ui/drawer/drawer-footer.svelte +20 -20
  166. package/dist/components/ui/drawer/drawer-header.svelte +20 -20
  167. package/dist/components/ui/drawer/drawer-nested.svelte +12 -12
  168. package/dist/components/ui/drawer/drawer-overlay.svelte +17 -17
  169. package/dist/components/ui/drawer/drawer-portal.svelte +7 -7
  170. package/dist/components/ui/drawer/drawer-title.svelte +17 -17
  171. package/dist/components/ui/drawer/drawer-trigger.svelte +7 -7
  172. package/dist/components/ui/drawer/drawer.svelte +12 -12
  173. package/dist/components/ui/select/select-content.svelte +45 -45
  174. package/dist/components/ui/select/select-group-heading.svelte +21 -21
  175. package/dist/components/ui/select/select-group.svelte +17 -17
  176. package/dist/components/ui/select/select-item.svelte +41 -41
  177. package/dist/components/ui/select/select-label.svelte +20 -20
  178. package/dist/components/ui/select/select-portal.svelte +7 -7
  179. package/dist/components/ui/select/select-scroll-down-button.svelte +21 -21
  180. package/dist/components/ui/select/select-scroll-up-button.svelte +21 -21
  181. package/dist/components/ui/select/select-separator.svelte +18 -18
  182. package/dist/components/ui/select/select-trigger.svelte +30 -30
  183. package/dist/components/ui/select/select.svelte +11 -11
  184. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +39 -39
  185. package/dist/components/ui/star-rating/star-rating-star.svelte +41 -41
  186. package/dist/components/ui/star-rating/star-rating.svelte +20 -20
  187. package/dist/components/ui/table/table-body.svelte +15 -15
  188. package/dist/components/ui/table/table-caption.svelte +20 -20
  189. package/dist/components/ui/table/table-cell.svelte +15 -15
  190. package/dist/components/ui/table/table-footer.svelte +20 -20
  191. package/dist/components/ui/table/table-head.svelte +15 -15
  192. package/dist/components/ui/table/table-header.svelte +20 -20
  193. package/dist/components/ui/table/table-row.svelte +15 -15
  194. package/dist/components/ui/table/table.svelte +17 -17
  195. package/dist/components/ui/tabs/tabs-content.svelte +17 -17
  196. package/dist/components/ui/tabs/tabs-list.svelte +40 -40
  197. package/dist/components/ui/tabs/tabs-trigger.svelte +23 -23
  198. package/dist/components/ui/tabs/tabs.svelte +19 -19
  199. package/dist/globals.css +56 -2
  200. package/dist/index.d.ts +1 -8
  201. package/dist/index.js +1 -8
  202. package/dist/styles/globals.css +149 -149
  203. package/dist/styles/hgi-stroke-rounded.css +1 -1
  204. package/dist/types/index.d.ts +9 -7
  205. package/package.json +113 -113
  206. package/dist/components/core/nav/ui/NavMenu.svelte +0 -122
  207. package/dist/components/core/nav/ui/NavMenu.svelte.d.ts +0 -4
  208. package/dist/components/core/nav/ui/mobile/nav-menu-drawer.svelte +0 -85
  209. package/dist/components/core/{nav/data/nav-menu-sidebar.js → carousel/badge/type.js} +0 -0
  210. package/dist/components/core/{nav/ui/shared → carousel/hero}/types.js +0 -0
  211. package/dist/components/core/carousel/hero/{CarouselHero.svelte.d.ts → ui/CarouselHero.svelte.d.ts} +1 -1
  212. /package/dist/components/core/{nav/data/nav-top-bar-sidebar.js → grid/data/types.js} +0 -0
  213. /package/dist/components/core/nav/data/{nav-user-sidebar.js → types.js} +0 -0
  214. /package/dist/components/core/{nav → sidebar}/data/nav-menu-sidebar.d.ts +0 -0
  215. /package/dist/components/core/{nav → sidebar}/data/nav-top-bar-sidebar.d.ts +0 -0
  216. /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,7 @@
1
+ type $$ComponentProps = {
2
+ description?: string;
3
+ descriptionClass?: string;
4
+ };
5
+ declare const DescriptionGrid: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type DescriptionGrid = ReturnType<typeof DescriptionGrid>;
7
+ export default DescriptionGrid;
@@ -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;
@@ -0,0 +1,11 @@
1
+ <script lang="ts">
2
+ let {
3
+ title,
4
+ titleClass,
5
+ }: {
6
+ title?: string;
7
+ titleClass?: string;
8
+ } = $props();
9
+ </script>
10
+
11
+ <p class={titleClass}>{title}</p>
@@ -0,0 +1,7 @@
1
+ type $$ComponentProps = {
2
+ title?: string;
3
+ titleClass?: string;
4
+ };
5
+ declare const TitleGrid: import("svelte").Component<$$ComponentProps, {}, "">;
6
+ type TitleGrid = ReturnType<typeof TitleGrid>;
7
+ export default TitleGrid;
@@ -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 MenuProps = {
40
- links: (NavigationMenuItemProps | NavigationMenuItemListProps | NavigationMenuItemCardProps | NavigationMenuItemGridProps | NavigationMenuItemsProps)[];
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>
@@ -0,0 +1,4 @@
1
+ import type { ComplexMenuProps } from "../data/types";
2
+ declare const ComplexMenu: import("svelte").Component<ComplexMenuProps, {}, "">;
3
+ type ComplexMenu = ReturnType<typeof ComplexMenu>;
4
+ export default ComplexMenu;
@@ -1,66 +1,70 @@
1
- <script lang="ts">
2
- import * as NavigationMenu from "../../../ui/navigation-menu/index.js";
3
- import { useDevice } from "../../../../hooks/responsive.svelte";
4
- import type {
5
- MenuProps,
6
- NavigationMenuItemProps,
7
- NavigationMenuItemListProps,
8
- NavigationMenuItemCardProps,
9
- NavigationMenuItemGridProps,
10
- NavigationMenuItemsProps,
11
- } from "./shared/types";
12
- import NavigationMenuItemGrid from "./shared/NavigationMenuItemGrid.svelte";
13
- import NavigationMenuItemCard from "./shared/NavigationMenuItemCard.svelte";
14
- import NavigationMenuItem from "./shared/NavigationMenuItem.svelte";
15
- import NavigationMenuItemList from "./shared/NavigationMenuItemList.svelte";
16
- import NavigationMenuItems from "./shared/NavigationMenuItems.svelte";
17
-
18
- const responsive = useDevice();
19
-
20
- let { links }: MenuProps = $props();
21
-
22
- type NavMenuItem =
23
- | NavigationMenuItemCardProps
24
- | NavigationMenuItemGridProps
25
- | NavigationMenuItemListProps
26
- | NavigationMenuItemsProps
27
- | NavigationMenuItemProps;
28
-
29
- function isCard(item: NavMenuItem): item is NavigationMenuItemCardProps {
30
- return "header" in item && "cards" in item;
31
- }
32
-
33
- function isGrid(item: NavMenuItem): item is NavigationMenuItemGridProps {
34
- return "grids" in item && "label" in item;
35
- }
36
-
37
- function isList(item: NavMenuItem): item is NavigationMenuItemListProps {
38
- return "list" in item && "label" in item;
39
- }
40
-
41
- function isItems(item: NavMenuItem): item is NavigationMenuItemsProps {
42
- return "items" in item && "label" in item;
43
- }
44
-
45
- function isItem(item: NavMenuItem): item is NavigationMenuItemProps {
46
- return "href" in item && "label" in item;
47
- }
48
- </script>
49
-
50
- <NavigationMenu.Root viewport={responsive.isMobile}>
51
- <NavigationMenu.List class="flex-wrap">
52
- {#each links as link, i (i)}
53
- {#if isCard(link)}
54
- <NavigationMenuItemCard {...link} />
55
- {:else if isGrid(link)}
56
- <NavigationMenuItemGrid {...link} />
57
- {:else if isList(link)}
58
- <NavigationMenuItemList {...link} />
59
- {:else if isItems(link)}
60
- <NavigationMenuItems {...link} />
61
- {:else if isItem(link)}
62
- <NavigationMenuItem {...link} />
63
- {/if}
64
- {/each}
65
- </NavigationMenu.List>
66
- </NavigationMenu.Root>
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>
@@ -1,4 +1,4 @@
1
- import type { MenuProps } from "./shared/types";
1
+ import type { MenuProps } from "../data/types";
2
2
  declare const Menu: import("svelte").Component<MenuProps, {}, "">;
3
3
  type Menu = ReturnType<typeof Menu>;
4
4
  export default Menu;
@@ -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}
@@ -0,0 +1,4 @@
1
+ import type { SimpleMenuProps } from "../data/nav-menu";
2
+ declare const SimpleMenu: import("svelte").Component<SimpleMenuProps, {}, "">;
3
+ type SimpleMenu = ReturnType<typeof SimpleMenu>;
4
+ export default SimpleMenu;