@burdenoff/microfe-kadaikodi 2026.704.3 → 2026.704.5

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 (145) hide show
  1. package/dist/kadaikodi/KadaikodiRoutes.js +34 -26
  2. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  3. package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
  4. package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
  5. package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
  6. package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
  7. package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
  8. package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
  9. package/dist/kadaikodi/components/viz/BarChart.js +83 -0
  10. package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
  11. package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
  12. package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
  13. package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
  14. package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
  15. package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
  16. package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
  17. package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
  18. package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
  19. package/dist/kadaikodi/components/viz/LineChart.js +4 -0
  20. package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
  21. package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
  22. package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
  23. package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
  24. package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
  25. package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
  26. package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
  27. package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
  28. package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
  29. package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
  30. package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
  31. package/dist/kadaikodi/components/viz/StatCard.js +60 -0
  32. package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
  33. package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
  34. package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
  35. package/dist/kadaikodi/components/viz/Timeline.js +66 -0
  36. package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
  37. package/dist/kadaikodi/components/viz/index.js +23 -0
  38. package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
  39. package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
  40. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
  41. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
  42. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
  43. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
  44. package/dist/kadaikodi/components/viz/lib/format.js +21 -0
  45. package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
  46. package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
  47. package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
  48. package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
  49. package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
  50. package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
  51. package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
  52. package/dist/kadaikodi/hooks/useKadaikodiApi.js +84 -6
  53. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  54. package/dist/kadaikodi/pages/HomePage.js +373 -631
  55. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  56. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
  57. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
  59. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  60. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
  61. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
  63. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  65. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
  66. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  67. package/dist/kadaikodi/pages/admin/CartManagementPage.js +564 -729
  68. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  69. package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
  70. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  71. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +201 -120
  72. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  73. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
  74. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  75. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +173 -194
  76. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  77. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
  78. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  79. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
  80. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  81. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +428 -347
  82. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  83. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +332 -0
  84. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
  85. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
  86. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
  87. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +294 -162
  88. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  89. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
  90. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  91. package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
  92. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  93. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  94. package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
  95. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  96. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +239 -156
  97. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  98. package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
  99. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  100. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
  101. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  102. package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
  103. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  104. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +5 -5
  105. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  106. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
  107. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  108. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +272 -230
  109. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  110. package/dist/kadaikodi/pages/customer/FavoritesPage.js +150 -413
  111. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  112. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
  113. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  114. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +411 -305
  115. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  116. package/dist/kadaikodi/pages/customer/ReviewsPage.js +310 -406
  117. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  118. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  119. package/dist/kadaikodi/pages/customer/shared.js +181 -0
  120. package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
  121. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
  122. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  123. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
  124. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  125. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
  126. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  127. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
  128. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  129. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
  130. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  131. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
  132. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  133. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
  134. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  135. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +428 -431
  136. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  137. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
  138. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  139. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
  140. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  141. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +360 -288
  142. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  143. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +303 -281
  144. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  145. package/package.json +1 -1
@@ -0,0 +1,27 @@
1
+ //#region src/kadaikodi/components/viz/lib/palette.ts
2
+ var e = "var(--color-accent-primary)", t = "var(--color-chart-grid)", n = "var(--color-chart-axis)", r = {
3
+ success: "var(--color-status-success-text)",
4
+ warning: "var(--color-status-warning-text)",
5
+ danger: "var(--color-status-error-text)",
6
+ info: "var(--color-status-info-text)"
7
+ }, i = [
8
+ e,
9
+ "var(--color-accent-blue)",
10
+ "var(--color-accent-teal)",
11
+ "var(--color-accent-purple)",
12
+ "var(--color-accent-indigo)",
13
+ r.warning,
14
+ r.info,
15
+ r.success,
16
+ "var(--color-chart-6)",
17
+ "var(--color-chart-7)",
18
+ "var(--color-chart-9)",
19
+ "var(--color-chart-12)"
20
+ ];
21
+ function a(e) {
22
+ return e <= 0 ? [] : Array.from({ length: e }, (e, t) => i[t % i.length]);
23
+ }
24
+ //#endregion
25
+ export { e as ACCENT, n as CHART_AXIS, t as CHART_GRID, r as STATUS, a as chartPalette };
26
+
27
+ //# sourceMappingURL=palette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"palette.js","names":[],"sources":["../../../../../src/kadaikodi/components/viz/lib/palette.ts"],"sourcesContent":["/**\n * Tokenized color palette for the visualization kit.\n *\n * Every color here is a reference to a fe-libs semantic CSS variable, so the\n * kit themes automatically (light / dark / product themes) and never ships a\n * raw hex. The single \"accent\" used for highlights and single-series charts is\n * the product theme's primary action color — the app is NOT green; whatever the\n * active theme resolves `--color-accent-primary` to is what renders.\n *\n * Tints/shades are produced by SVG opacity (fill-opacity / stop-opacity) at the\n * call site, never by emitting a second raw color.\n */\n\n/** Primary highlight — resolves to the product theme's primary action color. */\nexport const ACCENT = 'var(--color-accent-primary)';\n\n/** Faint chart chrome (theme-aware). */\nexport const CHART_GRID = 'var(--color-chart-grid)';\nexport const CHART_AXIS = 'var(--color-chart-axis)';\n\n/** Semantic status hues — saturated and readable in both light and dark. */\nexport const STATUS = {\n success: 'var(--color-status-success-text)',\n warning: 'var(--color-status-warning-text)',\n danger: 'var(--color-status-error-text)',\n info: 'var(--color-status-info-text)',\n} as const;\n\nexport type StatusTone = keyof typeof STATUS;\n\n/**\n * Ordered categorical palette, led by the product accent and drawn entirely\n * from theme-aware semantic tokens. Used to color multi-series charts.\n */\nconst SERIES_TOKENS: readonly string[] = [\n ACCENT,\n 'var(--color-accent-blue)',\n 'var(--color-accent-teal)',\n 'var(--color-accent-purple)',\n 'var(--color-accent-indigo)',\n STATUS.warning,\n STATUS.info,\n STATUS.success,\n 'var(--color-chart-6)',\n 'var(--color-chart-7)',\n 'var(--color-chart-9)',\n 'var(--color-chart-12)',\n];\n\n/**\n * A tokenized palette of `count` colors, cycling the semantic series list.\n * Returns CSS-variable strings (never raw colors).\n */\nexport function chartPalette(count: number): string[] {\n if (count <= 0) {\n return [];\n }\n return Array.from({ length: count }, (_, i) => SERIES_TOKENS[i % SERIES_TOKENS.length]);\n}\n"],"mappings":";AAcA,IAAa,IAAS,+BAGT,IAAa,2BACb,IAAa,2BAGb,IAAS;CACpB,SAAS;CACT,SAAS;CACT,QAAQ;CACR,MAAM;CACP,EAQK,IAAmC;CACvC;CACA;CACA;CACA;CACA;CACA,EAAO;CACP,EAAO;CACP,EAAO;CACP;CACA;CACA;CACA;CACD;AAMD,SAAgB,EAAa,GAAyB;AAIpD,QAHI,KAAS,IACJ,EAAE,GAEJ,MAAM,KAAK,EAAE,QAAQ,GAAO,GAAG,GAAG,MAAM,EAAc,IAAI,EAAc,QAAQ"}
@@ -304,6 +304,18 @@ var o = async (e, t, n) => {
304
304
  }
305
305
  });
