@mohasinac/appkit 2.1.3 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (820) hide show
  1. package/README.md +80 -30
  2. package/dist/index.d.ts +3124 -0
  3. package/dist/index.js +5836 -0
  4. package/package.json +67 -383
  5. package/src/cli/index.ts +0 -221
  6. package/src/contracts/auth.ts +0 -63
  7. package/src/contracts/config.ts +0 -58
  8. package/src/contracts/email.ts +0 -37
  9. package/src/contracts/extend.ts +0 -195
  10. package/src/contracts/feature.ts +0 -60
  11. package/src/contracts/index.ts +0 -122
  12. package/src/contracts/infra.ts +0 -50
  13. package/src/contracts/payment.ts +0 -50
  14. package/src/contracts/registry.ts +0 -44
  15. package/src/contracts/repository.ts +0 -87
  16. package/src/contracts/search.ts +0 -49
  17. package/src/contracts/shipping.ts +0 -77
  18. package/src/contracts/storage.ts +0 -37
  19. package/src/contracts/style.ts +0 -25
  20. package/src/contracts/table.ts +0 -148
  21. package/src/core/CacheManager.ts +0 -85
  22. package/src/core/EventBus.ts +0 -89
  23. package/src/core/Logger.ts +0 -209
  24. package/src/core/Queue.ts +0 -126
  25. package/src/core/StorageManager.ts +0 -167
  26. package/src/core/copilot-log.repository.ts +0 -106
  27. package/src/core/index.ts +0 -39
  28. package/src/core/newsletter.repository.ts +0 -193
  29. package/src/core/site-config.ts +0 -109
  30. package/src/errors/api-error.ts +0 -7
  31. package/src/errors/authentication-error.ts +0 -7
  32. package/src/errors/authorization-error.ts +0 -7
  33. package/src/errors/base-error.ts +0 -30
  34. package/src/errors/database-error.ts +0 -7
  35. package/src/errors/error-codes.ts +0 -106
  36. package/src/errors/error-handler.ts +0 -74
  37. package/src/errors/index.ts +0 -11
  38. package/src/errors/not-found-error.ts +0 -7
  39. package/src/errors/validation-error.ts +0 -7
  40. package/src/features/about/components/AboutView.tsx +0 -142
  41. package/src/features/about/components/index.ts +0 -7
  42. package/src/features/about/index.ts +0 -7
  43. package/src/features/account/api/[userId]/addresses/route.ts +0 -131
  44. package/src/features/account/api/[userId]/route.ts +0 -107
  45. package/src/features/account/columns/index.ts +0 -61
  46. package/src/features/account/components/AddressBook.tsx +0 -109
  47. package/src/features/account/components/BecomeSellerView.tsx +0 -44
  48. package/src/features/account/components/ChatList.tsx +0 -43
  49. package/src/features/account/components/ChatWindow.tsx +0 -52
  50. package/src/features/account/components/MessagesView.tsx +0 -60
  51. package/src/features/account/components/OrderDetailView.tsx +0 -50
  52. package/src/features/account/components/ProfileView.tsx +0 -40
  53. package/src/features/account/components/UserAccountHubView.tsx +0 -40
  54. package/src/features/account/components/UserAddressesView.tsx +0 -44
  55. package/src/features/account/components/UserNotificationsView.tsx +0 -52
  56. package/src/features/account/components/UserOffersView.tsx +0 -37
  57. package/src/features/account/components/UserOrderTrackView.tsx +0 -36
  58. package/src/features/account/components/UserOrdersView.tsx +0 -45
  59. package/src/features/account/components/UserSettingsView.tsx +0 -48
  60. package/src/features/account/components/index.ts +0 -54
  61. package/src/features/account/hooks/useAccount.ts +0 -25
  62. package/src/features/account/index.ts +0 -7
  63. package/src/features/account/manifest.ts +0 -29
  64. package/src/features/account/messages/en.json +0 -12
  65. package/src/features/account/repository/account.repository.ts +0 -28
  66. package/src/features/account/schemas/index.ts +0 -56
  67. package/src/features/account/types/index.ts +0 -124
  68. package/src/features/admin/api/bids/route.ts +0 -63
  69. package/src/features/admin/api/coupons/route.ts +0 -63
  70. package/src/features/admin/api/products/route.ts +0 -64
  71. package/src/features/admin/api/reviews/route.ts +0 -63
  72. package/src/features/admin/components/AdminAnalyticsView.tsx +0 -124
  73. package/src/features/admin/components/AdminBidsView.tsx +0 -29
  74. package/src/features/admin/components/AdminBlogView.tsx +0 -32
  75. package/src/features/admin/components/AdminCarouselView.tsx +0 -57
  76. package/src/features/admin/components/AdminCategoriesView.tsx +0 -57
  77. package/src/features/admin/components/AdminCouponsView.tsx +0 -32
  78. package/src/features/admin/components/AdminDashboardView.tsx +0 -50
  79. package/src/features/admin/components/AdminFaqsView.tsx +0 -29
  80. package/src/features/admin/components/AdminFeatureFlagsView.tsx +0 -33
  81. package/src/features/admin/components/AdminMediaView.tsx +0 -57
  82. package/src/features/admin/components/AdminNavigationView.tsx +0 -57
  83. package/src/features/admin/components/AdminOrdersView.tsx +0 -29
  84. package/src/features/admin/components/AdminPayoutsView.tsx +0 -29
  85. package/src/features/admin/components/AdminProductsView.tsx +0 -32
  86. package/src/features/admin/components/AdminReviewsView.tsx +0 -38
  87. package/src/features/admin/components/AdminSectionsView.tsx +0 -57
  88. package/src/features/admin/components/AdminSessionsManager.tsx +0 -28
  89. package/src/features/admin/components/AdminSidebar.tsx +0 -28
  90. package/src/features/admin/components/AdminSiteView.tsx +0 -34
  91. package/src/features/admin/components/AdminStoresView.tsx +0 -29
  92. package/src/features/admin/components/AdminTopBar.tsx +0 -22
  93. package/src/features/admin/components/AdminUsersView.tsx +0 -32
  94. package/src/features/admin/components/DashboardStats.tsx +0 -95
  95. package/src/features/admin/components/DataTable.tsx +0 -115
  96. package/src/features/admin/components/DemoSeedView.tsx +0 -22
  97. package/src/features/admin/components/QuickActionsPanel.tsx +0 -62
  98. package/src/features/admin/components/analytics/AdminAnalyticsCharts.tsx +0 -114
  99. package/src/features/admin/components/analytics/AdminStatCard.tsx +0 -36
  100. package/src/features/admin/components/analytics/AdminTopProductsTable.tsx +0 -61
  101. package/src/features/admin/components/analytics/index.ts +0 -3
  102. package/src/features/admin/components/index.ts +0 -71
  103. package/src/features/admin/hooks/useAdmin.ts +0 -19
  104. package/src/features/admin/index.ts +0 -5
  105. package/src/features/admin/manifest.ts +0 -15
  106. package/src/features/admin/messages/en.json +0 -13
  107. package/src/features/admin/permission-map.ts +0 -27
  108. package/src/features/admin/server.ts +0 -10
  109. package/src/features/admin/types/index.ts +0 -75
  110. package/src/features/auctions/api/route.ts +0 -83
  111. package/src/features/auctions/columns/index.ts +0 -91
  112. package/src/features/auctions/components/AuctionCard.tsx +0 -149
  113. package/src/features/auctions/components/index.ts +0 -1
  114. package/src/features/auctions/hooks/useAuctions.ts +0 -145
  115. package/src/features/auctions/hooks/usePlaceBid.ts +0 -48
  116. package/src/features/auctions/hooks/useRealtimeBids.ts +0 -100
  117. package/src/features/auctions/index.ts +0 -9
  118. package/src/features/auctions/manifest.ts +0 -19
  119. package/src/features/auctions/messages/en.json +0 -18
  120. package/src/features/auctions/repository/auctions.repository.ts +0 -57
  121. package/src/features/auctions/schemas/index.ts +0 -69
  122. package/src/features/auctions/server.ts +0 -7
  123. package/src/features/auctions/types/index.ts +0 -90
  124. package/src/features/auth/api/route.ts +0 -63
  125. package/src/features/auth/components/AuthStatusPanel.tsx +0 -67
  126. package/src/features/auth/components/ForgotPasswordView.tsx +0 -114
  127. package/src/features/auth/components/Guards.tsx +0 -60
  128. package/src/features/auth/components/LoginForm.tsx +0 -180
  129. package/src/features/auth/components/RegisterForm.tsx +0 -232
  130. package/src/features/auth/components/ResetPasswordView.tsx +0 -144
  131. package/src/features/auth/components/SocialAuthButtons.tsx +0 -60
  132. package/src/features/auth/components/VerifyEmailView.tsx +0 -118
  133. package/src/features/auth/components/index.ts +0 -13
  134. package/src/features/auth/hooks/useAuth.ts +0 -33
  135. package/src/features/auth/index.ts +0 -5
  136. package/src/features/auth/manifest.ts +0 -23
  137. package/src/features/auth/messages/en.json +0 -13
  138. package/src/features/auth/schemas/index.ts +0 -48
  139. package/src/features/auth/server.ts +0 -17
  140. package/src/features/auth/types/index.ts +0 -36
  141. package/src/features/before-after/api/[id]/route.ts +0 -143
  142. package/src/features/before-after/api/route.ts +0 -104
  143. package/src/features/before-after/columns/index.ts +0 -72
  144. package/src/features/before-after/components/BeforeAfterGallery.tsx +0 -41
  145. package/src/features/before-after/components/BeforeAfterSlider.tsx +0 -89
  146. package/src/features/before-after/components/index.ts +0 -2
  147. package/src/features/before-after/hooks/useBeforeAfter.ts +0 -33
  148. package/src/features/before-after/index.ts +0 -7
  149. package/src/features/before-after/manifest.ts +0 -12
  150. package/src/features/before-after/messages/en.json +0 -8
  151. package/src/features/before-after/repository/before-after.repository.ts +0 -44
  152. package/src/features/before-after/schemas/index.ts +0 -25
  153. package/src/features/before-after/types/index.ts +0 -19
  154. package/src/features/blog/api/[slug]/route.ts +0 -73
  155. package/src/features/blog/api/route.ts +0 -81
  156. package/src/features/blog/columns/index.ts +0 -68
  157. package/src/features/blog/components/BlogFeaturedCard.tsx +0 -108
  158. package/src/features/blog/components/BlogListView.tsx +0 -219
  159. package/src/features/blog/components/BlogPostForm.tsx +0 -254
  160. package/src/features/blog/components/BlogPostView.tsx +0 -221
  161. package/src/features/blog/components/index.ts +0 -12
  162. package/src/features/blog/hooks/useBlog.ts +0 -67
  163. package/src/features/blog/index.ts +0 -7
  164. package/src/features/blog/manifest.ts +0 -16
  165. package/src/features/blog/messages/en.json +0 -14
  166. package/src/features/blog/repository/blog.repository.ts +0 -73
  167. package/src/features/blog/schemas/index.ts +0 -74
  168. package/src/features/blog/server.ts +0 -9
  169. package/src/features/blog/types/index.ts +0 -58
  170. package/src/features/cart/api/[id]/route.ts +0 -98
  171. package/src/features/cart/api/route.ts +0 -104
  172. package/src/features/cart/columns/index.ts +0 -73
  173. package/src/features/cart/components/CartDrawer.tsx +0 -183
  174. package/src/features/cart/components/CartSummary.tsx +0 -43
  175. package/src/features/cart/components/CartView.tsx +0 -47
  176. package/src/features/cart/components/CheckoutAddressStep.tsx +0 -68
  177. package/src/features/cart/components/CheckoutOtpModal.tsx +0 -39
  178. package/src/features/cart/components/CheckoutSuccessView.tsx +0 -31
  179. package/src/features/cart/components/CheckoutView.tsx +0 -70
  180. package/src/features/cart/components/index.ts +0 -16
  181. package/src/features/cart/hooks/useCart.ts +0 -30
  182. package/src/features/cart/hooks/useCartQuery.ts +0 -22
  183. package/src/features/cart/hooks/useCheckoutReadQueries.ts +0 -34
  184. package/src/features/cart/hooks/useOrder.ts +0 -35
  185. package/src/features/cart/index.ts +0 -11
  186. package/src/features/cart/manifest.ts +0 -12
  187. package/src/features/cart/messages/en.json +0 -10
  188. package/src/features/cart/repository/cart.repository.ts +0 -50
  189. package/src/features/cart/schemas/index.ts +0 -36
  190. package/src/features/cart/types/index.ts +0 -29
  191. package/src/features/cart/utils/guest-cart.ts +0 -149
  192. package/src/features/categories/api/[id]/route.ts +0 -144
  193. package/src/features/categories/api/route.ts +0 -253
  194. package/src/features/categories/columns/index.ts +0 -51
  195. package/src/features/categories/components/BreadcrumbTrail.tsx +0 -80
  196. package/src/features/categories/components/CategoriesListView.tsx +0 -77
  197. package/src/features/categories/components/CategoryGrid.tsx +0 -93
  198. package/src/features/categories/components/CategoryProductsView.tsx +0 -116
  199. package/src/features/categories/components/CategoryTree.tsx +0 -156
  200. package/src/features/categories/components/ConcernCard.tsx +0 -45
  201. package/src/features/categories/components/ConcernGrid.tsx +0 -25
  202. package/src/features/categories/components/index.ts +0 -17
  203. package/src/features/categories/hooks/useCategories.ts +0 -72
  204. package/src/features/categories/index.ts +0 -7
  205. package/src/features/categories/manifest.ts +0 -22
  206. package/src/features/categories/messages/en.json +0 -14
  207. package/src/features/categories/repository/categories.repository.ts +0 -76
  208. package/src/features/categories/schemas/index.ts +0 -74
  209. package/src/features/categories/server.ts +0 -12
  210. package/src/features/categories/types/index.ts +0 -60
  211. package/src/features/checkout/components/CheckoutStepper.tsx +0 -45
  212. package/src/features/checkout/components/index.ts +0 -1
  213. package/src/features/checkout/hooks/useCheckout.ts +0 -38
  214. package/src/features/checkout/index.ts +0 -4
  215. package/src/features/checkout/manifest.ts +0 -19
  216. package/src/features/checkout/messages/en.json +0 -10
  217. package/src/features/checkout/types/index.ts +0 -62
  218. package/src/features/cms/index.ts +0 -6
  219. package/src/features/collections/api/[slug]/route.ts +0 -167
  220. package/src/features/collections/api/route.ts +0 -104
  221. package/src/features/collections/columns/index.ts +0 -77
  222. package/src/features/collections/components/CollectionCard.tsx +0 -61
  223. package/src/features/collections/components/index.ts +0 -1
  224. package/src/features/collections/hooks/useCollections.ts +0 -31
  225. package/src/features/collections/index.ts +0 -7
  226. package/src/features/collections/manifest.ts +0 -18
  227. package/src/features/collections/messages/en.json +0 -10
  228. package/src/features/collections/repository/collections.repository.ts +0 -19
  229. package/src/features/collections/schemas/index.ts +0 -36
  230. package/src/features/collections/types/index.ts +0 -26
  231. package/src/features/consultation/api/[id]/route.ts +0 -143
  232. package/src/features/consultation/api/route.ts +0 -104
  233. package/src/features/consultation/columns/index.ts +0 -76
  234. package/src/features/consultation/components/ConsultationForm.tsx +0 -161
  235. package/src/features/consultation/components/index.ts +0 -1
  236. package/src/features/consultation/hooks/useBookConsultation.ts +0 -19
  237. package/src/features/consultation/index.ts +0 -7
  238. package/src/features/consultation/manifest.ts +0 -14
  239. package/src/features/consultation/messages/en.json +0 -25
  240. package/src/features/consultation/repository/consultations.repository.ts +0 -35
  241. package/src/features/consultation/schemas/index.ts +0 -51
  242. package/src/features/consultation/types/index.ts +0 -36
  243. package/src/features/contact/components/ContactForm.tsx +0 -202
  244. package/src/features/contact/components/ContactInfoSidebar.tsx +0 -85
  245. package/src/features/contact/components/index.ts +0 -7
  246. package/src/features/contact/index.ts +0 -1
  247. package/src/features/copilot/components/AdminCopilotView.tsx +0 -157
  248. package/src/features/copilot/components/index.ts +0 -2
  249. package/src/features/copilot/hooks/useCopilotChat.ts +0 -86
  250. package/src/features/copilot/index.ts +0 -2
  251. package/src/features/corporate/api/[id]/route.ts +0 -149
  252. package/src/features/corporate/api/route.ts +0 -108
  253. package/src/features/corporate/columns/index.ts +0 -76
  254. package/src/features/corporate/components/CorporateInquiryForm.tsx +0 -155
  255. package/src/features/corporate/components/index.ts +0 -1
  256. package/src/features/corporate/hooks/useSubmitCorporateInquiry.ts +0 -19
  257. package/src/features/corporate/index.ts +0 -7
  258. package/src/features/corporate/manifest.ts +0 -14
  259. package/src/features/corporate/messages/en.json +0 -26
  260. package/src/features/corporate/repository/corporate.repository.ts +0 -39
  261. package/src/features/corporate/schemas/index.ts +0 -53
  262. package/src/features/corporate/types/index.ts +0 -40
  263. package/src/features/cron/firebase-adapters.ts +0 -117
  264. package/src/features/cron/index.ts +0 -28
  265. package/src/features/cron/jobs/auction-expiry.job.ts +0 -76
  266. package/src/features/cron/jobs/preorder-reminder.job.ts +0 -64
  267. package/src/features/cron/registry.ts +0 -115
  268. package/src/features/cron/types.ts +0 -83
  269. package/src/features/events/api/[id]/route.ts +0 -123
  270. package/src/features/events/api/route.ts +0 -110
  271. package/src/features/events/columns/index.ts +0 -54
  272. package/src/features/events/components/AdminEventEntriesView.tsx +0 -39
  273. package/src/features/events/components/AdminEventsView.tsx +0 -47
  274. package/src/features/events/components/EventCard.tsx +0 -88
  275. package/src/features/events/components/EventDetailView.tsx +0 -51
  276. package/src/features/events/components/EventFormDrawer.tsx +0 -47
  277. package/src/features/events/components/EventLeaderboard.tsx +0 -76
  278. package/src/features/events/components/EventParticipateView.tsx +0 -48
  279. package/src/features/events/components/EventStatusBadge.tsx +0 -28
  280. package/src/features/events/components/EventsListView.tsx +0 -100
  281. package/src/features/events/components/index.ts +0 -15
  282. package/src/features/events/hooks/useEvent.ts +0 -94
  283. package/src/features/events/hooks/useEvents.ts +0 -59
  284. package/src/features/events/index.ts +0 -11
  285. package/src/features/events/manifest.ts +0 -26
  286. package/src/features/events/messages/en.json +0 -28
  287. package/src/features/events/repository/events.repository.ts +0 -110
  288. package/src/features/events/schemas/index.ts +0 -98
  289. package/src/features/events/server.ts +0 -8
  290. package/src/features/events/types/index.ts +0 -185
  291. package/src/features/faq/api/route.ts +0 -61
  292. package/src/features/faq/columns/index.ts +0 -60
  293. package/src/features/faq/components/ContactCTA.tsx +0 -115
  294. package/src/features/faq/components/FAQAccordion.tsx +0 -150
  295. package/src/features/faq/components/FAQCategorySidebar.tsx +0 -124
  296. package/src/features/faq/components/FAQHelpfulButtons.tsx +0 -110
  297. package/src/features/faq/components/FAQPageContent.tsx +0 -217
  298. package/src/features/faq/components/FAQSortDropdown.tsx +0 -43
  299. package/src/features/faq/components/RelatedFAQs.tsx +0 -74
  300. package/src/features/faq/components/index.ts +0 -9
  301. package/src/features/faq/hooks/useFAQs.ts +0 -50
  302. package/src/features/faq/hooks/useFaqList.ts +0 -53
  303. package/src/features/faq/index.ts +0 -8
  304. package/src/features/faq/manifest.ts +0 -12
  305. package/src/features/faq/messages/en.json +0 -14
  306. package/src/features/faq/repository/faqs.repository.ts +0 -61
  307. package/src/features/faq/schemas/index.ts +0 -69
  308. package/src/features/faq/server.ts +0 -7
  309. package/src/features/faq/types/index.ts +0 -63
  310. package/src/features/filters/FilterFacetSection.tsx +0 -205
  311. package/src/features/filters/FilterPanel.tsx +0 -227
  312. package/src/features/filters/RangeFilter.tsx +0 -291
  313. package/src/features/filters/SwitchFilter.tsx +0 -143
  314. package/src/features/filters/filterUtils.ts +0 -24
  315. package/src/features/filters/index.ts +0 -28
  316. package/src/features/forms/Checkbox.tsx +0 -100
  317. package/src/features/forms/Form.tsx +0 -105
  318. package/src/features/forms/Input.tsx +0 -127
  319. package/src/features/forms/Radio.tsx +0 -126
  320. package/src/features/forms/Select.tsx +0 -101
  321. package/src/features/forms/Slider.tsx +0 -119
  322. package/src/features/forms/Textarea.tsx +0 -99
  323. package/src/features/forms/Toggle.tsx +0 -110
  324. package/src/features/forms/index.ts +0 -34
  325. package/src/features/forms/utils.ts +0 -25
  326. package/src/features/homepage/api/[id]/route.ts +0 -145
  327. package/src/features/homepage/api/carousel/[id]/route.ts +0 -169
  328. package/src/features/homepage/api/carousel/route.ts +0 -188
  329. package/src/features/homepage/api/route.ts +0 -167
  330. package/src/features/homepage/api/sections/[id]/route.ts +0 -143
  331. package/src/features/homepage/api/sections/route.ts +0 -104
  332. package/src/features/homepage/components/AdvertisementBanner.tsx +0 -202
  333. package/src/features/homepage/components/BeforeAfterCard.tsx +0 -147
  334. package/src/features/homepage/components/CharacterHotspot.tsx +0 -742
  335. package/src/features/homepage/components/CharacterHotspotForm.tsx +0 -1002
  336. package/src/features/homepage/components/CustomerReviewsSection.tsx +0 -108
  337. package/src/features/homepage/components/FAQSection.tsx +0 -154
  338. package/src/features/homepage/components/FeaturedResultsSection.tsx +0 -97
  339. package/src/features/homepage/components/HeroBanner.tsx +0 -283
  340. package/src/features/homepage/components/HeroCarousel.tsx +0 -442
  341. package/src/features/homepage/components/HeroSection.tsx +0 -50
  342. package/src/features/homepage/components/HomepageSkeleton.tsx +0 -88
  343. package/src/features/homepage/components/HomepageView.tsx +0 -77
  344. package/src/features/homepage/components/HowItWorksInfoView.tsx +0 -161
  345. package/src/features/homepage/components/HowItWorksSection.tsx +0 -194
  346. package/src/features/homepage/components/NewsletterBanner.tsx +0 -130
  347. package/src/features/homepage/components/NewsletterSection.tsx +0 -85
  348. package/src/features/homepage/components/PromoGrid.tsx +0 -130
  349. package/src/features/homepage/components/SectionCarousel.tsx +0 -284
  350. package/src/features/homepage/components/SecurityHighlightsSection.tsx +0 -149
  351. package/src/features/homepage/components/SiteFeaturesSection.tsx +0 -86
  352. package/src/features/homepage/components/StatsCounterSection.tsx +0 -118
  353. package/src/features/homepage/components/TestimonialsCarousel.tsx +0 -96
  354. package/src/features/homepage/components/TrustBadges.tsx +0 -155
  355. package/src/features/homepage/components/TrustFeaturesSection.tsx +0 -168
  356. package/src/features/homepage/components/TrustIndicatorsSection.tsx +0 -59
  357. package/src/features/homepage/components/WelcomeSection.tsx +0 -178
  358. package/src/features/homepage/components/WhatsAppCommunitySection.tsx +0 -187
  359. package/src/features/homepage/components/index.ts +0 -91
  360. package/src/features/homepage/hooks/useBlogArticles.ts +0 -46
  361. package/src/features/homepage/hooks/useFeaturedAuctions.ts +0 -39
  362. package/src/features/homepage/hooks/useFeaturedPreOrders.ts +0 -39
  363. package/src/features/homepage/hooks/useFeaturedProducts.ts +0 -44
  364. package/src/features/homepage/hooks/useHeroCarousel.ts +0 -19
  365. package/src/features/homepage/hooks/useHomepage.ts +0 -25
  366. package/src/features/homepage/hooks/useTopBrands.ts +0 -17
  367. package/src/features/homepage/hooks/useTopCategories.ts +0 -19
  368. package/src/features/homepage/index.ts +0 -10
  369. package/src/features/homepage/manifest.ts +0 -16
  370. package/src/features/homepage/messages/en.json +0 -6
  371. package/src/features/homepage/repository/homepage.repository.ts +0 -38
  372. package/src/features/homepage/server.ts +0 -14
  373. package/src/features/homepage/types/index.ts +0 -183
  374. package/src/features/layout/AutoBreadcrumbs.tsx +0 -143
  375. package/src/features/layout/BackToTop.tsx +0 -58
  376. package/src/features/layout/BottomNavItem.tsx +0 -71
  377. package/src/features/layout/BottomNavLayout.tsx +0 -34
  378. package/src/features/layout/BottomSheet.tsx +0 -120
  379. package/src/features/layout/Breadcrumbs.tsx +0 -83
  380. package/src/features/layout/FooterLayout.tsx +0 -215
  381. package/src/features/layout/ListingLayout.tsx +0 -383
  382. package/src/features/layout/LocaleSwitcher.tsx +0 -44
  383. package/src/features/layout/NavbarLayout.tsx +0 -108
  384. package/src/features/layout/SidebarLayout.tsx +0 -75
  385. package/src/features/layout/TitleBarLayout.tsx +0 -285
  386. package/src/features/layout/index.ts +0 -46
  387. package/src/features/loyalty/api/admin/loyalty/grant/route.ts +0 -51
  388. package/src/features/loyalty/api/balance/route.ts +0 -53
  389. package/src/features/loyalty/api/earn/route.ts +0 -51
  390. package/src/features/loyalty/api/history/route.ts +0 -74
  391. package/src/features/loyalty/api/redeem/route.ts +0 -51
  392. package/src/features/loyalty/columns/index.ts +0 -61
  393. package/src/features/loyalty/components/CoinsDisplay.tsx +0 -36
  394. package/src/features/loyalty/components/index.ts +0 -1
  395. package/src/features/loyalty/hooks/useLoyaltyBalance.ts +0 -17
  396. package/src/features/loyalty/index.ts +0 -7
  397. package/src/features/loyalty/manifest.ts +0 -18
  398. package/src/features/loyalty/messages/en.json +0 -19
  399. package/src/features/loyalty/repository/loyalty.repository.ts +0 -29
  400. package/src/features/loyalty/schemas/index.ts +0 -44
  401. package/src/features/loyalty/types/index.ts +0 -43
  402. package/src/features/loyalty/types/loyalty-math.ts +0 -36
  403. package/src/features/media/MediaAvatar.tsx +0 -37
  404. package/src/features/media/MediaImage.tsx +0 -119
  405. package/src/features/media/MediaLightbox.tsx +0 -520
  406. package/src/features/media/MediaVideo.tsx +0 -94
  407. package/src/features/media/components/MediaSlider.tsx +0 -53
  408. package/src/features/media/hooks/useMedia.ts +0 -118
  409. package/src/features/media/index.ts +0 -74
  410. package/src/features/media/messages/en.json +0 -63
  411. package/src/features/media/modals/ImageCropModal.tsx +0 -270
  412. package/src/features/media/modals/VideoThumbnailSelector.tsx +0 -117
  413. package/src/features/media/modals/VideoTrimModal.tsx +0 -193
  414. package/src/features/media/types/index.ts +0 -69
  415. package/src/features/media/upload/CameraCapture.tsx +0 -150
  416. package/src/features/media/upload/ImageUpload.tsx +0 -358
  417. package/src/features/media/upload/MediaUploadField.tsx +0 -442
  418. package/src/features/media/upload/MediaUploadList.tsx +0 -255
  419. package/src/features/orders/columns/index.ts +0 -47
  420. package/src/features/orders/components/OrdersList.tsx +0 -168
  421. package/src/features/orders/components/index.ts +0 -1
  422. package/src/features/orders/hooks/useOrders.ts +0 -53
  423. package/src/features/orders/index.ts +0 -8
  424. package/src/features/orders/manifest.ts +0 -20
  425. package/src/features/orders/messages/en.json +0 -15
  426. package/src/features/orders/repository/orders.repository.ts +0 -47
  427. package/src/features/orders/schemas/index.ts +0 -82
  428. package/src/features/orders/types/index.ts +0 -97
  429. package/src/features/orders/utils/order-splitter.ts +0 -48
  430. package/src/features/payments/columns/index.ts +0 -67
  431. package/src/features/payments/components/index.ts +0 -1
  432. package/src/features/payments/hooks/usePayments.ts +0 -23
  433. package/src/features/payments/index.ts +0 -6
  434. package/src/features/payments/manifest.ts +0 -14
  435. package/src/features/payments/messages/en.json +0 -11
  436. package/src/features/payments/repository/payments.repository.ts +0 -57
  437. package/src/features/payments/schemas/index.ts +0 -47
  438. package/src/features/payments/types/index.ts +0 -50
  439. package/src/features/pre-orders/api/[id]/route.ts +0 -143
  440. package/src/features/pre-orders/api/[slug]/route.ts +0 -61
  441. package/src/features/pre-orders/api/admin/[id]/route.ts +0 -105
  442. package/src/features/pre-orders/api/admin/route.ts +0 -69
  443. package/src/features/pre-orders/api/route.ts +0 -96
  444. package/src/features/pre-orders/columns/index.ts +0 -90
  445. package/src/features/pre-orders/components/PreOrderBadge.tsx +0 -52
  446. package/src/features/pre-orders/components/PreorderCard.tsx +0 -90
  447. package/src/features/pre-orders/components/index.ts +0 -1
  448. package/src/features/pre-orders/hooks/usePreOrders.ts +0 -31
  449. package/src/features/pre-orders/index.ts +0 -7
  450. package/src/features/pre-orders/manifest.ts +0 -19
  451. package/src/features/pre-orders/messages/en.json +0 -13
  452. package/src/features/pre-orders/repository/pre-orders.repository.ts +0 -75
  453. package/src/features/pre-orders/repository/preorders.repository.ts +0 -24
  454. package/src/features/pre-orders/schemas/index.ts +0 -28
  455. package/src/features/pre-orders/server.ts +0 -12
  456. package/src/features/pre-orders/types/index.ts +0 -49
  457. package/src/features/products/api/[id]/route.ts +0 -200
  458. package/src/features/products/api/route.ts +0 -242
  459. package/src/features/products/columns/index.ts +0 -90
  460. package/src/features/products/components/AuctionDetailView.tsx +0 -58
  461. package/src/features/products/components/AuctionsView.tsx +0 -48
  462. package/src/features/products/components/BidHistory.tsx +0 -83
  463. package/src/features/products/components/BuyBar.tsx +0 -36
  464. package/src/features/products/components/MakeOfferForm.tsx +0 -43
  465. package/src/features/products/components/PlaceBidForm.tsx +0 -42
  466. package/src/features/products/components/PreOrderDetailView.tsx +0 -50
  467. package/src/features/products/components/PreOrdersView.tsx +0 -39
  468. package/src/features/products/components/ProductDetailView.tsx +0 -52
  469. package/src/features/products/components/ProductFeatureBadges.tsx +0 -192
  470. package/src/features/products/components/ProductGrid.tsx +0 -424
  471. package/src/features/products/components/ProductInfo.tsx +0 -44
  472. package/src/features/products/components/ProductTabs.tsx +0 -84
  473. package/src/features/products/components/ProductsView.tsx +0 -48
  474. package/src/features/products/components/RelatedProducts.tsx +0 -51
  475. package/src/features/products/components/index.ts +0 -28
  476. package/src/features/products/hooks/useProductDetail.ts +0 -44
  477. package/src/features/products/hooks/useProducts.ts +0 -112
  478. package/src/features/products/index.ts +0 -9
  479. package/src/features/products/manifest.ts +0 -18
  480. package/src/features/products/messages/en.json +0 -11
  481. package/src/features/products/repository/products.repository.ts +0 -83
  482. package/src/features/products/schemas/index.ts +0 -185
  483. package/src/features/products/server.ts +0 -12
  484. package/src/features/products/types/index.ts +0 -142
  485. package/src/features/products/utils/listing-type.ts +0 -12
  486. package/src/features/promotions/api/route.ts +0 -105
  487. package/src/features/promotions/columns/index.ts +0 -60
  488. package/src/features/promotions/components/CouponCard.tsx +0 -79
  489. package/src/features/promotions/components/PromotionsView.tsx +0 -129
  490. package/src/features/promotions/components/index.ts +0 -7
  491. package/src/features/promotions/hooks/usePromotions.ts +0 -59
  492. package/src/features/promotions/index.ts +0 -7
  493. package/src/features/promotions/manifest.ts +0 -16
  494. package/src/features/promotions/messages/en.json +0 -20
  495. package/src/features/promotions/repository/promotions.repository.ts +0 -62
  496. package/src/features/promotions/schemas/index.ts +0 -63
  497. package/src/features/promotions/server.ts +0 -7
  498. package/src/features/promotions/types/index.ts +0 -65
  499. package/src/features/reviews/api/[id]/route.ts +0 -163
  500. package/src/features/reviews/api/route.ts +0 -216
  501. package/src/features/reviews/columns/index.ts +0 -57
  502. package/src/features/reviews/components/ReviewModal.tsx +0 -133
  503. package/src/features/reviews/components/ReviewSummary.tsx +0 -82
  504. package/src/features/reviews/components/ReviewsList.tsx +0 -182
  505. package/src/features/reviews/components/ReviewsListView.tsx +0 -100
  506. package/src/features/reviews/components/index.ts +0 -11
  507. package/src/features/reviews/hooks/useReviews.ts +0 -67
  508. package/src/features/reviews/index.ts +0 -7
  509. package/src/features/reviews/manifest.ts +0 -12
  510. package/src/features/reviews/messages/en.json +0 -10
  511. package/src/features/reviews/repository/reviews.repository.ts +0 -69
  512. package/src/features/reviews/schemas/index.ts +0 -74
  513. package/src/features/reviews/server.ts +0 -12
  514. package/src/features/reviews/types/index.ts +0 -68
  515. package/src/features/search/api/route.ts +0 -100
  516. package/src/features/search/columns/index.ts +0 -70
  517. package/src/features/search/components/SearchFiltersRow.tsx +0 -118
  518. package/src/features/search/components/SearchResultsSection.tsx +0 -195
  519. package/src/features/search/components/SearchView.tsx +0 -99
  520. package/src/features/search/components/index.ts +0 -6
  521. package/src/features/search/hooks/useSearch.ts +0 -41
  522. package/src/features/search/index.ts +0 -7
  523. package/src/features/search/manifest.ts +0 -12
  524. package/src/features/search/messages/en.json +0 -15
  525. package/src/features/search/repository/search.repository.ts +0 -64
  526. package/src/features/search/schemas/index.ts +0 -36
  527. package/src/features/search/server.ts +0 -3
  528. package/src/features/search/types/index.ts +0 -59
  529. package/src/features/seller/api/coupons/route.ts +0 -57
  530. package/src/features/seller/api/offers/route.ts +0 -73
  531. package/src/features/seller/api/products/route.ts +0 -75
  532. package/src/features/seller/api/store/route.ts +0 -41
  533. package/src/features/seller/columns/index.ts +0 -103
  534. package/src/features/seller/components/SellerAddressesView.tsx +0 -32
  535. package/src/features/seller/components/SellerAnalyticsView.tsx +0 -38
  536. package/src/features/seller/components/SellerAuctionsView.tsx +0 -48
  537. package/src/features/seller/components/SellerCouponsView.tsx +0 -48
  538. package/src/features/seller/components/SellerCreateProductView.tsx +0 -27
  539. package/src/features/seller/components/SellerDashboardView.tsx +0 -41
  540. package/src/features/seller/components/SellerEditProductView.tsx +0 -27
  541. package/src/features/seller/components/SellerGuideView.tsx +0 -34
  542. package/src/features/seller/components/SellerOffersView.tsx +0 -46
  543. package/src/features/seller/components/SellerOrdersView.tsx +0 -46
  544. package/src/features/seller/components/SellerPayoutHistoryTable.tsx +0 -44
  545. package/src/features/seller/components/SellerPayoutSettingsView.tsx +0 -27
  546. package/src/features/seller/components/SellerPayoutStats.tsx +0 -24
  547. package/src/features/seller/components/SellerPayoutsView.tsx +0 -46
  548. package/src/features/seller/components/SellerProductsView.tsx +0 -51
  549. package/src/features/seller/components/SellerShippingView.tsx +0 -30
  550. package/src/features/seller/components/SellerSidebar.tsx +0 -84
  551. package/src/features/seller/components/SellerStatCard.tsx +0 -44
  552. package/src/features/seller/components/SellerStoreSetupView.tsx +0 -31
  553. package/src/features/seller/components/SellerStoreView.tsx +0 -27
  554. package/src/features/seller/components/SellerStorefrontView.tsx +0 -49
  555. package/src/features/seller/components/SellersListView.tsx +0 -43
  556. package/src/features/seller/components/analytics/SellerAnalyticsStats.tsx +0 -87
  557. package/src/features/seller/components/analytics/SellerRevenueChart.tsx +0 -99
  558. package/src/features/seller/components/analytics/SellerTopProducts.tsx +0 -76
  559. package/src/features/seller/components/analytics/index.ts +0 -3
  560. package/src/features/seller/components/index.ts +0 -47
  561. package/src/features/seller/hooks/useSellerPayouts.ts +0 -51
  562. package/src/features/seller/hooks/useSellerStore.ts +0 -60
  563. package/src/features/seller/index.ts +0 -12
  564. package/src/features/seller/manifest.ts +0 -76
  565. package/src/features/seller/messages/en.json +0 -32
  566. package/src/features/seller/permission-map.ts +0 -18
  567. package/src/features/seller/repository/seller.repository.ts +0 -100
  568. package/src/features/seller/schemas/index.ts +0 -113
  569. package/src/features/seller/server.ts +0 -10
  570. package/src/features/seller/types/index.ts +0 -185
  571. package/src/features/stores/api/[storeSlug]/auctions/route.ts +0 -134
  572. package/src/features/stores/api/[storeSlug]/products/route.ts +0 -139
  573. package/src/features/stores/api/[storeSlug]/reviews/route.ts +0 -155
  574. package/src/features/stores/api/[storeSlug]/route.ts +0 -120
  575. package/src/features/stores/api/route.ts +0 -128
  576. package/src/features/stores/columns/index.ts +0 -58
  577. package/src/features/stores/components/StoreAboutView.tsx +0 -134
  578. package/src/features/stores/components/StoreAuctionsView.tsx +0 -46
  579. package/src/features/stores/components/StoreHeader.tsx +0 -115
  580. package/src/features/stores/components/StoreNavTabs.tsx +0 -77
  581. package/src/features/stores/components/StoreProductsView.tsx +0 -77
  582. package/src/features/stores/components/StoreReviewsView.tsx +0 -45
  583. package/src/features/stores/components/StoresListView.tsx +0 -142
  584. package/src/features/stores/components/index.ts +0 -12
  585. package/src/features/stores/hooks/useStores.ts +0 -130
  586. package/src/features/stores/index.ts +0 -7
  587. package/src/features/stores/manifest.ts +0 -37
  588. package/src/features/stores/messages/en.json +0 -21
  589. package/src/features/stores/repository/stores.repository.ts +0 -51
  590. package/src/features/stores/schemas/index.ts +0 -42
  591. package/src/features/stores/server.ts +0 -11
  592. package/src/features/stores/types/index.ts +0 -123
  593. package/src/features/user/components/BecomeSellerView.tsx +0 -36
  594. package/src/features/user/components/MessagesView.tsx +0 -37
  595. package/src/features/user/components/OrderDetailView.tsx +0 -36
  596. package/src/features/user/components/ProfileView.tsx +0 -33
  597. package/src/features/user/components/UserAccountHub.tsx +0 -30
  598. package/src/features/user/components/UserAddressesView.tsx +0 -32
  599. package/src/features/user/components/UserNotificationsView.tsx +0 -38
  600. package/src/features/user/components/UserOffersView.tsx +0 -35
  601. package/src/features/user/components/UserOrdersView.tsx +0 -39
  602. package/src/features/user/components/UserSettingsView.tsx +0 -31
  603. package/src/features/user/components/UserSidebar.tsx +0 -27
  604. package/src/features/user/components/index.ts +0 -22
  605. package/src/features/user/index.ts +0 -1
  606. package/src/features/whatsapp-bot/api/send-status/route.ts +0 -48
  607. package/src/features/whatsapp-bot/api/webhook/route.ts +0 -55
  608. package/src/features/whatsapp-bot/components/WhatsAppChatButton.tsx +0 -38
  609. package/src/features/whatsapp-bot/components/index.ts +0 -1
  610. package/src/features/whatsapp-bot/helpers/whatsapp.ts +0 -137
  611. package/src/features/whatsapp-bot/index.ts +0 -4
  612. package/src/features/whatsapp-bot/manifest.ts +0 -15
  613. package/src/features/whatsapp-bot/messages/en.json +0 -7
  614. package/src/features/whatsapp-bot/types/index.ts +0 -61
  615. package/src/features/wishlist/columns/index.ts +0 -65
  616. package/src/features/wishlist/components/WishlistPage.tsx +0 -118
  617. package/src/features/wishlist/components/WishlistToggleButton.tsx +0 -68
  618. package/src/features/wishlist/components/WishlistView.tsx +0 -150
  619. package/src/features/wishlist/components/index.ts +0 -4
  620. package/src/features/wishlist/hooks/useUserWishlist.ts +0 -39
  621. package/src/features/wishlist/hooks/useWishlist.ts +0 -31
  622. package/src/features/wishlist/index.ts +0 -8
  623. package/src/features/wishlist/manifest.ts +0 -14
  624. package/src/features/wishlist/messages/en.json +0 -7
  625. package/src/features/wishlist/repository/wishlist.repository.ts +0 -43
  626. package/src/features/wishlist/schemas/index.ts +0 -25
  627. package/src/features/wishlist/types/index.ts +0 -17
  628. package/src/http/ApiClient.ts +0 -247
  629. package/src/http/index.ts +0 -10
  630. package/src/index.ts +0 -22
  631. package/src/instrumentation/index.ts +0 -77
  632. package/src/monitoring/cache-metrics.ts +0 -105
  633. package/src/monitoring/client-logger.ts +0 -83
  634. package/src/monitoring/error-tracking.ts +0 -115
  635. package/src/monitoring/index.ts +0 -52
  636. package/src/monitoring/performance.ts +0 -64
  637. package/src/monitoring/runtime.ts +0 -33
  638. package/src/monitoring/server-logger.ts +0 -93
  639. package/src/next/IAuthVerifier.ts +0 -56
  640. package/src/next/api/api-response.ts +0 -72
  641. package/src/next/api/apiHandler.ts +0 -178
  642. package/src/next/api/errorHandler.ts +0 -125
  643. package/src/next/api/routeHandler.ts +0 -175
  644. package/src/next/cache-middleware.ts +0 -112
  645. package/src/next/components/ErrorView.tsx +0 -73
  646. package/src/next/components/GlobalError.tsx +0 -75
  647. package/src/next/components/NotFoundView.tsx +0 -56
  648. package/src/next/components/UnauthorizedView.tsx +0 -61
  649. package/src/next/index.ts +0 -82
  650. package/src/next/middleware/chain.ts +0 -117
  651. package/src/next/middleware/index.ts +0 -14
  652. package/src/next/middleware/pii-redactor.ts +0 -112
  653. package/src/next/middleware/pii-scrubber.ts +0 -56
  654. package/src/next/middleware/types.ts +0 -26
  655. package/src/next/request-helpers.ts +0 -76
  656. package/src/next/routing/route-map.ts +0 -221
  657. package/src/providers/auth-firebase/browser-stub.ts +0 -32
  658. package/src/providers/auth-firebase/helpers.ts +0 -150
  659. package/src/providers/auth-firebase/index.ts +0 -26
  660. package/src/providers/auth-firebase/provider.ts +0 -163
  661. package/src/providers/auth-firebase/session.ts +0 -111
  662. package/src/providers/db-firebase/admin-app-lite.ts +0 -66
  663. package/src/providers/db-firebase/admin-auth-lite.ts +0 -16
  664. package/src/providers/db-firebase/admin-storage-lite.ts +0 -19
  665. package/src/providers/db-firebase/admin.ts +0 -217
  666. package/src/providers/db-firebase/base.ts +0 -243
  667. package/src/providers/db-firebase/browser-stub.ts +0 -47
  668. package/src/providers/db-firebase/helpers.ts +0 -88
  669. package/src/providers/db-firebase/index.ts +0 -60
  670. package/src/providers/db-firebase/realtime.ts +0 -185
  671. package/src/providers/db-firebase/sieve.ts +0 -136
  672. package/src/providers/email-resend/index.ts +0 -16
  673. package/src/providers/email-resend/provider.ts +0 -103
  674. package/src/providers/payment-razorpay/index.ts +0 -165
  675. package/src/providers/shipping-shiprocket/index.ts +0 -402
  676. package/src/providers/storage-firebase/index.ts +0 -17
  677. package/src/providers/storage-firebase/provider.ts +0 -131
  678. package/src/react/ErrorBoundary.tsx +0 -130
  679. package/src/react/hooks/useBreakpoint.ts +0 -41
  680. package/src/react/hooks/useBulkAction.ts +0 -161
  681. package/src/react/hooks/useBulkSelection.ts +0 -119
  682. package/src/react/hooks/useCamera.ts +0 -191
  683. package/src/react/hooks/useClickOutside.ts +0 -87
  684. package/src/react/hooks/useContainerGrid.ts +0 -77
  685. package/src/react/hooks/useCountdown.ts +0 -73
  686. package/src/react/hooks/useGesture.ts +0 -255
  687. package/src/react/hooks/useKeyPress.ts +0 -113
  688. package/src/react/hooks/useLongPress.ts +0 -62
  689. package/src/react/hooks/useMediaQuery.ts +0 -40
  690. package/src/react/hooks/usePendingFilters.ts +0 -138
  691. package/src/react/hooks/usePendingTable.ts +0 -84
  692. package/src/react/hooks/usePullToRefresh.ts +0 -111
  693. package/src/react/hooks/useSwipe.ts +0 -240
  694. package/src/react/hooks/useUnsavedChanges.ts +0 -104
  695. package/src/react/hooks/useUrlTable.ts +0 -189
  696. package/src/react/hooks/useVisibleItems.ts +0 -110
  697. package/src/react/index.ts +0 -99
  698. package/src/react/useModalStack.ts +0 -86
  699. package/src/security/authorization.ts +0 -92
  700. package/src/security/csp.ts +0 -44
  701. package/src/security/index.ts +0 -50
  702. package/src/security/pii-encrypt.ts +0 -117
  703. package/src/security/pii-redact.ts +0 -133
  704. package/src/security/rate-limit.ts +0 -170
  705. package/src/security/rbac/Can.tsx +0 -50
  706. package/src/security/rbac/default-roles.ts +0 -86
  707. package/src/security/rbac/hook.ts +0 -55
  708. package/src/security/rbac/index.ts +0 -14
  709. package/src/security/rbac/middleware.ts +0 -103
  710. package/src/security/rbac/resolver.ts +0 -69
  711. package/src/security/rbac/server.ts +0 -52
  712. package/src/security/rbac/types.ts +0 -27
  713. package/src/seed/defaults/categories.ts +0 -13
  714. package/src/seed/defaults/faqs.ts +0 -40
  715. package/src/seed/defaults/homepage-sections.ts +0 -63
  716. package/src/seed/factories/address.factory.ts +0 -106
  717. package/src/seed/factories/bid.factory.ts +0 -50
  718. package/src/seed/factories/blog-post.factory.ts +0 -40
  719. package/src/seed/factories/carousel.factory.ts +0 -30
  720. package/src/seed/factories/cart.factory.ts +0 -66
  721. package/src/seed/factories/category.factory.ts +0 -30
  722. package/src/seed/factories/coupon.factory.ts +0 -67
  723. package/src/seed/factories/faq.factory.ts +0 -28
  724. package/src/seed/factories/homepage-section.factory.ts +0 -35
  725. package/src/seed/factories/notification.factory.ts +0 -68
  726. package/src/seed/factories/order.factory.ts +0 -43
  727. package/src/seed/factories/payout.factory.ts +0 -62
  728. package/src/seed/factories/product.factory.ts +0 -120
  729. package/src/seed/factories/review.factory.ts +0 -67
  730. package/src/seed/factories/session.factory.ts +0 -49
  731. package/src/seed/factories/store.factory.ts +0 -69
  732. package/src/seed/factories/user.factory.ts +0 -88
  733. package/src/seed/index.ts +0 -84
  734. package/src/seed/runner.ts +0 -57
  735. package/src/seed/test-utils.ts +0 -155
  736. package/src/seed/types.ts +0 -40
  737. package/src/seo/index.ts +0 -2
  738. package/src/seo/json-ld.ts +0 -241
  739. package/src/seo/metadata.ts +0 -302
  740. package/src/style/tailwind/index.ts +0 -66
  741. package/src/style/vanilla/index.ts +0 -57
  742. package/src/tokens/index.ts +0 -864
  743. package/src/tokens/tokens.css +0 -221
  744. package/src/ui/DataTable.tsx +0 -655
  745. package/src/ui/animation.helper.ts +0 -20
  746. package/src/ui/color.helper.ts +0 -37
  747. package/src/ui/components/Accordion.tsx +0 -189
  748. package/src/ui/components/ActiveFilterChips.tsx +0 -81
  749. package/src/ui/components/Alert.tsx +0 -167
  750. package/src/ui/components/Badge.tsx +0 -65
  751. package/src/ui/components/Breadcrumb.tsx +0 -61
  752. package/src/ui/components/BulkActionBar.tsx +0 -246
  753. package/src/ui/components/Button.tsx +0 -75
  754. package/src/ui/components/CountdownDisplay.tsx +0 -87
  755. package/src/ui/components/DescriptionField.tsx +0 -55
  756. package/src/ui/components/Div.tsx +0 -29
  757. package/src/ui/components/Divider.tsx +0 -52
  758. package/src/ui/components/Drawer.tsx +0 -178
  759. package/src/ui/components/Form.tsx +0 -25
  760. package/src/ui/components/FormGrid.tsx +0 -82
  761. package/src/ui/components/HorizontalScroller.tsx +0 -183
  762. package/src/ui/components/IconButton.tsx +0 -71
  763. package/src/ui/components/ImageLightbox.tsx +0 -187
  764. package/src/ui/components/Input.tsx +0 -17
  765. package/src/ui/components/ItemRow.tsx +0 -38
  766. package/src/ui/components/Layout.tsx +0 -391
  767. package/src/ui/components/ListingLayout.tsx +0 -514
  768. package/src/ui/components/Modal.tsx +0 -162
  769. package/src/ui/components/Pagination.tsx +0 -182
  770. package/src/ui/components/PriceDisplay.tsx +0 -63
  771. package/src/ui/components/Progress.tsx +0 -154
  772. package/src/ui/components/RatingDisplay.tsx +0 -56
  773. package/src/ui/components/Select.tsx +0 -221
  774. package/src/ui/components/Semantic.tsx +0 -257
  775. package/src/ui/components/SideModal.tsx +0 -137
  776. package/src/ui/components/Skeleton.tsx +0 -82
  777. package/src/ui/components/Slider.tsx +0 -35
  778. package/src/ui/components/SortDropdown.tsx +0 -43
  779. package/src/ui/components/Spinner.tsx +0 -48
  780. package/src/ui/components/StarRating.tsx +0 -85
  781. package/src/ui/components/StatsGrid.tsx +0 -56
  782. package/src/ui/components/StatusBadge.tsx +0 -130
  783. package/src/ui/components/StepperNav.tsx +0 -89
  784. package/src/ui/components/SummaryCard.tsx +0 -66
  785. package/src/ui/components/TabStrip.tsx +0 -142
  786. package/src/ui/components/TablePagination.tsx +0 -134
  787. package/src/ui/components/TagInput.tsx +0 -133
  788. package/src/ui/components/TextLink.tsx +0 -68
  789. package/src/ui/components/Textarea.tsx +0 -17
  790. package/src/ui/components/Tooltip.tsx +0 -190
  791. package/src/ui/components/Typography.tsx +0 -270
  792. package/src/ui/components/ViewToggle.tsx +0 -133
  793. package/src/ui/index.ts +0 -248
  794. package/src/ui/rich-text/RichText.tsx +0 -243
  795. package/src/ui/rich-text/index.ts +0 -2
  796. package/src/ui/style.helper.ts +0 -18
  797. package/src/utils/animation.helper.ts +0 -22
  798. package/src/utils/array.helper.ts +0 -73
  799. package/src/utils/color.helper.ts +0 -57
  800. package/src/utils/cookie.converter.ts +0 -32
  801. package/src/utils/date.formatter.ts +0 -228
  802. package/src/utils/event-manager.ts +0 -168
  803. package/src/utils/filter.helper.ts +0 -24
  804. package/src/utils/id-generators.ts +0 -629
  805. package/src/utils/index.ts +0 -31
  806. package/src/utils/media-field.ts +0 -13
  807. package/src/utils/number.formatter.ts +0 -107
  808. package/src/utils/object.helper.ts +0 -111
  809. package/src/utils/pagination.helper.ts +0 -46
  810. package/src/utils/sorting.helper.ts +0 -21
  811. package/src/utils/string.formatter.ts +0 -178
  812. package/src/utils/type.converter.ts +0 -86
  813. package/src/validation/email.validator.ts +0 -37
  814. package/src/validation/index.ts +0 -17
  815. package/src/validation/input.validator.ts +0 -38
  816. package/src/validation/password.validator.ts +0 -97
  817. package/src/validation/phone.validator.ts +0 -38
  818. package/src/validation/schemas.ts +0 -106
  819. package/src/validation/url.validator.ts +0 -46
  820. package/src/validation/zod-error-map.ts +0 -96
