negodesign 0.0.71 → 0.0.72

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 (392) hide show
  1. package/README.md +115 -23
  2. package/dist/components/NegoDesign.svelte +7 -2
  3. package/dist/components/core/carousel/badge/ui/CarouselBadge.svelte +3 -5
  4. package/dist/components/core/carousel/grid/shared/ui/CarouselGridSlot.svelte +2 -2
  5. package/dist/components/core/carousel/highlights/ui/CarouselHighlights.svelte +2 -2
  6. package/dist/components/core/carousel/product/ui/CarouselProduct.svelte +2 -2
  7. package/dist/components/core/carousel/promotion/ui/CarouselPromotion.svelte +2 -2
  8. package/dist/components/core/datatable/data/columns-create.d.ts +1 -1
  9. package/dist/components/core/datatable/data/data-table.d.ts +3 -3
  10. package/dist/components/core/datatable/data/resolve-cell-badge.svelte.d.ts +2 -2
  11. package/dist/components/core/datatable/data/resolve-cell-badge.svelte.js +2 -1
  12. package/dist/components/core/datatable/data/resolve-cell.svelte.d.ts +2 -2
  13. package/dist/components/core/datatable/data/resolve-header.svelte.d.ts +2 -2
  14. package/dist/components/core/datatable/ui/DataTableActions.svelte +1 -1
  15. package/dist/components/core/datatable/ui/DataTableActions.svelte.d.ts +1 -1
  16. package/dist/components/core/datatable/ui/DataTableContent.svelte +1 -1
  17. package/dist/components/core/datatable/ui/DataTableContent.svelte.d.ts +1 -1
  18. package/dist/components/core/datatable/ui/DataTableCore.svelte +23 -26
  19. package/dist/components/core/datatable/ui/DataTableListFilter.svelte +3 -2
  20. package/dist/components/core/datatable/ui/DataTableListFilter.svelte.d.ts +1 -1
  21. package/dist/components/core/datatable/ui/DataTableListPagination.svelte +1 -1
  22. package/dist/components/core/datatable/ui/DataTableListPagination.svelte.d.ts +1 -1
  23. package/dist/components/core/datatable/ui/columns-create.svelte.d.ts +1 -1
  24. package/dist/components/core/panel/LeftHero.svelte +2 -2
  25. package/dist/components/core/sidebar/data/nav-top-bar-sidebar.d.ts +13 -4
  26. package/dist/components/core/sidebar/ui/navbar/NavMenuBarSidebar.svelte +3 -3
  27. package/dist/components/core/sidebar/ui/navbar/NavMenuTopBarSidebar.svelte +0 -2
  28. package/dist/components/core/sidebar/ui/navbar/nav-menu-header-sidebar.svelte +4 -5
  29. package/dist/components/pages/product-details/shared/ProductDetailFilesVertical.svelte +0 -1
  30. package/dist/components/pages/profile-user/shared/ProfileUserAddress.svelte +2 -3
  31. package/dist/components/pages/profile-user/shared/ProfileUserTabs.svelte +3 -1
  32. package/dist/components/ui/avatar/avatar-fallback.svelte +22 -12
  33. package/dist/components/ui/avatar/avatar-fallback.svelte.d.ts +3 -2
  34. package/dist/components/ui/avatar/avatar-image.svelte +31 -9
  35. package/dist/components/ui/avatar/avatar-image.svelte.d.ts +3 -2
  36. package/dist/components/ui/avatar/avatar.svelte +23 -9
  37. package/dist/components/ui/avatar/avatar.svelte.d.ts +6 -3
  38. package/dist/components/ui/avatar/context.svelte.d.ts +7 -0
  39. package/dist/components/ui/avatar/context.svelte.js +10 -0
  40. package/dist/components/ui/badge/badge.svelte +24 -26
  41. package/dist/components/ui/badge/badge.svelte.d.ts +15 -33
  42. package/dist/components/ui/button/button.svelte +35 -31
  43. package/dist/components/ui/button/button.svelte.d.ts +24 -61
  44. package/dist/components/ui/carousel/autoplay.d.ts +7 -0
  45. package/dist/components/ui/carousel/autoplay.js +7 -0
  46. package/dist/components/ui/carousel/carousel-content.svelte +31 -17
  47. package/dist/components/ui/carousel/carousel-item.svelte +2 -3
  48. package/dist/components/ui/carousel/carousel-next.svelte +1 -1
  49. package/dist/components/ui/carousel/carousel-previous.svelte +1 -1
  50. package/dist/components/ui/carousel/carousel.svelte +155 -30
  51. package/dist/components/ui/carousel/context.d.ts +23 -14
  52. package/dist/components/ui/carousel/context.js +4 -4
  53. package/dist/components/ui/carousel/index.d.ts +2 -0
  54. package/dist/components/ui/carousel/index.js +1 -0
  55. package/dist/components/ui/checkbox/checkbox.svelte +74 -17
  56. package/dist/components/ui/checkbox/checkbox.svelte.d.ts +17 -2
  57. package/dist/components/ui/collapsible/collapsible-content.svelte +27 -3
  58. package/dist/components/ui/collapsible/collapsible-content.svelte.d.ts +8 -2
  59. package/dist/components/ui/collapsible/collapsible-trigger.svelte +48 -3
  60. package/dist/components/ui/collapsible/collapsible-trigger.svelte.d.ts +10 -2
  61. package/dist/components/ui/collapsible/collapsible.svelte +62 -6
  62. package/dist/components/ui/collapsible/collapsible.svelte.d.ts +21 -2
  63. package/dist/components/ui/data-table/data-table.svelte.d.ts +2 -40
  64. package/dist/components/ui/data-table/data-table.svelte.js +1 -110
  65. package/dist/components/ui/data-table/flex-render.svelte +5 -5
  66. package/dist/components/ui/data-table/flex-render.svelte.d.ts +2 -2
  67. package/dist/components/ui/data-table/index.d.ts +2 -1
  68. package/dist/components/ui/data-table/index.js +1 -1
  69. package/dist/components/ui/data-table/table-core.svelte.d.ts +117 -0
  70. package/dist/components/ui/data-table/table-core.svelte.js +260 -0
  71. package/dist/components/ui/drawer/drawer-close.svelte +38 -3
  72. package/dist/components/ui/drawer/drawer-close.svelte.d.ts +10 -2
  73. package/dist/components/ui/drawer/drawer-content.svelte +67 -18
  74. package/dist/components/ui/drawer/drawer-content.svelte.d.ts +5 -4
  75. package/dist/components/ui/drawer/drawer-description.svelte +9 -6
  76. package/dist/components/ui/drawer/drawer-description.svelte.d.ts +3 -2
  77. package/dist/components/ui/drawer/drawer-nested.svelte +28 -5
  78. package/dist/components/ui/drawer/drawer-nested.svelte.d.ts +8 -1
  79. package/dist/components/ui/drawer/drawer-overlay.svelte +18 -9
  80. package/dist/components/ui/drawer/drawer-overlay.svelte.d.ts +3 -2
  81. package/dist/components/ui/drawer/drawer-portal.svelte +16 -3
  82. package/dist/components/ui/drawer/drawer-portal.svelte.d.ts +3 -1
  83. package/dist/components/ui/drawer/drawer-title.svelte +9 -6
  84. package/dist/components/ui/drawer/drawer-title.svelte.d.ts +3 -2
  85. package/dist/components/ui/drawer/drawer-trigger.svelte +39 -3
  86. package/dist/components/ui/drawer/drawer-trigger.svelte.d.ts +10 -2
  87. package/dist/components/ui/drawer/drawer.svelte +67 -4
  88. package/dist/components/ui/drawer/drawer.svelte.d.ts +23 -1
  89. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +18 -8
  90. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +8 -2
  91. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +53 -28
  92. package/dist/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +8 -3
  93. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte +93 -17
  94. package/dist/components/ui/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -6
  95. package/dist/components/ui/dropdown-menu/dropdown-menu-context.svelte.d.ts +26 -0
  96. package/dist/components/ui/dropdown-menu/dropdown-menu-context.svelte.js +27 -0
  97. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +14 -8
  98. package/dist/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +6 -3
  99. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte +18 -3
  100. package/dist/components/ui/dropdown-menu/dropdown-menu-group.svelte.d.ts +7 -2
  101. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte +42 -8
  102. package/dist/components/ui/dropdown-menu/dropdown-menu-item.svelte.d.ts +9 -2
  103. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte +9 -5
  104. package/dist/components/ui/dropdown-menu/dropdown-menu-label.svelte.d.ts +5 -2
  105. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte +3 -3
  106. package/dist/components/ui/dropdown-menu/dropdown-menu-portal.svelte.d.ts +5 -1
  107. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +36 -8
  108. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +9 -2
  109. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +59 -23
  110. package/dist/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +12 -2
  111. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte +11 -7
  112. package/dist/components/ui/dropdown-menu/dropdown-menu-separator.svelte.d.ts +6 -2
  113. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +26 -9
  114. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +8 -2
  115. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +39 -11
  116. package/dist/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -2
  117. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte +73 -3
  118. package/dist/components/ui/dropdown-menu/dropdown-menu-sub.svelte.d.ts +8 -1
  119. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +65 -3
  120. package/dist/components/ui/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +12 -2
  121. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte +50 -3
  122. package/dist/components/ui/dropdown-menu/dropdown-menu.svelte.d.ts +9 -1
  123. package/dist/components/ui/empty/empty-content.svelte +2 -5
  124. package/dist/components/ui/empty/empty-description.svelte +2 -5
  125. package/dist/components/ui/empty/empty-header.svelte +2 -2
  126. package/dist/components/ui/empty/empty-media.svelte +17 -16
  127. package/dist/components/ui/empty/empty-media.svelte.d.ts +10 -19
  128. package/dist/components/ui/empty/empty-title.svelte +2 -2
  129. package/dist/components/ui/empty/empty.svelte +2 -5
  130. package/dist/components/ui/input-otp/context.svelte.d.ts +22 -0
  131. package/dist/components/ui/input-otp/context.svelte.js +8 -0
  132. package/dist/components/ui/input-otp/input-otp-group.svelte +5 -2
  133. package/dist/components/ui/input-otp/input-otp-separator.svelte +5 -5
  134. package/dist/components/ui/input-otp/input-otp-slot.svelte +50 -17
  135. package/dist/components/ui/input-otp/input-otp-slot.svelte.d.ts +7 -2
  136. package/dist/components/ui/input-otp/input-otp.svelte +167 -8
  137. package/dist/components/ui/input-otp/input-otp.svelte.d.ts +17 -2
  138. package/dist/components/ui/label/label.svelte +10 -10
  139. package/dist/components/ui/label/label.svelte.d.ts +3 -2
  140. package/dist/components/ui/language-switcher/language-switcher.svelte +4 -3
  141. package/dist/components/ui/light-switch/light-switch.svelte +12 -6
  142. package/dist/components/ui/phone-input/country-selector.svelte +64 -78
  143. package/dist/components/ui/phone-input/country-selector.svelte.d.ts +6 -6
  144. package/dist/components/ui/phone-input/flag.svelte +3 -12
  145. package/dist/components/ui/phone-input/flag.svelte.d.ts +1 -1
  146. package/dist/components/ui/phone-input/flags.d.ts +2 -1
  147. package/dist/components/ui/phone-input/flags.js +4 -8
  148. package/dist/components/ui/phone-input/index.d.ts +1 -1
  149. package/dist/components/ui/phone-input/phone-input.svelte +106 -21
  150. package/dist/components/ui/phone-input/phone-input.svelte.d.ts +1 -2
  151. package/dist/components/ui/phone-input/types.d.ts +16 -1
  152. package/dist/components/ui/popover/popover-close.svelte +22 -3
  153. package/dist/components/ui/popover/popover-close.svelte.d.ts +7 -2
  154. package/dist/components/ui/popover/popover-content.svelte +80 -18
  155. package/dist/components/ui/popover/popover-content.svelte.d.ts +10 -6
  156. package/dist/components/ui/popover/popover-context.svelte.d.ts +13 -0
  157. package/dist/components/ui/popover/popover-context.svelte.js +13 -0
  158. package/dist/components/ui/popover/popover-portal.svelte +3 -3
  159. package/dist/components/ui/popover/popover-portal.svelte.d.ts +5 -1
  160. package/dist/components/ui/popover/popover-trigger.svelte +62 -10
  161. package/dist/components/ui/popover/popover-trigger.svelte.d.ts +12 -2
  162. package/dist/components/ui/popover/popover.svelte +50 -3
  163. package/dist/components/ui/popover/popover.svelte.d.ts +9 -1
  164. package/dist/components/ui/separator/separator.svelte +17 -11
  165. package/dist/components/ui/separator/separator.svelte.d.ts +7 -2
  166. package/dist/components/ui/sidebar/context.svelte.d.ts +15 -23
  167. package/dist/components/ui/sidebar/context.svelte.js +33 -21
  168. package/dist/components/ui/sidebar/sidebar-content.svelte +1 -1
  169. package/dist/components/ui/sidebar/sidebar-footer.svelte +1 -1
  170. package/dist/components/ui/sidebar/sidebar-group-content.svelte +1 -1
  171. package/dist/components/ui/sidebar/sidebar-menu-action.svelte +3 -2
  172. package/dist/components/ui/sidebar/sidebar-menu-button.svelte +35 -66
  173. package/dist/components/ui/sidebar/sidebar-menu-button.svelte.d.ts +9 -38
  174. package/dist/components/ui/sidebar/sidebar-provider.svelte +28 -18
  175. package/dist/components/ui/sidebar/sidebar-provider.svelte.d.ts +3 -0
  176. package/dist/components/ui/sidebar/sidebar-rail.svelte +1 -1
  177. package/dist/components/ui/sidebar/sidebar-separator.svelte +11 -8
  178. package/dist/components/ui/sidebar/sidebar-separator.svelte.d.ts +3 -11
  179. package/dist/components/ui/sidebar/sidebar-trigger.svelte +2 -2
  180. package/dist/components/ui/sidebar/sidebar.svelte +34 -23
  181. package/dist/components/ui/sidebar/sidebar.svelte.d.ts +1 -1
  182. package/dist/components/ui/skeleton/skeleton.svelte +7 -4
  183. package/dist/components/ui/skeleton/skeleton.svelte.d.ts +1 -1
  184. package/dist/components/ui/star-rating/star-rating-star.svelte +57 -31
  185. package/dist/components/ui/star-rating/star-rating-star.svelte.d.ts +1 -1
  186. package/dist/components/ui/star-rating/star-rating.svelte +143 -13
  187. package/dist/components/ui/star-rating/star-rating.svelte.d.ts +31 -2
  188. package/dist/components/ui/star-rating/types.d.ts +6 -1
  189. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte +26 -9
  190. package/dist/components/ui/underline-tabs/underline-tabs-content.svelte.d.ts +9 -2
  191. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte +15 -8
  192. package/dist/components/ui/underline-tabs/underline-tabs-list.svelte.d.ts +8 -2
  193. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte +65 -34
  194. package/dist/components/ui/underline-tabs/underline-tabs-trigger.svelte.d.ts +14 -2
  195. package/dist/components/ui/underline-tabs/underline-tabs.svelte +49 -20
  196. package/dist/components/ui/underline-tabs/underline-tabs.svelte.d.ts +10 -2
  197. package/dist/components/ui/underline-tabs/underline-tabs.svelte.js +6 -59
  198. package/dist/docs/ApiTable.svelte +42 -0
  199. package/dist/docs/ApiTable.svelte.d.ts +7 -0
  200. package/dist/docs/CodeBlock.svelte +26 -0
  201. package/dist/docs/CodeBlock.svelte.d.ts +7 -0
  202. package/dist/docs/DocsHeader.svelte +25 -0
  203. package/dist/docs/DocsHeader.svelte.d.ts +6 -0
  204. package/dist/docs/DocsSidebar.svelte +99 -0
  205. package/dist/docs/DocsSidebar.svelte.d.ts +3 -0
  206. package/dist/docs/components.d.ts +27 -0
  207. package/dist/docs/components.js +897 -0
  208. package/dist/globals.css +466 -1590
  209. package/dist/styles/globals.css +136 -2
  210. package/dist/theme.svelte.d.ts +7 -0
  211. package/dist/theme.svelte.js +33 -0
  212. package/dist/utils.d.ts +4 -4
  213. package/dist/utils.js +18 -3
  214. package/package.json +4 -34
  215. package/dist/components/ui/chart/chart-container.svelte +0 -80
  216. package/dist/components/ui/chart/chart-container.svelte.d.ts +0 -9
  217. package/dist/components/ui/chart/chart-style.svelte +0 -37
  218. package/dist/components/ui/chart/chart-style.svelte.d.ts +0 -8
  219. package/dist/components/ui/chart/chart-tooltip.svelte +0 -184
  220. package/dist/components/ui/chart/chart-tooltip.svelte.d.ts +0 -27
  221. package/dist/components/ui/chart/chart-utils.d.ts +0 -36
  222. package/dist/components/ui/chart/chart-utils.js +0 -38
  223. package/dist/components/ui/chart/index.d.ts +0 -4
  224. package/dist/components/ui/chart/index.js +0 -4
  225. package/dist/components/ui/command/command-dialog.svelte +0 -42
  226. package/dist/components/ui/command/command-dialog.svelte.d.ts +0 -14
  227. package/dist/components/ui/command/command-empty.svelte +0 -17
  228. package/dist/components/ui/command/command-empty.svelte.d.ts +0 -4
  229. package/dist/components/ui/command/command-group.svelte +0 -33
  230. package/dist/components/ui/command/command-group.svelte.d.ts +0 -7
  231. package/dist/components/ui/command/command-input.svelte +0 -33
  232. package/dist/components/ui/command/command-input.svelte.d.ts +0 -4
  233. package/dist/components/ui/command/command-item.svelte +0 -27
  234. package/dist/components/ui/command/command-item.svelte.d.ts +0 -4
  235. package/dist/components/ui/command/command-link-item.svelte +0 -20
  236. package/dist/components/ui/command/command-link-item.svelte.d.ts +0 -4
  237. package/dist/components/ui/command/command-list.svelte +0 -20
  238. package/dist/components/ui/command/command-list.svelte.d.ts +0 -4
  239. package/dist/components/ui/command/command-loading.svelte +0 -7
  240. package/dist/components/ui/command/command-loading.svelte.d.ts +0 -4
  241. package/dist/components/ui/command/command-separator.svelte +0 -17
  242. package/dist/components/ui/command/command-separator.svelte.d.ts +0 -4
  243. package/dist/components/ui/command/command-shortcut.svelte +0 -23
  244. package/dist/components/ui/command/command-shortcut.svelte.d.ts +0 -5
  245. package/dist/components/ui/command/command.svelte +0 -28
  246. package/dist/components/ui/command/command.svelte.d.ts +0 -8
  247. package/dist/components/ui/command/index.d.ts +0 -12
  248. package/dist/components/ui/command/index.js +0 -14
  249. package/dist/components/ui/dialog/dialog-close.svelte +0 -11
  250. package/dist/components/ui/dialog/dialog-close.svelte.d.ts +0 -4
  251. package/dist/components/ui/dialog/dialog-content.svelte +0 -48
  252. package/dist/components/ui/dialog/dialog-content.svelte.d.ts +0 -13
  253. package/dist/components/ui/dialog/dialog-description.svelte +0 -20
  254. package/dist/components/ui/dialog/dialog-description.svelte.d.ts +0 -4
  255. package/dist/components/ui/dialog/dialog-footer.svelte +0 -32
  256. package/dist/components/ui/dialog/dialog-footer.svelte.d.ts +0 -8
  257. package/dist/components/ui/dialog/dialog-header.svelte +0 -20
  258. package/dist/components/ui/dialog/dialog-header.svelte.d.ts +0 -5
  259. package/dist/components/ui/dialog/dialog-overlay.svelte +0 -20
  260. package/dist/components/ui/dialog/dialog-overlay.svelte.d.ts +0 -4
  261. package/dist/components/ui/dialog/dialog-portal.svelte +0 -7
  262. package/dist/components/ui/dialog/dialog-portal.svelte.d.ts +0 -3
  263. package/dist/components/ui/dialog/dialog-title.svelte +0 -17
  264. package/dist/components/ui/dialog/dialog-title.svelte.d.ts +0 -4
  265. package/dist/components/ui/dialog/dialog-trigger.svelte +0 -11
  266. package/dist/components/ui/dialog/dialog-trigger.svelte.d.ts +0 -4
  267. package/dist/components/ui/dialog/dialog.svelte +0 -7
  268. package/dist/components/ui/dialog/dialog.svelte.d.ts +0 -3
  269. package/dist/components/ui/dialog/index.d.ts +0 -11
  270. package/dist/components/ui/dialog/index.js +0 -13
  271. package/dist/components/ui/input-group/index.d.ts +0 -7
  272. package/dist/components/ui/input-group/index.js +0 -9
  273. package/dist/components/ui/input-group/input-group-addon.svelte +0 -59
  274. package/dist/components/ui/input-group/input-group-addon.svelte.d.ts +0 -38
  275. package/dist/components/ui/input-group/input-group-button.svelte +0 -49
  276. package/dist/components/ui/input-group/input-group-button.svelte.d.ts +0 -32
  277. package/dist/components/ui/input-group/input-group-input.svelte +0 -23
  278. package/dist/components/ui/input-group/input-group-input.svelte.d.ts +0 -11
  279. package/dist/components/ui/input-group/input-group-text.svelte +0 -22
  280. package/dist/components/ui/input-group/input-group-text.svelte.d.ts +0 -5
  281. package/dist/components/ui/input-group/input-group-textarea.svelte +0 -23
  282. package/dist/components/ui/input-group/input-group-textarea.svelte.d.ts +0 -3
  283. package/dist/components/ui/input-group/input-group.svelte +0 -24
  284. package/dist/components/ui/input-group/input-group.svelte.d.ts +0 -5
  285. package/dist/components/ui/navigation-menu/index.d.ts +0 -9
  286. package/dist/components/ui/navigation-menu/index.js +0 -11
  287. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte +0 -20
  288. package/dist/components/ui/navigation-menu/navigation-menu-content.svelte.d.ts +0 -4
  289. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte +0 -22
  290. package/dist/components/ui/navigation-menu/navigation-menu-indicator.svelte.d.ts +0 -4
  291. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte +0 -17
  292. package/dist/components/ui/navigation-menu/navigation-menu-item.svelte.d.ts +0 -4
  293. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte +0 -17
  294. package/dist/components/ui/navigation-menu/navigation-menu-link.svelte.d.ts +0 -4
  295. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte +0 -20
  296. package/dist/components/ui/navigation-menu/navigation-menu-list.svelte.d.ts +0 -4
  297. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte +0 -30
  298. package/dist/components/ui/navigation-menu/navigation-menu-trigger.svelte.d.ts +0 -5
  299. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte +0 -22
  300. package/dist/components/ui/navigation-menu/navigation-menu-viewport.svelte.d.ts +0 -4
  301. package/dist/components/ui/navigation-menu/navigation-menu.svelte +0 -31
  302. package/dist/components/ui/navigation-menu/navigation-menu.svelte.d.ts +0 -7
  303. package/dist/components/ui/scroll-area/index.d.ts +0 -3
  304. package/dist/components/ui/scroll-area/index.js +0 -5
  305. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte +0 -30
  306. package/dist/components/ui/scroll-area/scroll-area-scrollbar.svelte.d.ts +0 -4
  307. package/dist/components/ui/scroll-area/scroll-area.svelte +0 -43
  308. package/dist/components/ui/scroll-area/scroll-area.svelte.d.ts +0 -11
  309. package/dist/components/ui/select/index.d.ts +0 -12
  310. package/dist/components/ui/select/index.js +0 -14
  311. package/dist/components/ui/select/select-content.svelte +0 -45
  312. package/dist/components/ui/select/select-content.svelte.d.ts +0 -11
  313. package/dist/components/ui/select/select-group-heading.svelte +0 -21
  314. package/dist/components/ui/select/select-group-heading.svelte.d.ts +0 -10
  315. package/dist/components/ui/select/select-group.svelte +0 -17
  316. package/dist/components/ui/select/select-group.svelte.d.ts +0 -4
  317. package/dist/components/ui/select/select-item.svelte +0 -41
  318. package/dist/components/ui/select/select-item.svelte.d.ts +0 -4
  319. package/dist/components/ui/select/select-label.svelte +0 -20
  320. package/dist/components/ui/select/select-label.svelte.d.ts +0 -6
  321. package/dist/components/ui/select/select-portal.svelte +0 -7
  322. package/dist/components/ui/select/select-portal.svelte.d.ts +0 -3
  323. package/dist/components/ui/select/select-scroll-down-button.svelte +0 -21
  324. package/dist/components/ui/select/select-scroll-down-button.svelte.d.ts +0 -4
  325. package/dist/components/ui/select/select-scroll-up-button.svelte +0 -21
  326. package/dist/components/ui/select/select-scroll-up-button.svelte.d.ts +0 -4
  327. package/dist/components/ui/select/select-separator.svelte +0 -18
  328. package/dist/components/ui/select/select-separator.svelte.d.ts +0 -4
  329. package/dist/components/ui/select/select-trigger.svelte +0 -30
  330. package/dist/components/ui/select/select-trigger.svelte.d.ts +0 -8
  331. package/dist/components/ui/select/select.svelte +0 -11
  332. package/dist/components/ui/select/select.svelte.d.ts +0 -3
  333. package/dist/components/ui/sheet/index.d.ts +0 -11
  334. package/dist/components/ui/sheet/index.js +0 -13
  335. package/dist/components/ui/sheet/sheet-close.svelte +0 -7
  336. package/dist/components/ui/sheet/sheet-close.svelte.d.ts +0 -4
  337. package/dist/components/ui/sheet/sheet-content.svelte +0 -56
  338. package/dist/components/ui/sheet/sheet-content.svelte.d.ts +0 -15
  339. package/dist/components/ui/sheet/sheet-description.svelte +0 -17
  340. package/dist/components/ui/sheet/sheet-description.svelte.d.ts +0 -4
  341. package/dist/components/ui/sheet/sheet-footer.svelte +0 -20
  342. package/dist/components/ui/sheet/sheet-footer.svelte.d.ts +0 -5
  343. package/dist/components/ui/sheet/sheet-header.svelte +0 -20
  344. package/dist/components/ui/sheet/sheet-header.svelte.d.ts +0 -5
  345. package/dist/components/ui/sheet/sheet-overlay.svelte +0 -17
  346. package/dist/components/ui/sheet/sheet-overlay.svelte.d.ts +0 -4
  347. package/dist/components/ui/sheet/sheet-portal.svelte +0 -7
  348. package/dist/components/ui/sheet/sheet-portal.svelte.d.ts +0 -3
  349. package/dist/components/ui/sheet/sheet-title.svelte +0 -17
  350. package/dist/components/ui/sheet/sheet-title.svelte.d.ts +0 -4
  351. package/dist/components/ui/sheet/sheet-trigger.svelte +0 -7
  352. package/dist/components/ui/sheet/sheet-trigger.svelte.d.ts +0 -4
  353. package/dist/components/ui/sheet/sheet.svelte +0 -7
  354. package/dist/components/ui/sheet/sheet.svelte.d.ts +0 -3
  355. package/dist/components/ui/spinner/index.d.ts +0 -1
  356. package/dist/components/ui/spinner/index.js +0 -1
  357. package/dist/components/ui/spinner/spinner.svelte +0 -26
  358. package/dist/components/ui/spinner/spinner.svelte.d.ts +0 -4
  359. package/dist/components/ui/tabs/index.d.ts +0 -5
  360. package/dist/components/ui/tabs/index.js +0 -7
  361. package/dist/components/ui/tabs/tabs-content.svelte +0 -17
  362. package/dist/components/ui/tabs/tabs-content.svelte.d.ts +0 -4
  363. package/dist/components/ui/tabs/tabs-list.svelte +0 -40
  364. package/dist/components/ui/tabs/tabs-list.svelte.d.ts +0 -25
  365. package/dist/components/ui/tabs/tabs-trigger.svelte +0 -23
  366. package/dist/components/ui/tabs/tabs-trigger.svelte.d.ts +0 -4
  367. package/dist/components/ui/tabs/tabs.svelte +0 -19
  368. package/dist/components/ui/tabs/tabs.svelte.d.ts +0 -4
  369. package/dist/components/ui/textarea/index.d.ts +0 -2
  370. package/dist/components/ui/textarea/index.js +0 -4
  371. package/dist/components/ui/textarea/textarea.svelte +0 -23
  372. package/dist/components/ui/textarea/textarea.svelte.d.ts +0 -5
  373. package/dist/components/ui/tooltip/index.d.ts +0 -6
  374. package/dist/components/ui/tooltip/index.js +0 -8
  375. package/dist/components/ui/tooltip/tooltip-content.svelte +0 -52
  376. package/dist/components/ui/tooltip/tooltip-content.svelte.d.ts +0 -11
  377. package/dist/components/ui/tooltip/tooltip-portal.svelte +0 -7
  378. package/dist/components/ui/tooltip/tooltip-portal.svelte.d.ts +0 -4
  379. package/dist/components/ui/tooltip/tooltip-provider.svelte +0 -7
  380. package/dist/components/ui/tooltip/tooltip-provider.svelte.d.ts +0 -4
  381. package/dist/components/ui/tooltip/tooltip-trigger.svelte +0 -7
  382. package/dist/components/ui/tooltip/tooltip-trigger.svelte.d.ts +0 -25
  383. package/dist/components/ui/tooltip/tooltip.svelte +0 -7
  384. package/dist/components/ui/tooltip/tooltip.svelte.d.ts +0 -25
  385. package/dist/vitest-examples/Welcome.svelte +0 -8
  386. package/dist/vitest-examples/Welcome.svelte.d.ts +0 -13
  387. package/dist/vitest-examples/Welcome.svelte.spec.d.ts +0 -1
  388. package/dist/vitest-examples/Welcome.svelte.spec.js +0 -11
  389. package/dist/vitest-examples/greet.d.ts +0 -1
  390. package/dist/vitest-examples/greet.js +0 -3
  391. package/dist/vitest-examples/greet.spec.d.ts +0 -1
  392. package/dist/vitest-examples/greet.spec.js +0 -7
