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,182 +1,182 @@
1
- <script lang="ts">
2
- import { cn, type WithElementRef, type WithoutChildren } from "../../../utils.js";
3
- import type { Snippet } from "svelte";
4
- import type { HTMLAttributes } from "svelte/elements";
5
- import { setInputOTPContext, type OtpCell } from "./context.svelte.js";
6
-
7
- let {
8
- ref = $bindable(null),
9
- value = $bindable(""),
10
- maxlength = 6,
11
- length,
12
- placeholder = "",
13
- disabled = false,
14
- id,
15
- onValueChange,
16
- class: className,
17
- children,
18
- ...restProps
19
- }: WithoutChildren<WithElementRef<HTMLAttributes<HTMLDivElement>>> & {
20
- value?: string;
21
- maxlength?: number;
22
- length?: number;
23
- placeholder?: string;
24
- disabled?: boolean;
25
- id?: string;
26
- onValueChange?: (value: string) => void;
27
- children?: Snippet<[{ cells: OtpCell[] }]>;
28
- } = $props();
29
-
30
- const total = $derived(length ?? maxlength);
31
- let activeIndex = $state<number | null>(null);
32
- const inputs = $state<Array<HTMLInputElement | null>>([]);
33
-
34
- const cells = $derived(
35
- Array.from({ length: total }, (_, index) => ({
36
- index,
37
- char: value[index] ?? "",
38
- hasFakeCaret: activeIndex === index && value[index] === "",
39
- }))
40
- );
41
-
42
- function focusIndex(index: number) {
43
- if (index < 0 || index >= total) return;
44
- const el = inputs[index];
45
- el?.focus();
46
- el?.select();
47
- }
48
-
49
- function focusNext(index: number) {
50
- focusIndex(Math.min(index + 1, total - 1));
51
- }
52
-
53
- function focusPrev(index: number) {
54
- focusIndex(index - 1);
55
- }
56
-
57
- function registerInput(index: number, el: HTMLInputElement | null) {
58
- inputs[index] = el;
59
- }
60
-
61
- function setActive(index: number | null) {
62
- activeIndex = index;
63
- }
64
-
65
- function setValueAt(index: number, char: string) {
66
- if (index < 0 || index >= total) return;
67
- const chars = value.split("");
68
- chars[index] = char.slice(0, 1);
69
- value = chars.join("");
70
- activeIndex = Math.min(index + 1, total - 1);
71
- focusNext(index);
72
- }
73
-
74
- function clearValueAt(index: number) {
75
- if (index < 0 || index >= total) return;
76
- const chars = value.split("");
77
- chars[index] = "";
78
- value = chars.join("");
79
- }
80
-
81
- function handleKeyDown(index: number, event: KeyboardEvent) {
82
- if (event.key === "Backspace") {
83
- event.preventDefault();
84
- if (value[index]) {
85
- clearValueAt(index);
86
- } else {
87
- clearValueAt(index - 1);
88
- focusPrev(index);
89
- }
90
- } else if (event.key === "Delete") {
91
- event.preventDefault();
92
- clearValueAt(index);
93
- } else if (event.key === "ArrowLeft") {
94
- event.preventDefault();
95
- focusPrev(index);
96
- } else if (event.key === "ArrowRight") {
97
- event.preventDefault();
98
- focusNext(index);
99
- } else if (event.key === "Home") {
100
- event.preventDefault();
101
- focusIndex(0);
102
- } else if (event.key === "End") {
103
- event.preventDefault();
104
- focusIndex(total - 1);
105
- }
106
- }
107
-
108
- function handlePaste(index: number, event: ClipboardEvent) {
109
- event.preventDefault();
110
- const digits = (event.clipboardData?.getData("text") ?? "")
111
- .replace(/\D/g, "")
112
- .split("");
113
- if (!digits.length) return;
114
- const chars = value.split("");
115
- let cursor = index;
116
- for (const digit of digits) {
117
- if (cursor >= total) break;
118
- chars[cursor] = digit;
119
- cursor++;
120
- }
121
- value = chars.join("");
122
- activeIndex = cursor - 1;
123
- focusIndex(cursor - 1);
124
- }
125
-
126
- // svelte-ignore state_referenced_locally
127
- let ctxState = $state({
128
- value,
129
- maxlength: total,
130
- placeholder,
131
- disabled,
132
- activeIndex: null as number | null,
133
- setActive,
134
- setValueAt,
135
- clearValueAt,
136
- focusNext,
137
- focusPrev,
138
- handleKeyDown,
139
- handlePaste,
140
- registerInput,
141
- });
142
-
143
- const ctx = setInputOTPContext(ctxState);
144
-
145
- $effect(() => {
146
- ctx.value = value;
147
- ctx.maxlength = total;
148
- ctx.placeholder = placeholder;
149
- ctx.disabled = disabled;
150
- ctx.activeIndex = activeIndex;
151
- });
152
-
153
- let isInitialValue = true;
154
- $effect(() => {
155
- if (isInitialValue) {
156
- isInitialValue = false;
157
- return;
158
- }
159
- onValueChange?.(value);
160
- });
161
- </script>
162
-
163
- <div
164
- bind:this={ref}
165
- data-slot="input-otp"
166
- spellcheck={false}
167
- class={cn(
168
- "cn-input-otp-input gap-2 flex items-center disabled:cursor-not-allowed has-disabled:opacity-50",
169
- className
170
- )}
171
- {...restProps}
172
- >
173
- {@render children?.({ cells })}
174
- <input
175
- type="hidden"
176
- data-slot="input-otp-input"
177
- value={value}
178
- {id}
179
- disabled={disabled}
180
- aria-hidden={true}
181
- />
1
+ <script lang="ts">
2
+ import { cn, type WithElementRef, type WithoutChildren } from "../../../utils.js";
3
+ import type { Snippet } from "svelte";
4
+ import type { HTMLAttributes } from "svelte/elements";
5
+ import { setInputOTPContext, type OtpCell } from "./context.svelte.js";
6
+
7
+ let {
8
+ ref = $bindable(null),
9
+ value = $bindable(""),
10
+ maxlength = 6,
11
+ length,
12
+ placeholder = "",
13
+ disabled = false,
14
+ id,
15
+ onValueChange,
16
+ class: className,
17
+ children,
18
+ ...restProps
19
+ }: WithoutChildren<WithElementRef<HTMLAttributes<HTMLDivElement>>> & {
20
+ value?: string;
21
+ maxlength?: number;
22
+ length?: number;
23
+ placeholder?: string;
24
+ disabled?: boolean;
25
+ id?: string;
26
+ onValueChange?: (value: string) => void;
27
+ children?: Snippet<[{ cells: OtpCell[] }]>;
28
+ } = $props();
29
+
30
+ const total = $derived(length ?? maxlength);
31
+ let activeIndex = $state<number | null>(null);
32
+ const inputs = $state<Array<HTMLInputElement | null>>([]);
33
+
34
+ const cells = $derived(
35
+ Array.from({ length: total }, (_, index) => ({
36
+ index,
37
+ char: value[index] ?? "",
38
+ hasFakeCaret: activeIndex === index && value[index] === "",
39
+ }))
40
+ );
41
+
42
+ function focusIndex(index: number) {
43
+ if (index < 0 || index >= total) return;
44
+ const el = inputs[index];
45
+ el?.focus();
46
+ el?.select();
47
+ }
48
+
49
+ function focusNext(index: number) {
50
+ focusIndex(Math.min(index + 1, total - 1));
51
+ }
52
+
53
+ function focusPrev(index: number) {
54
+ focusIndex(index - 1);
55
+ }
56
+
57
+ function registerInput(index: number, el: HTMLInputElement | null) {
58
+ inputs[index] = el;
59
+ }
60
+
61
+ function setActive(index: number | null) {
62
+ activeIndex = index;
63
+ }
64
+
65
+ function setValueAt(index: number, char: string) {
66
+ if (index < 0 || index >= total) return;
67
+ const chars = value.split("");
68
+ chars[index] = char.slice(0, 1);
69
+ value = chars.join("");
70
+ activeIndex = Math.min(index + 1, total - 1);
71
+ focusNext(index);
72
+ }
73
+
74
+ function clearValueAt(index: number) {
75
+ if (index < 0 || index >= total) return;
76
+ const chars = value.split("");
77
+ chars[index] = "";
78
+ value = chars.join("");
79
+ }
80
+
81
+ function handleKeyDown(index: number, event: KeyboardEvent) {
82
+ if (event.key === "Backspace") {
83
+ event.preventDefault();
84
+ if (value[index]) {
85
+ clearValueAt(index);
86
+ } else {
87
+ clearValueAt(index - 1);
88
+ focusPrev(index);
89
+ }
90
+ } else if (event.key === "Delete") {
91
+ event.preventDefault();
92
+ clearValueAt(index);
93
+ } else if (event.key === "ArrowLeft") {
94
+ event.preventDefault();
95
+ focusPrev(index);
96
+ } else if (event.key === "ArrowRight") {
97
+ event.preventDefault();
98
+ focusNext(index);
99
+ } else if (event.key === "Home") {
100
+ event.preventDefault();
101
+ focusIndex(0);
102
+ } else if (event.key === "End") {
103
+ event.preventDefault();
104
+ focusIndex(total - 1);
105
+ }
106
+ }
107
+
108
+ function handlePaste(index: number, event: ClipboardEvent) {
109
+ event.preventDefault();
110
+ const digits = (event.clipboardData?.getData("text") ?? "")
111
+ .replace(/\D/g, "")
112
+ .split("");
113
+ if (!digits.length) return;
114
+ const chars = value.split("");
115
+ let cursor = index;
116
+ for (const digit of digits) {
117
+ if (cursor >= total) break;
118
+ chars[cursor] = digit;
119
+ cursor++;
120
+ }
121
+ value = chars.join("");
122
+ activeIndex = cursor - 1;
123
+ focusIndex(cursor - 1);
124
+ }
125
+
126
+ // svelte-ignore state_referenced_locally
127
+ let ctxState = $state({
128
+ value,
129
+ maxlength: total,
130
+ placeholder,
131
+ disabled,
132
+ activeIndex: null as number | null,
133
+ setActive,
134
+ setValueAt,
135
+ clearValueAt,
136
+ focusNext,
137
+ focusPrev,
138
+ handleKeyDown,
139
+ handlePaste,
140
+ registerInput,
141
+ });
142
+
143
+ const ctx = setInputOTPContext(ctxState);
144
+
145
+ $effect(() => {
146
+ ctx.value = value;
147
+ ctx.maxlength = total;
148
+ ctx.placeholder = placeholder;
149
+ ctx.disabled = disabled;
150
+ ctx.activeIndex = activeIndex;
151
+ });
152
+
153
+ let isInitialValue = true;
154
+ $effect(() => {
155
+ if (isInitialValue) {
156
+ isInitialValue = false;
157
+ return;
158
+ }
159
+ onValueChange?.(value);
160
+ });
161
+ </script>
162
+
163
+ <div
164
+ bind:this={ref}
165
+ data-slot="input-otp"
166
+ spellcheck={false}
167
+ class={cn(
168
+ "cn-input-otp-input gap-2 flex items-center disabled:cursor-not-allowed has-disabled:opacity-50",
169
+ className
170
+ )}
171
+ {...restProps}
172
+ >
173
+ {@render children?.({ cells })}
174
+ <input
175
+ type="hidden"
176
+ data-slot="input-otp-input"
177
+ value={value}
178
+ {id}
179
+ disabled={disabled}
180
+ aria-hidden={true}
181
+ />
182
182
  </div>
