@m5kdev/web-ui 0.7.0 → 0.8.0

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 (377) hide show
  1. package/dist/src/animations/card.motion.d.ts +7 -2
  2. package/dist/src/animations/card.motion.js +25 -6
  3. package/dist/src/animations/card.motion.js.map +1 -0
  4. package/dist/src/components/AvatarUpload.d.ts +14 -5
  5. package/dist/src/components/AvatarUpload.js +105 -63
  6. package/dist/src/components/AvatarUpload.js.map +1 -0
  7. package/dist/src/components/Button.d.ts +14 -4
  8. package/dist/src/components/Button.js +13 -4
  9. package/dist/src/components/Button.js.map +1 -0
  10. package/dist/src/components/Calendar.d.ts +33 -31
  11. package/dist/src/components/Calendar.js +14 -6
  12. package/dist/src/components/Calendar.js.map +1 -0
  13. package/dist/src/components/{Calendar.css → Calendar2.css} +757 -684
  14. package/dist/src/components/CardsSelect.d.ts +25 -21
  15. package/dist/src/components/CardsSelect.js +75 -42
  16. package/dist/src/components/CardsSelect.js.map +1 -0
  17. package/dist/src/components/CollapsibleSidebarMenuItem.d.ts +22 -9
  18. package/dist/src/components/CollapsibleSidebarMenuItem.js +31 -8
  19. package/dist/src/components/CollapsibleSidebarMenuItem.js.map +1 -0
  20. package/dist/src/components/ColorPicker.d.ts +15 -4
  21. package/dist/src/components/ColorPicker.js +46 -16
  22. package/dist/src/components/ColorPicker.js.map +1 -0
  23. package/dist/src/components/CopyButton.d.ts +18 -6
  24. package/dist/src/components/CopyButton.js +28 -19
  25. package/dist/src/components/CopyButton.js.map +1 -0
  26. package/dist/src/components/CropDialog.d.ts +20 -8
  27. package/dist/src/components/CropDialog.js +108 -62
  28. package/dist/src/components/CropDialog.js.map +1 -0
  29. package/dist/src/components/DialogProvider.d.ts +22 -14
  30. package/dist/src/components/DialogProvider.js +67 -45
  31. package/dist/src/components/DialogProvider.js.map +1 -0
  32. package/dist/src/components/ErrorFallback.d.ts +13 -4
  33. package/dist/src/components/ErrorFallback.js +29 -4
  34. package/dist/src/components/ErrorFallback.js.map +1 -0
  35. package/dist/src/components/FileDropzone.d.ts +12 -4
  36. package/dist/src/components/FileDropzone.js +98 -60
  37. package/dist/src/components/FileDropzone.js.map +1 -0
  38. package/dist/src/components/MultiSelectDropdown.d.ts +25 -22
  39. package/dist/src/components/MultiSelectDropdown.js +99 -49
  40. package/dist/src/components/MultiSelectDropdown.js.map +1 -0
  41. package/dist/src/components/Orb.d.ts +17 -6
  42. package/dist/src/components/Orb.js +263 -255
  43. package/dist/src/components/Orb.js.map +1 -0
  44. package/dist/src/components/PageAlert.d.ts +20 -15
  45. package/dist/src/components/PageAlert.js +67 -39
  46. package/dist/src/components/PageAlert.js.map +1 -0
  47. package/dist/src/components/SelectChips.d.ts +21 -10
  48. package/dist/src/components/SelectChips.js +21 -9
  49. package/dist/src/components/SelectChips.js.map +1 -0
  50. package/dist/src/components/SidebarItem.d.ts +18 -7
  51. package/dist/src/components/SidebarItem.js +16 -4
  52. package/dist/src/components/SidebarItem.js.map +1 -0
  53. package/dist/src/components/Steps.d.ts +21 -16
  54. package/dist/src/components/Steps.js +193 -27
  55. package/dist/src/components/Steps.js.map +1 -0
  56. package/dist/src/components/TablerIconPicker.d.ts +13 -2
  57. package/dist/src/components/TablerIconPicker.js +4254 -4234
  58. package/dist/src/components/TablerIconPicker.js.map +1 -0
  59. package/dist/src/components/app-header.d.ts +14 -6
  60. package/dist/src/components/app-header.js +27 -6
  61. package/dist/src/components/app-header.js.map +1 -0
  62. package/dist/src/components/blur-card.d.ts +25 -11
  63. package/dist/src/components/blur-card.js +134 -31
  64. package/dist/src/components/blur-card.js.map +1 -0
  65. package/dist/src/components/features-section-demo-1.d.ts +22 -6
  66. package/dist/src/components/features-section-demo-1.js +119 -47
  67. package/dist/src/components/features-section-demo-1.js.map +1 -0
  68. package/dist/src/components/features-section-demo-2.d.ts +7 -1
  69. package/dist/src/components/features-section-demo-2.js +80 -49
  70. package/dist/src/components/features-section-demo-2.js.map +1 -0
  71. package/dist/src/components/features-section-demo-3.d.ts +16 -8
  72. package/dist/src/components/features-section-demo-3.js +239 -103
  73. package/dist/src/components/features-section-demo-3.js.map +1 -0
  74. package/dist/src/components/mode-toggle.d.ts +7 -1
  75. package/dist/src/components/mode-toggle.js +42 -7
  76. package/dist/src/components/mode-toggle.js.map +1 -0
  77. package/dist/src/components/nav-main.d.ts +20 -12
  78. package/dist/src/components/nav-main.js +31 -5
  79. package/dist/src/components/nav-main.js.map +1 -0
  80. package/dist/src/components/pricing-cards.d.ts +7 -1
  81. package/dist/src/components/pricing-cards.js +125 -24
  82. package/dist/src/components/pricing-cards.js.map +1 -0
  83. package/dist/src/components/shared/ButtonCopy.d.ts +17 -6
  84. package/dist/src/components/shared/ButtonCopy.js +31 -20
  85. package/dist/src/components/shared/ButtonCopy.js.map +1 -0
  86. package/dist/src/components/team-switcher.d.ts +16 -8
  87. package/dist/src/components/team-switcher.js +70 -8
  88. package/dist/src/components/team-switcher.js.map +1 -0
  89. package/dist/src/components/theme-provider.d.ts +18 -8
  90. package/dist/src/components/theme-provider.js +42 -38
  91. package/dist/src/components/theme-provider.js.map +1 -0
  92. package/dist/src/components/typewriter.d.ts +35 -14
  93. package/dist/src/components/typewriter.js +45 -36
  94. package/dist/src/components/typewriter.js.map +1 -0
  95. package/dist/src/components/ui/alert-dialog.d.ts +48 -13
  96. package/dist/src/components/ui/alert-dialog.js +58 -15
  97. package/dist/src/components/ui/alert-dialog.js.map +1 -0
  98. package/dist/src/components/ui/alert.d.ts +24 -8
  99. package/dist/src/components/ui/alert.js +28 -15
  100. package/dist/src/components/ui/alert.js.map +1 -0
  101. package/dist/src/components/ui/avatar.d.ts +9 -5
  102. package/dist/src/components/ui/avatar.js +23 -7
  103. package/dist/src/components/ui/avatar.js.map +1 -0
  104. package/dist/src/components/ui/badge.d.ts +17 -8
  105. package/dist/src/components/ui/badge.js +17 -14
  106. package/dist/src/components/ui/badge.js.map +1 -0
  107. package/dist/src/components/ui/bento-grid.d.ts +26 -11
  108. package/dist/src/components/ui/bento-grid.js +30 -6
  109. package/dist/src/components/ui/bento-grid.js.map +1 -0
  110. package/dist/src/components/ui/bento-grid2.d.ts +30 -14
  111. package/dist/src/components/ui/bento-grid2.js +45 -9
  112. package/dist/src/components/ui/bento-grid2.js.map +1 -0
  113. package/dist/src/components/ui/breadcrumb.d.ts +27 -15
  114. package/dist/src/components/ui/breadcrumb.js +54 -14
  115. package/dist/src/components/ui/breadcrumb.js.map +1 -0
  116. package/dist/src/components/ui/button.d.ts +14 -9
  117. package/dist/src/components/ui/button.js +37 -26
  118. package/dist/src/components/ui/button.js.map +1 -0
  119. package/dist/src/components/ui/card.d.ts +12 -8
  120. package/dist/src/components/ui/card.js +38 -10
  121. package/dist/src/components/ui/card.js.map +1 -0
  122. package/dist/src/components/ui/checkbox.d.ts +6 -2
  123. package/dist/src/components/ui/checkbox.js +17 -5
  124. package/dist/src/components/ui/checkbox.js.map +1 -0
  125. package/dist/src/components/ui/collapsible.d.ts +9 -4
  126. package/dist/src/components/ui/collapsible.js +5 -1
  127. package/dist/src/components/ui/collapsible.js.map +1 -0
  128. package/dist/src/components/ui/dialog.d.ts +44 -12
  129. package/dist/src/components/ui/dialog.js +64 -14
  130. package/dist/src/components/ui/dialog.js.map +1 -0
  131. package/dist/src/components/ui/dropdown-menu.d.ts +32 -24
  132. package/dist/src/components/ui/dropdown-menu.js +64 -14
  133. package/dist/src/components/ui/dropdown-menu.js.map +1 -0
  134. package/dist/src/components/ui/floating-navbar.d.ts +18 -9
  135. package/dist/src/components/ui/floating-navbar.js +49 -35
  136. package/dist/src/components/ui/floating-navbar.js.map +1 -0
  137. package/dist/src/components/ui/form.d.ts +30 -21
  138. package/dist/src/components/ui/form.js +76 -44
  139. package/dist/src/components/ui/form.js.map +1 -0
  140. package/dist/src/components/ui/image.d.ts +6 -2
  141. package/dist/src/components/ui/image.js +51 -11
  142. package/dist/src/components/ui/image.js.map +1 -0
  143. package/dist/src/components/ui/input.d.ts +6 -2
  144. package/dist/src/components/ui/input.js +14 -5
  145. package/dist/src/components/ui/input.js.map +1 -0
  146. package/dist/src/components/ui/label.d.ts +8 -3
  147. package/dist/src/components/ui/label.js +13 -5
  148. package/dist/src/components/ui/label.js.map +1 -0
  149. package/dist/src/components/ui/pagination.d.ts +39 -12
  150. package/dist/src/components/ui/pagination.js +64 -14
  151. package/dist/src/components/ui/pagination.js.map +1 -0
  152. package/dist/src/components/ui/progress.d.ts +6 -2
  153. package/dist/src/components/ui/progress.js +16 -4
  154. package/dist/src/components/ui/progress.js.map +1 -0
  155. package/dist/src/components/ui/resizable-navbar.d.ts +84 -43
  156. package/dist/src/components/ui/resizable-navbar.js +126 -74
  157. package/dist/src/components/ui/resizable-navbar.js.map +1 -0
  158. package/dist/src/components/ui/segment-control.d.ts +10 -7
  159. package/dist/src/components/ui/segment-control.js +83 -38
  160. package/dist/src/components/ui/segment-control.js.map +1 -0
  161. package/dist/src/components/ui/select.d.ts +16 -12
  162. package/dist/src/components/ui/select.js +63 -14
  163. package/dist/src/components/ui/select.js.map +1 -0
  164. package/dist/src/components/ui/separator.d.ts +6 -2
  165. package/dist/src/components/ui/separator.js +14 -4
  166. package/dist/src/components/ui/separator.js.map +1 -0
  167. package/dist/src/components/ui/sheet.d.ts +30 -19
  168. package/dist/src/components/ui/sheet.js +52 -23
  169. package/dist/src/components/ui/sheet.js.map +1 -0
  170. package/dist/src/components/ui/sidebar.d.ts +69 -62
  171. package/dist/src/components/ui/sidebar.js +326 -171
  172. package/dist/src/components/ui/sidebar.js.map +1 -0
  173. package/dist/src/components/ui/skeleton.d.ts +9 -1
  174. package/dist/src/components/ui/skeleton.js +10 -3
  175. package/dist/src/components/ui/skeleton.js.map +1 -0
  176. package/dist/src/components/ui/slider.d.ts +6 -2
  177. package/dist/src/components/ui/slider.js +16 -4
  178. package/dist/src/components/ui/slider.js.map +1 -0
  179. package/dist/src/components/ui/sonner.d.ts +10 -3
  180. package/dist/src/components/ui/sonner.js +18 -11
  181. package/dist/src/components/ui/sonner.js.map +1 -0
  182. package/dist/src/components/ui/spinner.d.ts +21 -10
  183. package/dist/src/components/ui/spinner.js +24 -24
  184. package/dist/src/components/ui/spinner.js.map +1 -0
  185. package/dist/src/components/ui/switch.d.ts +6 -2
  186. package/dist/src/components/ui/switch.js +13 -4
  187. package/dist/src/components/ui/switch.js.map +1 -0
  188. package/dist/src/components/ui/table.d.ts +39 -10
  189. package/dist/src/components/ui/table.js +51 -11
  190. package/dist/src/components/ui/table.js.map +1 -0
  191. package/dist/src/components/ui/tabs.d.ts +23 -6
  192. package/dist/src/components/ui/tabs.js +27 -7
  193. package/dist/src/components/ui/tabs.js.map +1 -0
  194. package/dist/src/components/ui/textarea.d.ts +10 -2
  195. package/dist/src/components/ui/textarea.js +11 -3
  196. package/dist/src/components/ui/textarea.js.map +1 -0
  197. package/dist/src/components/ui/timeline.d.ts +16 -9
  198. package/dist/src/components/ui/timeline.js +87 -24
  199. package/dist/src/components/ui/timeline.js.map +1 -0
  200. package/dist/src/components/ui/toast.d.ts +19 -14
  201. package/dist/src/components/ui/toast.js +48 -22
  202. package/dist/src/components/ui/toast.js.map +1 -0
  203. package/dist/src/components/ui/tooltip.d.ts +23 -6
  204. package/dist/src/components/ui/tooltip.js +27 -7
  205. package/dist/src/components/ui/tooltip.js.map +1 -0
  206. package/dist/src/components/ui/typewriter-effect.d.ts +28 -14
  207. package/dist/src/components/ui/typewriter-effect.js +102 -72
  208. package/dist/src/components/ui/typewriter-effect.js.map +1 -0
  209. package/dist/src/hooks/use-mobile.d.ts +5 -1
  210. package/dist/src/hooks/use-mobile.js +18 -13
  211. package/dist/src/hooks/use-mobile.js.map +1 -0
  212. package/dist/src/hooks/useDialog.d.ts +8 -4
  213. package/dist/src/hooks/useDialog.js +24 -20
  214. package/dist/src/hooks/useDialog.js.map +1 -0
  215. package/dist/src/icons/GoogleIcon.d.ts +9 -5
  216. package/dist/src/icons/GoogleIcon.js +32 -3
  217. package/dist/src/icons/GoogleIcon.js.map +1 -0
  218. package/dist/src/icons/LinkedInIcon.d.ts +9 -5
  219. package/dist/src/icons/LinkedInIcon.js +27 -3
  220. package/dist/src/icons/LinkedInIcon.js.map +1 -0
  221. package/dist/src/icons/MicrosoftIcon.d.ts +9 -5
  222. package/dist/src/icons/MicrosoftIcon.js +31 -3
  223. package/dist/src/icons/MicrosoftIcon.js.map +1 -0
  224. package/dist/src/lib/chatwoot.d.ts +19 -10
  225. package/dist/src/lib/chatwoot.js +25 -27
  226. package/dist/src/lib/chatwoot.js.map +1 -0
  227. package/dist/src/lib/utils.d.ts +7 -2
  228. package/dist/src/lib/utils.js +7 -2
  229. package/dist/src/lib/utils.js.map +1 -0
  230. package/dist/src/modules/app/components/AppLoader.d.ts +8 -2
  231. package/dist/src/modules/app/components/AppLoader.js +14 -3
  232. package/dist/src/modules/app/components/AppLoader.js.map +1 -0
  233. package/dist/src/modules/app/components/AppShell.d.ts +15 -6
  234. package/dist/src/modules/app/components/AppShell.js +14 -5
  235. package/dist/src/modules/app/components/AppShell.js.map +1 -0
  236. package/dist/src/modules/app/components/AppSidebar.d.ts +16 -6
  237. package/dist/src/modules/app/components/AppSidebar.js +17 -4
  238. package/dist/src/modules/app/components/AppSidebar.js.map +1 -0
  239. package/dist/src/modules/app/components/AppSidebarContent.d.ts +22 -13
  240. package/dist/src/modules/app/components/AppSidebarContent.js +34 -5
  241. package/dist/src/modules/app/components/AppSidebarContent.js.map +1 -0
  242. package/dist/src/modules/app/components/AppSidebarHeader.d.ts +18 -8
  243. package/dist/src/modules/app/components/AppSidebarHeader.js +37 -6
  244. package/dist/src/modules/app/components/AppSidebarHeader.js.map +1 -0
  245. package/dist/src/modules/app/components/AppSidebarInvites.d.ts +11 -3
  246. package/dist/src/modules/app/components/AppSidebarInvites.js +39 -8
  247. package/dist/src/modules/app/components/AppSidebarInvites.js.map +1 -0
  248. package/dist/src/modules/app/components/AppSidebarUser.d.ts +20 -10
  249. package/dist/src/modules/app/components/AppSidebarUser.js +121 -12
  250. package/dist/src/modules/app/components/AppSidebarUser.js.map +1 -0
  251. package/dist/src/modules/auth/components/AdminUserManagement.d.ts +11 -4
  252. package/dist/src/modules/auth/components/AdminUserManagement.js +970 -418
  253. package/dist/src/modules/auth/components/AdminUserManagement.js.map +1 -0
  254. package/dist/src/modules/auth/components/AdminWaitlist.d.ts +11 -4
  255. package/dist/src/modules/auth/components/AdminWaitlist.js +284 -115
  256. package/dist/src/modules/auth/components/AdminWaitlist.js.map +1 -0
  257. package/dist/src/modules/auth/components/AuthLayout.d.ts +12 -4
  258. package/dist/src/modules/auth/components/AuthLayout.js +17 -3
  259. package/dist/src/modules/auth/components/AuthLayout.js.map +1 -0
  260. package/dist/src/modules/auth/components/AuthProviders.d.ts +17 -6
  261. package/dist/src/modules/auth/components/AuthProviders.js +80 -41
  262. package/dist/src/modules/auth/components/AuthProviders.js.map +1 -0
  263. package/dist/src/modules/auth/components/AuthRouter.d.ts +16 -7
  264. package/dist/src/modules/auth/components/AuthRouter.js +46 -10
  265. package/dist/src/modules/auth/components/AuthRouter.js.map +1 -0
  266. package/dist/src/modules/auth/components/ClaimAccountRoute.d.ts +12 -4
  267. package/dist/src/modules/auth/components/ClaimAccountRoute.js +202 -139
  268. package/dist/src/modules/auth/components/ClaimAccountRoute.js.map +1 -0
  269. package/dist/src/modules/auth/components/ErrorAuthRoute.d.ts +7 -1
  270. package/dist/src/modules/auth/components/ErrorAuthRoute.js +125 -89
  271. package/dist/src/modules/auth/components/ErrorAuthRoute.js.map +1 -0
  272. package/dist/src/modules/auth/components/ForgotPasswordForm.d.ts +7 -1
  273. package/dist/src/modules/auth/components/ForgotPasswordForm.js +49 -23
  274. package/dist/src/modules/auth/components/ForgotPasswordForm.js.map +1 -0
  275. package/dist/src/modules/auth/components/ForgotPasswordRoute.d.ts +7 -1
  276. package/dist/src/modules/auth/components/ForgotPasswordRoute.js +34 -6
  277. package/dist/src/modules/auth/components/ForgotPasswordRoute.js.map +1 -0
  278. package/dist/src/modules/auth/components/InviteFriends.d.ts +12 -4
  279. package/dist/src/modules/auth/components/InviteFriends.js +275 -69
  280. package/dist/src/modules/auth/components/InviteFriends.js.map +1 -0
  281. package/dist/src/modules/auth/components/LastUsedBadge.d.ts +17 -5
  282. package/dist/src/modules/auth/components/LastUsedBadge.js +16 -6
  283. package/dist/src/modules/auth/components/LastUsedBadge.js.map +1 -0
  284. package/dist/src/modules/auth/components/LoginForm.d.ts +11 -3
  285. package/dist/src/modules/auth/components/LoginForm.js +107 -40
  286. package/dist/src/modules/auth/components/LoginForm.js.map +1 -0
  287. package/dist/src/modules/auth/components/LoginRoute.d.ts +11 -3
  288. package/dist/src/modules/auth/components/LoginRoute.js +41 -8
  289. package/dist/src/modules/auth/components/LoginRoute.js.map +1 -0
  290. package/dist/src/modules/auth/components/LogoutRoute.d.ts +7 -1
  291. package/dist/src/modules/auth/components/LogoutRoute.js +18 -12
  292. package/dist/src/modules/auth/components/LogoutRoute.js.map +1 -0
  293. package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.d.ts +21 -8
  294. package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.js +107 -97
  295. package/dist/src/modules/auth/components/OrganizationAcceptInvitationRoute.js.map +1 -0
  296. package/dist/src/modules/auth/components/OrganizationMembersRoute.d.ts +58 -48
  297. package/dist/src/modules/auth/components/OrganizationMembersRoute.js +448 -349
  298. package/dist/src/modules/auth/components/OrganizationMembersRoute.js.map +1 -0
  299. package/dist/src/modules/auth/components/OrganizationPreferences.d.ts +27 -16
  300. package/dist/src/modules/auth/components/OrganizationPreferences.js +129 -124
  301. package/dist/src/modules/auth/components/OrganizationPreferences.js.map +1 -0
  302. package/dist/src/modules/auth/components/OrganizationSettingsRoute.d.ts +27 -18
  303. package/dist/src/modules/auth/components/OrganizationSettingsRoute.js +184 -144
  304. package/dist/src/modules/auth/components/OrganizationSettingsRoute.js.map +1 -0
  305. package/dist/src/modules/auth/components/OrganizationSwitcher.d.ts +17 -6
  306. package/dist/src/modules/auth/components/OrganizationSwitcher.js +91 -69
  307. package/dist/src/modules/auth/components/OrganizationSwitcher.js.map +1 -0
  308. package/dist/src/modules/auth/components/PreferencesEditor.d.ts +44 -33
  309. package/dist/src/modules/auth/components/PreferencesEditor.js +82 -58
  310. package/dist/src/modules/auth/components/PreferencesEditor.js.map +1 -0
  311. package/dist/src/modules/auth/components/ProfileRoute.d.ts +7 -1
  312. package/dist/src/modules/auth/components/ProfileRoute.js +79 -36
  313. package/dist/src/modules/auth/components/ProfileRoute.js.map +1 -0
  314. package/dist/src/modules/auth/components/RangeNuqsDatePicker.d.ts +44 -30
  315. package/dist/src/modules/auth/components/RangeNuqsDatePicker.js +234 -242
  316. package/dist/src/modules/auth/components/RangeNuqsDatePicker.js.map +1 -0
  317. package/dist/src/modules/auth/components/ResetPasswordForm.d.ts +7 -1
  318. package/dist/src/modules/auth/components/ResetPasswordForm.js +97 -35
  319. package/dist/src/modules/auth/components/ResetPasswordForm.js.map +1 -0
  320. package/dist/src/modules/auth/components/ResetPasswordRoute.d.ts +7 -1
  321. package/dist/src/modules/auth/components/ResetPasswordRoute.js +34 -6
  322. package/dist/src/modules/auth/components/ResetPasswordRoute.js.map +1 -0
  323. package/dist/src/modules/auth/components/SignupFormRoute.d.ts +15 -5
  324. package/dist/src/modules/auth/components/SignupFormRoute.js +142 -99
  325. package/dist/src/modules/auth/components/SignupFormRoute.js.map +1 -0
  326. package/dist/src/modules/auth/components/SignupRoute.d.ts +13 -5
  327. package/dist/src/modules/auth/components/SignupRoute.js +59 -13
  328. package/dist/src/modules/auth/components/SignupRoute.js.map +1 -0
  329. package/dist/src/modules/auth/components/UserPreferences.d.ts +22 -11
  330. package/dist/src/modules/auth/components/UserPreferences.js +24 -12
  331. package/dist/src/modules/auth/components/UserPreferences.js.map +1 -0
  332. package/dist/src/modules/auth/components/WaitlistCard.d.ts +11 -4
  333. package/dist/src/modules/auth/components/WaitlistCard.js +63 -28
  334. package/dist/src/modules/auth/components/WaitlistCard.js.map +1 -0
  335. package/dist/src/modules/auth/components/WaitlistCodeValidation.d.ts +13 -5
  336. package/dist/src/modules/auth/components/WaitlistCodeValidation.js +42 -40
  337. package/dist/src/modules/auth/components/WaitlistCodeValidation.js.map +1 -0
  338. package/dist/src/modules/billing/components/BillingBetaPage.d.ts +15 -6
  339. package/dist/src/modules/billing/components/BillingBetaPage.js +155 -8
  340. package/dist/src/modules/billing/components/BillingBetaPage.js.map +1 -0
  341. package/dist/src/modules/billing/components/BillingInvoicePage.d.ts +13 -5
  342. package/dist/src/modules/billing/components/BillingInvoicePage.js +160 -30
  343. package/dist/src/modules/billing/components/BillingInvoicePage.js.map +1 -0
  344. package/dist/src/modules/billing/components/BillingPlanSelect.d.ts +11 -4
  345. package/dist/src/modules/billing/components/BillingPlanSelect.js +10 -7
  346. package/dist/src/modules/billing/components/BillingPlanSelect.js.map +1 -0
  347. package/dist/src/modules/billing/components/BillingRouter.d.ts +15 -7
  348. package/dist/src/modules/billing/components/BillingRouter.js +19 -6
  349. package/dist/src/modules/billing/components/BillingRouter.js.map +1 -0
  350. package/dist/src/modules/billing/components/BillingSinglePlanSelect.d.ts +17 -7
  351. package/dist/src/modules/billing/components/BillingSinglePlanSelect.js +163 -42
  352. package/dist/src/modules/billing/components/BillingSinglePlanSelect.js.map +1 -0
  353. package/dist/src/modules/table/components/ColumnOrderAndVisibility.d.ts +18 -8
  354. package/dist/src/modules/table/components/ColumnOrderAndVisibility.js +81 -38
  355. package/dist/src/modules/table/components/ColumnOrderAndVisibility.js.map +1 -0
  356. package/dist/src/modules/table/components/NuqsTable.d.ts +33 -21
  357. package/dist/src/modules/table/components/NuqsTable.js +295 -221
  358. package/dist/src/modules/table/components/NuqsTable.js.map +1 -0
  359. package/dist/src/modules/table/components/TableFiltering.d.ts +33 -21
  360. package/dist/src/modules/table/components/TableFiltering.js +408 -226
  361. package/dist/src/modules/table/components/TableFiltering.js.map +1 -0
  362. package/dist/src/modules/table/components/TableGroupBy.d.ts +18 -8
  363. package/dist/src/modules/table/components/TableGroupBy.js +56 -16
  364. package/dist/src/modules/table/components/TableGroupBy.js.map +1 -0
  365. package/dist/src/modules/table/components/TablePagination.d.ts +17 -7
  366. package/dist/src/modules/table/components/TablePagination.js +64 -32
  367. package/dist/src/modules/table/components/TablePagination.js.map +1 -0
  368. package/dist/src/modules/table/components/table.types.d.ts +15 -10
  369. package/dist/src/modules/table/components/table.types.js +0 -1
  370. package/dist/src/modules/table/filterTransformers.d.ts +35 -30
  371. package/dist/src/modules/table/filterTransformers.js +198 -261
  372. package/dist/src/modules/table/filterTransformers.js.map +1 -0
  373. package/dist/src/types.d.ts +8 -3
  374. package/dist/src/types.js +0 -1
  375. package/package.json +8 -6
  376. package/dist/translations/en/web-ui.json +0 -209
  377. package/dist/tsconfig.lib.tsbuildinfo +0 -1
