@px-ui/ui 1.0.11 → 1.2.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 (291) hide show
  1. package/dist/{avatar-cLlUF5Lz.d.ts → avatar-BHChvx39.d.ts} +6 -6
  2. package/dist/{avatar-cLlUF5Lz.d.ts.map → avatar-BHChvx39.d.ts.map} +1 -1
  3. package/dist/{avatar-a40DzPi3.js → avatar-DnDnGmSj.js} +4 -4
  4. package/dist/{avatar-a40DzPi3.js.map → avatar-DnDnGmSj.js.map} +1 -1
  5. package/dist/{button-BJ727apo.d.ts → button-BhyEUVw7.d.ts} +6 -6
  6. package/dist/{button-BJ727apo.d.ts.map → button-BhyEUVw7.d.ts.map} +1 -1
  7. package/dist/{button-Cp2S1spE.js → button-DnHwqwy0.js} +2 -2
  8. package/dist/{button-Cp2S1spE.js.map → button-DnHwqwy0.js.map} +1 -1
  9. package/dist/checkbox-CwkX29tL.js +22 -0
  10. package/dist/checkbox-CwkX29tL.js.map +1 -0
  11. package/dist/collapsible-DsrYXIW5.js +28 -0
  12. package/dist/collapsible-DsrYXIW5.js.map +1 -0
  13. package/dist/{combobox-Di5naqIR.js → combobox-5IAivvXw.js} +9 -9
  14. package/dist/{combobox-Di5naqIR.js.map → combobox-5IAivvXw.js.map} +1 -1
  15. package/dist/{combobox-B73nb6Tq.d.ts → combobox-BMr1s-el.d.ts} +19 -19
  16. package/dist/combobox-BMr1s-el.d.ts.map +1 -0
  17. package/dist/components/accordion.d.ts +5 -5
  18. package/dist/components/accordion.d.ts.map +1 -1
  19. package/dist/components/accordion.js +2 -2
  20. package/dist/components/alert-dialog.d.ts +14 -14
  21. package/dist/components/alert-dialog.d.ts.map +1 -1
  22. package/dist/components/alert-dialog.js +3 -3
  23. package/dist/components/alert.d.ts +7 -7
  24. package/dist/components/alert.d.ts.map +1 -1
  25. package/dist/components/alert.js +2 -2
  26. package/dist/components/aspect-ratio.d.ts +2 -2
  27. package/dist/components/aspect-ratio.d.ts.map +1 -1
  28. package/dist/components/aspect-ratio.js +1 -1
  29. package/dist/components/attachment.d.ts +14 -14
  30. package/dist/components/attachment.d.ts.map +1 -1
  31. package/dist/components/attachment.js +3 -3
  32. package/dist/components/avatar-group.d.ts +4 -4
  33. package/dist/components/avatar-group.js +5 -5
  34. package/dist/components/avatar.d.ts +1 -1
  35. package/dist/components/avatar.js +3 -3
  36. package/dist/components/badge.d.ts +3 -3
  37. package/dist/components/badge.js +1 -1
  38. package/dist/components/breadcrumb.d.ts +7 -7
  39. package/dist/components/breadcrumb.js +2 -2
  40. package/dist/components/bubble.d.ts +7 -7
  41. package/dist/components/bubble.js +2 -2
  42. package/dist/components/button-group.d.ts +7 -7
  43. package/dist/components/button-group.d.ts.map +1 -1
  44. package/dist/components/button-group.js +2 -2
  45. package/dist/components/button.d.ts +1 -1
  46. package/dist/components/button.js +2 -2
  47. package/dist/components/calendar.d.ts +4 -4
  48. package/dist/components/calendar.d.ts.map +1 -1
  49. package/dist/components/calendar.js +3 -3
  50. package/dist/components/card.d.ts +8 -8
  51. package/dist/components/card.d.ts.map +1 -1
  52. package/dist/components/card.js +2 -2
  53. package/dist/components/carousel.d.ts +7 -7
  54. package/dist/components/carousel.js +3 -3
  55. package/dist/components/chart.d.ts +5 -5
  56. package/dist/components/chart.js +2 -2
  57. package/dist/components/checkbox.d.ts +2 -2
  58. package/dist/components/checkbox.js +3 -21
  59. package/dist/components/collapsible.d.ts +4 -4
  60. package/dist/components/collapsible.js +3 -27
  61. package/dist/components/combobox.d.ts +2 -2
  62. package/dist/components/combobox.js +11 -11
  63. package/dist/components/command.d.ts +11 -11
  64. package/dist/components/command.d.ts.map +1 -1
  65. package/dist/components/command.js +7 -7
  66. package/dist/components/context-menu.d.ts +16 -16
  67. package/dist/components/context-menu.d.ts.map +1 -1
  68. package/dist/components/context-menu.js +2 -2
  69. package/dist/components/currency-select-field.d.ts +4 -4
  70. package/dist/components/currency-select-field.js +12 -12
  71. package/dist/components/dialog.d.ts +11 -11
  72. package/dist/components/dialog.js +3 -3
  73. package/dist/components/direction.js +1 -1
  74. package/dist/components/drawer.d.ts +11 -11
  75. package/dist/components/drawer.js +2 -2
  76. package/dist/components/dropdown-menu.d.ts +1 -1
  77. package/dist/components/dropdown-menu.js +2 -2
  78. package/dist/components/editor-output.d.ts +87 -0
  79. package/dist/components/editor-output.d.ts.map +1 -0
  80. package/dist/components/editor-output.js +158 -0
  81. package/dist/components/editor-output.js.map +1 -0
  82. package/dist/components/empty.d.ts +9 -9
  83. package/dist/components/empty.d.ts.map +1 -1
  84. package/dist/components/empty.js +3 -61
  85. package/dist/components/field.d.ts +16 -16
  86. package/dist/components/field.d.ts.map +1 -1
  87. package/dist/components/field.js +4 -4
  88. package/dist/components/file-upload-field.d.ts +3 -3
  89. package/dist/components/file-upload-field.js +6 -6
  90. package/dist/components/file-upload.d.ts +3 -3
  91. package/dist/components/file-upload.js +4 -4
  92. package/dist/components/hover-card.d.ts +4 -4
  93. package/dist/components/hover-card.d.ts.map +1 -1
  94. package/dist/components/hover-card.js +1 -1
  95. package/dist/components/icon.d.ts +83 -0
  96. package/dist/components/icon.d.ts.map +1 -0
  97. package/dist/components/icon.js +188 -0
  98. package/dist/components/icon.js.map +1 -0
  99. package/dist/components/input-group.d.ts +11 -11
  100. package/dist/components/input-group.d.ts.map +1 -1
  101. package/dist/components/input-group.js +5 -5
  102. package/dist/components/input-otp.d.ts +6 -6
  103. package/dist/components/input-otp.d.ts.map +1 -1
  104. package/dist/components/input-otp.js +6 -6
  105. package/dist/components/input-otp.js.map +1 -1
  106. package/dist/components/input.d.ts +1 -1
  107. package/dist/components/input.js +2 -2
  108. package/dist/components/item.d.ts +15 -15
  109. package/dist/components/item.d.ts.map +1 -1
  110. package/dist/components/item.js +3 -3
  111. package/dist/components/kbd.d.ts +3 -3
  112. package/dist/components/kbd.d.ts.map +1 -1
  113. package/dist/components/kbd.js +1 -1
  114. package/dist/components/label.d.ts +1 -1
  115. package/dist/components/label.js +2 -2
  116. package/dist/components/marker.d.ts +4 -4
  117. package/dist/components/marker.js +2 -2
  118. package/dist/components/menubar.d.ts +18 -18
  119. package/dist/components/menubar.js +8 -8
  120. package/dist/components/menubar.js.map +1 -1
  121. package/dist/components/message-scroller.d.ts +8 -8
  122. package/dist/components/message-scroller.d.ts.map +1 -1
  123. package/dist/components/message-scroller.js +3 -3
  124. package/dist/components/message.d.ts +7 -7
  125. package/dist/components/message.d.ts.map +1 -1
  126. package/dist/components/message.js +2 -2
  127. package/dist/components/native-select.d.ts +4 -4
  128. package/dist/components/native-select.d.ts.map +1 -1
  129. package/dist/components/native-select.js +2 -2
  130. package/dist/components/navigation-menu.d.ts +11 -11
  131. package/dist/components/navigation-menu.d.ts.map +1 -1
  132. package/dist/components/navigation-menu.js +1 -1
  133. package/dist/components/pagination.d.ts +9 -9
  134. package/dist/components/pagination.js +3 -3
  135. package/dist/components/phone-input.d.ts +2 -2
  136. package/dist/components/phone-input.d.ts.map +1 -1
  137. package/dist/components/phone-input.js +2 -2
  138. package/dist/components/popover.d.ts +7 -7
  139. package/dist/components/popover.d.ts.map +1 -1
  140. package/dist/components/popover.js +2 -2
  141. package/dist/components/progress.d.ts +6 -6
  142. package/dist/components/progress.d.ts.map +1 -1
  143. package/dist/components/progress.js +1 -1
  144. package/dist/components/radio-group.d.ts +3 -3
  145. package/dist/components/radio-group.js +1 -1
  146. package/dist/components/resizable.d.ts +4 -4
  147. package/dist/components/resizable.js +1 -1
  148. package/dist/components/rich-text-editor.d.ts +204 -0
  149. package/dist/components/rich-text-editor.d.ts.map +1 -0
  150. package/dist/components/rich-text-editor.js +359 -0
  151. package/dist/components/rich-text-editor.js.map +1 -0
  152. package/dist/components/scroll-area.d.ts +13 -3
  153. package/dist/components/scroll-area.d.ts.map +1 -1
  154. package/dist/components/scroll-area.js +3 -38
  155. package/dist/components/select.d.ts +10 -10
  156. package/dist/components/select.js +2 -2
  157. package/dist/components/separator.d.ts +1 -1
  158. package/dist/components/separator.js +2 -2
  159. package/dist/components/sheet.d.ts +9 -9
  160. package/dist/components/sheet.js +3 -3
  161. package/dist/components/sidebar.d.ts +24 -24
  162. package/dist/components/sidebar.js +9 -9
  163. package/dist/components/skeleton.d.ts +2 -2
  164. package/dist/components/skeleton.js +2 -2
  165. package/dist/components/slider.d.ts +2 -2
  166. package/dist/components/slider.js +1 -1
  167. package/dist/components/sortable-list.d.ts +153 -0
  168. package/dist/components/sortable-list.d.ts.map +1 -0
  169. package/dist/components/sortable-list.js +191 -0
  170. package/dist/components/sortable-list.js.map +1 -0
  171. package/dist/components/spinner.d.ts +2 -2
  172. package/dist/components/spinner.js +2 -2
  173. package/dist/components/stepper.d.ts +171 -0
  174. package/dist/components/stepper.d.ts.map +1 -0
  175. package/dist/components/stepper.js +281 -0
  176. package/dist/components/stepper.js.map +1 -0
  177. package/dist/components/switch.d.ts +2 -2
  178. package/dist/components/switch.js +1 -1
  179. package/dist/components/table.d.ts +9 -9
  180. package/dist/components/table.js +2 -2
  181. package/dist/components/tabs.d.ts +8 -8
  182. package/dist/components/tabs.js +1 -1
  183. package/dist/components/textarea.d.ts +2 -2
  184. package/dist/components/textarea.js +2 -2
  185. package/dist/components/toast.d.ts +1 -1
  186. package/dist/components/toast.js +2 -2
  187. package/dist/components/toggle-group.d.ts +4 -4
  188. package/dist/components/toggle-group.js +3 -3
  189. package/dist/components/toggle.d.ts +1 -1
  190. package/dist/components/toggle.js +2 -2
  191. package/dist/components/tooltip.d.ts +1 -1
  192. package/dist/components/tooltip.js +2 -2
  193. package/dist/components/tree-select.d.ts +192 -0
  194. package/dist/components/tree-select.d.ts.map +1 -0
  195. package/dist/components/tree-select.js +421 -0
  196. package/dist/components/tree-select.js.map +1 -0
  197. package/dist/{dialog-B3HhbIdv.js → dialog-DuGJUPQl.js} +4 -4
  198. package/dist/{dialog-B3HhbIdv.js.map → dialog-DuGJUPQl.js.map} +1 -1
  199. package/dist/{dropdown-menu-vwX--mgm.js → dropdown-menu-BWEfcvmP.js} +20 -20
  200. package/dist/{dropdown-menu-vwX--mgm.js.map → dropdown-menu-BWEfcvmP.js.map} +1 -1
  201. package/dist/{dropdown-menu-C6n_oYre.d.ts → dropdown-menu-DGMTllRk.d.ts} +17 -17
  202. package/dist/{dropdown-menu-C6n_oYre.d.ts.map → dropdown-menu-DGMTllRk.d.ts.map} +1 -1
  203. package/dist/empty-U4zrLmFU.js +62 -0
  204. package/dist/empty-U4zrLmFU.js.map +1 -0
  205. package/dist/{file-upload-CGfXHKPZ.d.ts → file-upload-C4i5tbut.d.ts} +13 -13
  206. package/dist/{file-upload-CGfXHKPZ.d.ts.map → file-upload-C4i5tbut.d.ts.map} +1 -1
  207. package/dist/{file-upload-B0fHdUBL.js → file-upload-DU5FAkHm.js} +5 -5
  208. package/dist/{file-upload-B0fHdUBL.js.map → file-upload-DU5FAkHm.js.map} +1 -1
  209. package/dist/hooks/use-async-options.d.ts +1 -1
  210. package/dist/hooks/use-async-options.js +1 -1
  211. package/dist/hooks/use-debounce.js +1 -1
  212. package/dist/hooks/use-file-upload.d.ts +1 -1
  213. package/dist/hooks/use-file-upload.js +1 -1
  214. package/dist/hooks/use-infinite-scroll.d.ts +1 -1
  215. package/dist/hooks/use-infinite-scroll.js +2 -2
  216. package/dist/hooks/use-intersection-observer.d.ts +1 -1
  217. package/dist/hooks/use-intersection-observer.js +1 -1
  218. package/dist/hooks/use-mobile.js +1 -1
  219. package/dist/{input-group-C78_1dEy.js → input-group-B5PMRYld.js} +6 -6
  220. package/dist/{input-group-C78_1dEy.js.map → input-group-B5PMRYld.js.map} +1 -1
  221. package/dist/{input-B-RCmrtR.js → input-jIoNIdLQ.js} +3 -3
  222. package/dist/{input-B-RCmrtR.js.map → input-jIoNIdLQ.js.map} +1 -1
  223. package/dist/{input-BtI3FvrB.d.ts → input-zxE3Qo1O.d.ts} +3 -3
  224. package/dist/input-zxE3Qo1O.d.ts.map +1 -0
  225. package/dist/{label-Cmlhz-uF.js → label-DsRhOKY_.js} +3 -3
  226. package/dist/{label-Cmlhz-uF.js.map → label-DsRhOKY_.js.map} +1 -1
  227. package/dist/label-wB7C6-hQ.d.ts +11 -0
  228. package/dist/label-wB7C6-hQ.d.ts.map +1 -0
  229. package/dist/lib/utils.js +1 -1
  230. package/dist/{popover-CsTnnBvx.js → popover-BGkU46G7.js} +3 -3
  231. package/dist/{popover-CsTnnBvx.js.map → popover-BGkU46G7.js.map} +1 -1
  232. package/dist/providers/px-ui-provider.d.ts +4 -4
  233. package/dist/providers/px-ui-provider.d.ts.map +1 -1
  234. package/dist/providers/px-ui-provider.js +4 -4
  235. package/dist/scroll-area-mNVMQ0Of.js +40 -0
  236. package/dist/scroll-area-mNVMQ0Of.js.map +1 -0
  237. package/dist/{separator-BQBOLUMc.js → separator-D0bew2D_.js} +2 -2
  238. package/dist/{separator-BQBOLUMc.js.map → separator-D0bew2D_.js.map} +1 -1
  239. package/dist/{separator-pyhTqgkN.d.ts → separator-DMTEE-qR.d.ts} +3 -3
  240. package/dist/{separator-pyhTqgkN.d.ts.map → separator-DMTEE-qR.d.ts.map} +1 -1
  241. package/dist/{sheet-Chg_afex.js → sheet-BB23q6wd.js} +4 -4
  242. package/dist/{sheet-Chg_afex.js.map → sheet-BB23q6wd.js.map} +1 -1
  243. package/dist/{skeleton-J879XBBA.js → skeleton-knxLhbA5.js} +2 -2
  244. package/dist/{skeleton-J879XBBA.js.map → skeleton-knxLhbA5.js.map} +1 -1
  245. package/dist/{spinner-C7yzrK_s.js → spinner-9MdgLDTZ.js} +2 -2
  246. package/dist/{spinner-C7yzrK_s.js.map → spinner-9MdgLDTZ.js.map} +1 -1
  247. package/dist/{textarea-CaHmr0re.js → textarea-hZg0gA8u.js} +3 -3
  248. package/dist/{textarea-CaHmr0re.js.map → textarea-hZg0gA8u.js.map} +1 -1
  249. package/dist/{toast-CSU7vJkV.d.ts → toast-011e8XdI.d.ts} +5 -5
  250. package/dist/{toast-CSU7vJkV.d.ts.map → toast-011e8XdI.d.ts.map} +1 -1
  251. package/dist/{toast-BrPEQywl.js → toast-BdxoP8vz.js} +4 -4
  252. package/dist/{toast-BrPEQywl.js.map → toast-BdxoP8vz.js.map} +1 -1
  253. package/dist/{toggle-gjMAPmkg.d.ts → toggle-0BxcVVwi.d.ts} +5 -5
  254. package/dist/toggle-0BxcVVwi.d.ts.map +1 -0
  255. package/dist/{toggle-CA4KsgWs.js → toggle-BZXrLBLK.js} +2 -2
  256. package/dist/{toggle-CA4KsgWs.js.map → toggle-BZXrLBLK.js.map} +1 -1
  257. package/dist/{tooltip-7bptiThf.d.ts → tooltip-DWoVF4fx.d.ts} +6 -6
  258. package/dist/{tooltip-7bptiThf.d.ts.map → tooltip-DWoVF4fx.d.ts.map} +1 -1
  259. package/dist/{tooltip-BhxGE3Gb.js → tooltip-Dsfn_zZD.js} +2 -2
  260. package/dist/{tooltip-BhxGE3Gb.js.map → tooltip-Dsfn_zZD.js.map} +1 -1
  261. package/dist/{use-async-options-rNdyxIrQ.d.ts → use-async-options-DdyHJxHh.d.ts} +1 -1
  262. package/dist/{use-async-options-rNdyxIrQ.d.ts.map → use-async-options-DdyHJxHh.d.ts.map} +1 -1
  263. package/dist/{use-async-options-CtB4wZrr.js → use-async-options-tueAuVs_.js} +1 -1
  264. package/dist/{use-async-options-CtB4wZrr.js.map → use-async-options-tueAuVs_.js.map} +1 -1
  265. package/dist/{use-debounce--Lv1ABSa.js → use-debounce-7gIeOwla.js} +1 -1
  266. package/dist/{use-debounce--Lv1ABSa.js.map → use-debounce-7gIeOwla.js.map} +1 -1
  267. package/dist/{use-file-upload-Cbb_9kTw.d.ts → use-file-upload-Bc7CyQ7O.d.ts} +1 -1
  268. package/dist/{use-file-upload-Cbb_9kTw.d.ts.map → use-file-upload-Bc7CyQ7O.d.ts.map} +1 -1
  269. package/dist/{use-file-upload-BbERd3Nw.js → use-file-upload-DQD1vY_Z.js} +1 -1
  270. package/dist/{use-file-upload-BbERd3Nw.js.map → use-file-upload-DQD1vY_Z.js.map} +1 -1
  271. package/dist/{use-infinite-scroll-CC_Guyvn.js → use-infinite-scroll-HpeMA2MK.js} +2 -2
  272. package/dist/{use-infinite-scroll-CC_Guyvn.js.map → use-infinite-scroll-HpeMA2MK.js.map} +1 -1
  273. package/dist/{use-intersection-observer-CgAaXczI.d.ts → use-intersection-observer-DNPextJs.d.ts} +1 -1
  274. package/dist/{use-intersection-observer-CgAaXczI.d.ts.map → use-intersection-observer-DNPextJs.d.ts.map} +1 -1
  275. package/dist/{use-intersection-observer-S0wsPmhF.js → use-intersection-observer-rlKEjyL1.js} +1 -1
  276. package/dist/{use-intersection-observer-S0wsPmhF.js.map → use-intersection-observer-rlKEjyL1.js.map} +1 -1
  277. package/dist/{use-mobile--NaMWuCj.js → use-mobile-DUqQzj2D.js} +1 -1
  278. package/dist/{use-mobile--NaMWuCj.js.map → use-mobile-DUqQzj2D.js.map} +1 -1
  279. package/dist/{utils-DeIaBj75.js → utils-DUlptRpf.js} +1 -1
  280. package/dist/{utils-DeIaBj75.js.map → utils-DUlptRpf.js.map} +1 -1
  281. package/package.json +52 -2
  282. package/dist/combobox-B73nb6Tq.d.ts.map +0 -1
  283. package/dist/components/checkbox.js.map +0 -1
  284. package/dist/components/collapsible.js.map +0 -1
  285. package/dist/components/empty.js.map +0 -1
  286. package/dist/components/scroll-area.js.map +0 -1
  287. package/dist/input-BtI3FvrB.d.ts.map +0 -1
  288. package/dist/label-BnSHwOyi.d.ts +0 -11
  289. package/dist/label-BnSHwOyi.d.ts.map +0 -1
  290. package/dist/toggle-gjMAPmkg.d.ts.map +0 -1
  291. /package/dist/{direction-ZS2Hta3v.js → direction-DFPbwDSF.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton-J879XBBA.js","names":[],"sources":["../src/components/skeleton.tsx"],"sourcesContent":["import { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"],"mappings":";;;;AAEA,SAAS,SAAS,EAAE,WAAW,GAAG,SAAsC;AACtE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,qCAAqC,UAAU;EAC7D,GAAI;GACJ"}
1
+ {"version":3,"file":"skeleton-knxLhbA5.js","names":[],"sources":["../src/components/skeleton.tsx"],"sourcesContent":["import { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"],"mappings":";;;;AAEA,SAAS,SAAS,EAAE,WAAW,GAAG,SAAsC;AACtE,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GAAG,qCAAqC,UAAU;EAC7D,GAAI;GACJ"}
@@ -1,4 +1,4 @@
1
- import { t as cn } from "./utils-DeIaBj75.js";
1
+ import { t as cn } from "./utils-DUlptRpf.js";
2
2
  import { Loader2Icon } from "lucide-react";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -14,4 +14,4 @@ function Spinner({ className, ...props }) {
14
14
 
15
15
  //#endregion
16
16
  export { Spinner as t };
17
- //# sourceMappingURL=spinner-C7yzrK_s.js.map
17
+ //# sourceMappingURL=spinner-9MdgLDTZ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spinner-C7yzrK_s.js","names":[],"sources":["../src/components/spinner.tsx"],"sourcesContent":["import { cn } from \"@px-ui/ui/lib/utils\";\nimport { Loader2Icon } from \"lucide-react\";\n\nfunction Spinner({\n className,\n ...props\n}: React.ComponentProps<typeof Loader2Icon>) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n"],"mappings":";;;;;AAGA,SAAS,QAAQ,EACf,WACA,GAAG,SACwC;AAC3C,QACE,oBAAC;EACC,MAAK;EACL,cAAW;EACX,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ"}
1
+ {"version":3,"file":"spinner-9MdgLDTZ.js","names":[],"sources":["../src/components/spinner.tsx"],"sourcesContent":["import { cn } from \"@px-ui/ui/lib/utils\";\nimport { Loader2Icon } from \"lucide-react\";\n\nfunction Spinner({\n className,\n ...props\n}: React.ComponentProps<typeof Loader2Icon>) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n );\n}\n\nexport { Spinner };\n"],"mappings":";;;;;AAGA,SAAS,QAAQ,EACf,WACA,GAAG,SACwC;AAC3C,QACE,oBAAC;EACC,MAAK;EACL,cAAW;EACX,WAAW,GAAG,uBAAuB,UAAU;EAC/C,GAAI;GACJ"}
@@ -1,6 +1,6 @@
1
- import { t as cn } from "./utils-DeIaBj75.js";
2
- import "react";
1
+ import { t as cn } from "./utils-DUlptRpf.js";
3
2
  import { jsx } from "react/jsx-runtime";
3
+ import "react";
4
4
 
5
5
  //#region src/components/textarea.tsx
6
6
  function Textarea({ className, ...props }) {
@@ -13,4 +13,4 @@ function Textarea({ className, ...props }) {
13
13
 
14
14
  //#endregion
15
15
  export { Textarea as t };
16
- //# sourceMappingURL=textarea-CaHmr0re.js.map
16
+ //# sourceMappingURL=textarea-hZg0gA8u.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"textarea-CaHmr0re.js","names":[],"sources":["../src/components/textarea.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 ppx-md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n"],"mappings":";;;;;AAIA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA2C;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,qgBACA,UACD;EACD,GAAI;GACJ"}
1
+ {"version":3,"file":"textarea-hZg0gA8u.js","names":[],"sources":["../src/components/textarea.tsx"],"sourcesContent":["import * as React from \"react\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-2.5 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 ppx-md:text-sm dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n"],"mappings":";;;;;AAIA,SAAS,SAAS,EAAE,WAAW,GAAG,SAA2C;AAC3E,QACE,oBAAC;EACC,aAAU;EACV,WAAW,GACT,qgBACA,UACD;EACD,GAAI;GACJ"}
@@ -1,7 +1,7 @@
1
+ import * as react_jsx_runtime170 from "react/jsx-runtime";
1
2
  import * as React$1 from "react";
2
- import { Toast, ToastManagerAddOptions, ToastManagerPromiseOptions, ToastManagerUpdateOptions } from "@base-ui/react/toast";
3
- import * as react_jsx_runtime318 from "react/jsx-runtime";
4
3
  import * as _base_ui_react0 from "@base-ui/react";
4
+ import { Toast, ToastManagerAddOptions, ToastManagerPromiseOptions, ToastManagerUpdateOptions } from "@base-ui/react/toast";
5
5
 
6
6
  //#region src/components/toast.d.ts
7
7
  declare const toastManager: _base_ui_react0.ToastManager<any>;
@@ -20,7 +20,7 @@ type ToasterProps = Omit<Toast.Provider.Props, "toastManager" | "children"> & {
20
20
  declare function Toaster({
21
21
  position,
22
22
  ...props
23
- }: ToasterProps): react_jsx_runtime318.JSX.Element;
23
+ }: ToasterProps): react_jsx_runtime170.JSX.Element;
24
24
  type ToastOptions = Omit<ToastManagerAddOptions<any>, "title" | "type">;
25
25
  /**
26
26
  * Dispatch a toast from anywhere. Backed by a global Base UI toast manager, so
@@ -68,7 +68,7 @@ declare const anchoredToast: ((title: React$1.ReactNode, options: AnchoredToastO
68
68
  * Host for anchored toasts. Mount it once near the app root; dispatch with the
69
69
  * exported `anchoredToast` helper.
70
70
  */
71
- declare function AnchoredToaster(props: Omit<Toast.Provider.Props, "toastManager" | "children">): react_jsx_runtime318.JSX.Element;
71
+ declare function AnchoredToaster(props: Omit<Toast.Provider.Props, "toastManager" | "children">): react_jsx_runtime170.JSX.Element;
72
72
  //#endregion
73
73
  export { ToasterPosition as a, anchoredToastManager as c, Toaster as i, toast as l, AnchoredToaster as n, ToasterProps as o, ToastOptions as r, anchoredToast as s, AnchoredToastOptions as t, toastManager as u };
74
- //# sourceMappingURL=toast-CSU7vJkV.d.ts.map
74
+ //# sourceMappingURL=toast-011e8XdI.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast-CSU7vJkV.d.ts","names":[],"sources":["../src/components/toast.tsx"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"toast-011e8XdI.d.ts","names":[],"sources":["../src/components/toast.tsx"],"sourcesContent":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { t as cn } from "./utils-DeIaBj75.js";
2
- import "react";
3
- import { Toast } from "@base-ui/react/toast";
1
+ import { t as cn } from "./utils-DUlptRpf.js";
4
2
  import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, XIcon } from "lucide-react";
5
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
+ import "react";
5
+ import { Toast } from "@base-ui/react/toast";
6
6
 
7
7
  //#region src/components/toast.tsx
8
8
  const toastManager = Toast.createToastManager();
@@ -208,4 +208,4 @@ function AnchoredToastList() {
208
208
 
209
209
  //#endregion
210
210
  export { toast as a, anchoredToastManager as i, Toaster as n, toastManager as o, anchoredToast as r, AnchoredToaster as t };
211
- //# sourceMappingURL=toast-BrPEQywl.js.map
211
+ //# sourceMappingURL=toast-BdxoP8vz.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast-BrPEQywl.js","names":["VIEWPORT_POSITION: Record<ToasterPosition, string>","toast"],"sources":["../src/components/toast.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Toast } from \"@base-ui/react/toast\"\nimport type {\n ToastManagerAddOptions,\n ToastManagerPromiseOptions,\n ToastManagerUpdateOptions,\n} from \"@base-ui/react/toast\"\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n XIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\n// A global manager so toasts can be dispatched from anywhere — including outside\n// the React tree — while still rendering inside the mounted `<Toaster />`.\nconst toastManager = Toast.createToastManager()\n\ntype ToasterPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\"\n\nconst VIEWPORT_POSITION: Record<ToasterPosition, string> = {\n \"top-left\": \"top-4 left-4 ppx-sm:top-8 ppx-sm:left-8\",\n \"top-center\": \"top-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:top-8\",\n \"top-right\": \"top-4 right-4 ppx-sm:top-8 ppx-sm:right-8\",\n \"bottom-left\": \"bottom-4 left-4 ppx-sm:bottom-8 ppx-sm:left-8\",\n \"bottom-center\":\n \"bottom-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:bottom-8\",\n \"bottom-right\": \"bottom-4 right-4 ppx-sm:bottom-8 ppx-sm:right-8\",\n}\n\ntype ToasterProps = Omit<Toast.Provider.Props, \"toastManager\" | \"children\"> & {\n /**\n * Where toasts are anchored on the screen.\n * @default \"bottom-right\"\n */\n position?: ToasterPosition\n}\n\n/**\n * Host component for toasts. Mount it once near the root of your app. Toasts are\n * dispatched with the exported `toast` helper.\n */\nfunction Toaster({ position = \"bottom-right\", ...props }: ToasterProps) {\n return (\n <Toast.Provider toastManager={toastManager} {...props}>\n <Toast.Portal>\n <Toast.Viewport\n data-slot=\"toaster\"\n className={cn(\n \"fixed z-[100] mx-auto flex w-[calc(100vw-2rem)] outline-none ppx-sm:w-90\",\n VIEWPORT_POSITION[position]\n )}\n >\n <ToastList position={position} />\n </Toast.Viewport>\n </Toast.Portal>\n </Toast.Provider>\n )\n}\n\nfunction ToastList({ position }: { position: ToasterPosition }) {\n const { toasts } = Toast.useToastManager()\n const side = position.startsWith(\"top\") ? \"top\" : \"bottom\"\n const swipeDirection = [\n side === \"top\" ? \"up\" : \"down\",\n position.includes(\"left\")\n ? \"left\"\n : position.includes(\"right\")\n ? \"right\"\n : null,\n ].filter(Boolean) as (\"up\" | \"down\" | \"left\" | \"right\")[]\n\n return toasts.map((toast) => (\n <Toast.Root\n key={toast.id}\n toast={toast}\n data-side={side}\n swipeDirection={swipeDirection}\n className={cn(\n // Stacking + swipe driver variables exposed by Base UI.\n \"[--gap:0.75rem] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-frontmost-height,var(--toast-height))] [--dir:1] data-[side=top]:[--dir:-1]\",\n \"[--offset-y:calc(var(--toast-swipe-movement-y)+var(--dir)*(var(--toast-offset-y)*-1-var(--toast-index)*var(--gap)))]\",\n // Layout + appearance.\n \"absolute right-0 left-auto z-[calc(1000-var(--toast-index))] mr-0 w-full origin-bottom rounded-lg border bg-popover text-popover-foreground shadow-lg ring-1 ring-foreground/10 select-none\",\n toastTint(toast.type),\n \"bottom-0 data-[side=top]:top-0 data-[side=top]:bottom-auto data-[side=top]:origin-top\",\n \"h-[var(--height)] data-expanded:h-[var(--toast-height)]\",\n // Hover bridge so the stack stays expanded between toasts.\n \"after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-[''] after:top-full data-[side=top]:after:top-auto data-[side=top]:after:bottom-full\",\n // Collapsed (stacked) transform.\n \"[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+var(--dir)*(var(--toast-index)*var(--peek)*-1-var(--shrink)*var(--height))))_scale(var(--scale))]\",\n // Expanded transform.\n \"data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]\",\n // Enter / exit.\n \"data-starting-style:[transform:translateY(calc(var(--dir)*150%))]\",\n \"data-ending-style:opacity-0 data-limited:opacity-0\",\n \"[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(calc(var(--dir)*150%))]\",\n // Swipe-to-dismiss exits.\n \"data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\n \"data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\n \"data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\n \"data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\n \"[transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s]\"\n )}\n >\n {/*\n Each control (icon, action, close) is wrapped in an `h-[1lh]` box so it\n centers on the *first* line of text. With `items-start`, that means a\n single-line toast centers in the card (equal padding) while a wrapped /\n multi-line toast keeps the icon and close aligned to the title's first\n line instead of floating in the vertical middle. `text-sm leading-tight`\n sets the line-height that `1lh` resolves against, matching the title.\n */}\n <Toast.Content className=\"flex h-full items-start gap-3 overflow-hidden p-4 text-sm leading-tight transition-opacity duration-[250ms] ease-[cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100\">\n <ToastIcon type={toast.type} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n {toast.title ? (\n <Toast.Title className=\"text-sm leading-tight font-medium\" />\n ) : null}\n {toast.description ? (\n <Toast.Description className=\"text-sm text-muted-foreground\" />\n ) : null}\n </div>\n {toast.actionProps ? (\n <div className=\"flex h-[1lh] shrink-0 items-center\">\n <Toast.Action className=\"inline-flex h-8 shrink-0 items-center justify-center gap-1.5 rounded-md border bg-transparent px-3 text-xs font-medium whitespace-nowrap transition-colors hover:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\" />\n </div>\n ) : null}\n <div className=\"-me-1 flex h-[1lh] shrink-0 items-center\">\n <Toast.Close\n aria-label=\"Dismiss\"\n className=\"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none\"\n >\n <XIcon className=\"size-4\" />\n </Toast.Close>\n </div>\n </Toast.Content>\n </Toast.Root>\n ))\n}\n\nconst TOAST_ICONS = {\n success: { Icon: CircleCheckIcon, color: \"text-success\" },\n info: { Icon: InfoIcon, color: \"text-info\" },\n warning: { Icon: TriangleAlertIcon, color: \"text-warning\" },\n error: { Icon: OctagonXIcon, color: \"text-destructive\" },\n loading: { Icon: Loader2Icon, color: \"text-muted-foreground\" },\n} as const\n\nfunction ToastIcon({ type }: { type?: string }) {\n const entry = type\n ? TOAST_ICONS[type as keyof typeof TOAST_ICONS]\n : undefined\n if (!entry) return null\n const { Icon, color } = entry\n // `h-[1lh]` sizes the icon box to one line of text, so the icon centers on the\n // first line whether the toast is a single line or wraps to several.\n return (\n <span\n className={cn(\"flex h-[1lh] shrink-0 items-center justify-center\", color)}\n >\n <Icon className={cn(\"size-4\", type === \"loading\" && \"animate-spin\")} />\n </span>\n )\n}\n\n// Per-type tinted card — a 10% mix of the status color into the popover surface,\n// reproducing px-ui's classic soft-tinted toast look. Shared by both toasters.\nfunction toastTint(type?: string) {\n switch (type) {\n case \"success\":\n return \"bg-[color-mix(in_srgb,var(--success)_10%,var(--popover))]\"\n case \"info\":\n return \"bg-[color-mix(in_srgb,var(--info)_10%,var(--popover))]\"\n case \"warning\":\n return \"bg-[color-mix(in_srgb,var(--warning)_10%,var(--popover))]\"\n case \"error\":\n return \"bg-[color-mix(in_srgb,var(--destructive)_10%,var(--popover))]\"\n default:\n return undefined\n }\n}\n\ntype ToastOptions = Omit<ToastManagerAddOptions<any>, \"title\" | \"type\">\n\nfunction makeToast(type?: string) {\n return (title: React.ReactNode, options?: ToastOptions) =>\n toastManager.add({ title, ...(type ? { type } : {}), ...options })\n}\n\n/**\n * Dispatch a toast from anywhere. Backed by a global Base UI toast manager, so\n * it works even outside the React tree.\n *\n * @example\n * toast(\"Event has been created\")\n * toast.success(\"Saved\", { description: \"Your changes are live.\" })\n */\nconst toast = Object.assign(makeToast(), {\n success: makeToast(\"success\"),\n info: makeToast(\"info\"),\n warning: makeToast(\"warning\"),\n error: makeToast(\"error\"),\n message: makeToast(),\n loading: (title: React.ReactNode, options?: ToastOptions) =>\n toastManager.add({ title, type: \"loading\", timeout: 0, ...options }),\n promise: <Value,>(\n promise: Promise<Value> | (() => Promise<Value>),\n options: ToastManagerPromiseOptions<Value, any>\n ) =>\n toastManager.promise(\n typeof promise === \"function\" ? promise() : promise,\n options\n ),\n update: (id: string, options: ToastManagerUpdateOptions<any>) =>\n toastManager.update(id, options),\n dismiss: (id?: string) => toastManager.close(id),\n})\n\n// A separate manager + host for anchored toasts: small popovers positioned next\n// to a trigger element (e.g. a \"Copied\" confirmation beside a button) rather\n// than stacked in a screen corner.\nconst anchoredToastManager = Toast.createToastManager()\n\ntype AnchoredToastOptions = ToastOptions & {\n /** Element to position the toast against, e.g. `event.currentTarget`. */\n anchor: Element | null\n}\n\nfunction makeAnchoredToast(type?: string) {\n return (title: React.ReactNode, options: AnchoredToastOptions) => {\n const { anchor, ...rest } = options\n // The anchor element rides along in `data`; `AnchoredToaster` reads it back\n // out and hands it to `Toast.Positioner`.\n return anchoredToastManager.add({\n title,\n ...(type ? { type } : {}),\n ...rest,\n data: { ...rest.data, anchor },\n })\n }\n}\n\n/**\n * Dispatch a toast anchored to an element instead of a screen corner. Render\n * `<AnchoredToaster />` once, then pass the trigger element as `anchor`.\n *\n * @example\n * <Button\n * onClick={(e) => anchoredToast.success(\"Copied\", { anchor: e.currentTarget })}\n * >\n * Copy\n * </Button>\n */\nconst anchoredToast = Object.assign(makeAnchoredToast(), {\n success: makeAnchoredToast(\"success\"),\n info: makeAnchoredToast(\"info\"),\n warning: makeAnchoredToast(\"warning\"),\n error: makeAnchoredToast(\"error\"),\n dismiss: (id?: string) => anchoredToastManager.close(id),\n})\n\n/**\n * Host for anchored toasts. Mount it once near the app root; dispatch with the\n * exported `anchoredToast` helper.\n */\nfunction AnchoredToaster(\n props: Omit<Toast.Provider.Props, \"toastManager\" | \"children\">\n) {\n return (\n <Toast.Provider toastManager={anchoredToastManager} {...props}>\n <Toast.Portal>\n <Toast.Viewport data-slot=\"anchored-toaster\" className=\"outline-none\">\n <AnchoredToastList />\n </Toast.Viewport>\n </Toast.Portal>\n </Toast.Provider>\n )\n}\n\nfunction AnchoredToastList() {\n const { toasts } = Toast.useToastManager()\n\n return toasts.map((toast) => {\n const anchor = (toast.data as { anchor?: Element | null } | undefined)\n ?.anchor\n if (!anchor) return null\n\n return (\n <Toast.Positioner\n key={toast.id}\n toast={toast}\n anchor={anchor}\n sideOffset={6}\n className=\"z-[100] max-w-[min(20rem,var(--available-width))]\"\n >\n <Toast.Root\n toast={toast}\n className={cn(\n \"rounded-lg border bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10\",\n \"scale-100 transition-[transform,opacity] data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0\",\n toastTint(toast.type)\n )}\n >\n <Toast.Content className=\"flex items-start gap-2.5 px-3 py-2 text-sm leading-tight\">\n <ToastIcon type={toast.type} />\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n <Toast.Title className=\"text-sm leading-tight font-medium\" />\n {toast.description ? (\n <Toast.Description className=\"text-sm text-muted-foreground\" />\n ) : null}\n </div>\n </Toast.Content>\n </Toast.Root>\n </Toast.Positioner>\n )\n })\n}\n\nexport {\n Toaster,\n toast,\n toastManager,\n AnchoredToaster,\n anchoredToast,\n anchoredToastManager,\n}\nexport type {\n ToasterProps,\n ToasterPosition,\n ToastOptions,\n AnchoredToastOptions,\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"toast-BdxoP8vz.js","names":["VIEWPORT_POSITION: Record<ToasterPosition, string>","toast"],"sources":["../src/components/toast.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Toast } from \"@base-ui/react/toast\"\nimport type {\n ToastManagerAddOptions,\n ToastManagerPromiseOptions,\n ToastManagerUpdateOptions,\n} from \"@base-ui/react/toast\"\nimport {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n XIcon,\n} from \"lucide-react\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\n// A global manager so toasts can be dispatched from anywhere — including outside\n// the React tree — while still rendering inside the mounted `<Toaster />`.\nconst toastManager = Toast.createToastManager()\n\ntype ToasterPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\"\n\nconst VIEWPORT_POSITION: Record<ToasterPosition, string> = {\n \"top-left\": \"top-4 left-4 ppx-sm:top-8 ppx-sm:left-8\",\n \"top-center\": \"top-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:top-8\",\n \"top-right\": \"top-4 right-4 ppx-sm:top-8 ppx-sm:right-8\",\n \"bottom-left\": \"bottom-4 left-4 ppx-sm:bottom-8 ppx-sm:left-8\",\n \"bottom-center\":\n \"bottom-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:bottom-8\",\n \"bottom-right\": \"bottom-4 right-4 ppx-sm:bottom-8 ppx-sm:right-8\",\n}\n\ntype ToasterProps = Omit<Toast.Provider.Props, \"toastManager\" | \"children\"> & {\n /**\n * Where toasts are anchored on the screen.\n * @default \"bottom-right\"\n */\n position?: ToasterPosition\n}\n\n/**\n * Host component for toasts. Mount it once near the root of your app. Toasts are\n * dispatched with the exported `toast` helper.\n */\nfunction Toaster({ position = \"bottom-right\", ...props }: ToasterProps) {\n return (\n <Toast.Provider toastManager={toastManager} {...props}>\n <Toast.Portal>\n <Toast.Viewport\n data-slot=\"toaster\"\n className={cn(\n \"fixed z-[100] mx-auto flex w-[calc(100vw-2rem)] outline-none ppx-sm:w-90\",\n VIEWPORT_POSITION[position]\n )}\n >\n <ToastList position={position} />\n </Toast.Viewport>\n </Toast.Portal>\n </Toast.Provider>\n )\n}\n\nfunction ToastList({ position }: { position: ToasterPosition }) {\n const { toasts } = Toast.useToastManager()\n const side = position.startsWith(\"top\") ? \"top\" : \"bottom\"\n const swipeDirection = [\n side === \"top\" ? \"up\" : \"down\",\n position.includes(\"left\")\n ? \"left\"\n : position.includes(\"right\")\n ? \"right\"\n : null,\n ].filter(Boolean) as (\"up\" | \"down\" | \"left\" | \"right\")[]\n\n return toasts.map((toast) => (\n <Toast.Root\n key={toast.id}\n toast={toast}\n data-side={side}\n swipeDirection={swipeDirection}\n className={cn(\n // Stacking + swipe driver variables exposed by Base UI.\n \"[--gap:0.75rem] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [--height:var(--toast-frontmost-height,var(--toast-height))] [--dir:1] data-[side=top]:[--dir:-1]\",\n \"[--offset-y:calc(var(--toast-swipe-movement-y)+var(--dir)*(var(--toast-offset-y)*-1-var(--toast-index)*var(--gap)))]\",\n // Layout + appearance.\n \"absolute right-0 left-auto z-[calc(1000-var(--toast-index))] mr-0 w-full origin-bottom rounded-lg border bg-popover text-popover-foreground shadow-lg ring-1 ring-foreground/10 select-none\",\n toastTint(toast.type),\n \"bottom-0 data-[side=top]:top-0 data-[side=top]:bottom-auto data-[side=top]:origin-top\",\n \"h-[var(--height)] data-expanded:h-[var(--toast-height)]\",\n // Hover bridge so the stack stays expanded between toasts.\n \"after:absolute after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-[''] after:top-full data-[side=top]:after:top-auto data-[side=top]:after:bottom-full\",\n // Collapsed (stacked) transform.\n \"[transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)+var(--dir)*(var(--toast-index)*var(--peek)*-1-var(--shrink)*var(--height))))_scale(var(--scale))]\",\n // Expanded transform.\n \"data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]\",\n // Enter / exit.\n \"data-starting-style:[transform:translateY(calc(var(--dir)*150%))]\",\n \"data-ending-style:opacity-0 data-limited:opacity-0\",\n \"[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(calc(var(--dir)*150%))]\",\n // Swipe-to-dismiss exits.\n \"data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-[swipe-direction=down]:[transform:translateY(calc(var(--toast-swipe-movement-y)+150%))]\",\n \"data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))] data-expanded:data-ending-style:data-[swipe-direction=up]:[transform:translateY(calc(var(--toast-swipe-movement-y)-150%))]\",\n \"data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=left]:[transform:translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))]\",\n \"data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-[swipe-direction=right]:[transform:translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))]\",\n \"[transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s]\"\n )}\n >\n {/*\n Each control (icon, action, close) is wrapped in an `h-[1lh]` box so it\n centers on the *first* line of text. With `items-start`, that means a\n single-line toast centers in the card (equal padding) while a wrapped /\n multi-line toast keeps the icon and close aligned to the title's first\n line instead of floating in the vertical middle. `text-sm leading-tight`\n sets the line-height that `1lh` resolves against, matching the title.\n */}\n <Toast.Content className=\"flex h-full items-start gap-3 overflow-hidden p-4 text-sm leading-tight transition-opacity duration-[250ms] ease-[cubic-bezier(0.22,1,0.36,1)] data-behind:opacity-0 data-expanded:opacity-100\">\n <ToastIcon type={toast.type} />\n <div className=\"flex min-w-0 flex-1 flex-col gap-1\">\n {toast.title ? (\n <Toast.Title className=\"text-sm leading-tight font-medium\" />\n ) : null}\n {toast.description ? (\n <Toast.Description className=\"text-sm text-muted-foreground\" />\n ) : null}\n </div>\n {toast.actionProps ? (\n <div className=\"flex h-[1lh] shrink-0 items-center\">\n <Toast.Action className=\"inline-flex h-8 shrink-0 items-center justify-center gap-1.5 rounded-md border bg-transparent px-3 text-xs font-medium whitespace-nowrap transition-colors hover:bg-muted focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\" />\n </div>\n ) : null}\n <div className=\"-me-1 flex h-[1lh] shrink-0 items-center\">\n <Toast.Close\n aria-label=\"Dismiss\"\n className=\"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-none\"\n >\n <XIcon className=\"size-4\" />\n </Toast.Close>\n </div>\n </Toast.Content>\n </Toast.Root>\n ))\n}\n\nconst TOAST_ICONS = {\n success: { Icon: CircleCheckIcon, color: \"text-success\" },\n info: { Icon: InfoIcon, color: \"text-info\" },\n warning: { Icon: TriangleAlertIcon, color: \"text-warning\" },\n error: { Icon: OctagonXIcon, color: \"text-destructive\" },\n loading: { Icon: Loader2Icon, color: \"text-muted-foreground\" },\n} as const\n\nfunction ToastIcon({ type }: { type?: string }) {\n const entry = type\n ? TOAST_ICONS[type as keyof typeof TOAST_ICONS]\n : undefined\n if (!entry) return null\n const { Icon, color } = entry\n // `h-[1lh]` sizes the icon box to one line of text, so the icon centers on the\n // first line whether the toast is a single line or wraps to several.\n return (\n <span\n className={cn(\"flex h-[1lh] shrink-0 items-center justify-center\", color)}\n >\n <Icon className={cn(\"size-4\", type === \"loading\" && \"animate-spin\")} />\n </span>\n )\n}\n\n// Per-type tinted card — a 10% mix of the status color into the popover surface,\n// reproducing px-ui's classic soft-tinted toast look. Shared by both toasters.\nfunction toastTint(type?: string) {\n switch (type) {\n case \"success\":\n return \"bg-[color-mix(in_srgb,var(--success)_10%,var(--popover))]\"\n case \"info\":\n return \"bg-[color-mix(in_srgb,var(--info)_10%,var(--popover))]\"\n case \"warning\":\n return \"bg-[color-mix(in_srgb,var(--warning)_10%,var(--popover))]\"\n case \"error\":\n return \"bg-[color-mix(in_srgb,var(--destructive)_10%,var(--popover))]\"\n default:\n return undefined\n }\n}\n\ntype ToastOptions = Omit<ToastManagerAddOptions<any>, \"title\" | \"type\">\n\nfunction makeToast(type?: string) {\n return (title: React.ReactNode, options?: ToastOptions) =>\n toastManager.add({ title, ...(type ? { type } : {}), ...options })\n}\n\n/**\n * Dispatch a toast from anywhere. Backed by a global Base UI toast manager, so\n * it works even outside the React tree.\n *\n * @example\n * toast(\"Event has been created\")\n * toast.success(\"Saved\", { description: \"Your changes are live.\" })\n */\nconst toast = Object.assign(makeToast(), {\n success: makeToast(\"success\"),\n info: makeToast(\"info\"),\n warning: makeToast(\"warning\"),\n error: makeToast(\"error\"),\n message: makeToast(),\n loading: (title: React.ReactNode, options?: ToastOptions) =>\n toastManager.add({ title, type: \"loading\", timeout: 0, ...options }),\n promise: <Value,>(\n promise: Promise<Value> | (() => Promise<Value>),\n options: ToastManagerPromiseOptions<Value, any>\n ) =>\n toastManager.promise(\n typeof promise === \"function\" ? promise() : promise,\n options\n ),\n update: (id: string, options: ToastManagerUpdateOptions<any>) =>\n toastManager.update(id, options),\n dismiss: (id?: string) => toastManager.close(id),\n})\n\n// A separate manager + host for anchored toasts: small popovers positioned next\n// to a trigger element (e.g. a \"Copied\" confirmation beside a button) rather\n// than stacked in a screen corner.\nconst anchoredToastManager = Toast.createToastManager()\n\ntype AnchoredToastOptions = ToastOptions & {\n /** Element to position the toast against, e.g. `event.currentTarget`. */\n anchor: Element | null\n}\n\nfunction makeAnchoredToast(type?: string) {\n return (title: React.ReactNode, options: AnchoredToastOptions) => {\n const { anchor, ...rest } = options\n // The anchor element rides along in `data`; `AnchoredToaster` reads it back\n // out and hands it to `Toast.Positioner`.\n return anchoredToastManager.add({\n title,\n ...(type ? { type } : {}),\n ...rest,\n data: { ...rest.data, anchor },\n })\n }\n}\n\n/**\n * Dispatch a toast anchored to an element instead of a screen corner. Render\n * `<AnchoredToaster />` once, then pass the trigger element as `anchor`.\n *\n * @example\n * <Button\n * onClick={(e) => anchoredToast.success(\"Copied\", { anchor: e.currentTarget })}\n * >\n * Copy\n * </Button>\n */\nconst anchoredToast = Object.assign(makeAnchoredToast(), {\n success: makeAnchoredToast(\"success\"),\n info: makeAnchoredToast(\"info\"),\n warning: makeAnchoredToast(\"warning\"),\n error: makeAnchoredToast(\"error\"),\n dismiss: (id?: string) => anchoredToastManager.close(id),\n})\n\n/**\n * Host for anchored toasts. Mount it once near the app root; dispatch with the\n * exported `anchoredToast` helper.\n */\nfunction AnchoredToaster(\n props: Omit<Toast.Provider.Props, \"toastManager\" | \"children\">\n) {\n return (\n <Toast.Provider toastManager={anchoredToastManager} {...props}>\n <Toast.Portal>\n <Toast.Viewport data-slot=\"anchored-toaster\" className=\"outline-none\">\n <AnchoredToastList />\n </Toast.Viewport>\n </Toast.Portal>\n </Toast.Provider>\n )\n}\n\nfunction AnchoredToastList() {\n const { toasts } = Toast.useToastManager()\n\n return toasts.map((toast) => {\n const anchor = (toast.data as { anchor?: Element | null } | undefined)\n ?.anchor\n if (!anchor) return null\n\n return (\n <Toast.Positioner\n key={toast.id}\n toast={toast}\n anchor={anchor}\n sideOffset={6}\n className=\"z-[100] max-w-[min(20rem,var(--available-width))]\"\n >\n <Toast.Root\n toast={toast}\n className={cn(\n \"rounded-lg border bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10\",\n \"scale-100 transition-[transform,opacity] data-starting-style:scale-95 data-starting-style:opacity-0 data-ending-style:scale-95 data-ending-style:opacity-0\",\n toastTint(toast.type)\n )}\n >\n <Toast.Content className=\"flex items-start gap-2.5 px-3 py-2 text-sm leading-tight\">\n <ToastIcon type={toast.type} />\n <div className=\"flex min-w-0 flex-col gap-0.5\">\n <Toast.Title className=\"text-sm leading-tight font-medium\" />\n {toast.description ? (\n <Toast.Description className=\"text-sm text-muted-foreground\" />\n ) : null}\n </div>\n </Toast.Content>\n </Toast.Root>\n </Toast.Positioner>\n )\n })\n}\n\nexport {\n Toaster,\n toast,\n toastManager,\n AnchoredToaster,\n anchoredToast,\n anchoredToastManager,\n}\nexport type {\n ToasterProps,\n ToasterPosition,\n ToastOptions,\n AnchoredToastOptions,\n}\n"],"mappings":"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"}
@@ -1,19 +1,19 @@
1
- import * as react_jsx_runtime298 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime78 from "react/jsx-runtime";
2
2
  import { VariantProps } from "class-variance-authority";
3
3
  import { Toggle } from "@base-ui/react/toggle";
4
- import * as class_variance_authority_types16 from "class-variance-authority/types";
4
+ import * as class_variance_authority_types7 from "class-variance-authority/types";
5
5
 
6
6
  //#region src/components/toggle.d.ts
7
7
  declare const toggleVariants: (props?: ({
8
8
  variant?: "accent" | "default" | "outline" | null | undefined;
9
9
  size?: "default" | "sm" | "lg" | null | undefined;
10
- } & class_variance_authority_types16.ClassProp) | undefined) => string;
10
+ } & class_variance_authority_types7.ClassProp) | undefined) => string;
11
11
  declare function Toggle$1({
12
12
  className,
13
13
  variant,
14
14
  size,
15
15
  ...props
16
- }: Toggle.Props & VariantProps<typeof toggleVariants>): react_jsx_runtime298.JSX.Element;
16
+ }: Toggle.Props & VariantProps<typeof toggleVariants>): react_jsx_runtime78.JSX.Element;
17
17
  //#endregion
