@devvistatech/devvista-kit 0.0.10 → 0.0.13

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 (337) hide show
  1. package/CHANGELOG.md +12 -12
  2. package/LICENSE +6 -6
  3. package/README.md +55 -15
  4. package/app/ClientLayout.tsx +66 -0
  5. package/app/about/page.tsx +61 -298
  6. package/app/adRequest/page.tsx +625 -549
  7. package/app/admin-profile/page.tsx +123 -0
  8. package/app/analytics/page.tsx +382 -346
  9. package/app/api/about/route.ts +290 -306
  10. package/app/api/adRequest/route.ts +547 -567
  11. package/app/api/analytics/[reportType]/route.ts +274 -337
  12. package/app/api/bio/route.ts +297 -313
  13. package/app/api/blog/route.ts +288 -306
  14. package/app/api/chat/route.ts +14 -14
  15. package/app/api/contact/route.ts +409 -409
  16. package/app/api/contacts/route.ts +179 -224
  17. package/app/api/files/route.ts +415 -429
  18. package/app/api/gallery-data/route.ts +727 -735
  19. package/app/api/schedule/route.ts +439 -455
  20. package/app/api/signup/route.ts +129 -0
  21. package/app/api/sync-user/route.ts +306 -132
  22. package/app/api/trial-request/route.ts +297 -297
  23. package/app/api/verify-admin/route.ts +46 -0
  24. package/app/blog/[id]/page.tsx +307 -288
  25. package/app/blog/page.tsx +249 -216
  26. package/app/contact/page.tsx +284 -284
  27. package/app/faq/page.tsx +191 -191
  28. package/app/favicon.ico +0 -0
  29. package/app/gallery/page.tsx +336 -315
  30. package/app/globals.css +58 -58
  31. package/app/layout.tsx +59 -110
  32. package/app/not-found.tsx +20 -20
  33. package/app/page.tsx +47 -338
  34. package/app/products/constants/product.ts +27 -0
  35. package/app/products/page.tsx +296 -0
  36. package/app/products/productOne/page.tsx +266 -0
  37. package/app/products/productTwo/page.tsx +272 -0
  38. package/app/schedule/page.tsx +698 -660
  39. package/bin/init.js +207 -219
  40. package/components/addOns/functional/CalendlyWidget.tsx +107 -107
  41. package/components/addOns/functional/ClassList.tsx +149 -145
  42. package/components/addOns/functional/ClassPopup.tsx +398 -398
  43. package/components/addOns/functional/ContactForm.tsx +284 -284
  44. package/components/addOns/functional/NewUserAnalytics.tsx +100 -100
  45. package/components/addOns/functional/ProductList.tsx +1027 -0
  46. package/components/addOns/functional/aboutSections/AboutSection.tsx +581 -544
  47. package/components/addOns/functional/aboutSections/constants/aboutSection.ts +70 -65
  48. package/components/addOns/functional/banner/Banner.tsx +150 -0
  49. package/components/addOns/functional/banner/BannerDashboard.tsx +283 -0
  50. package/components/addOns/functional/bioSections/BioEditor.tsx +471 -0
  51. package/components/addOns/functional/bioSections/constants/bioEditor.ts +36 -0
  52. package/components/addOns/functional/blogSections/BlogDashboard.tsx +184 -184
  53. package/components/addOns/functional/blogSections/BlogFormPopUp.tsx +555 -554
  54. package/components/addOns/functional/blogSections/BlogList.tsx +148 -148
  55. package/components/addOns/functional/blogSections/BlogSidebar.tsx +58 -58
  56. package/components/addOns/functional/blogSections/constants/blogDashboard.ts +28 -28
  57. package/components/addOns/functional/blogSections/constants/blogFormPopUp.ts +97 -97
  58. package/components/addOns/functional/blogSections/constants/blogList.ts +22 -22
  59. package/components/addOns/functional/blogSections/constants/blogSidebar.ts +15 -15
  60. package/components/addOns/functional/{ImageDescCarousel.tsx → carousels/ImageDescCarousel.tsx} +839 -730
  61. package/components/addOns/functional/carousels/ProductDescCarousel.tsx +1129 -0
  62. package/components/addOns/functional/{ScheduleCarousel.tsx → carousels/ScheduleCarousel.tsx} +231 -171
  63. package/components/addOns/functional/carousels/constants.ts/productDescCarousel.ts +197 -0
  64. package/components/addOns/functional/carousels/constants.ts/scheduleCarousel.ts +20 -0
  65. package/components/addOns/functional/contactsDashboard/ContactsDashboard.tsx +366 -366
  66. package/components/addOns/functional/contactsDashboard/constants/contactsDashboard.ts +70 -70
  67. package/components/addOns/functional/fileUploaders/FileUploader.tsx +437 -0
  68. package/components/addOns/functional/fileUploaders/constants/fileUploader.ts +45 -0
  69. package/components/addOns/functional/galleries/GalleryComplex.tsx +1037 -836
  70. package/components/addOns/functional/galleries/GallerySimple.tsx +537 -509
  71. package/components/addOns/functional/galleries/ThreeSetGallery.tsx +260 -0
  72. package/components/addOns/functional/galleries/constants/galleryComplex.ts +106 -106
  73. package/components/addOns/functional/galleries/constants/gallerySimple.ts +76 -76
  74. package/components/addOns/functional/schedules/ScheduleGridOne.tsx +276 -262
  75. package/components/addOns/functional/schedules/ScheduleGridTwo.tsx +299 -294
  76. package/components/addOns/functional/schedules/ScheduleGridTwoBasic.tsx +293 -288
  77. package/components/addOns/functional/schedules/SchedulerForm.tsx +428 -428
  78. package/components/addOns/functional/schedules/constants/ScheduleGridTwo.ts +40 -40
  79. package/components/addOns/functional/schedules/constants/ScheduleGridTwoBasic.ts +40 -40
  80. package/components/addOns/functional/schedules/constants/SchedulerForm.ts +65 -65
  81. package/components/addOns/functional/schedules/constants/scheduleGridOne.ts +54 -54
  82. package/components/addOns/non-functional/AnnouncementBanner.tsx +46 -46
  83. package/components/addOns/non-functional/IconBubble.tsx +49 -49
  84. package/components/addOns/non-functional/SampleCarousel.tsx +204 -204
  85. package/components/addOns/non-functional/Testimonials.tsx +334 -334
  86. package/components/addOns/non-functional/ThreeSetGallery.tsx +63 -63
  87. package/components/addOns/non-functional/aboutSections/AboutSection.tsx +62 -62
  88. package/components/addOns/non-functional/aboutSections/constants/aboutSection.ts +24 -24
  89. package/components/addOns/non-functional/featureSections/FeaturesSection.tsx +74 -0
  90. package/components/addOns/non-functional/featureSections/constants/featuresSection.ts +30 -0
  91. package/components/addOns/non-functional/{Heros/HeroSection.tsx → heros/HomeHero.tsx} +144 -142
  92. package/components/addOns/non-functional/heros/ProductHero.tsx +111 -0
  93. package/components/addOns/non-functional/heros/constants/hero.ts +62 -0
  94. package/components/addOns/non-functional/imageCarousels/ProductSlider.tsx +117 -117
  95. package/components/addOns/non-functional/imageCarousels/ProgramCarousel.tsx +232 -232
  96. package/components/addOns/non-functional/imageCarousels/constants/programCarousel.ts +39 -39
  97. package/components/addOns/non-functional/imageCarousels/constants/programSlider.ts +36 -36
  98. package/components/addOns/non-functional/spinner.tsx +21 -21
  99. package/components/footers/footer.tsx +416 -453
  100. package/components/navBars/navbar.tsx +310 -310
  101. package/components/other/accordion.tsx +58 -58
  102. package/components/other/admin-menu.tsx +68 -68
  103. package/components/other/alert-dialog.tsx +141 -141
  104. package/components/other/alert.tsx +59 -59
  105. package/components/other/aspect-ratio.tsx +7 -7
  106. package/components/other/avatar.tsx +50 -50
  107. package/components/other/badge.tsx +36 -36
  108. package/components/other/breadcrumb.tsx +115 -115
  109. package/components/other/button.tsx +738 -738
  110. package/components/other/calendar.tsx +66 -66
  111. package/components/other/card.tsx +86 -86
  112. package/components/other/carousel.tsx +274 -274
  113. package/components/other/chart.tsx +363 -363
  114. package/components/other/checkbox.tsx +30 -30
  115. package/components/other/collapsible.tsx +11 -11
  116. package/components/other/command.tsx +155 -155
  117. package/components/other/context-menu.tsx +200 -200
  118. package/components/other/dialog.tsx +122 -122
  119. package/components/other/drawer.tsx +118 -118
  120. package/components/other/dropdown-menu.tsx +200 -200
  121. package/components/other/form.tsx +179 -179
  122. package/components/other/hover-card.tsx +29 -29
  123. package/components/other/input-otp.tsx +71 -71
  124. package/components/other/input.tsx +25 -25
  125. package/components/other/label.tsx +26 -26
  126. package/components/other/menubar.tsx +236 -236
  127. package/components/other/mobile-icon.tsx +21 -21
  128. package/components/other/navigation-menu.tsx +128 -128
  129. package/components/other/pagination.tsx +117 -117
  130. package/components/other/popover.tsx +31 -31
  131. package/components/other/progress.tsx +28 -28
  132. package/components/other/radio-group.tsx +44 -44
  133. package/components/other/resizable.tsx +45 -45
  134. package/components/other/scroll-area.tsx +48 -48
  135. package/components/other/select.tsx +160 -160
  136. package/components/other/separator.tsx +31 -31
  137. package/components/other/sheet.tsx +140 -140
  138. package/components/other/skeleton.tsx +15 -15
  139. package/components/other/slider.tsx +28 -28
  140. package/components/other/social-icons.tsx +39 -39
  141. package/components/other/sonner.tsx +31 -31
  142. package/components/other/switch.tsx +29 -29
  143. package/components/other/table.tsx +117 -117
  144. package/components/other/tabs.tsx +55 -55
  145. package/components/other/textarea.tsx +24 -24
  146. package/components/other/toast.tsx +122 -122
  147. package/components/other/toaster.tsx +35 -35
  148. package/components/other/toggle-group.tsx +61 -61
  149. package/components/other/toggle.tsx +45 -45
  150. package/components/other/tooltip.tsx +30 -30
  151. package/components/theme-provider.tsx +8 -8
  152. package/hooks/use-toast.ts +188 -188
  153. package/lib/auth/auth-context.tsx +225 -0
  154. package/lib/auth/auth-utils.tsx +30 -0
  155. package/lib/constants/about.ts +34 -34
  156. package/lib/constants/adRequest.ts +256 -113
  157. package/lib/constants/admin-profile.ts +12 -0
  158. package/lib/constants/contact.ts +40 -40
  159. package/lib/constants/faq.ts +34 -34
  160. package/lib/constants/gallery.ts +42 -42
  161. package/lib/constants/page.ts +69 -69
  162. package/lib/constants/schedule.ts +71 -71
  163. package/lib/google/google-analytics-tracking.tsx +44 -0
  164. package/lib/{google-analytics.tsx → google/google-analytics.tsx} +97 -97
  165. package/lib/types.ts +235 -0
  166. package/lib/utils/compressImage.tsx +32 -0
  167. package/middleware.ts +46 -42
  168. package/netlify.toml +5 -5
  169. package/next.config.js +10 -10
  170. package/package.json +117 -116
  171. package/public/images/test.png +0 -0
  172. package/tailwind.config.ts +89 -89
  173. package/tsconfig.json +23 -23
  174. package/components/addOns/functional/BioEditor.tsx +0 -447
  175. package/components/addOns/functional/FileUploader.tsx +0 -295
  176. package/components/addOns/non-functional/FeaturesSection.tsx +0 -63
  177. package/components/types.ts +0 -50
  178. package/dist/.next/types/app/api/about/route.js +0 -52
  179. package/dist/.next/types/app/api/blog/route.js +0 -52
  180. package/dist/.next/types/app/api/files/route.js +0 -52
  181. package/dist/.next/types/app/api/schedule/route.js +0 -52
  182. package/dist/.next/types/app/api/sync-user/route.js +0 -52
  183. package/dist/.next/types/app/layout.js +0 -22
  184. package/dist/.next/types/app/page.js +0 -22
  185. package/dist/app/about/page.jsx +0 -258
  186. package/dist/app/adRequest/page.jsx +0 -531
  187. package/dist/app/analytics/page.jsx +0 -298
  188. package/dist/app/api/about/route.js +0 -285
  189. package/dist/app/api/adRequest/route.js +0 -440
  190. package/dist/app/api/analytics/[reportType]/route.js +0 -357
  191. package/dist/app/api/bio/route.js +0 -293
  192. package/dist/app/api/blog/route.js +0 -366
  193. package/dist/app/api/chat/route.js +0 -58
  194. package/dist/app/api/contact/route.js +0 -163
  195. package/dist/app/api/contacts/route.js +0 -234
  196. package/dist/app/api/files/route.js +0 -444
  197. package/dist/app/api/gallery-data/route.js +0 -719
  198. package/dist/app/api/schedule/route.js +0 -461
  199. package/dist/app/api/sync-user/route.js +0 -186
  200. package/dist/app/api/trial-request/route.js +0 -165
  201. package/dist/app/blog/[id]/page.jsx +0 -312
  202. package/dist/app/blog/page.jsx +0 -210
  203. package/dist/app/constants/about.js +0 -32
  204. package/dist/app/constants/adRequest.js +0 -113
  205. package/dist/app/constants/contact.js +0 -40
  206. package/dist/app/constants/faq.js +0 -36
  207. package/dist/app/constants/gallery.js +0 -42
  208. package/dist/app/constants/page.js +0 -69
  209. package/dist/app/constants/schedule.js +0 -71
  210. package/dist/app/contact/page.jsx +0 -119
  211. package/dist/app/faq/page.jsx +0 -97
  212. package/dist/app/gallery/page.jsx +0 -281
  213. package/dist/app/layout.jsx +0 -45
  214. package/dist/app/not-found.jsx +0 -14
  215. package/dist/app/page.jsx +0 -324
  216. package/dist/app/schedule/page.jsx +0 -500
  217. package/dist/components/addOns/functional/BioEditor.jsx +0 -187
  218. package/dist/components/addOns/functional/CalendlyWidget.jsx +0 -61
  219. package/dist/components/addOns/functional/ClassList.jsx +0 -158
  220. package/dist/components/addOns/functional/ClassPopup.jsx +0 -300
  221. package/dist/components/addOns/functional/ContactForm.jsx +0 -219
  222. package/dist/components/addOns/functional/FileUploader.jsx +0 -222
  223. package/dist/components/addOns/functional/ImageDescCarousel.jsx +0 -491
  224. package/dist/components/addOns/functional/NewUserAnalytics.jsx +0 -71
  225. package/dist/components/addOns/functional/ScheduleCarousel.jsx +0 -68
  226. package/dist/components/addOns/functional/aboutSections/AboutSection.jsx +0 -372
  227. package/dist/components/addOns/functional/aboutSections/constants/aboutSection.js +0 -65
  228. package/dist/components/addOns/functional/blogSections/BlogDashboard.jsx +0 -111
  229. package/dist/components/addOns/functional/blogSections/BlogFormPopUp.jsx +0 -465
  230. package/dist/components/addOns/functional/blogSections/BlogList.jsx +0 -170
  231. package/dist/components/addOns/functional/blogSections/BlogSidebar.jsx +0 -35
  232. package/dist/components/addOns/functional/blogSections/constants/blogDashboard.js +0 -28
  233. package/dist/components/addOns/functional/blogSections/constants/blogFormPopUp.js +0 -97
  234. package/dist/components/addOns/functional/blogSections/constants/blogList.js +0 -22
  235. package/dist/components/addOns/functional/blogSections/constants/blogSidebar.js +0 -15
  236. package/dist/components/addOns/functional/contactsDashboard/ContactsDashboard.jsx +0 -355
  237. package/dist/components/addOns/functional/contactsDashboard/constants/contactsDashboard.js +0 -70
  238. package/dist/components/addOns/functional/galleries/GalleryComplex.jsx +0 -605
  239. package/dist/components/addOns/functional/galleries/GallerySimple.jsx +0 -363
  240. package/dist/components/addOns/functional/galleries/constants/galleryComplex.js +0 -106
  241. package/dist/components/addOns/functional/galleries/constants/gallerySimple.js +0 -76
  242. package/dist/components/addOns/functional/schedules/ScheduleGridOne.jsx +0 -167
  243. package/dist/components/addOns/functional/schedules/ScheduleGridTwo.jsx +0 -100
  244. package/dist/components/addOns/functional/schedules/ScheduleGridTwoBasic.jsx +0 -97
  245. package/dist/components/addOns/functional/schedules/SchedulerForm.jsx +0 -188
  246. package/dist/components/addOns/functional/schedules/constants/ScheduleGridTwo.js +0 -40
  247. package/dist/components/addOns/functional/schedules/constants/ScheduleGridTwoBasic.js +0 -40
  248. package/dist/components/addOns/functional/schedules/constants/SchedulerForm.js +0 -65
  249. package/dist/components/addOns/functional/schedules/constants/scheduleGridOne.js +0 -54
  250. package/dist/components/addOns/non-functional/AnnouncementBanner.jsx +0 -24
  251. package/dist/components/addOns/non-functional/FeaturesSection.jsx +0 -38
  252. package/dist/components/addOns/non-functional/HeroSection.jsx +0 -71
  253. package/dist/components/addOns/non-functional/Heros/HeroSection.jsx +0 -71
  254. package/dist/components/addOns/non-functional/IconBubble.jsx +0 -36
  255. package/dist/components/addOns/non-functional/SampleCarousel.jsx +0 -114
  256. package/dist/components/addOns/non-functional/Testimonials.jsx +0 -177
  257. package/dist/components/addOns/non-functional/ThreeSetGallery.jsx +0 -40
  258. package/dist/components/addOns/non-functional/aboutSections/AboutSection.jsx +0 -35
  259. package/dist/components/addOns/non-functional/aboutSections/constants/aboutSection.js +0 -24
  260. package/dist/components/addOns/non-functional/imageCarousels/ProductSlider.jsx +0 -80
  261. package/dist/components/addOns/non-functional/imageCarousels/ProgramCarousel.jsx +0 -155
  262. package/dist/components/addOns/non-functional/imageCarousels/constants/programCarousel.js +0 -39
  263. package/dist/components/addOns/non-functional/imageCarousels/constants/programSlider.js +0 -36
  264. package/dist/components/addOns/non-functional/spinner.jsx +0 -13
  265. package/dist/components/footers/footer.jsx +0 -217
  266. package/dist/components/navBars/navbar.jsx +0 -159
  267. package/dist/components/other/accordion.jsx +0 -40
  268. package/dist/components/other/admin-menu.jsx +0 -34
  269. package/dist/components/other/alert-dialog.jsx +0 -64
  270. package/dist/components/other/alert.jsx +0 -41
  271. package/dist/components/other/aspect-ratio.jsx +0 -4
  272. package/dist/components/other/avatar.jsx +0 -31
  273. package/dist/components/other/badge.jsx +0 -32
  274. package/dist/components/other/breadcrumb.jsx +0 -57
  275. package/dist/components/other/button.jsx +0 -322
  276. package/dist/components/other/calendar.jsx +0 -43
  277. package/dist/components/other/card.jsx +0 -44
  278. package/dist/components/other/carousel.jsx +0 -140
  279. package/dist/components/other/chart.jsx +0 -182
  280. package/dist/components/other/checkbox.jsx +0 -26
  281. package/dist/components/other/collapsible.jsx +0 -6
  282. package/dist/components/other/command.jsx +0 -68
  283. package/dist/components/other/context-menu.jsx +0 -88
  284. package/dist/components/other/dialog.jsx +0 -60
  285. package/dist/components/other/drawer.jsx +0 -60
  286. package/dist/components/other/dropdown-menu.jsx +0 -90
  287. package/dist/components/other/form.jsx +0 -89
  288. package/dist/components/other/hover-card.jsx +0 -23
  289. package/dist/components/other/input-otp.jsx +0 -46
  290. package/dist/components/other/input.jsx +0 -19
  291. package/dist/components/other/label.jsx +0 -23
  292. package/dist/components/other/login-popup.jsx +0 -1
  293. package/dist/components/other/menubar.jsx +0 -96
  294. package/dist/components/other/mobile-icon.jsx +0 -11
  295. package/dist/components/other/navigation-menu.jsx +0 -62
  296. package/dist/components/other/pagination.jsx +0 -63
  297. package/dist/components/other/popover.jsx +0 -25
  298. package/dist/components/other/progress.jsx +0 -23
  299. package/dist/components/other/radio-group.jsx +0 -31
  300. package/dist/components/other/resizable.jsx +0 -29
  301. package/dist/components/other/scroll-area.jsx +0 -36
  302. package/dist/components/other/select.jsx +0 -83
  303. package/dist/components/other/separator.jsx +0 -21
  304. package/dist/components/other/sheet.jsx +0 -74
  305. package/dist/components/other/signup-popup.jsx +0 -1
  306. package/dist/components/other/skeleton.jsx +0 -17
  307. package/dist/components/other/slider.jsx +0 -26
  308. package/dist/components/other/social-icons.jsx +0 -15
  309. package/dist/components/other/sonner.jsx +0 -27
  310. package/dist/components/other/switch.jsx +0 -23
  311. package/dist/components/other/table.jsx +0 -56
  312. package/dist/components/other/tabs.jsx +0 -32
  313. package/dist/components/other/textarea.jsx +0 -19
  314. package/dist/components/other/toast.jsx +0 -58
  315. package/dist/components/other/toaster.jsx +0 -31
  316. package/dist/components/other/toggle-group.jsx +0 -41
  317. package/dist/components/other/toggle.jsx +0 -39
  318. package/dist/components/other/tooltip.jsx +0 -24
  319. package/dist/components/theme-provider.jsx +0 -18
  320. package/dist/components/types.js +0 -1
  321. package/dist/hooks/use-toast.js +0 -135
  322. package/dist/lib/auth-context.jsx +0 -144
  323. package/dist/lib/constants/about.js +0 -32
  324. package/dist/lib/constants/adRequest.js +0 -113
  325. package/dist/lib/constants/contact.js +0 -40
  326. package/dist/lib/constants/faq.js +0 -36
  327. package/dist/lib/constants/gallery.js +0 -42
  328. package/dist/lib/constants/page.js +0 -69
  329. package/dist/lib/constants/schedule.js +0 -71
  330. package/dist/lib/google-analytics.jsx +0 -148
  331. package/dist/lib/utils.js +0 -9
  332. package/dist/lib/verify-user.js +0 -142
  333. package/dist/middleware.js +0 -37
  334. package/dist/tailwind.config.js +0 -86
  335. package/dist/tsconfig.tsbuildinfo +0 -1
  336. package/lib/auth-context.tsx +0 -131
  337. package/lib/verify-user.ts +0 -118
