@devvistatech/devvista-kit 0.0.9 → 0.0.10

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 (306) hide show
  1. package/CHANGELOG.md +12 -12
  2. package/LICENSE +6 -6
  3. package/README.md +15 -15
  4. package/app/about/page.tsx +298 -298
  5. package/app/adRequest/page.tsx +549 -549
  6. package/app/analytics/page.tsx +346 -346
  7. package/app/api/about/route.ts +306 -306
  8. package/app/api/adRequest/route.ts +567 -567
  9. package/app/api/analytics/[reportType]/route.ts +337 -337
  10. package/app/api/bio/route.ts +313 -313
  11. package/app/api/blog/route.ts +306 -306
  12. package/app/api/chat/route.ts +14 -14
  13. package/app/api/contact/route.ts +409 -409
  14. package/app/api/contacts/route.ts +224 -224
  15. package/app/api/files/route.ts +429 -429
  16. package/app/api/gallery-data/route.ts +735 -735
  17. package/app/api/schedule/route.ts +455 -455
  18. package/app/api/sync-user/route.ts +131 -131
  19. package/app/api/trial-request/route.ts +297 -297
  20. package/app/blog/[id]/page.tsx +288 -288
  21. package/app/blog/page.tsx +216 -216
  22. package/app/contact/page.tsx +284 -284
  23. package/app/faq/page.tsx +191 -191
  24. package/app/gallery/page.tsx +315 -315
  25. package/app/globals.css +58 -58
  26. package/app/layout.tsx +110 -110
  27. package/app/not-found.tsx +20 -20
  28. package/app/page.tsx +338 -338
  29. package/app/schedule/page.tsx +660 -660
  30. package/bin/init.js +219 -219
  31. package/components/addOns/functional/BioEditor.tsx +446 -446
  32. package/components/addOns/functional/CalendlyWidget.tsx +107 -107
  33. package/components/addOns/functional/ClassList.tsx +145 -145
  34. package/components/addOns/functional/ClassPopup.tsx +398 -398
  35. package/components/addOns/functional/ContactForm.tsx +284 -284
  36. package/components/addOns/functional/FileUploader.tsx +294 -294
  37. package/components/addOns/functional/ImageDescCarousel.tsx +730 -730
  38. package/components/addOns/functional/NewUserAnalytics.tsx +100 -100
  39. package/components/addOns/functional/ScheduleCarousel.tsx +171 -171
  40. package/components/addOns/functional/aboutSections/AboutSection.tsx +544 -544
  41. package/components/addOns/functional/aboutSections/constants/aboutSection.ts +65 -65
  42. package/components/addOns/functional/blogSections/BlogDashboard.tsx +184 -184
  43. package/components/addOns/functional/blogSections/BlogFormPopUp.tsx +554 -554
  44. package/components/addOns/functional/blogSections/BlogList.tsx +148 -148
  45. package/components/addOns/functional/blogSections/BlogSidebar.tsx +58 -58
  46. package/components/addOns/functional/blogSections/constants/blogDashboard.ts +28 -28
  47. package/components/addOns/functional/blogSections/constants/blogFormPopUp.ts +97 -97
  48. package/components/addOns/functional/blogSections/constants/blogList.ts +22 -22
  49. package/components/addOns/functional/blogSections/constants/blogSidebar.ts +15 -15
  50. package/components/addOns/functional/contactsDashboard/ContactsDashboard.tsx +366 -366
  51. package/components/addOns/functional/contactsDashboard/constants/contactsDashboard.ts +70 -70
  52. package/components/addOns/functional/galleries/GalleryComplex.tsx +836 -836
  53. package/components/addOns/functional/galleries/GallerySimple.tsx +509 -509
  54. package/components/addOns/functional/galleries/constants/galleryComplex.ts +106 -106
  55. package/components/addOns/functional/galleries/constants/gallerySimple.ts +76 -76
  56. package/components/addOns/functional/schedules/ScheduleGridOne.tsx +262 -262
  57. package/components/addOns/functional/schedules/ScheduleGridTwo.tsx +294 -294
  58. package/components/addOns/functional/schedules/ScheduleGridTwoBasic.tsx +288 -288
  59. package/components/addOns/functional/schedules/SchedulerForm.tsx +428 -428
  60. package/components/addOns/functional/schedules/constants/ScheduleGridTwo.ts +40 -40
  61. package/components/addOns/functional/schedules/constants/ScheduleGridTwoBasic.ts +40 -40
  62. package/components/addOns/functional/schedules/constants/SchedulerForm.ts +65 -65
  63. package/components/addOns/functional/schedules/constants/scheduleGridOne.ts +54 -54
  64. package/components/addOns/non-functional/AnnouncementBanner.tsx +46 -46
  65. package/components/addOns/non-functional/FeaturesSection.tsx +62 -62
  66. package/components/addOns/non-functional/Heros/HeroSection.tsx +142 -142
  67. package/components/addOns/non-functional/IconBubble.tsx +49 -49
  68. package/components/addOns/non-functional/SampleCarousel.tsx +204 -204
  69. package/components/addOns/non-functional/Testimonials.tsx +334 -334
  70. package/components/addOns/non-functional/ThreeSetGallery.tsx +63 -63
  71. package/components/addOns/non-functional/aboutSections/AboutSection.tsx +62 -62
  72. package/components/addOns/non-functional/aboutSections/constants/aboutSection.ts +24 -24
  73. package/components/addOns/non-functional/imageCarousels/ProductSlider.tsx +117 -117
  74. package/components/addOns/non-functional/imageCarousels/ProgramCarousel.tsx +232 -232
  75. package/components/addOns/non-functional/imageCarousels/constants/programCarousel.ts +39 -39
  76. package/components/addOns/non-functional/imageCarousels/constants/programSlider.ts +36 -36
  77. package/components/addOns/non-functional/spinner.tsx +21 -21
  78. package/components/footers/footer.tsx +453 -453
  79. package/components/navBars/navbar.tsx +310 -310
  80. package/components/other/accordion.tsx +58 -58
  81. package/components/other/admin-menu.tsx +68 -68
  82. package/components/other/alert-dialog.tsx +141 -141
  83. package/components/other/alert.tsx +59 -59
  84. package/components/other/aspect-ratio.tsx +7 -7
  85. package/components/other/avatar.tsx +50 -50
  86. package/components/other/badge.tsx +36 -36
  87. package/components/other/breadcrumb.tsx +115 -115
  88. package/components/other/button.tsx +738 -738
  89. package/components/other/calendar.tsx +66 -66
  90. package/components/other/card.tsx +86 -86
  91. package/components/other/carousel.tsx +274 -274
  92. package/components/other/chart.tsx +363 -363
  93. package/components/other/checkbox.tsx +30 -30
  94. package/components/other/collapsible.tsx +11 -11
  95. package/components/other/command.tsx +155 -155
  96. package/components/other/context-menu.tsx +200 -200
  97. package/components/other/dialog.tsx +122 -122
  98. package/components/other/drawer.tsx +118 -118
  99. package/components/other/dropdown-menu.tsx +200 -200
  100. package/components/other/form.tsx +179 -179
  101. package/components/other/hover-card.tsx +29 -29
  102. package/components/other/input-otp.tsx +71 -71
  103. package/components/other/input.tsx +25 -25
  104. package/components/other/label.tsx +26 -26
  105. package/components/other/menubar.tsx +236 -236
  106. package/components/other/mobile-icon.tsx +21 -21
  107. package/components/other/navigation-menu.tsx +128 -128
  108. package/components/other/pagination.tsx +117 -117
  109. package/components/other/popover.tsx +31 -31
  110. package/components/other/progress.tsx +28 -28
  111. package/components/other/radio-group.tsx +44 -44
  112. package/components/other/resizable.tsx +45 -45
  113. package/components/other/scroll-area.tsx +48 -48
  114. package/components/other/select.tsx +160 -160
  115. package/components/other/separator.tsx +31 -31
  116. package/components/other/sheet.tsx +140 -140
  117. package/components/other/skeleton.tsx +15 -15
  118. package/components/other/slider.tsx +28 -28
  119. package/components/other/social-icons.tsx +39 -39
  120. package/components/other/sonner.tsx +31 -31
  121. package/components/other/switch.tsx +29 -29
  122. package/components/other/table.tsx +117 -117
  123. package/components/other/tabs.tsx +55 -55
  124. package/components/other/textarea.tsx +24 -24
  125. package/components/other/toast.tsx +122 -122
  126. package/components/other/toaster.tsx +35 -35
  127. package/components/other/toggle-group.tsx +61 -61
  128. package/components/other/toggle.tsx +45 -45
  129. package/components/other/tooltip.tsx +30 -30
  130. package/components/theme-provider.tsx +8 -8
  131. package/components/types.ts +49 -49
  132. package/dist/.next/types/app/api/about/route.js +52 -0
  133. package/dist/.next/types/app/api/blog/route.js +52 -0
  134. package/dist/.next/types/app/api/files/route.js +52 -0
  135. package/dist/.next/types/app/api/schedule/route.js +52 -0
  136. package/dist/.next/types/app/api/sync-user/route.js +52 -0
  137. package/dist/.next/types/app/layout.js +22 -0
  138. package/dist/.next/types/app/page.js +22 -0
  139. package/dist/app/about/page.jsx +258 -0
  140. package/dist/app/adRequest/page.jsx +531 -0
  141. package/dist/app/analytics/page.jsx +298 -0
  142. package/dist/app/api/about/route.js +285 -0
  143. package/dist/app/api/adRequest/route.js +440 -0
  144. package/dist/app/api/analytics/[reportType]/route.js +357 -0
  145. package/dist/app/api/bio/route.js +293 -0
  146. package/dist/app/api/blog/route.js +366 -0
  147. package/dist/app/api/chat/route.js +58 -0
  148. package/dist/app/api/contact/route.js +163 -0
  149. package/dist/app/api/contacts/route.js +234 -0
  150. package/dist/app/api/files/route.js +444 -0
  151. package/dist/app/api/gallery-data/route.js +719 -0
  152. package/dist/app/api/schedule/route.js +461 -0
  153. package/dist/app/api/sync-user/route.js +186 -0
  154. package/dist/app/api/trial-request/route.js +165 -0
  155. package/dist/app/blog/[id]/page.jsx +312 -0
  156. package/dist/app/blog/page.jsx +210 -0
  157. package/dist/app/constants/about.js +32 -0
  158. package/dist/app/constants/adRequest.js +113 -0
  159. package/dist/app/constants/contact.js +40 -0
  160. package/dist/app/constants/faq.js +36 -0
  161. package/dist/app/constants/gallery.js +42 -0
  162. package/dist/app/constants/page.js +69 -0
  163. package/dist/app/constants/schedule.js +71 -0
  164. package/dist/app/contact/page.jsx +119 -0
  165. package/dist/app/faq/page.jsx +97 -0
  166. package/dist/app/gallery/page.jsx +281 -0
  167. package/dist/app/layout.jsx +45 -0
  168. package/dist/app/not-found.jsx +14 -0
  169. package/dist/app/page.jsx +324 -0
  170. package/dist/app/schedule/page.jsx +500 -0
  171. package/dist/components/addOns/functional/BioEditor.jsx +187 -0
  172. package/dist/components/addOns/functional/CalendlyWidget.jsx +61 -0
  173. package/dist/components/addOns/functional/ClassList.jsx +158 -0
  174. package/dist/components/addOns/functional/ClassPopup.jsx +300 -0
  175. package/dist/components/addOns/functional/ContactForm.jsx +219 -0
  176. package/dist/components/addOns/functional/FileUploader.jsx +222 -0
  177. package/dist/components/addOns/functional/ImageDescCarousel.jsx +491 -0
  178. package/dist/components/addOns/functional/NewUserAnalytics.jsx +71 -0
  179. package/dist/components/addOns/functional/ScheduleCarousel.jsx +68 -0
  180. package/dist/components/addOns/functional/aboutSections/AboutSection.jsx +372 -0
  181. package/dist/components/addOns/functional/aboutSections/constants/aboutSection.js +65 -0
  182. package/dist/components/addOns/functional/blogSections/BlogDashboard.jsx +111 -0
  183. package/dist/components/addOns/functional/blogSections/BlogFormPopUp.jsx +465 -0
  184. package/dist/components/addOns/functional/blogSections/BlogList.jsx +170 -0
  185. package/dist/components/addOns/functional/blogSections/BlogSidebar.jsx +35 -0
  186. package/dist/components/addOns/functional/blogSections/constants/blogDashboard.js +28 -0
  187. package/dist/components/addOns/functional/blogSections/constants/blogFormPopUp.js +97 -0
  188. package/dist/components/addOns/functional/blogSections/constants/blogList.js +22 -0
  189. package/dist/components/addOns/functional/blogSections/constants/blogSidebar.js +15 -0
  190. package/dist/components/addOns/functional/contactsDashboard/ContactsDashboard.jsx +355 -0
  191. package/dist/components/addOns/functional/contactsDashboard/constants/contactsDashboard.js +70 -0
  192. package/dist/components/addOns/functional/galleries/GalleryComplex.jsx +605 -0
  193. package/dist/components/addOns/functional/galleries/GallerySimple.jsx +363 -0
  194. package/dist/components/addOns/functional/galleries/constants/galleryComplex.js +106 -0
  195. package/dist/components/addOns/functional/galleries/constants/gallerySimple.js +76 -0
  196. package/dist/components/addOns/functional/schedules/ScheduleGridOne.jsx +167 -0
  197. package/dist/components/addOns/functional/schedules/ScheduleGridTwo.jsx +100 -0
  198. package/dist/components/addOns/functional/schedules/ScheduleGridTwoBasic.jsx +97 -0
  199. package/dist/components/addOns/functional/schedules/SchedulerForm.jsx +188 -0
  200. package/dist/components/addOns/functional/schedules/constants/ScheduleGridTwo.js +40 -0
  201. package/dist/components/addOns/functional/schedules/constants/ScheduleGridTwoBasic.js +40 -0
  202. package/dist/components/addOns/functional/schedules/constants/SchedulerForm.js +65 -0
  203. package/dist/components/addOns/functional/schedules/constants/scheduleGridOne.js +54 -0
  204. package/dist/components/addOns/non-functional/AnnouncementBanner.jsx +24 -0
  205. package/dist/components/addOns/non-functional/FeaturesSection.jsx +38 -0
  206. package/dist/components/addOns/non-functional/HeroSection.jsx +71 -0
  207. package/dist/components/addOns/non-functional/Heros/HeroSection.jsx +71 -0
  208. package/dist/components/addOns/non-functional/IconBubble.jsx +36 -0
  209. package/dist/components/addOns/non-functional/SampleCarousel.jsx +114 -0
  210. package/dist/components/addOns/non-functional/Testimonials.jsx +177 -0
  211. package/dist/components/addOns/non-functional/ThreeSetGallery.jsx +40 -0
  212. package/dist/components/addOns/non-functional/aboutSections/AboutSection.jsx +35 -0
  213. package/dist/components/addOns/non-functional/aboutSections/constants/aboutSection.js +24 -0
  214. package/dist/components/addOns/non-functional/imageCarousels/ProductSlider.jsx +80 -0
  215. package/dist/components/addOns/non-functional/imageCarousels/ProgramCarousel.jsx +155 -0
  216. package/dist/components/addOns/non-functional/imageCarousels/constants/programCarousel.js +39 -0
  217. package/dist/components/addOns/non-functional/imageCarousels/constants/programSlider.js +36 -0
  218. package/dist/components/addOns/non-functional/spinner.jsx +13 -0
  219. package/dist/components/footers/footer.jsx +217 -0
  220. package/dist/components/navBars/navbar.jsx +159 -0
  221. package/dist/components/other/accordion.jsx +40 -0
  222. package/dist/components/other/admin-menu.jsx +34 -0
  223. package/dist/components/other/alert-dialog.jsx +64 -0
  224. package/dist/components/other/alert.jsx +41 -0
  225. package/dist/components/other/aspect-ratio.jsx +4 -0
  226. package/dist/components/other/avatar.jsx +31 -0
  227. package/dist/components/other/badge.jsx +32 -0
  228. package/dist/components/other/breadcrumb.jsx +57 -0
  229. package/dist/components/other/button.jsx +322 -0
  230. package/dist/components/other/calendar.jsx +43 -0
  231. package/dist/components/other/card.jsx +44 -0
  232. package/dist/components/other/carousel.jsx +140 -0
  233. package/dist/components/other/chart.jsx +182 -0
  234. package/dist/components/other/checkbox.jsx +26 -0
  235. package/dist/components/other/collapsible.jsx +6 -0
  236. package/dist/components/other/command.jsx +68 -0
  237. package/dist/components/other/context-menu.jsx +88 -0
  238. package/dist/components/other/dialog.jsx +60 -0
  239. package/dist/components/other/drawer.jsx +60 -0
  240. package/dist/components/other/dropdown-menu.jsx +90 -0
  241. package/dist/components/other/form.jsx +89 -0
  242. package/dist/components/other/hover-card.jsx +23 -0
  243. package/dist/components/other/input-otp.jsx +46 -0
  244. package/dist/components/other/input.jsx +19 -0
  245. package/dist/components/other/label.jsx +23 -0
  246. package/dist/components/other/login-popup.jsx +1 -0
  247. package/dist/components/other/menubar.jsx +96 -0
  248. package/dist/components/other/mobile-icon.jsx +11 -0
  249. package/dist/components/other/navigation-menu.jsx +62 -0
  250. package/dist/components/other/pagination.jsx +63 -0
  251. package/dist/components/other/popover.jsx +25 -0
  252. package/dist/components/other/progress.jsx +23 -0
  253. package/dist/components/other/radio-group.jsx +31 -0
  254. package/dist/components/other/resizable.jsx +29 -0
  255. package/dist/components/other/scroll-area.jsx +36 -0
  256. package/dist/components/other/select.jsx +83 -0
  257. package/dist/components/other/separator.jsx +21 -0
  258. package/dist/components/other/sheet.jsx +74 -0
  259. package/dist/components/other/signup-popup.jsx +1 -0
  260. package/dist/components/other/skeleton.jsx +17 -0
  261. package/dist/components/other/slider.jsx +26 -0
  262. package/dist/components/other/social-icons.jsx +15 -0
  263. package/dist/components/other/sonner.jsx +27 -0
  264. package/dist/components/other/switch.jsx +23 -0
  265. package/dist/components/other/table.jsx +56 -0
  266. package/dist/components/other/tabs.jsx +32 -0
  267. package/dist/components/other/textarea.jsx +19 -0
  268. package/dist/components/other/toast.jsx +58 -0
  269. package/dist/components/other/toaster.jsx +31 -0
  270. package/dist/components/other/toggle-group.jsx +41 -0
  271. package/dist/components/other/toggle.jsx +39 -0
  272. package/dist/components/other/tooltip.jsx +24 -0
  273. package/dist/components/theme-provider.jsx +18 -0
  274. package/dist/components/types.js +1 -0
  275. package/dist/hooks/use-toast.js +135 -0
  276. package/dist/lib/auth-context.jsx +144 -0
  277. package/dist/lib/constants/about.js +32 -0
  278. package/dist/lib/constants/adRequest.js +113 -0
  279. package/dist/lib/constants/contact.js +40 -0
  280. package/dist/lib/constants/faq.js +36 -0
  281. package/dist/lib/constants/gallery.js +42 -0
  282. package/dist/lib/constants/page.js +69 -0
  283. package/dist/lib/constants/schedule.js +71 -0
  284. package/dist/lib/google-analytics.jsx +148 -0
  285. package/dist/lib/utils.js +9 -0
  286. package/dist/lib/verify-user.js +142 -0
  287. package/dist/middleware.js +37 -0
  288. package/dist/tailwind.config.js +86 -0
  289. package/dist/tsconfig.tsbuildinfo +1 -0
  290. package/hooks/use-toast.ts +188 -188
  291. package/lib/auth-context.tsx +130 -130
  292. package/lib/constants/about.ts +34 -34
  293. package/lib/constants/adRequest.ts +113 -113
  294. package/lib/constants/contact.ts +40 -40
  295. package/lib/constants/faq.ts +34 -21
  296. package/lib/constants/gallery.ts +42 -42
  297. package/lib/constants/page.ts +69 -69
  298. package/lib/constants/schedule.ts +71 -71
  299. package/lib/google-analytics.tsx +97 -97
  300. package/lib/verify-user.ts +117 -117
  301. package/middleware.ts +42 -42
  302. package/netlify.toml +5 -5
  303. package/next.config.js +10 -10
  304. package/package.json +115 -115
  305. package/tailwind.config.ts +89 -89
  306. package/tsconfig.json +23 -23