@@ -2,8 +2,8 @@
2
2
  import type { HTMLAttributes } from "svelte/elements";
3
3
  import type { WithElementRef } from "../../../utils.js";
4
4
  import { cn } from "../../../utils.js";
5
- import { HugeiconsIcon } from "@hugeicons/svelte"
6
- import { MinusSignIcon } from '@hugeicons/core-free-icons';
5
+ import { HugeiconsIcon } from "@hugeicons/svelte";
6
+ import { MinusSignIcon } from "@hugeicons/core-free-icons";
7
7
 
8
8
  let {
9
9
  ref = $bindable(null),
@@ -17,12 +17,12 @@
17
17
  bind:this={ref}
18
18
  data-slot="input-otp-separator"
19
19
  role="separator"
20
- class={cn("[&_svg:not([class*='size-'])]:size-4 flex items-center", className)}
20
+ class={cn("flex items-center -mx-1 [&_svg:not([class*='size-'])]:size-4", className)}
21
21
  {...restProps}
22
22
  >
23
23
  {#if children}
24
24
  {@render children?.()}
25
25
  {:else}
26
- <HugeiconsIcon icon={MinusSignIcon} strokeWidth={2} />
26
+ <HugeiconsIcon icon={MinusSignIcon} strokeWidth={2} />
27
27
  {/if}
28
- </div>
28
+ </div>
@@ -1,31 +1,64 @@
1
1
  <script lang="ts">
2
- import { PinInput as InputOTPPrimitive } from "bits-ui";
3
- import { cn } from "../../../utils.js";
2
+ import type { HTMLInputAttributes } from "svelte/elements";
3
+ import { cn, type WithElementRef, type WithoutChildren } from "../../../utils.js";
4
+ import { getInputOTPContext, type OtpCell } from "./context.svelte.js";
4
5
 
5
6
  let {
6
7
  ref = $bindable(null),
7
8
  cell,
8
9
  class: className,
9
10
  ...restProps
10
- }: InputOTPPrimitive.CellProps = $props();
11
+ }: WithoutChildren<WithElementRef<HTMLInputAttributes, HTMLInputElement>> & {
12
+ cell: OtpCell;
13
+ } = $props();
14
+
15
+ const ctx = getInputOTPContext();
16
+ const index = $derived(cell.index);
17
+
18
+ $effect(() => {
19
+ ctx.registerInput(index, ref);
20
+ });
21
+
22
+ function handleInput(event: Event & { currentTarget: HTMLInputElement }) {
23
+ ctx.setValueAt(index, event.currentTarget.value);
24
+ }
25
+
26
+ function handleFocus() {
27
+ ctx.setActive(index);
28
+ ref?.select();
29
+ }
30
+
31
+ function handleBlur() {
32
+ ctx.setActive(null);
33
+ }
34
+
35
+ function handleKeyDown(event: KeyboardEvent) {
36
+ ctx.handleKeyDown(index, event);
37
+ }
38
+
39
+ function handlePaste(event: ClipboardEvent) {
40
+ ctx.handlePaste(index, event);
41
+ }
11
42
  </script>
12
43
 
13
- <InputOTPPrimitive.Cell
14
- {cell}
15
- bind:ref
44
+ <input
45
+ bind:this={ref}
16
46
  data-slot="input-otp-slot"
47
+ type="text"
48
+ inputmode="numeric"
49
+ autocomplete="one-time-code"
50
+ maxlength={1}
51
+ value={cell.char}
52
+ placeholder={ctx.placeholder}
53
+ disabled={ctx.disabled}
54
+ oninput={handleInput}
55
+ onfocus={handleFocus}
56
+ onblur={handleBlur}
57
+ onkeydown={handleKeyDown}
58
+ onpaste={handlePaste}
17
59
  class={cn(
18
- "bg-input/30 border-input data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive size-9 border-y border-r text-sm transition-all outline-none first:rounded-l-4xl first:border-l last:rounded-r-4xl data-[active=true]:ring-[3px] relative flex items-center justify-center data-[active=true]:z-10",
60
+ "border-input text-foreground bg-input/30 size-10 rounded-md border text-center text-lg shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
19
61
  className
20
62
  )}
21
63
  {...restProps}
22
- >
23
- {cell.char}
24
- {#if cell.hasFakeCaret}
25
- <div
26
- class="cn-input-otp-caret pointer-events-none absolute inset-0 flex items-center justify-center"
27
- >
28
- <div class="animate-caret-blink bg-foreground h-4 w-px duration-1000 bg-foreground h-4 w-px"></div>
29
- </div>
30
- {/if}
31
- </InputOTPPrimitive.Cell>
64
+ />
@@ -1,4 +1,9 @@
1
- import { PinInput as InputOTPPrimitive } from "bits-ui";
2
- declare const InputOtpSlot: import("svelte").Component<InputOTPPrimitive.CellProps, {}, "ref">;
1
+ import type { HTMLInputAttributes } from "svelte/elements";
2
+ import { type WithElementRef, type WithoutChildren } from "../../../utils.js";
3
+ import { type OtpCell } from "./context.svelte.js";
4
+ type $$ComponentProps = WithoutChildren<WithElementRef<HTMLInputAttributes, HTMLInputElement>> & {
5
+ cell: OtpCell;
6
+ };
7
+ declare const InputOtpSlot: import("svelte").Component<$$ComponentProps, {}, "ref">;
3
8
  type InputOtpSlot = ReturnType<typeof InputOtpSlot>;
4
9
  export default InputOtpSlot;
@@ -1,18 +1,167 @@
1
1
  <script lang="ts">
2
- import { PinInput as InputOTPPrimitive } from "bits-ui";
3
- import { cn } from "../../../utils.js";
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";
4
6
 
5
7
  let {
6
8
  ref = $bindable(null),
7
- class: className,
8
9
  value = $bindable(""),
10
+ maxlength = 6,
11
+ length,
12
+ placeholder = "",
13
+ disabled = false,
14
+ id,
15
+ onValueChange,
16
+ class: className,
17
+ children,
9
18
  ...restProps
10
- }: InputOTPPrimitive.RootProps = $props();
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
+ });
11
161
  </script>
