@gv-tech/design-system 2.20.0 → 2.21.1

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 (484) hide show
  1. package/dist/accordion.cjs +2 -2
  2. package/dist/accordion.cjs.map +1 -1
  3. package/dist/accordion.d.ts +2 -34
  4. package/dist/accordion.mjs +35 -38
  5. package/dist/accordion.mjs.map +1 -1
  6. package/dist/alert-dialog.cjs +2 -2
  7. package/dist/alert-dialog.cjs.map +1 -1
  8. package/dist/alert-dialog.d.ts +2 -74
  9. package/dist/alert-dialog.mjs +55 -69
  10. package/dist/alert-dialog.mjs.map +1 -1
  11. package/dist/alert.cjs +2 -2
  12. package/dist/alert.cjs.map +1 -1
  13. package/dist/alert.d.ts +2 -29
  14. package/dist/alert.mjs +36 -32
  15. package/dist/alert.mjs.map +1 -1
  16. package/dist/aspect-ratio.cjs +2 -2
  17. package/dist/aspect-ratio.cjs.map +1 -1
  18. package/dist/aspect-ratio.d.ts +2 -14
  19. package/dist/aspect-ratio.mjs +8 -6
  20. package/dist/aspect-ratio.mjs.map +1 -1
  21. package/dist/avatar.cjs +2 -2
  22. package/dist/avatar.cjs.map +1 -1
  23. package/dist/avatar.d.ts +2 -26
  24. package/dist/avatar.mjs +27 -29
  25. package/dist/avatar.mjs.map +1 -1
  26. package/dist/badge.cjs +2 -2
  27. package/dist/badge.cjs.map +1 -1
  28. package/dist/badge.d.ts +2 -21
  29. package/dist/badge.mjs +23 -25
  30. package/dist/badge.mjs.map +1 -1
  31. package/dist/breadcrumb.cjs +2 -2
  32. package/dist/breadcrumb.cjs.map +1 -1
  33. package/dist/breadcrumb.d.ts +2 -62
  34. package/dist/breadcrumb.mjs +60 -67
  35. package/dist/breadcrumb.mjs.map +1 -1
  36. package/dist/button.cjs +2 -2
  37. package/dist/button.cjs.map +1 -1
  38. package/dist/button.d.ts +2 -22
  39. package/dist/button.mjs +40 -39
  40. package/dist/button.mjs.map +1 -1
  41. package/dist/calendar.cjs +2 -2
  42. package/dist/calendar.cjs.map +1 -1
  43. package/dist/calendar.d.ts +2 -36
  44. package/dist/calendar.mjs +94 -130
  45. package/dist/calendar.mjs.map +1 -1
  46. package/dist/card.cjs +2 -2
  47. package/dist/card.cjs.map +1 -1
  48. package/dist/card.d.ts +2 -23
  49. package/dist/card.mjs +44 -33
  50. package/dist/card.mjs.map +1 -1
  51. package/dist/carousel.cjs +2 -2
  52. package/dist/carousel.cjs.map +1 -1
  53. package/dist/carousel.d.ts +2 -78
  54. package/dist/carousel.mjs +113 -151
  55. package/dist/carousel.mjs.map +1 -1
  56. package/dist/chart.cjs +5 -5
  57. package/dist/chart.cjs.map +1 -1
  58. package/dist/chart.d.ts +2 -90
  59. package/dist/chart.mjs +124 -182
  60. package/dist/chart.mjs.map +1 -1
  61. package/dist/checkbox.cjs +2 -2
  62. package/dist/checkbox.cjs.map +1 -1
  63. package/dist/checkbox.d.ts +2 -17
  64. package/dist/checkbox.mjs +19 -22
  65. package/dist/checkbox.mjs.map +1 -1
  66. package/dist/collapsible.cjs +2 -2
  67. package/dist/collapsible.cjs.map +1 -1
  68. package/dist/collapsible.d.ts +2 -32
  69. package/dist/collapsible.mjs +8 -8
  70. package/dist/collapsible.mjs.map +1 -1
  71. package/dist/command.cjs +2 -2
  72. package/dist/command.cjs.map +1 -1
  73. package/dist/command.d.ts +2 -133
  74. package/dist/command.mjs +80 -86
  75. package/dist/command.mjs.map +1 -1
  76. package/dist/context-menu.cjs +2 -2
  77. package/dist/context-menu.cjs.map +1 -1
  78. package/dist/context-menu.d.ts +2 -115
  79. package/dist/context-menu.mjs +72 -124
  80. package/dist/context-menu.mjs.map +1 -1
  81. package/dist/design-system.css +3 -1
  82. package/dist/dialog.cjs +2 -2
  83. package/dist/dialog.cjs.map +1 -1
  84. package/dist/dialog.d.ts +2 -31
  85. package/dist/dialog.mjs +50 -65
  86. package/dist/dialog.mjs.map +1 -1
  87. package/dist/drawer.cjs +2 -2
  88. package/dist/drawer.cjs.map +1 -1
  89. package/dist/drawer.d.ts +2 -79
  90. package/dist/drawer.mjs +49 -54
  91. package/dist/drawer.mjs.map +1 -1
  92. package/dist/dropdown-menu.cjs +2 -2
  93. package/dist/dropdown-menu.cjs.map +1 -1
  94. package/dist/dropdown-menu.d.ts +2 -124
  95. package/dist/dropdown-menu.mjs +73 -126
  96. package/dist/dropdown-menu.mjs.map +1 -1
  97. package/dist/form.cjs +2 -2
  98. package/dist/form.cjs.map +1 -1
  99. package/dist/form.d.ts +2 -62
  100. package/dist/form.mjs +75 -65
  101. package/dist/form.mjs.map +1 -1
  102. package/dist/hover-card.cjs +2 -2
  103. package/dist/hover-card.cjs.map +1 -1
  104. package/dist/hover-card.d.ts +2 -30
  105. package/dist/hover-card.mjs +17 -23
  106. package/dist/hover-card.mjs.map +1 -1
  107. package/dist/index.cjs +1 -2
  108. package/dist/index.d.ts +2 -2442
  109. package/dist/index.mjs +56 -430
  110. package/dist/input.cjs +2 -2
  111. package/dist/input.cjs.map +1 -1
  112. package/dist/input.d.ts +2 -14
  113. package/dist/input.mjs +16 -20
  114. package/dist/input.mjs.map +1 -1
  115. package/dist/label.cjs +2 -2
  116. package/dist/label.cjs.map +1 -1
  117. package/dist/label.d.ts +2 -14
  118. package/dist/label.mjs +14 -8
  119. package/dist/label.mjs.map +1 -1
  120. package/dist/menubar.cjs +2 -2
  121. package/dist/menubar.cjs.map +1 -1
  122. package/dist/menubar.d.ts +2 -125
  123. package/dist/menubar.mjs +101 -156
  124. package/dist/menubar.mjs.map +1 -1
  125. package/dist/navigation-menu.cjs +2 -2
  126. package/dist/navigation-menu.cjs.map +1 -1
  127. package/dist/navigation-menu.d.ts +2 -77
  128. package/dist/navigation-menu.mjs +58 -96
  129. package/dist/navigation-menu.mjs.map +1 -1
  130. package/dist/packages/design-tokens/src/index.d.ts +91 -0
  131. package/dist/packages/design-tokens/src/palette.d.ts +31 -0
  132. package/dist/packages/design-tokens/src/preset.d.ts +107 -0
  133. package/dist/packages/design-tokens/src/radii.d.ts +20 -0
  134. package/dist/packages/design-tokens/src/shadows.d.ts +11 -0
  135. package/dist/packages/design-tokens/src/spacing.d.ts +29 -0
  136. package/dist/packages/design-tokens/src/theme.d.ts +47 -0
  137. package/dist/packages/design-tokens/src/typography.d.ts +32 -0
  138. package/dist/packages/ui-core/src/contracts/accordion.d.ts +19 -0
  139. package/dist/packages/ui-core/src/contracts/alert-dialog.d.ts +39 -0
  140. package/dist/packages/ui-core/src/contracts/alert.d.ts +14 -0
  141. package/dist/packages/ui-core/src/contracts/aspect-ratio.d.ts +6 -0
  142. package/dist/packages/ui-core/src/contracts/avatar.d.ts +14 -0
  143. package/dist/packages/ui-core/src/contracts/badge.d.ts +6 -0
  144. package/dist/packages/ui-core/src/contracts/breadcrumb.d.ts +30 -0
  145. package/dist/packages/ui-core/src/contracts/button.d.ts +9 -0
  146. package/dist/packages/ui-core/src/contracts/calendar.d.ts +4 -0
  147. package/dist/packages/ui-core/src/contracts/card.d.ts +5 -0
  148. package/dist/packages/ui-core/src/contracts/carousel.d.ts +24 -0
  149. package/dist/packages/ui-core/src/contracts/chart.d.ts +33 -0
  150. package/dist/packages/ui-core/src/contracts/checkbox.d.ts +7 -0
  151. package/dist/packages/ui-core/src/contracts/collapsible.d.ts +18 -0
  152. package/dist/packages/ui-core/src/contracts/command.d.ts +35 -0
  153. package/dist/packages/ui-core/src/contracts/context-menu.d.ts +64 -0
  154. package/dist/packages/ui-core/src/contracts/dialog.d.ts +13 -0
  155. package/dist/packages/ui-core/src/contracts/drawer.d.ts +31 -0
  156. package/dist/packages/ui-core/src/contracts/dropdown-menu.d.ts +73 -0
  157. package/dist/packages/ui-core/src/contracts/form.d.ts +23 -0
  158. package/dist/packages/ui-core/src/contracts/hover-card.d.ts +18 -0
  159. package/dist/packages/ui-core/src/contracts/input.d.ts +5 -0
  160. package/dist/packages/ui-core/src/contracts/label.d.ts +6 -0
  161. package/dist/packages/ui-core/src/contracts/menubar.d.ts +73 -0
  162. package/dist/packages/ui-core/src/contracts/navigation-menu.d.ts +47 -0
  163. package/dist/packages/ui-core/src/contracts/pagination.d.ts +31 -0
  164. package/dist/packages/ui-core/src/contracts/popover.d.ts +24 -0
  165. package/dist/packages/ui-core/src/contracts/progress.d.ts +4 -0
  166. package/dist/packages/ui-core/src/contracts/radio.d.ts +9 -0
  167. package/dist/packages/ui-core/src/contracts/resizable.d.ts +38 -0
  168. package/dist/packages/ui-core/src/contracts/scroll-area.d.ts +13 -0
  169. package/dist/packages/ui-core/src/contracts/scroll-to-top.d.ts +25 -0
  170. package/dist/packages/ui-core/src/contracts/search.d.ts +12 -0
  171. package/dist/packages/ui-core/src/contracts/select.d.ts +54 -0
  172. package/dist/packages/ui-core/src/contracts/separator.d.ts +5 -0
  173. package/dist/packages/ui-core/src/contracts/sheet.d.ts +48 -0
  174. package/dist/packages/ui-core/src/contracts/skeleton.d.ts +5 -0
  175. package/dist/packages/ui-core/src/contracts/slider.d.ts +15 -0
  176. package/dist/packages/ui-core/src/contracts/sonner.d.ts +15 -0
  177. package/dist/packages/ui-core/src/contracts/switch.d.ts +11 -0
  178. package/dist/packages/ui-core/src/contracts/table-of-contents.d.ts +41 -0
  179. package/dist/packages/ui-core/src/contracts/table.d.ts +33 -0
  180. package/dist/packages/ui-core/src/contracts/tabs.d.ts +27 -0
  181. package/dist/packages/ui-core/src/contracts/text.d.ts +6 -0
  182. package/dist/packages/ui-core/src/contracts/textarea.d.ts +7 -0
  183. package/dist/packages/ui-core/src/contracts/theme-provider.d.ts +13 -0
  184. package/dist/packages/ui-core/src/contracts/theme-toggle.d.ts +15 -0
  185. package/dist/packages/ui-core/src/contracts/toast.d.ts +10 -0
  186. package/dist/packages/ui-core/src/contracts/toaster.d.ts +3 -0
  187. package/dist/packages/ui-core/src/contracts/toggle-group.d.ts +21 -0
  188. package/dist/packages/ui-core/src/contracts/toggle.d.ts +29 -0
  189. package/dist/packages/ui-core/src/contracts/tooltip.d.ts +24 -0
  190. package/dist/packages/ui-core/src/index.d.ts +56 -0
  191. package/dist/packages/ui-web/src/accordion.d.ts +9 -0
  192. package/dist/packages/ui-web/src/accordion.test.d.ts +1 -0
  193. package/dist/packages/ui-web/src/alert-dialog.d.ts +22 -0
  194. package/dist/packages/ui-web/src/alert-dialog.test.d.ts +1 -0
  195. package/dist/packages/ui-web/src/alert.d.ts +11 -0
  196. package/dist/packages/ui-web/src/alert.test.d.ts +1 -0
  197. package/dist/packages/ui-web/src/aspect-ratio.d.ts +6 -0
  198. package/dist/packages/ui-web/src/aspect-ratio.test.d.ts +1 -0
  199. package/dist/packages/ui-web/src/avatar.d.ts +8 -0
  200. package/dist/packages/ui-web/src/avatar.test.d.ts +1 -0
  201. package/dist/packages/ui-web/src/badge.d.ts +11 -0
  202. package/dist/packages/ui-web/src/badge.test.d.ts +1 -0
  203. package/dist/packages/ui-web/src/breadcrumb.d.ts +19 -0
  204. package/dist/packages/ui-web/src/button.d.ts +13 -0
  205. package/dist/packages/ui-web/src/button.test.d.ts +1 -0
  206. package/dist/packages/ui-web/src/calendar.d.ts +10 -0
  207. package/dist/packages/ui-web/src/calendar.test.d.ts +1 -0
  208. package/dist/packages/ui-web/src/card.d.ts +11 -0
  209. package/dist/packages/ui-web/src/card.test.d.ts +1 -0
  210. package/dist/packages/ui-web/src/carousel.d.ts +24 -0
  211. package/dist/packages/ui-web/src/carousel.test.d.ts +1 -0
  212. package/dist/packages/ui-web/src/chart.d.ts +16 -0
  213. package/dist/packages/ui-web/src/chart.test.d.ts +1 -0
  214. package/dist/packages/ui-web/src/checkbox.d.ts +7 -0
  215. package/dist/packages/ui-web/src/checkbox.test.d.ts +1 -0
  216. package/dist/packages/ui-web/src/collapsible.d.ts +8 -0
  217. package/dist/packages/ui-web/src/collapsible.test.d.ts +1 -0
  218. package/dist/packages/ui-web/src/command.d.ts +82 -0
  219. package/dist/packages/ui-web/src/command.test.d.ts +1 -0
  220. package/dist/packages/ui-web/src/context-menu.d.ts +23 -0
  221. package/dist/packages/ui-web/src/context-menu.test.d.ts +1 -0
  222. package/dist/packages/ui-web/src/dialog.d.ts +19 -0
  223. package/dist/packages/ui-web/src/dialog.test.d.ts +1 -0
  224. package/dist/packages/ui-web/src/drawer.d.ts +25 -0
  225. package/dist/packages/ui-web/src/drawer.test.d.ts +1 -0
  226. package/dist/packages/ui-web/src/dropdown-menu.d.ts +23 -0
  227. package/dist/packages/ui-web/src/dropdown-menu.test.d.ts +1 -0
  228. package/dist/packages/ui-web/src/form.d.ts +26 -0
  229. package/dist/packages/ui-web/src/form.test.d.ts +1 -0
  230. package/dist/packages/ui-web/src/hooks/use-theme.d.ts +51 -0
  231. package/dist/packages/ui-web/src/hooks/use-toast.d.ts +44 -0
  232. package/dist/packages/ui-web/src/hover-card.d.ts +8 -0
  233. package/dist/packages/ui-web/src/hover-card.test.d.ts +1 -0
  234. package/dist/packages/ui-web/src/index.d.ts +107 -0
  235. package/dist/packages/ui-web/src/input.d.ts +6 -0
  236. package/dist/packages/ui-web/src/input.test.d.ts +1 -0
  237. package/dist/packages/ui-web/src/label.d.ts +8 -0
  238. package/dist/packages/ui-web/src/label.test.d.ts +1 -0
  239. package/dist/packages/ui-web/src/lib/utils.d.ts +3 -0
  240. package/dist/packages/ui-web/src/menubar.d.ts +24 -0
  241. package/dist/packages/ui-web/src/menubar.test.d.ts +1 -0
  242. package/dist/packages/ui-web/src/navigation-menu.d.ts +15 -0
  243. package/dist/packages/ui-web/src/navigation-menu.test.d.ts +1 -0
  244. package/dist/packages/ui-web/src/pagination.d.ts +30 -0
  245. package/dist/packages/ui-web/src/pagination.test.d.ts +1 -0
  246. package/dist/packages/ui-web/src/popover.d.ts +9 -0
  247. package/dist/packages/ui-web/src/popover.test.d.ts +1 -0
  248. package/dist/packages/ui-web/src/progress.d.ts +6 -0
  249. package/dist/packages/ui-web/src/progress.test.d.ts +1 -0
  250. package/dist/packages/ui-web/src/radio-group.d.ts +10 -0
  251. package/dist/packages/ui-web/src/radio-group.test.d.ts +1 -0
  252. package/dist/packages/ui-web/src/resizable.d.ts +8 -0
  253. package/dist/packages/ui-web/src/resizable.test.d.ts +1 -0
  254. package/dist/packages/ui-web/src/scroll-area.d.ts +7 -0
  255. package/dist/packages/ui-web/src/scroll-area.test.d.ts +1 -0
  256. package/dist/packages/ui-web/src/scroll-to-top.d.ts +7 -0
  257. package/dist/packages/ui-web/src/scroll-to-top.test.d.ts +1 -0
  258. package/dist/packages/ui-web/src/search.d.ts +7 -0
  259. package/dist/packages/ui-web/src/search.test.d.ts +1 -0
  260. package/dist/packages/ui-web/src/select.d.ts +15 -0
  261. package/dist/packages/ui-web/src/select.test.d.ts +1 -0
  262. package/dist/packages/ui-web/src/separator.d.ts +6 -0
  263. package/dist/packages/ui-web/src/separator.test.d.ts +1 -0
  264. package/dist/packages/ui-web/src/setupTests.d.ts +0 -0
  265. package/dist/packages/ui-web/src/sheet.d.ts +28 -0
  266. package/dist/packages/ui-web/src/sheet.test.d.ts +1 -0
  267. package/dist/packages/ui-web/src/skeleton.d.ts +5 -0
  268. package/dist/packages/ui-web/src/skeleton.test.d.ts +1 -0
  269. package/dist/packages/ui-web/src/slider.d.ts +6 -0
  270. package/dist/packages/ui-web/src/slider.test.d.ts +1 -0
  271. package/dist/packages/ui-web/src/sonner.d.ts +7 -0
  272. package/dist/packages/ui-web/src/sonner.test.d.ts +1 -0
  273. package/dist/packages/ui-web/src/support-fab.d.ts +15 -0
  274. package/dist/packages/ui-web/src/support-fab.test.d.ts +1 -0
  275. package/dist/packages/ui-web/src/switch.d.ts +6 -0
  276. package/dist/packages/ui-web/src/switch.test.d.ts +1 -0
  277. package/dist/packages/ui-web/src/table-of-contents.d.ts +23 -0
  278. package/dist/packages/ui-web/src/table-of-contents.test.d.ts +1 -0
  279. package/dist/packages/ui-web/src/table.d.ts +12 -0
  280. package/dist/packages/ui-web/src/table.test.d.ts +1 -0
  281. package/dist/packages/ui-web/src/tabs.d.ts +9 -0
  282. package/dist/packages/ui-web/src/tabs.test.d.ts +1 -0
  283. package/dist/packages/ui-web/src/text.d.ts +12 -0
  284. package/dist/packages/ui-web/src/text.test.d.ts +1 -0
  285. package/dist/packages/ui-web/src/textarea.d.ts +6 -0
  286. package/dist/packages/ui-web/src/textarea.test.d.ts +1 -0
  287. package/dist/packages/ui-web/src/theme-provider.d.ts +4 -0
  288. package/dist/packages/ui-web/src/theme-toggle.d.ts +3 -0
  289. package/dist/packages/ui-web/src/theme-toggle.test.d.ts +1 -0
  290. package/dist/packages/ui-web/src/toast.d.ts +16 -0
  291. package/dist/packages/ui-web/src/toast.test.d.ts +1 -0
  292. package/dist/packages/ui-web/src/toaster.d.ts +2 -0
  293. package/dist/packages/ui-web/src/toggle-group.d.ts +13 -0
  294. package/dist/packages/ui-web/src/toggle-group.test.d.ts +1 -0
  295. package/dist/packages/ui-web/src/toggle.d.ts +8 -0
  296. package/dist/packages/ui-web/src/toggle.test.d.ts +1 -0
  297. package/dist/packages/ui-web/src/tooltip.d.ts +12 -0
  298. package/dist/pagination.cjs +2 -2
  299. package/dist/pagination.cjs.map +1 -1
  300. package/dist/pagination.d.ts +2 -94
  301. package/dist/pagination.mjs +63 -67
  302. package/dist/pagination.mjs.map +1 -1
  303. package/dist/popover.cjs +2 -2
  304. package/dist/popover.cjs.map +1 -1
  305. package/dist/popover.d.ts +2 -39
  306. package/dist/popover.mjs +17 -24
  307. package/dist/popover.mjs.map +1 -1
  308. package/dist/progress.cjs +2 -2
  309. package/dist/progress.cjs.map +1 -1
  310. package/dist/progress.d.ts +2 -11
  311. package/dist/progress.mjs +19 -23
  312. package/dist/progress.mjs.map +1 -1
  313. package/dist/radio-group.cjs +2 -2
  314. package/dist/radio-group.cjs.map +1 -1
  315. package/dist/radio-group.d.ts +2 -25
  316. package/dist/radio-group.mjs +25 -27
  317. package/dist/radio-group.mjs.map +1 -1
  318. package/dist/resizable.cjs +2 -2
  319. package/dist/resizable.cjs.map +1 -1
  320. package/dist/resizable.d.ts +2 -53
  321. package/dist/resizable.mjs +21 -34
  322. package/dist/resizable.mjs.map +1 -1
  323. package/dist/rolldown-runtime-CWhphoD1.mjs +23 -0
  324. package/dist/rolldown-runtime-mLOUI7ql.js +1 -0
  325. package/dist/scroll-area.cjs +2 -2
  326. package/dist/scroll-area.cjs.map +1 -1
  327. package/dist/scroll-area.d.ts +2 -22
  328. package/dist/scroll-area.mjs +31 -30
  329. package/dist/scroll-area.mjs.map +1 -1
  330. package/dist/scroll-to-top.cjs +2 -2
  331. package/dist/scroll-to-top.cjs.map +1 -1
  332. package/dist/scroll-to-top.d.ts +2 -37
  333. package/dist/scroll-to-top.mjs +72 -84
  334. package/dist/scroll-to-top.mjs.map +1 -1
  335. package/dist/search.cjs +2 -2
  336. package/dist/search.cjs.map +1 -1
  337. package/dist/search.d.ts +2 -26
  338. package/dist/search.mjs +54 -63
  339. package/dist/search.mjs.map +1 -1
  340. package/dist/select.cjs +2 -2
  341. package/dist/select.cjs.map +1 -1
  342. package/dist/select.d.ts +2 -87
  343. package/dist/select.mjs +70 -100
  344. package/dist/select.mjs.map +1 -1
  345. package/dist/separator.cjs +2 -2
  346. package/dist/separator.cjs.map +1 -1
  347. package/dist/separator.d.ts +2 -12
  348. package/dist/separator.mjs +17 -18
  349. package/dist/separator.mjs.map +1 -1
  350. package/dist/sheet.cjs +2 -2
  351. package/dist/sheet.cjs.map +1 -1
  352. package/dist/sheet.d.ts +2 -97
  353. package/dist/sheet.mjs +58 -64
  354. package/dist/sheet.mjs.map +1 -1
  355. package/dist/skeleton.cjs +2 -2
  356. package/dist/skeleton.cjs.map +1 -1
  357. package/dist/skeleton.d.ts +2 -11
  358. package/dist/skeleton.mjs +15 -8
  359. package/dist/skeleton.mjs.map +1 -1
  360. package/dist/slider.cjs +2 -2
  361. package/dist/slider.cjs.map +1 -1
  362. package/dist/slider.d.ts +2 -22
  363. package/dist/slider.mjs +19 -20
  364. package/dist/slider.mjs.map +1 -1
  365. package/dist/sonner.cjs +2 -2
  366. package/dist/sonner.cjs.map +1 -1
  367. package/dist/sonner.d.ts +2 -25
  368. package/dist/sonner.mjs +22 -24
  369. package/dist/sonner.mjs.map +1 -1
  370. package/dist/src/index.d.ts +2 -0
  371. package/dist/src/setupTests.d.ts +0 -0
  372. package/dist/src-D3IDWqE2.js +2 -0
  373. package/dist/src-D3IDWqE2.js.map +1 -0
  374. package/dist/src-N08I3kfW.mjs +23 -0
  375. package/dist/src-N08I3kfW.mjs.map +1 -0
  376. package/dist/support-fab.cjs +2 -2
  377. package/dist/support-fab.cjs.map +1 -1
  378. package/dist/support-fab.d.ts +2 -20
  379. package/dist/support-fab.mjs +82 -117
  380. package/dist/support-fab.mjs.map +1 -1
  381. package/dist/switch.cjs +2 -2
  382. package/dist/switch.cjs.map +1 -1
  383. package/dist/switch.d.ts +2 -18
  384. package/dist/switch.mjs +16 -27
  385. package/dist/switch.mjs.map +1 -1
  386. package/dist/table-of-contents.cjs +2 -2
  387. package/dist/table-of-contents.cjs.map +1 -1
  388. package/dist/table-of-contents.d.ts +2 -68
  389. package/dist/table-of-contents.mjs +161 -156
  390. package/dist/table-of-contents.mjs.map +1 -1
  391. package/dist/table.cjs +2 -2
  392. package/dist/table.cjs.map +1 -1
  393. package/dist/table.d.ts +2 -59
  394. package/dist/table.mjs +60 -58
  395. package/dist/table.mjs.map +1 -1
  396. package/dist/tabs.cjs +2 -2
  397. package/dist/tabs.cjs.map +1 -1
  398. package/dist/tabs.d.ts +2 -42
  399. package/dist/tabs.mjs +27 -46
  400. package/dist/tabs.mjs.map +1 -1
  401. package/dist/text.cjs +2 -2
  402. package/dist/text.cjs.map +1 -1
  403. package/dist/text.d.ts +2 -21
  404. package/dist/text.mjs +42 -42
  405. package/dist/text.mjs.map +1 -1
  406. package/dist/textarea.cjs +2 -2
  407. package/dist/textarea.cjs.map +1 -1
  408. package/dist/textarea.d.ts +2 -16
  409. package/dist/textarea.mjs +14 -18
  410. package/dist/textarea.mjs.map +1 -1
  411. package/dist/theme-provider.cjs +2 -2
  412. package/dist/theme-provider.cjs.map +1 -1
  413. package/dist/theme-provider.d.ts +2 -22
  414. package/dist/theme-provider.mjs +17 -8
  415. package/dist/theme-provider.mjs.map +1 -1
  416. package/dist/theme-toggle-B6QS2aTS.mjs +321 -0
  417. package/dist/theme-toggle-B6QS2aTS.mjs.map +1 -0
  418. package/dist/theme-toggle-CbtfA8aG.js +2 -0
  419. package/dist/theme-toggle-CbtfA8aG.js.map +1 -0
  420. package/dist/theme-toggle.cjs +1 -2
  421. package/dist/theme-toggle.d.ts +2 -23
  422. package/dist/theme-toggle.mjs +3 -9
  423. package/dist/toast.cjs +2 -2
  424. package/dist/toast.cjs.map +1 -1
  425. package/dist/toast.d.ts +2 -26
  426. package/dist/toast.mjs +53 -70
  427. package/dist/toast.mjs.map +1 -1
  428. package/dist/toaster-C-1djNvf.js +2 -0
  429. package/dist/toaster-C-1djNvf.js.map +1 -0
  430. package/dist/toaster-CEa33QUH.mjs +128 -0
  431. package/dist/toaster-CEa33QUH.mjs.map +1 -0
  432. package/dist/toaster.cjs +1 -2
  433. package/dist/toaster.d.ts +2 -9
  434. package/dist/toaster.mjs +3 -7
  435. package/dist/toggle-group.cjs +2 -2
  436. package/dist/toggle-group.cjs.map +1 -1
  437. package/dist/toggle-group.d.ts +2 -22
  438. package/dist/toggle-group.mjs +39 -37
  439. package/dist/toggle-group.mjs.map +1 -1
  440. package/dist/toggle.cjs +2 -2
  441. package/dist/toggle.cjs.map +1 -1
  442. package/dist/toggle.d.ts +2 -43
  443. package/dist/toggle.mjs +19 -12
  444. package/dist/toggle.mjs.map +1 -1
  445. package/dist/tooltip.cjs +2 -2
  446. package/dist/tooltip.cjs.map +1 -1
  447. package/dist/tooltip.d.ts +2 -48
  448. package/dist/tooltip.mjs +25 -29
  449. package/dist/tooltip.mjs.map +1 -1
  450. package/dist/utils-BsD1_fYL.mjs +12 -0
  451. package/dist/utils-BsD1_fYL.mjs.map +1 -0
  452. package/dist/utils-DU-Y_pvO.js +2 -0
  453. package/dist/utils-DU-Y_pvO.js.map +1 -0
  454. package/dist/vendor-3cr8xz0x.js +92 -0
  455. package/dist/vendor-3cr8xz0x.js.map +1 -0
  456. package/dist/vendor-ChPUVHXi.mjs +28604 -0
  457. package/dist/vendor-ChPUVHXi.mjs.map +1 -0
  458. package/package.json +37 -40
  459. package/dist/index.cjs.map +0 -1
  460. package/dist/index.mjs.map +0 -1
  461. package/dist/theme-toggle-BNtYv2Jv.mjs +0 -177
  462. package/dist/theme-toggle-BNtYv2Jv.mjs.map +0 -1
  463. package/dist/theme-toggle-DK_OhDRf.js +0 -2
  464. package/dist/theme-toggle-DK_OhDRf.js.map +0 -1
  465. package/dist/theme-toggle.cjs.map +0 -1
  466. package/dist/theme-toggle.mjs.map +0 -1
  467. package/dist/toaster-Cj_SryBI.mjs +0 -119
  468. package/dist/toaster-Cj_SryBI.mjs.map +0 -1
  469. package/dist/toaster-Q_hzVonm.js +0 -2
  470. package/dist/toaster-Q_hzVonm.js.map +0 -1
  471. package/dist/toaster.cjs.map +0 -1
  472. package/dist/toaster.mjs.map +0 -1
  473. package/dist/toggle-DPMTgo47.mjs +0 -25
  474. package/dist/toggle-DPMTgo47.mjs.map +0 -1
  475. package/dist/toggle-_F_yB_Dj.js +0 -2
  476. package/dist/toggle-_F_yB_Dj.js.map +0 -1
  477. package/dist/utils-Bgpn0CK0.mjs +0 -12
  478. package/dist/utils-Bgpn0CK0.mjs.map +0 -1
  479. package/dist/utils-CBWPs0D7.js +0 -2
  480. package/dist/utils-CBWPs0D7.js.map +0 -1
  481. package/dist/vendor-BQwS7aJt.mjs +0 -25217
  482. package/dist/vendor-BQwS7aJt.mjs.map +0 -1
  483. package/dist/vendor-B_07FHqh.js +0 -68
  484. package/dist/vendor-B_07FHqh.js.map +0 -1