@@ -1,56 +1,97 @@
1
1
  import React from "react";
2
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
3
+
4
+ //#region src/components/ui/resizable-navbar.d.ts
2
5
  interface NavbarProps {
3
- children: React.ReactNode;
4
- className?: string;
6
+ children: React.ReactNode;
7
+ className?: string;
5
8
  }
6
9
  interface NavBodyProps {
7
- children: React.ReactNode;
8
- className?: string;
9
- visible?: boolean;
10
+ children: React.ReactNode;
11
+ className?: string;
12
+ visible?: boolean;
10
13
  }
11
14
  interface NavItemsProps {
12
- items: {
13
- name: string;
14
- link: string;
15
- }[];
16
- className?: string;
17
- onItemClick?: () => void;
15
+ items: {
16
+ name: string;
17
+ link: string;
18
+ }[];
19
+ className?: string;
20
+ onItemClick?: () => void;
18
21
  }
19
22
  interface MobileNavProps {
20
- children: React.ReactNode;
21
- className?: string;
22
- visible?: boolean;
23
+ children: React.ReactNode;
24
+ className?: string;
25
+ visible?: boolean;
23
26
  }
24
27
  interface MobileNavHeaderProps {
25
- children: React.ReactNode;
26
- className?: string;
28
+ children: React.ReactNode;
29
+ className?: string;
27
30
  }