12
162
 
13
- <InputOTPPrimitive.Root
14
- bind:ref
15
- bind:value
163
+ <div
164
+ bind:this={ref}
16
165
  data-slot="input-otp"
17
166
  spellcheck={false}
18
167
  class={cn(
@@ -20,4 +169,14 @@
20
169
  className
21
170
  )}
22
171
  {...restProps}
23
- />
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
+ </div>
@@ -1,4 +1,19 @@
1
- import { PinInput as InputOTPPrimitive } from "bits-ui";
2
- declare const InputOtp: import("svelte").Component<InputOTPPrimitive.RootProps, {}, "ref" | "value">;
1
+ import { type WithElementRef, type WithoutChildren } from "../../../utils.js";
2
+ import type { Snippet } from "svelte";
3
+ import type { HTMLAttributes } from "svelte/elements";
4
+ import { type OtpCell } from "./context.svelte.js";
5
+ type $$ComponentProps = WithoutChildren<WithElementRef<HTMLAttributes<HTMLDivElement>>> & {
6
+ value?: string;
7
+ maxlength?: number;
8
+ length?: number;
9
+ placeholder?: string;
10
+ disabled?: boolean;
11
+ id?: string;
12
+ onValueChange?: (value: string) => void;
13
+ children?: Snippet<[{
14
+ cells: OtpCell[];
15
+ }]>;
16
+ };
17
+ declare const InputOtp: import("svelte").Component<$$ComponentProps, {}, "ref" | "value">;
3
18
  type InputOtp = ReturnType<typeof InputOtp>;