18
18
  export { toggleVariants as n, Toggle$1 as t };
19
- //# sourceMappingURL=toggle-gjMAPmkg.d.ts.map
19
+ //# sourceMappingURL=toggle-0BxcVVwi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-0BxcVVwi.d.ts","names":[],"sources":["../src/components/toggle.tsx"],"sourcesContent":[],"mappings":";;;;;;cAOM;;;IAwBL,+BAAA,CAAA;AA5BiE,iBA8BzD,QAAA,CAFR;EAAA,SAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAOE,MAAA,CAAgB,KAPlB,GAO0B,YAP1B,CAAA,OAO8C,cAP9C,CAAA,CAAA,EAO6D,mBAAA,CAAA,GAAA,CAAA,OAP7D"}
@@ -1,4 +1,4 @@
1
- import { t as cn } from "./utils-DeIaBj75.js";
1
+ import { t as cn } from "./utils-DUlptRpf.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { cva } from "class-variance-authority";
4
4
  import { Toggle } from "@base-ui/react/toggle";
@@ -36,4 +36,4 @@ function Toggle$1({ className, variant = "default", size = "default", ...props }
36
36
 
37
37
  //#endregion
38
38
  export { toggleVariants as n, Toggle$1 as t };
39
- //# sourceMappingURL=toggle-CA4KsgWs.js.map
39
+ //# sourceMappingURL=toggle-BZXrLBLK.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-CA4KsgWs.js","names":["Toggle","TogglePrimitive"],"sources":["../src/components/toggle.tsx"],"sourcesContent":["\"use client\";\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@px-ui/ui/lib/utils\";\n\nconst toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default:\n \"bg-transparent hover:bg-muted hover:text-foreground aria-pressed:bg-muted\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-muted hover:text-foreground aria-pressed:bg-muted\",\n accent:\n \"bg-transparent hover:bg-accent hover:text-accent-foreground aria-pressed:bg-accent aria-pressed:text-accent-foreground\",\n },\n size: {\n default:\n \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n sm: \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5\",\n lg: \"h-10 min-w-10 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Toggle({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n"],"mappings":";;;;;;AAOA,MAAM,iBAAiB,IACrB,kdACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,SACE;GACF,QACE;GACH;EACD,MAAM;GACJ,SACE;GACF,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;AAED,SAASA,SAAO,EACd,WACA,UAAU,WACV,OAAO,WACP,GAAG,SAC2D;AAC9D,QACE,oBAACC;EACC,aAAU;EACV,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;GAAW,CAAC,CAAC;EAC3D,GAAI;GACJ"}
1
+ {"version":3,"file":"toggle-BZXrLBLK.js","names":["Toggle","TogglePrimitive"],"sources":["../src/components/toggle.tsx"],"sourcesContent":["\"use client\";\n\nimport { Toggle as TogglePrimitive } from \"@base-ui/react/toggle\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"@px-ui/ui/lib/utils\";\n\nconst toggleVariants = cva(\n \"group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default:\n \"bg-transparent hover:bg-muted hover:text-foreground aria-pressed:bg-muted\",\n outline:\n \"border border-input bg-transparent shadow-xs hover:bg-muted hover:text-foreground aria-pressed:bg-muted\",\n accent:\n \"bg-transparent hover:bg-accent hover:text-accent-foreground aria-pressed:bg-accent aria-pressed:text-accent-foreground\",\n },\n size: {\n default:\n \"h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n sm: \"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pe-1.5 has-data-[icon=inline-start]:ps-1.5\",\n lg: \"h-10 min-w-10 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nfunction Toggle({\n className,\n variant = \"default\",\n size = \"default\",\n ...props\n}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {\n return (\n <TogglePrimitive\n data-slot=\"toggle\"\n className={cn(toggleVariants({ variant, size, className }))}\n {...props}\n />\n );\n}\n\nexport { Toggle, toggleVariants };\n"],"mappings":";;;;;;AAOA,MAAM,iBAAiB,IACrB,kdACA;CACE,UAAU;EACR,SAAS;GACP,SACE;GACF,SACE;GACF,QACE;GACH;EACD,MAAM;GACJ,SACE;GACF,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;AAED,SAASA,SAAO,EACd,WACA,UAAU,WACV,OAAO,WACP,GAAG,SAC2D;AAC9D,QACE,oBAACC;EACC,aAAU;EACV,WAAW,GAAG,eAAe;GAAE;GAAS;GAAM;GAAW,CAAC,CAAC;EAC3D,GAAI;GACJ"}
@@ -1,17 +1,17 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime193 from "react/jsx-runtime";
2
2
  import { Tooltip } from "@base-ui/react/tooltip";
3
3
 
4
4
  //#region src/components/tooltip.d.ts
5
5
  declare function TooltipProvider({
6
6
  delay,
7
7
  ...props
8
- }: Tooltip.Provider.Props): react_jsx_runtime0.JSX.Element;
8
+ }: Tooltip.Provider.Props): react_jsx_runtime193.JSX.Element;
9
9
  declare function Tooltip$1({
10
10
  ...props
11
- }: Tooltip.Root.Props): react_jsx_runtime0.JSX.Element;
11
+ }: Tooltip.Root.Props): react_jsx_runtime193.JSX.Element;
12
12
  declare function TooltipTrigger({
13
13
  ...props
14
- }: Tooltip.Trigger.Props): react_jsx_runtime0.JSX.Element;
14
+ }: Tooltip.Trigger.Props): react_jsx_runtime193.JSX.Element;
15
15
  declare function TooltipContent({
16
16
  className,
17
17
  side,
@@ -20,7 +20,7 @@ declare function TooltipContent({
20
20
  alignOffset,
21
21
  children,
22
22
  ...props
23
- }: Tooltip.Popup.Props & Pick<Tooltip.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): react_jsx_runtime0.JSX.Element;
23
+ }: Tooltip.Popup.Props & Pick<Tooltip.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): react_jsx_runtime193.JSX.Element;
24
24
  //#endregion