28
31
  interface MobileNavMenuProps {
29
- children: React.ReactNode;
30
- className?: string;
31
- isOpen: boolean;
32
- onClose: () => void;
32
+ children: React.ReactNode;
33
+ className?: string;
34
+ isOpen: boolean;
35
+ onClose: () => void;
33
36
  }
34
- export declare const Navbar: ({ children, className }: NavbarProps) => import("react/jsx-runtime").JSX.Element;
35
- export declare const NavBody: ({ children, className, visible }: NavBodyProps) => import("react/jsx-runtime").JSX.Element;
36
- export declare const NavItems: ({ items, className, onItemClick }: NavItemsProps) => import("react/jsx-runtime").JSX.Element;
37
- export declare const MobileNav: ({ children, className, visible }: MobileNavProps) => import("react/jsx-runtime").JSX.Element;
38
- export declare const MobileNavHeader: ({ children, className }: MobileNavHeaderProps) => import("react/jsx-runtime").JSX.Element;
39
- export declare const MobileNavMenu: ({ children, className, isOpen }: MobileNavMenuProps) => import("react/jsx-runtime").JSX.Element;
40
- export declare const MobileNavToggle: ({ isOpen, onClick }: {
41
- isOpen: boolean;
42
- onClick: () => void;
43
- }) => import("react/jsx-runtime").JSX.Element;
44
- export declare const NavbarLogo: ({ logo, title, alt, }: {
45
- logo?: string;
46
- title?: string;
47
- alt?: string;
48
- }) => import("react/jsx-runtime").JSX.Element;
49
- export declare const NavbarButton: ({ href, as: Tag, children, className, variant, ...props }: {
50
- href?: string;
51
- as?: React.ElementType;
52
- children: React.ReactNode;
53
- className?: string;
54
- variant?: "primary" | "secondary" | "dark" | "gradient";
55
- } & (React.ComponentPropsWithoutRef<"a"> | React.ComponentPropsWithoutRef<"button">)) => import("react/jsx-runtime").JSX.Element;
56
- export {};
37
+ declare const Navbar: ({
38
+ children,
39
+ className
40
+ }: NavbarProps) => _$react_jsx_runtime0.JSX.Element;
41
+ declare const NavBody: ({
42
+ children,
43
+ className,
44
+ visible
45
+ }: NavBodyProps) => _$react_jsx_runtime0.JSX.Element;
46
+ declare const NavItems: ({
47
+ items,
48
+ className,
49
+ onItemClick
50
+ }: NavItemsProps) => _$react_jsx_runtime0.JSX.Element;
51
+ declare const MobileNav: ({
52
+ children,
53
+ className,
54
+ visible
55
+ }: MobileNavProps) => _$react_jsx_runtime0.JSX.Element;
56
+ declare const MobileNavHeader: ({
57
+ children,
58
+ className
59
+ }: MobileNavHeaderProps) => _$react_jsx_runtime0.JSX.Element;
60
+ declare const MobileNavMenu: ({
61
+ children,
62
+ className,
63
+ isOpen
64
+ }: MobileNavMenuProps) => _$react_jsx_runtime0.JSX.Element;
65
+ declare const MobileNavToggle: ({
66
+ isOpen,
67
+ onClick
68
+ }: {
69
+ isOpen: boolean;
70
+ onClick: () => void;
71
+ }) => _$react_jsx_runtime0.JSX.Element;
72
+ declare const NavbarLogo: ({
73
+ logo,
74
+ title,
75
+ alt
76
+ }: {
77
+ logo?: string;
78
+ title?: string;
79
+ alt?: string;
80
+ }) => _$react_jsx_runtime0.JSX.Element;
81
+ declare const NavbarButton: ({
82
+ href,
83
+ as: Tag,
84
+ children,
85
+ className,
86
+ variant,
87
+ ...props
88
+ }: {
89
+ href?: string;
90
+ as?: React.ElementType;
91
+ children: React.ReactNode;
92
+ className?: string;
93
+ variant?: "primary" | "secondary" | "dark" | "gradient";
94
+ } & (React.ComponentPropsWithoutRef<"a"> | React.ComponentPropsWithoutRef<"button">)) => _$react_jsx_runtime0.JSX.Element;
95
+ //#endregion
96
+ export { MobileNav, MobileNavHeader, MobileNavMenu, MobileNavToggle, NavBody, NavItems, Navbar, NavbarButton, NavbarLogo };
97
+ //# sourceMappingURL=resizable-navbar.d.ts.map
@@ -1,86 +1,138 @@
1
1
  "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../../lib/utils.js";
