negodesign 0.0.80 → 0.0.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +62 -62
  9. package/dist/components/pages/security/auth/PageAuth02.svelte +40 -40
  10. package/dist/components/pages/security/auth/PageAuth03.svelte +40 -40
  11. package/dist/components/pages/security/login/01/ui/FormLogin.svelte +91 -63
  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 +49 -26
  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 +49 -26
  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 +49 -26
  18. package/dist/components/pages/security/login/01/ui/FormLoginUsernamePassword.svelte.d.ts +2 -0
  19. package/dist/components/pages/security/login/01/ui/LoginCard01.svelte +148 -132
  20. package/dist/components/pages/security/login/01/ui/LoginCard01.svelte.d.ts +2 -0
  21. package/dist/components/pages/security/login/01/ui/PageLogin01.svelte +66 -64
  22. package/dist/components/pages/security/login/02/ui/FormLogin02.svelte +82 -72
  23. package/dist/components/pages/security/login/02/ui/FormLogin02.svelte.d.ts +1 -0
  24. package/dist/components/pages/security/login/02/ui/FormLoginEmailPassword02.svelte +27 -26
  25. package/dist/components/pages/security/login/02/ui/FormLoginEmailPassword02.svelte.d.ts +1 -0
  26. package/dist/components/pages/security/login/02/ui/FormLoginPhonePassword02.svelte +27 -26
  27. package/dist/components/pages/security/login/02/ui/FormLoginPhonePassword02.svelte.d.ts +1 -0
  28. package/dist/components/pages/security/login/02/ui/FormLoginUsernamePassword02.svelte +27 -26
  29. package/dist/components/pages/security/login/02/ui/FormLoginUsernamePassword02.svelte.d.ts +1 -0
  30. package/dist/components/pages/security/login/02/ui/LoginCard02.svelte +15 -2
  31. package/dist/components/pages/security/login/02/ui/LoginCard02.svelte.d.ts +1 -0
  32. package/dist/components/pages/security/login/02/ui/PageLogin02.svelte +2 -0
  33. package/dist/components/pages/security/login/03/ui/FormLogin03.svelte +94 -91
  34. package/dist/components/pages/security/login/03/ui/FormLogin03.svelte.d.ts +1 -0
  35. package/dist/components/pages/security/login/03/ui/FormLoginEmailPassword03.svelte +27 -26
  36. package/dist/components/pages/security/login/03/ui/FormLoginEmailPassword03.svelte.d.ts +1 -0
  37. package/dist/components/pages/security/login/03/ui/FormLoginPhonePassword03.svelte +27 -26
  38. package/dist/components/pages/security/login/03/ui/FormLoginPhonePassword03.svelte.d.ts +1 -0
  39. package/dist/components/pages/security/login/03/ui/FormLoginUsernamePassword03.svelte +27 -26
  40. package/dist/components/pages/security/login/03/ui/FormLoginUsernamePassword03.svelte.d.ts +1 -0
  41. package/dist/components/pages/security/login/03/ui/LoginCard03.svelte +15 -2
  42. package/dist/components/pages/security/login/03/ui/LoginCard03.svelte.d.ts +1 -0
  43. package/dist/components/pages/security/login/03/ui/PageLogin03.svelte +2 -0
  44. package/dist/components/pages/security/login/PageLogin.svelte +30 -30
  45. package/dist/components/pages/security/login/types.d.ts +1 -0
  46. package/dist/components/pages/security/register/01/ui/PageRegister01.svelte +78 -76
  47. package/dist/components/pages/security/register/01/ui/RegisterCard01.svelte +107 -104
  48. package/dist/components/pages/security/register/01/ui/RegisterCard01.svelte.d.ts +1 -0
  49. package/dist/components/pages/security/register/02/ui/PageRegister02.svelte +2 -0
  50. package/dist/components/pages/security/register/02/ui/RegisterCard02.svelte +3 -1
  51. package/dist/components/pages/security/register/02/ui/RegisterCard02.svelte.d.ts +1 -0
  52. package/dist/components/pages/security/register/03/ui/PageRegister03.svelte +2 -0
  53. package/dist/components/pages/security/register/03/ui/RegisterCard03.svelte +3 -1
  54. package/dist/components/pages/security/register/03/ui/RegisterCard03.svelte.d.ts +1 -0
  55. package/dist/components/pages/security/register/FormRegister.svelte +148 -146
  56. package/dist/components/pages/security/register/FormRegister.svelte.d.ts +1 -0
  57. package/dist/components/pages/security/register/types.d.ts +1 -0
  58. package/dist/components/ui/avatar/avatar-fallback.svelte +29 -29
  59. package/dist/components/ui/avatar/avatar-image.svelte +38 -38
  60. package/dist/components/ui/avatar/avatar.svelte +39 -39
  61. package/dist/components/ui/badge/badge.svelte +46 -46
  62. package/dist/components/ui/banner/AdCardBanner.svelte +74 -74
  63. package/dist/components/ui/banner/CtaCardBanner.svelte +118 -118
  64. package/dist/components/ui/banner/CtaCardImageBanner.svelte +94 -94
  65. package/dist/components/ui/breadcrumb/core/breadcrumb-list.svelte +31 -31
  66. package/dist/components/ui/button/ButtonBack.svelte +18 -18
  67. package/dist/components/ui/button/ButtonLogin.svelte +19 -15
  68. package/dist/components/ui/button/ButtonLoginWith.svelte +57 -57
  69. package/dist/components/ui/button/ButtonSend.svelte +15 -15
  70. package/dist/components/ui/button/button.svelte +100 -86
  71. package/dist/components/ui/button/button.svelte.d.ts +1 -0
  72. package/dist/components/ui/card/core/highlight/01/CardHighlight01.svelte +103 -103
  73. package/dist/components/ui/card/core/highlight/02/CardHighlight02.svelte +99 -99
  74. package/dist/components/ui/card/core/highlight/CardHighlight.svelte +22 -22
  75. package/dist/components/ui/card/core/media/01/CardMedia01.svelte +133 -133
  76. package/dist/components/ui/card/core/media/02/CardMedia02.svelte +127 -127
  77. package/dist/components/ui/card/core/media/CardMedia.svelte +18 -18
  78. package/dist/components/ui/card/core/product/01/CardProduct01.svelte +136 -136
  79. package/dist/components/ui/card/core/product/02/CardProduct02.svelte +124 -124
  80. package/dist/components/ui/card/core/product/CardProduct.svelte +22 -22
  81. package/dist/components/ui/card/core/profile/01/CardProfile01.svelte +134 -134
  82. package/dist/components/ui/card/core/profile/02/CardProfile02.svelte +132 -132
  83. package/dist/components/ui/card/core/profile/CardProfile.svelte +18 -18
  84. package/dist/components/ui/card/core/promotion/CardPromotion.svelte +139 -139
  85. package/dist/components/ui/card/core/promotion/CardPromotionPrice.svelte +32 -32
  86. package/dist/components/ui/card/core/shared/CardButton.svelte +42 -42
  87. package/dist/components/ui/card/core/shared/CardCart.svelte +36 -36
  88. package/dist/components/ui/card/core/shared/CardDescription.svelte +41 -41
  89. package/dist/components/ui/card/core/shared/CardFavorite.svelte +33 -33
  90. package/dist/components/ui/card/core/shared/CardLogo.svelte +19 -19
  91. package/dist/components/ui/card/core/shared/CardPhoneOrWhatsapp.svelte +45 -45
  92. package/dist/components/ui/card/core/shared/CardStarRating.svelte +24 -24
  93. package/dist/components/ui/card/core/shared/CardTags.svelte +95 -95
  94. package/dist/components/ui/card/core/shared/CardThumbnailVideo.svelte +232 -232
  95. package/dist/components/ui/card/core/shared/CardTitlePrice.svelte +24 -24
  96. package/dist/components/ui/card/core/shared/TruncatableText.svelte +49 -49
  97. package/dist/components/ui/carousel/carousel-content.svelte +56 -56
  98. package/dist/components/ui/carousel/carousel-item.svelte +29 -29
  99. package/dist/components/ui/carousel/carousel-next.svelte +40 -40
  100. package/dist/components/ui/carousel/carousel-previous.svelte +40 -40
  101. package/dist/components/ui/carousel/carousel.svelte +225 -225
  102. package/dist/components/ui/carousel/core/badge/ui/CarouselBadge.svelte +108 -108
  103. package/dist/components/ui/carousel/core/grid/shared/ui/CarouselGridSlot.svelte +38 -38
  104. package/dist/components/ui/carousel/core/hero/ui/CarouselHero.svelte +181 -181
  105. package/dist/components/ui/carousel/core/highlights/ui/CarouselHighlights.svelte +67 -67
  106. package/dist/components/ui/carousel/core/product/ui/CarouselProduct.svelte +57 -57
  107. package/dist/components/ui/carousel/core/promotion/ui/CarouselPromotion.svelte +67 -67
  108. package/dist/components/ui/carousel/core/shared/ui/CarouselHeader.svelte +59 -59
  109. package/dist/components/ui/checkbox/checkbox.svelte +96 -96
  110. package/dist/components/ui/collapsible/collapsible-content.svelte +30 -30
  111. package/dist/components/ui/collapsible/collapsible-trigger.svelte +51 -51
  112. package/dist/components/ui/collapsible/collapsible.svelte +66 -66
  113. package/dist/components/ui/data-table/flex-render.svelte +40 -40
  114. package/dist/components/ui/datatable/ui/DataTableActions.svelte +28 -28
  115. package/dist/components/ui/datatable/ui/DataTableCheckbox.svelte +22 -22
  116. package/dist/components/ui/datatable/ui/DataTableContent.svelte +59 -59
  117. package/dist/components/ui/datatable/ui/DataTableCore.svelte +148 -148
  118. package/dist/components/ui/datatable/ui/DataTableDragHandle.svelte +8 -8
  119. package/dist/components/ui/datatable/ui/DataTableListFilter.svelte +60 -60
  120. package/dist/components/ui/datatable/ui/DataTableListPagination.svelte +35 -35
  121. package/dist/components/ui/drawer/drawer-close.svelte +41 -41
  122. package/dist/components/ui/drawer/drawer-content.svelte +81 -81
  123. package/dist/components/ui/drawer/drawer-description.svelte +19 -19
  124. package/dist/components/ui/drawer/drawer-footer.svelte +20 -20
  125. package/dist/components/ui/drawer/drawer-header.svelte +20 -20
  126. package/dist/components/ui/drawer/drawer-nested.svelte +34 -34
  127. package/dist/components/ui/drawer/drawer-overlay.svelte +25 -25
  128. package/dist/components/ui/drawer/drawer-portal.svelte +19 -19
  129. package/dist/components/ui/drawer/drawer-title.svelte +19 -19
  130. package/dist/components/ui/drawer/drawer-trigger.svelte +42 -42
  131. package/dist/components/ui/drawer/drawer.svelte +74 -74
  132. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +25 -25
  133. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +69 -69
  134. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +106 -106
  135. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +27 -27
  136. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +21 -21
  137. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +60 -60
  138. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +27 -27
  139. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +6 -6
  140. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +43 -43
  141. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +70 -70
  142. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +20 -20
  143. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +33 -33
  144. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +57 -57
  145. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +76 -76
  146. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +68 -68
  147. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +53 -53
  148. package/dist/components/ui/empty/empty-content.svelte +19 -19
  149. package/dist/components/ui/empty/empty-description.svelte +19 -19
  150. package/dist/components/ui/empty/empty-header.svelte +19 -19
  151. package/dist/components/ui/empty/empty-media.svelte +41 -41
  152. package/dist/components/ui/empty/empty-title.svelte +19 -19
  153. package/dist/components/ui/empty/empty.svelte +19 -19
  154. package/dist/components/ui/footer/ui/Footer.svelte +18 -18
  155. package/dist/components/ui/form/ui/calendar/Calendar.svelte +193 -193
  156. package/dist/components/ui/form/ui/calendar/CalendarCard.svelte +89 -89
  157. package/dist/components/ui/form/ui/calendar/DaysGrid.svelte +75 -75
  158. package/dist/components/ui/form/ui/calendar/MonthSelect.svelte +49 -49
  159. package/dist/components/ui/form/ui/calendar/YearSelect.svelte +116 -116
  160. package/dist/components/ui/form/ui/input-base.svelte +83 -83
  161. package/dist/components/ui/form/ui/input-calendar-interval.svelte +178 -178
  162. package/dist/components/ui/form/ui/input-calendar.svelte +109 -109
  163. package/dist/components/ui/form/ui/input-email-or-phone.svelte +23 -23
  164. package/dist/components/ui/form/ui/input-email.svelte +23 -23
  165. package/dist/components/ui/form/ui/input-password-confirm.svelte +23 -23
  166. package/dist/components/ui/form/ui/input-password.svelte +23 -23
  167. package/dist/components/ui/form/ui/input-phone.svelte +43 -37
  168. package/dist/components/ui/form/ui/input-select.svelte +246 -246
  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/form/index.d.ts +3 -2
  193. package/dist/components/ui/modal/form/index.js +2 -1
  194. package/dist/components/ui/modal/form/types.d.ts +41 -0
  195. package/dist/components/ui/modal/form/ui/ModalForm.svelte +11 -6
  196. package/dist/components/ui/modal/form/ui/ModalFormEmailOrPhone.svelte +204 -0
  197. package/dist/components/ui/modal/form/ui/ModalFormEmailOrPhone.svelte.d.ts +4 -0
  198. package/dist/components/ui/modal/grid/ui/02/ModalGridSelection02.svelte +146 -146
  199. package/dist/components/ui/modal/share/ui/ModalShareSelection.svelte +156 -156
  200. package/dist/components/ui/nav/ui/ComplexMenu.svelte +51 -51
  201. package/dist/components/ui/nav/ui/Menu.svelte +72 -72
  202. package/dist/components/ui/nav/ui/SimpleMenu.svelte +14 -14
  203. package/dist/components/ui/nav/ui/mobile/ComplexMenuMobile.svelte +125 -125
  204. package/dist/components/ui/nav/ui/mobile/MenuMobile.svelte +54 -54
  205. package/dist/components/ui/nav/ui/shared/MenuButton.svelte +51 -51
  206. package/dist/components/ui/nav/ui/shared/MenuLinks.svelte +40 -40
  207. package/dist/components/ui/nav/ui/shared/MenuListItem.svelte +44 -44
  208. package/dist/components/ui/nav/ui/shared/MenuLogo.svelte +13 -13
  209. package/dist/components/ui/nav/ui/shared/dropdown/DropdownNavigationMenuItemGrid.svelte +30 -30
  210. package/dist/components/ui/nav/ui/shared/navigation/NavDropdown.svelte +88 -88
  211. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItem.svelte +17 -17
  212. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemCard.svelte +53 -53
  213. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemGrid.svelte +35 -36
  214. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItemList.svelte +24 -24
  215. package/dist/components/ui/nav/ui/shared/navigation/NavigationMenuItems.svelte +21 -21
  216. package/dist/components/ui/panel/CarouselSlot.svelte +57 -57
  217. package/dist/components/ui/panel/LeftHero.svelte +114 -114
  218. package/dist/components/ui/panel/NotFoundEmpty.svelte +66 -66
  219. package/dist/components/ui/phone-input/country-selector.svelte +87 -87
  220. package/dist/components/ui/phone-input/flag.svelte +11 -11
  221. package/dist/components/ui/phone-input/phone-input.svelte +163 -163
  222. package/dist/components/ui/popover/popover-close.svelte +25 -25
  223. package/dist/components/ui/popover/popover-content.svelte +92 -92
  224. package/dist/components/ui/popover/popover-portal.svelte +6 -6
  225. package/dist/components/ui/popover/popover-trigger.svelte +68 -68
  226. package/dist/components/ui/popover/popover.svelte +53 -53
  227. package/dist/components/ui/search/SearchInput.svelte +32 -32
  228. package/dist/components/ui/search/shared/SearchInputCore.svelte +66 -66
  229. package/dist/components/ui/separator/separator.svelte +28 -28
  230. package/dist/components/ui/sidebar/core/MenuBarSidebar.svelte +70 -70
  231. package/dist/components/ui/sidebar/core/ui/navbar/NavMenuBarSidebar.svelte +97 -97
  232. package/dist/components/ui/sidebar/core/ui/navbar/NavMenuBottomSidebar.svelte +33 -33
  233. package/dist/components/ui/sidebar/core/ui/navbar/NavMenuTopBarSidebar.svelte +101 -101
  234. package/dist/components/ui/sidebar/core/ui/navbar/nav-menu-header-sidebar.svelte +77 -77
  235. package/dist/components/ui/sidebar/sidebar-content.svelte +24 -24
  236. package/dist/components/ui/sidebar/sidebar-footer.svelte +21 -21
  237. package/dist/components/ui/sidebar/sidebar-group-content.svelte +21 -21
  238. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +38 -38
  239. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +70 -70
  240. package/dist/components/ui/sidebar/sidebar-menu-sub-button.svelte +39 -39
  241. package/dist/components/ui/sidebar/sidebar-provider.svelte +62 -62
  242. package/dist/components/ui/sidebar/sidebar-rail.svelte +36 -36
  243. package/dist/components/ui/sidebar/sidebar-separator.svelte +21 -21
  244. package/dist/components/ui/sidebar/sidebar-trigger.svelte +36 -36
  245. package/dist/components/ui/sidebar/sidebar.svelte +118 -118
  246. package/dist/components/ui/skeleton/skeleton.svelte +19 -19
  247. package/dist/components/ui/star-rating/star-rating-star.svelte +66 -66
  248. package/dist/components/ui/star-rating/star-rating.svelte +149 -149
  249. package/dist/components/ui/table/table-body.svelte +15 -15
  250. package/dist/components/ui/table/table-caption.svelte +20 -20
  251. package/dist/components/ui/table/table-cell.svelte +15 -15
  252. package/dist/components/ui/table/table-footer.svelte +20 -20
  253. package/dist/components/ui/table/table-head.svelte +15 -15
  254. package/dist/components/ui/table/table-header.svelte +20 -20
  255. package/dist/components/ui/table/table-row.svelte +15 -15
  256. package/dist/components/ui/table/table.svelte +17 -17
  257. package/dist/components/ui/tabs/data/TabModel.d.ts +1 -0
  258. package/dist/components/ui/tabs/ui/tab-underline.svelte +47 -43
  259. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte +33 -33
  260. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte +40 -40
  261. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte +91 -91
  262. package/dist/components/ui/underline-tabs/underline-tabs.svelte +61 -61
  263. package/dist/docs/ApiTable.svelte +42 -42
  264. package/dist/docs/CodeBlock.svelte +26 -26
  265. package/dist/docs/DocsHeader.svelte +25 -25
  266. package/dist/docs/DocsSidebar.svelte +108 -108
  267. package/dist/docs/components.js +624 -584
  268. package/dist/globals.css +27 -7
  269. package/dist/i18n/langs/en.d.ts +3 -1
  270. package/dist/i18n/langs/en.js +3 -1
  271. package/dist/i18n/langs/pt.d.ts +3 -1
  272. package/dist/i18n/langs/pt.js +3 -1
  273. package/dist/i18n/translations.d.ts +6 -2
  274. package/dist/index.d.ts +12 -0
  275. package/dist/index.js +12 -0
  276. package/dist/styles/globals.css +283 -283
  277. package/dist/types/index.d.ts +3 -1
  278. package/package.json +81 -81
