@burdenoff/microfe-kadaikodi 2026.704.4 → 2026.710.1

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 (341) hide show
  1. package/dist/generated/global-operations.d.ts +2 -0
  2. package/dist/generated/global-operations.d.ts.map +1 -0
  3. package/dist/generated/global-types.d.ts +23527 -0
  4. package/dist/generated/global-types.d.ts.map +1 -0
  5. package/dist/generated/wspace-operations.d.ts +2 -0
  6. package/dist/generated/wspace-operations.d.ts.map +1 -0
  7. package/dist/generated/wspace-types.d.ts +57851 -0
  8. package/dist/generated/wspace-types.d.ts.map +1 -0
  9. package/dist/index.d.ts +7 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +2 -1
  12. package/dist/kadaikodi/KadaikodiRoot.d.ts +5 -0
  13. package/dist/kadaikodi/KadaikodiRoot.d.ts.map +1 -0
  14. package/dist/kadaikodi/KadaikodiRoutes.d.ts +4 -0
  15. package/dist/kadaikodi/KadaikodiRoutes.d.ts.map +1 -0
  16. package/dist/kadaikodi/KadaikodiRoutes.js +30 -26
  17. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  18. package/dist/kadaikodi/components/CartCard.d.ts +18 -0
  19. package/dist/kadaikodi/components/CartCard.d.ts.map +1 -0
  20. package/dist/kadaikodi/components/EmptyState.d.ts +17 -0
  21. package/dist/kadaikodi/components/EmptyState.d.ts.map +1 -0
  22. package/dist/kadaikodi/components/InvestmentCard.d.ts +18 -0
  23. package/dist/kadaikodi/components/InvestmentCard.d.ts.map +1 -0
  24. package/dist/kadaikodi/components/MetricsCard.d.ts +16 -0
  25. package/dist/kadaikodi/components/MetricsCard.d.ts.map +1 -0
  26. package/dist/kadaikodi/components/OrderCard.d.ts +18 -0
  27. package/dist/kadaikodi/components/OrderCard.d.ts.map +1 -0
  28. package/dist/kadaikodi/components/PageLayout.d.ts +12 -0
  29. package/dist/kadaikodi/components/PageLayout.d.ts.map +1 -0
  30. package/dist/kadaikodi/components/RatingDisplay.d.ts +12 -0
  31. package/dist/kadaikodi/components/RatingDisplay.d.ts.map +1 -0
  32. package/dist/kadaikodi/components/StatusBadge.d.ts +9 -0
  33. package/dist/kadaikodi/components/StatusBadge.d.ts.map +1 -0
  34. package/dist/kadaikodi/components/index.d.ts +13 -0
  35. package/dist/kadaikodi/components/index.d.ts.map +1 -0
  36. package/dist/kadaikodi/components/viz/AllocationBar.d.ts +21 -0
  37. package/dist/kadaikodi/components/viz/AllocationBar.d.ts.map +1 -0
  38. package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
  39. package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
  40. package/dist/kadaikodi/components/viz/AreaChart.d.ts +18 -0
  41. package/dist/kadaikodi/components/viz/AreaChart.d.ts.map +1 -0
  42. package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
  43. package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
  44. package/dist/kadaikodi/components/viz/AvatarStack.d.ts +13 -0
  45. package/dist/kadaikodi/components/viz/AvatarStack.d.ts.map +1 -0
  46. package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
  47. package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
  48. package/dist/kadaikodi/components/viz/BarChart.d.ts +17 -0
  49. package/dist/kadaikodi/components/viz/BarChart.d.ts.map +1 -0
  50. package/dist/kadaikodi/components/viz/BarChart.js +83 -0
  51. package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
  52. package/dist/kadaikodi/components/viz/CertificateCard.d.ts +14 -0
  53. package/dist/kadaikodi/components/viz/CertificateCard.d.ts.map +1 -0
  54. package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
  55. package/dist/kadaikodi/components/viz/DonutChart.d.ts +20 -0
  56. package/dist/kadaikodi/components/viz/DonutChart.d.ts.map +1 -0
  57. package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
  58. package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
  59. package/dist/kadaikodi/components/viz/HBarFunnel.d.ts +17 -0
  60. package/dist/kadaikodi/components/viz/HBarFunnel.d.ts.map +1 -0
  61. package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
  62. package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
  63. package/dist/kadaikodi/components/viz/Heatmap.d.ts +26 -0
  64. package/dist/kadaikodi/components/viz/Heatmap.d.ts.map +1 -0
  65. package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
  66. package/dist/kadaikodi/components/viz/KanbanBoard.d.ts +17 -0
  67. package/dist/kadaikodi/components/viz/KanbanBoard.d.ts.map +1 -0
  68. package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
  69. package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
  70. package/dist/kadaikodi/components/viz/LineChart.d.ts +20 -0
  71. package/dist/kadaikodi/components/viz/LineChart.d.ts.map +1 -0
  72. package/dist/kadaikodi/components/viz/LineChart.js +4 -0
  73. package/dist/kadaikodi/components/viz/OrgTree.d.ts +14 -0
  74. package/dist/kadaikodi/components/viz/OrgTree.d.ts.map +1 -0
  75. package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
  76. package/dist/kadaikodi/components/viz/PathSteps.d.ts +17 -0
  77. package/dist/kadaikodi/components/viz/PathSteps.d.ts.map +1 -0
  78. package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
  79. package/dist/kadaikodi/components/viz/ProgressRing.d.ts +20 -0
  80. package/dist/kadaikodi/components/viz/ProgressRing.d.ts.map +1 -0
  81. package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
  82. package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
  83. package/dist/kadaikodi/components/viz/RatingStars.d.ts +14 -0
  84. package/dist/kadaikodi/components/viz/RatingStars.d.ts.map +1 -0
  85. package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
  86. package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
  87. package/dist/kadaikodi/components/viz/SegmentedTabs.d.ts +26 -0
  88. package/dist/kadaikodi/components/viz/SegmentedTabs.d.ts.map +1 -0
  89. package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
  90. package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
  91. package/dist/kadaikodi/components/viz/SkillBar.d.ts +17 -0
  92. package/dist/kadaikodi/components/viz/SkillBar.d.ts.map +1 -0
  93. package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
  94. package/dist/kadaikodi/components/viz/Sparkline.d.ts +16 -0
  95. package/dist/kadaikodi/components/viz/Sparkline.d.ts.map +1 -0
  96. package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
  97. package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
  98. package/dist/kadaikodi/components/viz/StatCard.d.ts +22 -0
  99. package/dist/kadaikodi/components/viz/StatCard.d.ts.map +1 -0
  100. package/dist/kadaikodi/components/viz/StatCard.js +60 -0
  101. package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
  102. package/dist/kadaikodi/components/viz/StepProgress.d.ts +17 -0
  103. package/dist/kadaikodi/components/viz/StepProgress.d.ts.map +1 -0
  104. package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
  105. package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
  106. package/dist/kadaikodi/components/viz/Timeline.d.ts +21 -0
  107. package/dist/kadaikodi/components/viz/Timeline.d.ts.map +1 -0
  108. package/dist/kadaikodi/components/viz/Timeline.js +66 -0
  109. package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
  110. package/dist/kadaikodi/components/viz/index.d.ts +35 -0
  111. package/dist/kadaikodi/components/viz/index.d.ts.map +1 -0
  112. package/dist/kadaikodi/components/viz/index.js +23 -0
  113. package/dist/kadaikodi/components/viz/lib/Avatar.d.ts +15 -0
  114. package/dist/kadaikodi/components/viz/lib/Avatar.d.ts.map +1 -0
  115. package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
  116. package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
  117. package/dist/kadaikodi/components/viz/lib/CartesianFrame.d.ts +44 -0
  118. package/dist/kadaikodi/components/viz/lib/CartesianFrame.d.ts.map +1 -0
  119. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
  120. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
  121. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.d.ts +27 -0
  122. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.d.ts.map +1 -0
  123. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
  124. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
  125. package/dist/kadaikodi/components/viz/lib/format.d.ts +10 -0
  126. package/dist/kadaikodi/components/viz/lib/format.d.ts.map +1 -0
  127. package/dist/kadaikodi/components/viz/lib/format.js +21 -0
  128. package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
  129. package/dist/kadaikodi/components/viz/lib/geometry.d.ts +41 -0
  130. package/dist/kadaikodi/components/viz/lib/geometry.d.ts.map +1 -0
  131. package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
  132. package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
  133. package/dist/kadaikodi/components/viz/lib/hooks.d.ts +18 -0
  134. package/dist/kadaikodi/components/viz/lib/hooks.d.ts.map +1 -0
  135. package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
  136. package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
  137. package/dist/kadaikodi/components/viz/lib/palette.d.ts +31 -0
  138. package/dist/kadaikodi/components/viz/lib/palette.d.ts.map +1 -0
  139. package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
  140. package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
  141. package/dist/kadaikodi/components/viz/lib/types.d.ts +27 -0
  142. package/dist/kadaikodi/components/viz/lib/types.d.ts.map +1 -0
  143. package/dist/kadaikodi/context/KadaikodiContext.d.ts +16 -0
  144. package/dist/kadaikodi/context/KadaikodiContext.d.ts.map +1 -0
  145. package/dist/kadaikodi/context/index.d.ts +6 -0
  146. package/dist/kadaikodi/context/index.d.ts.map +1 -0
  147. package/dist/kadaikodi/hooks/index.d.ts +2 -0
  148. package/dist/kadaikodi/hooks/index.d.ts.map +1 -0
  149. package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts +169 -0
  150. package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts.map +1 -0
  151. package/dist/kadaikodi/hooks/useKadaikodiApi.js +18 -10
  152. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  153. package/dist/kadaikodi/index.d.ts +11 -0
  154. package/dist/kadaikodi/index.d.ts.map +1 -0
  155. package/dist/kadaikodi/pages/HomePage.d.ts +14 -0
  156. package/dist/kadaikodi/pages/HomePage.d.ts.map +1 -0
  157. package/dist/kadaikodi/pages/HomePage.js +373 -631
  158. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  159. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts +13 -0
  160. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts.map +1 -0
  161. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
  162. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  163. package/dist/kadaikodi/pages/admin/AdminDashboard.d.ts +13 -0
  164. package/dist/kadaikodi/pages/admin/AdminDashboard.d.ts.map +1 -0
  165. package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
  166. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  167. package/dist/kadaikodi/pages/admin/AdminFinancialPage.d.ts +12 -0
  168. package/dist/kadaikodi/pages/admin/AdminFinancialPage.d.ts.map +1 -0
  169. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
  170. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  171. package/dist/kadaikodi/pages/admin/AdminOrdersPage.d.ts +11 -0
  172. package/dist/kadaikodi/pages/admin/AdminOrdersPage.d.ts.map +1 -0
  173. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
  174. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  175. package/dist/kadaikodi/pages/admin/AdminProfilePage.d.ts +11 -0
  176. package/dist/kadaikodi/pages/admin/AdminProfilePage.d.ts.map +1 -0
  177. package/dist/kadaikodi/pages/admin/AdminSettingsPage.d.ts +10 -0
  178. package/dist/kadaikodi/pages/admin/AdminSettingsPage.d.ts.map +1 -0
  179. package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts +13 -0
  180. package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts.map +1 -0
  181. package/dist/kadaikodi/pages/admin/CartManagementPage.js +558 -718
  182. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  183. package/dist/kadaikodi/pages/admin/UserManagementPage.d.ts +10 -0
  184. package/dist/kadaikodi/pages/admin/UserManagementPage.d.ts.map +1 -0
  185. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  186. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.d.ts +13 -0
  187. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.d.ts.map +1 -0
  188. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +142 -55
  189. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  190. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.d.ts +11 -0
  191. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.d.ts.map +1 -0
  192. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.d.ts +12 -0
  193. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.d.ts.map +1 -0
  194. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +129 -164
  195. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  196. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.d.ts +12 -0
  197. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.d.ts.map +1 -0
  198. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.d.ts +11 -0
  199. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.d.ts.map +1 -0
  200. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.d.ts +11 -0
  201. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.d.ts.map +1 -0
  202. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +379 -361
  203. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  204. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.d.ts +2 -0
  205. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.d.ts.map +1 -0
  206. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +266 -166
  207. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -1
  208. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.d.ts +2 -0
  209. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.d.ts.map +1 -0
  210. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
  211. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
  212. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.d.ts +10 -0
  213. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.d.ts.map +1 -0
  214. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +288 -161
  215. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  216. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts +12 -0
  217. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts.map +1 -0
  218. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
  219. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  220. package/dist/kadaikodi/pages/common/HelpSupportPage.d.ts +11 -0
  221. package/dist/kadaikodi/pages/common/HelpSupportPage.d.ts.map +1 -0
  222. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  223. package/dist/kadaikodi/pages/common/NotificationCenterPage.d.ts +10 -0
  224. package/dist/kadaikodi/pages/common/NotificationCenterPage.d.ts.map +1 -0
  225. package/dist/kadaikodi/pages/common/SettingsPage.d.ts +19 -0
  226. package/dist/kadaikodi/pages/common/SettingsPage.d.ts.map +1 -0
  227. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  228. package/dist/kadaikodi/pages/customer/BookingDetailsPage.d.ts +12 -0
  229. package/dist/kadaikodi/pages/customer/BookingDetailsPage.d.ts.map +1 -0
  230. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +17 -34
  231. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  232. package/dist/kadaikodi/pages/customer/CartDetailPage.d.ts +13 -0
  233. package/dist/kadaikodi/pages/customer/CartDetailPage.d.ts.map +1 -0
  234. package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
  235. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  236. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts +11 -0
  237. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts.map +1 -0
  238. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
  239. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  240. package/dist/kadaikodi/pages/customer/CheckoutPage.d.ts +9 -0
  241. package/dist/kadaikodi/pages/customer/CheckoutPage.d.ts.map +1 -0
  242. package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
  243. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  244. package/dist/kadaikodi/pages/customer/CustomerDashboard.d.ts +10 -0
  245. package/dist/kadaikodi/pages/customer/CustomerDashboard.d.ts.map +1 -0
  246. package/dist/kadaikodi/pages/customer/CustomerProfilePage.d.ts +10 -0
  247. package/dist/kadaikodi/pages/customer/CustomerProfilePage.d.ts.map +1 -0
  248. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.d.ts +12 -0
  249. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.d.ts.map +1 -0
  250. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +270 -230
  251. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  252. package/dist/kadaikodi/pages/customer/FavoritesPage.d.ts +11 -0
  253. package/dist/kadaikodi/pages/customer/FavoritesPage.d.ts.map +1 -0
  254. package/dist/kadaikodi/pages/customer/FavoritesPage.js +149 -412
  255. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  256. package/dist/kadaikodi/pages/customer/OrderHistoryPage.d.ts +9 -0
  257. package/dist/kadaikodi/pages/customer/OrderHistoryPage.d.ts.map +1 -0
  258. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
  259. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  260. package/dist/kadaikodi/pages/customer/OrderTrackingPage.d.ts +9 -0
  261. package/dist/kadaikodi/pages/customer/OrderTrackingPage.d.ts.map +1 -0
  262. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +176 -175
  263. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  264. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.d.ts +11 -0
  265. package/dist/kadaikodi/pages/customer/PaymentMethodsPage.d.ts.map +1 -0
  266. package/dist/kadaikodi/pages/customer/ReviewsPage.d.ts +12 -0
  267. package/dist/kadaikodi/pages/customer/ReviewsPage.d.ts.map +1 -0
  268. package/dist/kadaikodi/pages/customer/ReviewsPage.js +295 -438
  269. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  270. package/dist/kadaikodi/pages/customer/SavedAddressesPage.d.ts +10 -0
  271. package/dist/kadaikodi/pages/customer/SavedAddressesPage.d.ts.map +1 -0
  272. package/dist/kadaikodi/pages/customer/shared.d.ts +41 -0
  273. package/dist/kadaikodi/pages/customer/shared.d.ts.map +1 -0
  274. package/dist/kadaikodi/pages/customer/shared.js +181 -0
  275. package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
  276. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.d.ts +13 -0
  277. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.d.ts.map +1 -0
  278. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
  279. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  280. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.d.ts +10 -0
  281. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.d.ts.map +1 -0
  282. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
  283. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  284. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.d.ts +11 -0
  285. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.d.ts.map +1 -0
  286. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
  287. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  288. package/dist/kadaikodi/pages/investor/InvestorDashboard.d.ts +10 -0
  289. package/dist/kadaikodi/pages/investor/InvestorDashboard.d.ts.map +1 -0
  290. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
  291. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  292. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.d.ts +10 -0
  293. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.d.ts.map +1 -0
  294. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
  295. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  296. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.d.ts +11 -0
  297. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.d.ts.map +1 -0
  298. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
  299. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  300. package/dist/kadaikodi/pages/investor/InvestorProfilePage.d.ts +20 -0
  301. package/dist/kadaikodi/pages/investor/InvestorProfilePage.d.ts.map +1 -0
  302. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  303. package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts +18 -0
  304. package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts.map +1 -0
  305. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +424 -448
  306. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  307. package/dist/kadaikodi/pages/worker/WorkerDashboard.d.ts +14 -0
  308. package/dist/kadaikodi/pages/worker/WorkerDashboard.d.ts.map +1 -0
  309. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
  310. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  311. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.d.ts +18 -0
  312. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.d.ts.map +1 -0
  313. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
  314. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  315. package/dist/kadaikodi/pages/worker/WorkerProfilePage.d.ts +18 -0
  316. package/dist/kadaikodi/pages/worker/WorkerProfilePage.d.ts.map +1 -0
  317. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +300 -296
  318. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  319. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.d.ts +16 -0
  320. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.d.ts.map +1 -0
  321. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +284 -309
  322. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  323. package/dist/kadaikodi/store/index.d.ts +6 -0
  324. package/dist/kadaikodi/store/index.d.ts.map +1 -0
  325. package/dist/kadaikodi/store/kadaikodiStore.d.ts +60 -0
  326. package/dist/kadaikodi/store/kadaikodiStore.d.ts.map +1 -0
  327. package/dist/kadaikodi/types/index.d.ts +464 -0
  328. package/dist/kadaikodi/types/index.d.ts.map +1 -0
  329. package/dist/kadaikodi/utils/cn.d.ts +4 -0
  330. package/dist/kadaikodi/utils/cn.d.ts.map +1 -0
  331. package/dist/kadaikodi/utils/formatters.d.ts +78 -0
  332. package/dist/kadaikodi/utils/formatters.d.ts.map +1 -0
  333. package/dist/kadaikodi/utils/index.d.ts +8 -0
  334. package/dist/kadaikodi/utils/index.d.ts.map +1 -0
  335. package/dist/kadaikodi/utils/navigation.d.ts +20 -0
  336. package/dist/kadaikodi/utils/navigation.d.ts.map +1 -0
  337. package/dist/services/createSandboxAssistantTransport.d.ts +43 -0
  338. package/dist/services/createSandboxAssistantTransport.d.ts.map +1 -0
  339. package/dist/services/createSandboxAssistantTransport.js +15 -0
  340. package/dist/services/createSandboxAssistantTransport.js.map +1 -0
  341. package/package.json +5 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerOrdersPage.js","names":[],"sources":["../../../../src/kadaikodi/pages/worker/WorkerOrdersPage.tsx"],"sourcesContent":["/**\n * Worker Orders Page\n *\n * Lists the tasks assigned to the signed-in worker, sourced entirely from the\n * live backend (useWorkerTasks / useWorkerStats). No fabricated tasks, customers,\n * locations or numbers — empty/loading states are honest.\n *\n * - Loading state\n * - Stat cards (Today's Tasks, Completed, Pending, Today's Earnings, Rating) from real stats\n * - Current Task section for the in-progress task\n * - Filters bar (Status, Type, Priority, Sort By) applied client-side to real tasks\n * - Start / Complete actions wired to the updateWorkerTaskStatus mutation\n * - Call Customer and Navigate buttons per task\n *\n * @module kadaikodi/pages/worker\n */\n\nimport { useState, useEffect, useMemo } from 'react';\nimport {\n ClipboardList,\n MapPin,\n CheckCircle2,\n PlayCircle,\n ArrowRight,\n Phone,\n Navigation,\n Loader2,\n Truck,\n ShoppingBag,\n Package,\n Star,\n AlertTriangle,\n IndianRupee,\n} from 'lucide-react';\nimport { EmphasisPanel, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { StatusBadge } from '../../components/StatusBadge';\nimport { EmptyState } from '../../components/EmptyState';\nimport { useKadaikodi } from '../../context/KadaikodiContext';\nimport {\n useWorkerTasks,\n useWorkerStats,\n useUpdateWorkerTaskStatus,\n} from '../../hooks/useKadaikodiApi';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency } from '../../utils/formatters';\nimport type { WorkerTask } from '../../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface TaskFilters {\n status: string;\n type: string;\n priority: string;\n sortBy: string;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nfunction formatTimeRemaining(dueAt: string): string | null {\n if (!dueAt) return null;\n const target = new Date(dueAt);\n if (Number.isNaN(target.getTime())) return null;\n const diffInMinutes = Math.floor((target.getTime() - Date.now()) / (1000 * 60));\n if (diffInMinutes < 0) return 'Overdue';\n if (diffInMinutes < 60) return `${diffInMinutes} min`;\n return `${Math.floor(diffInMinutes / 60)}h ${diffInMinutes % 60}m`;\n}\n\nfunction getTaskTypeConfig(type: WorkerTask['type']) {\n switch (type) {\n case 'delivery':\n return {\n icon: Truck,\n label: 'Delivery',\n style: 'bg-accent-purple-subtle text-text-primary',\n };\n case 'pickup':\n return {\n icon: ShoppingBag,\n label: 'Pickup',\n style: 'bg-[var(--color-accent-soft)] text-text-primary',\n };\n case 'service':\n return {\n icon: Package,\n label: 'Service',\n style: 'bg-status-success-bg-subtle text-status-success-text',\n };\n default:\n return { icon: Package, label: type, style: 'bg-bg-sunken text-text-secondary' };\n }\n}\n\nfunction getPriorityStyle(priority: WorkerTask['priority']): string {\n switch (priority) {\n case 'urgent':\n return 'bg-status-error-bg-subtle text-status-error-text';\n case 'high':\n return 'bg-status-warning-bg-subtle text-status-warning-text';\n case 'medium':\n return 'bg-status-warning-bg-subtle text-status-warning-text';\n case 'low':\n return 'bg-status-success-bg-subtle text-status-success-text';\n default:\n return 'bg-bg-sunken text-text-secondary';\n }\n}\n\nfunction formatAddress(task: WorkerTask): string {\n if (!task.deliveryAddress) return '';\n const a = task.deliveryAddress;\n return [a.street, a.area, a.city, a.pincode].filter(Boolean).join(', ');\n}\n\nconst priorityWeight: Record<string, number> = { urgent: 0, high: 1, medium: 2, low: 3 };\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const WorkerOrdersPage = () => {\n const { navigateTo, currentUser } = useKadaikodi();\n const workerId = currentUser?.id ?? '';\n\n const { data: tasks = [], isLoading: isLoadingTasks } = useWorkerTasks(workerId);\n const { data: stats, isLoading: isLoadingStats } = useWorkerStats(workerId);\n const updateTaskStatus = useUpdateWorkerTaskStatus();\n\n const [filters, setFilters] = useState<TaskFilters>({\n status: '',\n type: '',\n priority: '',\n sortBy: 'priority',\n });\n const [, setTick] = useState(0);\n\n // Refresh the relative time display periodically.\n useEffect(() => {\n const interval = setInterval(() => setTick((t) => t + 1), 60000);\n return () => clearInterval(interval);\n }, []);\n\n const currentTask = useMemo(() => tasks.find((t) => t.status === 'in_progress') ?? null, [tasks]);\n\n const filteredTasks = useMemo(() => {\n let list = [...tasks];\n if (filters.status) list = list.filter((t) => t.status === filters.status);\n if (filters.type) list = list.filter((t) => t.type === filters.type);\n if (filters.priority) list = list.filter((t) => t.priority === filters.priority);\n\n switch (filters.sortBy) {\n case 'priority':\n list.sort((a, b) => (priorityWeight[a.priority] ?? 4) - (priorityWeight[b.priority] ?? 4));\n break;\n case 'time':\n list.sort((a, b) => new Date(a.dueAt).getTime() - new Date(b.dueAt).getTime());\n break;\n case 'distance':\n list.sort((a, b) => (a.distance ?? 999) - (b.distance ?? 999));\n break;\n }\n return list;\n }, [tasks, filters]);\n\n const completedCount = useMemo(\n () => tasks.filter((t) => t.status === 'completed').length,\n [tasks]\n );\n const pendingCount = useMemo(() => tasks.filter((t) => t.status === 'pending').length, [tasks]);\n\n const handleFilterChange = (key: keyof TaskFilters, value: string) => {\n setFilters((prev) => ({ ...prev, [key]: value }));\n };\n\n const handleStartTask = (taskId: string) => {\n updateTaskStatus.mutate({ taskId, status: 'IN_PROGRESS' });\n };\n\n const handleCompleteTask = (taskId: string) => {\n updateTaskStatus.mutate({ taskId, status: 'COMPLETED' });\n };\n\n const handleCallCustomer = (phone: string) => {\n if (!phone) return;\n window.location.href = `tel:${phone.replace(/\\s/g, '')}`;\n };\n\n const handleNavigateToCustomer = (task: WorkerTask) => {\n const addr = formatAddress(task);\n if (addr) {\n window.open(`https://maps.google.com?q=${encodeURIComponent(addr)}`, '_blank');\n }\n };\n\n if (isLoadingTasks || isLoadingStats) {\n return (\n <PageLayout title=\"My Orders\" description=\"Manage your assigned orders\">\n <div className=\"flex items-center justify-center py-24\">\n <div className=\"text-center\">\n <Loader2 className=\"h-10 w-10 animate-spin text-text-secondary mx-auto mb-4\" />\n <p className=\"text-sm text-text-secondary\">Loading tasks...</p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout title=\"My Orders\" description=\"Manage your assigned orders\">\n <PagePurpose className=\"mb-6\">\n Your work for the day, task by task. Use this page to see what&apos;s assigned to you, focus\n on your current task, and move jobs from pending to completed — while keeping an eye on your\n tasks, earnings and rating. Open any task for full details and customer info so you can get\n it done right.\n </PagePurpose>\n\n <div className=\"space-y-6\">\n {/* Stats Overview — the one emphasis zone for this page */}\n <EmphasisPanel>\n <h2 className=\"mb-4 text-base font-semibold text-text-primary\">Today at a Glance</h2>\n <div className=\"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3\">\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <p className=\"text-xs text-text-secondary\">Today's Tasks</p>\n <p className=\"text-2xl font-bold text-text-primary\">{stats?.todayTasks ?? 0}</p>\n </div>\n <div className=\"rounded-lg border border-status-success-text/20 bg-status-success-bg-subtle p-4 shadow-sm\">\n <p className=\"text-xs text-status-success-text\">Completed</p>\n <p className=\"text-2xl font-bold text-status-success-text\">{completedCount}</p>\n </div>\n <div className=\"rounded-lg border border-status-warning-text/20 bg-status-warning-bg-subtle p-4 shadow-sm\">\n <p className=\"text-xs text-status-warning-text\">Pending</p>\n <p className=\"text-2xl font-bold text-status-warning-text\">{pendingCount}</p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <p className=\"text-xs text-text-secondary\">Today's Earnings</p>\n <p className=\"text-2xl font-bold text-text-primary\">\n {formatCurrency(stats?.todayEarnings ?? 0, { minimumFractionDigits: 0 })}\n </p>\n </div>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <p className=\"text-xs text-text-secondary\">Rating</p>\n <p className=\"text-2xl font-bold text-text-primary flex items-center gap-1\">\n <Star className=\"h-4 w-4 fill-status-warning-text text-status-warning-text\" />\n {stats?.averageRating ?? 0}\n </p>\n </div>\n </div>\n </EmphasisPanel>\n\n {/* Current Task */}\n {currentTask && (\n <div className=\"rounded-lg border-2 border-border-focus/30 bg-[var(--color-accent-soft)] p-5\">\n <h2 className=\"text-base font-semibold text-text-primary mb-4\">Current Task</h2>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {currentTask.orderId ? `Order #${currentTask.orderId}` : currentTask.cartName}\n </h3>\n {(() => {\n const cfg = getTaskTypeConfig(currentTask.type);\n const TypeIcon = cfg.icon;\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-medium',\n cfg.style\n )}\n >\n <TypeIcon className=\"h-3 w-3\" />\n {cfg.label}\n </span>\n );\n })()}\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium capitalize',\n getPriorityStyle(currentTask.priority)\n )}\n >\n {currentTask.priority}\n </span>\n </div>\n <p className=\"text-xs text-text-secondary mt-1\">{currentTask.cartName}</p>\n </div>\n {formatTimeRemaining(currentTask.dueAt) && (\n <div className=\"text-right\">\n <p className=\"text-xl font-bold text-text-primary\">\n {formatTimeRemaining(currentTask.dueAt)}\n </p>\n <p className=\"text-xs text-text-secondary\">Time remaining</p>\n </div>\n )}\n </div>\n\n {/* Details */}\n <div className=\"border-t border-border-subtle pt-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">Customer</p>\n <p className=\"text-sm font-medium text-text-primary\">\n {currentTask.customerName || '—'}\n </p>\n {formatAddress(currentTask) && (\n <p className=\"text-xs text-text-secondary mt-1\">\n {formatAddress(currentTask)}\n </p>\n )}\n </div>\n {currentTask.description && (\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">Task</p>\n <p className=\"text-xs text-text-primary\">{currentTask.description}</p>\n </div>\n )}\n </div>\n\n {currentTask.notes && (\n <div className=\"mt-3 p-3 rounded-md bg-status-warning-bg-subtle border border-status-warning-text/20\">\n <p className=\"text-xs font-medium text-status-warning-text flex items-center gap-1\">\n <AlertTriangle className=\"h-3 w-3\" />\n Notes:\n </p>\n <p className=\"text-xs text-status-warning-text mt-0.5\">{currentTask.notes}</p>\n </div>\n )}\n\n <div className=\"flex flex-wrap gap-2 mt-4\">\n {currentTask.customerPhone && (\n <button\n type=\"button\"\n onClick={() => handleCallCustomer(currentTask.customerPhone)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Phone className=\"h-3.5 w-3.5\" />\n Call Customer\n </button>\n )}\n {currentTask.type === 'delivery' && formatAddress(currentTask) && (\n <button\n type=\"button\"\n onClick={() => handleNavigateToCustomer(currentTask)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Navigation className=\"h-3.5 w-3.5\" />\n Navigate\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => handleCompleteTask(currentTask.id)}\n className=\"ml-auto inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-2 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors\"\n >\n <CheckCircle2 className=\"h-3.5 w-3.5\" />\n Complete Task\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Filters */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-3\">\n <select\n value={filters.status}\n onChange={(e) => handleFilterChange('status', e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n >\n <option value=\"\">All Tasks</option>\n <option value=\"pending\">Pending Tasks</option>\n <option value=\"in_progress\">In Progress</option>\n <option value=\"completed\">Completed</option>\n </select>\n <select\n value={filters.type}\n onChange={(e) => handleFilterChange('type', e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n >\n <option value=\"\">All Types</option>\n <option value=\"delivery\">Delivery</option>\n <option value=\"pickup\">Pickup</option>\n <option value=\"service\">Service</option>\n </select>\n <select\n value={filters.priority}\n onChange={(e) => handleFilterChange('priority', e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n >\n <option value=\"\">All Priorities</option>\n <option value=\"urgent\">Urgent</option>\n <option value=\"high\">High</option>\n <option value=\"medium\">Medium</option>\n <option value=\"low\">Low</option>\n </select>\n <select\n value={filters.sortBy}\n onChange={(e) => handleFilterChange('sortBy', e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n >\n <option value=\"priority\">Sort by Priority</option>\n <option value=\"time\">Sort by Time</option>\n <option value=\"distance\">Sort by Distance</option>\n </select>\n </div>\n </div>\n\n {/* Task List */}\n {filteredTasks.length === 0 ? (\n <EmptyState\n icon={<ClipboardList className=\"h-12 w-12\" />}\n title=\"No tasks assigned\"\n description=\"You have no tasks matching this view. New assignments will appear here.\"\n />\n ) : (\n <div className=\"space-y-3\">\n {filteredTasks.map((task) => {\n const typeConfig = getTaskTypeConfig(task.type);\n const TypeIcon = typeConfig.icon;\n const timeRemaining = formatTimeRemaining(task.dueAt);\n const address = formatAddress(task);\n return (\n <div\n key={task.id}\n className=\"rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm hover:shadow-md transition-shadow\"\n >\n {/* Task Header */}\n <div className=\"flex items-center justify-between mb-3\">\n <div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {task.orderId ? `Order #${task.orderId}` : task.cartName}\n </h3>\n <span\n className={cn(\n 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-medium',\n typeConfig.style\n )}\n >\n <TypeIcon className=\"h-3 w-3\" />\n {typeConfig.label}\n </span>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium capitalize',\n getPriorityStyle(task.priority)\n )}\n >\n {task.priority}\n </span>\n </div>\n <p className=\"text-xs text-text-secondary mt-1\">\n {task.cartName}\n {task.customerName ? ` · ${task.customerName}` : ''}\n </p>\n </div>\n {task.earnings > 0 && (\n <div className=\"text-right\">\n <p className=\"text-lg font-bold text-text-primary flex items-center gap-0.5 justify-end\">\n <IndianRupee className=\"h-4 w-4\" />\n {formatCurrency(task.earnings, {\n minimumFractionDigits: 0,\n style: 'decimal',\n })}\n </p>\n <p className=\"text-xs text-text-secondary\">Earnings</p>\n </div>\n )}\n </div>\n\n {/* Task Body */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-3 mb-3 text-sm\">\n {task.description && (\n <div>\n <p className=\"text-xs text-text-secondary\">Task</p>\n <p className=\"text-xs text-text-primary line-clamp-2\">{task.description}</p>\n </div>\n )}\n {address && (\n <div>\n <p className=\"text-xs text-text-secondary\">Delivery Address</p>\n <p className=\"text-xs text-text-primary\">{address}</p>\n </div>\n )}\n {timeRemaining && (\n <div>\n <p className=\"text-xs text-text-secondary\">Time</p>\n <p\n className={cn(\n 'text-xs font-medium',\n timeRemaining === 'Overdue'\n ? 'text-status-error-text'\n : 'text-text-primary'\n )}\n >\n {timeRemaining}\n </p>\n </div>\n )}\n </div>\n\n {/* Task Footer */}\n {task.status === 'pending' && (\n <div className=\"flex items-center flex-wrap gap-2 border-t border-border-subtle pt-3\">\n <button\n type=\"button\"\n onClick={() => handleStartTask(task.id)}\n disabled={currentTask !== null}\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium transition-colors',\n currentTask !== null\n ? 'bg-bg-sunken text-text-secondary cursor-not-allowed'\n : 'bg-[var(--color-accent-soft)] text-text-primary hover:bg-[var(--color-accent-soft)]'\n )}\n >\n <PlayCircle className=\"h-3.5 w-3.5\" />\n {currentTask ? 'Complete current first' : 'Start Task'}\n </button>\n {task.customerPhone && (\n <button\n type=\"button\"\n onClick={() => handleCallCustomer(task.customerPhone)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Phone className=\"h-3.5 w-3.5\" />\n Call\n </button>\n )}\n {task.type === 'delivery' && task.distance != null && (\n <span className=\"ml-auto text-xs text-text-secondary flex items-center gap-1\">\n <MapPin className=\"h-3 w-3\" />\n {task.distance} km away\n </span>\n )}\n </div>\n )}\n {task.status === 'in_progress' && task.id !== currentTask?.id && (\n <div className=\"flex items-center gap-2 border-t border-border-subtle pt-3\">\n <button\n type=\"button\"\n onClick={() => handleCompleteTask(task.id)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-1.5 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors\"\n >\n <CheckCircle2 className=\"h-3.5 w-3.5\" />\n Complete\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo(`/worker/task/${task.id}`)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n Details\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n )}\n {task.status === 'completed' && (\n <div className=\"flex items-center gap-2 border-t border-border-subtle pt-3\">\n <StatusBadge status=\"completed\" />\n <button\n type=\"button\"\n onClick={() => navigateTo(`/worker/task/${task.id}`)}\n className=\"ml-auto inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n Details\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"WorkerOrdersPage.js","names":[],"sources":["../../../../src/kadaikodi/pages/worker/WorkerOrdersPage.tsx"],"sourcesContent":["/**\n * Worker Orders Page\n *\n * Lists the tasks assigned to the signed-in worker, sourced entirely from the\n * live backend (useWorkerTasks / useWorkerStats). No fabricated tasks, customers,\n * locations or numbers — empty/loading states are honest.\n *\n * - Loading state\n * - Stat cards (Today's Tasks, Completed, Pending, Today's Earnings, Rating) from real stats\n * - Current Task section for the in-progress task\n * - Filters bar (Status, Type, Priority, Sort By) applied client-side to real tasks\n * - Start / Complete actions wired to the updateWorkerTaskStatus mutation\n * - Call Customer and Navigate buttons per task\n *\n * @module kadaikodi/pages/worker\n */\n\nimport { useState, useEffect, useMemo } from 'react';\nimport {\n ClipboardList,\n MapPin,\n CheckCircle2,\n PlayCircle,\n ArrowRight,\n Phone,\n Navigation,\n Loader2,\n Truck,\n ShoppingBag,\n Package,\n Star,\n AlertTriangle,\n IndianRupee,\n} from 'lucide-react';\nimport { PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { StatCard } from '../../components/viz';\nimport { PageLayout } from '../../components/PageLayout';\nimport { StatusBadge } from '../../components/StatusBadge';\nimport { EmptyState } from '../../components/EmptyState';\nimport { useKadaikodi } from '../../context/KadaikodiContext';\nimport {\n useWorkerTasks,\n useWorkerStats,\n useUpdateWorkerTaskStatus,\n} from '../../hooks/useKadaikodiApi';\nimport { cn } from '../../utils/cn';\nimport { formatCurrency } from '../../utils/formatters';\nimport type { WorkerTask } from '../../types';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface TaskFilters {\n status: string;\n type: string;\n priority: string;\n sortBy: string;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nfunction formatTimeRemaining(dueAt: string): string | null {\n if (!dueAt) return null;\n const target = new Date(dueAt);\n if (Number.isNaN(target.getTime())) return null;\n const diffInMinutes = Math.floor((target.getTime() - Date.now()) / (1000 * 60));\n if (diffInMinutes < 0) return 'Overdue';\n if (diffInMinutes < 60) return `${diffInMinutes} min`;\n return `${Math.floor(diffInMinutes / 60)}h ${diffInMinutes % 60}m`;\n}\n\nfunction getTaskTypeConfig(type: WorkerTask['type']) {\n switch (type) {\n case 'delivery':\n return {\n icon: Truck,\n label: 'Delivery',\n style: 'bg-accent-purple-subtle text-text-primary',\n };\n case 'pickup':\n return {\n icon: ShoppingBag,\n label: 'Pickup',\n style: 'bg-[var(--color-accent-soft)] text-text-primary',\n };\n case 'service':\n return {\n icon: Package,\n label: 'Service',\n style: 'bg-status-success-bg-subtle text-status-success-text',\n };\n default:\n return { icon: Package, label: type, style: 'bg-bg-sunken text-text-secondary' };\n }\n}\n\nfunction getPriorityStyle(priority: WorkerTask['priority']): string {\n switch (priority) {\n case 'urgent':\n return 'bg-status-error-bg-subtle text-status-error-text';\n case 'high':\n return 'bg-status-warning-bg-subtle text-status-warning-text';\n case 'medium':\n return 'bg-status-warning-bg-subtle text-status-warning-text';\n case 'low':\n return 'bg-status-success-bg-subtle text-status-success-text';\n default:\n return 'bg-bg-sunken text-text-secondary';\n }\n}\n\nfunction formatAddress(task: WorkerTask): string {\n if (!task.deliveryAddress) return '';\n const a = task.deliveryAddress;\n return [a.street, a.area, a.city, a.pincode].filter(Boolean).join(', ');\n}\n\nconst priorityWeight: Record<string, number> = { urgent: 0, high: 1, medium: 2, low: 3 };\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const WorkerOrdersPage = () => {\n const { navigateTo, currentUser } = useKadaikodi();\n const workerId = currentUser?.id ?? '';\n\n const { data: tasks = [], isLoading: isLoadingTasks } = useWorkerTasks(workerId);\n const { data: stats, isLoading: isLoadingStats } = useWorkerStats(workerId);\n const updateTaskStatus = useUpdateWorkerTaskStatus();\n\n const [filters, setFilters] = useState<TaskFilters>({\n status: '',\n type: '',\n priority: '',\n sortBy: 'priority',\n });\n const [, setTick] = useState(0);\n\n // Refresh the relative time display periodically.\n useEffect(() => {\n const interval = setInterval(() => setTick((t) => t + 1), 60000);\n return () => clearInterval(interval);\n }, []);\n\n const currentTask = useMemo(() => tasks.find((t) => t.status === 'in_progress') ?? null, [tasks]);\n\n const filteredTasks = useMemo(() => {\n let list = [...tasks];\n if (filters.status) list = list.filter((t) => t.status === filters.status);\n if (filters.type) list = list.filter((t) => t.type === filters.type);\n if (filters.priority) list = list.filter((t) => t.priority === filters.priority);\n\n switch (filters.sortBy) {\n case 'priority':\n list.sort((a, b) => (priorityWeight[a.priority] ?? 4) - (priorityWeight[b.priority] ?? 4));\n break;\n case 'time':\n list.sort((a, b) => new Date(a.dueAt).getTime() - new Date(b.dueAt).getTime());\n break;\n case 'distance':\n list.sort((a, b) => (a.distance ?? 999) - (b.distance ?? 999));\n break;\n }\n return list;\n }, [tasks, filters]);\n\n const completedCount = useMemo(\n () => tasks.filter((t) => t.status === 'completed').length,\n [tasks]\n );\n const pendingCount = useMemo(() => tasks.filter((t) => t.status === 'pending').length, [tasks]);\n\n const handleFilterChange = (key: keyof TaskFilters, value: string) => {\n setFilters((prev) => ({ ...prev, [key]: value }));\n };\n\n const handleStartTask = (taskId: string) => {\n updateTaskStatus.mutate({ taskId, status: 'IN_PROGRESS' });\n };\n\n const handleCompleteTask = (taskId: string) => {\n updateTaskStatus.mutate({ taskId, status: 'COMPLETED' });\n };\n\n const handleCallCustomer = (phone: string) => {\n if (!phone) return;\n window.location.href = `tel:${phone.replace(/\\s/g, '')}`;\n };\n\n const handleNavigateToCustomer = (task: WorkerTask) => {\n const addr = formatAddress(task);\n if (addr) {\n window.open(`https://maps.google.com?q=${encodeURIComponent(addr)}`, '_blank');\n }\n };\n\n if (isLoadingTasks || isLoadingStats) {\n return (\n <PageLayout title=\"My Orders\" description=\"Manage your assigned orders\">\n <div className=\"flex items-center justify-center py-24\">\n <div className=\"text-center\">\n <Loader2 className=\"h-10 w-10 animate-spin text-text-secondary mx-auto mb-4\" />\n <p className=\"text-sm text-text-secondary\">Loading tasks...</p>\n </div>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout title=\"My Orders\" description=\"Manage your assigned orders\">\n <PagePurpose className=\"mb-6\">\n Your work for the day, task by task. Use this page to see what&apos;s assigned to you, focus\n on your current task, and move jobs from pending to completed — while keeping an eye on your\n tasks, earnings and rating. Open any task for full details and customer info so you can get\n it done right.\n </PagePurpose>\n\n <div className=\"space-y-6\">\n {/* Stats Overview */}\n <div className=\"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3 sm:gap-4\">\n <StatCard\n label=\"Today's Tasks\"\n value={stats?.todayTasks ?? 0}\n icon={<ClipboardList className=\"h-4 w-4\" />}\n />\n <StatCard\n label=\"Completed\"\n value={completedCount}\n icon={<CheckCircle2 className=\"h-4 w-4\" />}\n />\n <StatCard\n label=\"Pending\"\n value={pendingCount}\n icon={<PlayCircle className=\"h-4 w-4\" />}\n />\n <StatCard\n label=\"Today's Earnings\"\n value={formatCurrency(stats?.todayEarnings ?? 0, { minimumFractionDigits: 0 })}\n icon={<IndianRupee className=\"h-4 w-4\" />}\n />\n <StatCard\n label=\"Rating\"\n value={\n <span className=\"flex items-center gap-1.5\">\n {stats?.averageRating ?? 0}\n <Star className=\"h-5 w-5 fill-status-warning-text text-status-warning-text\" />\n </span>\n }\n icon={<Star className=\"h-4 w-4\" />}\n />\n </div>\n\n {/* Current Task */}\n {currentTask && (\n <div className=\"rounded-lg border-2 border-border-focus/30 bg-[var(--color-accent-soft)] p-5\">\n <h2 className=\"text-base font-semibold text-text-primary mb-4\">Current Task</h2>\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {currentTask.orderId ? `Order #${currentTask.orderId}` : currentTask.cartName}\n </h3>\n {(() => {\n const cfg = getTaskTypeConfig(currentTask.type);\n const TypeIcon = cfg.icon;\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-medium',\n cfg.style\n )}\n >\n <TypeIcon className=\"h-3 w-3\" />\n {cfg.label}\n </span>\n );\n })()}\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium capitalize',\n getPriorityStyle(currentTask.priority)\n )}\n >\n {currentTask.priority}\n </span>\n </div>\n <p className=\"text-xs text-text-secondary mt-1\">{currentTask.cartName}</p>\n </div>\n {formatTimeRemaining(currentTask.dueAt) && (\n <div className=\"text-right\">\n <p className=\"text-xl font-bold text-text-primary\">\n {formatTimeRemaining(currentTask.dueAt)}\n </p>\n <p className=\"text-xs text-text-secondary\">Time remaining</p>\n </div>\n )}\n </div>\n\n {/* Details */}\n <div className=\"border-t border-border-subtle pt-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">Customer</p>\n <p className=\"text-sm font-medium text-text-primary\">\n {currentTask.customerName || '—'}\n </p>\n {formatAddress(currentTask) && (\n <p className=\"text-xs text-text-secondary mt-1\">\n {formatAddress(currentTask)}\n </p>\n )}\n </div>\n {currentTask.description && (\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">Task</p>\n <p className=\"text-xs text-text-primary\">{currentTask.description}</p>\n </div>\n )}\n </div>\n\n {currentTask.notes && (\n <div className=\"mt-3 p-3 rounded-md bg-status-warning-bg-subtle border border-status-warning-text/20\">\n <p className=\"text-xs font-medium text-status-warning-text flex items-center gap-1\">\n <AlertTriangle className=\"h-3 w-3\" />\n Notes:\n </p>\n <p className=\"text-xs text-status-warning-text mt-0.5\">{currentTask.notes}</p>\n </div>\n )}\n\n <div className=\"flex flex-wrap gap-2 mt-4\">\n {currentTask.customerPhone && (\n <button\n type=\"button\"\n onClick={() => handleCallCustomer(currentTask.customerPhone)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Phone className=\"h-3.5 w-3.5\" />\n Call Customer\n </button>\n )}\n {currentTask.type === 'delivery' && formatAddress(currentTask) && (\n <button\n type=\"button\"\n onClick={() => handleNavigateToCustomer(currentTask)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-2 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Navigation className=\"h-3.5 w-3.5\" />\n Navigate\n </button>\n )}\n <button\n type=\"button\"\n onClick={() => handleCompleteTask(currentTask.id)}\n className=\"ml-auto inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-2 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors\"\n >\n <CheckCircle2 className=\"h-3.5 w-3.5\" />\n Complete Task\n </button>\n </div>\n </div>\n </div>\n </div>\n )}\n\n {/* Filters */}\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4 shadow-sm\">\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-3\">\n <select\n value={filters.status}\n onChange={(e) => handleFilterChange('status', e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n >\n <option value=\"\">All Tasks</option>\n <option value=\"pending\">Pending Tasks</option>\n <option value=\"in_progress\">In Progress</option>\n <option value=\"completed\">Completed</option>\n </select>\n <select\n value={filters.type}\n onChange={(e) => handleFilterChange('type', e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n >\n <option value=\"\">All Types</option>\n <option value=\"delivery\">Delivery</option>\n <option value=\"pickup\">Pickup</option>\n <option value=\"service\">Service</option>\n </select>\n <select\n value={filters.priority}\n onChange={(e) => handleFilterChange('priority', e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n >\n <option value=\"\">All Priorities</option>\n <option value=\"urgent\">Urgent</option>\n <option value=\"high\">High</option>\n <option value=\"medium\">Medium</option>\n <option value=\"low\">Low</option>\n </select>\n <select\n value={filters.sortBy}\n onChange={(e) => handleFilterChange('sortBy', e.target.value)}\n className=\"w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary focus:outline-none focus:ring-2 focus:ring-border-focus/40\"\n >\n <option value=\"priority\">Sort by Priority</option>\n <option value=\"time\">Sort by Time</option>\n <option value=\"distance\">Sort by Distance</option>\n </select>\n </div>\n </div>\n\n {/* Task List */}\n {filteredTasks.length === 0 ? (\n <EmptyState\n icon={<ClipboardList className=\"h-12 w-12\" />}\n title=\"No tasks assigned\"\n description=\"You have no tasks matching this view. New assignments will appear here.\"\n />\n ) : (\n <div className=\"space-y-3\">\n {filteredTasks.map((task) => {\n const typeConfig = getTaskTypeConfig(task.type);\n const TypeIcon = typeConfig.icon;\n const timeRemaining = formatTimeRemaining(task.dueAt);\n const address = formatAddress(task);\n return (\n <div\n key={task.id}\n className=\"rounded-lg border border-border-subtle bg-bg-surface p-5 shadow-sm hover:shadow-md transition-shadow\"\n >\n {/* Task Header */}\n <div className=\"flex items-center justify-between mb-3\">\n <div>\n <div className=\"flex items-center gap-2 flex-wrap\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {task.orderId ? `Order #${task.orderId}` : task.cartName}\n </h3>\n <span\n className={cn(\n 'inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-medium',\n typeConfig.style\n )}\n >\n <TypeIcon className=\"h-3 w-3\" />\n {typeConfig.label}\n </span>\n <span\n className={cn(\n 'inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium capitalize',\n getPriorityStyle(task.priority)\n )}\n >\n {task.priority}\n </span>\n </div>\n <p className=\"text-xs text-text-secondary mt-1\">\n {task.cartName}\n {task.customerName ? ` · ${task.customerName}` : ''}\n </p>\n </div>\n {task.earnings > 0 && (\n <div className=\"text-right\">\n <p className=\"text-lg font-bold text-text-primary flex items-center gap-0.5 justify-end\">\n <IndianRupee className=\"h-4 w-4\" />\n {formatCurrency(task.earnings, {\n minimumFractionDigits: 0,\n style: 'decimal',\n })}\n </p>\n <p className=\"text-xs text-text-secondary\">Earnings</p>\n </div>\n )}\n </div>\n\n {/* Task Body */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-3 mb-3 text-sm\">\n {task.description && (\n <div>\n <p className=\"text-xs text-text-secondary\">Task</p>\n <p className=\"text-xs text-text-primary line-clamp-2\">{task.description}</p>\n </div>\n )}\n {address && (\n <div>\n <p className=\"text-xs text-text-secondary\">Delivery Address</p>\n <p className=\"text-xs text-text-primary\">{address}</p>\n </div>\n )}\n {timeRemaining && (\n <div>\n <p className=\"text-xs text-text-secondary\">Time</p>\n <p\n className={cn(\n 'text-xs font-medium',\n timeRemaining === 'Overdue'\n ? 'text-status-error-text'\n : 'text-text-primary'\n )}\n >\n {timeRemaining}\n </p>\n </div>\n )}\n </div>\n\n {/* Task Footer */}\n {task.status === 'pending' && (\n <div className=\"flex items-center flex-wrap gap-2 border-t border-border-subtle pt-3\">\n <button\n type=\"button\"\n onClick={() => handleStartTask(task.id)}\n disabled={currentTask !== null}\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs font-medium transition-colors',\n currentTask !== null\n ? 'bg-bg-sunken text-text-secondary cursor-not-allowed'\n : 'bg-[var(--color-accent-soft)] text-text-primary hover:bg-[var(--color-accent-soft)]'\n )}\n >\n <PlayCircle className=\"h-3.5 w-3.5\" />\n {currentTask ? 'Complete current first' : 'Start Task'}\n </button>\n {task.customerPhone && (\n <button\n type=\"button\"\n onClick={() => handleCallCustomer(task.customerPhone)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n <Phone className=\"h-3.5 w-3.5\" />\n Call\n </button>\n )}\n {task.type === 'delivery' && task.distance != null && (\n <span className=\"ml-auto text-xs text-text-secondary flex items-center gap-1\">\n <MapPin className=\"h-3 w-3\" />\n {task.distance} km away\n </span>\n )}\n </div>\n )}\n {task.status === 'in_progress' && task.id !== currentTask?.id && (\n <div className=\"flex items-center gap-2 border-t border-border-subtle pt-3\">\n <button\n type=\"button\"\n onClick={() => handleCompleteTask(task.id)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-status-success-bg-subtle px-3 py-1.5 text-xs font-medium text-status-success-text hover:bg-status-success-bg-subtle transition-colors\"\n >\n <CheckCircle2 className=\"h-3.5 w-3.5\" />\n Complete\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo(`/worker/task/${task.id}`)}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n Details\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n )}\n {task.status === 'completed' && (\n <div className=\"flex items-center gap-2 border-t border-border-subtle pt-3\">\n <StatusBadge status=\"completed\" />\n <button\n type=\"button\"\n onClick={() => navigateTo(`/worker/task/${task.id}`)}\n className=\"ml-auto inline-flex items-center gap-1.5 rounded-md bg-accent px-3 py-1.5 text-xs font-medium text-text-primary hover:bg-accent/80 transition-colors\"\n >\n Details\n <ArrowRight className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Worker Profile Page
3
+ *
4
+ * Full-featured profile page with:
5
+ * - 6 sidebar tabs: Personal Info, Work Details, Address, Documents, Achievements, Notifications
6
+ * - Edit/Save/Cancel mode toggle with all form fields becoming editable
7
+ * - Profile image upload with camera icon overlay
8
+ * - Personal Info: first/last name, email, phone, DOB + Emergency Contact
9
+ * - Work Details: Employee ID, Designation, Department, Work Location, Joining Date, Employment Type + 3 stat cards
10
+ * - Address tab: Current address + Permanent address with "same as current" checkbox
11
+ * - Documents tab: PAN, Aadhar (masked, readonly), Bank Name, Account Number, IFSC Code + security notice
12
+ * - Achievements tab: badges + Performance Metrics with progress bars
13
+ * - Notifications tab: 5 toggle switches for notification preferences
14
+ *
15
+ * @module kadaikodi/pages/worker
16
+ */
17
+ export declare const WorkerProfilePage: () => import("react").JSX.Element;
18
+ //# sourceMappingURL=WorkerProfilePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerProfilePage.d.ts","sourceRoot":"","sources":["../../../../src/kadaikodi/pages/worker/WorkerProfilePage.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAyFH,eAAO,MAAM,iBAAiB,mCA8yB7B,CAAC"}