4
19
  export default InputOtp;
@@ -1,20 +1,20 @@
1
1
  <script lang="ts">
2
- import { Label as LabelPrimitive } from "bits-ui";
3
- import { cn } from "../../../utils.js";
2
+ import { cn, type WithElementRef } from "../../../utils.js";
3
+ import type { HTMLLabelAttributes } from "svelte/elements";
4
4
 
5
5
  let {
6
6
  ref = $bindable(null),
7
7
  class: className,
8
+ children,
8
9
  ...restProps
9
- }: LabelPrimitive.RootProps = $props();
10
+ }: WithElementRef<HTMLLabelAttributes> = $props();
10
11
  </script>
11
12
 
12
- <LabelPrimitive.Root
13
- bind:ref
13
+ <label
14
+ bind:this={ref}
14
15
  data-slot="label"
15
- class={cn(
16
- "gap-2 text-sm leading-none font-medium group-data-[disabled=true]:opacity-50 peer-disabled:opacity-50 flex items-center select-none group-data-[disabled=true]:pointer-events-none peer-disabled:cursor-not-allowed",
17
- className
18
- )}
16
+ class={cn("text-sm font-medium leading-4 text-foreground", className)}
19
17
  {...restProps}
20
- />
18
+ >
19
+ {@render children?.()}
20
+ </label>
@@ -1,4 +1,5 @@
1
- import { Label as LabelPrimitive } from "bits-ui";
2
- declare const Label: import("svelte").Component<LabelPrimitive.RootProps, {}, "ref">;
1
+ import { type WithElementRef } from "../../../utils.js";
2
+ import type { HTMLLabelAttributes } from "svelte/elements";
3
+ declare const Label: import("svelte").Component<WithElementRef<HTMLLabelAttributes>, {}, "ref">;
3
4
  type Label = ReturnType<typeof Label>;