25
25
  export { TooltipTrigger as i, TooltipContent as n, TooltipProvider as r, Tooltip$1 as t };
26
- //# sourceMappingURL=tooltip-7bptiThf.d.ts.map
26
+ //# sourceMappingURL=tooltip-DWoVF4fx.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-7bptiThf.d.ts","names":[],"sources":["../src/components/tooltip.tsx"],"sourcesContent":[],"mappings":";;;;iBAIS,eAAA;;;GAGN,OAAA,CAAiB,QAAA,CAAS,QAAK,kBAAA,CAAA,GAAA,CAAA;iBAUzB,SAAA;;GAAsB,OAAA,CAAiB,IAAA,CAAK,QAAK,kBAAA,CAAA,GAAA,CAAA;iBAIjD,cAAA;;GAA6B,OAAA,CAAiB,OAAA,CAAQ,QAAK,kBAAA,CAAA,GAAA,CAAA;AArBA,iBAyB3D,cAAA,CArBe;EAAA,SAAA;EAAA,IAAA;EAAA,UAAA;EAAA,KAAA;EAAA,WAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EA6BrB,OAAA,CAAiB,KAAA,CAAM,KA7BF,GA8BtB,IA9BsB,CA+BpB,OAAA,CAAiB,UAAA,CAAW,KA/BR,EAAA,OAAA,GAAA,aAAA,GAAA,MAAA,GAAA,YAAA,CAAA,CAAA,EAiCrB,kBAAA,CAAA,GAAA,CAAA,OAjCqB"}
1
+ {"version":3,"file":"tooltip-DWoVF4fx.d.ts","names":[],"sources":["../src/components/tooltip.tsx"],"sourcesContent":[],"mappings":";;;;iBAIS,eAAA;;;GAGN,OAAA,CAAiB,QAAA,CAAS,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAUzB,SAAA;;GAAsB,OAAA,CAAiB,IAAA,CAAK,QAAK,oBAAA,CAAA,GAAA,CAAA;iBAIjD,cAAA;;GAA6B,OAAA,CAAiB,OAAA,CAAQ,QAAK,oBAAA,CAAA,GAAA,CAAA;AArBA,iBAyB3D,cAAA,CArBe;EAAA,SAAA;EAAA,IAAA;EAAA,UAAA;EAAA,KAAA;EAAA,WAAA;EAAA,QAAA;EAAA,GAAA;AAAA,CAAA,EA6BrB,OAAA,CAAiB,KAAA,CAAM,KA7BF,GA8BtB,IA9BsB,CA+BpB,OAAA,CAAiB,UAAA,CAAW,KA/BR,EAAA,OAAA,GAAA,aAAA,GAAA,MAAA,GAAA,YAAA,CAAA,CAAA,EAiCrB,oBAAA,CAAA,GAAA,CAAA,OAjCqB"}
@@ -1,4 +1,4 @@
1
- import { t as cn } from "./utils-DeIaBj75.js";
1
+ import { t as cn } from "./utils-DUlptRpf.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Tooltip } from "@base-ui/react/tooltip";
4
4
 
