@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.
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +209 -105
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/HomePage.js +4 -4
- package/dist/kadaikodi/pages/HomePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.js +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +279 -333
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js +299 -372
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +214 -214
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +226 -230
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +255 -256
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +275 -278
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +228 -446
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js +34 -46
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +193 -447
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +6 -6
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +2 -2
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +255 -215
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +141 -178
- package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +155 -161
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +14 -140
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +304 -458
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js +1 -1
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +2 -2
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +361 -361
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +226 -220
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js +15 -15
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +2 -2
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +252 -253
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +3 -3
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
- package/dist/kadaikodi/mocks/data.js +0 -1517
- package/dist/kadaikodi/mocks/data.js.map +0 -1
- package/dist/kadaikodi/mocks/users.js +0 -34
- 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 = (
|
|
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(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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(
|
|
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
|
-
},
|
|
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(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
},
|
|
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
|
|
93
|
-
|
|
94
|
-
|
|
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
|
|
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
|
-
},
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
|
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
|
-
},
|
|
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
|
-
},
|
|
205
|
-
let { currentUser: n } = e(), r =
|
|
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:
|
|
315
|
+
investments: s
|
|
212
316
|
}), [
|
|
213
317
|
r,
|
|
214
318
|
i,
|
|
215
319
|
a,
|
|
216
320
|
o,
|
|
217
|
-
|
|
321
|
+
s
|
|
218
322
|
]);
|
|
219
323
|
};
|
|
220
324
|
//#endregion
|
|
221
|
-
export {
|
|
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":"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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 ? 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-
|
|
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-
|
|
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-
|
|
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
|