negodesign 0.0.78 → 0.0.80

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 (274) hide show
  1. package/README.md +133 -133
  2. package/dist/components/NegoDesign.svelte +21 -21
  3. package/dist/components/pages/admin/01/ui/AdminContent.svelte +14 -14
  4. package/dist/components/pages/admin/01/ui/AdminPanel.svelte +46 -46
  5. package/dist/components/pages/product-details/shared/ProductDetailFilesVertical.svelte +103 -103
  6. package/dist/components/pages/profile-user/shared/ProfileUserAddress.svelte +83 -83
  7. package/dist/components/pages/profile-user/shared/ProfileUserTabs.svelte +80 -80
  8. package/dist/components/pages/security/auth/PageAuth01.svelte +21 -24
  9. package/dist/components/pages/security/auth/PageAuth02.svelte +11 -16
  10. package/dist/components/pages/security/auth/PageAuth03.svelte +11 -16
  11. package/dist/components/pages/security/login/01/ui/FormLogin.svelte +7 -5
  12. package/dist/components/pages/security/login/01/ui/FormLogin.svelte.d.ts +2 -0
  13. package/dist/components/pages/security/login/01/ui/FormLoginEmailPassword.svelte +4 -2
  14. package/dist/components/pages/security/login/01/ui/FormLoginEmailPassword.svelte.d.ts +2 -0
  15. package/dist/components/pages/security/login/01/ui/FormLoginPhonePassword.svelte +4 -2
  16. package/dist/components/pages/security/login/01/ui/FormLoginPhonePassword.svelte.d.ts +2 -0
  17. package/dist/components/pages/security/login/01/ui/FormLoginUsernamePassword.svelte +4 -2
  18. package/dist/components/pages/security/login/01/ui/FormLoginUsernamePassword.svelte.d.ts +2 -0
  19. package/dist/components/pages/security/login/01/ui/{LoginCard.svelte → LoginCard01.svelte} +132 -109
  20. package/dist/components/pages/security/login/01/ui/{LoginCard.svelte.d.ts → LoginCard01.svelte.d.ts} +3 -3
  21. package/dist/components/pages/security/login/01/ui/PageLogin01.svelte +2 -2
  22. package/dist/components/pages/security/login/02/ui/FormLogin02.svelte +7 -5
  23. package/dist/components/pages/security/login/02/ui/FormLogin02.svelte.d.ts +2 -0
  24. package/dist/components/pages/security/login/02/ui/FormLoginEmailPassword02.svelte +4 -2
  25. package/dist/components/pages/security/login/02/ui/FormLoginEmailPassword02.svelte.d.ts +2 -0
  26. package/dist/components/pages/security/login/02/ui/FormLoginPhonePassword02.svelte +4 -2
  27. package/dist/components/pages/security/login/02/ui/FormLoginPhonePassword02.svelte.d.ts +2 -0
  28. package/dist/components/pages/security/login/02/ui/FormLoginUsernamePassword02.svelte +4 -2
  29. package/dist/components/pages/security/login/02/ui/FormLoginUsernamePassword02.svelte.d.ts +2 -0
  30. package/dist/components/pages/security/login/03/ui/FormLogin03.svelte +8 -4
  31. package/dist/components/pages/security/login/03/ui/FormLogin03.svelte.d.ts +2 -0
  32. package/dist/components/pages/security/login/03/ui/FormLoginEmailPassword03.svelte +4 -2
  33. package/dist/components/pages/security/login/03/ui/FormLoginEmailPassword03.svelte.d.ts +2 -0
  34. package/dist/components/pages/security/login/03/ui/FormLoginPhonePassword03.svelte +4 -2
  35. package/dist/components/pages/security/login/03/ui/FormLoginPhonePassword03.svelte.d.ts +2 -0
  36. package/dist/components/pages/security/login/03/ui/FormLoginUsernamePassword03.svelte +4 -2
  37. package/dist/components/pages/security/login/03/ui/FormLoginUsernamePassword03.svelte.d.ts +2 -0
  38. package/dist/components/pages/security/login/PageLogin.svelte +30 -30
  39. package/dist/components/pages/security/register/01/ui/PageRegister01.svelte +21 -9
  40. package/dist/components/pages/security/register/01/ui/PageRegister01.svelte.d.ts +1 -0
  41. package/dist/components/pages/security/register/01/ui/{RegisterCard.svelte → RegisterCard01.svelte} +26 -22
  42. package/dist/components/pages/security/register/01/ui/{RegisterCard.svelte.d.ts → RegisterCard01.svelte.d.ts} +3 -3
  43. package/dist/components/pages/security/register/FormRegister.svelte +40 -14
  44. package/dist/components/pages/security/register/FormRegister.svelte.d.ts +3 -0
  45. package/dist/components/ui/avatar/avatar-fallback.svelte +29 -29
  46. package/dist/components/ui/avatar/avatar-image.svelte +38 -38
  47. package/dist/components/ui/avatar/avatar.svelte +39 -39
  48. package/dist/components/ui/badge/badge.svelte +46 -46
  49. package/dist/components/ui/banner/AdCardBanner.svelte +74 -74
  50. package/dist/components/ui/banner/CtaCardBanner.svelte +118 -118
  51. package/dist/components/ui/banner/CtaCardImageBanner.svelte +94 -94
  52. package/dist/components/ui/breadcrumb/core/breadcrumb-list.svelte +31 -31
  53. package/dist/components/ui/button/ButtonBack.svelte +18 -18
  54. package/dist/components/ui/button/ButtonLogin.svelte +15 -15
  55. package/dist/components/ui/button/ButtonLoginWith.svelte +57 -57
  56. package/dist/components/ui/button/ButtonSend.svelte +15 -15
  57. package/dist/components/ui/button/button.svelte +85 -85
  58. package/dist/components/ui/card/core/highlight/01/CardHighlight01.svelte +103 -103
  59. package/dist/components/ui/card/core/highlight/02/CardHighlight02.svelte +99 -99
  60. package/dist/components/ui/card/core/highlight/CardHighlight.svelte +22 -22
  61. package/dist/components/ui/card/core/media/01/CardMedia01.svelte +133 -133
  62. package/dist/components/ui/card/core/media/02/CardMedia02.svelte +127 -127
  63. package/dist/components/ui/card/core/media/CardMedia.svelte +18 -18
  64. package/dist/components/ui/card/core/product/01/CardProduct01.svelte +136 -136
  65. package/dist/components/ui/card/core/product/02/CardProduct02.svelte +124 -124
  66. package/dist/components/ui/card/core/product/CardProduct.svelte +22 -22
  67. package/dist/components/ui/card/core/profile/01/CardProfile01.svelte +134 -134
  68. package/dist/components/ui/card/core/profile/02/CardProfile02.svelte +132 -132
  69. package/dist/components/ui/card/core/profile/CardProfile.svelte +18 -18
  70. package/dist/components/ui/card/core/promotion/CardPromotion.svelte +139 -139
  71. package/dist/components/ui/card/core/promotion/CardPromotionPrice.svelte +32 -32
  72. package/dist/components/ui/card/core/shared/CardButton.svelte +42 -42
  73. package/dist/components/ui/card/core/shared/CardCart.svelte +36 -36
  74. package/dist/components/ui/card/core/shared/CardDescription.svelte +41 -41
  75. package/dist/components/ui/card/core/shared/CardFavorite.svelte +33 -33
  76. package/dist/components/ui/card/core/shared/CardLogo.svelte +19 -19
  77. package/dist/components/ui/card/core/shared/CardPhoneOrWhatsapp.svelte +45 -45
  78. package/dist/components/ui/card/core/shared/CardStarRating.svelte +24 -24
  79. package/dist/components/ui/card/core/shared/CardTags.svelte +95 -95
  80. package/dist/components/ui/card/core/shared/CardThumbnailVideo.svelte +232 -232
  81. package/dist/components/ui/card/core/shared/CardTitlePrice.svelte +24 -24
  82. package/dist/components/ui/card/core/shared/TruncatableText.svelte +49 -49
  83. package/dist/components/ui/carousel/carousel-content.svelte +56 -56
  84. package/dist/components/ui/carousel/carousel-item.svelte +29 -29
  85. package/dist/components/ui/carousel/carousel-next.svelte +40 -40
  86. package/dist/components/ui/carousel/carousel-previous.svelte +40 -40
  87. package/dist/components/ui/carousel/carousel.svelte +225 -225
  88. package/dist/components/ui/carousel/core/badge/ui/CarouselBadge.svelte +108 -108
  89. package/dist/components/ui/carousel/core/grid/shared/ui/CarouselGridSlot.svelte +38 -38
  90. package/dist/components/ui/carousel/core/hero/ui/CarouselHero.svelte +181 -181
  91. package/dist/components/ui/carousel/core/highlights/ui/CarouselHighlights.svelte +67 -67
  92. package/dist/components/ui/carousel/core/product/ui/CarouselProduct.svelte +57 -57
  93. package/dist/components/ui/carousel/core/promotion/ui/CarouselPromotion.svelte +67 -67
  94. package/dist/components/ui/carousel/core/shared/ui/CarouselHeader.svelte +59 -59
  95. package/dist/components/ui/checkbox/checkbox.svelte +96 -96
  96. package/dist/components/ui/collapsible/collapsible-content.svelte +30 -30
  97. package/dist/components/ui/collapsible/collapsible-trigger.svelte +51 -51
  98. package/dist/components/ui/collapsible/collapsible.svelte +66 -66
  99. package/dist/components/ui/data-table/flex-render.svelte +40 -40
  100. package/dist/components/ui/datatable/ui/DataTableActions.svelte +28 -28
  101. package/dist/components/ui/datatable/ui/DataTableCheckbox.svelte +22 -22
  102. package/dist/components/ui/datatable/ui/DataTableContent.svelte +59 -59
  103. package/dist/components/ui/datatable/ui/DataTableCore.svelte +148 -148
  104. package/dist/components/ui/datatable/ui/DataTableDragHandle.svelte +8 -8
  105. package/dist/components/ui/datatable/ui/DataTableListFilter.svelte +60 -60
  106. package/dist/components/ui/datatable/ui/DataTableListPagination.svelte +35 -35
  107. package/dist/components/ui/drawer/drawer-close.svelte +41 -41
  108. package/dist/components/ui/drawer/drawer-content.svelte +81 -81
  109. package/dist/components/ui/drawer/drawer-description.svelte +19 -19
  110. package/dist/components/ui/drawer/drawer-footer.svelte +20 -20
  111. package/dist/components/ui/drawer/drawer-header.svelte +20 -20
  112. package/dist/components/ui/drawer/drawer-nested.svelte +34 -34
  113. package/dist/components/ui/drawer/drawer-overlay.svelte +25 -25
  114. package/dist/components/ui/drawer/drawer-portal.svelte +19 -19
  115. package/dist/components/ui/drawer/drawer-title.svelte +19 -19
  116. package/dist/components/ui/drawer/drawer-trigger.svelte +42 -42
  117. package/dist/components/ui/drawer/drawer.svelte +74 -74
  118. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +25 -25
  119. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +69 -69
  120. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +106 -106
  121. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +27 -27
  122. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +21 -21
  123. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +60 -60
  124. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +27 -27
  125. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +6 -6
  126. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +43 -43
  127. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +70 -70
  128. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +20 -20
  129. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +33 -33
  130. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +57 -57
  131. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +76 -76
  132. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +68 -68
  133. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +53 -53
  134. package/dist/components/ui/empty/empty-content.svelte +19 -19
  135. package/dist/components/ui/empty/empty-description.svelte +19 -19
  136. package/dist/components/ui/empty/empty-header.svelte +19 -19
  137. package/dist/components/ui/empty/empty-media.svelte +41 -41
  138. package/dist/components/ui/empty/empty-title.svelte +19 -19
  139. package/dist/components/ui/empty/empty.svelte +19 -19
  140. package/dist/components/ui/footer/ui/Footer.svelte +18 -18
  141. package/dist/components/ui/form/data/InputIconDefault.svelte.js +2 -1
  142. package/dist/components/ui/form/data/InputLabel.svelte.d.ts +3 -0
  143. package/dist/components/ui/form/ui/calendar/Calendar.svelte +194 -0
  144. package/dist/components/ui/form/ui/calendar/Calendar.svelte.d.ts +15 -0
  145. package/dist/components/ui/form/ui/calendar/CalendarCard.svelte +90 -0
  146. package/dist/components/ui/form/ui/calendar/CalendarCard.svelte.d.ts +20 -0
  147. package/dist/components/ui/form/ui/calendar/DaysGrid.svelte +76 -0
  148. package/dist/components/ui/form/ui/calendar/DaysGrid.svelte.d.ts +17 -0
  149. package/dist/components/ui/form/ui/calendar/MonthSelect.svelte +50 -0
  150. package/dist/components/ui/form/ui/calendar/MonthSelect.svelte.d.ts +10 -0
  151. package/dist/components/ui/form/ui/calendar/YearSelect.svelte +117 -0
  152. package/dist/components/ui/form/ui/calendar/YearSelect.svelte.d.ts +15 -0
  153. package/dist/components/ui/form/ui/calendar/index.d.ts +5 -0
  154. package/dist/components/ui/form/ui/calendar/index.js +5 -0
  155. package/dist/components/ui/form/ui/calendar/utils.d.ts +26 -0
  156. package/dist/components/ui/form/ui/calendar/utils.js +89 -0
  157. package/dist/components/ui/form/ui/input-base.svelte +83 -81
  158. package/dist/components/ui/form/ui/input-calendar-interval.svelte +179 -0
  159. package/dist/components/ui/form/ui/input-calendar-interval.svelte.d.ts +14 -0
  160. package/dist/components/ui/form/ui/input-calendar.svelte +110 -0
  161. package/dist/components/ui/form/ui/input-calendar.svelte.d.ts +9 -0
  162. package/dist/components/ui/form/ui/input-email-or-phone.svelte +23 -23
  163. package/dist/components/ui/form/ui/input-email.svelte +23 -23
  164. package/dist/components/ui/form/ui/input-password-confirm.svelte +23 -23
  165. package/dist/components/ui/form/ui/input-password.svelte +23 -23
  166. package/dist/components/ui/form/ui/input-phone.svelte +37 -33
  167. package/dist/components/ui/form/ui/input-select.svelte +210 -158
  168. package/dist/components/ui/form/ui/input-select.svelte.d.ts +5 -9
  169. package/dist/components/ui/form/ui/input-username.svelte +22 -22
  170. package/dist/components/ui/grid/core/ui/01/Grid01.svelte +30 -30
  171. package/dist/components/ui/grid/core/ui/02/Grid02.svelte +30 -30
  172. package/dist/components/ui/grid/core/ui/ItemsPanel.svelte +26 -26
  173. package/dist/components/ui/grid/core/ui/ItemsPanelCarousel.svelte +37 -37
  174. package/dist/components/ui/grid/core/ui/ItemsPanelGrid.svelte +43 -43
  175. package/dist/components/ui/grid/core/ui/ItemsSimpleGrid.svelte +45 -45
  176. package/dist/components/ui/grid/core/ui/shared/DescriptionGrid.svelte +23 -23
  177. package/dist/components/ui/grid/core/ui/shared/IconRenderGrid.svelte +23 -23
  178. package/dist/components/ui/grid/core/ui/shared/TitleGrid.svelte +19 -19
  179. package/dist/components/ui/hero/SimpleHero.svelte +65 -65
  180. package/dist/components/ui/input-otp/input-otp-group.svelte +22 -22
  181. package/dist/components/ui/input-otp/input-otp-separator.svelte +27 -27
  182. package/dist/components/ui/input-otp/input-otp-slot.svelte +63 -63
  183. package/dist/components/ui/input-otp/input-otp.svelte +181 -181
  184. package/dist/components/ui/label/core/LabelOr.svelte +25 -25
  185. package/dist/components/ui/label/label.svelte +19 -19
  186. package/dist/components/ui/language-switcher/language-switcher.svelte +48 -48
  187. package/dist/components/ui/light-switch/light-switch.svelte +48 -48
  188. package/dist/components/ui/link/link-forget-password.svelte +12 -12
  189. package/dist/components/ui/link/link-privacy-polity.svelte +12 -12
  190. package/dist/components/ui/link/link-terms-of-service.svelte +12 -12
  191. package/dist/components/ui/modal/core/ui/ModalCore.svelte +132 -132
  192. package/dist/components/ui/modal/grid/ui/02/ModalGridSelection02.svelte +146 -146
  193. package/dist/components/ui/modal/share/ui/ModalShareSelection.svelte +156 -156
  194. package/dist/components/ui/nav/ui/ComplexMenu.svelte +51 -51
  195. package/dist/components/ui/nav/ui/Menu.svelte +72 -72
  196. package/dist/components/ui/nav/ui/SimpleMenu.svelte +14 -14
  197. package/dist/components/ui/nav/ui/mobile/ComplexMenuMobile.svelte +125 -125
  198. package/dist/components/ui/nav/ui/mobile/MenuMobile.svelte +54 -54
  199. package/dist/components/ui/nav/ui/shared/MenuButton.svelte +51 -51
  200. package/dist/components/ui/nav/ui/shared/MenuLinks.svelte +40 -40
  201. package/dist/components/ui/nav/ui/shared/MenuListItem.svelte +44 -44
  202. package/dist/components/ui/nav/ui/shared/MenuLogo.svelte +13 -13
  203. package/dist/components/ui/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte +30 -30
  204. package/dist/components/ui/nav/ui/shared/navigation/NavDropdown.svelte +88 -87
  205. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItem.svelte +17 -17
  206. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemCard.svelte +53 -53
  207. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemGrid.svelte +36 -36
  208. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemList.svelte +24 -24
  209. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItems.svelte +21 -21
  210. package/dist/components/ui/panel/CarouselSlot.svelte +57 -57
  211. package/dist/components/ui/panel/LeftHero.svelte +114 -114
  212. package/dist/components/ui/panel/NotFoundEmpty.svelte +66 -66
  213. package/dist/components/ui/phone-input/country-selector.svelte +87 -87
  214. package/dist/components/ui/phone-input/country-selector.svelte.d.ts +2 -2
  215. package/dist/components/ui/phone-input/flag.svelte +11 -11
  216. package/dist/components/ui/phone-input/phone-input.svelte +163 -148
  217. package/dist/components/ui/phone-input/phone-input.svelte.d.ts +2 -2
  218. package/dist/components/ui/popover/popover-close.svelte +25 -25
  219. package/dist/components/ui/popover/popover-content.svelte +92 -92
  220. package/dist/components/ui/popover/popover-portal.svelte +6 -6
  221. package/dist/components/ui/popover/popover-trigger.svelte +68 -68
  222. package/dist/components/ui/popover/popover.svelte +53 -53
  223. package/dist/components/ui/search/SearchInput.svelte +32 -32
  224. package/dist/components/ui/search/shared/SearchInputCore.svelte +66 -66
  225. package/dist/components/ui/separator/separator.svelte +28 -28
  226. package/dist/components/ui/sidebar/core/MenuBarSidebar.svelte +70 -70
  227. package/dist/components/ui/sidebar/core/ui/navbar/NavMenuBarSidebar.svelte +97 -97
  228. package/dist/components/ui/sidebar/core/ui/navbar/NavMenuBottomSidebar.svelte +33 -33
  229. package/dist/components/ui/sidebar/core/ui/navbar/NavMenuTopBarSidebar.svelte +101 -101
  230. package/dist/components/ui/sidebar/core/ui/navbar/nav-menu-header-sidebar.svelte +77 -77
  231. package/dist/components/ui/sidebar/sidebar-content.svelte +24 -24
  232. package/dist/components/ui/sidebar/sidebar-footer.svelte +21 -21
  233. package/dist/components/ui/sidebar/sidebar-group-content.svelte +21 -21
  234. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +38 -38
  235. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +70 -70
  236. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +39 -39
  237. package/dist/components/ui/sidebar/sidebar-provider.svelte +62 -62
  238. package/dist/components/ui/sidebar/sidebar-rail.svelte +36 -36
  239. package/dist/components/ui/sidebar/sidebar-separator.svelte +21 -21
  240. package/dist/components/ui/sidebar/sidebar-trigger.svelte +36 -36
  241. package/dist/components/ui/sidebar/sidebar.svelte +118 -118
  242. package/dist/components/ui/skeleton/skeleton.svelte +19 -19
  243. package/dist/components/ui/star-rating/star-rating-star.svelte +66 -66
  244. package/dist/components/ui/star-rating/star-rating.svelte +149 -149
  245. package/dist/components/ui/table/table-body.svelte +15 -15
  246. package/dist/components/ui/table/table-caption.svelte +20 -20
  247. package/dist/components/ui/table/table-cell.svelte +15 -15
  248. package/dist/components/ui/table/table-footer.svelte +20 -20
  249. package/dist/components/ui/table/table-head.svelte +15 -15
  250. package/dist/components/ui/table/table-header.svelte +20 -20
  251. package/dist/components/ui/table/table-row.svelte +15 -15
  252. package/dist/components/ui/table/table.svelte +17 -17
  253. package/dist/components/ui/tabs/ui/tab-underline.svelte +43 -43
  254. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte +33 -33
  255. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte +40 -40
  256. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte +91 -91
  257. package/dist/components/ui/underline-tabs/underline-tabs.svelte +61 -61
  258. package/dist/docs/ApiTable.svelte +42 -42
  259. package/dist/docs/CodeBlock.svelte +26 -26
  260. package/dist/docs/DocsHeader.svelte +25 -25
  261. package/dist/docs/DocsSidebar.svelte +108 -156
  262. package/dist/docs/components.js +638 -563
  263. package/dist/globals.css +68 -13
  264. package/dist/i18n/langs/en.d.ts +7 -0
  265. package/dist/i18n/langs/en.js +7 -0
  266. package/dist/i18n/langs/pt.d.ts +7 -0
  267. package/dist/i18n/langs/pt.js +7 -0
  268. package/dist/i18n/translations.d.ts +14 -0
  269. package/dist/index.d.ts +23 -0
  270. package/dist/index.js +23 -0
  271. package/dist/styles/globals.css +283 -283
  272. package/package.json +81 -81
  273. package/dist/components/pages/security/login/01/ui/FormRegister.svelte +0 -28
  274. package/dist/components/pages/security/login/01/ui/FormRegister.svelte.d.ts +0 -3
