@px-ui/ui 0.1.4 → 1.0.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 (316) hide show
  1. package/dist/avatar-BAkmIOVe.d.ts +41 -0
  2. package/dist/avatar-BAkmIOVe.d.ts.map +1 -0
  3. package/dist/avatar-DDdL9xDH.js +119 -0
  4. package/dist/avatar-DDdL9xDH.js.map +1 -0
  5. package/dist/button-BiiFfKiR.d.ts +19 -0
  6. package/dist/button-BiiFfKiR.d.ts.map +1 -0
  7. package/dist/button-hBUFMmsZ.js +47 -0
  8. package/dist/button-hBUFMmsZ.js.map +1 -0
  9. package/dist/combobox-CnpyzZ7B.js +334 -0
  10. package/dist/combobox-CnpyzZ7B.js.map +1 -0
  11. package/dist/combobox-JXY6PiDq.d.ts +109 -0
  12. package/dist/combobox-JXY6PiDq.d.ts.map +1 -0
  13. package/dist/components/accordion.d.ts +25 -0
  14. package/dist/components/accordion.d.ts.map +1 -0
  15. package/dist/components/accordion.js +56 -0
  16. package/dist/components/accordion.js.map +1 -0
  17. package/dist/components/alert-dialog.d.ts +59 -0
  18. package/dist/components/alert-dialog.d.ts.map +1 -0
  19. package/dist/components/alert-dialog.js +99 -0
  20. package/dist/components/alert-dialog.js.map +1 -0
  21. package/dist/components/alert.d.ts +29 -0
  22. package/dist/components/alert.d.ts.map +1 -0
  23. package/dist/components/alert.js +47 -0
  24. package/dist/components/alert.js.map +1 -0
  25. package/dist/components/aspect-ratio.d.ts +13 -0
  26. package/dist/components/aspect-ratio.d.ts.map +1 -0
  27. package/dist/components/aspect-ratio.js +16 -0
  28. package/dist/components/aspect-ratio.js.map +1 -0
  29. package/dist/components/avatar-group.d.ts +30 -0
  30. package/dist/components/avatar-group.d.ts.map +1 -0
  31. package/dist/components/avatar-group.js +69 -0
  32. package/dist/components/avatar-group.js.map +1 -0
  33. package/dist/components/avatar.d.ts +2 -0
  34. package/dist/components/avatar.js +5 -0
  35. package/dist/components/badge.d.ts +18 -0
  36. package/dist/components/badge.d.ts.map +1 -0
  37. package/dist/components/badge.js +31 -0
  38. package/dist/components/badge.js.map +1 -0
  39. package/dist/components/breadcrumb.d.ts +38 -0
  40. package/dist/components/breadcrumb.d.ts.map +1 -0
  41. package/dist/components/breadcrumb.js +75 -0
  42. package/dist/components/breadcrumb.js.map +1 -0
  43. package/dist/components/button-group.d.ts +29 -0
  44. package/dist/components/button-group.d.ts.map +1 -0
  45. package/dist/components/button-group.js +44 -0
  46. package/dist/components/button-group.js.map +1 -0
  47. package/dist/components/button.d.ts +2 -0
  48. package/dist/components/button.js +4 -0
  49. package/dist/components/calendar.d.ts +32 -0
  50. package/dist/components/calendar.d.ts.map +1 -0
  51. package/dist/components/calendar.js +119 -0
  52. package/dist/components/calendar.js.map +1 -0
  53. package/dist/components/card.d.ts +38 -0
  54. package/dist/components/card.d.ts.map +1 -0
  55. package/dist/components/card.js +59 -0
  56. package/dist/components/card.js.map +1 -0
  57. package/dist/components/carousel.d.ts +57 -0
  58. package/dist/components/carousel.d.ts.map +1 -0
  59. package/dist/components/carousel.js +136 -0
  60. package/dist/components/carousel.js.map +1 -0
  61. package/dist/components/chart.d.ts +79 -0
  62. package/dist/components/chart.d.ts.map +1 -0
  63. package/dist/components/chart.js +148 -0
  64. package/dist/components/chart.js.map +1 -0
  65. package/dist/components/checkbox.d.ts +11 -0
  66. package/dist/components/checkbox.d.ts.map +1 -0
  67. package/dist/components/checkbox.js +24 -0
  68. package/dist/components/checkbox.js.map +1 -0
  69. package/dist/components/collapsible.d.ts +25 -0
  70. package/dist/components/collapsible.d.ts.map +1 -0
  71. package/dist/components/collapsible.js +28 -0
  72. package/dist/components/collapsible.js.map +1 -0
  73. package/dist/components/combobox.d.ts +3 -0
  74. package/dist/components/combobox.js +13 -0
  75. package/dist/components/command.d.ts +78 -0
  76. package/dist/components/command.d.ts.map +1 -0
  77. package/dist/components/command.js +125 -0
  78. package/dist/components/command.js.map +1 -0
  79. package/dist/components/context-menu.d.ts +87 -0
  80. package/dist/components/context-menu.d.ts.map +1 -0
  81. package/dist/components/context-menu.js +137 -0
  82. package/dist/components/context-menu.js.map +1 -0
  83. package/dist/components/currency-select-field.d.ts +105 -0
  84. package/dist/components/currency-select-field.d.ts.map +1 -0
  85. package/dist/components/currency-select-field.js +266 -0
  86. package/dist/components/currency-select-field.js.map +1 -0
  87. package/dist/components/dialog.d.ts +61 -0
  88. package/dist/components/dialog.d.ts.map +1 -0
  89. package/dist/components/dialog.js +5 -0
  90. package/dist/components/direction.d.ts +2 -0
  91. package/dist/components/direction.js +3 -0
  92. package/dist/components/drawer.d.ts +45 -0
  93. package/dist/components/drawer.d.ts.map +1 -0
  94. package/dist/components/drawer.js +86 -0
  95. package/dist/components/drawer.js.map +1 -0
  96. package/dist/components/dropdown-menu.d.ts +2 -0
  97. package/dist/components/dropdown-menu.js +4 -0
  98. package/dist/components/empty.d.ts +36 -0
  99. package/dist/components/empty.d.ts.map +1 -0
  100. package/dist/components/empty.js +62 -0
  101. package/dist/components/empty.js.map +1 -0
  102. package/dist/components/field.d.ts +72 -0
  103. package/dist/components/field.d.ts.map +1 -0
  104. package/dist/components/field.js +122 -0
  105. package/dist/components/field.js.map +1 -0
  106. package/dist/components/file-upload-field.d.ts +58 -0
  107. package/dist/components/file-upload-field.d.ts.map +1 -0
  108. package/dist/components/file-upload-field.js +90 -0
  109. package/dist/components/file-upload-field.js.map +1 -0
  110. package/dist/components/file-upload.d.ts +4 -0
  111. package/dist/components/file-upload.js +6 -0
  112. package/dist/components/hover-card.d.ts +21 -0
  113. package/dist/components/hover-card.d.ts.map +1 -0
  114. package/dist/components/hover-card.js +40 -0
  115. package/dist/components/hover-card.js.map +1 -0
  116. package/dist/components/input-group.d.ts +46 -0
  117. package/dist/components/input-group.d.ts.map +1 -0
  118. package/dist/components/input-group.js +9 -0
  119. package/dist/components/input-otp.d.ts +24 -0
  120. package/dist/components/input-otp.d.ts.map +1 -0
  121. package/dist/components/input-otp.js +40 -0
  122. package/dist/components/input-otp.js.map +1 -0
  123. package/dist/components/input.d.ts +2 -0
  124. package/dist/components/input.js +4 -0
  125. package/dist/components/item.d.ts +62 -0
  126. package/dist/components/item.d.ts.map +1 -0
  127. package/dist/components/item.js +124 -0
  128. package/dist/components/item.js.map +1 -0
  129. package/dist/components/kbd.d.ts +14 -0
  130. package/dist/components/kbd.d.ts.map +1 -0
  131. package/dist/components/kbd.js +22 -0
  132. package/dist/components/kbd.js.map +1 -0
  133. package/dist/components/label.d.ts +2 -0
  134. package/dist/components/label.js +6 -0
  135. package/dist/components/menubar.d.ts +89 -0
  136. package/dist/components/menubar.d.ts.map +1 -0
  137. package/dist/components/menubar.js +140 -0
  138. package/dist/components/menubar.js.map +1 -0
  139. package/dist/components/native-select.d.ts +23 -0
  140. package/dist/components/native-select.d.ts.map +1 -0
  141. package/dist/components/native-select.js +41 -0
  142. package/dist/components/native-select.js.map +1 -0
  143. package/dist/components/navigation-menu.d.ts +48 -0
  144. package/dist/components/navigation-menu.d.ts.map +1 -0
  145. package/dist/components/navigation-menu.js +85 -0
  146. package/dist/components/navigation-menu.js.map +1 -0
  147. package/dist/components/pagination.d.ts +46 -0
  148. package/dist/components/pagination.d.ts.map +1 -0
  149. package/dist/components/pagination.js +89 -0
  150. package/dist/components/pagination.js.map +1 -0
  151. package/dist/components/phone-input.d.ts +28 -0
  152. package/dist/components/phone-input.d.ts.map +1 -0
  153. package/dist/components/phone-input.js +60 -0
  154. package/dist/components/phone-input.js.map +1 -0
  155. package/dist/components/popover.d.ts +34 -0
  156. package/dist/components/popover.d.ts.map +1 -0
  157. package/dist/components/popover.js +4 -0
  158. package/dist/components/progress.d.ts +29 -0
  159. package/dist/components/progress.d.ts.map +1 -0
  160. package/dist/components/progress.js +48 -0
  161. package/dist/components/progress.js.map +1 -0
  162. package/dist/components/radio-group.d.ts +16 -0
  163. package/dist/components/radio-group.d.ts.map +1 -0
  164. package/dist/components/radio-group.js +29 -0
  165. package/dist/components/radio-group.js.map +1 -0
  166. package/dist/components/resizable.d.ts +21 -0
  167. package/dist/components/resizable.d.ts.map +1 -0
  168. package/dist/components/resizable.js +32 -0
  169. package/dist/components/resizable.js.map +1 -0
  170. package/dist/components/scroll-area.d.ts +17 -0
  171. package/dist/components/scroll-area.d.ts.map +1 -0
  172. package/dist/components/scroll-area.js +39 -0
  173. package/dist/components/scroll-area.js.map +1 -0
  174. package/dist/components/select.d.ts +56 -0
  175. package/dist/components/select.d.ts.map +1 -0
  176. package/dist/components/select.js +102 -0
  177. package/dist/components/select.js.map +1 -0
  178. package/dist/components/separator.d.ts +2 -0
  179. package/dist/components/separator.js +4 -0
  180. package/dist/components/sheet.d.ts +43 -0
  181. package/dist/components/sheet.d.ts.map +1 -0
  182. package/dist/components/sheet.js +7 -0
  183. package/dist/components/sidebar.d.ts +162 -0
  184. package/dist/components/sidebar.d.ts.map +1 -0
  185. package/dist/components/sidebar.js +390 -0
  186. package/dist/components/sidebar.js.map +1 -0
  187. package/dist/components/skeleton.d.ts +10 -0
  188. package/dist/components/skeleton.d.ts.map +1 -0
  189. package/dist/components/skeleton.js +4 -0
  190. package/dist/components/slider.d.ts +15 -0
  191. package/dist/components/slider.d.ts.map +1 -0
  192. package/dist/components/slider.js +36 -0
  193. package/dist/components/slider.js.map +1 -0
  194. package/dist/components/spinner.d.ts +11 -0
  195. package/dist/components/spinner.d.ts.map +1 -0
  196. package/dist/components/spinner.js +4 -0
  197. package/dist/components/switch.d.ts +14 -0
  198. package/dist/components/switch.d.ts.map +1 -0
  199. package/dist/components/switch.js +21 -0
  200. package/dist/components/switch.js.map +1 -0
  201. package/dist/components/table.d.ts +39 -0
  202. package/dist/components/table.d.ts.map +1 -0
  203. package/dist/components/table.js +71 -0
  204. package/dist/components/table.js.map +1 -0
  205. package/dist/components/tabs.d.ts +31 -0
  206. package/dist/components/tabs.d.ts.map +1 -0
  207. package/dist/components/tabs.js +55 -0
  208. package/dist/components/tabs.js.map +1 -0
  209. package/dist/components/textarea.d.ts +11 -0
  210. package/dist/components/textarea.d.ts.map +1 -0
  211. package/dist/components/textarea.js +4 -0
  212. package/dist/components/toast.d.ts +2 -0
  213. package/dist/components/toast.js +6 -0
  214. package/dist/components/toggle-group.d.ts +29 -0
  215. package/dist/components/toggle-group.d.ts.map +1 -0
  216. package/dist/components/toggle-group.js +55 -0
  217. package/dist/components/toggle-group.js.map +1 -0
  218. package/dist/components/toggle.d.ts +2 -0
  219. package/dist/components/toggle.js +6 -0
  220. package/dist/components/tooltip.d.ts +2 -0
  221. package/dist/components/tooltip.js +4 -0
  222. package/dist/dialog-CTqRrytc.js +103 -0
  223. package/dist/dialog-CTqRrytc.js.map +1 -0
  224. package/dist/direction-BKSh6e6q.js +3 -0
  225. package/dist/dropdown-menu-BEARLcDj.d.ts +91 -0
  226. package/dist/dropdown-menu-BEARLcDj.d.ts.map +1 -0
  227. package/dist/dropdown-menu-CcumvwhM.js +139 -0
  228. package/dist/dropdown-menu-CcumvwhM.js.map +1 -0
  229. package/dist/file-upload-D8hgfjvA.d.ts +145 -0
  230. package/dist/file-upload-D8hgfjvA.d.ts.map +1 -0
  231. package/dist/file-upload-DeCIv13t.js +434 -0
  232. package/dist/file-upload-DeCIv13t.js.map +1 -0
  233. package/dist/hooks/use-async-options.d.ts +2 -0
  234. package/dist/hooks/use-async-options.js +3 -0
  235. package/dist/hooks/use-debounce.d.ts +5 -0
  236. package/dist/hooks/use-debounce.d.ts.map +1 -0
  237. package/dist/hooks/use-debounce.js +3 -0
  238. package/dist/hooks/use-file-upload.d.ts +2 -0
  239. package/dist/hooks/use-file-upload.js +3 -0
  240. package/dist/hooks/use-infinite-scroll.d.ts +21 -0
  241. package/dist/hooks/use-infinite-scroll.d.ts.map +1 -0
  242. package/dist/hooks/use-infinite-scroll.js +4 -0
  243. package/dist/hooks/use-intersection-observer.d.ts +2 -0
  244. package/dist/hooks/use-intersection-observer.js +3 -0
  245. package/dist/hooks/use-mobile.d.ts +5 -0
  246. package/dist/hooks/use-mobile.d.ts.map +1 -0
  247. package/dist/hooks/use-mobile.js +3 -0
  248. package/dist/input-8jqdnUZl.js +18 -0
  249. package/dist/input-8jqdnUZl.js.map +1 -0
  250. package/dist/input-DwxhsFRP.d.ts +12 -0
  251. package/dist/input-DwxhsFRP.d.ts.map +1 -0
  252. package/dist/input-group-DqEkmpXW.js +81 -0
  253. package/dist/input-group-DqEkmpXW.js.map +1 -0
  254. package/dist/label-AaH9ZYCZ.js +16 -0
  255. package/dist/label-AaH9ZYCZ.js.map +1 -0
  256. package/dist/label-D5SCGMZl.d.ts +11 -0
  257. package/dist/label-D5SCGMZl.d.ts.map +1 -0
  258. package/dist/lib/utils.d.ts +7 -0
  259. package/dist/lib/utils.d.ts.map +1 -0
  260. package/dist/lib/utils.js +3 -0
  261. package/dist/popover-C9D43EuT.js +57 -0
  262. package/dist/popover-C9D43EuT.js.map +1 -0
  263. package/dist/providers/px-ui-provider.d.ts +36 -0
  264. package/dist/providers/px-ui-provider.d.ts.map +1 -0
  265. package/dist/providers/px-ui-provider.js +26 -0
  266. package/dist/providers/px-ui-provider.js.map +1 -0
  267. package/dist/separator-BS3ilczC.js +17 -0
  268. package/dist/separator-BS3ilczC.js.map +1 -0
  269. package/dist/separator-ct9ZvuTk.d.ts +12 -0
  270. package/dist/separator-ct9ZvuTk.d.ts.map +1 -0
  271. package/dist/sheet-CLjNDrfL.js +91 -0
  272. package/dist/sheet-CLjNDrfL.js.map +1 -0
  273. package/dist/skeleton-BcIxI5Wq.js +15 -0
  274. package/dist/skeleton-BcIxI5Wq.js.map +1 -0
  275. package/dist/spinner-Bo0sUZEg.js +17 -0
  276. package/dist/spinner-Bo0sUZEg.js.map +1 -0
  277. package/dist/styles.css +196 -0
  278. package/dist/textarea-Cq0o323P.js +16 -0
  279. package/dist/textarea-Cq0o323P.js.map +1 -0
  280. package/dist/toast-COWAQbIk.js +211 -0
  281. package/dist/toast-COWAQbIk.js.map +1 -0
  282. package/dist/toast-CXkP5Jwp.d.ts +74 -0
  283. package/dist/toast-CXkP5Jwp.d.ts.map +1 -0
  284. package/dist/toggle-BXBPgIQh.d.ts +19 -0
  285. package/dist/toggle-BXBPgIQh.d.ts.map +1 -0
  286. package/dist/toggle-DhJ_qwgw.js +38 -0
  287. package/dist/toggle-DhJ_qwgw.js.map +1 -0
  288. package/dist/tooltip-BWjVzK67.d.ts +26 -0
  289. package/dist/tooltip-BWjVzK67.d.ts.map +1 -0
  290. package/dist/tooltip-DkPxCJIL.js +43 -0
  291. package/dist/tooltip-DkPxCJIL.js.map +1 -0
  292. package/dist/use-async-options-DHR8q5qX.d.ts +45 -0
  293. package/dist/use-async-options-DHR8q5qX.d.ts.map +1 -0
  294. package/dist/use-async-options-wZ9LJ2BJ.js +46 -0
  295. package/dist/use-async-options-wZ9LJ2BJ.js.map +1 -0
  296. package/dist/use-debounce-_qaEZqtt.js +24 -0
  297. package/dist/use-debounce-_qaEZqtt.js.map +1 -0
  298. package/dist/{index.js → use-file-upload-Dxrej28u.js} +3 -204
  299. package/dist/use-file-upload-Dxrej28u.js.map +1 -0
  300. package/dist/use-file-upload-yy-xLBtn.d.ts +133 -0
  301. package/dist/use-file-upload-yy-xLBtn.d.ts.map +1 -0
  302. package/dist/use-infinite-scroll-CpbhGGT5.js +38 -0
  303. package/dist/use-infinite-scroll-CpbhGGT5.js.map +1 -0
  304. package/dist/use-intersection-observer-C2xDq2SW.d.ts +11 -0
  305. package/dist/use-intersection-observer-C2xDq2SW.d.ts.map +1 -0
  306. package/dist/use-intersection-observer-CZfnep4z.js +33 -0
  307. package/dist/use-intersection-observer-CZfnep4z.js.map +1 -0
  308. package/dist/use-mobile-l5ebOdQl.js +21 -0
  309. package/dist/use-mobile-l5ebOdQl.js.map +1 -0
  310. package/dist/utils-mWJR2N24.js +28 -0
  311. package/dist/utils-mWJR2N24.js.map +1 -0
  312. package/package.json +289 -26
  313. package/dist/index.css +0 -143
  314. package/dist/index.d.ts +0 -229
  315. package/dist/index.d.ts.map +0 -1
  316. package/dist/index.js.map +0 -1