4
5
  export default Label;
@@ -11,7 +11,8 @@
11
11
  </script>
12
12
 
13
13
  <script lang="ts">
14
- import GlobeIcon from "@lucide/svelte/icons/globe";
14
+ import { HugeiconsIcon } from "@hugeicons/svelte";
15
+ import { GlobalIcon } from "@hugeicons/core-free-icons";
15
16
  import * as DropdownMenu from "../dropdown-menu";
16
17
  import { buttonVariants } from "../button";
17
18
  import { t, locale, locales } from "../../../i18n";
@@ -33,7 +34,7 @@
33
34
  )}
34
35
  aria-label="Change language"
35
36
  >
36
- <GlobeIcon class="size-4" />
37
+ <HugeiconsIcon icon={GlobalIcon} class="size-4" />
37
38
  <span class="sr-only">Change language</span>
38
39
  </DropdownMenu.Trigger>
39
40
  <DropdownMenu.Content {align}>
@@ -45,4 +46,4 @@
45
46
  {/each}
46
47
  </DropdownMenu.RadioGroup>
47
48
  </DropdownMenu.Content>
48
- </DropdownMenu.Root>
49
+ </DropdownMenu.Root>
@@ -8,9 +8,9 @@
8
8
  </script>
9
9
 
10
10
  <script lang="ts">