@@ -1,135 +0,0 @@
1
- 'use client';
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __rest = (this && this.__rest) || function (s, e) {
14
- var t = {};
15
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
- t[p] = s[p];
17
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
- t[p[i]] = s[p[i]];
21
- }
22
- return t;
23
- };
24
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
25
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
26
- if (ar || !(i in from)) {
27
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
28
- ar[i] = from[i];
29
- }
30
- }
31
- return to.concat(ar || Array.prototype.slice.call(from));
32
- };
33
- import * as React from 'react';
34
- var TOAST_LIMIT = 1;
35
- var TOAST_REMOVE_DELAY = 1000000;
36
- var actionTypes = {
37
- ADD_TOAST: 'ADD_TOAST',
38
- UPDATE_TOAST: 'UPDATE_TOAST',
39
- DISMISS_TOAST: 'DISMISS_TOAST',
40
- REMOVE_TOAST: 'REMOVE_TOAST',
41
- };
42
- var count = 0;
43
- function genId() {
44
- count = (count + 1) % Number.MAX_SAFE_INTEGER;
45
- return count.toString();
46
- }
47
- var toastTimeouts = new Map();
48
- var addToRemoveQueue = function (toastId) {
49
- if (toastTimeouts.has(toastId)) {
50
- return;
51
- }
52
- var timeout = setTimeout(function () {
53
- toastTimeouts.delete(toastId);
54
- dispatch({
55
- type: 'REMOVE_TOAST',
56
- toastId: toastId,
57
- });
58
- }, TOAST_REMOVE_DELAY);
59
- toastTimeouts.set(toastId, timeout);
60
- };
61
- export var reducer = function (state, action) {
62
- switch (action.type) {
63
- case 'ADD_TOAST':
64
- return __assign(__assign({}, state), { toasts: __spreadArray([action.toast], state.toasts, true).slice(0, TOAST_LIMIT) });
65
- case 'UPDATE_TOAST':
66
- return __assign(__assign({}, state), { toasts: state.toasts.map(function (t) {
67
- return t.id === action.toast.id ? __assign(__assign({}, t), action.toast) : t;
68
- }) });
69
- case 'DISMISS_TOAST': {
70
- var toastId_1 = action.toastId;
71
- if (toastId_1) {
72
- addToRemoveQueue(toastId_1);
73
- }
74
- else {
75
- state.toasts.forEach(function (toast) {
76
- addToRemoveQueue(toast.id);
77
- });
78
- }
79
- return __assign(__assign({}, state), { toasts: state.toasts.map(function (t) {
80
- return t.id === toastId_1 || toastId_1 === undefined
81
- ? __assign(__assign({}, t), { open: false }) : t;
82
- }) });
83
- }
84
- case 'REMOVE_TOAST':
85
- if (action.toastId === undefined) {
86
- return __assign(__assign({}, state), { toasts: [] });
87
- }
88
- return __assign(__assign({}, state), { toasts: state.toasts.filter(function (t) { return t.id !== action.toastId; }) });
89
- }
90
- };
91
- var listeners = [];
92
- var memoryState = { toasts: [] };
93
- function dispatch(action) {
94
- memoryState = reducer(memoryState, action);
95
- listeners.forEach(function (listener) {
96
- listener(memoryState);
97
- });
98
- }
99
- function toast(_a) {
100
- var props = __rest(_a, []);
101
- var id = genId();
102
- var update = function (props) {
103
- return dispatch({
104
- type: 'UPDATE_TOAST',
105
- toast: __assign(__assign({}, props), { id: id }),
106
- });
107
- };
108
- var dismiss = function () { return dispatch({ type: 'DISMISS_TOAST', toastId: id }); };
109
- dispatch({
110
- type: 'ADD_TOAST',
111
- toast: __assign(__assign({}, props), { id: id, open: true, onOpenChange: function (open) {
112
- if (!open)
113
- dismiss();
114
- } }),
115
- });
116
- return {
117
- id: id,
118
- dismiss: dismiss,
119
- update: update,
120
- };
121
- }
122
- function useToast() {
123
- var _a = React.useState(memoryState), state = _a[0], setState = _a[1];
124
- React.useEffect(function () {
125
- listeners.push(setState);
126
- return function () {
127
- var index = listeners.indexOf(setState);
128
- if (index > -1) {
129
- listeners.splice(index, 1);
130
- }
131
- };
132
- }, [state]);
133
- return __assign(__assign({}, state), { toast: toast, dismiss: function (toastId) { return dispatch({ type: 'DISMISS_TOAST', toastId: toastId }); } });
134
- }
135
- export { useToast, toast };
@@ -1,144 +0,0 @@
1
- "use client";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- import { createContext, useContext, useState, useEffect } from "react";
39
- import { useAuth as useClerkAuth, useUser } from "@clerk/nextjs";
40
- var AuthContext = createContext(undefined);
41
- var userCache = new Map();
42
- export function AuthProvider(_a) {
43
- var _this = this;
44
- var children = _a.children;
45
- var _b = useState(null), user = _b[0], setUser = _b[1];
46
- var _c = useState(true), authLoading = _c[0], setAuthLoading = _c[1];
47
- var _d = useState(null), error = _d[0], setError = _d[1]; // Added error state
48
- var _e = useClerkAuth(), isSignedIn = _e.isSignedIn, userId = _e.userId;
49
- var clerkUser = useUser().user;
50
- var syncUserToStrapi = function (clerkUserData) { return __awaiter(_this, void 0, void 0, function () {
51
- var response, errorText, strapiUser, error_1;
52
- return __generator(this, function (_a) {
53
- switch (_a.label) {
54
- case 0:
55
- if (!clerkUserData || !userId) {
56
- console.error("Missing clerkUserData or userId:", { clerkUserData: clerkUserData, userId: userId });
57
- setError("Missing user data for sync");
58
- return [2 /*return*/];
59
- }
60
- if (userCache.has(userId)) {
61
- setUser(userCache.get(userId));
62
- setError(null);
63
- return [2 /*return*/];
64
- }
65
- _a.label = 1;
66
- case 1:
67
- _a.trys.push([1, 6, , 7]);
68
- return [4 /*yield*/, fetch("/api/sync-user", {
69
- method: "POST",
70
- headers: {
71
- "Content-Type": "application/json",
72
- },
73
- body: JSON.stringify(clerkUserData),
74
- })];
75
- case 2:
76
- response = _a.sent();
77
- if (!!response.ok) return [3 /*break*/, 4];
78
- return [4 /*yield*/, response.text()];
79
- case 3:
80
- errorText = _a.sent();
81
- console.error("Failed to sync user: ".concat(response.status), errorText);
82
- setError("Failed to sync user: ".concat(response.status));
83
- return [2 /*return*/];
84
- case 4: return [4 /*yield*/, response.json()];
85
- case 5:
86
- strapiUser = _a.sent();
87
- userCache.set(userId, strapiUser);
88
- setUser(strapiUser);
89
- setError(null);
90
- return [3 /*break*/, 7];
91
- case 6:
92
- error_1 = _a.sent();
93
- console.error("Error syncing user to Strapi:", error_1);
94
- setError(error_1 instanceof Error ? error_1.message : "Failed to sync user");
95
- return [3 /*break*/, 7];
96
- case 7: return [2 /*return*/];
97
- }
98
- });
99
- }); };
100
- var checkSession = function () { return __awaiter(_this, void 0, void 0, function () {
101
- var err_1;
102
- return __generator(this, function (_a) {
103
- switch (_a.label) {
104
- case 0:
105
- setAuthLoading(true);
106
- if (!isSignedIn || !userId || !clerkUser) {
107
- setUser(null);
108
- setError("User not signed in");
109
- setAuthLoading(false);
110
- return [2 /*return*/];
111
- }
112
- _a.label = 1;
113
- case 1:
114
- _a.trys.push([1, 3, 4, 5]);
115
- return [4 /*yield*/, syncUserToStrapi(clerkUser)];
116
- case 2:
117
- _a.sent();
118
- return [3 /*break*/, 5];
119
- case 3:
120
- err_1 = _a.sent();
121
- console.error("checkSession error:", err_1);
122
- setError(err_1 instanceof Error ? err_1.message : "Session check failed");
123
- setUser(null);
124
- return [3 /*break*/, 5];
125
- case 4:
126
- setAuthLoading(false);
127
- return [7 /*endfinally*/];
128
- case 5: return [2 /*return*/];
129
- }
130
- });
131
- }); };
132
- useEffect(function () {
133
- checkSession();
134
- }, [isSignedIn, userId, clerkUser]);
135
- return (<AuthContext.Provider value={{ user: user, authLoading: authLoading, error: error, checkSession: checkSession }}>
136
- {children}
137
- </AuthContext.Provider>);
138
- }
139
- export function useStrapiAuth() {
140
- var context = useContext(AuthContext);
141
- if (!context)
142
- throw new Error("useStrapiAuth must be used within an AuthProvider");
143
- return context;
144
- }
@@ -1,32 +0,0 @@
1
- // constants.ts
2
- // Constants for hardcoded text in the application, organized by file and purpose
3
- export var ABOUT_PAGE = {
4
- // UI Text for AboutPage.tsx
5
- UI: {
6
- // Main heading for the About page
7
- MAIN_HEADING: "About DevVista Kit",
8
- // Section heading for the client success story
9
- SUCCESS_STORY_HEADING: "Client Success Story: Radio Host Ted Long’s Fitness Journey",
10
- // Paragraph describing Ted Long's fitness journey
11
- SUCCESS_STORY_TEXT: "\n Ted Long is a busy man, so creating the right workout plan for him was essential. I\n scheduled him to come to the gym five days per week just after his radio Co-hosting work at\n 93Q each day. Two days per week, Mondays and Fridays, we worked one on one for about 90\n minutes. Our workouts followed my philosophy of continuous cross training, so they included\n weight training, circuit training, interval training, core work and more. On Tuesdays,\n Wednesdays and Thursdays he joined in on my group exercise classes. On Tuesdays he joined\n Body Blast, where we worked on muscle strength and endurance from head to toe, and focused\n the first portion of that workout on the core of the body. On Wednesdays, Ted joined my\n Flex Fusion class, his favorite, which is a yoga-type class that focuses on flexibility,\n strength and balance. On Thursdays he came to my Core and Cardio X-train class. In that\n class, we first work the core of the body, often using stability balls, medicine balls and\n bosu\u2019s, we then do an intense cardio workout class. Thursday\u2019s class varies from step\n aerobics, cardio kickbox with jump ropes, to circuit or interval tyle workout classes. Ted was\n especially good on the step and not too shabby with a jump rope either! He was a pleasure\n to work with and we loved having him around!\n ",
12
- },
13
- // Error messages for AboutPage.tsx
14
- ERRORS: {
15
- // Error when bio data fetch fails with status code
16
- FETCH_BIO_FAILED: "Failed to fetch bio data: ${response.status}",
17
- // Error when bio data is not found in the response
18
- BIO_NOT_FOUND: "Bio data not found",
19
- // Generic error for bio data fetch failure
20
- FETCH_BIO_ERROR: "An error occurred while fetching bio data",
21
- // Error when user is not authorized to update bio
22
- UNAUTHORIZED_UPDATE: "Unauthorized: Only admin can update bio data",
23
- // Error when an invalid image type is uploaded
24
- INVALID_IMAGE_TYPE: "Only JPEG, PNG, or GIF images are allowed",
25
- // Error when no authentication token is available
26
- NO_AUTH_TOKEN: "No authentication token available",
27
- // Error when bio update fails with status code
28
- UPDATE_BIO_FAILED: "Failed to update bio data: ${response.status}",
29
- // Generic error for bio update failure
30
- UPDATE_BIO_ERROR: "Failed to update bio data",
31
- },
32
- };
@@ -1,113 +0,0 @@
1
- // app/constants/adRequest.ts
2
- // Constants for hardcoded text in app/adRequest/page.tsx, organized by purpose
3
- export var AD_REQUEST_PAGE = {
4
- // UI Text for AdRequest page
5
- UI: {
6
- // Heading when user is not signed in
7
- NOT_AUTHENTICATED_HEADING: "Not authenticated",
8
- // Message when user is not signed in
9
- NOT_AUTHENTICATED_MESSAGE: "You must be logged in to view this page.",
10
- // Heading when user is not admin
11
- UNAUTHORIZED_HEADING: "Unauthorized",
12
- // Message when user is not admin
13
- UNAUTHORIZED_MESSAGE: "Only admins can access the Ad Request dashboard.",
14
- // Main dashboard heading
15
- DASHBOARD_HEADING: "Ad Request Dashboard",
16
- // Dashboard subheading
17
- DASHBOARD_SUBHEADING: "Create and manage your advertising campaigns",
18
- // Message indicating admin access
19
- ADMIN_ACCESS_MESSAGE: "Admin access granted",
20
- // Heading for credits section
21
- CREDITS_HEADING: "Available Credits",
22
- // Description for credits section
23
- CREDITS_DESCRIPTION: "Use credits to create ad requests",
24
- // Partial text for credits reset date
25
- CREDITS_RESET_TEXT: "Credits reset to 3 on ",
26
- // Heading for ad request form
27
- CREATE_AD_REQUEST_HEADING: "Create Ad Request",
28
- // Description for ad request form
29
- CREATE_AD_REQUEST_DESCRIPTION: "Specify your ad campaign details",
30
- // Label for platform select
31
- PLATFORM_LABEL: "Select Platform *",
32
- // Placeholder for platform select
33
- PLATFORM_PLACEHOLDER: "Choose a platform",
34
- // Platform option for Facebook
35
- FACEBOOK_ADS: "Facebook Ads",
36
- // Platform option for TikTok
37
- TIKTOK_ADS: "TikTok Ads",
38
- // Error message when platform is not selected
39
- PLATFORM_REQUIRED: "Please select a platform",
40
- // Label for ad type input
41
- AD_TYPE_LABEL: "Ad Type *",
42
- // Placeholder for ad type input
43
- AD_TYPE_PLACEHOLDER: "e.g., Video ad, Carousel ad, Story ad",
44
- // Error message when ad type is empty
45
- AD_TYPE_REQUIRED: "Please enter an ad type",
46
- // Label for description textarea
47
- DESCRIPTION_LABEL: "Additional Details",
48
- // Placeholder for description textarea
49
- DESCRIPTION_PLACEHOLDER: "Describe your target audience, goals, or specific requirements...",
50
- // Character count text for description
51
- DESCRIPTION_CHAR_COUNT: "{description.length}/500 characters",
52
- // Partial text for no credits alert
53
- NO_CREDITS_MESSAGE: "No credits available. ",
54
- // Message for admins when no credits
55
- NO_CREDITS_ADMIN: "Reset to continue.",
56
- // Message for non-admins when no credits
57
- NO_CREDITS_NON_ADMIN: "Await next reset.",
58
- // Heading for confirm popup
59
- CONFIRM_POPUP_HEADING: "Confirm Ad Request",
60
- // Partial message for confirm popup
61
- CONFIRM_POPUP_MESSAGE: "Are you sure you want to submit this ad request? This action cannot be undone unless you contact support at ",
62
- // Email for confirm popup
63
- SUPPORT_EMAIL: "devvistainfo@gmail.com",
64
- // Heading for request history
65
- REQUEST_HISTORY_HEADING: "Request History",
66
- // Description for request history
67
- REQUEST_HISTORY_DESCRIPTION: "View your recent ad requests",
68
- // Message when no requests exist
69
- NO_REQUESTS_MESSAGE: "No requests yet",
70
- // Message encouraging first request
71
- FIRST_REQUEST_MESSAGE: "Submit your first ad request to get started",
72
- // Footer text about credits
73
- FOOTER_TEXT: "Each ad request costs 1 credit • Credits reset monthly • Admin manual reset available",
74
- // Success message after submission
75
- SUCCESS_MESSAGE: "Ad request submitted successfully! Credit deducted.",
76
- // Badge text for Facebook platform
77
- FACEBOOK_BADGE: "Facebook",
78
- // Badge text for TikTok platform
79
- TIKTOK_BADGE: "TikTok",
80
- },
81
- // Button Text for AdRequest page
82
- BUTTONS: {
83
- // Reset credits button
84
- RESET_CREDITS: "Reset Credits",
85
- // Cancel button in confirm popup
86
- CANCEL: "Cancel",
87
- // Confirm button in confirm popup
88
- CONFIRM: "Confirm",
89
- // Submit button in non-loading state
90
- SUBMIT_REQUEST: "Submit Request (1 Credit)",
91
- // Submit button in loading state
92
- SUBMITTING: "Submitting...",
93
- },
94
- // Error Messages for AdRequest page
95
- ERRORS: {
96
- // Default error for fetch failure
97
- FETCH_AD_REQUESTS_FAILED: "Failed to fetch ad requests",
98
- // Generic error for fetch and submit failures
99
- UNKNOWN_ERROR: "An unknown error occurred",
100
- // Error when submitting without sign-in
101
- NOT_SIGNED_IN: "You must be signed in to submit an ad request",
102
- // Error when no credits available
103
- CREDIT_LIMIT_REACHED: "Monthly ad request limit reached (3 requests)",
104
- // Error when required fields are missing
105
- REQUIRED_FIELDS_MISSING: "Please fill in all required fields",
106
- // Default error for submit failure
107
- SUBMIT_AD_REQUEST_FAILED: "Failed to submit ad request",
108
- // Error when non-admin tries to reset credits
109
- UNAUTHORIZED_RESET: "Unauthorized: Only admins can reset credits",
110
- // Default error for reset credits failure
111
- RESET_CREDITS_FAILED: "Failed to reset credits!!",
112
- },
113
- };
@@ -1,40 +0,0 @@
1
- // app/constants/contact.ts
2
- // Constants for hardcoded text in app/contact/page.tsx, organized by purpose
3
- export var CONTACT_PAGE = {
4
- // UI Text for ContactPage
5
- UI: {
6
- // Main heading for the Contact page
7
- MAIN_HEADING: "Contact",
8
- // Loading text for iframe
9
- LOADING_TEXT: "Loading...",
10
- // Section heading for contact info
11
- CONTACT_INFO_HEADING: "Find Us",
12
- // Address for contact info
13
- ADDRESS: "215 W. Manlius St., East Syracuse, NY 13057",
14
- // Phone number 1 for contact info
15
- PHONE_1: "315-214-5466",
16
- // Phone number 2 for contact info
17
- PHONE_2: "315-415-4043",
18
- // Email for contact info
19
- SUPPORT_EMAIL: "devvistainfo@gmail.com",
20
- // Heading for gym hours
21
- HOURS_HEADING: "Hours of Gym",
22
- // Text for gym hours
23
- HOURS_TEXT: "Open 24/7—We Never Stop!",
24
- // Title for map iframe
25
- MAP_TITLE: "DevVista Kit Location",
26
- },
27
- // Error Messages and Toast Notifications for ContactPage
28
- ERRORS: {
29
- // Form validation error for name
30
- NAME_VALIDATION_ERROR: "Name must be at least 2 characters.",
31
- // Form validation error for email
32
- EMAIL_VALIDATION_ERROR: "Please enter a valid email address.",
33
- // Form validation error for message
34
- MESSAGE_VALIDATION_ERROR: "Message must be at least 10 characters.",
35
- // Toast title on successful form submission
36
- TOAST_SUCCESS_TITLE: "Message Fired Off!",
37
- // Toast description on successful form submission
38
- TOAST_SUCCESS_DESCRIPTION: "We’ll hit you back ASAP—get ready!",
39
- },
40
- };
@@ -1,36 +0,0 @@
1
- // app/constants/faq.ts
2
- // Constants for hardcoded text in app/faq/page.tsx, organized by purpose
3
- export var FAQ_PAGE = {
4
- // UI Text for FAQPage
5
- UI: {
6
- // Main heading for the FAQ page
7
- MAIN_HEADING: "Frequently Asked Questions",
8
- // FAQ 1
9
- FAQ_1_QUESTION: "Who should check with a doctor before starting an exercise program?",
10
- FAQ_1_ANSWER: "You should check with your doctor before you start any exercise program if you are over 40, if you smoke, if you are being treated for any chronic illness or injury, if you lead a sedentary lifestyle, if you are on medications, have diabetes, high blood pressure, or high cholesterol, any history of heart disease, back pain or any other orthopedic problems.",
11
- // FAQ 2
12
- FAQ_2_QUESTION: "How many days per week should I exercise?",
13
- FAQ_2_ANSWER: "The old government guidelines used to suggest that three days per week was all that was needed, but the new government guidelines suggest that persons should exercise most days per week. So if you aim to do some form of physical activity 6 to 7 times per week, and if you only get in 4 to 5 days, that’s not so bad!",
14
- // FAQ 3
15
- FAQ_3_QUESTION: "What is the best type of cardiovascular exercise a person can do?",
16
- FAQ_3_ANSWER: "There are so many forms of cardiovascular exercise a person can choose from. Some of the more common forms are walking, running, cycling, swimming, cross country skiing, elliptical trainer, stair climber, any aerobics class (step, kickboxing, high/low dance etc…), jump rope, rebounding on a mini trampoline as well as sports such as soccer and basketball and many more. The best type of cardiovascular exercise for any person are the ones that the individual enjoys and will stick with over the long haul. Not every exercise is for every person, but each person can find something that suits their needs and abilities.",
17
- // FAQ 4
18
- FAQ_4_QUESTION: "What is my Target Heart Rate and how do I find it?",
19
- FAQ_4_ANSWER: "Your target heart rate is where your heart rate should optimally be during an aerobic workout. Your target heart rate range is 50% – 90% of your maximum heart rate. Here’s how to calculate your target heart rate: 220 – your age = Maximum Heart Rate (MHR). MHR times 50% to 90% = Target Heart Rate (THR). These numbers serve as a guideline—an indicator of how hard you should be working. Newer exercisers should begin at the lower end of the % and experienced exercisers can go up toward the higher end of the % as their fitness levels increase and allow.",
20
- // FAQ 5
21
- FAQ_5_QUESTION: "How often should I lift weights?",
22
- FAQ_5_ANSWER: "In general, strength training or weight lifting for each muscle group should be done 2 to 3 days per week on non-consecutive days. On the other hand, you don’t have to take the all or nothing approach either. It’s better to do a little strength training than none at all. So, even if you can only fit in one strength training routine in a week, you’ll still benefit from it.",
23
- // FAQ 6
24
- FAQ_6_QUESTION: "How long will it take before I see results?",
25
- FAQ_6_ANSWER: "Seeing results usually varies with each individual. Generally, if a person is consistent with a balanced program, they should begin to feel a difference in their bodies in about three weeks and actually see some significant changes in about three months.",
26
- // FAQ 7
27
- FAQ_7_QUESTION: "When is the best time to stretch my muscles, before or after a workout?",
28
- FAQ_7_ANSWER: "Stretching and flexibility are very important aspects of good physical fitness. Ideally it’s best to stretch before and after a workout. When stretching before a workout, be sure that the muscles are warmed up for at least 5 minutes. If you can’t do both, then make stretching after your workout a priority. Remember to start slowly, breathe into the stretch and don’t bounce!",
29
- // FAQ 8
30
- FAQ_8_QUESTION: "Should I eat before or after a workout?",
31
- FAQ_8_ANSWER: "It’s okay to eat certain foods before and after exercise, but don’t overdo it. Consuming a heavy meal just before a workout can interfere with proper digestion. By the same token, don’t try to work out if you are starving. Your body needs fuel for the activity. Some quick carbohydrates from a piece of fruit or an energy bar should do the trick. The same goes for an early morning workout; maybe a piece of whole grain toast and some fruit juice. After exercise, allow your body to cool down before eating. Then be sure to include some carbs with your meal to replace the glycogen stores in the muscle that you used during your workout. And of course, be sure to drink plenty of water before, during and after your workouts.",
32
- // FAQ 9
33
- FAQ_9_QUESTION: "What can I do to stay motivated to work out?",
34
- FAQ_9_ANSWER: "Staying motivated over the long haul can sometimes be a challenge. Get a friend/spouse or significant other to join you and help keep you accountable. You can also try changing your routine every few months. Maybe trying a new class at your health club or take your workouts outside for a change. You may also want to hire a qualified personal trainer for a few sessions to give you different ideas on how to change your current workouts to keep them fun and effective.",
35
- },
36
- };
@@ -1,42 +0,0 @@
1
- // app/constants/gallery.ts
2
- // Constants for hardcoded text in app/gallery/page.tsx, organized by purpose
3
- export var GALLERY_PAGE = {
4
- // UI Text for GalleryPage
5
- UI: {
6
- // Main heading for the Gallery page
7
- MAIN_HEADING: "Gallery",
8
- // Loading text for admin status feedback
9
- LOADING_TEXT: "Loading...",
10
- // Message when logged in as admin
11
- ADMIN_LOGGED_IN_MESSAGE: "You are logged in as an admin.",
12
- },
13
- // Error Messages for GalleryPage
14
- ERRORS: {
15
- // Error when no authentication token is available
16
- NO_AUTH_TOKEN: "No authentication token available",
17
- // Error when fetching images fails with error text
18
- FETCH_IMAGES_FAILED: "Failed to load images: ${errorText}",
19
- // Warning when more than 100 images are available
20
- PAGINATION_WARNING: "Warning: Only the first 100 images are displayed. Contact support to view all images.",
21
- // Generic error for fetch failure
22
- FETCH_ERROR: "An error occurred while fetching data",
23
- // Error when no file is selected for upload
24
- NO_FILE_SELECTED: "No file selected",
25
- // Error when an invalid file type is uploaded
26
- INVALID_FILE_TYPE: "Only JPEG, PNG, or GIF images are allowed",
27
- // Error when non-admin tries to upload
28
- UNAUTHORIZED_UPLOAD: "Unauthorized: Only admins can upload images",
29
- // Error for authentication issues during upload or delete
30
- AUTHENTICATION_ERROR: "Authentication error. Please log in again.",
31
- // Error when upload fails with status code
32
- UPLOAD_IMAGE_FAILED: "Failed to upload image: ${response.status}",
33
- // Generic error for upload failure
34
- UPLOAD_IMAGE_ERROR: "Failed to upload image",
35
- // Error when non-admin tries to delete
36
- UNAUTHORIZED_DELETE: "Unauthorized: Only admins can delete images",
37
- // Error when delete fails with status code
38
- DELETE_IMAGE_FAILED: "Failed to delete image: ${response.status}",
39
- // Generic error for delete failure
40
- DELETE_IMAGE_ERROR: "Failed to delete image",
41
- },
42
- };
@@ -1,69 +0,0 @@
1
- // app/constants/home.ts
2
- // Constants for hardcoded text in app/page.tsx, organized by purpose
3
- export var HOME_PAGE = {
4
- // UI Text for HomePage
5
- UI: {
6
- // HeroSection title
7
- HERO_TITLE: "DevVista Kit",
8
- // HeroSection subtitle
9
- HERO_SUBTITLE: "Your 24/7 Fitness Destination",
10
- // HeroSection video aria label
11
- HERO_VIDEO_ARIA_LABEL: "Promotional video for DevVista Kit",
12
- // FeaturesSection title
13
- FEATURES_TITLE: "Zumba®",
14
- // FeaturesSection description
15
- FEATURES_DESCRIPTION: "Variety of Memberships Available",
16
- // Features for FeaturesSection
17
- FEATURE_1: "24 Hour Access",
18
- FEATURE_2: "Locker Rooms",
19
- FEATURE_3: "Strength, Cardio & Flexibility Classes",
20
- FEATURE_4: "Personal Training",
21
- FEATURE_5: "Partner and Small Group Training",
22
- // Background images for ScheduleCarousel
23
- BACKGROUND_IMAGE_1: "/images/classes/zoomba.jpg",
24
- BACKGROUND_IMAGE_2: "/images/classes/cardioxtrain.jpg",
25
- BACKGROUND_IMAGE_3: "/images/classes/seniorstretch.jpg",
26
- BACKGROUND_IMAGE_4: "/images/classes/bodyblast.jpg",
27
- BACKGROUND_IMAGE_5: "/images/classes/flexiblefriday.jpg",
28
- BACKGROUND_IMAGE_6: "/images/classes/combo.jpg",
29
- BACKGROUND_IMAGE_7: "/images/classes/noclasses.jpg",
30
- // Video source for HeroSection
31
- HERO_VIDEO_SRC: "/images/videos/FitStopLoopVideo.mp4",
32
- },
33
- // Button Text for HomePage
34
- BUTTONS: {
35
- // HeroSection call-to-action text
36
- HERO_CTA_TEXT: "Check Our Rates",
37
- // FeaturesSection call-to-action text
38
- FEATURES_CTA_TEXT: "Explore Classes",
39
- },
40
- // Error Messages for HomePage
41
- ERRORS: {
42
- // Error when schedule fetch fails
43
- FETCH_SCHEDULE_FAILED: "Failed to load schedule. Displaying empty schedule.",
44
- // Warning when more than 100 files are available
45
- PAGINATION_WARNING: "Warning: Only the first 100 files are displayed. Contact support to view all files.",
46
- // Error when files fetch fails
47
- FETCH_FILES_FAILED: "Failed to load files.",
48
- // Generic error for fetch failure
49
- FETCH_ERROR: "An error occurred while fetching data",
50
- // Error when non-admin tries to upload
51
- UNAUTHORIZED_UPLOAD: "Unauthorized: Only admin can upload files",
52
- // Error when no file is selected for upload
53
- NO_FILE_SELECTED: "No file selected",
54
- // Error when an invalid file type is uploaded
55
- INVALID_FILE_TYPE: "Only PDF files are allowed",
56
- // Error when no authentication token is available
57
- NO_AUTH_TOKEN: "No authentication token available",
58
- // Error when upload fails with status code
59
- UPLOAD_FILE_FAILED: "Failed to upload file: ${response.status}",
60
- // Generic error for upload failure
61
- UPLOAD_FILE_ERROR: "Failed to upload file",
62
- // Error when non-admin tries to delete
63
- UNAUTHORIZED_DELETE: "Unauthorized: Only admin can delete files",
64
- // Error when delete fails with status code
65
- DELETE_FILE_FAILED: "Failed to delete file: ${response.status}",
66
- // Generic error for delete failure
67
- DELETE_FILE_ERROR: "Failed to delete file",
68
- },
69
- };