@@ -1,25 +1,25 @@
1
- <script lang="ts">
2
- import Separator from "../../separator/separator.svelte";
3
- import { t } from "../../../../i18n";
4
-
5
- type Props = {
6
- variant?: "SEPARATOR";
7
- };
8
-
9
- let { variant }: Props = $props();
10
- </script>
11
-
12
- {#if variant === "SEPARATOR"}
13
- <div class="relative my-1 text-center">
14
- <div class="absolute inset-0 flex items-center">
15
- <Separator />
16
- </div>
17
- <span
18
- class="relative bg-white dark:bg-primary px-4 text-[10px] uppercase text-slate-400 tracking-wider"
19
- >
20
- {$t("label.or")}
21
- </span>
22
- </div>
23
- {:else}
24
- {$t("label.or")}
25
- {/if}
1
+ <script lang="ts">
2
+ import Separator from "../../separator/separator.svelte";
3
+ import { t } from "../../../../i18n";
4
+
5
+ type Props = {
6
+ variant?: "SEPARATOR";
7
+ };
8
+
9
+ let { variant }: Props = $props();
10
+ </script>
11
+
12
+ {#if variant === "SEPARATOR"}
13
+ <div class="relative my-1 text-center">
14
+ <div class="absolute inset-0 flex items-center">
15
+ <Separator />
16
+ </div>
17
+ <span
18
+ class="relative bg-white dark:bg-primary px-4 text-[10px] uppercase text-slate-400 tracking-wider"
19
+ >
20
+ {$t("label.or")}
21
+ </span>
22
+ </div>
23
+ {:else}
24
+ {$t("label.or")}
25
+ {/if}
@@ -1,20 +1,20 @@
1
- <script lang="ts">
2
- import { cn, type WithElementRef } from "../../../utils.js";
3
- import type { HTMLLabelAttributes } from "svelte/elements";
4
-
5
- let {
6
- ref = $bindable(null),
7
- class: className,
8
- children,
9
- ...restProps
10
- }: WithElementRef<HTMLLabelAttributes> = $props();
11
- </script>
12
-
13
- <label
14
- bind:this={ref}
15
- data-slot="label"
16
- class={cn("text-sm font-medium leading-4 text-foreground", className)}
17
- {...restProps}
18
- >
19
- {@render children?.()}
1
+ <script lang="ts">
2
+ import { cn, type WithElementRef } from "../../../utils.js";
3
+ import type { HTMLLabelAttributes } from "svelte/elements";
4
+
5
+ let {
6
+ ref = $bindable(null),
7
+ class: className,
8
+ children,
9
+ ...restProps
10
+ }: WithElementRef<HTMLLabelAttributes> = $props();
11
+ </script>
12
+
13
+ <label
14
+ bind:this={ref}
15
+ data-slot="label"
16
+ class={cn("text-sm font-medium leading-4 text-foreground", className)}
17
+ {...restProps}
18
+ >
19
+ {@render children?.()}
20
20
  </label>
@@ -1,49 +1,49 @@
1
- <script lang="ts" module>
2
- export type LanguageSwitcherProps = {
3
- /** Dropdown alignment */
4
- align?: "start" | "center" | "end";
5
-
6
- /** Button variant */
7
- variant?: "outline" | "ghost";
8
-
9
- class?: string;
10
- };
11
- </script>
12
-
13
- <script lang="ts">
14
- import { HugeiconsIcon } from "@hugeicons/svelte";
15
- import { GlobalIcon } from "@hugeicons/core-free-icons";
16
- import * as DropdownMenu from "../dropdown-menu";
17
- import { buttonVariants } from "../button";
18
- import { t, locale, locales } from "../../../i18n";
19
- import { cn } from "../../../utils.js";
20
-
21
- let {
22
- align = "end",
23
- variant = "outline",
24
- class: className,
25
- }: LanguageSwitcherProps = $props();
26
- </script>
27
-
28
- <DropdownMenu.Root>
29
- <DropdownMenu.Trigger
30
- class={cn(
31
- buttonVariants({ variant, size: "icon" }),
32
- className,
33
- "rounded-full bg-input",
34
- )}
35
- aria-label="Change language"
36
- >
37
- <HugeiconsIcon icon={GlobalIcon} class="size-4" />
38
- <span class="sr-only">Change language</span>
39
- </DropdownMenu.Trigger>
40
- <DropdownMenu.Content {align}>
41
- <DropdownMenu.RadioGroup bind:value={$locale}>
42
- {#each $locales as code (code)}
43
- <DropdownMenu.RadioItem value={code}>
44
- {$t(`language.${code}`)}
45
- </DropdownMenu.RadioItem>
46
- {/each}
47
- </DropdownMenu.RadioGroup>
48
- </DropdownMenu.Content>
1
+ <script lang="ts" module>
2
+ export type LanguageSwitcherProps = {
3
+ /** Dropdown alignment */
4
+ align?: "start" | "center" | "end";
5
+
6
+ /** Button variant */
7
+ variant?: "outline" | "ghost";
8
+
9
+ class?: string;
10
+ };
11
+ </script>
12
+
13
+ <script lang="ts">
14
+ import { HugeiconsIcon } from "@hugeicons/svelte";
15
+ import { GlobalIcon } from "@hugeicons/core-free-icons";
16
+ import * as DropdownMenu from "../dropdown-menu";
17
+ import { buttonVariants } from "../button";
18
+ import { t, locale, locales } from "../../../i18n";
19
+ import { cn } from "../../../utils.js";
20
+
21
+ let {
22
+ align = "end",
23
+ variant = "outline",
24
+ class: className,
25
+ }: LanguageSwitcherProps = $props();
26
+ </script>
27
+
28
+ <DropdownMenu.Root>
29
+ <DropdownMenu.Trigger
30
+ class={cn(
31
+ buttonVariants({ variant, size: "icon" }),
32
+ className,
33
+ "rounded-full bg-input",
34
+ )}
35
+ aria-label="Change language"
36
+ >
37
+ <HugeiconsIcon icon={GlobalIcon} class="size-4" />
38
+ <span class="sr-only">Change language</span>
39
+ </DropdownMenu.Trigger>
40
+ <DropdownMenu.Content {align}>
41
+ <DropdownMenu.RadioGroup bind:value={$locale}>
42
+ {#each $locales as code (code)}
43
+ <DropdownMenu.RadioItem value={code}>
44
+ {$t(`language.${code}`)}
45
+ </DropdownMenu.RadioItem>
46
+ {/each}
47
+ </DropdownMenu.RadioGroup>
48
+ </DropdownMenu.Content>
49
49
  </DropdownMenu.Root>
@@ -1,49 +1,49 @@
1
- <script lang="ts" module>
2
- import type { ButtonSize } from "../button/button.svelte";
3
-
4
- export type LightSwitchProps = {
5
- variant?: "outline" | "ghost";
6
- size?: ButtonSize;
7
- };
8
- </script>
9
-
10
- <script lang="ts">
11
- import { HugeiconsIcon } from "@hugeicons/svelte";
12
- import { Sun01Icon, Moon01Icon } from "@hugeicons/core-free-icons";
13
- import { toggleMode } from "../../../theme.svelte";
14
- import Button from "../button/button.svelte";
15
-
16
- let { variant = "outline", size = "default" }: LightSwitchProps = $props();
17
-
18
- const sizeMap = {
19
- default: "icon",
20
- xs: "icon-xs",
21
- sm: "icon-sm",
22
- lg: "icon-lg",
23
- icon: "icon",
24
- "icon-xs": "icon-xs",
25
- "icon-sm": "icon-sm",
26
- "icon-lg": "icon-lg",
27
- };
28
-
29
- function handleClick() {
30
- toggleMode();
31
- }
32
- </script>
33
-
34
- <Button
35
- onclick={handleClick}
36
- {variant}
37
- size={sizeMap[size] as ButtonSize}
38
- class="relative rounded-full bg-input"
39
- >
40
- <HugeiconsIcon
41
- icon={Sun01Icon}
42
- class="scale-100 rotate-0 transition-all! dark:scale-0 dark:-rotate-90"
43
- />
44
- <HugeiconsIcon
45
- icon={Moon01Icon}
46
- class="absolute scale-0 rotate-90 transition-all! dark:scale-100 dark:rotate-0"
47
- />
48
- <span class="sr-only">Toggle theme</span>
1
+ <script lang="ts" module>
2
+ import type { ButtonSize } from "../button/button.svelte";
3
+
4
+ export type LightSwitchProps = {
5
+ variant?: "outline" | "ghost";
6
+ size?: ButtonSize;
7
+ };
8
+ </script>
9
+
10
+ <script lang="ts">
11
+ import { HugeiconsIcon } from "@hugeicons/svelte";
12
+ import { Sun01Icon, Moon01Icon } from "@hugeicons/core-free-icons";
13
+ import { toggleMode } from "../../../theme.svelte";
14
+ import Button from "../button/button.svelte";
15
+
16
+ let { variant = "outline", size = "default" }: LightSwitchProps = $props();
17
+
18
+ const sizeMap = {
19
+ default: "icon",
20
+ xs: "icon-xs",
21
+ sm: "icon-sm",
22
+ lg: "icon-lg",
23
+ icon: "icon",
24
+ "icon-xs": "icon-xs",
25
+ "icon-sm": "icon-sm",
26
+ "icon-lg": "icon-lg",
27
+ };
28
+
29
+ function handleClick() {
30
+ toggleMode();
31
+ }
32
+ </script>
33
+
34
+ <Button
35
+ onclick={handleClick}
36
+ {variant}
37
+ size={sizeMap[size] as ButtonSize}
38
+ class="relative rounded-full bg-input"
39
+ >
40
+ <HugeiconsIcon
41
+ icon={Sun01Icon}
42
+ class="scale-100 rotate-0 transition-all! dark:scale-0 dark:-rotate-90"
43
+ />
44
+ <HugeiconsIcon
45
+ icon={Moon01Icon}
46
+ class="absolute scale-0 rotate-90 transition-all! dark:scale-100 dark:rotate-0"
47
+ />
48
+ <span class="sr-only">Toggle theme</span>
49
49
  </Button>
@@ -1,12 +1,12 @@
1
- <script lang="ts">
2
- import { t } from "../../../i18n";
3
- import type { HTMLAnchorAttributes } from "svelte/elements";
4
-
5
- type Props = HTMLAnchorAttributes;
6
-
7
- let { ...restProps }: Props = $props();
8
- </script>
9
-
10
- <a {...restProps} class="text-xs text-slate-500 hover:text-slate-800 z-10">
11
- {$t("link.forget.password")}!
12
- </a>
1
+ <script lang="ts">
2
+ import { t } from "../../../i18n";
3
+ import type { HTMLAnchorAttributes } from "svelte/elements";
4
+
5
+ type Props = HTMLAnchorAttributes;
6
+
7
+ let { ...restProps }: Props = $props();
8
+ </script>
9
+
10
+ <a {...restProps} class="text-xs text-slate-500 hover:text-slate-800 z-10">
11
+ {$t("link.forget.password")}!
12
+ </a>