11
- import SunIcon from "@lucide/svelte/icons/sun";
12
- import MoonIcon from "@lucide/svelte/icons/moon";
13
- import { toggleMode } from "mode-watcher";
11
+ import { HugeiconsIcon } from "@hugeicons/svelte";
12
+ import { Sun01Icon, Moon01Icon } from "@hugeicons/core-free-icons";
13
+ import { toggleMode } from "../../../theme.svelte";
14
14
  import Button from "../button/button.svelte";
15
15
 
16
16
  let { variant = "outline", size = "default" }: LightSwitchProps = $props();
@@ -25,18 +25,24 @@
25
25
  "icon-sm": "icon-sm",
26
26
  "icon-lg": "icon-lg",
27
27
  };
28
+
29
+ function handleClick() {
30
+ toggleMode();
31
+ }
28
32
  </script>
29
33
 
30
34
  <Button
31
- onclick={toggleMode}
35
+ onclick={handleClick}
32
36
  {variant}
33
37
  size={sizeMap[size] as ButtonSize}
34
38
  class="relative rounded-full bg-input"
35
39
  >
36
- <SunIcon
40
+ <HugeiconsIcon
41
+ icon={Sun01Icon}
37
42
  class="scale-100 rotate-0 transition-all! dark:scale-0 dark:-rotate-90"
