@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
package/dist/ui/index.js CHANGED
@@ -1,4784 +1,87 @@
1
- "use client";
2
- import React, { createContext, forwardRef, createElement, useContext, useState, useRef, useEffect, useCallback, useMemo, useId } from 'react';
3
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
- import { twMerge } from 'tailwind-merge';
5
- import Link from 'next/link';
6
- import { createPortal } from 'react-dom';
7
-
8
- var __defProp = Object.defineProperty;
9
- var __defProps = Object.defineProperties;
10
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
11
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
- var __hasOwnProp = Object.prototype.hasOwnProperty;
13
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
- var __spreadValues = (a, b) => {
16
- for (var prop in b || (b = {}))
17
- if (__hasOwnProp.call(b, prop))
18
- __defNormalProp(a, prop, b[prop]);
19
- if (__getOwnPropSymbols)
20
- for (var prop of __getOwnPropSymbols(b)) {
21
- if (__propIsEnum.call(b, prop))
22
- __defNormalProp(a, prop, b[prop]);
23
- }
24
- return a;
25
- };
26
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
27
- var __objRest = (source, exclude) => {
28
- var target = {};
29
- for (var prop in source)
30
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
31
- target[prop] = source[prop];
32
- if (source != null && __getOwnPropSymbols)
33
- for (var prop of __getOwnPropSymbols(source)) {
34
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
35
- target[prop] = source[prop];
36
- }
37
- return target;
38
- };
39
- var Section = React.forwardRef(
40
- (_a, ref) => {
41
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
42
- return /* @__PURE__ */ jsx("section", __spreadProps(__spreadValues({ className, ref }, props), { children }));
43
- }
44
- );
45
- Section.displayName = "Section";
46
- function Article(_a) {
47
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
48
- return /* @__PURE__ */ jsx("article", __spreadProps(__spreadValues({ className }, props), { children }));
49
- }
50
- function Main(_a) {
51
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
52
- return /* @__PURE__ */ jsx("main", __spreadProps(__spreadValues({ className }, props), { children }));
53
- }
54
- var Aside = React.forwardRef(
55
- (_a, ref) => {
56
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
57
- return /* @__PURE__ */ jsx("aside", __spreadProps(__spreadValues({ className, ref }, props), { children }));
58
- }
59
- );
60
- Aside.displayName = "Aside";
61
- function Nav(_a) {
62
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
63
- return /* @__PURE__ */ jsx("nav", __spreadProps(__spreadValues({ className }, props), { children }));
64
- }
65
- function BlockHeader(_a) {
66
- var _b = _a, {
67
- className = "",
68
- children
69
- } = _b, props = __objRest(_b, [
70
- "className",
71
- "children"
72
- ]);
73
- return /* @__PURE__ */ jsx("header", __spreadProps(__spreadValues({ className }, props), { children }));
74
- }
75
- function BlockFooter(_a) {
76
- var _b = _a, {
77
- className = "",
78
- children
79
- } = _b, props = __objRest(_b, [
80
- "className",
81
- "children"
82
- ]);
83
- return /* @__PURE__ */ jsx("footer", __spreadProps(__spreadValues({ className }, props), { children }));
84
- }
85
- function Ul(_a) {
86
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
87
- return /* @__PURE__ */ jsx("ul", __spreadProps(__spreadValues({ className }, props), { children }));
88
- }
89
- function Ol(_a) {
90
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
91
- return /* @__PURE__ */ jsx("ol", __spreadProps(__spreadValues({ className }, props), { children }));
92
- }
93
- function Li(_a) {
94
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
95
- return /* @__PURE__ */ jsx("li", __spreadProps(__spreadValues({ className }, props), { children }));
96
- }
97
- var Header = BlockHeader;
98
- var Footer = BlockFooter;
99
- var Div = React.forwardRef(
100
- (_a, ref) => {
101
- var _b = _a, { className = "", children } = _b, props = __objRest(_b, ["className", "children"]);
102
- return /* @__PURE__ */ jsx("div", __spreadProps(__spreadValues({ ref, className }, props), { children }));
103
- }
104
- );
105
- Div.displayName = "Div";
106
- var UI_THEME = {
107
- typography: {
108
- h1: "text-3xl md:text-4xl lg:text-5xl font-bold tracking-tight font-display",
109
- h2: "text-2xl md:text-3xl lg:text-4xl font-bold tracking-tight font-display",
110
- h3: "text-xl md:text-2xl lg:text-3xl font-bold tracking-tight font-display",
111
- h4: "text-lg md:text-xl lg:text-2xl font-bold font-display",
112
- h5: "text-base md:text-lg lg:text-xl font-medium",
113
- h6: "text-sm md:text-base lg:text-lg font-medium",
114
- body: "text-base lg:text-lg",
115
- small: "text-sm lg:text-base",
116
- xs: "text-xs lg:text-sm"
117
- },
118
- themed: {
119
- textPrimary: "text-zinc-900 dark:text-zinc-50",
120
- textSecondary: "text-zinc-500 dark:text-zinc-400",
121
- textMuted: "text-zinc-400 dark:text-zinc-500",
122
- textError: "text-red-600 dark:text-red-400",
123
- textSuccess: "text-emerald-600 dark:text-emerald-400"
124
- },
125
- colors: {
126
- form: {
127
- required: "text-red-500"
128
- }
129
- }
130
- };
131
- function Heading(_a) {
132
- var _b = _a, {
133
- level = 1,
134
- variant = "primary",
135
- className = "",
136
- children
137
- } = _b, props = __objRest(_b, [
138
- "level",
139
- "variant",
140
- "className",
141
- "children"
142
- ]);
143
- const Tag = `h${level}`;
144
- const { typography, themed } = UI_THEME;
145
- const sizeClasses = {
146
- 1: typography.h1,
147
- 2: typography.h2,
148
- 3: typography.h3,
149
- 4: typography.h4,
150
- 5: typography.h5,
151
- 6: typography.h6
152
- };
153
- const variantClasses = {
154
- primary: themed.textPrimary,
155
- secondary: themed.textSecondary,
156
- muted: themed.textMuted,
157
- none: ""
158
- };
159
- return /* @__PURE__ */ jsx(
160
- Tag,
161
- __spreadProps(__spreadValues({
162
- className: `${sizeClasses[level]} ${variantClasses[variant]} ${className}`
163
- }, props), {
164
- children
165
- })
166
- );
167
- }
168
- function Text(_a) {
169
- var _b = _a, {
170
- variant = "primary",
171
- size = "base",
172
- weight = "normal",
173
- className = "",
174
- as: Tag = "p",
175
- children
176
- } = _b, props = __objRest(_b, [
177
- "variant",
178
- "size",
179
- "weight",
180
- "className",
181
- "as",
182
- "children"
183
- ]);
184
- const { typography, themed } = UI_THEME;
185
- const sizeClasses = {
186
- xs: typography.xs,
187
- sm: typography.small,
188
- base: typography.body,
189
- lg: "text-lg",
190
- xl: "text-xl"
191
- };
192
- const weightClasses = {
193
- normal: "font-normal",
194
- medium: "font-medium",
195
- semibold: "font-semibold",
196
- bold: "font-bold"
197
- };
198
- const variantClasses = {
199
- primary: themed.textPrimary,
200
- secondary: themed.textSecondary,
201
- muted: themed.textMuted,
202
- error: themed.textError,
203
- success: themed.textSuccess,
204
- none: ""
205
- };
206
- return /* @__PURE__ */ jsx(
207
- Tag,
208
- __spreadProps(__spreadValues({
209
- className: `${sizeClasses[size]} ${weightClasses[weight]} ${variantClasses[variant]} ${className}`
210
- }, props), {
211
- children
212
- })
213
- );
214
- }
215
- function Label(_a) {
216
- var _b = _a, {
217
- required,
218
- className = "",
219
- children
220
- } = _b, props = __objRest(_b, [
221
- "required",
222
- "className",
223
- "children"
224
- ]);
225
- const { themed, typography, colors } = UI_THEME;
226
- return /* @__PURE__ */ jsxs(
227
- "label",
228
- __spreadProps(__spreadValues({
229
- className: `block ${typography.small} font-medium ${themed.textSecondary} mb-1.5 ${className}`
230
- }, props), {
231
- children: [
232
- children,
233
- required && /* @__PURE__ */ jsx("span", { className: `${colors.form.required} ml-1`, children: "*" })
234
- ]
235
- })
236
- );
237
- }
238
- function Caption(_a) {
239
- var _b = _a, {
240
- variant = "default",
241
- className = "",
242
- children
243
- } = _b, props = __objRest(_b, [
244
- "variant",
245
- "className",
246
- "children"
247
- ]);
248
- const { themed, typography } = UI_THEME;
249
- const variantClasses = {
250
- default: themed.textMuted,
251
- accent: "text-primary font-semibold",
252
- inverse: "text-primary/40"
253
- };
254
- return /* @__PURE__ */ jsx(
255
- "span",
256
- __spreadProps(__spreadValues({
257
- className: `${typography.xs} ${variantClasses[variant]} ${className}`
258
- }, props), {
259
- children
260
- })
261
- );
262
- }
263
- function Span(_a) {
264
- var _b = _a, {
265
- variant = "inherit",
266
- size,
267
- weight,
268
- className = "",
269
- children
270
- } = _b, props = __objRest(_b, [
271
- "variant",
272
- "size",
273
- "weight",
274
- "className",
275
- "children"
276
- ]);
277
- const { themed, typography } = UI_THEME;
278
- const variantClasses = {
279
- inherit: "",
280
- primary: themed.textPrimary,
281
- secondary: themed.textSecondary,
282
- muted: themed.textMuted,
283
- error: themed.textError,
284
- success: themed.textSuccess,
285
- accent: "text-primary"
286
- };
287
- const sizeClasses = {
288
- xs: typography.xs,
289
- sm: typography.small,
290
- base: typography.body,
291
- lg: "text-lg",
292
- xl: "text-xl"
293
- };
294
- const weightClasses = {
295
- normal: "font-normal",
296
- medium: "font-medium",
297
- semibold: "font-semibold",
298
- bold: "font-bold"
299
- };
300
- const classes = [
301
- size ? sizeClasses[size] : "",
302
- weight ? weightClasses[weight] : "",
303
- variantClasses[variant],
304
- className
305
- ].filter(Boolean).join(" ");
306
- return /* @__PURE__ */ jsx("span", __spreadProps(__spreadValues({ className: classes }, props), { children }));
307
- }
308
- function Spinner({
309
- size = "md",
310
- variant = "primary",
311
- className = "",
312
- label = "Loading..."
313
- }) {
314
- const sizeClasses = {
315
- sm: "w-4 h-4 border-2",
316
- md: "w-8 h-8 border-2",
317
- lg: "w-12 h-12 border-[3px]",
318
- xl: "w-16 h-16 border-4"
319
- };
320
- const variantClasses = {
321
- primary: "border-primary-600 border-t-transparent dark:border-secondary-500 dark:border-t-transparent",
322
- white: "border-white border-t-transparent",
323
- current: "border-current border-t-transparent"
324
- };
325
- return /* @__PURE__ */ jsxs(
326
- "div",
327
- {
328
- className: `inline-flex items-center gap-3 ${className}`,
329
- role: "status",
330
- "aria-label": label,
331
- children: [
332
- /* @__PURE__ */ jsx(
333
- "div",
334
- {
335
- className: `${sizeClasses[size]} ${variantClasses[variant]} rounded-full animate-spin force-spin`
336
- }
337
- ),
338
- label && /* @__PURE__ */ jsx("span", { className: "sr-only", children: label })
339
- ]
340
- }
341
- );
342
- }
343
- var BG_TERTIARY = "bg-zinc-100 dark:bg-slate-800";
344
- var WAVE_CSS = `
345
- @keyframes appkit-skeleton-wave {
346
- 0% { transform: translateX(-100%); }
347
- 50%, 100% { transform: translateX(100%); }
348
- }
349
- .appkit-skeleton-wave {
350
- position: relative;
351
- overflow: hidden;
352
- }
353
- .appkit-skeleton-wave::after {
354
- content: "";
355
- position: absolute;
356
- top: 0; left: 0; right: 0; bottom: 0;
357
- background: linear-gradient(90deg, transparent, rgba(255,255,255,0.5), transparent);
358
- animation: appkit-skeleton-wave 1.5s infinite;
359
- }
360
- `;
361
- function Skeleton({
362
- variant = "text",
363
- width,
364
- height,
365
- className = "",
366
- animation = "pulse"
367
- }) {
368
- const variantClass = variant === "circular" ? "rounded-full" : "rounded";
369
- const defaultSize = {
370
- circular: { width: "40px", height: "40px" },
371
- rectangular: { width: "100%", height: "140px" },
372
- text: { width: "100%", height: "1em" }
373
- }[variant];
374
- const animationClass = {
375
- pulse: "animate-pulse",
376
- wave: "appkit-skeleton-wave",
377
- none: ""
378
- }[animation];
379
- const style = {
380
- width: width != null ? width : defaultSize.width,
381
- height: height != null ? height : defaultSize.height
382
- };
383
- return /* @__PURE__ */ jsxs(Fragment, { children: [
384
- animation === "wave" && /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: WAVE_CSS } }),
385
- /* @__PURE__ */ jsx(
386
- "div",
387
- {
388
- className: `${BG_TERTIARY} ${variantClass} ${animationClass} ${className}`,
389
- style,
390
- role: "status",
391
- "aria-label": "Loading",
392
- children: /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Loading..." })
393
- }
394
- )
395
- ] });
396
- }
397
-
398
- // node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
399
- var mergeClasses = (...classes) => classes.filter((className, index, array) => {
400
- return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
401
- }).join(" ").trim();
402
-
403
- // node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js
404
- var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
405
-
406
- // node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js
407
- var toCamelCase = (string) => string.replace(
408
- /^([A-Z])|[\s-_]+(\w)/g,
409
- (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
410
- );
411
-
412
- // node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js
413
- var toPascalCase = (string) => {
414
- const camelCase = toCamelCase(string);
415
- return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
416
- };
417
-
418
- // node_modules/lucide-react/dist/esm/defaultAttributes.js
419
- var defaultAttributes = {
420
- xmlns: "http://www.w3.org/2000/svg",
421
- width: 24,
422
- height: 24,
423
- viewBox: "0 0 24 24",
424
- fill: "none",
425
- stroke: "currentColor",
426
- strokeWidth: 2,
427
- strokeLinecap: "round",
428
- strokeLinejoin: "round"
429
- };
430
-
431
- // node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js
432
- var hasA11yProp = (props) => {
433
- for (const prop in props) {
434
- if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
435
- return true;
436
- }
437
- }
438
- return false;
439
- };
440
- var LucideContext = createContext({});
441
- var useLucideContext = () => useContext(LucideContext);
442
-
443
- // node_modules/lucide-react/dist/esm/Icon.js
444
- var Icon = forwardRef(
445
- (_a, ref) => {
446
- var _b = _a, { color, size, strokeWidth, absoluteStrokeWidth, className = "", children, iconNode } = _b, rest = __objRest(_b, ["color", "size", "strokeWidth", "absoluteStrokeWidth", "className", "children", "iconNode"]);
447
- var _a2, _b2, _c;
448
- const {
449
- size: contextSize = 24,
450
- strokeWidth: contextStrokeWidth = 2,
451
- absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,
452
- color: contextColor = "currentColor",
453
- className: contextClass = ""
454
- } = (_a2 = useLucideContext()) != null ? _a2 : {};
455
- const calculatedStrokeWidth = (absoluteStrokeWidth != null ? absoluteStrokeWidth : contextAbsoluteStrokeWidth) ? Number(strokeWidth != null ? strokeWidth : contextStrokeWidth) * 24 / Number(size != null ? size : contextSize) : strokeWidth != null ? strokeWidth : contextStrokeWidth;
456
- return createElement(
457
- "svg",
458
- __spreadValues(__spreadValues(__spreadProps(__spreadValues({
459
- ref
460
- }, defaultAttributes), {
461
- width: (_b2 = size != null ? size : contextSize) != null ? _b2 : defaultAttributes.width,
462
- height: (_c = size != null ? size : contextSize) != null ? _c : defaultAttributes.height,
463
- stroke: color != null ? color : contextColor,
464
- strokeWidth: calculatedStrokeWidth,
465
- className: mergeClasses("lucide", contextClass, className)
466
- }), !children && !hasA11yProp(rest) && { "aria-hidden": "true" }), rest),
467
- [
468
- ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),
469
- ...Array.isArray(children) ? children : [children]
470
- ]
471
- );
472
- }
473
- );
474
-
475
- // node_modules/lucide-react/dist/esm/createLucideIcon.js
476
- var createLucideIcon = (iconName, iconNode) => {
477
- const Component = forwardRef(
478
- (_a, ref) => {
479
- var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
480
- return createElement(Icon, __spreadValues({
481
- ref,
482
- iconNode,
483
- className: mergeClasses(
484
- `lucide-${toKebabCase(toPascalCase(iconName))}`,
485
- `lucide-${iconName}`,
486
- className
487
- )
488
- }, props));
489
- }
490
- );
491
- Component.displayName = toPascalCase(iconName);
492
- return Component;
493
- };
494
-
495
- // node_modules/lucide-react/dist/esm/icons/check.js
496
- var __iconNode = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
497
- var Check = createLucideIcon("check", __iconNode);
498
-
499
- // node_modules/lucide-react/dist/esm/icons/chevron-down.js
500
- var __iconNode2 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
501
- var ChevronDown = createLucideIcon("chevron-down", __iconNode2);
502
-
503
- // node_modules/lucide-react/dist/esm/icons/chevron-left.js
504
- var __iconNode3 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
505
- var ChevronLeft = createLucideIcon("chevron-left", __iconNode3);
506
-
507
- // node_modules/lucide-react/dist/esm/icons/chevron-right.js
508
- var __iconNode4 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
509
- var ChevronRight = createLucideIcon("chevron-right", __iconNode4);
510
-
511
- // node_modules/lucide-react/dist/esm/icons/chevron-up.js
512
- var __iconNode5 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
513
- var ChevronUp = createLucideIcon("chevron-up", __iconNode5);
514
-
515
- // node_modules/lucide-react/dist/esm/icons/loader-circle.js
516
- var __iconNode6 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
517
- var LoaderCircle = createLucideIcon("loader-circle", __iconNode6);
518
-
519
- // node_modules/lucide-react/dist/esm/icons/star.js
520
- var __iconNode7 = [
521
- [
522
- "path",
523
- {
524
- d: "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",
525
- key: "r04s7s"
526
- }
527
- ]
528
- ];
529
- var Star = createLucideIcon("star", __iconNode7);
530
-
531
- // node_modules/lucide-react/dist/esm/icons/x.js
532
- var __iconNode8 = [
533
- ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
534
- ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
535
- ];
536
- var X = createLucideIcon("x", __iconNode8);
537
-
538
- // node_modules/lucide-react/dist/esm/icons/zoom-in.js
539
- var __iconNode9 = [
540
- ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }],
541
- ["line", { x1: "21", x2: "16.65", y1: "21", y2: "16.65", key: "13gj7c" }],
542
- ["line", { x1: "11", x2: "11", y1: "8", y2: "14", key: "1vmskp" }],
543
- ["line", { x1: "8", x2: "14", y1: "11", y2: "11", key: "durymu" }]
544
- ];
545
- var ZoomIn = createLucideIcon("zoom-in", __iconNode9);
546
- var UI_BUTTON = {
547
- 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",
548
- active: "active:scale-95",
549
- variants: {
550
- 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",
551
- 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",
552
- 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",
553
- ghost: "text-zinc-700 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-slate-800 focus:ring-zinc-400",
554
- danger: "bg-red-600 text-white hover:bg-red-500 active:bg-red-700 shadow-sm shadow-red-600/10 focus:ring-red-500",
555
- warning: "bg-amber-500 text-white hover:bg-amber-400 active:bg-amber-600 shadow-sm shadow-amber-500/10 focus:ring-amber-500"
556
- },
557
- sizes: {
558
- sm: "px-2.5 py-1.5 text-xs sm:px-3 sm:text-sm gap-1.5 min-h-[36px]",
559
- md: "px-3 py-2 text-sm sm:px-4 sm:py-2.5 sm:text-base gap-2 min-h-[44px]",
560
- lg: "px-4 py-2.5 text-base sm:px-6 sm:py-3 sm:text-lg gap-2.5 min-h-[44px]"
561
- }
562
- };
563
- function Button(_a) {
564
- var _b = _a, {
565
- variant = "primary",
566
- size = "md",
567
- className = "",
568
- isLoading = false,
569
- disabled,
570
- children
571
- } = _b, props = __objRest(_b, [
572
- "variant",
573
- "size",
574
- "className",
575
- "isLoading",
576
- "disabled",
577
- "children"
578
- ]);
579
- return /* @__PURE__ */ jsxs(
580
- "button",
581
- __spreadProps(__spreadValues({
582
- className: twMerge(
583
- UI_BUTTON.base,
584
- UI_BUTTON.active,
585
- UI_BUTTON.variants[variant],
586
- UI_BUTTON.sizes[size],
587
- className
588
- ),
589
- disabled: disabled || isLoading,
590
- "aria-busy": isLoading || void 0
591
- }, props), {
592
- children: [
593
- isLoading && /* @__PURE__ */ jsx(
594
- LoaderCircle,
595
- {
596
- className: "w-4 h-4 animate-spin flex-shrink-0",
597
- "aria-hidden": "true"
598
- }
599
- ),
600
- isLoading ? /* @__PURE__ */ jsx("span", { className: "opacity-70", children }) : children
601
- ]
602
- })
603
- );
604
- }
605
- var BASE = "inline-flex items-center justify-center flex-shrink-0 transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed";
606
- var SIZES = {
607
- sm: "h-8 w-8 rounded-lg",
608
- md: "h-10 w-10 rounded-xl",
609
- lg: "h-12 w-12 rounded-xl"
610
- };
611
- var VARIANTS = {
612
- ghost: "text-zinc-600 hover:bg-zinc-100 dark:text-zinc-400 dark:hover:bg-zinc-800 focus:ring-zinc-400",
613
- outline: "border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-transparent text-zinc-700 dark:text-zinc-300 hover:bg-zinc-50 dark:hover:bg-zinc-800 focus:ring-zinc-400",
614
- primary: "bg-primary-600 text-white hover:bg-primary-700 focus:ring-primary-500 dark:bg-secondary-500 dark:hover:bg-secondary-400",
615
- danger: "text-red-600 hover:bg-red-50 dark:hover:bg-red-900/20 focus:ring-red-500"
616
- };
617
- function IconButton(_a) {
618
- var _b = _a, {
619
- size = "md",
620
- variant = "ghost",
621
- className = "",
622
- icon,
623
- children
624
- } = _b, props = __objRest(_b, [
625
- "size",
626
- "variant",
627
- "className",
628
- "icon",
629
- "children"
630
- ]);
631
- if (process.env.NODE_ENV !== "production" && !props["aria-label"]) {
632
- throw new Error(
633
- '[IconButton] Missing required "aria-label" prop. Add aria-label="..." to the button or wrap with <Tooltip label="...">.'
634
- );
635
- }
636
- return /* @__PURE__ */ jsx(
637
- "button",
638
- __spreadProps(__spreadValues({
639
- type: "button",
640
- className: twMerge(BASE, SIZES[size], VARIANTS[variant], className)
641
- }, props), {
642
- children: icon != null ? icon : children
643
- })
644
- );
645
- }
646
- var VARIANTS2 = {
647
- default: "text-primary-600 dark:text-primary-400 hover:text-primary-800 dark:hover:text-primary-200 transition-colors",
648
- muted: "text-zinc-500 dark:text-zinc-400 hover:text-zinc-700 dark:hover:text-zinc-200 transition-colors",
649
- underline: "text-primary-600 dark:text-primary-400 underline hover:no-underline transition-all",
650
- none: ""
651
- };
652
- function TextLink(_a) {
653
- var _b = _a, {
654
- href,
655
- children,
656
- variant = "default",
657
- external = false,
658
- className = ""
659
- } = _b, props = __objRest(_b, [
660
- "href",
661
- "children",
662
- "variant",
663
- "external",
664
- "className"
665
- ]);
666
- const cls = twMerge(VARIANTS2[variant], className);
667
- if (external) {
668
- return /* @__PURE__ */ jsx(
669
- "a",
670
- __spreadProps(__spreadValues({
671
- href,
672
- className: cls,
673
- target: "_blank",
674
- rel: "noopener noreferrer"
675
- }, props), {
676
- children
677
- })
678
- );
679
- }
680
- return /* @__PURE__ */ jsx(Link, __spreadProps(__spreadValues({ href, className: cls }, props), { children }));
681
- }
682
- var TOOLTIP_CONTENT = "absolute z-50 whitespace-nowrap px-2 py-1 text-xs font-medium rounded bg-zinc-900 dark:bg-zinc-100 text-white dark:text-zinc-900 shadow-sm pointer-events-none";
683
- var POSITION = {
684
- top: "bottom-full left-1/2 -translate-x-1/2 mb-2",
685
- bottom: "top-full left-1/2 -translate-x-1/2 mt-2",
686
- left: "right-full top-1/2 -translate-y-1/2 mr-2",
687
- right: "left-full top-1/2 -translate-y-1/2 ml-2"
688
- };
689
- function Tooltip({
690
- label,
691
- children,
692
- side = "top",
693
- delay = 400,
694
- mobileSheet = true,
695
- longPressDelay = 500
696
- }) {
697
- var _a;
698
- const [visible, setVisible] = useState(false);
699
- const [mobileOpen, setMobileOpen] = useState(false);
700
- const timeoutRef = useRef(null);
701
- const longPressRef = useRef(null);
702
- useEffect(() => {
703
- return () => {
704
- if (timeoutRef.current !== null) clearTimeout(timeoutRef.current);
705
- if (longPressRef.current !== null) clearTimeout(longPressRef.current);
706
- };
707
- }, []);
708
- const showTooltip = () => {
709
- timeoutRef.current = setTimeout(() => setVisible(true), delay);
710
- };
711
- const hideTooltip = () => {
712
- if (timeoutRef.current !== null) clearTimeout(timeoutRef.current);
713
- setVisible(false);
714
- };
715
- const handleTouchStart = useCallback(() => {
716
- if (!mobileSheet) return;
717
- longPressRef.current = setTimeout(() => {
718
- setMobileOpen(true);
719
- }, longPressDelay);
720
- }, [mobileSheet, longPressDelay]);
721
- const handleTouchEnd = useCallback(() => {
722
- if (longPressRef.current !== null) {
723
- clearTimeout(longPressRef.current);
724
- longPressRef.current = null;
725
- }
726
- }, []);
727
- useEffect(() => {
728
- if (!mobileOpen) return;
729
- const handler = (e) => {
730
- if (e.key === "Escape") setMobileOpen(false);
731
- };
732
- document.addEventListener("keydown", handler);
733
- return () => document.removeEventListener("keydown", handler);
734
- }, [mobileOpen]);
735
- const existingProps = children.props;
736
- const child = React.cloneElement(
737
- children,
738
- {
739
- "aria-label": (_a = existingProps["aria-label"]) != null ? _a : label,
740
- onMouseEnter: (e) => {
741
- if (typeof existingProps.onMouseEnter === "function")
742
- existingProps.onMouseEnter(e);
743
- showTooltip();
744
- },
745
- onMouseLeave: (e) => {
746
- if (typeof existingProps.onMouseLeave === "function")
747
- existingProps.onMouseLeave(e);
748
- hideTooltip();
749
- },
750
- onFocus: (e) => {
751
- if (typeof existingProps.onFocus === "function") existingProps.onFocus(e);
752
- setVisible(true);
753
- },
754
- onBlur: (e) => {
755
- if (typeof existingProps.onBlur === "function") existingProps.onBlur(e);
756
- hideTooltip();
757
- },
758
- onTouchStart: (e) => {
759
- if (typeof existingProps.onTouchStart === "function")
760
- existingProps.onTouchStart(e);
761
- handleTouchStart();
762
- },
763
- onTouchEnd: (e) => {
764
- if (typeof existingProps.onTouchEnd === "function")
765
- existingProps.onTouchEnd(e);
766
- handleTouchEnd();
767
- },
768
- onTouchCancel: (e) => {
769
- if (typeof existingProps.onTouchCancel === "function")
770
- existingProps.onTouchCancel(e);
771
- handleTouchEnd();
772
- }
773
- }
774
- );
775
- return /* @__PURE__ */ jsxs("span", { className: "relative inline-flex", children: [
776
- child,
777
- visible && /* @__PURE__ */ jsx(
778
- "span",
779
- {
780
- role: "tooltip",
781
- className: `${TOOLTIP_CONTENT} ${POSITION[side]}`,
782
- children: label
783
- }
784
- ),
785
- mobileOpen && /* @__PURE__ */ jsxs(
786
- "span",
787
- {
788
- role: "presentation",
789
- className: "fixed inset-0 z-50 md:hidden",
790
- onClick: () => setMobileOpen(false),
791
- children: [
792
- /* @__PURE__ */ jsx(
793
- "span",
794
- {
795
- className: "absolute inset-0 bg-black/40 backdrop-blur-sm",
796
- "aria-hidden": "true"
797
- }
798
- ),
799
- /* @__PURE__ */ jsxs(
800
- "span",
801
- {
802
- role: "tooltip",
803
- "aria-label": label,
804
- className: "absolute bottom-0 inset-x-0 flex flex-col items-center gap-2 rounded-t-2xl bg-white dark:bg-zinc-900 border-t border-zinc-200 dark:border-zinc-800 shadow-2xl px-6 py-5 pb-[calc(1.25rem+env(safe-area-inset-bottom,0px))]",
805
- children: [
806
- /* @__PURE__ */ jsx(
807
- "span",
808
- {
809
- className: "w-10 h-1 rounded-full bg-zinc-300 dark:bg-zinc-600 mb-2",
810
- "aria-hidden": "true"
811
- }
812
- ),
813
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-zinc-800 dark:text-zinc-100 text-center", children: label })
814
- ]
815
- }
816
- )
817
- ]
818
- }
819
- )
820
- ] });
821
- }
822
- var AccordionContext = createContext(null);
823
- function toArray(value) {
824
- if (!value) return [];
825
- return Array.isArray(value) ? value : [value];
826
- }
827
- function renderLegacyAccordion({
828
- title,
829
- children,
830
- open,
831
- className = "",
832
- titleClassName = "",
833
- contentClassName = ""
834
- }) {
835
- return /* @__PURE__ */ jsxs(
836
- "details",
837
- {
838
- open,
839
- className: `group border-b border-zinc-200 dark:border-zinc-700 ${className}`,
840
- children: [
841
- /* @__PURE__ */ jsxs(
842
- "summary",
843
- {
844
- className: `flex cursor-pointer select-none list-none items-center justify-between py-3 text-sm font-medium text-zinc-900 dark:text-zinc-100 ${titleClassName}`,
845
- children: [
846
- title,
847
- /* @__PURE__ */ jsx(
848
- "span",
849
- {
850
- className: "ml-2 flex-shrink-0 text-zinc-400 transition-transform duration-200 group-open:rotate-180",
851
- "aria-hidden": "true",
852
- children: "\u25BE"
853
- }
854
- )
855
- ]
856
- }
857
- ),
858
- /* @__PURE__ */ jsx(
859
- "div",
860
- {
861
- className: `pb-4 text-sm text-zinc-600 dark:text-zinc-400 ${contentClassName}`,
862
- children
863
- }
864
- )
865
- ]
866
- }
867
- );
868
- }
869
- function Accordion({
870
- title,
871
- children,
872
- open = false,
873
- className = "",
874
- titleClassName = "",
875
- contentClassName = "",
876
- type = "single",
877
- defaultValue,
878
- value,
879
- onChange
880
- }) {
881
- if (title !== void 0) {
882
- return renderLegacyAccordion({
883
- title,
884
- children,
885
- open,
886
- className,
887
- titleClassName,
888
- contentClassName
889
- });
890
- }
891
- const initialOpen = useMemo(() => {
892
- if (value !== void 0) return toArray(value);
893
- return toArray(defaultValue);
894
- }, [defaultValue, value]);
895
- const [internalOpenValues, setInternalOpenValues] = useState(initialOpen);
896
- const activeOpenValues = value !== void 0 ? toArray(value) : internalOpenValues;
897
- const toggle = (itemValue) => {
898
- var _a;
899
- const nextOpenValues = type === "single" ? activeOpenValues.includes(itemValue) ? [] : [itemValue] : activeOpenValues.includes(itemValue) ? activeOpenValues.filter((v) => v !== itemValue) : [...activeOpenValues, itemValue];
900
- if (value === void 0) {
901
- setInternalOpenValues(nextOpenValues);
902
- }
903
- onChange == null ? void 0 : onChange(type === "single" ? (_a = nextOpenValues[0]) != null ? _a : "" : nextOpenValues);
904
- };
905
- return /* @__PURE__ */ jsx(
906
- AccordionContext.Provider,
907
- {
908
- value: { type, openValues: activeOpenValues, toggle },
909
- children: /* @__PURE__ */ jsx(Div, { className, children })
910
- }
911
- );
912
- }
913
- function AccordionItem({
914
- value,
915
- title,
916
- disabled = false,
917
- className = "",
918
- children
919
- }) {
920
- const ctx = useContext(AccordionContext);
921
- if (!ctx) {
922
- throw new Error("AccordionItem must be used within Accordion.");
923
- }
924
- const isOpen = ctx.openValues.includes(value);
925
- return /* @__PURE__ */ jsxs(
926
- Div,
927
- {
928
- className: `border-b border-gray-200 dark:border-gray-700 ${className}`,
929
- children: [
930
- /* @__PURE__ */ jsxs(
931
- Button,
932
- {
933
- type: "button",
934
- disabled,
935
- "aria-expanded": isOpen,
936
- onClick: () => ctx.toggle(value),
937
- className: "w-full flex items-center justify-between py-3 px-1 text-left text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed",
938
- children: [
939
- /* @__PURE__ */ jsx(Span, { children: title }),
940
- /* @__PURE__ */ jsx(
941
- Span,
942
- {
943
- className: `transition-transform duration-200 ${isOpen ? "rotate-180" : ""}`,
944
- children: "\u25BE"
945
- }
946
- )
947
- ]
948
- }
949
- ),
950
- isOpen && /* @__PURE__ */ jsx(Div, { className: "pb-3 px-1 text-sm text-gray-600 dark:text-gray-400", children })
951
- ]
952
- }
953
- );
954
- }
955
- function Form(_a) {
956
- var _b = _a, { children, className = "" } = _b, props = __objRest(_b, ["children", "className"]);
957
- return /* @__PURE__ */ jsx("form", __spreadProps(__spreadValues({ className }, props), { children }));
958
- }
959
- var BADGE_CLASSES = {
960
- // Status badges
961
- active: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-emerald-50 text-emerald-700 ring-1 ring-emerald-600/20 dark:bg-emerald-900/30 dark:text-emerald-300 dark:ring-emerald-400/20",
962
- inactive: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-zinc-100 text-zinc-600 ring-1 ring-zinc-500/10 dark:bg-slate-800 dark:text-zinc-400 dark:ring-zinc-400/20",
963
- pending: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-amber-50 text-amber-700 ring-1 ring-amber-600/20 dark:bg-amber-900/30 dark:text-amber-300 dark:ring-amber-400/20",
964
- approved: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-emerald-50 text-emerald-700 ring-1 ring-emerald-600/20 dark:bg-emerald-900/30 dark:text-emerald-300 dark:ring-emerald-400/20",
965
- rejected: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-rose-50 text-rose-700 ring-1 ring-rose-600/20 dark:bg-rose-900/30 dark:text-rose-300 dark:ring-rose-400/20",
966
- // Semantic badges
967
- success: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-emerald-50 text-emerald-700 ring-1 ring-emerald-600/20 dark:bg-emerald-900/30 dark:text-emerald-300 dark:ring-emerald-400/20",
968
- warning: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-amber-50 text-amber-700 ring-1 ring-amber-600/20 dark:bg-amber-900/30 dark:text-amber-300 dark:ring-amber-400/20",
969
- danger: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-rose-50 text-rose-700 ring-1 ring-rose-600/20 dark:bg-rose-900/30 dark:text-rose-300 dark:ring-rose-400/20",
970
- info: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-sky-50 text-sky-700 ring-1 ring-sky-600/20 dark:bg-sky-900/30 dark:text-sky-300 dark:ring-sky-400/20",
971
- // Role badges
972
- admin: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-purple-50 text-purple-700 ring-1 ring-purple-600/20 dark:bg-purple-900/30 dark:text-purple-300 dark:ring-purple-400/20",
973
- moderator: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-sky-50 text-sky-700 ring-1 ring-sky-600/20 dark:bg-sky-900/30 dark:text-sky-300 dark:ring-sky-400/20",
974
- seller: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-teal-50 text-teal-700 ring-1 ring-teal-600/20 dark:bg-teal-900/30 dark:text-teal-300 dark:ring-teal-400/20",
975
- user: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-zinc-100 text-zinc-700 ring-1 ring-zinc-500/10 dark:bg-slate-800 dark:text-zinc-300 dark:ring-zinc-400/20",
976
- // Legacy / generic variants
977
- default: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-zinc-100 text-zinc-700 ring-1 ring-zinc-500/10 dark:bg-slate-800 dark:text-zinc-300 dark:ring-zinc-400/20",
978
- primary: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-primary-100 text-primary-700 dark:bg-primary-900/50 dark:text-primary-300",
979
- secondary: "inline-flex items-center gap-1 px-2.5 py-0.5 text-xs font-semibold rounded-full bg-primary-100 text-primary-700 dark:bg-primary-900/50 dark:text-primary-300"
980
- };
981
- function Badge({
982
- children,
983
- variant = "default",
984
- className = ""
985
- }) {
986
- return /* @__PURE__ */ jsx(Span, { className: `${BADGE_CLASSES[variant]} ${className}`, children });
987
- }
988
- var ALERT_STYLES = {
989
- info: {
990
- container: "bg-sky-50 border-sky-200/80 dark:bg-sky-950/30 dark:border-sky-800/50",
991
- icon: "text-sky-600 dark:text-sky-400",
992
- title: "text-sky-900 dark:text-sky-200",
993
- text: "text-sky-800 dark:text-sky-300"
994
- },
995
- success: {
996
- container: "bg-emerald-50 border-emerald-200/80 dark:bg-emerald-950/30 dark:border-emerald-800/50",
997
- icon: "text-emerald-600 dark:text-emerald-400",
998
- title: "text-emerald-900 dark:text-emerald-200",
999
- text: "text-emerald-800 dark:text-emerald-300"
1000
- },
1001
- warning: {
1002
- container: "bg-amber-50 border-amber-200/80 dark:bg-amber-950/30 dark:border-amber-800/50",
1003
- icon: "text-amber-600 dark:text-amber-400",
1004
- title: "text-amber-900 dark:text-amber-200",
1005
- text: "text-amber-800 dark:text-amber-300"
1006
- },
1007
- error: {
1008
- container: "bg-red-50 border-red-200/80 dark:bg-red-950/30 dark:border-red-800/50",
1009
- icon: "text-red-600 dark:text-red-400",
1010
- title: "text-red-900 dark:text-red-200",
1011
- text: "text-red-800 dark:text-red-300"
1012
- }
1013
- };
1014
- var ALERT_CLOSE_HOVER = "hover:bg-black/5 dark:hover:bg-white/5";
1015
- var ICONS = {
1016
- info: /* @__PURE__ */ jsx(
1017
- "svg",
1018
- {
1019
- className: "w-5 h-5",
1020
- fill: "currentColor",
1021
- viewBox: "0 0 20 20",
1022
- "aria-hidden": "true",
1023
- children: /* @__PURE__ */ jsx(
1024
- "path",
1025
- {
1026
- fillRule: "evenodd",
1027
- 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",
1028
- clipRule: "evenodd"
1029
- }
1030
- )
1031
- }
1032
- ),
1033
- success: /* @__PURE__ */ jsx(
1034
- "svg",
1035
- {
1036
- className: "w-5 h-5",
1037
- fill: "currentColor",
1038
- viewBox: "0 0 20 20",
1039
- "aria-hidden": "true",
1040
- children: /* @__PURE__ */ jsx(
1041
- "path",
1042
- {
1043
- fillRule: "evenodd",
1044
- 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",
1045
- clipRule: "evenodd"
1046
- }
1047
- )
1048
- }
1049
- ),
1050
- warning: /* @__PURE__ */ jsx(
1051
- "svg",
1052
- {
1053
- className: "w-5 h-5",
1054
- fill: "currentColor",
1055
- viewBox: "0 0 20 20",
1056
- "aria-hidden": "true",
1057
- children: /* @__PURE__ */ jsx(
1058
- "path",
1059
- {
1060
- fillRule: "evenodd",
1061
- 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",
1062
- clipRule: "evenodd"
1063
- }
1064
- )
1065
- }
1066
- ),
1067
- error: /* @__PURE__ */ jsx(
1068
- "svg",
1069
- {
1070
- className: "w-5 h-5",
1071
- fill: "currentColor",
1072
- viewBox: "0 0 20 20",
1073
- "aria-hidden": "true",
1074
- children: /* @__PURE__ */ jsx(
1075
- "path",
1076
- {
1077
- fillRule: "evenodd",
1078
- 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",
1079
- clipRule: "evenodd"
1080
- }
1081
- )
1082
- }
1083
- )
1084
- };
1085
- function Alert({
1086
- children,
1087
- variant = "info",
1088
- title,
1089
- onClose,
1090
- className = ""
1091
- }) {
1092
- const styles = ALERT_STYLES[variant];
1093
- return /* @__PURE__ */ jsx(
1094
- "div",
1095
- {
1096
- className: `relative p-4 rounded-xl border ${styles.container} ${className}`,
1097
- role: "alert",
1098
- children: /* @__PURE__ */ jsxs("div", { className: "flex gap-3", children: [
1099
- /* @__PURE__ */ jsx("div", { className: `flex-shrink-0 ${styles.icon}`, children: ICONS[variant] }),
1100
- /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
1101
- title && /* @__PURE__ */ jsx(
1102
- Heading,
1103
- {
1104
- level: 3,
1105
- className: `text-sm font-semibold mb-1 ${styles.title}`,
1106
- children: title
1107
- }
1108
- ),
1109
- /* @__PURE__ */ jsx("div", { className: `text-sm ${styles.text}`, children })
1110
- ] }),
1111
- onClose && /* @__PURE__ */ jsx(
1112
- Button,
1113
- {
1114
- variant: "ghost",
1115
- size: "sm",
1116
- onClick: onClose,
1117
- className: `flex-shrink-0 ml-3 rounded-lg p-1.5 min-h-0 ${styles.icon} ${ALERT_CLOSE_HOVER}`,
1118
- "aria-label": "Close",
1119
- children: /* @__PURE__ */ jsx(
1120
- "svg",
1121
- {
1122
- className: "w-5 h-5",
1123
- fill: "currentColor",
1124
- viewBox: "0 0 20 20",
1125
- "aria-hidden": "true",
1126
- children: /* @__PURE__ */ jsx(
1127
- "path",
1128
- {
1129
- fillRule: "evenodd",
1130
- 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",
1131
- clipRule: "evenodd"
1132
- }
1133
- )
1134
- }
1135
- )
1136
- }
1137
- )
1138
- ] })
1139
- }
1140
- );
1141
- }
1142
- var BORDER_LIGHT = "border-zinc-100 dark:border-slate-700/60";
1143
- var TEXT_MUTED = "text-zinc-400 dark:text-zinc-500";
1144
- function Divider({
1145
- label,
1146
- orientation = "horizontal",
1147
- className = ""
1148
- }) {
1149
- if (orientation === "vertical") {
1150
- return /* @__PURE__ */ jsx(
1151
- "div",
1152
- {
1153
- className: `w-px h-full border-l ${BORDER_LIGHT} ${className}`,
1154
- role: "separator",
1155
- "aria-orientation": "vertical"
1156
- }
1157
- );
1158
- }
1159
- if (label) {
1160
- return /* @__PURE__ */ jsxs("div", { className: `flex items-center gap-4 ${className}`, role: "separator", children: [
1161
- /* @__PURE__ */ jsx("div", { className: `flex-1 h-px border-t ${BORDER_LIGHT}` }),
1162
- /* @__PURE__ */ jsx(Span, { className: `text-sm font-medium ${TEXT_MUTED}`, children: label }),
1163
- /* @__PURE__ */ jsx("div", { className: `flex-1 h-px border-t ${BORDER_LIGHT}` })
1164
- ] });
1165
- }
1166
- return /* @__PURE__ */ jsx(
1167
- "div",
1168
- {
1169
- className: `w-full h-px border-t ${BORDER_LIGHT} ${className}`,
1170
- role: "separator",
1171
- "aria-orientation": "horizontal"
1172
- }
1173
- );
1174
- }
1175
- var TEXT_PRIMARY = "text-zinc-900 dark:text-zinc-50";
1176
- var TEXT_SECONDARY = "text-zinc-500 dark:text-zinc-400";
1177
- var BG_SECONDARY = "bg-zinc-50 dark:bg-slate-900";
1178
- var FLEX_BETWEEN = "flex items-center justify-between";
1179
- var INDETERMINATE_CSS = `
1180
- @keyframes appkit-progress-indeterminate {
1181
- 0% { transform: translateX(-100%); }
1182
- 100% { transform: translateX(350%); }
1183
- }
1184
- .appkit-progress-indeterminate {
1185
- animation: appkit-progress-indeterminate 1.5s ease-in-out infinite;
1186
- }
1187
- `;
1188
- function Progress({
1189
- value,
1190
- max = 100,
1191
- variant = "primary",
1192
- size = "md",
1193
- label,
1194
- showValue = false,
1195
- className = ""
1196
- }) {
1197
- const percentage = Math.min(Math.max(value / max * 100, 0), 100);
1198
- const sizeClasses = {
1199
- sm: "h-1",
1200
- md: "h-2",
1201
- lg: "h-3"
1202
- };
1203
- const variantClasses = {
1204
- primary: "bg-primary",
1205
- success: "bg-green-600 dark:bg-green-500",
1206
- warning: "bg-yellow-600 dark:bg-yellow-500",
1207
- error: "bg-red-600 dark:bg-red-500"
1208
- };
1209
- return /* @__PURE__ */ jsxs("div", { className, children: [
1210
- (label || showValue) && /* @__PURE__ */ jsxs("div", { className: `${FLEX_BETWEEN} mb-2`, children: [
1211
- label && /* @__PURE__ */ jsx(Span, { className: `text-sm font-medium ${TEXT_PRIMARY}`, children: label }),
1212
- showValue && /* @__PURE__ */ jsxs(Span, { className: `text-sm font-medium ${TEXT_SECONDARY}`, children: [
1213
- Math.round(percentage),
1214
- "%"
1215
- ] })
1216
- ] }),
1217
- /* @__PURE__ */ jsx(
1218
- "div",
1219
- {
1220
- className: `w-full ${sizeClasses[size]} rounded-full overflow-hidden ${BG_SECONDARY}`,
1221
- role: "progressbar",
1222
- "aria-valuenow": value,
1223
- "aria-valuemin": 0,
1224
- "aria-valuemax": max,
1225
- "aria-label": label || `Progress: ${Math.round(percentage)}%`,
1226
- children: /* @__PURE__ */ jsx(
1227
- "div",
1228
- {
1229
- className: `h-full ${variantClasses[variant]} transition-all duration-300 ease-in-out rounded-full`,
1230
- style: { width: `${percentage}%` }
1231
- }
1232
- )
1233
- }
1234
- )
1235
- ] });
1236
- }
1237
- function IndeterminateProgress({
1238
- variant = "primary",
1239
- size = "md",
1240
- label,
1241
- className = ""
1242
- }) {
1243
- const sizeClasses = {
1244
- sm: "h-1",
1245
- md: "h-2",
1246
- lg: "h-3"
1247
- };
1248
- const variantClasses = {
1249
- primary: "bg-primary",
1250
- success: "bg-green-600 dark:bg-green-500",
1251
- warning: "bg-yellow-600 dark:bg-yellow-500",
1252
- error: "bg-red-600 dark:bg-red-500"
1253
- };
1254
- return /* @__PURE__ */ jsxs("div", { className, children: [
1255
- /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: INDETERMINATE_CSS } }),
1256
- label && /* @__PURE__ */ jsx(Span, { className: `block text-sm font-medium mb-2 ${TEXT_PRIMARY}`, children: label }),
1257
- /* @__PURE__ */ jsx(
1258
- "div",
1259
- {
1260
- className: `w-full ${sizeClasses[size]} rounded-full overflow-hidden ${BG_SECONDARY} relative`,
1261
- role: "progressbar",
1262
- "aria-label": label || "Loading...",
1263
- children: /* @__PURE__ */ jsx(
1264
- "div",
1265
- {
1266
- className: `absolute inset-0 ${variantClasses[variant]} appkit-progress-indeterminate rounded-full`,
1267
- style: { width: "40%" }
1268
- }
1269
- )
1270
- }
1271
- )
1272
- ] });
1273
- }
1274
-
1275
- // src/contracts/table.ts
1276
- var DEFAULT_PAGINATION_CONFIG = {
1277
- perPage: 20,
1278
- maxPerPage: 100,
1279
- showPageSizeSelector: false,
1280
- pageSizeOptions: [10, 20, 50, 100],
1281
- showFirstLast: true,
1282
- showPrevNext: true,
1283
- maxVisible: 7,
1284
- size: "md"
1285
- };
1286
- var DEFAULT_STICKY_CONFIG = {
1287
- enabled: false,
1288
- topOffset: "top-0",
1289
- maxHeight: "600px",
1290
- zIndex: 10
1291
- };
1292
- var DEFAULT_TABLE_CONFIG = {
1293
- pageSize: DEFAULT_PAGINATION_CONFIG.perPage,
1294
- sticky: DEFAULT_STICKY_CONFIG,
1295
- striped: false,
1296
- selectable: false,
1297
- showViewToggle: false,
1298
- defaultViewMode: "table",
1299
- pagination: DEFAULT_PAGINATION_CONFIG
1300
- };
1301
- function mergeTableConfig(override) {
1302
- if (!override) return DEFAULT_TABLE_CONFIG;
1303
- return __spreadProps(__spreadValues(__spreadValues({}, DEFAULT_TABLE_CONFIG), override), {
1304
- sticky: __spreadValues(__spreadValues({}, DEFAULT_STICKY_CONFIG), override.sticky),
1305
- pagination: __spreadValues(__spreadValues({}, DEFAULT_PAGINATION_CONFIG), override.pagination)
1306
- });
1307
- }
1308
- function getPageNumbers(currentPage, totalPages, maxVisible) {
1309
- if (totalPages <= maxVisible) {
1310
- return Array.from({ length: totalPages }, (_, i) => i + 1);
1311
- }
1312
- const pages = [];
1313
- const halfVisible = Math.floor(maxVisible / 2);
1314
- let startPage = Math.max(1, currentPage - halfVisible);
1315
- let endPage = Math.min(totalPages, currentPage + halfVisible);
1316
- if (currentPage <= halfVisible) endPage = maxVisible;
1317
- if (currentPage >= totalPages - halfVisible)
1318
- startPage = totalPages - maxVisible + 1;
1319
- if (startPage > 1) {
1320
- pages.push(1);
1321
- if (startPage > 2) pages.push("...");
1322
- }
1323
- for (let i = startPage; i <= endPage; i++) pages.push(i);
1324
- if (endPage < totalPages) {
1325
- if (endPage < totalPages - 1) pages.push("...");
1326
- pages.push(totalPages);
1327
- }
1328
- return pages;
1329
- }
1330
- var SIZE_CLASSES = {
1331
- sm: "text-xs px-2 py-1 min-w-[28px]",
1332
- md: "text-sm px-3 py-1.5 min-w-[36px]",
1333
- lg: "text-base px-4 py-2 min-w-[44px]"
1334
- };
1335
- function Pagination({
1336
- currentPage,
1337
- totalPages,
1338
- onPageChange,
1339
- paginationConfig,
1340
- maxVisible: maxVisibleProp,
1341
- showFirstLast: showFirstLastProp,
1342
- showPrevNext: showPrevNextProp,
1343
- disabled = false,
1344
- size: sizeProp,
1345
- className = ""
1346
- }) {
1347
- const resolved = __spreadValues(__spreadValues({}, DEFAULT_PAGINATION_CONFIG), paginationConfig);
1348
- const maxVisible = maxVisibleProp != null ? maxVisibleProp : resolved.maxVisible;
1349
- const showFirstLast = showFirstLastProp != null ? showFirstLastProp : resolved.showFirstLast;
1350
- const showPrevNext = showPrevNextProp != null ? showPrevNextProp : resolved.showPrevNext;
1351
- const size = sizeProp != null ? sizeProp : resolved.size;
1352
- const handle = (page) => {
1353
- if (disabled || page < 1 || page > totalPages || page === currentPage)
1354
- return;
1355
- onPageChange(page);
1356
- };
1357
- const btnClass = (active, off) => {
1358
- const base = `${SIZE_CLASSES[size]} rounded border font-medium transition-colors`;
1359
- if (off)
1360
- return `${base} bg-zinc-100 dark:bg-slate-800 opacity-50 text-zinc-400 dark:text-zinc-500 border-zinc-200 dark:border-slate-700 cursor-not-allowed`;
1361
- if (active)
1362
- return `${base} bg-primary-600 text-white border-primary-600 cursor-default`;
1363
- return `${base} bg-white dark:bg-slate-900 text-zinc-700 dark:text-zinc-300 border-zinc-200 dark:border-slate-700 hover:bg-zinc-50 dark:hover:bg-slate-800 hover:border-zinc-300 dark:hover:border-slate-600 cursor-pointer`;
1364
- };
1365
- const pages = getPageNumbers(currentPage, totalPages, maxVisible);
1366
- return /* @__PURE__ */ jsxs(
1367
- "nav",
1368
- {
1369
- className: `flex items-center gap-1 ${className}`,
1370
- "aria-label": "Pagination",
1371
- children: [
1372
- showFirstLast && /* @__PURE__ */ jsx(
1373
- "button",
1374
- {
1375
- type: "button",
1376
- className: btnClass(false, disabled || currentPage === 1),
1377
- onClick: () => handle(1),
1378
- disabled: disabled || currentPage === 1,
1379
- "aria-label": "First page",
1380
- children: "\xAB"
1381
- }
1382
- ),
1383
- showPrevNext && /* @__PURE__ */ jsx(
1384
- "button",
1385
- {
1386
- type: "button",
1387
- className: btnClass(false, disabled || currentPage === 1),
1388
- onClick: () => handle(currentPage - 1),
1389
- disabled: disabled || currentPage === 1,
1390
- "aria-label": "Previous page",
1391
- children: "\u2039"
1392
- }
1393
- ),
1394
- pages.map(
1395
- (page, i) => page === "..." ? /* @__PURE__ */ jsx(
1396
- "span",
1397
- {
1398
- className: `${SIZE_CLASSES[size]} text-zinc-400 dark:text-zinc-500 text-center`,
1399
- "aria-hidden": "true",
1400
- children: "\u2026"
1401
- },
1402
- `ellipsis-${i}`
1403
- ) : /* @__PURE__ */ jsx(
1404
- "button",
1405
- {
1406
- type: "button",
1407
- className: btnClass(
1408
- page === currentPage,
1409
- disabled && page !== currentPage
1410
- ),
1411
- onClick: () => handle(page),
1412
- disabled,
1413
- "aria-label": `Page ${page}`,
1414
- "aria-current": page === currentPage ? "page" : void 0,
1415
- children: page
1416
- },
1417
- page
1418
- )
1419
- ),
1420
- showPrevNext && /* @__PURE__ */ jsx(
1421
- "button",
1422
- {
1423
- type: "button",
1424
- className: btnClass(false, disabled || currentPage === totalPages),
1425
- onClick: () => handle(currentPage + 1),
1426
- disabled: disabled || currentPage === totalPages,
1427
- "aria-label": "Next page",
1428
- children: "\u203A"
1429
- }
1430
- ),
1431
- showFirstLast && /* @__PURE__ */ jsx(
1432
- "button",
1433
- {
1434
- type: "button",
1435
- className: btnClass(false, disabled || currentPage === totalPages),
1436
- onClick: () => handle(totalPages),
1437
- disabled: disabled || currentPage === totalPages,
1438
- "aria-label": "Last page",
1439
- children: "\xBB"
1440
- }
1441
- )
1442
- ]
1443
- }
1444
- );
1445
- }
1446
- var STATUS_TO_VARIANT = {
1447
- // Generic
1448
- active: "active",
1449
- inactive: "inactive",
1450
- pending: "pending",
1451
- approved: "approved",
1452
- rejected: "rejected",
1453
- success: "success",
1454
- warning: "warning",
1455
- danger: "danger",
1456
- info: "info",
1457
- // Order
1458
- confirmed: "success",
1459
- processing: "info",
1460
- shipped: "info",
1461
- delivered: "success",
1462
- cancelled: "danger",
1463
- refunded: "warning",
1464
- failed: "danger",
1465
- // Payment
1466
- paid: "success",
1467
- partially_refunded: "warning",
1468
- // Review (pending/approved/rejected already covered)
1469
- // Ticket
1470
- open: "warning",
1471
- in_progress: "info",
1472
- resolved: "success",
1473
- closed: "inactive"
1474
- };
1475
- var STATUS_LABELS = {
1476
- active: "Active",
1477
- inactive: "Inactive",
1478
- pending: "Pending",
1479
- approved: "Approved",
1480
- rejected: "Rejected",
1481
- success: "Success",
1482
- warning: "Warning",
1483
- danger: "Danger",
1484
- info: "Info",
1485
- confirmed: "Confirmed",
1486
- processing: "Processing",
1487
- shipped: "Shipped",
1488
- delivered: "Delivered",
1489
- cancelled: "Cancelled",
1490
- refunded: "Refunded",
1491
- failed: "Failed",
1492
- paid: "Paid",
1493
- partially_refunded: "Partially Refunded",
1494
- open: "Open",
1495
- in_progress: "In Progress",
1496
- resolved: "Resolved",
1497
- closed: "Closed"
1498
- };
1499
- function StatusBadge({ status, label, className }) {
1500
- var _a, _b;
1501
- const variant = (_a = STATUS_TO_VARIANT[status]) != null ? _a : "default";
1502
- const displayLabel = (_b = label != null ? label : STATUS_LABELS[status]) != null ? _b : status;
1503
- return /* @__PURE__ */ jsx(Badge, { variant, className, children: displayLabel });
1504
- }
1505
- var SIZE_CLASSES2 = {
1506
- sm: "max-w-sm",
1507
- md: "max-w-lg",
1508
- lg: "max-w-2xl",
1509
- xl: "max-w-4xl",
1510
- full: "max-w-[95vw] max-h-[95vh]"
1511
- };
1512
- function Modal({
1513
- isOpen,
1514
- onClose,
1515
- title,
1516
- children,
1517
- size = "md",
1518
- showCloseButton = true,
1519
- className = ""
1520
- }) {
1521
- const titleId = useId();
1522
- const panelRef = useRef(null);
1523
- const prevFocusRef = useRef(null);
1524
- useEffect(() => {
1525
- if (!isOpen) return;
1526
- const prev = document.body.style.overflow;
1527
- document.body.style.overflow = "hidden";
1528
- return () => {
1529
- document.body.style.overflow = prev;
1530
- };
1531
- }, [isOpen]);
1532
- useEffect(() => {
1533
- var _a;
1534
- if (isOpen) {
1535
- prevFocusRef.current = document.activeElement;
1536
- requestAnimationFrame(() => {
1537
- var _a2;
1538
- return (_a2 = panelRef.current) == null ? void 0 : _a2.focus();
1539
- });
1540
- } else {
1541
- (_a = prevFocusRef.current) == null ? void 0 : _a.focus();
1542
- }
1543
- }, [isOpen]);
1544
- const handleKeyDown = useCallback(
1545
- (e) => {
1546
- if (e.key === "Escape") {
1547
- onClose();
1548
- return;
1549
- }
1550
- if (e.key !== "Tab") return;
1551
- const panel = panelRef.current;
1552
- if (!panel) return;
1553
- const focusable = Array.from(
1554
- panel.querySelectorAll(
1555
- 'a[href],button:not([disabled]),textarea,input,select,[tabindex]:not([tabindex="-1"])'
1556
- )
1557
- );
1558
- if (!focusable.length) return;
1559
- const first = focusable[0];
1560
- const last = focusable[focusable.length - 1];
1561
- if (e.shiftKey && document.activeElement === first) {
1562
- e.preventDefault();
1563
- last.focus();
1564
- } else if (!e.shiftKey && document.activeElement === last) {
1565
- e.preventDefault();
1566
- first.focus();
1567
- }
1568
- },
1569
- [onClose]
1570
- );
1571
- if (!isOpen) return null;
1572
- if (typeof document === "undefined") return null;
1573
- return createPortal(
1574
- /* @__PURE__ */ jsxs(
1575
- "div",
1576
- {
1577
- className: "fixed inset-0 z-50 flex items-center justify-center p-4",
1578
- role: "dialog",
1579
- "aria-modal": "true",
1580
- "aria-labelledby": title ? titleId : void 0,
1581
- onKeyDown: handleKeyDown,
1582
- children: [
1583
- /* @__PURE__ */ jsx(
1584
- "div",
1585
- {
1586
- className: "absolute inset-0 bg-black/60 backdrop-blur-sm",
1587
- "aria-hidden": "true",
1588
- onClick: onClose
1589
- }
1590
- ),
1591
- /* @__PURE__ */ jsxs(
1592
- "div",
1593
- {
1594
- ref: panelRef,
1595
- tabIndex: -1,
1596
- className: [
1597
- "relative w-full rounded-2xl bg-white dark:bg-slate-900",
1598
- "shadow-2xl ring-1 ring-zinc-200 dark:ring-slate-700",
1599
- "flex flex-col max-h-[90vh] overflow-hidden",
1600
- "animate-[fadeInUp_0.15s_ease_forwards]",
1601
- SIZE_CLASSES2[size],
1602
- className
1603
- ].join(" "),
1604
- children: [
1605
- (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: [
1606
- title && /* @__PURE__ */ jsx(
1607
- Heading,
1608
- {
1609
- level: 2,
1610
- id: titleId,
1611
- className: "!text-lg !font-semibold !font-sans tracking-tight",
1612
- children: title
1613
- }
1614
- ),
1615
- showCloseButton && /* @__PURE__ */ jsx(
1616
- Button,
1617
- {
1618
- variant: "ghost",
1619
- size: "sm",
1620
- type: "button",
1621
- onClick: onClose,
1622
- 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",
1623
- "aria-label": "Close",
1624
- children: /* @__PURE__ */ jsx(X, { className: "w-5 h-5" })
1625
- }
1626
- )
1627
- ] }),
1628
- /* @__PURE__ */ jsx("div", { className: "overflow-y-auto flex-1 px-6 py-4", children })
1629
- ]
1630
- }
1631
- )
1632
- ]
1633
- }
1634
- ),
1635
- document.body
1636
- );
1637
- }
1638
- var SIDE_TRANSLATE = {
1639
- left: {
1640
- closed: "-translate-x-full",
1641
- open: "translate-x-0",
1642
- base: "left-0 top-0 bottom-0"
1643
- },
1644
- right: {
1645
- closed: "translate-x-full",
1646
- open: "translate-x-0",
1647
- base: "right-0 top-0 bottom-0"
1648
- },
1649
- bottom: {
1650
- closed: "translate-y-full",
1651
- open: "translate-y-0",
1652
- base: "bottom-0 left-0 right-0"
1653
- }
1654
- };
1655
- var SIDE_SIZE = {
1656
- sm: "w-72",
1657
- md: "w-80 sm:w-96",
1658
- lg: "w-full sm:w-[480px]",
1659
- full: "w-full"
1660
- };
1661
- function Drawer({
1662
- isOpen,
1663
- onClose,
1664
- title,
1665
- children,
1666
- footer,
1667
- side = "right",
1668
- size = "md",
1669
- showCloseButton = true,
1670
- className = ""
1671
- }) {
1672
- const panelRef = useRef(null);
1673
- const prevFocusRef = useRef(null);
1674
- useEffect(() => {
1675
- if (!isOpen) return;
1676
- const prev = document.body.style.overflow;
1677
- document.body.style.overflow = "hidden";
1678
- return () => {
1679
- document.body.style.overflow = prev;
1680
- };
1681
- }, [isOpen]);
1682
- useEffect(() => {
1683
- var _a;
1684
- if (isOpen) {
1685
- prevFocusRef.current = document.activeElement;
1686
- requestAnimationFrame(() => {
1687
- var _a2;
1688
- return (_a2 = panelRef.current) == null ? void 0 : _a2.focus();
1689
- });
1690
- } else {
1691
- (_a = prevFocusRef.current) == null ? void 0 : _a.focus();
1692
- }
1693
- }, [isOpen]);
1694
- const handleKeyDown = useCallback(
1695
- (e) => {
1696
- if (e.key === "Escape") onClose();
1697
- },
1698
- [onClose]
1699
- );
1700
- const { closed, open, base } = SIDE_TRANSLATE[side];
1701
- const isBottom = side === "bottom";
1702
- if (typeof document === "undefined") return null;
1703
- return createPortal(
1704
- /* @__PURE__ */ jsxs(
1705
- "div",
1706
- {
1707
- className: `fixed inset-0 z-50 ${isOpen ? "pointer-events-auto" : "pointer-events-none"}`,
1708
- onKeyDown: handleKeyDown,
1709
- children: [
1710
- /* @__PURE__ */ jsx(
1711
- "div",
1712
- {
1713
- className: `absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity duration-300 ${isOpen ? "opacity-100" : "opacity-0"}`,
1714
- "aria-hidden": "true",
1715
- onClick: onClose
1716
- }
1717
- ),
1718
- /* @__PURE__ */ jsxs(
1719
- "div",
1720
- {
1721
- ref: panelRef,
1722
- tabIndex: -1,
1723
- role: "dialog",
1724
- "aria-modal": "true",
1725
- className: [
1726
- "absolute bg-white dark:bg-slate-900",
1727
- "shadow-2xl ring-1 ring-zinc-200 dark:ring-slate-700",
1728
- "flex flex-col",
1729
- "transition-transform duration-300 ease-out",
1730
- base,
1731
- isBottom ? "rounded-t-2xl max-h-[90vh]" : `${SIDE_SIZE[size]} h-full`,
1732
- isOpen ? open : closed,
1733
- className
1734
- ].join(" "),
1735
- children: [
1736
- isBottom && /* @__PURE__ */ jsx("div", { className: "flex justify-center pt-3 pb-1 flex-shrink-0", children: /* @__PURE__ */ jsx(
1737
- "div",
1738
- {
1739
- className: "w-10 h-1 rounded-full bg-zinc-300 dark:bg-slate-600",
1740
- "aria-hidden": "true"
1741
- }
1742
- ) }),
1743
- (title || showCloseButton) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-5 py-4 border-b border-zinc-100 dark:border-slate-800 flex-shrink-0", children: [
1744
- title && /* @__PURE__ */ jsx(
1745
- Heading,
1746
- {
1747
- level: 2,
1748
- className: "!text-base !font-semibold !font-sans",
1749
- children: title
1750
- }
1751
- ),
1752
- showCloseButton && /* @__PURE__ */ jsx(
1753
- Button,
1754
- {
1755
- variant: "ghost",
1756
- size: "sm",
1757
- type: "button",
1758
- onClick: onClose,
1759
- className: "ml-auto p-1.5 !min-h-0 rounded-lg text-zinc-400 hover:text-zinc-700 dark:text-zinc-500 dark:hover:text-zinc-300",
1760
- "aria-label": "Close",
1761
- children: /* @__PURE__ */ jsx(X, { className: "w-5 h-5" })
1762
- }
1763
- )
1764
- ] }),
1765
- /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-auto px-5 py-4", children }),
1766
- footer && /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 border-t border-zinc-100 dark:border-slate-800 px-5 py-4", children: footer })
1767
- ]
1768
- }
1769
- )
1770
- ]
1771
- }
1772
- ),
1773
- document.body
1774
- );
1775
- }
1776
- function Select({
1777
- options,
1778
- value,
1779
- onChange,
1780
- placeholder = "Select\u2026",
1781
- label,
1782
- error,
1783
- disabled = false,
1784
- required,
1785
- className = "",
1786
- id: externalId
1787
- }) {
1788
- var _a;
1789
- const generatedId = useId();
1790
- const id = externalId != null ? externalId : generatedId;
1791
- const [open, setOpen] = useState(false);
1792
- const [openUp, setOpenUp] = useState(false);
1793
- const ref = useRef(null);
1794
- const selected = options.find((o) => o.value === value);
1795
- const toggle = useCallback(() => {
1796
- if (!disabled) {
1797
- if (!open && ref.current) {
1798
- const rect = ref.current.getBoundingClientRect();
1799
- const spaceBelow = window.innerHeight - rect.bottom;
1800
- const spaceAbove = rect.top;
1801
- setOpenUp(spaceBelow < 160 && spaceAbove > spaceBelow);
1802
- }
1803
- setOpen((v) => !v);
1804
- }
1805
- }, [disabled, open]);
1806
- const handleSelect = useCallback(
1807
- (val) => {
1808
- onChange == null ? void 0 : onChange(val);
1809
- setOpen(false);
1810
- },
1811
- [onChange]
1812
- );
1813
- useEffect(() => {
1814
- const handler = (e) => {
1815
- if (ref.current && !ref.current.contains(e.target)) {
1816
- setOpen(false);
1817
- }
1818
- };
1819
- if (open) document.addEventListener("mousedown", handler);
1820
- return () => document.removeEventListener("mousedown", handler);
1821
- }, [open]);
1822
- const handleKeyDown = useCallback(
1823
- (e) => {
1824
- if (e.key === "Escape") {
1825
- setOpen(false);
1826
- return;
1827
- }
1828
- if (e.key === "Enter" || e.key === " ") {
1829
- toggle();
1830
- e.preventDefault();
1831
- return;
1832
- }
1833
- if (e.key === "ArrowDown" && !open) {
1834
- setOpen(true);
1835
- e.preventDefault();
1836
- return;
1837
- }
1838
- if (e.key === "ArrowDown") {
1839
- e.preventDefault();
1840
- const idx = options.findIndex((o) => o.value === value);
1841
- const next = options.slice(idx < 0 ? 0 : idx + 1).find((o) => !o.disabled);
1842
- if (next) onChange == null ? void 0 : onChange(next.value);
1843
- }
1844
- if (e.key === "ArrowUp") {
1845
- e.preventDefault();
1846
- const idx = options.findIndex((o) => o.value === value);
1847
- if (idx < 0) return;
1848
- const prev = [...options].slice(0, idx).reverse().find((o) => !o.disabled);
1849
- if (prev) onChange == null ? void 0 : onChange(prev.value);
1850
- }
1851
- },
1852
- [open, options, value, onChange, toggle]
1853
- );
1854
- const triggerClass = [
1855
- "flex h-10 w-full items-center justify-between rounded-lg border px-3 py-2 text-sm",
1856
- "transition-colors bg-white dark:bg-slate-800/60",
1857
- "focus:outline-none focus:ring-2 focus:ring-offset-0",
1858
- error ? "border-red-400 dark:border-red-500 focus:ring-red-500/20" : "border-zinc-200 dark:border-slate-700 focus:ring-primary-500/20 dark:focus:ring-secondary-400/20 focus:border-primary-500 dark:focus:border-secondary-400",
1859
- disabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer",
1860
- className
1861
- ].join(" ");
1862
- return /* @__PURE__ */ jsxs("div", { ref, className: "relative w-full", children: [
1863
- label && /* @__PURE__ */ jsx(
1864
- Label,
1865
- {
1866
- htmlFor: id,
1867
- className: "!text-zinc-700 dark:!text-zinc-300",
1868
- required,
1869
- children: label
1870
- }
1871
- ),
1872
- /* @__PURE__ */ jsxs(
1873
- Button,
1874
- {
1875
- id,
1876
- type: "button",
1877
- role: "combobox",
1878
- "aria-expanded": open,
1879
- "aria-haspopup": "listbox",
1880
- "aria-disabled": disabled,
1881
- disabled,
1882
- variant: "ghost",
1883
- className: triggerClass,
1884
- onClick: toggle,
1885
- onKeyDown: handleKeyDown,
1886
- children: [
1887
- /* @__PURE__ */ jsx(
1888
- Span,
1889
- {
1890
- className: selected ? "text-zinc-900 dark:text-zinc-50" : "text-zinc-400 dark:text-zinc-500",
1891
- children: (_a = selected == null ? void 0 : selected.label) != null ? _a : placeholder
1892
- }
1893
- ),
1894
- /* @__PURE__ */ jsx(
1895
- ChevronDown,
1896
- {
1897
- className: `h-4 w-4 flex-shrink-0 text-zinc-400 transition-transform duration-200 ${open ? "rotate-180" : ""}`,
1898
- "aria-hidden": "true"
1899
- }
1900
- )
1901
- ]
1902
- }
1903
- ),
1904
- open && /* @__PURE__ */ jsx(
1905
- Ul,
1906
- {
1907
- role: "listbox",
1908
- className: [
1909
- "absolute z-50 w-full overflow-auto rounded-lg border border-zinc-200 dark:border-slate-700 bg-white dark:bg-slate-800 shadow-lg max-h-60 py-1",
1910
- openUp ? "bottom-full mb-1" : "top-full mt-1"
1911
- ].join(" "),
1912
- children: options.map((option) => {
1913
- const isSelected = option.value === value;
1914
- return /* @__PURE__ */ jsxs(
1915
- Li,
1916
- {
1917
- role: "option",
1918
- "aria-selected": isSelected,
1919
- "aria-disabled": option.disabled,
1920
- className: [
1921
- "relative flex cursor-pointer items-center px-3 py-2 text-sm select-none",
1922
- option.disabled ? "opacity-40 cursor-not-allowed" : isSelected ? "bg-primary-50 dark:bg-primary-900/20 text-primary-700 dark:text-primary-300" : "text-zinc-700 dark:text-zinc-300 hover:bg-zinc-50 dark:hover:bg-slate-700"
1923
- ].join(" "),
1924
- onClick: () => !option.disabled && handleSelect(option.value),
1925
- children: [
1926
- /* @__PURE__ */ jsx(Span, { className: "flex-1", children: option.label }),
1927
- isSelected && /* @__PURE__ */ jsx(
1928
- Check,
1929
- {
1930
- className: "h-4 w-4 ml-2 flex-shrink-0",
1931
- "aria-hidden": "true"
1932
- }
1933
- )
1934
- ]
1935
- },
1936
- option.value
1937
- );
1938
- })
1939
- }
1940
- ),
1941
- error && /* @__PURE__ */ jsx(Text, { size: "xs", variant: "error", className: "mt-1.5", role: "alert", children: error })
1942
- ] });
1943
- }
1944
- function Input(_a) {
1945
- var _b = _a, { className = "" } = _b, props = __objRest(_b, ["className"]);
1946
- return /* @__PURE__ */ jsx(
1947
- "input",
1948
- __spreadValues({
1949
- className: [
1950
- "w-full rounded-md border border-zinc-200 dark:border-slate-700 bg-white dark:bg-slate-800/60 px-2.5 py-1.5 text-sm text-zinc-900 dark:text-zinc-100 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:focus:ring-secondary-400/20",
1951
- className
1952
- ].filter(Boolean).join(" ")
1953
- }, props)
1954
- );
1955
- }
1956
- function Textarea(_a) {
1957
- var _b = _a, { className = "" } = _b, props = __objRest(_b, ["className"]);
1958
- return /* @__PURE__ */ jsx(
1959
- "textarea",
1960
- __spreadValues({
1961
- className: [
1962
- "w-full rounded-md border border-zinc-200 dark:border-slate-700 bg-white dark:bg-slate-800/60 px-2.5 py-1.5 text-sm text-zinc-900 dark:text-zinc-100 focus:outline-none focus:ring-2 focus:ring-primary-500/20 dark:focus:ring-secondary-400/20",
1963
- className
1964
- ].filter(Boolean).join(" ")
1965
- }, props)
1966
- );
1967
- }
1968
- function Slider({
1969
- value = 0,
1970
- min = 0,
1971
- max = 100,
1972
- step = 1,
1973
- onChange,
1974
- className = "",
1975
- disabled = false
1976
- }) {
1977
- return /* @__PURE__ */ jsx(
1978
- "input",
1979
- {
1980
- type: "range",
1981
- min,
1982
- max,
1983
- step,
1984
- value,
1985
- disabled,
1986
- onChange: (e) => onChange == null ? void 0 : onChange(Number(e.target.value)),
1987
- className: ["w-full accent-primary dark:accent-secondary", className].filter(Boolean).join(" ")
1988
- }
1989
- );
1990
- }
1991
- var SIZE_PX = { sm: "w-4 h-4", md: "w-5 h-5", lg: "w-6 h-6" };
1992
- function StarRating({
1993
- value = 0,
1994
- onChange,
1995
- max = 5,
1996
- size = "md",
1997
- readOnly = false,
1998
- className = "",
1999
- label
2000
- }) {
2001
- const [hovered, setHovered] = useState(null);
2002
- const displayed = hovered != null ? hovered : value;
2003
- return /* @__PURE__ */ jsxs(
2004
- Span,
2005
- {
2006
- className: `inline-flex items-center gap-0.5 ${className}`,
2007
- role: readOnly ? "img" : "group",
2008
- "aria-label": label != null ? label : `${value} out of ${max} stars`,
2009
- children: [
2010
- Array.from({ length: max }, (_, i) => {
2011
- const starValue = i + 1;
2012
- const filled = starValue <= displayed;
2013
- const half = !filled && starValue - 0.5 <= displayed;
2014
- return /* @__PURE__ */ jsx(
2015
- Span,
2016
- {
2017
- className: readOnly ? void 0 : "cursor-pointer",
2018
- onClick: () => !readOnly && (onChange == null ? void 0 : onChange(starValue)),
2019
- onMouseEnter: () => !readOnly && setHovered(starValue),
2020
- onMouseLeave: () => !readOnly && setHovered(null),
2021
- "aria-hidden": !readOnly ? "true" : void 0,
2022
- children: /* @__PURE__ */ jsx(
2023
- Star,
2024
- {
2025
- className: [
2026
- SIZE_PX[size],
2027
- "transition-colors duration-100",
2028
- filled || half ? "fill-amber-400 text-amber-400" : "fill-transparent text-zinc-300 dark:text-slate-600",
2029
- !readOnly && !filled ? "hover:fill-amber-300 hover:text-amber-300" : ""
2030
- ].join(" "),
2031
- "aria-hidden": "true"
2032
- }
2033
- )
2034
- },
2035
- starValue
2036
- );
2037
- }),
2038
- !readOnly && /* @__PURE__ */ jsxs(Span, { className: "sr-only", children: [
2039
- value,
2040
- " out of ",
2041
- max
2042
- ] })
2043
- ]
2044
- }
2045
- );
2046
- }
2047
- function Breadcrumb({ items, className = "" }) {
2048
- return /* @__PURE__ */ jsx(Nav, { "aria-label": "Breadcrumb", className, children: /* @__PURE__ */ jsx(Ol, { className: "flex items-center gap-1 flex-wrap text-sm text-zinc-500 dark:text-zinc-400", children: items.map((item, i) => {
2049
- const isLast = i === items.length - 1;
2050
- return /* @__PURE__ */ jsxs(Li, { className: "flex items-center gap-1", children: [
2051
- i > 0 && /* @__PURE__ */ jsx(
2052
- ChevronRight,
2053
- {
2054
- className: "w-3.5 h-3.5 flex-shrink-0 text-zinc-400 dark:text-zinc-600",
2055
- "aria-hidden": "true"
2056
- }
2057
- ),
2058
- isLast || !item.href ? /* @__PURE__ */ jsx(
2059
- Span,
2060
- {
2061
- className: isLast ? "font-medium text-zinc-900 dark:text-zinc-50" : "text-zinc-500 dark:text-zinc-400",
2062
- "aria-current": isLast ? "page" : void 0,
2063
- children: item.label
2064
- }
2065
- ) : /* @__PURE__ */ jsx(
2066
- "a",
2067
- {
2068
- href: item.href,
2069
- className: "hover:text-primary-600 dark:hover:text-primary-400 transition-colors",
2070
- children: item.label
2071
- }
2072
- )
2073
- ] }, i);
2074
- }) }) });
2075
- }
2076
- function ImageLightbox({
2077
- images,
2078
- activeIndex,
2079
- onClose,
2080
- onNavigate
2081
- }) {
2082
- var _a;
2083
- const [currentIndex, setCurrentIndex] = useState(activeIndex != null ? activeIndex : 0);
2084
- const overlayRef = useRef(null);
2085
- useEffect(() => {
2086
- if (activeIndex !== null && activeIndex >= 0) {
2087
- setCurrentIndex(activeIndex);
2088
- }
2089
- }, [activeIndex]);
2090
- const isOpen = activeIndex !== null && activeIndex >= 0 && images.length > 0;
2091
- useEffect(() => {
2092
- if (!isOpen) return;
2093
- const prev = document.body.style.overflow;
2094
- document.body.style.overflow = "hidden";
2095
- return () => {
2096
- document.body.style.overflow = prev;
2097
- };
2098
- }, [isOpen]);
2099
- const navigate = useCallback(
2100
- (dir) => {
2101
- setCurrentIndex((prev) => {
2102
- const next = (prev + dir + images.length) % images.length;
2103
- onNavigate == null ? void 0 : onNavigate(next);
2104
- return next;
2105
- });
2106
- },
2107
- [images.length, onNavigate]
2108
- );
2109
- const handleKeyDown = useCallback(
2110
- (e) => {
2111
- if (e.key === "Escape") {
2112
- onClose();
2113
- return;
2114
- }
2115
- if (e.key === "ArrowLeft") {
2116
- navigate(-1);
2117
- return;
2118
- }
2119
- if (e.key === "ArrowRight") {
2120
- navigate(1);
2121
- return;
2122
- }
2123
- },
2124
- [onClose, navigate]
2125
- );
2126
- useEffect(() => {
2127
- if (isOpen) {
2128
- requestAnimationFrame(() => {
2129
- var _a2;
2130
- return (_a2 = overlayRef.current) == null ? void 0 : _a2.focus();
2131
- });
2132
- }
2133
- }, [isOpen]);
2134
- if (!isOpen || typeof document === "undefined") return null;
2135
- const image = images[currentIndex];
2136
- const hasMultiple = images.length > 1;
2137
- return createPortal(
2138
- /* @__PURE__ */ jsxs(
2139
- "div",
2140
- {
2141
- ref: overlayRef,
2142
- tabIndex: -1,
2143
- className: "fixed inset-0 z-[9999] bg-black/95 flex flex-col items-center justify-center outline-none",
2144
- role: "dialog",
2145
- "aria-modal": "true",
2146
- "aria-label": "Image lightbox",
2147
- onKeyDown: handleKeyDown,
2148
- children: [
2149
- /* @__PURE__ */ jsx(
2150
- Button,
2151
- {
2152
- variant: "ghost",
2153
- size: "sm",
2154
- type: "button",
2155
- onClick: onClose,
2156
- className: "absolute top-4 right-4 z-10 w-12 h-12 p-0 !min-h-0 rounded-full bg-white/15 hover:bg-red-500/50 text-white flex items-center justify-center",
2157
- "aria-label": "Close lightbox",
2158
- children: /* @__PURE__ */ jsx(X, { className: "w-7 h-7" })
2159
- }
2160
- ),
2161
- hasMultiple && /* @__PURE__ */ jsxs("div", { className: "absolute top-4 left-1/2 -translate-x-1/2 text-white/70 text-sm font-medium", children: [
2162
- currentIndex + 1,
2163
- " / ",
2164
- images.length
2165
- ] }),
2166
- hasMultiple && /* @__PURE__ */ jsx(
2167
- Button,
2168
- {
2169
- variant: "ghost",
2170
- size: "sm",
2171
- type: "button",
2172
- onClick: () => navigate(-1),
2173
- className: "absolute left-4 top-1/2 -translate-y-1/2 w-12 h-12 p-0 !min-h-0 rounded-full bg-white/15 hover:bg-white/30 text-white z-10 flex items-center justify-center",
2174
- "aria-label": "Previous image",
2175
- children: /* @__PURE__ */ jsx(ChevronLeft, { className: "w-7 h-7" })
2176
- }
2177
- ),
2178
- /* @__PURE__ */ jsxs("div", { className: "flex-1 flex items-center justify-center p-16 w-full h-full relative", children: [
2179
- /* @__PURE__ */ jsx(
2180
- "img",
2181
- {
2182
- src: image.src,
2183
- alt: (_a = image.alt) != null ? _a : "",
2184
- className: "max-h-full max-w-full object-contain select-none",
2185
- draggable: false
2186
- }
2187
- ),
2188
- /* @__PURE__ */ jsxs("div", { className: "absolute bottom-4 right-4 text-white/40 flex items-center gap-1 text-xs", children: [
2189
- /* @__PURE__ */ jsx(ZoomIn, { className: "w-4 h-4" }),
2190
- /* @__PURE__ */ jsx(Span, { className: "text-xs", children: "Scroll to zoom" })
2191
- ] })
2192
- ] }),
2193
- image.caption && /* @__PURE__ */ jsx(
2194
- Text,
2195
- {
2196
- size: "sm",
2197
- variant: "secondary",
2198
- className: "flex-shrink-0 !text-white/70 text-center px-8 pb-4",
2199
- children: image.caption
2200
- }
2201
- ),
2202
- hasMultiple && /* @__PURE__ */ jsx(
2203
- Button,
2204
- {
2205
- variant: "ghost",
2206
- size: "sm",
2207
- type: "button",
2208
- onClick: () => navigate(1),
2209
- className: "absolute right-4 top-1/2 -translate-y-1/2 w-12 h-12 p-0 !min-h-0 rounded-full bg-white/15 hover:bg-white/30 text-white z-10 flex items-center justify-center",
2210
- "aria-label": "Next image",
2211
- children: /* @__PURE__ */ jsx(ChevronRight, { className: "w-7 h-7" })
2212
- }
2213
- )
2214
- ]
2215
- }
2216
- ),
2217
- document.body
2218
- );
2219
- }
2220
- function TagInput({
2221
- value,
2222
- onChange,
2223
- disabled = false,
2224
- label,
2225
- placeholder = "Add a tag...",
2226
- className = "",
2227
- helperText = "Press Enter or comma to add a tag"
2228
- }) {
2229
- const [draft, setDraft] = useState("");
2230
- const inputRef = useRef(null);
2231
- const addTag = (raw) => {
2232
- const tag = raw.trim().replace(/,+$/, "").trim();
2233
- if (!tag || value.includes(tag)) {
2234
- setDraft("");
2235
- return;
2236
- }
2237
- onChange([...value, tag]);
2238
- setDraft("");
2239
- };
2240
- const removeTag = (tag) => {
2241
- onChange(value.filter((t) => t !== tag));
2242
- };
2243
- const handleKeyDown = (e) => {
2244
- if (e.key === "Enter" || e.key === ",") {
2245
- e.preventDefault();
2246
- addTag(draft);
2247
- return;
2248
- }
2249
- if (e.key === "Backspace" && draft === "" && value.length > 0) {
2250
- onChange(value.slice(0, -1));
2251
- }
2252
- };
2253
- const handleChange = (e) => {
2254
- var _a;
2255
- const inputValue = e.target.value;
2256
- if (inputValue.includes(",")) {
2257
- const parts = inputValue.split(",");
2258
- const last = (_a = parts.pop()) != null ? _a : "";
2259
- parts.forEach((part) => addTag(part));
2260
- setDraft(last);
2261
- return;
2262
- }
2263
- setDraft(inputValue);
2264
- };
2265
- const handleBlur = () => {
2266
- if (draft.trim()) {
2267
- addTag(draft);
2268
- }
2269
- };
2270
- return /* @__PURE__ */ jsxs("div", { className, children: [
2271
- label && /* @__PURE__ */ jsx(Label, { className: "mb-1.5 block text-sm font-medium", children: label }),
2272
- /* @__PURE__ */ jsxs(
2273
- "div",
2274
- {
2275
- onClick: () => {
2276
- var _a;
2277
- return !disabled && ((_a = inputRef.current) == null ? void 0 : _a.focus());
2278
- },
2279
- className: [
2280
- "flex min-h-[42px] w-full cursor-text flex-wrap items-center gap-1.5 rounded-lg border px-3 py-2",
2281
- "border-zinc-300 bg-white dark:border-slate-700 dark:bg-slate-900",
2282
- disabled ? "cursor-not-allowed opacity-50" : "transition-colors focus-within:border-primary-500 focus-within:ring-2 focus-within:ring-primary-500/30"
2283
- ].join(" "),
2284
- children: [
2285
- value.map((tag) => /* @__PURE__ */ jsxs(
2286
- "span",
2287
- {
2288
- className: "inline-flex items-center gap-1 rounded-full bg-primary-500/10 px-2 py-0.5 text-xs font-medium text-primary-700 dark:text-primary-300",
2289
- children: [
2290
- /* @__PURE__ */ jsx(Span, { size: "xs", children: tag }),
2291
- !disabled && /* @__PURE__ */ jsx(
2292
- "button",
2293
- {
2294
- type: "button",
2295
- onClick: (e) => {
2296
- e.stopPropagation();
2297
- removeTag(tag);
2298
- },
2299
- className: "ml-0.5 text-primary-700/70 hover:text-primary-700 dark:text-primary-300/70 dark:hover:text-primary-300",
2300
- "aria-label": `Remove tag ${tag}`,
2301
- children: "x"
2302
- }
2303
- )
2304
- ]
2305
- },
2306
- tag
2307
- )),
2308
- /* @__PURE__ */ jsx(
2309
- "input",
2310
- {
2311
- ref: inputRef,
2312
- value: draft,
2313
- onChange: handleChange,
2314
- onKeyDown: handleKeyDown,
2315
- onBlur: handleBlur,
2316
- disabled,
2317
- placeholder: value.length === 0 ? placeholder : "",
2318
- className: [
2319
- "min-w-[100px] flex-1 bg-transparent text-sm outline-none",
2320
- "text-zinc-900 placeholder:text-zinc-400 dark:text-zinc-100 dark:placeholder:text-zinc-500",
2321
- disabled ? "cursor-not-allowed" : ""
2322
- ].join(" "),
2323
- "aria-label": label != null ? label : "Tag input"
2324
- }
2325
- )
2326
- ]
2327
- }
2328
- ),
2329
- helperText && /* @__PURE__ */ jsx(Span, { size: "xs", className: "mt-1 text-zinc-500 dark:text-zinc-400", children: helperText })
2330
- ] });
2331
- }
2332
-
2333
- // src/ui/style.helper.ts
2334
- function classNames(...classes) {
2335
- return classes.filter(Boolean).join(" ");
2336
- }
2337
- function mergeTailwindClasses(...classes) {
2338
- const classArray = classes.filter(Boolean).join(" ").split(" ");
2339
- return Array.from(new Set(classArray)).join(" ");
2340
- }
2341
- function StepperNav({ steps, currentStep, className }) {
2342
- return /* @__PURE__ */ jsx(Nav, { "aria-label": "Steps", className: classNames("mb-8", className), children: /* @__PURE__ */ jsx(Ol, { className: "flex items-center gap-0", children: steps.map((step, i) => {
2343
- const isComplete = step.number < currentStep;
2344
- const isActive = step.number === currentStep;
2345
- const isLast = i === steps.length - 1;
2346
- return /* @__PURE__ */ jsxs(Li, { className: "flex flex-1 items-center", children: [
2347
- /* @__PURE__ */ jsxs("div", { className: "flex flex-shrink-0 items-center gap-2", children: [
2348
- /* @__PURE__ */ jsx(
2349
- "div",
2350
- {
2351
- className: classNames(
2352
- "flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-semibold transition-colors",
2353
- isComplete ? "border-primary bg-primary text-white" : isActive ? "border-primary bg-transparent text-primary" : "border-zinc-300 text-zinc-500 dark:border-slate-700 dark:text-zinc-400"
2354
- ),
2355
- children: isComplete ? /* @__PURE__ */ jsx(
2356
- "svg",
2357
- {
2358
- className: "h-4 w-4",
2359
- fill: "none",
2360
- viewBox: "0 0 24 24",
2361
- stroke: "currentColor",
2362
- "aria-hidden": "true",
2363
- children: /* @__PURE__ */ jsx(
2364
- "path",
2365
- {
2366
- strokeLinecap: "round",
2367
- strokeLinejoin: "round",
2368
- strokeWidth: 2.5,
2369
- d: "M5 13l4 4L19 7"
2370
- }
2371
- )
2372
- }
2373
- ) : step.number
2374
- }
2375
- ),
2376
- /* @__PURE__ */ jsx(
2377
- Span,
2378
- {
2379
- className: classNames(
2380
- "hidden text-sm font-medium sm:block",
2381
- isActive ? "text-primary" : isComplete ? "text-zinc-900 dark:text-zinc-100" : "text-zinc-500 dark:text-zinc-400"
2382
- ),
2383
- children: step.label
2384
- }
2385
- )
2386
- ] }),
2387
- !isLast && /* @__PURE__ */ jsx(
2388
- "div",
2389
- {
2390
- className: classNames(
2391
- "mx-3 h-0.5 flex-1 transition-colors",
2392
- isComplete ? "bg-primary" : "bg-zinc-200 dark:bg-slate-700"
2393
- )
2394
- }
2395
- )
2396
- ] }, step.number);
2397
- }) }) });
2398
- }
2399
- var ACTIVE = "bg-primary/5 text-primary ring-primary/30 dark:bg-primary/10";
2400
- var INACTIVE = "text-zinc-500 ring-zinc-200 hover:bg-zinc-100 dark:text-zinc-400 dark:ring-slate-700 dark:hover:bg-slate-800";
2401
- var DEFAULT_LABELS = {
2402
- card: "Card grid",
2403
- fluid: "Fluid grid",
2404
- list: "List view",
2405
- toolbar: "View mode"
2406
- };
2407
- function ViewToggle({
2408
- value,
2409
- onChange,
2410
- labels,
2411
- className
2412
- }) {
2413
- const mergedLabels = __spreadValues(__spreadValues({}, DEFAULT_LABELS), labels);
2414
- return /* @__PURE__ */ jsxs(
2415
- Div,
2416
- {
2417
- className: ["flex gap-1", className != null ? className : ""].join(" ").trim(),
2418
- role: "toolbar",
2419
- "aria-label": mergedLabels.toolbar,
2420
- children: [
2421
- /* @__PURE__ */ jsx(
2422
- Button,
2423
- {
2424
- type: "button",
2425
- variant: "ghost",
2426
- size: "sm",
2427
- onClick: () => onChange("card"),
2428
- "aria-label": mergedLabels.card,
2429
- "aria-pressed": value === "card",
2430
- className: `flex items-center justify-center rounded-lg p-2 ring-1 transition-colors ${value === "card" ? ACTIVE : INACTIVE}`,
2431
- children: /* @__PURE__ */ jsx(
2432
- "svg",
2433
- {
2434
- className: "h-5 w-5",
2435
- fill: "none",
2436
- viewBox: "0 0 24 24",
2437
- stroke: "currentColor",
2438
- strokeWidth: 1.5,
2439
- "aria-hidden": "true",
2440
- children: /* @__PURE__ */ jsx(
2441
- "path",
2442
- {
2443
- strokeLinecap: "round",
2444
- strokeLinejoin: "round",
2445
- d: "M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z"
2446
- }
2447
- )
2448
- }
2449
- )
2450
- }
2451
- ),
2452
- /* @__PURE__ */ jsx(
2453
- Button,
2454
- {
2455
- type: "button",
2456
- variant: "ghost",
2457
- size: "sm",
2458
- onClick: () => onChange("fluid"),
2459
- "aria-label": mergedLabels.fluid,
2460
- "aria-pressed": value === "fluid",
2461
- className: `flex items-center justify-center rounded-lg p-2 ring-1 transition-colors ${value === "fluid" ? ACTIVE : INACTIVE}`,
2462
- children: /* @__PURE__ */ jsx(
2463
- "svg",
2464
- {
2465
- className: "h-5 w-5",
2466
- fill: "none",
2467
- viewBox: "0 0 24 24",
2468
- stroke: "currentColor",
2469
- strokeWidth: 1.5,
2470
- "aria-hidden": "true",
2471
- children: /* @__PURE__ */ jsx(
2472
- "path",
2473
- {
2474
- strokeLinecap: "round",
2475
- strokeLinejoin: "round",
2476
- d: "M3.375 19.5h17.25m-17.25 0a1.125 1.125 0 01-1.125-1.125M3.375 19.5h1.5C5.496 19.5 6 18.996 6 18.375m-3.75 0V5.625m0 12.75v-1.5c0-.621.504-1.125 1.125-1.125m18.375 2.625V5.625m0 12.75c0 .621-.504 1.125-1.125 1.125m1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125m0 3.75h-1.5A1.125 1.125 0 0118 18.375M20.625 4.5H3.375m17.25 0c.621 0 1.125.504 1.125 1.125M20.625 4.5h-1.5C18.504 4.5 18 5.004 18 5.625m3.75 0v1.5c0 .621-.504 1.125-1.125 1.125M3.375 4.5c-.621 0-1.125.504-1.125 1.125M3.375 4.5h1.5C5.496 4.5 6 5.004 6 5.625m-3.75 0v1.5c0 .621.504 1.125 1.125 1.125m0 0h1.5m-1.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m1.5-3.75C5.496 8.25 6 8.754 6 9.375v1.5m0-5.25v5.25m0-5.25C6 5.004 6.504 4.5 7.125 4.5h9.75c.621 0 1.125.504 1.125 1.125m1.125 2.625h1.5m-1.5 0A1.125 1.125 0 0118 9.375v1.5m1.5-3.75C19.496 8.25 20 8.754 20 9.375v1.5m0-5.25v5.25m0-5.25C20 5.004 19.496 4.5 18.875 4.5M7.5 15h9"
2477
- }
2478
- )
2479
- }
2480
- )
2481
- }
2482
- ),
2483
- /* @__PURE__ */ jsx(
2484
- Button,
2485
- {
2486
- type: "button",
2487
- variant: "ghost",
2488
- size: "sm",
2489
- onClick: () => onChange("list"),
2490
- "aria-label": mergedLabels.list,
2491
- "aria-pressed": value === "list",
2492
- className: `flex items-center justify-center rounded-lg p-2 ring-1 transition-colors ${value === "list" ? ACTIVE : INACTIVE}`,
2493
- children: /* @__PURE__ */ jsx(
2494
- "svg",
2495
- {
2496
- className: "h-5 w-5",
2497
- fill: "none",
2498
- viewBox: "0 0 24 24",
2499
- stroke: "currentColor",
2500
- strokeWidth: 1.5,
2501
- "aria-hidden": "true",
2502
- children: /* @__PURE__ */ jsx(
2503
- "path",
2504
- {
2505
- strokeLinecap: "round",
2506
- strokeLinejoin: "round",
2507
- d: "M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zM3.75 12h.007v.008H3.75V12zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm-.375 5.25h.007v.008H3.75v-.008zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z"
2508
- }
2509
- )
2510
- }
2511
- )
2512
- }
2513
- )
2514
- ]
2515
- }
2516
- );
2517
- }
2518
- var sizeClass = {
2519
- sm: "h-4 w-4",
2520
- md: "h-5 w-5",
2521
- lg: "h-6 w-6"
2522
- };
2523
- function RatingDisplay({
2524
- rating,
2525
- maxRating = 5,
2526
- size = "sm",
2527
- showValue = false,
2528
- className
2529
- }) {
2530
- const starSize = sizeClass[size];
2531
- return /* @__PURE__ */ jsxs("div", { className: classNames("flex items-center gap-1", className), children: [
2532
- /* @__PURE__ */ jsx("div", { className: "flex", children: Array.from({ length: maxRating }, (_, i) => i + 1).map((star) => /* @__PURE__ */ jsx(
2533
- "svg",
2534
- {
2535
- className: classNames(
2536
- starSize,
2537
- star <= rating ? "text-amber-400 dark:text-secondary-500" : "text-zinc-300 dark:text-zinc-700"
2538
- ),
2539
- fill: "currentColor",
2540
- viewBox: "0 0 20 20",
2541
- "aria-hidden": "true",
2542
- children: /* @__PURE__ */ jsx("path", { d: "M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" })
2543
- },
2544
- star
2545
- )) }),
2546
- showValue && /* @__PURE__ */ jsx(Span, { className: "text-sm font-medium text-zinc-700 dark:text-zinc-300", children: rating.toFixed(1) })
2547
- ] });
2548
- }
2549
- var GAP_MAP = {
2550
- none: "",
2551
- px: "gap-px",
2552
- xs: "gap-1",
2553
- sm: "gap-2",
2554
- "2.5": "gap-2.5",
2555
- "3": "gap-3",
2556
- md: "gap-4",
2557
- "5": "gap-5",
2558
- lg: "gap-6",
2559
- xl: "gap-8",
2560
- "2xl": "gap-12"
2561
- };
2562
- var CONTAINER_MAP = {
2563
- /** `max-w-3xl` — blog posts, legal / policy pages */
2564
- sm: "max-w-3xl mx-auto px-4 sm:px-6 lg:px-8",
2565
- /** `max-w-4xl` — narrow content, contact, about */
2566
- md: "max-w-4xl mx-auto px-4 sm:px-6 lg:px-8",
2567
- /** `max-w-5xl` — medium content, checkout, help */
2568
- lg: "max-w-5xl mx-auto px-4 sm:px-6 lg:px-8",
2569
- /** `max-w-6xl` — product detail, cart */
2570
- xl: "max-w-6xl mx-auto px-4 sm:px-6 lg:px-8",
2571
- /** `max-w-7xl` — main content grids (default) */
2572
- "2xl": "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",
2573
- /** `max-w-screen-2xl` — full-bleed wide content */
2574
- full: "max-w-screen-2xl mx-auto px-4 sm:px-6 lg:px-8",
2575
- /** `max-w-screen-2xl` — wide store/seller layouts (compact px) */
2576
- wide: "max-w-screen-2xl mx-auto px-4 sm:px-6",
2577
- /** `max-w-[1920px]` — ultra-wide / 4K displays */
2578
- ultra: "max-w-[1920px] mx-auto px-4 sm:px-6 lg:px-8"
2579
- };
2580
- var GRID_MAP = {
2581
- /** Single column */
2582
- 1: "grid grid-cols-1",
2583
- /** 1 → 2 */
2584
- 2: "grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-2 2xl:grid-cols-2",
2585
- /** 1 → 2 → 3 → 4 on widescreen */
2586
- 3: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-3 2xl:grid-cols-4",
2587
- /** 1 → 2 → 3 → 4 → 5 on widescreen */
2588
- 4: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5",
2589
- /** 1 → 2 → 3 → 4 → 5 */
2590
- 5: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-4 2xl:grid-cols-5",
2591
- /** 2 → 3 → 4 → 5 → 6 */
2592
- 6: "grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6",
2593
- /**
2594
- * Generic card grid — 1 col on portrait mobile → 5 on ultrawide.
2595
- * Starts at 1 so product cards are readable even on 320 px handsets.
2596
- */
2597
- cards: "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-4 2xl:grid-cols-5",
2598
- /** Auto-fill product cards — min 200 px */
2599
- productCards: "grid grid-cols-[repeat(auto-fill,minmax(200px,1fr))] gap-6",
2600
- /** Auto-fill product cards (compact) — min 220 px */
2601
- productCardsCompact: "grid grid-cols-[repeat(auto-fill,minmax(220px,1fr))] gap-4",
2602
- /** Auto-fill store cards — min 220 px */
2603
- storeCards: "grid grid-cols-[repeat(auto-fill,minmax(220px,1fr))] gap-6",
2604
- /** Auto-fill category tiles — min 130 px */
2605
- categoryCards: "grid grid-cols-[repeat(auto-fill,minmax(130px,1fr))] gap-4",
2606
- /** Auto-fill coupon/promo cards — min 264 px */
2607
- couponCards: "grid grid-cols-[repeat(auto-fill,minmax(264px,1fr))] gap-6",
2608
- /** Auto-fill address / wide cards — min 300 px */
2609
- addressCards: "grid grid-cols-[repeat(auto-fill,minmax(300px,1fr))] gap-4",
2610
- /** Auto-fill KPI/stat tiles — min 180 px */
2611
- statTiles: "grid grid-cols-[repeat(auto-fill,minmax(180px,1fr))] gap-4",
2612
- /** Auto-fill account nav tiles — min 160 px */
2613
- navTiles: "grid grid-cols-[repeat(auto-fill,minmax(160px,1fr))] gap-4",
2614
- /** Equal halves on md+ */
2615
- halves: "grid grid-cols-1 md:grid-cols-2 xl:grid-cols-2 2xl:grid-cols-2",
2616
- /** 2fr / 1fr split on md+ */
2617
- twoThird: "grid grid-cols-1 md:grid-cols-[2fr_1fr]",
2618
- /** 1fr / 2fr split on md+ */
2619
- oneThird: "grid grid-cols-1 md:grid-cols-[1fr_2fr]",
2620
- /** Fixed 280px left sidebar + 1fr on lg+ */
2621
- sidebar: "grid grid-cols-1 lg:grid-cols-[280px_1fr]",
2622
- /** 1fr + fixed 280px right sidebar on lg+ */
2623
- sidebarRight: "grid grid-cols-1 lg:grid-cols-[1fr_280px]",
2624
- /** Fixed 320px left sidebar + 1fr on lg+ (admin layout) */
2625
- sidebarWide: "grid grid-cols-1 lg:grid-cols-[320px_1fr]",
2626
- /** Product detail triplet: gallery | info | actions sidebar */
2627
- productDetailTriplet: "grid grid-cols-1 lg:grid-cols-[1fr_1fr_280px] xl:grid-cols-[1fr_1fr_300px] 2xl:grid-cols-[1fr_1fr_320px] gap-6 lg:gap-8",
2628
- /** CSS auto-fill, min 200px columns */
2629
- autoSm: "grid grid-cols-[repeat(auto-fill,minmax(200px,1fr))]",
2630
- /** CSS auto-fill, min 280px columns */
2631
- autoMd: "grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))]",
2632
- /** CSS auto-fill, min 360px columns */
2633
- autoLg: "grid grid-cols-[repeat(auto-fill,minmax(360px,1fr))]"
2634
- };
2635
- var ITEMS_MAP = {
2636
- start: "items-start",
2637
- center: "items-center",
2638
- end: "items-end",
2639
- stretch: "items-stretch",
2640
- baseline: "items-baseline"
2641
- };
2642
- var JUSTIFY_MAP = {
2643
- start: "justify-start",
2644
- center: "justify-center",
2645
- end: "justify-end",
2646
- between: "justify-between",
2647
- around: "justify-around",
2648
- evenly: "justify-evenly"
2649
- };
2650
- function Container(_a) {
2651
- var _b = _a, {
2652
- size = "2xl",
2653
- as,
2654
- className = "",
2655
- children
2656
- } = _b, props = __objRest(_b, [
2657
- "size",
2658
- "as",
2659
- "className",
2660
- "children"
2661
- ]);
2662
- const Tag = as != null ? as : "div";
2663
- return /* @__PURE__ */ jsx(
2664
- Tag,
2665
- __spreadProps(__spreadValues({
2666
- className: [CONTAINER_MAP[size], className].filter(Boolean).join(" ")
2667
- }, props), {
2668
- children
2669
- })
2670
- );
2671
- }
2672
- function Stack(_a) {
2673
- var _b = _a, {
2674
- gap = "md",
2675
- centered = false,
2676
- align = "stretch",
2677
- as,
2678
- className = "",
2679
- children
2680
- } = _b, props = __objRest(_b, [
2681
- "gap",
2682
- "centered",
2683
- "align",
2684
- "as",
2685
- "className",
2686
- "children"
2687
- ]);
2688
- const Tag = as != null ? as : "div";
2689
- const classes = [
2690
- "flex flex-col",
2691
- GAP_MAP[gap],
2692
- centered ? "items-center justify-center" : "",
2693
- !centered && align !== "stretch" ? ITEMS_MAP[align] : "",
2694
- className
2695
- ].filter(Boolean).join(" ");
2696
- return /* @__PURE__ */ jsx(Tag, __spreadProps(__spreadValues({ className: classes }, props), { children }));
2697
- }
2698
- function Row(_a) {
2699
- var _b = _a, {
2700
- gap = "md",
2701
- centered = false,
2702
- align = "center",
2703
- justify = "start",
2704
- wrap = false,
2705
- as,
2706
- className = "",
2707
- children
2708
- } = _b, props = __objRest(_b, [
2709
- "gap",
2710
- "centered",
2711
- "align",
2712
- "justify",
2713
- "wrap",
2714
- "as",
2715
- "className",
2716
- "children"
2717
- ]);
2718
- const Tag = as != null ? as : "div";
2719
- const classes = [
2720
- "flex flex-row",
2721
- centered ? "items-center justify-center" : ITEMS_MAP[align],
2722
- !centered && justify !== "start" ? JUSTIFY_MAP[justify] : "",
2723
- GAP_MAP[gap],
2724
- wrap ? "flex-wrap" : "",
2725
- className
2726
- ].filter(Boolean).join(" ");
2727
- return /* @__PURE__ */ jsx(Tag, __spreadProps(__spreadValues({ className: classes }, props), { children }));
2728
- }
2729
- function Grid(_a) {
2730
- var _b = _a, {
2731
- cols,
2732
- gap = "md",
2733
- as,
2734
- className = "",
2735
- children
2736
- } = _b, props = __objRest(_b, [
2737
- "cols",
2738
- "gap",
2739
- "as",
2740
- "className",
2741
- "children"
2742
- ]);
2743
- const Tag = as != null ? as : "div";
2744
- const baseClass = cols !== void 0 ? GRID_MAP[cols] : "grid";
2745
- const classes = [baseClass, GAP_MAP[gap], className].filter(Boolean).join(" ");
2746
- return /* @__PURE__ */ jsx(Tag, __spreadProps(__spreadValues({ className: classes }, props), { children }));
2747
- }
2748
- function formatCurrency(amount, currency) {
2749
- return new Intl.NumberFormat("en-IN", {
2750
- style: "currency",
2751
- currency,
2752
- maximumFractionDigits: 2
2753
- }).format(amount);
2754
- }
2755
- function formatPercent(value) {
2756
- return `${Math.round(value * 100)}%`;
2757
- }
2758
- function PriceDisplay({
2759
- amount,
2760
- currency = "INR",
2761
- originalAmount,
2762
- variant = "compact",
2763
- className
2764
- }) {
2765
- const hasDiscount = originalAmount !== void 0 && originalAmount > amount;
2766
- const discountPct = hasDiscount ? (originalAmount - amount) / originalAmount : 0;
2767
- const priceClass = variant === "detail" ? "text-xl font-bold text-primary" : "text-base font-bold text-primary";
2768
- const originalClass = variant === "detail" ? "text-sm text-zinc-400 line-through dark:text-zinc-500" : "text-xs text-zinc-400 line-through dark:text-zinc-500";
2769
- return /* @__PURE__ */ jsxs(Row, { wrap: true, align: "baseline", gap: "xs", className, children: [
2770
- /* @__PURE__ */ jsx(Span, { className: priceClass, children: formatCurrency(amount, currency) }),
2771
- hasDiscount && /* @__PURE__ */ jsxs(Fragment, { children: [
2772
- /* @__PURE__ */ jsx(Span, { className: originalClass, children: formatCurrency(originalAmount, currency) }),
2773
- /* @__PURE__ */ jsxs(Span, { className: "rounded bg-emerald-100 px-1 py-0.5 text-xs font-semibold text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400", children: [
2774
- "-",
2775
- formatPercent(discountPct)
2776
- ] })
2777
- ] })
2778
- ] });
2779
- }
2780
- var columnsClass = {
2781
- 2: "grid grid-cols-1 gap-4 sm:grid-cols-2",
2782
- 3: "grid grid-cols-1 gap-4 sm:grid-cols-2 md:grid-cols-3",
2783
- 4: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4"
2784
- };
2785
- function StatsGrid({ stats, columns = 3, className }) {
2786
- return /* @__PURE__ */ jsx("div", { className: classNames(columnsClass[columns], className), children: stats.map((stat, i) => {
2787
- var _a;
2788
- return /* @__PURE__ */ jsx(
2789
- "div",
2790
- {
2791
- className: "rounded-xl border border-zinc-200 bg-white p-4 dark:border-slate-700 dark:bg-slate-900",
2792
- children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
2793
- /* @__PURE__ */ jsxs("div", { children: [
2794
- /* @__PURE__ */ jsx(Text, { className: "text-sm font-medium text-zinc-500 dark:text-zinc-400", children: stat.label }),
2795
- /* @__PURE__ */ jsx(Text, { className: "mt-1 text-3xl font-bold", children: stat.value })
2796
- ] }),
2797
- stat.icon && /* @__PURE__ */ jsx(
2798
- "div",
2799
- {
2800
- className: classNames(
2801
- (_a = stat.colorClass) != null ? _a : "text-zinc-400 dark:text-zinc-500"
2802
- ),
2803
- children: stat.icon
2804
- }
2805
- )
2806
- ] })
2807
- },
2808
- `${stat.label}-${i}`
2809
- );
2810
- }) });
2811
- }
2812
- function SummaryCard({
2813
- lines,
2814
- total,
2815
- action,
2816
- className
2817
- }) {
2818
- return /* @__PURE__ */ jsxs(
2819
- "div",
2820
- {
2821
- className: classNames(
2822
- "space-y-4 rounded-xl border border-zinc-200 bg-white p-5 dark:border-slate-700 dark:bg-slate-900",
2823
- className
2824
- ),
2825
- children: [
2826
- /* @__PURE__ */ jsx("div", { className: "space-y-2", children: lines.map((line, i) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between text-sm", children: [
2827
- /* @__PURE__ */ jsx(Span, { className: "text-zinc-500 dark:text-zinc-400", children: line.label }),
2828
- /* @__PURE__ */ jsx(
2829
- Span,
2830
- {
2831
- className: line.muted ? "text-zinc-500 dark:text-zinc-400" : "text-zinc-900 dark:text-zinc-100",
2832
- children: line.value
2833
- }
2834
- )
2835
- ] }, i)) }),
2836
- /* @__PURE__ */ jsx(Divider, {}),
2837
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
2838
- /* @__PURE__ */ jsx(Span, { className: "font-bold text-zinc-900 dark:text-zinc-100", children: total.label }),
2839
- /* @__PURE__ */ jsx(Span, { className: "text-lg font-bold text-primary", children: total.value })
2840
- ] }),
2841
- action && /* @__PURE__ */ jsx("div", { children: action })
2842
- ]
2843
- }
2844
- );
2845
- }
2846
- function getRemaining(targetDate) {
2847
- const now = Date.now();
2848
- const distance = targetDate.getTime() - now;
2849
- if (distance <= 0) {
2850
- return null;
2851
- }
2852
- const totalSeconds = Math.floor(distance / 1e3);
2853
- const days = Math.floor(totalSeconds / 86400);
2854
- const hours = Math.floor(totalSeconds % 86400 / 3600);
2855
- const minutes = Math.floor(totalSeconds % 3600 / 60);
2856
- const seconds = totalSeconds % 60;
2857
- return { days, hours, minutes, seconds };
2858
- }
2859
- function formatLabel(remaining, format) {
2860
- const { days, hours, minutes, seconds } = remaining;
2861
- if (format === "hms") {
2862
- const totalHours = days * 24 + hours;
2863
- return `${totalHours}h ${minutes}m ${seconds}s`;
2864
- }
2865
- if (format === "dhms") {
2866
- return `${days}d ${hours}h ${minutes}m ${seconds}s`;
2867
- }
2868
- if (days > 0) {
2869
- return `${days}d ${hours}h ${minutes}m`;
2870
- }
2871
- if (hours > 0) {
2872
- return `${hours}h ${minutes}m ${seconds}s`;
2873
- }
2874
- return `${minutes}m ${seconds}s`;
2875
- }
2876
- function CountdownDisplay({
2877
- targetDate,
2878
- format = "auto",
2879
- expiredLabel = "Ended",
2880
- className
2881
- }) {
2882
- const [tick, setTick] = useState(0);
2883
- useEffect(() => {
2884
- const id = window.setInterval(() => {
2885
- setTick((value) => value + 1);
2886
- }, 1e3);
2887
- return () => {
2888
- window.clearInterval(id);
2889
- };
2890
- }, []);
2891
- const remaining = useMemo(() => getRemaining(targetDate), [targetDate, tick]);
2892
- const label = remaining ? formatLabel(remaining, format) : expiredLabel;
2893
- return /* @__PURE__ */ jsx(Span, { variant: "inherit", className: classNames("tabular-nums", className), children: label });
2894
- }
2895
- function ItemRow({
2896
- thumbnail,
2897
- title,
2898
- subtitle,
2899
- rightSlot,
2900
- actions,
2901
- className
2902
- }) {
2903
- return /* @__PURE__ */ jsxs(Div, { className: classNames("flex items-start gap-4", className), children: [
2904
- thumbnail && /* @__PURE__ */ jsx(Div, { className: "flex-shrink-0", children: thumbnail }),
2905
- /* @__PURE__ */ jsxs(Div, { className: "min-w-0 flex-1", children: [
2906
- /* @__PURE__ */ jsx(Text, { size: "sm", weight: "medium", className: "line-clamp-2", children: title }),
2907
- subtitle && /* @__PURE__ */ jsx(Caption, { className: "mt-0.5", children: subtitle }),
2908
- actions && /* @__PURE__ */ jsx(Div, { className: "mt-2", children: actions })
2909
- ] }),
2910
- rightSlot && /* @__PURE__ */ jsx(Div, { className: "flex-shrink-0", children: rightSlot })
2911
- ] });
2912
- }
2913
- function HorizontalScroller({
2914
- children,
2915
- className = "",
2916
- gap = 16,
2917
- snapToItems,
2918
- showArrows,
2919
- arrowSize = "md",
2920
- showScrollbar,
2921
- showFadeEdges,
2922
- scrollContainerRef: externalRef,
2923
- onScroll,
2924
- items,
2925
- renderItem,
2926
- keyExtractor,
2927
- perView,
2928
- rows = 1,
2929
- autoScroll,
2930
- autoScrollInterval = 3500,
2931
- minItemWidth,
2932
- itemClassName = ""
2933
- }) {
2934
- const internalRef = useRef(null);
2935
- const containerRef = externalRef != null ? externalRef : internalRef;
2936
- const autoScrollTimer = useRef(
2937
- void 0
2938
- );
2939
- const scrollBy = useCallback(
2940
- (direction) => {
2941
- const el = containerRef.current;
2942
- if (!el) return;
2943
- const width = el.clientWidth;
2944
- el.scrollBy({ left: direction * width * 0.8, behavior: "smooth" });
2945
- },
2946
- [containerRef]
2947
- );
2948
- useEffect(() => {
2949
- if (!autoScroll) return;
2950
- autoScrollTimer.current = setInterval(
2951
- () => scrollBy(1),
2952
- autoScrollInterval
2953
- );
2954
- return () => clearInterval(autoScrollTimer.current);
2955
- }, [autoScroll, autoScrollInterval, scrollBy]);
2956
- const itemsMode = items != null && renderItem != null;
2957
- const arrowCls = {
2958
- sm: "w-7 h-7 text-sm",
2959
- md: "w-9 h-9 text-base",
2960
- lg: "w-11 h-11 text-lg"
2961
- }[arrowSize];
2962
- const scrollerCls = [
2963
- "flex h-full overflow-x-auto scroll-smooth",
2964
- snapToItems ? "snap-x snap-mandatory" : "",
2965
- showScrollbar ? "" : "[scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
2966
- "pb-1"
2967
- ].filter(Boolean).join(" ");
2968
- const content = itemsMode ? items.map((item, i) => /* @__PURE__ */ jsx(
2969
- "div",
2970
- {
2971
- className: [
2972
- snapToItems ? "snap-start flex-none" : "flex-none",
2973
- itemClassName
2974
- ].filter(Boolean).join(" "),
2975
- style: minItemWidth ? { minWidth: minItemWidth } : void 0,
2976
- children: renderItem(item, i)
2977
- },
2978
- keyExtractor ? keyExtractor(item, i) : i
2979
- )) : children;
2980
- if (showArrows) {
2981
- return /* @__PURE__ */ jsxs("div", { className: `relative ${className}`, children: [
2982
- showFadeEdges && /* @__PURE__ */ jsxs(Fragment, { children: [
2983
- /* @__PURE__ */ jsx("div", { className: "absolute left-0 top-0 bottom-0 w-8 bg-gradient-to-r from-white dark:from-gray-900 to-transparent z-10 pointer-events-none" }),
2984
- /* @__PURE__ */ jsx("div", { className: "absolute right-0 top-0 bottom-0 w-8 bg-gradient-to-l from-white dark:from-gray-900 to-transparent z-10 pointer-events-none" })
2985
- ] }),
2986
- /* @__PURE__ */ jsx(
2987
- "button",
2988
- {
2989
- type: "button",
2990
- onClick: () => scrollBy(-1),
2991
- "aria-label": "Previous",
2992
- className: `absolute left-0 top-1/2 -translate-y-1/2 z-20 ${arrowCls} rounded-full bg-white/90 dark:bg-gray-800/90 border border-gray-200 dark:border-gray-700 shadow flex items-center justify-center hover:bg-white dark:hover:bg-gray-700 transition-colors`,
2993
- children: "<"
2994
- }
2995
- ),
2996
- /* @__PURE__ */ jsx(
2997
- "div",
2998
- {
2999
- ref: containerRef,
3000
- onScroll,
3001
- className: scrollerCls,
3002
- style: { gap: `${gap}px`, paddingLeft: 36, paddingRight: 36 },
3003
- children: content
3004
- }
3005
- ),
3006
- /* @__PURE__ */ jsx(
3007
- "button",
3008
- {
3009
- type: "button",
3010
- onClick: () => scrollBy(1),
3011
- "aria-label": "Next",
3012
- className: `absolute right-0 top-1/2 -translate-y-1/2 z-20 ${arrowCls} rounded-full bg-white/90 dark:bg-gray-800/90 border border-gray-200 dark:border-gray-700 shadow flex items-center justify-center hover:bg-white dark:hover:bg-gray-700 transition-colors`,
3013
- children: ">"
3014
- }
3015
- )
3016
- ] });
3017
- }
3018
- return /* @__PURE__ */ jsxs("div", { className: `relative ${className}`, children: [
3019
- showFadeEdges && /* @__PURE__ */ jsxs(Fragment, { children: [
3020
- /* @__PURE__ */ jsx("div", { className: "absolute left-0 top-0 bottom-0 w-8 bg-gradient-to-r from-white dark:from-gray-900 to-transparent z-10 pointer-events-none" }),
3021
- /* @__PURE__ */ jsx("div", { className: "absolute right-0 top-0 bottom-0 w-8 bg-gradient-to-l from-white dark:from-gray-900 to-transparent z-10 pointer-events-none" })
3022
- ] }),
3023
- /* @__PURE__ */ jsx(
3024
- "div",
3025
- {
3026
- ref: containerRef,
3027
- onScroll,
3028
- className: scrollerCls,
3029
- style: { gap: `${gap}px` },
3030
- children: content
3031
- }
3032
- )
3033
- ] });
3034
- }
3035
- function useVisibleItems({
3036
- total,
3037
- minItemWidth,
3038
- arrowWidth = 36,
3039
- gap = 8
3040
- }) {
3041
- const containerRef = useRef(null);
3042
- const [visibleCount, setVisibleCount] = useState(total);
3043
- const [scrollOffset, setScrollOffset] = useState(0);
3044
- useEffect(() => {
3045
- const el = containerRef.current;
3046
- if (!el) return;
3047
- const compute = (width) => {
3048
- const totalItemsWidth = total * minItemWidth + Math.max(0, total - 1) * gap;
3049
- if (totalItemsWidth <= width) {
3050
- setVisibleCount(total);
3051
- return;
3052
- }
3053
- const usable = width - 2 * (arrowWidth + gap);
3054
- const raw = Math.floor((usable + gap) / (minItemWidth + gap));
3055
- setVisibleCount(Math.max(1, raw));
3056
- };
3057
- const ro = new ResizeObserver(([entry]) => {
3058
- if (entry) compute(entry.contentRect.width);
3059
- });
3060
- ro.observe(el);
3061
- compute(el.getBoundingClientRect().width);
3062
- return () => ro.disconnect();
3063
- }, [total, minItemWidth, arrowWidth, gap]);
3064
- useEffect(() => {
3065
- setScrollOffset((o) => Math.min(o, Math.max(0, total - visibleCount)));
3066
- }, [visibleCount, total]);
3067
- const hasOverflow = visibleCount < total;
3068
- const scrollLeft = useCallback(
3069
- () => setScrollOffset((o) => Math.max(0, o - visibleCount)),
3070
- [visibleCount]
3071
- );
3072
- const scrollRight = useCallback(
3073
- () => setScrollOffset(
3074
- (o) => Math.min(total - visibleCount, o + visibleCount)
3075
- ),
3076
- [visibleCount, total]
3077
- );
3078
- return {
3079
- containerRef,
3080
- visibleCount,
3081
- hasOverflow,
3082
- scrollOffset,
3083
- setScrollOffset,
3084
- scrollLeft,
3085
- scrollRight,
3086
- canScrollLeft: scrollOffset > 0,
3087
- canScrollRight: scrollOffset + visibleCount < total
3088
- };
3089
- }
3090
- var FLUID_GRID_MIN_WIDTHS = {
3091
- /** Tab strip items */
3092
- tabItem: 100};
3093
- var TEXT = {
3094
- body: "text-sm sm:text-base leading-relaxed",
3095
- label: "text-xs font-medium uppercase tracking-wide"};
3096
- var THEME_CONSTANTS = {
3097
- text: TEXT};
3098
- function TabStrip({
3099
- tabs,
3100
- activeKey,
3101
- onChange,
3102
- minTabWidth = FLUID_GRID_MIN_WIDTHS.tabItem,
3103
- className
3104
- }) {
3105
- const {
3106
- containerRef,
3107
- visibleCount,
3108
- hasOverflow,
3109
- scrollLeft,
3110
- scrollRight,
3111
- setScrollOffset,
3112
- scrollOffset,
3113
- canScrollLeft,
3114
- canScrollRight
3115
- } = useVisibleItems({
3116
- total: tabs.length,
3117
- minItemWidth: minTabWidth,
3118
- gap: 0
3119
- });
3120
- useEffect(() => {
3121
- const idx = tabs.findIndex((t) => t.key === activeKey);
3122
- if (idx < 0) return;
3123
- if (idx < scrollOffset) {
3124
- setScrollOffset(idx);
3125
- } else if (idx >= scrollOffset + visibleCount) {
3126
- setScrollOffset(idx - visibleCount + 1);
3127
- }
3128
- }, [activeKey, scrollOffset, visibleCount, tabs, setScrollOffset]);
3129
- const visible = tabs.slice(scrollOffset, scrollOffset + visibleCount);
3130
- return /* @__PURE__ */ jsxs(
3131
- "div",
3132
- {
3133
- ref: containerRef,
3134
- role: "tablist",
3135
- className: [
3136
- "flex items-end border-b border-zinc-200 dark:border-zinc-700",
3137
- className != null ? className : ""
3138
- ].join(" ").trim(),
3139
- children: [
3140
- hasOverflow && /* @__PURE__ */ jsx(
3141
- "button",
3142
- {
3143
- type: "button",
3144
- onClick: scrollLeft,
3145
- disabled: !canScrollLeft,
3146
- "aria-label": "Previous tabs",
3147
- className: "flex-none h-12 w-9 flex items-center justify-center text-zinc-500 disabled:opacity-30 hover:text-zinc-900 dark:hover:text-zinc-100 transition-colors",
3148
- children: "\u2039"
3149
- }
3150
- ),
3151
- visible.map((tab) => /* @__PURE__ */ jsxs(
3152
- "button",
3153
- {
3154
- type: "button",
3155
- role: "tab",
3156
- "aria-selected": tab.key === activeKey,
3157
- "aria-disabled": tab.disabled,
3158
- onClick: () => !tab.disabled && onChange(tab.key),
3159
- style: { minWidth: `${minTabWidth}px` },
3160
- className: [
3161
- "flex-1 h-12 px-4 text-sm font-medium whitespace-nowrap border-b-2 transition-colors",
3162
- tab.key === activeKey ? "border-primary-500 text-primary-600 dark:text-primary-400" : "border-transparent text-zinc-600 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-zinc-100",
3163
- tab.disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer"
3164
- ].join(" ").trim(),
3165
- children: [
3166
- tab.label,
3167
- tab.badge != null && tab.badge > 0 && /* @__PURE__ */ jsx(Span, { className: "ml-1.5 inline-flex items-center justify-center h-4 min-w-[1rem] px-1 rounded-full text-[10px] bg-primary-100 dark:bg-primary-900/40 text-primary-600 dark:text-primary-400", children: tab.badge > 99 ? "99+" : tab.badge })
3168
- ]
3169
- },
3170
- tab.key
3171
- )),
3172
- hasOverflow && /* @__PURE__ */ jsx(
3173
- "button",
3174
- {
3175
- type: "button",
3176
- onClick: scrollRight,
3177
- disabled: !canScrollRight,
3178
- "aria-label": "Next tabs",
3179
- className: "flex-none h-12 w-9 flex items-center justify-center text-zinc-500 disabled:opacity-30 hover:text-zinc-900 dark:hover:text-zinc-100 transition-colors",
3180
- children: "\u203A"
3181
- }
3182
- )
3183
- ]
3184
- }
3185
- );
3186
- }
3187
- function FormGrid({
3188
- children,
3189
- minFieldWidth = 280,
3190
- gap = 16,
3191
- className
3192
- }) {
3193
- return /* @__PURE__ */ jsx(
3194
- "div",
3195
- {
3196
- className: `flex flex-wrap ${className != null ? className : ""}`,
3197
- style: { gap: `${gap}px` },
3198
- children
3199
- }
3200
- );
3201
- }
3202
- function FormField({
3203
- children,
3204
- span = "auto",
3205
- className
3206
- }) {
3207
- const spanClass = span === "full" ? "w-full" : span === "half" ? "w-1/2 min-w-[280px]" : "flex-1 min-w-[280px]";
3208
- return /* @__PURE__ */ jsx("div", { className: `${spanClass} flex flex-col gap-1.5 ${className != null ? className : ""}`, children });
3209
- }
3210
- function DescriptionField({
3211
- label,
3212
- value,
3213
- fullWidth,
3214
- className
3215
- }) {
3216
- const isLong = fullWidth != null ? fullWidth : value.length > 80;
3217
- return /* @__PURE__ */ jsxs(
3218
- "div",
3219
- {
3220
- className: [
3221
- "flex flex-col gap-1",
3222
- isLong ? "w-full" : "flex-1 min-w-[280px]",
3223
- className != null ? className : ""
3224
- ].join(" ").trim(),
3225
- children: [
3226
- /* @__PURE__ */ jsx("dt", { className: THEME_CONSTANTS.text.label, children: label }),
3227
- /* @__PURE__ */ jsx(
3228
- "dd",
3229
- {
3230
- className: isLong ? THEME_CONSTANTS.text.body : THEME_CONSTANTS.text.body,
3231
- children: value
3232
- }
3233
- )
3234
- ]
3235
- }
3236
- );
3237
- }
3238
- function ActiveFilterChips({
3239
- filters,
3240
- onRemove,
3241
- onClearAll,
3242
- className = "",
3243
- clearAllLabel = "Clear all"
3244
- }) {
3245
- if (filters.length === 0) return null;
3246
- return /* @__PURE__ */ jsxs(
3247
- Row,
3248
- {
3249
- wrap: true,
3250
- gap: "sm",
3251
- className,
3252
- role: "list",
3253
- "aria-label": "Active filters",
3254
- children: [
3255
- filters.map((filter) => /* @__PURE__ */ jsxs(
3256
- "span",
3257
- {
3258
- role: "listitem",
3259
- className: "inline-flex items-center gap-1 text-xs font-medium rounded-lg border border-zinc-200 dark:border-slate-700 bg-zinc-50 dark:bg-slate-800 text-zinc-800 dark:text-zinc-200 py-1 pl-2 pr-1",
3260
- children: [
3261
- /* @__PURE__ */ jsxs(Span, { className: "text-zinc-500 dark:text-zinc-400 mr-0.5", children: [
3262
- filter.label,
3263
- ":"
3264
- ] }),
3265
- filter.value,
3266
- /* @__PURE__ */ jsx(
3267
- "button",
3268
- {
3269
- type: "button",
3270
- onClick: () => onRemove(filter.key),
3271
- "aria-label": `Remove ${filter.label}: ${filter.value} filter`,
3272
- className: "ml-1 inline-flex items-center justify-center w-4 h-4 rounded-full hover:bg-zinc-300 dark:hover:bg-zinc-600 transition-colors",
3273
- children: /* @__PURE__ */ jsx(
3274
- "svg",
3275
- {
3276
- className: "w-2.5 h-2.5",
3277
- fill: "none",
3278
- viewBox: "0 0 24 24",
3279
- stroke: "currentColor",
3280
- strokeWidth: 3,
3281
- "aria-hidden": "true",
3282
- children: /* @__PURE__ */ jsx(
3283
- "path",
3284
- {
3285
- strokeLinecap: "round",
3286
- strokeLinejoin: "round",
3287
- d: "M6 18L18 6M6 6l12 12"
3288
- }
3289
- )
3290
- }
3291
- )
3292
- }
3293
- )
3294
- ]
3295
- },
3296
- filter.key
3297
- )),
3298
- /* @__PURE__ */ jsx(
3299
- "button",
3300
- {
3301
- type: "button",
3302
- onClick: onClearAll,
3303
- className: "text-xs font-medium text-primary hover:underline p-2",
3304
- children: clearAllLabel
3305
- }
3306
- )
3307
- ]
3308
- }
3309
- );
3310
- }
3311
- function SortDropdown({
3312
- value,
3313
- onChange,
3314
- options,
3315
- label,
3316
- className = ""
3317
- }) {
3318
- return /* @__PURE__ */ jsxs(Row, { gap: "sm", className, children: [
3319
- label && /* @__PURE__ */ jsx(Span, { variant: "secondary", size: "sm", className: "whitespace-nowrap", children: label }),
3320
- /* @__PURE__ */ jsx(
3321
- Select,
3322
- {
3323
- value: value != null ? value : "",
3324
- onChange,
3325
- options,
3326
- className: "h-9 min-h-9"
3327
- }
3328
- )
3329
- ] });
3330
- }
3331
- var DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];
3332
- function TablePagination({
3333
- currentPage,
3334
- totalPages,
3335
- pageSize,
3336
- total,
3337
- onPageChange,
3338
- onPageSizeChange,
3339
- pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS,
3340
- isLoading = false,
3341
- className = "",
3342
- compact = false,
3343
- labels
3344
- }) {
3345
- var _a, _b, _c, _d, _e;
3346
- const l = {
3347
- paginationLabel: (_a = labels == null ? void 0 : labels.paginationLabel) != null ? _a : "Pagination",
3348
- showing: (_b = labels == null ? void 0 : labels.showing) != null ? _b : "Showing",
3349
- of: (_c = labels == null ? void 0 : labels.of) != null ? _c : "of",
3350
- results: (_d = labels == null ? void 0 : labels.results) != null ? _d : "results",
3351
- perPage: (_e = labels == null ? void 0 : labels.perPage) != null ? _e : "Per page"
3352
- };
3353
- if (compact) {
3354
- return /* @__PURE__ */ jsx(
3355
- "div",
3356
- {
3357
- role: "navigation",
3358
- "aria-label": l.paginationLabel,
3359
- className: `flex items-center gap-0.5 ${className}`,
3360
- children: /* @__PURE__ */ jsx(
3361
- Pagination,
3362
- {
3363
- currentPage,
3364
- totalPages,
3365
- onPageChange,
3366
- disabled: isLoading,
3367
- size: "sm",
3368
- maxVisible: 5
3369
- }
3370
- )
3371
- }
3372
- );
3373
- }
3374
- const from = total === 0 ? 0 : (currentPage - 1) * pageSize + 1;
3375
- const to = Math.min(currentPage * pageSize, total);
3376
- return /* @__PURE__ */ jsxs(
3377
- "div",
3378
- {
3379
- role: "navigation",
3380
- "aria-label": l.paginationLabel,
3381
- className: [
3382
- "flex flex-col sm:flex-row items-center gap-3 px-4 py-3",
3383
- "border-t border-zinc-100 dark:border-slate-800/80",
3384
- className
3385
- ].join(" "),
3386
- children: [
3387
- /* @__PURE__ */ jsxs(
3388
- Text,
3389
- {
3390
- size: "xs",
3391
- variant: "none",
3392
- className: "text-zinc-400 dark:text-slate-500 tabular-nums sm:mr-auto",
3393
- children: [
3394
- l.showing,
3395
- " ",
3396
- /* @__PURE__ */ jsxs(Span, { className: "font-semibold text-zinc-600 dark:text-slate-300", children: [
3397
- from,
3398
- "\u2013",
3399
- to
3400
- ] }),
3401
- " ",
3402
- l.of,
3403
- " ",
3404
- /* @__PURE__ */ jsx(Span, { className: "font-semibold text-zinc-600 dark:text-slate-300", children: new Intl.NumberFormat().format(total) }),
3405
- " ",
3406
- l.results
3407
- ]
3408
- }
3409
- ),
3410
- /* @__PURE__ */ jsx("div", { className: "rounded-xl p-0.5 bg-zinc-100 dark:bg-slate-800 inline-flex", children: /* @__PURE__ */ jsx(
3411
- Pagination,
3412
- {
3413
- currentPage,
3414
- totalPages,
3415
- onPageChange,
3416
- disabled: isLoading
3417
- }
3418
- ) }),
3419
- onPageSizeChange && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 sm:ml-1", children: [
3420
- /* @__PURE__ */ jsx(
3421
- "label",
3422
- {
3423
- htmlFor: "page-size-select",
3424
- className: "text-xs text-zinc-400 dark:text-slate-500 whitespace-nowrap",
3425
- children: l.perPage
3426
- }
3427
- ),
3428
- /* @__PURE__ */ jsx(
3429
- Select,
3430
- {
3431
- id: "page-size-select",
3432
- value: String(pageSize),
3433
- onChange: (value) => onPageSizeChange(Number(value)),
3434
- disabled: isLoading,
3435
- "aria-label": l.perPage,
3436
- className: "text-xs h-7 py-0 px-2 rounded-lg",
3437
- options: pageSizeOptions.map((s) => ({
3438
- value: String(s),
3439
- label: String(s)
3440
- }))
3441
- }
3442
- )
3443
- ] })
3444
- ]
3445
- }
3446
- );
3447
- }
3448
- function DataTable({
3449
- data,
3450
- columns,
3451
- keyExtractor: keyExtractorProp,
3452
- onRowClick,
3453
- loading = false,
3454
- emptyMessage,
3455
- actions,
3456
- mobileCardRender,
3457
- emptyState,
3458
- emptyIcon,
3459
- emptyTitle,
3460
- tableConfig,
3461
- paginationConfig,
3462
- externalPagination = false,
3463
- // Explicit flat props — override tableConfig when provided
3464
- pageSize: pageSizeProp,
3465
- stickyHeader: stickyHeaderProp,
3466
- striped: stripedProp,
3467
- showViewToggle: showViewToggleProp,
3468
- showTableView = true,
3469
- viewMode: controlledViewMode,
3470
- defaultViewMode: defaultViewModeProp,
3471
- onViewModeChange,
3472
- selectable: selectableProp,
3473
- selectedIds = [],
3474
- onSelectionChange,
3475
- gridCols = "cards",
3476
- labels = {}
3477
- }) {
3478
- const resolvedTable = mergeTableConfig(tableConfig);
3479
- const resolvedPag = __spreadValues(__spreadValues(__spreadValues({}, DEFAULT_PAGINATION_CONFIG), tableConfig == null ? void 0 : tableConfig.pagination), paginationConfig);
3480
- const keyExtractor = keyExtractorProp != null ? keyExtractorProp : ((item) => {
3481
- var _a;
3482
- return (_a = item.id) != null ? _a : JSON.stringify(item);
3483
- });
3484
- const pageSize = pageSizeProp != null ? pageSizeProp : resolvedTable.pageSize;
3485
- const stickyHeader = stickyHeaderProp != null ? stickyHeaderProp : resolvedTable.sticky.enabled;
3486
- const striped = stripedProp != null ? stripedProp : resolvedTable.striped;
3487
- const showViewToggle = showViewToggleProp != null ? showViewToggleProp : resolvedTable.showViewToggle;
3488
- const selectable = selectableProp != null ? selectableProp : resolvedTable.selectable;
3489
- const defaultViewMode = defaultViewModeProp != null ? defaultViewModeProp : resolvedTable.defaultViewMode;
3490
- const [sortKey, setSortKey] = useState(null);
3491
- const [sortDirection, setSortDirection] = useState(null);
3492
- const [currentPage, setCurrentPage] = useState(1);
3493
- const [internalViewMode, setInternalViewMode] = useState(defaultViewMode);
3494
- const activeViewMode = controlledViewMode != null ? controlledViewMode : internalViewMode;
3495
- const {
3496
- loading: labelLoading = "Loading\u2026",
3497
- noDataTitle = "No data found",
3498
- noDataDescription = "There are no items to display.",
3499
- actions: labelActions = "Actions",
3500
- tableView = "Table view",
3501
- gridView = "Grid view",
3502
- listView = "List view"
3503
- } = labels;
3504
- const handleViewModeChange = (mode) => {
3505
- if (controlledViewMode === void 0) setInternalViewMode(mode);
3506
- onViewModeChange == null ? void 0 : onViewModeChange(mode);
3507
- };
3508
- const handleSort = (key) => {
3509
- const col = columns.find((c) => c.key === key);
3510
- if (!(col == null ? void 0 : col.sortable)) return;
3511
- if (sortKey === key) {
3512
- if (sortDirection === "asc") setSortDirection("desc");
3513
- else {
3514
- setSortKey(null);
3515
- setSortDirection(null);
3516
- }
3517
- } else {
3518
- setSortKey(key);
3519
- setSortDirection("asc");
3520
- }
3521
- };
3522
- const sortedData = useMemo(() => {
3523
- const sorted = [...data];
3524
- if (sortKey && sortDirection) {
3525
- sorted.sort((a, b) => {
3526
- const aVal = a[sortKey];
3527
- const bVal = b[sortKey];
3528
- if (aVal == null) return 1;
3529
- if (bVal == null) return -1;
3530
- if (typeof aVal === "string" && typeof bVal === "string") {
3531
- return sortDirection === "asc" ? aVal.localeCompare(bVal) : bVal.localeCompare(aVal);
3532
- }
3533
- if (aVal < bVal) return sortDirection === "asc" ? -1 : 1;
3534
- if (aVal > bVal) return sortDirection === "asc" ? 1 : -1;
3535
- return 0;
3536
- });
3537
- }
3538
- return sorted;
3539
- }, [data, sortKey, sortDirection]);
3540
- const paginatedData = useMemo(() => {
3541
- if (externalPagination) return sortedData;
3542
- const start = (currentPage - 1) * pageSize;
3543
- return sortedData.slice(start, start + pageSize);
3544
- }, [sortedData, currentPage, externalPagination, pageSize]);
3545
- const totalPages = Math.ceil(sortedData.length / pageSize);
3546
- if (loading) {
3547
- return /* @__PURE__ */ jsx("div", { className: "rounded-2xl border border-zinc-200 dark:border-slate-700 overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-64", children: /* @__PURE__ */ jsx(Spinner, { size: "lg", label: labelLoading }) }) });
3548
- }
3549
- if (data.length === 0) {
3550
- if (emptyState) return /* @__PURE__ */ jsx(Fragment, { children: emptyState });
3551
- return /* @__PURE__ */ jsx("div", { className: "rounded-2xl border border-zinc-200 dark:border-slate-700 overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-64", children: /* @__PURE__ */ jsxs("div", { className: "text-center px-4", children: [
3552
- emptyIcon != null ? emptyIcon : /* @__PURE__ */ jsx(
3553
- "svg",
3554
- {
3555
- className: "mx-auto h-12 w-12 text-zinc-400",
3556
- fill: "none",
3557
- viewBox: "0 0 24 24",
3558
- stroke: "currentColor",
3559
- "aria-hidden": "true",
3560
- children: /* @__PURE__ */ jsx(
3561
- "path",
3562
- {
3563
- strokeLinecap: "round",
3564
- strokeLinejoin: "round",
3565
- strokeWidth: 1.5,
3566
- d: "M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4"
3567
- }
3568
- )
3569
- }
3570
- ),
3571
- /* @__PURE__ */ jsx(Text, { size: "sm", weight: "semibold", className: "mt-4", children: emptyTitle != null ? emptyTitle : noDataTitle }),
3572
- /* @__PURE__ */ jsx(Text, { size: "sm", variant: "secondary", className: "mt-1", children: emptyMessage != null ? emptyMessage : noDataDescription })
3573
- ] }) }) });
3574
- }
3575
- const renderViewToggle = () => {
3576
- if (!showViewToggle) return null;
3577
- return /* @__PURE__ */ jsxs(
3578
- "div",
3579
- {
3580
- className: "flex justify-end gap-1",
3581
- role: "toolbar",
3582
- "aria-label": "View mode",
3583
- children: [
3584
- showTableView && /* @__PURE__ */ jsx(
3585
- Button,
3586
- {
3587
- type: "button",
3588
- variant: "ghost",
3589
- size: "sm",
3590
- onClick: () => handleViewModeChange("table"),
3591
- "aria-label": tableView,
3592
- "aria-pressed": activeViewMode === "table",
3593
- className: `hidden sm:flex items-center justify-center p-2 rounded-lg ring-1 transition-colors ${activeViewMode === "table" ? "bg-primary/5 text-primary dark:bg-primary/10 ring-primary/30" : "text-zinc-500 dark:text-zinc-400 ring-zinc-200 dark:ring-slate-700 hover:bg-zinc-100 dark:hover:bg-slate-800"}`,
3594
- children: /* @__PURE__ */ jsx(
3595
- "svg",
3596
- {
3597
- className: "w-4 h-4",
3598
- fill: "none",
3599
- viewBox: "0 0 24 24",
3600
- stroke: "currentColor",
3601
- strokeWidth: 1.5,
3602
- "aria-hidden": "true",
3603
- children: /* @__PURE__ */ jsx(
3604
- "path",
3605
- {
3606
- strokeLinecap: "round",
3607
- strokeLinejoin: "round",
3608
- d: "M3 10h18M3 6h18M3 14h18M3 18h18"
3609
- }
3610
- )
3611
- }
3612
- )
3613
- }
3614
- ),
3615
- /* @__PURE__ */ jsx(
3616
- Button,
3617
- {
3618
- type: "button",
3619
- variant: "ghost",
3620
- size: "sm",
3621
- onClick: () => handleViewModeChange("grid"),
3622
- "aria-label": gridView,
3623
- "aria-pressed": activeViewMode === "grid",
3624
- className: `flex items-center justify-center p-2 rounded-lg ring-1 transition-colors ${activeViewMode === "grid" ? "bg-primary/5 text-primary dark:bg-primary/10 ring-primary/30" : "text-zinc-500 dark:text-zinc-400 ring-zinc-200 dark:ring-slate-700 hover:bg-zinc-100 dark:hover:bg-slate-800"}`,
3625
- children: /* @__PURE__ */ jsx(
3626
- "svg",
3627
- {
3628
- className: "w-4 h-4",
3629
- fill: "none",
3630
- viewBox: "0 0 24 24",
3631
- stroke: "currentColor",
3632
- strokeWidth: 1.5,
3633
- "aria-hidden": "true",
3634
- children: /* @__PURE__ */ jsx(
3635
- "path",
3636
- {
3637
- strokeLinecap: "round",
3638
- strokeLinejoin: "round",
3639
- d: "M3.75 6A2.25 2.25 0 016 3.75h2.25A2.25 2.25 0 0110.5 6v2.25a2.25 2.25 0 01-2.25 2.25H6a2.25 2.25 0 01-2.25-2.25V6zM3.75 15.75A2.25 2.25 0 016 13.5h2.25a2.25 2.25 0 012.25 2.25V18a2.25 2.25 0 01-2.25 2.25H6A2.25 2.25 0 013.75 18v-2.25zM13.5 6a2.25 2.25 0 012.25-2.25H18A2.25 2.25 0 0120.25 6v2.25A2.25 2.25 0 0118 10.5h-2.25a2.25 2.25 0 01-2.25-2.25V6zM13.5 15.75a2.25 2.25 0 012.25-2.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-2.25A2.25 2.25 0 0113.5 18v-2.25z"
3640
- }
3641
- )
3642
- }
3643
- )
3644
- }
3645
- ),
3646
- /* @__PURE__ */ jsx(
3647
- Button,
3648
- {
3649
- type: "button",
3650
- variant: "ghost",
3651
- size: "sm",
3652
- onClick: () => handleViewModeChange("list"),
3653
- "aria-label": listView,
3654
- "aria-pressed": activeViewMode === "list",
3655
- className: `flex items-center justify-center p-2 rounded-lg ring-1 transition-colors ${activeViewMode === "list" ? "bg-primary/5 text-primary dark:bg-primary/10 ring-primary/30" : "text-zinc-500 dark:text-zinc-400 ring-zinc-200 dark:ring-slate-700 hover:bg-zinc-100 dark:hover:bg-slate-800"}`,
3656
- children: /* @__PURE__ */ jsx(
3657
- "svg",
3658
- {
3659
- className: "w-4 h-4",
3660
- fill: "none",
3661
- viewBox: "0 0 24 24",
3662
- stroke: "currentColor",
3663
- strokeWidth: 1.5,
3664
- "aria-hidden": "true",
3665
- children: /* @__PURE__ */ jsx(
3666
- "path",
3667
- {
3668
- strokeLinecap: "round",
3669
- strokeLinejoin: "round",
3670
- d: "M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zM3.75 12h.007v.008H3.75V12zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm-.375 5.25h.007v.008H3.75v-.008zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z"
3671
- }
3672
- )
3673
- }
3674
- )
3675
- }
3676
- )
3677
- ]
3678
- }
3679
- );
3680
- };
3681
- const renderCardGrid = (mode) => {
3682
- if (!mobileCardRender) return null;
3683
- return /* @__PURE__ */ jsx(
3684
- "div",
3685
- {
3686
- className: mode === "grid" ? `${GRID_MAP[gridCols]} gap-6` : "flex flex-col gap-4",
3687
- children: paginatedData.map((item) => /* @__PURE__ */ jsx(
3688
- SelectableCard,
3689
- {
3690
- id: keyExtractor(item),
3691
- selectable,
3692
- selected: selectedIds.includes(keyExtractor(item)),
3693
- listMode: mode === "list",
3694
- onToggle: (id, checked) => onSelectionChange == null ? void 0 : onSelectionChange(
3695
- checked ? [...selectedIds, id] : selectedIds.filter((s) => s !== id)
3696
- ),
3697
- children: mobileCardRender(item)
3698
- },
3699
- keyExtractor(item)
3700
- ))
3701
- }
3702
- );
3703
- };
3704
- return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
3705
- renderViewToggle(),
3706
- activeViewMode !== "table" && mobileCardRender && renderCardGrid(activeViewMode),
3707
- activeViewMode === "table" && mobileCardRender && /* @__PURE__ */ jsx("div", { className: "md:hidden space-y-6", children: paginatedData.map((item) => /* @__PURE__ */ jsx(
3708
- SelectableCard,
3709
- {
3710
- id: keyExtractor(item),
3711
- selectable,
3712
- selected: selectedIds.includes(keyExtractor(item)),
3713
- onToggle: (id, checked) => onSelectionChange == null ? void 0 : onSelectionChange(
3714
- checked ? [...selectedIds, id] : selectedIds.filter((s) => s !== id)
3715
- ),
3716
- children: mobileCardRender(item)
3717
- },
3718
- keyExtractor(item)
3719
- )) }),
3720
- activeViewMode === "table" && /* @__PURE__ */ jsx("div", { className: "rounded-2xl border border-zinc-200 dark:border-slate-700 overflow-hidden", children: /* @__PURE__ */ jsx(
3721
- "div",
3722
- {
3723
- className: `overflow-x-auto ${stickyHeader ? "max-h-[600px] overflow-y-auto" : ""}`,
3724
- children: /* @__PURE__ */ jsxs("table", { className: "min-w-full divide-y divide-zinc-200 dark:divide-slate-700", children: [
3725
- /* @__PURE__ */ jsx(
3726
- "thead",
3727
- {
3728
- className: `bg-zinc-50 dark:bg-slate-800 ${stickyHeader ? "sticky top-0 z-10" : ""}`,
3729
- children: /* @__PURE__ */ jsxs("tr", { children: [
3730
- selectable && /* @__PURE__ */ jsx("th", { scope: "col", className: "px-4 py-3 w-8", children: /* @__PURE__ */ jsx(
3731
- "input",
3732
- {
3733
- type: "checkbox",
3734
- className: "rounded border-zinc-300",
3735
- "aria-label": "Select all on page",
3736
- checked: paginatedData.length > 0 && paginatedData.every(
3737
- (item) => selectedIds.includes(keyExtractor(item))
3738
- ),
3739
- onChange: (e) => {
3740
- const pageIds = paginatedData.map(keyExtractor);
3741
- onSelectionChange == null ? void 0 : onSelectionChange(
3742
- e.target.checked ? [.../* @__PURE__ */ new Set([...selectedIds, ...pageIds])] : selectedIds.filter(
3743
- (id) => !pageIds.includes(id)
3744
- )
3745
- );
3746
- }
3747
- }
3748
- ) }),
3749
- columns.map((col) => /* @__PURE__ */ jsx(
3750
- "th",
3751
- {
3752
- scope: "col",
3753
- "aria-sort": col.sortable ? sortKey === col.key ? sortDirection === "asc" ? "ascending" : "descending" : "none" : void 0,
3754
- className: `px-6 py-3 text-left text-xs font-medium text-zinc-500 dark:text-zinc-400 uppercase tracking-wider ${col.sortable ? "cursor-pointer select-none hover:bg-zinc-100 dark:hover:bg-slate-700" : ""}`,
3755
- style: { width: col.width },
3756
- onClick: () => col.sortable && handleSort(col.key),
3757
- children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
3758
- col.header,
3759
- col.sortable && /* @__PURE__ */ jsx("span", { className: "text-zinc-400", "aria-hidden": "true", children: sortKey === col.key ? sortDirection === "asc" ? "\u2191" : "\u2193" : /* @__PURE__ */ jsx("span", { className: "opacity-30", children: "\u2195" }) })
3760
- ] })
3761
- },
3762
- col.key
3763
- )),
3764
- actions && /* @__PURE__ */ jsx(
3765
- "th",
3766
- {
3767
- scope: "col",
3768
- className: "px-6 py-3 text-right text-xs font-medium text-zinc-500 dark:text-zinc-400 uppercase tracking-wider",
3769
- children: labelActions
3770
- }
3771
- )
3772
- ] })
3773
- }
3774
- ),
3775
- /* @__PURE__ */ jsx("tbody", { className: "bg-white dark:bg-slate-900 divide-y divide-zinc-200 dark:divide-slate-700", children: paginatedData.map((item, index) => /* @__PURE__ */ jsxs(
3776
- "tr",
3777
- {
3778
- className: [
3779
- striped && index % 2 === 1 ? "bg-zinc-50 dark:bg-slate-800" : "",
3780
- onRowClick ? "cursor-pointer hover:bg-zinc-50 dark:hover:bg-slate-800/60" : "",
3781
- "transition-colors duration-150"
3782
- ].join(" "),
3783
- onClick: () => onRowClick == null ? void 0 : onRowClick(item),
3784
- children: [
3785
- selectable && /* @__PURE__ */ jsx(
3786
- "td",
3787
- {
3788
- className: "px-4 py-4 w-8",
3789
- onClick: (e) => e.stopPropagation(),
3790
- children: /* @__PURE__ */ jsx(
3791
- "input",
3792
- {
3793
- type: "checkbox",
3794
- className: "rounded border-zinc-300",
3795
- "aria-label": "Select row",
3796
- checked: selectedIds.includes(keyExtractor(item)),
3797
- onChange: (e) => {
3798
- const id = keyExtractor(item);
3799
- onSelectionChange == null ? void 0 : onSelectionChange(
3800
- e.target.checked ? [...selectedIds, id] : selectedIds.filter((s) => s !== id)
3801
- );
3802
- }
3803
- }
3804
- )
3805
- }
3806
- ),
3807
- columns.map((col) => {
3808
- var _a;
3809
- return /* @__PURE__ */ jsx(
3810
- "td",
3811
- {
3812
- className: "px-6 py-4 whitespace-nowrap text-sm text-zinc-900 dark:text-zinc-100",
3813
- children: col.render ? col.render(item) : (_a = item[col.key]) != null ? _a : "-"
3814
- },
3815
- col.key
3816
- );
3817
- }),
3818
- actions && /* @__PURE__ */ jsx(
3819
- "td",
3820
- {
3821
- className: "px-6 py-4 whitespace-nowrap text-right text-sm font-medium",
3822
- onClick: (e) => e.stopPropagation(),
3823
- children: actions(item)
3824
- }
3825
- )
3826
- ]
3827
- },
3828
- keyExtractor(item)
3829
- )) })
3830
- ] })
3831
- }
3832
- ) }),
3833
- !externalPagination && totalPages > 1 && /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(
3834
- Pagination,
3835
- {
3836
- currentPage,
3837
- totalPages,
3838
- onPageChange: setCurrentPage,
3839
- maxVisible: resolvedPag.maxVisible,
3840
- showFirstLast: resolvedPag.showFirstLast,
3841
- showPrevNext: resolvedPag.showPrevNext,
3842
- size: resolvedPag.size
3843
- }
3844
- ) })
3845
- ] });
3846
- }
3847
- function SelectableCard({
3848
- id,
3849
- selectable,
3850
- selected,
3851
- onToggle,
3852
- children,
3853
- listMode = false
3854
- }) {
3855
- if (!selectable) return /* @__PURE__ */ jsx("div", { className: "h-full", children });
3856
- return /* @__PURE__ */ jsxs("div", { className: "relative group h-full", children: [
3857
- /* @__PURE__ */ jsx(
3858
- "div",
3859
- {
3860
- className: [
3861
- "absolute z-10",
3862
- listMode ? "left-2 top-1/2 -translate-y-1/2" : "top-2 left-2"
3863
- ].join(" "),
3864
- onClick: (e) => e.stopPropagation(),
3865
- children: /* @__PURE__ */ jsx("div", { className: "w-6 h-6 rounded-md bg-white/95 dark:bg-slate-800/95 shadow-md flex items-center justify-center", children: /* @__PURE__ */ jsxs("div", { className: "relative flex items-center justify-center", children: [
3866
- /* @__PURE__ */ jsx(
3867
- "input",
3868
- {
3869
- type: "checkbox",
3870
- className: [
3871
- "w-4 h-4 rounded cursor-pointer transition-all appearance-none",
3872
- selected ? "border-2 border-primary bg-primary" : "border-2 border-zinc-500 dark:border-slate-400 bg-transparent group-hover:border-primary"
3873
- ].join(" "),
3874
- checked: selected,
3875
- onChange: (e) => onToggle(id, e.target.checked),
3876
- "aria-label": "Select item"
3877
- }
3878
- ),
3879
- selected && /* @__PURE__ */ jsx(
3880
- "svg",
3881
- {
3882
- className: "absolute inset-0 m-auto w-2.5 h-2.5 text-white pointer-events-none",
3883
- fill: "none",
3884
- stroke: "currentColor",
3885
- viewBox: "0 0 24 24",
3886
- "aria-hidden": "true",
3887
- children: /* @__PURE__ */ jsx(
3888
- "path",
3889
- {
3890
- strokeLinecap: "round",
3891
- strokeLinejoin: "round",
3892
- strokeWidth: 3,
3893
- d: "M5 13l4 4L19 7"
3894
- }
3895
- )
3896
- }
3897
- )
3898
- ] }) })
3899
- }
3900
- ),
3901
- selected && /* @__PURE__ */ jsx(
3902
- "div",
3903
- {
3904
- className: "absolute inset-0 z-[5] rounded-xl ring-2 ring-primary ring-offset-0 pointer-events-none",
3905
- "aria-hidden": "true"
3906
- }
3907
- ),
3908
- children
3909
- ] });
3910
- }
3911
-
3912
- // src/ui/animation.helper.ts
3913
- var easings = {
3914
- linear: (t) => t,
3915
- easeInQuad: (t) => t * t,
3916
- easeOutQuad: (t) => t * (2 - t),
3917
- easeInOutQuad: (t) => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t,
3918
- easeInCubic: (t) => t * t * t,
3919
- easeOutCubic: (t) => --t * t * t + 1,
3920
- easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1,
3921
- easeInQuart: (t) => t * t * t * t,
3922
- easeOutQuart: (t) => 1 - --t * t * t * t,
3923
- easeInOutQuart: (t) => t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t
3924
- };
3925
-
3926
- // src/ui/color.helper.ts
3927
- function hexToRgb(hex) {
3928
- const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
3929
- return result ? {
3930
- r: parseInt(result[1], 16),
3931
- g: parseInt(result[2], 16),
3932
- b: parseInt(result[3], 16)
3933
- } : null;
3934
- }
3935
- function rgbToHex(r, g, b) {
3936
- return "#" + [r, g, b].map((x) => {
3937
- const hex = x.toString(16);
3938
- return hex.length === 1 ? "0" + hex : hex;
3939
- }).join("");
3940
- }
3941
- function getContrastColor(hex) {
3942
- const rgb = hexToRgb(hex);
3943
- if (!rgb) return "#000000";
3944
- const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;
3945
- return luminance > 0.5 ? "#000000" : "#ffffff";
3946
- }
3947
- function SideModal({
3948
- isOpen,
3949
- onClose,
3950
- title,
3951
- side = "right",
3952
- children,
3953
- className = ""
3954
- }) {
3955
- const panelRef = useRef(null);
3956
- const titleId = useRef(`side-modal-title-${Math.random().toString(36).slice(2, 8)}`);
3957
- useEffect(() => {
3958
- if (!isOpen) return;
3959
- const handler = (e) => {
3960
- if (e.key === "Escape") onClose();
3961
- };
3962
- document.addEventListener("keydown", handler);
3963
- return () => document.removeEventListener("keydown", handler);
3964
- }, [isOpen, onClose]);
3965
- useEffect(() => {
3966
- if (isOpen) {
3967
- const el = panelRef.current;
3968
- if (el) {
3969
- const focusable = el.querySelector(
3970
- 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
3971
- );
3972
- focusable == null ? void 0 : focusable.focus();
3973
- }
3974
- }
3975
- }, [isOpen]);
3976
- useEffect(() => {
3977
- if (isOpen) {
3978
- document.body.style.overflow = "hidden";
3979
- } else {
3980
- document.body.style.overflow = "";
3981
- }
3982
- return () => {
3983
- document.body.style.overflow = "";
3984
- };
3985
- }, [isOpen]);
3986
- if (!isOpen) return null;
3987
- const translateOut = side === "right" ? "translate-x-full" : "-translate-x-full";
3988
- const origin = side === "right" ? "right-0" : "left-0";
3989
- return /* @__PURE__ */ jsxs(
3990
- Div,
3991
- {
3992
- className: "fixed inset-0 z-50 flex",
3993
- "aria-hidden": !isOpen,
3994
- children: [
3995
- /* @__PURE__ */ jsx(
3996
- Div,
3997
- {
3998
- className: "absolute inset-0 bg-black/50 transition-opacity duration-300",
3999
- onClick: onClose,
4000
- "aria-hidden": "true"
4001
- }
4002
- ),
4003
- /* @__PURE__ */ jsxs(
4004
- Div,
4005
- {
4006
- ref: panelRef,
4007
- role: "dialog",
4008
- "aria-modal": "true",
4009
- "aria-labelledby": title ? titleId.current : void 0,
4010
- className: `
4011
- absolute inset-y-0 ${origin} flex flex-col
4012
- w-full sm:w-[min(60vw,_672px)]
4013
- bg-white dark:bg-zinc-900
4014
- shadow-2xl
4015
- transition-transform duration-300 ease-in-out
4016
- ${isOpen ? "translate-x-0" : translateOut}
4017
- ${className}
4018
- `,
4019
- children: [
4020
- title && /* @__PURE__ */ jsxs(Div, { className: "flex items-center justify-between border-b border-neutral-200 dark:border-zinc-700 px-5 py-4 flex-shrink-0", children: [
4021
- /* @__PURE__ */ jsx(
4022
- Heading,
4023
- {
4024
- level: 2,
4025
- id: titleId.current,
4026
- className: "text-base font-semibold text-neutral-900 dark:text-white truncate",
4027
- children: title
4028
- }
4029
- ),
4030
- /* @__PURE__ */ jsx(
4031
- Button,
4032
- {
4033
- variant: "ghost",
4034
- size: "sm",
4035
- onClick: onClose,
4036
- "aria-label": "Close panel",
4037
- className: "ml-2 flex-shrink-0",
4038
- children: "\u2715"
4039
- }
4040
- )
4041
- ] }),
4042
- /* @__PURE__ */ jsx(Div, { className: "flex-1 overflow-y-auto p-5", children })
4043
- ]
4044
- }
4045
- )
4046
- ]
4047
- }
4048
- );
4049
- }
4050
- var ALLOWED_TAGS = /* @__PURE__ */ new Set([
4051
- "p",
4052
- "br",
4053
- "strong",
4054
- "em",
4055
- "u",
4056
- "s",
4057
- "del",
4058
- "ins",
4059
- "b",
4060
- "i",
4061
- "mark",
4062
- "code",
4063
- "pre",
4064
- "blockquote",
4065
- "h1",
4066
- "h2",
4067
- "h3",
4068
- "h4",
4069
- "h5",
4070
- "h6",
4071
- "ul",
4072
- "ol",
4073
- "li",
4074
- "a",
4075
- "hr",
4076
- "table",
4077
- "thead",
4078
- "tbody",
4079
- "tr",
4080
- "th",
4081
- "td",
4082
- "caption",
4083
- "figure",
4084
- "figcaption",
4085
- "img",
4086
- "picture",
4087
- "span",
4088
- "div",
4089
- "section",
4090
- "article"
4091
- ]);
4092
- var ALLOWED_ATTRS = {
4093
- "*": ["class", "id", "lang", "dir", "aria-label", "role", "tabindex"],
4094
- a: ["href", "title", "target", "rel"],
4095
- img: ["src", "alt", "width", "height", "loading", "data-align"],
4096
- td: ["colspan", "rowspan"],
4097
- th: ["colspan", "rowspan", "scope"],
4098
- ol: ["type", "start"]
4099
- };
4100
- function sanitiseHtml(dirty) {
4101
- if (typeof window === "undefined") {
4102
- return dirty;
4103
- }
4104
- const dp = new DOMParser();
4105
- const doc = dp.parseFromString(dirty, "text/html");
4106
- function walk(node) {
4107
- var _a, _b, _c, _d, _e;
4108
- const children = Array.from(node.children);
4109
- for (const child of children) {
4110
- const tag = child.tagName.toLowerCase();
4111
- if (!ALLOWED_TAGS.has(tag)) {
4112
- node.replaceChild(
4113
- document.createTextNode((_a = child.textContent) != null ? _a : ""),
4114
- child
4115
- );
4116
- continue;
4117
- }
4118
- const attrNames = Array.from(child.attributes).map((a) => a.name);
4119
- const allowed = [
4120
- ...(_b = ALLOWED_ATTRS["*"]) != null ? _b : [],
4121
- ...(_c = ALLOWED_ATTRS[tag]) != null ? _c : []
4122
- ];
4123
- for (const attr of attrNames) {
4124
- if (!allowed.includes(attr)) {
4125
- child.removeAttribute(attr);
4126
- }
4127
- }
4128
- if (tag === "a") {
4129
- const href = (_d = child.getAttribute("href")) != null ? _d : "";
4130
- if (/^javascript:/i.test(href)) {
4131
- child.removeAttribute("href");
4132
- }
4133
- if (!href.startsWith("/") && !href.startsWith("#")) {
4134
- child.setAttribute("rel", "noopener noreferrer");
4135
- child.setAttribute("target", "_blank");
4136
- }
4137
- }
4138
- if (tag === "img") {
4139
- const src = (_e = child.getAttribute("src")) != null ? _e : "";
4140
- if (/^data:/i.test(src)) {
4141
- child.removeAttribute("src");
4142
- }
4143
- }
4144
- walk(child);
4145
- }
4146
- }
4147
- walk(doc.body);
4148
- return doc.body.innerHTML;
4149
- }
4150
- function attachCopyButtons(container) {
4151
- container.querySelectorAll("pre").forEach((pre) => {
4152
- if (pre.querySelector("[data-copy-btn]")) return;
4153
- pre.style.position = "relative";
4154
- const btn = document.createElement("button");
4155
- btn.dataset.copyBtn = "1";
4156
- btn.type = "button";
4157
- btn.setAttribute("aria-label", "Copy code");
4158
- btn.textContent = "Copy";
4159
- btn.style.cssText = "position:absolute;top:8px;right:8px;padding:2px 10px;font-size:11px;font-family:inherit;border-radius:6px;border:1px solid rgba(148,163,184,.4);background:rgba(30,41,59,.75);color:#e2e8f0;cursor:pointer;line-height:1.6;user-select:none;transition:background .15s;";
4160
- btn.addEventListener("click", () => {
4161
- var _a, _b, _c;
4162
- const code = (_c = (_b = (_a = pre.querySelector("code")) == null ? void 0 : _a.textContent) != null ? _b : pre.textContent) != null ? _c : "";
4163
- navigator.clipboard.writeText(code).then(() => {
4164
- btn.textContent = "Copied!";
4165
- setTimeout(() => {
4166
- btn.textContent = "Copy";
4167
- }, 1800);
4168
- }).catch(() => {
4169
- });
4170
- });
4171
- pre.appendChild(btn);
4172
- });
4173
- }
4174
- function RichText({
4175
- html,
4176
- className = "",
4177
- proseClass = "prose dark:prose-invert max-w-none",
4178
- copyableCode = false,
4179
- highlightCode
4180
- }) {
4181
- const containerRef = useRef(null);
4182
- const safe = useMemo(() => {
4183
- const sanitized = sanitiseHtml(html);
4184
- if (!highlightCode || typeof document === "undefined") return sanitized;
4185
- const container = document.createElement("div");
4186
- container.innerHTML = sanitized;
4187
- container.querySelectorAll("pre > code").forEach((codeEl) => {
4188
- var _a;
4189
- const langClass = Array.from(codeEl.classList).find(
4190
- (c) => c.startsWith("language-")
4191
- );
4192
- const lang = langClass ? langClass.replace("language-", "") : "plaintext";
4193
- const highlighted = highlightCode((_a = codeEl.textContent) != null ? _a : "", lang);
4194
- codeEl.innerHTML = highlighted;
4195
- });
4196
- return container.innerHTML;
4197
- }, [html, highlightCode]);
4198
- const ref = (el) => {
4199
- containerRef.current = el;
4200
- if (el && copyableCode) {
4201
- attachCopyButtons(el);
4202
- }
4203
- };
4204
- return /* @__PURE__ */ jsx(
4205
- Div,
4206
- {
4207
- ref,
4208
- className: `${proseClass} ${className}`,
4209
- dangerouslySetInnerHTML: { __html: safe }
4210
- }
4211
- );
4212
- }
4213
- var DEFAULT_LABELS2 = {
4214
- selected: "selected",
4215
- apply: "Apply",
4216
- clearSelection: "Clear selection",
4217
- bulkActions: "Bulk actions"
4218
- };
4219
- function BulkActionBar({
4220
- selectedCount,
4221
- onClearSelection,
4222
- actions = [],
4223
- labels
4224
- }) {
4225
- var _a, _b;
4226
- const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS2), labels);
4227
- const [pickerOpen, setPickerOpen] = useState(false);
4228
- const [selectedActionId, setSelectedActionId] = useState(null);
4229
- const containerRef = useRef(null);
4230
- useEffect(() => {
4231
- const handler = (e) => {
4232
- var _a2;
4233
- if (!((_a2 = containerRef.current) == null ? void 0 : _a2.contains(e.target))) {
4234
- setPickerOpen(false);
4235
- }
4236
- };
4237
- document.addEventListener("mousedown", handler);
4238
- return () => document.removeEventListener("mousedown", handler);
4239
- }, []);
4240
- useEffect(() => {
4241
- setSelectedActionId((prev) => {
4242
- var _a2;
4243
- const ids = actions.map((a) => a.id);
4244
- if (prev && ids.includes(prev)) return prev;
4245
- return (_a2 = ids[0]) != null ? _a2 : null;
4246
- });
4247
- }, [actions.map((a) => a.id).join(",")]);
4248
- if (selectedCount === 0) return null;
4249
- const selectedAction = actions.find((a) => a.id === selectedActionId);
4250
- const handleApply = () => {
4251
- if (!selectedActionId) return;
4252
- selectedAction == null ? void 0 : selectedAction.onClick();
4253
- setPickerOpen(false);
4254
- };
4255
- return /* @__PURE__ */ jsxs(
4256
- "div",
4257
- {
4258
- ref: containerRef,
4259
- className: "relative rounded-lg overflow-hidden border border-primary/20 dark:border-primary/30 animate-in fade-in slide-in-from-top-1 duration-150",
4260
- role: "region",
4261
- "aria-live": "polite",
4262
- "aria-label": l.bulkActions,
4263
- children: [
4264
- /* @__PURE__ */ jsx("div", { className: "h-[3px] w-full bg-gradient-to-r from-primary-600 via-primary-400 to-primary-600 dark:from-secondary-600 dark:via-secondary-400 dark:to-secondary-600" }),
4265
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 px-3 py-2", children: [
4266
- /* @__PURE__ */ jsxs(
4267
- Button,
4268
- {
4269
- type: "button",
4270
- variant: "ghost",
4271
- onClick: onClearSelection,
4272
- className: "inline-flex items-center gap-1.5 flex-shrink-0 bg-primary-50 hover:bg-primary-100 active:bg-primary-200 dark:bg-primary-950/30 dark:hover:bg-primary-900/50 text-primary-700 dark:text-primary-300 rounded-full pl-2 pr-3 h-8 border border-primary-200/70 dark:border-primary-800/50 transition-colors min-h-0",
4273
- "aria-label": l.clearSelection,
4274
- children: [
4275
- /* @__PURE__ */ jsx(X, { className: "w-3.5 h-3.5 flex-shrink-0", "aria-hidden": "true" }),
4276
- /* @__PURE__ */ jsxs(Span, { className: "text-xs font-semibold tabular-nums whitespace-nowrap leading-none", children: [
4277
- selectedCount,
4278
- " ",
4279
- l.selected
4280
- ] })
4281
- ]
4282
- }
4283
- ),
4284
- actions.length > 0 && /* @__PURE__ */ jsxs(
4285
- Button,
4286
- {
4287
- type: "button",
4288
- variant: "ghost",
4289
- onClick: () => setPickerOpen((o) => !o),
4290
- "aria-haspopup": "listbox",
4291
- "aria-expanded": pickerOpen,
4292
- className: [
4293
- "flex-1 min-w-0 h-10 flex items-center gap-2 px-3 rounded-lg border text-sm font-medium transition-colors",
4294
- "bg-zinc-50 hover:bg-zinc-100 active:bg-zinc-200 dark:bg-slate-800/60 dark:hover:bg-slate-700/60",
4295
- "border-zinc-200 dark:border-slate-700",
4296
- (selectedAction == null ? void 0 : selectedAction.variant) === "danger" ? "text-red-600 dark:text-red-400" : "text-zinc-800 dark:text-zinc-100"
4297
- ].filter(Boolean).join(" "),
4298
- children: [
4299
- (selectedAction == null ? void 0 : selectedAction.icon) && /* @__PURE__ */ jsx(
4300
- Span,
4301
- {
4302
- className: "flex-shrink-0 w-4 h-4 flex items-center justify-center",
4303
- "aria-hidden": "true",
4304
- children: selectedAction.icon
4305
- }
4306
- ),
4307
- /* @__PURE__ */ jsx(Span, { className: "flex-1 truncate text-left leading-none", children: (_a = selectedAction == null ? void 0 : selectedAction.label) != null ? _a : l.bulkActions }),
4308
- pickerOpen ? /* @__PURE__ */ jsx(
4309
- ChevronUp,
4310
- {
4311
- className: "w-4 h-4 flex-shrink-0 text-zinc-400",
4312
- "aria-hidden": "true"
4313
- }
4314
- ) : /* @__PURE__ */ jsx(
4315
- ChevronDown,
4316
- {
4317
- className: "w-4 h-4 flex-shrink-0 text-zinc-400",
4318
- "aria-hidden": "true"
4319
- }
4320
- )
4321
- ]
4322
- }
4323
- ),
4324
- actions.length > 0 && /* @__PURE__ */ jsx(
4325
- Button,
4326
- {
4327
- type: "button",
4328
- variant: (_b = selectedAction == null ? void 0 : selectedAction.variant) != null ? _b : "primary",
4329
- size: "sm",
4330
- isLoading: selectedAction == null ? void 0 : selectedAction.loading,
4331
- disabled: !selectedActionId || (selectedAction == null ? void 0 : selectedAction.disabled) || (selectedAction == null ? void 0 : selectedAction.loading),
4332
- onClick: handleApply,
4333
- className: "h-10 flex-shrink-0",
4334
- children: /* @__PURE__ */ jsx(Span, { className: "leading-none", children: l.apply })
4335
- }
4336
- )
4337
- ] }),
4338
- actions.length > 0 && /* @__PURE__ */ jsx(
4339
- "div",
4340
- {
4341
- role: "listbox",
4342
- "aria-label": l.bulkActions,
4343
- className: [
4344
- "overflow-hidden border-t border-zinc-200/80 dark:border-slate-700/80",
4345
- "transition-[max-height,opacity] duration-200 ease-out",
4346
- pickerOpen ? "max-h-64 opacity-100" : "max-h-0 opacity-0 pointer-events-none"
4347
- ].filter(Boolean).join(" "),
4348
- children: actions.map((action) => /* @__PURE__ */ jsxs(
4349
- "button",
4350
- {
4351
- role: "option",
4352
- "aria-selected": selectedActionId === action.id,
4353
- disabled: action.disabled,
4354
- onClick: () => {
4355
- setSelectedActionId(action.id);
4356
- setPickerOpen(false);
4357
- },
4358
- className: [
4359
- "w-full flex items-center gap-2.5 px-4 py-2.5 text-sm text-left transition-colors",
4360
- "hover:bg-zinc-50 dark:hover:bg-slate-800/60",
4361
- action.variant === "danger" ? "text-red-600 dark:text-red-400" : "text-zinc-700 dark:text-zinc-200",
4362
- selectedActionId === action.id ? "bg-zinc-50 dark:bg-slate-800/60 font-medium" : "",
4363
- action.disabled ? "opacity-40 cursor-not-allowed" : "cursor-pointer"
4364
- ].filter(Boolean).join(" "),
4365
- children: [
4366
- action.icon && /* @__PURE__ */ jsx(
4367
- Span,
4368
- {
4369
- className: "flex-shrink-0 w-4 h-4 flex items-center justify-center",
4370
- "aria-hidden": "true",
4371
- children: action.icon
4372
- }
4373
- ),
4374
- /* @__PURE__ */ jsx(Span, { className: "flex-1", children: action.label })
4375
- ]
4376
- },
4377
- action.id
4378
- ))
4379
- }
4380
- )
4381
- ]
4382
- }
4383
- );
4384
- }
4385
- var DEFAULT_LABELS3 = {
4386
- filtersTitle: "Filters",
4387
- clearAll: "Clear all",
4388
- applyFilters: "Apply filters",
4389
- close: "Close",
4390
- showFilters: "Show filters",
4391
- hideFilters: "Hide filters",
4392
- filterActiveCount: (count) => `${count} active`
4393
- };
4394
- function ListingLayout({
4395
- headerSlot,
4396
- statusTabsSlot,
4397
- filterContent,
4398
- filterActiveCount = 0,
4399
- onFilterApply,
4400
- onFilterClear,
4401
- filterTitle,
4402
- activeFiltersSlot,
4403
- searchSlot,
4404
- sortSlot,
4405
- viewToggleSlot,
4406
- actionsSlot,
4407
- selectedCount = 0,
4408
- onClearSelection,
4409
- bulkActionItems,
4410
- toolbarPaginationSlot,
4411
- paginationSlot,
4412
- children,
4413
- isDashboard = false,
4414
- defaultSidebarOpen = false,
4415
- className = "",
4416
- loading = false,
4417
- errorSlot,
4418
- labels
4419
- }) {
4420
- const l = __spreadValues(__spreadValues({}, DEFAULT_LABELS3), labels);
4421
- const [sidebarOpen, setSidebarOpen] = useState(defaultSidebarOpen);
4422
- const [mobileFilterOpen, setMobileFilterOpen] = useState(false);
4423
- const mobileOverlayRef = useRef(null);
4424
- const hasFilter = Boolean(filterContent);
4425
- const panelTitle = filterTitle != null ? filterTitle : l.filtersTitle;
4426
- const stickyTop = isDashboard ? "top-0" : "top-14 md:top-[120px]";
4427
- const sidebarSticky = isDashboard ? "sticky top-16" : "sticky top-[176px]";
4428
- useEffect(() => {
4429
- if (!mobileFilterOpen) return;
4430
- const handle = (e) => {
4431
- if (e.key === "Escape") setMobileFilterOpen(false);
4432
- };
4433
- document.addEventListener("keydown", handle);
4434
- return () => document.removeEventListener("keydown", handle);
4435
- }, [mobileFilterOpen]);
4436
- useEffect(() => {
4437
- if (mobileFilterOpen) {
4438
- const w = window.innerWidth - document.documentElement.clientWidth;
4439
- document.body.style.overflow = "hidden";
4440
- document.body.style.paddingRight = `${w}px`;
4441
- } else {
4442
- document.body.style.overflow = "";
4443
- document.body.style.paddingRight = "";
4444
- }
4445
- return () => {
4446
- document.body.style.overflow = "";
4447
- document.body.style.paddingRight = "";
4448
- };
4449
- }, [mobileFilterOpen]);
4450
- const handleMobileApply = () => {
4451
- onFilterApply == null ? void 0 : onFilterApply();
4452
- setMobileFilterOpen(false);
4453
- };
4454
- return /* @__PURE__ */ jsxs(
4455
- "div",
4456
- {
4457
- className: [
4458
- "w-full space-y-4",
4459
- toolbarPaginationSlot ? selectedCount > 0 ? "pb-28 lg:pb-0" : "pb-12 lg:pb-0" : "",
4460
- className
4461
- ].filter(Boolean).join(" "),
4462
- children: [
4463
- headerSlot,
4464
- statusTabsSlot && /* @__PURE__ */ jsx("div", { className: "overflow-x-auto touch-pan-x -mx-4 px-4 md:-mx-6 md:px-6", children: statusTabsSlot }),
4465
- /* @__PURE__ */ jsxs(
4466
- "div",
4467
- {
4468
- className: [
4469
- "sticky z-20 -mx-4 px-4 md:-mx-6 md:px-6",
4470
- stickyTop,
4471
- "bg-white/80 dark:bg-slate-950/80 backdrop-blur-md",
4472
- "border-b border-zinc-200/70 dark:border-slate-800/70",
4473
- "shadow-[0_1px_3px_rgba(0,0,0,0.04)] dark:shadow-[0_1px_3px_rgba(0,0,0,0.2)]",
4474
- "py-2.5"
4475
- ].join(" "),
4476
- children: [
4477
- /* @__PURE__ */ jsxs("div", { className: "hidden lg:flex items-center gap-2 min-w-0", children: [
4478
- hasFilter && /* @__PURE__ */ jsxs(
4479
- Button,
4480
- {
4481
- type: "button",
4482
- variant: "outline",
4483
- size: "sm",
4484
- onClick: () => setSidebarOpen((prev) => !prev),
4485
- "aria-label": sidebarOpen ? l.hideFilters : l.showFilters,
4486
- "aria-expanded": sidebarOpen,
4487
- className: [
4488
- "hidden lg:flex flex-shrink-0 items-center gap-1.5",
4489
- "rounded-full h-8 px-3 text-sm font-medium",
4490
- "border transition-all duration-150",
4491
- sidebarOpen ? "bg-primary/10 border-primary/30 text-primary dark:bg-primary/15 dark:border-primary/40" : "border-zinc-200 dark:border-slate-700 text-zinc-600 dark:text-slate-300 hover:border-zinc-300 dark:hover:border-slate-600 hover:bg-zinc-50 dark:hover:bg-slate-800/60"
4492
- ].join(" "),
4493
- children: [
4494
- /* @__PURE__ */ jsx(FilterIcon, {}),
4495
- l.filtersTitle,
4496
- filterActiveCount > 0 && /* @__PURE__ */ jsx(
4497
- Span,
4498
- {
4499
- className: "inline-flex items-center justify-center w-4 h-4 text-[10px] font-bold rounded-full bg-primary text-white",
4500
- "aria-label": l.filterActiveCount(filterActiveCount),
4501
- children: filterActiveCount
4502
- }
4503
- )
4504
- ]
4505
- }
4506
- ),
4507
- searchSlot && /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0", children: searchSlot }),
4508
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 flex-shrink-0", children: [
4509
- sortSlot,
4510
- viewToggleSlot && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-0.5 rounded-full border border-zinc-200 dark:border-slate-700 bg-white dark:bg-slate-900 p-0.5 shadow-sm", children: viewToggleSlot }),
4511
- actionsSlot
4512
- ] }),
4513
- toolbarPaginationSlot && /* @__PURE__ */ jsx("div", { className: "ml-auto flex-shrink-0 pl-3 border-l border-zinc-200/70 dark:border-slate-700/70", children: toolbarPaginationSlot })
4514
- ] }),
4515
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2 lg:hidden", children: [
4516
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
4517
- hasFilter && /* @__PURE__ */ jsxs(
4518
- Button,
4519
- {
4520
- type: "button",
4521
- variant: "outline",
4522
- size: "sm",
4523
- onClick: () => setMobileFilterOpen(true),
4524
- "aria-label": l.filtersTitle,
4525
- className: [
4526
- "flex-shrink-0 flex items-center gap-1.5",
4527
- "rounded-full h-9 px-3 text-sm font-medium",
4528
- "border border-zinc-200 dark:border-slate-700",
4529
- "text-zinc-600 dark:text-slate-300",
4530
- "hover:bg-zinc-50 dark:hover:bg-slate-800/60 transition-colors",
4531
- filterActiveCount > 0 ? "border-primary/40 bg-primary/5 text-primary" : ""
4532
- ].join(" "),
4533
- children: [
4534
- /* @__PURE__ */ jsx(FilterIcon, {}),
4535
- l.filtersTitle,
4536
- filterActiveCount > 0 && /* @__PURE__ */ jsx(
4537
- Span,
4538
- {
4539
- className: "inline-flex items-center justify-center w-4 h-4 text-[10px] font-bold rounded-full bg-primary text-white",
4540
- "aria-label": l.filterActiveCount(filterActiveCount),
4541
- children: filterActiveCount
4542
- }
4543
- )
4544
- ]
4545
- }
4546
- ),
4547
- searchSlot && /* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0", children: searchSlot })
4548
- ] }),
4549
- (sortSlot || viewToggleSlot || actionsSlot) && /* @__PURE__ */ jsx("div", { className: "flex items-stretch min-h-[44px] gap-2 overflow-x-auto", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 flex-shrink-0 pb-px", children: [
4550
- sortSlot,
4551
- viewToggleSlot,
4552
- actionsSlot
4553
- ] }) })
4554
- ] }),
4555
- selectedCount > 0 && /* @__PURE__ */ jsx("div", { className: "hidden lg:block pt-2 mt-2 border-t border-zinc-100 dark:border-slate-800", children: /* @__PURE__ */ jsx(
4556
- BulkActionBar,
4557
- {
4558
- selectedCount,
4559
- onClearSelection,
4560
- actions: bulkActionItems,
4561
- labels: {
4562
- selected: l.filtersTitle,
4563
- // placeholder — callers provide proper labels
4564
- apply: l.applyFilters,
4565
- clearSelection: l.clearAll
4566
- }
4567
- }
4568
- ) })
4569
- ]
4570
- }
4571
- ),
4572
- /* @__PURE__ */ jsxs("div", { className: "flex gap-4 lg:gap-6 items-start", children: [
4573
- hasFilter && /* @__PURE__ */ jsx(
4574
- Aside,
4575
- {
4576
- "aria-label": panelTitle,
4577
- className: [
4578
- "hidden lg:block flex-shrink-0 self-start",
4579
- sidebarSticky,
4580
- "transition-all duration-200 ease-in-out overflow-hidden",
4581
- sidebarOpen ? "w-60 xl:w-64 2xl:w-72 opacity-100" : "w-0 opacity-0 pointer-events-none"
4582
- ].join(" "),
4583
- children: /* @__PURE__ */ jsxs(
4584
- "div",
4585
- {
4586
- className: [
4587
- "w-60 xl:w-64 2xl:w-72 rounded-2xl overflow-hidden",
4588
- "border border-zinc-200/80 dark:border-slate-700/60",
4589
- "bg-white dark:bg-slate-900",
4590
- "shadow-sm"
4591
- ].join(" "),
4592
- children: [
4593
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b border-zinc-100 dark:border-slate-800", children: [
4594
- /* @__PURE__ */ jsx(Text, { weight: "semibold", size: "sm", children: panelTitle }),
4595
- filterActiveCount > 0 && /* @__PURE__ */ jsx(
4596
- Button,
4597
- {
4598
- type: "button",
4599
- variant: "ghost",
4600
- size: "sm",
4601
- onClick: onFilterClear,
4602
- className: "text-xs text-primary hover:text-primary/80 hover:underline p-0 h-auto leading-none font-medium",
4603
- children: l.clearAll
4604
- }
4605
- )
4606
- ] }),
4607
- /* @__PURE__ */ jsx("div", { className: "px-3 pt-5 pb-3 max-h-[calc(100vh-15rem)] overflow-y-auto space-y-4", children: filterContent }),
4608
- /* @__PURE__ */ jsx("div", { className: "px-3 pb-3 pt-2 border-t border-zinc-100 dark:border-slate-800", children: /* @__PURE__ */ jsx(
4609
- Button,
4610
- {
4611
- type: "button",
4612
- variant: "primary",
4613
- className: "w-full rounded-xl",
4614
- size: "sm",
4615
- onClick: onFilterApply,
4616
- children: l.applyFilters
4617
- }
4618
- ) })
4619
- ]
4620
- }
4621
- )
4622
- }
4623
- ),
4624
- /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0 space-y-3", children: [
4625
- activeFiltersSlot,
4626
- errorSlot ? errorSlot : /* @__PURE__ */ jsxs(Fragment, { children: [
4627
- children,
4628
- paginationSlot && /* @__PURE__ */ jsx("div", { className: "pt-2", children: paginationSlot })
4629
- ] })
4630
- ] })
4631
- ] }),
4632
- toolbarPaginationSlot && /* @__PURE__ */ jsx(
4633
- Nav,
4634
- {
4635
- "aria-label": "Pagination",
4636
- className: [
4637
- "fixed left-0 right-0 lg:hidden",
4638
- isDashboard ? "bottom-0" : selectedCount > 0 ? "bottom-28" : "bottom-14",
4639
- "z-[39]",
4640
- "bg-white/90 dark:bg-slate-950/90 backdrop-blur-md border-t border-zinc-200/80 dark:border-slate-800/80",
4641
- "shadow-[0_-2px_8px_rgba(0,0,0,0.06)] dark:shadow-[0_-2px_8px_rgba(0,0,0,0.20)]",
4642
- "h-10 flex items-center justify-center px-3 overflow-x-auto pb-px"
4643
- ].join(" "),
4644
- children: toolbarPaginationSlot
4645
- }
4646
- ),
4647
- hasFilter && mobileFilterOpen && /* @__PURE__ */ jsxs(Fragment, { children: [
4648
- /* @__PURE__ */ jsx(
4649
- "div",
4650
- {
4651
- className: "fixed inset-0 z-40 bg-black/40 lg:hidden",
4652
- onClick: () => setMobileFilterOpen(false),
4653
- "aria-hidden": "true"
4654
- }
4655
- ),
4656
- /* @__PURE__ */ jsxs(
4657
- "div",
4658
- {
4659
- ref: mobileOverlayRef,
4660
- className: "fixed inset-0 z-50 flex flex-col lg:hidden bg-white dark:bg-slate-950",
4661
- role: "dialog",
4662
- "aria-modal": "true",
4663
- "aria-label": panelTitle,
4664
- children: [
4665
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-3 border-b border-zinc-100 dark:border-slate-800 flex-shrink-0", children: [
4666
- /* @__PURE__ */ jsxs(Text, { weight: "semibold", children: [
4667
- panelTitle,
4668
- filterActiveCount > 0 && /* @__PURE__ */ jsx(Span, { className: "ml-2 inline-flex items-center justify-center w-5 h-5 text-[11px] font-bold rounded-full bg-primary text-white", children: filterActiveCount })
4669
- ] }),
4670
- /* @__PURE__ */ jsx(
4671
- Button,
4672
- {
4673
- type: "button",
4674
- variant: "ghost",
4675
- size: "sm",
4676
- onClick: () => setMobileFilterOpen(false),
4677
- "aria-label": l.close,
4678
- className: "rounded-full w-8 h-8 p-0 flex items-center justify-center hover:bg-zinc-100 dark:hover:bg-slate-800",
4679
- children: /* @__PURE__ */ jsx(
4680
- "svg",
4681
- {
4682
- className: "w-4 h-4",
4683
- fill: "none",
4684
- stroke: "currentColor",
4685
- viewBox: "0 0 24 24",
4686
- "aria-hidden": "true",
4687
- children: /* @__PURE__ */ jsx(
4688
- "path",
4689
- {
4690
- strokeLinecap: "round",
4691
- strokeLinejoin: "round",
4692
- strokeWidth: 2,
4693
- d: "M6 18L18 6M6 6l12 12"
4694
- }
4695
- )
4696
- }
4697
- )
4698
- }
4699
- )
4700
- ] }),
4701
- /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-auto px-4 pt-6 pb-4 space-y-4", children: filterContent }),
4702
- /* @__PURE__ */ jsxs("div", { className: "flex-shrink-0 flex gap-3 px-4 py-4 border-t border-zinc-100 dark:border-slate-800 bg-white dark:bg-slate-950", children: [
4703
- /* @__PURE__ */ jsx(
4704
- Button,
4705
- {
4706
- type: "button",
4707
- variant: "secondary",
4708
- className: "flex-1 rounded-xl",
4709
- onClick: () => onFilterClear == null ? void 0 : onFilterClear(),
4710
- children: l.clearAll
4711
- }
4712
- ),
4713
- /* @__PURE__ */ jsx(
4714
- Button,
4715
- {
4716
- type: "button",
4717
- variant: "primary",
4718
- className: "flex-1 rounded-xl",
4719
- onClick: handleMobileApply,
4720
- children: l.applyFilters
4721
- }
4722
- )
4723
- ] })
4724
- ]
4725
- }
4726
- )
4727
- ] })
4728
- ]
4729
- }
4730
- );
4731
- }
4732
- function FilterIcon() {
4733
- return /* @__PURE__ */ jsx(
4734
- "svg",
4735
- {
4736
- className: "w-4 h-4",
4737
- fill: "none",
4738
- viewBox: "0 0 24 24",
4739
- stroke: "currentColor",
4740
- strokeWidth: 2,
4741
- "aria-hidden": "true",
4742
- children: /* @__PURE__ */ jsx(
4743
- "path",
4744
- {
4745
- strokeLinecap: "round",
4746
- strokeLinejoin: "round",
4747
- d: "M3 4a1 1 0 011-1h16a1 1 0 011 1v2a1 1 0 01-.293.707L13 13.414V19a1 1 0 01-.553.894l-4 2A1 1 0 017 21v-7.586L3.293 6.707A1 1 0 013 6V4z"
4748
- }
4749
- )
4750
- }
4751
- );
4752
- }
4753
- /*! Bundled license information:
4754
-
4755
- lucide-react/dist/esm/shared/src/utils/mergeClasses.js:
4756
- lucide-react/dist/esm/shared/src/utils/toKebabCase.js:
4757
- lucide-react/dist/esm/shared/src/utils/toCamelCase.js:
4758
- lucide-react/dist/esm/shared/src/utils/toPascalCase.js:
4759
- lucide-react/dist/esm/defaultAttributes.js:
4760
- lucide-react/dist/esm/shared/src/utils/hasA11yProp.js:
4761
- lucide-react/dist/esm/context.js:
4762
- lucide-react/dist/esm/Icon.js:
4763
- lucide-react/dist/esm/createLucideIcon.js:
4764
- lucide-react/dist/esm/icons/check.js:
4765
- lucide-react/dist/esm/icons/chevron-down.js:
4766
- lucide-react/dist/esm/icons/chevron-left.js:
4767
- lucide-react/dist/esm/icons/chevron-right.js:
4768
- lucide-react/dist/esm/icons/chevron-up.js:
4769
- lucide-react/dist/esm/icons/loader-circle.js:
4770
- lucide-react/dist/esm/icons/star.js:
4771
- lucide-react/dist/esm/icons/x.js:
4772
- lucide-react/dist/esm/icons/zoom-in.js:
4773
- lucide-react/dist/esm/lucide-react.js:
4774
- (**
4775
- * @license lucide-react v1.7.0 - ISC
4776
- *
4777
- * This source code is licensed under the ISC license.
4778
- * See the LICENSE file in the root directory of this source tree.
4779
- *)
4780
- */
4781
-
4782
- export { Accordion, AccordionItem, ActiveFilterChips, Alert, Article, Aside, Badge, BlockFooter, BlockHeader, Breadcrumb, BulkActionBar, Button, Caption, Container, CountdownDisplay, DEFAULT_PAGINATION_CONFIG, DEFAULT_STICKY_CONFIG, DEFAULT_TABLE_CONFIG, DataTable, DescriptionField, Div, Divider, Drawer, Footer, Form, FormField, FormGrid, GRID_MAP, Grid, Header, Heading, HorizontalScroller, IconButton, ImageLightbox, IndeterminateProgress, Input, ItemRow, Label, Li, ListingLayout, Main, Modal, Nav, Ol, Pagination, PriceDisplay, Progress, RatingDisplay, RichText, Row, Section, Select, SideModal, Skeleton, Slider, SortDropdown, Span, Spinner, Stack, StarRating, StatsGrid, StatusBadge, StepperNav, SummaryCard, TabStrip, TablePagination, TagInput, Text, TextLink, Textarea, Tooltip, Ul, ViewToggle, classNames, easings, getContrastColor, hexToRgb, mergeTableConfig, mergeTailwindClasses, rgbToHex };
4783
- //# sourceMappingURL=index.js.map
4784
- //# sourceMappingURL=index.js.map
1
+ import "./components/index.style.css";
2
+ // ─── Column utilities ─────────────────────────────────────────────────────────
3
+ export { buildColumns, createColumnBuilder, renderBoolean, renderCurrency, renderCurrencyCompact, renderCount, renderNullable, renderRating, } from "./columns";
4
+ export { Section, Article, Main, Aside, Nav, BlockHeader, BlockFooter, Header, Footer, Ul, Ol, Li, } from "./components/Semantic";
5
+ export { Div } from "./components/Div";
6
+ // ─── Typography primitives ────────────────────────────────────────────────────
7
+ export { Heading, Text, Label, Caption, Span } from "./components/Typography";
8
+ export { Spinner } from "./components/Spinner";
9
+ export { Skeleton } from "./components/Skeleton";
10
+ export { Button } from "./components/Button";
11
+ export { IconButton } from "./components/IconButton";
12
+ export { TextLink } from "./components/TextLink";
13
+ export { Tooltip } from "./components/Tooltip";
14
+ export { Accordion, AccordionItem } from "./components/Accordion";
15
+ export { Form, FormGroup, FormFieldSpan, FormActions } from "./components/Form";
16
+ export { Badge } from "./components/Badge";
17
+ export { Alert } from "./components/Alert";
18
+ export { Divider } from "./components/Divider";
19
+ export { Progress, IndeterminateProgress } from "./components/Progress";
20
+ export { Pagination } from "./components/Pagination";
21
+ export { StatusBadge } from "./components/StatusBadge";
22
+ export { Modal, ModalFooter } from "./components/Modal";
23
+ export { UnsavedChangesModal } from "./components/UnsavedChangesModal";
24
+ export { Drawer } from "./components/Drawer";
25
+ export { BackgroundRenderer } from "./components/BackgroundRenderer";
26
+ export { ResponsiveView } from "./components/ResponsiveView";
27
+ export { Select } from "./components/Select";
28
+ export { Input } from "./components/Input";
29
+ export { Textarea } from "./components/Textarea";
30
+ export { Slider } from "./components/Slider";
31
+ export { Checkbox } from "./components/Checkbox";
32
+ export { RadioGroup } from "./components/Radio";
33
+ export { Toggle } from "./components/Toggle";
34
+ export { ToastProvider, useToast } from "./components/Toast";
35
+ export { StarRating } from "./components/StarRating";
36
+ export { Breadcrumb } from "./components/Breadcrumb";
37
+ export { ImageLightbox } from "./components/ImageLightbox";
38
+ export { TagInput } from "./components/TagInput";
39
+ export { StepperNav } from "./components/StepperNav";
40
+ export { ViewToggle } from "./components/ViewToggle";
41
+ export { RatingDisplay } from "./components/RatingDisplay";
42
+ export { PriceDisplay } from "./components/PriceDisplay";
43
+ export { StatsGrid } from "./components/StatsGrid";
44
+ export { SummaryCard } from "./components/SummaryCard";
45
+ export { CountdownDisplay } from "./components/CountdownDisplay";
46
+ export { ItemRow } from "./components/ItemRow";
47
+ export { HorizontalScroller } from "./components/HorizontalScroller";
48
+ export { SectionTabs } from "./components/SectionTabs";
49
+ export { TabStrip } from "./components/TabStrip";
50
+ export { FormGrid, FormField as FormGridField } from "./components/FormGrid";
51
+ export { FormField } from "./components/FormField";
52
+ export { DescriptionField } from "./components/DescriptionField";
53
+ export { Card, CardHeader, CardBody, CardFooter } from "./components/Card";
54
+ export { EmptyState } from "./components/EmptyState";
55
+ export { Avatar, AvatarGroup } from "./components/Avatar";
56
+ export { Dropdown, DropdownTrigger, DropdownMenu, DropdownItem, DropdownSeparator, } from "./components/Dropdown";
57
+ export { Menu, MenuTrigger, MenuContent, MenuItem, MenuSeparator, } from "./components/Menu";
58
+ export { DynamicSelect } from "./components/DynamicSelect";
59
+ export { RoleBadge } from "./components/RoleBadge";
60
+ export { SkipToMain } from "./components/SkipToMain";
61
+ export { Tabs, TabsList, TabsTrigger, TabsContent } from "./components/Tabs";
62
+ export { FilterDrawer } from "./components/FilterDrawer";
63
+ export { RowActionMenu } from "./components/RowActionMenu";
64
+ export { PasswordStrengthIndicator } from "./components/PasswordStrengthIndicator";
65
+ export { AvatarDisplay } from "./components/AvatarDisplay";
66
+ export { DashboardStatsCard } from "./components/DashboardStatsCard";
67
+ export { ActiveFilterChips } from "./components/ActiveFilterChips";
68
+ export { SortDropdown } from "./components/SortDropdown";
69
+ export { TablePagination } from "./components/TablePagination";
70
+ export { DataTable } from "./DataTable";
71
+ export { DEFAULT_TABLE_CONFIG, DEFAULT_PAGINATION_CONFIG, DEFAULT_STICKY_CONFIG, mergeTableConfig, } from "../contracts";
72
+ export { Container, Stack, Row, Grid, GRID_MAP } from "./components/Layout";
73
+ // ─── UI Helpers ───────────────────────────────────────────────────────────────
74
+ export { classNames, mergeTailwindClasses } from "./style.helper";
75
+ export { SideModal } from "./components/SideModal";
76
+ export { RichText } from "./rich-text/RichText";
77
+ export { ListingLayout } from "./components/ListingLayout";
78
+ export { ListingViewShell } from "./components/ListingViewShell";
79
+ export { SlottedListingView } from "./components/SlottedListingView";
80
+ export { DetailViewShell } from "./components/DetailViewShell";
81
+ export { StackedViewShell } from "./components/StackedViewShell";
82
+ export { BulkActionBar } from "./components/BulkActionBar";
83
+ export { FlowDiagram } from "./components/FlowDiagram";
84
+ export { BaseListingCard } from "./components/BaseListingCard";
85
+ export { default as ImageGallery } from "./components/ImageGallery";
86
+ export { SideDrawer } from "./components/SideDrawer";
87
+ export { ConfirmDeleteModal } from "./components/ConfirmDeleteModal";