@burdenoff/microfe-kadaikodi 2026.704.3 → 2026.704.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/kadaikodi/KadaikodiRoutes.js +34 -26
  2. package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
  3. package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
  4. package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
  5. package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
  6. package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
  7. package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
  8. package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
  9. package/dist/kadaikodi/components/viz/BarChart.js +83 -0
  10. package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
  11. package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
  12. package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
  13. package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
  14. package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
  15. package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
  16. package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
  17. package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
  18. package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
  19. package/dist/kadaikodi/components/viz/LineChart.js +4 -0
  20. package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
  21. package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
  22. package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
  23. package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
  24. package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
  25. package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
  26. package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
  27. package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
  28. package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
  29. package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
  30. package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
  31. package/dist/kadaikodi/components/viz/StatCard.js +60 -0
  32. package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
  33. package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
  34. package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
  35. package/dist/kadaikodi/components/viz/Timeline.js +66 -0
  36. package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
  37. package/dist/kadaikodi/components/viz/index.js +23 -0
  38. package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
  39. package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
  40. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
  41. package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
  42. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
  43. package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
  44. package/dist/kadaikodi/components/viz/lib/format.js +21 -0
  45. package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
  46. package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
  47. package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
  48. package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
  49. package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
  50. package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
  51. package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
  52. package/dist/kadaikodi/hooks/useKadaikodiApi.js +84 -6
  53. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  54. package/dist/kadaikodi/pages/HomePage.js +373 -631
  55. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  56. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
  57. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  58. package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
  59. package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
  60. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
  61. package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
  62. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
  63. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  64. package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
  65. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
  66. package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
  67. package/dist/kadaikodi/pages/admin/CartManagementPage.js +564 -729
  68. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  69. package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
  70. package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
  71. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +201 -120
  72. package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
  73. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
  74. package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
  75. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +173 -194
  76. package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
  77. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
  78. package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
  79. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
  80. package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
  81. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +428 -347
  82. package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
  83. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +332 -0
  84. package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
  85. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
  86. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
  87. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +294 -162
  88. package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
  89. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
  90. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  91. package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
  92. package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
  93. package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
  94. package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
  95. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  96. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +239 -156
  97. package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
  98. package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
  99. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  100. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
  101. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  102. package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
  103. package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
  104. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +5 -5
  105. package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
  106. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
  107. package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
  108. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +272 -230
  109. package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
  110. package/dist/kadaikodi/pages/customer/FavoritesPage.js +150 -413
  111. package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
  112. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
  113. package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
  114. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +411 -305
  115. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  116. package/dist/kadaikodi/pages/customer/ReviewsPage.js +310 -406
  117. package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
  118. package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
  119. package/dist/kadaikodi/pages/customer/shared.js +181 -0
  120. package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
  121. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
  122. package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
  123. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
  124. package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
  125. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
  126. package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
  127. package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
  128. package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
  129. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
  130. package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
  131. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
  132. package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
  133. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
  134. package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
  135. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +428 -431
  136. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  137. package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
  138. package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
  139. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
  140. package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
  141. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +360 -288
  142. package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
  143. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +303 -281
  144. package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
  145. package/package.json +1 -1