38
43
  />
39
- <MoonIcon
44
+ <HugeiconsIcon
45
+ icon={Moon01Icon}
40
46
  class="absolute scale-0 rotate-90 transition-all! dark:scale-100 dark:rotate-0"
41
47
  />
42
48
  <span class="sr-only">Toggle theme</span>
@@ -1,101 +1,87 @@
1
+ <script lang="ts" module>
2
+ import type { Country } from './types';
3
+
4
+ export const COUNTRIES: Country[] = [
5
+ { id: 'ao', iso2: 'ao', name: 'Angola', dialCode: '244' },
6
+ { id: 'br', iso2: 'br', name: 'Brazil', dialCode: '55' },
7
+ { id: 'cv', iso2: 'cv', name: 'Cape Verde', dialCode: '238' },
8
+ { id: 'cn', iso2: 'cn', name: 'China', dialCode: '86' },
9
+ { id: 'fr', iso2: 'fr', name: 'France', dialCode: '33' },
10
+ { id: 'gw', iso2: 'gw', name: 'Guinea-Bissau', dialCode: '245' },
11
+ { id: 'jp', iso2: 'jp', name: 'Japan', dialCode: '81' },
12
+ { id: 'mz', iso2: 'mz', name: 'Mozambique', dialCode: '258' },
13
+ { id: 'pt', iso2: 'pt', name: 'Portugal', dialCode: '351' },
14
+ { id: 'st', iso2: 'st', name: 'São Tomé and Príncipe', dialCode: '239' },
15
+ { id: 'za', iso2: 'za', name: 'South Africa', dialCode: '27' },
16
+ { id: 'es', iso2: 'es', name: 'Spain', dialCode: '34' },
17
+ { id: 'gb', iso2: 'gb', name: 'United Kingdom', dialCode: '44' },
18
+ { id: 'us', iso2: 'us', name: 'United States', dialCode: '1' }
19
+ ];
20
+ </script>
21
+
1
22
  <script lang="ts">
2
- import * as Popover from '../popover';
3
- import Button from '../button/button.svelte';
4
- import * as Command from '../command';
5
- import { ScrollArea } from '../scroll-area';
6
- import CheckIcon from '@lucide/svelte/icons/check';
7
- import ChevronsUpDownIcon from '@lucide/svelte/icons/chevrons-up-down';
8
23
  import { cn } from '../../../utils.js';
9
- import Flag from './flag.svelte';
10
- import type { Country, CountryCode } from 'svelte-tel-input/types';
24
+ import { HugeiconsIcon } from '@hugeicons/svelte';
25
+ import { GlobalIcon, UnfoldMoreIcon } from '@hugeicons/core-free-icons';
26
+ import type { CountryCode } from './types';
11
27
 
12
28
  interface Props {
13
- /** List of countries */
14
- countries: Country[];
15
- disabled?: boolean;
16
29
  selected?: CountryCode | null;
30
+ dialCode?: string;
31
+ disabled?: boolean;
17
32
  onselect?: (val: CountryCode | null) => void;
18
- /** Default ordering is alphabetical by country name supply this function to customize the sorting behavior */
19
33
  order?: (a: Country, b: Country) => number;
20
34
  }
21
35
 
22
36
  let {
23
- countries,
24
- disabled = false,
25
37
  selected = $bindable(null),
38
+ // eslint-disable-next-line no-useless-assignment
39
+ dialCode = $bindable(''),
40
+ disabled = false,
26
41
  onselect = undefined,
27
42
  order = (a, b) => {
28
43
  return a.name.localeCompare(b.name);
29
44
  }
30
45
  }: Props = $props();