@@ -1,117 +1,117 @@
1
- import * as React from 'react';
2
-
3
- import { cn } from '@/lib/utils';
4
-
5
- const Table = React.forwardRef<
6
- HTMLTableElement,
7
- React.HTMLAttributes<HTMLTableElement>
8
- >(({ className, ...props }, ref) => (
9
- <div className="relative w-full overflow-auto">
10
- <table
11
- ref={ref}
12
- className={cn('w-full caption-bottom text-sm', className)}
13
- {...props}
14
- />
15
- </div>
16
- ));
17
- Table.displayName = 'Table';
18
-
19
- const TableHeader = React.forwardRef<
20
- HTMLTableSectionElement,
21
- React.HTMLAttributes<HTMLTableSectionElement>
22
- >(({ className, ...props }, ref) => (
23
- <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />
24
- ));
25
- TableHeader.displayName = 'TableHeader';
26
-
27
- const TableBody = React.forwardRef<
28
- HTMLTableSectionElement,
29
- React.HTMLAttributes<HTMLTableSectionElement>
30
- >(({ className, ...props }, ref) => (
31
- <tbody
32
- ref={ref}
33
- className={cn('[&_tr:last-child]:border-0', className)}
34
- {...props}
35
- />
36
- ));
37
- TableBody.displayName = 'TableBody';
38
-
39
- const TableFooter = React.forwardRef<
40
- HTMLTableSectionElement,
41
- React.HTMLAttributes<HTMLTableSectionElement>
42
- >(({ className, ...props }, ref) => (
43
- <tfoot
44
- ref={ref}
45
- className={cn(
46
- 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',
47
- className
48
- )}
49
- {...props}
50
- />
51
- ));
52
- TableFooter.displayName = 'TableFooter';
53
-
54
- const TableRow = React.forwardRef<
55
- HTMLTableRowElement,
56
- React.HTMLAttributes<HTMLTableRowElement>
57
- >(({ className, ...props }, ref) => (
58
- <tr
59
- ref={ref}
60
- className={cn(
61
- 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',
62
- className
63
- )}
64
- {...props}
65
- />
66
- ));
67
- TableRow.displayName = 'TableRow';
68
-
69
- const TableHead = React.forwardRef<
70
- HTMLTableCellElement,
71
- React.ThHTMLAttributes<HTMLTableCellElement>
72
- >(({ className, ...props }, ref) => (
73
- <th
74
- ref={ref}
75
- className={cn(
76
- 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',
77
- className
78
- )}
79
- {...props}
80
- />
81
- ));
82
- TableHead.displayName = 'TableHead';
83
-
84
- const TableCell = React.forwardRef<
85
- HTMLTableCellElement,
86
- React.TdHTMLAttributes<HTMLTableCellElement>
87
- >(({ className, ...props }, ref) => (
88
- <td
89
- ref={ref}
90
- className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}
91
- {...props}
92
- />
93
- ));
94
- TableCell.displayName = 'TableCell';
95
-
96
- const TableCaption = React.forwardRef<
97
- HTMLTableCaptionElement,
98
- React.HTMLAttributes<HTMLTableCaptionElement>
99
- >(({ className, ...props }, ref) => (
100
- <caption
101
- ref={ref}
102
- className={cn('mt-4 text-sm text-muted-foreground', className)}
103
- {...props}
104
- />
105
- ));
106
- TableCaption.displayName = 'TableCaption';
107
-
108
- export {
109
- Table,
110
- TableHeader,
111
- TableBody,
112
- TableFooter,
113
- TableHead,
114
- TableRow,
115
- TableCell,
116
- TableCaption,
117
- };
1
+ import * as React from 'react';
2
+
3
+ import { cn } from '@/lib/utils';
4
+
5
+ const Table = React.forwardRef<
6
+ HTMLTableElement,
7
+ React.HTMLAttributes<HTMLTableElement>
8
+ >(({ className, ...props }, ref) => (
9
+ <div className="relative w-full overflow-auto">
10
+ <table
11
+ ref={ref}
12
+ className={cn('w-full caption-bottom text-sm', className)}
13
+ {...props}
14
+ />
15
+ </div>
16
+ ));
17
+ Table.displayName = 'Table';
18
+
19
+ const TableHeader = React.forwardRef<
20
+ HTMLTableSectionElement,
21
+ React.HTMLAttributes<HTMLTableSectionElement>
22
+ >(({ className, ...props }, ref) => (
23
+ <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />
24
+ ));
25
+ TableHeader.displayName = 'TableHeader';
26
+
27
+ const TableBody = React.forwardRef<
28
+ HTMLTableSectionElement,
29
+ React.HTMLAttributes<HTMLTableSectionElement>
30
+ >(({ className, ...props }, ref) => (
31
+ <tbody
32
+ ref={ref}
33
+ className={cn('[&_tr:last-child]:border-0', className)}
34
+ {...props}
35
+ />
36
+ ));
37
+ TableBody.displayName = 'TableBody';
38
+
39
+ const TableFooter = React.forwardRef<
40
+ HTMLTableSectionElement,
41
+ React.HTMLAttributes<HTMLTableSectionElement>
42
+ >(({ className, ...props }, ref) => (
43
+ <tfoot
44
+ ref={ref}
45
+ className={cn(
46
+ 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',
47
+ className
48
+ )}
49
+ {...props}
50
+ />
51
+ ));
52
+ TableFooter.displayName = 'TableFooter';
53
+
54
+ const TableRow = React.forwardRef<
55
+ HTMLTableRowElement,
56
+ React.HTMLAttributes<HTMLTableRowElement>
57
+ >(({ className, ...props }, ref) => (
58
+ <tr
59
+ ref={ref}
60
+ className={cn(
61
+ 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',
62
+ className
63
+ )}
64
+ {...props}
65
+ />
66
+ ));
67
+ TableRow.displayName = 'TableRow';
68
+
69
+ const TableHead = React.forwardRef<
70
+ HTMLTableCellElement,
71
+ React.ThHTMLAttributes<HTMLTableCellElement>
72
+ >(({ className, ...props }, ref) => (
73
+ <th
74
+ ref={ref}
75
+ className={cn(
76
+ 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',
77
+ className
78
+ )}
79
+ {...props}
80
+ />
81
+ ));
82
+ TableHead.displayName = 'TableHead';
83
+
84
+ const TableCell = React.forwardRef<
85
+ HTMLTableCellElement,
86
+ React.TdHTMLAttributes<HTMLTableCellElement>
87
+ >(({ className, ...props }, ref) => (
88
+ <td
89
+ ref={ref}
90
+ className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}
91
+ {...props}
92
+ />
93
+ ));
94
+ TableCell.displayName = 'TableCell';
95
+
96
+ const TableCaption = React.forwardRef<
97
+ HTMLTableCaptionElement,
98
+ React.HTMLAttributes<HTMLTableCaptionElement>
99
+ >(({ className, ...props }, ref) => (
100
+ <caption
101
+ ref={ref}
102
+ className={cn('mt-4 text-sm text-muted-foreground', className)}
103
+ {...props}
104
+ />
105
+ ));
106
+ TableCaption.displayName = 'TableCaption';
107
+
108
+ export {
109
+ Table,
110
+ TableHeader,
111
+ TableBody,
112
+ TableFooter,
113
+ TableHead,
114
+ TableRow,
115
+ TableCell,
116
+ TableCaption,
117
+ };
@@ -1,55 +1,55 @@
1
- 'use client';
2
-
3
- import * as React from 'react';
4
- import * as TabsPrimitive from '@radix-ui/react-tabs';
5
-
6
- import { cn } from '@/lib/utils';
7
-
8
- const Tabs = TabsPrimitive.Root;
9
-
10
- const TabsList = React.forwardRef<
11
- React.ElementRef<typeof TabsPrimitive.List>,
12
- React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>
13
- >(({ className, ...props }, ref) => (
14
- <TabsPrimitive.List
15
- ref={ref}
16
- className={cn(
17
- 'inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground',
18
- className
19
- )}
20
- {...props}
21
- />
22
- ));
23
- TabsList.displayName = TabsPrimitive.List.displayName;
24
-
25
- const TabsTrigger = React.forwardRef<
26
- React.ElementRef<typeof TabsPrimitive.Trigger>,
27
- React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>
28
- >(({ className, ...props }, ref) => (
29
- <TabsPrimitive.Trigger
30
- ref={ref}
31
- className={cn(
32
- 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',
33
- className
34
- )}
35
- {...props}
36
- />
37
- ));
38
- TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
39
-
40
- const TabsContent = React.forwardRef<
41
- React.ElementRef<typeof TabsPrimitive.Content>,
42
- React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>
43
- >(({ className, ...props }, ref) => (
44
- <TabsPrimitive.Content
45
- ref={ref}
46
- className={cn(
47
- 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
48
- className
49
- )}
50
- {...props}
51
- />
52
- ));
53
- TabsContent.displayName = TabsPrimitive.Content.displayName;
54
-
55
- export { Tabs, TabsList, TabsTrigger, TabsContent };
1
+ 'use client';
2
+
3
+ import * as React from 'react';
4
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
5
+
6
+ import { cn } from '@/lib/utils';
7
+
8
+ const Tabs = TabsPrimitive.Root;
9
+
10
+ const TabsList = React.forwardRef<
11
+ React.ElementRef<typeof TabsPrimitive.List>,
12
+ React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>
13
+ >(({ className, ...props }, ref) => (
14
+ <TabsPrimitive.List
15
+ ref={ref}
16
+ className={cn(
17
+ 'inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground',
18
+ className
19
+ )}
20
+ {...props}
21
+ />
22
+ ));
23
+ TabsList.displayName = TabsPrimitive.List.displayName;
24
+
25
+ const TabsTrigger = React.forwardRef<
26
+ React.ElementRef<typeof TabsPrimitive.Trigger>,
27
+ React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>
28
+ >(({ className, ...props }, ref) => (
29
+ <TabsPrimitive.Trigger
30
+ ref={ref}
31
+ className={cn(
32
+ 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',
33
+ className
34
+ )}
35
+ {...props}
36
+ />
37
+ ));
38
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
39
+
40
+ const TabsContent = React.forwardRef<
41
+ React.ElementRef<typeof TabsPrimitive.Content>,
42
+ React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>
43
+ >(({ className, ...props }, ref) => (
44
+ <TabsPrimitive.Content
45
+ ref={ref}
46
+ className={cn(
47
+ 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
48
+ className
49
+ )}
50
+ {...props}
51
+ />
52
+ ));
53
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
54
+
55
+ export { Tabs, TabsList, TabsTrigger, TabsContent };
@@ -1,24 +1,24 @@
1
- import * as React from 'react';
2
-
3
- import { cn } from '@/lib/utils';
4
-
5
- export interface TextareaProps
6
- extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
7
-
8
- const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
9
- ({ className, ...props }, ref) => {
10
- return (
11
- <textarea
12
- className={cn(
13
- 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
14
- className
15
- )}
16
- ref={ref}
17
- {...props}
18
- />
19
- );
20
- }
21
- );
22
- Textarea.displayName = 'Textarea';
23
-
24
- export { Textarea };
1
+ import * as React from 'react';
2
+
3
+ import { cn } from '@/lib/utils';
4
+
5
+ export interface TextareaProps
6
+ extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}
7
+
8
+ const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
9
+ ({ className, ...props }, ref) => {
10
+ return (
11
+ <textarea
12
+ className={cn(
13
+ 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
14
+ className
15
+ )}
16
+ ref={ref}
17
+ {...props}
18
+ />
19
+ );
20
+ }
21
+ );
22
+ Textarea.displayName = 'Textarea';
23
+
24
+ export { Textarea };
@@ -1,123 +1,123 @@
1
- import * as React from 'react';
2
- import * as ToastPrimitives from '@radix-ui/react-toast';
3
- import { cva, type VariantProps } from 'class-variance-authority';
4
- import { X } from 'lucide-react';
5
-
6
- import { cn } from '@/lib/utils';
7
-
8
- const ToastProvider = ToastPrimitives.Provider;
9
-
10
- const ToastViewport = React.forwardRef<
11
- React.ElementRef<typeof ToastPrimitives.Viewport>,
12
- React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>
13
- >(({ className, ...props }, ref) => (
14
- <ToastPrimitives.Viewport
15
- ref={ref}
16
- className={cn(
17
- 'fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]',
18
- className
19
- )}
20
- {...props}
21
- />
22
- ));
23
- ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
24
-
25
- const toastVariants = cva(
26
- 'group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full backdrop-blur-sm',
27
- {
28
- variants: {
29
- variant: {
30
- destructive: 'border bg-[rgba(0,0,0,0.7)] text-red-400', // 0.7 is the background opacity
31
- success: 'border bg-[rgba(0,0,0,0.7)] text-green-400',
32
- },
33
- },
34
- }
35
- );
36
-
37
- const Toast = React.forwardRef<
38
- React.ElementRef<typeof ToastPrimitives.Root>,
39
- React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &
40
- VariantProps<typeof toastVariants>
41
- >(({ className, variant, ...props }, ref) => {
42
- return (
43
- <ToastPrimitives.Root
44
- ref={ref}
45
- className={cn(toastVariants({ variant }), className)}
46
- {...props}
47
- />
48
- );
49
- });
50
- Toast.displayName = ToastPrimitives.Root.displayName;
51
-
52
- const ToastAction = React.forwardRef<
53
- React.ElementRef<typeof ToastPrimitives.Action>,
54
- React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>
55
- >(({ className, ...props }, ref) => (
56
- <ToastPrimitives.Action
57
- ref={ref}
58
- className={cn(
59
- 'inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive group-[.success]:border-green-500/40 group-[.success]:hover:border-green-500/30 group-[.success]:hover:bg-green-500 group-[.success]:hover:text-green-50 group-[.success]:focus:ring-green-500',
60
- className
61
- )}
62
- {...props}
63
- />
64
- ));
65
- ToastAction.displayName = ToastPrimitives.Action.displayName;
66
-
67
- const ToastClose = React.forwardRef<
68
- React.ElementRef<typeof ToastPrimitives.Close>,
69
- React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>
70
- >(({ className, ...props }, ref) => (
71
- <ToastPrimitives.Close
72
- ref={ref}
73
- className={cn(
74
- 'absolute right-2 top-2 rounded-md p-1 text-blue-500 transition-opacity hover:text-blue-300 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-offset-2 group-[.destructive]:text-blue-500 group-[.destructive]:hover:text-blue-300 group-[.destructive]:focus:ring-blue-400 group-[.destructive]:focus:ring-offset-blue-600 group-[.success]:text-blue-500 group-[.success]:hover:text-blue-300 group-[.success]:focus:ring-blue-400 group-[.success]:focus:ring-offset-blue-600',
75
- className
76
- )}
77
- toast-close=""
78
- {...props}
79
- >
80
- <X className="h-6 w-6" />
81
- </ToastPrimitives.Close>
82
- ));
83
- ToastClose.displayName = ToastPrimitives.Close.displayName;
84
-
85
- const ToastTitle = React.forwardRef<
86
- React.ElementRef<typeof ToastPrimitives.Title>,
87
- React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>
88
- >(({ className, ...props }, ref) => (
89
- <ToastPrimitives.Title
90
- ref={ref}
91
- className={cn('text-sm font-semibold group-[.destructive]:text-red-400 group-[.success]:text-green-400', className)}
92
- {...props}
93
- />
94
- ));
95
- ToastTitle.displayName = ToastPrimitives.Title.displayName;
96
-
97
- const ToastDescription = React.forwardRef<
98
- React.ElementRef<typeof ToastPrimitives.Description>,
99
- React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>
100
- >(({ className, ...props }, ref) => (
101
- <ToastPrimitives.Description
102
- ref={ref}
103
- className={cn('text-sm opacity-90 group-[.destructive]:text-red-400 group-[.success]:text-green-400', className)}
104
- {...props}
105
- />
106
- ));
107
- ToastDescription.displayName = ToastPrimitives.Description.displayName;
108
-
109
- type ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;
110
-
111
- type ToastActionElement = React.ReactElement<typeof ToastAction>;
112
-
113
- export {
114
- type ToastProps,
115
- type ToastActionElement,
116
- ToastProvider,
117
- ToastViewport,
118
- Toast,
119
- ToastTitle,
120
- ToastDescription,
121
- ToastClose,
122
- ToastAction,
1
+ import * as React from 'react';
2
+ import * as ToastPrimitives from '@radix-ui/react-toast';
3
+ import { cva, type VariantProps } from 'class-variance-authority';
4
+ import { X } from 'lucide-react';
5
+
6
+ import { cn } from '@/lib/utils';
7
+
8
+ const ToastProvider = ToastPrimitives.Provider;
9
+
10
+ const ToastViewport = React.forwardRef<
11
+ React.ElementRef<typeof ToastPrimitives.Viewport>,
12
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>
13
+ >(({ className, ...props }, ref) => (
14
+ <ToastPrimitives.Viewport
15
+ ref={ref}
16
+ className={cn(
17
+ 'fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]',
18
+ className
19
+ )}
20
+ {...props}
21
+ />
22
+ ));
23
+ ToastViewport.displayName = ToastPrimitives.Viewport.displayName;
24
+
25
+ const toastVariants = cva(
26
+ 'group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full backdrop-blur-sm',
27
+ {
28
+ variants: {
29
+ variant: {
30
+ destructive: 'border bg-[rgba(0,0,0,0.7)] text-red-400', // 0.7 is the background opacity
31
+ success: 'border bg-[rgba(0,0,0,0.7)] text-green-400',
32
+ },
33
+ },
34
+ }
35
+ );
36
+
37
+ const Toast = React.forwardRef<
38
+ React.ElementRef<typeof ToastPrimitives.Root>,
39
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Root> &
40
+ VariantProps<typeof toastVariants>
41
+ >(({ className, variant, ...props }, ref) => {
42
+ return (
43
+ <ToastPrimitives.Root
44
+ ref={ref}
45
+ className={cn(toastVariants({ variant }), className)}
46
+ {...props}
47
+ />
48
+ );
49
+ });
50
+ Toast.displayName = ToastPrimitives.Root.displayName;
51
+
52
+ const ToastAction = React.forwardRef<
53
+ React.ElementRef<typeof ToastPrimitives.Action>,
54
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Action>
55
+ >(({ className, ...props }, ref) => (
56
+ <ToastPrimitives.Action
57
+ ref={ref}
58
+ className={cn(
59
+ 'inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors hover:bg-secondary focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive group-[.success]:border-green-500/40 group-[.success]:hover:border-green-500/30 group-[.success]:hover:bg-green-500 group-[.success]:hover:text-green-50 group-[.success]:focus:ring-green-500',
60
+ className
61
+ )}
62
+ {...props}
63
+ />
64
+ ));
65
+ ToastAction.displayName = ToastPrimitives.Action.displayName;
66
+
67
+ const ToastClose = React.forwardRef<
68
+ React.ElementRef<typeof ToastPrimitives.Close>,
69
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Close>
70
+ >(({ className, ...props }, ref) => (
71
+ <ToastPrimitives.Close
72
+ ref={ref}
73
+ className={cn(
74
+ 'absolute right-2 top-2 rounded-md p-1 text-blue-500 transition-opacity hover:text-blue-300 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-offset-2 group-[.destructive]:text-blue-500 group-[.destructive]:hover:text-blue-300 group-[.destructive]:focus:ring-blue-400 group-[.destructive]:focus:ring-offset-blue-600 group-[.success]:text-blue-500 group-[.success]:hover:text-blue-300 group-[.success]:focus:ring-blue-400 group-[.success]:focus:ring-offset-blue-600',
75
+ className
76
+ )}
77
+ toast-close=""
78
+ {...props}
79
+ >
80
+ <X className="h-6 w-6" />
81
+ </ToastPrimitives.Close>
82
+ ));
83
+ ToastClose.displayName = ToastPrimitives.Close.displayName;
84
+
85
+ const ToastTitle = React.forwardRef<
86
+ React.ElementRef<typeof ToastPrimitives.Title>,
87
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Title>
88
+ >(({ className, ...props }, ref) => (
89
+ <ToastPrimitives.Title
90
+ ref={ref}
91
+ className={cn('text-sm font-semibold group-[.destructive]:text-red-400 group-[.success]:text-green-400', className)}
92
+ {...props}
93
+ />
94
+ ));
95
+ ToastTitle.displayName = ToastPrimitives.Title.displayName;
96
+
97
+ const ToastDescription = React.forwardRef<
98
+ React.ElementRef<typeof ToastPrimitives.Description>,
99
+ React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>
100
+ >(({ className, ...props }, ref) => (
101
+ <ToastPrimitives.Description
102
+ ref={ref}
103
+ className={cn('text-sm opacity-90 group-[.destructive]:text-red-400 group-[.success]:text-green-400', className)}
104
+ {...props}
105
+ />
106
+ ));
107
+ ToastDescription.displayName = ToastPrimitives.Description.displayName;
108
+
109
+ type ToastProps = React.ComponentPropsWithoutRef<typeof Toast>;
110
+
111
+ type ToastActionElement = React.ReactElement<typeof ToastAction>;
112
+
113
+ export {
114
+ type ToastProps,
115
+ type ToastActionElement,
116
+ ToastProvider,
117
+ ToastViewport,
118
+ Toast,
119
+ ToastTitle,
120
+ ToastDescription,
121
+ ToastClose,
122
+ ToastAction,
123
123
  };