@@ -1,97 +1,97 @@
1
- <script lang="ts">
2
- import * as Collapsible from "../../../../collapsible/index.js";
3
- import * as Sidebar from "../../../index.js";
4
- import { ChevronRightIcon } from "@hugeicons/core-free-icons";
5
- import { HugeiconsIcon } from "@hugeicons/svelte";
6
- import type {
7
- NavMenuAndSubmenuSidebarProps,
8
- NavMenuItem,
9
- NavMenuSidebarProps,
10
- } from "../../data/nav-menu-sidebar";
11
-
12
- let {
13
- items,
14
- }: {
15
- items: NavMenuItem[];
16
- } = $props();
17
-
18
- // Internal key for items without a group; never collides with a real name
19
- // because it's not a string accessible to whoever defines the items.
20
- const UNGROUPED = Symbol("ungrouped");
21
-
22
- function hasSubmenus(
23
- item: NavMenuSidebarProps | NavMenuAndSubmenuSidebarProps,
24
- ): item is NavMenuAndSubmenuSidebarProps {
25
- return "submenus" in item && Array.isArray(item.submenus);
26
- }
27
-
28
- let groupedItems = $derived(
29
- Map.groupBy(items, (item) => item.group?.name ?? UNGROUPED),
30
- );
31
- </script>
32
-
33
- {#snippet menuItem(item: NavMenuItem)}
34
- {#if hasSubmenus(item)}
35
- <Collapsible.Root open={item.isActive} class="group/collapsible">
36
- {#snippet child({ props })}
37
- <Sidebar.MenuItem {...props}>
38
- <Collapsible.Trigger>
39
- {#snippet child({ props })}
40
- <Sidebar.MenuButton {...props} tooltipContent={item.title}>
41
- {#if item.icon}
42
- <HugeiconsIcon icon={item.icon} />
43
- {/if}
44
- <span>{item.title}</span>
45
- <HugeiconsIcon
46
- icon={ChevronRightIcon}
47
- class="ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90"
48
- />
49
- </Sidebar.MenuButton>
50
- {/snippet}
51
- </Collapsible.Trigger>
52
- <Collapsible.Content>
53
- <Sidebar.MenuSub>
54
- {#each item.submenus ?? [] as subItem (subItem.title)}
55
- <Sidebar.MenuSubItem>
56
- <Sidebar.MenuSubButton>
57
- {#snippet child({ props })}
58
- <a href={subItem.url} {...props}>
59
- <span>{subItem.title}</span>
60
- </a>
61
- {/snippet}
62
- </Sidebar.MenuSubButton>
63
- </Sidebar.MenuSubItem>
64
- {/each}
65
- </Sidebar.MenuSub>
66
- </Collapsible.Content>
67
- </Sidebar.MenuItem>
68
- {/snippet}
69
- </Collapsible.Root>
70
- {:else}
71
- <Sidebar.MenuItem>
72
- <Sidebar.MenuButton>
73
- {#snippet child({ props })}
74
- <a href={item.url} {...props}>
75
- {#if item.icon}
76
- <HugeiconsIcon icon={item.icon} />
77
- {/if}
78
- <span>{item.title}</span>
79
- </a>
80
- {/snippet}
81
- </Sidebar.MenuButton>
82
- </Sidebar.MenuItem>
83
- {/if}
84
- {/snippet}
85
-
86
- {#each groupedItems as [groupLabel, groupItems] (typeof groupLabel === "string" ? groupLabel : "ungrouped")}
87
- <Sidebar.Group>
88
- {#if typeof groupLabel === "string"}
89
- <Sidebar.GroupLabel>{groupLabel}</Sidebar.GroupLabel>
90
- {/if}
91
- <Sidebar.Menu>
92
- {#each groupItems as item (item.title)}
93
- {@render menuItem(item)}
94
- {/each}
95
- </Sidebar.Menu>
96
- </Sidebar.Group>
97
- {/each}
1
+ <script lang="ts">
2
+ import * as Collapsible from "../../../../collapsible/index.js";
3
+ import * as Sidebar from "../../../index.js";
4
+ import { ChevronRightIcon } from "@hugeicons/core-free-icons";
5
+ import { HugeiconsIcon } from "@hugeicons/svelte";
6
+ import type {
7
+ NavMenuAndSubmenuSidebarProps,
8
+ NavMenuItem,
9
+ NavMenuSidebarProps,
10
+ } from "../../data/nav-menu-sidebar";
11
+
12
+ let {
13
+ items,
14
+ }: {
15
+ items: NavMenuItem[];
16
+ } = $props();
17
+
18
+ // Internal key for items without a group; never collides with a real name
19
+ // because it's not a string accessible to whoever defines the items.
20
+ const UNGROUPED = Symbol("ungrouped");
21
+
22
+ function hasSubmenus(
23
+ item: NavMenuSidebarProps | NavMenuAndSubmenuSidebarProps,
24
+ ): item is NavMenuAndSubmenuSidebarProps {
25
+ return "submenus" in item && Array.isArray(item.submenus);
26
+ }
27
+
28
+ let groupedItems = $derived(
29
+ Map.groupBy(items, (item) => item.group?.name ?? UNGROUPED),
30
+ );
31
+ </script>
32
+
33
+ {#snippet menuItem(item: NavMenuItem)}
34
+ {#if hasSubmenus(item)}
35
+ <Collapsible.Root open={item.isActive} class="group/collapsible">
36
+ {#snippet child({ props })}
37
+ <Sidebar.MenuItem {...props}>
38
+ <Collapsible.Trigger>
39
+ {#snippet child({ props })}
40
+ <Sidebar.MenuButton {...props} tooltipContent={item.title}>
41
+ {#if item.icon}
42
+ <HugeiconsIcon icon={item.icon} />
43
+ {/if}
44
+ <span>{item.title}</span>
45
+ <HugeiconsIcon
46
+ icon={ChevronRightIcon}
47
+ class="ms-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90"
48
+ />
49
+ </Sidebar.MenuButton>
50
+ {/snippet}
51
+ </Collapsible.Trigger>
52
+ <Collapsible.Content>
53
+ <Sidebar.MenuSub>
54
+ {#each item.submenus ?? [] as subItem (subItem.title)}
55
+ <Sidebar.MenuSubItem>
56
+ <Sidebar.MenuSubButton>
57
+ {#snippet child({ props })}
58
+ <a href={subItem.url} {...props}>
59
+ <span>{subItem.title}</span>
60
+ </a>
61
+ {/snippet}
62
+ </Sidebar.MenuSubButton>
63
+ </Sidebar.MenuSubItem>
64
+ {/each}
65
+ </Sidebar.MenuSub>
66
+ </Collapsible.Content>
67
+ </Sidebar.MenuItem>
68
+ {/snippet}
69
+ </Collapsible.Root>
70
+ {:else}
71
+ <Sidebar.MenuItem>
72
+ <Sidebar.MenuButton>
73
+ {#snippet child({ props })}
74
+ <a href={item.url} {...props}>
75
+ {#if item.icon}
76
+ <HugeiconsIcon icon={item.icon} />
77
+ {/if}
78
+ <span>{item.title}</span>
79
+ </a>
80
+ {/snippet}
81
+ </Sidebar.MenuButton>
82
+ </Sidebar.MenuItem>
83
+ {/if}
84
+ {/snippet}
85
+
86
+ {#each groupedItems as [groupLabel, groupItems] (typeof groupLabel === "string" ? groupLabel : "ungrouped")}
87
+ <Sidebar.Group>
88
+ {#if typeof groupLabel === "string"}
89
+ <Sidebar.GroupLabel>{groupLabel}</Sidebar.GroupLabel>
90
+ {/if}
91
+ <Sidebar.Menu>
92
+ {#each groupItems as item (item.title)}
93
+ {@render menuItem(item)}
94
+ {/each}
95
+ </Sidebar.Menu>
96
+ </Sidebar.Group>
97
+ {/each}
@@ -1,33 +1,33 @@
1
- <script lang="ts">
2
- import * as Sidebar from "../../../index.js";
3
- import type { WithoutChildren } from "../../../../../../utils.js";
4
- import type { ComponentProps } from "svelte";
5
- import type { NavMenuSidebarProps } from "../../data/nav-menu-sidebar";
6
- import { HugeiconsIcon } from "@hugeicons/svelte";
7
-
8
- let {
9
- items,
10
- ...restProps
11
- }: { items?: NavMenuSidebarProps[] } & WithoutChildren<
12
- ComponentProps<typeof Sidebar.Group>
13
- > = $props();
14
- </script>
15
-
16
- <Sidebar.Group {...restProps}>
17
- <Sidebar.GroupContent>
18
- <Sidebar.Menu>
19
- {#each items as item (item.title)}
20
- <Sidebar.MenuItem>
21
- <Sidebar.MenuButton>
22
- {#snippet child({ props })}
23
- <a href={item.url} {...props}>
24
- <HugeiconsIcon icon={item.icon} size={16} />
25
- <span>{item.title}</span>
26
- </a>
27
- {/snippet}
28
- </Sidebar.MenuButton>
29
- </Sidebar.MenuItem>
30
- {/each}
31
- </Sidebar.Menu>
32
- </Sidebar.GroupContent>
33
- </Sidebar.Group>
1
+ <script lang="ts">
2
+ import * as Sidebar from "../../../index.js";
3
+ import type { WithoutChildren } from "../../../../../../utils.js";
4
+ import type { ComponentProps } from "svelte";
5
+ import type { NavMenuSidebarProps } from "../../data/nav-menu-sidebar";
6
+ import { HugeiconsIcon } from "@hugeicons/svelte";
7
+
8
+ let {
9
+ items,
10
+ ...restProps
11
+ }: { items?: NavMenuSidebarProps[] } & WithoutChildren<
12
+ ComponentProps<typeof Sidebar.Group>
13
+ > = $props();
14
+ </script>
15
+
16
+ <Sidebar.Group {...restProps}>
17
+ <Sidebar.GroupContent>
18
+ <Sidebar.Menu>
19
+ {#each items as item (item.title)}
20
+ <Sidebar.MenuItem>
21
+ <Sidebar.MenuButton>
22
+ {#snippet child({ props })}
23
+ <a href={item.url} {...props}>
24
+ <HugeiconsIcon icon={item.icon} size={16} />
25
+ <span>{item.title}</span>
26
+ </a>
27
+ {/snippet}
28
+ </Sidebar.MenuButton>
29
+ </Sidebar.MenuItem>
30
+ {/each}
31
+ </Sidebar.Menu>
32
+ </Sidebar.GroupContent>
33
+ </Sidebar.Group>
@@ -1,101 +1,101 @@
1
- <script lang="ts">
2
- import * as DropdownMenu from "../../../../dropdown-menu/index.js";
3
- import * as Sidebar from "../../../index.js";
4
- import { useSidebar } from "../../../index.js";
5
- import type { NavTopBarSidebarItem } from "../../data/nav-top-bar-sidebar";
6
- import { HugeiconsIcon } from "@hugeicons/svelte";
7
- import { UnfoldMoreIcon } from "@hugeicons/core-free-icons";
8
-
9
- let { content, dropdownMenu }: NavTopBarSidebarItem = $props();
10
- const sidebar = useSidebar();
11
- </script>
12
-
13
- <Sidebar.Menu>
14
- <Sidebar.MenuItem>
15
- <DropdownMenu.Root>
16
- <DropdownMenu.Trigger>
17
- {#snippet child({ props })}
18
- <Sidebar.MenuButton
19
- {...props}
20
- size="lg"
21
- class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
22
- >
23
- <div
24
- class="bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg"
25
- >
26
- <content.logo class="size-4" />
27
- </div>
28
- <div
29
- class="grid flex-1 text-start text-sm leading-tight"
30
- >
31
- <span class="truncate font-medium">
32
- {content.title}
33
- </span>
34
- <span class="truncate text-xs"
35
- >{content.subtitle}</span
36
- >
37
- </div>
38
- {#if dropdownMenu}
39
- <HugeiconsIcon
40
- icon={UnfoldMoreIcon}
41
- class="ms-auto"
42
- />
43
- {/if}
44
- </Sidebar.MenuButton>
45
- {/snippet}
46
- </DropdownMenu.Trigger>
47
- {#if dropdownMenu}
48
- <DropdownMenu.Content
49
- class="w-(--bits-dropdown-menu-anchor-width) min-w-56 rounded-lg"
50
- align="start"
51
- side={sidebar.isMobile ? "bottom" : "right"}
52
- sideOffset={4}
53
- >
54
- {#if dropdownMenu.header}
55
- <DropdownMenu.Label
56
- class="text-muted-foreground text-xs"
57
- >
58
- {#if dropdownMenu.header.icon}
59
- <dropdownMenu.header.icon
60
- class="size-3.5 shrink-0"
61
- />
62
- {/if}
63
- {dropdownMenu.header.text}
64
- </DropdownMenu.Label>
65
- {/if}
66
- {#each dropdownMenu.items as it, index (index)}
67
- <DropdownMenu.Item
68
- onSelect={it.onclick}
69
- class="gap-2 p-2"
70
- >
71
- <div
72
- class="flex size-6 items-center justify-center rounded-md border"
73
- >
74
- <it.icon class="size-3.5 shrink-0" />
75
- </div>
76
- {it.text}
77
- <DropdownMenu.Shortcut>
78
- ⌘{index + 1}
79
- </DropdownMenu.Shortcut>
80
- </DropdownMenu.Item>
81
- {/each}
82
- {#if dropdownMenu.footer}
83
- <DropdownMenu.Separator />
84
- <DropdownMenu.Item class="gap-2 p-2">
85
- <div
86
- class="flex size-6 items-center justify-center rounded-md border bg-transparent"
87
- >
88
- {#if dropdownMenu.footer.icon}
89
- <dropdownMenu.footer.icon class="size-4" />
90
- {/if}
91
- </div>
92
- <div class="text-muted-foreground font-medium">
93
- {dropdownMenu.footer.text}
94
- </div>
95
- </DropdownMenu.Item>
96
- {/if}
97
- </DropdownMenu.Content>
98
- {/if}
99
- </DropdownMenu.Root>
100
- </Sidebar.MenuItem>
101
- </Sidebar.Menu>
1
+ <script lang="ts">
2
+ import * as DropdownMenu from "../../../../dropdown-menu/index.js";
3
+ import * as Sidebar from "../../../index.js";
4
+ import { useSidebar } from "../../../index.js";
5
+ import type { NavTopBarSidebarItem } from "../../data/nav-top-bar-sidebar";
6
+ import { HugeiconsIcon } from "@hugeicons/svelte";
7
+ import { UnfoldMoreIcon } from "@hugeicons/core-free-icons";
8
+
9
+ let { content, dropdownMenu }: NavTopBarSidebarItem = $props();
10
+ const sidebar = useSidebar();
11
+ </script>
12
+
13
+ <Sidebar.Menu>
14
+ <Sidebar.MenuItem>
15
+ <DropdownMenu.Root>
16
+ <DropdownMenu.Trigger>
17
+ {#snippet child({ props })}
18
+ <Sidebar.MenuButton
19
+ {...props}
20
+ size="lg"
21
+ class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
22
+ >
23
+ <div
24
+ class="bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg"
25
+ >
26
+ <content.logo class="size-4" />
27
+ </div>
28
+ <div
29
+ class="grid flex-1 text-start text-sm leading-tight"
30
+ >
31
+ <span class="truncate font-medium">
32
+ {content.title}
33
+ </span>
34
+ <span class="truncate text-xs"
35
+ >{content.subtitle}</span
36
+ >
37
+ </div>
38
+ {#if dropdownMenu}
39
+ <HugeiconsIcon
40
+ icon={UnfoldMoreIcon}
41
+ class="ms-auto"
42
+ />
43
+ {/if}
44
+ </Sidebar.MenuButton>
45
+ {/snippet}
46
+ </DropdownMenu.Trigger>
47
+ {#if dropdownMenu}
48
+ <DropdownMenu.Content
49
+ class="w-(--bits-dropdown-menu-anchor-width) min-w-56 rounded-lg"
50
+ align="start"
51
+ side={sidebar.isMobile ? "bottom" : "right"}
52
+ sideOffset={4}
53
+ >
54
+ {#if dropdownMenu.header}
55
+ <DropdownMenu.Label
56
+ class="text-muted-foreground text-xs"
57
+ >
58
+ {#if dropdownMenu.header.icon}
59
+ <dropdownMenu.header.icon
60
+ class="size-3.5 shrink-0"
61
+ />
62
+ {/if}
63
+ {dropdownMenu.header.text}
64
+ </DropdownMenu.Label>
65
+ {/if}
66
+ {#each dropdownMenu.items as it, index (index)}
67
+ <DropdownMenu.Item
68
+ onSelect={it.onclick}
69
+ class="gap-2 p-2"
70
+ >
71
+ <div
72
+ class="flex size-6 items-center justify-center rounded-md border"
73
+ >
74
+ <it.icon class="size-3.5 shrink-0" />
75
+ </div>
76
+ {it.text}
77
+ <DropdownMenu.Shortcut>
78
+ ⌘{index + 1}
79
+ </DropdownMenu.Shortcut>
80
+ </DropdownMenu.Item>
81
+ {/each}
82
+ {#if dropdownMenu.footer}
83
+ <DropdownMenu.Separator />
84
+ <DropdownMenu.Item class="gap-2 p-2">
85
+ <div
86
+ class="flex size-6 items-center justify-center rounded-md border bg-transparent"
87
+ >
88
+ {#if dropdownMenu.footer.icon}
89
+ <dropdownMenu.footer.icon class="size-4" />
90
+ {/if}
91
+ </div>
92
+ <div class="text-muted-foreground font-medium">
93
+ {dropdownMenu.footer.text}
94
+ </div>
95
+ </DropdownMenu.Item>
96
+ {/if}
97
+ </DropdownMenu.Content>
98
+ {/if}
99
+ </DropdownMenu.Root>
100
+ </Sidebar.MenuItem>
101
+ </Sidebar.Menu>
@@ -1,77 +1,77 @@
1
- <script lang="ts">
2
- import * as DropdownMenu from "../../../../dropdown-menu/index.js";
3
- import * as Sidebar from "../../../index.js";
4
- import { useSidebar } from "../../../index.js";
5
- import { HugeiconsIcon } from "@hugeicons/svelte";
6
- import { PlusSignIcon, UnfoldMoreIcon } from "@hugeicons/core-free-icons";
7
-
8
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
- let { teams }: { teams: { name: string; logo: any; plan: string }[] } =
10
- $props();
11
- const sidebar = useSidebar();
12
-
13
- // svelte-ignore state_referenced_locally
14
- let activeTeam = $state(teams[0]);
15
- </script>
16
-
17
- <Sidebar.Menu>
18
- <Sidebar.MenuItem>
19
- <DropdownMenu.Root>
20
- <DropdownMenu.Trigger>
21
- {#snippet child({ props })}
22
- <Sidebar.MenuButton
23
- {...props}
24
- size="lg"
25
- class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
26
- >
27
- <div
28
- class="bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg"
29
- >
30
- <activeTeam.logo class="size-4" />
31
- </div>
32
- <div class="grid flex-1 text-start text-sm leading-tight">
33
- <span class="truncate font-medium">
34
- {activeTeam.name}
35
- </span>
36
- <span class="truncate text-xs">{activeTeam.plan}</span>
37
- </div>
38
- <HugeiconsIcon icon={UnfoldMoreIcon} class="ms-auto" />
39
- </Sidebar.MenuButton>
40
- {/snippet}
41
- </DropdownMenu.Trigger>
42
- <DropdownMenu.Content
43
- class="w-(--bits-dropdown-menu-anchor-width) min-w-56 rounded-lg"
44
- align="start"
45
- side={sidebar.isMobile ? "bottom" : "right"}
46
- sideOffset={4}
47
- >
48
- <DropdownMenu.Label class="text-muted-foreground text-xs"
49
- >Teams</DropdownMenu.Label
50
- >
51
- {#each teams as team, index (team.name)}
52
- <DropdownMenu.Item
53
- onSelect={() => (activeTeam = team)}
54
- class="gap-2 p-2"
55
- >
56
- <div
57
- class="flex size-6 items-center justify-center rounded-md border"
58
- >
59
- <team.logo class="size-3.5 shrink-0" />
60
- </div>
61
- {team.name}
62
- <DropdownMenu.Shortcut>⌘{index + 1}</DropdownMenu.Shortcut>
63
- </DropdownMenu.Item>
64
- {/each}
65
- <DropdownMenu.Separator />
66
- <DropdownMenu.Item class="gap-2 p-2">
67
- <div
68
- class="flex size-6 items-center justify-center rounded-md border bg-transparent"
69
- >
70
- <HugeiconsIcon icon={PlusSignIcon} class="size-4" />
71
- </div>
72
- <div class="text-muted-foreground font-medium">Add team</div>
73
- </DropdownMenu.Item>
74
- </DropdownMenu.Content>
75
- </DropdownMenu.Root>
76
- </Sidebar.MenuItem>
77
- </Sidebar.Menu>
1
+ <script lang="ts">
2
+ import * as DropdownMenu from "../../../../dropdown-menu/index.js";
3
+ import * as Sidebar from "../../../index.js";
4
+ import { useSidebar } from "../../../index.js";
5
+ import { HugeiconsIcon } from "@hugeicons/svelte";
6
+ import { PlusSignIcon, UnfoldMoreIcon } from "@hugeicons/core-free-icons";
7
+
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ let { teams }: { teams: { name: string; logo: any; plan: string }[] } =
10
+ $props();
11
+ const sidebar = useSidebar();
12
+
13
+ // svelte-ignore state_referenced_locally
14
+ let activeTeam = $state(teams[0]);
15
+ </script>
16
+
17
+ <Sidebar.Menu>
18
+ <Sidebar.MenuItem>
19
+ <DropdownMenu.Root>
20
+ <DropdownMenu.Trigger>
21
+ {#snippet child({ props })}
22
+ <Sidebar.MenuButton
23
+ {...props}
24
+ size="lg"
25
+ class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
26
+ >
27
+ <div
28
+ class="bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg"
29
+ >
30
+ <activeTeam.logo class="size-4" />
31
+ </div>
32
+ <div class="grid flex-1 text-start text-sm leading-tight">
33
+ <span class="truncate font-medium">
34
+ {activeTeam.name}
35
+ </span>
36
+ <span class="truncate text-xs">{activeTeam.plan}</span>
37
+ </div>
38
+ <HugeiconsIcon icon={UnfoldMoreIcon} class="ms-auto" />
39
+ </Sidebar.MenuButton>
40
+ {/snippet}
41
+ </DropdownMenu.Trigger>
42
+ <DropdownMenu.Content
43
+ class="w-(--bits-dropdown-menu-anchor-width) min-w-56 rounded-lg"
44
+ align="start"
45
+ side={sidebar.isMobile ? "bottom" : "right"}
46
+ sideOffset={4}
47
+ >
48
+ <DropdownMenu.Label class="text-muted-foreground text-xs"
49
+ >Teams</DropdownMenu.Label
50
+ >
51
+ {#each teams as team, index (team.name)}
52
+ <DropdownMenu.Item
53
+ onSelect={() => (activeTeam = team)}
54
+ class="gap-2 p-2"
55
+ >
56
+ <div
57
+ class="flex size-6 items-center justify-center rounded-md border"
58
+ >
59
+ <team.logo class="size-3.5 shrink-0" />
60
+ </div>
61
+ {team.name}
62
+ <DropdownMenu.Shortcut>⌘{index + 1}</DropdownMenu.Shortcut>
63
+ </DropdownMenu.Item>
64
+ {/each}
65
+ <DropdownMenu.Separator />
66
+ <DropdownMenu.Item class="gap-2 p-2">
67
+ <div
68
+ class="flex size-6 items-center justify-center rounded-md border bg-transparent"
69
+ >
70
+ <HugeiconsIcon icon={PlusSignIcon} class="size-4" />
71
+ </div>
72
+ <div class="text-muted-foreground font-medium">Add team</div>
73
+ </DropdownMenu.Item>
74
+ </DropdownMenu.Content>
75
+ </DropdownMenu.Root>
76
+ </Sidebar.MenuItem>
77
+ </Sidebar.Menu>