negodesign 0.0.77 → 0.0.79

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 (278) 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/index.d.ts +1 -1
  192. package/dist/components/ui/modal/core/types.d.ts +2 -1
  193. package/dist/components/ui/modal/core/ui/ModalCore.svelte +132 -132
  194. package/dist/components/ui/modal/grid/types.d.ts +6 -5
  195. package/dist/components/ui/modal/grid/ui/02/ModalGridSelection02.svelte +146 -146
  196. package/dist/components/ui/modal/share/ui/ModalShareSelection.svelte +156 -156
  197. package/dist/components/ui/nav/ui/ComplexMenu.svelte +51 -51
  198. package/dist/components/ui/nav/ui/Menu.svelte +72 -72
  199. package/dist/components/ui/nav/ui/SimpleMenu.svelte +14 -14
  200. package/dist/components/ui/nav/ui/mobile/ComplexMenuMobile.svelte +125 -125
  201. package/dist/components/ui/nav/ui/mobile/MenuMobile.svelte +54 -54
  202. package/dist/components/ui/nav/ui/shared/MenuButton.svelte +51 -51
  203. package/dist/components/ui/nav/ui/shared/MenuLinks.svelte +40 -40
  204. package/dist/components/ui/nav/ui/shared/MenuListItem.svelte +44 -44
  205. package/dist/components/ui/nav/ui/shared/MenuLogo.svelte +13 -13
  206. package/dist/components/ui/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte +30 -30
  207. package/dist/components/ui/nav/ui/shared/navigation/NavDropdown.svelte +87 -87
  208. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItem.svelte +17 -17
  209. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemCard.svelte +53 -53
  210. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemGrid.svelte +36 -36
  211. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemList.svelte +24 -24
  212. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItems.svelte +21 -21
  213. package/dist/components/ui/panel/CarouselSlot.svelte +57 -57
  214. package/dist/components/ui/panel/LeftHero.svelte +114 -114
  215. package/dist/components/ui/panel/NotFoundEmpty.svelte +66 -66
  216. package/dist/components/ui/phone-input/country-selector.svelte +87 -87
  217. package/dist/components/ui/phone-input/country-selector.svelte.d.ts +2 -2
  218. package/dist/components/ui/phone-input/flag.svelte +11 -11
  219. package/dist/components/ui/phone-input/phone-input.svelte +163 -148
  220. package/dist/components/ui/phone-input/phone-input.svelte.d.ts +2 -2
  221. package/dist/components/ui/popover/popover-close.svelte +25 -25
  222. package/dist/components/ui/popover/popover-content.svelte +92 -92
  223. package/dist/components/ui/popover/popover-portal.svelte +6 -6
  224. package/dist/components/ui/popover/popover-trigger.svelte +68 -68
  225. package/dist/components/ui/popover/popover.svelte +53 -53
  226. package/dist/components/ui/search/SearchInput.svelte +32 -32
  227. package/dist/components/ui/search/shared/SearchInputCore.svelte +66 -66
  228. package/dist/components/ui/separator/separator.svelte +28 -28
  229. package/dist/components/ui/sidebar/core/MenuBarSidebar.svelte +70 -70
  230. package/dist/components/ui/sidebar/core/ui/navbar/NavMenuBarSidebar.svelte +97 -97
  231. package/dist/components/ui/sidebar/core/ui/navbar/NavMenuBottomSidebar.svelte +33 -33
  232. package/dist/components/ui/sidebar/core/ui/navbar/NavMenuTopBarSidebar.svelte +101 -101
  233. package/dist/components/ui/sidebar/core/ui/navbar/nav-menu-header-sidebar.svelte +77 -77
  234. package/dist/components/ui/sidebar/sidebar-content.svelte +24 -24
  235. package/dist/components/ui/sidebar/sidebar-footer.svelte +21 -21
  236. package/dist/components/ui/sidebar/sidebar-group-content.svelte +21 -21
  237. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +38 -38
  238. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +70 -70
  239. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +39 -39
  240. package/dist/components/ui/sidebar/sidebar-provider.svelte +62 -62
  241. package/dist/components/ui/sidebar/sidebar-rail.svelte +36 -36
  242. package/dist/components/ui/sidebar/sidebar-separator.svelte +21 -21
  243. package/dist/components/ui/sidebar/sidebar-trigger.svelte +36 -36
  244. package/dist/components/ui/sidebar/sidebar.svelte +118 -118
  245. package/dist/components/ui/skeleton/skeleton.svelte +19 -19
  246. package/dist/components/ui/star-rating/star-rating-star.svelte +66 -66
  247. package/dist/components/ui/star-rating/star-rating.svelte +149 -149
  248. package/dist/components/ui/table/table-body.svelte +15 -15
  249. package/dist/components/ui/table/table-caption.svelte +20 -20
  250. package/dist/components/ui/table/table-cell.svelte +15 -15
  251. package/dist/components/ui/table/table-footer.svelte +20 -20
  252. package/dist/components/ui/table/table-head.svelte +15 -15
  253. package/dist/components/ui/table/table-header.svelte +20 -20
  254. package/dist/components/ui/table/table-row.svelte +15 -15
  255. package/dist/components/ui/table/table.svelte +17 -17
  256. package/dist/components/ui/tabs/ui/tab-underline.svelte +43 -43
  257. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte +33 -33
  258. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte +40 -40
  259. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte +91 -91
  260. package/dist/components/ui/underline-tabs/underline-tabs.svelte +61 -61
  261. package/dist/docs/ApiTable.svelte +42 -42
  262. package/dist/docs/CodeBlock.svelte +26 -26
  263. package/dist/docs/DocsHeader.svelte +25 -25
  264. package/dist/docs/DocsSidebar.svelte +108 -156
  265. package/dist/docs/components.js +638 -563
  266. package/dist/globals.css +68 -10
  267. package/dist/i18n/langs/en.d.ts +7 -0
  268. package/dist/i18n/langs/en.js +7 -0
  269. package/dist/i18n/langs/pt.d.ts +7 -0
  270. package/dist/i18n/langs/pt.js +7 -0
  271. package/dist/i18n/translations.d.ts +14 -0
  272. package/dist/index.d.ts +23 -0
  273. package/dist/index.js +23 -0
  274. package/dist/styles/globals.css +283 -283
  275. package/dist/types/index.d.ts +3 -1
  276. package/package.json +81 -81
  277. package/dist/components/pages/security/login/01/ui/FormRegister.svelte +0 -28
  278. package/dist/components/pages/security/login/01/ui/FormRegister.svelte.d.ts +0 -3