3
+ import React, { useRef, useState } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
3
5
  import { MenuIcon, XIcon } from "lucide-react";
4
6
  import { AnimatePresence, motion, useMotionValueEvent, useScroll } from "motion/react";
5
- import React, { useRef, useState } from "react";
6
- import { cn } from "../../lib/utils";
7
- export const Navbar = ({ children, className }) => {
8
- const ref = useRef(null);
9
- const { scrollY } = useScroll({
10
- target: ref,
11
- offset: ["start start", "end start"],
12
- });
13
- const [visible, setVisible] = useState(false);
14
- useMotionValueEvent(scrollY, "change", (latest) => {
15
- if (latest > 20) {
16
- setVisible(true);
17
- }
18
- else {
19
- setVisible(false);
20
- }
21
- });
22
- return (_jsx(motion.div, { ref: ref,
23
- // IMPORTANT: Change this to class of `fixed` if you want the navbar to be fixed
24
- className: cn("fixed inset-x-0 top-8 z-100 w-full", className), children: React.Children.map(children, (child) => React.isValidElement(child)
25
- ? React.cloneElement(child, { visible })
26
- : child) }));
7
+ //#region src/components/ui/resizable-navbar.tsx
8
+ const Navbar = ({ children, className }) => {
9
+ const ref = useRef(null);
10
+ const { scrollY } = useScroll({
11
+ target: ref,
12
+ offset: ["start start", "end start"]
13
+ });
14
+ const [visible, setVisible] = useState(false);
15
+ useMotionValueEvent(scrollY, "change", (latest) => {
16
+ if (latest > 20) setVisible(true);
17
+ else setVisible(false);
18
+ });
19
+ return /* @__PURE__ */ jsx(motion.div, {
20
+ ref,
21
+ className: cn("fixed inset-x-0 top-8 z-100 w-full", className),
22
+ children: React.Children.map(children, (child) => React.isValidElement(child) ? React.cloneElement(child, { visible }) : child)
23
+ });
27
24
  };
28
- export const NavBody = ({ children, className, visible }) => {
29
- return (_jsx(motion.div, { animate: {
30
- backdropFilter: visible ? "blur(10px)" : "none",
31
- boxShadow: visible
32
- ? "0 0 24px rgba(34, 42, 53, 0.06), 0 1px 1px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(34, 42, 53, 0.04), 0 0 4px rgba(34, 42, 53, 0.08), 0 16px 68px rgba(47, 48, 55, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1) inset"
33
- : "none",
34
- width: visible ? "40%" : "100%",
35
- y: visible ? 20 : 0,
36
- }, transition: {
37
- type: "spring",
38
- stiffness: 200,
39
- damping: 50,
40
- }, style: {
41
- minWidth: "800px",
42
- }, className: cn("relative z-[60] mx-auto hidden w-full max-w-7xl flex-row items-center justify-between self-start rounded-full bg-transparent px-4 py-2 lg:flex dark:bg-transparent", visible && "bg-white/80 dark:bg-neutral-950/80", className), children: children }));
25
+ const NavBody = ({ children, className, visible }) => {
26
+ return /* @__PURE__ */ jsx(motion.div, {
27
+ animate: {
28
+ backdropFilter: visible ? "blur(10px)" : "none",
29
+ boxShadow: visible ? "0 0 24px rgba(34, 42, 53, 0.06), 0 1px 1px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(34, 42, 53, 0.04), 0 0 4px rgba(34, 42, 53, 0.08), 0 16px 68px rgba(47, 48, 55, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1) inset" : "none",
30
+ width: visible ? "40%" : "100%",
31
+ y: visible ? 20 : 0
32
+ },
33
+ transition: {
34
+ type: "spring",
35
+ stiffness: 200,
36
+ damping: 50
37
+ },
38
+ style: { minWidth: "800px" },
39
+ className: cn("relative z-[60] mx-auto hidden w-full max-w-7xl flex-row items-center justify-between self-start rounded-full bg-transparent px-4 py-2 lg:flex dark:bg-transparent", visible && "bg-white/80 dark:bg-neutral-950/80", className),
40
+ children
41
+ });
43
42
  };
44
- export const NavItems = ({ items, className, onItemClick }) => {
45
- const [hovered, setHovered] = useState(null);
46
- return (_jsx(motion.div, { onMouseLeave: () => setHovered(null), className: cn("absolute inset-0 hidden flex-1 flex-row items-center justify-center space-x-2 text-sm font-medium text-zinc-600 transition duration-200 hover:text-zinc-800 lg:flex lg:space-x-2", className), children: items.map((item, idx) => (_jsxs("a", { onMouseEnter: () => setHovered(idx), onClick: onItemClick, className: "relative px-4 py-2 text-neutral-600 dark:text-neutral-300", href: item.link, children: [hovered === idx && (_jsx(motion.div, { layoutId: "hovered", className: "absolute inset-0 h-full w-full rounded-full bg-gray-100 dark:bg-neutral-800" })), _jsx("span", { className: "relative z-20", children: item.name })] }, `link-${idx}`))) }));
43
+ const NavItems = ({ items, className, onItemClick }) => {
44
+ const [hovered, setHovered] = useState(null);
45
+ return /* @__PURE__ */ jsx(motion.div, {
46
+ onMouseLeave: () => setHovered(null),
47
+ className: cn("absolute inset-0 hidden flex-1 flex-row items-center justify-center space-x-2 text-sm font-medium text-zinc-600 transition duration-200 hover:text-zinc-800 lg:flex lg:space-x-2", className),
48
+ children: items.map((item, idx) => /* @__PURE__ */ jsxs("a", {
49
+ onMouseEnter: () => setHovered(idx),
50
+ onClick: onItemClick,
51
+ className: "relative px-4 py-2 text-neutral-600 dark:text-neutral-300",
52
+ href: item.link,
53
+ children: [hovered === idx && /* @__PURE__ */ jsx(motion.div, {
54
+ layoutId: "hovered",
55
+ className: "absolute inset-0 h-full w-full rounded-full bg-gray-100 dark:bg-neutral-800"
56
+ }), /* @__PURE__ */ jsx("span", {
57
+ className: "relative z-20",
58
+ children: item.name
59
+ })]
60
+ }, `link-${idx}`))
61
+ });
47
62
  };
48
- export const MobileNav = ({ children, className, visible }) => {
49
- return (_jsx(motion.div, { animate: {
50
- backdropFilter: visible ? "blur(10px)" : "none",
51
- boxShadow: visible
52
- ? "0 0 24px rgba(34, 42, 53, 0.06), 0 1px 1px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(34, 42, 53, 0.04), 0 0 4px rgba(34, 42, 53, 0.08), 0 16px 68px rgba(47, 48, 55, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1) inset"
53
- : "none",
54
- width: visible ? "90%" : "100%",
55
- paddingRight: visible ? "12px" : "0px",
56
- paddingLeft: visible ? "12px" : "0px",
57
- borderRadius: visible ? "4px" : "2rem",
58
- y: visible ? 20 : 0,
59
- }, transition: {
60
- type: "spring",
61
- stiffness: 200,
62
- damping: 50,
63
- }, className: cn("relative z-50 mx-auto flex w-full max-w-[calc(100vw-2rem)] flex-col items-center justify-between bg-transparent px-0 py-2 lg:hidden", visible && "bg-white/80 dark:bg-neutral-950/80", className), children: children }));
63
+ const MobileNav = ({ children, className, visible }) => {
64
+ return /* @__PURE__ */ jsx(motion.div, {
65
+ animate: {
66
+ backdropFilter: visible ? "blur(10px)" : "none",
67
+ boxShadow: visible ? "0 0 24px rgba(34, 42, 53, 0.06), 0 1px 1px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(34, 42, 53, 0.04), 0 0 4px rgba(34, 42, 53, 0.08), 0 16px 68px rgba(47, 48, 55, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1) inset" : "none",
68
+ width: visible ? "90%" : "100%",
69
+ paddingRight: visible ? "12px" : "0px",
70
+ paddingLeft: visible ? "12px" : "0px",
71
+ borderRadius: visible ? "4px" : "2rem",
72
+ y: visible ? 20 : 0
73
+ },
74
+ transition: {
75
+ type: "spring",
76
+ stiffness: 200,
77
+ damping: 50
78
+ },
79
+ className: cn("relative z-50 mx-auto flex w-full max-w-[calc(100vw-2rem)] flex-col items-center justify-between bg-transparent px-0 py-2 lg:hidden", visible && "bg-white/80 dark:bg-neutral-950/80", className),
80
+ children
81
+ });
64
82
  };
65
- export const MobileNavHeader = ({ children, className }) => {
66
- return (_jsx("div", { className: cn("flex w-full flex-row items-center justify-between", className), children: children }));
83
+ const MobileNavHeader = ({ children, className }) => {
84
+ return /* @__PURE__ */ jsx("div", {
85
+ className: cn("flex w-full flex-row items-center justify-between", className),
86
+ children
87
+ });
67
88
  };
68
- export const MobileNavMenu = ({ children, className, isOpen }) => {
69
- return (_jsx(AnimatePresence, { children: isOpen && (_jsx(motion.div, { initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, className: cn("absolute inset-x-0 top-16 z-50 flex w-full flex-col items-start justify-start gap-4 rounded-lg bg-white px-4 py-8 shadow-[0_0_24px_rgba(34,_42,_53,_0.06),_0_1px_1px_rgba(0,_0,_0,_0.05),_0_0_0_1px_rgba(34,_42,_53,_0.04),_0_0_4px_rgba(34,_42,_53,_0.08),_0_16px_68px_rgba(47,_48,_55,_0.05),_0_1px_0_rgba(255,_255,_255,_0.1)_inset] dark:bg-neutral-950", className), children: children })) }));
89
+ const MobileNavMenu = ({ children, className, isOpen }) => {
90
+ return /* @__PURE__ */ jsx(AnimatePresence, { children: isOpen && /* @__PURE__ */ jsx(motion.div, {
91
+ initial: { opacity: 0 },
92
+ animate: { opacity: 1 },
93
+ exit: { opacity: 0 },
94
+ className: cn("absolute inset-x-0 top-16 z-50 flex w-full flex-col items-start justify-start gap-4 rounded-lg bg-white px-4 py-8 shadow-[0_0_24px_rgba(34,_42,_53,_0.06),_0_1px_1px_rgba(0,_0,_0,_0.05),_0_0_0_1px_rgba(34,_42,_53,_0.04),_0_0_4px_rgba(34,_42,_53,_0.08),_0_16px_68px_rgba(47,_48,_55,_0.05),_0_1px_0_rgba(255,_255,_255,_0.1)_inset] dark:bg-neutral-950", className),
95
+ children
96
+ }) });
70
97
  };
71
- export const MobileNavToggle = ({ isOpen, onClick }) => {
72
- return isOpen ? (_jsx(XIcon, { className: "text-black dark:text-white", onClick: onClick })) : (_jsx(MenuIcon, { className: "text-black dark:text-white", onClick: onClick }));
98
+ const MobileNavToggle = ({ isOpen, onClick }) => {
99
+ return isOpen ? /* @__PURE__ */ jsx(XIcon, {
100
+ className: "text-black dark:text-white",
101
+ onClick
102
+ }) : /* @__PURE__ */ jsx(MenuIcon, {
103
+ className: "text-black dark:text-white",
104
+ onClick
105
+ });
73
106
  };
74
- export const NavbarLogo = ({ logo = "/mk.png", title = "Kowalkowski", alt, }) => {
75
- return (_jsxs("a", { href: "/", className: "relative z-20 mr-4 flex items-center space-x-2 px-2 py-1 text-sm font-normal text-black", children: [_jsx("img", { src: logo, alt: alt || `${title} logo`, width: 30, height: 30 }), _jsx("span", { className: "font-medium text-black dark:text-white", children: title })] }));
107
+ const NavbarLogo = ({ logo = "/mk.png", title = "Kowalkowski", alt }) => {
108
+ return /* @__PURE__ */ jsxs("a", {
109
+ href: "/",
110
+ className: "relative z-20 mr-4 flex items-center space-x-2 px-2 py-1 text-sm font-normal text-black",
111
+ children: [/* @__PURE__ */ jsx("img", {
112
+ src: logo,
113
+ alt: alt || `${title} logo`,
114
+ width: 30,
115
+ height: 30
116
+ }), /* @__PURE__ */ jsx("span", {
117
+ className: "font-medium text-black dark:text-white",
118
+ children: title
119
+ })]
120
+ });
76
121
  };
77
- export const NavbarButton = ({ href, as: Tag = "a", children, className, variant = "primary", ...props }) => {
78
- const baseStyles = "px-4 py-2 rounded-md bg-white button bg-white text-black text-sm font-bold relative cursor-pointer hover:-translate-y-0.5 transition duration-200 inline-block text-center";
79
- const variantStyles = {
80
- primary: "shadow-[0_0_24px_rgba(34,_42,_53,_0.06),_0_1px_1px_rgba(0,_0,_0,_0.05),_0_0_0_1px_rgba(34,_42,_53,_0.04),_0_0_4px_rgba(34,_42,_53,_0.08),_0_16px_68px_rgba(47,_48,_55,_0.05),_0_1px_0_rgba(255,_255,_255,_0.1)_inset]",
81
- secondary: "bg-transparent shadow-none dark:text-white",
82
- dark: "bg-black text-white shadow-[0_0_24px_rgba(34,_42,_53,_0.06),_0_1px_1px_rgba(0,_0,_0,_0.05),_0_0_0_1px_rgba(34,_42,_53,_0.04),_0_0_4px_rgba(34,_42,_53,_0.08),_0_16px_68px_rgba(47,_48,_55,_0.05),_0_1px_0_rgba(255,_255,_255,_0.1)_inset]",
83
- gradient: "bg-gradient-to-b from-blue-500 to-blue-700 text-white shadow-[0px_2px_0px_0px_rgba(255,255,255,0.3)_inset]",
84
- };
85
- return (_jsx(Tag, { href: href || undefined, className: cn(baseStyles, variantStyles[variant], className), ...props, children: children }));
122
+ const NavbarButton = ({ href, as: Tag = "a", children, className, variant = "primary", ...props }) => {
123
+ return /* @__PURE__ */ jsx(Tag, {
124
+ href: href || void 0,
125
+ className: cn("px-4 py-2 rounded-md bg-white button bg-white text-black text-sm font-bold relative cursor-pointer hover:-translate-y-0.5 transition duration-200 inline-block text-center", {
126
+ primary: "shadow-[0_0_24px_rgba(34,_42,_53,_0.06),_0_1px_1px_rgba(0,_0,_0,_0.05),_0_0_0_1px_rgba(34,_42,_53,_0.04),_0_0_4px_rgba(34,_42,_53,_0.08),_0_16px_68px_rgba(47,_48,_55,_0.05),_0_1px_0_rgba(255,_255,_255,_0.1)_inset]",
127
+ secondary: "bg-transparent shadow-none dark:text-white",
128
+ dark: "bg-black text-white shadow-[0_0_24px_rgba(34,_42,_53,_0.06),_0_1px_1px_rgba(0,_0,_0,_0.05),_0_0_0_1px_rgba(34,_42,_53,_0.04),_0_0_4px_rgba(34,_42,_53,_0.08),_0_16px_68px_rgba(47,_48,_55,_0.05),_0_1px_0_rgba(255,_255,_255,_0.1)_inset]",
129
+ gradient: "bg-gradient-to-b from-blue-500 to-blue-700 text-white shadow-[0px_2px_0px_0px_rgba(255,255,255,0.3)_inset]"
130
+ }[variant], className),
131
+ ...props,
132
+ children
133
+ });
86
134
  };
135
+ //#endregion
136
+ export { MobileNav, MobileNavHeader, MobileNavMenu, MobileNavToggle, NavBody, NavItems, Navbar, NavbarButton, NavbarLogo };
137
+
138
+ //# sourceMappingURL=resizable-navbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable-navbar.js","names":[],"sources":["../../../../src/components/ui/resizable-navbar.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport { MenuIcon, XIcon } from \"lucide-react\";\r\nimport { AnimatePresence, motion, useMotionValueEvent, useScroll } from \"motion/react\";\r\nimport React, { useRef, useState } from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\ninterface NavbarProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface NavBodyProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n visible?: boolean;\r\n}\r\n\r\ninterface NavItemsProps {\r\n items: {\r\n name: string;\r\n link: string;\r\n }[];\r\n className?: string;\r\n onItemClick?: () => void;\r\n}\r\n\r\ninterface MobileNavProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n visible?: boolean;\r\n}\r\n\r\ninterface MobileNavHeaderProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\ninterface MobileNavMenuProps {\r\n children: React.ReactNode;\r\n className?: string;\r\n isOpen: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nexport const Navbar = ({ children, className }: NavbarProps) => {\r\n const ref = useRef<HTMLDivElement>(null);\r\n const { scrollY } = useScroll({\r\n target: ref,\r\n offset: [\"start start\", \"end start\"],\r\n });\r\n const [visible, setVisible] = useState<boolean>(false);\r\n\r\n useMotionValueEvent(scrollY, \"change\", (latest) => {\r\n if (latest > 20) {\r\n setVisible(true);\r\n } else {\r\n setVisible(false);\r\n }\r\n });\r\n\r\n return (\r\n <motion.div\r\n ref={ref}\r\n // IMPORTANT: Change this to class of `fixed` if you want the navbar to be fixed\r\n className={cn(\"fixed inset-x-0 top-8 z-100 w-full\", className)}\r\n >\r\n {React.Children.map(children, (child) =>\r\n React.isValidElement(child)\r\n ? React.cloneElement(child as React.ReactElement<{ visible?: boolean }>, { visible })\r\n : child\r\n )}\r\n </motion.div>\r\n );\r\n};\r\n\r\nexport const NavBody = ({ children, className, visible }: NavBodyProps) => {\r\n return (\r\n <motion.div\r\n animate={{\r\n backdropFilter: visible ? \"blur(10px)\" : \"none\",\r\n boxShadow: visible\r\n ? \"0 0 24px rgba(34, 42, 53, 0.06), 0 1px 1px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(34, 42, 53, 0.04), 0 0 4px rgba(34, 42, 53, 0.08), 0 16px 68px rgba(47, 48, 55, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1) inset\"\r\n : \"none\",\r\n width: visible ? \"40%\" : \"100%\",\r\n y: visible ? 20 : 0,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 200,\r\n damping: 50,\r\n }}\r\n style={{\r\n minWidth: \"800px\",\r\n }}\r\n className={cn(\r\n \"relative z-[60] mx-auto hidden w-full max-w-7xl flex-row items-center justify-between self-start rounded-full bg-transparent px-4 py-2 lg:flex dark:bg-transparent\",\r\n visible && \"bg-white/80 dark:bg-neutral-950/80\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n};\r\n\r\nexport const NavItems = ({ items, className, onItemClick }: NavItemsProps) => {\r\n const [hovered, setHovered] = useState<number | null>(null);\r\n\r\n return (\r\n <motion.div\r\n onMouseLeave={() => setHovered(null)}\r\n className={cn(\r\n \"absolute inset-0 hidden flex-1 flex-row items-center justify-center space-x-2 text-sm font-medium text-zinc-600 transition duration-200 hover:text-zinc-800 lg:flex lg:space-x-2\",\r\n className\r\n )}\r\n >\r\n {items.map((item, idx) => (\r\n <a\r\n onMouseEnter={() => setHovered(idx)}\r\n onClick={onItemClick}\r\n className=\"relative px-4 py-2 text-neutral-600 dark:text-neutral-300\"\r\n key={`link-${idx}`}\r\n href={item.link}\r\n >\r\n {hovered === idx && (\r\n <motion.div\r\n layoutId=\"hovered\"\r\n className=\"absolute inset-0 h-full w-full rounded-full bg-gray-100 dark:bg-neutral-800\"\r\n />\r\n )}\r\n <span className=\"relative z-20\">{item.name}</span>\r\n </a>\r\n ))}\r\n </motion.div>\r\n );\r\n};\r\n\r\nexport const MobileNav = ({ children, className, visible }: MobileNavProps) => {\r\n return (\r\n <motion.div\r\n animate={{\r\n backdropFilter: visible ? \"blur(10px)\" : \"none\",\r\n boxShadow: visible\r\n ? \"0 0 24px rgba(34, 42, 53, 0.06), 0 1px 1px rgba(0, 0, 0, 0.05), 0 0 0 1px rgba(34, 42, 53, 0.04), 0 0 4px rgba(34, 42, 53, 0.08), 0 16px 68px rgba(47, 48, 55, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1) inset\"\r\n : \"none\",\r\n width: visible ? \"90%\" : \"100%\",\r\n paddingRight: visible ? \"12px\" : \"0px\",\r\n paddingLeft: visible ? \"12px\" : \"0px\",\r\n borderRadius: visible ? \"4px\" : \"2rem\",\r\n y: visible ? 20 : 0,\r\n }}\r\n transition={{\r\n type: \"spring\",\r\n stiffness: 200,\r\n damping: 50,\r\n }}\r\n className={cn(\r\n \"relative z-50 mx-auto flex w-full max-w-[calc(100vw-2rem)] flex-col items-center justify-between bg-transparent px-0 py-2 lg:hidden\",\r\n visible && \"bg-white/80 dark:bg-neutral-950/80\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.div>\r\n );\r\n};\r\n\r\nexport const MobileNavHeader = ({ children, className }: MobileNavHeaderProps) => {\r\n return (\r\n <div className={cn(\"flex w-full flex-row items-center justify-between\", className)}>\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nexport const MobileNavMenu = ({ children, className, isOpen }: MobileNavMenuProps) => {\r\n return (\r\n <AnimatePresence>\r\n {isOpen && (\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className={cn(\r\n \"absolute inset-x-0 top-16 z-50 flex w-full flex-col items-start justify-start gap-4 rounded-lg bg-white px-4 py-8 shadow-[0_0_24px_rgba(34,_42,_53,_0.06),_0_1px_1px_rgba(0,_0,_0,_0.05),_0_0_0_1px_rgba(34,_42,_53,_0.04),_0_0_4px_rgba(34,_42,_53,_0.08),_0_16px_68px_rgba(47,_48,_55,_0.05),_0_1px_0_rgba(255,_255,_255,_0.1)_inset] dark:bg-neutral-950\",\r\n className\r\n )}\r\n >\r\n {children}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n );\r\n};\r\n\r\nexport const MobileNavToggle = ({ isOpen, onClick }: { isOpen: boolean; onClick: () => void }) => {\r\n return isOpen ? (\r\n <XIcon className=\"text-black dark:text-white\" onClick={onClick} />\r\n ) : (\r\n <MenuIcon className=\"text-black dark:text-white\" onClick={onClick} />\r\n );\r\n};\r\n\r\nexport const NavbarLogo = ({\r\n logo = \"/mk.png\",\r\n title = \"Kowalkowski\",\r\n alt,\r\n}: {\r\n logo?: string;\r\n title?: string;\r\n alt?: string;\r\n}) => {\r\n return (\r\n <a\r\n href=\"/\"\r\n className=\"relative z-20 mr-4 flex items-center space-x-2 px-2 py-1 text-sm font-normal text-black\"\r\n >\r\n <img src={logo} alt={alt || `${title} logo`} width={30} height={30} />\r\n <span className=\"font-medium text-black dark:text-white\">{title}</span>\r\n </a>\r\n );\r\n};\r\n\r\nexport const NavbarButton = ({\r\n href,\r\n as: Tag = \"a\",\r\n children,\r\n className,\r\n variant = \"primary\",\r\n ...props\r\n}: {\r\n href?: string;\r\n as?: React.ElementType;\r\n children: React.ReactNode;\r\n className?: string;\r\n variant?: \"primary\" | \"secondary\" | \"dark\" | \"gradient\";\r\n} & (React.ComponentPropsWithoutRef<\"a\"> | React.ComponentPropsWithoutRef<\"button\">)) => {\r\n const baseStyles =\r\n \"px-4 py-2 rounded-md bg-white button bg-white text-black text-sm font-bold relative cursor-pointer hover:-translate-y-0.5 transition duration-200 inline-block text-center\";\r\n\r\n const variantStyles = {\r\n primary:\r\n \"shadow-[0_0_24px_rgba(34,_42,_53,_0.06),_0_1px_1px_rgba(0,_0,_0,_0.05),_0_0_0_1px_rgba(34,_42,_53,_0.04),_0_0_4px_rgba(34,_42,_53,_0.08),_0_16px_68px_rgba(47,_48,_55,_0.05),_0_1px_0_rgba(255,_255,_255,_0.1)_inset]\",\r\n secondary: \"bg-transparent shadow-none dark:text-white\",\r\n dark: \"bg-black text-white shadow-[0_0_24px_rgba(34,_42,_53,_0.06),_0_1px_1px_rgba(0,_0,_0,_0.05),_0_0_0_1px_rgba(34,_42,_53,_0.04),_0_0_4px_rgba(34,_42,_53,_0.08),_0_16px_68px_rgba(47,_48,_55,_0.05),_0_1px_0_rgba(255,_255,_255,_0.1)_inset]\",\r\n gradient:\r\n \"bg-gradient-to-b from-blue-500 to-blue-700 text-white shadow-[0px_2px_0px_0px_rgba(255,255,255,0.3)_inset]\",\r\n };\r\n\r\n return (\r\n <Tag\r\n href={href || undefined}\r\n className={cn(baseStyles, variantStyles[variant], className)}\r\n {...props}\r\n >\r\n {children}\r\n </Tag>\r\n );\r\n};\r\n"],"mappings":";;;;;;;AA6CA,MAAa,UAAU,EAAE,UAAU,gBAA6B;CAC9D,MAAM,MAAM,OAAuB,KAAK;CACxC,MAAM,EAAE,YAAY,UAAU;EAC5B,QAAQ;EACR,QAAQ,CAAC,eAAe,YAAY;EACrC,CAAC;CACF,MAAM,CAAC,SAAS,cAAc,SAAkB,MAAM;AAEtD,qBAAoB,SAAS,WAAW,WAAW;AACjD,MAAI,SAAS,GACX,YAAW,KAAK;MAEhB,YAAW,MAAM;GAEnB;AAEF,QACE,oBAAC,OAAO,KAAR;EACO;EAEL,WAAW,GAAG,sCAAsC,UAAU;YAE7D,MAAM,SAAS,IAAI,WAAW,UAC7B,MAAM,eAAe,MAAM,GACvB,MAAM,aAAa,OAAoD,EAAE,SAAS,CAAC,GACnF,MACL;EACU,CAAA;;AAIjB,MAAa,WAAW,EAAE,UAAU,WAAW,cAA4B;AACzE,QACE,oBAAC,OAAO,KAAR;EACE,SAAS;GACP,gBAAgB,UAAU,eAAe;GACzC,WAAW,UACP,iNACA;GACJ,OAAO,UAAU,QAAQ;GACzB,GAAG,UAAU,KAAK;GACnB;EACD,YAAY;GACV,MAAM;GACN,WAAW;GACX,SAAS;GACV;EACD,OAAO,EACL,UAAU,SACX;EACD,WAAW,GACT,sKACA,WAAW,sCACX,UACD;EAEA;EACU,CAAA;;AAIjB,MAAa,YAAY,EAAE,OAAO,WAAW,kBAAiC;CAC5E,MAAM,CAAC,SAAS,cAAc,SAAwB,KAAK;AAE3D,QACE,oBAAC,OAAO,KAAR;EACE,oBAAoB,WAAW,KAAK;EACpC,WAAW,GACT,oLACA,UACD;YAEA,MAAM,KAAK,MAAM,QAChB,qBAAC,KAAD;GACE,oBAAoB,WAAW,IAAI;GACnC,SAAS;GACT,WAAU;GAEV,MAAM,KAAK;aALb,CAOG,YAAY,OACX,oBAAC,OAAO,KAAR;IACE,UAAS;IACT,WAAU;IACV,CAAA,EAEJ,oBAAC,QAAD;IAAM,WAAU;cAAiB,KAAK;IAAY,CAAA,CAChD;KAVG,QAAQ,MAUX,CACJ;EACS,CAAA;;AAIjB,MAAa,aAAa,EAAE,UAAU,WAAW,cAA8B;AAC7E,QACE,oBAAC,OAAO,KAAR;EACE,SAAS;GACP,gBAAgB,UAAU,eAAe;GACzC,WAAW,UACP,iNACA;GACJ,OAAO,UAAU,QAAQ;GACzB,cAAc,UAAU,SAAS;GACjC,aAAa,UAAU,SAAS;GAChC,cAAc,UAAU,QAAQ;GAChC,GAAG,UAAU,KAAK;GACnB;EACD,YAAY;GACV,MAAM;GACN,WAAW;GACX,SAAS;GACV;EACD,WAAW,GACT,uIACA,WAAW,sCACX,UACD;EAEA;EACU,CAAA;;AAIjB,MAAa,mBAAmB,EAAE,UAAU,gBAAsC;AAChF,QACE,oBAAC,OAAD;EAAK,WAAW,GAAG,qDAAqD,UAAU;EAC/E;EACG,CAAA;;AAIV,MAAa,iBAAiB,EAAE,UAAU,WAAW,aAAiC;AACpF,QACE,oBAAC,iBAAD,EAAA,UACG,UACC,oBAAC,OAAO,KAAR;EACE,SAAS,EAAE,SAAS,GAAG;EACvB,SAAS,EAAE,SAAS,GAAG;EACvB,MAAM,EAAE,SAAS,GAAG;EACpB,WAAW,GACT,+VACA,UACD;EAEA;EACU,CAAA,EAEC,CAAA;;AAItB,MAAa,mBAAmB,EAAE,QAAQ,cAAwD;AAChG,QAAO,SACL,oBAAC,OAAD;EAAO,WAAU;EAAsC;EAAW,CAAA,GAElE,oBAAC,UAAD;EAAU,WAAU;EAAsC;EAAW,CAAA;;AAIzE,MAAa,cAAc,EACzB,OAAO,WACP,QAAQ,eACR,UAKI;AACJ,QACE,qBAAC,KAAD;EACE,MAAK;EACL,WAAU;YAFZ,CAIE,oBAAC,OAAD;GAAK,KAAK;GAAM,KAAK,OAAO,GAAG,MAAM;GAAQ,OAAO;GAAI,QAAQ;GAAM,CAAA,EACtE,oBAAC,QAAD;GAAM,WAAU;aAA0C;GAAa,CAAA,CACrE;;;AAIR,MAAa,gBAAgB,EAC3B,MACA,IAAI,MAAM,KACV,UACA,WACA,UAAU,WACV,GAAG,YAOoF;AAavF,QACE,oBAAC,KAAD;EACE,MAAM,QAAQ,KAAA;EACd,WAAW,GAdb,8KAEoB;GACpB,SACE;GACF,WAAW;GACX,MAAM;GACN,UACE;GACH,CAK2C,UAAU,UAAU;EAC5D,GAAI;EAEH;EACG,CAAA"}
@@ -1,9 +1,12 @@
1
+ //#region src/components/ui/segment-control.d.ts
1
2
  interface SegmentControlProps {
2
- options: string[];
3
- value: string | null;
4
- onChange: (value: string | null) => void;
5
- className?: string;
6
- resetButton: boolean;
3
+ options: string[];
4
+ value: string | null;
5
+ onChange: (value: string | null) => void;
6
+ className?: string;
7
+ resetButton: boolean;
7
8
  }
8
- export declare const SegmentControl: React.FC<SegmentControlProps>;
9
- export {};
9
+ declare const SegmentControl: React.FC<SegmentControlProps>;
10
+ //#endregion
11
+ export { SegmentControl };
12
+ //# sourceMappingURL=segment-control.d.ts.map
@@ -1,42 +1,87 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { IconChevronDown } from "@tabler/icons-react";
1
+ import { Button } from "./button.js";
2
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "./dropdown-menu.js";
3
3
  import { useLayoutEffect, useRef, useState } from "react";
4
- import { Button } from "./button";
5
- import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "./dropdown-menu";
4
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
5
+ import { IconChevronDown } from "@tabler/icons-react";
6
+ //#region src/components/ui/segment-control.tsx
6
7
  const SegmentDropdown = ({ options, value, resetButton, onChange }) => {
7
- const [triggerWidth, setTriggerWidth] = useState();
8
- const triggerRef = useRef(null);
9
- const [open, setOpen] = useState(false);
10
- useLayoutEffect(() => {
11
- if (triggerRef.current) {
12
- console.log(triggerRef.current.offsetWidth);
13
- setTriggerWidth(triggerRef.current.offsetWidth);
14
- }
15
- }, []);
16
- return (_jsxs(DropdownMenu, { open: open, onOpenChange: setOpen, children: [_jsx(DropdownMenuTrigger, { asChild: true, ref: triggerRef, children: _jsxs(Button, { className: "w-full justify-between rounded-full border border-muted bg-muted/70 px-4 py-2 text-sm font-medium text-white", children: [value ?? resetButton ?? options[0], _jsx(IconChevronDown, { className: "ml-2 h-4 w-4 opacity-60" })] }) }), _jsxs(DropdownMenuContent, { style: { width: triggerWidth }, onInteractOutside: (e) => {
17
- e.preventDefault();
18
- setOpen(false);
19
- }, children: [resetButton && (_jsx(DropdownMenuItem, { onSelect: (e) => {
20
- e.preventDefault();
21
- onChange(null);
22
- setOpen(false);
23
- }, className: value === null ? "bg-primary text-primary-foreground" : "", children: resetButton })), options.map((option) => (_jsx(DropdownMenuItem, { onSelect: (e) => {
24
- e.preventDefault();
25
- onChange(option);
26
- setOpen(false);
27
- }, className: value === option ? "bg-primary text-primary-foreground" : "", children: option }, option)))] })] }));
8
+ const [triggerWidth, setTriggerWidth] = useState();
9
+ const triggerRef = useRef(null);
10
+ const [open, setOpen] = useState(false);
11
+ useLayoutEffect(() => {
12
+ if (triggerRef.current) {
13
+ console.log(triggerRef.current.offsetWidth);
14
+ setTriggerWidth(triggerRef.current.offsetWidth);
15
+ }
16
+ }, []);
17
+ return /* @__PURE__ */ jsxs(DropdownMenu, {
18
+ open,
19
+ onOpenChange: setOpen,
20
+ children: [/* @__PURE__ */ jsx(DropdownMenuTrigger, {
21
+ asChild: true,
22
+ ref: triggerRef,
23
+ children: /* @__PURE__ */ jsxs(Button, {
24
+ className: "w-full justify-between rounded-full border border-muted bg-muted/70 px-4 py-2 text-sm font-medium text-white",
25
+ children: [value ?? resetButton ?? options[0], /* @__PURE__ */ jsx(IconChevronDown, { className: "ml-2 h-4 w-4 opacity-60" })]
26
+ })
27
+ }), /* @__PURE__ */ jsxs(DropdownMenuContent, {
28
+ style: { width: triggerWidth },
29
+ onInteractOutside: (e) => {
30
+ e.preventDefault();
31
+ setOpen(false);
32
+ },
33
+ children: [resetButton && /* @__PURE__ */ jsx(DropdownMenuItem, {
34
+ onSelect: (e) => {
35
+ e.preventDefault();
36
+ onChange(null);
37
+ setOpen(false);
38
+ },
39
+ className: value === null ? "bg-primary text-primary-foreground" : "",
40
+ children: resetButton
41
+ }), options.map((option) => /* @__PURE__ */ jsx(DropdownMenuItem, {
42
+ onSelect: (e) => {
43
+ e.preventDefault();
44
+ onChange(option);
45
+ setOpen(false);
46
+ },
47
+ className: value === option ? "bg-primary text-primary-foreground" : "",
48
+ children: option
49
+ }, option))]
50
+ })]
51
+ });
28
52
  };
29
- export const SegmentControl = ({ options, value, onChange, className = "", resetButton = false, }) => {
30
- // Dropdown for mobile (below sm)
31
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: "block sm:hidden w-full " + className, children: _jsx(SegmentDropdown, { options: options, value: value, resetButton: resetButton, onChange: onChange }) }), _jsxs("fieldset", { className: "hidden sm:inline-flex flex-wrap items-center justify-center gap-1 sm:gap-2 bg-muted/70 rounded-full px-2 py-1.5 sm:px-4 sm:py-2 border-0 " +
32
- className, children: [options.map((option) => {
33
- const selected = value === option;
34
- return (_jsx(Button, { type: "button", variant: "ghost", onClick: () => onChange(option), className: "transition px-2 py-1.5 sm:px-4 sm:py-2 rounded-full text-xs sm:text-sm font-medium min-w-[60px] sm:min-w-[80px] " +
35
- (selected
36
- ? "bg-primary text-primary-foreground shadow hover:bg-primary hover:text-primary-foreground"
37
- : "bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground hover:shadow"), "aria-pressed": selected, children: option }, option));
38
- }), resetButton && (_jsxs(_Fragment, { children: [_jsx("div", { className: "border-l border-muted-foreground/20 h-4 sm:h-6 mx-1 sm:mx-2" }), _jsx(Button, { type: "button", variant: "ghost", onClick: () => onChange(null), className: "transition px-2 py-1.5 sm:px-4 sm:py-2 rounded-full text-xs sm:text-sm font-medium min-w-[60px] sm:min-w-[80px] " +
39
- (value === null
40
- ? "bg-primary text-primary-foreground shadow hover:bg-primary hover:text-primary-foreground"
41
- : "bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground hover:shadow"), "aria-label": "Reset", children: resetButton })] }))] })] }));
53
+ const SegmentControl = ({ options, value, onChange, className = "", resetButton = false }) => {
54
+ return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
55
+ className: "block sm:hidden w-full " + className,
56
+ children: /* @__PURE__ */ jsx(SegmentDropdown, {
57
+ options,
58
+ value,
59
+ resetButton,
60
+ onChange
61
+ })
62
+ }), /* @__PURE__ */ jsxs("fieldset", {
63
+ className: "hidden sm:inline-flex flex-wrap items-center justify-center gap-1 sm:gap-2 bg-muted/70 rounded-full px-2 py-1.5 sm:px-4 sm:py-2 border-0 " + className,
64
+ children: [options.map((option) => {
65
+ const selected = value === option;
66
+ return /* @__PURE__ */ jsx(Button, {
67
+ type: "button",
68
+ variant: "ghost",
69
+ onClick: () => onChange(option),
70
+ className: "transition px-2 py-1.5 sm:px-4 sm:py-2 rounded-full text-xs sm:text-sm font-medium min-w-[60px] sm:min-w-[80px] " + (selected ? "bg-primary text-primary-foreground shadow hover:bg-primary hover:text-primary-foreground" : "bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground hover:shadow"),
71
+ "aria-pressed": selected,
72
+ children: option
73
+ }, option);
74
+ }), resetButton && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", { className: "border-l border-muted-foreground/20 h-4 sm:h-6 mx-1 sm:mx-2" }), /* @__PURE__ */ jsx(Button, {
75
+ type: "button",
76
+ variant: "ghost",
77
+ onClick: () => onChange(null),
78
+ className: "transition px-2 py-1.5 sm:px-4 sm:py-2 rounded-full text-xs sm:text-sm font-medium min-w-[60px] sm:min-w-[80px] " + (value === null ? "bg-primary text-primary-foreground shadow hover:bg-primary hover:text-primary-foreground" : "bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground hover:shadow"),
79
+ "aria-label": "Reset",
80
+ children: resetButton
81
+ })] })]
82
+ })] });
42
83
  };