@@ -1,83 +1,83 @@
1
- <script lang="ts" module>
2
- /**
3
- * Lista de moradas do utilizador com opção de adicionar e badge para default.
4
- * Extraído da variante 1. Todos os textos são parametrizáveis com defaults via i18n.
5
- * @component
6
- */
7
- </script>
8
-
9
- <script lang="ts">
10
- import { MapPin, PlusSignIcon } from "@hugeicons/core-free-icons";
11
- import { HugeiconsIcon } from "@hugeicons/svelte";
12
- import Badge from "../../../ui/badge/badge.svelte";
13
- import Button from "../../../ui/button/button.svelte";
14
- import Skeleton from "../../../ui/skeleton/skeleton.svelte";
15
- import { cn } from "../../../../utils.js";
16
- import { t } from "../../../../i18n";
17
- import type { ProfileUserAddress, ProfileUserAddressProps } from "../types";
18
-
19
- let {
20
- addresses,
21
- isLoading = false,
22
- onAddAddress,
23
- className,
24
- title = $t("profile-user.variant1.addresses.title"),
25
- addLabel = $t("profile-user.variant1.addresses.add"),
26
- defaultBadge = $t("profile-user.variant1.addresses.defaultBadge"),
27
- emptyText = $t("profile-user.variant1.addresses.empty"),
28
- }: ProfileUserAddressProps & {
29
- addresses?: ProfileUserAddress[];
30
- isLoading?: boolean;
31
- } = $props();
32
- </script>
33
-
34
- <section
35
- class={cn("rounded-lg border bg-card p-6", className)}
36
- data-slot="profile-user-address"
37
- >
38
- <div class="mb-6 flex items-center justify-between">
39
- <h3 class="text-lg font-semibold">{title}</h3>
40
- <Button variant="ghost" size="sm" onclick={onAddAddress}>
41
- <HugeiconsIcon icon={PlusSignIcon} class="size-4" />
42
- {addLabel}
43
- </Button>
44
- </div>
45
-
46
- {#if isLoading}
47
- <div class="grid gap-4 md:grid-cols-2">
48
- {#each Array.from({ length: 2 }) as _, i (i)}
49
- <Skeleton class="h-32 w-full rounded-md" />
50
- {/each}
51
- </div>
52
- {:else if addresses && addresses.length > 0}
53
- <div class="grid gap-4 md:grid-cols-2">
54
- {#each addresses as address (address.id)}
55
- <div
56
- class={cn(
57
- "rounded-md border p-4 transition-colors",
58
- address.isDefault ? "border-primary bg-primary/5" : ""
59
- )}
60
- >
61
- <div class="mb-2 flex items-center justify-between">
62
- <span class="font-medium">{address.label}</span>
63
- {#if address.isDefault}
64
- <Badge>{defaultBadge}</Badge>
65
- {/if}
66
- </div>
67
- <div class="flex flex-col gap-1 text-sm text-muted-foreground">
68
- <p class="flex items-start gap-1.5">
69
- <HugeiconsIcon icon={MapPin} class="mt-0.5 size-4 shrink-0" />
70
- {address.street}
71
- {#if address.apartment}, {address.apartment}{/if}
72
- </p>
73
- {#if address.state || address.zip}
74
- <p class="pl-5.5">{address.state ?? ""} {address.zip ?? ""}</p>
75
- {/if}
76
- </div>
77
- </div>
78
- {/each}
79
- </div>
80
- {:else}
81
- <p class="text-sm text-muted-foreground">{emptyText}</p>
82
- {/if}
83
- </section>
1
+ <script lang="ts" module>
2
+ /**
3
+ * Lista de moradas do utilizador com opção de adicionar e badge para default.
4
+ * Extraído da variante 1. Todos os textos são parametrizáveis com defaults via i18n.
5
+ * @component
6
+ */
7
+ </script>
8
+
9
+ <script lang="ts">
10
+ import { MapPin, PlusSignIcon } from "@hugeicons/core-free-icons";
11
+ import { HugeiconsIcon } from "@hugeicons/svelte";
12
+ import Badge from "../../../ui/badge/badge.svelte";
13
+ import Button from "../../../ui/button/button.svelte";
14
+ import Skeleton from "../../../ui/skeleton/skeleton.svelte";
15
+ import { cn } from "../../../../utils.js";
16
+ import { t } from "../../../../i18n";
17
+ import type { ProfileUserAddress, ProfileUserAddressProps } from "../types";
18
+
19
+ let {
20
+ addresses,
21
+ isLoading = false,
22
+ onAddAddress,
23
+ className,
24
+ title = $t("profile-user.variant1.addresses.title"),
25
+ addLabel = $t("profile-user.variant1.addresses.add"),
26
+ defaultBadge = $t("profile-user.variant1.addresses.defaultBadge"),
27
+ emptyText = $t("profile-user.variant1.addresses.empty"),
28
+ }: ProfileUserAddressProps & {
29
+ addresses?: ProfileUserAddress[];
30
+ isLoading?: boolean;
31
+ } = $props();
32
+ </script>
33
+
34
+ <section
35
+ class={cn("rounded-lg border bg-card p-6", className)}
36
+ data-slot="profile-user-address"
37
+ >
38
+ <div class="mb-6 flex items-center justify-between">
39
+ <h3 class="text-lg font-semibold">{title}</h3>
40
+ <Button variant="ghost" size="sm" onclick={onAddAddress}>
41
+ <HugeiconsIcon icon={PlusSignIcon} class="size-4" />
42
+ {addLabel}
43
+ </Button>
44
+ </div>
45
+
46
+ {#if isLoading}
47
+ <div class="grid gap-4 md:grid-cols-2">
48
+ {#each Array.from({ length: 2 }) as _, i (i)}
49
+ <Skeleton class="h-32 w-full rounded-md" />
50
+ {/each}
51
+ </div>
52
+ {:else if addresses && addresses.length > 0}
53
+ <div class="grid gap-4 md:grid-cols-2">
54
+ {#each addresses as address (address.id)}
55
+ <div
56
+ class={cn(
57
+ "rounded-md border p-4 transition-colors",
58
+ address.isDefault ? "border-primary bg-primary/5" : ""
59
+ )}
60
+ >
61
+ <div class="mb-2 flex items-center justify-between">
62
+ <span class="font-medium">{address.label}</span>
63
+ {#if address.isDefault}
64
+ <Badge>{defaultBadge}</Badge>
65
+ {/if}
66
+ </div>
67
+ <div class="flex flex-col gap-1 text-sm text-muted-foreground">
68
+ <p class="flex items-start gap-1.5">
69
+ <HugeiconsIcon icon={MapPin} class="mt-0.5 size-4 shrink-0" />
70
+ {address.street}
71
+ {#if address.apartment}, {address.apartment}{/if}
72
+ </p>
73
+ {#if address.state || address.zip}
74
+ <p class="pl-5.5">{address.state ?? ""} {address.zip ?? ""}</p>
75
+ {/if}
76
+ </div>
77
+ </div>
78
+ {/each}
79
+ </div>
80
+ {:else}
81
+ <p class="text-sm text-muted-foreground">{emptyText}</p>
82
+ {/if}
83
+ </section>
@@ -1,80 +1,80 @@
1
- <script lang="ts" module>
2
- /**
3
- * Barra de tabs reutilizável para as variantes de perfil.
4
- * Suporta loading state, tabs customizadas, active tab controlável
5
- * e estilos variantes (underline vs pill).
6
- * @component
7
- */
8
- export type ProfileUserTabItem = { id: string; label: string };
9
- export type ProfileUserTabsStyle = "underline" | "pill";
10
- </script>
11
-
12
- <script lang="ts">
13
- import Skeleton from "../../../ui/skeleton/skeleton.svelte";
14
- import { cn } from "../../../../utils.js";
15
-
16
- let {
17
- tabs,
18
- activeTab = $bindable(),
19
- style = "underline",
20
- isLoading = false,
21
- className,
22
- onchange,
23
- }: {
24
- tabs: ProfileUserTabItem[];
25
- activeTab?: string;
26
- style?: ProfileUserTabsStyle;
27
- isLoading?: boolean;
28
- className?: string;
29
- onchange?: (id: string) => void;
30
- } = $props();
31
-
32
- const currentTab = $derived(activeTab ?? tabs[0]?.id ?? "");
33
-
34
- const handleSelect = (id: string) => {
35
- activeTab = id;
36
- onchange?.(id);
37
- };
38
- </script>
39
-
40
- <div
41
- class={cn(
42
- "mb-6 flex gap-1 border-b overflow-x-auto",
43
- style === "pill"
44
- ? "-mt-12 mb-6 rounded-t-lg border border-t bg-background px-2 py-1 shadow-sm border-b"
45
- : "",
46
- className
47
- )}
48
- data-slot="profile-user-tabs"
49
- >
50
- {#if isLoading}
51
- {#each tabs as tab (tab.id)}
52
- <Skeleton class="h-9 w-32 shrink-0 rounded-t-md" />
53
- {/each}
54
- {:else}
55
- {#each tabs as tab (tab.id)}
56
- <button
57
- type="button"
58
- onclick={() => handleSelect(tab.id)}
59
- class={cn(
60
- "shrink-0 px-4 py-2 text-sm font-medium transition-colors whitespace-nowrap",
61
- style === "underline"
62
- ? cn(
63
- "border-b-2",
64
- currentTab === tab.id
65
- ? "border-foreground text-foreground"
66
- : "border-transparent text-muted-foreground hover:text-foreground"
67
- )
68
- : cn(
69
- "rounded-md",
70
- currentTab === tab.id
71
- ? "bg-primary/10 text-primary"
72
- : "text-muted-foreground hover:bg-muted hover:text-foreground"
73
- )
74
- )}
75
- >
76
- {tab.label}
77
- </button>
78
- {/each}
79
- {/if}
80
- </div>
1
+ <script lang="ts" module>
2
+ /**
3
+ * Barra de tabs reutilizável para as variantes de perfil.
4
+ * Suporta loading state, tabs customizadas, active tab controlável
5
+ * e estilos variantes (underline vs pill).
6
+ * @component
7
+ */
8
+ export type ProfileUserTabItem = { id: string; label: string };
9
+ export type ProfileUserTabsStyle = "underline" | "pill";
10
+ </script>
11
+
12
+ <script lang="ts">
13
+ import Skeleton from "../../../ui/skeleton/skeleton.svelte";
14
+ import { cn } from "../../../../utils.js";
15
+
16
+ let {
17
+ tabs,
18
+ activeTab = $bindable(),
19
+ style = "underline",
20
+ isLoading = false,
21
+ className,
22
+ onchange,
23
+ }: {
24
+ tabs: ProfileUserTabItem[];
25
+ activeTab?: string;
26
+ style?: ProfileUserTabsStyle;
27
+ isLoading?: boolean;
28
+ className?: string;
29
+ onchange?: (id: string) => void;
30
+ } = $props();
31
+
32
+ const currentTab = $derived(activeTab ?? tabs[0]?.id ?? "");
33
+
34
+ const handleSelect = (id: string) => {
35
+ activeTab = id;
36
+ onchange?.(id);
37
+ };
38
+ </script>
39
+
40
+ <div
41
+ class={cn(
42
+ "mb-6 flex gap-1 border-b overflow-x-auto",
43
+ style === "pill"
44
+ ? "-mt-12 mb-6 rounded-t-lg border border-t bg-background px-2 py-1 shadow-sm border-b"
45
+ : "",
46
+ className
47
+ )}
48
+ data-slot="profile-user-tabs"
49
+ >
50
+ {#if isLoading}
51
+ {#each tabs as tab (tab.id)}
52
+ <Skeleton class="h-9 w-32 shrink-0 rounded-t-md" />
53
+ {/each}
54
+ {:else}
55
+ {#each tabs as tab (tab.id)}
56
+ <button
57
+ type="button"
58
+ onclick={() => handleSelect(tab.id)}
59
+ class={cn(
60
+ "shrink-0 px-4 py-2 text-sm font-medium transition-colors whitespace-nowrap",
61
+ style === "underline"
62
+ ? cn(
63
+ "border-b-2",
64
+ currentTab === tab.id
65
+ ? "border-foreground text-foreground"
66
+ : "border-transparent text-muted-foreground hover:text-foreground"
67
+ )
68
+ : cn(
69
+ "rounded-md",
70
+ currentTab === tab.id
71
+ ? "bg-primary/10 text-primary"
72
+ : "text-muted-foreground hover:bg-muted hover:text-foreground"
73
+ )
74
+ )}
75
+ >
76
+ {tab.label}
77
+ </button>
78
+ {/each}
79
+ {/if}
80
+ </div>
@@ -1,62 +1,62 @@
1
- <script lang="ts" module>
2
- /**
3
- * @component PageAuth01
4
- * Shared layout for auth pages (login/register) variant 01.
5
- * Split layout: hero on the left, auth card on the right with grid pattern.
6
- */
7
- </script>
8
-
9
- <script lang="ts">
10
- import type { Snippet } from "svelte";
11
- import LeftHero from "../../../ui/panel/LeftHero.svelte";
12
-
13
- type CarouselItem = {
14
- title: string;
15
- description: string;
16
- buttonText: string;
17
- buttonUrl?: string;
18
- backgroundUrl?: string;
19
- };
20
-
21
- type Props = {
22
- title?: string;
23
- type?: "NUMBER" | "DOT" | "POINTER";
24
- carousel?: CarouselItem[];
25
- children?: Snippet;
26
- };
27
-
28
- let { title, type, carousel = [], children }: Props = $props();
29
- </script>
30
-
31
- <main class="h-screen w-screen flex items-center">
32
- <div class="hidden md:block md:w-7/12 relative">
33
- <LeftHero {title} type={type ?? "POINTER"} items={carousel} />
34
- <svg width="0" height="0" class="absolute">
35
- <defs>
36
- <clipPath id="grid-curve-clip" clipPathUnits="objectBoundingBox">
37
- <path d="M0.35,0 L1,0 C0.85,0.3 1,0.6 0.4,1 L1,1 Z" />
38
- </clipPath>
39
- </defs>
40
- </svg>
41
- </div>
42
- <div
43
- class="w-full md:w-5/12 border-gray-900 overflow-y-auto px-10 bg-gradient"
44
- >
45
- {#if children}
46
- {@render children()}
47
- {/if}
48
- </div>
49
- </main>
50
-
51
- <style>
52
- :global(.grid-pattern) {
53
- background-size: 40px 40px;
54
- background-image: linear-gradient(
55
- to right,
56
- rgba(0, 0, 0, 0.1) 1px,
57
- transparent 1px
58
- ),
59
- linear-gradient(to bottom, rgba(0, 0, 0, 0.1) 1px, transparent 1px);
60
- clip-path: url(#grid-curve-clip);
61
- }
62
- </style>
1
+ <script lang="ts" module>
2
+ /**
3
+ * @component PageAuth01
4
+ * Shared layout for auth pages (login/register) variant 01.
5
+ * Split layout: hero on the left, auth card on the right with grid pattern.
6
+ */
7
+ </script>
8
+
9
+ <script lang="ts">
10
+ import type { Snippet } from "svelte";
11
+ import LeftHero from "../../../ui/panel/LeftHero.svelte";
12
+
13
+ type CarouselItem = {
14
+ title: string;
15
+ description: string;
16
+ buttonText: string;
17
+ buttonUrl?: string;
18
+ backgroundUrl?: string;
19
+ };
20
+
21
+ type Props = {
22
+ title?: string;
23
+ type?: "NUMBER" | "DOT" | "POINTER";
24
+ carousel?: CarouselItem[];
25
+ children?: Snippet;
26
+ };
27
+
28
+ let { title, type, carousel = [], children }: Props = $props();
29
+ </script>
30
+
31
+ <main class="h-screen w-screen flex items-center">
32
+ <div class="hidden md:block md:w-7/12 relative">
33
+ <LeftHero {title} type={type ?? "POINTER"} items={carousel} />
34
+ <svg width="0" height="0" class="absolute">
35
+ <defs>
36
+ <clipPath id="grid-curve-clip" clipPathUnits="objectBoundingBox">
37
+ <path d="M0.35,0 L1,0 C0.85,0.3 1,0.6 0.4,1 L1,1 Z" />
38
+ </clipPath>
39
+ </defs>
40
+ </svg>
41
+ </div>
42
+ <div
43
+ class="w-full md:w-5/12 border-gray-900 overflow-y-auto px-10 bg-gradient"
44
+ >
45
+ {#if children}
46
+ {@render children()}
47
+ {/if}
48
+ </div>
49
+ </main>
50
+
51
+ <style>
52
+ :global(.grid-pattern) {
53
+ background-size: 40px 40px;
54
+ background-image: linear-gradient(
55
+ to right,
56
+ rgba(0, 0, 0, 0.1) 1px,
57
+ transparent 1px
58
+ ),
59
+ linear-gradient(to bottom, rgba(0, 0, 0, 0.1) 1px, transparent 1px);
60
+ clip-path: url(#grid-curve-clip);
61
+ }
62
+ </style>
@@ -1,40 +1,40 @@
1
- <script lang="ts" module>
2
- /**
3
- * @component PageAuth02
4
- * Shared layout for auth pages (login/register) variant 02.
5
- * Split layout: hero image on the left, auth card on the right.
6
- */
7
- </script>
8
-
9
- <script lang="ts">
10
- import type { Snippet } from "svelte";
11
- import LeftHero from "../login/02/ui/LeftHero02.svelte";
12
-
13
- type CarouselItem = {
14
- title: string;
15
- description: string;
16
- buttonText: string;
17
- buttonUrl?: string;
18
- backgroundUrl?: string;
19
- };
20
-
21
- type Props = {
22
- title?: string;
23
- type?: "NUMBER" | "DOT" | "POINTER";
24
- carousel?: CarouselItem[];
25
- children?: Snippet;
26
- };
27
-
28
- let { title, type, carousel = [], children }: Props = $props();
29
- </script>
30
-
31
- <main class="h-screen w-screen flex items-center justify-center">
32
- <div class="hidden md:flex w-7/12 h-screen">
33
- <LeftHero {title} type={type ?? "POINTER"} items={carousel} />
34
- </div>
35
- <div class="w-full md:w-5/12 flex flex-col h-screen overflow-y-auto">
36
- {#if children}
37
- {@render children()}
38
- {/if}
39
- </div>
40
- </main>
1
+ <script lang="ts" module>
2
+ /**
3
+ * @component PageAuth02
4
+ * Shared layout for auth pages (login/register) variant 02.
5
+ * Split layout: hero image on the left, auth card on the right.
6
+ */
7
+ </script>
8
+
9
+ <script lang="ts">
10
+ import type { Snippet } from "svelte";
11
+ import LeftHero from "../login/02/ui/LeftHero02.svelte";
12
+
13
+ type CarouselItem = {
14
+ title: string;
15
+ description: string;
16
+ buttonText: string;
17
+ buttonUrl?: string;
18
+ backgroundUrl?: string;
19
+ };
20
+
21
+ type Props = {
22
+ title?: string;
23
+ type?: "NUMBER" | "DOT" | "POINTER";
24
+ carousel?: CarouselItem[];
25
+ children?: Snippet;
26
+ };
27
+
28
+ let { title, type, carousel = [], children }: Props = $props();
29
+ </script>
30
+
31
+ <main class="h-screen w-screen flex items-center justify-center">
32
+ <div class="hidden md:flex w-7/12 h-screen">
33
+ <LeftHero {title} type={type ?? "POINTER"} items={carousel} />
34
+ </div>
35
+ <div class="w-full md:w-5/12 flex flex-col h-screen overflow-y-auto">
36
+ {#if children}
37
+ {@render children()}
38
+ {/if}
39
+ </div>
40
+ </main>
@@ -1,40 +1,40 @@
1
- <script lang="ts" module>
2
- /**
3
- * @component PageAuth03
4
- * Shared layout for auth pages (login/register) variant 03.
5
- * Split layout with glass morphism: hero on the left, auth card on the right.
6
- */
7
- </script>
8
-
9
- <script lang="ts">
10
- import type { Snippet } from "svelte";
11
- import LeftHero from "../login/03/ui/LeftHero03.svelte";
12
-
13
- type CarouselItem = {
14
- title: string;
15
- description: string;
16
- buttonText: string;
17
- buttonUrl?: string;
18
- backgroundUrl?: string;
19
- };
20
-
21
- type Props = {
22
- title?: string;
23
- type?: "NUMBER" | "DOT" | "POINTER";
24
- carousel?: CarouselItem[];
25
- children?: Snippet;
26
- };
27
-
28
- let { title, type, carousel = [], children }: Props = $props();
29
- </script>
30
-
31
- <main class="h-screen w-screen flex items-center justify-center">
32
- <div class="hidden md:flex w-1/2 h-screen">
33
- <LeftHero {title} type={type ?? "DOT"} items={carousel} />
34
- </div>
35
- <div class="w-full md:w-1/2 flex flex-col h-screen overflow-y-auto">
36
- {#if children}
37
- {@render children()}
38
- {/if}
39
- </div>
40
- </main>
1
+ <script lang="ts" module>
2
+ /**
3
+ * @component PageAuth03
4
+ * Shared layout for auth pages (login/register) variant 03.
5
+ * Split layout with glass morphism: hero on the left, auth card on the right.
6
+ */
7
+ </script>
8
+
9
+ <script lang="ts">
10
+ import type { Snippet } from "svelte";
11
+ import LeftHero from "../login/03/ui/LeftHero03.svelte";
12
+
13
+ type CarouselItem = {
14
+ title: string;
15
+ description: string;
16
+ buttonText: string;
17
+ buttonUrl?: string;
18
+ backgroundUrl?: string;
19
+ };
20
+
21
+ type Props = {
22
+ title?: string;
23
+ type?: "NUMBER" | "DOT" | "POINTER";
24
+ carousel?: CarouselItem[];
25
+ children?: Snippet;
26
+ };
27
+
28
+ let { title, type, carousel = [], children }: Props = $props();
29
+ </script>
30
+
31
+ <main class="h-screen w-screen flex items-center justify-center">
32
+ <div class="hidden md:flex w-1/2 h-screen">
33
+ <LeftHero {title} type={type ?? "DOT"} items={carousel} />
34
+ </div>
35
+ <div class="w-full md:w-1/2 flex flex-col h-screen overflow-y-auto">
36
+ {#if children}
37
+ {@render children()}
38
+ {/if}
39
+ </div>
40
+ </main>