@@ -1,156 +1,156 @@
1
- <script lang="ts">
2
- import { cn } from "../../../../../utils";
3
- import { HugeiconsIcon } from "@hugeicons/svelte";
4
- import ModalCore from "../../core/ui/ModalCore.svelte";
5
- import type { ModalShareSelectionProps, ModelSocialShare } from "../types";
6
-
7
- const defaultNetworks: ModelSocialShare[] = [
8
- { name: "WhatsApp", img: "/img/icons8-whatsapp-48.png", color: "#25D366" },
9
- {
10
- name: "Instagram",
11
- img: "/img/icons8-instagram-48.png",
12
- color: "#E4405F",
13
- },
14
- { name: "Facebook", img: "/img/icons8-facebook-48.png", color: "#1877F2" },
15
- { name: "Twitter", img: "/img/icons8-twitterx-50.png", color: "#000000" },
16
- { name: "LinkedIn", img: "/img/icons8-linkedin-48.png", color: "#0A66C2" },
17
- {
18
- name: "Pinterest",
19
- img: "/img/icons8-pinterest-48.png",
20
- color: "#E60023",
21
- },
22
- { name: "Tumblr", img: "/img/icons8-tumblr-48.png", color: "#36465D" },
23
- ];
24
-
25
- let {
26
- title,
27
- subtitle,
28
- networks,
29
- isWhatsapp = true,
30
- isInstagram = true,
31
- isFacebook = true,
32
- isTwitter = true,
33
- isLinkedin = true,
34
- isPinterest = false,
35
- isTumblr = false,
36
- linkLabel = "Or copy link",
37
- linkValue = "",
38
- copyText = "Copy",
39
- copiedText = "Copied!",
40
- isOpen = $bindable(false),
41
- onShare,
42
- onCopy,
43
- onClose,
44
- class: className,
45
- }: ModalShareSelectionProps = $props();
46
-
47
- let copied = $state(false);
48
-
49
- const networkFlags: Record<string, boolean> = $derived({
50
- whatsapp: isWhatsapp,
51
- instagram: isInstagram,
52
- facebook: isFacebook,
53
- twitter: isTwitter,
54
- linkedin: isLinkedin,
55
- pinterest: isPinterest,
56
- tumblr: isTumblr,
57
- });
58
-
59
- const visibleNetworks = $derived(
60
- (networks?.length ? networks : defaultNetworks).filter(
61
- (network) => networkFlags[network.name.toLowerCase()] ?? true,
62
- ),
63
- );
64
-
65
- function handleCopy() {
66
- navigator.clipboard.writeText(linkValue).then(() => {
67
- copied = true;
68
- onCopy?.(linkValue);
69
- setTimeout(() => (copied = false), 2000);
70
- });
71
- }
72
- </script>
73
-
74
- <ModalCore
75
- bind:isOpen
76
- {title}
77
- {subtitle}
78
- showProgress={false}
79
- showBack={false}
80
- {onClose}
81
- class={cn("max-w-lg", className)}
82
- >
83
- {#snippet content()}
84
- <!-- Social Networks -->
85
- {#if visibleNetworks.length > 0}
86
- <div class="flex flex-wrap items-center justify-center gap-4">
87
- {#each visibleNetworks as network (network.name)}
88
- <button
89
- type="button"
90
- class="group flex flex-col items-center gap-2"
91
- onclick={() => onShare?.(network)}
92
- >
93
- <div
94
- class={cn(
95
- "flex size-14 items-center justify-center rounded-full border-2 border-border bg-white transition-all duration-200",
96
- "hover:scale-110 hover:shadow-md",
97
- )}
98
- style={network.color ? `border-color: ${network.color}30` : ""}
99
- >
100
- {#snippet icon()}
101
- {#if network.img}
102
- <img
103
- src={network.img}
104
- alt={network.name}
105
- class="size-7 object-contain transition-transform duration-200 group-hover:scale-110"
106
- loading="lazy"
107
- />
108
- {:else if typeof network.icon === "string"}
109
- <i
110
- class="{network.icon} text-2xl transition-colors"
111
- style={network.color ? `color: ${network.color}` : ""}
112
- ></i>
113
- {:else if network.icon}
114
- <HugeiconsIcon
115
- icon={network.icon}
116
- class="size-6 transition-colors"
117
- style={network.color ? `color: ${network.color}` : ""}
118
- />
119
- {/if}
120
- {/snippet}
121
- {@render icon()}
122
- </div>
123
- <span class="text-xs text-muted-foreground">{network.name}</span>
124
- </button>
125
- {/each}
126
- </div>
127
- {/if}
128
- {/snippet}
129
-
130
- {#snippet footer()}
131
- <!-- Copy Link -->
132
- <div>
133
- <p class="mb-3 text-sm font-medium text-muted-foreground">{linkLabel}</p>
134
- <div class="flex items-center gap-2">
135
- <input
136
- type="text"
137
- readonly
138
- value={linkValue}
139
- class="flex-1 rounded-lg border border-border bg-muted px-4 py-2.5 text-sm text-foreground outline-none"
140
- />
141
- <button
142
- type="button"
143
- class={cn(
144
- "shrink-0 rounded-lg px-5 py-2.5 text-sm font-semibold transition-colors",
145
- copied
146
- ? "bg-green-500 text-white"
147
- : "bg-primary text-primary-foreground hover:bg-primary/90",
148
- )}
149
- onclick={handleCopy}
150
- >
151
- {copied ? copiedText : copyText}
152
- </button>
153
- </div>
154
- </div>
155
- {/snippet}
156
- </ModalCore>
1
+ <script lang="ts">
2
+ import { cn } from "../../../../../utils";
3
+ import { HugeiconsIcon } from "@hugeicons/svelte";
4
+ import ModalCore from "../../core/ui/ModalCore.svelte";
5
+ import type { ModalShareSelectionProps, ModelSocialShare } from "../types";
6
+
7
+ const defaultNetworks: ModelSocialShare[] = [
8
+ { name: "WhatsApp", img: "/img/icons8-whatsapp-48.png", color: "#25D366" },
9
+ {
10
+ name: "Instagram",
11
+ img: "/img/icons8-instagram-48.png",
12
+ color: "#E4405F",
13
+ },
14
+ { name: "Facebook", img: "/img/icons8-facebook-48.png", color: "#1877F2" },
15
+ { name: "Twitter", img: "/img/icons8-twitterx-50.png", color: "#000000" },
16
+ { name: "LinkedIn", img: "/img/icons8-linkedin-48.png", color: "#0A66C2" },
17
+ {
18
+ name: "Pinterest",
19
+ img: "/img/icons8-pinterest-48.png",
20
+ color: "#E60023",
21
+ },
22
+ { name: "Tumblr", img: "/img/icons8-tumblr-48.png", color: "#36465D" },
23
+ ];
24
+
25
+ let {
26
+ title,
27
+ subtitle,
28
+ networks,
29
+ isWhatsapp = true,
30
+ isInstagram = true,
31
+ isFacebook = true,
32
+ isTwitter = true,
33
+ isLinkedin = true,
34
+ isPinterest = false,
35
+ isTumblr = false,
36
+ linkLabel = "Or copy link",
37
+ linkValue = "",
38
+ copyText = "Copy",
39
+ copiedText = "Copied!",
40
+ isOpen = $bindable(false),
41
+ onShare,
42
+ onCopy,
43
+ onClose,
44
+ class: className,
45
+ }: ModalShareSelectionProps = $props();
46
+
47
+ let copied = $state(false);
48
+
49
+ const networkFlags: Record<string, boolean> = $derived({
50
+ whatsapp: isWhatsapp,
51
+ instagram: isInstagram,
52
+ facebook: isFacebook,
53
+ twitter: isTwitter,
54
+ linkedin: isLinkedin,
55
+ pinterest: isPinterest,
56
+ tumblr: isTumblr,
57
+ });
58
+
59
+ const visibleNetworks = $derived(
60
+ (networks?.length ? networks : defaultNetworks).filter(
61
+ (network) => networkFlags[network.name.toLowerCase()] ?? true,
62
+ ),
63
+ );
64
+
65
+ function handleCopy() {
66
+ navigator.clipboard.writeText(linkValue).then(() => {
67
+ copied = true;
68
+ onCopy?.(linkValue);
69
+ setTimeout(() => (copied = false), 2000);
70
+ });
71
+ }
72
+ </script>
73
+
74
+ <ModalCore
75
+ bind:isOpen
76
+ {title}
77
+ {subtitle}
78
+ showProgress={false}
79
+ showBack={false}
80
+ {onClose}
81
+ class={cn("max-w-lg", className)}
82
+ >
83
+ {#snippet content()}
84
+ <!-- Social Networks -->
85
+ {#if visibleNetworks.length > 0}
86
+ <div class="flex flex-wrap items-center justify-center gap-4">
87
+ {#each visibleNetworks as network (network.name)}
88
+ <button
89
+ type="button"
90
+ class="group flex flex-col items-center gap-2"
91
+ onclick={() => onShare?.(network)}
92
+ >
93
+ <div
94
+ class={cn(
95
+ "flex size-14 items-center justify-center rounded-full border-2 border-border bg-white transition-all duration-200",
96
+ "hover:scale-110 hover:shadow-md",
97
+ )}
98
+ style={network.color ? `border-color: ${network.color}30` : ""}
99
+ >
100
+ {#snippet icon()}
101
+ {#if network.img}
102
+ <img
103
+ src={network.img}
104
+ alt={network.name}
105
+ class="size-7 object-contain transition-transform duration-200 group-hover:scale-110"
106
+ loading="lazy"
107
+ />
108
+ {:else if typeof network.icon === "string"}
109
+ <i
110
+ class="{network.icon} text-2xl transition-colors"
111
+ style={network.color ? `color: ${network.color}` : ""}
112
+ ></i>
113
+ {:else if network.icon}
114
+ <HugeiconsIcon
115
+ icon={network.icon}
116
+ class="size-6 transition-colors"
117
+ style={network.color ? `color: ${network.color}` : ""}
118
+ />
119
+ {/if}
120
+ {/snippet}
121
+ {@render icon()}
122
+ </div>
123
+ <span class="text-xs text-muted-foreground">{network.name}</span>
124
+ </button>
125
+ {/each}
126
+ </div>
127
+ {/if}
128
+ {/snippet}
129
+
130
+ {#snippet footer()}
131
+ <!-- Copy Link -->
132
+ <div>
133
+ <p class="mb-3 text-sm font-medium text-muted-foreground">{linkLabel}</p>
134
+ <div class="flex items-center gap-2">
135
+ <input
136
+ type="text"
137
+ readonly
138
+ value={linkValue}
139
+ class="flex-1 rounded-lg border border-border bg-muted px-4 py-2.5 text-sm text-foreground outline-none"
140
+ />
141
+ <button
142
+ type="button"
143
+ class={cn(
144
+ "shrink-0 rounded-lg px-5 py-2.5 text-sm font-semibold transition-colors",
145
+ copied
146
+ ? "bg-green-500 text-white"
147
+ : "bg-primary text-primary-foreground hover:bg-primary/90",
148
+ )}
149
+ onclick={handleCopy}
150
+ >
151
+ {copied ? copiedText : copyText}
152
+ </button>
153
+ </div>
154
+ </div>
155
+ {/snippet}
156
+ </ModalCore>
@@ -1,51 +1,51 @@
1
- <script lang="ts">
2
- import type { ComplexMenuProps } from "../data/types";
3
- import {
4
- isCard,
5
- isGrid,
6
- isList,
7
- isItems,
8
- isItem,
9
- } from "../data/complex-menu-utils";
10
- import NavigationMenuItemGrid from "./shared/navigation/NavigationMenuItemGrid.svelte";
11
- import NavigationMenuItemCard from "./shared/navigation/NavigationMenuItemCard.svelte";
12
- import NavigationMenuItem from "./shared/navigation/NavigationMenuItem.svelte";
13
- import NavigationMenuItemList from "./shared/navigation/NavigationMenuItemList.svelte";
14
- import NavigationMenuItems from "./shared/navigation/NavigationMenuItems.svelte";
15
-
16
- let { menus, textClass, subTextClass, hoverClass }: ComplexMenuProps =
17
- $props();
18
- </script>
19
-
20
- <ul
21
- class="flex list-none flex-1 flex-wrap items-center justify-center {textClass}"
22
- >
23
- {#each menus as link, i (i)}
24
- {#if isCard(link)}
25
- <NavigationMenuItemCard
26
- {...link}
27
- {textClass}
28
- {subTextClass}
29
- {hoverClass}
30
- />
31
- {:else if isGrid(link)}
32
- <NavigationMenuItemGrid
33
- {...link}
34
- {textClass}
35
- {subTextClass}
36
- {hoverClass}
37
- />
38
- {:else if isList(link)}
39
- <NavigationMenuItemList
40
- {...link}
41
- {textClass}
42
- {subTextClass}
43
- {hoverClass}
44
- />
45
- {:else if isItems(link)}
46
- <NavigationMenuItems {...link} {textClass} {hoverClass} />
47
- {:else if isItem(link)}
48
- <NavigationMenuItem {...link} {textClass} {hoverClass} />
49
- {/if}
50
- {/each}
51
- </ul>
1
+ <script lang="ts">
2
+ import type { ComplexMenuProps } from "../data/types";
3
+ import {
4
+ isCard,
5
+ isGrid,
6
+ isList,
7
+ isItems,
8
+ isItem,
9
+ } from "../data/complex-menu-utils";
10
+ import NavigationMenuItemGrid from "./shared/navigation/NavigationMenuItemGrid.svelte";
11
+ import NavigationMenuItemCard from "./shared/navigation/NavigationMenuItemCard.svelte";
12
+ import NavigationMenuItem from "./shared/navigation/NavigationMenuItem.svelte";
13
+ import NavigationMenuItemList from "./shared/navigation/NavigationMenuItemList.svelte";
14
+ import NavigationMenuItems from "./shared/navigation/NavigationMenuItems.svelte";
15
+
16
+ let { menus, textClass, subTextClass, hoverClass }: ComplexMenuProps =
17
+ $props();
18
+ </script>
19
+
20
+ <ul
21
+ class="flex list-none flex-1 flex-wrap items-center justify-center {textClass}"
22
+ >
23
+ {#each menus as link, i (i)}
24
+ {#if isCard(link)}
25
+ <NavigationMenuItemCard
26
+ {...link}
27
+ {textClass}
28
+ {subTextClass}
29
+ {hoverClass}
30
+ />
31
+ {:else if isGrid(link)}
32
+ <NavigationMenuItemGrid
33
+ {...link}
34
+ {textClass}
35
+ {subTextClass}
36
+ {hoverClass}
37
+ />
38
+ {:else if isList(link)}
39
+ <NavigationMenuItemList
40
+ {...link}
41
+ {textClass}
42
+ {subTextClass}
43
+ {hoverClass}
44
+ />
45
+ {:else if isItems(link)}
46
+ <NavigationMenuItems {...link} {textClass} {hoverClass} />
47
+ {:else if isItem(link)}
48
+ <NavigationMenuItem {...link} {textClass} {hoverClass} />
49
+ {/if}
50
+ {/each}
51
+ </ul>
@@ -1,72 +1,72 @@
1
- <script lang="ts">
2
- import { LanguageSwitcher } from "../../language-switcher";
3
- import { LightSwitch } from "../../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 & {
22
- navMenu: MenuVarientProps;
23
- } = $props();
24
-
25
- function isLinks(item: MenuVarientProps | undefined): item is SimpleMenuProps {
26
- return item !== undefined && "links" in item;
27
- }
28
-
29
- function isMenu(item: MenuVarientProps | undefined): item is ComplexMenuProps {
30
- return item !== undefined && "menus" in item;
31
- }
32
-
33
- const responsive = useDevice();
34
- </script>
35
-
36
- {#snippet actionButtons()}
37
- <div class="flex items-center gap-2">
38
- {#if isLightSwitch}
39
- <LightSwitch />
40
- {/if}
41
- {#if isLanguageSwitcher}
42
- <LanguageSwitcher />
43
- {/if}
44
- {#if navMenuButton}
45
- <MenuButton {...navMenuButton} />
46
- {/if}
47
- </div>
48
- {/snippet}
49
-
50
- <nav
51
- class="flex items-center justify-between p-2 md:p-5 w-full {isBorder
52
- ? 'border-b-2'
53
- : ''}"
54
- >
55
- {#if logo}
56
- <MenuLogo {...logo} />
57
- {/if}
58
-
59
- {#if responsive.isMobile}
60
- {#if isLinks(navMenu)}
61
- <SimpleMenuMobile {...navMenu} />
62
- {:else if isMenu(navMenu)}
63
- <ComplexMenuMobile {...navMenu} />
64
- {/if}
65
- {:else if isLinks(navMenu)}
66
- <SimpleMenu {...navMenu} />
67
- {@render actionButtons()}
68
- {:else if isMenu(navMenu)}
69
- <ComplexMenu {...navMenu} />
70
- {@render actionButtons()}
71
- {/if}
72
- </nav>
1
+ <script lang="ts">
2
+ import { LanguageSwitcher } from "../../language-switcher";
3
+ import { LightSwitch } from "../../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 & {
22
+ navMenu: MenuVarientProps;
23
+ } = $props();
24
+
25
+ function isLinks(item: MenuVarientProps | undefined): item is SimpleMenuProps {
26
+ return item !== undefined && "links" in item;
27
+ }
28
+
29
+ function isMenu(item: MenuVarientProps | undefined): item is ComplexMenuProps {
30
+ return item !== undefined && "menus" in item;
31
+ }
32
+
33
+ const responsive = useDevice();
34
+ </script>
35
+
36
+ {#snippet actionButtons()}
37
+ <div class="flex items-center gap-2">
38
+ {#if isLightSwitch}
39
+ <LightSwitch />
40
+ {/if}
41
+ {#if isLanguageSwitcher}
42
+ <LanguageSwitcher />
43
+ {/if}
44
+ {#if navMenuButton}
45
+ <MenuButton {...navMenuButton} />
46
+ {/if}
47
+ </div>
48
+ {/snippet}
49
+
50
+ <nav
51
+ class="flex items-center justify-between p-2 md:p-5 w-full {isBorder
52
+ ? 'border-b-2'
53
+ : ''}"
54
+ >
55
+ {#if logo}
56
+ <MenuLogo {...logo} />
57
+ {/if}
58
+
59
+ {#if responsive.isMobile}
60
+ {#if isLinks(navMenu)}
61
+ <SimpleMenuMobile {...navMenu} />
62
+ {:else if isMenu(navMenu)}
63
+ <ComplexMenuMobile {...navMenu} />
64
+ {/if}
65
+ {:else if isLinks(navMenu)}
66
+ <SimpleMenu {...navMenu} />
67
+ {@render actionButtons()}
68
+ {:else if isMenu(navMenu)}
69
+ <ComplexMenu {...navMenu} />
70
+ {@render actionButtons()}
71
+ {/if}
72
+ </nav>
@@ -1,14 +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 w-full">
10
- <MenuLinks {...restProps} orientation="vertical" />
11
- </div>
12
- {:else}
13
- <MenuLinks {...restProps} orientation="horizontal" />
14
- {/if}
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 w-full">
10
+ <MenuLinks {...restProps} orientation="vertical" />
11
+ </div>
12
+ {:else}
13
+ <MenuLinks {...restProps} orientation="horizontal" />
14
+ {/if}