@@ -1,22 +1,2 @@
1
- import * as React_2 from 'react';
2
- import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
3
-
4
- export declare const ScrollArea: React_2.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & ScrollAreaProps & React_2.RefAttributes<HTMLDivElement>>;
5
-
6
- export declare interface ScrollAreaProps {
7
- children?: React_2.ReactNode;
8
- className?: string;
9
- type?: 'auto' | 'always' | 'scroll' | 'hover';
10
- scrollHideDelay?: number;
11
- dir?: 'ltr' | 'rtl';
12
- }
13
-
14
- export declare const ScrollBar: React_2.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & ScrollBarProps & React_2.RefAttributes<HTMLDivElement>>;
15
-
16
- export declare interface ScrollBarProps {
17
- className?: string;
18
- orientation?: 'horizontal' | 'vertical';
19
- forceMount?: true;
20
- }
21
-
22
- export { }
1
+ export * from './packages/ui-web/src/scroll-area'
2
+ export {}
@@ -1,31 +1,32 @@
1
1
  "use client";
2
- import { j as r, aK as s, aL as i, aM as m, aN as c, aO as p } from "./vendor-BQwS7aJt.mjs";
3
- import * as t from "react";
4
- import { c as d } from "./utils-Bgpn0CK0.mjs";
5
- const f = t.forwardRef(({ className: l, children: a, ...e }, o) => /* @__PURE__ */ r.jsxs(s, { ref: o, className: d("relative overflow-hidden", l), ...e, children: [
6
- /* @__PURE__ */ r.jsx(i, { className: "h-full w-full rounded-[inherit]", children: a }),
7
- /* @__PURE__ */ r.jsx(n, {}),
8
- /* @__PURE__ */ r.jsx(m, {})
9
- ] }));
10
- f.displayName = s?.displayName || "ScrollArea";
11
- const n = t.forwardRef(({ className: l, orientation: a = "vertical", ...e }, o) => /* @__PURE__ */ r.jsx(
12
- c,
13
- {
14
- ref: o,
15
- orientation: a,
16
- className: d(
17
- "flex touch-none transition-colors select-none",
18
- a === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
19
- a === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
20
- l
21
- ),
22
- ...e,
23
- children: /* @__PURE__ */ r.jsx(p, { className: "bg-border relative flex-1 rounded-full" })
24
- }
25
- ));
26
- n.displayName = c?.displayName || "ScrollBar";
27
- export {
28
- f as ScrollArea,
29
- n as ScrollBar
30
- };
31
- //# sourceMappingURL=scroll-area.mjs.map
2
+ "use client";
3
+ import { G as e, H as t, K as n, U as r, W as i, vr as a } from "./vendor-ChPUVHXi.mjs";
4
+ import { t as o } from "./utils-BsD1_fYL.mjs";
5
+ import * as s from "react";
6
+ //#region packages/ui-web/src/scroll-area.tsx
7
+ var c = a(), l = s.forwardRef(({ className: e, children: i, ...a }, s) => /* @__PURE__ */ (0, c.jsxs)(r, {
8
+ ref: s,
9
+ className: o("relative overflow-hidden", e),
10
+ ...a,
11
+ children: [
12
+ /* @__PURE__ */ (0, c.jsx)(n, {
13
+ className: "h-full w-full rounded-[inherit]",
14
+ children: i
15
+ }),
16
+ /* @__PURE__ */ (0, c.jsx)(u, {}),
17
+ /* @__PURE__ */ (0, c.jsx)(t, {})
18
+ ]
19
+ }));
20
+ l.displayName = r?.displayName || "ScrollArea";
21
+ var u = s.forwardRef(({ className: t, orientation: n = "vertical", ...r }, a) => /* @__PURE__ */ (0, c.jsx)(i, {
22
+ ref: a,
23
+ orientation: n,
24
+ className: o("flex touch-none transition-colors select-none", n === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]", n === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]", t),
25
+ ...r,
26
+ children: /* @__PURE__ */ (0, c.jsx)(e, { className: "bg-border relative flex-1 rounded-full" })
27
+ }));
28
+ u.displayName = i?.displayName || "ScrollBar";
29
+ //#endregion
30
+ export { l as ScrollArea, u as ScrollBar };
31
+
32
+ //# sourceMappingURL=scroll-area.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-area.mjs","sources":["../packages/ui-web/src/scroll-area.tsx"],"sourcesContent":["'use client';\n\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { ScrollAreaBaseProps, ScrollBarBaseProps } from '@gv-tech/ui-core';\nimport { cn } from './lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & ScrollAreaBaseProps\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">{children}</ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root?.displayName || 'ScrollArea';\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar> & ScrollBarBaseProps\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none transition-colors select-none',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"bg-border relative flex-1 rounded-full\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar?.displayName || 'ScrollBar';\n\nexport { ScrollArea, ScrollBar };\nexport type { ScrollAreaBaseProps as ScrollAreaProps, ScrollBarBaseProps as ScrollBarProps };\n"],"names":["ScrollArea","React","className","children","props","ref","ScrollAreaPrimitive.Root","cn","jsx","ScrollAreaPrimitive.Viewport","ScrollBar","ScrollAreaPrimitive.Corner","orientation","ScrollAreaPrimitive.ScrollAreaScrollbar","ScrollAreaPrimitive.ScrollAreaThumb"],"mappings":";;;;AAQA,MAAMA,IAAaC,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,6BACnCC,GAAA,EAAyB,KAAAD,GAAU,WAAWE,EAAG,4BAA4BL,CAAS,GAAI,GAAGE,GAC5F,UAAA;AAAA,EAAAI,gBAAAA,EAAAA,IAACC,GAAA,EAA6B,WAAU,mCAAmC,UAAAN,EAAA,CAAS;AAAA,wBACnFO,GAAA,EAAU;AAAA,EACXF,gBAAAA,EAAAA,IAACG,GAAA,CAAA,CAA2B;AAAA,GAC9B,CACD;AACDX,EAAW,cAAcM,GAA0B,eAAe;AAElE,MAAMI,IAAYT,EAAM,WAGtB,CAAC,EAAE,WAAAC,GAAW,aAAAU,IAAc,YAAY,GAAGR,KAASC,MACpDG,gBAAAA,EAAAA;AAAAA,EAACK;AAAAA,EAAA;AAAA,IACC,KAAAR;AAAA,IACA,aAAAO;AAAA,IACA,WAAWL;AAAA,MACT;AAAA,MACAK,MAAgB,cAAc;AAAA,MAC9BA,MAAgB,gBAAgB;AAAA,MAChCV;AAAA,IAAA;AAAA,IAED,GAAGE;AAAA,IAEJ,UAAAI,gBAAAA,EAAAA,IAACM,GAAA,EAAoC,WAAU,yCAAA,CAAyC;AAAA,EAAA;AAC1F,CACD;AACDJ,EAAU,cAAcG,GAAyC,eAAe;"}
1
+ {"version":3,"file":"scroll-area.mjs","names":[],"sources":["../packages/ui-web/src/scroll-area.tsx"],"sourcesContent":["'use client';\n\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { ScrollAreaBaseProps, ScrollBarBaseProps } from '@gv-tech/ui-core';\nimport { cn } from './lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> & ScrollAreaBaseProps\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">{children}</ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root?.displayName || 'ScrollArea';\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar> & ScrollBarBaseProps\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none transition-colors select-none',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"bg-border relative flex-1 rounded-full\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar?.displayName || 'ScrollBar';\n\nexport { ScrollArea, ScrollBar };\nexport type { ScrollAreaBaseProps as ScrollAreaProps, ScrollBarBaseProps as ScrollBarProps };\n"],"mappings":";;;;;;aAQM,IAAa,EAAM,YAGtB,EAAE,cAAW,aAAU,GAAG,KAAS,MACpC,iBAAA,GAAA,EAAA,MAAC,GAAD;CAA+B;CAAK,WAAW,EAAG,4BAA4B,CAAS;CAAG,GAAI;WAA9F;EACE,iBAAA,GAAA,EAAA,KAAC,GAAD;GAA8B,WAAU;GAAmC;EAAuC,CAAA;EAClH,iBAAA,GAAA,EAAA,KAAC,GAAD,CAAY,CAAA;EACZ,iBAAA,GAAA,EAAA,KAAC,GAAD,CAA6B,CAAA;CACL;EAC3B;AACD,EAAW,cAAA,GAAwC,eAAe;AAElE,IAAM,IAAY,EAAM,YAGrB,EAAE,cAAW,iBAAc,YAAY,GAAG,KAAS,MACpD,iBAAA,GAAA,EAAA,KAAC,GAAD;CACO;CACQ;CACb,WAAW,EACT,iDACA,MAAgB,cAAc,sDAC9B,MAAgB,gBAAgB,wDAChC,CACF;CACA,GAAI;WAEJ,iBAAA,GAAA,EAAA,KAAC,GAAD,EAAqC,WAAU,yCAA0C,CAAA;AAClD,CAAA,CAC1C;AACD,EAAU,cAAA,GAAuD,eAAe"}
@@ -1,2 +1,2 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./vendor-B_07FHqh.js"),E=require("react"),S=require("./button.cjs"),R=require("./utils-CBWPs0D7.js");function O(e){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(s,n,t.get?t:{enumerable:!0,get:()=>e[n]})}}return s.default=e,Object.freeze(s)}const l=O(E),T=e=>typeof e.scrollY=="number",m=e=>T(e)?e.scrollY:e.scrollTop;function N({threshold:e=240,exitDuration:s=450,behavior:n="smooth",scrollTarget:t,className:x,label:b="Scroll to top",onClick:v,tabIndex:y,type:g,...h}){const[_,u]=l.useState(!1),[c,f]=l.useState(!1),d=l.useRef(null);l.useEffect(()=>{const o=t===void 0?window:t;if(!o){u(!1);return}const r=()=>{const p=m(o);if(c){p<=e&&(u(!1),f(!1));return}u(p>e)};return r(),o.addEventListener("scroll",r,{passive:!0}),()=>{o.removeEventListener("scroll",r)}},[c,t,e]),l.useEffect(()=>()=>{d.current!==null&&window.clearTimeout(d.current)},[]);const a=c?"exiting":_?"visible":"hidden",w=o=>{if(v?.(o),o.defaultPrevented||c)return;const r=t===void 0?window:t;if(!r)return;f(!0);const p=Math.max(0,s);d.current=window.setTimeout(()=>{r.scrollTo({top:0,behavior:n});const j=m(r);u(!1),j<=e&&f(!1)},p)};return i.jsxRuntimeExports.jsxs(S.Button,{"aria-label":b,"data-state":a,type:g??"button",variant:"default",size:"icon",tabIndex:a==="hidden"?-1:y,className:R.cn("group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none","before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80","hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95",a==="visible"&&"translate-y-0 scale-100 opacity-100",a==="hidden"&&"pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none",a==="exiting"&&"pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none",x),onClick:w,...h,children:[i.jsxRuntimeExports.jsx("span",{className:"bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100"}),i.jsxRuntimeExports.jsx("span",{className:"border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100"}),i.jsxRuntimeExports.jsx(i.ArrowUp,{className:"relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]"}),i.jsxRuntimeExports.jsx("span",{className:"sr-only",children:b})]})}exports.ScrollToTop=N;
2
- //# sourceMappingURL=scroll-to-top.cjs.map
1
+ "use client";"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-mLOUI7ql.js"),t=require("./vendor-3cr8xz0x.js"),n=require("./utils-DU-Y_pvO.js"),r=require("./button.cjs");let i=require("react");i=e.r(i);var a=t.vr(),o=e=>typeof e.scrollY==`number`,s=e=>o(e)?e.scrollY:e.scrollTop;function c({threshold:e=240,exitDuration:o=450,behavior:c=`smooth`,scrollTarget:l,className:u,label:d=`Scroll to top`,onClick:f,tabIndex:p,type:m,...h}){let[g,_]=i.useState(!1),[v,y]=i.useState(!1),b=i.useRef(null);i.useEffect(()=>{let t=l===void 0?window:l;if(!t){_(!1);return}let n=()=>{let n=s(t);if(v){n<=e&&(_(!1),y(!1));return}_(n>e)};return n(),t.addEventListener(`scroll`,n,{passive:!0}),()=>{t.removeEventListener(`scroll`,n)}},[v,l,e]),i.useEffect(()=>()=>{b.current!==null&&window.clearTimeout(b.current)},[]);let x=v?`exiting`:g?`visible`:`hidden`;return(0,a.jsxs)(r.Button,{"aria-label":d,"data-state":x,type:m??`button`,variant:`default`,size:`icon`,tabIndex:x===`hidden`?-1:p,className:n.t(`group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none`,`before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80`,`hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95`,x===`visible`&&`translate-y-0 scale-100 opacity-100`,x===`hidden`&&`pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none`,x===`exiting`&&`pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none`,u),onClick:t=>{if(f?.(t),t.defaultPrevented||v)return;let n=l===void 0?window:l;if(!n)return;y(!0);let r=Math.max(0,o);b.current=window.setTimeout(()=>{n.scrollTo({top:0,behavior:c});let t=s(n);_(!1),t<=e&&y(!1)},r)},...h,children:[(0,a.jsx)(`span`,{className:`bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100`}),(0,a.jsx)(`span`,{className:`border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100`}),(0,a.jsx)(t.sr,{className:`relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]`}),(0,a.jsx)(`span`,{className:`sr-only`,children:d})]})}exports.ScrollToTop=c;
2
+ //# sourceMappingURL=scroll-to-top.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-to-top.cjs","sources":["../packages/ui-web/src/scroll-to-top.tsx"],"sourcesContent":["'use client';\n\nimport { ScrollToTopBaseProps } from '@gv-tech/ui-core';\nimport { ArrowUp } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { cn } from './lib/utils';\n\nexport interface ScrollToTopProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {\n /** Optional custom scroll container; defaults to window when undefined. */\n scrollTarget?: Window | HTMLElement | null;\n}\n\ntype ScrollTarget = Window | HTMLElement | null;\n\nconst isWindowTarget = (target: Exclude<ScrollTarget, null>): target is Window =>\n typeof (target as Window).scrollY === 'number';\n\nconst getScrollOffset = (target: Exclude<ScrollTarget, null>) =>\n isWindowTarget(target) ? target.scrollY : target.scrollTop;\n\nexport function ScrollToTop({\n threshold = 240,\n exitDuration = 450,\n behavior = 'smooth',\n scrollTarget,\n className,\n label = 'Scroll to top',\n onClick,\n tabIndex,\n type,\n ...props\n}: ScrollToTopProps) {\n const [isVisible, setIsVisible] = React.useState(false);\n const [isExiting, setIsExiting] = React.useState(false);\n const timeoutRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n const target = scrollTarget === undefined ? window : scrollTarget;\n\n if (!target) {\n setIsVisible(false);\n return;\n }\n\n const updateVisibility = () => {\n const offset = getScrollOffset(target);\n\n if (isExiting) {\n // Keep the control dismissed during the return-to-top animation,\n // then release once we are back under the visibility threshold.\n if (offset <= threshold) {\n setIsVisible(false);\n setIsExiting(false);\n }\n return;\n }\n\n setIsVisible(offset > threshold);\n };\n\n updateVisibility();\n target.addEventListener('scroll', updateVisibility, { passive: true });\n\n return () => {\n target.removeEventListener('scroll', updateVisibility);\n };\n }, [isExiting, scrollTarget, threshold]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const state = isExiting ? 'exiting' : isVisible ? 'visible' : 'hidden';\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isExiting) {\n return;\n }\n\n const target = scrollTarget === undefined ? window : scrollTarget;\n if (!target) {\n return;\n }\n\n setIsExiting(true);\n\n const timeout = Math.max(0, exitDuration);\n timeoutRef.current = window.setTimeout(() => {\n target.scrollTo({ top: 0, behavior });\n\n const offset = getScrollOffset(target);\n setIsVisible(false);\n\n if (offset <= threshold) {\n setIsExiting(false);\n }\n }, timeout);\n };\n\n return (\n <Button\n aria-label={label}\n data-state={state}\n type={type ?? 'button'}\n variant=\"default\"\n size=\"icon\"\n tabIndex={state === 'hidden' ? -1 : tabIndex}\n className={cn(\n 'group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n 'before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80',\n 'hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95',\n state === 'visible' && 'translate-y-0 scale-100 opacity-100',\n state === 'hidden' &&\n 'pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none',\n state === 'exiting' &&\n 'pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <span className=\"bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100\" />\n <span className=\"border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100\" />\n <ArrowUp className=\"relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]\" />\n <span className=\"sr-only\">{label}</span>\n </Button>\n );\n}\n"],"names":["isWindowTarget","target","getScrollOffset","ScrollToTop","threshold","exitDuration","behavior","scrollTarget","className","label","onClick","tabIndex","type","props","isVisible","setIsVisible","React","isExiting","setIsExiting","timeoutRef","updateVisibility","offset","state","handleClick","event","timeout","jsxs","Button","cn","jsx","ArrowUp"],"mappings":"6eAeMA,EAAkBC,GACtB,OAAQA,EAAkB,SAAY,SAElCC,EAAmBD,GACvBD,EAAeC,CAAM,EAAIA,EAAO,QAAUA,EAAO,UAE5C,SAASE,EAAY,CAC1B,UAAAC,EAAY,IACZ,aAAAC,EAAe,IACf,SAAAC,EAAW,SACX,aAAAC,EACA,UAAAC,EACA,MAAAC,EAAQ,gBACR,QAAAC,EACA,SAAAC,EACA,KAAAC,EACA,GAAGC,CACL,EAAqB,CACnB,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAM,SAAS,EAAK,EAChD,CAACC,EAAWC,CAAY,EAAIF,EAAM,SAAS,EAAK,EAChDG,EAAaH,EAAM,OAAsB,IAAI,EAEnDA,EAAM,UAAU,IAAM,CACpB,MAAMf,EAASM,IAAiB,OAAY,OAASA,EAErD,GAAI,CAACN,EAAQ,CACXc,EAAa,EAAK,EAClB,MACF,CAEA,MAAMK,EAAmB,IAAM,CAC7B,MAAMC,EAASnB,EAAgBD,CAAM,EAErC,GAAIgB,EAAW,CAGTI,GAAUjB,IACZW,EAAa,EAAK,EAClBG,EAAa,EAAK,GAEpB,MACF,CAEAH,EAAaM,EAASjB,CAAS,CACjC,EAEA,OAAAgB,EAAA,EACAnB,EAAO,iBAAiB,SAAUmB,EAAkB,CAAE,QAAS,GAAM,EAE9D,IAAM,CACXnB,EAAO,oBAAoB,SAAUmB,CAAgB,CACvD,CACF,EAAG,CAACH,EAAWV,EAAcH,CAAS,CAAC,EAEvCY,EAAM,UAAU,IACP,IAAM,CACPG,EAAW,UAAY,MACzB,OAAO,aAAaA,EAAW,OAAO,CAE1C,EACC,CAAA,CAAE,EAEL,MAAMG,EAAQL,EAAY,UAAYH,EAAY,UAAY,SAExDS,EAAeC,GAA+C,CAElE,GADAd,IAAUc,CAAK,EACXA,EAAM,kBAAoBP,EAC5B,OAGF,MAAMhB,EAASM,IAAiB,OAAY,OAASA,EACrD,GAAI,CAACN,EACH,OAGFiB,EAAa,EAAI,EAEjB,MAAMO,EAAU,KAAK,IAAI,EAAGpB,CAAY,EACxCc,EAAW,QAAU,OAAO,WAAW,IAAM,CAC3ClB,EAAO,SAAS,CAAE,IAAK,EAAG,SAAAK,EAAU,EAEpC,MAAMe,EAASnB,EAAgBD,CAAM,EACrCc,EAAa,EAAK,EAEdM,GAAUjB,GACZc,EAAa,EAAK,CAEtB,EAAGO,CAAO,CACZ,EAEA,OACEC,EAAAA,kBAAAA,KAACC,EAAAA,OAAA,CACC,aAAYlB,EACZ,aAAYa,EACZ,KAAMV,GAAQ,SACd,QAAQ,UACR,KAAK,OACL,SAAUU,IAAU,SAAW,GAAKX,EACpC,UAAWiB,EAAAA,GACT,2WACA,oKACA,sIACAN,IAAU,WAAa,sCACvBA,IAAU,UACR,4FACFA,IAAU,WACR,4FACFd,CAAA,EAEF,QAASe,EACR,GAAGV,EAEJ,SAAA,CAAAgB,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,oJAAA,CAAqJ,EACrKA,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,8JAAA,CAA+J,EAC/KA,EAAAA,kBAAAA,IAACC,EAAAA,QAAA,CAAQ,UAAU,+DAAA,CAAgE,EACnFD,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,UAAW,SAAApB,CAAA,CAAM,CAAA,CAAA,CAAA,CAGvC"}
1
+ {"version":3,"file":"scroll-to-top.cjs","names":[],"sources":["../packages/ui-web/src/scroll-to-top.tsx"],"sourcesContent":["'use client';\n\nimport { ScrollToTopBaseProps } from '@gv-tech/ui-core';\nimport { ArrowUp } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { cn } from './lib/utils';\n\nexport interface ScrollToTopProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {\n /** Optional custom scroll container; defaults to window when undefined. */\n scrollTarget?: Window | HTMLElement | null;\n}\n\ntype ScrollTarget = Window | HTMLElement | null;\n\nconst isWindowTarget = (target: Exclude<ScrollTarget, null>): target is Window =>\n typeof (target as Window).scrollY === 'number';\n\nconst getScrollOffset = (target: Exclude<ScrollTarget, null>) =>\n isWindowTarget(target) ? target.scrollY : target.scrollTop;\n\nexport function ScrollToTop({\n threshold = 240,\n exitDuration = 450,\n behavior = 'smooth',\n scrollTarget,\n className,\n label = 'Scroll to top',\n onClick,\n tabIndex,\n type,\n ...props\n}: ScrollToTopProps) {\n const [isVisible, setIsVisible] = React.useState(false);\n const [isExiting, setIsExiting] = React.useState(false);\n const timeoutRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n const target = scrollTarget === undefined ? window : scrollTarget;\n\n if (!target) {\n setIsVisible(false);\n return;\n }\n\n const updateVisibility = () => {\n const offset = getScrollOffset(target);\n\n if (isExiting) {\n // Keep the control dismissed during the return-to-top animation,\n // then release once we are back under the visibility threshold.\n if (offset <= threshold) {\n setIsVisible(false);\n setIsExiting(false);\n }\n return;\n }\n\n setIsVisible(offset > threshold);\n };\n\n updateVisibility();\n target.addEventListener('scroll', updateVisibility, { passive: true });\n\n return () => {\n target.removeEventListener('scroll', updateVisibility);\n };\n }, [isExiting, scrollTarget, threshold]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const state = isExiting ? 'exiting' : isVisible ? 'visible' : 'hidden';\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isExiting) {\n return;\n }\n\n const target = scrollTarget === undefined ? window : scrollTarget;\n if (!target) {\n return;\n }\n\n setIsExiting(true);\n\n const timeout = Math.max(0, exitDuration);\n timeoutRef.current = window.setTimeout(() => {\n target.scrollTo({ top: 0, behavior });\n\n const offset = getScrollOffset(target);\n setIsVisible(false);\n\n if (offset <= threshold) {\n setIsExiting(false);\n }\n }, timeout);\n };\n\n return (\n <Button\n aria-label={label}\n data-state={state}\n type={type ?? 'button'}\n variant=\"default\"\n size=\"icon\"\n tabIndex={state === 'hidden' ? -1 : tabIndex}\n className={cn(\n 'group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n 'before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80',\n 'hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95',\n state === 'visible' && 'translate-y-0 scale-100 opacity-100',\n state === 'hidden' &&\n 'pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none',\n state === 'exiting' &&\n 'pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <span className=\"bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100\" />\n <span className=\"border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100\" />\n <ArrowUp className=\"relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]\" />\n <span className=\"sr-only\">{label}</span>\n </Button>\n );\n}\n"],"mappings":"yRAeM,EAAkB,GACtB,OAAQ,EAAkB,SAAY,SAElC,EAAmB,GACvB,EAAe,CAAM,EAAI,EAAO,QAAU,EAAO,UAEnD,SAAgB,EAAY,CAC1B,YAAY,IACZ,eAAe,IACf,WAAW,SACX,eACA,YACA,QAAQ,gBACR,UACA,WACA,OACA,GAAG,GACgB,CACnB,GAAM,CAAC,EAAW,GAAgB,EAAM,SAAS,EAAK,EAChD,CAAC,EAAW,GAAgB,EAAM,SAAS,EAAK,EAChD,EAAa,EAAM,OAAsB,IAAI,EAEnD,EAAM,cAAgB,CACpB,IAAM,EAAS,IAAiB,IAAA,GAAY,OAAS,EAErD,GAAI,CAAC,EAAQ,CACX,EAAa,EAAK,EAClB,MACF,CAEA,IAAM,MAAyB,CAC7B,IAAM,EAAS,EAAgB,CAAM,EAErC,GAAI,EAAW,CAGT,GAAU,IACZ,EAAa,EAAK,EAClB,EAAa,EAAK,GAEpB,MACF,CAEA,EAAa,EAAS,CAAS,CACjC,EAKA,OAHA,EAAiB,EACjB,EAAO,iBAAiB,SAAU,EAAkB,CAAE,QAAS,EAAK,CAAC,MAExD,CACX,EAAO,oBAAoB,SAAU,CAAgB,CACvD,CACF,EAAG,CAAC,EAAW,EAAc,CAAS,CAAC,EAEvC,EAAM,kBACS,CACP,EAAW,UAAY,MACzB,OAAO,aAAa,EAAW,OAAO,CAE1C,EACC,CAAC,CAAC,EAEL,IAAM,EAAQ,EAAY,UAAY,EAAY,UAAY,SA4B9D,OACE,EAAA,EAAA,MAAC,EAAA,OAAD,CACE,aAAY,EACZ,aAAY,EACZ,KAAM,GAAQ,SACd,QAAQ,UACR,KAAK,OACL,SAAU,IAAU,SAAW,GAAK,EACpC,UAAW,EAAA,EACT,2WACA,oKACA,sIACA,IAAU,WAAa,sCACvB,IAAU,UACR,4FACF,IAAU,WACR,4FACF,CACF,EACA,QA7CiB,GAA+C,CAElE,GADA,IAAU,CAAK,EACX,EAAM,kBAAoB,EAC5B,OAGF,IAAM,EAAS,IAAiB,IAAA,GAAY,OAAS,EACrD,GAAI,CAAC,EACH,OAGF,EAAa,EAAI,EAEjB,IAAM,EAAU,KAAK,IAAI,EAAG,CAAY,EACxC,EAAW,QAAU,OAAO,eAAiB,CAC3C,EAAO,SAAS,CAAE,IAAK,EAAG,UAAS,CAAC,EAEpC,IAAM,EAAS,EAAgB,CAAM,EACrC,EAAa,EAAK,EAEd,GAAU,GACZ,EAAa,EAAK,CAEtB,EAAG,CAAO,CACZ,EAsBI,GAAI,WAnBN,EAqBE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,oJAAsJ,CAAA,GACtK,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,8JAAgK,CAAA,GAChL,EAAA,EAAA,KAAC,EAAA,GAAD,CAAS,UAAU,+DAAiE,CAAA,GACpF,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,mBAAW,CAAY,CAAA,CACjC,GAEZ"}
@@ -1,37 +1,2 @@
1
- import { JSX } from 'react/jsx-runtime';
2
- import * as React_2 from 'react';
3
-
4
- export declare function ScrollToTop({ threshold, exitDuration, behavior, scrollTarget, className, label, onClick, tabIndex, type, ...props }: ScrollToTopProps): JSX.Element;
5
-
6
- declare interface ScrollToTopBaseProps {
7
- /**
8
- * Number of pixels that must be scrolled before the control appears.
9
- *
10
- * @default 240
11
- */
12
- threshold?: number;
13
- /**
14
- * Delay in milliseconds before the page scroll-to-top is triggered,
15
- * allowing the exit animation to complete first.
16
- *
17
- * @default 450
18
- */
19
- exitDuration?: number;
20
- /**
21
- * Scroll behavior used when returning to the top.
22
- *
23
- * @default 'smooth'
24
- */
25
- behavior?: ScrollBehavior;
26
- /** Optional className for custom positioning and styling. */
27
- className?: string;
28
- /** Accessible label for the control. */
29
- label?: string;
30
- }
31
-
32
- export declare interface ScrollToTopProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {
33
- /** Optional custom scroll container; defaults to window when undefined. */
34
- scrollTarget?: Window | HTMLElement | null;
35
- }
36
-
37
- export { }
1
+ export * from './packages/ui-web/src/scroll-to-top'
2
+ export {}
@@ -1,86 +1,74 @@
1
1
  "use client";
