negodesign 0.0.55 → 0.0.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +8 -0
  39. package/dist/components/core/carousel/grid/product/ui/CarouselGridProduct.svelte +14 -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,98 @@
1
+ <script lang="ts">
2
+ import type {
3
+ ComplexMenuProps,
4
+ NavigationMenuItemCardProps,
5
+ NavigationMenuItemGridProps,
6
+ NavigationMenuItemListProps,
7
+ NavigationMenuItemsProps,
8
+ NavigationMenuItemProps,
9
+ } from "../../data/types";
10
+ import {
11
+ isCard,
12
+ isGrid,
13
+ isList,
14
+ isItems,
15
+ isItem,
16
+ } from "../../data/complex-menu-utils";
17
+ import CollapsibleNavMenu from "../shared/CollapsibleNavMenu.svelte";
18
+ import NavMenuItem from "../shared/NavMenuItem.svelte";
19
+ import MenuMobile from "./MenuMobile.svelte";
20
+
21
+ let { menus: links }: ComplexMenuProps = $props();
22
+ </script>
23
+
24
+ {#snippet headerSnippet(header: NonNullable<NavigationMenuItemCardProps["header"]>)}
25
+ <div class="mt-4 mb-2 text-lg font-medium {header.labelClass}">{header.label}</div>
26
+ <p class="text-sm leading-tight {header.descriptionClass || 'text-muted-foreground'}">{header.description}</p>
27
+ {/snippet}
28
+
29
+ <MenuMobile>
30
+ <div class="flex flex-col gap-1">
31
+ {#each links as link, i (i)}
32
+ {#if isCard(link)}
33
+ {@const card = link as NavigationMenuItemCardProps}
34
+ <CollapsibleNavMenu label={card.label ?? card.header?.label ?? ""}>
35
+ <ul class="grid gap-2 p-2">
36
+ {#if card.header}
37
+ <li class="relative row-span-3" style={card.header.imgUrl ? `background-image: url(${card.header.imgUrl}); background-repeat: no-repeat; background-size: cover; background-position: center; border-radius: 12px;` : ""}>
38
+ <a href={card.header.href ?? "#"} class="flex h-full w-full flex-col justify-end p-4 {card.header.imgUrl ? "no-underline outline-hidden select-none" : "bg-linear-to-b from-muted/50 to-muted rounded-md"}">
39
+ {@render headerSnippet(card.header)}
40
+ </a>
41
+ </li>
42
+ {/if}
43
+ {#if card.cards}
44
+ {#each card.cards as item, j (j)}
45
+ <NavMenuItem {...item} />
46
+ {/each}
47
+ {/if}
48
+ </ul>
49
+ </CollapsibleNavMenu>
50
+
51
+ {:else if isGrid(link)}
52
+ {@const grid = link as NavigationMenuItemGridProps}
53
+ <CollapsibleNavMenu label={grid.label}>
54
+ <ul class="grid grid-cols-2 gap-2 p-2">
55
+ {#each grid.grids ?? [] as item, j (j)}
56
+ <NavMenuItem {...item} />
57
+ {/each}
58
+ </ul>
59
+ </CollapsibleNavMenu>
60
+
61
+ {:else if isList(link)}
62
+ {@const list = link as NavigationMenuItemListProps}
63
+ <CollapsibleNavMenu label={list.label}>
64
+ <ul class="grid gap-4 p-2">
65
+ {#each list.list ?? [] as item, j (j)}
66
+ <li>
67
+ <a href={item.href} class="block rounded-md p-2 no-underline hover:bg-accent">
68
+ <div class="font-medium">{item.title ?? ""}</div>
69
+ <div class="text-sm text-muted-foreground">{item.content}</div>
70
+ </a>
71
+ </li>
72
+ {/each}
73
+ </ul>
74
+ </CollapsibleNavMenu>
75
+
76
+ {:else if isItems(link)}
77
+ {@const items = link as NavigationMenuItemsProps}
78
+ <CollapsibleNavMenu label={items.label}>
79
+ <ul class="grid min-w-50 gap-4 p-2">
80
+ {#each items.items ?? [] as item, j (j)}
81
+ <li>
82
+ <a href={item.href} class="block rounded-md px-3 py-2 text-sm font-medium no-underline hover:bg-accent">
83
+ {item.title}
84
+ </a>
85
+ </li>
86
+ {/each}
87
+ </ul>
88
+ </CollapsibleNavMenu>
89
+
90
+ {:else if isItem(link)}
91
+ {@const item = link as NavigationMenuItemProps}
92
+ <a href={item.href} class="block w-full rounded-xl px-3 py-2 text-sm font-medium no-underline hover:bg-accent focus:bg-accent">
93
+ {item.label}
94
+ </a>
95
+ {/if}
96
+ {/each}
97
+ </div>
98
+ </MenuMobile>
@@ -0,0 +1,4 @@
1
+ import type { ComplexMenuProps } from "../../data/types";
2
+ declare const ComplexMenuMobile: import("svelte").Component<ComplexMenuProps, {}, "">;
3
+ type ComplexMenuMobile = ReturnType<typeof ComplexMenuMobile>;
4
+ export default ComplexMenuMobile;
@@ -0,0 +1,54 @@
1
+ <script lang="ts">
2
+ import * as Drawer from "../../../../ui/drawer/index.js";
3
+ import type { NavMenuButtonProps } from "../../data/nav-menu";
4
+ import { buttonVariants } from "../../../../ui/button/index.js";
5
+ import { cn } from "../../../../../utils.js";
6
+ import { HugeiconsIcon } from "@hugeicons/svelte";
7
+ import { Menu } from "@hugeicons/core-free-icons";
8
+ import LightSwitch from "../../../../ui/light-switch/light-switch.svelte";
9
+ import LanguageSwitcher from "../../../../ui/language-switcher/language-switcher.svelte";
10
+ import { t } from "../../../../../i18n";
11
+ import type { Snippet } from "svelte";
12
+
13
+ type Props = {
14
+ navMenuButton?: NavMenuButtonProps;
15
+ isLightSwitch?: boolean;
16
+ isLanguageSwitcher?: boolean;
17
+ children: Snippet;
18
+ };
19
+
20
+ const { navMenuButton, isLightSwitch, isLanguageSwitcher, children }: Props =
21
+ $props();
22
+ </script>
23
+
24
+ <div class="flex flex-wrap gap-2">
25
+ <Drawer.Root direction="right">
26
+ <Drawer.Trigger
27
+ class={cn(buttonVariants({ variant: "outline" }), "capitalize")}
28
+ >
29
+ <HugeiconsIcon icon={Menu} />
30
+ </Drawer.Trigger>
31
+ <Drawer.Content
32
+ class="data-[vaul-drawer-direction=bottom]:max-h-[50vh] data-[vaul-drawer-direction=top]:max-h-[50vh]"
33
+ >
34
+ <Drawer.Header>
35
+ <Drawer.Title>{$t("label.menu")}</Drawer.Title>
36
+ <Drawer.Description>
37
+ {$t("label.navigation.text")}
38
+ </Drawer.Description>
39
+ </Drawer.Header>
40
+ <div class="no-scrollbar overflow-y-auto px-4">
41
+ {@render children()}
42
+ </div>
43
+ <Drawer.Footer>
44
+ <div class="flex justify-center gap-5 py-5">
45
+ <LightSwitch />
46
+ <LanguageSwitcher />
47
+ </div>
48
+ <Drawer.Close class={buttonVariants({ variant: "outline" })}>
49
+ {$t("label.close")}
50
+ </Drawer.Close>
51
+ </Drawer.Footer>
52
+ </Drawer.Content>
53
+ </Drawer.Root>
54
+ </div>
@@ -0,0 +1,11 @@
1
+ import type { NavMenuButtonProps } from "../../data/nav-menu";
2
+ import type { Snippet } from "svelte";
3
+ type Props = {
4
+ navMenuButton?: NavMenuButtonProps;
5
+ isLightSwitch?: boolean;
6
+ isLanguageSwitcher?: boolean;
7
+ children: Snippet;
8
+ };
9
+ declare const MenuMobile: import("svelte").Component<Props, {}, "">;
10
+ type MenuMobile = ReturnType<typeof MenuMobile>;
11
+ export default MenuMobile;
@@ -0,0 +1,42 @@
1
+ <script lang="ts">
2
+ import { Button } from "../../../../ui/button/index.js";
3
+ import type { NavMenuLinksProps } from "../../data/nav-menu";
4
+ import { HugeiconsIcon } from "@hugeicons/svelte";
5
+ import { Login03Icon, User03Icon } from "@hugeicons/core-free-icons";
6
+ import MenuLinks from "../shared/MenuLinks.svelte";
7
+ import MenuMobile from "./MenuMobile.svelte";
8
+ import { t } from "../../../../../i18n";
9
+
10
+ type Props = {
11
+ links: NavMenuLinksProps[];
12
+ onclickButtonLogin?: () => void;
13
+ onclickButtonRegister?: () => void;
14
+ };
15
+
16
+ const { links, onclickButtonLogin, onclickButtonRegister }: Props = $props();
17
+ </script>
18
+
19
+ <MenuMobile>
20
+ <nav>
21
+ <div class="mt-5 mb-4 font-semibold">{$t("label.navigation")}</div>
22
+ <MenuLinks {links} groupClass="space-y-3" orientation="vertical" />
23
+ </nav>
24
+
25
+ <div class="mt-5">
26
+ <div class="mt-5 mb-4 font-semibold">{$t("label.action")}</div>
27
+ <section>
28
+ {#if onclickButtonRegister}
29
+ <Button variant="outline" onclick={onclickButtonRegister}>
30
+ <HugeiconsIcon icon={User03Icon} />
31
+ {$t("label.register")}
32
+ </Button>
33
+ {/if}
34
+ {#if onclickButtonLogin}
35
+ <Button variant="outline" onclick={onclickButtonLogin}>
36
+ <HugeiconsIcon icon={Login03Icon} />
37
+ {$t("label.login")}
38
+ </Button>
39
+ {/if}
40
+ </section>
41
+ </div>
42
+ </MenuMobile>
@@ -4,6 +4,6 @@ type Props = {
4
4
  onclickButtonLogin?: () => void;
5
5
  onclickButtonRegister?: () => void;
6
6
  };
7
- declare const NavMenuDrawer: import("svelte").Component<Props, {}, "">;
8
- type NavMenuDrawer = ReturnType<typeof NavMenuDrawer>;
9
- export default NavMenuDrawer;
7
+ declare const SimpleMenuMobile: import("svelte").Component<Props, {}, "">;
8
+ type SimpleMenuMobile = ReturnType<typeof SimpleMenuMobile>;
9
+ export default SimpleMenuMobile;
@@ -0,0 +1,24 @@
1
+ <script lang="ts">
2
+ import * as Collapsible from "../../../../ui/collapsible/index.js";
3
+ import { HugeiconsIcon } from "@hugeicons/svelte";
4
+ import { ArrowDown01Icon } from "@hugeicons/core-free-icons";
5
+ import type { Snippet } from "svelte";
6
+
7
+ let { label, children }: { label: string; children: Snippet } = $props();
8
+ </script>
9
+
10
+ <Collapsible.Root>
11
+ <Collapsible.Trigger
12
+ class="group flex w-full items-center justify-between rounded-xl px-3 py-2 text-sm font-medium outline-hidden select-none hover:bg-accent focus:bg-accent data-[state=open]:bg-accent"
13
+ >
14
+ {label}
15
+ <HugeiconsIcon
16
+ icon={ArrowDown01Icon}
17
+ strokeWidth={2}
18
+ class="ml-auto size-4 transition-transform duration-200 group-data-[state=open]:rotate-180"
19
+ />
20
+ </Collapsible.Trigger>
21
+ <Collapsible.Content class="overflow-hidden">
22
+ {@render children()}
23
+ </Collapsible.Content>
24
+ </Collapsible.Root>
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from "svelte";
2
+ type $$ComponentProps = {
3
+ label: string;
4
+ children: Snippet;
5
+ };
6
+ declare const CollapsibleNavMenu: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type CollapsibleNavMenu = ReturnType<typeof CollapsibleNavMenu>;
8
+ export default CollapsibleNavMenu;
@@ -0,0 +1,51 @@
1
+ <script lang="ts">
2
+ import type { NavMenuButtonProps } from "../../data/nav-menu";
3
+ import { Login03Icon, User03Icon } from "@hugeicons/core-free-icons";
4
+ import { HugeiconsIcon, type IconSvgElement } from "@hugeicons/svelte";
5
+ import { Button } from "../../../../ui/button/index.js";
6
+ import { t } from "../../../../../i18n";
7
+
8
+ let {
9
+ buttonClass,
10
+ textButtonLogin,
11
+ textButtonRegister,
12
+ onclickButtonLogin,
13
+ onclickButtonRegister,
14
+ }: NavMenuButtonProps = $props();
15
+ </script>
16
+
17
+ {#if onclickButtonRegister}
18
+ {@render actionButtons({
19
+ text: textButtonRegister || $t("label.register"),
20
+ icon: User03Icon,
21
+ onclick: onclickButtonRegister,
22
+ })}
23
+ {/if}
24
+ {#if onclickButtonLogin}
25
+ {@render actionButtons({
26
+ text: textButtonLogin || $t("label.login"),
27
+ icon: Login03Icon,
28
+ onclick: onclickButtonLogin,
29
+ })}
30
+ {/if}
31
+
32
+ {#snippet actionButtons({
33
+ text,
34
+ icon,
35
+ onclick,
36
+ }: Readonly<{
37
+ text: string;
38
+ icon: IconSvgElement;
39
+ onclick: () => void;
40
+ }>)}
41
+ <Button
42
+ {onclick}
43
+ variant="outline"
44
+ class="flex justify-between items-center gap-3 rounded-full border p-5 md:p-5 cursor-pointer md:text-md"
45
+ >
46
+ <div>{text}</div>
47
+ <div class="border p-2 rounded-full bg-white dark:bg-background mr-0">
48
+ <HugeiconsIcon {icon} />
49
+ </div>
50
+ </Button>
51
+ {/snippet}
@@ -0,0 +1,4 @@
1
+ import type { NavMenuButtonProps } from "../../data/nav-menu";
2
+ declare const MenuButton: import("svelte").Component<NavMenuButtonProps, {}, "">;
3
+ type MenuButton = ReturnType<typeof MenuButton>;
4
+ export default MenuButton;
@@ -1,40 +1,40 @@
1
- <script lang="ts">
2
- import { HugeiconsIcon } from "@hugeicons/svelte";
3
- import type { NavMenuLinksProps } from "../../data/nav-menu";
4
-
5
- type Props = {
6
- links: NavMenuLinksProps[];
7
- linkClass?: string;
8
- groupClass?: string;
9
- menuKey?: string;
10
- activeClass?: string;
11
- orientation?: "horizontal" | "vertical";
12
- };
13
-
14
- let {
15
- links,
16
- linkClass,
17
- groupClass,
18
- menuKey,
19
- activeClass = "bg-gradient text-white",
20
- orientation,
21
- }: Props = $props();
22
- </script>
23
-
24
- <ul
25
- class={`flex ${orientation === "vertical" ? "flex-col" : "items-center"} gap-2 md:gap-5 lg:gap-15 ${groupClass}`}
26
- >
27
- {#each links as item (item.label)}
28
- <li>
29
- <a
30
- class={`flex items-center gap-1 ${linkClass} ${item.key && menuKey === item.key ? activeClass : ""}`}
31
- href={item.url ?? item.href ?? "#"}
32
- >
33
- {#if item.icon}
34
- <HugeiconsIcon icon={item.icon} size={15} />
35
- {/if}
36
- {item.label}
37
- </a>
38
- </li>
39
- {/each}
40
- </ul>
1
+ <script lang="ts">
2
+ import { HugeiconsIcon } from "@hugeicons/svelte";
3
+ import type { NavMenuLinksProps } from "../../data/nav-menu";
4
+
5
+ type Props = {
6
+ links: NavMenuLinksProps[];
7
+ linkClass?: string;
8
+ groupClass?: string;
9
+ menuKey?: string;
10
+ activeClass?: string;
11
+ orientation?: "horizontal" | "vertical";
12
+ };
13
+
14
+ let {
15
+ links,
16
+ linkClass,
17
+ groupClass,
18
+ menuKey,
19
+ activeClass = "bg-gradient text-white",
20
+ orientation,
21
+ }: Props = $props();
22
+ </script>
23
+
24
+ <ul
25
+ class={`flex ${orientation === "vertical" ? "flex-col" : "items-center"} gap-2 md:gap-5 lg:gap-15 ${groupClass}`}
26
+ >
27
+ {#each links as item (item.label)}
28
+ <li>
29
+ <a
30
+ class={`flex items-center gap-1 ${linkClass} ${item.key && menuKey === item.key ? activeClass : ""}`}
31
+ href={item.url ?? item.href ?? "#"}
32
+ >
33
+ {#if item.icon}
34
+ <HugeiconsIcon icon={item.icon} size={15} />
35
+ {/if}
36
+ {item.label}
37
+ </a>
38
+ </li>
39
+ {/each}
40
+ </ul>
@@ -1,48 +1,48 @@
1
- <script lang="ts">
2
- import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
3
- import { cn } from "../../../../../utils";
4
- import type { ListItemProps } from "./types";
5
- let {
6
- title,
7
- content,
8
- href,
9
- icon,
10
- class: className,
11
- ...restProps
12
- }: ListItemProps = $props();
13
- </script>
14
-
15
- {#snippet header()}
16
- <div class="leading-none font-medium">{title}</div>
17
- {/snippet}
18
-
19
- <li>
20
- <NavigationMenu.Link>
21
- {#snippet child()}
22
- <a
23
- {href}
24
- class={cn(
25
- "block space-y-1 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
26
- className,
27
- )}
28
- {...restProps}
29
- >
30
- {#if icon}
31
- <div class="flex gap-1 items-center">
32
- <div>
33
- <i class={`${icon} size-8 md:size-10`}></i>
34
- </div>
35
- <div class="-mt-1">
36
- {@render header()}
37
- </div>
38
- </div>
39
- {:else}
40
- {@render header()}
41
- {/if}
42
- <p class="line-clamp-2 text-sm leading-snug text-muted-foreground">
43
- {content}
44
- </p>
45
- </a>
46
- {/snippet}
47
- </NavigationMenu.Link>
48
- </li>
1
+ <script lang="ts">
2
+ import * as NavigationMenu from "../../../../ui/navigation-menu/index.js";
3
+ import { cn } from "../../../../../utils";
4
+ import type { ListItemProps } from "../../data/types";
5
+ let {
6
+ title,
7
+ content,
8
+ href,
9
+ icon,
10
+ class: className,
11
+ ...restProps
12
+ }: ListItemProps = $props();
13
+ </script>
14
+
15
+ {#snippet header()}
16
+ <div class="leading-none font-medium">{title}</div>
17
+ {/snippet}
18
+
19
+ <li>
20
+ <NavigationMenu.Link>
21
+ {#snippet child()}
22
+ <a
23
+ {href}
24
+ class={cn(
25
+ "block space-y-1 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
26
+ className,
27
+ )}
28
+ {...restProps}
29
+ >
30
+ {#if icon}
31
+ <div class="flex gap-1 items-center">
32
+ <div>
33
+ <i class={`${icon} size-8 md:size-10`}></i>
34
+ </div>
35
+ <div class="-mt-1">
36
+ {@render header()}
37
+ </div>
38
+ </div>
39
+ {:else}
40
+ {@render header()}
41
+ {/if}
42
+ <p class="line-clamp-2 text-sm leading-snug text-muted-foreground">
43
+ {content}
44
+ </p>
45
+ </a>
46
+ {/snippet}
47
+ </NavigationMenu.Link>
48
+ </li>
@@ -1,4 +1,4 @@
1
- import type { ListItemProps } from "./types";
1
+ import type { ListItemProps } from "../../data/types";
2
2
  declare const MenuListItem: import("svelte").Component<ListItemProps, {}, "">;
3
3
  type MenuListItem = ReturnType<typeof MenuListItem>;
4
4
  export default MenuListItem;
@@ -0,0 +1,13 @@
1
+ <script lang="ts">
2
+ import type { NavMenuLogoProps } from "../../../../../types";
3
+
4
+ let { img, url, label, className, onclick }: NavMenuLogoProps = $props();
5
+ </script>
6
+
7
+ <a href={url} {onclick}>
8
+ {#if img}
9
+ <img src={img} alt="logo of site" class={`max-h-50 ${className}`} />
10
+ {:else if label}
11
+ <span class={className}>{label}</span>
12
+ {/if}
13
+ </a>
@@ -0,0 +1,4 @@
1
+ import type { NavMenuLogoProps } from "../../../../../types";
2
+ declare const MenuLogo: import("svelte").Component<NavMenuLogoProps, {}, "">;
3
+ type MenuLogo = ReturnType<typeof MenuLogo>;
4
+ export default MenuLogo;
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ import type { ListItemProps } from "../../data/types";
3
+
4
+ let { title, content, href, icon }: ListItemProps = $props();
5
+ </script>
6
+
7
+ <li>
8
+ <a
9
+ {href}
10
+ class="block space-y-1 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground"
11
+ >
12
+ {#if icon}
13
+ <div class="flex items-center gap-1">
14
+ <div>
15
+ <i class={`${icon} size-8 md:size-10`}></i>
16
+ </div>
17
+ <div class="-mt-1">
18
+ <div class="leading-none font-medium">{title}</div>
19
+ </div>
20
+ </div>
21
+ {:else}
22
+ <div class="leading-none font-medium">{title}</div>
23
+ {/if}
24
+ <p class="line-clamp-2 text-sm leading-snug text-muted-foreground">
25
+ {content}
26
+ </p>
27
+ </a>
28
+ </li>
@@ -0,0 +1,4 @@
1
+ import type { ListItemProps } from "../../data/types";
2
+ declare const NavMenuItem: import("svelte").Component<ListItemProps, {}, "">;
3
+ type NavMenuItem = ReturnType<typeof NavMenuItem>;
4
+ export default NavMenuItem;
@@ -0,0 +1,40 @@
1
+ <script lang="ts">
2
+ import { cn } from "../../../../../../utils";
3
+ import type { ListItemProps } from "../../../data/types";
4
+
5
+ let {
6
+ title,
7
+ content,
8
+ href,
9
+ icon,
10
+ class: className,
11
+ ...restProps
12
+ }: ListItemProps = $props();
13
+ </script>
14
+
15
+ <li>
16
+ <a
17
+ {href}
18
+ class={cn(
19
+ "block space-y-1 rounded-md p-3 leading-none no-underline transition-colors outline-none select-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground",
20
+ className,
21
+ )}
22
+ {...restProps}
23
+ >
24
+ {#if icon}
25
+ <div class="flex gap-1 items-center">
26
+ <div>
27
+ <i class={`${icon} size-8 md:size-10`}></i>
28
+ </div>
29
+ <div class="-mt-1">
30
+ <div class="leading-none font-medium">{title}</div>
31
+ </div>
32
+ </div>
33
+ {:else}
34
+ <div class="leading-none font-medium">{title}</div>
35
+ {/if}
36
+ <p class="line-clamp-2 text-sm leading-snug text-muted-foreground">
37
+ {content}
38
+ </p>
39
+ </a>
40
+ </li>
@@ -0,0 +1,4 @@
1
+ import type { ListItemProps } from "../../../data/types";
2
+ declare const DropdownMenuListItem: import("svelte").Component<ListItemProps, {}, "">;
3
+ type DropdownMenuListItem = ReturnType<typeof DropdownMenuListItem>;
4
+ export default DropdownMenuListItem;
@@ -0,0 +1,12 @@
1
+ <script lang="ts">
2
+ import * as DropdownMenu from "../../../../../ui/dropdown-menu/index.js";
3
+ import type { NavigationMenuItemProps } from "../../../data/types";
4
+
5
+ let { label, href }: NavigationMenuItemProps = $props();
6
+ </script>
7
+
8
+ <DropdownMenu.Item>
9
+ <a {href} class="block w-full px-3 py-2 text-sm font-medium">
10
+ {label}
11
+ </a>
12
+ </DropdownMenu.Item>
@@ -0,0 +1,4 @@
1
+ import type { NavigationMenuItemProps } from "../../../data/types";
2
+ declare const DropdownNavigationMenuItem: import("svelte").Component<NavigationMenuItemProps, {}, "">;
3
+ type DropdownNavigationMenuItem = ReturnType<typeof DropdownNavigationMenuItem>;
4
+ export default DropdownNavigationMenuItem;