@burdenoff/microfe-kadaikodi 2026.626.2 → 2026.704.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 (63) hide show
  1. package/dist/kadaikodi/hooks/useKadaikodiApi.js +209 -105
  2. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  3. package/dist/kadaikodi/pages/HomePage.js +4 -4
  4. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  5. package/dist/kadaikodi/pages/admin/AdminDashboard.js +1 -1
  6. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  7. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +1 -1
  8. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  9. package/dist/kadaikodi/pages/admin/CartManagementPage.js +279 -333
  10. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  11. package/dist/kadaikodi/pages/admin/UserManagementPage.js +299 -372
  12. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  13. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +214 -214
  14. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  15. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +226 -230
  16. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  17. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +255 -256
  18. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  19. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +275 -278
  20. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  21. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +228 -446
  22. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  23. package/dist/kadaikodi/pages/common/NotificationCenterPage.js +1 -1
  24. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  25. package/dist/kadaikodi/pages/common/SettingsPage.js +34 -46
  26. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  27. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +193 -447
  28. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  29. package/dist/kadaikodi/pages/customer/CartDetailPage.js +6 -6
  30. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  31. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +2 -2
  32. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  33. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +255 -215
  34. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  35. package/dist/kadaikodi/pages/customer/FavoritesPage.js +141 -178
  36. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  37. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +155 -161
  38. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  39. package/dist/kadaikodi/pages/customer/ReviewsPage.js +14 -140
  40. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  41. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +304 -458
  42. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  43. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +1 -1
  44. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  45. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +2 -2
  46. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  47. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +361 -361
  48. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  49. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +226 -220
  50. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  51. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +15 -15
  52. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  53. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +2 -2
  54. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  55. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +252 -253
  56. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  57. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +3 -3
  58. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  59. package/package.json +1 -1
  60. package/dist/kadaikodi/mocks/data.js +0 -1517
  61. package/dist/kadaikodi/mocks/data.js.map +0 -1
  62. package/dist/kadaikodi/mocks/users.js +0 -34
  63. package/dist/kadaikodi/mocks/users.js.map +0 -1
