@gv-tech/design-system 2.19.0 → 2.21.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 (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-C0IHAABJ.mjs +23 -0
  324. package/dist/rolldown-runtime-CacfPODE.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-B8AA-nU4.js +2 -0
  373. package/dist/src-B8AA-nU4.js.map +1 -0
  374. package/dist/src-C65A5RuY.mjs +23 -0
  375. package/dist/src-C65A5RuY.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-B8UiizQB.js +2 -0
  417. package/dist/theme-toggle-B8UiizQB.js.map +1 -0
  418. package/dist/theme-toggle-DoAVRoyO.mjs +321 -0
  419. package/dist/theme-toggle-DoAVRoyO.mjs.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-BgZxvlTL.mjs +128 -0
  429. package/dist/toaster-BgZxvlTL.mjs.map +1 -0
  430. package/dist/toaster-DnZKPR-G.js +2 -0
  431. package/dist/toaster-DnZKPR-G.js.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-BtI8Nf6i.mjs +12 -0
  451. package/dist/utils-BtI8Nf6i.mjs.map +1 -0
  452. package/dist/utils-CbSX47LV.js +2 -0
  453. package/dist/utils-CbSX47LV.js.map +1 -0
  454. package/dist/vendor-Cr0eKZrm.mjs +28603 -0
  455. package/dist/vendor-Cr0eKZrm.mjs.map +1 -0
  456. package/dist/vendor-D3ZzLf8D.js +92 -0
  457. package/dist/vendor-D3ZzLf8D.js.map +1 -0
  458. package/package.json +32 -32
  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 +1 @@
1
- {"version":3,"file":"sonner.cjs","sources":["../packages/ui-web/src/sonner.tsx"],"sourcesContent":["'use client';\n\nimport { SonnerBaseProps } from '@gv-tech/ui-core';\nimport { useTheme } from 'next-themes';\nimport * as React from 'react';\nimport { Toaster as Sonner } from 'sonner';\n\ntype ToasterProps = React.ComponentProps<typeof Sonner> & SonnerBaseProps;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = 'system' } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps['theme']}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n description: 'group-[.toast]:text-muted-foreground',\n actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\nexport type { ToasterProps };\n"],"names":["Toaster","props","theme","useTheme","jsx","Sonner"],"mappings":"8JASMA,EAAU,CAAC,CAAE,GAAGC,KAA0B,CAC9C,KAAM,CAAE,MAAAC,EAAQ,QAAA,EAAaC,WAAA,EAE7B,OACEC,EAAAA,kBAAAA,IAACC,EAAAA,QAAA,CACC,MAAAH,EACA,UAAU,gBACV,aAAc,CACZ,WAAY,CACV,MACE,wIACF,YAAa,uCACb,aAAc,mEACd,aAAc,8DAAA,CAChB,EAED,GAAGD,CAAA,CAAA,CAGV"}
1
+ {"version":3,"file":"sonner.cjs","names":[],"sources":["../packages/ui-web/src/sonner.tsx"],"sourcesContent":["'use client';\n\nimport { SonnerBaseProps } from '@gv-tech/ui-core';\nimport { useTheme } from 'next-themes';\nimport * as React from 'react';\nimport { Toaster as Sonner } from 'sonner';\n\ntype ToasterProps = React.ComponentProps<typeof Sonner> & SonnerBaseProps;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = 'system' } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps['theme']}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n description: 'group-[.toast]:text-muted-foreground',\n actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\nexport type { ToasterProps };\n"],"mappings":"2PASM,GAAW,CAAE,GAAG,KAA0B,CAC9C,GAAM,CAAE,QAAQ,WAAA,EAAA,EAAA,WAAuB,CAEvC,OACE,EAAA,EAAA,KAAC,EAAA,EAAD,CACS,QACP,UAAU,gBACV,aAAc,CACZ,WAAY,CACV,MACE,wIACF,YAAa,uCACb,aAAc,mEACd,aAAc,+DACf,CACF,CACD,GAAI,EACJ,CAAA"}
package/dist/sonner.d.ts CHANGED
@@ -1,25 +1,2 @@
1
- import { JSX } from 'react/jsx-runtime';
2
- import * as React_2 from 'react';
3
- import { Toaster as Toaster_2 } from 'sonner';
4
-
5
- declare interface SonnerBaseProps {
6
- theme?: 'light' | 'dark' | 'system';
7
- className?: string;
8
- toastOptions?: {
9
- classNames?: {
10
- toast?: string;
11
- description?: string;
12
- actionButton?: string;
13
- cancelButton?: string;
14
- [key: string]: string | undefined;
15
- };
16
- [key: string]: unknown;
17
- };
18
- [key: string]: unknown;
19
- }
20
-
21
- export declare const Toaster: ({ ...props }: ToasterProps) => JSX.Element;
22
-
23
- export declare type ToasterProps = React_2.ComponentProps<typeof Toaster_2> & SonnerBaseProps;
24
-
25
- export { }
1
+ export * from './packages/ui-web/src/sonner'
2
+ export {}
package/dist/sonner.mjs CHANGED
@@ -1,26 +1,24 @@
1
1
  "use client";
2
- import { j as r, bE as e } from "./vendor-BQwS7aJt.mjs";
3
- import { useTheme as s } from "next-themes";
4
- const g = ({ ...t }) => {
5
- const { theme: o = "system" } = s();
6
- return /* @__PURE__ */ r.jsx(
7
- e,
8
- {
9
- theme: o,
10
- className: "toaster group",
11
- toastOptions: {
12
- classNames: {
13
- toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
14
- description: "group-[.toast]:text-muted-foreground",
15
- actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
16
- cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
17
- }
18
- },
19
- ...t
20
- }
21
- );
22
- };
23
- export {
24
- g as Toaster
2
+ "use client";
3
+ import { vr as e, x as t } from "./vendor-Cr0eKZrm.mjs";
4
+ import "react";
5
+ import { useTheme as n } from "next-themes";
6
+ //#region packages/ui-web/src/sonner.tsx
7
+ var r = e(), i = ({ ...e }) => {
8
+ let { theme: i = "system" } = n();
9
+ return /* @__PURE__ */ (0, r.jsx)(t, {
10
+ theme: i,
11
+ className: "toaster group",
12
+ toastOptions: { classNames: {
13
+ toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
14
+ description: "group-[.toast]:text-muted-foreground",
15
+ actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
16
+ cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
17
+ } },
18
+ ...e
19
+ });
25
20
  };
26
- //# sourceMappingURL=sonner.mjs.map
21
+ //#endregion
22
+ export { i as Toaster };
23
+
24
+ //# sourceMappingURL=sonner.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sonner.mjs","sources":["../packages/ui-web/src/sonner.tsx"],"sourcesContent":["'use client';\n\nimport { SonnerBaseProps } from '@gv-tech/ui-core';\nimport { useTheme } from 'next-themes';\nimport * as React from 'react';\nimport { Toaster as Sonner } from 'sonner';\n\ntype ToasterProps = React.ComponentProps<typeof Sonner> & SonnerBaseProps;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = 'system' } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps['theme']}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n description: 'group-[.toast]:text-muted-foreground',\n actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\nexport type { ToasterProps };\n"],"names":["Toaster","props","theme","useTheme","jsx","Sonner"],"mappings":";;;AASA,MAAMA,IAAU,CAAC,EAAE,GAAGC,QAA0B;AAC9C,QAAM,EAAE,OAAAC,IAAQ,SAAA,IAAaC,EAAA;AAE7B,SACEC,gBAAAA,EAAAA;AAAAA,IAACC;AAAAA,IAAA;AAAA,MACC,OAAAH;AAAA,MACA,WAAU;AAAA,MACV,cAAc;AAAA,QACZ,YAAY;AAAA,UACV,OACE;AAAA,UACF,aAAa;AAAA,UACb,cAAc;AAAA,UACd,cAAc;AAAA,QAAA;AAAA,MAChB;AAAA,MAED,GAAGD;AAAA,IAAA;AAAA,EAAA;AAGV;"}
1
+ {"version":3,"file":"sonner.mjs","names":[],"sources":["../packages/ui-web/src/sonner.tsx"],"sourcesContent":["'use client';\n\nimport { SonnerBaseProps } from '@gv-tech/ui-core';\nimport { useTheme } from 'next-themes';\nimport * as React from 'react';\nimport { Toaster as Sonner } from 'sonner';\n\ntype ToasterProps = React.ComponentProps<typeof Sonner> & SonnerBaseProps;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const { theme = 'system' } = useTheme();\n\n return (\n <Sonner\n theme={theme as ToasterProps['theme']}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n description: 'group-[.toast]:text-muted-foreground',\n actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\nexport type { ToasterProps };\n"],"mappings":";;;;;;aASM,KAAW,EAAE,GAAG,QAA0B;CAC9C,IAAM,EAAE,WAAQ,aAAa,GAAU;AAEvC,QACE,iBAAA,GAAA,EAAA,KAAC,GAAD;EACS;EACP,WAAU;EACV,cAAc,EACZ,YAAY;GACV,OACE;GACF,aAAa;GACb,cAAc;GACd,cAAc;GACf,EACF;EACD,GAAI;EACJ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from '../packages/design-tokens/src';
2
+ export * from '../packages/ui-web/src';
File without changes
@@ -0,0 +1,2 @@
1
+ var e=require(`./vendor-D3ZzLf8D.js`).Gn(`inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0`,{variants:{variant:{default:`bg-transparent`,outline:`border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground`},size:{default:`h-9 px-2 min-w-9`,sm:`h-8 px-1.5 min-w-8`,lg:`h-10 px-2.5 min-w-10`}},defaultVariants:{variant:`default`,size:`default`}});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});
2
+ //# sourceMappingURL=src-B8AA-nU4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-B8AA-nU4.js","names":[],"sources":["../packages/ui-core/src/contracts/toggle.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport * as React from 'react';\n\nexport const toggleVariants = cva(\n 'inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline: 'border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-9 px-2 min-w-9',\n sm: 'h-8 px-1.5 min-w-8',\n lg: 'h-10 px-2.5 min-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport const toggleVariantValues = {\n variant: {\n default: 'default',\n outline: 'outline',\n },\n size: {\n default: 'default',\n sm: 'sm',\n lg: 'lg',\n },\n} as const;\n\nexport type ToggleVariant = keyof typeof toggleVariantValues.variant;\nexport type ToggleSize = keyof typeof toggleVariantValues.size;\n\nexport interface ToggleBaseProps {\n children?: React.ReactNode;\n className?: string;\n variant?: ToggleVariant;\n size?: ToggleSize;\n pressed?: boolean;\n defaultPressed?: boolean;\n onPressedChange?: (pressed: boolean) => void;\n disabled?: boolean;\n}\n"],"mappings":"AAGA,IAAa,kCAAiB,GAC5B,kYACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,iBACT,QAAS,4FACV,CACD,KAAM,CACJ,QAAS,mBACT,GAAI,qBACJ,GAAI,uBACL,CACF,CACD,gBAAiB,CACf,QAAS,UACT,KAAM,UACP,CACF,CACF"}
@@ -0,0 +1,23 @@
1
+ import { Gn as e } from "./vendor-Cr0eKZrm.mjs";
2
+ //#region packages/ui-core/src/contracts/toggle.ts
3
+ var t = e("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
4
+ variants: {
5
+ variant: {
6
+ default: "bg-transparent",
7
+ outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground"
8
+ },
9
+ size: {
10
+ default: "h-9 px-2 min-w-9",
11
+ sm: "h-8 px-1.5 min-w-8",
12
+ lg: "h-10 px-2.5 min-w-10"
13
+ }
14
+ },
15
+ defaultVariants: {
16
+ variant: "default",
17
+ size: "default"
18
+ }
19
+ });
20
+ //#endregion
21
+ export { t };
22
+
23
+ //# sourceMappingURL=src-C65A5RuY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-C65A5RuY.mjs","names":[],"sources":["../packages/ui-core/src/contracts/toggle.ts"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport * as React from 'react';\n\nexport const toggleVariants = cva(\n 'inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline: 'border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-9 px-2 min-w-9',\n sm: 'h-8 px-1.5 min-w-8',\n lg: 'h-10 px-2.5 min-w-10',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport const toggleVariantValues = {\n variant: {\n default: 'default',\n outline: 'outline',\n },\n size: {\n default: 'default',\n sm: 'sm',\n lg: 'lg',\n },\n} as const;\n\nexport type ToggleVariant = keyof typeof toggleVariantValues.variant;\nexport type ToggleSize = keyof typeof toggleVariantValues.size;\n\nexport interface ToggleBaseProps {\n children?: React.ReactNode;\n className?: string;\n variant?: ToggleVariant;\n size?: ToggleSize;\n pressed?: boolean;\n defaultPressed?: boolean;\n onPressedChange?: (pressed: boolean) => void;\n disabled?: boolean;\n}\n"],"mappings":";;AAGA,IAAa,IAAiB,EAC5B,mYACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACV;EACD,MAAM;GACJ,SAAS;GACT,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF"}
@@ -1,2 +1,2 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./vendor-B_07FHqh.js"),q=require("react"),P=require("./button.cjs"),a=require("./dialog.cjs"),c=require("./drawer.cjs"),x=require("./utils-CBWPs0D7.js");function z(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const n in t)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(s,n,r.get?r:{enumerable:!0,get:()=>t[n]})}}return s.default=t,Object.freeze(s)}const o=z(q),g="(max-width: 767px)",w=t=>{const s=t.trim();return s.endsWith("/")?s.slice(0,-1):s},E=t=>t.trim().replace(/^@+/,""),I=(t,s)=>{const n=w(t),r=encodeURIComponent(E(s));return`${n}/${r}`},U=(t,s)=>{const n=w(t),r=encodeURIComponent(E(s));return`${n}/widget/page/${r}`},F=()=>{const t=()=>typeof window>"u"||typeof window.matchMedia!="function"?!1:window.matchMedia(g).matches,[s,n]=o.useState(t);return o.useEffect(()=>{if(typeof window>"u"||typeof window.matchMedia!="function")return;const r=window.matchMedia(g),l=u=>n(u.matches);return n(r.matches),r.addEventListener("change",l),()=>{r.removeEventListener("change",l)}},[]),s};function L({supportUrl:t="https://www.buymeacoffee.com",creatorId:s,title:n="Buy me a coffee",description:r="Support the project directly from this panel.",iframeTitle:l="Buy Me a Coffee support form",open:u,defaultOpen:R=!1,onOpenChange:p,positionClassName:y,buttonClassName:v,panelClassName:f,className:M,type:D,onClick:N,...C}){const O=F(),d=u!==void 0,[S,_]=o.useState(R),j=d?u:S,m=o.useCallback(i=>{d||_(i),p?.(i)},[d,p]),k=o.useMemo(()=>I(t,s),[s,t]),B=o.useMemo(()=>U(t,s),[s,t]),h=e.jsxRuntimeExports.jsxs("div",{className:"flex max-h-[75vh] flex-col gap-3",children:[e.jsxRuntimeExports.jsx("div",{className:"overflow-hidden rounded-md border",children:e.jsxRuntimeExports.jsx("iframe",{title:l,src:B,className:"h-[560px] w-full border-0",loading:"lazy",referrerPolicy:"strict-origin-when-cross-origin"})}),e.jsxRuntimeExports.jsxs("div",{className:"text-muted-foreground flex items-center justify-between gap-2 text-xs",children:[e.jsxRuntimeExports.jsx("span",{children:"If the embedded checkout is unavailable, open the support page directly."}),e.jsxRuntimeExports.jsxs("a",{href:k,target:"_blank",rel:"noopener noreferrer",className:"text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2",children:["Open Buy Me a Coffee",e.jsxRuntimeExports.jsx(e.ExternalLink,{className:"h-3.5 w-3.5"})]})]})]}),b=e.jsxRuntimeExports.jsx("div",{className:x.cn("fixed right-6 bottom-6 z-50",y),children:e.jsxRuntimeExports.jsxs(P.Button,{"aria-label":"Support this project",type:D??"button",className:x.cn("inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95",v,M),onClick:i=>{N?.(i),i.defaultPrevented||m(!0)},...C,children:[e.jsxRuntimeExports.jsx(e.Coffee,{className:"h-6 w-6"}),e.jsxRuntimeExports.jsx("span",{className:"sr-only",children:"Support this project"})]})});return O?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[b,e.jsxRuntimeExports.jsx(c.Drawer,{open:j,onOpenChange:m,children:e.jsxRuntimeExports.jsxs(c.DrawerContent,{className:x.cn("mx-auto w-full max-w-xl",f),children:[e.jsxRuntimeExports.jsxs(c.DrawerHeader,{children:[e.jsxRuntimeExports.jsx(c.DrawerTitle,{children:n}),e.jsxRuntimeExports.jsx(c.DrawerDescription,{children:r})]}),e.jsxRuntimeExports.jsx("div",{className:"px-4 pb-4",children:h})]})})]}):e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[b,e.jsxRuntimeExports.jsx(a.Dialog,{open:j,onOpenChange:m,children:e.jsxRuntimeExports.jsxs(a.DialogContent,{className:x.cn("max-w-xl p-5",f),children:[e.jsxRuntimeExports.jsxs(a.DialogHeader,{children:[e.jsxRuntimeExports.jsx(a.DialogTitle,{children:n}),e.jsxRuntimeExports.jsx(a.DialogDescription,{children:r})]}),h]})})]})}exports.SupportFab=L;
2
- //# sourceMappingURL=support-fab.cjs.map
1
+ "use client";"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./rolldown-runtime-CacfPODE.js`),t=require(`./vendor-D3ZzLf8D.js`),n=require(`./utils-CbSX47LV.js`),r=require(`./button.cjs`),i=require(`./dialog.cjs`),a=require(`./drawer.cjs`);let o=require(`react`);o=e.r(o);var s=t.vr(),c=`(max-width: 767px)`,l=e=>{let t=e.trim();return t.endsWith(`/`)?t.slice(0,-1):t},u=e=>e.trim().replace(/^@+/,``),d=(e,t)=>`${l(e)}/${encodeURIComponent(u(t))}`,f=(e,t)=>`${l(e)}/widget/page/${encodeURIComponent(u(t))}`,p=()=>{let[e,t]=o.useState(()=>typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(c).matches);return o.useEffect(()=>{if(typeof window>`u`||typeof window.matchMedia!=`function`)return;let e=window.matchMedia(c),n=e=>t(e.matches);return t(e.matches),e.addEventListener(`change`,n),()=>{e.removeEventListener(`change`,n)}},[]),e};function m({supportUrl:e=`https://www.buymeacoffee.com`,creatorId:c,title:l=`Buy me a coffee`,description:u=`Support the project directly from this panel.`,iframeTitle:m=`Buy Me a Coffee support form`,open:h,defaultOpen:g=!1,onOpenChange:_,positionClassName:v,buttonClassName:y,panelClassName:b,className:x,type:S,onClick:C,...w}){let T=p(),E=h!==void 0,[D,O]=o.useState(g),k=E?h:D,A=o.useCallback(e=>{E||O(e),_?.(e)},[E,_]),j=o.useMemo(()=>d(e,c),[c,e]),M=(0,s.jsxs)(`div`,{className:`flex max-h-[75vh] flex-col gap-3`,children:[(0,s.jsx)(`div`,{className:`overflow-hidden rounded-md border`,children:(0,s.jsx)(`iframe`,{title:m,src:o.useMemo(()=>f(e,c),[c,e]),className:`h-[560px] w-full border-0`,loading:`lazy`,referrerPolicy:`strict-origin-when-cross-origin`})}),(0,s.jsxs)(`div`,{className:`text-muted-foreground flex items-center justify-between gap-2 text-xs`,children:[(0,s.jsx)(`span`,{children:`If the embedded checkout is unavailable, open the support page directly.`}),(0,s.jsxs)(`a`,{href:j,target:`_blank`,rel:`noopener noreferrer`,className:`text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2`,children:[`Open Buy Me a Coffee`,(0,s.jsx)(t.Qn,{className:`h-3.5 w-3.5`})]})]})]}),N=(0,s.jsx)(`div`,{className:n.t(`fixed right-6 bottom-6 z-50`,v),children:(0,s.jsxs)(r.Button,{"aria-label":`Support this project`,type:S??`button`,className:n.t(`inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95`,y,x),onClick:e=>{C?.(e),e.defaultPrevented||A(!0)},...w,children:[(0,s.jsx)(t.er,{className:`h-6 w-6`}),(0,s.jsx)(`span`,{className:`sr-only`,children:`Support this project`})]})});return T?(0,s.jsxs)(s.Fragment,{children:[N,(0,s.jsx)(a.Drawer,{open:k,onOpenChange:A,children:(0,s.jsxs)(a.DrawerContent,{className:n.t(`mx-auto w-full max-w-xl`,b),children:[(0,s.jsxs)(a.DrawerHeader,{children:[(0,s.jsx)(a.DrawerTitle,{children:l}),(0,s.jsx)(a.DrawerDescription,{children:u})]}),(0,s.jsx)(`div`,{className:`px-4 pb-4`,children:M})]})})]}):(0,s.jsxs)(s.Fragment,{children:[N,(0,s.jsx)(i.Dialog,{open:k,onOpenChange:A,children:(0,s.jsxs)(i.DialogContent,{className:n.t(`max-w-xl p-5`,b),children:[(0,s.jsxs)(i.DialogHeader,{children:[(0,s.jsx)(i.DialogTitle,{children:l}),(0,s.jsx)(i.DialogDescription,{children:u})]}),M]})})]})}exports.SupportFab=m;
2
+ //# sourceMappingURL=support-fab.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"support-fab.cjs","sources":["../packages/ui-web/src/support-fab.tsx"],"sourcesContent":["'use client';\n\nimport { Coffee, ExternalLink } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog';\nimport { Drawer, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle } from './drawer';\nimport { cn } from './lib/utils';\n\nconst MOBILE_QUERY = '(max-width: 767px)';\n\nconst normalizeBaseUrl = (url: string) => {\n const trimmed = url.trim();\n return trimmed.endsWith('/') ? trimmed.slice(0, -1) : trimmed;\n};\n\nconst sanitizeCreator = (creatorId: string) => creatorId.trim().replace(/^@+/, '');\n\nconst buildPageUrl = (supportUrl: string, creatorId: string) => {\n const base = normalizeBaseUrl(supportUrl);\n const creator = encodeURIComponent(sanitizeCreator(creatorId));\n return `${base}/${creator}`;\n};\n\nconst buildEmbedUrl = (supportUrl: string, creatorId: string) => {\n const base = normalizeBaseUrl(supportUrl);\n const creator = encodeURIComponent(sanitizeCreator(creatorId));\n return `${base}/widget/page/${creator}`;\n};\n\nconst useIsMobile = () => {\n const getInitial = () => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia(MOBILE_QUERY).matches;\n };\n\n const [isMobile, setIsMobile] = React.useState(getInitial);\n\n React.useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n const mediaQuery = window.matchMedia(MOBILE_QUERY);\n const onChange = (event: MediaQueryListEvent) => setIsMobile(event.matches);\n\n setIsMobile(mediaQuery.matches);\n mediaQuery.addEventListener('change', onChange);\n\n return () => {\n mediaQuery.removeEventListener('change', onChange);\n };\n }, []);\n\n return isMobile;\n};\n\nexport interface SupportFabProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n supportUrl?: string;\n creatorId: string;\n title?: string;\n description?: string;\n iframeTitle?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n positionClassName?: string;\n buttonClassName?: string;\n panelClassName?: string;\n}\n\nexport function SupportFab({\n supportUrl = 'https://www.buymeacoffee.com',\n creatorId,\n title = 'Buy me a coffee',\n description = 'Support the project directly from this panel.',\n iframeTitle = 'Buy Me a Coffee support form',\n open,\n defaultOpen = false,\n onOpenChange,\n positionClassName,\n buttonClassName,\n panelClassName,\n className,\n type,\n onClick,\n ...buttonProps\n}: SupportFabProps) {\n const isMobile = useIsMobile();\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const isOpen = isControlled ? open : internalOpen;\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const pageUrl = React.useMemo(() => buildPageUrl(supportUrl, creatorId), [creatorId, supportUrl]);\n const embedUrl = React.useMemo(() => buildEmbedUrl(supportUrl, creatorId), [creatorId, supportUrl]);\n\n const panelBody = (\n <div className=\"flex max-h-[75vh] flex-col gap-3\">\n <div className=\"overflow-hidden rounded-md border\">\n <iframe\n title={iframeTitle}\n src={embedUrl}\n className=\"h-[560px] w-full border-0\"\n loading=\"lazy\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n />\n </div>\n <div className=\"text-muted-foreground flex items-center justify-between gap-2 text-xs\">\n <span>If the embedded checkout is unavailable, open the support page directly.</span>\n <a\n href={pageUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2\"\n >\n Open Buy Me a Coffee\n <ExternalLink className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n </div>\n );\n\n const trigger = (\n <div className={cn('fixed right-6 bottom-6 z-50', positionClassName)}>\n <Button\n aria-label=\"Support this project\"\n type={type ?? 'button'}\n className={cn(\n 'inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95',\n buttonClassName,\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...buttonProps}\n >\n <Coffee className=\"h-6 w-6\" />\n <span className=\"sr-only\">Support this project</span>\n </Button>\n </div>\n );\n\n if (isMobile) {\n return (\n <>\n {trigger}\n <Drawer open={isOpen} onOpenChange={setOpen}>\n <DrawerContent className={cn('mx-auto w-full max-w-xl', panelClassName)}>\n <DrawerHeader>\n <DrawerTitle>{title}</DrawerTitle>\n <DrawerDescription>{description}</DrawerDescription>\n </DrawerHeader>\n <div className=\"px-4 pb-4\">{panelBody}</div>\n </DrawerContent>\n </Drawer>\n </>\n );\n }\n\n return (\n <>\n {trigger}\n <Dialog open={isOpen} onOpenChange={setOpen}>\n <DialogContent className={cn('max-w-xl p-5', panelClassName)}>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n {panelBody}\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"names":["MOBILE_QUERY","normalizeBaseUrl","url","trimmed","sanitizeCreator","creatorId","buildPageUrl","supportUrl","base","creator","buildEmbedUrl","useIsMobile","getInitial","isMobile","setIsMobile","React","mediaQuery","onChange","event","SupportFab","title","description","iframeTitle","open","defaultOpen","onOpenChange","positionClassName","buttonClassName","panelClassName","className","type","onClick","buttonProps","isControlled","internalOpen","setInternalOpen","isOpen","setOpen","nextOpen","pageUrl","embedUrl","panelBody","jsxs","jsx","ExternalLink","trigger","cn","Button","Coffee","Fragment","Drawer","DrawerContent","DrawerHeader","DrawerTitle","DrawerDescription","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription"],"mappings":"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"}
1
+ {"version":3,"file":"support-fab.cjs","names":[],"sources":["../packages/ui-web/src/support-fab.tsx"],"sourcesContent":["'use client';\n\nimport { Coffee, ExternalLink } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog';\nimport { Drawer, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle } from './drawer';\nimport { cn } from './lib/utils';\n\nconst MOBILE_QUERY = '(max-width: 767px)';\n\nconst normalizeBaseUrl = (url: string) => {\n const trimmed = url.trim();\n return trimmed.endsWith('/') ? trimmed.slice(0, -1) : trimmed;\n};\n\nconst sanitizeCreator = (creatorId: string) => creatorId.trim().replace(/^@+/, '');\n\nconst buildPageUrl = (supportUrl: string, creatorId: string) => {\n const base = normalizeBaseUrl(supportUrl);\n const creator = encodeURIComponent(sanitizeCreator(creatorId));\n return `${base}/${creator}`;\n};\n\nconst buildEmbedUrl = (supportUrl: string, creatorId: string) => {\n const base = normalizeBaseUrl(supportUrl);\n const creator = encodeURIComponent(sanitizeCreator(creatorId));\n return `${base}/widget/page/${creator}`;\n};\n\nconst useIsMobile = () => {\n const getInitial = () => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia(MOBILE_QUERY).matches;\n };\n\n const [isMobile, setIsMobile] = React.useState(getInitial);\n\n React.useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n const mediaQuery = window.matchMedia(MOBILE_QUERY);\n const onChange = (event: MediaQueryListEvent) => setIsMobile(event.matches);\n\n setIsMobile(mediaQuery.matches);\n mediaQuery.addEventListener('change', onChange);\n\n return () => {\n mediaQuery.removeEventListener('change', onChange);\n };\n }, []);\n\n return isMobile;\n};\n\nexport interface SupportFabProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n supportUrl?: string;\n creatorId: string;\n title?: string;\n description?: string;\n iframeTitle?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n positionClassName?: string;\n buttonClassName?: string;\n panelClassName?: string;\n}\n\nexport function SupportFab({\n supportUrl = 'https://www.buymeacoffee.com',\n creatorId,\n title = 'Buy me a coffee',\n description = 'Support the project directly from this panel.',\n iframeTitle = 'Buy Me a Coffee support form',\n open,\n defaultOpen = false,\n onOpenChange,\n positionClassName,\n buttonClassName,\n panelClassName,\n className,\n type,\n onClick,\n ...buttonProps\n}: SupportFabProps) {\n const isMobile = useIsMobile();\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const isOpen = isControlled ? open : internalOpen;\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const pageUrl = React.useMemo(() => buildPageUrl(supportUrl, creatorId), [creatorId, supportUrl]);\n const embedUrl = React.useMemo(() => buildEmbedUrl(supportUrl, creatorId), [creatorId, supportUrl]);\n\n const panelBody = (\n <div className=\"flex max-h-[75vh] flex-col gap-3\">\n <div className=\"overflow-hidden rounded-md border\">\n <iframe\n title={iframeTitle}\n src={embedUrl}\n className=\"h-[560px] w-full border-0\"\n loading=\"lazy\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n />\n </div>\n <div className=\"text-muted-foreground flex items-center justify-between gap-2 text-xs\">\n <span>If the embedded checkout is unavailable, open the support page directly.</span>\n <a\n href={pageUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2\"\n >\n Open Buy Me a Coffee\n <ExternalLink className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n </div>\n );\n\n const trigger = (\n <div className={cn('fixed right-6 bottom-6 z-50', positionClassName)}>\n <Button\n aria-label=\"Support this project\"\n type={type ?? 'button'}\n className={cn(\n 'inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95',\n buttonClassName,\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...buttonProps}\n >\n <Coffee className=\"h-6 w-6\" />\n <span className=\"sr-only\">Support this project</span>\n </Button>\n </div>\n );\n\n if (isMobile) {\n return (\n <>\n {trigger}\n <Drawer open={isOpen} onOpenChange={setOpen}>\n <DrawerContent className={cn('mx-auto w-full max-w-xl', panelClassName)}>\n <DrawerHeader>\n <DrawerTitle>{title}</DrawerTitle>\n <DrawerDescription>{description}</DrawerDescription>\n </DrawerHeader>\n <div className=\"px-4 pb-4\">{panelBody}</div>\n </DrawerContent>\n </Drawer>\n </>\n );\n }\n\n return (\n <>\n {trigger}\n <Dialog open={isOpen} onOpenChange={setOpen}>\n <DialogContent className={cn('max-w-xl p-5', panelClassName)}>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n {panelBody}\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"mappings":"6UASM,EAAe,qBAEf,EAAoB,GAAgB,CACxC,IAAM,EAAU,EAAI,MAAM,CAC1B,OAAO,EAAQ,SAAS,IAAI,CAAG,EAAQ,MAAM,EAAG,GAAG,CAAG,GAGlD,EAAmB,GAAsB,EAAU,MAAM,CAAC,QAAQ,MAAO,GAAG,CAE5E,GAAgB,EAAoB,IAGjC,GAFM,EAAiB,EAAW,CAE1B,GADC,mBAAmB,EAAgB,EAAU,CAAC,GAI1D,GAAiB,EAAoB,IAGlC,GAFM,EAAiB,EAAW,CAE1B,eADC,mBAAmB,EAAgB,EAAU,CAAC,GAI1D,MAAoB,CAQxB,GAAM,CAAC,EAAU,GAAe,EAAM,aANhC,OAAO,OAAW,KAAe,OAAO,OAAO,YAAe,WACzD,GAEF,OAAO,WAAW,EAAa,CAAC,QAGiB,CAkB1D,OAhBA,EAAM,cAAgB,CACpB,GAAI,OAAO,OAAW,KAAe,OAAO,OAAO,YAAe,WAChE,OAGF,IAAM,EAAa,OAAO,WAAW,EAAa,CAC5C,EAAY,GAA+B,EAAY,EAAM,QAAQ,CAK3E,OAHA,EAAY,EAAW,QAAQ,CAC/B,EAAW,iBAAiB,SAAU,EAAS,KAElC,CACX,EAAW,oBAAoB,SAAU,EAAS,GAEnD,EAAE,CAAC,CAEC,GAiBT,SAAgB,EAAW,CACzB,aAAa,+BACb,YACA,QAAQ,kBACR,cAAc,gDACd,cAAc,+BACd,OACA,cAAc,GACd,eACA,oBACA,kBACA,iBACA,YACA,OACA,UACA,GAAG,GACe,CAClB,IAAM,EAAW,GAAa,CACxB,EAAe,IAAS,IAAA,GACxB,CAAC,EAAc,GAAmB,EAAM,SAAS,EAAY,CAC7D,EAAS,EAAe,EAAO,EAE/B,EAAU,EAAM,YACnB,GAAsB,CAChB,GACH,EAAgB,EAAS,CAE3B,IAAe,EAAS,EAE1B,CAAC,EAAc,EAAa,CAC7B,CAEK,EAAU,EAAM,YAAc,EAAa,EAAY,EAAU,CAAE,CAAC,EAAW,EAAW,CAAC,CAG3F,GACJ,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,4CAAf,EACE,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,8CACb,EAAA,EAAA,KAAC,SAAD,CACE,MAAO,EACP,IAPS,EAAM,YAAc,EAAc,EAAY,EAAU,CAAE,CAAC,EAAW,EAAW,CAAC,CAQ3F,UAAU,4BACV,QAAQ,OACR,eAAe,kCACf,CAAA,CACE,CAAA,EACN,EAAA,EAAA,MAAC,MAAD,CAAK,UAAU,iFAAf,EACE,EAAA,EAAA,KAAC,OAAD,CAAA,SAAM,2EAA+E,CAAA,EACrF,EAAA,EAAA,MAAC,IAAD,CACE,KAAM,EACN,OAAO,SACP,IAAI,sBACJ,UAAU,mGAJZ,CAKC,wBAEC,EAAA,EAAA,KAAC,EAAA,GAAD,CAAc,UAAU,cAAgB,CAAA,CACtC,GACA,GACF,GAGF,GACJ,EAAA,EAAA,KAAC,MAAD,CAAK,UAAW,EAAA,EAAG,8BAA+B,EAAkB,WAClE,EAAA,EAAA,MAAC,EAAA,OAAD,CACE,aAAW,uBACX,KAAM,GAAQ,SACd,UAAW,EAAA,EACT,0RACA,EACA,EACD,CACD,QAAU,GAAU,CAClB,IAAU,EAAM,CACX,EAAM,kBACT,EAAQ,GAAK,EAGjB,GAAI,WAdN,EAgBE,EAAA,EAAA,KAAC,EAAA,GAAD,CAAQ,UAAU,UAAY,CAAA,EAC9B,EAAA,EAAA,KAAC,OAAD,CAAM,UAAU,mBAAU,uBAA2B,CAAA,CAC9C,GACL,CAAA,CAoBR,OAjBI,GAEA,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,GACD,EAAA,EAAA,KAAC,EAAA,OAAD,CAAQ,KAAM,EAAQ,aAAc,YAClC,EAAA,EAAA,MAAC,EAAA,cAAD,CAAe,UAAW,EAAA,EAAG,0BAA2B,EAAe,UAAvE,EACE,EAAA,EAAA,MAAC,EAAA,aAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAA,YAAD,CAAA,SAAc,EAAoB,CAAA,EAClC,EAAA,EAAA,KAAC,EAAA,kBAAD,CAAA,SAAoB,EAAgC,CAAA,CACvC,CAAA,CAAA,EACf,EAAA,EAAA,KAAC,MAAD,CAAK,UAAU,qBAAa,EAAgB,CAAA,CAC9B,GACT,CAAA,CACR,CAAA,CAAA,EAKL,EAAA,EAAA,MAAA,EAAA,SAAA,CAAA,SAAA,CACG,GACD,EAAA,EAAA,KAAC,EAAA,OAAD,CAAQ,KAAM,EAAQ,aAAc,YAClC,EAAA,EAAA,MAAC,EAAA,cAAD,CAAe,UAAW,EAAA,EAAG,eAAgB,EAAe,UAA5D,EACE,EAAA,EAAA,MAAC,EAAA,aAAD,CAAA,SAAA,EACE,EAAA,EAAA,KAAC,EAAA,YAAD,CAAA,SAAc,EAAoB,CAAA,EAClC,EAAA,EAAA,KAAC,EAAA,kBAAD,CAAA,SAAoB,EAAgC,CAAA,CACvC,CAAA,CAAA,CACd,EACa,GACT,CAAA,CACR,CAAA,CAAA"}
@@ -1,20 +1,2 @@
1
- import { JSX } from 'react/jsx-runtime';
2
- import * as React_2 from 'react';
3
-
4
- export declare function SupportFab({ supportUrl, creatorId, title, description, iframeTitle, open, defaultOpen, onOpenChange, positionClassName, buttonClassName, panelClassName, className, type, onClick, ...buttonProps }: SupportFabProps): JSX.Element;
5
-
6
- export declare interface SupportFabProps extends Omit<React_2.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
7
- supportUrl?: string;
8
- creatorId: string;
9
- title?: string;
10
- description?: string;
11
- iframeTitle?: string;
12
- open?: boolean;
13
- defaultOpen?: boolean;
14
- onOpenChange?: (open: boolean) => void;
15
- positionClassName?: string;
16
- buttonClassName?: string;
17
- panelClassName?: string;
18
- }
19
-
20
- export { }
1
+ export * from './packages/ui-web/src/support-fab'
2
+ export {}
@@ -1,120 +1,85 @@
1
1
  "use client";
2
- import { j as e, bh as _, bi as I } from "./vendor-BQwS7aJt.mjs";
3
- import * as o from "react";
4
- import { Button as R } from "./button.mjs";
5
- import { Dialog as U, DialogContent as z, DialogHeader as L, DialogTitle as $, DialogDescription as F } from "./dialog.mjs";
6
- import { Drawer as P, DrawerContent as H, DrawerHeader as Q, DrawerTitle as T, DrawerDescription as W } from "./drawer.mjs";
7
- import { c as l } from "./utils-Bgpn0CK0.mjs";
8
- const b = "(max-width: 767px)", g = (n) => {
9
- const t = n.trim();
10
- return t.endsWith("/") ? t.slice(0, -1) : t;
11
- }, w = (n) => n.trim().replace(/^@+/, ""), Y = (n, t) => {
12
- const s = g(n), r = encodeURIComponent(w(t));
13
- return `${s}/${r}`;
14
- }, q = (n, t) => {
15
- const s = g(n), r = encodeURIComponent(w(t));
16
- return `${s}/widget/page/${r}`;
17
- }, A = () => {
18
- const n = () => typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia(b).matches, [t, s] = o.useState(n);
19
- return o.useEffect(() => {
20
- if (typeof window > "u" || typeof window.matchMedia != "function")
21
- return;
22
- const r = window.matchMedia(b), a = (c) => s(c.matches);
23
- return s(r.matches), r.addEventListener("change", a), () => {
24
- r.removeEventListener("change", a);
25
- };
26
- }, []), t;
2
+ "use client";
3
+ import { Qn as e, er as t, vr as n } from "./vendor-Cr0eKZrm.mjs";
4
+ import { t as r } from "./utils-BtI8Nf6i.mjs";
5
+ import { Button as i } from "./button.mjs";
6
+ import { Dialog as a, DialogContent as o, DialogDescription as s, DialogHeader as c, DialogTitle as l } from "./dialog.mjs";
7
+ import { Drawer as u, DrawerContent as d, DrawerDescription as f, DrawerHeader as p, DrawerTitle as m } from "./drawer.mjs";
8
+ import * as h from "react";
9
+ //#region packages/ui-web/src/support-fab.tsx
10
+ var g = n(), _ = "(max-width: 767px)", v = (e) => {
11
+ let t = e.trim();
12
+ return t.endsWith("/") ? t.slice(0, -1) : t;
13
+ }, y = (e) => e.trim().replace(/^@+/, ""), b = (e, t) => `${v(e)}/${encodeURIComponent(y(t))}`, x = (e, t) => `${v(e)}/widget/page/${encodeURIComponent(y(t))}`, S = () => {
14
+ let [e, t] = h.useState(() => typeof window > "u" || typeof window.matchMedia != "function" ? !1 : window.matchMedia(_).matches);
15
+ return h.useEffect(() => {
16
+ if (typeof window > "u" || typeof window.matchMedia != "function") return;
17
+ let e = window.matchMedia(_), n = (e) => t(e.matches);
18
+ return t(e.matches), e.addEventListener("change", n), () => {
19
+ e.removeEventListener("change", n);
20
+ };
21
+ }, []), e;
27
22
  };
28
- function Z({
29
- supportUrl: n = "https://www.buymeacoffee.com",
30
- creatorId: t,
31
- title: s = "Buy me a coffee",
32
- description: r = "Support the project directly from this panel.",
33
- iframeTitle: a = "Buy Me a Coffee support form",
34
- open: c,
35
- defaultOpen: j = !1,
36
- onOpenChange: m,
37
- positionClassName: v,
38
- buttonClassName: y,
39
- panelClassName: h,
40
- className: M,
41
- type: C,
42
- onClick: D,
43
- ...N
44
- }) {
45
- const E = A(), d = c !== void 0, [k, B] = o.useState(j), u = d ? c : k, f = o.useCallback(
46
- (i) => {
47
- d || B(i), m?.(i);
48
- },
49
- [d, m]
50
- ), O = o.useMemo(() => Y(n, t), [t, n]), S = o.useMemo(() => q(n, t), [t, n]), p = /* @__PURE__ */ e.jsxs("div", { className: "flex max-h-[75vh] flex-col gap-3", children: [
51
- /* @__PURE__ */ e.jsx("div", { className: "overflow-hidden rounded-md border", children: /* @__PURE__ */ e.jsx(
52
- "iframe",
53
- {
54
- title: a,
55
- src: S,
56
- className: "h-[560px] w-full border-0",
57
- loading: "lazy",
58
- referrerPolicy: "strict-origin-when-cross-origin"
59
- }
60
- ) }),
61
- /* @__PURE__ */ e.jsxs("div", { className: "text-muted-foreground flex items-center justify-between gap-2 text-xs", children: [
62
- /* @__PURE__ */ e.jsx("span", { children: "If the embedded checkout is unavailable, open the support page directly." }),
63
- /* @__PURE__ */ e.jsxs(
64
- "a",
65
- {
66
- href: O,
67
- target: "_blank",
68
- rel: "noopener noreferrer",
69
- className: "text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2",
70
- children: [
71
- "Open Buy Me a Coffee",
72
- /* @__PURE__ */ e.jsx(I, { className: "h-3.5 w-3.5" })
73
- ]
74
- }
75
- )
76
- ] })
77
- ] }), x = /* @__PURE__ */ e.jsx("div", { className: l("fixed right-6 bottom-6 z-50", v), children: /* @__PURE__ */ e.jsxs(
78
- R,
79
- {
80
- "aria-label": "Support this project",
81
- type: C ?? "button",
82
- className: l(
83
- "inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95",
84
- y,
85
- M
86
- ),
87
- onClick: (i) => {
88
- D?.(i), i.defaultPrevented || f(!0);
89
- },
90
- ...N,
91
- children: [
92
- /* @__PURE__ */ e.jsx(_, { className: "h-6 w-6" }),
93
- /* @__PURE__ */ e.jsx("span", { className: "sr-only", children: "Support this project" })
94
- ]
95
- }
96
- ) });
97
- return E ? /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
98
- x,
99
- /* @__PURE__ */ e.jsx(P, { open: u, onOpenChange: f, children: /* @__PURE__ */ e.jsxs(H, { className: l("mx-auto w-full max-w-xl", h), children: [
100
- /* @__PURE__ */ e.jsxs(Q, { children: [
101
- /* @__PURE__ */ e.jsx(T, { children: s }),
102
- /* @__PURE__ */ e.jsx(W, { children: r })
103
- ] }),
104
- /* @__PURE__ */ e.jsx("div", { className: "px-4 pb-4", children: p })
105
- ] }) })
106
- ] }) : /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
107
- x,
108
- /* @__PURE__ */ e.jsx(U, { open: u, onOpenChange: f, children: /* @__PURE__ */ e.jsxs(z, { className: l("max-w-xl p-5", h), children: [
109
- /* @__PURE__ */ e.jsxs(L, { children: [
110
- /* @__PURE__ */ e.jsx($, { children: s }),
111
- /* @__PURE__ */ e.jsx(F, { children: r })
112
- ] }),
113
- p
114
- ] }) })
115
- ] });
23
+ function C({ supportUrl: n = "https://www.buymeacoffee.com", creatorId: _, title: v = "Buy me a coffee", description: y = "Support the project directly from this panel.", iframeTitle: C = "Buy Me a Coffee support form", open: w, defaultOpen: T = !1, onOpenChange: E, positionClassName: D, buttonClassName: O, panelClassName: k, className: A, type: j, onClick: M, ...N }) {
24
+ let P = S(), F = w !== void 0, [I, L] = h.useState(T), R = F ? w : I, z = h.useCallback((e) => {
25
+ F || L(e), E?.(e);
26
+ }, [F, E]), B = h.useMemo(() => b(n, _), [_, n]), V = /* @__PURE__ */ (0, g.jsxs)("div", {
27
+ className: "flex max-h-[75vh] flex-col gap-3",
28
+ children: [/* @__PURE__ */ (0, g.jsx)("div", {
29
+ className: "overflow-hidden rounded-md border",
30
+ children: /* @__PURE__ */ (0, g.jsx)("iframe", {
31
+ title: C,
32
+ src: h.useMemo(() => x(n, _), [_, n]),
33
+ className: "h-[560px] w-full border-0",
34
+ loading: "lazy",
35
+ referrerPolicy: "strict-origin-when-cross-origin"
36
+ })
37
+ }), /* @__PURE__ */ (0, g.jsxs)("div", {
38
+ className: "text-muted-foreground flex items-center justify-between gap-2 text-xs",
39
+ children: [/* @__PURE__ */ (0, g.jsx)("span", { children: "If the embedded checkout is unavailable, open the support page directly." }), /* @__PURE__ */ (0, g.jsxs)("a", {
40
+ href: B,
41
+ target: "_blank",
42
+ rel: "noopener noreferrer",
43
+ className: "text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2",
44
+ children: ["Open Buy Me a Coffee", /* @__PURE__ */ (0, g.jsx)(e, { className: "h-3.5 w-3.5" })]
45
+ })]
46
+ })]
47
+ }), H = /* @__PURE__ */ (0, g.jsx)("div", {
48
+ className: r("fixed right-6 bottom-6 z-50", D),
49
+ children: /* @__PURE__ */ (0, g.jsxs)(i, {
50
+ "aria-label": "Support this project",
51
+ type: j ?? "button",
52
+ className: r("inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95", O, A),
53
+ onClick: (e) => {
54
+ M?.(e), e.defaultPrevented || z(!0);
55
+ },
56
+ ...N,
57
+ children: [/* @__PURE__ */ (0, g.jsx)(t, { className: "h-6 w-6" }), /* @__PURE__ */ (0, g.jsx)("span", {
58
+ className: "sr-only",
59
+ children: "Support this project"
60
+ })]
61
+ })
62
+ });
63
+ return P ? /* @__PURE__ */ (0, g.jsxs)(g.Fragment, { children: [H, /* @__PURE__ */ (0, g.jsx)(u, {
64
+ open: R,
65
+ onOpenChange: z,
66
+ children: /* @__PURE__ */ (0, g.jsxs)(d, {
67
+ className: r("mx-auto w-full max-w-xl", k),
68
+ children: [/* @__PURE__ */ (0, g.jsxs)(p, { children: [/* @__PURE__ */ (0, g.jsx)(m, { children: v }), /* @__PURE__ */ (0, g.jsx)(f, { children: y })] }), /* @__PURE__ */ (0, g.jsx)("div", {
69
+ className: "px-4 pb-4",
70
+ children: V
71
+ })]
72
+ })
73
+ })] }) : /* @__PURE__ */ (0, g.jsxs)(g.Fragment, { children: [H, /* @__PURE__ */ (0, g.jsx)(a, {
74
+ open: R,
75
+ onOpenChange: z,
76
+ children: /* @__PURE__ */ (0, g.jsxs)(o, {
77
+ className: r("max-w-xl p-5", k),
78
+ children: [/* @__PURE__ */ (0, g.jsxs)(c, { children: [/* @__PURE__ */ (0, g.jsx)(l, { children: v }), /* @__PURE__ */ (0, g.jsx)(s, { children: y })] }), V]
79
+ })
80
+ })] });
116
81
  }
