@mohasinac/appkit 2.1.1 → 2.2.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 (2600) hide show
  1. package/README.md +36 -65
  2. package/dist/cli/index.d.ts +6 -9
  3. package/dist/cli/index.js +167 -141
  4. package/dist/client.d.ts +15 -0
  5. package/dist/client.js +15 -0
  6. package/dist/constants/api-endpoint-resolver.d.ts +34 -0
  7. package/dist/constants/api-endpoint-resolver.js +38 -0
  8. package/dist/constants/api-endpoints.d.ts +388 -0
  9. package/dist/constants/api-endpoints.js +342 -0
  10. package/dist/constants/cache-invalidation.d.ts +18 -0
  11. package/dist/constants/cache-invalidation.js +33 -0
  12. package/dist/constants/index.d.ts +14 -0
  13. package/dist/constants/index.js +14 -0
  14. package/dist/contracts/auth.d.ts +58 -0
  15. package/dist/contracts/auth.js +2 -0
  16. package/dist/contracts/client-auth.d.ts +22 -0
  17. package/dist/contracts/client-auth.js +17 -0
  18. package/dist/contracts/client-payment-gateway.d.ts +65 -0
  19. package/dist/contracts/client-payment-gateway.js +25 -0
  20. package/dist/contracts/client-realtime.d.ts +24 -0
  21. package/dist/contracts/client-realtime.js +18 -0
  22. package/dist/contracts/client-session.d.ts +37 -0
  23. package/dist/contracts/client-session.js +22 -0
  24. package/dist/contracts/config.d.ts +53 -0
  25. package/dist/contracts/config.js +2 -0
  26. package/dist/contracts/email.d.ts +30 -0
  27. package/dist/contracts/email.js +2 -0
  28. package/dist/contracts/extend.d.ts +270 -0
  29. package/dist/contracts/extend.js +75 -0
  30. package/dist/contracts/feature.d.ts +53 -0
  31. package/dist/contracts/feature.js +2 -0
  32. package/dist/contracts/field-ops.d.ts +31 -0
  33. package/dist/contracts/field-ops.js +35 -0
  34. package/dist/contracts/form.d.ts +89 -0
  35. package/dist/contracts/form.js +80 -0
  36. package/dist/contracts/index.d.ts +32 -728
  37. package/dist/contracts/index.js +13 -4
  38. package/dist/contracts/infra.d.ts +43 -0
  39. package/dist/contracts/infra.js +2 -0
  40. package/dist/contracts/payment.d.ts +39 -0
  41. package/dist/contracts/payment.js +2 -0
  42. package/dist/contracts/registry.d.ts +26 -0
  43. package/dist/contracts/registry.js +14 -0
  44. package/dist/contracts/repository.d.ts +127 -0
  45. package/dist/contracts/repository.js +28 -0
  46. package/dist/contracts/search.d.ts +44 -0
  47. package/dist/contracts/search.js +2 -0
  48. package/dist/contracts/shipping.d.ts +64 -0
  49. package/dist/contracts/shipping.js +2 -0
  50. package/dist/contracts/storage.d.ts +27 -0
  51. package/dist/contracts/storage.js +2 -0
  52. package/dist/contracts/style.d.ts +23 -0
  53. package/dist/contracts/style.js +2 -0
  54. package/dist/contracts/table.d.ts +104 -0
  55. package/dist/contracts/table.js +68 -0
  56. package/dist/core/CacheManager.d.ts +31 -0
  57. package/dist/core/CacheManager.js +63 -0
  58. package/dist/core/EventBus.d.ts +27 -0
  59. package/dist/core/EventBus.js +75 -0
  60. package/dist/core/Logger.d.ts +60 -0
  61. package/dist/core/Logger.js +153 -0
  62. package/dist/core/Queue.d.ts +43 -0
  63. package/dist/core/Queue.js +92 -0
  64. package/dist/core/StorageManager.d.ts +36 -0
  65. package/dist/core/StorageManager.js +159 -0
  66. package/dist/core/baseline-resolver.d.ts +52 -0
  67. package/dist/core/baseline-resolver.js +74 -0
  68. package/dist/core/browser.d.ts +18 -0
  69. package/dist/core/browser.js +9 -0
  70. package/dist/core/copilot-log.repository.d.ts +44 -0
  71. package/dist/core/copilot-log.repository.js +61 -0
  72. package/dist/core/hooks/useSiteSettings.d.ts +1 -0
  73. package/dist/core/hooks/useSiteSettings.js +11 -0
  74. package/dist/core/index.d.ts +31 -326
  75. package/dist/core/index.js +21 -7
  76. package/dist/core/integration-keys.d.ts +30 -0
  77. package/dist/core/integration-keys.js +55 -0
  78. package/dist/core/mutation-events.d.ts +147 -0
  79. package/dist/core/mutation-events.js +193 -0
  80. package/dist/core/newsletter-actions.d.ts +20 -0
  81. package/dist/core/newsletter-actions.js +28 -0
  82. package/dist/core/newsletter.repository.d.ts +55 -0
  83. package/dist/core/newsletter.repository.js +109 -0
  84. package/dist/core/server-action.d.ts +114 -0
  85. package/dist/core/server-action.js +119 -0
  86. package/dist/core/site-config.d.ts +33 -0
  87. package/dist/core/site-config.js +74 -0
  88. package/dist/core/unit-of-work.d.ts +32 -0
  89. package/dist/core/unit-of-work.js +114 -0
  90. package/dist/errors/api-error.d.ts +4 -0
  91. package/dist/errors/api-error.js +6 -0
  92. package/dist/errors/authentication-error.d.ts +4 -0
  93. package/dist/errors/authentication-error.js +6 -0
  94. package/dist/errors/authorization-error.d.ts +4 -0
  95. package/dist/errors/authorization-error.js +6 -0
  96. package/dist/errors/base-error.d.ts +14 -0
  97. package/dist/errors/base-error.js +22 -0
  98. package/dist/errors/database-error.d.ts +4 -0
  99. package/dist/errors/database-error.js +6 -0
  100. package/dist/errors/error-codes.d.ts +43 -0
  101. package/dist/errors/error-codes.js +93 -0
  102. package/dist/errors/error-handler.d.ts +16 -0
  103. package/dist/errors/error-handler.js +57 -0
  104. package/dist/errors/index.d.ts +11 -96
  105. package/dist/errors/index.js +15 -4
  106. package/dist/errors/messages.d.ts +469 -0
  107. package/dist/errors/messages.js +503 -0
  108. package/dist/errors/not-found-error.d.ts +4 -0
  109. package/dist/errors/not-found-error.js +6 -0
  110. package/dist/errors/validation-error.d.ts +4 -0
  111. package/dist/errors/validation-error.js +6 -0
  112. package/dist/features/about/components/AboutView.d.ts +38 -0
  113. package/dist/features/about/components/AboutView.js +5 -0
  114. package/dist/features/about/index.d.ts +2 -42
  115. package/dist/features/about/index.js +1 -280
  116. package/dist/features/account/actions/address-actions.d.ts +7 -0
  117. package/dist/features/account/actions/address-actions.js +24 -0
  118. package/dist/features/account/actions/index.d.ts +1 -0
  119. package/dist/features/account/actions/index.js +1 -0
  120. package/dist/features/account/address-validation.d.ts +20 -0
  121. package/dist/features/account/address-validation.js +35 -0
  122. package/dist/features/account/api/[userId]/addresses/route.d.ts +21 -0
  123. package/dist/features/account/api/[userId]/addresses/route.js +91 -0
  124. package/dist/features/account/api/[userId]/route.d.ts +23 -0
  125. package/dist/features/account/api/[userId]/route.js +67 -0
  126. package/dist/features/account/columns/index.d.ts +17 -0
  127. package/dist/features/account/columns/index.js +39 -0
  128. package/dist/features/account/components/AddressBook.d.ts +39 -0
  129. package/dist/features/account/components/AddressBook.js +14 -0
  130. package/dist/features/account/components/AddressForm.d.ts +39 -0
  131. package/dist/features/account/components/AddressForm.js +55 -0
  132. package/dist/features/account/components/AddressSelectorCreate.d.ts +16 -0
  133. package/dist/features/account/components/AddressSelectorCreate.js +40 -0
  134. package/dist/features/account/components/BecomeSellerView.d.ts +17 -0
  135. package/dist/features/account/components/BecomeSellerView.js +5 -0
  136. package/dist/features/account/components/ChatList.d.ts +14 -0
  137. package/dist/features/account/components/ChatList.js +10 -0
  138. package/dist/features/account/components/ChatWindow.d.ts +17 -0
  139. package/dist/features/account/components/ChatWindow.js +6 -0
  140. package/dist/features/account/components/MessagesView.d.ts +16 -0
  141. package/dist/features/account/components/MessagesView.js +5 -0
  142. package/dist/features/account/components/NotificationBell.d.ts +32 -0
  143. package/dist/features/account/components/NotificationBell.js +80 -0
  144. package/dist/features/account/components/OrderDetailView.d.ts +18 -0
  145. package/dist/features/account/components/OrderDetailView.js +12 -0
  146. package/dist/features/account/components/ProfileView.d.ts +12 -0
  147. package/dist/features/account/components/ProfileView.js +5 -0
  148. package/dist/features/account/components/UserAccountHubView.d.ts +13 -0
  149. package/dist/features/account/components/UserAccountHubView.js +5 -0
  150. package/dist/features/account/components/UserAddressesView.d.ts +13 -0
  151. package/dist/features/account/components/UserAddressesView.js +5 -0
  152. package/dist/features/account/components/UserNotificationsView.d.ts +15 -0
  153. package/dist/features/account/components/UserNotificationsView.js +12 -0
  154. package/dist/features/account/components/UserOffersView.d.ts +10 -0
  155. package/dist/features/account/components/UserOffersView.js +5 -0
  156. package/dist/features/account/components/UserOrderTrackView.d.ts +16 -0
  157. package/dist/features/account/components/UserOrderTrackView.js +8 -0
  158. package/dist/features/account/components/UserOrdersView.d.ts +12 -0
  159. package/dist/features/account/components/UserOrdersView.js +5 -0
  160. package/dist/features/account/components/UserSettingsView.d.ts +15 -0
  161. package/dist/features/account/components/UserSettingsView.js +12 -0
  162. package/dist/features/account/components/index.d.ts +34 -0
  163. package/dist/features/account/components/index.js +17 -0
  164. package/dist/features/account/constants/addresses.d.ts +13 -0
  165. package/dist/features/account/constants/addresses.js +43 -0
  166. package/dist/features/account/hooks/useAccount.d.ts +13 -0
  167. package/dist/features/account/hooks/useAccount.js +19 -0
  168. package/dist/features/account/hooks/useAddressForm.d.ts +24 -0
  169. package/dist/features/account/hooks/useAddressForm.js +58 -0
  170. package/dist/features/account/hooks/useAddressSelector.d.ts +25 -0
  171. package/dist/features/account/hooks/useAddressSelector.js +30 -0
  172. package/dist/features/account/hooks/useAddresses.d.ts +59 -0
  173. package/dist/features/account/hooks/useAddresses.js +73 -0
  174. package/dist/features/account/hooks/useNotifications.d.ts +23 -0
  175. package/dist/features/account/hooks/useNotifications.js +31 -0
  176. package/dist/features/account/hooks/useProfile.d.ts +25 -0
  177. package/dist/features/account/hooks/useProfile.js +24 -0
  178. package/dist/features/account/hooks/useProfileStats.d.ts +6 -0
  179. package/dist/features/account/hooks/useProfileStats.js +21 -0
  180. package/dist/features/account/hooks/usePublicProfile.d.ts +78 -0
  181. package/dist/features/account/hooks/usePublicProfile.js +51 -0
  182. package/dist/features/account/index.d.ts +15 -555
  183. package/dist/features/account/index.js +15 -1003
  184. package/dist/features/account/manifest.d.ts +2 -0
  185. package/dist/features/account/manifest.js +27 -0
  186. package/dist/features/account/messages/en.json +12 -0
  187. package/dist/features/account/repository/account.repository.d.ts +11 -0
  188. package/dist/features/account/repository/account.repository.js +20 -0
  189. package/dist/features/account/repository/address.repository.d.ts +17 -0
  190. package/dist/features/account/repository/address.repository.js +185 -0
  191. package/dist/features/account/schemas/firestore.d.ts +48 -0
  192. package/dist/features/account/schemas/firestore.js +59 -0
  193. package/dist/features/account/schemas/index.d.ts +198 -0
  194. package/dist/features/account/schemas/index.js +51 -0
  195. package/dist/features/account/server.d.ts +9 -0
  196. package/dist/features/account/server.js +9 -0
  197. package/dist/features/account/types/index.d.ts +83 -0
  198. package/dist/features/account/types/index.js +2 -0
  199. package/dist/features/admin/actions/admin-actions.d.ts +35 -0
  200. package/dist/features/admin/actions/admin-actions.js +174 -0
  201. package/dist/features/admin/actions/admin-coupon-actions.d.ts +17 -0
  202. package/dist/features/admin/actions/admin-coupon-actions.js +87 -0
  203. package/dist/features/admin/actions/admin-read-actions.d.ts +105 -0
  204. package/dist/features/admin/actions/admin-read-actions.js +172 -0
  205. package/dist/features/admin/actions/chat-actions.d.ts +29 -0
  206. package/dist/features/admin/actions/chat-actions.js +97 -0
  207. package/dist/features/admin/actions/index.d.ts +6 -0
  208. package/dist/features/admin/actions/index.js +6 -0
  209. package/dist/features/admin/actions/notification-actions.d.ts +31 -0
  210. package/dist/features/admin/actions/notification-actions.js +42 -0
  211. package/dist/features/admin/actions/site-settings-actions.d.ts +8 -0
  212. package/dist/features/admin/actions/site-settings-actions.js +16 -0
  213. package/dist/features/admin/api/bids/route.d.ts +14 -0
  214. package/dist/features/admin/api/bids/route.js +53 -0
  215. package/dist/features/admin/api/coupons/route.d.ts +14 -0
  216. package/dist/features/admin/api/coupons/route.js +53 -0
  217. package/dist/features/admin/api/products/route.d.ts +14 -0
  218. package/dist/features/admin/api/products/route.js +54 -0
  219. package/dist/features/admin/api/reviews/route.d.ts +14 -0
  220. package/dist/features/admin/api/reviews/route.js +53 -0
  221. package/dist/features/admin/components/AdminAnalyticsView.d.ts +29 -0
  222. package/dist/features/admin/components/AdminAnalyticsView.js +15 -0
  223. package/dist/features/admin/components/AdminBidsView.d.ts +4 -0
  224. package/dist/features/admin/components/AdminBidsView.js +5 -0
  225. package/dist/features/admin/components/AdminBlogView.d.ts +4 -0
  226. package/dist/features/admin/components/AdminBlogView.js +5 -0
  227. package/dist/features/admin/components/AdminCarouselView.d.ts +9 -0
  228. package/dist/features/admin/components/AdminCarouselView.js +5 -0
  229. package/dist/features/admin/components/AdminCategoriesView.d.ts +9 -0
  230. package/dist/features/admin/components/AdminCategoriesView.js +5 -0
  231. package/dist/features/admin/components/AdminCouponsView.d.ts +4 -0
  232. package/dist/features/admin/components/AdminCouponsView.js +5 -0
  233. package/dist/features/admin/components/AdminDashboardView.d.ts +16 -0
  234. package/dist/features/admin/components/AdminDashboardView.js +11 -0
  235. package/dist/features/admin/components/AdminFaqsView.d.ts +4 -0
  236. package/dist/features/admin/components/AdminFaqsView.js +5 -0
  237. package/dist/features/admin/components/AdminFeatureFlagsView.d.ts +9 -0
  238. package/dist/features/admin/components/AdminFeatureFlagsView.js +5 -0
  239. package/dist/features/admin/components/AdminFilterBar.d.ts +65 -0
  240. package/dist/features/admin/components/AdminFilterBar.js +22 -0
  241. package/dist/features/admin/components/AdminMediaView.d.ts +9 -0
  242. package/dist/features/admin/components/AdminMediaView.js +5 -0
  243. package/dist/features/admin/components/AdminNavigationView.d.ts +9 -0
  244. package/dist/features/admin/components/AdminNavigationView.js +5 -0
  245. package/dist/features/admin/components/AdminOrdersView.d.ts +4 -0
  246. package/dist/features/admin/components/AdminOrdersView.js +5 -0
  247. package/dist/features/admin/components/AdminPageHeader.d.ts +53 -0
  248. package/dist/features/admin/components/AdminPageHeader.js +12 -0
  249. package/dist/features/admin/components/AdminPayoutsView.d.ts +4 -0
  250. package/dist/features/admin/components/AdminPayoutsView.js +5 -0
  251. package/dist/features/admin/components/AdminProductsView.d.ts +4 -0
  252. package/dist/features/admin/components/AdminProductsView.js +5 -0
  253. package/dist/features/admin/components/AdminReviewsView.d.ts +7 -0
  254. package/dist/features/admin/components/AdminReviewsView.js +5 -0
  255. package/dist/features/admin/components/AdminSectionsView.d.ts +9 -0
  256. package/dist/features/admin/components/AdminSectionsView.js +5 -0
  257. package/dist/features/admin/components/AdminSessionsManager.d.ts +9 -0
  258. package/dist/features/admin/components/AdminSessionsManager.js +5 -0
  259. package/dist/features/admin/components/AdminSidebar.d.ts +9 -0
  260. package/dist/features/admin/components/AdminSidebar.js +6 -0
  261. package/dist/features/admin/components/AdminSiteView.d.ts +10 -0
  262. package/dist/features/admin/components/AdminSiteView.js +5 -0
  263. package/dist/features/admin/components/AdminStoresView.d.ts +4 -0
  264. package/dist/features/admin/components/AdminStoresView.js +5 -0
  265. package/dist/features/admin/components/AdminTopBar.d.ts +8 -0
  266. package/dist/features/admin/components/AdminTopBar.js +8 -0
  267. package/dist/features/admin/components/AdminUsersView.d.ts +4 -0
  268. package/dist/features/admin/components/AdminUsersView.js +5 -0
  269. package/dist/features/admin/components/DashboardStats.d.ts +8 -0
  270. package/dist/features/admin/components/DashboardStats.js +21 -0
  271. package/dist/features/admin/components/DataTable.d.ts +19 -0
  272. package/dist/features/admin/components/DataTable.js +7 -0
  273. package/dist/features/admin/components/DemoSeedView.d.ts +11 -0
  274. package/dist/features/admin/components/DemoSeedView.js +5 -0
  275. package/dist/features/admin/components/DrawerFormFooter.d.ts +54 -0
  276. package/dist/features/admin/components/DrawerFormFooter.js +6 -0
  277. package/dist/features/admin/components/QuickActionsPanel.d.ts +15 -0
  278. package/dist/features/admin/components/QuickActionsPanel.js +6 -0
  279. package/dist/features/admin/components/analytics/AdminAnalyticsCharts.d.ts +17 -0
  280. package/dist/features/admin/components/analytics/AdminAnalyticsCharts.js +33 -0
  281. package/dist/features/admin/components/analytics/AdminStatCard.d.ts +8 -0
  282. package/dist/features/admin/components/analytics/AdminStatCard.js +6 -0
  283. package/dist/features/admin/components/analytics/AdminTopProductsTable.d.ts +16 -0
  284. package/dist/features/admin/components/analytics/AdminTopProductsTable.js +6 -0
  285. package/dist/features/admin/components/analytics/index.d.ts +3 -0
  286. package/dist/features/admin/components/analytics/index.js +3 -0
  287. package/dist/features/admin/components/index.d.ts +62 -0
  288. package/dist/features/admin/components/index.js +32 -0
  289. package/dist/features/admin/hooks/useAdmin.d.ts +9 -0
  290. package/dist/features/admin/hooks/useAdmin.js +14 -0
  291. package/dist/features/admin/hooks/useChat.d.ts +24 -0
  292. package/dist/features/admin/hooks/useChat.js +97 -0
  293. package/dist/features/admin/index.d.ts +8 -554
  294. package/dist/features/admin/index.js +7 -2703
  295. package/dist/features/admin/manifest.d.ts +2 -0
  296. package/dist/features/admin/manifest.js +13 -0
  297. package/dist/features/admin/messages/en.json +13 -0
  298. package/dist/features/admin/permission-map.d.ts +3 -0
  299. package/dist/features/admin/permission-map.js +24 -0
  300. package/dist/features/admin/repository/chat.repository.d.ts +70 -0
  301. package/dist/features/admin/repository/chat.repository.js +216 -0
  302. package/dist/features/admin/repository/notification.repository.d.ts +64 -0
  303. package/dist/features/admin/repository/notification.repository.js +225 -0
  304. package/dist/features/admin/repository/site-settings.repository.d.ts +118 -0
  305. package/dist/features/admin/repository/site-settings.repository.js +214 -0
  306. package/dist/features/admin/schemas/firestore.d.ts +311 -0
  307. package/dist/features/admin/schemas/firestore.js +246 -0
  308. package/dist/features/admin/schemas/index.d.ts +1 -0
  309. package/dist/features/admin/schemas/index.js +1 -0
  310. package/dist/features/admin/server.d.ts +15 -0
  311. package/dist/features/admin/server.js +14 -0
  312. package/dist/features/admin/types/index.d.ts +61 -0
  313. package/dist/features/admin/types/index.js +1 -0
  314. package/dist/features/admin/types/product.types.d.ts +78 -0
  315. package/dist/features/admin/types/product.types.js +13 -0
  316. package/dist/features/auctions/actions/bid-actions.d.ts +22 -0
  317. package/dist/features/auctions/actions/bid-actions.js +106 -0
  318. package/dist/features/auctions/actions/index.d.ts +1 -0
  319. package/dist/features/auctions/actions/index.js +1 -0
  320. package/dist/features/auctions/api/route.d.ts +14 -0
  321. package/dist/features/auctions/api/route.js +67 -0
  322. package/dist/features/auctions/columns/index.d.ts +14 -0
  323. package/dist/features/auctions/columns/index.js +63 -0
  324. package/dist/features/auctions/components/AuctionCard.d.ts +26 -0
  325. package/dist/features/auctions/components/AuctionCard.js +35 -0
  326. package/dist/features/auctions/components/MarketplaceAuctionCard.d.ts +56 -0
  327. package/dist/features/auctions/components/MarketplaceAuctionCard.js +112 -0
  328. package/dist/features/auctions/components/MarketplaceAuctionGrid.d.ts +22 -0
  329. package/dist/features/auctions/components/MarketplaceAuctionGrid.js +37 -0
  330. package/dist/features/auctions/components/index.d.ts +3 -0
  331. package/dist/features/auctions/components/index.js +3 -0
  332. package/dist/features/auctions/hooks/useAuctions.d.ts +50 -0
  333. package/dist/features/auctions/hooks/useAuctions.js +93 -0
  334. package/dist/features/auctions/hooks/usePlaceBid.d.ts +24 -0
  335. package/dist/features/auctions/hooks/usePlaceBid.js +29 -0
  336. package/dist/features/auctions/hooks/useRealtimeBids.d.ts +38 -0
  337. package/dist/features/auctions/hooks/useRealtimeBids.js +66 -0
  338. package/dist/features/auctions/index.d.ts +8 -513
  339. package/dist/features/auctions/index.js +8 -1194
  340. package/dist/features/auctions/manifest.d.ts +2 -0
  341. package/dist/features/auctions/manifest.js +17 -0
  342. package/dist/features/auctions/messages/en.json +18 -0
  343. package/dist/features/auctions/repository/auctions.repository.d.ts +12 -0
  344. package/dist/features/auctions/repository/auctions.repository.js +42 -0
  345. package/dist/features/auctions/repository/bid.repository.d.ts +145 -0
  346. package/dist/features/auctions/repository/bid.repository.js +370 -0
  347. package/dist/features/auctions/schemas/firestore.d.ts +48 -0
  348. package/dist/features/auctions/schemas/firestore.js +50 -0
  349. package/dist/features/auctions/schemas/index.d.ts +155 -0
  350. package/dist/features/auctions/schemas/index.js +64 -0
  351. package/dist/features/auctions/server.d.ts +10 -0
  352. package/dist/features/auctions/server.js +10 -0
  353. package/dist/features/auctions/types/index.d.ts +73 -0
  354. package/dist/features/auctions/types/index.js +1 -0
  355. package/dist/features/auth/actions/index.d.ts +2 -0
  356. package/dist/features/auth/actions/index.js +2 -0
  357. package/dist/features/auth/actions/profile-actions.d.ts +27 -0
  358. package/dist/features/auth/actions/profile-actions.js +50 -0
  359. package/dist/features/auth/actions/realtime-token-actions.d.ts +11 -0
  360. package/dist/features/auth/actions/realtime-token-actions.js +31 -0
  361. package/dist/features/auth/api/route.d.ts +22 -0
  362. package/dist/features/auth/api/route.js +48 -0
  363. package/dist/features/auth/auth-helpers.d.ts +14 -0
  364. package/dist/features/auth/auth-helpers.js +68 -0
  365. package/dist/features/auth/components/AuthStatusPanel.d.ts +10 -0
  366. package/dist/features/auth/components/AuthStatusPanel.js +22 -0
  367. package/dist/features/auth/components/ForgotPasswordView.d.ts +18 -0
  368. package/dist/features/auth/components/ForgotPasswordView.js +15 -0
  369. package/dist/features/auth/components/Guards.d.ts +86 -0
  370. package/dist/features/auth/components/Guards.js +91 -0
  371. package/dist/features/auth/components/LoginForm.d.ts +36 -0
  372. package/dist/features/auth/components/LoginForm.js +18 -0
  373. package/dist/features/auth/components/RegisterForm.d.ts +36 -0
  374. package/dist/features/auth/components/RegisterForm.js +27 -0
  375. package/dist/features/auth/components/ResetPasswordView.d.ts +23 -0
  376. package/dist/features/auth/components/ResetPasswordView.js +22 -0
  377. package/dist/features/auth/components/SocialAuthButtons.d.ts +8 -0
  378. package/dist/features/auth/components/SocialAuthButtons.js +6 -0
  379. package/dist/features/auth/components/VerifyEmailView.d.ts +20 -0
  380. package/dist/features/auth/components/VerifyEmailView.js +8 -0
  381. package/dist/features/auth/components/index.d.ts +14 -0
  382. package/dist/features/auth/components/index.js +8 -0
  383. package/dist/features/auth/consent-otp.d.ts +52 -0
  384. package/dist/features/auth/consent-otp.js +120 -0
  385. package/dist/features/auth/hooks/useAuth.d.ts +81 -0
  386. package/dist/features/auth/hooks/useAuth.js +164 -0
  387. package/dist/features/auth/hooks/useAuthEvent.d.ts +22 -0
  388. package/dist/features/auth/hooks/useAuthEvent.js +31 -0
  389. package/dist/features/auth/hooks/useLogout.d.ts +16 -0
  390. package/dist/features/auth/hooks/useLogout.js +22 -0
  391. package/dist/features/auth/hooks/useRBAC.d.ts +38 -0
  392. package/dist/features/auth/hooks/useRBAC.js +80 -0
  393. package/dist/features/auth/index.d.ts +10 -315
  394. package/dist/features/auth/index.js +10 -1874
  395. package/dist/features/auth/manifest.d.ts +2 -0
  396. package/dist/features/auth/manifest.js +21 -0
  397. package/dist/features/auth/messages/en.json +13 -0
  398. package/dist/features/auth/repository/index.d.ts +4 -0
  399. package/dist/features/auth/repository/index.js +4 -0
  400. package/dist/features/auth/repository/session.repository.d.ts +44 -0
  401. package/dist/features/auth/repository/session.repository.js +246 -0
  402. package/dist/features/auth/repository/sms-counter.repository.d.ts +15 -0
  403. package/dist/features/auth/repository/sms-counter.repository.js +54 -0
  404. package/dist/features/auth/repository/token.repository.d.ts +38 -0
  405. package/dist/features/auth/repository/token.repository.js +186 -0
  406. package/dist/features/auth/repository/user.repository.d.ts +46 -0
  407. package/dist/features/auth/repository/user.repository.js +233 -0
  408. package/dist/features/auth/schemas/firestore.d.ts +351 -0
  409. package/dist/features/auth/schemas/firestore.js +272 -0
  410. package/dist/features/auth/schemas/index.d.ts +72 -0
  411. package/dist/features/auth/schemas/index.js +41 -0
  412. package/dist/features/auth/server.d.ts +15 -18
  413. package/dist/features/auth/server.js +21 -529
  414. package/dist/features/auth/token-helpers.d.ts +7 -0
  415. package/dist/features/auth/token-helpers.js +37 -0
  416. package/dist/features/auth/token-store.d.ts +39 -0
  417. package/dist/features/auth/token-store.js +120 -0
  418. package/dist/features/auth/types/index.d.ts +30 -0
  419. package/dist/features/auth/types/index.js +1 -0
  420. package/dist/features/before-after/api/[id]/route.d.ts +26 -0
  421. package/dist/features/before-after/api/[id]/route.js +88 -0
  422. package/dist/features/before-after/api/route.d.ts +13 -0
  423. package/dist/features/before-after/api/route.js +79 -0
  424. package/dist/features/before-after/columns/index.d.ts +17 -0
  425. package/dist/features/before-after/columns/index.js +50 -0
  426. package/dist/features/before-after/components/BeforeAfterGallery.d.ts +7 -0
  427. package/dist/features/before-after/components/BeforeAfterGallery.js +8 -0
  428. package/dist/features/before-after/components/BeforeAfterSlider.d.ts +7 -0
  429. package/dist/features/before-after/components/BeforeAfterSlider.js +27 -0
  430. package/dist/features/before-after/components/index.d.ts +2 -0
  431. package/dist/features/before-after/components/index.js +2 -0
  432. package/dist/features/before-after/hooks/useBeforeAfter.d.ts +15 -0
  433. package/dist/features/before-after/hooks/useBeforeAfter.js +25 -0
  434. package/dist/features/before-after/index.d.ts +6 -128
  435. package/dist/features/before-after/index.js +6 -546
  436. package/dist/features/before-after/manifest.d.ts +2 -0
  437. package/dist/features/before-after/manifest.js +10 -0
  438. package/dist/features/before-after/messages/en.json +8 -0
  439. package/dist/features/before-after/repository/before-after.repository.d.ts +13 -0
  440. package/dist/features/before-after/repository/before-after.repository.js +36 -0
  441. package/dist/features/before-after/schemas/index.d.ts +48 -0
  442. package/dist/features/before-after/schemas/index.js +24 -0
  443. package/dist/features/before-after/server.d.ts +7 -0
  444. package/dist/features/before-after/server.js +7 -0
  445. package/dist/features/before-after/types/index.d.ts +18 -0
  446. package/dist/features/before-after/types/index.js +1 -0
  447. package/dist/features/blog/actions/blog-actions.d.ts +302 -0
  448. package/dist/features/blog/actions/blog-actions.js +119 -0
  449. package/dist/features/blog/actions/index.d.ts +1 -0
  450. package/dist/features/blog/actions/index.js +1 -0
  451. package/dist/features/blog/api/[slug]/route.d.ts +23 -0
  452. package/dist/features/blog/api/[slug]/route.js +40 -0
  453. package/dist/features/blog/api/route.d.ts +12 -0
  454. package/dist/features/blog/api/route.js +64 -0
  455. package/dist/features/blog/columns/index.d.ts +27 -0
  456. package/dist/features/blog/columns/index.js +54 -0
  457. package/dist/features/blog/components/BlogFeaturedCard.d.ts +17 -0
  458. package/dist/features/blog/components/BlogFeaturedCard.js +24 -0
  459. package/dist/features/blog/components/BlogFilters.d.ts +106 -0
  460. package/dist/features/blog/components/BlogFilters.js +67 -0
  461. package/dist/features/blog/components/BlogListView.d.ts +29 -0
  462. package/dist/features/blog/components/BlogListView.js +38 -0
  463. package/dist/features/blog/components/BlogPostForm.d.ts +56 -0
  464. package/dist/features/blog/components/BlogPostForm.js +24 -0
  465. package/dist/features/blog/components/BlogPostView.d.ts +32 -0
  466. package/dist/features/blog/components/BlogPostView.js +39 -0
  467. package/dist/features/blog/components/index.d.ts +9 -0
  468. package/dist/features/blog/components/index.js +5 -0
  469. package/dist/features/blog/hooks/useBlog.d.ts +27 -0
  470. package/dist/features/blog/hooks/useBlog.js +51 -0
  471. package/dist/features/blog/index.d.ts +6 -492
  472. package/dist/features/blog/index.js +6 -4062
  473. package/dist/features/blog/manifest.d.ts +2 -0
  474. package/dist/features/blog/manifest.js +14 -0
  475. package/dist/features/blog/messages/en.json +14 -0
  476. package/dist/features/blog/repository/blog.repository.d.ts +79 -0
  477. package/dist/features/blog/repository/blog.repository.js +130 -0
  478. package/dist/features/blog/schemas/firestore.d.ts +87 -0
  479. package/dist/features/blog/schemas/firestore.js +99 -0
  480. package/dist/features/blog/schemas/index.d.ts +207 -0
  481. package/dist/features/blog/schemas/index.js +71 -0
  482. package/dist/features/blog/server.d.ts +8 -71
  483. package/dist/features/blog/server.js +10 -180
  484. package/dist/features/blog/types/index.d.ts +47 -0
  485. package/dist/features/blog/types/index.js +1 -0
  486. package/dist/features/cart/actions/cart-actions.d.ts +16 -0
  487. package/dist/features/cart/actions/cart-actions.js +52 -0
  488. package/dist/features/cart/actions/index.d.ts +1 -0
  489. package/dist/features/cart/actions/index.js +1 -0
  490. package/dist/features/cart/api/[id]/route.d.ts +21 -0
  491. package/dist/features/cart/api/[id]/route.js +62 -0
  492. package/dist/features/cart/api/route.d.ts +13 -0
  493. package/dist/features/cart/api/route.js +79 -0
  494. package/dist/features/cart/columns/index.d.ts +17 -0
  495. package/dist/features/cart/columns/index.js +53 -0
  496. package/dist/features/cart/components/CartDrawer.d.ts +27 -0
  497. package/dist/features/cart/components/CartDrawer.js +14 -0
  498. package/dist/features/cart/components/CartSummary.d.ts +19 -0
  499. package/dist/features/cart/components/CartSummary.js +5 -0
  500. package/dist/features/cart/components/CartView.d.ts +17 -0
  501. package/dist/features/cart/components/CartView.js +7 -0
  502. package/dist/features/cart/components/CheckoutAddressStep.d.ts +20 -0
  503. package/dist/features/cart/components/CheckoutAddressStep.js +12 -0
  504. package/dist/features/cart/components/CheckoutOtpModal.d.ts +15 -0
  505. package/dist/features/cart/components/CheckoutOtpModal.js +12 -0
  506. package/dist/features/cart/components/CheckoutSuccessView.d.ts +12 -0
  507. package/dist/features/cart/components/CheckoutSuccessView.js +9 -0
  508. package/dist/features/cart/components/CheckoutView.d.ts +15 -0
  509. package/dist/features/cart/components/CheckoutView.js +18 -0
  510. package/dist/features/cart/components/index.d.ts +13 -0
  511. package/dist/features/cart/components/index.js +7 -0
  512. package/dist/features/cart/hooks/useAddToCart.d.ts +27 -0
  513. package/dist/features/cart/hooks/useAddToCart.js +52 -0
  514. package/dist/features/cart/hooks/useCart.d.ts +17 -0
  515. package/dist/features/cart/hooks/useCart.js +24 -0
  516. package/dist/features/cart/hooks/useCartCount.d.ts +7 -0
  517. package/dist/features/cart/hooks/useCartCount.js +19 -0
  518. package/dist/features/cart/hooks/useCartQuery.d.ts +8 -0
  519. package/dist/features/cart/hooks/useCartQuery.js +11 -0
  520. package/dist/features/cart/hooks/useCheckoutReadQueries.d.ts +14 -0
  521. package/dist/features/cart/hooks/useCheckoutReadQueries.js +18 -0
  522. package/dist/features/cart/hooks/useGuestCart.d.ts +18 -0
  523. package/dist/features/cart/hooks/useGuestCart.js +32 -0
  524. package/dist/features/cart/hooks/useGuestCartMerge.d.ts +15 -0
  525. package/dist/features/cart/hooks/useGuestCartMerge.js +50 -0
  526. package/dist/features/cart/hooks/useOrder.d.ts +13 -0
  527. package/dist/features/cart/hooks/useOrder.js +24 -0
  528. package/dist/features/cart/index.d.ts +14 -451
  529. package/dist/features/cart/index.js +14 -1064
  530. package/dist/features/cart/manifest.d.ts +2 -0
  531. package/dist/features/cart/manifest.js +10 -0
  532. package/dist/features/cart/messages/en.json +10 -0
  533. package/dist/features/cart/repository/cart.repository.d.ts +23 -0
  534. package/dist/features/cart/repository/cart.repository.js +210 -0
  535. package/dist/features/cart/schemas/firestore.d.ts +83 -0
  536. package/dist/features/cart/schemas/firestore.js +36 -0
  537. package/dist/features/cart/schemas/index.d.ts +184 -0
  538. package/dist/features/cart/schemas/index.js +35 -0
  539. package/dist/features/cart/server.d.ts +8 -0
  540. package/dist/features/cart/server.js +8 -0
  541. package/dist/features/cart/types/index.d.ts +27 -0
  542. package/dist/features/cart/types/index.js +1 -0
  543. package/dist/features/cart/utils/guest-cart.d.ts +26 -0
  544. package/dist/features/cart/utils/guest-cart.js +83 -0
  545. package/dist/features/categories/actions/category-actions.d.ts +17 -0
  546. package/dist/features/categories/actions/category-actions.js +63 -0
  547. package/dist/features/categories/actions/index.d.ts +1 -0
  548. package/dist/features/categories/actions/index.js +1 -0
  549. package/dist/features/categories/api/[id]/route.d.ts +23 -0
  550. package/dist/features/categories/api/[id]/route.js +98 -0
  551. package/dist/features/categories/api/route.d.ts +19 -0
  552. package/dist/features/categories/api/route.js +200 -0
  553. package/dist/features/categories/columns/index.d.ts +15 -0
  554. package/dist/features/categories/columns/index.js +38 -0
  555. package/dist/features/categories/components/BreadcrumbTrail.d.ts +47 -0
  556. package/dist/features/categories/components/BreadcrumbTrail.js +36 -0
  557. package/dist/features/categories/components/CategoriesListView.d.ts +31 -0
  558. package/dist/features/categories/components/CategoriesListView.js +27 -0
  559. package/dist/features/categories/components/CategoryFilters.d.ts +68 -0
  560. package/dist/features/categories/components/CategoryFilters.js +75 -0
  561. package/dist/features/categories/components/CategoryForm.d.ts +24 -0
  562. package/dist/features/categories/components/CategoryForm.js +42 -0
  563. package/dist/features/categories/components/CategoryGrid.d.ts +14 -0
  564. package/dist/features/categories/components/CategoryGrid.js +14 -0
  565. package/dist/features/categories/components/CategoryProductsView.d.ts +49 -0
  566. package/dist/features/categories/components/CategoryProductsView.js +21 -0
  567. package/dist/features/categories/components/CategorySelectorCreate.d.ts +17 -0
  568. package/dist/features/categories/components/CategorySelectorCreate.js +57 -0
  569. package/dist/features/categories/components/CategorySortSelect.d.ts +9 -0
  570. package/dist/features/categories/components/CategorySortSelect.js +8 -0
  571. package/dist/features/categories/components/CategoryTableColumns.d.ts +30 -0
  572. package/dist/features/categories/components/CategoryTableColumns.js +54 -0
  573. package/dist/features/categories/components/CategoryTree.d.ts +15 -0
  574. package/dist/features/categories/components/CategoryTree.js +49 -0
  575. package/dist/features/categories/components/ConcernCard.d.ts +8 -0
  576. package/dist/features/categories/components/ConcernCard.js +5 -0
  577. package/dist/features/categories/components/ConcernGrid.d.ts +8 -0
  578. package/dist/features/categories/components/ConcernGrid.js +8 -0
  579. package/dist/features/categories/components/index.d.ts +22 -0
  580. package/dist/features/categories/components/index.js +12 -0
  581. package/dist/features/categories/hooks/useCategories.d.ts +26 -0
  582. package/dist/features/categories/hooks/useCategories.js +50 -0
  583. package/dist/features/categories/hooks/useCategorySelector.d.ts +26 -0
  584. package/dist/features/categories/hooks/useCategorySelector.js +42 -0
  585. package/dist/features/categories/index.d.ts +7 -461
  586. package/dist/features/categories/index.js +7 -2031
  587. package/dist/features/categories/manifest.d.ts +2 -0
  588. package/dist/features/categories/manifest.js +20 -0
  589. package/dist/features/categories/messages/en.json +14 -0
  590. package/dist/features/categories/repository/categories.repository.d.ts +31 -0
  591. package/dist/features/categories/repository/categories.repository.js +399 -0
  592. package/dist/features/categories/schemas/firestore.d.ts +140 -0
  593. package/dist/features/categories/schemas/firestore.js +189 -0
  594. package/dist/features/categories/schemas/index.d.ts +207 -0
  595. package/dist/features/categories/schemas/index.js +67 -0
  596. package/dist/features/categories/server.d.ts +7 -44
  597. package/dist/features/categories/server.js +10 -789
  598. package/dist/features/categories/types/index.d.ts +80 -0
  599. package/dist/features/categories/types/index.js +13 -0
  600. package/dist/features/checkout/actions/checkout-actions.d.ts +14 -0
  601. package/dist/features/checkout/actions/checkout-actions.js +91 -0
  602. package/dist/features/checkout/actions/index.d.ts +1 -0
  603. package/dist/features/checkout/actions/index.js +1 -0
  604. package/dist/features/checkout/components/CheckoutStepper.d.ts +10 -0
  605. package/dist/features/checkout/components/CheckoutStepper.js +15 -0
  606. package/dist/features/checkout/components/index.d.ts +1 -0
  607. package/dist/features/checkout/components/index.js +1 -0
  608. package/dist/features/checkout/hooks/useCheckout.d.ts +9 -0
  609. package/dist/features/checkout/hooks/useCheckout.js +24 -0
  610. package/dist/features/checkout/hooks/useCheckoutApi.d.ts +74 -0
  611. package/dist/features/checkout/hooks/useCheckoutApi.js +48 -0
  612. package/dist/features/checkout/hooks/usePaymentCheckout.d.ts +78 -0
  613. package/dist/features/checkout/hooks/usePaymentCheckout.js +178 -0
  614. package/dist/features/checkout/index.d.ts +8 -70
  615. package/dist/features/checkout/index.js +7 -192
  616. package/dist/features/checkout/manifest.d.ts +2 -0
  617. package/dist/features/checkout/manifest.js +17 -0
  618. package/dist/features/checkout/messages/en.json +10 -0
  619. package/dist/features/checkout/repository/failed-checkout.repository.d.ts +18 -0
  620. package/dist/features/checkout/repository/failed-checkout.repository.js +29 -0
  621. package/dist/features/checkout/schemas/firestore.d.ts +33 -0
  622. package/dist/features/checkout/schemas/firestore.js +6 -0
  623. package/dist/features/checkout/schemas/index.d.ts +1 -0
  624. package/dist/features/checkout/schemas/index.js +1 -0
  625. package/dist/features/checkout/server.d.ts +8 -0
  626. package/dist/features/checkout/server.js +8 -0
  627. package/dist/features/checkout/types/index.d.ts +46 -0
  628. package/dist/features/checkout/types/index.js +2 -0
  629. package/dist/features/cms/index.d.ts +1 -2
  630. package/dist/features/cms/index.js +5 -4
  631. package/dist/features/collections/api/[slug]/route.d.ts +26 -0
  632. package/dist/features/collections/api/[slug]/route.js +102 -0
  633. package/dist/features/collections/api/route.d.ts +13 -0
  634. package/dist/features/collections/api/route.js +79 -0
  635. package/dist/features/collections/columns/index.d.ts +17 -0
  636. package/dist/features/collections/columns/index.js +55 -0
  637. package/dist/features/collections/components/CollectionCard.d.ts +12 -0
  638. package/dist/features/collections/components/CollectionCard.js +9 -0
  639. package/dist/features/collections/components/index.d.ts +1 -0
  640. package/dist/features/collections/components/index.js +1 -0
  641. package/dist/features/collections/hooks/useCollections.d.ts +7 -0
  642. package/dist/features/collections/hooks/useCollections.js +34 -0
  643. package/dist/features/collections/index.d.ts +6 -148
  644. package/dist/features/collections/index.js +6 -378
  645. package/dist/features/collections/manifest.d.ts +2 -0
  646. package/dist/features/collections/manifest.js +16 -0
  647. package/dist/features/collections/messages/en.json +10 -0
  648. package/dist/features/collections/repository/collections.repository.d.ts +8 -0
  649. package/dist/features/collections/repository/collections.repository.js +16 -0
  650. package/dist/features/collections/schemas/index.d.ts +76 -0
  651. package/dist/features/collections/schemas/index.js +34 -0
  652. package/dist/features/collections/server.d.ts +7 -0
  653. package/dist/features/collections/server.js +7 -0
  654. package/dist/features/collections/types/index.d.ts +25 -0
  655. package/dist/features/collections/types/index.js +1 -0
  656. package/dist/features/consultation/api/[id]/route.d.ts +26 -0
  657. package/dist/features/consultation/api/[id]/route.js +88 -0
  658. package/dist/features/consultation/api/route.d.ts +13 -0
  659. package/dist/features/consultation/api/route.js +79 -0
  660. package/dist/features/consultation/columns/index.d.ts +17 -0
  661. package/dist/features/consultation/columns/index.js +54 -0
  662. package/dist/features/consultation/components/ConsultationForm.d.ts +8 -0
  663. package/dist/features/consultation/components/ConsultationForm.js +51 -0
  664. package/dist/features/consultation/components/index.d.ts +1 -0
  665. package/dist/features/consultation/components/index.js +1 -0
  666. package/dist/features/consultation/hooks/useBookConsultation.d.ts +8 -0
  667. package/dist/features/consultation/hooks/useBookConsultation.js +16 -0
  668. package/dist/features/consultation/index.d.ts +6 -172
  669. package/dist/features/consultation/index.js +6 -1084
  670. package/dist/features/consultation/manifest.d.ts +2 -0
  671. package/dist/features/consultation/manifest.js +12 -0
  672. package/dist/features/consultation/messages/en.json +25 -0
  673. package/dist/features/consultation/repository/consultations.repository.d.ts +12 -0
  674. package/dist/features/consultation/repository/consultations.repository.js +28 -0
  675. package/dist/features/consultation/schemas/index.d.ts +87 -0
  676. package/dist/features/consultation/schemas/index.js +47 -0
  677. package/dist/features/consultation/server.d.ts +7 -0
  678. package/dist/features/consultation/server.js +7 -0
  679. package/dist/features/consultation/types/index.d.ts +33 -0
  680. package/dist/features/consultation/types/index.js +1 -0
  681. package/dist/features/contact/components/ContactForm.d.ts +32 -0
  682. package/dist/features/contact/components/ContactForm.js +58 -0
  683. package/dist/features/contact/components/ContactInfoSidebar.d.ts +20 -0
  684. package/dist/features/contact/components/ContactInfoSidebar.js +6 -0
  685. package/dist/features/contact/components/index.d.ts +4 -0
  686. package/dist/features/contact/components/index.js +2 -0
  687. package/dist/features/contact/email.d.ts +61 -0
  688. package/dist/features/contact/email.js +345 -0
  689. package/dist/features/contact/hooks/useContactSubmit.d.ts +4 -0
  690. package/dist/features/contact/hooks/useContactSubmit.js +7 -0
  691. package/dist/features/contact/index.d.ts +2 -56
  692. package/dist/features/contact/index.js +2 -586
  693. package/dist/features/contact/server.d.ts +7 -0
  694. package/dist/features/contact/server.js +7 -0
  695. package/dist/features/copilot/components/AdminCopilotView.d.ts +21 -0
  696. package/dist/features/copilot/components/AdminCopilotView.js +29 -0
  697. package/dist/features/copilot/components/index.d.ts +2 -0
  698. package/dist/features/copilot/components/index.js +1 -0
  699. package/dist/features/copilot/hooks/useCopilotChat.d.ts +22 -0
  700. package/dist/features/copilot/hooks/useCopilotChat.js +57 -0
  701. package/dist/features/copilot/hooks/useCopilotFeedback.d.ts +15 -0
  702. package/dist/features/copilot/hooks/useCopilotFeedback.js +16 -0
  703. package/dist/features/copilot/index.d.ts +3 -47
  704. package/dist/features/copilot/index.js +3 -681
  705. package/dist/features/corporate/api/[id]/route.d.ts +26 -0
  706. package/dist/features/corporate/api/[id]/route.js +88 -0
  707. package/dist/features/corporate/api/route.d.ts +13 -0
  708. package/dist/features/corporate/api/route.js +79 -0
  709. package/dist/features/corporate/columns/index.d.ts +17 -0
  710. package/dist/features/corporate/columns/index.js +54 -0
  711. package/dist/features/corporate/components/CorporateInquiryForm.d.ts +7 -0
  712. package/dist/features/corporate/components/CorporateInquiryForm.js +36 -0
  713. package/dist/features/corporate/components/index.d.ts +1 -0
  714. package/dist/features/corporate/components/index.js +1 -0
  715. package/dist/features/corporate/hooks/useSubmitCorporateInquiry.d.ts +8 -0
  716. package/dist/features/corporate/hooks/useSubmitCorporateInquiry.js +16 -0
  717. package/dist/features/corporate/index.d.ts +6 -183
  718. package/dist/features/corporate/index.js +6 -782
  719. package/dist/features/corporate/manifest.d.ts +2 -0
  720. package/dist/features/corporate/manifest.js +12 -0
  721. package/dist/features/corporate/messages/en.json +26 -0
  722. package/dist/features/corporate/repository/corporate.repository.d.ts +12 -0
  723. package/dist/features/corporate/repository/corporate.repository.js +28 -0
  724. package/dist/features/corporate/schemas/index.d.ts +95 -0
  725. package/dist/features/corporate/schemas/index.js +50 -0
  726. package/dist/features/corporate/server.d.ts +7 -0
  727. package/dist/features/corporate/server.js +7 -0
  728. package/dist/features/corporate/types/index.d.ts +37 -0
  729. package/dist/features/corporate/types/index.js +1 -0
  730. package/dist/features/cron/firebase-adapters.d.ts +70 -0
  731. package/dist/features/cron/firebase-adapters.js +68 -0
  732. package/dist/features/cron/index.d.ts +5 -0
  733. package/dist/features/cron/index.js +7 -0
  734. package/dist/features/cron/jobs/auction-expiry.job.d.ts +27 -0
  735. package/dist/features/cron/jobs/auction-expiry.job.js +38 -0
  736. package/dist/features/cron/jobs/preorder-reminder.job.d.ts +14 -0
  737. package/dist/features/cron/jobs/preorder-reminder.job.js +40 -0
  738. package/dist/features/cron/registry.d.ts +45 -0
  739. package/dist/features/cron/registry.js +86 -0
  740. package/dist/features/cron/types.d.ts +66 -0
  741. package/dist/features/cron/types.js +9 -0
  742. package/dist/features/events/actions/event-actions.d.ts +92 -0
  743. package/dist/features/events/actions/event-actions.js +253 -0
  744. package/dist/features/events/actions/index.d.ts +1 -0
  745. package/dist/features/events/actions/index.js +1 -0
  746. package/dist/features/events/api/[id]/route.d.ts +24 -0
  747. package/dist/features/events/api/[id]/route.js +83 -0
  748. package/dist/features/events/api/route.d.ts +12 -0
  749. package/dist/features/events/api/route.js +88 -0
  750. package/dist/features/events/columns/index.d.ts +22 -0
  751. package/dist/features/events/columns/index.js +41 -0
  752. package/dist/features/events/components/AdminEventEntriesView.d.ts +17 -0
  753. package/dist/features/events/components/AdminEventEntriesView.js +10 -0
  754. package/dist/features/events/components/AdminEventsView.d.ts +11 -0
  755. package/dist/features/events/components/AdminEventsView.js +5 -0
  756. package/dist/features/events/components/EventBanner.d.ts +13 -0
  757. package/dist/features/events/components/EventBanner.js +48 -0
  758. package/dist/features/events/components/EventCard.d.ts +13 -0
  759. package/dist/features/events/components/EventCard.js +21 -0
  760. package/dist/features/events/components/EventDetailView.d.ts +15 -0
  761. package/dist/features/events/components/EventDetailView.js +11 -0
  762. package/dist/features/events/components/EventFilters.d.ts +105 -0
  763. package/dist/features/events/components/EventFilters.js +73 -0
  764. package/dist/features/events/components/EventFormDrawer.d.ts +22 -0
  765. package/dist/features/events/components/EventFormDrawer.js +6 -0
  766. package/dist/features/events/components/EventLeaderboard.d.ts +23 -0
  767. package/dist/features/events/components/EventLeaderboard.js +18 -0
  768. package/dist/features/events/components/EventParticipateView.d.ts +19 -0
  769. package/dist/features/events/components/EventParticipateView.js +13 -0
  770. package/dist/features/events/components/EventStatusBadge.d.ts +7 -0
  771. package/dist/features/events/components/EventStatusBadge.js +12 -0
  772. package/dist/features/events/components/EventsListView.d.ts +16 -0
  773. package/dist/features/events/components/EventsListView.js +21 -0
  774. package/dist/features/events/components/index.d.ts +19 -0
  775. package/dist/features/events/components/index.js +11 -0
  776. package/dist/features/events/hooks/useBulkEvent.d.ts +19 -0
  777. package/dist/features/events/hooks/useBulkEvent.js +36 -0
  778. package/dist/features/events/hooks/useEvent.d.ts +43 -0
  779. package/dist/features/events/hooks/useEvent.js +55 -0
  780. package/dist/features/events/hooks/useEvents.d.ts +27 -0
  781. package/dist/features/events/hooks/useEvents.js +38 -0
  782. package/dist/features/events/index.d.ts +8 -841
  783. package/dist/features/events/index.js +8 -1453
  784. package/dist/features/events/manifest.d.ts +2 -0
  785. package/dist/features/events/manifest.js +24 -0
  786. package/dist/features/events/messages/en.json +28 -0
  787. package/dist/features/events/repository/event-entry.repository.d.ts +17 -0
  788. package/dist/features/events/repository/event-entry.repository.js +115 -0
  789. package/dist/features/events/repository/events.repository.d.ts +18 -0
  790. package/dist/features/events/repository/events.repository.js +128 -0
  791. package/dist/features/events/schemas/firestore.d.ts +115 -0
  792. package/dist/features/events/schemas/firestore.js +77 -0
  793. package/dist/features/events/schemas/index.d.ts +383 -0
  794. package/dist/features/events/schemas/index.js +87 -0
  795. package/dist/features/events/server.d.ts +8 -37
  796. package/dist/features/events/server.js +11 -195
  797. package/dist/features/events/types/index.d.ts +133 -0
  798. package/dist/features/events/types/index.js +1 -0
  799. package/dist/features/faq/actions/faq-actions.d.ts +191 -0
  800. package/dist/features/faq/actions/faq-actions.js +103 -0
  801. package/dist/features/faq/actions/index.d.ts +1 -0
  802. package/dist/features/faq/actions/index.js +1 -0
  803. package/dist/features/faq/api/route.d.ts +11 -0
  804. package/dist/features/faq/api/route.js +50 -0
  805. package/dist/features/faq/columns/index.d.ts +15 -0
  806. package/dist/features/faq/columns/index.js +47 -0
  807. package/dist/features/faq/components/ContactCTA.d.ts +16 -0
  808. package/dist/features/faq/components/ContactCTA.js +6 -0
  809. package/dist/features/faq/components/FAQAccordion.d.ts +20 -0
  810. package/dist/features/faq/components/FAQAccordion.js +17 -0
  811. package/dist/features/faq/components/FAQCategorySidebar.d.ts +24 -0
  812. package/dist/features/faq/components/FAQCategorySidebar.js +15 -0
  813. package/dist/features/faq/components/FAQHelpfulButtons.d.ts +19 -0
  814. package/dist/features/faq/components/FAQHelpfulButtons.js +46 -0
  815. package/dist/features/faq/components/FAQPageContent.d.ts +54 -0
  816. package/dist/features/faq/components/FAQPageContent.js +67 -0
  817. package/dist/features/faq/components/FAQSortDropdown.d.ts +13 -0
  818. package/dist/features/faq/components/FAQSortDropdown.js +11 -0
  819. package/dist/features/faq/components/RelatedFAQs.d.ts +10 -0
  820. package/dist/features/faq/components/RelatedFAQs.js +9 -0
  821. package/dist/features/faq/components/index.d.ts +9 -0
  822. package/dist/features/faq/components/index.js +7 -0
  823. package/dist/features/faq/hooks/useFAQs.d.ts +22 -0
  824. package/dist/features/faq/hooks/useFAQs.js +42 -0
  825. package/dist/features/faq/hooks/useFaqList.d.ts +194 -0
  826. package/dist/features/faq/hooks/useFaqList.js +35 -0
  827. package/dist/features/faq/hooks/useFaqVote.d.ts +14 -0
  828. package/dist/features/faq/hooks/useFaqVote.js +10 -0
  829. package/dist/features/faq/index.d.ts +8 -619
  830. package/dist/features/faq/index.js +8 -1685
  831. package/dist/features/faq/manifest.d.ts +2 -0
  832. package/dist/features/faq/manifest.js +10 -0
  833. package/dist/features/faq/messages/en.json +14 -0
  834. package/dist/features/faq/repository/faqs.repository.d.ts +43 -0
  835. package/dist/features/faq/repository/faqs.repository.js +300 -0
  836. package/dist/features/faq/schemas/firestore.d.ts +63 -0
  837. package/dist/features/faq/schemas/firestore.js +115 -0
  838. package/dist/features/faq/schemas/index.d.ts +157 -0
  839. package/dist/features/faq/schemas/index.js +62 -0
  840. package/dist/features/faq/server.d.ts +9 -0
  841. package/dist/features/faq/server.js +9 -0
  842. package/dist/features/faq/types/index.d.ts +52 -0
  843. package/dist/features/faq/types/index.js +1 -0
  844. package/dist/features/filters/FilterFacetSection.d.ts +23 -0
  845. package/dist/features/filters/FilterFacetSection.js +39 -0
  846. package/dist/features/filters/FilterPanel.d.ts +61 -0
  847. package/dist/features/filters/FilterPanel.js +40 -0
  848. package/dist/features/filters/RangeFilter.d.ts +23 -0
  849. package/dist/features/filters/RangeFilter.js +28 -0
  850. package/dist/features/filters/SwitchFilter.d.ts +12 -0
  851. package/dist/features/filters/SwitchFilter.js +19 -0
  852. package/dist/features/filters/filterUtils.d.ts +11 -0
  853. package/dist/features/filters/filterUtils.js +13 -0
  854. package/dist/features/filters/index.d.ts +10 -136
  855. package/dist/features/filters/index.js +6 -1061
  856. package/dist/features/forms/Checkbox.d.ts +8 -0
  857. package/dist/features/forms/Checkbox.js +15 -0
  858. package/dist/features/forms/Form.d.ts +25 -0
  859. package/dist/features/forms/Form.js +38 -0
  860. package/dist/features/forms/Input.d.ts +10 -0
  861. package/dist/features/forms/Input.js +23 -0
  862. package/dist/features/forms/Radio.d.ts +17 -0
  863. package/dist/features/forms/Radio.js +19 -0
  864. package/dist/features/forms/Select.d.ts +13 -0
  865. package/dist/features/forms/Select.js +8 -0
  866. package/dist/features/forms/Slider.d.ts +20 -0
  867. package/dist/features/forms/Slider.js +22 -0
  868. package/dist/features/forms/Textarea.d.ts +8 -0
  869. package/dist/features/forms/Textarea.js +15 -0
  870. package/dist/features/forms/Toggle.d.ts +15 -0
  871. package/dist/features/forms/Toggle.js +48 -0
  872. package/dist/features/forms/index.d.ts +17 -129
  873. package/dist/features/forms/index.js +11 -915
  874. package/dist/features/forms/utils.d.ts +10 -0
  875. package/dist/features/forms/utils.js +13 -0
  876. package/dist/features/homepage/actions/carousel-actions.d.ts +37 -0
  877. package/dist/features/homepage/actions/carousel-actions.js +54 -0
  878. package/dist/features/homepage/actions/homepage-section-actions.d.ts +46 -0
  879. package/dist/features/homepage/actions/homepage-section-actions.js +55 -0
  880. package/dist/features/homepage/actions/index.d.ts +2 -0
  881. package/dist/features/homepage/actions/index.js +2 -0
  882. package/dist/features/homepage/api/[id]/route.d.ts +23 -0
  883. package/dist/features/homepage/api/[id]/route.js +100 -0
  884. package/dist/features/homepage/api/carousel/[id]/route.d.ts +23 -0
  885. package/dist/features/homepage/api/carousel/[id]/route.js +122 -0
  886. package/dist/features/homepage/api/carousel/route.d.ts +15 -0
  887. package/dist/features/homepage/api/carousel/route.js +154 -0
  888. package/dist/features/homepage/api/route.d.ts +14 -0
  889. package/dist/features/homepage/api/route.js +136 -0
  890. package/dist/features/homepage/api/sections/[id]/route.d.ts +26 -0
  891. package/dist/features/homepage/api/sections/[id]/route.js +88 -0
  892. package/dist/features/homepage/api/sections/route.d.ts +13 -0
  893. package/dist/features/homepage/api/sections/route.js +79 -0
  894. package/dist/features/homepage/components/AdvertisementBanner.d.ts +13 -0
  895. package/dist/features/homepage/components/AdvertisementBanner.js +23 -0
  896. package/dist/features/homepage/components/BeforeAfterCard.d.ts +10 -0
  897. package/dist/features/homepage/components/BeforeAfterCard.js +54 -0
  898. package/dist/features/homepage/components/CharacterHotspot.d.ts +24 -0
  899. package/dist/features/homepage/components/CharacterHotspot.js +373 -0
  900. package/dist/features/homepage/components/CharacterHotspotForm.d.ts +26 -0
  901. package/dist/features/homepage/components/CharacterHotspotForm.js +309 -0
  902. package/dist/features/homepage/components/CustomerReviewsSection.d.ts +13 -0
  903. package/dist/features/homepage/components/CustomerReviewsSection.js +14 -0
  904. package/dist/features/homepage/components/FAQSection.d.ts +26 -0
  905. package/dist/features/homepage/components/FAQSection.js +20 -0
  906. package/dist/features/homepage/components/FeaturedResultsSection.d.ts +17 -0
  907. package/dist/features/homepage/components/FeaturedResultsSection.js +18 -0
  908. package/dist/features/homepage/components/HeroBanner.d.ts +7 -0
  909. package/dist/features/homepage/components/HeroBanner.js +93 -0
  910. package/dist/features/homepage/components/HeroCarousel.d.ts +12 -0
  911. package/dist/features/homepage/components/HeroCarousel.js +157 -0
  912. package/dist/features/homepage/components/HeroSection.d.ts +7 -0
  913. package/dist/features/homepage/components/HeroSection.js +12 -0
  914. package/dist/features/homepage/components/HomepageSkeleton.d.ts +2 -0
  915. package/dist/features/homepage/components/HomepageSkeleton.js +14 -0
  916. package/dist/features/homepage/components/HomepageView.d.ts +25 -0
  917. package/dist/features/homepage/components/HomepageView.js +5 -0
  918. package/dist/features/homepage/components/HowItWorksInfoView.d.ts +36 -0
  919. package/dist/features/homepage/components/HowItWorksInfoView.js +8 -0
  920. package/dist/features/homepage/components/HowItWorksSection.d.ts +23 -0
  921. package/dist/features/homepage/components/HowItWorksSection.js +36 -0
  922. package/dist/features/homepage/components/NewsletterBanner.d.ts +22 -0
  923. package/dist/features/homepage/components/NewsletterBanner.js +34 -0
  924. package/dist/features/homepage/components/NewsletterSection.d.ts +10 -0
  925. package/dist/features/homepage/components/NewsletterSection.js +8 -0
  926. package/dist/features/homepage/components/PromoGrid.d.ts +9 -0
  927. package/dist/features/homepage/components/PromoGrid.js +35 -0
  928. package/dist/features/homepage/components/SectionCarousel.d.ts +75 -0
  929. package/dist/features/homepage/components/SectionCarousel.js +39 -0
  930. package/dist/features/homepage/components/SecurityHighlightsSection.d.ts +21 -0
  931. package/dist/features/homepage/components/SecurityHighlightsSection.js +36 -0
  932. package/dist/features/homepage/components/SiteFeaturesSection.d.ts +13 -0
  933. package/dist/features/homepage/components/SiteFeaturesSection.js +9 -0
  934. package/dist/features/homepage/components/StatsCounterSection.d.ts +14 -0
  935. package/dist/features/homepage/components/StatsCounterSection.js +32 -0
  936. package/dist/features/homepage/components/TestimonialsCarousel.d.ts +9 -0
  937. package/dist/features/homepage/components/TestimonialsCarousel.js +30 -0
  938. package/dist/features/homepage/components/TrustBadges.d.ts +5 -0
  939. package/dist/features/homepage/components/TrustBadges.js +54 -0
  940. package/dist/features/homepage/components/TrustFeaturesSection.d.ts +16 -0
  941. package/dist/features/homepage/components/TrustFeaturesSection.js +41 -0
  942. package/dist/features/homepage/components/TrustIndicatorsSection.d.ts +11 -0
  943. package/dist/features/homepage/components/TrustIndicatorsSection.js +9 -0
  944. package/dist/features/homepage/components/WelcomeSection.d.ts +20 -0
  945. package/dist/features/homepage/components/WelcomeSection.js +12 -0
  946. package/dist/features/homepage/components/WhatsAppCommunitySection.d.ts +15 -0
  947. package/dist/features/homepage/components/WhatsAppCommunitySection.js +21 -0
  948. package/dist/features/homepage/components/index.d.ts +52 -0
  949. package/dist/features/homepage/components/index.js +27 -0
  950. package/dist/features/homepage/hooks/useBlogArticles.d.ts +12 -0
  951. package/dist/features/homepage/hooks/useBlogArticles.js +31 -0
  952. package/dist/features/homepage/hooks/useFeaturedAuctions.d.ts +2 -0
  953. package/dist/features/homepage/hooks/useFeaturedAuctions.js +26 -0
  954. package/dist/features/homepage/hooks/useFeaturedPreOrders.d.ts +2 -0
  955. package/dist/features/homepage/hooks/useFeaturedPreOrders.js +26 -0
  956. package/dist/features/homepage/hooks/useFeaturedProducts.d.ts +4 -0
  957. package/dist/features/homepage/hooks/useFeaturedProducts.js +32 -0
  958. package/dist/features/homepage/hooks/useHeroCarousel.d.ts +9 -0
  959. package/dist/features/homepage/hooks/useHeroCarousel.js +17 -0
  960. package/dist/features/homepage/hooks/useHomepage.d.ts +11 -0
  961. package/dist/features/homepage/hooks/useHomepage.js +18 -0
  962. package/dist/features/homepage/hooks/useHomepageReviews.d.ts +7 -0
  963. package/dist/features/homepage/hooks/useHomepageReviews.js +16 -0
  964. package/dist/features/homepage/hooks/useHomepageSections.d.ts +2 -0
  965. package/dist/features/homepage/hooks/useHomepageSections.js +11 -0
  966. package/dist/features/homepage/hooks/useNewsletter.d.ts +14 -0
  967. package/dist/features/homepage/hooks/useNewsletter.js +10 -0
  968. package/dist/features/homepage/hooks/useTopBrands.d.ts +2 -0
  969. package/dist/features/homepage/hooks/useTopBrands.js +12 -0
  970. package/dist/features/homepage/hooks/useTopCategories.d.ts +4 -0
  971. package/dist/features/homepage/hooks/useTopCategories.js +13 -0
  972. package/dist/features/homepage/index.d.ts +13 -846
  973. package/dist/features/homepage/index.js +13 -6279
  974. package/dist/features/homepage/manifest.d.ts +2 -0
  975. package/dist/features/homepage/manifest.js +14 -0
  976. package/dist/features/homepage/messages/en.json +6 -0
  977. package/dist/features/homepage/repository/carousel.repository.d.ts +101 -0
  978. package/dist/features/homepage/repository/carousel.repository.js +252 -0
  979. package/dist/features/homepage/repository/homepage-sections.repository.d.ts +27 -0
  980. package/dist/features/homepage/repository/homepage-sections.repository.js +174 -0
  981. package/dist/features/homepage/repository/homepage.repository.d.ts +11 -0
  982. package/dist/features/homepage/repository/homepage.repository.js +25 -0
  983. package/dist/features/homepage/schemas/firestore.d.ts +251 -0
  984. package/dist/features/homepage/schemas/firestore.js +83 -0
  985. package/dist/features/homepage/schemas/index.d.ts +1 -0
  986. package/dist/features/homepage/schemas/index.js +1 -0
  987. package/dist/features/homepage/server.d.ts +10 -121
  988. package/dist/features/homepage/server.js +10 -1024
  989. package/dist/features/homepage/types/index.d.ts +163 -0
  990. package/dist/features/homepage/types/index.js +1 -0
  991. package/dist/features/layout/AutoBreadcrumbs.d.ts +15 -0
  992. package/dist/features/layout/AutoBreadcrumbs.js +84 -0
  993. package/dist/features/layout/BackToTop.d.ts +16 -0
  994. package/dist/features/layout/BackToTop.js +26 -0
  995. package/dist/features/layout/BottomActions.d.ts +1 -0
  996. package/dist/features/layout/BottomActions.js +153 -0
  997. package/dist/features/layout/BottomActionsContext.d.ts +107 -0
  998. package/dist/features/layout/BottomActionsContext.js +114 -0
  999. package/dist/features/layout/BottomNavItem.d.ts +28 -0
  1000. package/dist/features/layout/BottomNavItem.js +28 -0
  1001. package/dist/features/layout/BottomNavLayout.d.ts +14 -0
  1002. package/dist/features/layout/BottomNavLayout.js +12 -0
  1003. package/dist/features/layout/BottomNavbar.d.ts +46 -0
  1004. package/dist/features/layout/BottomNavbar.js +19 -0
  1005. package/dist/features/layout/BottomSheet.d.ts +29 -0
  1006. package/dist/features/layout/BottomSheet.js +40 -0
  1007. package/dist/features/layout/Breadcrumbs.d.ts +26 -0
  1008. package/dist/features/layout/Breadcrumbs.js +25 -0
  1009. package/dist/features/layout/DashboardNavContext.d.ts +19 -0
  1010. package/dist/features/layout/DashboardNavContext.js +36 -0
  1011. package/dist/features/layout/FooterLayout.d.ts +39 -0
  1012. package/dist/features/layout/FooterLayout.js +12 -0
  1013. package/dist/features/layout/LayoutClient.d.ts +11 -0
  1014. package/dist/features/layout/LayoutClient.js +7 -0
  1015. package/dist/features/layout/ListingLayout.d.ts +35 -0
  1016. package/dist/features/layout/ListingLayout.js +104 -0
  1017. package/dist/features/layout/LocaleSwitcher.d.ts +22 -0
  1018. package/dist/features/layout/LocaleSwitcher.js +12 -0
  1019. package/dist/features/layout/MainNavbar.d.ts +32 -0
  1020. package/dist/features/layout/MainNavbar.js +29 -0
  1021. package/dist/features/layout/NavItem.d.ts +19 -0
  1022. package/dist/features/layout/NavItem.js +35 -0
  1023. package/dist/features/layout/NavbarLayout.d.ts +27 -0
  1024. package/dist/features/layout/NavbarLayout.js +23 -0
  1025. package/dist/features/layout/SidebarLayout.d.ts +24 -0
  1026. package/dist/features/layout/SidebarLayout.js +29 -0
  1027. package/dist/features/layout/TitleBar.d.ts +18 -0
  1028. package/dist/features/layout/TitleBar.js +19 -0
  1029. package/dist/features/layout/TitleBarLayout.d.ts +48 -0
  1030. package/dist/features/layout/TitleBarLayout.js +17 -0
  1031. package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
  1032. package/dist/features/layout/hooks/useBottomActions.js +28 -0
  1033. package/dist/features/layout/index.d.ts +41 -315
  1034. package/dist/features/layout/index.js +23 -1745
  1035. package/dist/features/loyalty/api/admin/loyalty/grant/route.d.ts +12 -0
  1036. package/dist/features/loyalty/api/admin/loyalty/grant/route.js +36 -0
  1037. package/dist/features/loyalty/api/balance/route.d.ts +12 -0
  1038. package/dist/features/loyalty/api/balance/route.js +39 -0
  1039. package/dist/features/loyalty/api/earn/route.d.ts +12 -0
  1040. package/dist/features/loyalty/api/earn/route.js +36 -0
  1041. package/dist/features/loyalty/api/history/route.d.ts +12 -0
  1042. package/dist/features/loyalty/api/history/route.js +56 -0
  1043. package/dist/features/loyalty/api/redeem/route.d.ts +12 -0
  1044. package/dist/features/loyalty/api/redeem/route.js +36 -0
  1045. package/dist/features/loyalty/columns/index.d.ts +17 -0
  1046. package/dist/features/loyalty/columns/index.js +40 -0
  1047. package/dist/features/loyalty/components/CoinsDisplay.d.ts +11 -0
  1048. package/dist/features/loyalty/components/CoinsDisplay.js +9 -0
  1049. package/dist/features/loyalty/components/index.d.ts +1 -0
  1050. package/dist/features/loyalty/components/index.js +1 -0
  1051. package/dist/features/loyalty/hooks/useLoyaltyBalance.d.ts +4 -0
  1052. package/dist/features/loyalty/hooks/useLoyaltyBalance.js +18 -0
  1053. package/dist/features/loyalty/index.d.ts +6 -174
  1054. package/dist/features/loyalty/index.js +6 -332
  1055. package/dist/features/loyalty/manifest.d.ts +2 -0
  1056. package/dist/features/loyalty/manifest.js +16 -0
  1057. package/dist/features/loyalty/messages/en.json +19 -0
  1058. package/dist/features/loyalty/repository/loyalty.repository.d.ts +8 -0
  1059. package/dist/features/loyalty/repository/loyalty.repository.js +22 -0
  1060. package/dist/features/loyalty/schemas/index.d.ts +85 -0
  1061. package/dist/features/loyalty/schemas/index.js +40 -0
  1062. package/dist/features/loyalty/server.d.ts +7 -0
  1063. package/dist/features/loyalty/server.js +7 -0
  1064. package/dist/features/loyalty/types/index.d.ts +31 -0
  1065. package/dist/features/loyalty/types/index.js +1 -0
  1066. package/dist/features/loyalty/types/loyalty-config.d.ts +7 -0
  1067. package/dist/features/loyalty/types/loyalty-config.js +1 -0
  1068. package/dist/features/loyalty/types/loyalty-math.d.ts +9 -0
  1069. package/dist/features/loyalty/types/loyalty-math.js +27 -0
  1070. package/dist/features/media/AvatarUpload.d.ts +22 -0
  1071. package/dist/features/media/AvatarUpload.js +133 -0
  1072. package/dist/features/media/MediaAvatar.d.ts +12 -0
  1073. package/dist/features/media/MediaAvatar.js +13 -0
  1074. package/dist/features/media/MediaImage.d.ts +28 -0
  1075. package/dist/features/media/MediaImage.js +35 -0
  1076. package/dist/features/media/MediaLightbox.d.ts +32 -0
  1077. package/dist/features/media/MediaLightbox.js +245 -0
  1078. package/dist/features/media/MediaVideo.d.ts +22 -0
  1079. package/dist/features/media/MediaVideo.js +38 -0
  1080. package/dist/features/media/components/MediaSlider.d.ts +10 -0
  1081. package/dist/features/media/components/MediaSlider.js +12 -0
  1082. package/dist/features/media/finalize.d.ts +11 -0
  1083. package/dist/features/media/finalize.js +70 -0
  1084. package/dist/features/media/hooks/useMedia.d.ts +198 -0
  1085. package/dist/features/media/hooks/useMedia.js +78 -0
  1086. package/dist/features/media/index.d.ts +30 -425
  1087. package/dist/features/media/index.js +21 -3593
  1088. package/dist/features/media/messages/en.json +63 -0
  1089. package/dist/features/media/modals/ImageCropModal.d.ts +16 -0
  1090. package/dist/features/media/modals/ImageCropModal.js +99 -0
  1091. package/dist/features/media/modals/VideoThumbnailSelector.d.ts +10 -0
  1092. package/dist/features/media/modals/VideoThumbnailSelector.js +51 -0
  1093. package/dist/features/media/modals/VideoTrimModal.d.ts +11 -0
  1094. package/dist/features/media/modals/VideoTrimModal.js +73 -0
  1095. package/dist/features/media/server.d.ts +2 -0
  1096. package/dist/features/media/server.js +2 -0
  1097. package/dist/features/media/types/index.d.ts +29 -0
  1098. package/dist/features/media/types/index.js +43 -0
  1099. package/dist/features/media/upload/CameraCapture.d.ts +8 -0
  1100. package/dist/features/media/upload/CameraCapture.js +59 -0
  1101. package/dist/features/media/upload/ImageUpload.d.ts +14 -0
  1102. package/dist/features/media/upload/ImageUpload.js +132 -0
  1103. package/dist/features/media/upload/MediaUploadField.d.ts +31 -0
  1104. package/dist/features/media/upload/MediaUploadField.js +204 -0
  1105. package/dist/features/media/upload/MediaUploadList.d.ts +26 -0
  1106. package/dist/features/media/upload/MediaUploadList.js +104 -0
  1107. package/dist/features/orders/actions/index.d.ts +2 -0
  1108. package/dist/features/orders/actions/index.js +2 -0
  1109. package/dist/features/orders/actions/order-actions.d.ts +16 -0
  1110. package/dist/features/orders/actions/order-actions.js +46 -0
  1111. package/dist/features/orders/actions/refund-actions.d.ts +16 -0
  1112. package/dist/features/orders/actions/refund-actions.js +88 -0
  1113. package/dist/features/orders/api/track/[trackingId]/route.d.ts +17 -0
  1114. package/dist/features/orders/api/track/[trackingId]/route.js +30 -0
  1115. package/dist/features/orders/columns/index.d.ts +15 -0
  1116. package/dist/features/orders/columns/index.js +34 -0
  1117. package/dist/features/orders/components/MarketplaceOrderCard.d.ts +37 -0
  1118. package/dist/features/orders/components/MarketplaceOrderCard.js +52 -0
  1119. package/dist/features/orders/components/OrderFilters.d.ts +82 -0
  1120. package/dist/features/orders/components/OrderFilters.js +106 -0
  1121. package/dist/features/orders/components/OrdersList.d.ts +18 -0
  1122. package/dist/features/orders/components/OrdersList.js +37 -0
  1123. package/dist/features/orders/components/index.d.ts +4 -0
  1124. package/dist/features/orders/components/index.js +3 -0
  1125. package/dist/features/orders/hooks/useOrders.d.ts +32 -0
  1126. package/dist/features/orders/hooks/useOrders.js +57 -0
  1127. package/dist/features/orders/index.d.ts +7 -370
  1128. package/dist/features/orders/index.js +7 -863
  1129. package/dist/features/orders/manifest.d.ts +2 -0
  1130. package/dist/features/orders/manifest.js +18 -0
  1131. package/dist/features/orders/messages/en.json +15 -0
  1132. package/dist/features/orders/repository/orders.repository.d.ts +188 -0
  1133. package/dist/features/orders/repository/orders.repository.js +300 -0
  1134. package/dist/features/orders/schemas/firestore.d.ts +129 -0
  1135. package/dist/features/orders/schemas/firestore.js +96 -0
  1136. package/dist/features/orders/schemas/index.d.ts +217 -0
  1137. package/dist/features/orders/schemas/index.js +76 -0
  1138. package/dist/features/orders/server.d.ts +9 -0
  1139. package/dist/features/orders/server.js +10 -0
  1140. package/dist/features/orders/types/index.d.ts +69 -0
  1141. package/dist/features/orders/types/index.js +2 -0
  1142. package/dist/features/orders/utils/order-splitter.d.ts +14 -0
  1143. package/dist/features/orders/utils/order-splitter.js +29 -0
  1144. package/dist/features/payments/columns/index.d.ts +17 -0
  1145. package/dist/features/payments/columns/index.js +45 -0
  1146. package/dist/features/payments/hooks/usePaymentEvent.d.ts +17 -0
  1147. package/dist/features/payments/hooks/usePaymentEvent.js +26 -0
  1148. package/dist/features/payments/hooks/usePayments.d.ts +10 -0
  1149. package/dist/features/payments/hooks/usePayments.js +19 -0
  1150. package/dist/features/payments/index.d.ts +6 -141
  1151. package/dist/features/payments/index.js +6 -331
  1152. package/dist/features/payments/manifest.d.ts +2 -0
  1153. package/dist/features/payments/manifest.js +12 -0
  1154. package/dist/features/payments/messages/en.json +11 -0
  1155. package/dist/features/payments/repository/payments.repository.d.ts +15 -0
  1156. package/dist/features/payments/repository/payments.repository.js +36 -0
  1157. package/dist/features/payments/repository/payout.repository.d.ts +111 -0
  1158. package/dist/features/payments/repository/payout.repository.js +202 -0
  1159. package/dist/features/payments/schemas/firestore.d.ts +74 -0
  1160. package/dist/features/payments/schemas/firestore.js +65 -0
  1161. package/dist/features/payments/schemas/index.d.ts +77 -0
  1162. package/dist/features/payments/schemas/index.js +67 -0
  1163. package/dist/features/payments/server.d.ts +8 -0
  1164. package/dist/features/payments/server.js +8 -0
  1165. package/dist/features/payments/types/index.d.ts +36 -0
  1166. package/dist/features/payments/types/index.js +2 -0
  1167. package/dist/features/pre-orders/api/[id]/route.d.ts +26 -0
  1168. package/dist/features/pre-orders/api/[id]/route.js +88 -0
  1169. package/dist/features/pre-orders/api/[slug]/route.d.ts +16 -0
  1170. package/dist/features/pre-orders/api/[slug]/route.js +41 -0
  1171. package/dist/features/pre-orders/api/admin/[id]/route.d.ts +21 -0
  1172. package/dist/features/pre-orders/api/admin/[id]/route.js +65 -0
  1173. package/dist/features/pre-orders/api/admin/route.d.ts +12 -0
  1174. package/dist/features/pre-orders/api/admin/route.js +56 -0
  1175. package/dist/features/pre-orders/api/route.d.ts +13 -0
  1176. package/dist/features/pre-orders/api/route.js +77 -0
  1177. package/dist/features/pre-orders/columns/index.d.ts +17 -0
  1178. package/dist/features/pre-orders/columns/index.js +68 -0
  1179. package/dist/features/pre-orders/components/MarketplacePreorderCard.d.ts +24 -0
  1180. package/dist/features/pre-orders/components/MarketplacePreorderCard.js +53 -0
  1181. package/dist/features/pre-orders/components/PreOrderBadge.d.ts +14 -0
  1182. package/dist/features/pre-orders/components/PreOrderBadge.js +17 -0
  1183. package/dist/features/pre-orders/components/PreorderCard.d.ts +12 -0
  1184. package/dist/features/pre-orders/components/PreorderCard.js +27 -0
  1185. package/dist/features/pre-orders/components/index.d.ts +2 -0
  1186. package/dist/features/pre-orders/components/index.js +2 -0
  1187. package/dist/features/pre-orders/hooks/usePreOrders.d.ts +7 -0
  1188. package/dist/features/pre-orders/hooks/usePreOrders.js +34 -0
  1189. package/dist/features/pre-orders/index.d.ts +6 -170
  1190. package/dist/features/pre-orders/index.js +6 -538
  1191. package/dist/features/pre-orders/manifest.d.ts +2 -0
  1192. package/dist/features/pre-orders/manifest.js +17 -0
  1193. package/dist/features/pre-orders/messages/en.json +13 -0
  1194. package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +14 -0
  1195. package/dist/features/pre-orders/repository/pre-orders.repository.js +44 -0
  1196. package/dist/features/pre-orders/repository/preorders.repository.d.ts +8 -0
  1197. package/dist/features/pre-orders/repository/preorders.repository.js +21 -0
  1198. package/dist/features/pre-orders/schemas/index.d.ts +79 -0
  1199. package/dist/features/pre-orders/schemas/index.js +27 -0
  1200. package/dist/features/pre-orders/server.d.ts +5 -14
  1201. package/dist/features/pre-orders/server.js +8 -106
  1202. package/dist/features/pre-orders/types/index.d.ts +29 -0
  1203. package/dist/features/pre-orders/types/index.js +12 -0
  1204. package/dist/features/products/actions/index.d.ts +1 -0
  1205. package/dist/features/products/actions/index.js +1 -0
  1206. package/dist/features/products/actions/product-actions.d.ts +26 -0
  1207. package/dist/features/products/actions/product-actions.js +111 -0
  1208. package/dist/features/products/api/[id]/route.d.ts +29 -0
  1209. package/dist/features/products/api/[id]/route.js +137 -0
  1210. package/dist/features/products/api/route.d.ts +19 -0
  1211. package/dist/features/products/api/route.js +214 -0
  1212. package/dist/features/products/columns/index.d.ts +64 -0
  1213. package/dist/features/products/columns/index.js +85 -0
  1214. package/dist/features/products/columns/productTableColumns.d.ts +27 -0
  1215. package/dist/features/products/columns/productTableColumns.js +88 -0
  1216. package/dist/features/products/components/AuctionDetailView.d.ts +13 -0
  1217. package/dist/features/products/components/AuctionDetailView.js +9 -0
  1218. package/dist/features/products/components/AuctionsView.d.ts +6 -0
  1219. package/dist/features/products/components/AuctionsView.js +5 -0
  1220. package/dist/features/products/components/BidHistory.d.ts +28 -0
  1221. package/dist/features/products/components/BidHistory.js +18 -0
  1222. package/dist/features/products/components/BuyBar.d.ts +21 -0
  1223. package/dist/features/products/components/BuyBar.js +20 -0
  1224. package/dist/features/products/components/InteractiveProductCard.d.ts +19 -0
  1225. package/dist/features/products/components/InteractiveProductCard.js +18 -0
  1226. package/dist/features/products/components/MakeOfferForm.d.ts +20 -0
  1227. package/dist/features/products/components/MakeOfferForm.js +8 -0
  1228. package/dist/features/products/components/PlaceBidForm.d.ts +20 -0
  1229. package/dist/features/products/components/PlaceBidForm.js +6 -0
  1230. package/dist/features/products/components/PreOrderDetailView.d.ts +14 -0
  1231. package/dist/features/products/components/PreOrderDetailView.js +9 -0
  1232. package/dist/features/products/components/PreOrdersView.d.ts +6 -0
  1233. package/dist/features/products/components/PreOrdersView.js +5 -0
  1234. package/dist/features/products/components/ProductDetailView.d.ts +11 -0
  1235. package/dist/features/products/components/ProductDetailView.js +9 -0
  1236. package/dist/features/products/components/ProductFeatureBadges.d.ts +32 -0
  1237. package/dist/features/products/components/ProductFeatureBadges.js +103 -0
  1238. package/dist/features/products/components/ProductFilters.d.ts +90 -0
  1239. package/dist/features/products/components/ProductFilters.js +105 -0
  1240. package/dist/features/products/components/ProductForm.d.ts +47 -0
  1241. package/dist/features/products/components/ProductForm.js +120 -0
  1242. package/dist/features/products/components/ProductGrid.d.ts +69 -0
  1243. package/dist/features/products/components/ProductGrid.js +92 -0
  1244. package/dist/features/products/components/ProductInfo.d.ts +20 -0
  1245. package/dist/features/products/components/ProductInfo.js +4 -0
  1246. package/dist/features/products/components/ProductTabs.d.ts +21 -0
  1247. package/dist/features/products/components/ProductTabs.js +22 -0
  1248. package/dist/features/products/components/ProductsView.d.ts +6 -0
  1249. package/dist/features/products/components/ProductsView.js +5 -0
  1250. package/dist/features/products/components/RelatedProducts.d.ts +16 -0
  1251. package/dist/features/products/components/RelatedProducts.js +12 -0
  1252. package/dist/features/products/components/index.d.ts +34 -0
  1253. package/dist/features/products/components/index.js +18 -0
  1254. package/dist/features/products/hooks/useBrands.d.ts +9 -0
  1255. package/dist/features/products/hooks/useBrands.js +15 -0
  1256. package/dist/features/products/hooks/useProductDetail.d.ts +15 -0
  1257. package/dist/features/products/hooks/useProductDetail.js +29 -0
  1258. package/dist/features/products/hooks/useProducts.d.ts +43 -0
  1259. package/dist/features/products/hooks/useProducts.js +67 -0
  1260. package/dist/features/products/hooks/useRelatedProducts.d.ts +2 -0
  1261. package/dist/features/products/hooks/useRelatedProducts.js +17 -0
  1262. package/dist/features/products/index.d.ts +10 -1066
  1263. package/dist/features/products/index.js +10 -2475
  1264. package/dist/features/products/manifest.d.ts +2 -0
  1265. package/dist/features/products/manifest.js +16 -0
  1266. package/dist/features/products/messages/en.json +11 -0
  1267. package/dist/features/products/repository/products.repository.d.ts +213 -0
  1268. package/dist/features/products/repository/products.repository.js +300 -0
  1269. package/dist/features/products/schemas/firestore.d.ts +125 -0
  1270. package/dist/features/products/schemas/firestore.js +149 -0
  1271. package/dist/features/products/schemas/index.d.ts +400 -0
  1272. package/dist/features/products/schemas/index.js +173 -0
  1273. package/dist/features/products/server.d.ts +7 -49
  1274. package/dist/features/products/server.js +10 -803
  1275. package/dist/features/products/types/index.d.ts +122 -0
  1276. package/dist/features/products/types/index.js +1 -0
  1277. package/dist/features/products/utils/listing-type.d.ts +2 -0
  1278. package/dist/features/products/utils/listing-type.js +9 -0
  1279. package/dist/features/promotions/actions/coupon-actions.d.ts +28 -0
  1280. package/dist/features/promotions/actions/coupon-actions.js +23 -0
  1281. package/dist/features/promotions/actions/index.d.ts +3 -0
  1282. package/dist/features/promotions/actions/index.js +3 -0
  1283. package/dist/features/promotions/actions/promotions-actions.d.ts +18 -0
  1284. package/dist/features/promotions/actions/promotions-actions.js +37 -0
  1285. package/dist/features/promotions/actions/seller-coupon-actions.d.ts +41 -0
  1286. package/dist/features/promotions/actions/seller-coupon-actions.js +92 -0
  1287. package/dist/features/promotions/api/route.d.ts +21 -0
  1288. package/dist/features/promotions/api/route.js +85 -0
  1289. package/dist/features/promotions/columns/index.d.ts +12 -0
  1290. package/dist/features/promotions/columns/index.js +45 -0
  1291. package/dist/features/promotions/components/CouponCard.d.ts +16 -0
  1292. package/dist/features/promotions/components/CouponCard.js +20 -0
  1293. package/dist/features/promotions/components/PromotionsView.d.ts +43 -0
  1294. package/dist/features/promotions/components/PromotionsView.js +10 -0
  1295. package/dist/features/promotions/components/index.d.ts +3 -0
  1296. package/dist/features/promotions/components/index.js +2 -0
  1297. package/dist/features/promotions/hooks/useCouponValidate.d.ts +22 -0
  1298. package/dist/features/promotions/hooks/useCouponValidate.js +10 -0
  1299. package/dist/features/promotions/hooks/usePromotions.d.ts +21 -0
  1300. package/dist/features/promotions/hooks/usePromotions.js +49 -0
  1301. package/dist/features/promotions/index.d.ts +7 -301
  1302. package/dist/features/promotions/index.js +7 -957
  1303. package/dist/features/promotions/manifest.d.ts +2 -0
  1304. package/dist/features/promotions/manifest.js +14 -0
  1305. package/dist/features/promotions/messages/en.json +20 -0
  1306. package/dist/features/promotions/repository/coupons.repository.d.ts +224 -0
  1307. package/dist/features/promotions/repository/coupons.repository.js +539 -0
  1308. package/dist/features/promotions/repository/promotions.repository.d.ts +14 -0
  1309. package/dist/features/promotions/repository/promotions.repository.js +43 -0
  1310. package/dist/features/promotions/schemas/firestore.d.ts +105 -0
  1311. package/dist/features/promotions/schemas/firestore.js +124 -0
  1312. package/dist/features/promotions/schemas/index.d.ts +117 -0
  1313. package/dist/features/promotions/schemas/index.js +58 -0
  1314. package/dist/features/promotions/server.d.ts +10 -0
  1315. package/dist/features/promotions/server.js +10 -0
  1316. package/dist/features/promotions/types/index.d.ts +51 -0
  1317. package/dist/features/promotions/types/index.js +2 -0
  1318. package/dist/features/reviews/actions/index.d.ts +1 -0
  1319. package/dist/features/reviews/actions/index.js +1 -0
  1320. package/dist/features/reviews/actions/review-actions.d.ts +40 -0
  1321. package/dist/features/reviews/actions/review-actions.js +182 -0
  1322. package/dist/features/reviews/api/[id]/route.d.ts +23 -0
  1323. package/dist/features/reviews/api/[id]/route.js +109 -0
  1324. package/dist/features/reviews/api/route.d.ts +21 -0
  1325. package/dist/features/reviews/api/route.js +171 -0
  1326. package/dist/features/reviews/columns/index.d.ts +15 -0
  1327. package/dist/features/reviews/columns/index.js +44 -0
  1328. package/dist/features/reviews/components/ReviewFilters.d.ts +74 -0
  1329. package/dist/features/reviews/components/ReviewFilters.js +60 -0
  1330. package/dist/features/reviews/components/ReviewModal.d.ts +11 -0
  1331. package/dist/features/reviews/components/ReviewModal.js +25 -0
  1332. package/dist/features/reviews/components/ReviewSummary.d.ts +16 -0
  1333. package/dist/features/reviews/components/ReviewSummary.js +20 -0
  1334. package/dist/features/reviews/components/ReviewsList.d.ts +15 -0
  1335. package/dist/features/reviews/components/ReviewsList.js +25 -0
  1336. package/dist/features/reviews/components/ReviewsListView.d.ts +31 -0
  1337. package/dist/features/reviews/components/ReviewsListView.js +16 -0
  1338. package/dist/features/reviews/components/index.d.ts +10 -0
  1339. package/dist/features/reviews/components/index.js +5 -0
  1340. package/dist/features/reviews/hooks/useCreateReview.d.ts +12 -0
  1341. package/dist/features/reviews/hooks/useCreateReview.js +20 -0
  1342. package/dist/features/reviews/hooks/useReviews.d.ts +34 -0
  1343. package/dist/features/reviews/hooks/useReviews.js +49 -0
  1344. package/dist/features/reviews/index.d.ts +7 -434
  1345. package/dist/features/reviews/index.js +7 -2297
  1346. package/dist/features/reviews/manifest.d.ts +2 -0
  1347. package/dist/features/reviews/manifest.js +10 -0
  1348. package/dist/features/reviews/messages/en.json +10 -0
  1349. package/dist/features/reviews/repository/reviews.repository.d.ts +103 -0
  1350. package/dist/features/reviews/repository/reviews.repository.js +214 -0
  1351. package/dist/features/reviews/schemas/firestore.d.ts +67 -0
  1352. package/dist/features/reviews/schemas/firestore.js +59 -0
  1353. package/dist/features/reviews/schemas/index.d.ts +183 -0
  1354. package/dist/features/reviews/schemas/index.js +68 -0
  1355. package/dist/features/reviews/server.d.ts +7 -46
  1356. package/dist/features/reviews/server.js +10 -769
  1357. package/dist/features/reviews/types/index.d.ts +62 -0
  1358. package/dist/features/reviews/types/index.js +1 -0
  1359. package/dist/features/search/actions/index.d.ts +1 -0
  1360. package/dist/features/search/actions/index.js +1 -0
  1361. package/dist/features/search/actions/search-actions.d.ts +18 -0
  1362. package/dist/features/search/actions/search-actions.js +43 -0
  1363. package/dist/features/search/api/route.d.ts +22 -0
  1364. package/dist/features/search/api/route.js +79 -0
  1365. package/dist/features/search/columns/index.d.ts +17 -0
  1366. package/dist/features/search/columns/index.js +49 -0
  1367. package/dist/features/search/components/Search.d.ts +41 -0
  1368. package/dist/features/search/components/Search.js +263 -0
  1369. package/dist/features/search/components/SearchFiltersRow.d.ts +22 -0
  1370. package/dist/features/search/components/SearchFiltersRow.js +21 -0
  1371. package/dist/features/search/components/SearchResultsSection.d.ts +53 -0
  1372. package/dist/features/search/components/SearchResultsSection.js +36 -0
  1373. package/dist/features/search/components/SearchView.d.ts +29 -0
  1374. package/dist/features/search/components/SearchView.js +8 -0
  1375. package/dist/features/search/components/index.d.ts +8 -0
  1376. package/dist/features/search/components/index.js +4 -0
  1377. package/dist/features/search/hooks/useNavSuggestions.d.ts +11 -0
  1378. package/dist/features/search/hooks/useNavSuggestions.js +32 -0
  1379. package/dist/features/search/hooks/useSearch.d.ts +21 -0
  1380. package/dist/features/search/hooks/useSearch.js +34 -0
  1381. package/dist/features/search/index.d.ts +7 -298
  1382. package/dist/features/search/index.js +7 -1351
  1383. package/dist/features/search/manifest.d.ts +2 -0
  1384. package/dist/features/search/manifest.js +10 -0
  1385. package/dist/features/search/messages/en.json +15 -0
  1386. package/dist/features/search/repository/search.repository.d.ts +14 -0
  1387. package/dist/features/search/repository/search.repository.js +59 -0
  1388. package/dist/features/search/schemas/index.d.ts +70 -0
  1389. package/dist/features/search/schemas/index.js +34 -0
  1390. package/dist/features/search/server.d.ts +5 -83
  1391. package/dist/features/search/server.js +5 -149
  1392. package/dist/features/search/types/index.d.ts +46 -0
  1393. package/dist/features/search/types/index.js +2 -0
  1394. package/dist/features/seller/actions/index.d.ts +2 -0
  1395. package/dist/features/seller/actions/index.js +2 -0
  1396. package/dist/features/seller/actions/offer-actions.d.ts +32 -0
  1397. package/dist/features/seller/actions/offer-actions.js +266 -0
  1398. package/dist/features/seller/actions/seller-actions.d.ts +172 -0
  1399. package/dist/features/seller/actions/seller-actions.js +480 -0
  1400. package/dist/features/seller/api/coupons/route.d.ts +17 -0
  1401. package/dist/features/seller/api/coupons/route.js +47 -0
  1402. package/dist/features/seller/api/offers/route.d.ts +17 -0
  1403. package/dist/features/seller/api/offers/route.js +63 -0
  1404. package/dist/features/seller/api/products/route.d.ts +17 -0
  1405. package/dist/features/seller/api/products/route.js +64 -0
  1406. package/dist/features/seller/api/store/route.d.ts +17 -0
  1407. package/dist/features/seller/api/store/route.js +34 -0
  1408. package/dist/features/seller/columns/index.d.ts +22 -0
  1409. package/dist/features/seller/columns/index.js +73 -0
  1410. package/dist/features/seller/components/SellerAddressesView.d.ts +13 -0
  1411. package/dist/features/seller/components/SellerAddressesView.js +5 -0
  1412. package/dist/features/seller/components/SellerAnalyticsView.d.ts +13 -0
  1413. package/dist/features/seller/components/SellerAnalyticsView.js +17 -0
  1414. package/dist/features/seller/components/SellerAuctionsView.d.ts +6 -0
  1415. package/dist/features/seller/components/SellerAuctionsView.js +5 -0
  1416. package/dist/features/seller/components/SellerCouponsView.d.ts +6 -0
  1417. package/dist/features/seller/components/SellerCouponsView.js +5 -0
  1418. package/dist/features/seller/components/SellerCreateProductView.d.ts +11 -0
  1419. package/dist/features/seller/components/SellerCreateProductView.js +5 -0
  1420. package/dist/features/seller/components/SellerDashboardView.d.ts +14 -0
  1421. package/dist/features/seller/components/SellerDashboardView.js +11 -0
  1422. package/dist/features/seller/components/SellerEditProductView.d.ts +11 -0
  1423. package/dist/features/seller/components/SellerEditProductView.js +5 -0
  1424. package/dist/features/seller/components/SellerGuideView.d.ts +12 -0
  1425. package/dist/features/seller/components/SellerGuideView.js +5 -0
  1426. package/dist/features/seller/components/SellerOffersView.d.ts +4 -0
  1427. package/dist/features/seller/components/SellerOffersView.js +5 -0
  1428. package/dist/features/seller/components/SellerOrdersView.d.ts +4 -0
  1429. package/dist/features/seller/components/SellerOrdersView.js +5 -0
  1430. package/dist/features/seller/components/SellerPayoutHistoryTable.d.ts +14 -0
  1431. package/dist/features/seller/components/SellerPayoutHistoryTable.js +10 -0
  1432. package/dist/features/seller/components/SellerPayoutSettingsView.d.ts +11 -0
  1433. package/dist/features/seller/components/SellerPayoutSettingsView.js +5 -0
  1434. package/dist/features/seller/components/SellerPayoutStats.d.ts +8 -0
  1435. package/dist/features/seller/components/SellerPayoutStats.js +9 -0
  1436. package/dist/features/seller/components/SellerPayoutsView.d.ts +18 -0
  1437. package/dist/features/seller/components/SellerPayoutsView.js +11 -0
  1438. package/dist/features/seller/components/SellerProductsView.d.ts +6 -0
  1439. package/dist/features/seller/components/SellerProductsView.js +5 -0
  1440. package/dist/features/seller/components/SellerShippingView.d.ts +12 -0
  1441. package/dist/features/seller/components/SellerShippingView.js +5 -0
  1442. package/dist/features/seller/components/SellerSidebar.d.ts +16 -0
  1443. package/dist/features/seller/components/SellerSidebar.js +11 -0
  1444. package/dist/features/seller/components/SellerStatCard.d.ts +14 -0
  1445. package/dist/features/seller/components/SellerStatCard.js +5 -0
  1446. package/dist/features/seller/components/SellerStoreSetupView.d.ts +12 -0
  1447. package/dist/features/seller/components/SellerStoreSetupView.js +8 -0
  1448. package/dist/features/seller/components/SellerStoreView.d.ts +8 -0
  1449. package/dist/features/seller/components/SellerStoreView.js +8 -0
  1450. package/dist/features/seller/components/SellerStorefrontView.d.ts +13 -0
  1451. package/dist/features/seller/components/SellerStorefrontView.js +10 -0
  1452. package/dist/features/seller/components/SellersListView.d.ts +4 -0
  1453. package/dist/features/seller/components/SellersListView.js +5 -0
  1454. package/dist/features/seller/components/analytics/SellerAnalyticsStats.d.ts +14 -0
  1455. package/dist/features/seller/components/analytics/SellerAnalyticsStats.js +9 -0
  1456. package/dist/features/seller/components/analytics/SellerRevenueChart.d.ts +13 -0
  1457. package/dist/features/seller/components/analytics/SellerRevenueChart.js +28 -0
  1458. package/dist/features/seller/components/analytics/SellerTopProducts.d.ts +17 -0
  1459. package/dist/features/seller/components/analytics/SellerTopProducts.js +6 -0
  1460. package/dist/features/seller/components/analytics/index.d.ts +3 -0
  1461. package/dist/features/seller/components/analytics/index.js +3 -0
  1462. package/dist/features/seller/components/index.d.ts +44 -0
  1463. package/dist/features/seller/components/index.js +23 -0
  1464. package/dist/features/seller/hooks/useBecomeSeller.d.ts +12 -0
  1465. package/dist/features/seller/hooks/useBecomeSeller.js +26 -0
  1466. package/dist/features/seller/hooks/useSellerPayouts.d.ts +25 -0
  1467. package/dist/features/seller/hooks/useSellerPayouts.js +42 -0
  1468. package/dist/features/seller/hooks/useSellerStore.d.ts +28 -0
  1469. package/dist/features/seller/hooks/useSellerStore.js +48 -0
  1470. package/dist/features/seller/hooks/useSellerStorefront.d.ts +16 -0
  1471. package/dist/features/seller/hooks/useSellerStorefront.js +57 -0
  1472. package/dist/features/seller/index.d.ts +10 -926
  1473. package/dist/features/seller/index.js +10 -2029
  1474. package/dist/features/seller/manifest.d.ts +2 -0
  1475. package/dist/features/seller/manifest.js +74 -0
  1476. package/dist/features/seller/messages/en.json +32 -0
  1477. package/dist/features/seller/permission-map.d.ts +3 -0
  1478. package/dist/features/seller/permission-map.js +15 -0
  1479. package/dist/features/seller/repository/offer.repository.d.ts +66 -0
  1480. package/dist/features/seller/repository/offer.repository.js +210 -0
  1481. package/dist/features/seller/repository/seller.repository.d.ts +22 -0
  1482. package/dist/features/seller/repository/seller.repository.js +72 -0
  1483. package/dist/features/seller/schemas/firestore.d.ts +76 -0
  1484. package/dist/features/seller/schemas/firestore.js +57 -0
  1485. package/dist/features/seller/schemas/index.d.ts +244 -0
  1486. package/dist/features/seller/schemas/index.js +100 -0
  1487. package/dist/features/seller/server.d.ts +13 -0
  1488. package/dist/features/seller/server.js +13 -0
  1489. package/dist/features/seller/types/index.d.ts +147 -0
  1490. package/dist/features/seller/types/index.js +2 -0
  1491. package/dist/features/stores/actions/index.d.ts +2 -0
  1492. package/dist/features/stores/actions/index.js +2 -0
  1493. package/dist/features/stores/actions/store-address-actions.d.ts +11 -0
  1494. package/dist/features/stores/actions/store-address-actions.js +54 -0
  1495. package/dist/features/stores/actions/store-query-actions.d.ts +34 -0
  1496. package/dist/features/stores/actions/store-query-actions.js +113 -0
  1497. package/dist/features/stores/api/[storeSlug]/auctions/route.d.ts +23 -0
  1498. package/dist/features/stores/api/[storeSlug]/auctions/route.js +92 -0
  1499. package/dist/features/stores/api/[storeSlug]/products/route.d.ts +23 -0
  1500. package/dist/features/stores/api/[storeSlug]/products/route.js +97 -0
  1501. package/dist/features/stores/api/[storeSlug]/reviews/route.d.ts +23 -0
  1502. package/dist/features/stores/api/[storeSlug]/reviews/route.js +101 -0
  1503. package/dist/features/stores/api/[storeSlug]/route.d.ts +21 -0
  1504. package/dist/features/stores/api/[storeSlug]/route.js +66 -0
  1505. package/dist/features/stores/api/route.d.ts +12 -0
  1506. package/dist/features/stores/api/route.js +101 -0
  1507. package/dist/features/stores/columns/index.d.ts +16 -0
  1508. package/dist/features/stores/columns/index.js +45 -0
  1509. package/dist/features/stores/components/InteractiveStoreCard.d.ts +20 -0
  1510. package/dist/features/stores/components/InteractiveStoreCard.js +16 -0
  1511. package/dist/features/stores/components/StoreAboutView.d.ts +21 -0
  1512. package/dist/features/stores/components/StoreAboutView.js +12 -0
  1513. package/dist/features/stores/components/StoreAddressSelectorCreate.d.ts +16 -0
  1514. package/dist/features/stores/components/StoreAddressSelectorCreate.js +40 -0
  1515. package/dist/features/stores/components/StoreAuctionsView.d.ts +17 -0
  1516. package/dist/features/stores/components/StoreAuctionsView.js +5 -0
  1517. package/dist/features/stores/components/StoreHeader.d.ts +15 -0
  1518. package/dist/features/stores/components/StoreHeader.js +8 -0
  1519. package/dist/features/stores/components/StoreNavTabs.d.ts +15 -0
  1520. package/dist/features/stores/components/StoreNavTabs.js +14 -0
  1521. package/dist/features/stores/components/StoreProductsView.d.ts +30 -0
  1522. package/dist/features/stores/components/StoreProductsView.js +11 -0
  1523. package/dist/features/stores/components/StoreReviewsView.d.ts +17 -0
  1524. package/dist/features/stores/components/StoreReviewsView.js +9 -0
  1525. package/dist/features/stores/components/StoresListView.d.ts +19 -0
  1526. package/dist/features/stores/components/StoresListView.js +24 -0
  1527. package/dist/features/stores/components/index.d.ts +16 -0
  1528. package/dist/features/stores/components/index.js +9 -0
  1529. package/dist/features/stores/hooks/useStoreAddressSelector.d.ts +23 -0
  1530. package/dist/features/stores/hooks/useStoreAddressSelector.js +30 -0
  1531. package/dist/features/stores/hooks/useStores.d.ts +58 -0
  1532. package/dist/features/stores/hooks/useStores.js +96 -0
  1533. package/dist/features/stores/index.d.ts +7 -536
  1534. package/dist/features/stores/index.js +7 -1911
  1535. package/dist/features/stores/manifest.d.ts +2 -0
  1536. package/dist/features/stores/manifest.js +35 -0
  1537. package/dist/features/stores/messages/en.json +21 -0
  1538. package/dist/features/stores/repository/store-address.repository.d.ts +55 -0
  1539. package/dist/features/stores/repository/store-address.repository.js +188 -0
  1540. package/dist/features/stores/repository/store.repository.d.ts +67 -0
  1541. package/dist/features/stores/repository/store.repository.js +181 -0
  1542. package/dist/features/stores/repository/stores.repository.d.ts +11 -0
  1543. package/dist/features/stores/repository/stores.repository.js +34 -0
  1544. package/dist/features/stores/schemas/firestore.d.ts +117 -0
  1545. package/dist/features/stores/schemas/firestore.js +109 -0
  1546. package/dist/features/stores/schemas/index.d.ts +85 -0
  1547. package/dist/features/stores/schemas/index.js +48 -0
  1548. package/dist/features/stores/server.d.ts +12 -103
  1549. package/dist/features/stores/server.js +15 -444
  1550. package/dist/features/stores/types/index.d.ts +102 -0
  1551. package/dist/features/stores/types/index.js +2 -0
  1552. package/dist/features/whatsapp-bot/api/send-status/route.d.ts +12 -0
  1553. package/dist/features/whatsapp-bot/api/send-status/route.js +36 -0
  1554. package/dist/features/whatsapp-bot/api/webhook/route.d.ts +12 -0
  1555. package/dist/features/whatsapp-bot/api/webhook/route.js +41 -0
  1556. package/dist/features/whatsapp-bot/components/WhatsAppChatButton.d.ts +8 -0
  1557. package/dist/features/whatsapp-bot/components/WhatsAppChatButton.js +7 -0
  1558. package/dist/features/whatsapp-bot/components/index.d.ts +1 -0
  1559. package/dist/features/whatsapp-bot/components/index.js +1 -0
  1560. package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +21 -0
  1561. package/dist/features/whatsapp-bot/helpers/whatsapp.js +125 -0
  1562. package/dist/features/whatsapp-bot/index.d.ts +3 -85
  1563. package/dist/features/whatsapp-bot/index.js +3 -154
  1564. package/dist/features/whatsapp-bot/manifest.d.ts +2 -0
  1565. package/dist/features/whatsapp-bot/manifest.js +13 -0
  1566. package/dist/features/whatsapp-bot/messages/en.json +7 -0
  1567. package/dist/features/whatsapp-bot/server.d.ts +7 -0
  1568. package/dist/features/whatsapp-bot/server.js +7 -0
  1569. package/dist/features/whatsapp-bot/types/index.d.ts +50 -0
  1570. package/dist/features/whatsapp-bot/types/index.js +1 -0
  1571. package/dist/features/wishlist/actions/index.d.ts +1 -0
  1572. package/dist/features/wishlist/actions/index.js +1 -0
  1573. package/dist/features/wishlist/actions/wishlist-actions.d.ts +20 -0
  1574. package/dist/features/wishlist/actions/wishlist-actions.js +29 -0
  1575. package/dist/features/wishlist/columns/index.d.ts +17 -0
  1576. package/dist/features/wishlist/columns/index.js +42 -0
  1577. package/dist/features/wishlist/components/WishlistPage.d.ts +16 -0
  1578. package/dist/features/wishlist/components/WishlistPage.js +17 -0
  1579. package/dist/features/wishlist/components/WishlistToggleButton.d.ts +12 -0
  1580. package/dist/features/wishlist/components/WishlistToggleButton.js +21 -0
  1581. package/dist/features/wishlist/components/WishlistView.d.ts +33 -0
  1582. package/dist/features/wishlist/components/WishlistView.js +41 -0
  1583. package/dist/features/wishlist/components/index.d.ts +4 -0
  1584. package/dist/features/wishlist/components/index.js +3 -0
  1585. package/dist/features/wishlist/hooks/useUserWishlist.d.ts +187 -0
  1586. package/dist/features/wishlist/hooks/useUserWishlist.js +17 -0
  1587. package/dist/features/wishlist/hooks/useWishlist.d.ts +16 -0
  1588. package/dist/features/wishlist/hooks/useWishlist.js +23 -0
  1589. package/dist/features/wishlist/hooks/useWishlistToggle.d.ts +10 -0
  1590. package/dist/features/wishlist/hooks/useWishlistToggle.js +32 -0
  1591. package/dist/features/wishlist/index.d.ts +9 -360
  1592. package/dist/features/wishlist/index.js +8 -888
  1593. package/dist/features/wishlist/manifest.d.ts +2 -0
  1594. package/dist/features/wishlist/manifest.js +12 -0
  1595. package/dist/features/wishlist/messages/en.json +7 -0
  1596. package/dist/features/wishlist/repository/user-wishlist.repository.d.ts +14 -0
  1597. package/dist/features/wishlist/repository/user-wishlist.repository.js +91 -0
  1598. package/dist/features/wishlist/repository/wishlist.repository.d.ts +13 -0
  1599. package/dist/features/wishlist/repository/wishlist.repository.js +31 -0
  1600. package/dist/features/wishlist/schemas/index.d.ts +46 -0
  1601. package/dist/features/wishlist/schemas/index.js +24 -0
  1602. package/dist/features/wishlist/server.d.ts +9 -0
  1603. package/dist/features/wishlist/server.js +9 -0
  1604. package/dist/features/wishlist/types/index.d.ts +16 -0
  1605. package/dist/features/wishlist/types/index.js +1 -0
  1606. package/dist/http/ApiClient.d.ts +59 -0
  1607. package/dist/http/ApiClient.js +149 -0
  1608. package/dist/http/api-handler.d.ts +33 -0
  1609. package/dist/http/api-handler.js +89 -0
  1610. package/dist/http/index.d.ts +6 -58
  1611. package/dist/http/index.js +8 -4
  1612. package/dist/index.d.ts +1 -17
  1613. package/dist/index.js +1 -13
  1614. package/dist/instrumentation/index.d.ts +4 -6
  1615. package/dist/instrumentation/index.js +54 -14
  1616. package/dist/monitoring/analytics.d.ts +79 -0
  1617. package/dist/monitoring/analytics.js +171 -0
  1618. package/dist/monitoring/browser.d.ts +10 -0
  1619. package/dist/monitoring/browser.js +6 -0
  1620. package/dist/monitoring/cache-metrics.d.ts +24 -0
  1621. package/dist/monitoring/cache-metrics.js +83 -0
  1622. package/dist/monitoring/client-logger.d.ts +29 -0
  1623. package/dist/monitoring/client-logger.js +127 -0
  1624. package/dist/monitoring/error-tracking.d.ts +50 -0
  1625. package/dist/monitoring/error-tracking.js +54 -0
  1626. package/dist/monitoring/index.d.ts +12 -181
  1627. package/dist/monitoring/index.js +7 -8
  1628. package/dist/monitoring/performance.d.ts +31 -0
  1629. package/dist/monitoring/performance.js +34 -0
  1630. package/dist/monitoring/runtime.d.ts +17 -0
  1631. package/dist/monitoring/runtime.js +28 -0
  1632. package/dist/monitoring/server-logger.d.ts +37 -0
  1633. package/dist/monitoring/server-logger.js +289 -0
  1634. package/dist/next/ErrorBoundary.d.ts +19 -0
  1635. package/dist/next/ErrorBoundary.js +35 -0
  1636. package/dist/next/IAuthVerifier.d.ts +54 -0
  1637. package/dist/next/IAuthVerifier.js +23 -0
  1638. package/dist/next/api/api-response.d.ts +29 -0
  1639. package/dist/next/api/api-response.js +31 -0
  1640. package/dist/next/api/apiHandler.d.ts +48 -0
  1641. package/dist/next/api/apiHandler.js +87 -0
  1642. package/dist/next/api/errorHandler.d.ts +57 -0
  1643. package/dist/next/api/errorHandler.js +72 -0
  1644. package/dist/next/api/routeHandler.d.ts +60 -0
  1645. package/dist/next/api/routeHandler.js +113 -0
  1646. package/dist/next/cache-middleware.d.ts +35 -0
  1647. package/dist/next/cache-middleware.js +77 -0
  1648. package/dist/next/components/ErrorView.d.ts +13 -0
  1649. package/dist/next/components/ErrorView.js +32 -0
  1650. package/dist/next/components/GlobalError.d.ts +7 -0
  1651. package/dist/next/components/GlobalError.js +43 -0
  1652. package/dist/next/components/NotFoundView.d.ts +28 -0
  1653. package/dist/next/components/NotFoundView.js +25 -0
  1654. package/dist/next/components/UnauthorizedView.d.ts +28 -0
  1655. package/dist/next/components/UnauthorizedView.js +22 -0
  1656. package/dist/next/index.d.ts +34 -776
  1657. package/dist/next/index.js +30 -646
  1658. package/dist/next/middleware/chain.d.ts +47 -0
  1659. package/dist/next/middleware/chain.js +80 -0
  1660. package/dist/next/middleware/index.d.ts +6 -0
  1661. package/dist/next/middleware/index.js +3 -0
  1662. package/dist/next/middleware/pii-redactor.d.ts +32 -0
  1663. package/dist/next/middleware/pii-redactor.js +82 -0
  1664. package/dist/next/middleware/pii-scrubber.d.ts +11 -0
  1665. package/dist/next/middleware/pii-scrubber.js +43 -0
  1666. package/dist/next/middleware/types.d.ts +18 -0
  1667. package/dist/next/middleware/types.js +1 -0
  1668. package/dist/next/request-helpers.d.ts +25 -0
  1669. package/dist/next/request-helpers.js +52 -0
  1670. package/dist/next/routing/route-map.d.ts +272 -0
  1671. package/dist/next/routing/route-map.js +202 -0
  1672. package/dist/providers/auth-firebase/browser-stub.d.ts +24 -0
  1673. package/dist/providers/auth-firebase/browser-stub.js +28 -0
  1674. package/dist/providers/auth-firebase/helpers.d.ts +83 -0
  1675. package/dist/providers/auth-firebase/helpers.js +205 -0
  1676. package/dist/providers/auth-firebase/index.d.ts +7 -133
  1677. package/dist/providers/auth-firebase/index.js +16 -370
  1678. package/dist/providers/auth-firebase/provider.d.ts +8 -0
  1679. package/dist/providers/auth-firebase/provider.js +118 -0
  1680. package/dist/providers/auth-firebase/session.d.ts +19 -0
  1681. package/dist/providers/auth-firebase/session.js +86 -0
  1682. package/dist/providers/db-firebase/admin-app-lite.d.ts +6 -0
  1683. package/dist/providers/db-firebase/admin-app-lite.js +50 -0
  1684. package/dist/providers/db-firebase/admin-auth-lite.d.ts +5 -0
  1685. package/dist/providers/db-firebase/admin-auth-lite.js +10 -0
  1686. package/dist/providers/db-firebase/admin-storage-lite.d.ts +6 -0
  1687. package/dist/providers/db-firebase/admin-storage-lite.js +11 -0
  1688. package/dist/providers/db-firebase/admin.d.ts +29 -0
  1689. package/dist/providers/db-firebase/admin.js +163 -0
  1690. package/dist/providers/db-firebase/base.d.ts +44 -0
  1691. package/dist/providers/db-firebase/base.js +180 -0
  1692. package/dist/providers/db-firebase/base.repository.d.ts +34 -0
  1693. package/dist/providers/db-firebase/base.repository.js +235 -0
  1694. package/dist/providers/db-firebase/browser-stub.d.ts +37 -0
  1695. package/dist/providers/db-firebase/browser-stub.js +56 -0
  1696. package/dist/providers/db-firebase/client-config.d.ts +22 -0
  1697. package/dist/providers/db-firebase/client-config.js +30 -0
  1698. package/dist/providers/db-firebase/field-ops.d.ts +7 -0
  1699. package/dist/providers/db-firebase/field-ops.js +13 -0
  1700. package/dist/providers/db-firebase/helpers.d.ts +23 -0
  1701. package/dist/providers/db-firebase/helpers.js +67 -0
  1702. package/dist/providers/db-firebase/index.d.ts +16 -250
  1703. package/dist/providers/db-firebase/index.js +42 -498
  1704. package/dist/providers/db-firebase/realtime.d.ts +43 -0
  1705. package/dist/providers/db-firebase/realtime.js +122 -0
  1706. package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
  1707. package/dist/providers/db-firebase/rtdb-paths.js +12 -0
  1708. package/dist/providers/db-firebase/sieve.d.ts +76 -0
  1709. package/dist/providers/db-firebase/sieve.js +83 -0
  1710. package/dist/providers/email-resend/index.d.ts +6 -64
  1711. package/dist/providers/email-resend/index.js +14 -56
  1712. package/dist/providers/email-resend/provider.d.ts +43 -0
  1713. package/dist/providers/email-resend/provider.js +75 -0
  1714. package/dist/providers/firebase-client/auth.d.ts +12 -0
  1715. package/dist/providers/firebase-client/auth.js +30 -0
  1716. package/dist/providers/firebase-client/index.d.ts +9 -0
  1717. package/dist/providers/firebase-client/index.js +9 -0
  1718. package/dist/providers/firebase-client/realtime.d.ts +18 -0
  1719. package/dist/providers/firebase-client/realtime.js +39 -0
  1720. package/dist/providers/payment-razorpay/index.d.ts +66 -69
  1721. package/dist/providers/payment-razorpay/index.js +201 -97
  1722. package/dist/providers/shipping-shiprocket/index.d.ts +69 -33
  1723. package/dist/providers/shipping-shiprocket/index.js +135 -122
  1724. package/dist/providers/shipping-shiprocket/shiprocket-provider.d.ts +46 -0
  1725. package/dist/providers/shipping-shiprocket/shiprocket-provider.js +152 -0
  1726. package/dist/providers/storage-firebase/client.d.ts +56 -0
  1727. package/dist/providers/storage-firebase/client.js +141 -0
  1728. package/dist/providers/storage-firebase/index.d.ts +6 -43
  1729. package/dist/providers/storage-firebase/index.js +16 -153
  1730. package/dist/providers/storage-firebase/provider.d.ts +23 -0
  1731. package/dist/providers/storage-firebase/provider.js +103 -0
  1732. package/dist/react/ErrorBoundary.d.ts +31 -0
  1733. package/dist/react/ErrorBoundary.js +68 -0
  1734. package/dist/react/contexts/SessionContext.d.ts +80 -0
  1735. package/dist/react/contexts/SessionContext.js +350 -0
  1736. package/dist/react/contexts/ThemeContext.d.ts +14 -0
  1737. package/dist/react/contexts/ThemeContext.js +65 -0
  1738. package/dist/react/contexts/index.d.ts +4 -0
  1739. package/dist/react/contexts/index.js +2 -0
  1740. package/dist/react/hooks/useBreakpoint.d.ts +29 -0
  1741. package/dist/react/hooks/useBreakpoint.js +37 -0
  1742. package/dist/react/hooks/useBulkAction.d.ts +65 -0
  1743. package/dist/react/hooks/useBulkAction.js +69 -0
  1744. package/dist/react/hooks/useBulkSelection.d.ts +40 -0
  1745. package/dist/react/hooks/useBulkSelection.js +58 -0
  1746. package/dist/react/hooks/useCamera.d.ts +34 -0
  1747. package/dist/react/hooks/useCamera.js +147 -0
  1748. package/dist/react/hooks/useClickOutside.d.ts +37 -0
  1749. package/dist/react/hooks/useClickOutside.js +57 -0
  1750. package/dist/react/hooks/useContainerGrid.d.ts +39 -0
  1751. package/dist/react/hooks/useContainerGrid.js +47 -0
  1752. package/dist/react/hooks/useCountdown.d.ts +26 -0
  1753. package/dist/react/hooks/useCountdown.js +49 -0
  1754. package/dist/react/hooks/useGesture.d.ts +51 -0
  1755. package/dist/react/hooks/useGesture.js +181 -0
  1756. package/dist/react/hooks/useKeyPress.d.ts +48 -0
  1757. package/dist/react/hooks/useKeyPress.js +62 -0
  1758. package/dist/react/hooks/useLongPress.d.ts +26 -0
  1759. package/dist/react/hooks/useLongPress.js +55 -0
  1760. package/dist/react/hooks/useMediaQuery.d.ts +17 -0
  1761. package/dist/react/hooks/useMediaQuery.js +34 -0
  1762. package/dist/react/hooks/useMessage.d.ts +11 -0
  1763. package/dist/react/hooks/useMessage.js +45 -0
  1764. package/dist/react/hooks/usePendingFilters.d.ts +58 -0
  1765. package/dist/react/hooks/usePendingFilters.js +79 -0
  1766. package/dist/react/hooks/usePendingTable.d.ts +49 -0
  1767. package/dist/react/hooks/usePendingTable.js +45 -0
  1768. package/dist/react/hooks/usePullToRefresh.d.ts +38 -0
  1769. package/dist/react/hooks/usePullToRefresh.js +82 -0
  1770. package/dist/react/hooks/useRealtimeEvent.d.ts +53 -0
  1771. package/dist/react/hooks/useRealtimeEvent.js +124 -0
  1772. package/dist/react/hooks/useSwipe.d.ts +55 -0
  1773. package/dist/react/hooks/useSwipe.js +165 -0
  1774. package/dist/react/hooks/useUnsavedChanges.d.ts +44 -0
  1775. package/dist/react/hooks/useUnsavedChanges.js +55 -0
  1776. package/dist/react/hooks/useUrlTable.d.ts +31 -0
  1777. package/dist/react/hooks/useUrlTable.js +137 -0
  1778. package/dist/react/hooks/useVisibleItems.d.ts +37 -0
  1779. package/dist/react/hooks/useVisibleItems.js +59 -0
  1780. package/dist/react/index.d.ts +49 -787
  1781. package/dist/react/index.js +47 -1665
  1782. package/dist/react/useModalStack.d.ts +33 -0
  1783. package/dist/react/useModalStack.js +61 -0
  1784. package/dist/repositories/index.d.ts +38 -0
  1785. package/dist/repositories/index.js +40 -0
  1786. package/dist/security/authorization.d.ts +24 -0
  1787. package/dist/security/authorization.js +73 -0
  1788. package/dist/security/browser.d.ts +7 -0
  1789. package/dist/security/browser.js +5 -0
  1790. package/dist/security/csp.d.ts +16 -0
  1791. package/dist/security/csp.js +44 -0
  1792. package/dist/security/index.d.ts +11 -309
  1793. package/dist/security/index.js +8 -5
  1794. package/dist/security/pii-encrypt.d.ts +121 -0
  1795. package/dist/security/pii-encrypt.js +351 -0
  1796. package/dist/security/pii-redact.d.ts +20 -0
  1797. package/dist/security/pii-redact.js +129 -0
  1798. package/dist/security/pii-schemas.d.ts +38 -0
  1799. package/dist/security/pii-schemas.js +62 -0
  1800. package/dist/security/rate-limit.d.ts +70 -0
  1801. package/dist/security/rate-limit.js +107 -0
  1802. package/dist/security/rbac/Can.d.ts +31 -0
  1803. package/dist/security/rbac/Can.js +24 -0
  1804. package/dist/security/rbac/default-roles.d.ts +2 -0
  1805. package/dist/security/rbac/default-roles.js +83 -0
  1806. package/dist/security/rbac/hook.d.ts +20 -0
  1807. package/dist/security/rbac/hook.js +30 -0
  1808. package/dist/security/rbac/index.d.ts +8 -0
  1809. package/dist/security/rbac/index.js +6 -0
  1810. package/dist/security/rbac/middleware.d.ts +51 -0
  1811. package/dist/security/rbac/middleware.js +51 -0
  1812. package/dist/security/rbac/resolver.d.ts +5 -0
  1813. package/dist/security/rbac/resolver.js +38 -0
  1814. package/dist/security/rbac/server.d.ts +24 -0
  1815. package/dist/security/rbac/server.js +42 -0
  1816. package/dist/security/rbac/types.d.ts +22 -0
  1817. package/dist/security/rbac/types.js +2 -0
  1818. package/dist/security/settings-encryption.d.ts +5 -0
  1819. package/dist/security/settings-encryption.js +48 -0
  1820. package/dist/seed/actions/demo-seed-actions.d.ts +31 -0
  1821. package/dist/seed/actions/demo-seed-actions.js +36 -0
  1822. package/dist/seed/actions/index.d.ts +1 -0
  1823. package/dist/seed/actions/index.js +1 -0
  1824. package/dist/seed/addresses-seed-data.d.ts +19 -0
  1825. package/dist/seed/addresses-seed-data.js +418 -0
  1826. package/dist/seed/bids-seed-data.d.ts +7 -0
  1827. package/dist/seed/bids-seed-data.js +1168 -0
  1828. package/dist/seed/blog-posts-seed-data.d.ts +7 -0
  1829. package/dist/seed/blog-posts-seed-data.js +215 -0
  1830. package/dist/seed/carousel-slides-seed-data.d.ts +7 -0
  1831. package/dist/seed/carousel-slides-seed-data.js +283 -0
  1832. package/dist/seed/cart-seed-data.d.ts +20 -0
  1833. package/dist/seed/cart-seed-data.js +179 -0
  1834. package/dist/seed/categories-seed-data.d.ts +7 -0
  1835. package/dist/seed/categories-seed-data.js +1220 -0
  1836. package/dist/seed/coupons-seed-data.d.ts +7 -0
  1837. package/dist/seed/coupons-seed-data.js +508 -0
  1838. package/dist/seed/defaults/categories.d.ts +2 -0
  1839. package/dist/seed/defaults/categories.js +12 -0
  1840. package/dist/seed/defaults/faqs.d.ts +2 -0
  1841. package/dist/seed/defaults/faqs.js +40 -0
  1842. package/dist/seed/defaults/homepage-sections.d.ts +2 -0
  1843. package/dist/seed/defaults/homepage-sections.js +59 -0
  1844. package/dist/seed/events-seed-data.d.ts +8 -0
  1845. package/dist/seed/events-seed-data.js +662 -0
  1846. package/dist/seed/factories/address.factory.d.ts +21 -0
  1847. package/dist/seed/factories/address.factory.js +44 -0
  1848. package/dist/seed/factories/bid.factory.d.ts +15 -0
  1849. package/dist/seed/factories/bid.factory.js +33 -0
  1850. package/dist/seed/factories/blog-post.factory.d.ts +15 -0
  1851. package/dist/seed/factories/blog-post.factory.js +22 -0
  1852. package/dist/seed/factories/carousel.factory.d.ts +11 -0
  1853. package/dist/seed/factories/carousel.factory.js +16 -0
  1854. package/dist/seed/factories/cart.factory.d.ts +26 -0
  1855. package/dist/seed/factories/cart.factory.js +35 -0
  1856. package/dist/seed/factories/category.factory.d.ts +11 -0
  1857. package/dist/seed/factories/category.factory.js +16 -0
  1858. package/dist/seed/factories/coupon.factory.d.ts +21 -0
  1859. package/dist/seed/factories/coupon.factory.js +43 -0
  1860. package/dist/seed/factories/faq.factory.d.ts +10 -0
  1861. package/dist/seed/factories/faq.factory.js +15 -0
  1862. package/dist/seed/factories/homepage-section.factory.d.ts +9 -0
  1863. package/dist/seed/factories/homepage-section.factory.js +13 -0
  1864. package/dist/seed/factories/notification.factory.d.ts +17 -0
  1865. package/dist/seed/factories/notification.factory.js +39 -0
  1866. package/dist/seed/factories/order.factory.d.ts +20 -0
  1867. package/dist/seed/factories/order.factory.js +20 -0
  1868. package/dist/seed/factories/payout.factory.d.ts +21 -0
  1869. package/dist/seed/factories/payout.factory.js +38 -0
  1870. package/dist/seed/factories/product.factory.d.ts +27 -0
  1871. package/dist/seed/factories/product.factory.js +111 -0
  1872. package/dist/seed/factories/review.factory.d.ts +14 -0
  1873. package/dist/seed/factories/review.factory.js +52 -0
  1874. package/dist/seed/factories/session.factory.d.ts +15 -0
  1875. package/dist/seed/factories/session.factory.js +31 -0
  1876. package/dist/seed/factories/store.factory.d.ts +23 -0
  1877. package/dist/seed/factories/store.factory.js +46 -0
  1878. package/dist/seed/factories/user.factory.d.ts +19 -0
  1879. package/dist/seed/factories/user.factory.js +55 -0
  1880. package/dist/seed/faq-seed-data.d.ts +47 -0
  1881. package/dist/seed/faq-seed-data.js +2320 -0
  1882. package/dist/seed/firestore-indexes.d.ts +13 -0
  1883. package/dist/seed/firestore-indexes.js +32 -0
  1884. package/dist/seed/homepage-sections-seed-data.d.ts +18 -0
  1885. package/dist/seed/homepage-sections-seed-data.js +339 -0
  1886. package/dist/seed/index.d.ts +68 -397
  1887. package/dist/seed/index.js +49 -1040
  1888. package/dist/seed/notifications-seed-data.d.ts +7 -0
  1889. package/dist/seed/notifications-seed-data.js +494 -0
  1890. package/dist/seed/orders-seed-data.d.ts +7 -0
  1891. package/dist/seed/orders-seed-data.js +578 -0
  1892. package/dist/seed/payouts-seed-data.d.ts +7 -0
  1893. package/dist/seed/payouts-seed-data.js +202 -0
  1894. package/dist/seed/products-seed-data.d.ts +7 -0
  1895. package/dist/seed/products-seed-data.js +2477 -0
  1896. package/dist/seed/reviews-seed-data.d.ts +7 -0
  1897. package/dist/seed/reviews-seed-data.js +618 -0
  1898. package/dist/seed/runner.d.ts +3 -0
  1899. package/dist/seed/runner.js +38 -0
  1900. package/dist/seed/seed-market-config.d.ts +49 -0
  1901. package/dist/seed/seed-market-config.js +198 -0
  1902. package/dist/seed/sessions-seed-data.d.ts +17 -0
  1903. package/dist/seed/sessions-seed-data.js +355 -0
  1904. package/dist/seed/site-settings-seed-data.d.ts +7 -0
  1905. package/dist/seed/site-settings-seed-data.js +236 -0
  1906. package/dist/seed/store-addresses-seed-data.d.ts +19 -0
  1907. package/dist/seed/store-addresses-seed-data.js +106 -0
  1908. package/dist/seed/stores-seed-data.d.ts +14 -0
  1909. package/dist/seed/stores-seed-data.js +127 -0
  1910. package/dist/seed/test-utils.d.ts +49 -0
  1911. package/dist/seed/test-utils.js +107 -0
  1912. package/dist/seed/types.d.ts +33 -0
  1913. package/dist/seed/types.js +1 -0
  1914. package/dist/seed/users-seed-data.d.ts +7 -0
  1915. package/dist/seed/users-seed-data.js +727 -0
  1916. package/dist/seo/index.d.ts +2 -150
  1917. package/dist/seo/index.js +2 -4
  1918. package/dist/seo/json-ld.d.ts +69 -0
  1919. package/dist/seo/json-ld.js +166 -0
  1920. package/dist/seo/metadata.d.ts +77 -0
  1921. package/dist/seo/metadata.js +157 -0
  1922. package/dist/server.d.ts +109 -0
  1923. package/dist/server.js +110 -0
  1924. package/dist/style/tailwind/index.d.ts +5 -7
  1925. package/dist/style/tailwind/index.js +54 -33
  1926. package/dist/style/vanilla/index.d.ts +5 -7
  1927. package/dist/style/vanilla/index.js +45 -33
  1928. package/dist/tokens/index.d.ts +23 -24
  1929. package/dist/tokens/index.js +786 -4
  1930. package/dist/tokens/tokens.css +221 -0
  1931. package/dist/ui/DataTable.d.ts +78 -0
  1932. package/dist/ui/DataTable.js +157 -0
  1933. package/dist/ui/DataTable.style.css +190 -0
  1934. package/dist/ui/animation.helper.d.ts +17 -0
  1935. package/dist/ui/animation.helper.js +17 -0
  1936. package/dist/ui/color.helper.d.ts +12 -0
  1937. package/dist/ui/color.helper.js +31 -0
  1938. package/dist/ui/columns/build-columns.d.ts +21 -0
  1939. package/dist/ui/columns/build-columns.js +33 -0
  1940. package/dist/ui/columns/column-renderers.d.ts +33 -0
  1941. package/dist/ui/columns/column-renderers.js +64 -0
  1942. package/dist/ui/columns/index.d.ts +6 -0
  1943. package/dist/ui/columns/index.js +5 -0
  1944. package/dist/ui/components/Accordion.d.ts +27 -0
  1945. package/dist/ui/components/Accordion.js +57 -0
  1946. package/dist/ui/components/Accordion.style.css +82 -0
  1947. package/dist/ui/components/ActiveFilterChips.d.ts +13 -0
  1948. package/dist/ui/components/ActiveFilterChips.js +9 -0
  1949. package/dist/ui/components/ActiveFilterChips.style.css +66 -0
  1950. package/dist/ui/components/Alert.d.ts +43 -0
  1951. package/dist/ui/components/Alert.js +47 -0
  1952. package/dist/ui/components/Alert.style.css +187 -0
  1953. package/dist/ui/components/Avatar.d.ts +18 -0
  1954. package/dist/ui/components/Avatar.js +42 -0
  1955. package/dist/ui/components/Avatar.style.css +73 -0
  1956. package/dist/ui/components/AvatarDisplay.d.ts +10 -0
  1957. package/dist/ui/components/AvatarDisplay.js +56 -0
  1958. package/dist/ui/components/AvatarDisplay.style.css +46 -0
  1959. package/dist/ui/components/BackgroundRenderer.d.ts +15 -0
  1960. package/dist/ui/components/BackgroundRenderer.js +42 -0
  1961. package/dist/ui/components/BackgroundRenderer.style.css +31 -0
  1962. package/dist/ui/components/Badge.d.ts +33 -0
  1963. package/dist/ui/components/Badge.js +34 -0
  1964. package/dist/ui/components/Badge.style.css +114 -0
  1965. package/dist/ui/components/BaseListingCard.d.ts +39 -0
  1966. package/dist/ui/components/BaseListingCard.js +56 -0
  1967. package/dist/ui/components/BaseListingCard.style.css +84 -0
  1968. package/dist/ui/components/Breadcrumb.d.ts +15 -0
  1969. package/dist/ui/components/Breadcrumb.js +12 -0
  1970. package/dist/ui/components/Breadcrumb.style.css +60 -0
  1971. package/dist/ui/components/BulkActionBar.d.ts +34 -0
  1972. package/dist/ui/components/BulkActionBar.js +86 -0
  1973. package/dist/ui/components/BulkActionBar.style.css +196 -0
  1974. package/dist/ui/components/Button.d.ts +31 -0
  1975. package/dist/ui/components/Button.js +29 -0
  1976. package/dist/ui/components/Button.style.css +160 -0
  1977. package/dist/ui/components/Card.d.ts +21 -0
  1978. package/dist/ui/components/Card.js +51 -0
  1979. package/dist/ui/components/Card.style.css +192 -0
  1980. package/dist/ui/components/Checkbox.d.ts +8 -0
  1981. package/dist/ui/components/Checkbox.js +38 -0
  1982. package/dist/ui/components/Checkbox.style.css +113 -0
  1983. package/dist/ui/components/ConfirmDeleteModal.d.ts +33 -0
  1984. package/dist/ui/components/ConfirmDeleteModal.js +74 -0
  1985. package/dist/ui/components/ConfirmDeleteModal.style.css +89 -0
  1986. package/dist/ui/components/CountdownDisplay.d.ts +14 -0
  1987. package/dist/ui/components/CountdownDisplay.js +50 -0
  1988. package/dist/ui/components/CountdownDisplay.style.css +4 -0
  1989. package/dist/ui/components/DashboardStatsCard.d.ts +15 -0
  1990. package/dist/ui/components/DashboardStatsCard.js +28 -0
  1991. package/dist/ui/components/DashboardStatsCard.style.css +70 -0
  1992. package/dist/ui/components/DescriptionField.d.ts +23 -0
  1993. package/dist/ui/components/DescriptionField.js +28 -0
  1994. package/dist/ui/components/DescriptionField.style.css +36 -0
  1995. package/dist/ui/components/DetailViewShell.d.ts +51 -0
  1996. package/dist/ui/components/DetailViewShell.js +50 -0
  1997. package/dist/ui/components/Div.d.ts +20 -0
  1998. package/dist/ui/components/Div.js +19 -0
  1999. package/dist/ui/components/Div.style.css +6 -0
  2000. package/dist/ui/components/Divider.d.ts +12 -0
  2001. package/dist/ui/components/Divider.js +11 -0
  2002. package/dist/ui/components/Divider.style.css +39 -0
  2003. package/dist/ui/components/Drawer.d.ts +21 -0
  2004. package/dist/ui/components/Drawer.js +72 -0
  2005. package/dist/ui/components/Drawer.style.css +146 -0
  2006. package/dist/ui/components/Dropdown.d.ts +36 -0
  2007. package/dist/ui/components/Dropdown.js +142 -0
  2008. package/dist/ui/components/Dropdown.style.css +112 -0
  2009. package/dist/ui/components/DynamicSelect.d.ts +24 -0
  2010. package/dist/ui/components/DynamicSelect.js +78 -0
  2011. package/dist/ui/components/DynamicSelect.style.css +101 -0
  2012. package/dist/ui/components/EmptyState.d.ts +12 -0
  2013. package/dist/ui/components/EmptyState.js +17 -0
  2014. package/dist/ui/components/EmptyState.style.css +30 -0
  2015. package/dist/ui/components/FilterDrawer.d.ts +16 -0
  2016. package/dist/ui/components/FilterDrawer.js +39 -0
  2017. package/dist/ui/components/FilterDrawer.style.css +61 -0
  2018. package/dist/ui/components/FlowDiagram.d.ts +33 -0
  2019. package/dist/ui/components/FlowDiagram.js +15 -0
  2020. package/dist/ui/components/FlowDiagram.style.css +77 -0
  2021. package/dist/ui/components/Form.d.ts +27 -0
  2022. package/dist/ui/components/Form.js +48 -0
  2023. package/dist/ui/components/Form.style.css +27 -0
  2024. package/dist/ui/components/FormField.d.ts +26 -0
  2025. package/dist/ui/components/FormField.js +25 -0
  2026. package/dist/ui/components/FormField.style.css +30 -0
  2027. package/dist/ui/components/FormGrid.d.ts +46 -0
  2028. package/dist/ui/components/FormGrid.js +42 -0
  2029. package/dist/ui/components/FormGrid.style.css +32 -0
  2030. package/dist/ui/components/HorizontalScroller.d.ts +33 -0
  2031. package/dist/ui/components/HorizontalScroller.js +47 -0
  2032. package/dist/ui/components/HorizontalScroller.style.css +109 -0
  2033. package/dist/ui/components/IconButton.d.ts +32 -0
  2034. package/dist/ui/components/IconButton.js +31 -0
  2035. package/dist/ui/components/IconButton.style.css +103 -0
  2036. package/dist/ui/components/ImageGallery.d.ts +17 -0
  2037. package/dist/ui/components/ImageGallery.js +108 -0
  2038. package/dist/ui/components/ImageGallery.style.css +163 -0
  2039. package/dist/ui/components/ImageLightbox.d.ts +24 -0
  2040. package/dist/ui/components/ImageLightbox.js +61 -0
  2041. package/dist/ui/components/ImageLightbox.style.css +58 -0
  2042. package/dist/ui/components/Input.d.ts +12 -0
  2043. package/dist/ui/components/Input.js +29 -0
  2044. package/dist/ui/components/Input.style.css +28 -0
  2045. package/dist/ui/components/ItemRow.d.ts +10 -0
  2046. package/dist/ui/components/ItemRow.js +7 -0
  2047. package/dist/ui/components/ItemRow.style.css +33 -0
  2048. package/dist/ui/components/Layout.d.ts +282 -0
  2049. package/dist/ui/components/Layout.js +184 -0
  2050. package/dist/ui/components/Layout.style.css +212 -0
  2051. package/dist/ui/components/ListingLayout.d.ts +60 -0
  2052. package/dist/ui/components/ListingLayout.js +121 -0
  2053. package/dist/ui/components/ListingLayout.style.css +527 -0
  2054. package/dist/ui/components/ListingViewShell.d.ts +38 -0
  2055. package/dist/ui/components/ListingViewShell.js +11 -0
  2056. package/dist/ui/components/Menu.d.ts +29 -0
  2057. package/dist/ui/components/Menu.js +19 -0
  2058. package/dist/ui/components/Menu.style.css +6 -0
  2059. package/dist/ui/components/Modal.d.ts +18 -0
  2060. package/dist/ui/components/Modal.js +79 -0
  2061. package/dist/ui/components/Modal.style.css +102 -0
  2062. package/dist/ui/components/Pagination.d.ts +25 -0
  2063. package/dist/ui/components/Pagination.js +56 -0
  2064. package/dist/ui/components/Pagination.style.css +76 -0
  2065. package/dist/ui/components/PasswordStrengthIndicator.d.ts +12 -0
  2066. package/dist/ui/components/PasswordStrengthIndicator.js +35 -0
  2067. package/dist/ui/components/PasswordStrengthIndicator.style.css +56 -0
  2068. package/dist/ui/components/PriceDisplay.d.ts +8 -0
  2069. package/dist/ui/components/PriceDisplay.js +28 -0
  2070. package/dist/ui/components/PriceDisplay.style.css +47 -0
  2071. package/dist/ui/components/Progress.d.ts +23 -0
  2072. package/dist/ui/components/Progress.js +32 -0
  2073. package/dist/ui/components/Progress.style.css +81 -0
  2074. package/dist/ui/components/Radio.d.ts +18 -0
  2075. package/dist/ui/components/Radio.js +64 -0
  2076. package/dist/ui/components/Radio.style.css +155 -0
  2077. package/dist/ui/components/RatingDisplay.d.ts +8 -0
  2078. package/dist/ui/components/RatingDisplay.js +15 -0
  2079. package/dist/ui/components/RatingDisplay.style.css +50 -0
  2080. package/dist/ui/components/ResponsiveView.d.ts +12 -0
  2081. package/dist/ui/components/ResponsiveView.js +9 -0
  2082. package/dist/ui/components/ResponsiveView.style.css +69 -0
  2083. package/dist/ui/components/RoleBadge.d.ts +7 -0
  2084. package/dist/ui/components/RoleBadge.js +21 -0
  2085. package/dist/ui/components/RoleBadge.style.css +7 -0
  2086. package/dist/ui/components/RowActionMenu.d.ts +13 -0
  2087. package/dist/ui/components/RowActionMenu.js +17 -0
  2088. package/dist/ui/components/RowActionMenu.style.css +91 -0
  2089. package/dist/ui/components/SectionTabs.d.ts +19 -0
  2090. package/dist/ui/components/SectionTabs.js +66 -0
  2091. package/dist/ui/components/SectionTabs.style.css +163 -0
  2092. package/dist/ui/components/Select.d.ts +19 -0
  2093. package/dist/ui/components/Select.js +27 -0
  2094. package/dist/ui/components/Select.style.css +177 -0
  2095. package/dist/ui/components/Semantic.d.ts +154 -0
  2096. package/dist/ui/components/Semantic.js +32 -0
  2097. package/dist/ui/components/Semantic.style.css +14 -0
  2098. package/dist/ui/components/SideDrawer.d.ts +28 -0
  2099. package/dist/ui/components/SideDrawer.js +151 -0
  2100. package/dist/ui/components/SideDrawer.style.css +214 -0
  2101. package/dist/ui/components/SideModal.d.ts +25 -0
  2102. package/dist/ui/components/SideModal.js +61 -0
  2103. package/dist/ui/components/SideModal.style.css +77 -0
  2104. package/dist/ui/components/Skeleton.d.ts +14 -0
  2105. package/dist/ui/components/Skeleton.js +22 -0
  2106. package/dist/ui/components/Skeleton.style.css +55 -0
  2107. package/dist/ui/components/SkipToMain.d.ts +6 -0
  2108. package/dist/ui/components/SkipToMain.js +6 -0
  2109. package/dist/ui/components/SkipToMain.style.css +34 -0
  2110. package/dist/ui/components/Slider.d.ts +17 -0
  2111. package/dist/ui/components/Slider.js +38 -0
  2112. package/dist/ui/components/Slider.style.css +17 -0
  2113. package/dist/ui/components/SlottedListingView.d.ts +62 -0
  2114. package/dist/ui/components/SlottedListingView.js +41 -0
  2115. package/dist/ui/components/SortDropdown.d.ts +15 -0
  2116. package/dist/ui/components/SortDropdown.js +8 -0
  2117. package/dist/ui/components/SortDropdown.style.css +12 -0
  2118. package/dist/ui/components/Spinner.d.ts +13 -0
  2119. package/dist/ui/components/Spinner.js +15 -0
  2120. package/dist/ui/components/Spinner.style.css +76 -0
  2121. package/dist/ui/components/StackedViewShell.d.ts +50 -0
  2122. package/dist/ui/components/StackedViewShell.js +39 -0
  2123. package/dist/ui/components/StarRating.d.ts +17 -0
  2124. package/dist/ui/components/StarRating.js +29 -0
  2125. package/dist/ui/components/StarRating.style.css +44 -0
  2126. package/dist/ui/components/StatsGrid.d.ts +18 -0
  2127. package/dist/ui/components/StatsGrid.js +17 -0
  2128. package/dist/ui/components/StatsGrid.style.css +96 -0
  2129. package/dist/ui/components/StatusBadge.d.ts +18 -0
  2130. package/dist/ui/components/StatusBadge.js +60 -0
  2131. package/dist/ui/components/StatusBadge.style.css +5 -0
  2132. package/dist/ui/components/StepperNav.d.ts +10 -0
  2133. package/dist/ui/components/StepperNav.js +23 -0
  2134. package/dist/ui/components/StepperNav.style.css +110 -0
  2135. package/dist/ui/components/SummaryCard.d.ts +21 -0
  2136. package/dist/ui/components/SummaryCard.js +15 -0
  2137. package/dist/ui/components/SummaryCard.style.css +82 -0
  2138. package/dist/ui/components/TabStrip.d.ts +34 -0
  2139. package/dist/ui/components/TabStrip.js +57 -0
  2140. package/dist/ui/components/TabStrip.style.css +97 -0
  2141. package/dist/ui/components/TablePagination.d.ts +21 -0
  2142. package/dist/ui/components/TablePagination.js +32 -0
  2143. package/dist/ui/components/TablePagination.style.css +89 -0
  2144. package/dist/ui/components/Tabs.d.ts +28 -0
  2145. package/dist/ui/components/Tabs.js +41 -0
  2146. package/dist/ui/components/Tabs.style.css +46 -0
  2147. package/dist/ui/components/TagInput.d.ts +10 -0
  2148. package/dist/ui/components/TagInput.js +60 -0
  2149. package/dist/ui/components/TagInput.style.css +121 -0
  2150. package/dist/ui/components/TextLink.d.ts +42 -0
  2151. package/dist/ui/components/TextLink.js +48 -0
  2152. package/dist/ui/components/TextLink.style.css +94 -0
  2153. package/dist/ui/components/Textarea.d.ts +9 -0
  2154. package/dist/ui/components/Textarea.js +21 -0
  2155. package/dist/ui/components/Textarea.style.css +30 -0
  2156. package/dist/ui/components/Toast.d.ts +15 -0
  2157. package/dist/ui/components/Toast.js +61 -0
  2158. package/dist/ui/components/Toast.style.css +114 -0
  2159. package/dist/ui/components/Toggle.d.ts +12 -0
  2160. package/dist/ui/components/Toggle.js +47 -0
  2161. package/dist/ui/components/Toggle.style.css +107 -0
  2162. package/dist/ui/components/Tooltip.d.ts +34 -0
  2163. package/dist/ui/components/Tooltip.js +110 -0
  2164. package/dist/ui/components/Tooltip.style.css +114 -0
  2165. package/dist/ui/components/Typography.d.ts +50 -0
  2166. package/dist/ui/components/Typography.js +103 -0
  2167. package/dist/ui/components/Typography.style.css +178 -0
  2168. package/dist/ui/components/UnsavedChangesModal.d.ts +17 -0
  2169. package/dist/ui/components/UnsavedChangesModal.js +52 -0
  2170. package/dist/ui/components/UnsavedChangesModal.style.css +33 -0
  2171. package/dist/ui/components/ViewToggle.d.ts +15 -0
  2172. package/dist/ui/components/ViewToggle.js +29 -0
  2173. package/dist/ui/components/ViewToggle.style.css +50 -0
  2174. package/dist/ui/components/index.style.css +76 -0
  2175. package/dist/ui/index.d.ts +165 -1644
  2176. package/dist/ui/index.js +87 -4784
  2177. package/dist/ui/rich-text/RichText.d.ts +46 -0
  2178. package/dist/ui/rich-text/RichText.js +172 -0
  2179. package/dist/ui/rich-text/RichText.style.css +5 -0
  2180. package/dist/ui/rich-text/index.d.ts +2 -0
  2181. package/dist/ui/rich-text/index.js +1 -0
  2182. package/dist/ui/style.helper.d.ts +7 -0
  2183. package/dist/ui/style.helper.js +12 -0
  2184. package/dist/utils/animation.helper.d.ts +19 -0
  2185. package/dist/utils/animation.helper.js +19 -0
  2186. package/dist/utils/array.helper.d.ts +17 -0
  2187. package/dist/utils/array.helper.js +53 -0
  2188. package/dist/utils/business-day.d.ts +47 -0
  2189. package/dist/utils/business-day.js +68 -0
  2190. package/dist/utils/client.d.ts +1 -0
  2191. package/dist/utils/client.js +1 -0
  2192. package/dist/utils/color.helper.d.ts +32 -0
  2193. package/dist/utils/color.helper.js +51 -0
  2194. package/dist/utils/cookie.converter.d.ts +7 -0
  2195. package/dist/utils/cookie.converter.js +32 -0
  2196. package/dist/utils/date.formatter.d.ts +22 -0
  2197. package/dist/utils/date.formatter.js +194 -0
  2198. package/dist/utils/event-manager.d.ts +45 -0
  2199. package/dist/utils/event-manager.js +185 -0
  2200. package/dist/utils/filter.helper.d.ts +18 -0
  2201. package/dist/utils/filter.helper.js +21 -0
  2202. package/dist/utils/id-generators.d.ts +243 -0
  2203. package/dist/utils/id-generators.js +360 -0
  2204. package/dist/utils/index.d.ts +17 -545
  2205. package/dist/utils/index.js +18 -4
  2206. package/dist/utils/media-field.d.ts +2 -0
  2207. package/dist/utils/media-field.js +1 -0
  2208. package/dist/utils/number.formatter.d.ts +13 -0
  2209. package/dist/utils/number.formatter.js +100 -0
  2210. package/dist/utils/object.helper.d.ts +16 -0
  2211. package/dist/utils/object.helper.js +82 -0
  2212. package/dist/utils/pagination.helper.d.ts +23 -0
  2213. package/dist/utils/pagination.helper.js +24 -0
  2214. package/dist/utils/schema-ui.d.ts +83 -0
  2215. package/dist/utils/schema-ui.js +185 -0
  2216. package/dist/utils/sorting.helper.d.ts +7 -0
  2217. package/dist/utils/sorting.helper.js +16 -0
  2218. package/dist/utils/string.formatter.d.ts +19 -0
  2219. package/dist/utils/string.formatter.js +140 -0
  2220. package/dist/utils/type.converter.d.ts +14 -0
  2221. package/dist/utils/type.converter.js +61 -0
  2222. package/dist/validation/ZodSetup.d.ts +5 -0
  2223. package/dist/validation/ZodSetup.js +11 -0
  2224. package/dist/validation/email.validator.d.ts +7 -0
  2225. package/dist/validation/email.validator.js +33 -0
  2226. package/dist/validation/index.d.ts +9 -126
  2227. package/dist/validation/index.js +8 -4
  2228. package/dist/validation/input.validator.d.ts +11 -0
  2229. package/dist/validation/input.validator.js +33 -0
  2230. package/dist/validation/password.validator.d.ts +21 -0
  2231. package/dist/validation/password.validator.js +77 -0
  2232. package/dist/validation/phone.validator.d.ts +9 -0
  2233. package/dist/validation/phone.validator.js +41 -0
  2234. package/dist/validation/schemas.d.ts +267 -0
  2235. package/dist/validation/schemas.js +176 -0
  2236. package/dist/validation/url.validator.d.ts +7 -0
  2237. package/dist/validation/url.validator.js +44 -0
  2238. package/dist/validation/zod-error-map.d.ts +17 -0
  2239. package/dist/validation/zod-error-map.js +85 -0
  2240. package/dist/values/index.d.ts +6 -0
  2241. package/dist/values/index.js +6 -0
  2242. package/dist/values/success-messages.d.ts +242 -0
  2243. package/dist/values/success-messages.js +272 -0
  2244. package/package.json +87 -445
  2245. package/dist/chunk-2NMEKWO5.js +0 -35
  2246. package/dist/chunk-2NMEKWO5.js.map +0 -1
  2247. package/dist/chunk-6344OTT4.js +0 -329
  2248. package/dist/chunk-6344OTT4.js.map +0 -1
  2249. package/dist/chunk-7HUFI4MW.cjs +0 -941
  2250. package/dist/chunk-7HUFI4MW.cjs.map +0 -1
  2251. package/dist/chunk-AZ2XDBYA.cjs +0 -150
  2252. package/dist/chunk-AZ2XDBYA.cjs.map +0 -1
  2253. package/dist/chunk-CI4ZFLS7.js +0 -1162
  2254. package/dist/chunk-CI4ZFLS7.js.map +0 -1
  2255. package/dist/chunk-DSCHV5OD.js +0 -620
  2256. package/dist/chunk-DSCHV5OD.js.map +0 -1
  2257. package/dist/chunk-EEMSMWIZ.js +0 -566
  2258. package/dist/chunk-EEMSMWIZ.js.map +0 -1
  2259. package/dist/chunk-EPJNBIKL.js +0 -916
  2260. package/dist/chunk-EPJNBIKL.js.map +0 -1
  2261. package/dist/chunk-FJEY6LN2.cjs +0 -64
  2262. package/dist/chunk-FJEY6LN2.cjs.map +0 -1
  2263. package/dist/chunk-GZXXRVTM.cjs +0 -343
  2264. package/dist/chunk-GZXXRVTM.cjs.map +0 -1
  2265. package/dist/chunk-IE5L2QHV.js +0 -204
  2266. package/dist/chunk-IE5L2QHV.js.map +0 -1
  2267. package/dist/chunk-JPHORBTI.cjs +0 -366
  2268. package/dist/chunk-JPHORBTI.cjs.map +0 -1
  2269. package/dist/chunk-K4C5Z22R.js +0 -146
  2270. package/dist/chunk-K4C5Z22R.js.map +0 -1
  2271. package/dist/chunk-PAHR3D5L.js +0 -56
  2272. package/dist/chunk-PAHR3D5L.js.map +0 -1
  2273. package/dist/chunk-PE44UBFV.js +0 -324
  2274. package/dist/chunk-PE44UBFV.js.map +0 -1
  2275. package/dist/chunk-RNELVIKK.cjs +0 -1287
  2276. package/dist/chunk-RNELVIKK.cjs.map +0 -1
  2277. package/dist/chunk-S367Y35J.cjs +0 -39
  2278. package/dist/chunk-S367Y35J.cjs.map +0 -1
  2279. package/dist/chunk-ULLW73KN.cjs +0 -217
  2280. package/dist/chunk-ULLW73KN.cjs.map +0 -1
  2281. package/dist/chunk-UNYFAUWW.cjs +0 -630
  2282. package/dist/chunk-UNYFAUWW.cjs.map +0 -1
  2283. package/dist/chunk-V55QYTXF.js +0 -259
  2284. package/dist/chunk-V55QYTXF.js.map +0 -1
  2285. package/dist/chunk-WKVCFDEA.cjs +0 -599
  2286. package/dist/chunk-WKVCFDEA.cjs.map +0 -1
  2287. package/dist/chunk-YT4QVIBP.cjs +0 -292
  2288. package/dist/chunk-YT4QVIBP.cjs.map +0 -1
  2289. package/dist/cli/index.cjs +0 -155
  2290. package/dist/cli/index.cjs.map +0 -1
  2291. package/dist/cli/index.d.cts +0 -41
  2292. package/dist/cli/index.js.map +0 -1
  2293. package/dist/contracts/index.cjs +0 -37
  2294. package/dist/contracts/index.cjs.map +0 -1
  2295. package/dist/contracts/index.d.cts +0 -728
  2296. package/dist/contracts/index.js.map +0 -1
  2297. package/dist/core/index.cjs +0 -84
  2298. package/dist/core/index.cjs.map +0 -1
  2299. package/dist/core/index.d.cts +0 -329
  2300. package/dist/core/index.js.map +0 -1
  2301. package/dist/errors/index.cjs +0 -57
  2302. package/dist/errors/index.cjs.map +0 -1
  2303. package/dist/errors/index.d.cts +0 -96
  2304. package/dist/errors/index.js.map +0 -1
  2305. package/dist/extend-D57fwPSu.d.cts +0 -122
  2306. package/dist/extend-D57fwPSu.d.ts +0 -122
  2307. package/dist/extend-D_0wzsse.d.cts +0 -79
  2308. package/dist/extend-D_0wzsse.d.ts +0 -79
  2309. package/dist/extend-jcOQfU2G.d.cts +0 -162
  2310. package/dist/extend-jcOQfU2G.d.ts +0 -162
  2311. package/dist/feature-C8mVv66I.d.cts +0 -84
  2312. package/dist/feature-C8mVv66I.d.ts +0 -84
  2313. package/dist/feature-DENiK3vd.d.cts +0 -55
  2314. package/dist/feature-DENiK3vd.d.ts +0 -55
  2315. package/dist/feature-RWXQ_lnf.d.cts +0 -41
  2316. package/dist/feature-RWXQ_lnf.d.ts +0 -41
  2317. package/dist/features/about/index.cjs +0 -286
  2318. package/dist/features/about/index.cjs.map +0 -1
  2319. package/dist/features/about/index.d.cts +0 -42
  2320. package/dist/features/about/index.js.map +0 -1
  2321. package/dist/features/account/index.cjs +0 -1032
  2322. package/dist/features/account/index.cjs.map +0 -1
  2323. package/dist/features/account/index.d.cts +0 -555
  2324. package/dist/features/account/index.js.map +0 -1
  2325. package/dist/features/admin/index.cjs +0 -2747
  2326. package/dist/features/admin/index.cjs.map +0 -1
  2327. package/dist/features/admin/index.d.cts +0 -554
  2328. package/dist/features/admin/index.js.map +0 -1
  2329. package/dist/features/auctions/index.cjs +0 -1219
  2330. package/dist/features/auctions/index.cjs.map +0 -1
  2331. package/dist/features/auctions/index.d.cts +0 -513
  2332. package/dist/features/auctions/index.js.map +0 -1
  2333. package/dist/features/auth/index.cjs +0 -1897
  2334. package/dist/features/auth/index.cjs.map +0 -1
  2335. package/dist/features/auth/index.d.cts +0 -315
  2336. package/dist/features/auth/index.js.map +0 -1
  2337. package/dist/features/auth/server.cjs +0 -531
  2338. package/dist/features/auth/server.cjs.map +0 -1
  2339. package/dist/features/auth/server.d.cts +0 -24
  2340. package/dist/features/auth/server.js.map +0 -1
  2341. package/dist/features/before-after/index.cjs +0 -559
  2342. package/dist/features/before-after/index.cjs.map +0 -1
  2343. package/dist/features/before-after/index.d.cts +0 -128
  2344. package/dist/features/before-after/index.js.map +0 -1
  2345. package/dist/features/blog/index.cjs +0 -4088
  2346. package/dist/features/blog/index.cjs.map +0 -1
  2347. package/dist/features/blog/index.d.cts +0 -492
  2348. package/dist/features/blog/index.js.map +0 -1
  2349. package/dist/features/blog/server.cjs +0 -184
  2350. package/dist/features/blog/server.cjs.map +0 -1
  2351. package/dist/features/blog/server.d.cts +0 -74
  2352. package/dist/features/blog/server.js.map +0 -1
  2353. package/dist/features/cart/index.cjs +0 -1097
  2354. package/dist/features/cart/index.cjs.map +0 -1
  2355. package/dist/features/cart/index.d.cts +0 -451
  2356. package/dist/features/cart/index.js.map +0 -1
  2357. package/dist/features/categories/index.cjs +0 -2062
  2358. package/dist/features/categories/index.cjs.map +0 -1
  2359. package/dist/features/categories/index.d.cts +0 -461
  2360. package/dist/features/categories/index.js.map +0 -1
  2361. package/dist/features/categories/server.cjs +0 -796
  2362. package/dist/features/categories/server.cjs.map +0 -1
  2363. package/dist/features/categories/server.d.cts +0 -47
  2364. package/dist/features/categories/server.js.map +0 -1
  2365. package/dist/features/checkout/index.cjs +0 -200
  2366. package/dist/features/checkout/index.cjs.map +0 -1
  2367. package/dist/features/checkout/index.d.cts +0 -70
  2368. package/dist/features/checkout/index.js.map +0 -1
  2369. package/dist/features/cms/index.cjs +0 -5
  2370. package/dist/features/cms/index.cjs.map +0 -1
  2371. package/dist/features/cms/index.d.cts +0 -2
  2372. package/dist/features/cms/index.js.map +0 -1
  2373. package/dist/features/collections/index.cjs +0 -394
  2374. package/dist/features/collections/index.cjs.map +0 -1
  2375. package/dist/features/collections/index.d.cts +0 -148
  2376. package/dist/features/collections/index.js.map +0 -1
  2377. package/dist/features/consultation/index.cjs +0 -1099
  2378. package/dist/features/consultation/index.cjs.map +0 -1
  2379. package/dist/features/consultation/index.d.cts +0 -172
  2380. package/dist/features/consultation/index.js.map +0 -1
  2381. package/dist/features/contact/index.cjs +0 -593
  2382. package/dist/features/contact/index.cjs.map +0 -1
  2383. package/dist/features/contact/index.d.cts +0 -56
  2384. package/dist/features/contact/index.js.map +0 -1
  2385. package/dist/features/copilot/index.cjs +0 -688
  2386. package/dist/features/copilot/index.cjs.map +0 -1
  2387. package/dist/features/copilot/index.d.cts +0 -47
  2388. package/dist/features/copilot/index.js.map +0 -1
  2389. package/dist/features/corporate/index.cjs +0 -796
  2390. package/dist/features/corporate/index.cjs.map +0 -1
  2391. package/dist/features/corporate/index.d.cts +0 -183
  2392. package/dist/features/corporate/index.js.map +0 -1
  2393. package/dist/features/events/index.cjs +0 -1486
  2394. package/dist/features/events/index.cjs.map +0 -1
  2395. package/dist/features/events/index.d.cts +0 -841
  2396. package/dist/features/events/index.js.map +0 -1
  2397. package/dist/features/events/server.cjs +0 -199
  2398. package/dist/features/events/server.cjs.map +0 -1
  2399. package/dist/features/events/server.d.cts +0 -40
  2400. package/dist/features/events/server.js.map +0 -1
  2401. package/dist/features/faq/index.cjs +0 -1714
  2402. package/dist/features/faq/index.cjs.map +0 -1
  2403. package/dist/features/faq/index.d.cts +0 -619
  2404. package/dist/features/faq/index.js.map +0 -1
  2405. package/dist/features/filters/index.cjs +0 -1073
  2406. package/dist/features/filters/index.cjs.map +0 -1
  2407. package/dist/features/filters/index.d.cts +0 -136
  2408. package/dist/features/filters/index.js.map +0 -1
  2409. package/dist/features/forms/index.cjs +0 -936
  2410. package/dist/features/forms/index.cjs.map +0 -1
  2411. package/dist/features/forms/index.d.cts +0 -129
  2412. package/dist/features/forms/index.js.map +0 -1
  2413. package/dist/features/homepage/index.cjs +0 -6321
  2414. package/dist/features/homepage/index.cjs.map +0 -1
  2415. package/dist/features/homepage/index.d.cts +0 -846
  2416. package/dist/features/homepage/index.js.map +0 -1
  2417. package/dist/features/homepage/server.cjs +0 -1038
  2418. package/dist/features/homepage/server.cjs.map +0 -1
  2419. package/dist/features/homepage/server.d.cts +0 -121
  2420. package/dist/features/homepage/server.js.map +0 -1
  2421. package/dist/features/layout/index.cjs +0 -1766
  2422. package/dist/features/layout/index.cjs.map +0 -1
  2423. package/dist/features/layout/index.d.cts +0 -315
  2424. package/dist/features/layout/index.js.map +0 -1
  2425. package/dist/features/loyalty/index.cjs +0 -352
  2426. package/dist/features/loyalty/index.cjs.map +0 -1
  2427. package/dist/features/loyalty/index.d.cts +0 -174
  2428. package/dist/features/loyalty/index.js.map +0 -1
  2429. package/dist/features/media/index.cjs +0 -3620
  2430. package/dist/features/media/index.cjs.map +0 -1
  2431. package/dist/features/media/index.d.cts +0 -425
  2432. package/dist/features/media/index.js.map +0 -1
  2433. package/dist/features/orders/index.cjs +0 -882
  2434. package/dist/features/orders/index.cjs.map +0 -1
  2435. package/dist/features/orders/index.d.cts +0 -370
  2436. package/dist/features/orders/index.js.map +0 -1
  2437. package/dist/features/payments/index.cjs +0 -341
  2438. package/dist/features/payments/index.cjs.map +0 -1
  2439. package/dist/features/payments/index.d.cts +0 -141
  2440. package/dist/features/payments/index.js.map +0 -1
  2441. package/dist/features/pre-orders/index.cjs +0 -558
  2442. package/dist/features/pre-orders/index.cjs.map +0 -1
  2443. package/dist/features/pre-orders/index.d.cts +0 -170
  2444. package/dist/features/pre-orders/index.js.map +0 -1
  2445. package/dist/features/pre-orders/server.cjs +0 -111
  2446. package/dist/features/pre-orders/server.cjs.map +0 -1
  2447. package/dist/features/pre-orders/server.d.cts +0 -17
  2448. package/dist/features/pre-orders/server.js.map +0 -1
  2449. package/dist/features/products/index.cjs +0 -2513
  2450. package/dist/features/products/index.cjs.map +0 -1
  2451. package/dist/features/products/index.d.cts +0 -1066
  2452. package/dist/features/products/index.js.map +0 -1
  2453. package/dist/features/products/server.cjs +0 -809
  2454. package/dist/features/products/server.cjs.map +0 -1
  2455. package/dist/features/products/server.d.cts +0 -52
  2456. package/dist/features/products/server.js.map +0 -1
  2457. package/dist/features/promotions/index.cjs +0 -977
  2458. package/dist/features/promotions/index.cjs.map +0 -1
  2459. package/dist/features/promotions/index.d.cts +0 -301
  2460. package/dist/features/promotions/index.js.map +0 -1
  2461. package/dist/features/reviews/index.cjs +0 -2324
  2462. package/dist/features/reviews/index.cjs.map +0 -1
  2463. package/dist/features/reviews/index.d.cts +0 -434
  2464. package/dist/features/reviews/index.js.map +0 -1
  2465. package/dist/features/reviews/server.cjs +0 -776
  2466. package/dist/features/reviews/server.cjs.map +0 -1
  2467. package/dist/features/reviews/server.d.cts +0 -49
  2468. package/dist/features/reviews/server.js.map +0 -1
  2469. package/dist/features/search/index.cjs +0 -1368
  2470. package/dist/features/search/index.cjs.map +0 -1
  2471. package/dist/features/search/index.d.cts +0 -298
  2472. package/dist/features/search/index.js.map +0 -1
  2473. package/dist/features/search/server.cjs +0 -154
  2474. package/dist/features/search/server.cjs.map +0 -1
  2475. package/dist/features/search/server.d.cts +0 -83
  2476. package/dist/features/search/server.js.map +0 -1
  2477. package/dist/features/seller/index.cjs +0 -2086
  2478. package/dist/features/seller/index.cjs.map +0 -1
  2479. package/dist/features/seller/index.d.cts +0 -926
  2480. package/dist/features/seller/index.js.map +0 -1
  2481. package/dist/features/stores/index.cjs +0 -1942
  2482. package/dist/features/stores/index.cjs.map +0 -1
  2483. package/dist/features/stores/index.d.cts +0 -536
  2484. package/dist/features/stores/index.js.map +0 -1
  2485. package/dist/features/stores/server.cjs +0 -451
  2486. package/dist/features/stores/server.cjs.map +0 -1
  2487. package/dist/features/stores/server.d.cts +0 -106
  2488. package/dist/features/stores/server.js.map +0 -1
  2489. package/dist/features/whatsapp-bot/index.cjs +0 -168
  2490. package/dist/features/whatsapp-bot/index.cjs.map +0 -1
  2491. package/dist/features/whatsapp-bot/index.d.cts +0 -85
  2492. package/dist/features/whatsapp-bot/index.js.map +0 -1
  2493. package/dist/features/wishlist/index.cjs +0 -904
  2494. package/dist/features/wishlist/index.cjs.map +0 -1
  2495. package/dist/features/wishlist/index.d.cts +0 -360
  2496. package/dist/features/wishlist/index.js.map +0 -1
  2497. package/dist/http/index.cjs +0 -21
  2498. package/dist/http/index.cjs.map +0 -1
  2499. package/dist/http/index.d.cts +0 -61
  2500. package/dist/http/index.js.map +0 -1
  2501. package/dist/index-B6T9NNcG.d.cts +0 -9
  2502. package/dist/index-B6T9NNcG.d.ts +0 -9
  2503. package/dist/index-CakUKzrE.d.cts +0 -10
  2504. package/dist/index-CakUKzrE.d.ts +0 -10
  2505. package/dist/index-D0Fxv9Z8.d.cts +0 -32
  2506. package/dist/index-D0Fxv9Z8.d.ts +0 -32
  2507. package/dist/index-Dh42RtMY.d.cts +0 -54
  2508. package/dist/index-Dh42RtMY.d.ts +0 -54
  2509. package/dist/index.cjs +0 -1182
  2510. package/dist/index.cjs.map +0 -1
  2511. package/dist/index.d.cts +0 -17
  2512. package/dist/index.js.map +0 -1
  2513. package/dist/instrumentation/index.cjs +0 -17
  2514. package/dist/instrumentation/index.cjs.map +0 -1
  2515. package/dist/instrumentation/index.d.cts +0 -66
  2516. package/dist/instrumentation/index.js.map +0 -1
  2517. package/dist/monitoring/index.cjs +0 -141
  2518. package/dist/monitoring/index.cjs.map +0 -1
  2519. package/dist/monitoring/index.d.cts +0 -181
  2520. package/dist/monitoring/index.js.map +0 -1
  2521. package/dist/next/index.cjs +0 -693
  2522. package/dist/next/index.cjs.map +0 -1
  2523. package/dist/next/index.d.cts +0 -777
  2524. package/dist/next/index.js.map +0 -1
  2525. package/dist/providers/auth-firebase/index.cjs +0 -400
  2526. package/dist/providers/auth-firebase/index.cjs.map +0 -1
  2527. package/dist/providers/auth-firebase/index.d.cts +0 -137
  2528. package/dist/providers/auth-firebase/index.js.map +0 -1
  2529. package/dist/providers/db-firebase/index.cjs +0 -533
  2530. package/dist/providers/db-firebase/index.cjs.map +0 -1
  2531. package/dist/providers/db-firebase/index.d.cts +0 -265
  2532. package/dist/providers/db-firebase/index.js.map +0 -1
  2533. package/dist/providers/email-resend/index.cjs +0 -58
  2534. package/dist/providers/email-resend/index.cjs.map +0 -1
  2535. package/dist/providers/email-resend/index.d.cts +0 -73
  2536. package/dist/providers/email-resend/index.js.map +0 -1
  2537. package/dist/providers/payment-razorpay/index.cjs +0 -111
  2538. package/dist/providers/payment-razorpay/index.cjs.map +0 -1
  2539. package/dist/providers/payment-razorpay/index.d.cts +0 -96
  2540. package/dist/providers/payment-razorpay/index.js.map +0 -1
  2541. package/dist/providers/search-algolia/index.cjs +0 -301
  2542. package/dist/providers/search-algolia/index.cjs.map +0 -1
  2543. package/dist/providers/search-algolia/index.d.cts +0 -251
  2544. package/dist/providers/search-algolia/index.d.ts +0 -251
  2545. package/dist/providers/search-algolia/index.js +0 -280
  2546. package/dist/providers/search-algolia/index.js.map +0 -1
  2547. package/dist/providers/shipping-shiprocket/index.cjs +0 -147
  2548. package/dist/providers/shipping-shiprocket/index.cjs.map +0 -1
  2549. package/dist/providers/shipping-shiprocket/index.d.cts +0 -236
  2550. package/dist/providers/shipping-shiprocket/index.js.map +0 -1
  2551. package/dist/providers/storage-firebase/index.cjs +0 -176
  2552. package/dist/providers/storage-firebase/index.cjs.map +0 -1
  2553. package/dist/providers/storage-firebase/index.d.cts +0 -53
  2554. package/dist/providers/storage-firebase/index.js.map +0 -1
  2555. package/dist/react/index.cjs +0 -1687
  2556. package/dist/react/index.cjs.map +0 -1
  2557. package/dist/react/index.d.cts +0 -788
  2558. package/dist/react/index.js.map +0 -1
  2559. package/dist/repository-BO60jtdT.d.cts +0 -61
  2560. package/dist/repository-BO60jtdT.d.ts +0 -61
  2561. package/dist/repository-jKU_Ji1P.d.cts +0 -44
  2562. package/dist/repository-jKU_Ji1P.d.ts +0 -44
  2563. package/dist/security/index.cjs +0 -138
  2564. package/dist/security/index.cjs.map +0 -1
  2565. package/dist/security/index.d.cts +0 -309
  2566. package/dist/security/index.js.map +0 -1
  2567. package/dist/seed/index.cjs +0 -1085
  2568. package/dist/seed/index.cjs.map +0 -1
  2569. package/dist/seed/index.d.cts +0 -397
  2570. package/dist/seed/index.js.map +0 -1
  2571. package/dist/seo/index.cjs +0 -81
  2572. package/dist/seo/index.cjs.map +0 -1
  2573. package/dist/seo/index.d.cts +0 -150
  2574. package/dist/seo/index.js.map +0 -1
  2575. package/dist/style/tailwind/index.cjs +0 -40
  2576. package/dist/style/tailwind/index.cjs.map +0 -1
  2577. package/dist/style/tailwind/index.d.cts +0 -34
  2578. package/dist/style/tailwind/index.js.map +0 -1
  2579. package/dist/style/vanilla/index.cjs +0 -40
  2580. package/dist/style/vanilla/index.cjs.map +0 -1
  2581. package/dist/style/vanilla/index.d.cts +0 -26
  2582. package/dist/style/vanilla/index.js.map +0 -1
  2583. package/dist/style-BSlM-eWG.d.cts +0 -25
  2584. package/dist/style-BSlM-eWG.d.ts +0 -25
  2585. package/dist/tokens/index.cjs +0 -45
  2586. package/dist/tokens/index.cjs.map +0 -1
  2587. package/dist/tokens/index.d.cts +0 -734
  2588. package/dist/tokens/index.js.map +0 -1
  2589. package/dist/ui/index.cjs +0 -4870
  2590. package/dist/ui/index.cjs.map +0 -1
  2591. package/dist/ui/index.d.cts +0 -1644
  2592. package/dist/ui/index.js.map +0 -1
  2593. package/dist/utils/index.cjs +0 -505
  2594. package/dist/utils/index.cjs.map +0 -1
  2595. package/dist/utils/index.d.cts +0 -545
  2596. package/dist/utils/index.js.map +0 -1
  2597. package/dist/validation/index.cjs +0 -153
  2598. package/dist/validation/index.cjs.map +0 -1
  2599. package/dist/validation/index.d.cts +0 -126
  2600. package/dist/validation/index.js.map +0 -1
@@ -1,3593 +1,21 @@
1
- "use client";
2
- import 'next/server.js';
3
- import Image from 'next/image';
4
- import React, { createContext, forwardRef, createElement, useContext, useState, useRef, useEffect, useCallback, useId } from 'react';
5
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
- import { twMerge } from 'tailwind-merge';
7
- import 'next/link';
8
- import { createPortal } from 'react-dom';
9
- import { useMutation } from '@tanstack/react-query';
10
- import { useTranslations } from 'next-intl';
11
- import 'next/navigation';
12
- import 'crypto';
13
- import { z } from 'zod';
14
-
15
- var __defProp = Object.defineProperty;
16
- var __defProps = Object.defineProperties;
17
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
18
- var __getOwnPropNames = Object.getOwnPropertyNames;
19
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
20
- var __hasOwnProp = Object.prototype.hasOwnProperty;
21
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
22
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
23
- var __spreadValues = (a, b) => {
24
- for (var prop in b || (b = {}))
25
- if (__hasOwnProp.call(b, prop))
26
- __defNormalProp(a, prop, b[prop]);
27
- if (__getOwnPropSymbols)
28
- for (var prop of __getOwnPropSymbols(b)) {
29
- if (__propIsEnum.call(b, prop))
30
- __defNormalProp(a, prop, b[prop]);
31
- }
32
- return a;
33
- };
34
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
35
- var __objRest = (source, exclude) => {
36
- var target = {};
37
- for (var prop in source)
38
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
39
- target[prop] = source[prop];
40
- if (source != null && __getOwnPropSymbols)
41
- for (var prop of __getOwnPropSymbols(source)) {
42
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
43
- target[prop] = source[prop];
44
- }
45
- return target;
46
- };
47
- var __esm = (fn, res) => function __init() {
48
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
49
- };
50
-
51
- // src/errors/base-error.ts
52
- var init_base_error = __esm({
53
- "src/errors/base-error.ts"() {
54
- }
55
- });
56
-
57
- // src/errors/error-codes.ts
58
- var init_error_codes = __esm({
59
- "src/errors/error-codes.ts"() {
60
- }
61
- });
62
-
63
- // src/errors/api-error.ts
64
- var init_api_error = __esm({
65
- "src/errors/api-error.ts"() {
66
- init_base_error();
67
- }
68
- });
69
-
70
- // src/errors/validation-error.ts
71
- var init_validation_error = __esm({
72
- "src/errors/validation-error.ts"() {
73
- init_base_error();
74
- }
75
- });
76
-
77
- // src/errors/authentication-error.ts
78
- var init_authentication_error = __esm({
79
- "src/errors/authentication-error.ts"() {
80
- init_base_error();
81
- }
82
- });
83
-
84
- // src/errors/authorization-error.ts
85
- var init_authorization_error = __esm({
86
- "src/errors/authorization-error.ts"() {
87
- init_base_error();
88
- }
89
- });
90
-
91
- // src/errors/not-found-error.ts
92
- var init_not_found_error = __esm({
93
- "src/errors/not-found-error.ts"() {
94
- init_base_error();
95
- }
96
- });
97
-
98
- // src/errors/database-error.ts
99
- var init_database_error = __esm({
100
- "src/errors/database-error.ts"() {
101
- init_base_error();
102
- }
103
- });
104
- var init_error_handler = __esm({
105
- "src/errors/error-handler.ts"() {
106
- init_base_error();
107
- init_error_codes();
108
- }
109
- });
110
-
111
- // src/errors/index.ts
112
- var init_errors = __esm({
113
- "src/errors/index.ts"() {
114
- init_base_error();
115
- init_error_codes();
116
- init_api_error();
117
- init_validation_error();
118
- init_authentication_error();
119
- init_authorization_error();
120
- init_not_found_error();
121
- init_database_error();
122
- init_error_handler();
123
- }
124
- });
125
- var Section = React.forwardRef(
126
- (_a, ref) => {
127
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
128
- return /* @__PURE__ */ jsx("section", __spreadProps(__spreadValues({ className, ref }, props), { children }));
129
- }
130
- );
131
- Section.displayName = "Section";
132
- var Aside = React.forwardRef(
133
- (_a, ref) => {
134
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
135
- return /* @__PURE__ */ jsx("aside", __spreadProps(__spreadValues({ className, ref }, props), { children }));
136
- }
137
- );
138
- Aside.displayName = "Aside";
139
- var Div = React.forwardRef(
140
- (_a, ref) => {
141
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
142
- return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ ref, className }, props), { children }));
143
- }
144
- );
145
- Div.displayName = "Div";
146
- var UI_THEME = {
147
- typography: {
148
- h1: "text-3xl md:text-4xl lg:text-5xl font-bold tracking-tight font-display",
149
- h2: "text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight font-display",
150
- h3: "text-xl md:text-2xl lg:text-3xl font-bold tracking-tight font-display",
151
- h4: "text-lg md:text-xl lg:text-2xl font-bold font-display",
152
- h5: "text-base md:text-lg lg:text-xl font-medium",
153
- h6: "text-sm md:text-base lg:text-lg font-medium",
154
- body: "text-base lg:text-lg",
155
- small: "text-sm lg:text-base",
156
- xs: "text-xs lg:text-sm"
157
- },
158
- themed: {
159
- textPrimary: "text-zinc-900 dark:text-zinc-50",
160
- textSecondary: "text-zinc-500 dark:text-zinc-400",
161
- textMuted: "text-zinc-400 dark:text-zinc-500",
162
- textError: "text-red-600 dark:text-red-400",
163
- textSuccess: "text-emerald-600 dark:text-emerald-400"
164
- },
165
- colors: {
166
- form: {
167
- required: "text-red-500"
168
- }
169
- }
170
- };
171
- function Heading(_a) {
172
- var _b = _a, {
173
- level = 1,
174
- variant = "primary",
175
- className = "",
176
- children
177
- } = _b, props = __objRest(_b, [
178
- "level",
179
- "variant",
180
- "className",
181
- "children"
182
- ]);
183
- const Tag = `h${level}`;
184
- const { typography, themed } = UI_THEME;
185
- const sizeClasses2 = {
186
- 1: typography.h1,
187
- 2: typography.h2,
188
- 3: typography.h3,
189
- 4: typography.h4,
190
- 5: typography.h5,
191
- 6: typography.h6
192
- };
193
- const variantClasses = {
194
- primary: themed.textPrimary,
195
- secondary: themed.textSecondary,
196
- muted: themed.textMuted,
197
- none: ""
198
- };
199
- return /* @__PURE__ */ jsx(
200
- Tag,
201
- __spreadProps(__spreadValues({
202
- className: `${sizeClasses2[level]} ${variantClasses[variant]} ${className}`
203
- }, props), {
204
- children
205
- })
206
- );
207
- }
208
- function Text(_a) {
209
- var _b = _a, {
210
- variant = "primary",
211
- size = "base",
212
- weight = "normal",
213
- className = "",
214
- as: Tag = "p",
215
- children
216
- } = _b, props = __objRest(_b, [
217
- "variant",
218
- "size",
219
- "weight",
220
- "className",
221
- "as",
222
- "children"
223
- ]);
224
- const { typography, themed } = UI_THEME;
225
- const sizeClasses2 = {
226
- xs: typography.xs,
227
- sm: typography.small,
228
- base: typography.body,
229
- lg: "text-lg",
230
- xl: "text-xl"
231
- };
232
- const weightClasses = {
233
- normal: "font-normal",
234
- medium: "font-medium",
235
- semibold: "font-semibold",
236
- bold: "font-bold"
237
- };
238
- const variantClasses = {
239
- primary: themed.textPrimary,
240
- secondary: themed.textSecondary,
241
- muted: themed.textMuted,
242
- error: themed.textError,
243
- success: themed.textSuccess,
244
- none: ""
245
- };
246
- return /* @__PURE__ */ jsx(
247
- Tag,
248
- __spreadProps(__spreadValues({
249
- className: `${sizeClasses2[size]} ${weightClasses[weight]} ${variantClasses[variant]} ${className}`
250
- }, props), {
251
- children
252
- })
253
- );
254
- }
255
- function Label(_a) {
256
- var _b = _a, {
257
- required,
258
- className = "",
259
- children
260
- } = _b, props = __objRest(_b, [
261
- "required",
262
- "className",
263
- "children"
264
- ]);
265
- const { themed, typography, colors } = UI_THEME;
266
- return /* @__PURE__ */ jsxs(
267
- "label",
268
- __spreadProps(__spreadValues({
269
- className: `block ${typography.small} font-medium ${themed.textSecondary} mb-1.5 ${className}`
270
- }, props), {
271
- children: [
272
- children,
273
- required && /* @__PURE__ */ jsx("span", { className: `${colors.form.required} ml-1`, children: "*" })
274
- ]
275
- })
276
- );
277
- }
278
- function Span(_a) {
279
- var _b = _a, {
280
- variant = "inherit",
281
- size,
282
- weight,
283
- className = "",
284
- children
285
- } = _b, props = __objRest(_b, [
286
- "variant",
287
- "size",
288
- "weight",
289
- "className",
290
- "children"
291
- ]);
292
- const { themed, typography } = UI_THEME;
293
- const variantClasses = {
294
- inherit: "",
295
- primary: themed.textPrimary,
296
- secondary: themed.textSecondary,
297
- muted: themed.textMuted,
298
- error: themed.textError,
299
- success: themed.textSuccess,
300
- accent: "text-primary"
301
- };
302
- const sizeClasses2 = {
303
- xs: typography.xs,
304
- sm: typography.small,
305
- base: typography.body,
306
- lg: "text-lg",
307
- xl: "text-xl"
308
- };
309
- const weightClasses = {
310
- normal: "font-normal",
311
- medium: "font-medium",
312
- semibold: "font-semibold",
313
- bold: "font-bold"
314
- };
315
- const classes = [
316
- size ? sizeClasses2[size] : "",
317
- weight ? weightClasses[weight] : "",
318
- variantClasses[variant],
319
- className
320
- ].filter(Boolean).join(" ");
321
- return /* @__PURE__ */ jsx("span", __spreadProps(__spreadValues({ className: classes }, props), { children }));
322
- }
323
- function Spinner({
324
- size = "md",
325
- variant = "primary",
326
- className = "",
327
- label = "Loading..."
328
- }) {
329
- const sizeClasses2 = {
330
- sm: "w-4 h-4 border-2",
331
- md: "w-8 h-8 border-2",
332
- lg: "w-12 h-12 border-[3px]",
333
- xl: "w-16 h-16 border-4"
334
- };
335
- const variantClasses = {
336
- primary: "border-primary-600 border-t-transparent dark:border-secondary-500 dark:border-t-transparent",
337
- white: "border-white border-t-transparent",
338
- current: "border-current border-t-transparent"
339
- };
340
- return /* @__PURE__ */ jsxs(
341
- "div",
342
- {
343
- className: `inline-flex items-center gap-3 ${className}`,
344
- role: "status",
345
- "aria-label": label,
346
- children: [
347
- /* @__PURE__ */ jsx(
348
- "div",
349
- {
350
- className: `${sizeClasses2[size]} ${variantClasses[variant]} rounded-full animate-spin force-spin`
351
- }
352
- ),
353
- label && /* @__PURE__ */ jsx("span", { className: "sr-only", children: label })
354
- ]
355
- }
356
- );
357
- }
358
-
359
- // node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
360
- var mergeClasses = (...classes) => classes.filter((className, index, array) => {
361
- return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
362
- }).join(" ").trim();
363
-
364
- // node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js
365
- var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
366
-
367
- // node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js
368
- var toCamelCase = (string) => string.replace(
369
- /^([A-Z])|[\s-_]+(\w)/g,
370
- (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
371
- );
372
-
373
- // node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js
374
- var toPascalCase = (string) => {
375
- const camelCase = toCamelCase(string);
376
- return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
377
- };
378
-
379
- // node_modules/lucide-react/dist/esm/defaultAttributes.js
380
- var defaultAttributes = {
381
- xmlns: "http://www.w3.org/2000/svg",
382
- width: 24,
383
- height: 24,
384
- viewBox: "0 0 24 24",
385
- fill: "none",
386
- stroke: "currentColor",
387
- strokeWidth: 2,
388
- strokeLinecap: "round",
389
- strokeLinejoin: "round"
390
- };
391
-
392
- // node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js
393
- var hasA11yProp = (props) => {
394
- for (const prop in props) {
395
- if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
396
- return true;
397
- }
398
- }
399
- return false;
400
- };
401
- var LucideContext = createContext({});
402
- var useLucideContext = () => useContext(LucideContext);
403
-
404
- // node_modules/lucide-react/dist/esm/Icon.js
405
- var Icon = forwardRef(
406
- (_a, ref) => {
407
- var _b = _a, { color, size, strokeWidth, absoluteStrokeWidth, className = "", children, iconNode } = _b, rest = __objRest(_b, ["color", "size", "strokeWidth", "absoluteStrokeWidth", "className", "children", "iconNode"]);
408
- var _a2, _b2, _c;
409
- const {
410
- size: contextSize = 24,
411
- strokeWidth: contextStrokeWidth = 2,
412
- absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,
413
- color: contextColor = "currentColor",
414
- className: contextClass = ""
415
- } = (_a2 = useLucideContext()) != null ? _a2 : {};
416
- const calculatedStrokeWidth = (absoluteStrokeWidth != null ? absoluteStrokeWidth : contextAbsoluteStrokeWidth) ? Number(strokeWidth != null ? strokeWidth : contextStrokeWidth) * 24 / Number(size != null ? size : contextSize) : strokeWidth != null ? strokeWidth : contextStrokeWidth;
417
- return createElement(
418
- "svg",
419
- __spreadValues(__spreadValues(__spreadProps(__spreadValues({
420
- ref
421
- }, defaultAttributes), {
422
- width: (_b2 = size != null ? size : contextSize) != null ? _b2 : defaultAttributes.width,
423
- height: (_c = size != null ? size : contextSize) != null ? _c : defaultAttributes.height,
424
- stroke: color != null ? color : contextColor,
425
- strokeWidth: calculatedStrokeWidth,
426
- className: mergeClasses("lucide", contextClass, className)
427
- }), !children && !hasA11yProp(rest) && { "aria-hidden": "true" }), rest),
428
- [
429
- ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
430
- ...Array.isArray(children) ? children : [children]
431
- ]
432
- );
433
- }
434
- );
435
-
436
- // node_modules/lucide-react/dist/esm/createLucideIcon.js
437
- var createLucideIcon = (iconName, iconNode) => {
438
- const Component2 = forwardRef(
439
- (_a, ref) => {
440
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
441
- return createElement(Icon, __spreadValues({
442
- ref,
443
- iconNode,
444
- className: mergeClasses(
445
- `lucide-${toKebabCase(toPascalCase(iconName))}`,
446
- `lucide-${iconName}`,
447
- className
448
- )
449
- }, props));
450
- }
451
- );
452
- Component2.displayName = toPascalCase(iconName);
453
- return Component2;
454
- };
455
-
456
- // node_modules/lucide-react/dist/esm/icons/chevron-left.js
457
- var __iconNode = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
458
- var ChevronLeft = createLucideIcon("chevron-left", __iconNode);
459
-
460
- // node_modules/lucide-react/dist/esm/icons/chevron-right.js
461
- var __iconNode2 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
462
- var ChevronRight = createLucideIcon("chevron-right", __iconNode2);
463
-
464
- // node_modules/lucide-react/dist/esm/icons/loader-circle.js
465
- var __iconNode3 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
466
- var LoaderCircle = createLucideIcon("loader-circle", __iconNode3);
467
-
468
- // node_modules/lucide-react/dist/esm/icons/maximize.js
469
- var __iconNode4 = [
470
- ["path", { d: "M8 3H5a2 2 0 0 0-2 2v3", key: "1dcmit" }],
471
- ["path", { d: "M21 8V5a2 2 0 0 0-2-2h-3", key: "1e4gt3" }],
472
- ["path", { d: "M3 16v3a2 2 0 0 0 2 2h3", key: "wsl5sc" }],
473
- ["path", { d: "M16 21h3a2 2 0 0 0 2-2v-3", key: "18trek" }]
474
- ];
475
- var Maximize = createLucideIcon("maximize", __iconNode4);
476
-
477
- // node_modules/lucide-react/dist/esm/icons/minimize.js
478
- var __iconNode5 = [
479
- ["path", { d: "M8 3v3a2 2 0 0 1-2 2H3", key: "hohbtr" }],
480
- ["path", { d: "M21 8h-3a2 2 0 0 1-2-2V3", key: "5jw1f3" }],
481
- ["path", { d: "M3 16h3a2 2 0 0 1 2 2v3", key: "198tvr" }],
482
- ["path", { d: "M16 21v-3a2 2 0 0 1 2-2h3", key: "ph8mxp" }]
483
- ];
484
- var Minimize = createLucideIcon("minimize", __iconNode5);
485
-
486
- // node_modules/lucide-react/dist/esm/icons/rotate-ccw.js
487
- var __iconNode6 = [
488
- ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
489
- ["path", { d: "M3 3v5h5", key: "1xhq8a" }]
490
- ];
491
- var RotateCcw = createLucideIcon("rotate-ccw", __iconNode6);
492
-
493
- // node_modules/lucide-react/dist/esm/icons/x.js
494
- var __iconNode7 = [
495
- ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
496
- ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
497
- ];
498
- var X = createLucideIcon("x", __iconNode7);
499
-
500
- // node_modules/lucide-react/dist/esm/icons/zoom-in.js
501
- var __iconNode8 = [
502
- ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }],
503
- ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65", key: "13gj7c" }],
504
- ["line", { x1: "11", x2: "11", y1: "8", y2: "14", key: "1vmskp" }],
505
- ["line", { x1: "8", x2: "14", y1: "11", y2: "11", key: "durymu" }]
506
- ];
507
- var ZoomIn = createLucideIcon("zoom-in", __iconNode8);
508
-
509
- // node_modules/lucide-react/dist/esm/icons/zoom-out.js
510
- var __iconNode9 = [
511
- ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }],
512
- ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65", key: "13gj7c" }],
513
- ["line", { x1: "8", x2: "14", y1: "11", y2: "11", key: "durymu" }]
514
- ];
515
- var ZoomOut = createLucideIcon("zoom-out", __iconNode9);
516
- var UI_BUTTON = {
517
- base: "inline-flex items-center justify-center font-medium rounded-xl transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed",
518
- active: "active:scale-95",
519
- variants: {
520
- primary: "bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 shadow-sm focus:ring-primary-500/30 dark:bg-secondary-500 dark:text-white dark:hover:bg-secondary-400 dark:active:bg-secondary-600 dark:focus:ring-secondary-400/30",
521
- secondary: "bg-primary-700 text-white hover:bg-primary-600 active:bg-primary-800 shadow-md focus:ring-primary-500 dark:bg-secondary-700 dark:text-white dark:hover:bg-secondary-600 dark:active:bg-secondary-800 dark:focus:ring-secondary-500",
522
- outline: "border border-zinc-200 dark:border-slate-700 bg-white dark:bg-transparent text-zinc-900 dark:text-zinc-100 hover:bg-zinc-50 dark:hover:bg-slate-800 focus:ring-zinc-400",
523
- ghost: "text-zinc-700 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-slate-800 focus:ring-zinc-400",
524
- danger: "bg-red-600 text-white hover:bg-red-500 active:bg-red-700 shadow-sm shadow-red-600/10 focus:ring-red-500",
525
- warning: "bg-amber-500 text-white hover:bg-amber-400 active:bg-amber-600 shadow-sm shadow-amber-500/10 focus:ring-amber-500"
526
- },
527
- sizes: {
528
- sm: "px-2.5 py-1.5 text-xs sm:px-3 sm:text-sm gap-1.5 min-h-[36px]",
529
- md: "px-3 py-2 text-sm sm:px-4 sm:py-2.5 sm:text-base gap-2 min-h-[44px]",
530
- lg: "px-4 py-2.5 text-base sm:px-6 sm:py-3 sm:text-lg gap-2.5 min-h-[44px]"
531
- }
532
- };
533
- function Button(_a) {
534
- var _b = _a, {
535
- variant = "primary",
536
- size = "md",
537
- className = "",
538
- isLoading = false,
539
- disabled,
540
- children
541
- } = _b, props = __objRest(_b, [
542
- "variant",
543
- "size",
544
- "className",
545
- "isLoading",
546
- "disabled",
547
- "children"
548
- ]);
549
- return /* @__PURE__ */ jsxs(
550
- "button",
551
- __spreadProps(__spreadValues({
552
- className: twMerge(
553
- UI_BUTTON.base,
554
- UI_BUTTON.active,
555
- UI_BUTTON.variants[variant],
556
- UI_BUTTON.sizes[size],
557
- className
558
- ),
559
- disabled: disabled || isLoading,
560
- "aria-busy": isLoading || void 0
561
- }, props), {
562
- children: [
563
- isLoading && /* @__PURE__ */ jsx(
564
- LoaderCircle,
565
- {
566
- className: "w-4 h-4 animate-spin flex-shrink-0",
567
- "aria-hidden": "true"
568
- }
569
- ),
570
- isLoading ? /* @__PURE__ */ jsx("span", { className: "opacity-70", children }) : children
571
- ]
572
- })
573
- );
574
- }
575
- createContext(null);
576
- var ALERT_STYLES = {
577
- info: {
578
- container: "bg-sky-50 border-sky-200/80 dark:bg-sky-950/30 dark:border-sky-800/50",
579
- icon: "text-sky-600 dark:text-sky-400",
580
- title: "text-sky-900 dark:text-sky-200",
581
- text: "text-sky-800 dark:text-sky-300"
582
- },
583
- success: {
584
- container: "bg-emerald-50 border-emerald-200/80 dark:bg-emerald-950/30 dark:border-emerald-800/50",
585
- icon: "text-emerald-600 dark:text-emerald-400",
586
- title: "text-emerald-900 dark:text-emerald-200",
587
- text: "text-emerald-800 dark:text-emerald-300"
588
- },
589
- warning: {
590
- container: "bg-amber-50 border-amber-200/80 dark:bg-amber-950/30 dark:border-amber-800/50",
591
- icon: "text-amber-600 dark:text-amber-400",
592
- title: "text-amber-900 dark:text-amber-200",
593
- text: "text-amber-800 dark:text-amber-300"
594
- },
595
- error: {
596
- container: "bg-red-50 border-red-200/80 dark:bg-red-950/30 dark:border-red-800/50",
597
- icon: "text-red-600 dark:text-red-400",
598
- title: "text-red-900 dark:text-red-200",
599
- text: "text-red-800 dark:text-red-300"
600
- }
601
- };
602
- var ALERT_CLOSE_HOVER = "hover:bg-black/5 dark:hover:bg-white/5";
603
- var ICONS = {
604
- info: /* @__PURE__ */ jsx(
605
- "svg",
606
- {
607
- className: "w-5 h-5",
608
- fill: "currentColor",
609
- viewBox: "0 0 20 20",
610
- "aria-hidden": "true",
611
- children: /* @__PURE__ */ jsx(
612
- "path",
613
- {
614
- fillRule: "evenodd",
615
- d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z",
616
- clipRule: "evenodd"
617
- }
618
- )
619
- }
620
- ),
621
- success: /* @__PURE__ */ jsx(
622
- "svg",
623
- {
624
- className: "w-5 h-5",
625
- fill: "currentColor",
626
- viewBox: "0 0 20 20",
627
- "aria-hidden": "true",
628
- children: /* @__PURE__ */ jsx(
629
- "path",
630
- {
631
- fillRule: "evenodd",
632
- d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",
633
- clipRule: "evenodd"
634
- }
635
- )
636
- }
637
- ),
638
- warning: /* @__PURE__ */ jsx(
639
- "svg",
640
- {
641
- className: "w-5 h-5",
642
- fill: "currentColor",
643
- viewBox: "0 0 20 20",
644
- "aria-hidden": "true",
645
- children: /* @__PURE__ */ jsx(
646
- "path",
647
- {
648
- fillRule: "evenodd",
649
- d: "M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",
650
- clipRule: "evenodd"
651
- }
652
- )
653
- }
654
- ),
655
- error: /* @__PURE__ */ jsx(
656
- "svg",
657
- {
658
- className: "w-5 h-5",
659
- fill: "currentColor",
660
- viewBox: "0 0 20 20",
661
- "aria-hidden": "true",
662
- children: /* @__PURE__ */ jsx(
663
- "path",
664
- {
665
- fillRule: "evenodd",
666
- d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",
667
- clipRule: "evenodd"
668
- }
669
- )
670
- }
671
- )
672
- };
673
- function Alert({
674
- children,
675
- variant = "info",
676
- title,
677
- onClose,
678
- className = ""
679
- }) {
680
- const styles = ALERT_STYLES[variant];
681
- return /* @__PURE__ */ jsx(
682
- "div",
683
- {
684
- className: `relative p-4 rounded-xl border ${styles.container} ${className}`,
685
- role: "alert",
686
- children: /* @__PURE__ */ jsxs("div", { className: "flex gap-3", children: [
687
- /* @__PURE__ */ jsx("div", { className: `flex-shrink-0 ${styles.icon}`, children: ICONS[variant] }),
688
- /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
689
- title && /* @__PURE__ */ jsx(
690
- Heading,
691
- {
692
- level: 3,
693
- className: `text-sm font-semibold mb-1 ${styles.title}`,
694
- children: title
695
- }
696
- ),
697
- /* @__PURE__ */ jsx("div", { className: `text-sm ${styles.text}`, children })
698
- ] }),
699
- onClose && /* @__PURE__ */ jsx(
700
- Button,
701
- {
702
- variant: "ghost",
703
- size: "sm",
704
- onClick: onClose,
705
- className: `flex-shrink-0 ml-3 rounded-lg p-1.5 min-h-0 ${styles.icon} ${ALERT_CLOSE_HOVER}`,
706
- "aria-label": "Close",
707
- children: /* @__PURE__ */ jsx(
708
- "svg",
709
- {
710
- className: "w-5 h-5",
711
- fill: "currentColor",
712
- viewBox: "0 0 20 20",
713
- "aria-hidden": "true",
714
- children: /* @__PURE__ */ jsx(
715
- "path",
716
- {
717
- fillRule: "evenodd",
718
- d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
719
- clipRule: "evenodd"
720
- }
721
- )
722
- }
723
- )
724
- }
725
- )
726
- ] })
727
- }
728
- );
729
- }
730
- var TEXT_PRIMARY = "text-zinc-900 dark:text-zinc-50";
731
- var TEXT_SECONDARY = "text-zinc-500 dark:text-zinc-400";
732
- var BG_SECONDARY = "bg-zinc-50 dark:bg-slate-900";
733
- var FLEX_BETWEEN = "flex items-center justify-between";
734
- function Progress({
735
- value,
736
- max = 100,
737
- variant = "primary",
738
- size = "md",
739
- label,
740
- showValue = false,
741
- className = ""
742
- }) {
743
- const percentage = Math.min(Math.max(value / max * 100, 0), 100);
744
- const sizeClasses2 = {
745
- sm: "h-1",
746
- md: "h-2",
747
- lg: "h-3"
748
- };
749
- const variantClasses = {
750
- primary: "bg-primary",
751
- success: "bg-green-600 dark:bg-green-500",
752
- warning: "bg-yellow-600 dark:bg-yellow-500",
753
- error: "bg-red-600 dark:bg-red-500"
754
- };
755
- return /* @__PURE__ */ jsxs("div", { className, children: [
756
- (label || showValue) && /* @__PURE__ */ jsxs("div", { className: `${FLEX_BETWEEN} mb-2`, children: [
757
- label && /* @__PURE__ */ jsx(Span, { className: `text-sm font-medium ${TEXT_PRIMARY}`, children: label }),
758
- showValue && /* @__PURE__ */ jsxs(Span, { className: `text-sm font-medium ${TEXT_SECONDARY}`, children: [
759
- Math.round(percentage),
760
- "%"
761
- ] })
762
- ] }),
763
- /* @__PURE__ */ jsx(
764
- "div",
765
- {
766
- className: `w-full ${sizeClasses2[size]} rounded-full overflow-hidden ${BG_SECONDARY}`,
767
- role: "progressbar",
768
- "aria-valuenow": value,
769
- "aria-valuemin": 0,
770
- "aria-valuemax": max,
771
- "aria-label": label || `Progress: ${Math.round(percentage)}%`,
772
- children: /* @__PURE__ */ jsx(
773
- "div",
774
- {
775
- className: `h-full ${variantClasses[variant]} transition-all duration-300 ease-in-out rounded-full`,
776
- style: { width: `${percentage}%` }
777
- }
778
- )
779
- }
780
- )
781
- ] });
782
- }
783
- var SIZE_CLASSES = {
784
- sm: "max-w-sm",
785
- md: "max-w-lg",
786
- lg: "max-w-2xl",
787
- xl: "max-w-4xl",
788
- full: "max-w-[95vw] max-h-[95vh]"
789
- };
790
- function Modal({
791
- isOpen,
792
- onClose,
793
- title,
794
- children,
795
- size = "md",
796
- showCloseButton = true,
797
- className = ""
798
- }) {
799
- const titleId = useId();
800
- const panelRef = useRef(null);
801
- const prevFocusRef = useRef(null);
802
- useEffect(() => {
803
- if (!isOpen) return;
804
- const prev = document.body.style.overflow;
805
- document.body.style.overflow = "hidden";
806
- return () => {
807
- document.body.style.overflow = prev;
808
- };
809
- }, [isOpen]);
810
- useEffect(() => {
811
- var _a;
812
- if (isOpen) {
813
- prevFocusRef.current = document.activeElement;
814
- requestAnimationFrame(() => {
815
- var _a2;
816
- return (_a2 = panelRef.current) == null ? void 0 : _a2.focus();
817
- });
818
- } else {
819
- (_a = prevFocusRef.current) == null ? void 0 : _a.focus();
820
- }
821
- }, [isOpen]);
822
- const handleKeyDown = useCallback(
823
- (e) => {
824
- if (e.key === "Escape") {
825
- onClose();
826
- return;
827
- }
828
- if (e.key !== "Tab") return;
829
- const panel = panelRef.current;
830
- if (!panel) return;
831
- const focusable = Array.from(
832
- panel.querySelectorAll(
833
- 'a[href],button:not([disabled]),textarea,input,select,[tabindex]:not([tabindex="-1"])'
834
- )
835
- );
836
- if (!focusable.length) return;
837
- const first = focusable[0];
838
- const last = focusable[focusable.length - 1];
839
- if (e.shiftKey && document.activeElement === first) {
840
- e.preventDefault();
841
- last.focus();
842
- } else if (!e.shiftKey && document.activeElement === last) {
843
- e.preventDefault();
844
- first.focus();
845
- }
846
- },
847
- [onClose]
848
- );
849
- if (!isOpen) return null;
850
- if (typeof document === "undefined") return null;
851
- return createPortal(
852
- /* @__PURE__ */ jsxs(
853
- "div",
854
- {
855
- className: "fixed inset-0 z-50 flex items-center justify-center p-4",
856
- role: "dialog",
857
- "aria-modal": "true",
858
- "aria-labelledby": title ? titleId : void 0,
859
- onKeyDown: handleKeyDown,
860
- children: [
861
- /* @__PURE__ */ jsx(
862
- "div",
863
- {
864
- className: "absolute inset-0 bg-black/60 backdrop-blur-sm",
865
- "aria-hidden": "true",
866
- onClick: onClose
867
- }
868
- ),
869
- /* @__PURE__ */ jsxs(
870
- "div",
871
- {
872
- ref: panelRef,
873
- tabIndex: -1,
874
- className: [
875
- "relative w-full rounded-2xl bg-white dark:bg-slate-900",
876
- "shadow-2xl ring-1 ring-zinc-200 dark:ring-slate-700",
877
- "flex flex-col max-h-[90vh] overflow-hidden",
878
- "animate-[fadeInUp_0.15s_ease_forwards]",
879
- SIZE_CLASSES[size],
880
- className
881
- ].join(" "),
882
- children: [
883
- (title || showCloseButton) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-6 py-4 border-b border-zinc-100 dark:border-slate-800 flex-shrink-0", children: [
884
- title && /* @__PURE__ */ jsx(
885
- Heading,
886
- {
887
- level: 2,
888
- id: titleId,
889
- className: "!text-lg !font-semibold !font-sans tracking-tight",
890
- children: title
891
- }
892
- ),
893
- showCloseButton && /* @__PURE__ */ jsx(
894
- Button,
895
- {
896
- variant: "ghost",
897
- size: "sm",
898
- type: "button",
899
- onClick: onClose,
900
- className: "ml-auto p-1.5 !min-h-0 rounded-lg text-zinc-400 hover:text-zinc-600 dark:text-zinc-500 dark:hover:text-zinc-300",
901
- "aria-label": "Close",
902
- children: /* @__PURE__ */ jsx(X, { className: "w-5 h-5" })
903
- }
904
- )
905
- ] }),
906
- /* @__PURE__ */ jsx("div", { className: "overflow-y-auto flex-1 px-6 py-4", children })
907
- ]
908
- }
909
- )
910
- ]
911
- }
912
- ),
913
- document.body
914
- );
915
- }
916
- var GAP_MAP = {
917
- none: "",
918
- px: "gap-px",
919
- xs: "gap-1",
920
- sm: "gap-2",
921
- "2.5": "gap-2.5",
922
- "3": "gap-3",
923
- md: "gap-4",
924
- "5": "gap-5",
925
- lg: "gap-6",
926
- xl: "gap-8",
927
- "2xl": "gap-12"
928
- };
929
- var ITEMS_MAP = {
930
- start: "items-start",
931
- center: "items-center",
932
- end: "items-end",
933
- stretch: "items-stretch",
934
- baseline: "items-baseline"
935
- };
936
- var JUSTIFY_MAP = {
937
- start: "justify-start",
938
- center: "justify-center",
939
- end: "justify-end",
940
- between: "justify-between",
941
- around: "justify-around",
942
- evenly: "justify-evenly"
943
- };
944
- function Row(_a) {
945
- var _b = _a, {
946
- gap = "md",
947
- centered = false,
948
- align = "center",
949
- justify = "start",
950
- wrap = false,
951
- as,
952
- className = "",
953
- children
954
- } = _b, props = __objRest(_b, [
955
- "gap",
956
- "centered",
957
- "align",
958
- "justify",
959
- "wrap",
960
- "as",
961
- "className",
962
- "children"
963
- ]);
964
- const Tag = as != null ? as : "div";
965
- const classes = [
966
- "flex flex-row",
967
- centered ? "items-center justify-center" : ITEMS_MAP[align],
968
- !centered && justify !== "start" ? JUSTIFY_MAP[justify] : "",
969
- GAP_MAP[gap],
970
- wrap ? "flex-wrap" : "",
971
- className
972
- ].filter(Boolean).join(" ");
973
- return /* @__PURE__ */ jsx(Tag, __spreadProps(__spreadValues({ className: classes }, props), { children }));
974
- }
975
- var SIZE_HINTS = {
976
- thumbnail: "(max-width: 640px) 80px, (max-width: 1024px) 96px, 112px",
977
- card: "(max-width: 640px) 50vw, (max-width: 1024px) 33vw, 25vw",
978
- hero: "100vw",
979
- banner: "100vw",
980
- gallery: "(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw",
981
- avatar: "(max-width: 640px) 48px, 56px"
982
- };
983
- var FALLBACK_ICONS = {
984
- thumbnail: "\u{1F4E6}",
985
- card: "\u{1F4E6}",
986
- hero: "\u{1F5BC}\uFE0F",
987
- banner: "\u{1F5BC}\uFE0F",
988
- gallery: "\u{1F4E6}",
989
- avatar: "\u{1F464}"
990
- };
991
- function MediaImage({
992
- src,
993
- alt,
994
- size = "card",
995
- priority = false,
996
- objectFit = "cover",
997
- fallback,
998
- className
999
- }) {
1000
- const [hasError, setHasError] = useState(false);
1001
- const [isLoaded, setIsLoaded] = useState(false);
1002
- const icon = fallback != null ? fallback : FALLBACK_ICONS[size];
1003
- const fitClass = objectFit === "contain" ? "object-contain" : "object-cover";
1004
- if (!src || hasError) {
1005
- return /* @__PURE__ */ jsx(
1006
- Div,
1007
- {
1008
- className: `absolute inset-0 flex items-center justify-center bg-zinc-100 dark:bg-slate-800 text-zinc-400 text-4xl${className ? ` ${className}` : ""}`,
1009
- role: "img",
1010
- "aria-label": alt,
1011
- children: /* @__PURE__ */ jsx(Span, { "aria-hidden": "true", children: icon })
1012
- }
1013
- );
1014
- }
1015
- const isSvg = src.toLowerCase().endsWith(".svg") || src.includes("image/svg") || /[./]svg(\?|$)/i.test(src);
1016
- return /* @__PURE__ */ jsxs(
1017
- Div,
1018
- {
1019
- className: `absolute inset-0 overflow-hidden${className ? ` ${className}` : ""}`,
1020
- children: [
1021
- !isLoaded && /* @__PURE__ */ jsx(
1022
- Div,
1023
- {
1024
- className: "absolute inset-0 bg-zinc-200 dark:bg-slate-700 animate-pulse",
1025
- "aria-hidden": "true"
1026
- }
1027
- ),
1028
- /* @__PURE__ */ jsx(
1029
- Image,
1030
- {
1031
- src,
1032
- alt,
1033
- fill: true,
1034
- priority,
1035
- className: fitClass,
1036
- sizes: SIZE_HINTS[size],
1037
- onLoad: () => setIsLoaded(true),
1038
- onError: () => setHasError(true),
1039
- unoptimized: isSvg
1040
- }
1041
- )
1042
- ]
1043
- }
1044
- );
1045
- }
1046
- function MediaVideo({
1047
- src,
1048
- thumbnailUrl,
1049
- alt = "Video",
1050
- controls = true,
1051
- autoPlayMuted = false,
1052
- loop = false,
1053
- trimStart,
1054
- trimEnd,
1055
- objectFit = "cover"
1056
- }) {
1057
- const videoRef = useRef(null);
1058
- const fitClass = objectFit === "contain" ? "object-contain" : "object-cover";
1059
- useEffect(() => {
1060
- const el = videoRef.current;
1061
- if (!el || trimStart === void 0) return;
1062
- const onLoaded = () => {
1063
- el.currentTime = trimStart;
1064
- };
1065
- el.addEventListener("loadedmetadata", onLoaded);
1066
- return () => el.removeEventListener("loadedmetadata", onLoaded);
1067
- }, [trimStart]);
1068
- useEffect(() => {
1069
- const el = videoRef.current;
1070
- if (!el || trimEnd === void 0) return;
1071
- const onTimeUpdate = () => {
1072
- if (el.currentTime >= trimEnd) {
1073
- el.pause();
1074
- el.currentTime = trimStart != null ? trimStart : 0;
1075
- }
1076
- };
1077
- el.addEventListener("timeupdate", onTimeUpdate);
1078
- return () => el.removeEventListener("timeupdate", onTimeUpdate);
1079
- }, [trimEnd, trimStart]);
1080
- if (!src) {
1081
- return /* @__PURE__ */ jsx(
1082
- Div,
1083
- {
1084
- className: "absolute inset-0 flex items-center justify-center bg-zinc-100 dark:bg-slate-800 text-zinc-400 text-4xl",
1085
- role: "img",
1086
- "aria-label": alt,
1087
- children: /* @__PURE__ */ jsx(Span, { "aria-hidden": "true", children: "\u{1F3AC}" })
1088
- }
1089
- );
1090
- }
1091
- return /* @__PURE__ */ jsx(
1092
- "video",
1093
- {
1094
- ref: videoRef,
1095
- src,
1096
- poster: thumbnailUrl,
1097
- controls,
1098
- autoPlay: autoPlayMuted,
1099
- muted: autoPlayMuted,
1100
- loop,
1101
- playsInline: true,
1102
- "aria-label": alt,
1103
- className: `absolute inset-0 w-full h-full ${fitClass}`
1104
- }
1105
- );
1106
- }
1107
- var sizeClasses = {
1108
- sm: "w-8 h-8",
1109
- md: "w-10 h-10",
1110
- lg: "w-14 h-14",
1111
- xl: "w-20 h-20"
1112
- };
1113
- function MediaAvatar({
1114
- src,
1115
- alt,
1116
- size = "md",
1117
- className = ""
1118
- }) {
1119
- return /* @__PURE__ */ jsx(
1120
- Div,
1121
- {
1122
- className: `relative ${sizeClasses[size]} rounded-full overflow-hidden flex-shrink-0 ${className}`,
1123
- children: /* @__PURE__ */ jsx(MediaImage, { src, alt, size: "avatar" })
1124
- }
1125
- );
1126
- }
1127
- var MIN_ZOOM = 1;
1128
- var MAX_ZOOM = 4;
1129
- var ZOOM_STEP = 0.5;
1130
- var DEFAULT_LABELS = {
1131
- prevImage: "Previous image",
1132
- nextImage: "Next image",
1133
- zoomIn: "Zoom in",
1134
- zoomOut: "Zoom out",
1135
- resetZoom: "Reset zoom",
1136
- enterFullscreen: "Enter fullscreen",
1137
- exitFullscreen: "Exit fullscreen",
1138
- close: "Close",
1139
- imageThumbnail: (n) => `Image ${n}`,
1140
- lightboxTitle: "Image viewer"
1141
- };
1142
- function cn(...classes) {
1143
- return classes.filter(Boolean).join(" ");
1144
- }
1145
- function IconBtn({
1146
- onClick,
1147
- disabled,
1148
- ariaLabel,
1149
- ariaCurrent,
1150
- className,
1151
- children
1152
- }) {
1153
- return /* @__PURE__ */ jsx(
1154
- Button,
1155
- {
1156
- type: "button",
1157
- onClick,
1158
- disabled,
1159
- "aria-label": ariaLabel,
1160
- "aria-current": ariaCurrent,
1161
- className: cn(
1162
- "inline-flex items-center justify-center w-12 h-12 rounded-full bg-white/15 hover:bg-white/30 text-white border-0 active:scale-95 transition-colors disabled:opacity-30 disabled:cursor-not-allowed",
1163
- className
1164
- ),
1165
- children
1166
- }
1167
- );
1168
- }
1169
- function MediaLightbox({
1170
- items,
1171
- initialIndex = 0,
1172
- isOpen,
1173
- onClose,
1174
- labels
1175
- }) {
1176
- const L = __spreadValues(__spreadValues({}, DEFAULT_LABELS), labels);
1177
- const containerRef = useRef(null);
1178
- const imageAreaRef = useRef(null);
1179
- const [index, setIndex] = useState(initialIndex);
1180
- const [zoom, setZoom] = useState(1);
1181
- const [offset, setOffset] = useState({ x: 0, y: 0 });
1182
- const [isDragging, setIsDragging] = useState(false);
1183
- const [dragStart, setDragStart] = useState({ x: 0, y: 0 });
1184
- const [isFullscreen, setIsFullscreen] = useState(false);
1185
- useEffect(() => {
1186
- if (isOpen) {
1187
- setIndex(initialIndex);
1188
- setZoom(1);
1189
- setOffset({ x: 0, y: 0 });
1190
- }
1191
- }, [isOpen, initialIndex]);
1192
- const resetZoom = useCallback(() => {
1193
- setZoom(1);
1194
- setOffset({ x: 0, y: 0 });
1195
- }, []);
1196
- const goNext = useCallback(() => {
1197
- setIndex((prev) => (prev + 1) % items.length);
1198
- resetZoom();
1199
- }, [items.length, resetZoom]);
1200
- const goPrev = useCallback(() => {
1201
- setIndex((prev) => (prev - 1 + items.length) % items.length);
1202
- resetZoom();
1203
- }, [items.length, resetZoom]);
1204
- const zoomIn = useCallback(() => {
1205
- setZoom((prev) => Math.min(prev + ZOOM_STEP, MAX_ZOOM));
1206
- }, []);
1207
- const zoomOut = useCallback(() => {
1208
- setZoom((prev) => {
1209
- const next = Math.max(prev - ZOOM_STEP, MIN_ZOOM);
1210
- if (next <= MIN_ZOOM) setOffset({ x: 0, y: 0 });
1211
- return next;
1212
- });
1213
- }, []);
1214
- useEffect(() => {
1215
- if (!isOpen) return;
1216
- const handler = (e) => {
1217
- switch (e.key) {
1218
- case "Escape":
1219
- onClose();
1220
- break;
1221
- case "ArrowRight":
1222
- goNext();
1223
- break;
1224
- case "ArrowLeft":
1225
- goPrev();
1226
- break;
1227
- case "+":
1228
- case "=":
1229
- zoomIn();
1230
- break;
1231
- case "-":
1232
- zoomOut();
1233
- break;
1234
- }
1235
- };
1236
- window.addEventListener("keydown", handler);
1237
- return () => window.removeEventListener("keydown", handler);
1238
- }, [isOpen, onClose, goNext, goPrev, zoomIn, zoomOut]);
1239
- const toggleFullscreen = useCallback(() => {
1240
- var _a;
1241
- if (!document.fullscreenElement) {
1242
- (_a = containerRef.current) == null ? void 0 : _a.requestFullscreen();
1243
- } else {
1244
- document.exitFullscreen();
1245
- }
1246
- }, []);
1247
- useEffect(() => {
1248
- const handler = () => setIsFullscreen(!!document.fullscreenElement);
1249
- document.addEventListener("fullscreenchange", handler);
1250
- return () => document.removeEventListener("fullscreenchange", handler);
1251
- }, []);
1252
- useEffect(() => {
1253
- if (isOpen) {
1254
- document.body.style.overflow = "hidden";
1255
- }
1256
- return () => {
1257
- document.body.style.overflow = "";
1258
- };
1259
- }, [isOpen]);
1260
- useEffect(() => {
1261
- const el = imageAreaRef.current;
1262
- if (!el || !isOpen) return;
1263
- const handler = (e) => {
1264
- e.preventDefault();
1265
- if (e.deltaY < 0) {
1266
- setZoom((prev) => Math.min(prev + ZOOM_STEP, MAX_ZOOM));
1267
- } else {
1268
- setZoom((prev) => {
1269
- const next = Math.max(prev - ZOOM_STEP, MIN_ZOOM);
1270
- if (next <= MIN_ZOOM) setOffset({ x: 0, y: 0 });
1271
- return next;
1272
- });
1273
- }
1274
- };
1275
- el.addEventListener("wheel", handler, { passive: false });
1276
- return () => el.removeEventListener("wheel", handler);
1277
- }, [isOpen]);
1278
- const handleMouseDown = useCallback(
1279
- (e) => {
1280
- if (zoom <= 1) return;
1281
- e.preventDefault();
1282
- setIsDragging(true);
1283
- setDragStart({ x: e.clientX - offset.x, y: e.clientY - offset.y });
1284
- },
1285
- [zoom, offset]
1286
- );
1287
- const handleMouseMove = useCallback(
1288
- (e) => {
1289
- if (!isDragging) return;
1290
- setOffset({ x: e.clientX - dragStart.x, y: e.clientY - dragStart.y });
1291
- },
1292
- [isDragging, dragStart]
1293
- );
1294
- const handleMouseUp = useCallback(() => {
1295
- setIsDragging(false);
1296
- }, []);
1297
- const touchState = useRef({});
1298
- const handleTouchStart = useCallback(
1299
- (e) => {
1300
- if (e.touches.length === 2) {
1301
- const dx = e.touches[0].clientX - e.touches[1].clientX;
1302
- const dy = e.touches[0].clientY - e.touches[1].clientY;
1303
- touchState.current = {
1304
- startDist: Math.hypot(dx, dy),
1305
- startZoom: zoom,
1306
- startOffset: { x: offset.x, y: offset.y }
1307
- };
1308
- } else if (e.touches.length === 1) {
1309
- touchState.current = {
1310
- touchStart: { x: e.touches[0].clientX, y: e.touches[0].clientY },
1311
- startOffset: { x: offset.x, y: offset.y }
1312
- };
1313
- }
1314
- },
1315
- [zoom, offset]
1316
- );
1317
- const handleTouchMove = useCallback(
1318
- (e) => {
1319
- if (e.touches.length === 2 && touchState.current.startDist !== void 0 && touchState.current.startZoom !== void 0) {
1320
- const dx = e.touches[0].clientX - e.touches[1].clientX;
1321
- const dy = e.touches[0].clientY - e.touches[1].clientY;
1322
- const dist = Math.hypot(dx, dy);
1323
- const newZoom = Math.max(
1324
- MIN_ZOOM,
1325
- Math.min(
1326
- MAX_ZOOM,
1327
- touchState.current.startZoom * (dist / touchState.current.startDist)
1328
- )
1329
- );
1330
- setZoom(newZoom);
1331
- } else if (e.touches.length === 1 && zoom > 1 && touchState.current.touchStart && touchState.current.startOffset) {
1332
- const dx = e.touches[0].clientX - touchState.current.touchStart.x;
1333
- const dy = e.touches[0].clientY - touchState.current.touchStart.y;
1334
- setOffset({
1335
- x: touchState.current.startOffset.x + dx,
1336
- y: touchState.current.startOffset.y + dy
1337
- });
1338
- }
1339
- },
1340
- [zoom]
1341
- );
1342
- const handleTouchEnd = useCallback(
1343
- (e) => {
1344
- if (e.changedTouches.length === 1 && zoom <= 1 && touchState.current.touchStart) {
1345
- const dx = e.changedTouches[0].clientX - touchState.current.touchStart.x;
1346
- const dy = Math.abs(
1347
- e.changedTouches[0].clientY - touchState.current.touchStart.y
1348
- );
1349
- if (Math.abs(dx) > 50 && dy < 80) {
1350
- if (dx < 0) goNext();
1351
- else goPrev();
1352
- }
1353
- }
1354
- touchState.current = {};
1355
- },
1356
- [zoom, goNext, goPrev]
1357
- );
1358
- if (!isOpen || items.length === 0) return null;
1359
- const current = items[index];
1360
- return /* @__PURE__ */ jsxs(
1361
- Div,
1362
- {
1363
- ref: containerRef,
1364
- className: "fixed inset-0 z-[9999] bg-black/95 flex flex-col",
1365
- role: "dialog",
1366
- "aria-modal": "true",
1367
- "aria-label": L.lightboxTitle,
1368
- children: [
1369
- /* @__PURE__ */ jsx(
1370
- Div,
1371
- {
1372
- ref: imageAreaRef,
1373
- className: "flex-1 relative overflow-hidden select-none",
1374
- onMouseDown: handleMouseDown,
1375
- onMouseMove: handleMouseMove,
1376
- onMouseUp: handleMouseUp,
1377
- onMouseLeave: handleMouseUp,
1378
- onTouchStart: handleTouchStart,
1379
- onTouchMove: handleTouchMove,
1380
- onTouchEnd: handleTouchEnd,
1381
- style: {
1382
- cursor: zoom > 1 ? isDragging ? "grabbing" : "grab" : "default",
1383
- touchAction: "none"
1384
- },
1385
- onClick: (e) => {
1386
- if (e.target === e.currentTarget) onClose();
1387
- },
1388
- children: /* @__PURE__ */ jsx(
1389
- Div,
1390
- {
1391
- className: "absolute inset-0",
1392
- style: {
1393
- transform: `translate(${offset.x}px, ${offset.y}px) scale(${zoom})`,
1394
- transformOrigin: "center center",
1395
- transition: isDragging ? "none" : "transform 0.2s ease",
1396
- pointerEvents: "none"
1397
- },
1398
- children: /* @__PURE__ */ jsx(
1399
- MediaImage,
1400
- {
1401
- src: current.src,
1402
- alt: current.alt,
1403
- size: "hero",
1404
- objectFit: "contain"
1405
- }
1406
- )
1407
- }
1408
- )
1409
- }
1410
- ),
1411
- /* @__PURE__ */ jsxs(Div, { className: "flex items-center justify-center gap-1.5 px-4 py-3 bg-black/85 backdrop-blur-sm shrink-0 border-t border-white/10 flex-wrap", children: [
1412
- items.length > 1 && /* @__PURE__ */ jsx(
1413
- IconBtn,
1414
- {
1415
- onClick: (e) => {
1416
- e.stopPropagation();
1417
- goPrev();
1418
- },
1419
- ariaLabel: L.prevImage,
1420
- children: /* @__PURE__ */ jsx(ChevronLeft, { className: "w-7 h-7" })
1421
- }
1422
- ),
1423
- /* @__PURE__ */ jsx(
1424
- IconBtn,
1425
- {
1426
- onClick: zoomOut,
1427
- disabled: zoom <= MIN_ZOOM,
1428
- ariaLabel: L.zoomOut,
1429
- children: /* @__PURE__ */ jsx(ZoomOut, { className: "w-7 h-7" })
1430
- }
1431
- ),
1432
- /* @__PURE__ */ jsxs(Span, { className: "text-white/70 w-14 text-center tabular-nums text-xs", children: [
1433
- Math.round(zoom * 100),
1434
- "%"
1435
- ] }),
1436
- /* @__PURE__ */ jsx(
1437
- IconBtn,
1438
- {
1439
- onClick: zoomIn,
1440
- disabled: zoom >= MAX_ZOOM,
1441
- ariaLabel: L.zoomIn,
1442
- children: /* @__PURE__ */ jsx(ZoomIn, { className: "w-7 h-7" })
1443
- }
1444
- ),
1445
- zoom > 1 && /* @__PURE__ */ jsx(IconBtn, { onClick: resetZoom, ariaLabel: L.resetZoom, children: /* @__PURE__ */ jsx(RotateCcw, { className: "w-7 h-7" }) }),
1446
- /* @__PURE__ */ jsx(
1447
- Span,
1448
- {
1449
- className: "w-px h-6 bg-white/15 mx-1 shrink-0",
1450
- "aria-hidden": "true"
1451
- }
1452
- ),
1453
- /* @__PURE__ */ jsxs(Span, { className: "text-white/60 w-12 text-center tabular-nums text-xs", children: [
1454
- index + 1,
1455
- " / ",
1456
- items.length
1457
- ] }),
1458
- /* @__PURE__ */ jsx(
1459
- Span,
1460
- {
1461
- className: "w-px h-6 bg-white/15 mx-1 shrink-0",
1462
- "aria-hidden": "true"
1463
- }
1464
- ),
1465
- /* @__PURE__ */ jsx(
1466
- IconBtn,
1467
- {
1468
- onClick: toggleFullscreen,
1469
- ariaLabel: isFullscreen ? L.exitFullscreen : L.enterFullscreen,
1470
- children: isFullscreen ? /* @__PURE__ */ jsx(Minimize, { className: "w-6 h-6" }) : /* @__PURE__ */ jsx(Maximize, { className: "w-6 h-6" })
1471
- }
1472
- ),
1473
- /* @__PURE__ */ jsx(
1474
- IconBtn,
1475
- {
1476
- onClick: onClose,
1477
- ariaLabel: L.close,
1478
- className: "hover:!bg-red-500/50",
1479
- children: /* @__PURE__ */ jsx(X, { className: "w-7 h-7" })
1480
- }
1481
- ),
1482
- items.length > 1 && /* @__PURE__ */ jsx(
1483
- IconBtn,
1484
- {
1485
- onClick: (e) => {
1486
- e.stopPropagation();
1487
- goNext();
1488
- },
1489
- ariaLabel: L.nextImage,
1490
- children: /* @__PURE__ */ jsx(ChevronRight, { className: "w-7 h-7" })
1491
- }
1492
- )
1493
- ] }),
1494
- items.length > 1 && /* @__PURE__ */ jsx(
1495
- Div,
1496
- {
1497
- className: "flex gap-2 px-4 py-3 bg-black/70 backdrop-blur-sm overflow-x-auto shrink-0 justify-center",
1498
- style: {
1499
- paddingBottom: "calc(0.75rem + env(safe-area-inset-bottom, 0px))"
1500
- },
1501
- children: items.map((item, i) => /* @__PURE__ */ jsx(
1502
- Button,
1503
- {
1504
- type: "button",
1505
- onClick: () => {
1506
- setIndex(i);
1507
- resetZoom();
1508
- },
1509
- "aria-label": L.imageThumbnail(i + 1),
1510
- "aria-current": i === index ? "true" : void 0,
1511
- className: cn(
1512
- "relative shrink-0 w-14 h-14 p-0 overflow-hidden rounded-lg border-2 transition-all active:scale-95",
1513
- i === index ? "border-white opacity-100" : "border-transparent opacity-40 hover:opacity-75"
1514
- ),
1515
- children: /* @__PURE__ */ jsx(MediaImage, { src: item.src, alt: item.alt, size: "thumbnail" })
1516
- },
1517
- i
1518
- ))
1519
- }
1520
- )
1521
- ]
1522
- }
1523
- );
1524
- }
1525
- function MediaSlider({
1526
- value,
1527
- min = 0,
1528
- max = 100,
1529
- step = 1,
1530
- onChange,
1531
- onChangeEnd,
1532
- className = ""
1533
- }) {
1534
- return /* @__PURE__ */ jsx(
1535
- "input",
1536
- {
1537
- type: "range",
1538
- min,
1539
- max,
1540
- step,
1541
- value,
1542
- onChange: (e) => onChange == null ? void 0 : onChange(parseFloat(e.target.value)),
1543
- onMouseUp: (e) => onChangeEnd == null ? void 0 : onChangeEnd(parseFloat(e.target.value)),
1544
- onTouchEnd: (e) => onChangeEnd == null ? void 0 : onChangeEnd(parseFloat(e.target.value)),
1545
- className: [
1546
- "w-full h-2 appearance-none cursor-pointer rounded-full",
1547
- "bg-zinc-200 dark:bg-slate-700",
1548
- "accent-primary-600 dark:accent-secondary-400",
1549
- className
1550
- ].filter(Boolean).join(" ")
1551
- }
1552
- );
1553
- }
1554
-
1555
- // src/http/ApiClient.ts
1556
- var ApiClientError = class extends Error {
1557
- constructor(message, status, data) {
1558
- super(message);
1559
- this.status = status;
1560
- this.data = data;
1561
- this.name = "ApiClientError";
1562
- }
1563
- };
1564
- var ApiClient = class {
1565
- constructor(options) {
1566
- var _a, _b, _c;
1567
- this.baseURL = (_b = (_a = options == null ? void 0 : options.baseURL) != null ? _a : process.env.NEXT_PUBLIC_APP_URL) != null ? _b : "";
1568
- this.defaultTimeout = (_c = options == null ? void 0 : options.defaultTimeout) != null ? _c : 12e4;
1569
- }
1570
- buildURL(endpoint, params) {
1571
- var _a;
1572
- const origin = this.baseURL || (typeof window !== "undefined" ? window.location.origin : (_a = process.env.NEXT_PUBLIC_APP_URL) != null ? _a : "http://localhost:3000");
1573
- const url = new URL(endpoint, origin);
1574
- if (params) {
1575
- Object.entries(params).forEach(
1576
- ([key, value]) => url.searchParams.append(key, String(value))
1577
- );
1578
- }
1579
- return url.toString();
1580
- }
1581
- async getHeaders(method, customHeaders) {
1582
- const hasBody = !["GET", "HEAD", "DELETE"].includes(method.toUpperCase());
1583
- return __spreadValues(__spreadValues({}, hasBody ? { "Content-Type": "application/json" } : {}), customHeaders);
1584
- }
1585
- async request(endpoint, config = {}) {
1586
- var _b, _c, _d, _e, _f;
1587
- const _a = config, {
1588
- params,
1589
- timeout = this.defaultTimeout,
1590
- headers: customHeaders,
1591
- signal: externalSignal
1592
- } = _a, fetchConfig = __objRest(_a, [
1593
- "params",
1594
- "timeout",
1595
- "headers",
1596
- "signal"
1597
- ]);
1598
- const method = ((_b = fetchConfig.method) != null ? _b : "GET").toUpperCase();
1599
- const url = this.buildURL(endpoint, params);
1600
- const headers = await this.getHeaders(method, customHeaders);
1601
- const controller = new AbortController();
1602
- const timeoutId = setTimeout(() => controller.abort(), timeout);
1603
- let onAbort = null;
1604
- if (externalSignal) {
1605
- if (externalSignal.aborted) {
1606
- controller.abort();
1607
- } else {
1608
- onAbort = () => controller.abort();
1609
- externalSignal.addEventListener("abort", onAbort);
1610
- }
1611
- }
1612
- try {
1613
- const response = await fetch(url, __spreadProps(__spreadValues({}, fetchConfig), {
1614
- headers,
1615
- signal: controller.signal,
1616
- credentials: "include"
1617
- }));
1618
- clearTimeout(timeoutId);
1619
- const data = await response.json().catch(() => ({
1620
- success: false,
1621
- error: "Invalid JSON response"
1622
- }));
1623
- if (!response.ok) {
1624
- throw new ApiClientError(
1625
- (_d = (_c = data.error) != null ? _c : data.message) != null ? _d : `Request failed with status ${response.status}`,
1626
- response.status,
1627
- data
1628
- );
1629
- }
1630
- if (!data.success) {
1631
- throw new ApiClientError(
1632
- (_f = (_e = data.error) != null ? _e : data.message) != null ? _f : "Request failed",
1633
- response.status,
1634
- data
1635
- );
1636
- }
1637
- return data.data;
1638
- } catch (error) {
1639
- clearTimeout(timeoutId);
1640
- if (error instanceof Error && error.name === "AbortError") {
1641
- if (externalSignal == null ? void 0 : externalSignal.aborted) throw error;
1642
- throw new ApiClientError("Request timeout", 408);
1643
- }
1644
- if (error instanceof TypeError) {
1645
- throw new ApiClientError(
1646
- "Network error. Please check your connection.",
1647
- 0
1648
- );
1649
- }
1650
- if (error instanceof ApiClientError) throw error;
1651
- throw new ApiClientError(
1652
- error instanceof Error ? error.message : "An unexpected error occurred",
1653
- 500
1654
- );
1655
- } finally {
1656
- if (onAbort) externalSignal == null ? void 0 : externalSignal.removeEventListener("abort", onAbort);
1657
- }
1658
- }
1659
- async get(endpoint, config) {
1660
- return this.request(endpoint, __spreadProps(__spreadValues({}, config), { method: "GET" }));
1661
- }
1662
- async post(endpoint, data, config) {
1663
- return this.request(endpoint, __spreadProps(__spreadValues({}, config), {
1664
- method: "POST",
1665
- body: data != null ? JSON.stringify(data) : void 0
1666
- }));
1667
- }
1668
- async put(endpoint, data, config) {
1669
- return this.request(endpoint, __spreadProps(__spreadValues({}, config), {
1670
- method: "PUT",
1671
- body: data != null ? JSON.stringify(data) : void 0
1672
- }));
1673
- }
1674
- async patch(endpoint, data, config) {
1675
- return this.request(endpoint, __spreadProps(__spreadValues({}, config), {
1676
- method: "PATCH",
1677
- body: data != null ? JSON.stringify(data) : void 0
1678
- }));
1679
- }
1680
- async delete(endpoint, config) {
1681
- return this.request(endpoint, __spreadProps(__spreadValues({}, config), { method: "DELETE" }));
1682
- }
1683
- async upload(endpoint, formData, config) {
1684
- const _a = config != null ? config : {}, { headers } = _a, restConfig = __objRest(_a, ["headers"]);
1685
- const uploadHeaders = await this.getHeaders("POST", headers);
1686
- delete uploadHeaders["Content-Type"];
1687
- return this.request(endpoint, __spreadProps(__spreadValues({}, restConfig), {
1688
- method: "POST",
1689
- body: formData,
1690
- headers: uploadHeaders
1691
- }));
1692
- }
1693
- };
1694
- var apiClient = new ApiClient();
1695
-
1696
- // src/features/media/hooks/useMedia.ts
1697
- function useMediaUpload(endpoint = "/api/media/upload") {
1698
- const mutation = useMutation({
1699
- mutationFn: (formData) => apiClient.upload(endpoint, formData)
1700
- });
1701
- const upload = async (file, folder = "uploads", isPublic = true, context) => {
1702
- const formData = new FormData();
1703
- formData.append("file", file);
1704
- formData.append("folder", folder);
1705
- formData.append("public", isPublic.toString());
1706
- if (context) {
1707
- formData.append("context", JSON.stringify(context));
1708
- }
1709
- const data = await mutation.mutateAsync(formData);
1710
- return data.url;
1711
- };
1712
- return __spreadProps(__spreadValues({}, mutation), { upload });
1713
- }
1714
- function useMediaCrop(endpoint = "/api/media/crop") {
1715
- return useMutation({
1716
- mutationFn: (data) => apiClient.post(endpoint, data)
1717
- });
1718
- }
1719
- function useMediaTrim(endpoint = "/api/media/trim") {
1720
- return useMutation({
1721
- mutationFn: (data) => apiClient.post(endpoint, data)
1722
- });
1723
- }
1724
- function useMediaCleanup(endpoint = "/api/media") {
1725
- const mutation = useMutation({
1726
- mutationFn: async (urls) => {
1727
- await Promise.all(
1728
- urls.map(async (url) => {
1729
- const encoded = encodeURIComponent(url);
1730
- await apiClient.delete(`${endpoint}?url=${encoded}`);
1731
- })
1732
- );
1733
- }
1734
- });
1735
- const cleanup = async (urls) => {
1736
- const unique = Array.from(new Set(urls.filter(Boolean)));
1737
- if (unique.length === 0) return;
1738
- await mutation.mutateAsync(unique);
1739
- };
1740
- return __spreadProps(__spreadValues({}, mutation), { cleanup });
1741
- }
1742
- function ImageCropModal({
1743
- isOpen,
1744
- imageUrl,
1745
- onClose,
1746
- onSave,
1747
- initialCropData
1748
- }) {
1749
- var _a, _b;
1750
- const t = useTranslations("mediaEditor");
1751
- const [zoom, setZoom] = useState((_a = initialCropData == null ? void 0 : initialCropData.zoom) != null ? _a : 1);
1752
- const [position, setPosition] = useState(
1753
- (_b = initialCropData == null ? void 0 : initialCropData.position) != null ? _b : { x: 50, y: 50 }
1754
- );
1755
- const [isDragging, setIsDragging] = useState(false);
1756
- const [dragStart, setDragStart] = useState({ x: 0, y: 0 });
1757
- const [showZoomWarning, setShowZoomWarning] = useState(false);
1758
- const containerRef = useRef(null);
1759
- useEffect(() => {
1760
- setShowZoomWarning(zoom < 0.5);
1761
- }, [zoom]);
1762
- const handleMouseDown = (e) => {
1763
- setIsDragging(true);
1764
- setDragStart({ x: e.clientX - position.x, y: e.clientY - position.y });
1765
- };
1766
- const handleMouseMove = (e) => {
1767
- if (!isDragging || !containerRef.current) return;
1768
- const container = containerRef.current.getBoundingClientRect();
1769
- setPosition({
1770
- x: Math.max(0, Math.min(100, (e.clientX - dragStart.x) / container.width * 100)),
1771
- y: Math.max(0, Math.min(100, (e.clientY - dragStart.y) / container.height * 100))
1772
- });
1773
- };
1774
- const handleMouseUp = () => setIsDragging(false);
1775
- const handleTouchStart = (e) => {
1776
- const touch = e.touches[0];
1777
- setIsDragging(true);
1778
- setDragStart({ x: touch.clientX - position.x, y: touch.clientY - position.y });
1779
- };
1780
- const handleTouchMove = (e) => {
1781
- if (!isDragging || !containerRef.current) return;
1782
- const touch = e.touches[0];
1783
- const container = containerRef.current.getBoundingClientRect();
1784
- setPosition({
1785
- x: Math.max(0, Math.min(100, (touch.clientX - dragStart.x) / container.width * 100)),
1786
- y: Math.max(0, Math.min(100, (touch.clientY - dragStart.y) / container.height * 100))
1787
- });
1788
- };
1789
- const handleTouchEnd = () => setIsDragging(false);
1790
- const handleKeyDown = (e) => {
1791
- const step = e.shiftKey ? 5 : 1;
1792
- switch (e.key) {
1793
- case "ArrowLeft":
1794
- e.preventDefault();
1795
- setPosition((p) => __spreadProps(__spreadValues({}, p), { x: Math.max(0, p.x - step) }));
1796
- break;
1797
- case "ArrowRight":
1798
- e.preventDefault();
1799
- setPosition((p) => __spreadProps(__spreadValues({}, p), { x: Math.min(100, p.x + step) }));
1800
- break;
1801
- case "ArrowUp":
1802
- e.preventDefault();
1803
- setPosition((p) => __spreadProps(__spreadValues({}, p), { y: Math.max(0, p.y - step) }));
1804
- break;
1805
- case "ArrowDown":
1806
- e.preventDefault();
1807
- setPosition((p) => __spreadProps(__spreadValues({}, p), { y: Math.min(100, p.y + step) }));
1808
- break;
1809
- case "+":
1810
- case "=":
1811
- e.preventDefault();
1812
- setZoom((z2) => Math.min(3, z2 + 0.1));
1813
- break;
1814
- case "-":
1815
- e.preventDefault();
1816
- setZoom((z2) => Math.max(0.1, z2 - 0.1));
1817
- break;
1818
- }
1819
- };
1820
- const handleSave = () => {
1821
- onSave({ url: imageUrl, position, zoom });
1822
- onClose();
1823
- };
1824
- const handleReset = () => {
1825
- setZoom(1);
1826
- setPosition({ x: 50, y: 50 });
1827
- };
1828
- return /* @__PURE__ */ jsx(Modal, { isOpen, onClose, title: t("cropTitle"), size: "lg", children: /* @__PURE__ */ jsxs(Div, { className: "space-y-3", children: [
1829
- /* @__PURE__ */ jsx(Text, { variant: "secondary", className: "text-xs", children: t("cropInstruction") }),
1830
- /* @__PURE__ */ jsxs(
1831
- Div,
1832
- {
1833
- ref: containerRef,
1834
- className: "relative w-full max-w-sm mx-auto aspect-square bg-zinc-100 dark:bg-slate-800 rounded-lg overflow-hidden cursor-move max-h-[280px] touch-none",
1835
- "data-disable-swipe": "true",
1836
- tabIndex: 0,
1837
- role: "application",
1838
- "aria-label": t("cropInstruction"),
1839
- onKeyDown: handleKeyDown,
1840
- onMouseDown: handleMouseDown,
1841
- onMouseMove: handleMouseMove,
1842
- onMouseUp: handleMouseUp,
1843
- onMouseLeave: handleMouseUp,
1844
- onTouchStart: handleTouchStart,
1845
- onTouchMove: handleTouchMove,
1846
- onTouchEnd: handleTouchEnd,
1847
- children: [
1848
- /* @__PURE__ */ jsx(
1849
- "img",
1850
- {
1851
- src: imageUrl,
1852
- alt: t("cropPreviewAlt"),
1853
- draggable: false,
1854
- className: "absolute select-none pointer-events-none object-cover",
1855
- style: {
1856
- width: `${zoom * 100}%`,
1857
- height: `${zoom * 100}%`,
1858
- left: `${position.x}%`,
1859
- top: `${position.y}%`,
1860
- transform: "translate(-50%, -50%)"
1861
- }
1862
- }
1863
- ),
1864
- /* @__PURE__ */ jsxs(Div, { className: "absolute inset-0 pointer-events-none", children: [
1865
- /* @__PURE__ */ jsx(Div, { className: "absolute w-full h-full grid grid-cols-3 grid-rows-3", children: Array.from({ length: 9 }).map((_, i) => /* @__PURE__ */ jsx(Div, { className: "border border-white/20 dark:border-slate-600/30" }, i)) }),
1866
- /* @__PURE__ */ jsxs(Div, { className: "absolute inset-0 flex items-center justify-center", children: [
1867
- /* @__PURE__ */ jsx(Div, { className: "w-6 h-px bg-white/50" }),
1868
- /* @__PURE__ */ jsx(Div, { className: "absolute h-6 w-px bg-white/50" })
1869
- ] })
1870
- ] })
1871
- ]
1872
- }
1873
- ),
1874
- /* @__PURE__ */ jsxs(Div, { className: "space-y-1", children: [
1875
- /* @__PURE__ */ jsxs(Div, { className: "flex items-center justify-between", children: [
1876
- /* @__PURE__ */ jsx(Text, { className: "text-xs font-medium", children: t("cropZoom") }),
1877
- /* @__PURE__ */ jsxs(Text, { className: "text-xs text-zinc-500 dark:text-slate-400", children: [
1878
- Math.round(zoom * 100),
1879
- "%"
1880
- ] })
1881
- ] }),
1882
- /* @__PURE__ */ jsxs(Div, { className: "flex items-center gap-3", children: [
1883
- /* @__PURE__ */ jsx(
1884
- Button,
1885
- {
1886
- type: "button",
1887
- variant: "ghost",
1888
- size: "sm",
1889
- onClick: () => setZoom(Math.max(0.1, zoom - 0.1)),
1890
- "aria-label": t("cropZoomOut"),
1891
- children: /* @__PURE__ */ jsx("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM13 10H7" }) })
1892
- }
1893
- ),
1894
- /* @__PURE__ */ jsx(
1895
- MediaSlider,
1896
- {
1897
- value: zoom,
1898
- min: 0.1,
1899
- max: 3,
1900
- step: 0.01,
1901
- onChange: (v) => setZoom(v),
1902
- className: "flex-1"
1903
- }
1904
- ),
1905
- /* @__PURE__ */ jsx(
1906
- Button,
1907
- {
1908
- type: "button",
1909
- variant: "ghost",
1910
- size: "sm",
1911
- onClick: () => setZoom(Math.min(3, zoom + 0.1)),
1912
- "aria-label": t("cropZoomIn"),
1913
- children: /* @__PURE__ */ jsx("svg", { className: "w-4 h-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0zM10 7v3m0 0v3m0-3h3m-3 0H7" }) })
1914
- }
1915
- )
1916
- ] }),
1917
- /* @__PURE__ */ jsx(Div, { className: "flex gap-2", children: [0.5, 1, 1.5, 2].map((preset) => /* @__PURE__ */ jsxs(
1918
- Button,
1919
- {
1920
- type: "button",
1921
- variant: "ghost",
1922
- size: "sm",
1923
- onClick: () => setZoom(preset),
1924
- className: "px-3 py-1 text-xs rounded-lg bg-zinc-100 dark:bg-slate-800",
1925
- children: [
1926
- preset * 100,
1927
- "%"
1928
- ]
1929
- },
1930
- preset
1931
- )) })
1932
- ] }),
1933
- showZoomWarning && /* @__PURE__ */ jsxs(Alert, { variant: "warning", children: [
1934
- /* @__PURE__ */ jsx("strong", { children: t("cropWarningTitle") }),
1935
- " ",
1936
- t("cropWarningMessage")
1937
- ] }),
1938
- /* @__PURE__ */ jsxs(Div, { className: "flex items-center justify-between text-xs text-zinc-500 dark:text-slate-400", children: [
1939
- /* @__PURE__ */ jsxs(Span, { children: [
1940
- t("cropPosition"),
1941
- ": ",
1942
- Math.round(position.x),
1943
- "%, ",
1944
- Math.round(position.y),
1945
- "%"
1946
- ] }),
1947
- /* @__PURE__ */ jsx(
1948
- Button,
1949
- {
1950
- type: "button",
1951
- variant: "ghost",
1952
- size: "sm",
1953
- onClick: handleReset,
1954
- className: "text-primary-600 dark:text-primary-400 hover:underline",
1955
- children: t("cropReset")
1956
- }
1957
- )
1958
- ] }),
1959
- /* @__PURE__ */ jsxs(Div, { className: "flex gap-2 pt-2", children: [
1960
- /* @__PURE__ */ jsx(Button, { onClick: handleSave, variant: "primary", className: "flex-1", children: t("cropSave") }),
1961
- /* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "secondary", className: "flex-1", children: t("cropCancel") })
1962
- ] })
1963
- ] }) });
1964
- }
1965
- function formatTime(seconds) {
1966
- const m = Math.floor(seconds / 60);
1967
- const s = Math.floor(seconds % 60);
1968
- return `${m}:${s.toString().padStart(2, "0")}`;
1969
- }
1970
- function VideoTrimModal({
1971
- isOpen,
1972
- videoUrl,
1973
- onClose,
1974
- onSave,
1975
- endpoint
1976
- }) {
1977
- const t = useTranslations("mediaEditor");
1978
- const [duration, setDuration] = useState(0);
1979
- const [startTime, setStartTime] = useState(0);
1980
- const [endTime, setEndTime] = useState(0);
1981
- const [quality, setQuality] = useState("medium");
1982
- const [error, setError] = useState(null);
1983
- const videoRef = useRef(null);
1984
- const { mutateAsync: trim, isPending } = useMediaTrim(endpoint);
1985
- useEffect(() => {
1986
- if (isOpen) {
1987
- setStartTime(0);
1988
- setEndTime(0);
1989
- setDuration(0);
1990
- setError(null);
1991
- }
1992
- }, [isOpen, videoUrl]);
1993
- const handleLoadedMetadata = () => {
1994
- const video = videoRef.current;
1995
- if (!video) return;
1996
- setDuration(video.duration);
1997
- setEndTime(video.duration);
1998
- };
1999
- const seekTo = (time) => {
2000
- if (videoRef.current) videoRef.current.currentTime = time;
2001
- };
2002
- const handleStartChange = (val) => {
2003
- const clamped = Math.min(val, endTime - 0.1);
2004
- setStartTime(clamped);
2005
- seekTo(clamped);
2006
- };
2007
- const handleEndChange = (val) => {
2008
- const clamped = Math.max(val, startTime + 0.1);
2009
- setEndTime(clamped);
2010
- seekTo(clamped);
2011
- };
2012
- const handleTrim = async () => {
2013
- setError(null);
2014
- try {
2015
- const result = await trim({ sourceUrl: videoUrl, startTime, endTime, quality });
2016
- onSave(result.url);
2017
- onClose();
2018
- } catch (err) {
2019
- setError(err instanceof Error ? err.message : t("trimError"));
2020
- }
2021
- };
2022
- const qualityLabels = {
2023
- low: t("trimQualityLow"),
2024
- medium: t("trimQualityMedium"),
2025
- high: t("trimQualityHigh")
2026
- };
2027
- return /* @__PURE__ */ jsx(Modal, { isOpen, onClose, title: t("trimTitle"), size: "lg", children: /* @__PURE__ */ jsxs(Div, { className: "space-y-4", children: [
2028
- /* @__PURE__ */ jsx(Text, { variant: "secondary", className: "text-xs", children: t("trimInstruction") }),
2029
- /* @__PURE__ */ jsx(Div, { className: "relative aspect-video overflow-hidden rounded-lg bg-black", children: /* @__PURE__ */ jsx(
2030
- "video",
2031
- {
2032
- ref: videoRef,
2033
- src: videoUrl,
2034
- className: "absolute inset-0 w-full h-full object-contain",
2035
- controls: true,
2036
- onLoadedMetadata: handleLoadedMetadata
2037
- }
2038
- ) }),
2039
- duration > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
2040
- /* @__PURE__ */ jsxs(Div, { className: "space-y-1", children: [
2041
- /* @__PURE__ */ jsxs(Div, { className: "flex items-center justify-between", children: [
2042
- /* @__PURE__ */ jsx(Text, { size: "sm", children: t("trimStart") }),
2043
- /* @__PURE__ */ jsx(Span, { className: "text-sm font-mono tabular-nums", children: formatTime(startTime) })
2044
- ] }),
2045
- /* @__PURE__ */ jsx(
2046
- MediaSlider,
2047
- {
2048
- value: startTime,
2049
- min: 0,
2050
- max: duration,
2051
- step: 0.1,
2052
- onChange: handleStartChange
2053
- }
2054
- )
2055
- ] }),
2056
- /* @__PURE__ */ jsxs(Div, { className: "space-y-1", children: [
2057
- /* @__PURE__ */ jsxs(Div, { className: "flex items-center justify-between", children: [
2058
- /* @__PURE__ */ jsx(Text, { size: "sm", children: t("trimEnd") }),
2059
- /* @__PURE__ */ jsx(Span, { className: "text-sm font-mono tabular-nums", children: formatTime(endTime) })
2060
- ] }),
2061
- /* @__PURE__ */ jsx(
2062
- MediaSlider,
2063
- {
2064
- value: endTime,
2065
- min: 0,
2066
- max: duration,
2067
- step: 0.1,
2068
- onChange: handleEndChange
2069
- }
2070
- )
2071
- ] }),
2072
- /* @__PURE__ */ jsx(Text, { size: "xs", variant: "secondary", children: t("trimDuration", { duration: (endTime - startTime).toFixed(1) }) }),
2073
- /* @__PURE__ */ jsxs(Div, { className: "space-y-1", children: [
2074
- /* @__PURE__ */ jsx(Text, { size: "sm", children: t("trimQuality") }),
2075
- /* @__PURE__ */ jsx(Div, { className: "flex gap-2", children: ["low", "medium", "high"].map((q) => /* @__PURE__ */ jsx(
2076
- Button,
2077
- {
2078
- type: "button",
2079
- variant: quality === q ? "primary" : "outline",
2080
- size: "sm",
2081
- onClick: () => setQuality(q),
2082
- disabled: isPending,
2083
- children: qualityLabels[q]
2084
- },
2085
- q
2086
- )) })
2087
- ] })
2088
- ] }),
2089
- error && /* @__PURE__ */ jsx(Alert, { variant: "error", children: error }),
2090
- /* @__PURE__ */ jsxs(Div, { className: "flex items-center justify-end gap-2", children: [
2091
- /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onClose, disabled: isPending, children: t("trimSkip") }),
2092
- /* @__PURE__ */ jsx(
2093
- Button,
2094
- {
2095
- type: "button",
2096
- variant: "primary",
2097
- size: "sm",
2098
- onClick: handleTrim,
2099
- disabled: isPending || duration === 0,
2100
- children: isPending ? t("trimming") : t("trimSave")
2101
- }
2102
- )
2103
- ] })
2104
- ] }) });
2105
- }
2106
- function VideoThumbnailSelector({
2107
- isOpen,
2108
- videoUrl,
2109
- onClose,
2110
- onSelect,
2111
- onUpload
2112
- }) {
2113
- const t = useTranslations("mediaEditor");
2114
- const [isCapturing, setIsCapturing] = useState(false);
2115
- const [error, setError] = useState(null);
2116
- const videoRef = useRef(null);
2117
- const canvasRef = useRef(null);
2118
- const handleCapture = async () => {
2119
- const video = videoRef.current;
2120
- const canvas = canvasRef.current;
2121
- if (!video || !canvas) return;
2122
- setError(null);
2123
- setIsCapturing(true);
2124
- try {
2125
- video.pause();
2126
- canvas.width = video.videoWidth || 1280;
2127
- canvas.height = video.videoHeight || 720;
2128
- const ctx = canvas.getContext("2d");
2129
- if (!ctx) throw new Error("Canvas context unavailable");
2130
- ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
2131
- const blob = await new Promise(
2132
- (resolve) => canvas.toBlob(resolve, "image/jpeg", 0.9)
2133
- );
2134
- if (!blob) throw new Error(t("thumbnailError"));
2135
- const file = new File([blob], `thumbnail-${Date.now()}.jpg`, { type: "image/jpeg" });
2136
- const url = await onUpload(file);
2137
- onSelect(url);
2138
- onClose();
2139
- } catch (err) {
2140
- setError(err instanceof Error ? err.message : t("thumbnailError"));
2141
- } finally {
2142
- setIsCapturing(false);
2143
- }
2144
- };
2145
- return /* @__PURE__ */ jsx(Modal, { isOpen, onClose, title: t("thumbnailTitle"), size: "lg", children: /* @__PURE__ */ jsxs(Div, { className: "space-y-4", children: [
2146
- /* @__PURE__ */ jsx(Text, { variant: "secondary", className: "text-xs", children: t("thumbnailInstruction") }),
2147
- /* @__PURE__ */ jsx(Div, { className: "relative aspect-video overflow-hidden rounded-lg bg-black", children: /* @__PURE__ */ jsx(
2148
- "video",
2149
- {
2150
- ref: videoRef,
2151
- src: videoUrl,
2152
- className: "absolute inset-0 w-full h-full object-contain",
2153
- controls: true,
2154
- preload: "metadata"
2155
- }
2156
- ) }),
2157
- /* @__PURE__ */ jsx("canvas", { ref: canvasRef, className: "hidden", "aria-hidden": "true" }),
2158
- error && /* @__PURE__ */ jsx(Alert, { variant: "error", children: error }),
2159
- /* @__PURE__ */ jsxs(Div, { className: "flex items-center justify-end gap-2", children: [
2160
- /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", size: "sm", onClick: onClose, disabled: isCapturing, children: t("thumbnailSkip") }),
2161
- /* @__PURE__ */ jsx(
2162
- Button,
2163
- {
2164
- type: "button",
2165
- variant: "primary",
2166
- size: "sm",
2167
- onClick: handleCapture,
2168
- disabled: isCapturing,
2169
- children: isCapturing ? /* @__PURE__ */ jsxs(Span, { className: "flex items-center gap-2", children: [
2170
- /* @__PURE__ */ jsx(Spinner, { size: "sm" }),
2171
- t("thumbnailCapturing")
2172
- ] }) : t("thumbnailCapture")
2173
- }
2174
- )
2175
- ] })
2176
- ] }) });
2177
- }
2178
- function useCamera() {
2179
- const isSupported = typeof navigator !== "undefined" && typeof navigator.mediaDevices !== "undefined" && typeof navigator.mediaDevices.getUserMedia === "function";
2180
- const videoRef = useRef(null);
2181
- const streamRef = useRef(null);
2182
- const mediaRecorderRef = useRef(null);
2183
- const chunksRef = useRef([]);
2184
- const currentFacingModeRef = useRef("environment");
2185
- const stopRecordingResolveRef = useRef(null);
2186
- const [stream, setStream] = useState(null);
2187
- const [isActive, setIsActive] = useState(false);
2188
- const [isCapturing, setIsCapturing] = useState(false);
2189
- const [error, setError] = useState(null);
2190
- const stopCamera = useCallback(() => {
2191
- if (streamRef.current) {
2192
- streamRef.current.getTracks().forEach((t) => t.stop());
2193
- streamRef.current = null;
2194
- }
2195
- if (videoRef.current) {
2196
- videoRef.current.srcObject = null;
2197
- }
2198
- setStream(null);
2199
- setIsActive(false);
2200
- setIsCapturing(false);
2201
- }, []);
2202
- useEffect(() => {
2203
- return () => {
2204
- stopCamera();
2205
- };
2206
- }, [stopCamera]);
2207
- const startCamera = useCallback(
2208
- async (options) => {
2209
- var _a, _b;
2210
- if (!isSupported) {
2211
- setError("Camera is not supported on this device");
2212
- return;
2213
- }
2214
- setError(null);
2215
- stopCamera();
2216
- const facingMode = (_a = options == null ? void 0 : options.facingMode) != null ? _a : "environment";
2217
- currentFacingModeRef.current = facingMode;
2218
- const videoConstraints = (options == null ? void 0 : options.video) !== void 0 ? options.video : { facingMode };
2219
- try {
2220
- const mediaStream = await navigator.mediaDevices.getUserMedia({
2221
- video: videoConstraints,
2222
- audio: (_b = options == null ? void 0 : options.audio) != null ? _b : false
2223
- });
2224
- streamRef.current = mediaStream;
2225
- setStream(mediaStream);
2226
- setIsActive(true);
2227
- if (videoRef.current) {
2228
- videoRef.current.srcObject = mediaStream;
2229
- }
2230
- } catch (err) {
2231
- const message = err instanceof DOMException && err.name === "NotAllowedError" ? "Camera permission denied. Please allow access in your browser settings." : "Camera unavailable";
2232
- setError(message);
2233
- }
2234
- },
2235
- [isSupported, stopCamera]
2236
- );
2237
- const takePhoto = useCallback(() => {
2238
- const video = videoRef.current;
2239
- if (!video || !isActive) return null;
2240
- const canvas = document.createElement("canvas");
2241
- canvas.width = video.videoWidth;
2242
- canvas.height = video.videoHeight;
2243
- const ctx = canvas.getContext("2d");
2244
- if (!ctx) return null;
2245
- ctx.drawImage(video, 0, 0);
2246
- let result = null;
2247
- canvas.toBlob(
2248
- (blob) => {
2249
- result = blob;
2250
- },
2251
- "image/webp",
2252
- 0.92
2253
- );
2254
- return result;
2255
- }, [isActive]);
2256
- const startRecording = useCallback(() => {
2257
- if (!streamRef.current || !isActive) return;
2258
- chunksRef.current = [];
2259
- const recorder = new MediaRecorder(streamRef.current, {
2260
- mimeType: "video/webm"
2261
- });
2262
- recorder.ondataavailable = (e) => {
2263
- if (e.data.size > 0) chunksRef.current.push(e.data);
2264
- };
2265
- recorder.onstop = () => {
2266
- const blob = new Blob(chunksRef.current, { type: "video/webm" });
2267
- setIsCapturing(false);
2268
- if (stopRecordingResolveRef.current) {
2269
- stopRecordingResolveRef.current(blob);
2270
- stopRecordingResolveRef.current = null;
2271
- }
2272
- };
2273
- mediaRecorderRef.current = recorder;
2274
- recorder.start();
2275
- setIsCapturing(true);
2276
- }, [isActive]);
2277
- const stopRecording = useCallback(() => {
2278
- return new Promise((resolve) => {
2279
- stopRecordingResolveRef.current = resolve;
2280
- if (mediaRecorderRef.current && mediaRecorderRef.current.state !== "inactive") {
2281
- mediaRecorderRef.current.stop();
2282
- } else {
2283
- resolve(new Blob([], { type: "video/webm" }));
2284
- }
2285
- });
2286
- }, []);
2287
- const switchCamera = useCallback(async () => {
2288
- const next = currentFacingModeRef.current === "environment" ? "user" : "environment";
2289
- await startCamera({ facingMode: next });
2290
- }, [startCamera]);
2291
- return {
2292
- isSupported,
2293
- isActive,
2294
- isCapturing,
2295
- stream,
2296
- error,
2297
- videoRef,
2298
- startCamera,
2299
- stopCamera,
2300
- takePhoto,
2301
- startRecording,
2302
- stopRecording,
2303
- switchCamera
2304
- };
2305
- }
2306
-
2307
- // src/core/Logger.ts
2308
- var Logger = class _Logger {
2309
- constructor(options) {
2310
- this.logs = [];
2311
- this.levelPriority = {
2312
- debug: 0,
2313
- info: 1,
2314
- warn: 2,
2315
- error: 3
2316
- };
2317
- var _a, _b, _c, _d, _e;
2318
- const fileUrl = (_a = options == null ? void 0 : options.logFileUrl) != null ? _a : (options == null ? void 0 : options.enableFileLogging) ? "/api/logs/write" : void 0;
2319
- this.options = {
2320
- minLevel: (_b = options == null ? void 0 : options.minLevel) != null ? _b : "debug",
2321
- enableConsole: (_c = options == null ? void 0 : options.enableConsole) != null ? _c : true,
2322
- enableStorage: (_d = options == null ? void 0 : options.enableStorage) != null ? _d : false,
2323
- logFileUrl: fileUrl,
2324
- maxEntries: (_e = options == null ? void 0 : options.maxEntries) != null ? _e : 1e3,
2325
- sanitizer: options == null ? void 0 : options.sanitizer
2326
- };
2327
- }
2328
- /** Get singleton instance */
2329
- static getInstance(options) {
2330
- if (!_Logger.instance) {
2331
- _Logger.instance = new _Logger(options);
2332
- }
2333
- return _Logger.instance;
2334
- }
2335
- /** Set or update the data sanitizer (e.g., for PII redaction). */
2336
- static setSanitizer(fn) {
2337
- _Logger.getInstance().options.sanitizer = fn;
2338
- }
2339
- shouldLog(level) {
2340
- return this.levelPriority[level] >= this.levelPriority[this.options.minLevel];
2341
- }
2342
- addLog(level, message, data) {
2343
- if (!this.shouldLog(level)) return;
2344
- const sanitized = data && this.options.sanitizer ? this.options.sanitizer(data) : data;
2345
- const entry = {
2346
- level,
2347
- message,
2348
- timestamp: /* @__PURE__ */ new Date(),
2349
- data: sanitized
2350
- };
2351
- this.logs.push(entry);
2352
- if (this.logs.length > this.options.maxEntries) {
2353
- this.logs.shift();
2354
- }
2355
- if (this.options.enableConsole) {
2356
- this.logToConsole(entry);
2357
- }
2358
- if (this.options.enableStorage && typeof window !== "undefined") {
2359
- this.saveToStorage();
2360
- }
2361
- if (this.options.logFileUrl && level === "error") {
2362
- this.writeToFile(entry).catch(() => {
2363
- });
2364
- }
2365
- }
2366
- logToConsole(entry) {
2367
- const prefix = `[${entry.level.toUpperCase()}] ${entry.timestamp.toISOString()}`;
2368
- const message = `${prefix} ${entry.message}`;
2369
- switch (entry.level) {
2370
- case "debug":
2371
- console.debug(message, entry.data);
2372
- break;
2373
- case "info":
2374
- console.info(message, entry.data);
2375
- break;
2376
- case "warn":
2377
- console.warn(message, entry.data);
2378
- break;
2379
- case "error":
2380
- console.error(message, entry.data);
2381
- break;
2382
- }
2383
- }
2384
- saveToStorage() {
2385
- try {
2386
- localStorage.setItem("app_logs", JSON.stringify(this.logs));
2387
- } catch (e) {
2388
- }
2389
- }
2390
- async writeToFile(entry) {
2391
- if (typeof window === "undefined" || !this.options.logFileUrl) return;
2392
- try {
2393
- await fetch(this.options.logFileUrl, {
2394
- method: "POST",
2395
- headers: { "Content-Type": "application/json" },
2396
- body: JSON.stringify({
2397
- level: entry.level,
2398
- message: entry.message,
2399
- timestamp: entry.timestamp.toISOString(),
2400
- data: entry.data
2401
- })
2402
- });
2403
- } catch (e) {
2404
- }
2405
- }
2406
- debug(message, data) {
2407
- this.addLog("debug", message, data);
2408
- }
2409
- info(message, data) {
2410
- this.addLog("info", message, data);
2411
- }
2412
- warn(message, data) {
2413
- this.addLog("warn", message, data);
2414
- }
2415
- error(message, data) {
2416
- this.addLog("error", message, data);
2417
- }
2418
- getLogs(level) {
2419
- if (level) return this.logs.filter((log) => log.level === level);
2420
- return [...this.logs];
2421
- }
2422
- clear() {
2423
- this.logs = [];
2424
- if (this.options.enableStorage && typeof window !== "undefined") {
2425
- localStorage.removeItem("app_logs");
2426
- }
2427
- }
2428
- export() {
2429
- return JSON.stringify(this.logs, null, 2);
2430
- }
2431
- getStats() {
2432
- return {
2433
- debug: this.logs.filter((l) => l.level === "debug").length,
2434
- info: this.logs.filter((l) => l.level === "info").length,
2435
- warn: this.logs.filter((l) => l.level === "warn").length,
2436
- error: this.logs.filter((l) => l.level === "error").length
2437
- };
2438
- }
2439
- };
2440
- Logger.getInstance();
2441
-
2442
- // src/core/Queue.ts
2443
- Logger.getInstance();
2444
-
2445
- // src/core/StorageManager.ts
2446
- var sLogger = Logger.getInstance();
2447
- var _StorageManager = class _StorageManager {
2448
- constructor(prefix = "app_") {
2449
- this.prefix = prefix;
2450
- }
2451
- /**
2452
- * Get-or-create a StorageManager for the given prefix.
2453
- * Each prefix returns an independent instance.
2454
- */
2455
- static getInstance(prefix = "") {
2456
- if (!_StorageManager.instances.has(prefix)) {
2457
- _StorageManager.instances.set(prefix, new _StorageManager(prefix));
2458
- }
2459
- return _StorageManager.instances.get(prefix);
2460
- }
2461
- getStorage(type) {
2462
- try {
2463
- if (typeof window === "undefined") return null;
2464
- const storage = type === "local" ? window.localStorage : window.sessionStorage;
2465
- return storage != null ? storage : null;
2466
- } catch (e) {
2467
- return null;
2468
- }
2469
- }
2470
- generateKey(key) {
2471
- return `${this.prefix}${key}`;
2472
- }
2473
- set(key, value, options) {
2474
- var _a;
2475
- const storage = this.getStorage((_a = options == null ? void 0 : options.type) != null ? _a : "local");
2476
- if (!storage) return false;
2477
- try {
2478
- storage.setItem(this.generateKey(key), JSON.stringify(value));
2479
- return true;
2480
- } catch (error) {
2481
- sLogger.error("StorageManager.set error", { error });
2482
- return false;
2483
- }
2484
- }
2485
- get(key, options) {
2486
- var _a;
2487
- const storage = this.getStorage((_a = options == null ? void 0 : options.type) != null ? _a : "local");
2488
- if (!storage) return null;
2489
- try {
2490
- const item = storage.getItem(this.generateKey(key));
2491
- if (item === null) return null;
2492
- return JSON.parse(item);
2493
- } catch (error) {
2494
- sLogger.error("StorageManager.get error", { error });
2495
- return null;
2496
- }
2497
- }
2498
- remove(key, options) {
2499
- var _a;
2500
- const storage = this.getStorage((_a = options == null ? void 0 : options.type) != null ? _a : "local");
2501
- if (!storage) return false;
2502
- try {
2503
- storage.removeItem(this.generateKey(key));
2504
- return true;
2505
- } catch (error) {
2506
- sLogger.error("StorageManager.remove error", { error });
2507
- return false;
2508
- }
2509
- }
2510
- clear(options) {
2511
- var _a;
2512
- const storage = this.getStorage((_a = options == null ? void 0 : options.type) != null ? _a : "local");
2513
- if (!storage) return false;
2514
- try {
2515
- const keys = Object.keys(storage);
2516
- keys.forEach((k) => {
2517
- if (k.startsWith(this.prefix)) storage.removeItem(k);
2518
- });
2519
- return true;
2520
- } catch (error) {
2521
- sLogger.error("StorageManager.clear error", { error });
2522
- return false;
2523
- }
2524
- }
2525
- has(key, options) {
2526
- return this.get(key, options) !== null;
2527
- }
2528
- keys(options) {
2529
- var _a;
2530
- const storage = this.getStorage((_a = options == null ? void 0 : options.type) != null ? _a : "local");
2531
- if (!storage) return [];
2532
- const result = [];
2533
- for (let i = 0; i < storage.length; i++) {
2534
- const k = storage.key(i);
2535
- if (k == null ? void 0 : k.startsWith(this.prefix)) {
2536
- result.push(k.slice(this.prefix.length));
2537
- }
2538
- }
2539
- return result;
2540
- }
2541
- size(options) {
2542
- var _a, _b;
2543
- const storage = this.getStorage((_a = options == null ? void 0 : options.type) != null ? _a : "local");
2544
- if (!storage) return 0;
2545
- let bytes = 0;
2546
- for (let i = 0; i < storage.length; i++) {
2547
- const k = storage.key(i);
2548
- if (k == null ? void 0 : k.startsWith(this.prefix)) {
2549
- const v = storage.getItem(k);
2550
- bytes += k.length + ((_b = v == null ? void 0 : v.length) != null ? _b : 0);
2551
- }
2552
- }
2553
- return bytes;
2554
- }
2555
- isAvailable(type = "local") {
2556
- const storage = this.getStorage(type);
2557
- if (!storage) return false;
2558
- try {
2559
- const testKey = "__storage_test__";
2560
- storage.setItem(testKey, "1");
2561
- storage.removeItem(testKey);
2562
- return true;
2563
- } catch (e) {
2564
- return false;
2565
- }
2566
- }
2567
- getAll(options) {
2568
- var _a;
2569
- const storage = this.getStorage((_a = options == null ? void 0 : options.type) != null ? _a : "local");
2570
- if (!storage) return {};
2571
- const result = {};
2572
- for (let i = 0; i < storage.length; i++) {
2573
- const k = storage.key(i);
2574
- if (k == null ? void 0 : k.startsWith(this.prefix)) {
2575
- const v = this.get(k.slice(this.prefix.length), options);
2576
- if (v !== null) result[k.slice(this.prefix.length)] = v;
2577
- }
2578
- }
2579
- return result;
2580
- }
2581
- };
2582
- /** Per-prefix instance map — prevents namespace collisions */
2583
- _StorageManager.instances = /* @__PURE__ */ new Map();
2584
- var StorageManager = _StorageManager;
2585
- StorageManager.getInstance("");
2586
-
2587
- // src/core/EventBus.ts
2588
- Logger.getInstance();
2589
-
2590
- // src/security/authorization.ts
2591
- init_errors();
2592
-
2593
- // src/monitoring/client-logger.ts
2594
- init_errors();
2595
-
2596
- // src/monitoring/server-logger.ts
2597
- init_errors();
2598
- function CameraCapture({
2599
- mode,
2600
- facingMode = "environment",
2601
- onCapture,
2602
- onError,
2603
- className
2604
- }) {
2605
- const t = useTranslations("camera");
2606
- const camera = useCamera();
2607
- const [isStarting, setIsStarting] = useState(false);
2608
- const [hasMultipleCameras, setHasMultipleCameras] = useState(false);
2609
- useEffect(() => {
2610
- let cancelled = false;
2611
- async function init() {
2612
- var _a;
2613
- setIsStarting(true);
2614
- if (typeof navigator !== "undefined" && ((_a = navigator.mediaDevices) == null ? void 0 : _a.enumerateDevices)) {
2615
- const devices = await navigator.mediaDevices.enumerateDevices();
2616
- if (!cancelled) {
2617
- setHasMultipleCameras(
2618
- devices.filter((d) => d.kind === "videoinput").length > 1
2619
- );
2620
- }
2621
- }
2622
- await camera.startCamera({
2623
- facingMode,
2624
- audio: mode === "video" || mode === "both"
2625
- });
2626
- if (!cancelled) setIsStarting(false);
2627
- }
2628
- void init();
2629
- return () => {
2630
- cancelled = true;
2631
- };
2632
- }, []);
2633
- useEffect(() => {
2634
- if (camera.error && onError) onError(camera.error);
2635
- }, [camera.error, onError]);
2636
- const handleTakePhoto = () => {
2637
- const blob = camera.takePhoto();
2638
- if (blob) onCapture(blob, "photo");
2639
- };
2640
- const handleStopRecording = async () => {
2641
- const blob = await camera.stopRecording();
2642
- onCapture(blob, "video");
2643
- };
2644
- const showPhotoButton = mode === "photo" || mode === "both";
2645
- const showVideoButton = mode === "video" || mode === "both";
2646
- return /* @__PURE__ */ jsxs(
2647
- Div,
2648
- {
2649
- className: `relative rounded-xl overflow-hidden bg-black ${className != null ? className : ""}`,
2650
- children: [
2651
- /* @__PURE__ */ jsx(
2652
- "video",
2653
- {
2654
- ref: camera.videoRef,
2655
- autoPlay: true,
2656
- muted: true,
2657
- playsInline: true,
2658
- className: "w-full aspect-video object-cover"
2659
- }
2660
- ),
2661
- isStarting && /* @__PURE__ */ jsx(Div, { className: "absolute inset-0 flex items-center justify-center bg-black/60", children: /* @__PURE__ */ jsxs(Div, { className: "flex flex-col items-center gap-2", children: [
2662
- /* @__PURE__ */ jsx(Spinner, {}),
2663
- /* @__PURE__ */ jsx(Span, { className: "text-white text-sm", children: t("starting") })
2664
- ] }) }),
2665
- camera.error && /* @__PURE__ */ jsx(Div, { className: "absolute top-2 left-2 right-2", children: /* @__PURE__ */ jsx(Alert, { variant: "error", children: camera.error }) }),
2666
- !isStarting && !camera.error && camera.isActive && /* @__PURE__ */ jsxs(Div, { className: "absolute bottom-0 left-0 right-0 p-3 bg-black/40 flex items-center justify-center gap-3", children: [
2667
- showPhotoButton && /* @__PURE__ */ jsx(
2668
- Button,
2669
- {
2670
- variant: "secondary",
2671
- onClick: handleTakePhoto,
2672
- "aria-label": t("takePhoto"),
2673
- disabled: camera.isCapturing,
2674
- children: t("takePhoto")
2675
- }
2676
- ),
2677
- showVideoButton && /* @__PURE__ */ jsx(
2678
- Button,
2679
- {
2680
- variant: camera.isCapturing ? "danger" : "secondary",
2681
- onClick: camera.isCapturing ? handleStopRecording : () => camera.startRecording(),
2682
- "aria-label": camera.isCapturing ? t("stopRecording") : t("startRecording"),
2683
- children: camera.isCapturing ? t("stopRecording") : t("startRecording")
2684
- }
2685
- ),
2686
- hasMultipleCameras && /* @__PURE__ */ jsx(
2687
- Button,
2688
- {
2689
- variant: "outline",
2690
- onClick: () => void camera.switchCamera(),
2691
- "aria-label": t("flipCamera"),
2692
- disabled: camera.isCapturing,
2693
- children: t("flipCamera")
2694
- }
2695
- )
2696
- ] })
2697
- ]
2698
- }
2699
- );
2700
- }
2701
- function formatFileSize(bytes) {
2702
- if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)}KB`;
2703
- return `${(bytes / (1024 * 1024)).toFixed(2)}MB`;
2704
- }
2705
- function ImageUpload({
2706
- currentImage,
2707
- onUpload,
2708
- onChange,
2709
- accept = "image/jpeg,image/png,image/gif,image/webp",
2710
- maxSizeMB = 10,
2711
- label = "Upload Image",
2712
- helperText,
2713
- captureSource = "both",
2714
- enableCrop = true,
2715
- onCropDataChange
2716
- }) {
2717
- const [uploading, setUploading] = useState(false);
2718
- const [preview, setPreview] = useState(currentImage || "");
2719
- const [error, setError] = useState("");
2720
- const [progress, setProgress] = useState(0);
2721
- const [showCropModal, setShowCropModal] = useState(false);
2722
- const [cropPreviewUrl, setCropPreviewUrl] = useState(null);
2723
- const [pendingFile, setPendingFile] = useState(null);
2724
- const [captureMode, setCaptureMode] = useState("file");
2725
- const fileInputRef = useRef(null);
2726
- const mobileCaptureRef = useRef(null);
2727
- const t = useTranslations("camera");
2728
- const tUpload = useTranslations("upload");
2729
- const tMediaEditor = useTranslations("mediaEditor");
2730
- const { isSupported: isCameraSupported } = useCamera();
2731
- const showCamera = captureSource === "camera-only" || captureSource === "both" && captureMode === "camera";
2732
- const showFileInput = captureSource === "file-only" || captureSource === "both" && captureMode === "file";
2733
- const performUpload = async (file, cropData) => {
2734
- try {
2735
- setUploading(true);
2736
- setProgress(30);
2737
- const url = await onUpload(file);
2738
- setProgress(100);
2739
- setPreview(url);
2740
- onChange == null ? void 0 : onChange(url);
2741
- if (cropData) onCropDataChange == null ? void 0 : onCropDataChange(cropData);
2742
- } catch (err) {
2743
- const message = err instanceof Error ? err.message : "Upload failed";
2744
- setError(message);
2745
- setPreview(currentImage || "");
2746
- } finally {
2747
- setUploading(false);
2748
- setProgress(0);
2749
- }
2750
- };
2751
- const prepareFile = (file) => {
2752
- if (!enableCrop) {
2753
- void performUpload(file);
2754
- return;
2755
- }
2756
- const reader = new FileReader();
2757
- reader.onload = (event) => {
2758
- var _a;
2759
- if ((_a = event.target) == null ? void 0 : _a.result) {
2760
- setCropPreviewUrl(event.target.result);
2761
- setPendingFile(file);
2762
- setShowCropModal(true);
2763
- }
2764
- };
2765
- reader.readAsDataURL(file);
2766
- };
2767
- const handleCropSave = (cropData) => {
2768
- setShowCropModal(false);
2769
- if (pendingFile) void performUpload(pendingFile, cropData);
2770
- setCropPreviewUrl(null);
2771
- setPendingFile(null);
2772
- };
2773
- const handleCropClose = () => {
2774
- setShowCropModal(false);
2775
- setCropPreviewUrl(null);
2776
- if (pendingFile) {
2777
- void performUpload(pendingFile);
2778
- setPendingFile(null);
2779
- }
2780
- };
2781
- const handleCameraCapture = (blob) => {
2782
- const file = new File([blob], "camera-capture.webp", {
2783
- type: "image/webp"
2784
- });
2785
- setError("");
2786
- setProgress(0);
2787
- prepareFile(file);
2788
- };
2789
- const handleFileChange = (e) => {
2790
- var _a;
2791
- const file = (_a = e.target.files) == null ? void 0 : _a[0];
2792
- if (!file) return;
2793
- setError("");
2794
- setProgress(0);
2795
- const fileSizeMB = file.size / 1024 / 1024;
2796
- if (fileSizeMB > maxSizeMB) {
2797
- setError(
2798
- `File size must be less than ${maxSizeMB}MB (current: ${formatFileSize(file.size)})`
2799
- );
2800
- return;
2801
- }
2802
- const acceptedTypes = accept.split(",").map((t2) => t2.trim());
2803
- if (!acceptedTypes.includes(file.type)) {
2804
- setError(`Invalid file type. Accepted: ${accept}`);
2805
- return;
2806
- }
2807
- prepareFile(file);
2808
- };
2809
- const handleRemove = () => {
2810
- setPreview("");
2811
- setError("");
2812
- if (fileInputRef.current) fileInputRef.current.value = "";
2813
- onChange == null ? void 0 : onChange("");
2814
- };
2815
- return /* @__PURE__ */ jsxs(Div, { className: "space-y-3", children: [
2816
- label && /* @__PURE__ */ jsx(Label, { className: "block text-sm font-medium text-zinc-600 dark:text-zinc-400", children: label }),
2817
- /* @__PURE__ */ jsx(Div, { className: "relative", children: preview ? /* @__PURE__ */ jsxs(Div, { className: "space-y-2", children: [
2818
- /* @__PURE__ */ jsxs(Div, { className: "relative aspect-[16/9] overflow-hidden rounded-xl border-2 border-zinc-200 dark:border-zinc-700", children: [
2819
- /* @__PURE__ */ jsx(MediaImage, { src: preview, alt: "Preview", size: "card" }),
2820
- uploading && progress > 0 && /* @__PURE__ */ jsx(Div, { className: "absolute inset-x-0 bottom-0", children: /* @__PURE__ */ jsx(Progress, { value: progress, size: "sm" }) })
2821
- ] }),
2822
- !uploading && /* @__PURE__ */ jsxs(Row, { wrap: true, gap: "sm", children: [
2823
- enableCrop && /* @__PURE__ */ jsx(
2824
- Button,
2825
- {
2826
- type: "button",
2827
- onClick: () => {
2828
- setCropPreviewUrl(preview);
2829
- setShowCropModal(true);
2830
- },
2831
- variant: "secondary",
2832
- size: "sm",
2833
- children: tMediaEditor("editImage")
2834
- }
2835
- ),
2836
- /* @__PURE__ */ jsx(
2837
- Button,
2838
- {
2839
- type: "button",
2840
- onClick: () => {
2841
- var _a;
2842
- return (_a = fileInputRef.current) == null ? void 0 : _a.click();
2843
- },
2844
- variant: "outline",
2845
- size: "sm",
2846
- children: tUpload("change")
2847
- }
2848
- ),
2849
- /* @__PURE__ */ jsx(
2850
- Button,
2851
- {
2852
- type: "button",
2853
- onClick: handleRemove,
2854
- variant: "danger",
2855
- size: "sm",
2856
- children: tUpload("remove")
2857
- }
2858
- )
2859
- ] })
2860
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
2861
- captureSource === "both" && isCameraSupported && /* @__PURE__ */ jsxs(Div, { className: "flex items-center justify-center gap-2 mb-3", children: [
2862
- /* @__PURE__ */ jsx(
2863
- Button,
2864
- {
2865
- type: "button",
2866
- variant: captureMode === "file" ? "primary" : "outline",
2867
- size: "sm",
2868
- onClick: () => setCaptureMode("file"),
2869
- children: t("switchToUpload")
2870
- }
2871
- ),
2872
- /* @__PURE__ */ jsx(
2873
- Button,
2874
- {
2875
- type: "button",
2876
- variant: captureMode === "camera" ? "primary" : "outline",
2877
- size: "sm",
2878
- onClick: () => setCaptureMode("camera"),
2879
- children: t("switchToCamera")
2880
- }
2881
- )
2882
- ] }),
2883
- showCamera && isCameraSupported && /* @__PURE__ */ jsx(
2884
- CameraCapture,
2885
- {
2886
- mode: "photo",
2887
- facingMode: "environment",
2888
- onCapture: handleCameraCapture,
2889
- onError: setError
2890
- }
2891
- ),
2892
- showCamera && !isCameraSupported && /* @__PURE__ */ jsx(
2893
- Button,
2894
- {
2895
- type: "button",
2896
- onClick: () => {
2897
- var _a;
2898
- return (_a = mobileCaptureRef.current) == null ? void 0 : _a.click();
2899
- },
2900
- disabled: uploading,
2901
- variant: "ghost",
2902
- className: "w-full aspect-[16/9] border-2 border-dashed border-zinc-200 dark:border-zinc-700 rounded-xl flex items-center justify-center flex-col text-zinc-500 dark:text-zinc-400",
2903
- children: /* @__PURE__ */ jsx(Span, { className: "text-sm font-medium", children: t("switchToCamera") })
2904
- }
2905
- ),
2906
- showFileInput && /* @__PURE__ */ jsxs(
2907
- Button,
2908
- {
2909
- type: "button",
2910
- onClick: () => {
2911
- var _a;
2912
- return (_a = fileInputRef.current) == null ? void 0 : _a.click();
2913
- },
2914
- disabled: uploading,
2915
- variant: "ghost",
2916
- className: "w-full aspect-[16/9] border-2 border-dashed border-zinc-200 dark:border-zinc-700 rounded-xl flex items-center justify-center flex-col text-zinc-500 dark:text-zinc-400",
2917
- children: [
2918
- /* @__PURE__ */ jsx(
2919
- "svg",
2920
- {
2921
- className: "w-12 h-12 mb-3",
2922
- fill: "none",
2923
- stroke: "currentColor",
2924
- viewBox: "0 0 24 24",
2925
- "aria-hidden": "true",
2926
- children: /* @__PURE__ */ jsx(
2927
- "path",
2928
- {
2929
- strokeLinecap: "round",
2930
- strokeLinejoin: "round",
2931
- strokeWidth: 1.5,
2932
- d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"
2933
- }
2934
- )
2935
- }
2936
- ),
2937
- /* @__PURE__ */ jsx(Span, { className: "text-sm font-medium", children: uploading ? tUpload("uploading") : tUpload("clickToUpload") }),
2938
- /* @__PURE__ */ jsxs(Span, { className: "text-xs mt-1", children: [
2939
- accept.split(",").map((t2) => {
2940
- var _a, _b;
2941
- return (_b = (_a = t2.split("/")[1]) == null ? void 0 : _a.toUpperCase()) != null ? _b : t2;
2942
- }).join(", "),
2943
- " ",
2944
- "(max ",
2945
- maxSizeMB,
2946
- "MB)"
2947
- ] })
2948
- ]
2949
- }
2950
- )
2951
- ] }) }),
2952
- /* @__PURE__ */ jsx(
2953
- "input",
2954
- {
2955
- ref: fileInputRef,
2956
- type: "file",
2957
- accept,
2958
- onChange: handleFileChange,
2959
- className: "hidden",
2960
- "aria-hidden": "true"
2961
- }
2962
- ),
2963
- showCamera && !isCameraSupported && /* @__PURE__ */ jsx(
2964
- "input",
2965
- {
2966
- ref: mobileCaptureRef,
2967
- type: "file",
2968
- accept: "image/*",
2969
- capture: "environment",
2970
- onChange: handleFileChange,
2971
- className: "hidden",
2972
- "aria-hidden": "true"
2973
- }
2974
- ),
2975
- helperText && !error && /* @__PURE__ */ jsx(Text, { variant: "secondary", size: "xs", children: helperText }),
2976
- error && /* @__PURE__ */ jsx(Alert, { variant: "error", children: error }),
2977
- uploading && /* @__PURE__ */ jsxs(Div, { className: "flex items-center gap-2", children: [
2978
- /* @__PURE__ */ jsx(Spinner, { size: "sm" }),
2979
- /* @__PURE__ */ jsx(Text, { size: "sm", variant: "secondary", children: tUpload("uploadingProgress", { progress }) })
2980
- ] }),
2981
- cropPreviewUrl && /* @__PURE__ */ jsx(
2982
- ImageCropModal,
2983
- {
2984
- isOpen: showCropModal,
2985
- imageUrl: cropPreviewUrl,
2986
- onClose: handleCropClose,
2987
- onSave: handleCropSave
2988
- }
2989
- )
2990
- ] });
2991
- }
2992
- var mediaFieldSchema = z.object({
2993
- url: z.string().url(),
2994
- type: z.enum(["image", "video", "file"]),
2995
- alt: z.string().optional(),
2996
- thumbnailUrl: z.string().url().optional()
2997
- });
2998
- function coerceMediaField(value, fallbackType = "image") {
2999
- if (!value) {
3000
- return null;
3001
- }
3002
- if (typeof value === "string") {
3003
- return {
3004
- url: value,
3005
- type: fallbackType
3006
- };
3007
- }
3008
- return value;
3009
- }
3010
- function coerceMediaFieldArray(values, fallbackType = "image") {
3011
- if (!values || values.length === 0) {
3012
- return [];
3013
- }
3014
- return values.map((value) => coerceMediaField(value, fallbackType)).filter((value) => value !== null);
3015
- }
3016
- function getMediaUrl(value) {
3017
- var _a;
3018
- return (_a = coerceMediaField(value)) == null ? void 0 : _a.url;
3019
- }
3020
- function inferMediaTypeFromMime(mimeType, url) {
3021
- if (mimeType == null ? void 0 : mimeType.startsWith("image/")) return "image";
3022
- if (mimeType == null ? void 0 : mimeType.startsWith("video/")) return "video";
3023
- if (url) {
3024
- if (/\.(jpe?g|png|gif|webp|svg)(\?|$)/i.test(url)) return "image";
3025
- if (/\.(mp4|webm|ogg|mov|avi)(\?|$)/i.test(url)) return "video";
3026
- }
3027
- return "file";
3028
- }
3029
- function isVideo(url) {
3030
- return /\.(mp4|webm|ogg|mov|avi)(\?|$)/i.test(url);
3031
- }
3032
- function isImage(url) {
3033
- return /\.(jpe?g|png|gif|webp|svg)(\?|$)/i.test(url);
3034
- }
3035
- function filenameFromUrl(url) {
3036
- try {
3037
- const parts = new URL(url).pathname.split("/");
3038
- return decodeURIComponent(parts[parts.length - 1] || url);
3039
- } catch (e) {
3040
- return url;
3041
- }
3042
- }
3043
- function MediaUploadField({
3044
- label,
3045
- value,
3046
- onChange,
3047
- onChangeField,
3048
- onUpload,
3049
- accept = "*",
3050
- maxSizeMB = 50,
3051
- disabled = false,
3052
- helperText,
3053
- captureSource = "file-only",
3054
- captureMode = "photo",
3055
- enableTrim = true,
3056
- enableThumbnail = true,
3057
- onThumbnailChange,
3058
- onAbort,
3059
- onStagedUrlsChange,
3060
- isPersisted = false
3061
- }) {
3062
- const [isLoading, setIsLoading] = useState(false);
3063
- const [error, setError] = useState(null);
3064
- const [pendingVideoUrl, setPendingVideoUrl] = useState(null);
3065
- const [showTrimModal, setShowTrimModal] = useState(false);
3066
- const [showThumbnailModal, setShowThumbnailModal] = useState(false);
3067
- const [inputMode, setInputMode] = useState("file");
3068
- const fileInputRef = useRef(null);
3069
- const mobileCaptureRef = useRef(null);
3070
- const stagedUrlsRef = useRef([]);
3071
- const onAbortRef = useRef(onAbort);
3072
- const onStagedUrlsChangeRef = useRef(onStagedUrlsChange);
3073
- const isPersistedRef = useRef(isPersisted);
3074
- useEffect(() => {
3075
- onAbortRef.current = onAbort;
3076
- }, [onAbort]);
3077
- useEffect(() => {
3078
- onStagedUrlsChangeRef.current = onStagedUrlsChange;
3079
- }, [onStagedUrlsChange]);
3080
- useEffect(() => {
3081
- isPersistedRef.current = isPersisted;
3082
- }, [isPersisted]);
3083
- useEffect(() => {
3084
- return () => {
3085
- var _a;
3086
- if (!isPersistedRef.current && stagedUrlsRef.current.length > 0) {
3087
- (_a = onAbortRef.current) == null ? void 0 : _a.call(onAbortRef, [...stagedUrlsRef.current]);
3088
- }
3089
- };
3090
- }, []);
3091
- const emitStaged = () => {
3092
- var _a;
3093
- (_a = onStagedUrlsChangeRef.current) == null ? void 0 : _a.call(onStagedUrlsChangeRef, [...stagedUrlsRef.current]);
3094
- };
3095
- const stageUrl = (url) => {
3096
- if (!stagedUrlsRef.current.includes(url)) {
3097
- stagedUrlsRef.current.push(url);
3098
- emitStaged();
3099
- }
3100
- };
3101
- const unstageUrl = (url) => {
3102
- const next = stagedUrlsRef.current.filter((u) => u !== url);
3103
- if (next.length !== stagedUrlsRef.current.length) {
3104
- stagedUrlsRef.current = next;
3105
- emitStaged();
3106
- }
3107
- };
3108
- const t = useTranslations("camera");
3109
- const tUpload = useTranslations("upload");
3110
- const tMediaEditor = useTranslations("mediaEditor");
3111
- const { isSupported: isCameraSupported } = useCamera();
3112
- const showCamera = captureSource === "camera-only" || captureSource === "both" && inputMode === "camera";
3113
- const showFileInput = captureSource === "file-only" || captureSource === "both" && inputMode === "file";
3114
- const captureModeAccept = captureMode === "video" ? "video/*" : captureMode === "both" ? "image/*,video/*" : "image/*";
3115
- const afterUpload = (url, fileType) => {
3116
- onChangeField == null ? void 0 : onChangeField({
3117
- url,
3118
- type: inferMediaTypeFromMime(fileType, url)
3119
- });
3120
- const isVideoFile = fileType.startsWith("video/");
3121
- if (isVideoFile && enableTrim) {
3122
- setPendingVideoUrl(url);
3123
- setShowTrimModal(true);
3124
- return;
3125
- }
3126
- if (isVideoFile && enableThumbnail) {
3127
- setPendingVideoUrl(url);
3128
- setShowThumbnailModal(true);
3129
- return;
3130
- }
3131
- onChange(url);
3132
- };
3133
- const handleTrimSave = (trimmedUrl) => {
3134
- setShowTrimModal(false);
3135
- if (enableThumbnail) {
3136
- setPendingVideoUrl(trimmedUrl);
3137
- setShowThumbnailModal(true);
3138
- } else {
3139
- onChange(trimmedUrl);
3140
- setPendingVideoUrl(null);
3141
- }
3142
- };
3143
- const handleTrimClose = () => {
3144
- setShowTrimModal(false);
3145
- if (enableThumbnail && pendingVideoUrl) {
3146
- setShowThumbnailModal(true);
3147
- } else {
3148
- if (pendingVideoUrl) onChange(pendingVideoUrl);
3149
- setPendingVideoUrl(null);
3150
- }
3151
- };
3152
- const handleThumbnailSelect = (thumbUrl) => {
3153
- setShowThumbnailModal(false);
3154
- if (pendingVideoUrl) onChange(pendingVideoUrl);
3155
- onThumbnailChange == null ? void 0 : onThumbnailChange(thumbUrl);
3156
- setPendingVideoUrl(null);
3157
- };
3158
- const handleThumbnailClose = () => {
3159
- setShowThumbnailModal(false);
3160
- if (pendingVideoUrl) onChange(pendingVideoUrl);
3161
- setPendingVideoUrl(null);
3162
- };
3163
- const handleFileChange = async (e) => {
3164
- var _a;
3165
- const file = (_a = e.target.files) == null ? void 0 : _a[0];
3166
- if (!file) return;
3167
- const fileSizeMB = file.size / 1024 / 1024;
3168
- if (fileSizeMB > maxSizeMB) {
3169
- setError(`File size must be less than ${maxSizeMB}MB`);
3170
- return;
3171
- }
3172
- setError(null);
3173
- setIsLoading(true);
3174
- try {
3175
- const url = await onUpload(file);
3176
- stageUrl(url);
3177
- afterUpload(url, file.type);
3178
- } catch (err) {
3179
- setError(err instanceof Error ? err.message : "Upload failed");
3180
- } finally {
3181
- setIsLoading(false);
3182
- if (fileInputRef.current) fileInputRef.current.value = "";
3183
- }
3184
- };
3185
- const handleRemove = () => {
3186
- var _a;
3187
- if (value && stagedUrlsRef.current.includes(value)) {
3188
- (_a = onAbortRef.current) == null ? void 0 : _a.call(onAbortRef, [value]);
3189
- unstageUrl(value);
3190
- }
3191
- onChange("");
3192
- onChangeField == null ? void 0 : onChangeField(null);
3193
- setError(null);
3194
- };
3195
- const handleCameraCapture = async (blob, type) => {
3196
- const ext = type === "video" ? "webm" : "webp";
3197
- const file = new File([blob], `camera-capture.${ext}`, { type: blob.type });
3198
- setError(null);
3199
- setIsLoading(true);
3200
- try {
3201
- const url = await onUpload(file);
3202
- stageUrl(url);
3203
- afterUpload(url, blob.type);
3204
- } catch (err) {
3205
- setError(err instanceof Error ? err.message : "Upload failed");
3206
- } finally {
3207
- setIsLoading(false);
3208
- }
3209
- };
3210
- return /* @__PURE__ */ jsxs(Div, { className: "space-y-2", children: [
3211
- /* @__PURE__ */ jsx(Label, { className: "block text-sm font-medium text-zinc-600 dark:text-zinc-400", children: label }),
3212
- value && !isLoading && /* @__PURE__ */ jsxs(Div, { className: "rounded-lg border border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-900 p-3", children: [
3213
- isVideo(value) ? /* @__PURE__ */ jsx(Div, { className: "relative aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
3214
- MediaVideo,
3215
- {
3216
- src: value,
3217
- alt: label,
3218
- controls: true,
3219
- objectFit: "contain"
3220
- }
3221
- ) }) : isImage(value) ? /* @__PURE__ */ jsx(Div, { className: "relative aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
3222
- MediaImage,
3223
- {
3224
- src: value,
3225
- alt: label,
3226
- size: "card",
3227
- objectFit: "contain"
3228
- }
3229
- ) }) : /* @__PURE__ */ jsx(
3230
- "a",
3231
- {
3232
- href: value,
3233
- target: "_blank",
3234
- rel: "noopener noreferrer",
3235
- className: "text-sm underline break-all text-blue-600 dark:text-blue-400",
3236
- children: filenameFromUrl(value)
3237
- }
3238
- ),
3239
- !disabled && /* @__PURE__ */ jsxs(Row, { wrap: true, gap: "sm", className: "mt-2", children: [
3240
- isVideo(value) && (enableTrim || enableThumbnail) && /* @__PURE__ */ jsx(
3241
- Button,
3242
- {
3243
- type: "button",
3244
- onClick: () => {
3245
- setPendingVideoUrl(value);
3246
- if (enableTrim) setShowTrimModal(true);
3247
- else setShowThumbnailModal(true);
3248
- },
3249
- variant: "secondary",
3250
- size: "sm",
3251
- children: tMediaEditor("editVideo")
3252
- }
3253
- ),
3254
- /* @__PURE__ */ jsx(
3255
- Button,
3256
- {
3257
- type: "button",
3258
- onClick: handleRemove,
3259
- variant: "danger",
3260
- size: "sm",
3261
- children: tUpload("remove")
3262
- }
3263
- )
3264
- ] })
3265
- ] }),
3266
- !disabled && !isLoading && /* @__PURE__ */ jsxs(Fragment, { children: [
3267
- captureSource === "both" && isCameraSupported && /* @__PURE__ */ jsxs(Div, { className: "flex items-center gap-2", children: [
3268
- /* @__PURE__ */ jsx(
3269
- Button,
3270
- {
3271
- type: "button",
3272
- variant: inputMode === "file" ? "primary" : "outline",
3273
- size: "sm",
3274
- onClick: () => setInputMode("file"),
3275
- children: t("switchToUpload")
3276
- }
3277
- ),
3278
- /* @__PURE__ */ jsx(
3279
- Button,
3280
- {
3281
- type: "button",
3282
- variant: inputMode === "camera" ? "primary" : "outline",
3283
- size: "sm",
3284
- onClick: () => setInputMode("camera"),
3285
- children: t("switchToCamera")
3286
- }
3287
- )
3288
- ] }),
3289
- showCamera && isCameraSupported && /* @__PURE__ */ jsx(
3290
- CameraCapture,
3291
- {
3292
- mode: captureMode,
3293
- facingMode: "environment",
3294
- onCapture: handleCameraCapture,
3295
- onError: (msg) => setError(msg)
3296
- }
3297
- ),
3298
- showCamera && !isCameraSupported && /* @__PURE__ */ jsx(
3299
- Button,
3300
- {
3301
- type: "button",
3302
- onClick: () => {
3303
- var _a;
3304
- return (_a = mobileCaptureRef.current) == null ? void 0 : _a.click();
3305
- },
3306
- variant: "ghost",
3307
- className: "w-full py-3 border-2 border-dashed border-zinc-200 dark:border-zinc-700 rounded-xl text-sm text-zinc-500 dark:text-zinc-400",
3308
- children: t("switchToCamera")
3309
- }
3310
- ),
3311
- showFileInput && /* @__PURE__ */ jsx(
3312
- Button,
3313
- {
3314
- type: "button",
3315
- onClick: () => {
3316
- var _a;
3317
- return (_a = fileInputRef.current) == null ? void 0 : _a.click();
3318
- },
3319
- variant: "ghost",
3320
- className: "w-full py-3 border-2 border-dashed border-zinc-200 dark:border-zinc-700 rounded-xl text-sm text-zinc-500 dark:text-zinc-400",
3321
- children: value ? tUpload("replaceFile") : tUpload("chooseFile")
3322
- }
3323
- )
3324
- ] }),
3325
- isLoading && /* @__PURE__ */ jsxs(Div, { className: "flex items-center gap-2", children: [
3326
- /* @__PURE__ */ jsx(Spinner, { size: "sm" }),
3327
- /* @__PURE__ */ jsx(Text, { size: "sm", variant: "secondary", children: tUpload("uploading") })
3328
- ] }),
3329
- /* @__PURE__ */ jsx(
3330
- "input",
3331
- {
3332
- ref: fileInputRef,
3333
- type: "file",
3334
- accept,
3335
- onChange: handleFileChange,
3336
- className: "hidden",
3337
- "aria-hidden": "true"
3338
- }
3339
- ),
3340
- showCamera && !isCameraSupported && /* @__PURE__ */ jsx(
3341
- "input",
3342
- {
3343
- ref: mobileCaptureRef,
3344
- type: "file",
3345
- accept: captureModeAccept,
3346
- capture: "environment",
3347
- onChange: handleFileChange,
3348
- className: "hidden",
3349
- "aria-hidden": "true"
3350
- }
3351
- ),
3352
- helperText && !error && /* @__PURE__ */ jsx(Text, { variant: "secondary", size: "xs", children: helperText }),
3353
- error && /* @__PURE__ */ jsx(Alert, { variant: "error", children: error }),
3354
- pendingVideoUrl && /* @__PURE__ */ jsx(
3355
- VideoTrimModal,
3356
- {
3357
- isOpen: showTrimModal,
3358
- videoUrl: pendingVideoUrl,
3359
- onClose: handleTrimClose,
3360
- onSave: handleTrimSave
3361
- }
3362
- ),
3363
- pendingVideoUrl && /* @__PURE__ */ jsx(
3364
- VideoThumbnailSelector,
3365
- {
3366
- isOpen: showThumbnailModal,
3367
- videoUrl: pendingVideoUrl,
3368
- onClose: handleThumbnailClose,
3369
- onSelect: handleThumbnailSelect,
3370
- onUpload
3371
- }
3372
- )
3373
- ] });
3374
- }
3375
- function fileNameFromUrl(url) {
3376
- try {
3377
- const parts = new URL(url).pathname.split("/");
3378
- return decodeURIComponent(parts[parts.length - 1] || url);
3379
- } catch (e) {
3380
- return url;
3381
- }
3382
- }
3383
- function MediaUploadList({
3384
- label,
3385
- value,
3386
- onChange,
3387
- onUpload,
3388
- accept = "image/*,video/*",
3389
- maxSizeMB = 50,
3390
- maxItems = 12,
3391
- disabled = false,
3392
- helperText,
3393
- onAbort,
3394
- onStagedUrlsChange,
3395
- isPersisted = false
3396
- }) {
3397
- const inputRef = useRef(null);
3398
- const [isLoading, setIsLoading] = useState(false);
3399
- const [error, setError] = useState(null);
3400
- const stagedUrlsRef = useRef([]);
3401
- const onAbortRef = useRef(onAbort);
3402
- const onStagedUrlsChangeRef = useRef(onStagedUrlsChange);
3403
- const isPersistedRef = useRef(isPersisted);
3404
- useEffect(() => {
3405
- onAbortRef.current = onAbort;
3406
- }, [onAbort]);
3407
- useEffect(() => {
3408
- onStagedUrlsChangeRef.current = onStagedUrlsChange;
3409
- }, [onStagedUrlsChange]);
3410
- useEffect(() => {
3411
- isPersistedRef.current = isPersisted;
3412
- }, [isPersisted]);
3413
- useEffect(() => {
3414
- return () => {
3415
- var _a;
3416
- if (!isPersistedRef.current && stagedUrlsRef.current.length > 0) {
3417
- (_a = onAbortRef.current) == null ? void 0 : _a.call(onAbortRef, [...stagedUrlsRef.current]);
3418
- }
3419
- };
3420
- }, []);
3421
- const emitStaged = () => {
3422
- var _a;
3423
- (_a = onStagedUrlsChangeRef.current) == null ? void 0 : _a.call(onStagedUrlsChangeRef, [...stagedUrlsRef.current]);
3424
- };
3425
- const stageUrl = (url) => {
3426
- if (!stagedUrlsRef.current.includes(url)) {
3427
- stagedUrlsRef.current.push(url);
3428
- emitStaged();
3429
- }
3430
- };
3431
- const unstageUrl = (url) => {
3432
- const next = stagedUrlsRef.current.filter((u) => u !== url);
3433
- if (next.length !== stagedUrlsRef.current.length) {
3434
- stagedUrlsRef.current = next;
3435
- emitStaged();
3436
- }
3437
- };
3438
- const handleFileChange = async (e) => {
3439
- var _a;
3440
- const files = Array.from((_a = e.target.files) != null ? _a : []);
3441
- if (files.length === 0) return;
3442
- if (value.length + files.length > maxItems) {
3443
- setError(`You can upload up to ${maxItems} files.`);
3444
- e.currentTarget.value = "";
3445
- return;
3446
- }
3447
- setError(null);
3448
- setIsLoading(true);
3449
- try {
3450
- const uploaded = [];
3451
- for (const file of files) {
3452
- const sizeMb = file.size / 1024 / 1024;
3453
- if (sizeMb > maxSizeMB) {
3454
- throw new Error(`${file.name} exceeds ${maxSizeMB}MB`);
3455
- }
3456
- const url = await onUpload(file);
3457
- stageUrl(url);
3458
- uploaded.push({
3459
- url,
3460
- type: inferMediaTypeFromMime(file.type, url)
3461
- });
3462
- }
3463
- onChange([...value, ...uploaded]);
3464
- } catch (err) {
3465
- setError(err instanceof Error ? err.message : "Upload failed");
3466
- } finally {
3467
- setIsLoading(false);
3468
- e.currentTarget.value = "";
3469
- }
3470
- };
3471
- const removeAt = (index) => {
3472
- var _a;
3473
- const target = value[index];
3474
- if (!target) return;
3475
- const next = value.filter((_, i) => i !== index);
3476
- onChange(next);
3477
- if (stagedUrlsRef.current.includes(target.url)) {
3478
- (_a = onAbortRef.current) == null ? void 0 : _a.call(onAbortRef, [target.url]);
3479
- unstageUrl(target.url);
3480
- }
3481
- };
3482
- return /* @__PURE__ */ jsxs(Div, { className: "space-y-2", children: [
3483
- /* @__PURE__ */ jsx(Label, { className: "block text-sm font-medium text-zinc-600 dark:text-zinc-400", children: label }),
3484
- value.length > 0 && /* @__PURE__ */ jsx(Div, { className: "grid grid-cols-1 sm:grid-cols-2 gap-3", children: value.map((item, index) => /* @__PURE__ */ jsxs(
3485
- Div,
3486
- {
3487
- className: "rounded-lg border border-zinc-200 dark:border-zinc-700 bg-zinc-50 dark:bg-zinc-900 p-3",
3488
- children: [
3489
- item.type === "video" ? /* @__PURE__ */ jsx(Div, { className: "relative aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
3490
- MediaVideo,
3491
- {
3492
- src: item.url,
3493
- alt: item.alt || `Media ${index + 1}`,
3494
- controls: true
3495
- }
3496
- ) }) : item.type === "image" ? /* @__PURE__ */ jsx(Div, { className: "relative aspect-video overflow-hidden rounded-lg", children: /* @__PURE__ */ jsx(
3497
- MediaImage,
3498
- {
3499
- src: item.url,
3500
- alt: item.alt || `Media ${index + 1}`,
3501
- size: "card",
3502
- objectFit: "contain"
3503
- }
3504
- ) }) : /* @__PURE__ */ jsx(
3505
- "a",
3506
- {
3507
- href: item.url,
3508
- target: "_blank",
3509
- rel: "noopener noreferrer",
3510
- className: "text-sm underline break-all text-blue-600 dark:text-blue-400",
3511
- children: fileNameFromUrl(item.url)
3512
- }
3513
- ),
3514
- !disabled && /* @__PURE__ */ jsx(Div, { className: "mt-2", children: /* @__PURE__ */ jsx(
3515
- Button,
3516
- {
3517
- type: "button",
3518
- size: "sm",
3519
- variant: "danger",
3520
- onClick: () => removeAt(index),
3521
- children: "Remove"
3522
- }
3523
- ) })
3524
- ]
3525
- },
3526
- `${item.url}-${index}`
3527
- )) }),
3528
- !disabled && value.length < maxItems && /* @__PURE__ */ jsx(
3529
- Button,
3530
- {
3531
- type: "button",
3532
- variant: "ghost",
3533
- className: "w-full py-3 border-2 border-dashed border-zinc-200 dark:border-zinc-700 rounded-xl text-sm text-zinc-500 dark:text-zinc-400",
3534
- onClick: () => {
3535
- var _a;
3536
- return (_a = inputRef.current) == null ? void 0 : _a.click();
3537
- },
3538
- disabled: isLoading,
3539
- children: isLoading ? "Uploading..." : "Add media"
3540
- }
3541
- ),
3542
- isLoading && /* @__PURE__ */ jsxs(Div, { className: "flex items-center gap-2", children: [
3543
- /* @__PURE__ */ jsx(Spinner, { size: "sm" }),
3544
- /* @__PURE__ */ jsx(Text, { size: "sm", variant: "secondary", children: "Uploading" })
3545
- ] }),
3546
- /* @__PURE__ */ jsx(
3547
- "input",
3548
- {
3549
- ref: inputRef,
3550
- type: "file",
3551
- multiple: true,
3552
- accept,
3553
- onChange: handleFileChange,
3554
- className: "hidden",
3555
- "aria-hidden": "true"
3556
- }
3557
- ),
3558
- helperText && !error && /* @__PURE__ */ jsx(Text, { variant: "secondary", size: "xs", children: helperText }),
3559
- error && /* @__PURE__ */ jsx(Alert, { variant: "error", children: error })
3560
- ] });
3561
- }
3562
- /*! Bundled license information:
3563
-
3564
- lucide-react/dist/esm/shared/src/utils/mergeClasses.js:
3565
- lucide-react/dist/esm/shared/src/utils/toKebabCase.js:
3566
- lucide-react/dist/esm/shared/src/utils/toCamelCase.js:
3567
- lucide-react/dist/esm/shared/src/utils/toPascalCase.js:
3568
- lucide-react/dist/esm/defaultAttributes.js:
3569
- lucide-react/dist/esm/shared/src/utils/hasA11yProp.js:
3570
- lucide-react/dist/esm/context.js:
3571
- lucide-react/dist/esm/Icon.js:
3572
- lucide-react/dist/esm/createLucideIcon.js:
3573
- lucide-react/dist/esm/icons/chevron-left.js:
3574
- lucide-react/dist/esm/icons/chevron-right.js:
3575
- lucide-react/dist/esm/icons/loader-circle.js:
3576
- lucide-react/dist/esm/icons/maximize.js:
3577
- lucide-react/dist/esm/icons/minimize.js:
3578
- lucide-react/dist/esm/icons/rotate-ccw.js:
3579
- lucide-react/dist/esm/icons/x.js:
3580
- lucide-react/dist/esm/icons/zoom-in.js:
3581
- lucide-react/dist/esm/icons/zoom-out.js:
3582
- lucide-react/dist/esm/lucide-react.js:
3583
- (**
3584
- * @license lucide-react v1.7.0 - ISC
3585
- *
3586
- * This source code is licensed under the ISC license.
3587
- * See the LICENSE file in the root directory of this source tree.
3588
- *)
3589
- */
3590
-
3591
- export { CameraCapture, ImageCropModal, ImageUpload, MediaAvatar, MediaImage, MediaLightbox, MediaSlider, MediaUploadField, MediaUploadList, MediaVideo, VideoThumbnailSelector, VideoTrimModal, coerceMediaField, coerceMediaFieldArray, getMediaUrl, inferMediaTypeFromMime, mediaFieldSchema, useMediaCleanup, useMediaCrop, useMediaTrim, useMediaUpload };
3592
- //# sourceMappingURL=index.js.map
3593
- //# sourceMappingURL=index.js.map
1
+ // Public API for @mohasinac/feat-media
2
+ // Core media display components
3
+ export { MediaImage } from "./MediaImage";
4
+ export { MediaVideo } from "./MediaVideo";
5
+ export { MediaAvatar } from "./MediaAvatar";
6
+ export { MediaLightbox } from "./MediaLightbox";
7
+ // Internal slider (re-exported for advanced use)
8
+ export { MediaSlider } from "./components/MediaSlider";
9
+ // Hooks
10
+ export { useMediaUpload, useMediaAbort, useMediaCrop, useMediaTrim, useMediaCleanup, } from "./hooks/useMedia";
11
+ // Modals
12
+ export { ImageCropModal } from "./modals/ImageCropModal";
13
+ export { VideoTrimModal } from "./modals/VideoTrimModal";
14
+ export { VideoThumbnailSelector } from "./modals/VideoThumbnailSelector";
15
+ // Upload components
16
+ export { ImageUpload } from "./upload/ImageUpload";
17
+ export { MediaUploadField } from "./upload/MediaUploadField";
18
+ export { MediaUploadList } from "./upload/MediaUploadList";
19
+ export { coerceMediaField, coerceMediaFieldArray, getMediaUrl, inferMediaTypeFromMime, mediaFieldSchema, } from "./types/index";
20
+ export { default as CameraCapture } from "./upload/CameraCapture";
21
+ export { AvatarUpload } from "./AvatarUpload";