@@ -40,4 +40,4 @@ function TooltipContent({ className, side = "top", sideOffset = 4, align = "cent
40
40
 
41
41
  //#endregion
42
42
  export { TooltipTrigger as i, TooltipContent as n, TooltipProvider as r, Tooltip$1 as t };
43
- //# sourceMappingURL=tooltip-BhxGE3Gb.js.map
43
+ //# sourceMappingURL=tooltip-Dsfn_zZD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-BhxGE3Gb.js","names":["TooltipPrimitive","Tooltip"],"sources":["../src/components/tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n )\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n side = \"top\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n \"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pe-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-start-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-end-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"],"mappings":";;;;;AAIA,SAAS,gBAAgB,EACvB,QAAQ,GACR,GAAG,SAC+B;AAClC,QACE,oBAACA,QAAiB;EAChB,aAAU;EACH;EACP,GAAI;GACJ;;AAIN,SAASC,UAAQ,EAAE,GAAG,SAAsC;AAC1D,QAAO,oBAACD,QAAiB;EAAK,aAAU;EAAU,GAAI;GAAS;;AAGjE,SAAS,eAAe,EAAE,GAAG,SAAyC;AACpE,QAAO,oBAACA,QAAiB;EAAQ,aAAU;EAAkB,GAAI;GAAS;;AAG5E,SAAS,eAAe,EACtB,WACA,OAAO,OACP,aAAa,GACb,QAAQ,UACR,cAAc,GACd,UACA,GAAG,SAKA;AACH,QACE,oBAACA,QAAiB,oBAChB,oBAACA,QAAiB;EACT;EACM;EACP;EACM;EACZ,WAAU;YAEV,qBAACA,QAAiB;GAChB,aAAU;GACV,WAAW,GACT,kwBACA,UACD;GACD,GAAI;cAEH,UACD,oBAACA,QAAiB,SAAM,WAAU,4hBAA4hB;IACviB;GACG,GACN"}
1
+ {"version":3,"file":"tooltip-Dsfn_zZD.js","names":["TooltipPrimitive","Tooltip"],"sources":["../src/components/tooltip.tsx"],"sourcesContent":["import { Tooltip as TooltipPrimitive } from \"@base-ui/react/tooltip\"\n\nimport { cn } from \"@px-ui/ui/lib/utils\"\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n )\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n side = \"top\",\n sideOffset = 4,\n align = \"center\",\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n \"align\" | \"alignOffset\" | \"side\" | \"sideOffset\"\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n \"z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pe-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-start-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-end-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"],"mappings":";;;;;AAIA,SAAS,gBAAgB,EACvB,QAAQ,GACR,GAAG,SAC+B;AAClC,QACE,oBAACA,QAAiB;EAChB,aAAU;EACH;EACP,GAAI;GACJ;;AAIN,SAASC,UAAQ,EAAE,GAAG,SAAsC;AAC1D,QAAO,oBAACD,QAAiB;EAAK,aAAU;EAAU,GAAI;GAAS;;AAGjE,SAAS,eAAe,EAAE,GAAG,SAAyC;AACpE,QAAO,oBAACA,QAAiB;EAAQ,aAAU;EAAkB,GAAI;GAAS;;AAG5E,SAAS,eAAe,EACtB,WACA,OAAO,OACP,aAAa,GACb,QAAQ,UACR,cAAc,GACd,UACA,GAAG,SAKA;AACH,QACE,oBAACA,QAAiB,oBAChB,oBAACA,QAAiB;EACT;EACM;EACP;EACM;EACZ,WAAU;YAEV,qBAACA,QAAiB;GAChB,aAAU;GACV,WAAW,GACT,kwBACA,UACD;GACD,GAAI;cAEH,UACD,oBAACA,QAAiB,SAAM,WAAU,4hBAA4hB;IACviB;GACG,GACN"}
@@ -60,4 +60,4 @@ type InferOption<T> = T extends LoadOptionsConfig<infer TData> ? TData : never;
60
60
  type InferOptions<T> = T extends LoadOptionsConfig<infer TData> ? TData[] : never;
61
61
  //#endregion
62
62
  export { useAsyncOptions as a, defineLoadOptions as i, InferOptions as n, LoadOptionsConfig as r, InferOption as t };
63
- //# sourceMappingURL=use-async-options-rNdyxIrQ.d.ts.map
63
+ //# sourceMappingURL=use-async-options-DdyHJxHh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-async-options-rNdyxIrQ.d.ts","names":[],"sources":["../src/hooks/use-async-options.ts"],"sourcesContent":[],"mappings":";;;;KAKK;WACM;;AAL6D;AAKxD;AAkBO;;;EAQT,OAAA,CAAA,EAAA,OAAA;EAAR;;AAEN;;;;EAMI,KAAA,CAAA,EAAA,MAAA;CACA;KAlBC,iBAmBD,CAAA,OAAA,CAAA,GAAA;EACA,IAAA,EAnBI,eAmBJ,CAnBoB,OAmBpB,CAAA;;;KAfC;;;UAGK;MACJ,QAAQ,kBAAkB;AAuGpB,iBArGI,eAqGa,CAAA,UAAA,GAAA,CAAA,CAAA,MAAA,EAAA;EACjB,QAAA,EApGE,QAoGF;EACY,MAAA,EApGZ,aAoGY,CApGE,OAoGF,CAAA;CAAd,EAAA;EAAA,MAAA;EAAA,UAAA;EAAA,KAAA;EAAA;CAAA,EAAA;EAAa,MAAA,EAAA,OAAA;EAGP,UAAA,EAAA,MAAA;EACiB,KAAA,CAAA,EAAA,OAAA;EAAlB,WAAA,CAAA,EAAA,OAAA;CAAwB,CAAA,EAAA;EAAA,KAAA,SAAA,EAAA;EAAA,SAAA,EAAA,OAAA;EAK3B,aAAA,EAAW,OAAA;EAEX,OAAA,EAAA,OAAY;EACtB,OAAA,EAAA,OAAA;EAAU,aAAA,EAAA,OAAA;EAAiC,UAAA,EAAA,GAAA,GAAA,IAAA;EAAK,MAAA,+CAAA,oCAAA,gBAAA,QAAA,CAAA,EAAA,OAAA,CAAA,OAAA,CAAA;;KAdtC;YACA;UACF,cAAc;;iBAGR,8CACD,kBAAkB,WAAM,kBAAA;KAK3B,iBACV,UAAU;KACA,kBACV,UAAU,iCAAiC"}
1
+ {"version":3,"file":"use-async-options-DdyHJxHh.d.ts","names":[],"sources":["../src/hooks/use-async-options.ts"],"sourcesContent":[],"mappings":";;;;KAKK;WACM;;AAL6D;AAKxD;AAkBO;;;EAQT,OAAA,CAAA,EAAA,OAAA;EAAR;;AAEN;;;;EAMI,KAAA,CAAA,EAAA,MAAA;CACA;KAlBC,iBAmBD,CAAA,OAAA,CAAA,GAAA;EACA,IAAA,EAnBI,eAmBJ,CAnBoB,OAmBpB,CAAA;;;KAfC;;;UAGK;MACJ,QAAQ,kBAAkB;AAuGpB,iBArGI,eAqGa,CAAA,UAAA,GAAA,CAAA,CAAA,MAAA,EAAA;EACjB,QAAA,EApGE,QAoGF;EACY,MAAA,EApGZ,aAoGY,CApGE,OAoGF,CAAA;CAAd,EAAA;EAAA,MAAA;EAAA,UAAA;EAAA,KAAA;EAAA;CAAA,EAAA;EAAa,MAAA,EAAA,OAAA;EAGP,UAAA,EAAA,MAAA;EACiB,KAAA,CAAA,EAAA,OAAA;EAAlB,WAAA,CAAA,EAAA,OAAA;CAAwB,CAAA,EAAA;EAAA,KAAA,SAAA,EAAA;EAAA,SAAA,EAAA,OAAA;EAK3B,aAAA,EAAW,OAAA;EAEX,OAAA,EAAA,OAAY;EACtB,OAAA,EAAA,OAAA;EAAU,aAAA,EAAA,OAAA;EAAiC,UAAA,EAAA,GAAA,GAAA,IAAA;EAAK,MAAA,+CAAA,oCAAA,gBAAA,QAAA,CAAA,EAAA,OAAA,CAAA,OAAA,CAAA;;KAdtC;YACA;UACF,cAAc;;iBAGR,8CACD,kBAAkB,WAAM,kBAAA;KAK3B,iBACV,UAAU;KACA,kBACV,UAAU,iCAAiC"}
@@ -50,4 +50,4 @@ function defineLoadOptions(loadOptions) {
50
50
 
51
51
  //#endregion
52
52
  export { useAsyncOptions as n, defineLoadOptions as t };
53
- //# sourceMappingURL=use-async-options-CtB4wZrr.js.map
53
+ //# sourceMappingURL=use-async-options-tueAuVs_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-async-options-CtB4wZrr.js","names":["EMPTY_ITEMS: readonly unknown[]"],"sources":["../src/hooks/use-async-options.ts"],"sourcesContent":["import { useCallback, useMemo, useRef } from \"react\";\nimport { useInfiniteQuery, type QueryKey } from \"@tanstack/react-query\";\n\nconst EMPTY_ITEMS: readonly unknown[] = Object.freeze([]);\n\ntype LoadOptionsData<TData> = {\n options: TData[];\n /**\n * Whether more pages remain — the recommended default. Most list APIs do\n * server-side keyword search, so the result set changes per query and the API\n * reports whether more pages exist (`has_more`, a `next` cursor,\n * `page < totalPages`). Takes precedence over `total` when both are present.\n */\n hasMore?: boolean;\n /**\n * Total number of records matching the current search. For lists without\n * server-side search — a bounded \"simple name\" list you load once and filter\n * on the client (pair with `localFilter`). The hook derives `hasMore` by\n * comparing `total` against the item count accumulated across fetched pages.\n */\n total?: number;\n};\n\ntype LoadOptionsReturn<TData> = {\n data: LoadOptionsData<TData>;\n error: any;\n};\n\ntype LoadOptionsFn<TData> = (params: {\n search: string;\n page: number;\n signal: AbortSignal;\n}) => Promise<LoadOptionsReturn<TData>>;\n\nexport function useAsyncOptions<TData = any>(\n params: {\n cacheKey: QueryKey;\n loader: LoadOptionsFn<TData>;\n },\n {\n isOpen,\n inputValue,\n eager = false,\n localFilter = false,\n }: {\n isOpen: boolean;\n inputValue: string;\n eager?: boolean;\n localFilter?: boolean;\n },\n) {\n const isFetchedAfterMount = useRef(false);\n // Once the initial empty-search page reports `hasMore: false`, the entire\n // dataset is already in memory — freeze the query search so typing filters\n // locally instead of refetching.\n const isFullyLoaded = useRef(false);\n\n const effectiveSearch =\n localFilter && isFullyLoaded.current ? \"\" : inputValue;\n\n const query = useInfiniteQuery({\n queryKey: [...params.cacheKey, effectiveSearch],\n queryFn: async ({ pageParam, signal }) => {\n const { error, data } = await params.loader({\n search: effectiveSearch,\n page: pageParam,\n signal,\n });\n\n if (error) {\n throw new Error(error);\n }\n\n return data;\n },\n enabled: isOpen || eager,\n initialPageParam: 1,\n staleTime: () => (isFetchedAfterMount.current ? Infinity : 0),\n getNextPageParam: (lastPage, allPages) => {\n // Explicit hasMore from the server wins.\n if (typeof lastPage.hasMore === \"boolean\") {\n return lastPage.hasMore ? allPages.length + 1 : undefined;\n }\n // Otherwise derive it from total vs. the accumulated item count —\n // allPages already holds every page React Query has fetched.\n if (typeof lastPage.total === \"number\") {\n const loaded = allPages.reduce(\n (count, page) => count + page.options.length,\n 0,\n );\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n }\n return undefined;\n },\n retry: false,\n });\n\n if (query.isFetchedAfterMount && !isFetchedAfterMount.current) {\n isFetchedAfterMount.current = true;\n }\n\n if (\n localFilter &&\n !isFullyLoaded.current &&\n effectiveSearch === \"\" &&\n query.isSuccess &&\n query.data.pages.length === 1 &&\n query.hasNextPage === false\n ) {\n isFullyLoaded.current = true;\n }\n\n const items = useMemo(\n () =>\n (query.data?.pages.flatMap((page) => page.options) ??\n EMPTY_ITEMS) as TData[],\n [query.data?.pages],\n );\n\n const handleLoadMore = useCallback(() => {\n query.fetchNextPage();\n }, [query.fetchNextPage]);\n\n return {\n items,\n isLoading: query.isLoading,\n isLoadingMore: query.isFetchingNextPage,\n hasMore: query.hasNextPage,\n isError: query.isError,\n isLocalFilter: localFilter && isFullyLoaded.current,\n onLoadMore: handleLoadMore,\n _query: query,\n };\n}\n\nexport type LoadOptionsConfig<TData> = {\n cacheKey: QueryKey;\n loader: LoadOptionsFn<TData>;\n};\n\nexport function defineLoadOptions<TData = any>(\n loadOptions: LoadOptionsConfig<TData>,\n) {\n return loadOptions;\n}\n\nexport type InferOption<T> =\n T extends LoadOptionsConfig<infer TData> ? TData : never;\nexport type InferOptions<T> =\n T extends LoadOptionsConfig<infer TData> ? TData[] : never;\n"],"mappings":";;;;AAGA,MAAMA,cAAkC,OAAO,OAAO,EAAE,CAAC;AA+BzD,SAAgB,gBACd,QAIA,EACE,QACA,YACA,QAAQ,OACR,cAAc,SAOhB;CACA,MAAM,sBAAsB,OAAO,MAAM;CAIzC,MAAM,gBAAgB,OAAO,MAAM;CAEnC,MAAM,kBACJ,eAAe,cAAc,UAAU,KAAK;CAE9C,MAAM,QAAQ,iBAAiB;EAC7B,UAAU,CAAC,GAAG,OAAO,UAAU,gBAAgB;EAC/C,SAAS,OAAO,EAAE,WAAW,aAAa;GACxC,MAAM,EAAE,OAAO,SAAS,MAAM,OAAO,OAAO;IAC1C,QAAQ;IACR,MAAM;IACN;IACD,CAAC;AAEF,OAAI,MACF,OAAM,IAAI,MAAM,MAAM;AAGxB,UAAO;;EAET,SAAS,UAAU;EACnB,kBAAkB;EAClB,iBAAkB,oBAAoB,UAAU,WAAW;EAC3D,mBAAmB,UAAU,aAAa;AAExC,OAAI,OAAO,SAAS,YAAY,UAC9B,QAAO,SAAS,UAAU,SAAS,SAAS,IAAI;AAIlD,OAAI,OAAO,SAAS,UAAU,SAK5B,QAJe,SAAS,QACrB,OAAO,SAAS,QAAQ,KAAK,QAAQ,QACtC,EACD,GACe,SAAS,QAAQ,SAAS,SAAS,IAAI;;EAI3D,OAAO;EACR,CAAC;AAEF,KAAI,MAAM,uBAAuB,CAAC,oBAAoB,QACpD,qBAAoB,UAAU;AAGhC,KACE,eACA,CAAC,cAAc,WACf,oBAAoB,MACpB,MAAM,aACN,MAAM,KAAK,MAAM,WAAW,KAC5B,MAAM,gBAAgB,MAEtB,eAAc,UAAU;CAG1B,MAAM,QAAQ,cAET,MAAM,MAAM,MAAM,SAAS,SAAS,KAAK,QAAQ,IAChD,aACJ,CAAC,MAAM,MAAM,MAAM,CACpB;CAED,MAAM,iBAAiB,kBAAkB;AACvC,QAAM,eAAe;IACpB,CAAC,MAAM,cAAc,CAAC;AAEzB,QAAO;EACL;EACA,WAAW,MAAM;EACjB,eAAe,MAAM;EACrB,SAAS,MAAM;EACf,SAAS,MAAM;EACf,eAAe,eAAe,cAAc;EAC5C,YAAY;EACZ,QAAQ;EACT;;AAQH,SAAgB,kBACd,aACA;AACA,QAAO"}
1
+ {"version":3,"file":"use-async-options-tueAuVs_.js","names":["EMPTY_ITEMS: readonly unknown[]"],"sources":["../src/hooks/use-async-options.ts"],"sourcesContent":["import { useCallback, useMemo, useRef } from \"react\";\nimport { useInfiniteQuery, type QueryKey } from \"@tanstack/react-query\";\n\nconst EMPTY_ITEMS: readonly unknown[] = Object.freeze([]);\n\ntype LoadOptionsData<TData> = {\n options: TData[];\n /**\n * Whether more pages remain — the recommended default. Most list APIs do\n * server-side keyword search, so the result set changes per query and the API\n * reports whether more pages exist (`has_more`, a `next` cursor,\n * `page < totalPages`). Takes precedence over `total` when both are present.\n */\n hasMore?: boolean;\n /**\n * Total number of records matching the current search. For lists without\n * server-side search — a bounded \"simple name\" list you load once and filter\n * on the client (pair with `localFilter`). The hook derives `hasMore` by\n * comparing `total` against the item count accumulated across fetched pages.\n */\n total?: number;\n};\n\ntype LoadOptionsReturn<TData> = {\n data: LoadOptionsData<TData>;\n error: any;\n};\n\ntype LoadOptionsFn<TData> = (params: {\n search: string;\n page: number;\n signal: AbortSignal;\n}) => Promise<LoadOptionsReturn<TData>>;\n\nexport function useAsyncOptions<TData = any>(\n params: {\n cacheKey: QueryKey;\n loader: LoadOptionsFn<TData>;\n },\n {\n isOpen,\n inputValue,\n eager = false,\n localFilter = false,\n }: {\n isOpen: boolean;\n inputValue: string;\n eager?: boolean;\n localFilter?: boolean;\n },\n) {\n const isFetchedAfterMount = useRef(false);\n // Once the initial empty-search page reports `hasMore: false`, the entire\n // dataset is already in memory — freeze the query search so typing filters\n // locally instead of refetching.\n const isFullyLoaded = useRef(false);\n\n const effectiveSearch =\n localFilter && isFullyLoaded.current ? \"\" : inputValue;\n\n const query = useInfiniteQuery({\n queryKey: [...params.cacheKey, effectiveSearch],\n queryFn: async ({ pageParam, signal }) => {\n const { error, data } = await params.loader({\n search: effectiveSearch,\n page: pageParam,\n signal,\n });\n\n if (error) {\n throw new Error(error);\n }\n\n return data;\n },\n enabled: isOpen || eager,\n initialPageParam: 1,\n staleTime: () => (isFetchedAfterMount.current ? Infinity : 0),\n getNextPageParam: (lastPage, allPages) => {\n // Explicit hasMore from the server wins.\n if (typeof lastPage.hasMore === \"boolean\") {\n return lastPage.hasMore ? allPages.length + 1 : undefined;\n }\n // Otherwise derive it from total vs. the accumulated item count —\n // allPages already holds every page React Query has fetched.\n if (typeof lastPage.total === \"number\") {\n const loaded = allPages.reduce(\n (count, page) => count + page.options.length,\n 0,\n );\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n }\n return undefined;\n },\n retry: false,\n });\n\n if (query.isFetchedAfterMount && !isFetchedAfterMount.current) {\n isFetchedAfterMount.current = true;\n }\n\n if (\n localFilter &&\n !isFullyLoaded.current &&\n effectiveSearch === \"\" &&\n query.isSuccess &&\n query.data.pages.length === 1 &&\n query.hasNextPage === false\n ) {\n isFullyLoaded.current = true;\n }\n\n const items = useMemo(\n () =>\n (query.data?.pages.flatMap((page) => page.options) ??\n EMPTY_ITEMS) as TData[],\n [query.data?.pages],\n );\n\n const handleLoadMore = useCallback(() => {\n query.fetchNextPage();\n }, [query.fetchNextPage]);\n\n return {\n items,\n isLoading: query.isLoading,\n isLoadingMore: query.isFetchingNextPage,\n hasMore: query.hasNextPage,\n isError: query.isError,\n isLocalFilter: localFilter && isFullyLoaded.current,\n onLoadMore: handleLoadMore,\n _query: query,\n };\n}\n\nexport type LoadOptionsConfig<TData> = {\n cacheKey: QueryKey;\n loader: LoadOptionsFn<TData>;\n};\n\nexport function defineLoadOptions<TData = any>(\n loadOptions: LoadOptionsConfig<TData>,\n) {\n return loadOptions;\n}\n\nexport type InferOption<T> =\n T extends LoadOptionsConfig<infer TData> ? TData : never;\nexport type InferOptions<T> =\n T extends LoadOptionsConfig<infer TData> ? TData[] : never;\n"],"mappings":";;;;AAGA,MAAMA,cAAkC,OAAO,OAAO,EAAE,CAAC;AA+BzD,SAAgB,gBACd,QAIA,EACE,QACA,YACA,QAAQ,OACR,cAAc,SAOhB;CACA,MAAM,sBAAsB,OAAO,MAAM;CAIzC,MAAM,gBAAgB,OAAO,MAAM;CAEnC,MAAM,kBACJ,eAAe,cAAc,UAAU,KAAK;CAE9C,MAAM,QAAQ,iBAAiB;EAC7B,UAAU,CAAC,GAAG,OAAO,UAAU,gBAAgB;EAC/C,SAAS,OAAO,EAAE,WAAW,aAAa;GACxC,MAAM,EAAE,OAAO,SAAS,MAAM,OAAO,OAAO;IAC1C,QAAQ;IACR,MAAM;IACN;IACD,CAAC;AAEF,OAAI,MACF,OAAM,IAAI,MAAM,MAAM;AAGxB,UAAO;;EAET,SAAS,UAAU;EACnB,kBAAkB;EAClB,iBAAkB,oBAAoB,UAAU,WAAW;EAC3D,mBAAmB,UAAU,aAAa;AAExC,OAAI,OAAO,SAAS,YAAY,UAC9B,QAAO,SAAS,UAAU,SAAS,SAAS,IAAI;AAIlD,OAAI,OAAO,SAAS,UAAU,SAK5B,QAJe,SAAS,QACrB,OAAO,SAAS,QAAQ,KAAK,QAAQ,QACtC,EACD,GACe,SAAS,QAAQ,SAAS,SAAS,IAAI;;EAI3D,OAAO;EACR,CAAC;AAEF,KAAI,MAAM,uBAAuB,CAAC,oBAAoB,QACpD,qBAAoB,UAAU;AAGhC,KACE,eACA,CAAC,cAAc,WACf,oBAAoB,MACpB,MAAM,aACN,MAAM,KAAK,MAAM,WAAW,KAC5B,MAAM,gBAAgB,MAEtB,eAAc,UAAU;CAG1B,MAAM,QAAQ,cAET,MAAM,MAAM,MAAM,SAAS,SAAS,KAAK,QAAQ,IAChD,aACJ,CAAC,MAAM,MAAM,MAAM,CACpB;CAED,MAAM,iBAAiB,kBAAkB;AACvC,QAAM,eAAe;IACpB,CAAC,MAAM,cAAc,CAAC;AAEzB,QAAO;EACL;EACA,WAAW,MAAM;EACjB,eAAe,MAAM;EACrB,SAAS,MAAM;EACf,SAAS,MAAM;EACf,eAAe,eAAe,cAAc;EAC5C,YAAY;EACZ,QAAQ;EACT;;AAQH,SAAgB,kBACd,aACA;AACA,QAAO"}
@@ -21,4 +21,4 @@ function useDebounce(callback, delay, deps) {
21
21
 
22
22
  //#endregion
23
23
  export { useDebounce as t };
24
- //# sourceMappingURL=use-debounce--Lv1ABSa.js.map
24
+ //# sourceMappingURL=use-debounce-7gIeOwla.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-debounce--Lv1ABSa.js","names":[],"sources":["../src/hooks/use-debounce.ts"],"sourcesContent":["import { useEffect, useEffectEvent, useRef } from \"react\";\n\nexport default function useDebounce<T>(\n callback: () => void,\n delay: number,\n deps: React.DependencyList,\n) {\n const timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n const cb = useEffectEvent(callback);\n\n useEffect(() => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n\n timeout.current = setTimeout(() => {\n cb();\n timeout.current = null;\n }, delay);\n\n return () => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n };\n }, [...deps, delay]);\n}\n"],"mappings":";;;AAEA,SAAwB,YACtB,UACA,OACA,MACA;CACA,MAAM,UAAU,OAA6C,KAAK;CAClE,MAAM,KAAK,eAAe,SAAS;AAEnC,iBAAgB;AACd,MAAI,QAAQ,QACV,cAAa,QAAQ,QAAQ;AAG/B,UAAQ,UAAU,iBAAiB;AACjC,OAAI;AACJ,WAAQ,UAAU;KACjB,MAAM;AAET,eAAa;AACX,OAAI,QAAQ,SAAS;AACnB,iBAAa,QAAQ,QAAQ;AAC7B,YAAQ,UAAU;;;IAGrB,CAAC,GAAG,MAAM,MAAM,CAAC"}
1
+ {"version":3,"file":"use-debounce-7gIeOwla.js","names":[],"sources":["../src/hooks/use-debounce.ts"],"sourcesContent":["import { useEffect, useEffectEvent, useRef } from \"react\";\n\nexport default function useDebounce<T>(\n callback: () => void,\n delay: number,\n deps: React.DependencyList,\n) {\n const timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n const cb = useEffectEvent(callback);\n\n useEffect(() => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n\n timeout.current = setTimeout(() => {\n cb();\n timeout.current = null;\n }, delay);\n\n return () => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n };\n }, [...deps, delay]);\n}\n"],"mappings":";;;AAEA,SAAwB,YACtB,UACA,OACA,MACA;CACA,MAAM,UAAU,OAA6C,KAAK;CAClE,MAAM,KAAK,eAAe,SAAS;AAEnC,iBAAgB;AACd,MAAI,QAAQ,QACV,cAAa,QAAQ,QAAQ;AAG/B,UAAQ,UAAU,iBAAiB;AACjC,OAAI;AACJ,WAAQ,UAAU;KACjB,MAAM;AAET,eAAa;AACX,OAAI,QAAQ,SAAS;AACnB,iBAAa,QAAQ,QAAQ;AAC7B,YAAQ,UAAU;;;IAGrB,CAAC,GAAG,MAAM,MAAM,CAAC"}
@@ -130,4 +130,4 @@ type FileUploadOptions = UseFileUploadOptions;
130
130
  type FileUploadWithUploaderOptions = UseFileUploadOptions;
131
131
  //#endregion
132
132
  export { FileWithPreview as a, UploadConfig as c, UseFileUploadReturn as d, formatBytes as f, FileUploadWithUploaderOptions as i, UploadStatus as l, FileUploadItem as n, FileWithUploadStatus as o, useFileUpload as p, FileUploadOptions as r, PresignedUrlResponse as s, FileMetadata as t, UseFileUploadOptions as u };
133
- //# sourceMappingURL=use-file-upload-Cbb_9kTw.d.ts.map
133
+ //# sourceMappingURL=use-file-upload-Bc7CyQ7O.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-file-upload-Cbb_9kTw.d.ts","names":[],"sources":["../src/hooks/use-file-upload.ts"],"sourcesContent":[],"mappings":";;;KAaY,YAAA;;EAAA,IAAA,EAAA,MAAA;EAQA,IAAA,EAAA,MAAA;EAEA,GAAA,EAAA,MAAA;EACJ,EAAA,EAAA,MAAA;CAAO;AAIL,KAPE,YAAA,GAOF,MAAA,GAAA,WAAA,GAAA,UAAA,GAAA,OAAA;AAAY,KALV,cAAA,GAKU;EAKV,IAAA,EATJ,IASI,GATG,YASiB;EA2BpB,EAAA,EAAA,MAAA;EAQC,OAAA,CAAA,EAAA,MAAA;EAEA,QAAA,EAAA,MAAA;EADL,MAAA,EAzCE,YAyCF;EAUE,KAAA,CAAA,EAAA,MAAA;EACS,WAAA,CAAA,EAAA,MAAA;CAEN;AACN,KAlDK,oBAAA,GAkDL;EAcqB;EAKH,GAAA,EAAA,MAAA;EAKQ;EAAc,SAAA,EAAA,MAAA;EAGnC;EAMK,GAAA,CAAA,EAAA,MAAA;EACS;EACA,GAAA,CAAA,EAAA,MAAA;EACK;EACpB,qBAAA,CAAA,EAAA,MAAA;EAAY;EAGX,cAAA,CAAA,EAAA,MAAmB;EAEtB;EAMW,MAAA,CAAA,EAAA,MAAA;EAAW;EAMV,kBAAA,CAAA,EAAA,MAAA;EAEV;EAA2B,iBAAA,CAAA,EAAA,MAAA;EAAqB;EAKnC,YAAA,CAAA,EAAA,MAAA;EAA6B;EAAR,iBAAA,CAAA,EAAA,MAAA;EACd;EAIE,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;CAAV;AACU,KA1FrB,YAAA,GA0FqB;EAAV;;;EAEK,eAAA,EAAA,CAAA,MAAA,EAAA;IAAV,QAAA,EAAA,MAAA;IACkB,WAAA,EAAA,MAAA;IAAZ,IAAA,EAAA,MAAA;IAGQ,MAAA,CAAA,EAxFnB,WAwFmB;EAApB,CAAA,EAAA,GAvFJ,OAuFI,CAAA;IACe,MAAA,CAAA,EAvFd,oBAuFc,GAAA,IAAA;IAApB,KAAA,CAAA,EAAA,OAAA;EAAmB,CAAA,CAAA;EAOb;AAiEb;AAulBA;EACY,UAAA,EAAA,CAAA,GAAA,EAAA,MAAoB,EAAA,IAAA,EA9uBtB,IA8uByB,EAAA,aAAc,EA7uB9B,oBA6uB8B,EAAA,UAAA,CAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,MAAA,CAAA,EA3uBpC,WA2uBoC,EAAA,GA1uB1C,OA0uB0C,CAAA;IACrC,MAAA,CAAA,EAAA;MACA,GAAA,EAAA,MAAA;;;;;;;;;;;;;4BA9tBgB;;;;yBAKH;;;;iCAKQ;;KAGrB,oBAAA;;;;;;iBAMK;0BACS;0BACA;+BACK;WACpB;;KAGC,mBAAA;SAEH;;;;oBAMW,WAAW;;;;qBAMV;oBAEV,2BAA2B,qBAAqB;;wBAKnC,qBAAqB,QAAQ;+BACtB;;uBAIR,UAAU;uBACV,UAAU;sBACX,UAAU;kBACd,UAAU;wBACJ,YAAY;;0BAGxB,oBAAoB,sBACzB,oBAAoB;;;;cAOd;cAiEA,0BACF,yBACR;KAqlBS,eAAA,GAAkB;KAClB,oBAAA,GAAuB;KACvB,iBAAA,GAAoB;KACpB,6BAAA,GAAgC"}
1
+ {"version":3,"file":"use-file-upload-Bc7CyQ7O.d.ts","names":[],"sources":["../src/hooks/use-file-upload.ts"],"sourcesContent":[],"mappings":";;;KAaY,YAAA;;EAAA,IAAA,EAAA,MAAA;EAQA,IAAA,EAAA,MAAA;EAEA,GAAA,EAAA,MAAA;EACJ,EAAA,EAAA,MAAA;CAAO;AAIL,KAPE,YAAA,GAOF,MAAA,GAAA,WAAA,GAAA,UAAA,GAAA,OAAA;AAAY,KALV,cAAA,GAKU;EAKV,IAAA,EATJ,IASI,GATG,YASiB;EA2BpB,EAAA,EAAA,MAAA;EAQC,OAAA,CAAA,EAAA,MAAA;EAEA,QAAA,EAAA,MAAA;EADL,MAAA,EAzCE,YAyCF;EAUE,KAAA,CAAA,EAAA,MAAA;EACS,WAAA,CAAA,EAAA,MAAA;CAEN;AACN,KAlDK,oBAAA,GAkDL;EAcqB;EAKH,GAAA,EAAA,MAAA;EAKQ;EAAc,SAAA,EAAA,MAAA;EAGnC;EAMK,GAAA,CAAA,EAAA,MAAA;EACS;EACA,GAAA,CAAA,EAAA,MAAA;EACK;EACpB,qBAAA,CAAA,EAAA,MAAA;EAAY;EAGX,cAAA,CAAA,EAAA,MAAmB;EAEtB;EAMW,MAAA,CAAA,EAAA,MAAA;EAAW;EAMV,kBAAA,CAAA,EAAA,MAAA;EAEV;EAA2B,iBAAA,CAAA,EAAA,MAAA;EAAqB;EAKnC,YAAA,CAAA,EAAA,MAAA;EAA6B;EAAR,iBAAA,CAAA,EAAA,MAAA;EACd;EAIE,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;CAAV;AACU,KA1FrB,YAAA,GA0FqB;EAAV;;;EAEK,eAAA,EAAA,CAAA,MAAA,EAAA;IAAV,QAAA,EAAA,MAAA;IACkB,WAAA,EAAA,MAAA;IAAZ,IAAA,EAAA,MAAA;IAGQ,MAAA,CAAA,EAxFnB,WAwFmB;EAApB,CAAA,EAAA,GAvFJ,OAuFI,CAAA;IACe,MAAA,CAAA,EAvFd,oBAuFc,GAAA,IAAA;IAApB,KAAA,CAAA,EAAA,OAAA;EAAmB,CAAA,CAAA;EAOb;AAiEb;AAulBA;EACY,UAAA,EAAA,CAAA,GAAA,EAAA,MAAoB,EAAA,IAAA,EA9uBtB,IA8uByB,EAAA,aAAc,EA7uB9B,oBA6uB8B,EAAA,UAAA,CAAA,EAAA,CAAA,QAAA,EAAA,MAAA,EAAA,GAAA,IAAA,EAAA,MAAA,CAAA,EA3uBpC,WA2uBoC,EAAA,GA1uB1C,OA0uB0C,CAAA;IACrC,MAAA,CAAA,EAAA;MACA,GAAA,EAAA,MAAA;;;;;;;;;;;;;4BA9tBgB;;;;yBAKH;;;;iCAKQ;;KAGrB,oBAAA;;;;;;iBAMK;0BACS;0BACA;+BACK;WACpB;;KAGC,mBAAA;SAEH;;;;oBAMW,WAAW;;;;qBAMV;oBAEV,2BAA2B,qBAAqB;;wBAKnC,qBAAqB,QAAQ;+BACtB;;uBAIR,UAAU;uBACV,UAAU;sBACX,UAAU;kBACd,UAAU;wBACJ,YAAY;;0BAGxB,oBAAoB,sBACzB,oBAAoB;;;;cAOd;cAiEA,0BACF,yBACR;KAqlBS,eAAA,GAAkB;KAClB,oBAAA,GAAuB;KACvB,iBAAA,GAAoB;KACpB,6BAAA,GAAgC"}
@@ -399,4 +399,4 @@ const useFileUpload = (options = {}) => {
399
399
 
400
400
  //#endregion
401
401
  export { useFileUpload as n, formatBytes as t };
402
- //# sourceMappingURL=use-file-upload-BbERd3Nw.js.map
402
+ //# sourceMappingURL=use-file-upload-DQD1vY_Z.js.map