117
- export {
118
- Z as SupportFab
119
- };
120
- //# sourceMappingURL=support-fab.mjs.map
82
+ //#endregion
83
+ export { C as SupportFab };
84
+
85
+ //# sourceMappingURL=support-fab.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"support-fab.mjs","sources":["../packages/ui-web/src/support-fab.tsx"],"sourcesContent":["'use client';\n\nimport { Coffee, ExternalLink } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog';\nimport { Drawer, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle } from './drawer';\nimport { cn } from './lib/utils';\n\nconst MOBILE_QUERY = '(max-width: 767px)';\n\nconst normalizeBaseUrl = (url: string) => {\n const trimmed = url.trim();\n return trimmed.endsWith('/') ? trimmed.slice(0, -1) : trimmed;\n};\n\nconst sanitizeCreator = (creatorId: string) => creatorId.trim().replace(/^@+/, '');\n\nconst buildPageUrl = (supportUrl: string, creatorId: string) => {\n const base = normalizeBaseUrl(supportUrl);\n const creator = encodeURIComponent(sanitizeCreator(creatorId));\n return `${base}/${creator}`;\n};\n\nconst buildEmbedUrl = (supportUrl: string, creatorId: string) => {\n const base = normalizeBaseUrl(supportUrl);\n const creator = encodeURIComponent(sanitizeCreator(creatorId));\n return `${base}/widget/page/${creator}`;\n};\n\nconst useIsMobile = () => {\n const getInitial = () => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia(MOBILE_QUERY).matches;\n };\n\n const [isMobile, setIsMobile] = React.useState(getInitial);\n\n React.useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n const mediaQuery = window.matchMedia(MOBILE_QUERY);\n const onChange = (event: MediaQueryListEvent) => setIsMobile(event.matches);\n\n setIsMobile(mediaQuery.matches);\n mediaQuery.addEventListener('change', onChange);\n\n return () => {\n mediaQuery.removeEventListener('change', onChange);\n };\n }, []);\n\n return isMobile;\n};\n\nexport interface SupportFabProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n supportUrl?: string;\n creatorId: string;\n title?: string;\n description?: string;\n iframeTitle?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n positionClassName?: string;\n buttonClassName?: string;\n panelClassName?: string;\n}\n\nexport function SupportFab({\n supportUrl = 'https://www.buymeacoffee.com',\n creatorId,\n title = 'Buy me a coffee',\n description = 'Support the project directly from this panel.',\n iframeTitle = 'Buy Me a Coffee support form',\n open,\n defaultOpen = false,\n onOpenChange,\n positionClassName,\n buttonClassName,\n panelClassName,\n className,\n type,\n onClick,\n ...buttonProps\n}: SupportFabProps) {\n const isMobile = useIsMobile();\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const isOpen = isControlled ? open : internalOpen;\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const pageUrl = React.useMemo(() => buildPageUrl(supportUrl, creatorId), [creatorId, supportUrl]);\n const embedUrl = React.useMemo(() => buildEmbedUrl(supportUrl, creatorId), [creatorId, supportUrl]);\n\n const panelBody = (\n <div className=\"flex max-h-[75vh] flex-col gap-3\">\n <div className=\"overflow-hidden rounded-md border\">\n <iframe\n title={iframeTitle}\n src={embedUrl}\n className=\"h-[560px] w-full border-0\"\n loading=\"lazy\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n />\n </div>\n <div className=\"text-muted-foreground flex items-center justify-between gap-2 text-xs\">\n <span>If the embedded checkout is unavailable, open the support page directly.</span>\n <a\n href={pageUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2\"\n >\n Open Buy Me a Coffee\n <ExternalLink className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n </div>\n );\n\n const trigger = (\n <div className={cn('fixed right-6 bottom-6 z-50', positionClassName)}>\n <Button\n aria-label=\"Support this project\"\n type={type ?? 'button'}\n className={cn(\n 'inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95',\n buttonClassName,\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...buttonProps}\n >\n <Coffee className=\"h-6 w-6\" />\n <span className=\"sr-only\">Support this project</span>\n </Button>\n </div>\n );\n\n if (isMobile) {\n return (\n <>\n {trigger}\n <Drawer open={isOpen} onOpenChange={setOpen}>\n <DrawerContent className={cn('mx-auto w-full max-w-xl', panelClassName)}>\n <DrawerHeader>\n <DrawerTitle>{title}</DrawerTitle>\n <DrawerDescription>{description}</DrawerDescription>\n </DrawerHeader>\n <div className=\"px-4 pb-4\">{panelBody}</div>\n </DrawerContent>\n </Drawer>\n </>\n );\n }\n\n return (\n <>\n {trigger}\n <Dialog open={isOpen} onOpenChange={setOpen}>\n <DialogContent className={cn('max-w-xl p-5', panelClassName)}>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n {panelBody}\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"names":["MOBILE_QUERY","normalizeBaseUrl","url","trimmed","sanitizeCreator","creatorId","buildPageUrl","supportUrl","base","creator","buildEmbedUrl","useIsMobile","getInitial","isMobile","setIsMobile","React","mediaQuery","onChange","event","SupportFab","title","description","iframeTitle","open","defaultOpen","onOpenChange","positionClassName","buttonClassName","panelClassName","className","type","onClick","buttonProps","isControlled","internalOpen","setInternalOpen","isOpen","setOpen","nextOpen","pageUrl","embedUrl","panelBody","jsxs","jsx","ExternalLink","trigger","cn","Button","Coffee","Fragment","Drawer","DrawerContent","DrawerHeader","DrawerTitle","DrawerDescription","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription"],"mappings":"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"}
1
+ {"version":3,"file":"support-fab.mjs","names":[],"sources":["../packages/ui-web/src/support-fab.tsx"],"sourcesContent":["'use client';\n\nimport { Coffee, ExternalLink } from 'lucide-react';\nimport * as React from 'react';\nimport { Button } from './button';\nimport { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from './dialog';\nimport { Drawer, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle } from './drawer';\nimport { cn } from './lib/utils';\n\nconst MOBILE_QUERY = '(max-width: 767px)';\n\nconst normalizeBaseUrl = (url: string) => {\n const trimmed = url.trim();\n return trimmed.endsWith('/') ? trimmed.slice(0, -1) : trimmed;\n};\n\nconst sanitizeCreator = (creatorId: string) => creatorId.trim().replace(/^@+/, '');\n\nconst buildPageUrl = (supportUrl: string, creatorId: string) => {\n const base = normalizeBaseUrl(supportUrl);\n const creator = encodeURIComponent(sanitizeCreator(creatorId));\n return `${base}/${creator}`;\n};\n\nconst buildEmbedUrl = (supportUrl: string, creatorId: string) => {\n const base = normalizeBaseUrl(supportUrl);\n const creator = encodeURIComponent(sanitizeCreator(creatorId));\n return `${base}/widget/page/${creator}`;\n};\n\nconst useIsMobile = () => {\n const getInitial = () => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return false;\n }\n return window.matchMedia(MOBILE_QUERY).matches;\n };\n\n const [isMobile, setIsMobile] = React.useState(getInitial);\n\n React.useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') {\n return;\n }\n\n const mediaQuery = window.matchMedia(MOBILE_QUERY);\n const onChange = (event: MediaQueryListEvent) => setIsMobile(event.matches);\n\n setIsMobile(mediaQuery.matches);\n mediaQuery.addEventListener('change', onChange);\n\n return () => {\n mediaQuery.removeEventListener('change', onChange);\n };\n }, []);\n\n return isMobile;\n};\n\nexport interface SupportFabProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n supportUrl?: string;\n creatorId: string;\n title?: string;\n description?: string;\n iframeTitle?: string;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n positionClassName?: string;\n buttonClassName?: string;\n panelClassName?: string;\n}\n\nexport function SupportFab({\n supportUrl = 'https://www.buymeacoffee.com',\n creatorId,\n title = 'Buy me a coffee',\n description = 'Support the project directly from this panel.',\n iframeTitle = 'Buy Me a Coffee support form',\n open,\n defaultOpen = false,\n onOpenChange,\n positionClassName,\n buttonClassName,\n panelClassName,\n className,\n type,\n onClick,\n ...buttonProps\n}: SupportFabProps) {\n const isMobile = useIsMobile();\n const isControlled = open !== undefined;\n const [internalOpen, setInternalOpen] = React.useState(defaultOpen);\n const isOpen = isControlled ? open : internalOpen;\n\n const setOpen = React.useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) {\n setInternalOpen(nextOpen);\n }\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const pageUrl = React.useMemo(() => buildPageUrl(supportUrl, creatorId), [creatorId, supportUrl]);\n const embedUrl = React.useMemo(() => buildEmbedUrl(supportUrl, creatorId), [creatorId, supportUrl]);\n\n const panelBody = (\n <div className=\"flex max-h-[75vh] flex-col gap-3\">\n <div className=\"overflow-hidden rounded-md border\">\n <iframe\n title={iframeTitle}\n src={embedUrl}\n className=\"h-[560px] w-full border-0\"\n loading=\"lazy\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n />\n </div>\n <div className=\"text-muted-foreground flex items-center justify-between gap-2 text-xs\">\n <span>If the embedded checkout is unavailable, open the support page directly.</span>\n <a\n href={pageUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-foreground inline-flex items-center gap-1 font-medium underline underline-offset-2\"\n >\n Open Buy Me a Coffee\n <ExternalLink className=\"h-3.5 w-3.5\" />\n </a>\n </div>\n </div>\n );\n\n const trigger = (\n <div className={cn('fixed right-6 bottom-6 z-50', positionClassName)}>\n <Button\n aria-label=\"Support this project\"\n type={type ?? 'button'}\n className={cn(\n 'inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95',\n buttonClassName,\n className,\n )}\n onClick={(event) => {\n onClick?.(event);\n if (!event.defaultPrevented) {\n setOpen(true);\n }\n }}\n {...buttonProps}\n >\n <Coffee className=\"h-6 w-6\" />\n <span className=\"sr-only\">Support this project</span>\n </Button>\n </div>\n );\n\n if (isMobile) {\n return (\n <>\n {trigger}\n <Drawer open={isOpen} onOpenChange={setOpen}>\n <DrawerContent className={cn('mx-auto w-full max-w-xl', panelClassName)}>\n <DrawerHeader>\n <DrawerTitle>{title}</DrawerTitle>\n <DrawerDescription>{description}</DrawerDescription>\n </DrawerHeader>\n <div className=\"px-4 pb-4\">{panelBody}</div>\n </DrawerContent>\n </Drawer>\n </>\n );\n }\n\n return (\n <>\n {trigger}\n <Dialog open={isOpen} onOpenChange={setOpen}>\n <DialogContent className={cn('max-w-xl p-5', panelClassName)}>\n <DialogHeader>\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n {panelBody}\n </DialogContent>\n </Dialog>\n </>\n );\n}\n"],"mappings":"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"}
package/dist/switch.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./vendor-B_07FHqh.js"),a=require("react"),s=require("./utils-CBWPs0D7.js");function c(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const l=c(a),i=l.forwardRef(({className:e,...r},t)=>n.jsxRuntimeExports.jsx(n.Root$9,{className:s.cn("peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",e),...r,ref:t,children:n.jsxRuntimeExports.jsx(n.Thumb$1,{className:s.cn("bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));i.displayName=n.Root$9?.displayName||"Switch";exports.Switch=i;
2
- //# sourceMappingURL=switch.cjs.map
1
+ "use client";"use client";Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./rolldown-runtime-CacfPODE.js`),t=require(`./vendor-D3ZzLf8D.js`),n=require(`./utils-CbSX47LV.js`);let r=require(`react`);r=e.r(r);var i=t.vr(),a=r.forwardRef(({className:e,...r},a)=>(0,i.jsx)(t.y,{className:n.t(`peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50`,e),...r,ref:a,children:(0,i.jsx)(t.b,{className:n.t(`bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0`)})}));a.displayName=t.y?.displayName||`Switch`,exports.Switch=a;
2
+ //# sourceMappingURL=switch.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"switch.cjs","sources":["../packages/ui-web/src/switch.tsx"],"sourcesContent":["'use client';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { SwitchBaseProps } from '@gv-tech/ui-core';\nimport { cn } from './lib/utils';\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> & SwitchBaseProps\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root?.displayName || 'Switch';\n\nexport { Switch };\nexport type { SwitchBaseProps as SwitchProps };\n"],"names":["Switch","React","className","props","ref","jsx","SwitchPrimitives.Root","cn","SwitchPrimitives.Thumb"],"mappings":"mdAQMA,EAASC,EAAM,WAGnB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAACC,EAAAA,OAAA,CACC,UAAWC,EAAAA,GACT,8XACAL,CAAA,EAED,GAAGC,EACJ,IAAAC,EAEA,SAAAC,EAAAA,kBAAAA,IAACG,EAAAA,QAAA,CACC,UAAWD,EAAAA,GACT,4KAAA,CACF,CAAA,CACF,CACF,CACD,EACDP,EAAO,YAAcM,UAAuB,aAAe"}
1
+ {"version":3,"file":"switch.cjs","names":[],"sources":["../packages/ui-web/src/switch.tsx"],"sourcesContent":["'use client';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { SwitchBaseProps } from '@gv-tech/ui-core';\nimport { cn } from './lib/utils';\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> & SwitchBaseProps\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root?.displayName || 'Switch';\n\nexport { Switch };\nexport type { SwitchBaseProps as SwitchProps };\n"],"mappings":"+PAQM,EAAS,EAAM,YAGlB,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,KAAA,EAAA,EAAA,CACE,UAAW,EAAA,EACT,8XACA,EACD,CACD,GAAI,EACC,gBAEL,EAAA,EAAA,KAAA,EAAA,EAAA,CACE,UAAW,EAAA,EACT,6KACD,CACD,CAAA,CACoB,CAAA,CACxB,CACF,EAAO,YAAA,EAAA,GAAqC,aAAe"}
package/dist/switch.d.ts CHANGED
@@ -1,18 +1,2 @@
1
- import * as React_2 from 'react';
2
- import * as SwitchPrimitives from '@radix-ui/react-switch';
3
-
4
- export declare const Switch: React_2.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React_2.RefAttributes<HTMLButtonElement>, "ref"> & SwitchProps & React_2.RefAttributes<HTMLButtonElement>>;
5
-
6
- export declare interface SwitchProps {
7
- className?: string;
8
- checked?: boolean;
9
- defaultChecked?: boolean;
10
- required?: boolean;
11
- onCheckedChange?: (checked: boolean) => void;
12
- disabled?: boolean;
13
- name?: string;
14
- value?: string;
15
- id?: string;
16
- }
17
-
18
- export { }
1
+ export * from './packages/ui-web/src/switch'
2
+ export {}