84
+ //#endregion
85
+ export { SegmentControl };
86
+
87
+ //# sourceMappingURL=segment-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segment-control.js","names":[],"sources":["../../../../src/components/ui/segment-control.tsx"],"sourcesContent":["import { IconChevronDown } from \"@tabler/icons-react\";\r\nimport { useLayoutEffect, useRef, useState } from \"react\";\r\nimport { Button } from \"./button\";\r\nimport {\r\n DropdownMenu,\r\n DropdownMenuContent,\r\n DropdownMenuItem,\r\n DropdownMenuTrigger,\r\n} from \"./dropdown-menu\";\r\n\r\ninterface SegmentControlProps {\r\n options: string[];\r\n value: string | null;\r\n onChange: (value: string | null) => void;\r\n className?: string;\r\n resetButton: boolean;\r\n}\r\n\r\nconst SegmentDropdown = ({ options, value, resetButton, onChange }: SegmentControlProps) => {\r\n const [triggerWidth, setTriggerWidth] = useState<number>();\r\n const triggerRef = useRef<HTMLButtonElement>(null);\r\n const [open, setOpen] = useState(false);\r\n\r\n useLayoutEffect(() => {\r\n if (triggerRef.current) {\r\n console.log(triggerRef.current.offsetWidth);\r\n setTriggerWidth(triggerRef.current.offsetWidth);\r\n }\r\n }, []);\r\n return (\r\n <DropdownMenu open={open} onOpenChange={setOpen}>\r\n <DropdownMenuTrigger asChild ref={triggerRef}>\r\n <Button className=\"w-full justify-between rounded-full border border-muted bg-muted/70 px-4 py-2 text-sm font-medium text-white\">\r\n {value ?? resetButton ?? options[0]}\r\n <IconChevronDown className=\"ml-2 h-4 w-4 opacity-60\" />\r\n </Button>\r\n </DropdownMenuTrigger>\r\n <DropdownMenuContent\r\n style={{ width: triggerWidth }}\r\n onInteractOutside={(e) => {\r\n e.preventDefault();\r\n setOpen(false);\r\n }}\r\n >\r\n {resetButton && (\r\n <DropdownMenuItem\r\n onSelect={(e) => {\r\n e.preventDefault();\r\n onChange(null);\r\n setOpen(false);\r\n }}\r\n className={value === null ? \"bg-primary text-primary-foreground\" : \"\"}\r\n >\r\n {resetButton}\r\n </DropdownMenuItem>\r\n )}\r\n {options.map((option) => (\r\n <DropdownMenuItem\r\n key={option}\r\n onSelect={(e) => {\r\n e.preventDefault();\r\n onChange(option);\r\n setOpen(false);\r\n }}\r\n className={value === option ? \"bg-primary text-primary-foreground\" : \"\"}\r\n >\r\n {option}\r\n </DropdownMenuItem>\r\n ))}\r\n </DropdownMenuContent>\r\n </DropdownMenu>\r\n );\r\n};\r\n\r\nexport const SegmentControl: React.FC<SegmentControlProps> = ({\r\n options,\r\n value,\r\n onChange,\r\n className = \"\",\r\n resetButton = false,\r\n}) => {\r\n // Dropdown for mobile (below sm)\r\n return (\r\n <>\r\n {/* Mobile: Dropdown */}\r\n <div className={\"block sm:hidden w-full \" + className}>\r\n <SegmentDropdown\r\n options={options}\r\n value={value}\r\n resetButton={resetButton}\r\n onChange={onChange}\r\n />\r\n </div>\r\n {/* Desktop: Segmented buttons */}\r\n <fieldset\r\n className={\r\n \"hidden sm:inline-flex flex-wrap items-center justify-center gap-1 sm:gap-2 bg-muted/70 rounded-full px-2 py-1.5 sm:px-4 sm:py-2 border-0 \" +\r\n className\r\n }\r\n >\r\n {options.map((option) => {\r\n const selected = value === option;\r\n return (\r\n <Button\r\n key={option}\r\n type=\"button\"\r\n variant=\"ghost\"\r\n onClick={() => onChange(option)}\r\n className={\r\n \"transition px-2 py-1.5 sm:px-4 sm:py-2 rounded-full text-xs sm:text-sm font-medium min-w-[60px] sm:min-w-[80px] \" +\r\n (selected\r\n ? \"bg-primary text-primary-foreground shadow hover:bg-primary hover:text-primary-foreground\"\r\n : \"bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground hover:shadow\")\r\n }\r\n aria-pressed={selected}\r\n >\r\n {option}\r\n </Button>\r\n );\r\n })}\r\n {resetButton && (\r\n <>\r\n <div className=\"border-l border-muted-foreground/20 h-4 sm:h-6 mx-1 sm:mx-2\" />\r\n <Button\r\n type=\"button\"\r\n variant=\"ghost\"\r\n onClick={() => onChange(null)}\r\n className={\r\n \"transition px-2 py-1.5 sm:px-4 sm:py-2 rounded-full text-xs sm:text-sm font-medium min-w-[60px] sm:min-w-[80px] \" +\r\n (value === null\r\n ? \"bg-primary text-primary-foreground shadow hover:bg-primary hover:text-primary-foreground\"\r\n : \"bg-transparent text-muted-foreground hover:bg-muted hover:text-foreground hover:shadow\")\r\n }\r\n aria-label=\"Reset\"\r\n >\r\n {resetButton}\r\n </Button>\r\n </>\r\n )}\r\n </fieldset>\r\n </>\r\n );\r\n};\r\n"],"mappings":";;;;;;AAkBA,MAAM,mBAAmB,EAAE,SAAS,OAAO,aAAa,eAAoC;CAC1F,MAAM,CAAC,cAAc,mBAAmB,UAAkB;CAC1D,MAAM,aAAa,OAA0B,KAAK;CAClD,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;AAEvC,uBAAsB;AACpB,MAAI,WAAW,SAAS;AACtB,WAAQ,IAAI,WAAW,QAAQ,YAAY;AAC3C,mBAAgB,WAAW,QAAQ,YAAY;;IAEhD,EAAE,CAAC;AACN,QACE,qBAAC,cAAD;EAAoB;EAAM,cAAc;YAAxC,CACE,oBAAC,qBAAD;GAAqB,SAAA;GAAQ,KAAK;aAChC,qBAAC,QAAD;IAAQ,WAAU;cAAlB,CACG,SAAS,eAAe,QAAQ,IACjC,oBAAC,iBAAD,EAAiB,WAAU,2BAA4B,CAAA,CAChD;;GACW,CAAA,EACtB,qBAAC,qBAAD;GACE,OAAO,EAAE,OAAO,cAAc;GAC9B,oBAAoB,MAAM;AACxB,MAAE,gBAAgB;AAClB,YAAQ,MAAM;;aAJlB,CAOG,eACC,oBAAC,kBAAD;IACE,WAAW,MAAM;AACf,OAAE,gBAAgB;AAClB,cAAS,KAAK;AACd,aAAQ,MAAM;;IAEhB,WAAW,UAAU,OAAO,uCAAuC;cAElE;IACgB,CAAA,EAEpB,QAAQ,KAAK,WACZ,oBAAC,kBAAD;IAEE,WAAW,MAAM;AACf,OAAE,gBAAgB;AAClB,cAAS,OAAO;AAChB,aAAQ,MAAM;;IAEhB,WAAW,UAAU,SAAS,uCAAuC;cAEpE;IACgB,EATZ,OASY,CACnB,CACkB;KACT;;;AAInB,MAAa,kBAAiD,EAC5D,SACA,OACA,UACA,YAAY,IACZ,cAAc,YACV;AAEJ,QACE,qBAAA,YAAA,EAAA,UAAA,CAEE,oBAAC,OAAD;EAAK,WAAW,4BAA4B;YAC1C,oBAAC,iBAAD;GACW;GACF;GACM;GACH;GACV,CAAA;EACE,CAAA,EAEN,qBAAC,YAAD;EACE,WACE,8IACA;YAHJ,CAMG,QAAQ,KAAK,WAAW;GACvB,MAAM,WAAW,UAAU;AAC3B,UACE,oBAAC,QAAD;IAEE,MAAK;IACL,SAAQ;IACR,eAAe,SAAS,OAAO;IAC/B,WACE,sHACC,WACG,6FACA;IAEN,gBAAc;cAEb;IACM,EAbF,OAaE;IAEX,EACD,eACC,qBAAA,YAAA,EAAA,UAAA,CACE,oBAAC,OAAD,EAAK,WAAU,+DAAgE,CAAA,EAC/E,oBAAC,QAAD;GACE,MAAK;GACL,SAAQ;GACR,eAAe,SAAS,KAAK;GAC7B,WACE,sHACC,UAAU,OACP,6FACA;GAEN,cAAW;aAEV;GACM,CAAA,CACR,EAAA,CAAA,CAEI;IACV,EAAA,CAAA"}
@@ -1,13 +1,17 @@
1
+ import * as React$1 from "react";
1
2
  import * as SelectPrimitive from "@radix-ui/react-select";
2
- import * as React from "react";
3
- declare const Select: React.FC<SelectPrimitive.SelectProps>;
4
- declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
5
- declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
6
- declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
7
- declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
8
- declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
9
- declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
10
- declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
- declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
12
- declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
13
- export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
3
+
4
+ //#region src/components/ui/select.d.ts
5
+ declare const Select: React$1.FC<SelectPrimitive.SelectProps>;
6
+ declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
7
+ declare const SelectValue: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React$1.RefAttributes<HTMLSpanElement>>;
8
+ declare const SelectTrigger: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
9
+ declare const SelectScrollUpButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
10
+ declare const SelectScrollDownButton: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
11
+ declare const SelectContent: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
12
+ declare const SelectLabel: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
13
+ declare const SelectItem: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
14
+ declare const SelectSeparator: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
15
+ //#endregion
16
+ export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue };
17
+ //# sourceMappingURL=select.d.ts.map