@@ -0,0 +1,196 @@
1
+ @import "tw-animate-css";
2
+ @import "shadcn/tailwind.css";
3
+
4
+ @custom-variant dark (&:is(.dark *));
5
+ @source "../**/*.{js,jsx,ts,tsx}";
6
+
7
+ @theme inline {
8
+ --font-heading: var(--font-sans);
9
+ --color-sidebar-ring: var(--sidebar-ring);
10
+ --color-sidebar-border: var(--sidebar-border);
11
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
12
+ --color-sidebar-accent: var(--sidebar-accent);
13
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
14
+ --color-sidebar-primary: var(--sidebar-primary);
15
+ --color-sidebar-foreground: var(--sidebar-foreground);
16
+ --color-sidebar: var(--sidebar);
17
+ --color-chart-5: var(--chart-5);
18
+ --color-chart-4: var(--chart-4);
19
+ --color-chart-3: var(--chart-3);
20
+ --color-chart-2: var(--chart-2);
21
+ --color-chart-1: var(--chart-1);
22
+ --color-ring: var(--ring);
23
+ --color-input: var(--input);
24
+ --color-border: var(--border);
25
+ --color-destructive: var(--destructive);
26
+ --color-warning: var(--warning);
27
+ --color-warning-foreground: var(--warning-foreground);
28
+ --color-success: var(--success);
29
+ --color-success-foreground: var(--success-foreground);
30
+ --color-info: var(--info);
31
+ --color-info-foreground: var(--info-foreground);
32
+ --color-accent-foreground: var(--accent-foreground);
33
+ --color-accent: var(--accent);
34
+ --color-muted-foreground: var(--muted-foreground);
35
+ --color-muted: var(--muted);
36
+ --color-secondary-foreground: var(--secondary-foreground);
37
+ --color-secondary: var(--secondary);
38
+ --color-primary-foreground: var(--primary-foreground);
39
+ --color-primary: var(--primary);
40
+ --color-popover-foreground: var(--popover-foreground);
41
+ --color-popover: var(--popover);
42
+ --color-card-foreground: var(--card-foreground);
43
+ --color-card: var(--card);
44
+ --color-foreground: var(--foreground);
45
+ --color-background: var(--background);
46
+ --radius-sm: calc(var(--radius) * 0.6);
47
+ --radius-md: calc(var(--radius) * 0.8);
48
+ --radius-lg: var(--radius);
49
+ --radius-xl: calc(var(--radius) * 1.4);
50
+ --radius-2xl: calc(var(--radius) * 1.8);
51
+ --radius-3xl: calc(var(--radius) * 2.2);
52
+ --radius-4xl: calc(var(--radius) * 2.6);
53
+ --font-sans-light: "Lato L", system-ui, sans-serif;
54
+ --font-sans: "Lato R", system-ui, sans-serif;
55
+ --font-sans-sb: "Lato SB", system-ui, sans-serif;
56
+ --font-sans-b: "Lato B", system-ui, sans-serif;
57
+ --breakpoint-ppx-sm: 40rem;
58
+ --breakpoint-ppx-md: 48rem;
59
+ --breakpoint-ppx-lg: 64rem;
60
+ --breakpoint-ppx-xl: 80rem;
61
+ --breakpoint-ppx-2xl: 96rem;
62
+ --tracking-ppx-tighter: -0.05em;
63
+ --tracking-ppx-tight: -0.025em;
64
+ --tracking-ppx-normal: 0em;
65
+ --tracking-ppx-wide: 0.025em;
66
+ --tracking-ppx-wider: 0.05em;
67
+ --tracking-ppx-widest: 0.1em;
68
+ --animate-progress-indeterminate: progress-indeterminate 1.2s ease-in-out
69
+ infinite;
70
+
71
+ @keyframes progress-indeterminate {
72
+ from {
73
+ margin-inline-start: -33%;
74
+ }
75
+ to {
76
+ margin-inline-start: 100%;
77
+ }
78
+ }
79
+ }
80
+
81
+ :root {
82
+ --background: oklch(1 0 0);
83
+ --foreground: oklch(0.141 0.005 285.823);
84
+ --card: oklch(1 0 0);
85
+ --card-foreground: oklch(0.141 0.005 285.823);
86
+ --popover: oklch(1 0 0);
87
+ --popover-foreground: oklch(0.141 0.005 285.823);
88
+ --primary: #2b9a66;
89
+ --primary-foreground: oklch(1 0 0);
90
+ --secondary: oklch(0.967 0.001 286.375);
91
+ --secondary-foreground: oklch(0.21 0.006 285.885);
92
+ --muted: oklch(0.967 0.001 286.375);
93
+ --muted-foreground: oklch(0.552 0.016 285.938);
94
+ --accent: oklch(0.96 0.035 156);
95
+ --accent-foreground: oklch(0.141 0.005 285.823);
96
+ --destructive: oklch(0.577 0.245 27.325);
97
+ --warning: oklch(0.72 0.17 86);
98
+ --warning-foreground: oklch(1 0 0);
99
+ --success: #28b674;
100
+ --success-foreground: oklch(1 0 0);
101
+ --info: #408ff0;
102
+ --info-foreground: oklch(1 0 0);
103
+ --border: oklch(0.92 0.004 286.32);
104
+ --input: oklch(0.92 0.004 286.32);
105
+ --ring: oklch(0.625 0.13 156);
106
+ --chart-1: oklch(0.871 0.006 286.286);
107
+ --chart-2: oklch(0.552 0.016 285.938);
108
+ --chart-3: oklch(0.442 0.017 285.786);
109
+ --chart-4: oklch(0.37 0.013 285.805);
110
+ --chart-5: oklch(0.274 0.006 286.033);
111
+ --radius: 0.625rem;
112
+ --sidebar: oklch(0.985 0 0);
113
+ --sidebar-foreground: oklch(0.141 0.005 285.823);
114
+ --sidebar-primary: oklch(0.627 0.194 149.214);
115
+ --sidebar-primary-foreground: oklch(1 0 0);
116
+ --sidebar-accent: oklch(0.96 0.035 156);
117
+ --sidebar-accent-foreground: oklch(0.141 0.005 285.823);
118
+ --sidebar-border: oklch(0.92 0.004 286.32);
119
+ --sidebar-ring: oklch(0.625 0.13 156);
120
+ }
121
+
122
+ .dark {
123
+ --background: oklch(0.141 0.005 285.823);
124
+ --foreground: oklch(0.985 0 0);
125
+ --card: oklch(0.21 0.006 285.885);
126
+ --card-foreground: oklch(0.985 0 0);
127
+ --popover: oklch(0.21 0.006 285.885);
128
+ --popover-foreground: oklch(0.985 0 0);
129
+ --primary: oklch(0.54 0.12 156);
130
+ --primary-foreground: oklch(1 0 0);
131
+ --secondary: oklch(0.274 0.006 286.033);
132
+ --secondary-foreground: oklch(0.985 0 0);
133
+ --muted: oklch(0.274 0.006 286.033);
134
+ --muted-foreground: oklch(0.705 0.015 286.067);
135
+ --accent: oklch(0.3 0.04 156);
136
+ --accent-foreground: oklch(0.985 0 0);
137
+ --destructive: oklch(0.704 0.191 22.216);
138
+ --warning: oklch(0.828 0.158 84);
139
+ --warning-foreground: oklch(0.141 0.005 285.823);
140
+ --success: oklch(0.7 0.15 156);
141
+ --success-foreground: oklch(1 0 0);
142
+ --info: oklch(0.72 0.14 250);
143
+ --info-foreground: oklch(1 0 0);
144
+ --border: oklch(1 0 0 / 10%);
145
+ --input: oklch(1 0 0 / 15%);
146
+ --ring: oklch(0.7 0.14 156);
147
+ --chart-1: oklch(0.871 0.006 286.286);
148
+ --chart-2: oklch(0.552 0.016 285.938);
149
+ --chart-3: oklch(0.442 0.017 285.786);
150
+ --chart-4: oklch(0.37 0.013 285.805);
151
+ --chart-5: oklch(0.274 0.006 286.033);
152
+ --sidebar: oklch(0.21 0.006 285.885);
153
+ --sidebar-foreground: oklch(0.985 0 0);
154
+ --sidebar-primary: oklch(0.723 0.219 149.579);
155
+ --sidebar-primary-foreground: oklch(1 0 0);
156
+ --sidebar-accent: oklch(0.3 0.04 156);
157
+ --sidebar-accent-foreground: oklch(0.985 0 0);
158
+ --sidebar-border: oklch(1 0 0 / 10%);
159
+ --sidebar-ring: oklch(0.7 0.14 156);
160
+ }
161
+
162
+ @utility ppx-scrollbar {
163
+ scrollbar-width: thin;
164
+ scrollbar-color: var(--border) transparent;
165
+
166
+ &::-webkit-scrollbar {
167
+ width: 6px;
168
+ height: 6px;
169
+ }
170
+ &::-webkit-scrollbar-track {
171
+ background: transparent;
172
+ }
173
+ &::-webkit-scrollbar-thumb {
174
+ background: var(--border);
175
+ border-radius: 3px;
176
+ }
177
+ &::-webkit-scrollbar-thumb:hover {
178
+ background: var(--muted-foreground);
179
+ }
180
+ &::-webkit-scrollbar-corner {
181
+ display: none;
182
+ }
183
+ }
184
+
185
+ @layer base {
186
+ * {
187
+ @apply border-border outline-ring/50;
188
+ }
189
+ body {
190
+ @apply bg-background text-foreground;
191
+ }
192
+ button:not(:disabled),
193
+ [role="button"]:not(:disabled) {
194
+ cursor: pointer;
195
+ }
196
+ }
@@ -0,0 +1,16 @@
1
+ import { t as cn } from "./utils-mWJR2N24.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import "react";
4
+
5
+ //#region src/components/textarea.tsx
6
+ function Textarea({ className, ...props }) {
7
+ return /* @__PURE__ */ jsx("textarea", {
8
+ "data-slot": "textarea",
9
+ className: cn("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", className),
10
+ ...props
11
+ });
12
+ }
13
+
14
+ //#endregion
15
+ export { Textarea as t };
16
+ //# sourceMappingURL=textarea-Cq0o323P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea-Cq0o323P.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"}
@@ -0,0 +1,211 @@
1
+ import { t as cn } from "./utils-mWJR2N24.js";
2
+ import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, XIcon } from "lucide-react";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import "react";
5
+ import { Toast } from "@base-ui/react/toast";
6
+
7
+ //#region src/components/toast.tsx
8
+ const toastManager = Toast.createToastManager();
9
+ const VIEWPORT_POSITION = {
10
+ "top-left": "top-4 left-4 ppx-sm:top-8 ppx-sm:left-8",
11
+ "top-center": "top-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:top-8",
12
+ "top-right": "top-4 right-4 ppx-sm:top-8 ppx-sm:right-8",
13
+ "bottom-left": "bottom-4 left-4 ppx-sm:bottom-8 ppx-sm:left-8",
14
+ "bottom-center": "bottom-4 left-1/2 -translate-x-1/2 rtl:translate-x-1/2 ppx-sm:bottom-8",
15
+ "bottom-right": "bottom-4 right-4 ppx-sm:bottom-8 ppx-sm:right-8"
16
+ };
17
+ /**
18
+ * Host component for toasts. Mount it once near the root of your app. Toasts are
19
+ * dispatched with the exported `toast` helper.
20
+ */
21
+ function Toaster({ position = "bottom-right", ...props }) {
22
+ return /* @__PURE__ */ jsx(Toast.Provider, {
23
+ toastManager,
24
+ ...props,
25
+ children: /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Toast.Viewport, {
26
+ "data-slot": "toaster",
27
+ className: cn("fixed z-[100] mx-auto flex w-[calc(100vw-2rem)] outline-none ppx-sm:w-90", VIEWPORT_POSITION[position]),
28
+ children: /* @__PURE__ */ jsx(ToastList, { position })
29
+ }) })
30
+ });
31
+ }
32
+ function ToastList({ position }) {
33
+ const { toasts } = Toast.useToastManager();
34
+ const side = position.startsWith("top") ? "top" : "bottom";
35
+ const swipeDirection = [side === "top" ? "up" : "down", position.includes("left") ? "left" : position.includes("right") ? "right" : null].filter(Boolean);
36
+ return toasts.map((toast$1) => /* @__PURE__ */ jsx(Toast.Root, {
37
+ toast: toast$1,
38
+ "data-side": side,
39
+ swipeDirection,
40
+ className: cn("[--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]", "[--offset-y:calc(var(--toast-swipe-movement-y)+var(--dir)*(var(--toast-offset-y)*-1-var(--toast-index)*var(--gap)))]", "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", toastTint(toast$1.type), "bottom-0 data-[side=top]:top-0 data-[side=top]:bottom-auto data-[side=top]:origin-top", "h-[var(--height)] data-expanded:h-[var(--toast-height)]", "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", "[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))]", "data-expanded:[transform:translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))]", "data-starting-style:[transform:translateY(calc(var(--dir)*150%))]", "data-ending-style:opacity-0 data-limited:opacity-0", "[&[data-ending-style]:not([data-limited]):not([data-swipe-direction])]:[transform:translateY(calc(var(--dir)*150%))]", "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%))]", "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%))]", "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))]", "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))]", "[transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s]"),
41
+ children: /* @__PURE__ */ jsxs(Toast.Content, {
42
+ 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",
43
+ children: [
44
+ /* @__PURE__ */ jsx(ToastIcon, { type: toast$1.type }),
45
+ /* @__PURE__ */ jsxs("div", {
46
+ className: "flex min-w-0 flex-1 flex-col gap-1",
47
+ children: [toast$1.title ? /* @__PURE__ */ jsx(Toast.Title, { className: "text-sm leading-tight font-medium" }) : null, toast$1.description ? /* @__PURE__ */ jsx(Toast.Description, { className: "text-sm text-muted-foreground" }) : null]
48
+ }),
49
+ toast$1.actionProps ? /* @__PURE__ */ jsx("div", {
50
+ className: "flex h-[1lh] shrink-0 items-center",
51
+ children: /* @__PURE__ */ jsx(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" })
52
+ }) : null,
53
+ /* @__PURE__ */ jsx("div", {
54
+ className: "-me-1 flex h-[1lh] shrink-0 items-center",
55
+ children: /* @__PURE__ */ jsx(Toast.Close, {
56
+ "aria-label": "Dismiss",
57
+ 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",
58
+ children: /* @__PURE__ */ jsx(XIcon, { className: "size-4" })
59
+ })
60
+ })
61
+ ]
62
+ })
63
+ }, toast$1.id));
64
+ }
65
+ const TOAST_ICONS = {
66
+ success: {
67
+ Icon: CircleCheckIcon,
68
+ color: "text-success"
69
+ },
70
+ info: {
71
+ Icon: InfoIcon,
72
+ color: "text-info"
73
+ },
74
+ warning: {
75
+ Icon: TriangleAlertIcon,
76
+ color: "text-warning"
77
+ },
78
+ error: {
79
+ Icon: OctagonXIcon,
80
+ color: "text-destructive"
81
+ },
82
+ loading: {
83
+ Icon: Loader2Icon,
84
+ color: "text-muted-foreground"
85
+ }
86
+ };
87
+ function ToastIcon({ type }) {
88
+ const entry = type ? TOAST_ICONS[type] : void 0;
89
+ if (!entry) return null;
90
+ const { Icon, color } = entry;
91
+ return /* @__PURE__ */ jsx("span", {
92
+ className: cn("flex h-[1lh] shrink-0 items-center justify-center", color),
93
+ children: /* @__PURE__ */ jsx(Icon, { className: cn("size-4", type === "loading" && "animate-spin") })
94
+ });
95
+ }
96
+ function toastTint(type) {
97
+ switch (type) {
98
+ case "success": return "bg-[color-mix(in_srgb,var(--success)_10%,var(--popover))]";
99
+ case "info": return "bg-[color-mix(in_srgb,var(--info)_10%,var(--popover))]";
100
+ case "warning": return "bg-[color-mix(in_srgb,var(--warning)_10%,var(--popover))]";
101
+ case "error": return "bg-[color-mix(in_srgb,var(--destructive)_10%,var(--popover))]";
102
+ default: return;
103
+ }
104
+ }
105
+ function makeToast(type) {
106
+ return (title, options) => toastManager.add({
107
+ title,
108
+ ...type ? { type } : {},
109
+ ...options
110
+ });
111
+ }
112
+ /**
113
+ * Dispatch a toast from anywhere. Backed by a global Base UI toast manager, so
114
+ * it works even outside the React tree.
115
+ *
116
+ * @example
117
+ * toast("Event has been created")
118
+ * toast.success("Saved", { description: "Your changes are live." })
119
+ */
120
+ const toast = Object.assign(makeToast(), {
121
+ success: makeToast("success"),
122
+ info: makeToast("info"),
123
+ warning: makeToast("warning"),
124
+ error: makeToast("error"),
125
+ message: makeToast(),
126
+ loading: (title, options) => toastManager.add({
127
+ title,
128
+ type: "loading",
129
+ timeout: 0,
130
+ ...options
131
+ }),
132
+ promise: (promise, options) => toastManager.promise(typeof promise === "function" ? promise() : promise, options),
133
+ update: (id, options) => toastManager.update(id, options),
134
+ dismiss: (id) => toastManager.close(id)
135
+ });
136
+ const anchoredToastManager = Toast.createToastManager();
137
+ function makeAnchoredToast(type) {
138
+ return (title, options) => {
139
+ const { anchor, ...rest } = options;
140
+ return anchoredToastManager.add({
141
+ title,
142
+ ...type ? { type } : {},
143
+ ...rest,
144
+ data: {
145
+ ...rest.data,
146
+ anchor
147
+ }
148
+ });
149
+ };
150
+ }
151
+ /**
152
+ * Dispatch a toast anchored to an element instead of a screen corner. Render
153
+ * `<AnchoredToaster />` once, then pass the trigger element as `anchor`.
154
+ *
155
+ * @example
156
+ * <Button
157
+ * onClick={(e) => anchoredToast.success("Copied", { anchor: e.currentTarget })}
158
+ * >
159
+ * Copy
160
+ * </Button>
161
+ */
162
+ const anchoredToast = Object.assign(makeAnchoredToast(), {
163
+ success: makeAnchoredToast("success"),
164
+ info: makeAnchoredToast("info"),
165
+ warning: makeAnchoredToast("warning"),
166
+ error: makeAnchoredToast("error"),
167
+ dismiss: (id) => anchoredToastManager.close(id)
168
+ });
169
+ /**
170
+ * Host for anchored toasts. Mount it once near the app root; dispatch with the
171
+ * exported `anchoredToast` helper.
172
+ */
173
+ function AnchoredToaster(props) {
174
+ return /* @__PURE__ */ jsx(Toast.Provider, {
175
+ toastManager: anchoredToastManager,
176
+ ...props,
177
+ children: /* @__PURE__ */ jsx(Toast.Portal, { children: /* @__PURE__ */ jsx(Toast.Viewport, {
178
+ "data-slot": "anchored-toaster",
179
+ className: "outline-none",
180
+ children: /* @__PURE__ */ jsx(AnchoredToastList, {})
181
+ }) })
182
+ });
183
+ }
184
+ function AnchoredToastList() {
185
+ const { toasts } = Toast.useToastManager();
186
+ return toasts.map((toast$1) => {
187
+ const anchor = toast$1.data?.anchor;
188
+ if (!anchor) return null;
189
+ return /* @__PURE__ */ jsx(Toast.Positioner, {
190
+ toast: toast$1,
191
+ anchor,
192
+ sideOffset: 6,
193
+ className: "z-[100] max-w-[min(20rem,var(--available-width))]",
194
+ children: /* @__PURE__ */ jsx(Toast.Root, {
195
+ toast: toast$1,
196
+ className: cn("rounded-lg border bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10", "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", toastTint(toast$1.type)),
197
+ children: /* @__PURE__ */ jsxs(Toast.Content, {
198
+ className: "flex items-start gap-2.5 px-3 py-2 text-sm leading-tight",
199
+ children: [/* @__PURE__ */ jsx(ToastIcon, { type: toast$1.type }), /* @__PURE__ */ jsxs("div", {
200
+ className: "flex min-w-0 flex-col gap-0.5",
201
+ children: [/* @__PURE__ */ jsx(Toast.Title, { className: "text-sm leading-tight font-medium" }), toast$1.description ? /* @__PURE__ */ jsx(Toast.Description, { className: "text-sm text-muted-foreground" }) : null]
202
+ })]
203
+ })
204
+ })
205
+ }, toast$1.id);
206
+ });
207
+ }
208
+
209
+ //#endregion
210
+ export { toast as a, anchoredToastManager as i, Toaster as n, toastManager as o, anchoredToast as r, AnchoredToaster as t };
211
+ //# sourceMappingURL=toast-COWAQbIk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast-COWAQbIk.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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"}
@@ -0,0 +1,74 @@
1
+ import * as react_jsx_runtime261 from "react/jsx-runtime";
2
+ import * as React$1 from "react";
3
+ import * as _base_ui_react0 from "@base-ui/react";
4
+ import { Toast, ToastManagerAddOptions, ToastManagerPromiseOptions, ToastManagerUpdateOptions } from "@base-ui/react/toast";
5
+
6
+ //#region src/components/toast.d.ts
7
+ declare const toastManager: _base_ui_react0.ToastManager<any>;
8
+ type ToasterPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
9
+ type ToasterProps = Omit<Toast.Provider.Props, "toastManager" | "children"> & {
10
+ /**
11
+ * Where toasts are anchored on the screen.
12
+ * @default "bottom-right"
13
+ */
14
+ position?: ToasterPosition;
15
+ };
16
+ /**
17
+ * Host component for toasts. Mount it once near the root of your app. Toasts are
18
+ * dispatched with the exported `toast` helper.
19
+ */
20
+ declare function Toaster({
21
+ position,
22
+ ...props
23
+ }: ToasterProps): react_jsx_runtime261.JSX.Element;
24
+ type ToastOptions = Omit<ToastManagerAddOptions<any>, "title" | "type">;
25
+ /**
26
+ * Dispatch a toast from anywhere. Backed by a global Base UI toast manager, so
27
+ * it works even outside the React tree.
28
+ *
29
+ * @example
30
+ * toast("Event has been created")
31
+ * toast.success("Saved", { description: "Your changes are live." })
32
+ */
33
+ declare const toast: ((title: React$1.ReactNode, options?: ToastOptions) => string) & {
34
+ success: (title: React$1.ReactNode, options?: ToastOptions) => string;
35
+ info: (title: React$1.ReactNode, options?: ToastOptions) => string;
36
+ warning: (title: React$1.ReactNode, options?: ToastOptions) => string;
37
+ error: (title: React$1.ReactNode, options?: ToastOptions) => string;
38
+ message: (title: React$1.ReactNode, options?: ToastOptions) => string;
39
+ loading: (title: React$1.ReactNode, options?: ToastOptions) => string;
40
+ promise: <Value>(promise: Promise<Value> | (() => Promise<Value>), options: ToastManagerPromiseOptions<Value, any>) => Promise<Value>;
41
+ update: (id: string, options: ToastManagerUpdateOptions<any>) => void;
42
+ dismiss: (id?: string) => void;
43
+ };
44
+ declare const anchoredToastManager: _base_ui_react0.ToastManager<any>;
45
+ type AnchoredToastOptions = ToastOptions & {
46
+ /** Element to position the toast against, e.g. `event.currentTarget`. */
47
+ anchor: Element | null;
48
+ };
49
+ /**
50
+ * Dispatch a toast anchored to an element instead of a screen corner. Render
51
+ * `<AnchoredToaster />` once, then pass the trigger element as `anchor`.
52
+ *
53
+ * @example
54
+ * <Button
55
+ * onClick={(e) => anchoredToast.success("Copied", { anchor: e.currentTarget })}
56
+ * >
57
+ * Copy
58
+ * </Button>
59
+ */
60
+ declare const anchoredToast: ((title: React$1.ReactNode, options: AnchoredToastOptions) => string) & {
61
+ success: (title: React$1.ReactNode, options: AnchoredToastOptions) => string;
62
+ info: (title: React$1.ReactNode, options: AnchoredToastOptions) => string;
63
+ warning: (title: React$1.ReactNode, options: AnchoredToastOptions) => string;
64
+ error: (title: React$1.ReactNode, options: AnchoredToastOptions) => string;
65
+ dismiss: (id?: string) => void;
66
+ };
67
+ /**
68
+ * Host for anchored toasts. Mount it once near the app root; dispatch with the
69
+ * exported `anchoredToast` helper.
70
+ */
71
+ declare function AnchoredToaster(props: Omit<Toast.Provider.Props, "toastManager" | "children">): react_jsx_runtime261.JSX.Element;
72
+ //#endregion
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-CXkP5Jwp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toast-CXkP5Jwp.d.ts","names":[],"sources":["../src/components/toast.tsx"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import * as react_jsx_runtime265 from "react/jsx-runtime";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import { Toggle } from "@base-ui/react/toggle";
4
+ import * as class_variance_authority_types12 from "class-variance-authority/types";
5
+
6
+ //#region src/components/toggle.d.ts
7
+ declare const toggleVariants: (props?: ({
8
+ variant?: "default" | "outline" | null | undefined;
9
+ size?: "default" | "sm" | "lg" | null | undefined;
10
+ } & class_variance_authority_types12.ClassProp) | undefined) => string;
11
+ declare function Toggle$1({
12
+ className,
13
+ variant,
14
+ size,
15
+ ...props
16
+ }: Toggle.Props & VariantProps<typeof toggleVariants>): react_jsx_runtime265.JSX.Element;
17
+ //#endregion
18
+ export { toggleVariants as n, Toggle$1 as t };
19
+ //# sourceMappingURL=toggle-BXBPgIQh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-BXBPgIQh.d.ts","names":[],"sources":["../src/components/toggle.tsx"],"sourcesContent":[],"mappings":";;;;;;cAOM;;;IAoBL,gCAAA,CAAA;AAxBiE,iBA0BzD,QAAA,CAFR;EAAA,SAAA;EAAA,OAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAOE,MAAA,CAAgB,KAPlB,GAO0B,YAP1B,CAAA,OAO8C,cAP9C,CAAA,CAAA,EAO6D,oBAAA,CAAA,GAAA,CAAA,OAP7D"}
@@ -0,0 +1,38 @@
1
+ import { t as cn } from "./utils-mWJR2N24.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { Toggle } from "@base-ui/react/toggle";
5
+
6
+ //#region src/components/toggle.tsx
7
+ const toggleVariants = cva("group/toggle inline-flex items-center justify-center gap-1 rounded-md text-sm font-medium whitespace-nowrap transition-[color,box-shadow] outline-none hover:bg-muted hover:text-foreground 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 aria-pressed:bg-muted dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
8
+ variants: {
9
+ variant: {
10
+ default: "bg-transparent",
11
+ outline: "border border-input bg-transparent shadow-xs hover:bg-muted"
12
+ },
13
+ size: {
14
+ default: "h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2",
15
+ 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",
16
+ lg: "h-10 min-w-10 px-2.5 has-data-[icon=inline-end]:pe-2 has-data-[icon=inline-start]:ps-2"
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ size: "default"
22
+ }
23
+ });
24
+ function Toggle$1({ className, variant = "default", size = "default", ...props }) {
25
+ return /* @__PURE__ */ jsx(Toggle, {
26
+ "data-slot": "toggle",
27
+ className: cn(toggleVariants({
28
+ variant,
29
+ size,
30
+ className
31
+ })),
32
+ ...props
33
+ });
34
+ }
35
+
36
+ //#endregion
37
+ export { toggleVariants as n, Toggle$1 as t };
38
+ //# sourceMappingURL=toggle-DhJ_qwgw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-DhJ_qwgw.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 hover:bg-muted hover:text-foreground 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 aria-pressed:bg-muted 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: \"bg-transparent\",\n outline: \"border border-input bg-transparent shadow-xs hover:bg-muted\",\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,6gBACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,SAAS;GACV;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"}
@@ -0,0 +1,26 @@
1
+ import * as react_jsx_runtime266 from "react/jsx-runtime";
2
+ import { Tooltip } from "@base-ui/react/tooltip";
3
+
4
+ //#region src/components/tooltip.d.ts
5
+ declare function TooltipProvider({
6
+ delay,
7
+ ...props
8
+ }: Tooltip.Provider.Props): react_jsx_runtime266.JSX.Element;
9
+ declare function Tooltip$1({
10
+ ...props
11
+ }: Tooltip.Root.Props): react_jsx_runtime266.JSX.Element;
12
+ declare function TooltipTrigger({
13
+ ...props
14
+ }: Tooltip.Trigger.Props): react_jsx_runtime266.JSX.Element;
15
+ declare function TooltipContent({
16
+ className,
17
+ side,
18
+ sideOffset,
19
+ align,
20
+ alignOffset,
21
+ children,
22
+ ...props
23
+ }: Tooltip.Popup.Props & Pick<Tooltip.Positioner.Props, "align" | "alignOffset" | "side" | "sideOffset">): react_jsx_runtime266.JSX.Element;
24
+ //#endregion
25
+ export { TooltipTrigger as i, TooltipContent as n, TooltipProvider as r, Tooltip$1 as t };
26
+ //# sourceMappingURL=tooltip-BWjVzK67.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip-BWjVzK67.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"}