31
46
 
32
- let selectedCountry = $derived(countries.find((a) => a.iso2 == selected));
47
+ let ordered = $derived(COUNTRIES.slice().sort(order));
33
48
 
34
- let open = $state(false);
35
- let selectedValue = $state(false);
36
-
37
- function selectCountry(country: Country) {
38
- selected = country.iso2;
39
- selectedValue = true;
40
- open = false;
49
+ function handleChange(e: Event) {
50
+ selected = (e.currentTarget as HTMLSelectElement).value;
41
51
  onselect?.(selected);
42
52
  }
53
+
54
+ $effect(() => {
55
+ const country = COUNTRIES.find((c) => c.iso2 === selected);
56
+ dialCode = country?.dialCode ?? '';
57
+ });
43
58
  </script>
44
59
 
45
- <Popover.Root bind:open>
46
- <Popover.Trigger>
47
- {#snippet child({ props })}
48
- <Button
49
- {...props}
50
- type="button"
51
- variant="outline"
52
- class={cn('flex shrink-0 gap-1 rounded-l-lg rounded-r-none px-3')}
53
- {disabled}
54
- >
55
- <Flag country={selectedCountry} />
56
- <ChevronsUpDownIcon
57
- class={cn('-mr-2 h-4 w-4 opacity-50', disabled ? 'hidden' : 'opacity-100')}
58
- />
59
- </Button>
60
- {/snippet}
61
- </Popover.Trigger>
62
- <Popover.Content
63
- class="w-[300px] p-0"
64
- align="start"
65
- onCloseAutoFocus={(e) => {
66
- if (selectedValue) {
67
- selectedValue = false;
68
- e.preventDefault();
69
- }
70
- }}
60
+ <div class="relative flex shrink-0 items-center">
61
+ <HugeiconsIcon
62
+ icon={GlobalIcon}
63
+ strokeWidth={2}
64
+ class="text-muted-foreground pointer-events-none absolute left-2.5 size-4"
65
+ />
66
+ <select
67
+ value={selected ?? ''}
68
+ onchange={handleChange}
69
+ aria-label="Country code"
70
+ {disabled}
71
+ class={cn(
72
+ 'border-input bg-input/30 focus-visible:ring-ring/50 dark:bg-input/30 focus-visible:border-ring h-9 w-fit appearance-none rounded-l-md rounded-r-none border py-1 pr-8 pl-8 text-sm transition-[color,box-shadow] focus-visible:ring-[3px] outline-none disabled:cursor-not-allowed disabled:opacity-50 [&>option]:bg-background',
73
+ disabled ? 'cursor-not-allowed opacity-50' : ''
74
+ )}
71
75
  >
72
- <Command.Root>
73
- <Command.Input placeholder="Search..." />
74
- <Command.List>
75
- <ScrollArea class="h-72">
76
- <Command.Empty>No country found.</Command.Empty>
77
- <Command.Group class="overflow-clip">
78
- {#each countries.sort(order) as country (country.id)}
79
- <Command.Item
80
- class="gap-2 [&_.cn-command-item-indicator]:hidden"
81
- value={country.name}
82
- onSelect={() => selectCountry(country)}
83
- >
84
- <Flag {country} />
85
- <span class="flex-1 text-sm">{country.name}</span>
86
- <span class="text-foreground/50 text-sm">
87
- +{country.dialCode}
88
- </span>
89
- <div class="w-4">
90
- {#if country.iso2 == selected}
91
- <CheckIcon class="phone-input-check-icon size-4" />
92
- {/if}
93
- </div>
94
- </Command.Item>
95
- {/each}
96
- </Command.Group>
97
- </ScrollArea>
98
- </Command.List>
99
- </Command.Root>
100
- </Popover.Content>
101
- </Popover.Root>
76
+ {#each ordered as country (country.id)}
77
+ <option value={country.iso2}>
78
+ {country.name} (+{country.dialCode})
79
+ </option>
80
+ {/each}
81
+ </select>
82
+ <HugeiconsIcon
83
+ icon={UnfoldMoreIcon}
84
+ strokeWidth={2}
85
+ class="text-muted-foreground pointer-events-none absolute right-2.5 size-4"
86
+ />
87
+ </div>
@@ -1,13 +1,13 @@
1
- import type { Country, CountryCode } from 'svelte-tel-input/types';
1
+ import type { Country } from './types';
2
+ export declare const COUNTRIES: Country[];
3
+ import type { CountryCode } from './types';
2
4
  interface Props {
3
- /** List of countries */
4
- countries: Country[];
5
- disabled?: boolean;
6
5
  selected?: CountryCode | null;
6
+ dialCode?: string;
7
+ disabled?: boolean;
7
8
  onselect?: (val: CountryCode | null) => void;
8
- /** Default ordering is alphabetical by country name supply this function to customize the sorting behavior */
9
9
  order?: (a: Country, b: Country) => number;
10
10
  }
11
- declare const CountrySelector: import("svelte").Component<Props, {}, "selected">;
11
+ declare const CountrySelector: import("svelte").Component<Props, {}, "selected" | "dialCode">;
12
12
  type CountrySelector = ReturnType<typeof CountrySelector>;
13
13
  export default CountrySelector;
@@ -1,6 +1,5 @@
1
1
  <script lang="ts">
2
- import type { Country } from 'svelte-tel-input/types';
3
- import { getFlag } from './flags';
2
+ import type { Country } from './types';
4
3
 
5
4
  interface Props {
6
5
  country?: Country | null;
@@ -9,13 +8,5 @@
9
8
  let { country = null }: Props = $props();
10
9
  </script>
11
10
 
12
- <span
13
- class="bg-foreground/20 flex h-4 w-6 shrink-0 overflow-clip rounded-sm [&>svg]:h-4! [&>svg]:w-6!"
14
- >
15
- {#await getFlag(country) then flag}
16
- {#if flag}
17
- <!-- eslint-disable-next-line svelte/no-at-html-tags -->
18
- {@html flag}
19
- {/if}
20
- {/await}
21
- </span>
11
+ <span class="bg-foreground/20 flex h-4 w-6 shrink-0 overflow-clip rounded-sm">
12
+ </span>
@@ -1,4 +1,4 @@
1
- import type { Country } from 'svelte-tel-input/types';
1
+ import type { Country } from './types';
2
2
  interface Props {
3
3
  country?: Country | null;
4
4
  }
@@ -1,2 +1,3 @@
1
- import type { Country } from 'svelte-tel-input/types';
1
+ import type { Country, CountryCode } from './types';
2
+ export declare function hasFlag(code: CountryCode): boolean;
2
3
  export declare function getFlag(country: Country | null): Promise<string | null>;