@@ -15,7 +15,102 @@ var o = async (e, t, n) => {
15
15
  if (r.errors?.length) throw Error(r.errors[0]?.message ?? "GraphQL request failed");
16
16
  if (!r.data) throw Error("GraphQL response did not include data");
17
17
  return r.data;
18
- }, s = (t) => {
18
+ }, s = (e) => ({
19
+ address: e?.address ?? "",
20
+ coordinates: {
21
+ lat: e?.coordinates?.lat ?? e?.latitude ?? 0,
22
+ lng: e?.coordinates?.lng ?? e?.longitude ?? 0
23
+ }
24
+ }), c = (e) => ({
25
+ street: e?.street ?? "",
26
+ area: e?.area ?? "",
27
+ city: e?.city ?? "",
28
+ pincode: e?.pincode ?? "",
29
+ landmark: e?.landmark
30
+ }), l = (e) => ({
31
+ id: e.id,
32
+ name: e.name,
33
+ category: e.category,
34
+ ownerId: e.ownerId,
35
+ rating: e.rating,
36
+ totalRatings: e.totalRatings,
37
+ isOpen: e.status === "ACTIVE" || e.status === "VERIFIED",
38
+ isVerified: e.status === "VERIFIED",
39
+ location: s(e.location),
40
+ averageOrderValue: e.averageOrderValue,
41
+ serviceTypes: e.serviceTypes,
42
+ businessHours: e.businessHours,
43
+ createdAt: e.createdAt
44
+ }), u = (e) => ({
45
+ id: e.id,
46
+ cartId: e.providerId,
47
+ cartName: e.provider?.name ?? "Unknown Cart",
48
+ items: e.items.map((e) => ({
49
+ id: e.id,
50
+ name: e.name,
51
+ quantity: e.quantity,
52
+ price: e.unitPrice,
53
+ customizations: e.customizations ?? void 0
54
+ })),
55
+ total: e.total,
56
+ subtotal: e.subtotal,
57
+ taxes: e.tax,
58
+ deliveryFee: e.deliveryFee,
59
+ discount: e.discount,
60
+ status: e.status.toLowerCase(),
61
+ orderDate: e.createdAt,
62
+ deliveryAddress: c(e.deliveryAddress),
63
+ paymentMethod: e.paymentMethod ?? "Cash",
64
+ paymentStatus: e.paymentStatus.toLowerCase(),
65
+ timeline: e.timeline ?? []
66
+ }), d = (e) => ({
67
+ id: e.id,
68
+ cartId: e.providerId,
69
+ cartName: e.provider?.name ?? "Unknown Cart",
70
+ businessOwner: "",
71
+ targetAmount: e.targetAmount,
72
+ raisedAmount: e.raisedAmount,
73
+ minimumInvestment: e.minimumInvestment,
74
+ expectedReturns: e.expectedReturnsPct,
75
+ investmentPeriod: e.lockInMonths,
76
+ riskLevel: e.riskLevel.toLowerCase(),
77
+ description: e.description ?? "",
78
+ businessPlan: "",
79
+ financialProjections: [],
80
+ documents: [],
81
+ investors: [],
82
+ status: e.status.toLowerCase(),
83
+ createdAt: e.createdAt,
84
+ expiresAt: e.expiresAt ?? ""
85
+ }), f = (e) => ({
86
+ id: e.id,
87
+ opportunityId: e.opportunityId,
88
+ cartName: e.opportunity?.provider?.name ?? "Unknown Cart",
89
+ investedAmount: e.amount,
90
+ currentValue: e.currentValue,
91
+ returns: e.realizedReturns,
92
+ returnsPercentage: e.expectedReturnsPct,
93
+ investmentDate: e.investedAt,
94
+ status: e.status.toLowerCase()
95
+ }), p = (e) => ({
96
+ id: e.id,
97
+ orderId: e.orderId ?? "",
98
+ cartId: e.providerId ?? "",
99
+ cartName: e.provider?.name ?? "Unknown Cart",
100
+ type: e.type.toLowerCase(),
101
+ description: e.description ?? "",
102
+ priority: e.priority.toLowerCase(),
103
+ status: e.status.toLowerCase(),
104
+ assignedAt: e.assignedAt ?? "",
105
+ dueAt: e.dueAt ?? "",
106
+ completedAt: e.completedAt ?? void 0,
107
+ customerName: e.customerName ?? "",
108
+ customerPhone: e.customerPhone ?? "",
109
+ deliveryAddress: e.order?.deliveryAddress ? c(e.order.deliveryAddress) : void 0,
110
+ earnings: e.earnings ?? 0,
111
+ distance: e.distance ?? void 0,
112
+ notes: e.notes ?? void 0
113
+ }), m = "\n id name slug category status ownerId rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n", h = "\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", g = "\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n", _ = (t) => {
19
114
  let { apiGatewayUrl: n } = e();
20
115
  return r({
21
116
  queryKey: [
@@ -23,18 +118,31 @@ var o = async (e, t, n) => {
23
118
  "providers",
24
119
  t
25
120
  ],
26
- queryFn: async () => (await o("query Providers($filter: KadaikodiProviderFilterInput) {\n listServiceProviders(filter: $filter, limit: 200) {\n id name slug category status rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n }\n }", { filter: t ? { query: t } : void 0 }, n)).listServiceProviders.map((e) => ({
27
- ...e,
28
- image: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=400",
29
- images: ["https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=400"],
30
- isOpen: e.status === "ACTIVE" || e.status === "VERIFIED",
31
- isVerified: e.status === "VERIFIED",
32
- distance: .5,
33
- estimatedTime: 20,
34
- createdAt: e.createdAt
35
- }))
36
- });
37
- }, c = (t) => {
121
+ queryFn: async () => (await o(`query Providers($filter: KadaikodiProviderFilterInput) {
122
+ kadaikodiListServiceProviders(filter: $filter, limit: 200) {
123
+ ${m}
124
+ }
125
+ }`, { filter: t ? { query: t } : void 0 }, n)).kadaikodiListServiceProviders.map(l)
126
+ });
127
+ }, v = (t) => {
128
+ let { apiGatewayUrl: n } = e();
129
+ return r({
130
+ queryKey: [
131
+ "kadaikodi",
132
+ "provider",
133
+ t
134
+ ],
135
+ queryFn: async () => {
136
+ let e = await o(`query Provider($id: ID!) {
137
+ kadaikodiServiceProvider(id: $id) {
138
+ ${m}
139
+ }
140
+ }`, { id: t }, n);
141
+ return e.kadaikodiServiceProvider ? l(e.kadaikodiServiceProvider) : null;
142
+ },
143
+ enabled: !!t
144
+ });
145
+ }, y = (t) => {
38
146
  let { apiGatewayUrl: n } = e();
39
147
  return r({
40
148
  queryKey: [
@@ -42,10 +150,14 @@ var o = async (e, t, n) => {
42
150
  "offerings",
43
151
  t
44
152
  ],
45
- queryFn: async () => (await o("query Offerings($providerId: String) {\n listOfferings(providerId: $providerId, limit: 300) {\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n }\n }", { providerId: t }, n)).listOfferings,
153
+ queryFn: async () => (await o(`query Offerings($providerId: String) {
154
+ kadaikodiListOfferings(providerId: $providerId, limit: 300) {
155
+ ${g}
156
+ }
157
+ }`, { providerId: t }, n)).kadaikodiListOfferings,
46
158
  enabled: !!t
47
159
  });
48
- }, l = (t = {}) => {
160
+ }, b = (t = {}) => {
49
161
  let { apiGatewayUrl: n } = e();
50
162
  return r({
51
163
  queryKey: [
@@ -54,63 +166,49 @@ var o = async (e, t, n) => {
54
166
  t.providerId,
55
167
  t.customerId
56
168
  ],
57
- queryFn: async () => (await o("query Orders($providerId: String, $customerId: String) {\n listOrders(providerId: $providerId, customerId: $customerId, limit: 200) {\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 }", t, n)).listOrders.map((e) => ({
58
- id: e.id,
59
- cartId: e.providerId,
60
- cartName: e.provider?.name || "Unknown Cart",
61
- cartImage: "https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=100",
62
- items: e.items.map((e) => ({
63
- id: e.id,
64
- name: e.name,
65
- quantity: e.quantity,
66
- price: e.unitPrice,
67
- customizations: e.customizations
68
- })),
69
- total: e.total,
70
- subtotal: e.subtotal,
71
- taxes: e.tax,
72
- deliveryFee: e.deliveryFee,
73
- discount: e.discount,
74
- status: e.status.toLowerCase(),
75
- orderDate: e.createdAt,
76
- deliveryAddress: e.deliveryAddress,
77
- paymentMethod: e.paymentMethod || "Cash",
78
- paymentStatus: e.paymentStatus.toLowerCase(),
79
- timeline: e.timeline || []
80
- }))
81
- });
82
- }, u = () => {
169
+ queryFn: async () => (await o(`query Orders($providerId: String, $customerId: String) {
170
+ kadaikodiListOrders(providerId: $providerId, customerId: $customerId, limit: 200) {
171
+ ${h}
172
+ }
173
+ }`, t, n)).kadaikodiListOrders.map(u)
174
+ });
175
+ }, x = (t) => {
176
+ let { apiGatewayUrl: n } = e();
177
+ return r({
178
+ queryKey: [
179
+ "kadaikodi",
180
+ "order",
181
+ t
182
+ ],
183
+ queryFn: async () => {
184
+ let e = await o(`query Order($id: ID!) {
185
+ kadaikodiOrder(id: $id) {
186
+ ${h}
187
+ }
188
+ }`, { id: t }, n);
189
+ return e.kadaikodiOrder ? u(e.kadaikodiOrder) : null;
190
+ },
191
+ enabled: !!t
192
+ });
193
+ }, S = () => {
83
194
  let { apiGatewayUrl: t } = e();
84
195
  return r({
85
196
  queryKey: ["kadaikodi", "dashboard-stats"],
86
197
  queryFn: async () => (await o("query DashboardStats { kadaikodiDashboardStats { totalOrders totalRevenue activeProviders activeCustomers avgRating pendingOrders } }", {}, t)).kadaikodiDashboardStats
87
198
  });
88
- }, d = () => {
199
+ }, C = () => {
200
+ let { apiGatewayUrl: t } = e();
201
+ return r({
202
+ queryKey: ["kadaikodi", "admin-analytics"],
203
+ queryFn: async () => (await o("query AdminAnalytics { kadaikodiAdminAnalytics { revenueByCategory orderTrends topProviders customerGrowth categoryDistribution } }", {}, t)).kadaikodiAdminAnalytics
204
+ });
205
+ }, w = () => {
89
206
  let { apiGatewayUrl: t } = e();
90
207
  return r({
91
208
  queryKey: ["kadaikodi", "investment-opportunities"],
92
- queryFn: async () => (await o("query Opportunities {\n listInvestmentOpportunities(limit: 200) {\n id providerId title description targetAmount raisedAmount minimumInvestment expectedReturnsPct lockInMonths riskLevel status expiresAt terms businessMetrics createdAt\n provider { name }\n }\n }", {}, t)).listInvestmentOpportunities.map((e) => ({
93
- id: e.id,
94
- cartId: e.providerId,
95
- cartName: e.provider?.name || "Unknown Cart",
96
- businessOwner: "Owner",
97
- targetAmount: e.targetAmount,
98
- raisedAmount: e.raisedAmount,
99
- minimumInvestment: e.minimumInvestment,
100
- expectedReturns: e.expectedReturnsPct,
101
- investmentPeriod: e.lockInMonths,
102
- riskLevel: e.riskLevel.toLowerCase(),
103
- description: e.description,
104
- businessPlan: "",
105
- financialProjections: [],
106
- documents: [],
107
- investors: [],
108
- status: e.status.toLowerCase(),
109
- createdAt: e.createdAt,
110
- expiresAt: e.expiresAt
111
- }))
112
- });
113
- }, f = (t) => {
209
+ queryFn: async () => (await o("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 }", {}, t)).kadaikodiListInvestmentOpportunities.map(d)
210
+ });
211
+ }, T = (t) => {
114
212
  let { apiGatewayUrl: n } = e();
115
213
  return r({
116
214
  queryKey: [
@@ -118,20 +216,10 @@ var o = async (e, t, n) => {
118
216
  "investments",
119
217
  t
120
218
  ],
121
- queryFn: async () => (await o("query Investments($investorId: String!) {\n listInvestments(investorId: $investorId) {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }", { investorId: t }, n)).listInvestments.map((e) => ({
122
- id: e.id,
123
- opportunityId: e.opportunityId,
124
- cartName: e.opportunity?.provider?.name || "Unknown Cart",
125
- investedAmount: e.amount,
126
- currentValue: e.currentValue,
127
- returns: e.realizedReturns,
128
- returnsPercentage: e.expectedReturnsPct,
129
- investmentDate: e.investedAt,
130
- status: e.status.toLowerCase()
131
- })),
219
+ queryFn: async () => (await o("query Investments($investorId: String!) {\n kadaikodiListInvestments(investorId: $investorId) {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }", { investorId: t }, n)).kadaikodiListInvestments.map(f),
132
220
  enabled: !!t
133
221
  });
134
- }, p = (t) => {
222
+ }, E = (t) => {
135
223
  let { apiGatewayUrl: n } = e();
136
224
  return r({
137
225
  queryKey: [
@@ -139,28 +227,10 @@ var o = async (e, t, n) => {
139
227
  "worker-tasks",
140
228
  t
141
229
  ],
142
- queryFn: async () => (await o("query WorkerTasks($workerId: String!) {\n listWorkerTasks(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 }", { workerId: t }, n)).listWorkerTasks.map((e) => ({
143
- id: e.id,
144
- orderId: e.orderId,
145
- cartId: e.providerId,
146
- cartName: e.provider?.name || "Unknown Cart",
147
- type: e.type.toLowerCase(),
148
- description: e.description,
149
- priority: e.priority.toLowerCase(),
150
- status: e.status.toLowerCase(),
151
- assignedAt: e.assignedAt,
152
- dueAt: e.dueAt,
153
- completedAt: e.completedAt,
154
- customerName: e.customerName,
155
- customerPhone: e.customerPhone,
156
- deliveryAddress: e.order?.deliveryAddress,
157
- earnings: e.earnings,
158
- distance: e.distance,
159
- notes: e.notes
160
- })),
230
+ queryFn: async () => (await o("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 }", { workerId: t }, n)).kadaikodiWorkerTasks.map(p),
161
231
  enabled: !!t
162
232
  });
163
- }, m = (t) => {
233
+ }, D = (t) => {
164
234
  let { apiGatewayUrl: n } = e();
165
235
  return r({
166
236
  queryKey: [
@@ -171,15 +241,49 @@ var o = async (e, t, n) => {
171
241
  queryFn: async () => (await o("query WorkerStats($workerId: String!) {\n kadaikodiWorkerStats(workerId: $workerId) {\n totalDeliveries totalEarnings averageRating completionRate todayTasks todayEarnings\n }\n }", { workerId: t }, n)).kadaikodiWorkerStats,
172
242
  enabled: !!t
173
243
  });
174
- }, h = () => {
244
+ }, O = () => {
175
245
  let t = i(), { apiGatewayUrl: r } = e();
176
246
  return n({
177
- mutationFn: async (e) => (await o("mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n placeOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }", { input: e }, r)).placeOrder,
247
+ mutationFn: async (e) => (await o("mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n kadaikodiPlaceOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }", { input: e }, r)).kadaikodiPlaceOrder,
178
248
  onSuccess: () => {
179
249
  t.invalidateQueries({ queryKey: ["kadaikodi", "orders"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
180
250
  }
181
251
  });
182
- }, g = () => {
252
+ }, k = () => {
253
+ let t = i(), { apiGatewayUrl: r } = e();
254
+ return n({
255
+ mutationFn: async ({ id: e, status: t }) => (await o("mutation UpdateOrderStatus($id: ID!, $status: KadaikodiOrderStatus!) {\n kadaikodiUpdateOrderStatus(id: $id, status: $status) {\n id status\n }\n }", {
256
+ id: e,
257
+ status: t
258
+ }, r)).kadaikodiUpdateOrderStatus,
259
+ onSuccess: () => {
260
+ t.invalidateQueries({ queryKey: ["kadaikodi", "orders"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "order"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "dashboard-stats"] });
261
+ }
262
+ });
263
+ }, A = () => {
264
+ let t = i(), { apiGatewayUrl: r } = e();
265
+ return n({
266
+ mutationFn: async ({ id: e, input: t }) => (await o(`mutation UpdateOffering($id: ID!, $input: KadaikodiUpdateOfferingInput!) {
267
+ kadaikodiUpdateOffering(id: $id, input: $input) {
268
+ ${g}
269
+ }
270
+ }`, {
271
+ id: e,
272
+ input: t
273
+ }, r)).kadaikodiUpdateOffering,
274
+ onSuccess: () => {
275
+ t.invalidateQueries({ queryKey: ["kadaikodi", "offerings"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "offering"] });
276
+ }
277
+ });
278
+ }, j = () => {
279
+ let t = i(), { apiGatewayUrl: r } = e();
280
+ return n({
281
+ 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,
282
+ onSuccess: () => {
283
+ t.invalidateQueries({ queryKey: ["kadaikodi", "investments"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "investment-opportunities"] });
284
+ }
285
+ });
286
+ }, M = () => {
183
287
  let t = i(), { apiGatewayUrl: r } = e();
184
288
  return n({
185
289
  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 }", {
@@ -190,7 +294,7 @@ var o = async (e, t, n) => {
190
294
  t.invalidateQueries({ queryKey: ["kadaikodi", "worker-tasks"] }), t.invalidateQueries({ queryKey: ["kadaikodi", "worker-stats"] });
191
295
  }
192
296
  });
193
- }, _ = () => {
297
+ }, N = () => {
194
298
  let t = i(), { apiGatewayUrl: r } = e();
195
299
  return n({
196
300
  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 }", {
@@ -201,23 +305,23 @@ var o = async (e, t, n) => {
201
305
  t.invalidateQueries({ queryKey: ["kadaikodi", "worker-schedules"] });
202
306
  }
203
307
  });
204
- }, v = () => {
205
- let { currentUser: n } = e(), r = s(), i = l({ customerId: n?.id }), a = u(), o = d(), c = f(n?.id || "");
308
+ }, P = () => {
309
+ let { currentUser: n } = e(), r = _(), i = b({ customerId: n?.id }), a = S(), o = w(), s = T(n?.id || "");
206
310
  return t(() => ({
207
311
  providers: r,
208
312
  orders: i,
209
313
  dashboardStats: a,
210
314
  investmentOpportunities: o,
211
- investments: c
315
+ investments: s
212
316
  }), [
213
317
  r,
214
318
  i,
215
319
  a,
216
320
  o,
217
- c
321
+ s
218
322
  ]);
219
323
  };
220
324
  //#endregion
221
- export { u as useDashboardStats, d as useInvestmentOpportunities, f as useInvestments, v as useKadaikodiApi, c as useOfferings, l as useOrders, h as usePlaceOrder, s as useProviders, g as useUpdateWorkerTaskStatus, _ as useWorkerClockInOut, m as useWorkerStats, p as useWorkerTasks };
325
+ export { C as useAdminAnalytics, S as useDashboardStats, j as useInvest, w as useInvestmentOpportunities, T as useInvestments, P as useKadaikodiApi, y as useOfferings, x as useOrder, b as useOrders, O as usePlaceOrder, v as useProvider, _ as useProviders, A as useUpdateOffering, k as useUpdateOrderStatus, M as useUpdateWorkerTaskStatus, N as useWorkerClockInOut, D as useWorkerStats, E as useWorkerTasks };
222
326
 
223
327
  //# 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 InvestmentOpportunity,\n Investment,\n DashboardStats,\n AdminAnalytics,\n WorkerTask,\n} from '../types';\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// 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<{ listServiceProviders: any[] }>(\n `query Providers($filter: KadaikodiProviderFilterInput) {\n listServiceProviders(filter: $filter, limit: 200) {\n id name slug category status rating totalRatings averageOrderValue serviceTypes location businessHours createdAt\n }\n }`,\n {\n filter: query\n ? {\n query,\n }\n : undefined,\n },\n apiGatewayUrl\n );\n\n return result.listServiceProviders.map((p) => ({\n ...p,\n image: `https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=400`, // Placeholder\n images: [`https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=400`],\n isOpen: p.status === 'ACTIVE' || p.status === 'VERIFIED',\n isVerified: p.status === 'VERIFIED',\n distance: 0.5, // Mock\n estimatedTime: 20, // Mock\n createdAt: p.createdAt,\n })) as MockCart[];\n },\n });\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<{ listOfferings: any[] }>(\n `query Offerings($providerId: String) {\n listOfferings(providerId: $providerId, limit: 300) {\n id providerId kind name slug category description price originalPrice stock durationMinutes serviceType tags isAvailable metadata media\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.listOfferings;\n },\n enabled: Boolean(providerId),\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<{ listOrders: any[] }>(\n `query Orders($providerId: String, $customerId: String) {\n listOrders(providerId: $providerId, customerId: $customerId, limit: 200) {\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 }`,\n input,\n apiGatewayUrl\n );\n\n return result.listOrders.map((o) => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name || 'Unknown Cart',\n cartImage: `https://images.unsplash.com/photo-1567620905732-2d1ec7ab7445?w=100`, // Placeholder\n items: o.items.map((i: any) => ({\n id: i.id,\n name: i.name,\n quantity: i.quantity,\n price: i.unitPrice,\n customizations: i.customizations,\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(),\n orderDate: o.createdAt,\n deliveryAddress: o.deliveryAddress,\n paymentMethod: o.paymentMethod || 'Cash',\n paymentStatus: o.paymentStatus.toLowerCase(),\n timeline: o.timeline || [],\n })) as MockOrder[];\n },\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<{\n kadaikodiDashboardStats: DashboardStats;\n }>(\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<{ listInvestmentOpportunities: any[] }>(\n `query Opportunities {\n listInvestmentOpportunities(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\n return result.listInvestmentOpportunities.map((o) => ({\n id: o.id,\n cartId: o.providerId,\n cartName: o.provider?.name || 'Unknown Cart',\n businessOwner: 'Owner', // Mock\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(),\n description: o.description,\n businessPlan: '',\n financialProjections: [],\n documents: [],\n investors: [],\n status: o.status.toLowerCase(),\n createdAt: o.createdAt,\n expiresAt: o.expiresAt,\n })) as InvestmentOpportunity[];\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<{ listInvestments: any[] }>(\n `query Investments($investorId: String!) {\n listInvestments(investorId: $investorId) {\n id opportunityId amount currentValue expectedReturnsPct status investedAt maturedAt realizedReturns\n opportunity { provider { name } }\n }\n }`,\n { investorId },\n apiGatewayUrl\n );\n\n return result.listInvestments.map((i) => ({\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(),\n })) as Investment[];\n },\n enabled: Boolean(investorId),\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<{ listWorkerTasks: any[] }>(\n `query WorkerTasks($workerId: String!) {\n listWorkerTasks(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\n return result.listWorkerTasks.map((t) => ({\n id: t.id,\n orderId: t.orderId,\n cartId: t.providerId,\n cartName: t.provider?.name || 'Unknown Cart',\n type: t.type.toLowerCase(),\n description: t.description,\n priority: t.priority.toLowerCase(),\n status: t.status.toLowerCase(),\n assignedAt: t.assignedAt,\n dueAt: t.dueAt,\n completedAt: t.completedAt,\n customerName: t.customerName,\n customerPhone: t.customerPhone,\n deliveryAddress: t.order?.deliveryAddress,\n earnings: t.earnings,\n distance: t.distance,\n notes: t.notes,\n })) as WorkerTask[];\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: any }>(\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<{ listWorkerSchedules: any[] }>(\n `query WorkerSchedules($workerId: String!) {\n listWorkerSchedules(workerId: $workerId) {\n id date startTime endTime providerId status tasksCompleted totalEarnings\n provider { name }\n }\n }`,\n { workerId },\n apiGatewayUrl\n );\n\n return result.listWorkerSchedules.map((s) => ({\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(),\n tasksCompleted: s.tasksCompleted,\n totalEarnings: s.totalEarnings,\n }));\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<{ listReviews: any[] }>(\n `query Reviews($providerId: String!) {\n listReviews(providerId: $providerId) {\n id providerId customerId rating review response createdAt updatedAt\n }\n }`,\n { providerId },\n apiGatewayUrl\n );\n return result.listReviews;\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<{ placeOrder: any }>(\n `mutation PlaceOrder($input: KadaikodiPlaceOrderInput!) {\n placeOrder(input: $input) {\n id orderNumber status total createdAt\n }\n }`,\n { input },\n apiGatewayUrl\n );\n return result.placeOrder;\n },\n onSuccess: () => {\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'orders'] });\n void queryClient.invalidateQueries({ queryKey: ['kadaikodi', 'dashboard-stats'] });\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<{ kadaikodiCreateServiceProvider: any }>(\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 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<{ kadaikodiUpdateWorkerTaskStatus: any }>(\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<{ kadaikodiWorkerClockInOut: any }>(\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":";;;;;;AAgBA,IAAM,IAAiB,OACrB,GACA,GACA,MACmB;CACnB,IAAM,IAAW,MAAM,EAAoB;EACzC,SAAS;EACT;EACA;EACA;EACA,gBAAgB;EACjB,CAAC;AAEF,KAAI,EAAS,QAAQ,OACnB,OAAU,MAAM,EAAS,OAAO,IAAI,WAAW,yBAAyB;AAG1E,KAAI,CAAC,EAAS,KACZ,OAAU,MAAM,wCAAwC;AAG1D,QAAO,EAAS;GAOL,KAAgB,MAAmB;CAC9C,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAa;GAAM;EAC3C,SAAS,aACQ,MAAM,EACnB,iRAKA,EACE,QAAQ,IACJ,EACE,UACD,GACD,KAAA,GACL,EACD,EACD,EAEa,qBAAqB,KAAK,OAAO;GAC7C,GAAG;GACH,OAAO;GACP,QAAQ,CAAC,qEAAqE;GAC9E,QAAQ,EAAE,WAAW,YAAY,EAAE,WAAW;GAC9C,YAAY,EAAE,WAAW;GACzB,UAAU;GACV,eAAe;GACf,WAAW,EAAE;GACd,EAAE;EAEN,CAAC;GAGS,KAAgB,MAAwB;CACnD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAa;GAAW;EAChD,SAAS,aACQ,MAAM,EACnB,uRAKA,EAAE,eAAY,EACd,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GAOS,KAAa,IAAsD,EAAE,KAAK;CACrF,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAU,EAAM;GAAY,EAAM;GAAW;EACrE,SAAS,aACQ,MAAM,EACnB,sdAOA,GACA,EACD,EAEa,WAAW,KAAK,OAAO;GACnC,IAAI,EAAE;GACN,QAAQ,EAAE;GACV,UAAU,EAAE,UAAU,QAAQ;GAC9B,WAAW;GACX,OAAO,EAAE,MAAM,KAAK,OAAY;IAC9B,IAAI,EAAE;IACN,MAAM,EAAE;IACR,UAAU,EAAE;IACZ,OAAO,EAAE;IACT,gBAAgB,EAAE;IACnB,EAAE;GACH,OAAO,EAAE;GACT,UAAU,EAAE;GACZ,OAAO,EAAE;GACT,aAAa,EAAE;GACf,UAAU,EAAE;GACZ,QAAQ,EAAE,OAAO,aAAa;GAC9B,WAAW,EAAE;GACb,iBAAiB,EAAE;GACnB,eAAe,EAAE,iBAAiB;GAClC,eAAe,EAAE,cAAc,aAAa;GAC5C,UAAU,EAAE,YAAY,EAAE;GAC3B,EAAE;EAEN,CAAC;GAOS,UAA0B;CACrC,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,kBAAkB;EAC1C,SAAS,aACQ,MAAM,EAGnB,yIACA,EAAE,EACF,EACD,EACa;EAEjB,CAAC;GAsBS,UAAmC;CAC9C,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU,CAAC,aAAa,2BAA2B;EACnD,SAAS,aACQ,MAAM,EACnB,yTAMA,EAAE,EACF,EACD,EAEa,4BAA4B,KAAK,OAAO;GACpD,IAAI,EAAE;GACN,QAAQ,EAAE;GACV,UAAU,EAAE,UAAU,QAAQ;GAC9B,eAAe;GACf,cAAc,EAAE;GAChB,cAAc,EAAE;GAChB,mBAAmB,EAAE;GACrB,iBAAiB,EAAE;GACnB,kBAAkB,EAAE;GACpB,WAAW,EAAE,UAAU,aAAa;GACpC,aAAa,EAAE;GACf,cAAc;GACd,sBAAsB,EAAE;GACxB,WAAW,EAAE;GACb,WAAW,EAAE;GACb,QAAQ,EAAE,OAAO,aAAa;GAC9B,WAAW,EAAE;GACb,WAAW,EAAE;GACd,EAAE;EAEN,CAAC;GAGS,KAAkB,MAAuB;CACpD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAe;GAAW;EAClD,SAAS,aACQ,MAAM,EACnB,2RAMA,EAAE,eAAY,EACd,EACD,EAEa,gBAAgB,KAAK,OAAO;GACxC,IAAI,EAAE;GACN,eAAe,EAAE;GACjB,UAAU,EAAE,aAAa,UAAU,QAAQ;GAC3C,gBAAgB,EAAE;GAClB,cAAc,EAAE;GAChB,SAAS,EAAE;GACX,mBAAmB,EAAE;GACrB,gBAAgB,EAAE;GAClB,QAAQ,EAAE,OAAO,aAAa;GAC/B,EAAE;EAEL,SAAS,EAAQ;EAClB,CAAC;GAOS,KAAkB,MAAqB;CAClD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAgB;GAAS;EACjD,SAAS,aACQ,MAAM,EACnB,2VAOA,EAAE,aAAU,EACZ,EACD,EAEa,gBAAgB,KAAK,OAAO;GACxC,IAAI,EAAE;GACN,SAAS,EAAE;GACX,QAAQ,EAAE;GACV,UAAU,EAAE,UAAU,QAAQ;GAC9B,MAAM,EAAE,KAAK,aAAa;GAC1B,aAAa,EAAE;GACf,UAAU,EAAE,SAAS,aAAa;GAClC,QAAQ,EAAE,OAAO,aAAa;GAC9B,YAAY,EAAE;GACd,OAAO,EAAE;GACT,aAAa,EAAE;GACf,cAAc,EAAE;GAChB,eAAe,EAAE;GACjB,iBAAiB,EAAE,OAAO;GAC1B,UAAU,EAAE;GACZ,UAAU,EAAE;GACZ,OAAO,EAAE;GACV,EAAE;EAEL,SAAS,EAAQ;EAClB,CAAC;GAGS,KAAkB,MAAqB;CAClD,IAAM,EAAE,qBAAkB,GAAc;AACxC,QAAO,EAAS;EACd,UAAU;GAAC;GAAa;GAAgB;GAAS;EACjD,SAAS,aACQ,MAAM,EACnB,2NAKA,EAAE,aAAU,EACZ,EACD,EACa;EAEhB,SAAS,EAAQ;EAClB,CAAC;GA+DS,UAAsB;CACjC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,OACF,MAAM,EACnB,8KAKA,EAAE,UAAO,EACT,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,SAAS,EAAE,CAAC,EACpE,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,kBAAkB,EAAE,CAAC;;EAErF,CAAC;GA2BS,UAAkC;CAC7C,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EAAE,WAAQ,iBACZ,MAAM,EACnB,oNAKA;GAAE;GAAQ;GAAQ,EAClB,EACD,EACa;EAEhB,iBAAiB;AAEV,GADA,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC,EAC1E,EAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,eAAe,EAAE,CAAC;;EAElF,CAAC;GAGS,UAA4B;CACvC,IAAM,IAAc,GAAgB,EAC9B,EAAE,qBAAkB,GAAc;AAExC,QAAO,EAAY;EACjB,YAAY,OAAO,EACjB,aACA,iBAKe,MAAM,EACnB,+MAKA;GAAE;GAAU;GAAQ,EACpB,EACD,EACa;EAEhB,iBAAiB;AACV,KAAY,kBAAkB,EAAE,UAAU,CAAC,aAAa,mBAAmB,EAAE,CAAC;;EAEtF,CAAC;GAOS,UAAwB;CACnC,IAAM,EAAE,mBAAgB,GAAc,EAChC,IAAY,GAAc,EAC1B,IAAS,EAAU,EAAE,YAAY,GAAa,IAAI,CAAC,EACnD,IAAiB,GAAmB,EACpC,IAA0B,GAA4B,EACtD,IAAc,EAAe,GAAa,MAAM,GAAG;AAEzD,QAAO,SACE;EACL;EACA;EACA;EACA;EACA;EACD,GACD;EAAC;EAAW;EAAQ;EAAgB;EAAyB;EAAY,CAC1E"}
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 ? toDeliveryAddress(t.order.deliveryAddress) : 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: { id: string; orderNumber: string; status: string; total: number; createdAt: string };\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: { id: string; amount: number; currentValue: number; status: string; investedAt: string };\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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"}
@@ -593,7 +593,7 @@ function re() {
593
593
  children: I.map((e) => /* @__PURE__ */ J("button", {
594
594
  type: "button",
595
595
  onClick: () => v(e.path),
596
- className: t("flex items-start gap-3 rounded-lg border border-border-subtle bg-bg-surface p-4 text-left shadow-sm transition-all", "hover:border-accent-foreground/20 hover:shadow-md"),
596
+ className: t("flex items-start gap-3 rounded-lg border border-border-subtle bg-bg-surface p-4 text-left shadow-sm transition-all", "hover:border-border-strong hover:shadow-md"),
597
597
  children: [
598
598
  /* @__PURE__ */ q("div", {
599
599
  className: t("flex h-10 w-10 shrink-0 items-center justify-center rounded-lg", e.color),
@@ -651,7 +651,7 @@ function re() {
651
651
  onKeyDown: (t) => {
652
652
  (t.key === "Enter" || t.key === " ") && (t.preventDefault(), v(`/customer/cart/${e.id}`));
653
653
  },
654
- className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm overflow-hidden transition-all hover:shadow-md hover:border-accent-foreground/20 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
654
+ className: "rounded-lg border border-border-subtle bg-bg-surface shadow-sm overflow-hidden transition-all hover:shadow-md hover:border-border-strong cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]",
655
655
  children: [/* @__PURE__ */ J("div", {
656
656
  className: "relative h-40 bg-bg-sunken",
657
657
  children: [
@@ -714,7 +714,7 @@ function re() {
714
714
  /* @__PURE__ */ J("div", {
715
715
  className: "mt-3 flex items-center gap-4 text-xs text-text-secondary",
716
716
  children: [
717
- /* @__PURE__ */ J("span", {
717
+ e.distance != null && /* @__PURE__ */ J("span", {
718
718
  className: "flex items-center gap-1",
719
719
  children: [
720
720
  /* @__PURE__ */ q(j, { className: "h-3 w-3" }),
@@ -859,7 +859,7 @@ function re() {
859
859
  children: $.map((e) => /* @__PURE__ */ J("button", {
860
860
  type: "button",
861
861
  onClick: () => v(`/customer/carts?category=${encodeURIComponent(e.label)}`),
862
- className: "flex flex-col items-center gap-2 rounded-lg border border-border-subtle bg-bg-surface p-4 text-center hover:shadow-sm hover:border-accent-foreground/20 transition-all",
862
+ className: "flex flex-col items-center gap-2 rounded-lg border border-border-subtle bg-bg-surface p-4 text-center hover:shadow-sm hover:border-border-strong transition-all",
863
863
  children: [/* @__PURE__ */ q("div", {
864
864
  className: t("flex h-12 w-12 items-center justify-center rounded-full", e.color),
865
865
  children: e.icon