2
- import { j as n, bg as E } from "./vendor-BQwS7aJt.mjs";
3
- import * as s from "react";
4
- import { Button as N } from "./button.mjs";
5
- import { c as S } from "./utils-Bgpn0CK0.mjs";
6
- const R = (e) => typeof e.scrollY == "number", d = (e) => R(e) ? e.scrollY : e.scrollTop;
7
- function V({
8
- threshold: e = 240,
9
- exitDuration: m = 450,
10
- behavior: b = "smooth",
11
- scrollTarget: i,
12
- className: v,
13
- label: p = "Scroll to top",
14
- onClick: x,
15
- tabIndex: y,
16
- type: g,
17
- ...h
18
- }) {
19
- const [w, a] = s.useState(!1), [l, u] = s.useState(!1), f = s.useRef(null);
20
- s.useEffect(() => {
21
- const t = i === void 0 ? window : i;
22
- if (!t) {
23
- a(!1);
24
- return;
25
- }
26
- const o = () => {
27
- const c = d(t);
28
- if (l) {
29
- c <= e && (a(!1), u(!1));
30
- return;
31
- }
32
- a(c > e);
33
- };
34
- return o(), t.addEventListener("scroll", o, { passive: !0 }), () => {
35
- t.removeEventListener("scroll", o);
36
- };
37
- }, [l, i, e]), s.useEffect(() => () => {
38
- f.current !== null && window.clearTimeout(f.current);
39
- }, []);
40
- const r = l ? "exiting" : w ? "visible" : "hidden", _ = (t) => {
41
- if (x?.(t), t.defaultPrevented || l)
42
- return;
43
- const o = i === void 0 ? window : i;
44
- if (!o)
45
- return;
46
- u(!0);
47
- const c = Math.max(0, m);
48
- f.current = window.setTimeout(() => {
49
- o.scrollTo({ top: 0, behavior: b });
50
- const j = d(o);
51
- a(!1), j <= e && u(!1);
52
- }, c);
53
- };
54
- return /* @__PURE__ */ n.jsxs(
55
- N,
56
- {
57
- "aria-label": p,
58
- "data-state": r,
59
- type: g ?? "button",
60
- variant: "default",
61
- size: "icon",
62
- tabIndex: r === "hidden" ? -1 : y,
63
- className: S(
64
- "group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",
65
- "before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80",
66
- "hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95",
67
- r === "visible" && "translate-y-0 scale-100 opacity-100",
68
- r === "hidden" && "pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none",
69
- r === "exiting" && "pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none",
70
- v
71
- ),
72
- onClick: _,
73
- ...h,
74
- children: [
75
- /* @__PURE__ */ n.jsx("span", { className: "bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100" }),
76
- /* @__PURE__ */ n.jsx("span", { className: "border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100" }),
77
- /* @__PURE__ */ n.jsx(E, { className: "relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]" }),
78
- /* @__PURE__ */ n.jsx("span", { className: "sr-only", children: p })
79
- ]
80
- }
81
- );
2
+ "use client";
3
+ import { sr as e, vr as t } from "./vendor-ChPUVHXi.mjs";
4
+ import { t as n } from "./utils-BsD1_fYL.mjs";
5
+ import { Button as r } from "./button.mjs";
6
+ import * as i from "react";
7
+ //#region packages/ui-web/src/scroll-to-top.tsx
8
+ var a = t(), o = (e) => typeof e.scrollY == "number", s = (e) => o(e) ? e.scrollY : e.scrollTop;
9
+ function c({ threshold: t = 240, exitDuration: o = 450, behavior: c = "smooth", scrollTarget: l, className: u, label: d = "Scroll to top", onClick: f, tabIndex: p, type: m, ...h }) {
10
+ let [g, _] = i.useState(!1), [v, y] = i.useState(!1), b = i.useRef(null);
11
+ i.useEffect(() => {
12
+ let e = l === void 0 ? window : l;
13
+ if (!e) {
14
+ _(!1);
15
+ return;
16
+ }
17
+ let n = () => {
18
+ let n = s(e);
19
+ if (v) {
20
+ n <= t && (_(!1), y(!1));
21
+ return;
22
+ }
23
+ _(n > t);
24
+ };
25
+ return n(), e.addEventListener("scroll", n, { passive: !0 }), () => {
26
+ e.removeEventListener("scroll", n);
27
+ };
28
+ }, [
29
+ v,
30
+ l,
31
+ t
32
+ ]), i.useEffect(() => () => {
33
+ b.current !== null && window.clearTimeout(b.current);
34
+ }, []);
35
+ let x = v ? "exiting" : g ? "visible" : "hidden";
36
+ return /* @__PURE__ */ (0, a.jsxs)(r, {
37
+ "aria-label": d,
38
+ "data-state": x,
39
+ type: m ?? "button",
40
+ variant: "default",
41
+ size: "icon",
42
+ tabIndex: x === "hidden" ? -1 : p,
43
+ className: n("group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none", "before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80", "hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95", x === "visible" && "translate-y-0 scale-100 opacity-100", x === "hidden" && "pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none", x === "exiting" && "pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none", u),
44
+ onClick: (e) => {
45
+ if (f?.(e), e.defaultPrevented || v) return;
46
+ let n = l === void 0 ? window : l;
47
+ if (!n) return;
48
+ y(!0);
49
+ let r = Math.max(0, o);
50
+ b.current = window.setTimeout(() => {
51
+ n.scrollTo({
52
+ top: 0,
53
+ behavior: c
54
+ });
55
+ let e = s(n);
56
+ _(!1), e <= t && y(!1);
57
+ }, r);
58
+ },
59
+ ...h,
60
+ children: [
61
+ /* @__PURE__ */ (0, a.jsx)("span", { className: "bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100" }),
62
+ /* @__PURE__ */ (0, a.jsx)("span", { className: "border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100" }),
63
+ /* @__PURE__ */ (0, a.jsx)(e, { className: "relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]" }),
64
+ /* @__PURE__ */ (0, a.jsx)("span", {
65
+ className: "sr-only",
66
+ children: d
67
+ })
68
+ ]
69
+ });
82
70
  }
83
- export {
84
- V as ScrollToTop
85
- };
86
- //# sourceMappingURL=scroll-to-top.mjs.map
71
+ //#endregion
72
+ export { c as ScrollToTop };
73
+
74
+ //# sourceMappingURL=scroll-to-top.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-to-top.mjs","sources":["../packages/ui-web/src/scroll-to-top.tsx"],"sourcesContent":["'use client';\n\nimport { ScrollToTopBaseProps } from '@gv-tech/ui-core';\nimport { ArrowUp } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { cn } from './lib/utils';\n\nexport interface ScrollToTopProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {\n /** Optional custom scroll container; defaults to window when undefined. */\n scrollTarget?: Window | HTMLElement | null;\n}\n\ntype ScrollTarget = Window | HTMLElement | null;\n\nconst isWindowTarget = (target: Exclude<ScrollTarget, null>): target is Window =>\n typeof (target as Window).scrollY === 'number';\n\nconst getScrollOffset = (target: Exclude<ScrollTarget, null>) =>\n isWindowTarget(target) ? target.scrollY : target.scrollTop;\n\nexport function ScrollToTop({\n threshold = 240,\n exitDuration = 450,\n behavior = 'smooth',\n scrollTarget,\n className,\n label = 'Scroll to top',\n onClick,\n tabIndex,\n type,\n ...props\n}: ScrollToTopProps) {\n const [isVisible, setIsVisible] = React.useState(false);\n const [isExiting, setIsExiting] = React.useState(false);\n const timeoutRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n const target = scrollTarget === undefined ? window : scrollTarget;\n\n if (!target) {\n setIsVisible(false);\n return;\n }\n\n const updateVisibility = () => {\n const offset = getScrollOffset(target);\n\n if (isExiting) {\n // Keep the control dismissed during the return-to-top animation,\n // then release once we are back under the visibility threshold.\n if (offset <= threshold) {\n setIsVisible(false);\n setIsExiting(false);\n }\n return;\n }\n\n setIsVisible(offset > threshold);\n };\n\n updateVisibility();\n target.addEventListener('scroll', updateVisibility, { passive: true });\n\n return () => {\n target.removeEventListener('scroll', updateVisibility);\n };\n }, [isExiting, scrollTarget, threshold]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const state = isExiting ? 'exiting' : isVisible ? 'visible' : 'hidden';\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isExiting) {\n return;\n }\n\n const target = scrollTarget === undefined ? window : scrollTarget;\n if (!target) {\n return;\n }\n\n setIsExiting(true);\n\n const timeout = Math.max(0, exitDuration);\n timeoutRef.current = window.setTimeout(() => {\n target.scrollTo({ top: 0, behavior });\n\n const offset = getScrollOffset(target);\n setIsVisible(false);\n\n if (offset <= threshold) {\n setIsExiting(false);\n }\n }, timeout);\n };\n\n return (\n <Button\n aria-label={label}\n data-state={state}\n type={type ?? 'button'}\n variant=\"default\"\n size=\"icon\"\n tabIndex={state === 'hidden' ? -1 : tabIndex}\n className={cn(\n 'group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n 'before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80',\n 'hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95',\n state === 'visible' && 'translate-y-0 scale-100 opacity-100',\n state === 'hidden' &&\n 'pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none',\n state === 'exiting' &&\n 'pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <span className=\"bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100\" />\n <span className=\"border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100\" />\n <ArrowUp className=\"relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]\" />\n <span className=\"sr-only\">{label}</span>\n </Button>\n );\n}\n"],"names":["isWindowTarget","target","getScrollOffset","ScrollToTop","threshold","exitDuration","behavior","scrollTarget","className","label","onClick","tabIndex","type","props","isVisible","setIsVisible","React","isExiting","setIsExiting","timeoutRef","updateVisibility","offset","state","handleClick","event","timeout","jsxs","Button","cn","jsx","ArrowUp"],"mappings":";;;;;AAeA,MAAMA,IAAiB,CAACC,MACtB,OAAQA,EAAkB,WAAY,UAElCC,IAAkB,CAACD,MACvBD,EAAeC,CAAM,IAAIA,EAAO,UAAUA,EAAO;AAE5C,SAASE,EAAY;AAAA,EAC1B,WAAAC,IAAY;AAAA,EACZ,cAAAC,IAAe;AAAA,EACf,UAAAC,IAAW;AAAA,EACX,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,GAAGC;AACL,GAAqB;AACnB,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAM,SAAS,EAAK,GAChD,CAACC,GAAWC,CAAY,IAAIF,EAAM,SAAS,EAAK,GAChDG,IAAaH,EAAM,OAAsB,IAAI;AAEnD,EAAAA,EAAM,UAAU,MAAM;AACpB,UAAMf,IAASM,MAAiB,SAAY,SAASA;AAErD,QAAI,CAACN,GAAQ;AACX,MAAAc,EAAa,EAAK;AAClB;AAAA,IACF;AAEA,UAAMK,IAAmB,MAAM;AAC7B,YAAMC,IAASnB,EAAgBD,CAAM;AAErC,UAAIgB,GAAW;AAGb,QAAII,KAAUjB,MACZW,EAAa,EAAK,GAClBG,EAAa,EAAK;AAEpB;AAAA,MACF;AAEA,MAAAH,EAAaM,IAASjB,CAAS;AAAA,IACjC;AAEA,WAAAgB,EAAA,GACAnB,EAAO,iBAAiB,UAAUmB,GAAkB,EAAE,SAAS,IAAM,GAE9D,MAAM;AACX,MAAAnB,EAAO,oBAAoB,UAAUmB,CAAgB;AAAA,IACvD;AAAA,EACF,GAAG,CAACH,GAAWV,GAAcH,CAAS,CAAC,GAEvCY,EAAM,UAAU,MACP,MAAM;AACX,IAAIG,EAAW,YAAY,QACzB,OAAO,aAAaA,EAAW,OAAO;AAAA,EAE1C,GACC,CAAA,CAAE;AAEL,QAAMG,IAAQL,IAAY,YAAYH,IAAY,YAAY,UAExDS,IAAc,CAACC,MAA+C;AAElE,QADAd,IAAUc,CAAK,GACXA,EAAM,oBAAoBP;AAC5B;AAGF,UAAMhB,IAASM,MAAiB,SAAY,SAASA;AACrD,QAAI,CAACN;AACH;AAGF,IAAAiB,EAAa,EAAI;AAEjB,UAAMO,IAAU,KAAK,IAAI,GAAGpB,CAAY;AACxC,IAAAc,EAAW,UAAU,OAAO,WAAW,MAAM;AAC3C,MAAAlB,EAAO,SAAS,EAAE,KAAK,GAAG,UAAAK,GAAU;AAEpC,YAAMe,IAASnB,EAAgBD,CAAM;AACrC,MAAAc,EAAa,EAAK,GAEdM,KAAUjB,KACZc,EAAa,EAAK;AAAA,IAEtB,GAAGO,CAAO;AAAA,EACZ;AAEA,SACEC,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,cAAYlB;AAAA,MACZ,cAAYa;AAAA,MACZ,MAAMV,KAAQ;AAAA,MACd,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,UAAUU,MAAU,WAAW,KAAKX;AAAA,MACpC,WAAWiB;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACAN,MAAU,aAAa;AAAA,QACvBA,MAAU,YACR;AAAA,QACFA,MAAU,aACR;AAAA,QACFd;AAAA,MAAA;AAAA,MAEF,SAASe;AAAA,MACR,GAAGV;AAAA,MAEJ,UAAA;AAAA,QAAAgB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,qJAAA,CAAqJ;AAAA,QACrKA,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,+JAAA,CAA+J;AAAA,QAC/KA,gBAAAA,EAAAA,IAACC,GAAA,EAAQ,WAAU,gEAAA,CAAgE;AAAA,QACnFD,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,WAAW,UAAApB,EAAA,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGvC;"}
1
+ {"version":3,"file":"scroll-to-top.mjs","names":[],"sources":["../packages/ui-web/src/scroll-to-top.tsx"],"sourcesContent":["'use client';\n\nimport { ScrollToTopBaseProps } from '@gv-tech/ui-core';\nimport { ArrowUp } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { cn } from './lib/utils';\n\nexport interface ScrollToTopProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ScrollToTopBaseProps {\n /** Optional custom scroll container; defaults to window when undefined. */\n scrollTarget?: Window | HTMLElement | null;\n}\n\ntype ScrollTarget = Window | HTMLElement | null;\n\nconst isWindowTarget = (target: Exclude<ScrollTarget, null>): target is Window =>\n typeof (target as Window).scrollY === 'number';\n\nconst getScrollOffset = (target: Exclude<ScrollTarget, null>) =>\n isWindowTarget(target) ? target.scrollY : target.scrollTop;\n\nexport function ScrollToTop({\n threshold = 240,\n exitDuration = 450,\n behavior = 'smooth',\n scrollTarget,\n className,\n label = 'Scroll to top',\n onClick,\n tabIndex,\n type,\n ...props\n}: ScrollToTopProps) {\n const [isVisible, setIsVisible] = React.useState(false);\n const [isExiting, setIsExiting] = React.useState(false);\n const timeoutRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n const target = scrollTarget === undefined ? window : scrollTarget;\n\n if (!target) {\n setIsVisible(false);\n return;\n }\n\n const updateVisibility = () => {\n const offset = getScrollOffset(target);\n\n if (isExiting) {\n // Keep the control dismissed during the return-to-top animation,\n // then release once we are back under the visibility threshold.\n if (offset <= threshold) {\n setIsVisible(false);\n setIsExiting(false);\n }\n return;\n }\n\n setIsVisible(offset > threshold);\n };\n\n updateVisibility();\n target.addEventListener('scroll', updateVisibility, { passive: true });\n\n return () => {\n target.removeEventListener('scroll', updateVisibility);\n };\n }, [isExiting, scrollTarget, threshold]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current !== null) {\n window.clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n const state = isExiting ? 'exiting' : isVisible ? 'visible' : 'hidden';\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (event.defaultPrevented || isExiting) {\n return;\n }\n\n const target = scrollTarget === undefined ? window : scrollTarget;\n if (!target) {\n return;\n }\n\n setIsExiting(true);\n\n const timeout = Math.max(0, exitDuration);\n timeoutRef.current = window.setTimeout(() => {\n target.scrollTo({ top: 0, behavior });\n\n const offset = getScrollOffset(target);\n setIsVisible(false);\n\n if (offset <= threshold) {\n setIsExiting(false);\n }\n }, timeout);\n };\n\n return (\n <Button\n aria-label={label}\n data-state={state}\n type={type ?? 'button'}\n variant=\"default\"\n size=\"icon\"\n tabIndex={state === 'hidden' ? -1 : tabIndex}\n className={cn(\n 'group border-primary/40 bg-primary text-primary-foreground focus-visible:ring-ring fixed right-6 bottom-6 z-50 inline-flex h-14 w-14 items-center justify-center overflow-hidden rounded-full border shadow-[0_18px_40px_-22px_hsl(var(--primary)/0.9)] transition-all duration-500 ease-out focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',\n 'before:pointer-events-none before:absolute before:inset-0 before:bg-[radial-gradient(circle_at_35%_30%,rgba(255,255,255,0.45),transparent_55%)] before:opacity-80',\n 'hover:-translate-y-1 hover:scale-105 hover:shadow-[0_24px_48px_-24px_hsl(var(--primary)/0.95)] active:translate-y-0 active:scale-95',\n state === 'visible' && 'translate-y-0 scale-100 opacity-100',\n state === 'hidden' &&\n 'pointer-events-none translate-y-24 scale-75 opacity-0 blur-[1px] motion-safe:animate-none',\n state === 'exiting' &&\n 'pointer-events-none translate-y-28 scale-90 opacity-0 blur-[2px] motion-safe:animate-none',\n className,\n )}\n onClick={handleClick}\n {...props}\n >\n <span className=\"bg-primary-foreground/20 absolute inset-0 rounded-full opacity-0 transition-opacity duration-500 group-hover:animate-pulse group-hover:opacity-100\" />\n <span className=\"border-primary-foreground/35 absolute inset-0 rounded-full border opacity-0 transition-opacity duration-300 group-hover:animate-ping group-hover:opacity-100\" />\n <ArrowUp className=\"relative z-10 h-5 w-5 drop-shadow-[0_2px_2px_rgba(0,0,0,0.2)]\" />\n <span className=\"sr-only\">{label}</span>\n </Button>\n );\n}\n"],"mappings":";;;;;;;aAeM,KAAkB,MACtB,OAAQ,EAAkB,WAAY,UAElC,KAAmB,MACvB,EAAe,CAAM,IAAI,EAAO,UAAU,EAAO;AAEnD,SAAgB,EAAY,EAC1B,eAAY,KACZ,kBAAe,KACf,cAAW,UACX,iBACA,cACA,WAAQ,iBACR,YACA,aACA,SACA,GAAG,KACgB;CACnB,IAAM,CAAC,GAAW,KAAgB,EAAM,SAAS,EAAK,GAChD,CAAC,GAAW,KAAgB,EAAM,SAAS,EAAK,GAChD,IAAa,EAAM,OAAsB,IAAI;CAkCnD,AAhCA,EAAM,gBAAgB;EACpB,IAAM,IAAS,MAAiB,KAAA,IAAY,SAAS;EAErD,IAAI,CAAC,GAAQ;GACX,EAAa,EAAK;GAClB;EACF;EAEA,IAAM,UAAyB;GAC7B,IAAM,IAAS,EAAgB,CAAM;GAErC,IAAI,GAAW;IAGb,AAAI,KAAU,MACZ,EAAa,EAAK,GAClB,EAAa,EAAK;IAEpB;GACF;GAEA,EAAa,IAAS,CAAS;EACjC;EAKA,OAHA,EAAiB,GACjB,EAAO,iBAAiB,UAAU,GAAkB,EAAE,SAAS,GAAK,CAAC,SAExD;GACX,EAAO,oBAAoB,UAAU,CAAgB;EACvD;CACF,GAAG;EAAC;EAAW;EAAc;CAAS,CAAC,GAEvC,EAAM,sBACS;EACX,AAAI,EAAW,YAAY,QACzB,OAAO,aAAa,EAAW,OAAO;CAE1C,GACC,CAAC,CAAC;CAEL,IAAM,IAAQ,IAAY,YAAY,IAAY,YAAY;CA4B9D,OACE,iBAAA,GAAA,EAAA,MAAC,GAAD;EACE,cAAY;EACZ,cAAY;EACZ,MAAM,KAAQ;EACd,SAAQ;EACR,MAAK;EACL,UAAU,MAAU,WAAW,KAAK;EACpC,WAAW,EACT,4WACA,qKACA,uIACA,MAAU,aAAa,uCACvB,MAAU,YACR,6FACF,MAAU,aACR,6FACF,CACF;EACA,UA7CiB,MAA+C;GAElE,IADA,IAAU,CAAK,GACX,EAAM,oBAAoB,GAC5B;GAGF,IAAM,IAAS,MAAiB,KAAA,IAAY,SAAS;GACrD,IAAI,CAAC,GACH;GAGF,EAAa,EAAI;GAEjB,IAAM,IAAU,KAAK,IAAI,GAAG,CAAY;GACxC,EAAW,UAAU,OAAO,iBAAiB;IAC3C,EAAO,SAAS;KAAE,KAAK;KAAG;IAAS,CAAC;IAEpC,IAAM,IAAS,EAAgB,CAAM;IAGrC,AAFA,EAAa,EAAK,GAEd,KAAU,KACZ,EAAa,EAAK;GAEtB,GAAG,CAAO;EACZ;EAsBI,GAAI;YAnBN;GAqBE,iBAAA,GAAA,EAAA,KAAC,QAAD,EAAM,WAAU,qJAAsJ,CAAA;GACtK,iBAAA,GAAA,EAAA,KAAC,QAAD,EAAM,WAAU,+JAAgK,CAAA;GAChL,iBAAA,GAAA,EAAA,KAAC,GAAD,EAAS,WAAU,gEAAiE,CAAA;GACpF,iBAAA,GAAA,EAAA,KAAC,QAAD;IAAM,WAAU;cAAW;GAAY,CAAA;EACjC;;AAEZ"}
package/dist/search.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./vendor-B_07FHqh.js"),p=require("react"),h=require("./button.cjs"),j=require("./command.cjs"),u=require("./utils-CBWPs0D7.js");function g(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const r=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(s,e,r.get?r:{enumerable:!0,get:()=>t[e]})}}return s.default=t,Object.freeze(s)}const d=g(p);function y({children:t,open:s,onOpenChange:e}){const[r,x]=d.useState(!1),a=s!==void 0,i=a?s:r,l=d.useCallback(c=>{let n;typeof c=="function"?n=c(i):n=c,a?e?.(n):x(n)},[a,i,e]);return d.useEffect(()=>{const c=n=>{n.key==="k"&&(n.metaKey||n.ctrlKey)&&(n.preventDefault(),l(m=>!m))};return document.addEventListener("keydown",c),()=>document.removeEventListener("keydown",c)},[l]),o.jsxRuntimeExports.jsx(j.CommandDialog,{open:i,onOpenChange:l,children:t})}const f=d.forwardRef(({className:t,placeholder:s,variant:e="default",responsive:r=!1,...x},a)=>{const l=s||(e==="compact"?"Search...":"Search docs...");return o.jsxRuntimeExports.jsxs(h.Button,{variant:"outline",className:u.cn("text-muted-foreground relative h-9 text-sm transition-all transition-colors",e==="default"?"w-full justify-start pr-12":u.cn("w-9 justify-center px-0",r&&"2xl:w-48 2xl:justify-start 2xl:px-3 2xl:pr-12"),t),ref:a,...x,children:[o.jsxRuntimeExports.jsxs("span",{className:"inline-flex items-center gap-2",children:[o.jsxRuntimeExports.jsx(o.Search,{className:"h-4 w-4 shrink-0"}),o.jsxRuntimeExports.jsx("span",{className:u.cn("truncate",e==="compact"&&(r?"hidden 2xl:inline":"hidden")),children:l})]}),o.jsxRuntimeExports.jsxs("kbd",{className:u.cn("bg-muted pointer-events-none absolute top-1.5 right-1.5 hidden h-6 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium opacity-100 select-none",e==="default"&&"sm:flex",e==="compact"&&r&&"2xl:flex"),children:[o.jsxRuntimeExports.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]})});f.displayName="SearchTrigger";exports.Search=y;exports.SearchTrigger=f;
2
- //# sourceMappingURL=search.cjs.map
1
+ "use client";"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./rolldown-runtime-mLOUI7ql.js"),t=require("./vendor-3cr8xz0x.js"),n=require("./utils-DU-Y_pvO.js"),r=require("./button.cjs"),i=require("./command.cjs");let a=require("react");a=e.r(a);var o=t.vr();function s({children:e,open:t,onOpenChange:n}){let[r,s]=a.useState(!1),c=t!==void 0,l=c?t:r,u=a.useCallback(e=>{let t;t=typeof e==`function`?e(l):e,c?n?.(t):s(t)},[c,l,n]);return a.useEffect(()=>{let e=e=>{e.key===`k`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),u(e=>!e))};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[u]),(0,o.jsx)(i.CommandDialog,{open:l,onOpenChange:u,children:e})}var c=a.forwardRef(({className:e,placeholder:i,variant:a=`default`,responsive:s=!1,...c},l)=>{let u=i||(a===`compact`?`Search...`:`Search docs...`);return(0,o.jsxs)(r.Button,{variant:`outline`,className:n.t(`text-muted-foreground relative h-9 text-sm transition-all transition-colors`,a===`default`?`w-full justify-start pr-12`:n.t(`w-9 justify-center px-0`,s&&`2xl:w-48 2xl:justify-start 2xl:px-3 2xl:pr-12`),e),ref:l,...c,children:[(0,o.jsxs)(`span`,{className:`inline-flex items-center gap-2`,children:[(0,o.jsx)(t.Yn,{className:`h-4 w-4 shrink-0`}),(0,o.jsx)(`span`,{className:n.t(`truncate`,a===`compact`&&(s?`hidden 2xl:inline`:`hidden`)),children:u})]}),(0,o.jsxs)(`kbd`,{className:n.t(`bg-muted pointer-events-none absolute top-1.5 right-1.5 hidden h-6 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium opacity-100 select-none`,a===`default`&&`sm:flex`,a===`compact`&&s&&`2xl:flex`),children:[(0,o.jsx)(`span`,{className:`text-xs`,children:`⌘`}),`K`]})]})});c.displayName=`SearchTrigger`,exports.Search=s,exports.SearchTrigger=c;
2
+ //# sourceMappingURL=search.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.cjs","sources":["../packages/ui-web/src/search.tsx"],"sourcesContent":["'use client';\n\nimport { SearchBaseProps, SearchTriggerBaseProps } from '@gv-tech/ui-core';\nimport { Search as SearchIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { CommandDialog } from './command';\nimport { cn } from './lib/utils';\n\nexport type SearchProps = SearchBaseProps;\n\nexport function Search({ children, open: customOpen, onOpenChange }: SearchProps) {\n const [open, setOpen] = React.useState(false);\n\n // If customOpen is provided (controlled), use it. Otherwise use internal state.\n // Note: customOpen can be undefined, so we check explicit undefined check or just rely on contract.\n const isControlled = customOpen !== undefined;\n const isOpen = isControlled ? (customOpen as boolean) : open;\n\n // We need a setter that matches Dispatch<SetStateAction<boolean>> roughly,\n // but handles the controlled callback.\n const setIsOpen = React.useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n let nextValue: boolean;\n if (typeof value === 'function') {\n nextValue = value(isOpen);\n } else {\n nextValue = value;\n }\n\n if (isControlled) {\n onOpenChange?.(nextValue);\n } else {\n setOpen(nextValue);\n }\n },\n [isControlled, isOpen, onOpenChange],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, [setIsOpen]);\n\n return (\n <CommandDialog open={isOpen} onOpenChange={setIsOpen}>\n {children}\n </CommandDialog>\n );\n}\n\nexport interface SearchTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, SearchTriggerBaseProps {}\n\nexport const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerProps>(\n ({ className, placeholder, variant = 'default', responsive = false, ...props }, ref) => {\n const defaultPlaceholder = variant === 'compact' ? 'Search...' : 'Search docs...';\n const activePlaceholder = placeholder || defaultPlaceholder;\n\n return (\n <Button\n variant=\"outline\"\n className={cn(\n 'text-muted-foreground relative h-9 text-sm transition-all transition-colors',\n variant === 'default'\n ? 'w-full justify-start pr-12'\n : cn('w-9 justify-center px-0', responsive && '2xl:w-48 2xl:justify-start 2xl:px-3 2xl:pr-12'),\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"inline-flex items-center gap-2\">\n <SearchIcon className=\"h-4 w-4 shrink-0\" />\n <span className={cn('truncate', variant === 'compact' && (responsive ? 'hidden 2xl:inline' : 'hidden'))}>\n {activePlaceholder}\n </span>\n </span>\n <kbd\n className={cn(\n 'bg-muted pointer-events-none absolute top-1.5 right-1.5 hidden h-6 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium opacity-100 select-none',\n variant === 'default' && 'sm:flex',\n variant === 'compact' && responsive && '2xl:flex',\n )}\n >\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n );\n },\n);\nSearchTrigger.displayName = 'SearchTrigger';\n"],"names":["Search","children","customOpen","onOpenChange","open","setOpen","React","isControlled","isOpen","setIsOpen","value","nextValue","down","e","prev","CommandDialog","SearchTrigger","className","placeholder","variant","responsive","props","ref","activePlaceholder","jsxs","Button","cn","jsx","SearchIcon"],"mappings":"wgBAWO,SAASA,EAAO,CAAE,SAAAC,EAAU,KAAMC,EAAY,aAAAC,GAA6B,CAChF,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAM,SAAS,EAAK,EAItCC,EAAeL,IAAe,OAC9BM,EAASD,EAAgBL,EAAyBE,EAIlDK,EAAYH,EAAM,YACrBI,GAAkD,CACjD,IAAIC,EACA,OAAOD,GAAU,WACnBC,EAAYD,EAAMF,CAAM,EAExBG,EAAYD,EAGVH,EACFJ,IAAeQ,CAAS,EAExBN,EAAQM,CAAS,CAErB,EACA,CAACJ,EAAcC,EAAQL,CAAY,CAAA,EAGrCG,OAAAA,EAAM,UAAU,IAAM,CACpB,MAAMM,EAAQC,GAAqB,CAC7BA,EAAE,MAAQ,MAAQA,EAAE,SAAWA,EAAE,WACnCA,EAAE,eAAA,EACFJ,EAAWK,GAAS,CAACA,CAAI,EAE7B,EAEA,gBAAS,iBAAiB,UAAWF,CAAI,EAClC,IAAM,SAAS,oBAAoB,UAAWA,CAAI,CAC3D,EAAG,CAACH,CAAS,CAAC,0BAGXM,EAAAA,cAAA,CAAc,KAAMP,EAAQ,aAAcC,EACxC,SAAAR,EACH,CAEJ,CAIO,MAAMe,EAAgBV,EAAM,WACjC,CAAC,CAAE,UAAAW,EAAW,YAAAC,EAAa,QAAAC,EAAU,UAAW,WAAAC,EAAa,GAAO,GAAGC,CAAA,EAASC,IAAQ,CAEtF,MAAMC,EAAoBL,IADCC,IAAY,UAAY,YAAc,kBAGjE,OACEK,EAAAA,kBAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,UACR,UAAWC,EAAAA,GACT,8EACAP,IAAY,UACR,6BACAO,EAAAA,GAAG,0BAA2BN,GAAc,+CAA+C,EAC/FH,CAAA,EAEF,IAAAK,EACC,GAAGD,EAEJ,SAAA,CAAAG,EAAAA,kBAAAA,KAAC,OAAA,CAAK,UAAU,iCACd,SAAA,CAAAG,EAAAA,kBAAAA,IAACC,EAAAA,OAAA,CAAW,UAAU,kBAAA,CAAmB,EACzCD,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAWD,EAAAA,GAAG,WAAYP,IAAY,YAAcC,EAAa,oBAAsB,SAAS,EACnG,SAAAG,CAAA,CACH,CAAA,EACF,EACAC,EAAAA,kBAAAA,KAAC,MAAA,CACC,UAAWE,EAAAA,GACT,wKACAP,IAAY,WAAa,UACzBA,IAAY,WAAaC,GAAc,UAAA,EAGzC,SAAA,CAAAO,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,UAAU,SAAA,IAAC,EAAO,GAAA,CAAA,CAAA,CACpC,CAAA,CAAA,CAGN,CACF,EACAX,EAAc,YAAc"}
1
+ {"version":3,"file":"search.cjs","names":[],"sources":["../packages/ui-web/src/search.tsx"],"sourcesContent":["'use client';\n\nimport { SearchBaseProps, SearchTriggerBaseProps } from '@gv-tech/ui-core';\nimport { Search as SearchIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { CommandDialog } from './command';\nimport { cn } from './lib/utils';\n\nexport type SearchProps = SearchBaseProps;\n\nexport function Search({ children, open: customOpen, onOpenChange }: SearchProps) {\n const [open, setOpen] = React.useState(false);\n\n // If customOpen is provided (controlled), use it. Otherwise use internal state.\n // Note: customOpen can be undefined, so we check explicit undefined check or just rely on contract.\n const isControlled = customOpen !== undefined;\n const isOpen = isControlled ? (customOpen as boolean) : open;\n\n // We need a setter that matches Dispatch<SetStateAction<boolean>> roughly,\n // but handles the controlled callback.\n const setIsOpen = React.useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n let nextValue: boolean;\n if (typeof value === 'function') {\n nextValue = value(isOpen);\n } else {\n nextValue = value;\n }\n\n if (isControlled) {\n onOpenChange?.(nextValue);\n } else {\n setOpen(nextValue);\n }\n },\n [isControlled, isOpen, onOpenChange],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, [setIsOpen]);\n\n return (\n <CommandDialog open={isOpen} onOpenChange={setIsOpen}>\n {children}\n </CommandDialog>\n );\n}\n\nexport interface SearchTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, SearchTriggerBaseProps {}\n\nexport const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerProps>(\n ({ className, placeholder, variant = 'default', responsive = false, ...props }, ref) => {\n const defaultPlaceholder = variant === 'compact' ? 'Search...' : 'Search docs...';\n const activePlaceholder = placeholder || defaultPlaceholder;\n\n return (\n <Button\n variant=\"outline\"\n className={cn(\n 'text-muted-foreground relative h-9 text-sm transition-all transition-colors',\n variant === 'default'\n ? 'w-full justify-start pr-12'\n : cn('w-9 justify-center px-0', responsive && '2xl:w-48 2xl:justify-start 2xl:px-3 2xl:pr-12'),\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"inline-flex items-center gap-2\">\n <SearchIcon className=\"h-4 w-4 shrink-0\" />\n <span className={cn('truncate', variant === 'compact' && (responsive ? 'hidden 2xl:inline' : 'hidden'))}>\n {activePlaceholder}\n </span>\n </span>\n <kbd\n className={cn(\n 'bg-muted pointer-events-none absolute top-1.5 right-1.5 hidden h-6 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium opacity-100 select-none',\n variant === 'default' && 'sm:flex',\n variant === 'compact' && responsive && '2xl:flex',\n )}\n >\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n );\n },\n);\nSearchTrigger.displayName = 'SearchTrigger';\n"],"mappings":"oTAWA,SAAgB,EAAO,CAAE,WAAU,KAAM,EAAY,gBAA6B,CAChF,GAAM,CAAC,EAAM,GAAW,EAAM,SAAS,EAAK,EAItC,EAAe,IAAe,IAAA,GAC9B,EAAS,EAAgB,EAAyB,EAIlD,EAAY,EAAM,YACrB,GAAkD,CACjD,IAAI,EACJ,AAGE,EAHE,OAAO,GAAU,WACP,EAAM,CAAM,EAEZ,EAGV,EACF,IAAe,CAAS,EAExB,EAAQ,CAAS,CAErB,EACA,CAAC,EAAc,EAAQ,CAAY,CACrC,EAcA,OAZA,EAAM,cAAgB,CACpB,IAAM,EAAQ,GAAqB,CAC7B,EAAE,MAAQ,MAAQ,EAAE,SAAW,EAAE,WACnC,EAAE,eAAe,EACjB,EAAW,GAAS,CAAC,CAAI,EAE7B,EAGA,OADA,SAAS,iBAAiB,UAAW,CAAI,MAC5B,SAAS,oBAAoB,UAAW,CAAI,CAC3D,EAAG,CAAC,CAAS,CAAC,GAGZ,EAAA,EAAA,KAAC,EAAA,cAAD,CAAe,KAAM,EAAQ,aAAc,EACxC,UACY,CAAA,CAEnB,CAIA,IAAa,EAAgB,EAAM,YAChC,CAAE,YAAW,cAAa,UAAU,UAAW,aAAa,GAAO,GAAG,GAAS,IAAQ,CAEtF,IAAM,EAAoB,IADC,IAAY,UAAY,YAAc,kBAGjE,OACE,EAAA,EAAA,MAAC,EAAA,OAAD,CACE,QAAQ,UACR,UAAW,EAAA,EACT,8EACA,IAAY,UACR,6BACA,EAAA,EAAG,0BAA2B,GAAc,+CAA+C,EAC/F,CACF,EACK,MACL,GAAI,WAVN,EAYE,EAAA,EAAA,MAAC,OAAD,CAAM,UAAU,0CAAhB,EACE,EAAA,EAAA,KAAC,EAAA,GAAD,CAAY,UAAU,kBAAoB,CAAA,GAC1C,EAAA,EAAA,KAAC,OAAD,CAAM,UAAW,EAAA,EAAG,WAAY,IAAY,YAAc,EAAa,oBAAsB,SAAS,WACnG,CACG,CAAA,CACF,KACN,EAAA,EAAA,MAAC,MAAD,CACE,UAAW,EAAA,EACT,wKACA,IAAY,WAAa,UACzB,IAAY,WAAa,GAAc,UACzC,WALF,EAOE,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,mBAAU,GAAO,CAAA,EAAC,GAC/B,GACC,GAEZ,CACF,EACA,EAAc,YAAc"}
package/dist/search.d.ts CHANGED
@@ -1,26 +1,2 @@
1
- import { JSX } from 'react/jsx-runtime';
2
- import * as React_2 from 'react';
3
-
4
- export declare function Search({ children, open: customOpen, onOpenChange }: SearchProps): JSX.Element;
5
-
6
- declare interface SearchBaseProps {
7
- children?: React_2.ReactNode;
8
- open?: boolean;
9
- onOpenChange?: (open: boolean) => void;
10
- }
11
-
12
- export declare type SearchProps = SearchBaseProps;
13
-
14
- export declare const SearchTrigger: React_2.ForwardRefExoticComponent<SearchTriggerProps & React_2.RefAttributes<HTMLButtonElement>>;
15
-
16
- declare interface SearchTriggerBaseProps {
17
- className?: string;
18
- placeholder?: string;
19
- variant?: 'default' | 'compact';
20
- responsive?: boolean;
21
- }
22
-
23
- export declare interface SearchTriggerProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement>, SearchTriggerBaseProps {
24
- }
25
-
26
- export { }
1
+ export * from './packages/ui-web/src/search'
2
+ export {}