@salonradar/ui 0.1.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 (256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +76 -0
  3. package/dist/components/ui/accordion.d.ts +8 -0
  4. package/dist/components/ui/accordion.d.ts.map +1 -0
  5. package/dist/components/ui/accordion.js +19 -0
  6. package/dist/components/ui/accordion.js.map +1 -0
  7. package/dist/components/ui/alert-dialog.d.ts +15 -0
  8. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  9. package/dist/components/ui/alert-dialog.js +40 -0
  10. package/dist/components/ui/alert-dialog.js.map +1 -0
  11. package/dist/components/ui/alert.d.ts +10 -0
  12. package/dist/components/ui/alert.d.ts.map +1 -0
  13. package/dist/components/ui/alert.js +25 -0
  14. package/dist/components/ui/alert.js.map +1 -0
  15. package/dist/components/ui/aspect-ratio.d.ts +4 -0
  16. package/dist/components/ui/aspect-ratio.d.ts.map +1 -0
  17. package/dist/components/ui/aspect-ratio.js +8 -0
  18. package/dist/components/ui/aspect-ratio.js.map +1 -0
  19. package/dist/components/ui/avatar.d.ts +7 -0
  20. package/dist/components/ui/avatar.d.ts.map +1 -0
  21. package/dist/components/ui/avatar.js +15 -0
  22. package/dist/components/ui/avatar.js.map +1 -0
  23. package/dist/components/ui/badge.d.ts +10 -0
  24. package/dist/components/ui/badge.d.ts.map +1 -0
  25. package/dist/components/ui/badge.js +23 -0
  26. package/dist/components/ui/badge.js.map +1 -0
  27. package/dist/components/ui/breadcrumb.d.ts +12 -0
  28. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  29. package/dist/components/ui/breadcrumb.js +28 -0
  30. package/dist/components/ui/breadcrumb.js.map +1 -0
  31. package/dist/components/ui/button-group.d.ts +12 -0
  32. package/dist/components/ui/button-group.d.ts.map +1 -0
  33. package/dist/components/ui/button-group.js +28 -0
  34. package/dist/components/ui/button-group.js.map +1 -0
  35. package/dist/components/ui/button.d.ts +11 -0
  36. package/dist/components/ui/button.d.ts.map +1 -0
  37. package/dist/components/ui/button.js +34 -0
  38. package/dist/components/ui/button.js.map +1 -0
  39. package/dist/components/ui/calendar.d.ts +9 -0
  40. package/dist/components/ui/calendar.d.ts.map +1 -0
  41. package/dist/components/ui/calendar.js +75 -0
  42. package/dist/components/ui/calendar.js.map +1 -0
  43. package/dist/components/ui/card.d.ts +10 -0
  44. package/dist/components/ui/card.d.ts.map +1 -0
  45. package/dist/components/ui/card.js +25 -0
  46. package/dist/components/ui/card.js.map +1 -0
  47. package/dist/components/ui/carousel.d.ts +20 -0
  48. package/dist/components/ui/carousel.d.ts.map +1 -0
  49. package/dist/components/ui/carousel.js +92 -0
  50. package/dist/components/ui/carousel.js.map +1 -0
  51. package/dist/components/ui/chart.d.ts +41 -0
  52. package/dist/components/ui/chart.d.ts.map +1 -0
  53. package/dist/components/ui/chart.js +129 -0
  54. package/dist/components/ui/chart.js.map +1 -0
  55. package/dist/components/ui/checkbox.d.ts +5 -0
  56. package/dist/components/ui/checkbox.d.ts.map +1 -0
  57. package/dist/components/ui/checkbox.js +10 -0
  58. package/dist/components/ui/checkbox.js.map +1 -0
  59. package/dist/components/ui/collapsible.d.ts +6 -0
  60. package/dist/components/ui/collapsible.d.ts.map +1 -0
  61. package/dist/components/ui/collapsible.js +14 -0
  62. package/dist/components/ui/collapsible.js.map +1 -0
  63. package/dist/components/ui/command.d.ts +19 -0
  64. package/dist/components/ui/command.d.ts.map +1 -0
  65. package/dist/components/ui/command.js +35 -0
  66. package/dist/components/ui/command.js.map +1 -0
  67. package/dist/components/ui/context-menu.d.ts +26 -0
  68. package/dist/components/ui/context-menu.d.ts.map +1 -0
  69. package/dist/components/ui/context-menu.js +52 -0
  70. package/dist/components/ui/context-menu.js.map +1 -0
  71. package/dist/components/ui/dialog.d.ts +16 -0
  72. package/dist/components/ui/dialog.d.ts.map +1 -0
  73. package/dist/components/ui/dialog.js +37 -0
  74. package/dist/components/ui/dialog.js.map +1 -0
  75. package/dist/components/ui/drawer.d.ts +14 -0
  76. package/dist/components/ui/drawer.d.ts.map +1 -0
  77. package/dist/components/ui/drawer.js +36 -0
  78. package/dist/components/ui/drawer.js.map +1 -0
  79. package/dist/components/ui/dropdown-menu.d.ts +26 -0
  80. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  81. package/dist/components/ui/dropdown-menu.js +52 -0
  82. package/dist/components/ui/dropdown-menu.js.map +1 -0
  83. package/dist/components/ui/empty.d.ts +12 -0
  84. package/dist/components/ui/empty.d.ts.map +1 -0
  85. package/dist/components/ui/empty.js +34 -0
  86. package/dist/components/ui/empty.js.map +1 -0
  87. package/dist/components/ui/field.d.ts +25 -0
  88. package/dist/components/ui/field.d.ts.map +1 -0
  89. package/dist/components/ui/field.js +74 -0
  90. package/dist/components/ui/field.js.map +1 -0
  91. package/dist/components/ui/form.d.ts +25 -0
  92. package/dist/components/ui/form.d.ts.map +1 -0
  93. package/dist/components/ui/form.js +60 -0
  94. package/dist/components/ui/form.js.map +1 -0
  95. package/dist/components/ui/hover-card.d.ts +7 -0
  96. package/dist/components/ui/hover-card.d.ts.map +1 -0
  97. package/dist/components/ui/hover-card.js +15 -0
  98. package/dist/components/ui/hover-card.js.map +1 -0
  99. package/dist/components/ui/input-group.d.ts +16 -0
  100. package/dist/components/ui/input-group.d.ts.map +1 -0
  101. package/dist/components/ui/input-group.js +64 -0
  102. package/dist/components/ui/input-group.js.map +1 -0
  103. package/dist/components/ui/input-otp.d.ts +12 -0
  104. package/dist/components/ui/input-otp.d.ts.map +1 -0
  105. package/dist/components/ui/input-otp.js +22 -0
  106. package/dist/components/ui/input-otp.js.map +1 -0
  107. package/dist/components/ui/input.d.ts +4 -0
  108. package/dist/components/ui/input.d.ts.map +1 -0
  109. package/dist/components/ui/input.js +7 -0
  110. package/dist/components/ui/input.js.map +1 -0
  111. package/dist/components/ui/item.d.ts +24 -0
  112. package/dist/components/ui/item.d.ts.map +1 -0
  113. package/dist/components/ui/item.js +67 -0
  114. package/dist/components/ui/item.js.map +1 -0
  115. package/dist/components/ui/kbd.d.ts +4 -0
  116. package/dist/components/ui/kbd.d.ts.map +1 -0
  117. package/dist/components/ui/kbd.js +10 -0
  118. package/dist/components/ui/kbd.js.map +1 -0
  119. package/dist/components/ui/label.d.ts +5 -0
  120. package/dist/components/ui/label.d.ts.map +1 -0
  121. package/dist/components/ui/label.js +9 -0
  122. package/dist/components/ui/label.js.map +1 -0
  123. package/dist/components/ui/menubar.d.ts +27 -0
  124. package/dist/components/ui/menubar.d.ts.map +1 -0
  125. package/dist/components/ui/menubar.js +55 -0
  126. package/dist/components/ui/menubar.js.map +1 -0
  127. package/dist/components/ui/navigation-menu.d.ts +15 -0
  128. package/dist/components/ui/navigation-menu.d.ts.map +1 -0
  129. package/dist/components/ui/navigation-menu.js +32 -0
  130. package/dist/components/ui/navigation-menu.js.map +1 -0
  131. package/dist/components/ui/pagination.d.ts +14 -0
  132. package/dist/components/ui/pagination.d.ts.map +1 -0
  133. package/dist/components/ui/pagination.js +30 -0
  134. package/dist/components/ui/pagination.js.map +1 -0
  135. package/dist/components/ui/popover.d.ts +8 -0
  136. package/dist/components/ui/popover.d.ts.map +1 -0
  137. package/dist/components/ui/popover.js +18 -0
  138. package/dist/components/ui/popover.js.map +1 -0
  139. package/dist/components/ui/progress.d.ts +5 -0
  140. package/dist/components/ui/progress.d.ts.map +1 -0
  141. package/dist/components/ui/progress.js +9 -0
  142. package/dist/components/ui/progress.js.map +1 -0
  143. package/dist/components/ui/radio-group.d.ts +6 -0
  144. package/dist/components/ui/radio-group.d.ts.map +1 -0
  145. package/dist/components/ui/radio-group.js +13 -0
  146. package/dist/components/ui/radio-group.js.map +1 -0
  147. package/dist/components/ui/resizable.d.ts +9 -0
  148. package/dist/components/ui/resizable.d.ts.map +1 -0
  149. package/dist/components/ui/resizable.js +16 -0
  150. package/dist/components/ui/resizable.js.map +1 -0
  151. package/dist/components/ui/scroll-area.d.ts +6 -0
  152. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  153. package/dist/components/ui/scroll-area.js +14 -0
  154. package/dist/components/ui/scroll-area.js.map +1 -0
  155. package/dist/components/ui/select.d.ts +16 -0
  156. package/dist/components/ui/select.d.ts.map +1 -0
  157. package/dist/components/ui/select.js +39 -0
  158. package/dist/components/ui/select.js.map +1 -0
  159. package/dist/components/ui/separator.d.ts +5 -0
  160. package/dist/components/ui/separator.d.ts.map +1 -0
  161. package/dist/components/ui/separator.js +9 -0
  162. package/dist/components/ui/separator.js.map +1 -0
  163. package/dist/components/ui/sheet.d.ts +14 -0
  164. package/dist/components/ui/sheet.d.ts.map +1 -0
  165. package/dist/components/ui/sheet.js +41 -0
  166. package/dist/components/ui/sheet.js.map +1 -0
  167. package/dist/components/ui/sidebar.d.ts +70 -0
  168. package/dist/components/ui/sidebar.d.ts.map +1 -0
  169. package/dist/components/ui/sidebar.js +213 -0
  170. package/dist/components/ui/sidebar.js.map +1 -0
  171. package/dist/components/ui/skeleton.d.ts +3 -0
  172. package/dist/components/ui/skeleton.d.ts.map +1 -0
  173. package/dist/components/ui/skeleton.js +7 -0
  174. package/dist/components/ui/skeleton.js.map +1 -0
  175. package/dist/components/ui/slider.d.ts +5 -0
  176. package/dist/components/ui/slider.d.ts.map +1 -0
  177. package/dist/components/ui/slider.js +15 -0
  178. package/dist/components/ui/slider.js.map +1 -0
  179. package/dist/components/ui/sonner.d.ts +4 -0
  180. package/dist/components/ui/sonner.d.ts.map +1 -0
  181. package/dist/components/ui/sonner.js +14 -0
  182. package/dist/components/ui/sonner.js.map +1 -0
  183. package/dist/components/ui/spinner.d.ts +3 -0
  184. package/dist/components/ui/spinner.d.ts.map +1 -0
  185. package/dist/components/ui/spinner.js +8 -0
  186. package/dist/components/ui/spinner.js.map +1 -0
  187. package/dist/components/ui/switch.d.ts +5 -0
  188. package/dist/components/ui/switch.d.ts.map +1 -0
  189. package/dist/components/ui/switch.js +9 -0
  190. package/dist/components/ui/switch.js.map +1 -0
  191. package/dist/components/ui/table.d.ts +11 -0
  192. package/dist/components/ui/table.d.ts.map +1 -0
  193. package/dist/components/ui/table.js +29 -0
  194. package/dist/components/ui/table.js.map +1 -0
  195. package/dist/components/ui/tabs.d.ts +8 -0
  196. package/dist/components/ui/tabs.d.ts.map +1 -0
  197. package/dist/components/ui/tabs.js +18 -0
  198. package/dist/components/ui/tabs.js.map +1 -0
  199. package/dist/components/ui/textarea.d.ts +4 -0
  200. package/dist/components/ui/textarea.d.ts.map +1 -0
  201. package/dist/components/ui/textarea.js +7 -0
  202. package/dist/components/ui/textarea.js.map +1 -0
  203. package/dist/components/ui/toast.d.ts +16 -0
  204. package/dist/components/ui/toast.d.ts.map +1 -0
  205. package/dist/components/ui/toast.js +35 -0
  206. package/dist/components/ui/toast.js.map +1 -0
  207. package/dist/components/ui/toaster.d.ts +2 -0
  208. package/dist/components/ui/toaster.d.ts.map +1 -0
  209. package/dist/components/ui/toaster.js +11 -0
  210. package/dist/components/ui/toaster.js.map +1 -0
  211. package/dist/components/ui/toggle-group.d.ts +8 -0
  212. package/dist/components/ui/toggle-group.d.ts.map +1 -0
  213. package/dist/components/ui/toggle-group.js +22 -0
  214. package/dist/components/ui/toggle-group.js.map +1 -0
  215. package/dist/components/ui/toggle.d.ts +10 -0
  216. package/dist/components/ui/toggle.d.ts.map +1 -0
  217. package/dist/components/ui/toggle.js +27 -0
  218. package/dist/components/ui/toggle.js.map +1 -0
  219. package/dist/components/ui/tooltip.d.ts +8 -0
  220. package/dist/components/ui/tooltip.d.ts.map +1 -0
  221. package/dist/components/ui/tooltip.js +18 -0
  222. package/dist/components/ui/tooltip.js.map +1 -0
  223. package/dist/components/ui/use-mobile.d.ts +2 -0
  224. package/dist/components/ui/use-mobile.d.ts.map +1 -0
  225. package/dist/components/ui/use-mobile.js +16 -0
  226. package/dist/components/ui/use-mobile.js.map +1 -0
  227. package/dist/components/ui/use-toast.d.ts +45 -0
  228. package/dist/components/ui/use-toast.d.ts.map +1 -0
  229. package/dist/components/ui/use-toast.js +129 -0
  230. package/dist/components/ui/use-toast.js.map +1 -0
  231. package/dist/hooks/use-mobile.d.ts +2 -0
  232. package/dist/hooks/use-mobile.d.ts.map +1 -0
  233. package/dist/hooks/use-mobile.js +16 -0
  234. package/dist/hooks/use-mobile.js.map +1 -0
  235. package/dist/hooks/use-toast.d.ts +45 -0
  236. package/dist/hooks/use-toast.d.ts.map +1 -0
  237. package/dist/hooks/use-toast.js +129 -0
  238. package/dist/hooks/use-toast.js.map +1 -0
  239. package/dist/index.d.ts +59 -0
  240. package/dist/index.d.ts.map +1 -0
  241. package/dist/index.js +61 -0
  242. package/dist/index.js.map +1 -0
  243. package/dist/lib/utils.d.ts +3 -0
  244. package/dist/lib/utils.d.ts.map +1 -0
  245. package/dist/lib/utils.js +6 -0
  246. package/dist/lib/utils.js.map +1 -0
  247. package/dist/logo.d.ts +4 -0
  248. package/dist/logo.d.ts.map +1 -0
  249. package/dist/logo.js +6 -0
  250. package/dist/logo.js.map +1 -0
  251. package/dist/theme-provider.d.ts +3 -0
  252. package/dist/theme-provider.d.ts.map +1 -0
  253. package/dist/theme-provider.js +7 -0
  254. package/dist/theme-provider.js.map +1 -0
  255. package/package.json +137 -0
  256. package/styles/globals.css +130 -0
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useToast } from '../../hooks/use-toast';
4
+ import { Toast, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, } from './toast';
5
+ export function Toaster() {
6
+ const { toasts } = useToast();
7
+ return (_jsxs(ToastProvider, { children: [toasts.map(function ({ id, title, description, action, ...props }) {
8
+ return (_jsxs(Toast, { ...props, children: [_jsxs("div", { className: "grid gap-1", children: [title && _jsx(ToastTitle, { children: title }), description && (_jsx(ToastDescription, { children: description }))] }), action, _jsx(ToastClose, {})] }, id));
9
+ }), _jsx(ToastViewport, {})] }));
10
+ }
11
+ //# sourceMappingURL=toaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toaster.js","sourceRoot":"","sources":["../../../src/components/ui/toaster.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,EACL,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAA;AAEhB,MAAM,UAAU,OAAO;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAE7B,OAAO,CACL,MAAC,aAAa,eACX,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE;gBAChE,OAAO,CACL,MAAC,KAAK,OAAc,KAAK,aACvB,eAAK,SAAS,EAAC,YAAY,aACxB,KAAK,IAAI,KAAC,UAAU,cAAE,KAAK,GAAc,EACzC,WAAW,IAAI,CACd,KAAC,gBAAgB,cAAE,WAAW,GAAoB,CACnD,IACG,EACL,MAAM,EACP,KAAC,UAAU,KAAG,KARJ,EAAE,CASN,CACT,CAAA;YACH,CAAC,CAAC,EACF,KAAC,aAAa,KAAG,IACH,CACjB,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
3
+ import { type VariantProps } from 'class-variance-authority';
4
+ import { toggleVariants } from './toggle';
5
+ declare function ToggleGroup({ className, variant, size, children, ...props }: React.ComponentProps<typeof ToggleGroupPrimitive.Root> & VariantProps<typeof toggleVariants>): import("react/jsx-runtime").JSX.Element;
6
+ declare function ToggleGroupItem({ className, children, variant, size, ...props }: React.ComponentProps<typeof ToggleGroupPrimitive.Item> & VariantProps<typeof toggleVariants>): import("react/jsx-runtime").JSX.Element;
7
+ export { ToggleGroup, ToggleGroupItem };
8
+ //# sourceMappingURL=toggle-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/components/ui/toggle-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AASzC,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GACvD,YAAY,CAAC,OAAO,cAAc,CAAC,2CAiBpC;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,GACvD,YAAY,CAAC,OAAO,cAAc,CAAC,2CAqBpC;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from 'react';
4
+ import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
5
+ import { cn } from '../../lib/utils';
6
+ import { toggleVariants } from './toggle';
7
+ const ToggleGroupContext = React.createContext({
8
+ size: 'default',
9
+ variant: 'default',
10
+ });
11
+ function ToggleGroup({ className, variant, size, children, ...props }) {
12
+ return (_jsx(ToggleGroupPrimitive.Root, { "data-slot": "toggle-group", "data-variant": variant, "data-size": size, className: cn('group/toggle-group flex w-fit items-center rounded-md data-[variant=outline]:shadow-xs', className), ...props, children: _jsx(ToggleGroupContext.Provider, { value: { variant, size }, children: children }) }));
13
+ }
14
+ function ToggleGroupItem({ className, children, variant, size, ...props }) {
15
+ const context = React.useContext(ToggleGroupContext);
16
+ return (_jsx(ToggleGroupPrimitive.Item, { "data-slot": "toggle-group-item", "data-variant": context.variant || variant, "data-size": context.size || size, className: cn(toggleVariants({
17
+ variant: context.variant || variant,
18
+ size: context.size || size,
19
+ }), 'min-w-0 flex-1 shrink-0 rounded-none shadow-none first:rounded-l-md last:rounded-r-md focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l', className), ...props, children: children }));
20
+ }
21
+ export { ToggleGroup, ToggleGroupItem };
22
+ //# sourceMappingURL=toggle-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../src/components/ui/toggle-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAGpE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAE5C;IACA,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;CACnB,CAAC,CAAA;AAEF,SAAS,WAAW,CAAC,EACnB,SAAS,EACT,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EAE2B;IACnC,OAAO,CACL,KAAC,oBAAoB,CAAC,IAAI,iBACd,cAAc,kBACV,OAAO,eACV,IAAI,EACf,SAAS,EAAE,EAAE,CACX,wFAAwF,EACxF,SAAS,CACV,KACG,KAAK,YAET,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,YAClD,QAAQ,GACmB,GACJ,CAC7B,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EACvB,SAAS,EACT,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,GAAG,KAAK,EAE2B;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;IAEpD,OAAO,CACL,KAAC,oBAAoB,CAAC,IAAI,iBACd,mBAAmB,kBACf,OAAO,CAAC,OAAO,IAAI,OAAO,eAC7B,OAAO,CAAC,IAAI,IAAI,IAAI,EAC/B,SAAS,EAAE,EAAE,CACX,cAAc,CAAC;YACb,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO;YACnC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;SAC3B,CAAC,EACF,6LAA6L,EAC7L,SAAS,CACV,KACG,KAAK,YAER,QAAQ,GACiB,CAC7B,CAAA;AACH,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ import * as TogglePrimitive from '@radix-ui/react-toggle';
3
+ import { type VariantProps } from 'class-variance-authority';
4
+ declare const toggleVariants: (props?: ({
5
+ variant?: "default" | "outline" | null | undefined;
6
+ size?: "default" | "sm" | "lg" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ declare function Toggle({ className, variant, size, ...props }: React.ComponentProps<typeof TogglePrimitive.Root> & VariantProps<typeof toggleVariants>): import("react/jsx-runtime").JSX.Element;
9
+ export { Toggle, toggleVariants };
10
+ //# sourceMappingURL=toggle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.d.ts","sourceRoot":"","sources":["../../../src/components/ui/toggle.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,cAAc;;;8EAoBnB,CAAA;AAED,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAClD,YAAY,CAAC,OAAO,cAAc,CAAC,2CAQpC;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,27 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as TogglePrimitive from '@radix-ui/react-toggle';
4
+ import { cva } from 'class-variance-authority';
5
+ import { cn } from '../../lib/utils';
6
+ const toggleVariants = cva("inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium hover:bg-muted hover:text-muted-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0 focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] outline-none transition-[color,box-shadow] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive whitespace-nowrap", {
7
+ variants: {
8
+ variant: {
9
+ default: 'bg-transparent',
10
+ outline: 'border border-input bg-transparent shadow-xs hover:bg-accent hover:text-accent-foreground',
11
+ },
12
+ size: {
13
+ default: 'h-9 px-2 min-w-9',
14
+ sm: 'h-8 px-1.5 min-w-8',
15
+ lg: 'h-10 px-2.5 min-w-10',
16
+ },
17
+ },
18
+ defaultVariants: {
19
+ variant: 'default',
20
+ size: 'default',
21
+ },
22
+ });
23
+ function Toggle({ className, variant, size, ...props }) {
24
+ return (_jsx(TogglePrimitive.Root, { "data-slot": "toggle", className: cn(toggleVariants({ variant, size, className })), ...props }));
25
+ }
26
+ export { Toggle, toggleVariants };
27
+ //# sourceMappingURL=toggle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.js","sourceRoot":"","sources":["../../../src/components/ui/toggle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,MAAM,cAAc,GAAG,GAAG,CACxB,+iBAA+iB,EAC/iB;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,gBAAgB;YACzB,OAAO,EACL,2FAA2F;SAC9F;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,kBAAkB;YAC3B,EAAE,EAAE,oBAAoB;YACxB,EAAE,EAAE,sBAAsB;SAC3B;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAA;AAED,SAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAO,EACP,IAAI,EACJ,GAAG,KAAK,EAE2B;IACnC,OAAO,CACL,KAAC,eAAe,CAAC,IAAI,iBACT,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KACvD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
3
+ declare function TooltipProvider({ delayDuration, ...props }: React.ComponentProps<typeof TooltipPrimitive.Provider>): import("react/jsx-runtime").JSX.Element;
4
+ declare function Tooltip({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
5
+ declare function TooltipTrigger({ ...props }: React.ComponentProps<typeof TooltipPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
6
+ declare function TooltipContent({ className, sideOffset, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
7
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
8
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/ui/tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAI3D,iBAAS,eAAe,CAAC,EACvB,aAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,2CAQxD;AAED,iBAAS,OAAO,CAAC,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAMpD;AAED,iBAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,2CAEvD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAc,EACd,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,2CAiBvD;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,18 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as TooltipPrimitive from '@radix-ui/react-tooltip';
4
+ import { cn } from '../../lib/utils';
5
+ function TooltipProvider({ delayDuration = 0, ...props }) {
6
+ return (_jsx(TooltipPrimitive.Provider, { "data-slot": "tooltip-provider", delayDuration: delayDuration, ...props }));
7
+ }
8
+ function Tooltip({ ...props }) {
9
+ return (_jsx(TooltipProvider, { children: _jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) }));
10
+ }
11
+ function TooltipTrigger({ ...props }) {
12
+ return _jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
13
+ }
14
+ function TooltipContent({ className, sideOffset = 0, children, ...props }) {
15
+ return (_jsx(TooltipPrimitive.Portal, { children: _jsxs(TooltipPrimitive.Content, { "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn('bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-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 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance', className), ...props, children: [children, _jsx(TooltipPrimitive.Arrow, { className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })] }) }));
16
+ }
17
+ export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
18
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../../src/components/ui/tooltip.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAGZ,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAA;AAEpC,SAAS,eAAe,CAAC,EACvB,aAAa,GAAG,CAAC,EACjB,GAAG,KAAK,EAC+C;IACvD,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,iBACd,kBAAkB,EAC5B,aAAa,EAAE,aAAa,KACxB,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EACf,GAAG,KAAK,EAC2C;IACnD,OAAO,CACL,KAAC,eAAe,cACd,KAAC,gBAAgB,CAAC,IAAI,iBAAW,SAAS,KAAK,KAAK,GAAI,GACxC,CACnB,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,GAAG,KAAK,EAC8C;IACtD,OAAO,KAAC,gBAAgB,CAAC,OAAO,iBAAW,iBAAiB,KAAK,KAAK,GAAI,CAAA;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,SAAS,EACT,UAAU,GAAG,CAAC,EACd,QAAQ,EACR,GAAG,KAAK,EAC8C;IACtD,OAAO,CACL,KAAC,gBAAgB,CAAC,MAAM,cACtB,MAAC,gBAAgB,CAAC,OAAO,iBACb,iBAAiB,EAC3B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,EAAE,CACX,maAAma,EACna,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACT,KAAC,gBAAgB,CAAC,KAAK,IAAC,SAAS,EAAC,oGAAoG,GAAG,IAChH,GACH,CAC3B,CAAA;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function useIsMobile(): boolean;
2
+ //# sourceMappingURL=use-mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.d.ts","sourceRoot":"","sources":["../../../src/components/ui/use-mobile.tsx"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,YAc1B"}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ const MOBILE_BREAKPOINT = 768;
3
+ export function useIsMobile() {
4
+ const [isMobile, setIsMobile] = React.useState(undefined);
5
+ React.useEffect(() => {
6
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
7
+ const onChange = () => {
8
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
9
+ };
10
+ mql.addEventListener('change', onChange);
11
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
12
+ return () => mql.removeEventListener('change', onChange);
13
+ }, []);
14
+ return !!isMobile;
15
+ }
16
+ //# sourceMappingURL=use-mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.js","sourceRoot":"","sources":["../../../src/components/ui/use-mobile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAsB,SAAS,CAAC,CAAA;IAE9E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,iBAAiB,GAAG,CAAC,KAAK,CAAC,CAAA;QACxE,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,iBAAiB,CAAC,CAAA;QACpD,CAAC,CAAA;QACD,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACxC,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,iBAAiB,CAAC,CAAA;QAClD,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1D,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CAAC,CAAC,QAAQ,CAAA;AACnB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import * as React from 'react';
2
+ import type { ToastActionElement, ToastProps } from './toast';
3
+ type ToasterToast = ToastProps & {
4
+ id: string;
5
+ title?: React.ReactNode;
6
+ description?: React.ReactNode;
7
+ action?: ToastActionElement;
8
+ };
9
+ declare const actionTypes: {
10
+ readonly ADD_TOAST: "ADD_TOAST";
11
+ readonly UPDATE_TOAST: "UPDATE_TOAST";
12
+ readonly DISMISS_TOAST: "DISMISS_TOAST";
13
+ readonly REMOVE_TOAST: "REMOVE_TOAST";
14
+ };
15
+ type ActionType = typeof actionTypes;
16
+ type Action = {
17
+ type: ActionType['ADD_TOAST'];
18
+ toast: ToasterToast;
19
+ } | {
20
+ type: ActionType['UPDATE_TOAST'];
21
+ toast: Partial<ToasterToast>;
22
+ } | {
23
+ type: ActionType['DISMISS_TOAST'];
24
+ toastId?: ToasterToast['id'];
25
+ } | {
26
+ type: ActionType['REMOVE_TOAST'];
27
+ toastId?: ToasterToast['id'];
28
+ };
29
+ interface State {
30
+ toasts: ToasterToast[];
31
+ }
32
+ export declare const reducer: (state: State, action: Action) => State;
33
+ type Toast = Omit<ToasterToast, 'id'>;
34
+ declare function toast({ ...props }: Toast): {
35
+ id: string;
36
+ dismiss: () => void;
37
+ update: (props: ToasterToast) => void;
38
+ };
39
+ declare function useToast(): {
40
+ toast: typeof toast;
41
+ dismiss: (toastId?: string) => void;
42
+ toasts: ToasterToast[];
43
+ };
44
+ export { useToast, toast };
45
+ //# sourceMappingURL=use-toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.d.ts","sourceRoot":"","sources":["../../../src/components/ui/use-toast.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAK7D,KAAK,YAAY,GAAG,UAAU,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC5B,CAAA;AAED,QAAA,MAAM,WAAW;;;;;CAKP,CAAA;AASV,KAAK,UAAU,GAAG,OAAO,WAAW,CAAA;AAEpC,KAAK,MAAM,GACP;IACE,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IAC7B,KAAK,EAAE,YAAY,CAAA;CACpB,GACD;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;IAChC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC7B,GACD;IACE,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;CAC7B,GACD;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;CAC7B,CAAA;AAEL,UAAU,KAAK;IACb,MAAM,EAAE,YAAY,EAAE,CAAA;CACvB;AAoBD,eAAO,MAAM,OAAO,UAAW,KAAK,UAAU,MAAM,KAAG,KAqDtD,CAAA;AAaD,KAAK,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAErC,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK;;;oBAGT,YAAY;EAwBpC;AAED,iBAAS,QAAQ;;wBAgBO,MAAM;YAtIpB,YAAY,EAAE;EAwIvB;AAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,129 @@
1
+ 'use client';
2
+ // Inspired by react-hot-toast library
3
+ import * as React from 'react';
4
+ const TOAST_LIMIT = 1;
5
+ const TOAST_REMOVE_DELAY = 1000000;
6
+ const actionTypes = {
7
+ ADD_TOAST: 'ADD_TOAST',
8
+ UPDATE_TOAST: 'UPDATE_TOAST',
9
+ DISMISS_TOAST: 'DISMISS_TOAST',
10
+ REMOVE_TOAST: 'REMOVE_TOAST',
11
+ };
12
+ let count = 0;
13
+ function genId() {
14
+ count = (count + 1) % Number.MAX_SAFE_INTEGER;
15
+ return count.toString();
16
+ }
17
+ const toastTimeouts = new Map();
18
+ const addToRemoveQueue = (toastId) => {
19
+ if (toastTimeouts.has(toastId)) {
20
+ return;
21
+ }
22
+ const timeout = setTimeout(() => {
23
+ toastTimeouts.delete(toastId);
24
+ dispatch({
25
+ type: 'REMOVE_TOAST',
26
+ toastId: toastId,
27
+ });
28
+ }, TOAST_REMOVE_DELAY);
29
+ toastTimeouts.set(toastId, timeout);
30
+ };
31
+ export const reducer = (state, action) => {
32
+ switch (action.type) {
33
+ case 'ADD_TOAST':
34
+ return {
35
+ ...state,
36
+ toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),
37
+ };
38
+ case 'UPDATE_TOAST':
39
+ return {
40
+ ...state,
41
+ toasts: state.toasts.map((t) => t.id === action.toast.id ? { ...t, ...action.toast } : t),
42
+ };
43
+ case 'DISMISS_TOAST': {
44
+ const { toastId } = action;
45
+ // ! Side effects ! - This could be extracted into a dismissToast() action,
46
+ // but I'll keep it here for simplicity
47
+ if (toastId) {
48
+ addToRemoveQueue(toastId);
49
+ }
50
+ else {
51
+ state.toasts.forEach((toast) => {
52
+ addToRemoveQueue(toast.id);
53
+ });
54
+ }
55
+ return {
56
+ ...state,
57
+ toasts: state.toasts.map((t) => t.id === toastId || toastId === undefined
58
+ ? {
59
+ ...t,
60
+ open: false,
61
+ }
62
+ : t),
63
+ };
64
+ }
65
+ case 'REMOVE_TOAST':
66
+ if (action.toastId === undefined) {
67
+ return {
68
+ ...state,
69
+ toasts: [],
70
+ };
71
+ }
72
+ return {
73
+ ...state,
74
+ toasts: state.toasts.filter((t) => t.id !== action.toastId),
75
+ };
76
+ }
77
+ };
78
+ const listeners = [];
79
+ let memoryState = { toasts: [] };
80
+ function dispatch(action) {
81
+ memoryState = reducer(memoryState, action);
82
+ listeners.forEach((listener) => {
83
+ listener(memoryState);
84
+ });
85
+ }
86
+ function toast({ ...props }) {
87
+ const id = genId();
88
+ const update = (props) => dispatch({
89
+ type: 'UPDATE_TOAST',
90
+ toast: { ...props, id },
91
+ });
92
+ const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });
93
+ dispatch({
94
+ type: 'ADD_TOAST',
95
+ toast: {
96
+ ...props,
97
+ id,
98
+ open: true,
99
+ onOpenChange: (open) => {
100
+ if (!open)
101
+ dismiss();
102
+ },
103
+ },
104
+ });
105
+ return {
106
+ id: id,
107
+ dismiss,
108
+ update,
109
+ };
110
+ }
111
+ function useToast() {
112
+ const [state, setState] = React.useState(memoryState);
113
+ React.useEffect(() => {
114
+ listeners.push(setState);
115
+ return () => {
116
+ const index = listeners.indexOf(setState);
117
+ if (index > -1) {
118
+ listeners.splice(index, 1);
119
+ }
120
+ };
121
+ }, [state]);
122
+ return {
123
+ ...state,
124
+ toast,
125
+ dismiss: (toastId) => dispatch({ type: 'DISMISS_TOAST', toastId }),
126
+ };
127
+ }
128
+ export { useToast, toast };
129
+ //# sourceMappingURL=use-toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.js","sourceRoot":"","sources":["../../../src/components/ui/use-toast.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function useIsMobile(): boolean;
2
+ //# sourceMappingURL=use-mobile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mobile.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,YAc1B"}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ const MOBILE_BREAKPOINT = 768;
3
+ export function useIsMobile() {
4
+ const [isMobile, setIsMobile] = React.useState(undefined);
5
+ React.useEffect(() => {
6
+ const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
7
+ const onChange = () => {
8
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
9
+ };
10
+ mql.addEventListener('change', onChange);
11
+ setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
12
+ return () => mql.removeEventListener('change', onChange);
13
+ }, []);
14
+ return !!isMobile;
15
+ }
16
+ //# sourceMappingURL=use-mobile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-mobile.js","sourceRoot":"","sources":["../../src/hooks/use-mobile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B,MAAM,UAAU,WAAW;IACzB,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAsB,SAAS,CAAC,CAAA;IAE9E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,iBAAiB,GAAG,CAAC,KAAK,CAAC,CAAA;QACxE,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,iBAAiB,CAAC,CAAA;QACpD,CAAC,CAAA;QACD,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACxC,WAAW,CAAC,MAAM,CAAC,UAAU,GAAG,iBAAiB,CAAC,CAAA;QAClD,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC1D,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CAAC,CAAC,QAAQ,CAAA;AACnB,CAAC"}
@@ -0,0 +1,45 @@
1
+ import * as React from 'react';
2
+ import type { ToastActionElement, ToastProps } from '../components/ui/toast';
3
+ type ToasterToast = ToastProps & {
4
+ id: string;
5
+ title?: React.ReactNode;
6
+ description?: React.ReactNode;
7
+ action?: ToastActionElement;
8
+ };
9
+ declare const actionTypes: {
10
+ readonly ADD_TOAST: "ADD_TOAST";
11
+ readonly UPDATE_TOAST: "UPDATE_TOAST";
12
+ readonly DISMISS_TOAST: "DISMISS_TOAST";
13
+ readonly REMOVE_TOAST: "REMOVE_TOAST";
14
+ };
15
+ type ActionType = typeof actionTypes;
16
+ type Action = {
17
+ type: ActionType['ADD_TOAST'];
18
+ toast: ToasterToast;
19
+ } | {
20
+ type: ActionType['UPDATE_TOAST'];
21
+ toast: Partial<ToasterToast>;
22
+ } | {
23
+ type: ActionType['DISMISS_TOAST'];
24
+ toastId?: ToasterToast['id'];
25
+ } | {
26
+ type: ActionType['REMOVE_TOAST'];
27
+ toastId?: ToasterToast['id'];
28
+ };
29
+ interface State {
30
+ toasts: ToasterToast[];
31
+ }
32
+ export declare const reducer: (state: State, action: Action) => State;
33
+ type Toast = Omit<ToasterToast, 'id'>;
34
+ declare function toast({ ...props }: Toast): {
35
+ id: string;
36
+ dismiss: () => void;
37
+ update: (props: ToasterToast) => void;
38
+ };
39
+ declare function useToast(): {
40
+ toast: typeof toast;
41
+ dismiss: (toastId?: string) => void;
42
+ toasts: ToasterToast[];
43
+ };
44
+ export { useToast, toast };
45
+ //# sourceMappingURL=use-toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.d.ts","sourceRoot":"","sources":["../../src/hooks/use-toast.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAK5E,KAAK,YAAY,GAAG,UAAU,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC5B,CAAA;AAED,QAAA,MAAM,WAAW;;;;;CAKP,CAAA;AASV,KAAK,UAAU,GAAG,OAAO,WAAW,CAAA;AAEpC,KAAK,MAAM,GACP;IACE,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;IAC7B,KAAK,EAAE,YAAY,CAAA;CACpB,GACD;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;IAChC,KAAK,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC7B,GACD;IACE,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,CAAA;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;CAC7B,GACD;IACE,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;CAC7B,CAAA;AAEL,UAAU,KAAK;IACb,MAAM,EAAE,YAAY,EAAE,CAAA;CACvB;AAoBD,eAAO,MAAM,OAAO,UAAW,KAAK,UAAU,MAAM,KAAG,KAqDtD,CAAA;AAaD,KAAK,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAErC,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK;;;oBAGT,YAAY;EAwBpC;AAED,iBAAS,QAAQ;;wBAgBO,MAAM;YAtIpB,YAAY,EAAE;EAwIvB;AAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,129 @@
1
+ 'use client';
2
+ // Inspired by react-hot-toast library
3
+ import * as React from 'react';
4
+ const TOAST_LIMIT = 1;
5
+ const TOAST_REMOVE_DELAY = 1000000;
6
+ const actionTypes = {
7
+ ADD_TOAST: 'ADD_TOAST',
8
+ UPDATE_TOAST: 'UPDATE_TOAST',
9
+ DISMISS_TOAST: 'DISMISS_TOAST',
10
+ REMOVE_TOAST: 'REMOVE_TOAST',
11
+ };
12
+ let count = 0;
13
+ function genId() {
14
+ count = (count + 1) % Number.MAX_SAFE_INTEGER;
15
+ return count.toString();
16
+ }
17
+ const toastTimeouts = new Map();
18
+ const addToRemoveQueue = (toastId) => {
19
+ if (toastTimeouts.has(toastId)) {
20
+ return;
21
+ }
22
+ const timeout = setTimeout(() => {
23
+ toastTimeouts.delete(toastId);
24
+ dispatch({
25
+ type: 'REMOVE_TOAST',
26
+ toastId: toastId,
27
+ });
28
+ }, TOAST_REMOVE_DELAY);
29
+ toastTimeouts.set(toastId, timeout);
30
+ };
31
+ export const reducer = (state, action) => {
32
+ switch (action.type) {
33
+ case 'ADD_TOAST':
34
+ return {
35
+ ...state,
36
+ toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),
37
+ };
38
+ case 'UPDATE_TOAST':
39
+ return {
40
+ ...state,
41
+ toasts: state.toasts.map((t) => t.id === action.toast.id ? { ...t, ...action.toast } : t),
42
+ };
43
+ case 'DISMISS_TOAST': {
44
+ const { toastId } = action;
45
+ // ! Side effects ! - This could be extracted into a dismissToast() action,
46
+ // but I'll keep it here for simplicity
47
+ if (toastId) {
48
+ addToRemoveQueue(toastId);
49
+ }
50
+ else {
51
+ state.toasts.forEach((toast) => {
52
+ addToRemoveQueue(toast.id);
53
+ });
54
+ }
55
+ return {
56
+ ...state,
57
+ toasts: state.toasts.map((t) => t.id === toastId || toastId === undefined
58
+ ? {
59
+ ...t,
60
+ open: false,
61
+ }
62
+ : t),
63
+ };
64
+ }
65
+ case 'REMOVE_TOAST':
66
+ if (action.toastId === undefined) {
67
+ return {
68
+ ...state,
69
+ toasts: [],
70
+ };
71
+ }
72
+ return {
73
+ ...state,
74
+ toasts: state.toasts.filter((t) => t.id !== action.toastId),
75
+ };
76
+ }
77
+ };
78
+ const listeners = [];
79
+ let memoryState = { toasts: [] };
80
+ function dispatch(action) {
81
+ memoryState = reducer(memoryState, action);
82
+ listeners.forEach((listener) => {
83
+ listener(memoryState);
84
+ });
85
+ }
86
+ function toast({ ...props }) {
87
+ const id = genId();
88
+ const update = (props) => dispatch({
89
+ type: 'UPDATE_TOAST',
90
+ toast: { ...props, id },
91
+ });
92
+ const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id });
93
+ dispatch({
94
+ type: 'ADD_TOAST',
95
+ toast: {
96
+ ...props,
97
+ id,
98
+ open: true,
99
+ onOpenChange: (open) => {
100
+ if (!open)
101
+ dismiss();
102
+ },
103
+ },
104
+ });
105
+ return {
106
+ id: id,
107
+ dismiss,
108
+ update,
109
+ };
110
+ }
111
+ function useToast() {
112
+ const [state, setState] = React.useState(memoryState);
113
+ React.useEffect(() => {
114
+ listeners.push(setState);
115
+ return () => {
116
+ const index = listeners.indexOf(setState);
117
+ if (index > -1) {
118
+ listeners.splice(index, 1);
119
+ }
120
+ };
121
+ }, [state]);
122
+ return {
123
+ ...state,
124
+ toast,
125
+ dismiss: (toastId) => dispatch({ type: 'DISMISS_TOAST', toastId }),
126
+ };
127
+ }
128
+ export { useToast, toast };
129
+ //# sourceMappingURL=use-toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-toast.js","sourceRoot":"","sources":["../../src/hooks/use-toast.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,sCAAsC;AACtC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,GAAG,CAAC,CAAA;AACrB,MAAM,kBAAkB,GAAG,OAAO,CAAA;AASlC,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;CACpB,CAAA;AAEV,IAAI,KAAK,GAAG,CAAC,CAAA;AAEb,SAAS,KAAK;IACZ,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAA;IAC7C,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAA;AACzB,CAAC;AA0BD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyC,CAAA;AAEtE,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE;IAC3C,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/B,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;QAC9B,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7B,QAAQ,CAAC;YACP,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAA;IACJ,CAAC,EAAE,kBAAkB,CAAC,CAAA;IAEtB,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;AACrC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,MAAc,EAAS,EAAE;IAC7D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,WAAW;YACd,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;aAC9D,CAAA;QAEH,KAAK,cAAc;YACjB,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CACzD;aACF,CAAA;QAEH,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;YAE1B,2EAA2E;YAC3E,uCAAuC;YACvC,IAAI,OAAO,EAAE,CAAC;gBACZ,gBAAgB,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC7B,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBAC5B,CAAC,CAAC,CAAA;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAC7B,CAAC,CAAC,EAAE,KAAK,OAAO,IAAI,OAAO,KAAK,SAAS;oBACvC,CAAC,CAAC;wBACE,GAAG,CAAC;wBACJ,IAAI,EAAE,KAAK;qBACZ;oBACH,CAAC,CAAC,CAAC,CACN;aACF,CAAA;QACH,CAAC;QACD,KAAK,cAAc;YACjB,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO;oBACL,GAAG,KAAK;oBACR,MAAM,EAAE,EAAE;iBACX,CAAA;YACH,CAAC;YACD,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC;aAC5D,CAAA;IACL,CAAC;AACH,CAAC,CAAA;AAED,MAAM,SAAS,GAAkC,EAAE,CAAA;AAEnD,IAAI,WAAW,GAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAAA;AAEvC,SAAS,QAAQ,CAAC,MAAc;IAC9B,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAC1C,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7B,QAAQ,CAAC,WAAW,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC;AAID,SAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAS;IAChC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAElB,MAAM,MAAM,GAAG,CAAC,KAAmB,EAAE,EAAE,CACrC,QAAQ,CAAC;QACP,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;KACxB,CAAC,CAAA;IACJ,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;IAEtE,QAAQ,CAAC;QACP,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE;YACL,GAAG,KAAK;YACR,EAAE;YACF,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;gBACrB,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,CAAA;YACtB,CAAC;SACF;KACF,CAAC,CAAA;IAEF,OAAO;QACL,EAAE,EAAE,EAAE;QACN,OAAO;QACP,MAAM;KACP,CAAA;AACH,CAAC;AAED,SAAS,QAAQ;IACf,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAQ,WAAW,CAAC,CAAA;IAE5D,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACxB,OAAO,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACzC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBACf,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAEX,OAAO;QACL,GAAG,KAAK;QACR,KAAK;QACL,OAAO,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;KAC5E,CAAA;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA"}