306
306
  }, P = () => {
307
+ let t = i(), { apiGatewayUrl: r } = e();
308
+ return n({
309
+ mutationFn: async (e) => (await o(`mutation CreateOffering($input: KadaikodiCreateOfferingInput!) {
310
+ kadaikodiCreateOffering(input: $input) {
311
+ ${_}
312
+ }
313
+ }`, { input: e }, r)).kadaikodiCreateOffering,
314
+ onSuccess: () => {
315
+ t.invalidateQueries({ queryKey: ["kadaikodi", "offerings"] });
316
+ }
317
+ });
318
+ }, F = () => {
307
319
  let t = i(), { apiGatewayUrl: r } = e();
308
320
  return n({
309
321
  mutationFn: async ({ id: e, input: t }) => (await o(`mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {
@@ -318,7 +330,7 @@ var o = async (e, t, n) => {
318
330
  t.invalidateQueries({ queryKey: ["kadaikodi", "offerings"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "offering"] });
319
331
  }
320
332
  });
321
- }, F = () => {
333
+ }, I = () => {
322
334
  let t = i(), { apiGatewayUrl: r } = e();
323
335
  return n({
324
336
  mutationFn: async (e) => (await o("mutation Invest($input: KadaikodiInvestInput!) {\n kadaikodiInvest(input: $input) {\n id amount currentValue status investedAt\n }\n }", { input: e }, r)).kadaikodiInvest,
@@ -326,7 +338,15 @@ var o = async (e, t, n) => {
326
338
  t.invalidateQueries({ queryKey: ["kadaikodi", "investments"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "investment-opportunities"] });
327
339
  }
328
340
  });
329
- }, I = () => {
341
+ }, L = () => {
342
+ let t = i(), { apiGatewayUrl: r } = e();
343
+ return n({
344
+ mutationFn: async (e) => (await o("mutation CreateProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n id name slug status category location rating\n }\n }", { input: e }, r)).kadaikodiCreateServiceProvider,
345
+ onSuccess: () => {
346
+ t.invalidateQueries({ queryKey: ["kadaikodi", "providers"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
347
+ }
348
+ });
349
+ }, R = () => {
330
350
  let t = i(), { apiGatewayUrl: r } = e();
331
351
  return n({
332
352
  mutationFn: async (e) => (await o("mutation CreateProviderWorker($input: KadaikodiCreateProviderWorkerInput!) {\n kadaikodiCreateProviderWorker(input: $input) {\n id providerId workerId name role status metadata\n }\n }", { input: e }, r)).kadaikodiCreateProviderWorker,
@@ -334,7 +354,7 @@ var o = async (e, t, n) => {
334
354
  t.invalidateQueries({ queryKey: ["kadaikodi", "provider-workers"] });
335
355
  }
336
356
  });
337
- }, L = () => {
357
+ }, z = () => {
338
358
  let t = i(), { apiGatewayUrl: r } = e();
339
359
  return n({
340
360
  mutationFn: async ({ taskId: e, status: t }) => (await o("mutation UpdateTaskStatus($taskId: String!, $status: KadaikodiWorkerTaskStatus!) {\n kadaikodiUpdateWorkerTaskStatus(taskId: $taskId, status: $status) {\n id status\n }\n }", {
@@ -345,7 +365,7 @@ var o = async (e, t, n) => {
345
365
  t.invalidateQueries({ queryKey: ["kadaikodi", "worker-tasks"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "worker-stats"] });
346
366
  }
347
367
  });
348
- }, R = () => {
368
+ }, B = () => {
349
369
  let t = i(), { apiGatewayUrl: r } = e();
350
370
  return n({
351
371
  mutationFn: async ({ workerId: e, action: t }) => (await o("mutation ClockInOut($workerId: String!, $action: KadaikodiClockAction!) {\n kadaikodiWorkerClockInOut(workerId: $workerId, action: $action) {\n success message\n }\n }", {
@@ -356,7 +376,65 @@ var o = async (e, t, n) => {
356
376
  t.invalidateQueries({ queryKey: ["kadaikodi", "worker-schedules"] });
357
377
  }
358
378
  });
359
- }, z = () => {
379
+ }, V = () => {
380
+ let t = i(), { apiGatewayUrl: r } = e();
381
+ return n({
382
+ mutationFn: async (e) => (await o("mutation CreateOpportunity($input: KadaikodiCreateInvestmentOpportunityInput!) {\n kadaikodiCreateInvestmentOpportunity(input: $input) { id title targetAmount status }\n }", { input: e }, r)).kadaikodiCreateInvestmentOpportunity,
383
+ onSuccess: () => {
384
+ t.invalidateQueries({ queryKey: ["kadaikodi", "investment-opportunities"] });
385
+ }
386
+ });
387
+ }, H = () => {
388
+ let t = i(), { apiGatewayUrl: r } = e();
389
+ return n({
390
+ mutationFn: async (e) => (await o("mutation CreateReview($input: KadaikodiCreateReviewInput!) {\n kadaikodiCreateReview(input: $input) { id rating review createdAt }\n }", { input: e }, r)).kadaikodiCreateReview,
391
+ onSuccess: () => {
392
+ t.invalidateQueries({ queryKey: ["kadaikodi", "reviews"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "providers"] });
393
+ }
394
+ });
395
+ }, U = () => {
396
+ let t = i(), { apiGatewayUrl: r } = e();
397
+ return n({
398
+ mutationFn: async ({ id: e, input: t }) => (await o("mutation UpdateProvider($id: ID!, $input: KadaikodiUpdateServiceProviderInput!) {\n kadaikodiUpdateServiceProvider(id: $id, input: $input) {\n id name slug status category location businessHours serviceTypes rating\n }\n }", {
399
+ id: e,
400
+ input: t
401
+ }, r)).kadaikodiUpdateServiceProvider,
402
+ onSuccess: () => {
403
+ t.invalidateQueries({ queryKey: ["kadaikodi", "providers"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "provider"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
404
+ }
405
+ });
406
+ }, W = () => {
407
+ let t = i(), { apiGatewayUrl: r } = e();
408
+ return n({
409
+ mutationFn: async (e) => (await o("mutation DeleteOffering($id: ID!) { kadaikodiDeleteOffering(id: $id) }", { id: e }, r)).kadaikodiDeleteOffering,
410
+ onSuccess: () => {
411
+ t.invalidateQueries({ queryKey: ["kadaikodi", "offerings"] });
412
+ }
413
+ });
414
+ }, G = () => {
415
+ let t = i(), { apiGatewayUrl: r } = e();
416
+ return n({
417
+ mutationFn: async ({ taskId: e, status: t, notes: n }) => (await o("mutation UpdateWorkerTask($taskId: String!, $status: KadaikodiWorkerTaskStatus, $notes: String) {\n kadaikodiUpdateWorkerTask(taskId: $taskId, status: $status, notes: $notes) { id status }\n }", {
418
+ taskId: e,
419
+ status: t,
420
+ notes: n
421
+ }, r)).kadaikodiUpdateWorkerTask,
422
+ onSuccess: () => {
423
+ t.invalidateQueries({ queryKey: ["kadaikodi", "worker-tasks"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "worker-stats"] });
424
+ }
425
+ });
426
+ }, K = () => {
427
+ let t = i(), { apiGatewayUrl: r } = e();
428
+ return n({
429
+ mutationFn: async ({ id: e, metadata: t }) => (await o("mutation UpdateProviderWorker($id: ID!, $metadata: JSON!) {\n kadaikodiUpdateProviderWorker(id: $id, metadata: $metadata) { id name metadata }\n }", {
430
+ id: e,
431
+ metadata: t
432
+ }, r)).kadaikodiUpdateProviderWorker,
433
+ onSuccess: () => {
434
+ t.invalidateQueries({ queryKey: ["kadaikodi", "provider-workers"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "worker-schedules"] });
435
+ }
436
+ });
437
+ }, q = () => {
360
438
  let { currentUser: n } = e(), r = v(), i = x({ customerId: n?.id }), a = C(), o = T(), s = E(n?.id || "");
361
439
  return t(() => ({
362
440
  providers: r,
@@ -373,6 +451,6 @@ var o = async (e, t, n) => {
373
451
  ]);
374
452
  };
375
453
  //#endregion
376
- export { w as useAdminAnalytics, I as useCreateProviderWorker, C as useDashboardStats, F as useInvest, T as useInvestmentOpportunities, E as useInvestments, z as useKadaikodiApi, b as useOfferings, S as useOrder, x as useOrders, M as usePlaceOrder, y as useProvider, D as useProviderWorkers, v as useProviders, j as useReviews, P as useUpdateOffering, N as useUpdateOrderStatus, L as useUpdateWorkerTaskStatus, R as useWorkerClockInOut, A as useWorkerSchedules, k as useWorkerStats, O as useWorkerTasks };
454
+ export { w as useAdminAnalytics, V as useCreateInvestmentOpportunity, P as useCreateOffering, L as useCreateProvider, R as useCreateProviderWorker, H as useCreateReview, C as useDashboardStats, W as useDeleteOffering, I as useInvest, T as useInvestmentOpportunities, E as useInvestments, q as useKadaikodiApi, b as useOfferings, S as useOrder, x as useOrders, M as usePlaceOrder, y as useProvider, D as useProviderWorkers, v as useProviders, j as useReviews, F as useUpdateOffering, N as useUpdateOrderStatus, U as useUpdateProvider, K as useUpdateProviderWorker, G as useUpdateWorkerTask, z as useUpdateWorkerTaskStatus, B as useWorkerClockInOut, A as useWorkerSchedules, k as useWorkerStats, O as useWorkerTasks };
377
455
 
378
456
  //# sourceMappingURL=useKadaikodiApi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useKadaikodiApi.js","names":[],"sources":["../../../src/kadaikodi/hooks/useKadaikodiApi.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\n\nimport { useKadaikodi } from '../context';\nimport type {\n MockCart,\n MockOrder,\n OrderItem,\n OrderStatus,\n PaymentStatus,\n OrderTimelineEvent,\n DeliveryAddress,\n InvestmentOpportunity,\n Investment,\n DashboardStats,\n AdminAnalytics,\n WorkerTask,\n WorkerSchedule,\n WorkerStats,\n} from '../types';\n\n// ============================================================================\n// Low-level fetch helper\n// ============================================================================\n\nconst kadaikodiQuery = async <TData>(\n query: string,\n variables: Record<string, unknown>,\n baseUrl?: string\n): Promise<TData> => {\n const response = await graphqlFetch<TData>({\n gateway: 'workspace',\n baseUrl,\n query,\n variables,\n workspaceToken: true,\n });\n\n if (response.errors?.length) {\n throw new Error(response.errors[0]?.message ?? 'GraphQL request failed');\n }\n\n if (!response.data) {\n throw new Error('GraphQL response did not include data');\n }\n\n return response.data;\n};\n\n// ============================================================================\n// Raw GraphQL row shapes (explicit — no `any`)\n// ============================================================================\n\ninterface RawLocation {\n address?: string | null;\n latitude?: number | null;\n longitude?: number | null;\n coordinates?: { lat?: number | null; lng?: number | null } | null;\n}\n\ninterface ProviderRow {\n id: string;\n name: string;\n slug: string;\n category: string;\n status: string;\n ownerId: string;\n rating: number;\n totalRatings: number;\n averageOrderValue: number;\n serviceTypes: string[];\n location: RawLocation | null;\n businessHours?: MockCart['businessHours'];\n createdAt: string;\n}\n\nexport interface KadaikodiOfferingRow {\n id: string;\n providerId: string;\n kind: string;\n name: string;\n slug: string;\n category: string;\n description?: string | null;\n price: number;\n originalPrice?: number | null;\n stock?: number | null;\n durationMinutes?: number | null;\n serviceType?: string | null;\n tags: string[];\n isAvailable: boolean;\n metadata?: Record<string, unknown> | null;\n media?: string[] | null;\n}\n\ninterface OrderItemRow {\n id: string;\n offeringId?: string | null;\n name: string;\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n customizations?: string[] | null;\n}\n\ninterface OrderRow {\n id: string;\n orderNumber: string;\n providerId: string;\n customerId: string;\n status: string;\n paymentStatus: string;\n fulfillmentType: string;\n subtotal: number;\n tax: number;\n deliveryFee: number;\n discount: number;\n total: number;\n notes?: string | null;\n timeline?: OrderTimelineEvent[] | null;\n paymentMethod?: string | null;\n deliveryAddress?: Partial<DeliveryAddress> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n items: OrderItemRow[];\n}\n\ninterface InvestmentOpportunityRow {\n id: string;\n providerId: string;\n title: string;\n description?: string | null;\n targetAmount: number;\n raisedAmount: number;\n minimumInvestment: number;\n expectedReturnsPct: number;\n lockInMonths: number;\n riskLevel: string;\n status: string;\n expiresAt?: string | null;\n terms?: Record<string, unknown> | null;\n businessMetrics?: Record<string, unknown> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n}\n\ninterface InvestmentRow {\n id: string;\n opportunityId: string;\n amount: number;\n currentValue: number;\n expectedReturnsPct: number;\n status: string;\n investedAt: string;\n maturedAt?: string | null;\n realizedReturns: number;\n opportunity?: { provider?: { name?: string | null } | null } | null;\n}\n\nexport interface KadaikodiReviewRow {\n id: string;\n providerId: string;\n customerId: string;\n rating: number;\n review?: string | null;\n response?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface KadaikodiProviderWorkerRow {\n id: string;\n providerId: string;\n workerId: string;\n name: string;\n role: string;\n status: string;\n metadata?: Record<string, unknown> | null;\n}\n\ninterface WorkerTaskRow {\n id: string;\n orderId?: string | null;\n providerId?: string | null;\n type: string;\n description?: string | null;\n priority: string;\n status: string;\n assignedAt?: string | null;\n dueAt?: string | null;\n completedAt?: string | null;\n customerName?: string | null;\n customerPhone?: string | null;\n earnings?: number | null;\n distance?: number | null;\n notes?: string | null;\n provider?: { name?: string | null } | null;\n order?: { deliveryAddress?: Partial<DeliveryAddress> | null } | null;\n}\n\ninterface WorkerScheduleRow {\n id: string;\n date: string;\n startTime: string;\n endTime?: string | null;\n providerId: string;\n status: string;\n tasksCompleted: number;\n totalEarnings: number;\n provider?: { name?: string | null } | null;\n}\n\n// ============================================================================\n// Mappers\n// ============================================================================\n\nconst toCartLocation = (loc: RawLocation | null | undefined): MockCart['location'] => ({\n address: loc?.address ?? '',\n coordinates: {\n lat: loc?.coordinates?.lat ?? loc?.latitude ?? 0,\n lng: loc?.coordinates?.lng ?? loc?.longitude ?? 0,\n },\n});\n\nconst toDeliveryAddress = (raw: Partial<DeliveryAddress> | null | undefined): DeliveryAddress => ({\n street: raw?.street ?? '',\n area: raw?.area ?? '',\n city: raw?.city ?? '',\n pincode: raw?.pincode ?? '',\n landmark: raw?.landmark,\n});\n\nconst mapProvider = (p: ProviderRow): MockCart => ({\n id: p.id,\n name: p.name,\n category: p.category,\n ownerId: p.ownerId,\n rating: p.rating,\n totalRatings: p.totalRatings,\n isOpen: p.status === 'ACTIVE' || p.status === 'VERIFIED',\n isVerified: p.status === 'VERIFIED',\n location: toCartLocation(p.location),\n averageOrderValue: p.averageOrderValue,\n serviceTypes: p.serviceTypes,\n businessHours: p.businessHours,\n createdAt: p.createdAt,\n // image/images/distance/estimatedTime intentionally omitted — no fabricated data.\n});\n\nconst mapOrder = (o: OrderRow): MockOrder => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n // cartImage intentionally omitted — no fabricated data.\n items: o.items.map(\n (i): OrderItem => ({\n id: i.id,\n name: i.name,\n quantity: i.quantity,\n price: i.unitPrice,\n customizations: i.customizations ?? undefined,\n })\n ),\n total: o.total,\n subtotal: o.subtotal,\n taxes: o.tax,\n deliveryFee: o.deliveryFee,\n discount: o.discount,\n status: o.status.toLowerCase() as OrderStatus,\n orderDate: o.createdAt,\n deliveryAddress: toDeliveryAddress(o.deliveryAddress),\n paymentMethod: o.paymentMethod ?? 'Cash',\n paymentStatus: o.paymentStatus.toLowerCase() as PaymentStatus,\n timeline: o.timeline ?? [],\n});\n\nconst mapInvestmentOpportunity = (o: InvestmentOpportunityRow): InvestmentOpportunity => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n businessOwner: '',\n targetAmount: o.targetAmount,\n raisedAmount: o.raisedAmount,\n minimumInvestment: o.minimumInvestment,\n expectedReturns: o.expectedReturnsPct,\n investmentPeriod: o.lockInMonths,\n riskLevel: o.riskLevel.toLowerCase() as InvestmentOpportunity['riskLevel'],\n description: o.description ?? '',\n businessPlan: '',\n financialProjections: [],\n documents: [],\n investors: [],\n status: o.status.toLowerCase() as InvestmentOpportunity['status'],\n createdAt: o.createdAt,\n expiresAt: o.expiresAt ?? '',\n});\n\nconst mapInvestment = (i: InvestmentRow): Investment => ({\n id: i.id,\n opportunityId: i.opportunityId,\n cartName: i.opportunity?.provider?.name ?? 'Unknown Cart',\n investedAmount: i.amount,\n currentValue: i.currentValue,\n returns: i.realizedReturns,\n returnsPercentage: i.expectedReturnsPct,\n investmentDate: i.investedAt,\n status: i.status.toLowerCase() as Investment['status'],\n});\n\nconst mapWorkerTask = (t: WorkerTaskRow): WorkerTask => ({\n id: t.id,\n orderId: t.orderId ?? '',\n cartId: t.providerId ?? '',\n cartName: t.provider?.name ?? 'Unknown Cart',\n type: t.type.toLowerCase() as WorkerTask['type'],\n description: t.description ?? '',\n priority: t.priority.toLowerCase() as WorkerTask['priority'],\n status: t.status.toLowerCase() as WorkerTask['status'],\n assignedAt: t.assignedAt ?? '',\n dueAt: t.dueAt ?? '',\n completedAt: t.completedAt ?? undefined,\n customerName: t.customerName ?? '',\n customerPhone: t.customerPhone ?? '',\n deliveryAddress: t.order?.deliveryAddress\n ? toDeliveryAddress(t.order.deliveryAddress)\n : undefined,\n earnings: t.earnings ?? 0,\n distance: t.distance ?? undefined,\n notes: t.notes ?? undefined,\n});\n\nconst mapWorkerSchedule = (s: WorkerScheduleRow): WorkerSchedule => ({\n id: s.id,\n date: s.date,\n startTime: s.startTime,\n endTime: s.endTime ?? '',\n cartId: s.providerId,\n cartName: s.provider?.name ?? 'Unknown Cart',\n status: s.status.toLowerCase() as WorkerSchedule['status'],\n tasksCompleted: s.tasksCompleted,\n totalEarnings: s.totalEarnings,\n});\n\n// ============================================================================\n// GraphQL selection fragments (kept as string constants for reuse)\n// ============================================================================\n\nconst PROVIDER_FIELDS = `\n id name slug category status ownerId rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n`;\n\nconst ORDER_FIELDS = `\n id orderNumber providerId customerId status paymentStatus fulfillmentType subtotal tax deliveryFee discount total notes timeline paymentMethod deliveryAddress createdAt\n provider { name }\n items { id offeringId name quantity unitPrice totalPrice customizations }\n`;\n\nconst OFFERING_FIELDS = `\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n`;\n\n// ============================================================================\n// Service Providers (Carts)\n// ============================================================================\n\nexport const useProviders = (query?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'providers', query],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListServiceProviders: ProviderRow[] }>(\n `query Providers($filter: KadaikodiProviderFilterInput) {\n kadaikodiListServiceProviders(filter: $filter, limit: 200) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { filter: query ? { query } : undefined },\n apiGatewayUrl\n );\n return result.kadaikodiListServiceProviders.map(mapProvider);\n },\n });\n};\n\nexport const useProvider = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiServiceProvider: ProviderRow | null }>(\n `query Provider($id: ID!) {\n kadaikodiServiceProvider(id: $id) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiServiceProvider ? mapProvider(result.kadaikodiServiceProvider) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Offerings\n// ============================================================================\n\nexport const useOfferings = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offerings', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOfferings: KadaikodiOfferingRow[] }>(\n `query Offerings($providerId: String) {\n kadaikodiListOfferings(providerId: $providerId, limit: 300) {\n ${OFFERING_FIELDS}\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListOfferings;\n },\n enabled: Boolean(providerId),\n });\n};\n\nexport const useOffering = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offering', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOffering: KadaikodiOfferingRow | null }>(\n `query Offering($id: ID!) {\n kadaikodiOffering(id: $id) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOffering;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Orders\n// ============================================================================\n\nexport const useOrders = (input: { providerId?: string; customerId?: string } = {}) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'orders', input.providerId, input.customerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOrders: OrderRow[] }>(\n `query Orders($providerId: String, $customerId: String) {\n kadaikodiListOrders(providerId: $providerId, customerId: $customerId, limit: 200) {\n ${ORDER_FIELDS}\n }\n }`,\n input,\n apiGatewayUrl\n );\n return result.kadaikodiListOrders.map(mapOrder);\n },\n });\n};\n\nexport const useOrder = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'order', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOrder: OrderRow | null }>(\n `query Order($id: ID!) {\n kadaikodiOrder(id: $id) {\n ${ORDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOrder ? mapOrder(result.kadaikodiOrder) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Analytics & Stats\n// ============================================================================\n\nexport const useDashboardStats = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'dashboard-stats'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiDashboardStats: DashboardStats }>(\n `query DashboardStats { kadaikodiDashboardStats { totalOrders totalRevenue activeProviders activeCustomers avgRating pendingOrders } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiDashboardStats;\n },\n });\n};\n\nexport const useAdminAnalytics = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'admin-analytics'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiAdminAnalytics: AdminAnalytics }>(\n `query AdminAnalytics { kadaikodiAdminAnalytics { revenueByCategory orderTrends topProviders customerGrowth categoryDistribution } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiAdminAnalytics;\n },\n });\n};\n\n// ============================================================================\n// Investments\n// ============================================================================\n\nexport const useInvestmentOpportunities = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investment-opportunities'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListInvestmentOpportunities: InvestmentOpportunityRow[];\n }>(\n `query Opportunities {\n kadaikodiListInvestmentOpportunities(limit: 200) {\n id providerId title description targetAmount raisedAmount minimumInvestment expectedReturnsPct lockInMonths riskLevel status expiresAt terms businessMetrics createdAt\n provider { name }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiListInvestmentOpportunities.map(mapInvestmentOpportunity);\n },\n });\n};\n\nexport const useInvestments = (investorId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investments', investorId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListInvestments: InvestmentRow[] }>(\n `query Investments($investorId: String!) {\n kadaikodiListInvestments(investorId: $investorId) {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }`,\n { investorId },\n apiGatewayUrl\n );\n return result.kadaikodiListInvestments.map(mapInvestment);\n },\n enabled: Boolean(investorId),\n });\n};\n\n// ============================================================================\n// Provider Workers\n// ============================================================================\n\nexport const useProviderWorkers = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider-workers', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListProviderWorkers: KadaikodiProviderWorkerRow[];\n }>(\n `query ProviderWorkers($providerId: String!) {\n kadaikodiListProviderWorkers(providerId: $providerId) {\n id providerId workerId name role status metadata\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListProviderWorkers;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Workers & Tasks\n// ============================================================================\n\nexport const useWorkerTasks = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-tasks', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiWorkerTasks: WorkerTaskRow[] }>(\n `query WorkerTasks($workerId: String!) {\n kadaikodiWorkerTasks(workerId: $workerId, limit: 100) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n provider { name }\n order { deliveryAddress }\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerTasks.map(mapWorkerTask);\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerStats = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-stats', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiWorkerStats: WorkerStats }>(\n `query WorkerStats($workerId: String!) {\n kadaikodiWorkerStats(workerId: $workerId) {\n totalDeliveries totalEarnings averageRating completionRate todayTasks todayEarnings\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerStats;\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerSchedules = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-schedules', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListWorkerSchedules: WorkerScheduleRow[] }>(\n `query WorkerSchedules($workerId: String!) {\n kadaikodiListWorkerSchedules(workerId: $workerId) {\n id date startTime endTime providerId status tasksCompleted totalEarnings\n provider { name }\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiListWorkerSchedules.map(mapWorkerSchedule);\n },\n enabled: Boolean(workerId),\n });\n};\n\n// ============================================================================\n// Reviews\n// ============================================================================\n\nexport const useReviews = (providerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'reviews', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListReviews: KadaikodiReviewRow[] }>(\n `query Reviews($providerId: String!) {\n kadaikodiListReviews(providerId: $providerId) {\n id providerId customerId rating review response createdAt updatedAt\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListReviews;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Mutations\n// ============================================================================\n\nexport const usePlaceOrder = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiPlaceOrder: {\n id: string;\n orderNumber: string;\n status: string;\n total: number;\n createdAt: string;\n };\n }>(\n `mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n kadaikodiPlaceOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiPlaceOrder;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useUpdateOrderStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, status }: { id: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateOrderStatus: { id: string; status: string };\n }>(\n `mutation UpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n kadaikodiUpdateOrderStatus(id: $id, status: $status) {\n id status\n }\n }`,\n { id, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOrderStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'order'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateOffering: KadaikodiOfferingRow }>(\n `mutation CreateOffering($input: KadaikodiCreateOfferingInput!) {\n kadaikodiCreateOffering(input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n },\n });\n};\n\nexport const useUpdateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateOffering: KadaikodiOfferingRow }>(\n `mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {\n kadaikodiUpdateOffering(id: $id, input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offering'] });\n },\n });\n};\n\nexport const useInvest = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: { amount: number; investorId: string; opportunityId: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiInvest: {\n id: string;\n amount: number;\n currentValue: number;\n status: string;\n investedAt: string;\n };\n }>(\n `mutation Invest($input: KadaikodiInvestInput!) {\n kadaikodiInvest(input: $input) {\n id amount currentValue status investedAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiInvest;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investments'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investment-opportunities'] });\n },\n });\n};\n\nexport const useCreateProvider = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateServiceProvider: { id: string; name: string; slug: string; status: string };\n }>(\n `mutation CreateProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n id name slug status category location rating\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateServiceProvider;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateProviderWorker = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateProviderWorker: KadaikodiProviderWorkerRow;\n }>(\n `mutation CreateProviderWorker($input: KadaikodiCreateProviderWorkerInput!) {\n kadaikodiCreateProviderWorker(input: $input) {\n id providerId workerId name role status metadata\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateProviderWorker;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider-workers'] });\n },\n });\n};\n\nexport const useCreateWorkerTask = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateWorkerTask: WorkerTaskRow }>(\n `mutation CreateWorkerTask($input: KadaikodiCreateWorkerTaskInput!) {\n kadaikodiCreateWorkerTask(input: $input) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return mapWorkerTask(result.kadaikodiCreateWorkerTask);\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n },\n });\n};\n\nexport const useUpdateWorkerTaskStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ taskId, status }: { taskId: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateWorkerTaskStatus: { id: string; status: string };\n }>(\n `mutation UpdateTaskStatus($taskId: String!, $status: KadaikodiWorkerTaskStatus!) {\n kadaikodiUpdateWorkerTaskStatus(taskId: $taskId, status: $status) {\n id status\n }\n }`,\n { taskId, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateWorkerTaskStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-stats'] });\n },\n });\n};\n\nexport const useWorkerClockInOut = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({\n workerId,\n action,\n }: {\n workerId: string;\n action: 'CLOCK_IN' | 'CLOCK_OUT';\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiWorkerClockInOut: { success: boolean; message: string };\n }>(\n `mutation ClockInOut($workerId: String!, $action: KadaikodiClockAction!) {\n kadaikodiWorkerClockInOut(workerId: $workerId, action: $action) {\n success message\n }\n }`,\n { workerId, action },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerClockInOut;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-schedules'] });\n },\n });\n};\n\n// ============================================================================\n// Main Hook\n// ============================================================================\n\nexport const useKadaikodiApi = () => {\n const { currentUser } = useKadaikodi();\n const providers = useProviders();\n const orders = useOrders({ customerId: currentUser?.id });\n const dashboardStats = useDashboardStats();\n const investmentOpportunities = useInvestmentOpportunities();\n const investments = useInvestments(currentUser?.id || '');\n\n return useMemo(\n () => ({\n providers,\n orders,\n dashboardStats,\n investmentOpportunities,\n investments,\n }),\n [providers, orders, dashboardStats, investmentOpportunities, investments]\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"useKadaikodiApi.js","names":[],"sources":["../../../src/kadaikodi/hooks/useKadaikodiApi.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\n\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\n\nimport { useKadaikodi } from '../context';\nimport type {\n MockCart,\n MockOrder,\n OrderItem,\n OrderStatus,\n PaymentStatus,\n OrderTimelineEvent,\n DeliveryAddress,\n InvestmentOpportunity,\n Investment,\n DashboardStats,\n AdminAnalytics,\n WorkerTask,\n WorkerSchedule,\n WorkerStats,\n} from '../types';\n\n// ============================================================================\n// Low-level fetch helper\n// ============================================================================\n\nconst kadaikodiQuery = async <TData>(\n query: string,\n variables: Record<string, unknown>,\n baseUrl?: string\n): Promise<TData> => {\n const response = await graphqlFetch<TData>({\n gateway: 'workspace',\n baseUrl,\n query,\n variables,\n workspaceToken: true,\n });\n\n if (response.errors?.length) {\n throw new Error(response.errors[0]?.message ?? 'GraphQL request failed');\n }\n\n if (!response.data) {\n throw new Error('GraphQL response did not include data');\n }\n\n return response.data;\n};\n\n// ============================================================================\n// Raw GraphQL row shapes (explicit — no `any`)\n// ============================================================================\n\ninterface RawLocation {\n address?: string | null;\n latitude?: number | null;\n longitude?: number | null;\n coordinates?: { lat?: number | null; lng?: number | null } | null;\n}\n\ninterface ProviderRow {\n id: string;\n name: string;\n slug: string;\n category: string;\n status: string;\n ownerId: string;\n rating: number;\n totalRatings: number;\n averageOrderValue: number;\n serviceTypes: string[];\n location: RawLocation | null;\n businessHours?: MockCart['businessHours'];\n createdAt: string;\n}\n\nexport interface KadaikodiOfferingRow {\n id: string;\n providerId: string;\n kind: string;\n name: string;\n slug: string;\n category: string;\n description?: string | null;\n price: number;\n originalPrice?: number | null;\n stock?: number | null;\n durationMinutes?: number | null;\n serviceType?: string | null;\n tags: string[];\n isAvailable: boolean;\n metadata?: Record<string, unknown> | null;\n media?: string[] | null;\n}\n\ninterface OrderItemRow {\n id: string;\n offeringId?: string | null;\n name: string;\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n customizations?: string[] | null;\n}\n\ninterface OrderRow {\n id: string;\n orderNumber: string;\n providerId: string;\n customerId: string;\n status: string;\n paymentStatus: string;\n fulfillmentType: string;\n subtotal: number;\n tax: number;\n deliveryFee: number;\n discount: number;\n total: number;\n notes?: string | null;\n timeline?: OrderTimelineEvent[] | null;\n paymentMethod?: string | null;\n deliveryAddress?: Partial<DeliveryAddress> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n items: OrderItemRow[];\n}\n\ninterface InvestmentOpportunityRow {\n id: string;\n providerId: string;\n title: string;\n description?: string | null;\n targetAmount: number;\n raisedAmount: number;\n minimumInvestment: number;\n expectedReturnsPct: number;\n lockInMonths: number;\n riskLevel: string;\n status: string;\n expiresAt?: string | null;\n terms?: Record<string, unknown> | null;\n businessMetrics?: Record<string, unknown> | null;\n createdAt: string;\n provider?: { name?: string | null } | null;\n}\n\ninterface InvestmentRow {\n id: string;\n opportunityId: string;\n amount: number;\n currentValue: number;\n expectedReturnsPct: number;\n status: string;\n investedAt: string;\n maturedAt?: string | null;\n realizedReturns: number;\n opportunity?: { provider?: { name?: string | null } | null } | null;\n}\n\nexport interface KadaikodiReviewRow {\n id: string;\n providerId: string;\n customerId: string;\n rating: number;\n review?: string | null;\n response?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface KadaikodiProviderWorkerRow {\n id: string;\n providerId: string;\n workerId: string;\n name: string;\n role: string;\n status: string;\n metadata?: Record<string, unknown> | null;\n}\n\ninterface WorkerTaskRow {\n id: string;\n orderId?: string | null;\n providerId?: string | null;\n type: string;\n description?: string | null;\n priority: string;\n status: string;\n assignedAt?: string | null;\n dueAt?: string | null;\n completedAt?: string | null;\n customerName?: string | null;\n customerPhone?: string | null;\n earnings?: number | null;\n distance?: number | null;\n notes?: string | null;\n provider?: { name?: string | null } | null;\n order?: { deliveryAddress?: Partial<DeliveryAddress> | null } | null;\n}\n\ninterface WorkerScheduleRow {\n id: string;\n date: string;\n startTime: string;\n endTime?: string | null;\n providerId: string;\n status: string;\n tasksCompleted: number;\n totalEarnings: number;\n provider?: { name?: string | null } | null;\n}\n\n// ============================================================================\n// Mappers\n// ============================================================================\n\nconst toCartLocation = (loc: RawLocation | null | undefined): MockCart['location'] => ({\n address: loc?.address ?? '',\n coordinates: {\n lat: loc?.coordinates?.lat ?? loc?.latitude ?? 0,\n lng: loc?.coordinates?.lng ?? loc?.longitude ?? 0,\n },\n});\n\nconst toDeliveryAddress = (raw: Partial<DeliveryAddress> | null | undefined): DeliveryAddress => ({\n street: raw?.street ?? '',\n area: raw?.area ?? '',\n city: raw?.city ?? '',\n pincode: raw?.pincode ?? '',\n landmark: raw?.landmark,\n});\n\nconst mapProvider = (p: ProviderRow): MockCart => ({\n id: p.id,\n name: p.name,\n category: p.category,\n ownerId: p.ownerId,\n rating: p.rating,\n totalRatings: p.totalRatings,\n isOpen: p.status === 'ACTIVE' || p.status === 'VERIFIED',\n isVerified: p.status === 'VERIFIED',\n location: toCartLocation(p.location),\n averageOrderValue: p.averageOrderValue,\n serviceTypes: p.serviceTypes,\n businessHours: p.businessHours,\n createdAt: p.createdAt,\n // image/images/distance/estimatedTime intentionally omitted — no fabricated data.\n});\n\nconst mapOrder = (o: OrderRow): MockOrder => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n // cartImage intentionally omitted — no fabricated data.\n items: o.items.map(\n (i): OrderItem => ({\n id: i.id,\n name: i.name,\n quantity: i.quantity,\n price: i.unitPrice,\n customizations: i.customizations ?? undefined,\n })\n ),\n total: o.total,\n subtotal: o.subtotal,\n taxes: o.tax,\n deliveryFee: o.deliveryFee,\n discount: o.discount,\n status: o.status.toLowerCase() as OrderStatus,\n orderDate: o.createdAt,\n deliveryAddress: toDeliveryAddress(o.deliveryAddress),\n paymentMethod: o.paymentMethod ?? 'Cash',\n paymentStatus: o.paymentStatus.toLowerCase() as PaymentStatus,\n timeline: o.timeline ?? [],\n});\n\nconst mapInvestmentOpportunity = (o: InvestmentOpportunityRow): InvestmentOpportunity => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name ?? 'Unknown Cart',\n businessOwner: '',\n targetAmount: o.targetAmount,\n raisedAmount: o.raisedAmount,\n minimumInvestment: o.minimumInvestment,\n expectedReturns: o.expectedReturnsPct,\n investmentPeriod: o.lockInMonths,\n riskLevel: o.riskLevel.toLowerCase() as InvestmentOpportunity['riskLevel'],\n description: o.description ?? '',\n businessPlan: '',\n financialProjections: [],\n documents: [],\n investors: [],\n status: o.status.toLowerCase() as InvestmentOpportunity['status'],\n createdAt: o.createdAt,\n expiresAt: o.expiresAt ?? '',\n});\n\nconst mapInvestment = (i: InvestmentRow): Investment => ({\n id: i.id,\n opportunityId: i.opportunityId,\n cartName: i.opportunity?.provider?.name ?? 'Unknown Cart',\n investedAmount: i.amount,\n currentValue: i.currentValue,\n returns: i.realizedReturns,\n returnsPercentage: i.expectedReturnsPct,\n investmentDate: i.investedAt,\n status: i.status.toLowerCase() as Investment['status'],\n});\n\nconst mapWorkerTask = (t: WorkerTaskRow): WorkerTask => ({\n id: t.id,\n orderId: t.orderId ?? '',\n cartId: t.providerId ?? '',\n cartName: t.provider?.name ?? 'Unknown Cart',\n type: t.type.toLowerCase() as WorkerTask['type'],\n description: t.description ?? '',\n priority: t.priority.toLowerCase() as WorkerTask['priority'],\n status: t.status.toLowerCase() as WorkerTask['status'],\n assignedAt: t.assignedAt ?? '',\n dueAt: t.dueAt ?? '',\n completedAt: t.completedAt ?? undefined,\n customerName: t.customerName ?? '',\n customerPhone: t.customerPhone ?? '',\n deliveryAddress: t.order?.deliveryAddress\n ? toDeliveryAddress(t.order.deliveryAddress)\n : undefined,\n earnings: t.earnings ?? 0,\n distance: t.distance ?? undefined,\n notes: t.notes ?? undefined,\n});\n\nconst mapWorkerSchedule = (s: WorkerScheduleRow): WorkerSchedule => ({\n id: s.id,\n date: s.date,\n startTime: s.startTime,\n endTime: s.endTime ?? '',\n cartId: s.providerId,\n cartName: s.provider?.name ?? 'Unknown Cart',\n status: s.status.toLowerCase() as WorkerSchedule['status'],\n tasksCompleted: s.tasksCompleted,\n totalEarnings: s.totalEarnings,\n});\n\n// ============================================================================\n// GraphQL selection fragments (kept as string constants for reuse)\n// ============================================================================\n\nconst PROVIDER_FIELDS = `\n id name slug category status ownerId rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n`;\n\nconst ORDER_FIELDS = `\n id orderNumber providerId customerId status paymentStatus fulfillmentType subtotal tax deliveryFee discount total notes timeline paymentMethod deliveryAddress createdAt\n provider { name }\n items { id offeringId name quantity unitPrice totalPrice customizations }\n`;\n\nconst OFFERING_FIELDS = `\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n`;\n\n// ============================================================================\n// Service Providers (Carts)\n// ============================================================================\n\nexport const useProviders = (query?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'providers', query],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListServiceProviders: ProviderRow[] }>(\n `query Providers($filter: KadaikodiProviderFilterInput) {\n kadaikodiListServiceProviders(filter: $filter, limit: 200) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { filter: query ? { query } : undefined },\n apiGatewayUrl\n );\n return result.kadaikodiListServiceProviders.map(mapProvider);\n },\n });\n};\n\nexport const useProvider = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiServiceProvider: ProviderRow | null }>(\n `query Provider($id: ID!) {\n kadaikodiServiceProvider(id: $id) {\n ${PROVIDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiServiceProvider ? mapProvider(result.kadaikodiServiceProvider) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Offerings\n// ============================================================================\n\nexport const useOfferings = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offerings', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOfferings: KadaikodiOfferingRow[] }>(\n `query Offerings($providerId: String) {\n kadaikodiListOfferings(providerId: $providerId, limit: 300) {\n ${OFFERING_FIELDS}\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListOfferings;\n },\n enabled: Boolean(providerId),\n });\n};\n\nexport const useOffering = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'offering', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOffering: KadaikodiOfferingRow | null }>(\n `query Offering($id: ID!) {\n kadaikodiOffering(id: $id) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOffering;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Orders\n// ============================================================================\n\nexport const useOrders = (input: { providerId?: string; customerId?: string } = {}) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'orders', input.providerId, input.customerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListOrders: OrderRow[] }>(\n `query Orders($providerId: String, $customerId: String) {\n kadaikodiListOrders(providerId: $providerId, customerId: $customerId, limit: 200) {\n ${ORDER_FIELDS}\n }\n }`,\n input,\n apiGatewayUrl\n );\n return result.kadaikodiListOrders.map(mapOrder);\n },\n });\n};\n\nexport const useOrder = (id?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'order', id],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiOrder: OrderRow | null }>(\n `query Order($id: ID!) {\n kadaikodiOrder(id: $id) {\n ${ORDER_FIELDS}\n }\n }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiOrder ? mapOrder(result.kadaikodiOrder) : null;\n },\n enabled: Boolean(id),\n });\n};\n\n// ============================================================================\n// Analytics & Stats\n// ============================================================================\n\nexport const useDashboardStats = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'dashboard-stats'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiDashboardStats: DashboardStats }>(\n `query DashboardStats { kadaikodiDashboardStats { totalOrders totalRevenue activeProviders activeCustomers avgRating pendingOrders } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiDashboardStats;\n },\n });\n};\n\nexport const useAdminAnalytics = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'admin-analytics'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiAdminAnalytics: AdminAnalytics }>(\n `query AdminAnalytics { kadaikodiAdminAnalytics { revenueByCategory orderTrends topProviders customerGrowth categoryDistribution } }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiAdminAnalytics;\n },\n });\n};\n\n// ============================================================================\n// Investments\n// ============================================================================\n\nexport const useInvestmentOpportunities = () => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investment-opportunities'],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListInvestmentOpportunities: InvestmentOpportunityRow[];\n }>(\n `query Opportunities {\n kadaikodiListInvestmentOpportunities(limit: 200) {\n id providerId title description targetAmount raisedAmount minimumInvestment expectedReturnsPct lockInMonths riskLevel status expiresAt terms businessMetrics createdAt\n provider { name }\n }\n }`,\n {},\n apiGatewayUrl\n );\n return result.kadaikodiListInvestmentOpportunities.map(mapInvestmentOpportunity);\n },\n });\n};\n\nexport const useInvestments = (investorId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'investments', investorId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListInvestments: InvestmentRow[] }>(\n `query Investments($investorId: String!) {\n kadaikodiListInvestments(investorId: $investorId) {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }`,\n { investorId },\n apiGatewayUrl\n );\n return result.kadaikodiListInvestments.map(mapInvestment);\n },\n enabled: Boolean(investorId),\n });\n};\n\n// ============================================================================\n// Provider Workers\n// ============================================================================\n\nexport const useProviderWorkers = (providerId?: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'provider-workers', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{\n kadaikodiListProviderWorkers: KadaikodiProviderWorkerRow[];\n }>(\n `query ProviderWorkers($providerId: String!) {\n kadaikodiListProviderWorkers(providerId: $providerId) {\n id providerId workerId name role status metadata\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListProviderWorkers;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Workers & Tasks\n// ============================================================================\n\nexport const useWorkerTasks = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-tasks', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiWorkerTasks: WorkerTaskRow[] }>(\n `query WorkerTasks($workerId: String!) {\n kadaikodiWorkerTasks(workerId: $workerId, limit: 100) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n provider { name }\n order { deliveryAddress }\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerTasks.map(mapWorkerTask);\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerStats = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-stats', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiWorkerStats: WorkerStats }>(\n `query WorkerStats($workerId: String!) {\n kadaikodiWorkerStats(workerId: $workerId) {\n totalDeliveries totalEarnings averageRating completionRate todayTasks todayEarnings\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerStats;\n },\n enabled: Boolean(workerId),\n });\n};\n\nexport const useWorkerSchedules = (workerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'worker-schedules', workerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListWorkerSchedules: WorkerScheduleRow[] }>(\n `query WorkerSchedules($workerId: String!) {\n kadaikodiListWorkerSchedules(workerId: $workerId) {\n id date startTime endTime providerId status tasksCompleted totalEarnings\n provider { name }\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n return result.kadaikodiListWorkerSchedules.map(mapWorkerSchedule);\n },\n enabled: Boolean(workerId),\n });\n};\n\n// ============================================================================\n// Reviews\n// ============================================================================\n\nexport const useReviews = (providerId: string) => {\n const { apiGatewayUrl } = useKadaikodi();\n return useQuery({\n queryKey: ['kadaikodi', 'reviews', providerId],\n queryFn: async () => {\n const result = await kadaikodiQuery<{ kadaikodiListReviews: KadaikodiReviewRow[] }>(\n `query Reviews($providerId: String!) {\n kadaikodiListReviews(providerId: $providerId) {\n id providerId customerId rating review response createdAt updatedAt\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.kadaikodiListReviews;\n },\n enabled: Boolean(providerId),\n });\n};\n\n// ============================================================================\n// Mutations\n// ============================================================================\n\nexport const usePlaceOrder = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiPlaceOrder: {\n id: string;\n orderNumber: string;\n status: string;\n total: number;\n createdAt: string;\n };\n }>(\n `mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n kadaikodiPlaceOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiPlaceOrder;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useUpdateOrderStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, status }: { id: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateOrderStatus: { id: string; status: string };\n }>(\n `mutation UpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n kadaikodiUpdateOrderStatus(id: $id, status: $status) {\n id status\n }\n }`,\n { id, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOrderStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'order'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateOffering: KadaikodiOfferingRow }>(\n `mutation CreateOffering($input: KadaikodiCreateOfferingInput!) {\n kadaikodiCreateOffering(input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n },\n });\n};\n\nexport const useUpdateOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateOffering: KadaikodiOfferingRow }>(\n `mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {\n kadaikodiUpdateOffering(id: $id, input: $input) {\n ${OFFERING_FIELDS}\n }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offering'] });\n },\n });\n};\n\nexport const useInvest = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: { amount: number; investorId: string; opportunityId: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiInvest: {\n id: string;\n amount: number;\n currentValue: number;\n status: string;\n investedAt: string;\n };\n }>(\n `mutation Invest($input: KadaikodiInvestInput!) {\n kadaikodiInvest(input: $input) {\n id amount currentValue status investedAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiInvest;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investments'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investment-opportunities'] });\n },\n });\n};\n\nexport const useCreateProvider = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateServiceProvider: { id: string; name: string; slug: string; status: string };\n }>(\n `mutation CreateProvider($input: KadaikodiCreateServiceProviderInput!) {\n kadaikodiCreateServiceProvider(input: $input) {\n id name slug status category location rating\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateServiceProvider;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useCreateProviderWorker = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateProviderWorker: KadaikodiProviderWorkerRow;\n }>(\n `mutation CreateProviderWorker($input: KadaikodiCreateProviderWorkerInput!) {\n kadaikodiCreateProviderWorker(input: $input) {\n id providerId workerId name role status metadata\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateProviderWorker;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider-workers'] });\n },\n });\n};\n\nexport const useCreateWorkerTask = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async (input: Record<string, unknown>) => {\n const result = await kadaikodiQuery<{ kadaikodiCreateWorkerTask: WorkerTaskRow }>(\n `mutation CreateWorkerTask($input: KadaikodiCreateWorkerTaskInput!) {\n kadaikodiCreateWorkerTask(input: $input) {\n id orderId providerId type description priority status assignedAt dueAt completedAt customerName customerPhone earnings distance notes\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return mapWorkerTask(result.kadaikodiCreateWorkerTask);\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n },\n });\n};\n\nexport const useUpdateWorkerTaskStatus = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({ taskId, status }: { taskId: string; status: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateWorkerTaskStatus: { id: string; status: string };\n }>(\n `mutation UpdateTaskStatus($taskId: String!, $status: KadaikodiWorkerTaskStatus!) {\n kadaikodiUpdateWorkerTaskStatus(taskId: $taskId, status: $status) {\n id status\n }\n }`,\n { taskId, status },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateWorkerTaskStatus;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-stats'] });\n },\n });\n};\n\nexport const useWorkerClockInOut = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n\n return useMutation({\n mutationFn: async ({\n workerId,\n action,\n }: {\n workerId: string;\n action: 'CLOCK_IN' | 'CLOCK_OUT';\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiWorkerClockInOut: { success: boolean; message: string };\n }>(\n `mutation ClockInOut($workerId: String!, $action: KadaikodiClockAction!) {\n kadaikodiWorkerClockInOut(workerId: $workerId, action: $action) {\n success message\n }\n }`,\n { workerId, action },\n apiGatewayUrl\n );\n return result.kadaikodiWorkerClockInOut;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-schedules'] });\n },\n });\n};\n\nexport const useCreateInvestmentOpportunity = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (input: {\n providerId: string;\n title: string;\n description?: string;\n targetAmount: number;\n minimumInvestment: number;\n expectedReturnsPct: number;\n lockInMonths: number;\n riskLevel?: string;\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateInvestmentOpportunity: { id: string; title: string };\n }>(\n `mutation CreateOpportunity($input: KadaikodiCreateInvestmentOpportunityInput!) {\n kadaikodiCreateInvestmentOpportunity(input: $input) { id title targetAmount status }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateInvestmentOpportunity;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'investment-opportunities'] });\n },\n });\n};\n\nexport const useCreateReview = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (input: {\n providerId: string;\n orderId?: string;\n customerId: string;\n rating: number;\n review?: string;\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiCreateReview: { id: string; rating: number };\n }>(\n `mutation CreateReview($input: KadaikodiCreateReviewInput!) {\n kadaikodiCreateReview(input: $input) { id rating review createdAt }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.kadaikodiCreateReview;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'reviews'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n },\n });\n};\n\nexport const useRespondToReview = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, response }: { id: string; response: string }) => {\n const result = await kadaikodiQuery<{\n kadaikodiRespondToReview: { id: string; response: string };\n }>(\n `mutation RespondToReview($id: ID!, $response: String!) {\n kadaikodiRespondToReview(id: $id, response: $response) { id response }\n }`,\n { id, response },\n apiGatewayUrl\n );\n return result.kadaikodiRespondToReview;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'reviews'] });\n },\n });\n};\n\nexport const useUpdateProvider = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, input }: { id: string; input: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateServiceProvider: { id: string; status: string };\n }>(\n `mutation UpdateProvider($id: ID!, $input: KadaikodiUpdateServiceProviderInput!) {\n kadaikodiUpdateServiceProvider(id: $id, input: $input) {\n id name slug status category location businessHours serviceTypes rating\n }\n }`,\n { id, input },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateServiceProvider;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'providers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\n },\n });\n};\n\nexport const useDeleteOffering = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async (id: string) => {\n const result = await kadaikodiQuery<{ kadaikodiDeleteOffering: boolean }>(\n `mutation DeleteOffering($id: ID!) { kadaikodiDeleteOffering(id: $id) }`,\n { id },\n apiGatewayUrl\n );\n return result.kadaikodiDeleteOffering;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'offerings'] });\n },\n });\n};\n\nexport const useUpdateWorkerTask = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({\n taskId,\n status,\n notes,\n }: {\n taskId: string;\n status?: string;\n notes?: string;\n }) => {\n const result = await kadaikodiQuery<{\n kadaikodiUpdateWorkerTask: { id: string; status: string };\n }>(\n `mutation UpdateWorkerTask($taskId: String!, $status: KadaikodiWorkerTaskStatus, $notes: String) {\n kadaikodiUpdateWorkerTask(taskId: $taskId, status: $status, notes: $notes) { id status }\n }`,\n { taskId, status, notes },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateWorkerTask;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-tasks'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-stats'] });\n },\n });\n};\n\nexport const useUpdateProviderWorker = () => {\n const queryClient = useQueryClient();\n const { apiGatewayUrl } = useKadaikodi();\n return useMutation({\n mutationFn: async ({ id, metadata }: { id: string; metadata: Record<string, unknown> }) => {\n const result = await kadaikodiQuery<{ kadaikodiUpdateProviderWorker: { id: string } }>(\n `mutation UpdateProviderWorker($id: ID!, $metadata: JSON!) {\n kadaikodiUpdateProviderWorker(id: $id, metadata: $metadata) { id name metadata }\n }`,\n { id, metadata },\n apiGatewayUrl\n );\n return result.kadaikodiUpdateProviderWorker;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'provider-workers'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'worker-schedules'] });\n },\n });\n};\n\n// ============================================================================\n// Main Hook\n// ============================================================================\n\nexport const useKadaikodiApi = () => {\n const { currentUser } = useKadaikodi();\n const providers = useProviders();\n const orders = useOrders({ customerId: currentUser?.id });\n const dashboardStats = useDashboardStats();\n const investmentOpportunities = useInvestmentOpportunities();\n const investments = useInvestments(currentUser?.id || '');\n\n return useMemo(\n () => ({\n providers,\n orders,\n dashboardStats,\n investmentOpportunities,\n investments,\n }),\n [providers, orders, dashboardStats, investmentOpportunities, investments]\n );\n};\n"],"mappings":"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"}