@@ -0,0 +1,373 @@
1
+ import { useKadaikodi as e } from "../../context/KadaikodiContext.js";
2
+ import { PageLayout as t } from "../../components/PageLayout.js";
3
+ import { useCreateProvider as n, useProviders as r } from "../../hooks/useKadaikodiApi.js";
4
+ import { StepProgress as i } from "../../components/viz/StepProgress.js";
5
+ import "../../components/viz/index.js";
6
+ import { useMemo as a, useState as o } from "react";
7
+ import { ArrowLeft as s, ArrowRight as c, CheckCircle2 as l, MapPin as u, ShieldCheck as d, Store as f, Truck as p } from "lucide-react";
8
+ import { jsx as m, jsxs as h } from "react/jsx-runtime";
9
+ import { GlassCard as g } from "@burdenoff/fe-libs/ui";
10
+ //#region src/kadaikodi/pages/cart-owner/MerchantOnboardingPage.tsx
11
+ var _ = [
12
+ ["FOOD_BEVERAGE", "Food & Beverage"],
13
+ ["GROCERY_ESSENTIALS", "Grocery & Essentials"],
14
+ ["CLOTHING_FASHION", "Clothing & Fashion"],
15
+ ["RETAIL_MERCHANDISE", "Retail & Merchandise"],
16
+ ["PERSONAL_CARE_BEAUTY", "Personal Care & Beauty"],
17
+ ["REPAIR_MAINTENANCE", "Repair & Maintenance"],
18
+ ["HOME_SERVICES", "Home Services"],
19
+ ["HEALTH_WELLNESS", "Health & Wellness"],
20
+ ["EDUCATION_SKILLS", "Education & Skills"]
21
+ ], v = [
22
+ ["PICKUP", "Pickup"],
23
+ ["DELIVERY", "Delivery"],
24
+ ["CART_DISPATCH", "Cart dispatch"],
25
+ ["ON_LOCATION", "On-location"],
26
+ ["HOME_SERVICE", "Home service"]
27
+ ], y = [
28
+ { label: "Business details" },
29
+ { label: "Location & hours" },
30
+ { label: "Fulfilment" },
31
+ { label: "Review & submit" }
32
+ ], b = (e) => e.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 40) + "-" + Math.random().toString(36).slice(2, 7);
33
+ function x() {
34
+ let { navigateTo: x, currentUser: S } = e(), { data: C = [] } = r(), w = n(), T = a(() => C.some((e) => e.ownerId === S?.id), [C, S?.id]), [E, D] = o(0), [O, k] = o(!1), [A, j] = o(""), [M, N] = o({
35
+ name: "",
36
+ category: "FOOD_BEVERAGE",
37
+ description: "",
38
+ address: "",
39
+ open: "08:00",
40
+ close: "22:00",
41
+ fulfilments: ["PICKUP", "DELIVERY"]
42
+ }), P = (e, t) => N((n) => ({
43
+ ...n,
44
+ [e]: t
45
+ })), F = "w-full rounded-lg border border-border-subtle bg-bg-canvas px-3 py-2 text-sm text-text-primary outline-none focus:border-border-strong", I = E === 0 ? M.name.trim().length > 1 : E === 1 ? M.address.trim().length > 3 : !0;
46
+ return O ? /* @__PURE__ */ m(t, {
47
+ title: "You're all set",
48
+ description: "Your cart has been submitted",
49
+ children: /* @__PURE__ */ m("div", {
50
+ className: "mx-auto max-w-xl",
51
+ children: /* @__PURE__ */ h(g, {
52
+ treatment: "glass",
53
+ className: "p-8 text-center",
54
+ children: [
55
+ /* @__PURE__ */ m("div", {
56
+ className: "mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-status-success-bg-subtle",
57
+ children: /* @__PURE__ */ m(l, { className: "h-7 w-7 text-status-success-text" })
58
+ }),
59
+ /* @__PURE__ */ m("h3", {
60
+ className: "text-lg font-semibold text-text-primary",
61
+ children: "Submitted for verification"
62
+ }),
63
+ /* @__PURE__ */ h("p", {
64
+ className: "mx-auto mt-2 max-w-md text-sm text-text-secondary",
65
+ children: [
66
+ "“",
67
+ M.name,
68
+ "” has been created and sent for admin review. You can add offerings, set detailed hours and open your service from the dashboard now."
69
+ ]
70
+ }),
71
+ /* @__PURE__ */ h("div", {
72
+ className: "mt-6 flex flex-col justify-center gap-3 sm:flex-row",
73
+ children: [/* @__PURE__ */ m("button", {
74
+ type: "button",
75
+ onClick: () => x("/cart-owner/inventory"),
76
+ className: "rounded-lg border border-border-default bg-bg-surface px-5 py-2.5 text-sm font-medium text-text-secondary hover:bg-bg-sunken",
77
+ children: "Add offerings"
78
+ }), /* @__PURE__ */ m("button", {
79
+ type: "button",
80
+ onClick: () => x("/cart-owner/dashboard"),
81
+ className: "rounded-lg bg-action-primary-bg px-5 py-2.5 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover",
82
+ children: "Go to Dashboard"
83
+ })]
84
+ })
85
+ ]
86
+ })
87
+ })
88
+ }) : /* @__PURE__ */ m(t, {
89
+ title: "Set up your cart",
90
+ description: "Get your business live and discoverable on the marketplace",
91
+ children: /* @__PURE__ */ h("div", {
92
+ className: "mx-auto max-w-2xl space-y-6",
93
+ children: [
94
+ T && /* @__PURE__ */ h("div", {
95
+ className: "flex items-center gap-2 rounded-lg border border-status-info-text/30 bg-status-info-bg-subtle p-3 text-sm text-text-secondary",
96
+ children: [/* @__PURE__ */ m(d, { className: "h-4 w-4 text-status-info-text" }), "You already have a cart — this creates an additional one."]
97
+ }),
98
+ /* @__PURE__ */ m(i, {
99
+ steps: y,
100
+ current: E
101
+ }),
102
+ /* @__PURE__ */ h(g, {
103
+ treatment: "plain",
104
+ className: "p-6",
105
+ children: [
106
+ E === 0 && /* @__PURE__ */ h("div", {
107
+ className: "space-y-4",
108
+ children: [
109
+ /* @__PURE__ */ h("div", {
110
+ className: "flex items-center gap-2 text-text-primary",
111
+ children: [
112
+ /* @__PURE__ */ m(f, { className: "h-5 w-5 text-accent-primary" }),
113
+ " ",
114
+ /* @__PURE__ */ m("h3", {
115
+ className: "font-semibold",
116
+ children: "Business details"
117
+ })
118
+ ]
119
+ }),
120
+ /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("label", {
121
+ className: "mb-1 block text-sm font-medium text-text-secondary",
122
+ children: "Business name"
123
+ }), /* @__PURE__ */ m("input", {
124
+ className: F,
125
+ value: M.name,
126
+ onChange: (e) => P("name", e.target.value),
127
+ placeholder: "Anna Nagar Tiffin Cart"
128
+ })] }),
129
+ /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("label", {
130
+ className: "mb-1 block text-sm font-medium text-text-secondary",
131
+ children: "Category"
132
+ }), /* @__PURE__ */ m("div", {
133
+ className: "grid grid-cols-2 gap-2 sm:grid-cols-3",
134
+ children: _.map(([e, t]) => /* @__PURE__ */ m("button", {
135
+ type: "button",
136
+ onClick: () => P("category", e),
137
+ className: "rounded-lg border px-3 py-2 text-xs font-medium transition " + (M.category === e ? "border-accent-primary bg-accent-primary/10 text-accent-primary" : "border-border-subtle bg-bg-canvas text-text-secondary hover:bg-bg-sunken"),
138
+ children: t
139
+ }, e))
140
+ })] }),
141
+ /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("label", {
142
+ className: "mb-1 block text-sm font-medium text-text-secondary",
143
+ children: "Description"
144
+ }), /* @__PURE__ */ m("textarea", {
145
+ className: F,
146
+ rows: 3,
147
+ value: M.description,
148
+ onChange: (e) => P("description", e.target.value),
149
+ placeholder: "What you sell and what makes you special."
150
+ })] })
151
+ ]
152
+ }),
153
+ E === 1 && /* @__PURE__ */ h("div", {
154
+ className: "space-y-4",
155
+ children: [
156
+ /* @__PURE__ */ h("div", {
157
+ className: "flex items-center gap-2 text-text-primary",
158
+ children: [
159
+ /* @__PURE__ */ m(u, { className: "h-5 w-5 text-accent-primary" }),
160
+ " ",
161
+ /* @__PURE__ */ m("h3", {
162
+ className: "font-semibold",
163
+ children: "Location & hours"
164
+ })
165
+ ]
166
+ }),
167
+ /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("label", {
168
+ className: "mb-1 block text-sm font-medium text-text-secondary",
169
+ children: "Address"
170
+ }), /* @__PURE__ */ m("input", {
171
+ className: F,
172
+ value: M.address,
173
+ onChange: (e) => P("address", e.target.value),
174
+ placeholder: "24 North Usman Rd, Anna Nagar, Chennai"
175
+ })] }),
176
+ /* @__PURE__ */ h("div", {
177
+ className: "grid grid-cols-2 gap-4",
178
+ children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("label", {
179
+ className: "mb-1 block text-sm font-medium text-text-secondary",
180
+ children: "Opens"
181
+ }), /* @__PURE__ */ m("input", {
182
+ type: "time",
183
+ className: F,
184
+ value: M.open,
185
+ onChange: (e) => P("open", e.target.value)
186
+ })] }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("label", {
187
+ className: "mb-1 block text-sm font-medium text-text-secondary",
188
+ children: "Closes"
189
+ }), /* @__PURE__ */ m("input", {
190
+ type: "time",
191
+ className: F,
192
+ value: M.close,
193
+ onChange: (e) => P("close", e.target.value)
194
+ })] })]
195
+ }),
196
+ /* @__PURE__ */ m("p", {
197
+ className: "text-xs text-text-muted",
198
+ children: "You can set detailed per-day hours later in Service Config."
199
+ })
200
+ ]
201
+ }),
202
+ E === 2 && /* @__PURE__ */ h("div", {
203
+ className: "space-y-4",
204
+ children: [
205
+ /* @__PURE__ */ h("div", {
206
+ className: "flex items-center gap-2 text-text-primary",
207
+ children: [
208
+ /* @__PURE__ */ m(p, { className: "h-5 w-5 text-accent-primary" }),
209
+ " ",
210
+ /* @__PURE__ */ m("h3", {
211
+ className: "font-semibold",
212
+ children: "Fulfilment modes"
213
+ })
214
+ ]
215
+ }),
216
+ /* @__PURE__ */ m("p", {
217
+ className: "text-sm text-text-secondary",
218
+ children: "How will customers receive their orders?"
219
+ }),
220
+ /* @__PURE__ */ m("div", {
221
+ className: "grid grid-cols-2 gap-2 sm:grid-cols-3",
222
+ children: v.map(([e, t]) => {
223
+ let n = M.fulfilments.includes(e);
224
+ return /* @__PURE__ */ m("button", {
225
+ type: "button",
226
+ onClick: () => P("fulfilments", n ? M.fulfilments.filter((t) => t !== e) : [...M.fulfilments, e]),
227
+ className: "rounded-lg border px-3 py-2 text-sm font-medium transition " + (n ? "border-accent-primary bg-accent-primary/10 text-accent-primary" : "border-border-subtle bg-bg-canvas text-text-secondary hover:bg-bg-sunken"),
228
+ children: t
229
+ }, e);
230
+ })
231
+ })
232
+ ]
233
+ }),
234
+ E === 3 && /* @__PURE__ */ h("div", {
235
+ className: "space-y-4",
236
+ children: [
237
+ /* @__PURE__ */ h("div", {
238
+ className: "flex items-center gap-2 text-text-primary",
239
+ children: [
240
+ /* @__PURE__ */ m(d, { className: "h-5 w-5 text-accent-primary" }),
241
+ " ",
242
+ /* @__PURE__ */ m("h3", {
243
+ className: "font-semibold",
244
+ children: "Review & submit"
245
+ })
246
+ ]
247
+ }),
248
+ /* @__PURE__ */ h("dl", {
249
+ className: "space-y-2 text-sm",
250
+ children: [
251
+ /* @__PURE__ */ h("div", {
252
+ className: "flex justify-between border-b border-border-subtle py-2",
253
+ children: [/* @__PURE__ */ m("dt", {
254
+ className: "text-text-secondary",
255
+ children: "Business"
256
+ }), /* @__PURE__ */ m("dd", {
257
+ className: "font-medium text-text-primary",
258
+ children: M.name || "—"
259
+ })]
260
+ }),
261
+ /* @__PURE__ */ h("div", {
262
+ className: "flex justify-between border-b border-border-subtle py-2",
263
+ children: [/* @__PURE__ */ m("dt", {
264
+ className: "text-text-secondary",
265
+ children: "Category"
266
+ }), /* @__PURE__ */ m("dd", {
267
+ className: "font-medium text-text-primary",
268
+ children: _.find((e) => e[0] === M.category)?.[1]
269
+ })]
270
+ }),
271
+ /* @__PURE__ */ h("div", {
272
+ className: "flex justify-between border-b border-border-subtle py-2",
273
+ children: [/* @__PURE__ */ m("dt", {
274
+ className: "text-text-secondary",
275
+ children: "Address"
276
+ }), /* @__PURE__ */ m("dd", {
277
+ className: "max-w-[60%] text-right font-medium text-text-primary",
278
+ children: M.address || "—"
279
+ })]
280
+ }),
281
+ /* @__PURE__ */ h("div", {
282
+ className: "flex justify-between border-b border-border-subtle py-2",
283
+ children: [/* @__PURE__ */ m("dt", {
284
+ className: "text-text-secondary",
285
+ children: "Hours"
286
+ }), /* @__PURE__ */ h("dd", {
287
+ className: "font-medium text-text-primary",
288
+ children: [
289
+ M.open,
290
+ "–",
291
+ M.close
292
+ ]
293
+ })]
294
+ }),
295
+ /* @__PURE__ */ h("div", {
296
+ className: "flex justify-between py-2",
297
+ children: [/* @__PURE__ */ m("dt", {
298
+ className: "text-text-secondary",
299
+ children: "Fulfilment"
300
+ }), /* @__PURE__ */ m("dd", {
301
+ className: "max-w-[60%] text-right font-medium text-text-primary",
302
+ children: M.fulfilments.map((e) => v.find((t) => t[0] === e)?.[1]).join(", ") || "—"
303
+ })]
304
+ })
305
+ ]
306
+ }),
307
+ /* @__PURE__ */ m("div", {
308
+ className: "rounded-lg border border-border-subtle bg-bg-sunken/50 p-3 text-xs text-text-secondary",
309
+ children: "On submit, your cart is created and sent to platform admins for verification. Verification documents (GST, licences) can be added from your profile once that step is enabled."
310
+ }),
311
+ A && /* @__PURE__ */ m("p", {
312
+ className: "text-sm text-status-error-text",
313
+ children: A
314
+ })
315
+ ]
316
+ }),
317
+ /* @__PURE__ */ h("div", {
318
+ className: "mt-6 flex items-center justify-between border-t border-border-subtle pt-4",
319
+ children: [/* @__PURE__ */ h("button", {
320
+ type: "button",
321
+ onClick: () => E === 0 ? x("/cart-owner/dashboard") : D((e) => e - 1),
322
+ className: "inline-flex items-center gap-1.5 rounded-lg border border-border-default bg-bg-surface px-4 py-2 text-sm font-medium text-text-secondary hover:bg-bg-sunken",
323
+ children: [
324
+ /* @__PURE__ */ m(s, { className: "h-4 w-4" }),
325
+ " ",
326
+ E === 0 ? "Cancel" : "Back"
327
+ ]
328
+ }), E < y.length - 1 ? /* @__PURE__ */ h("button", {
329
+ type: "button",
330
+ disabled: !I,
331
+ onClick: () => D((e) => e + 1),
332
+ className: "inline-flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-5 py-2 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover disabled:opacity-50",
333
+ children: ["Continue ", /* @__PURE__ */ m(c, { className: "h-4 w-4" })]
334
+ }) : /* @__PURE__ */ h("button", {
335
+ type: "button",
336
+ disabled: w.isPending,
337
+ onClick: () => {
338
+ j(""), w.mutate({
339
+ ownerId: S?.id,
340
+ name: M.name.trim(),
341
+ slug: b(M.name),
342
+ description: M.description.trim() || void 0,
343
+ category: M.category,
344
+ offeringType: "both",
345
+ serviceTypes: [],
346
+ location: { address: M.address.trim() },
347
+ businessHours: {
348
+ open: M.open,
349
+ close: M.close
350
+ }
351
+ }, {
352
+ onSuccess: () => k(!0),
353
+ onError: (e) => j(e instanceof Error ? e.message : "Could not create your cart.")
354
+ });
355
+ },
356
+ className: "inline-flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-5 py-2 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover disabled:opacity-60",
357
+ children: [
358
+ /* @__PURE__ */ m(d, { className: "h-4 w-4" }),
359
+ " ",
360
+ w.isPending ? "Submitting…" : "Submit for Verification"
361
+ ]
362
+ })]
363
+ })
364
+ ]
365
+ })
366
+ ]
367
+ })
368
+ });
369
+ }
370
+ //#endregion
371
+ export { x as MerchantOnboardingPage };
372
+
373
+ //# sourceMappingURL=MerchantOnboardingPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MerchantOnboardingPage.js","names":[],"sources":["../../../../src/kadaikodi/pages/cart-owner/MerchantOnboardingPage.tsx"],"sourcesContent":["/**\n * MerchantOnboardingPage — guided first-time merchant setup.\n *\n * A real StepProgress wizard that creates a live ServiceProvider (via\n * kadaikodiCreateServiceProvider) across Business details → Location & hours →\n * Fulfilment → Review & submit. Verification is honest: submitting creates the\n * provider (status DRAFT/ACTIVE) for admin review — no fabricated KYC upload.\n */\nimport { useMemo, useState } from 'react';\nimport { Store, MapPin, Truck, CheckCircle2, ShieldCheck, ArrowRight, ArrowLeft } from 'lucide-react';\nimport { GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../../components/PageLayout';\nimport { useKadaikodi } from '../../context/KadaikodiContext';\nimport { useProviders, useCreateProvider } from '../../hooks/useKadaikodiApi';\nimport { StepProgress } from '../../components/viz';\n\nconst CATEGORIES = [\n ['FOOD_BEVERAGE', 'Food & Beverage'],\n ['GROCERY_ESSENTIALS', 'Grocery & Essentials'],\n ['CLOTHING_FASHION', 'Clothing & Fashion'],\n ['RETAIL_MERCHANDISE', 'Retail & Merchandise'],\n ['PERSONAL_CARE_BEAUTY', 'Personal Care & Beauty'],\n ['REPAIR_MAINTENANCE', 'Repair & Maintenance'],\n ['HOME_SERVICES', 'Home Services'],\n ['HEALTH_WELLNESS', 'Health & Wellness'],\n ['EDUCATION_SKILLS', 'Education & Skills'],\n] as const;\n\nconst FULFILMENTS = [\n ['PICKUP', 'Pickup'],\n ['DELIVERY', 'Delivery'],\n ['CART_DISPATCH', 'Cart dispatch'],\n ['ON_LOCATION', 'On-location'],\n ['HOME_SERVICE', 'Home service'],\n] as const;\n\nconst STEPS = [\n { label: 'Business details' },\n { label: 'Location & hours' },\n { label: 'Fulfilment' },\n { label: 'Review & submit' },\n];\n\nconst slugify = (s: string) =>\n s.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').slice(0, 40) +\n '-' +\n Math.random().toString(36).slice(2, 7);\n\nexport function MerchantOnboardingPage() {\n const { navigateTo, currentUser } = useKadaikodi();\n const { data: providers = [] } = useProviders();\n const createProvider = useCreateProvider();\n const alreadyHasProvider = useMemo(\n () => providers.some((p) => p.ownerId === currentUser?.id),\n [providers, currentUser?.id]\n );\n\n const [step, setStep] = useState(0);\n const [done, setDone] = useState(false);\n const [error, setError] = useState('');\n const [form, setForm] = useState({\n name: '',\n category: 'FOOD_BEVERAGE' as (typeof CATEGORIES)[number][0],\n description: '',\n address: '',\n open: '08:00',\n close: '22:00',\n fulfilments: ['PICKUP', 'DELIVERY'] as string[],\n });\n const set = <K extends keyof typeof form>(k: K, v: (typeof form)[K]) => setForm((f) => ({ ...f, [k]: v }));\n const inputCls =\n 'w-full rounded-lg border border-border-subtle bg-bg-canvas px-3 py-2 text-sm text-text-primary outline-none focus:border-border-strong';\n\n const canNext =\n step === 0 ? form.name.trim().length > 1 : step === 1 ? form.address.trim().length > 3 : true;\n\n const submit = () => {\n setError('');\n createProvider.mutate(\n {\n ownerId: currentUser?.id,\n name: form.name.trim(),\n slug: slugify(form.name),\n description: form.description.trim() || undefined,\n category: form.category,\n offeringType: 'both',\n serviceTypes: [],\n location: { address: form.address.trim() },\n businessHours: { open: form.open, close: form.close },\n },\n {\n onSuccess: () => setDone(true),\n onError: (e) => setError(e instanceof Error ? e.message : 'Could not create your cart.'),\n }\n );\n };\n\n if (done) {\n return (\n <PageLayout title=\"You're all set\" description=\"Your cart has been submitted\">\n <div className=\"mx-auto max-w-xl\">\n <GlassCard treatment=\"glass\" className=\"p-8 text-center\">\n <div className=\"mx-auto mb-4 flex h-14 w-14 items-center justify-center rounded-full bg-status-success-bg-subtle\">\n <CheckCircle2 className=\"h-7 w-7 text-status-success-text\" />\n </div>\n <h3 className=\"text-lg font-semibold text-text-primary\">Submitted for verification</h3>\n <p className=\"mx-auto mt-2 max-w-md text-sm text-text-secondary\">\n “{form.name}” has been created and sent for admin review. You can add offerings, set detailed\n hours and open your service from the dashboard now.\n </p>\n <div className=\"mt-6 flex flex-col justify-center gap-3 sm:flex-row\">\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/inventory')}\n className=\"rounded-lg border border-border-default bg-bg-surface px-5 py-2.5 text-sm font-medium text-text-secondary hover:bg-bg-sunken\"\n >\n Add offerings\n </button>\n <button\n type=\"button\"\n onClick={() => navigateTo('/cart-owner/dashboard')}\n className=\"rounded-lg bg-action-primary-bg px-5 py-2.5 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover\"\n >\n Go to Dashboard\n </button>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout title=\"Set up your cart\" description=\"Get your business live and discoverable on the marketplace\">\n <div className=\"mx-auto max-w-2xl space-y-6\">\n {alreadyHasProvider && (\n <div className=\"flex items-center gap-2 rounded-lg border border-status-info-text/30 bg-status-info-bg-subtle p-3 text-sm text-text-secondary\">\n <ShieldCheck className=\"h-4 w-4 text-status-info-text\" />\n You already have a cart — this creates an additional one.\n </div>\n )}\n\n <StepProgress steps={STEPS} current={step} />\n\n <GlassCard treatment=\"plain\" className=\"p-6\">\n {step === 0 && (\n <div className=\"space-y-4\">\n <div className=\"flex items-center gap-2 text-text-primary\">\n <Store className=\"h-5 w-5 text-accent-primary\" /> <h3 className=\"font-semibold\">Business details</h3>\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Business name</label>\n <input className={inputCls} value={form.name} onChange={(e) => set('name', e.target.value)} placeholder=\"Anna Nagar Tiffin Cart\" />\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Category</label>\n <div className=\"grid grid-cols-2 gap-2 sm:grid-cols-3\">\n {CATEGORIES.map(([val, label]) => (\n <button\n key={val}\n type=\"button\"\n onClick={() => set('category', val)}\n className={\n 'rounded-lg border px-3 py-2 text-xs font-medium transition ' +\n (form.category === val\n ? 'border-accent-primary bg-accent-primary/10 text-accent-primary'\n : 'border-border-subtle bg-bg-canvas text-text-secondary hover:bg-bg-sunken')\n }\n >\n {label}\n </button>\n ))}\n </div>\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Description</label>\n <textarea className={inputCls} rows={3} value={form.description} onChange={(e) => set('description', e.target.value)} placeholder=\"What you sell and what makes you special.\" />\n </div>\n </div>\n )}\n\n {step === 1 && (\n <div className=\"space-y-4\">\n <div className=\"flex items-center gap-2 text-text-primary\">\n <MapPin className=\"h-5 w-5 text-accent-primary\" /> <h3 className=\"font-semibold\">Location & hours</h3>\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Address</label>\n <input className={inputCls} value={form.address} onChange={(e) => set('address', e.target.value)} placeholder=\"24 North Usman Rd, Anna Nagar, Chennai\" />\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Opens</label>\n <input type=\"time\" className={inputCls} value={form.open} onChange={(e) => set('open', e.target.value)} />\n </div>\n <div>\n <label className=\"mb-1 block text-sm font-medium text-text-secondary\">Closes</label>\n <input type=\"time\" className={inputCls} value={form.close} onChange={(e) => set('close', e.target.value)} />\n </div>\n </div>\n <p className=\"text-xs text-text-muted\">You can set detailed per-day hours later in Service Config.</p>\n </div>\n )}\n\n {step === 2 && (\n <div className=\"space-y-4\">\n <div className=\"flex items-center gap-2 text-text-primary\">\n <Truck className=\"h-5 w-5 text-accent-primary\" /> <h3 className=\"font-semibold\">Fulfilment modes</h3>\n </div>\n <p className=\"text-sm text-text-secondary\">How will customers receive their orders?</p>\n <div className=\"grid grid-cols-2 gap-2 sm:grid-cols-3\">\n {FULFILMENTS.map(([val, label]) => {\n const on = form.fulfilments.includes(val);\n return (\n <button\n key={val}\n type=\"button\"\n onClick={() =>\n set('fulfilments', on ? form.fulfilments.filter((x) => x !== val) : [...form.fulfilments, val])\n }\n className={\n 'rounded-lg border px-3 py-2 text-sm font-medium transition ' +\n (on\n ? 'border-accent-primary bg-accent-primary/10 text-accent-primary'\n : 'border-border-subtle bg-bg-canvas text-text-secondary hover:bg-bg-sunken')\n }\n >\n {label}\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {step === 3 && (\n <div className=\"space-y-4\">\n <div className=\"flex items-center gap-2 text-text-primary\">\n <ShieldCheck className=\"h-5 w-5 text-accent-primary\" /> <h3 className=\"font-semibold\">Review & submit</h3>\n </div>\n <dl className=\"space-y-2 text-sm\">\n <div className=\"flex justify-between border-b border-border-subtle py-2\"><dt className=\"text-text-secondary\">Business</dt><dd className=\"font-medium text-text-primary\">{form.name || '—'}</dd></div>\n <div className=\"flex justify-between border-b border-border-subtle py-2\"><dt className=\"text-text-secondary\">Category</dt><dd className=\"font-medium text-text-primary\">{CATEGORIES.find((c) => c[0] === form.category)?.[1]}</dd></div>\n <div className=\"flex justify-between border-b border-border-subtle py-2\"><dt className=\"text-text-secondary\">Address</dt><dd className=\"max-w-[60%] text-right font-medium text-text-primary\">{form.address || '—'}</dd></div>\n <div className=\"flex justify-between border-b border-border-subtle py-2\"><dt className=\"text-text-secondary\">Hours</dt><dd className=\"font-medium text-text-primary\">{form.open}–{form.close}</dd></div>\n <div className=\"flex justify-between py-2\"><dt className=\"text-text-secondary\">Fulfilment</dt><dd className=\"max-w-[60%] text-right font-medium text-text-primary\">{form.fulfilments.map((f) => FULFILMENTS.find((x) => x[0] === f)?.[1]).join(', ') || '—'}</dd></div>\n </dl>\n <div className=\"rounded-lg border border-border-subtle bg-bg-sunken/50 p-3 text-xs text-text-secondary\">\n On submit, your cart is created and sent to platform admins for verification. Verification documents\n (GST, licences) can be added from your profile once that step is enabled.\n </div>\n {error && <p className=\"text-sm text-status-error-text\">{error}</p>}\n </div>\n )}\n\n {/* Wizard controls */}\n <div className=\"mt-6 flex items-center justify-between border-t border-border-subtle pt-4\">\n <button\n type=\"button\"\n onClick={() => (step === 0 ? navigateTo('/cart-owner/dashboard') : setStep((s) => s - 1))}\n className=\"inline-flex items-center gap-1.5 rounded-lg border border-border-default bg-bg-surface px-4 py-2 text-sm font-medium text-text-secondary hover:bg-bg-sunken\"\n >\n <ArrowLeft className=\"h-4 w-4\" /> {step === 0 ? 'Cancel' : 'Back'}\n </button>\n {step < STEPS.length - 1 ? (\n <button\n type=\"button\"\n disabled={!canNext}\n onClick={() => setStep((s) => s + 1)}\n className=\"inline-flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-5 py-2 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover disabled:opacity-50\"\n >\n Continue <ArrowRight className=\"h-4 w-4\" />\n </button>\n ) : (\n <button\n type=\"button\"\n disabled={createProvider.isPending}\n onClick={submit}\n className=\"inline-flex items-center gap-1.5 rounded-lg bg-action-primary-bg px-5 py-2 text-sm font-semibold text-action-primary-text hover:bg-action-primary-bg-hover disabled:opacity-60\"\n >\n <ShieldCheck className=\"h-4 w-4\" /> {createProvider.isPending ? 'Submitting…' : 'Submit for Verification'}\n </button>\n )}\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":"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"}