@@ -1,87 +0,0 @@
1
- "use client";
2
-
3
- import { useEffect, useRef, RefObject } from "react";
4
-
5
- /**
6
- * Configuration options for useClickOutside hook
7
- */
8
- export interface UseClickOutsideOptions {
9
- /** Whether the hook is enabled */
10
- enabled?: boolean;
11
- /** Event type to listen for (default: 'mousedown') */
12
- eventType?: "mousedown" | "mouseup" | "click";
13
- /** Refs to additional elements that should be considered "inside" */
14
- additionalRefs?: RefObject<HTMLElement | null>[];
15
- }
16
-
17
- const EMPTY_REFS: RefObject<HTMLElement | null>[] = [];
18
-
19
- /**
20
- * useClickOutside Hook
21
- *
22
- * Detects clicks outside of specified element(s) and triggers a callback.
23
- * Commonly used for dropdowns, modals, and popovers.
24
- *
25
- * @param ref - Primary element reference
26
- * @param callback - Function to call when clicking outside
27
- * @param options - Configuration options
28
- *
29
- * @example
30
- * ```tsx
31
- * const dropdownRef = useRef<HTMLDivElement>(null);
32
- * const triggerRef = useRef<HTMLButtonElement>(null);
33
- *
34
- * useClickOutside(dropdownRef, () => {
35
- * setIsOpen(false);
36
- * }, {
37
- * additionalRefs: [triggerRef],
38
- * enabled: isOpen,
39
- * });
40
- * ```
41
- */
42
- export function useClickOutside<T extends HTMLElement = HTMLElement>(
43
- ref: RefObject<T | null>,
44
- callback: (event: MouseEvent | TouchEvent) => void,
45
- options: UseClickOutsideOptions = {},
46
- ) {
47
- const {
48
- enabled = true,
49
- eventType = "mousedown",
50
- additionalRefs = EMPTY_REFS,
51
- } = options;
52
-
53
- // Store callback in a ref to avoid re-subscribing listeners on every render
54
- const callbackRef = useRef(callback);
55
- useEffect(() => {
56
- callbackRef.current = callback;
57
- }, [callback]);
58
-
59
- useEffect(() => {
60
- if (!enabled) return;
61
-
62
- const handleClickOutside = (event: MouseEvent | TouchEvent) => {
63
- // Check if click is outside the primary ref
64
- if (ref.current && !ref.current.contains(event.target as Node)) {
65
- // Check if click is outside all additional refs
66
- const isOutsideAll = additionalRefs.every(
67
- (additionalRef) =>
68
- !additionalRef.current ||
69
- !additionalRef.current.contains(event.target as Node),
70
- );
71
-
72
- if (isOutsideAll) {
73
- callbackRef.current(event);
74
- }
75
- }
76
- };
77
-
78
- // Add event listeners for both mouse and touch
79
- document.addEventListener(eventType, handleClickOutside);
80
- document.addEventListener("touchstart", handleClickOutside);
81
-
82
- return () => {
83
- document.removeEventListener(eventType, handleClickOutside);
84
- document.removeEventListener("touchstart", handleClickOutside);
85
- };
86
- }, [ref, enabled, eventType, additionalRefs]);
87
- }
@@ -1,77 +0,0 @@
1
- // appkit/src/react/hooks/useContainerGrid.ts
2
- "use client";
3
- import { useRef, useState, useEffect } from "react";
4
-
5
- export interface UseContainerGridOptions {
6
- /** Minimum width of each grid item in pixels */
7
- minItemWidth: number;
8
- /** Gap between items in pixels (default: 16) */
9
- gap?: number;
10
- /** Minimum column count (default: 1) */
11
- minCols?: number;
12
- /** Maximum column count (default: Infinity) */
13
- maxCols?: number;
14
- }
15
-
16
- export interface UseContainerGridResult {
17
- /** Attach to the grid container element */
18
- containerRef: React.RefObject<HTMLElement | null>;
19
- /** Current computed column count */
20
- cols: number;
21
- }
22
-
23
- /**
24
- * `useContainerGrid` — compute the number of columns that fit in a container
25
- * using a `ResizeObserver`. Drives fluid skeleton loader card counts.
26
- *
27
- * **Formula**: `cols = clamp(minCols, floor((width + gap) / (minItemWidth + gap)), maxCols)`
28
- *
29
- * Pair with the `fluid-grid-*` CSS utilities in `tailwind.config.js` so the
30
- * skeleton count always matches the visible grid columns.
31
- *
32
- * @example
33
- * ```tsx
34
- * const { containerRef, cols } = useContainerGrid({ minItemWidth: 220 });
35
- *
36
- * return (
37
- * <ul ref={containerRef as React.RefObject<HTMLUListElement>} className="fluid-grid-card gap-4">
38
- * {isLoading
39
- * ? Array.from({ length: cols * 2 }).map((_, i) => <li key={i}><Skeleton /></li>)
40
- * : items.map((item) => <li key={item.id}><ProductCard product={item} /></li>)}
41
- * </ul>
42
- * );
43
- * ```
44
- */
45
- export function useContainerGrid({
46
- minItemWidth,
47
- gap = 16,
48
- minCols = 1,
49
- maxCols = Infinity,
50
- }: UseContainerGridOptions): UseContainerGridResult {
51
- const containerRef = useRef<HTMLElement>(null);
52
- const [cols, setCols] = useState(minCols);
53
-
54
- useEffect(() => {
55
- const el = containerRef.current;
56
- if (!el) return;
57
-
58
- const compute = (width: number) => {
59
- const raw = Math.floor((width + gap) / (minItemWidth + gap));
60
- const clamped = Math.min(
61
- maxCols === Infinity ? raw : maxCols,
62
- Math.max(minCols, raw),
63
- );
64
- setCols(clamped);
65
- };
66
-
67
- const ro = new ResizeObserver(([entry]) => {
68
- if (entry) compute(entry.contentRect.width);
69
- });
70
- ro.observe(el);
71
- compute(el.getBoundingClientRect().width);
72
-
73
- return () => ro.disconnect();
74
- }, [minItemWidth, gap, minCols, maxCols]);
75
-
76
- return { containerRef, cols };
77
- }
@@ -1,73 +0,0 @@
1
- import { useState, useEffect } from "react";
2
-
3
- /**
4
- * useCountdown — tracks time remaining until a future date.
5
- *
6
- * Returns `null` when the target date has passed or is not provided.
7
- *
8
- * Supports:
9
- * - `Date` objects
10
- * - ISO strings / numeric timestamps
11
- * - Firestore Timestamp JSON shape `{ _seconds, _nanoseconds }` (serialised
12
- * by Firestore's REST API — no Firestore SDK import needed)
13
- */
14
- export interface CountdownRemaining {
15
- days: number;
16
- hours: number;
17
- minutes: number;
18
- seconds: number;
19
- }
20
-
21
- /** Resolve any date-like value into a ms timestamp. */
22
- function resolveMs(endDate: unknown): number {
23
- if (!endDate) return NaN;
24
- if (endDate instanceof Date) return endDate.getTime();
25
- // Firestore Timestamp JSON shape: { _seconds, _nanoseconds }
26
- if (
27
- typeof endDate === "object" &&
28
- endDate !== null &&
29
- "_seconds" in endDate &&
30
- typeof (endDate as Record<string, unknown>)._seconds === "number"
31
- ) {
32
- return (endDate as { _seconds: number })._seconds * 1000;
33
- }
34
- // ISO string or numeric string
35
- return new Date(endDate as string).getTime();
36
- }
37
-
38
- /**
39
- * @example
40
- * ```tsx
41
- * const remaining = useCountdown(auction.endsAt);
42
- * if (!remaining) return <span>Ended</span>;
43
- * return <span>{remaining.hours}h {remaining.minutes}m {remaining.seconds}s</span>;
44
- * ```
45
- */
46
- export function useCountdown(
47
- endDate: Date | string | undefined,
48
- ): CountdownRemaining | null {
49
- const getRemaining = (): CountdownRemaining | null => {
50
- if (!endDate) return null;
51
- const ms = resolveMs(endDate);
52
- if (Number.isNaN(ms)) return null;
53
- const diff = ms - Date.now();
54
- if (diff <= 0) return null;
55
- return {
56
- days: Math.floor(diff / (1000 * 60 * 60 * 24)),
57
- hours: Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)),
58
- minutes: Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)),
59
- seconds: Math.floor((diff % (1000 * 60)) / 1000),
60
- };
61
- };
62
-
63
- const [remaining, setRemaining] = useState<CountdownRemaining | null>(
64
- getRemaining,
65
- );
66
-
67
- useEffect(() => {
68
- const id = setInterval(() => setRemaining(getRemaining()), 1000);
69
- return () => clearInterval(id);
70
- }, [endDate]);
71
-
72
- return remaining;
73
- }
@@ -1,255 +0,0 @@
1
- "use client";
2
-
3
- import { useRef, useEffect, RefObject } from "react";
4
-
5
- /**
6
- * Gesture types supported
7
- */
8
- export type GestureType = "tap" | "doubletap" | "pinch" | "rotate";
9
-
10
- /**
11
- * Configuration options for useGesture hook
12
- */
13
- export interface UseGestureOptions {
14
- /** Callback for tap gesture */
15
- onTap?: (x: number, y: number) => void;
16
- /** Callback for double tap gesture */
17
- onDoubleTap?: (x: number, y: number) => void;
18
- /** Callback for pinch gesture (zoom in/out) */
19
- onPinch?: (scale: number, distance: number) => void;
20
- /** Callback during pinching */
21
- onPinching?: (scale: number) => void;
22
- /** Callback for rotation gesture */
23
- onRotate?: (angle: number) => void;
24
- /** Callback during rotation */
25
- onRotating?: (angle: number) => void;
26
- /** Maximum time between taps for double tap (ms, default: 300) */
27
- doubleTapDelay?: number;
28
- /** Maximum movement allowed for tap (px, default: 10) */
29
- tapMovementThreshold?: number;
30
- /** Prevent default behavior */
31
- preventDefault?: boolean;
32
- }
33
-
34
- /**
35
- * useGesture Hook
36
- *
37
- * Detects various touch gestures including tap, double tap, pinch, and rotate.
38
- * Primarily designed for touch devices but also works with mouse for basic gestures.
39
- *
40
- * @param ref - Reference to the element to attach gesture handlers
41
- * @param options - Configuration options for gesture detection
42
- *
43
- * @example
44
- * ```tsx
45
- * const ref = useRef<HTMLDivElement>(null);
46
- *
47
- * useGesture(ref, {
48
- * onTap: (x, y) => console.log('Tapped at', x, y),
49
- * onDoubleTap: () => console.log('Double tapped'),
50
- * onPinch: (scale) => console.log('Pinch scale', scale),
51
- * });
52
- *
53
- * return <div ref={ref}>Touch me!</div>;
54
- * ```
55
- */
56
- export function useGesture<T extends HTMLElement = HTMLElement>(
57
- ref: RefObject<T | null>,
58
- options: UseGestureOptions = {},
59
- ) {
60
- const {
61
- onTap,
62
- onDoubleTap,
63
- onPinch,
64
- onPinching,
65
- onRotate,
66
- onRotating,
67
- doubleTapDelay = 300,
68
- tapMovementThreshold = 10,
69
- preventDefault = false,
70
- } = options;
71
-
72
- const touchStartRef = useRef<{ x: number; y: number; time: number } | null>(
73
- null,
74
- );
75
- const lastTapRef = useRef<number>(0);
76
- const initialPinchDistanceRef = useRef<number>(0);
77
- const initialRotationRef = useRef<number>(0);
78
-
79
- // Store callbacks in refs to avoid event listener churn
80
- const onTapRef = useRef(onTap);
81
- const onDoubleTapRef = useRef(onDoubleTap);
82
- const onPinchRef = useRef(onPinch);
83
- const onPinchingRef = useRef(onPinching);
84
- const onRotateRef = useRef(onRotate);
85
- const onRotatingRef = useRef(onRotating);
86
-
87
- useEffect(() => {
88
- onTapRef.current = onTap;
89
- }, [onTap]);
90
- useEffect(() => {
91
- onDoubleTapRef.current = onDoubleTap;
92
- }, [onDoubleTap]);
93
- useEffect(() => {
94
- onPinchRef.current = onPinch;
95
- }, [onPinch]);
96
- useEffect(() => {
97
- onPinchingRef.current = onPinching;
98
- }, [onPinching]);
99
- useEffect(() => {
100
- onRotateRef.current = onRotate;
101
- }, [onRotate]);
102
- useEffect(() => {
103
- onRotatingRef.current = onRotating;
104
- }, [onRotating]);
105
-
106
- useEffect(() => {
107
- const element = ref.current;
108
- if (!element) return;
109
-
110
- const getDistance = (touch1: Touch, touch2: Touch): number => {
111
- const dx = touch1.clientX - touch2.clientX;
112
- const dy = touch1.clientY - touch2.clientY;
113
- return Math.sqrt(dx * dx + dy * dy);
114
- };
115
-
116
- const getAngle = (touch1: Touch, touch2: Touch): number => {
117
- const dx = touch1.clientX - touch2.clientX;
118
- const dy = touch1.clientY - touch2.clientY;
119
- return Math.atan2(dy, dx) * (180 / Math.PI);
120
- };
121
-
122
- const handleTouchStart = (e: TouchEvent) => {
123
- if (preventDefault) e.preventDefault();
124
- const touch = e.touches[0];
125
- touchStartRef.current = {
126
- x: touch.clientX,
127
- y: touch.clientY,
128
- time: Date.now(),
129
- };
130
- if (e.touches.length === 2) {
131
- initialPinchDistanceRef.current = getDistance(
132
- e.touches[0],
133
- e.touches[1],
134
- );
135
- initialRotationRef.current = getAngle(e.touches[0], e.touches[1]);
136
- }
137
- };
138
-
139
- const handleTouchMove = (e: TouchEvent) => {
140
- if (!touchStartRef.current) return;
141
- if (
142
- e.touches.length === 2 &&
143
- (onPinchRef.current ||
144
- onPinchingRef.current ||
145
- onRotateRef.current ||
146
- onRotatingRef.current)
147
- ) {
148
- if (preventDefault) e.preventDefault();
149
- const currentDistance = getDistance(e.touches[0], e.touches[1]);
150
- const currentAngle = getAngle(e.touches[0], e.touches[1]);
151
- if (initialPinchDistanceRef.current > 0) {
152
- onPinchingRef.current?.(
153
- currentDistance / initialPinchDistanceRef.current,
154
- );
155
- }
156
- if (initialRotationRef.current !== 0) {
157
- onRotatingRef.current?.(currentAngle - initialRotationRef.current);
158
- }
159
- }
160
- };
161
-
162
- const handleTouchEnd = (e: TouchEvent) => {
163
- if (!touchStartRef.current) return;
164
- if (preventDefault) e.preventDefault();
165
- const touch = e.changedTouches[0];
166
- const deltaX = Math.abs(touch.clientX - touchStartRef.current.x);
167
- const deltaY = Math.abs(touch.clientY - touchStartRef.current.y);
168
-
169
- if (deltaX < tapMovementThreshold && deltaY < tapMovementThreshold) {
170
- const now = Date.now();
171
- const timeSinceLastTap = now - lastTapRef.current;
172
- if (onDoubleTapRef.current && timeSinceLastTap < doubleTapDelay) {
173
- onDoubleTapRef.current(
174
- touchStartRef.current.x,
175
- touchStartRef.current.y,
176
- );
177
- lastTapRef.current = 0;
178
- } else {
179
- onTapRef.current?.(touchStartRef.current.x, touchStartRef.current.y);
180
- lastTapRef.current = now;
181
- }
182
- }
183
-
184
- if (e.touches.length === 0 && initialPinchDistanceRef.current > 0) {
185
- const currentDistance = getDistance(
186
- e.changedTouches[0],
187
- e.changedTouches[1] || e.changedTouches[0],
188
- );
189
- onPinchRef.current?.(
190
- currentDistance / initialPinchDistanceRef.current,
191
- currentDistance,
192
- );
193
- initialPinchDistanceRef.current = 0;
194
- }
195
-
196
- if (e.touches.length === 0 && initialRotationRef.current !== 0) {
197
- const currentAngle = getAngle(
198
- e.changedTouches[0],
199
- e.changedTouches[1] || e.changedTouches[0],
200
- );
201
- onRotateRef.current?.(currentAngle - initialRotationRef.current);
202
- initialRotationRef.current = 0;
203
- }
204
-
205
- touchStartRef.current = null;
206
- };
207
-
208
- const handleMouseDown = (e: MouseEvent) => {
209
- if (preventDefault) e.preventDefault();
210
- touchStartRef.current = { x: e.clientX, y: e.clientY, time: Date.now() };
211
- };
212
-
213
- const handleMouseUp = (e: MouseEvent) => {
214
- if (!touchStartRef.current) return;
215
- if (preventDefault) e.preventDefault();
216
- const deltaX = Math.abs(e.clientX - touchStartRef.current.x);
217
- const deltaY = Math.abs(e.clientY - touchStartRef.current.y);
218
- if (deltaX < tapMovementThreshold && deltaY < tapMovementThreshold) {
219
- const now = Date.now();
220
- const timeSinceLastTap = now - lastTapRef.current;
221
- if (onDoubleTapRef.current && timeSinceLastTap < doubleTapDelay) {
222
- onDoubleTapRef.current(
223
- touchStartRef.current.x,
224
- touchStartRef.current.y,
225
- );
226
- lastTapRef.current = 0;
227
- } else {
228
- onTapRef.current?.(touchStartRef.current.x, touchStartRef.current.y);
229
- lastTapRef.current = now;
230
- }
231
- }
232
- touchStartRef.current = null;
233
- };
234
-
235
- element.addEventListener("touchstart", handleTouchStart, {
236
- passive: !preventDefault,
237
- });
238
- element.addEventListener("touchmove", handleTouchMove, {
239
- passive: !preventDefault,
240
- });
241
- element.addEventListener("touchend", handleTouchEnd, {
242
- passive: !preventDefault,
243
- });
244
- element.addEventListener("mousedown", handleMouseDown);
245
- element.addEventListener("mouseup", handleMouseUp);
246
-
247
- return () => {
248
- element.removeEventListener("touchstart", handleTouchStart);
249
- element.removeEventListener("touchmove", handleTouchMove);
250
- element.removeEventListener("touchend", handleTouchEnd);
251
- element.removeEventListener("mousedown", handleMouseDown);
252
- element.removeEventListener("mouseup", handleMouseUp);
253
- };
254
- }, [ref, doubleTapDelay, tapMovementThreshold, preventDefault]);
255
- }
@@ -1,113 +0,0 @@
1
- "use client";
2
-
3
- import { useEffect, useCallback, useRef, useMemo } from "react";
4
-
5
- /**
6
- * Key combination modifiers
7
- */
8
- export interface KeyModifiers {
9
- ctrl?: boolean;
10
- shift?: boolean;
11
- alt?: boolean;
12
- meta?: boolean; // Command key on Mac
13
- }
14
-
15
- /**
16
- * Configuration options for useKeyPress hook
17
- */
18
- export interface UseKeyPressOptions extends KeyModifiers {
19
- /** Whether the hook is enabled */
20
- enabled?: boolean;
21
- /** Event type to listen for (default: 'keydown') */
22
- eventType?: "keydown" | "keyup" | "keypress";
23
- /** Prevent default behavior */
24
- preventDefault?: boolean;
25
- /** Target element (default: document) */
26
- target?: HTMLElement | Document | Window;
27
- }
28
-
29
- /**
30
- * useKeyPress Hook
31
- *
32
- * Detects keyboard events with support for key combinations.
33
- * Useful for keyboard shortcuts and accessibility.
34
- *
35
- * @param key - Key or array of keys to listen for (e.g., 'Enter', 'Escape', ['a', 'A'])
36
- * @param callback - Function to call when key is pressed
37
- * @param options - Configuration options including modifiers
38
- *
39
- * @example
40
- * ```tsx
41
- * // Simple key press
42
- * useKeyPress('Escape', () => closeModal());
43
- *
44
- * // Key combination (Ctrl+S)
45
- * useKeyPress('s', handleSave, {
46
- * ctrl: true,
47
- * preventDefault: true,
48
- * });
49
- *
50
- * // Multiple keys
51
- * useKeyPress(['Enter', 'NumpadEnter'], handleSubmit);
52
- * ```
53
- */
54
- export function useKeyPress(
55
- key: string | string[],
56
- callback: (event: KeyboardEvent) => void,
57
- options: UseKeyPressOptions = {},
58
- ) {
59
- const {
60
- enabled = true,
61
- eventType = "keydown",
62
- preventDefault = false,
63
- ctrl = false,
64
- shift = false,
65
- alt = false,
66
- meta = false,
67
- target = typeof document !== "undefined" ? document : null,
68
- } = options;
69
-
70
- // Memoize keys array to avoid re-creation when `key` is a string
71
- const keys = useMemo(() => (Array.isArray(key) ? key : [key]), [key]);
72
-
73
- // Store callback in a ref to keep event listener stable
74
- const callbackRef = useRef(callback);
75
- useEffect(() => {
76
- callbackRef.current = callback;
77
- }, [callback]);
78
-
79
- const handleKeyPress = useCallback(
80
- (event: KeyboardEvent) => {
81
- // Check if pressed key matches any of the target keys
82
- const isKeyMatch = keys.some((k) => event.key === k || event.code === k);
83
-
84
- if (!isKeyMatch) return;
85
-
86
- // Check modifiers
87
- const modifiersMatch =
88
- event.ctrlKey === ctrl &&
89
- event.shiftKey === shift &&
90
- event.altKey === alt &&
91
- event.metaKey === meta;
92
-
93
- if (!modifiersMatch) return;
94
-
95
- if (preventDefault) {
96
- event.preventDefault();
97
- }
98
-
99
- callbackRef.current(event);
100
- },
101
- [keys, ctrl, shift, alt, meta, preventDefault],
102
- );
103
-
104
- useEffect(() => {
105
- if (!enabled || !target) return;
106
-
107
- target.addEventListener(eventType, handleKeyPress as EventListener);
108
-
109
- return () => {
110
- target.removeEventListener(eventType, handleKeyPress as EventListener);
111
- };
112
- }, [enabled, eventType, handleKeyPress, target]);
113
- }
@@ -1,62 +0,0 @@
1
- "use client";
2
-
3
- import { useRef, useCallback, useEffect } from "react";
4
-
5
- /**
6
- * useLongPress Hook
7
- *
8
- * Fires `callback` after the element is held for `ms` milliseconds.
9
- * A quick tap (pointer-up before the threshold) does NOT fire the callback.
10
- * Safe to use on both mouse and touch devices.
11
- *
12
- * @param callback - Function to call on long-press
13
- * @param ms - Hold duration in ms before callback fires (default: 500)
14
- *
15
- * @example
16
- * ```tsx
17
- * const longPress = useLongPress(() => openContextMenu(), 500);
18
- *
19
- * return (
20
- * <tr {...longPress}>…</tr>
21
- * );
22
- * ```
23
- */
24
- export function useLongPress(callback: () => void, ms = 500) {
25
- const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);
26
- // Keep callback ref stable — avoids re-attaching on every render
27
- const callbackRef = useRef(callback);
28
-
29
- useEffect(() => {
30
- callbackRef.current = callback;
31
- }, [callback]);
32
-
33
- const start = useCallback(() => {
34
- timerRef.current = setTimeout(() => {
35
- callbackRef.current();
36
- }, ms);
37
- }, [ms]);
38
-
39
- const cancel = useCallback(() => {
40
- if (timerRef.current !== null) {
41
- clearTimeout(timerRef.current);
42
- timerRef.current = null;
43
- }
44
- }, []);
45
-
46
- // Clean up any pending timer on unmount
47
- useEffect(() => {
48
- return () => {
49
- if (timerRef.current !== null) {
50
- clearTimeout(timerRef.current);
51
- }
52
- };
53
- }, []);
54
-
55
- return {
56
- onMouseDown: start,
57
- onMouseUp: cancel,
58
- onMouseLeave: cancel,
59
- onTouchStart: start,
60
- onTouchEnd: cancel,
61
- };
62
- }
@@ -1,40 +0,0 @@
1
- "use client";
2
-
3
- import { useState, useEffect } from "react";
4
-
5
- /**
6
- * useMediaQuery Hook
7
- *
8
- * Detects if a CSS media query matches the current viewport.
9
- * Returns true/false based on whether the query matches.
10
- *
11
- * @param query - CSS media query string (e.g., '(min-width: 768px)')
12
- * @returns boolean - Whether the media query currently matches
13
- *
14
- * @example
15
- * ```tsx
16
- * const isMobile = useMediaQuery('(max-width: 767px)');
17
- * const isDesktop = useMediaQuery('(min-width: 1024px)');
18
- * ```
19
- */
20
- export function useMediaQuery(query: string): boolean {
21
- const [matches, setMatches] = useState(
22
- // Lazy initializer: use real value on first client render, suppressing the flash.
23
- // Returns false on server (no window) — consistent with no-match default.
24
- () => typeof window !== "undefined" && window.matchMedia(query).matches,
25
- );
26
-
27
- useEffect(() => {
28
- if (typeof window === "undefined") return;
29
-
30
- const media = window.matchMedia(query);
31
- setMatches(media.matches);
32
-
33
- const listener = (e: MediaQueryListEvent) => setMatches(e.matches);
34
- media.addEventListener("change", listener);
35
-
36
- return () => media.removeEventListener("change", listener);
37
- }, [query]);
38
-
39
- return matches;
40
- }