@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.
- package/dist/kadaikodi/KadaikodiRoutes.js +34 -26
- package/dist/kadaikodi/KadaikodiRoutes.js.map +1 -1
- package/dist/kadaikodi/components/viz/AllocationBar.js +68 -0
- package/dist/kadaikodi/components/viz/AllocationBar.js.map +1 -0
- package/dist/kadaikodi/components/viz/AreaChart.js +102 -0
- package/dist/kadaikodi/components/viz/AreaChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js +36 -0
- package/dist/kadaikodi/components/viz/AvatarStack.js.map +1 -0
- package/dist/kadaikodi/components/viz/BarChart.js +83 -0
- package/dist/kadaikodi/components/viz/BarChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/CertificateCard.js +4 -0
- package/dist/kadaikodi/components/viz/DonutChart.js +109 -0
- package/dist/kadaikodi/components/viz/DonutChart.js.map +1 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js +54 -0
- package/dist/kadaikodi/components/viz/HBarFunnel.js.map +1 -0
- package/dist/kadaikodi/components/viz/Heatmap.js +3 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js +50 -0
- package/dist/kadaikodi/components/viz/KanbanBoard.js.map +1 -0
- package/dist/kadaikodi/components/viz/LineChart.js +4 -0
- package/dist/kadaikodi/components/viz/OrgTree.js +2 -0
- package/dist/kadaikodi/components/viz/PathSteps.js +3 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js +68 -0
- package/dist/kadaikodi/components/viz/ProgressRing.js.map +1 -0
- package/dist/kadaikodi/components/viz/RatingStars.js +51 -0
- package/dist/kadaikodi/components/viz/RatingStars.js.map +1 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js +69 -0
- package/dist/kadaikodi/components/viz/SegmentedTabs.js.map +1 -0
- package/dist/kadaikodi/components/viz/SkillBar.js +3 -0
- package/dist/kadaikodi/components/viz/Sparkline.js +74 -0
- package/dist/kadaikodi/components/viz/Sparkline.js.map +1 -0
- package/dist/kadaikodi/components/viz/StatCard.js +60 -0
- package/dist/kadaikodi/components/viz/StatCard.js.map +1 -0
- package/dist/kadaikodi/components/viz/StepProgress.js +64 -0
- package/dist/kadaikodi/components/viz/StepProgress.js.map +1 -0
- package/dist/kadaikodi/components/viz/Timeline.js +66 -0
- package/dist/kadaikodi/components/viz/Timeline.js.map +1 -0
- package/dist/kadaikodi/components/viz/index.js +23 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js +30 -0
- package/dist/kadaikodi/components/viz/lib/Avatar.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js +119 -0
- package/dist/kadaikodi/components/viz/lib/CartesianFrame.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js +35 -0
- package/dist/kadaikodi/components/viz/lib/ResponsiveSvg.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/format.js +21 -0
- package/dist/kadaikodi/components/viz/lib/format.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js +61 -0
- package/dist/kadaikodi/components/viz/lib/geometry.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js +39 -0
- package/dist/kadaikodi/components/viz/lib/hooks.js.map +1 -0
- package/dist/kadaikodi/components/viz/lib/palette.js +27 -0
- package/dist/kadaikodi/components/viz/lib/palette.js.map +1 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +84 -6
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/HomePage.js +373 -631
- package/dist/kadaikodi/pages/HomePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +304 -169
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminDashboard.js +255 -271
- package/dist/kadaikodi/pages/admin/AdminDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js +185 -125
- package/dist/kadaikodi/pages/admin/AdminFinancialPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +141 -102
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js +332 -276
- package/dist/kadaikodi/pages/admin/AdminSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +564 -729
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/UserManagementPage.js +310 -366
- package/dist/kadaikodi/pages/admin/UserManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js +201 -120
- package/dist/kadaikodi/pages/cart-owner/AnalyticsDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js +290 -257
- package/dist/kadaikodi/pages/cart-owner/BusinessSettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js +173 -194
- package/dist/kadaikodi/pages/cart-owner/CartOwnerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js +270 -228
- package/dist/kadaikodi/pages/cart-owner/CartOwnerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js +194 -173
- package/dist/kadaikodi/pages/cart-owner/CartServiceConfigPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js +428 -347
- package/dist/kadaikodi/pages/cart-owner/InventoryManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js +332 -0
- package/dist/kadaikodi/pages/cart-owner/InvestmentListingPage.js.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +373 -0
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -0
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js +294 -162
- package/dist/kadaikodi/pages/cart-owner/OrderManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +180 -181
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/HelpSupportPage.js +310 -317
- package/dist/kadaikodi/pages/common/HelpSupportPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/NotificationCenterPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js +502 -586
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js +239 -156
- package/dist/kadaikodi/pages/customer/BookingDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +405 -248
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +258 -232
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CheckoutPage.js +254 -205
- package/dist/kadaikodi/pages/customer/CheckoutPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js +5 -5
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js +189 -199
- package/dist/kadaikodi/pages/customer/CustomerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js +272 -230
- package/dist/kadaikodi/pages/customer/DirectServiceBookingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/FavoritesPage.js +150 -413
- package/dist/kadaikodi/pages/customer/FavoritesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js +173 -134
- package/dist/kadaikodi/pages/customer/OrderHistoryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +411 -305
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/ReviewsPage.js +310 -406
- package/dist/kadaikodi/pages/customer/ReviewsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/SavedAddressesPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/shared.js +181 -0
- package/dist/kadaikodi/pages/customer/shared.js.map +1 -0
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js +438 -311
- package/dist/kadaikodi/pages/investor/InvestmentDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js +320 -293
- package/dist/kadaikodi/pages/investor/InvestmentOpportunitiesPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js +159 -91
- package/dist/kadaikodi/pages/investor/InvestorAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js +137 -107
- package/dist/kadaikodi/pages/investor/InvestorDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js +157 -135
- package/dist/kadaikodi/pages/investor/InvestorInvestmentsPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js +280 -206
- package/dist/kadaikodi/pages/investor/InvestorPortfolioPage.js.map +1 -1
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js +441 -514
- package/dist/kadaikodi/pages/investor/InvestorProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +428 -431
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js +328 -445
- package/dist/kadaikodi/pages/worker/WorkerDashboard.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js +141 -164
- package/dist/kadaikodi/pages/worker/WorkerOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js +360 -288
- package/dist/kadaikodi/pages/worker/WorkerProfilePage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js +303 -281
- package/dist/kadaikodi/pages/worker/WorkerSchedulePage.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import { Suspense as n, lazy as r } from "react";
|
|
|
4
4
|
import { Navigate as ee, Route as i, Routes as a, useLocation as te } from "react-router-dom";
|
|
5
5
|
import { jsx as o, jsxs as ne } from "react/jsx-runtime";
|
|
6
6
|
//#region src/kadaikodi/KadaikodiRoutes.tsx
|
|
7
|
-
var s = r(() => import("./pages/customer/CustomerDashboard.js").then((e) => ({ default: e.CustomerDashboard }))), c = r(() => import("./pages/customer/CartDiscoveryPage.js").then((e) => ({ default: e.CartDiscoveryPage }))), l = r(() => import("./pages/customer/CartDetailPage.js").then((e) => ({ default: e.CartDetailPage }))), u = r(() => import("./pages/customer/CheckoutPage.js").then((e) => ({ default: e.CheckoutPage }))), d = r(() => import("./pages/customer/OrderTrackingPage.js").then((e) => ({ default: e.OrderTrackingPage }))), f = r(() => import("./pages/customer/OrderHistoryPage.js").then((e) => ({ default: e.OrderHistoryPage }))), p = r(() => import("./pages/customer/CustomerProfilePage.js").then((e) => ({ default: e.CustomerProfilePage }))), m = r(() => import("./pages/customer/SavedAddressesPage.js").then((e) => ({ default: e.SavedAddressesPage }))), h = r(() => import("./pages/customer/FavoritesPage.js").then((e) => ({ default: e.FavoritesPage }))), g = r(() => import("./pages/customer/ReviewsPage.js").then((e) => ({ default: e.ReviewsPage }))), _ = r(() => import("./pages/customer/PaymentMethodsPage.js").then((e) => ({ default: e.PaymentMethodsPage }))), v = r(() => import("./pages/customer/DirectServiceBookingPage.js").then((e) => ({ default: e.DirectServiceBookingPage }))), y = r(() => import("./pages/customer/BookingDetailsPage.js").then((e) => ({ default: e.BookingDetailsPage }))), b = r(() => import("./pages/cart-owner/CartOwnerDashboard.js").then((e) => ({ default: e.CartOwnerDashboard }))), x = r(() => import("./pages/cart-owner/CartServiceConfigPage.js").then((e) => ({ default: e.CartServiceConfigPage }))), S = r(() => import("./pages/cart-owner/InventoryManagementPage.js").then((e) => ({ default: e.InventoryManagementPage }))), C = r(() => import("./pages/cart-owner/OrderManagementPage.js").then((e) => ({ default: e.OrderManagementPage }))), w = r(() => import("./pages/cart-owner/AnalyticsDashboard.js").then((e) => ({ default: e.AnalyticsDashboard }))), T = r(() => import("./pages/cart-owner/StaffManagementPage.js").then((e) => ({ default: e.StaffManagementPage }))), E = r(() => import("./pages/cart-owner/BusinessSettingsPage.js").then((e) => ({ default: e.BusinessSettingsPage }))), D = r(() => import("./pages/cart-owner/CartOwnerProfilePage.js").then((e) => ({ default: e.CartOwnerProfilePage }))), O = r(() => import("./pages/worker/WorkerDashboard.js").then((e) => ({ default: e.WorkerDashboard }))),
|
|
7
|
+
var s = r(() => import("./pages/customer/CustomerDashboard.js").then((e) => ({ default: e.CustomerDashboard }))), c = r(() => import("./pages/customer/CartDiscoveryPage.js").then((e) => ({ default: e.CartDiscoveryPage }))), l = r(() => import("./pages/customer/CartDetailPage.js").then((e) => ({ default: e.CartDetailPage }))), u = r(() => import("./pages/customer/CheckoutPage.js").then((e) => ({ default: e.CheckoutPage }))), d = r(() => import("./pages/customer/OrderTrackingPage.js").then((e) => ({ default: e.OrderTrackingPage }))), f = r(() => import("./pages/customer/OrderHistoryPage.js").then((e) => ({ default: e.OrderHistoryPage }))), p = r(() => import("./pages/customer/CustomerProfilePage.js").then((e) => ({ default: e.CustomerProfilePage }))), m = r(() => import("./pages/customer/SavedAddressesPage.js").then((e) => ({ default: e.SavedAddressesPage }))), h = r(() => import("./pages/customer/FavoritesPage.js").then((e) => ({ default: e.FavoritesPage }))), g = r(() => import("./pages/customer/ReviewsPage.js").then((e) => ({ default: e.ReviewsPage }))), _ = r(() => import("./pages/customer/PaymentMethodsPage.js").then((e) => ({ default: e.PaymentMethodsPage }))), v = r(() => import("./pages/customer/DirectServiceBookingPage.js").then((e) => ({ default: e.DirectServiceBookingPage }))), y = r(() => import("./pages/customer/BookingDetailsPage.js").then((e) => ({ default: e.BookingDetailsPage }))), b = r(() => import("./pages/cart-owner/CartOwnerDashboard.js").then((e) => ({ default: e.CartOwnerDashboard }))), x = r(() => import("./pages/cart-owner/CartServiceConfigPage.js").then((e) => ({ default: e.CartServiceConfigPage }))), S = r(() => import("./pages/cart-owner/InventoryManagementPage.js").then((e) => ({ default: e.InventoryManagementPage }))), C = r(() => import("./pages/cart-owner/OrderManagementPage.js").then((e) => ({ default: e.OrderManagementPage }))), w = r(() => import("./pages/cart-owner/AnalyticsDashboard.js").then((e) => ({ default: e.AnalyticsDashboard }))), T = r(() => import("./pages/cart-owner/StaffManagementPage.js").then((e) => ({ default: e.StaffManagementPage }))), E = r(() => import("./pages/cart-owner/BusinessSettingsPage.js").then((e) => ({ default: e.BusinessSettingsPage }))), D = r(() => import("./pages/cart-owner/CartOwnerProfilePage.js").then((e) => ({ default: e.CartOwnerProfilePage }))), O = r(() => import("./pages/cart-owner/InvestmentListingPage.js").then((e) => ({ default: e.InvestmentListingPage }))), k = r(() => import("./pages/cart-owner/MerchantOnboardingPage.js").then((e) => ({ default: e.MerchantOnboardingPage }))), re = r(() => import("./pages/worker/WorkerDashboard.js").then((e) => ({ default: e.WorkerDashboard }))), A = r(() => import("./pages/worker/WorkerOrdersPage.js").then((e) => ({ default: e.WorkerOrdersPage }))), j = r(() => import("./pages/worker/WorkerSchedulePage.js").then((e) => ({ default: e.WorkerSchedulePage }))), M = r(() => import("./pages/worker/WorkerProfilePage.js").then((e) => ({ default: e.WorkerProfilePage }))), N = r(() => import("./pages/worker/TaskDetailsPage.js").then((e) => ({ default: e.TaskDetailsPage }))), P = r(() => import("./pages/investor/InvestorDashboard.js").then((e) => ({ default: e.InvestorDashboard }))), F = r(() => import("./pages/investor/InvestorPortfolioPage.js").then((e) => ({ default: e.InvestorPortfolioPage }))), I = r(() => import("./pages/investor/InvestmentOpportunitiesPage.js").then((e) => ({ default: e.InvestmentOpportunitiesPage }))), L = r(() => import("./pages/investor/InvestmentDetailsPage.js").then((e) => ({ default: e.InvestmentDetailsPage }))), R = r(() => import("./pages/investor/InvestorInvestmentsPage.js").then((e) => ({ default: e.InvestorInvestmentsPage }))), z = r(() => import("./pages/investor/InvestorAnalyticsPage.js").then((e) => ({ default: e.InvestorAnalyticsPage }))), B = r(() => import("./pages/investor/InvestorProfilePage.js").then((e) => ({ default: e.InvestorProfilePage }))), V = r(() => import("./pages/admin/AdminDashboard.js").then((e) => ({ default: e.AdminDashboard }))), H = r(() => import("./pages/admin/UserManagementPage.js").then((e) => ({ default: e.UserManagementPage }))), U = r(() => import("./pages/admin/CartManagementPage.js").then((e) => ({ default: e.CartManagementPage }))), W = r(() => import("./pages/admin/AdminAnalyticsPage.js").then((e) => ({ default: e.AdminAnalyticsPage }))), G = r(() => import("./pages/admin/AdminOrdersPage.js").then((e) => ({ default: e.AdminOrdersPage }))), K = r(() => import("./pages/admin/AdminProfilePage.js").then((e) => ({ default: e.AdminProfilePage }))), q = r(() => import("./pages/admin/AdminSettingsPage.js").then((e) => ({ default: e.AdminSettingsPage }))), J = r(() => import("./pages/admin/AdminFinancialPage.js").then((e) => ({ default: e.AdminFinancialPage }))), Y = r(() => import("./pages/common/NotificationCenterPage.js").then((e) => ({ default: e.NotificationCenterPage }))), X = r(() => import("./pages/common/SettingsPage.js").then((e) => ({ default: e.SettingsPage }))), ie = r(() => import("./pages/common/HelpSupportPage.js").then((e) => ({ default: e.HelpSupportPage }))), ae = () => /* @__PURE__ */ o("div", {
|
|
8
8
|
className: "flex items-center justify-center min-h-[400px]",
|
|
9
9
|
children: /* @__PURE__ */ o("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-primary" })
|
|
10
10
|
}), Z = () => {
|
|
@@ -12,7 +12,7 @@ var s = r(() => import("./pages/customer/CustomerDashboard.js").then((e) => ({ d
|
|
|
12
12
|
return $ && !Z && !(Q.pathname === $ || Q.pathname.startsWith($ + "/")) ? null : /* @__PURE__ */ o("div", {
|
|
13
13
|
className: "flex flex-col min-h-full",
|
|
14
14
|
children: /* @__PURE__ */ o(n, {
|
|
15
|
-
fallback: /* @__PURE__ */ o(
|
|
15
|
+
fallback: /* @__PURE__ */ o(ae, {}),
|
|
16
16
|
children: /* @__PURE__ */ ne(a, { children: [
|
|
17
17
|
/* @__PURE__ */ o(i, {
|
|
18
18
|
index: !0,
|
|
@@ -103,100 +103,108 @@ var s = r(() => import("./pages/customer/CustomerDashboard.js").then((e) => ({ d
|
|
|
103
103
|
element: /* @__PURE__ */ o(D, {})
|
|
104
104
|
}),
|
|
105
105
|
/* @__PURE__ */ o(i, {
|
|
106
|
-
path: "
|
|
106
|
+
path: "cart-owner/list-investment",
|
|
107
107
|
element: /* @__PURE__ */ o(O, {})
|
|
108
108
|
}),
|
|
109
109
|
/* @__PURE__ */ o(i, {
|
|
110
|
-
path: "
|
|
110
|
+
path: "cart-owner/onboarding",
|
|
111
111
|
element: /* @__PURE__ */ o(k, {})
|
|
112
112
|
}),
|
|
113
113
|
/* @__PURE__ */ o(i, {
|
|
114
|
-
path: "worker/
|
|
114
|
+
path: "worker/dashboard",
|
|
115
115
|
element: /* @__PURE__ */ o(re, {})
|
|
116
116
|
}),
|
|
117
117
|
/* @__PURE__ */ o(i, {
|
|
118
|
-
path: "worker/
|
|
118
|
+
path: "worker/orders",
|
|
119
119
|
element: /* @__PURE__ */ o(A, {})
|
|
120
120
|
}),
|
|
121
121
|
/* @__PURE__ */ o(i, {
|
|
122
|
-
path: "worker/
|
|
122
|
+
path: "worker/schedule",
|
|
123
123
|
element: /* @__PURE__ */ o(j, {})
|
|
124
124
|
}),
|
|
125
125
|
/* @__PURE__ */ o(i, {
|
|
126
|
-
path: "
|
|
126
|
+
path: "worker/profile",
|
|
127
127
|
element: /* @__PURE__ */ o(M, {})
|
|
128
128
|
}),
|
|
129
129
|
/* @__PURE__ */ o(i, {
|
|
130
|
-
path: "
|
|
130
|
+
path: "worker/task/:taskId",
|
|
131
131
|
element: /* @__PURE__ */ o(N, {})
|
|
132
132
|
}),
|
|
133
133
|
/* @__PURE__ */ o(i, {
|
|
134
|
-
path: "investor/
|
|
134
|
+
path: "investor/dashboard",
|
|
135
135
|
element: /* @__PURE__ */ o(P, {})
|
|
136
136
|
}),
|
|
137
137
|
/* @__PURE__ */ o(i, {
|
|
138
|
-
path: "investor/
|
|
138
|
+
path: "investor/portfolio",
|
|
139
139
|
element: /* @__PURE__ */ o(F, {})
|
|
140
140
|
}),
|
|
141
|
+
/* @__PURE__ */ o(i, {
|
|
142
|
+
path: "investor/opportunities",
|
|
143
|
+
element: /* @__PURE__ */ o(I, {})
|
|
144
|
+
}),
|
|
145
|
+
/* @__PURE__ */ o(i, {
|
|
146
|
+
path: "investor/opportunity/:id",
|
|
147
|
+
element: /* @__PURE__ */ o(L, {})
|
|
148
|
+
}),
|
|
141
149
|
/* @__PURE__ */ o(i, {
|
|
142
150
|
path: "investor/investments/:id",
|
|
143
|
-
element: /* @__PURE__ */ o(
|
|
151
|
+
element: /* @__PURE__ */ o(L, {})
|
|
144
152
|
}),
|
|
145
153
|
/* @__PURE__ */ o(i, {
|
|
146
154
|
path: "investor/investments",
|
|
147
|
-
element: /* @__PURE__ */ o(
|
|
155
|
+
element: /* @__PURE__ */ o(R, {})
|
|
148
156
|
}),
|
|
149
157
|
/* @__PURE__ */ o(i, {
|
|
150
158
|
path: "investor/analytics",
|
|
151
|
-
element: /* @__PURE__ */ o(
|
|
159
|
+
element: /* @__PURE__ */ o(z, {})
|
|
152
160
|
}),
|
|
153
161
|
/* @__PURE__ */ o(i, {
|
|
154
162
|
path: "investor/profile",
|
|
155
|
-
element: /* @__PURE__ */ o(
|
|
163
|
+
element: /* @__PURE__ */ o(B, {})
|
|
156
164
|
}),
|
|
157
165
|
/* @__PURE__ */ o(i, {
|
|
158
166
|
path: "admin/dashboard",
|
|
159
|
-
element: /* @__PURE__ */ o(
|
|
167
|
+
element: /* @__PURE__ */ o(V, {})
|
|
160
168
|
}),
|
|
161
169
|
/* @__PURE__ */ o(i, {
|
|
162
170
|
path: "admin/users",
|
|
163
|
-
element: /* @__PURE__ */ o(
|
|
171
|
+
element: /* @__PURE__ */ o(H, {})
|
|
164
172
|
}),
|
|
165
173
|
/* @__PURE__ */ o(i, {
|
|
166
174
|
path: "admin/carts",
|
|
167
|
-
element: /* @__PURE__ */ o(
|
|
175
|
+
element: /* @__PURE__ */ o(U, {})
|
|
168
176
|
}),
|
|
169
177
|
/* @__PURE__ */ o(i, {
|
|
170
178
|
path: "admin/analytics",
|
|
171
|
-
element: /* @__PURE__ */ o(
|
|
179
|
+
element: /* @__PURE__ */ o(W, {})
|
|
172
180
|
}),
|
|
173
181
|
/* @__PURE__ */ o(i, {
|
|
174
182
|
path: "admin/orders",
|
|
175
|
-
element: /* @__PURE__ */ o(
|
|
183
|
+
element: /* @__PURE__ */ o(G, {})
|
|
176
184
|
}),
|
|
177
185
|
/* @__PURE__ */ o(i, {
|
|
178
186
|
path: "admin/profile",
|
|
179
|
-
element: /* @__PURE__ */ o(
|
|
187
|
+
element: /* @__PURE__ */ o(K, {})
|
|
180
188
|
}),
|
|
181
189
|
/* @__PURE__ */ o(i, {
|
|
182
190
|
path: "admin/settings",
|
|
183
|
-
element: /* @__PURE__ */ o(
|
|
191
|
+
element: /* @__PURE__ */ o(q, {})
|
|
184
192
|
}),
|
|
185
193
|
/* @__PURE__ */ o(i, {
|
|
186
194
|
path: "admin/financial",
|
|
187
|
-
element: /* @__PURE__ */ o(
|
|
195
|
+
element: /* @__PURE__ */ o(J, {})
|
|
188
196
|
}),
|
|
189
197
|
/* @__PURE__ */ o(i, {
|
|
190
198
|
path: "notifications",
|
|
191
|
-
element: /* @__PURE__ */ o(
|
|
199
|
+
element: /* @__PURE__ */ o(Y, {})
|
|
192
200
|
}),
|
|
193
201
|
/* @__PURE__ */ o(i, {
|
|
194
202
|
path: "settings",
|
|
195
|
-
element: /* @__PURE__ */ o(
|
|
203
|
+
element: /* @__PURE__ */ o(X, {})
|
|
196
204
|
}),
|
|
197
205
|
/* @__PURE__ */ o(i, {
|
|
198
206
|
path: "help",
|
|
199
|
-
element: /* @__PURE__ */ o(
|
|
207
|
+
element: /* @__PURE__ */ o(ie, {})
|
|
200
208
|
}),
|
|
201
209
|
/* @__PURE__ */ o(i, {
|
|
202
210
|
path: "*",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KadaikodiRoutes.js","names":[],"sources":["../../src/kadaikodi/KadaikodiRoutes.tsx"],"sourcesContent":["/**\n * Kadaikodi Routes\n * @module kadaikodi\n */\n\nimport { type FC, lazy, Suspense } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router-dom';\nimport { useKadaikodi } from './context/KadaikodiContext';\n\n// Eager load - HomePage (primary landing page)\nimport { HomePage } from './pages/HomePage';\n\n// Lazy loaded pages - Customer\nconst CustomerDashboard = lazy(() =>\n import('./pages/customer/CustomerDashboard').then((m) => ({ default: m.CustomerDashboard }))\n);\nconst CartDiscoveryPage = lazy(() =>\n import('./pages/customer/CartDiscoveryPage').then((m) => ({ default: m.CartDiscoveryPage }))\n);\nconst CartDetailPage = lazy(() =>\n import('./pages/customer/CartDetailPage').then((m) => ({ default: m.CartDetailPage }))\n);\nconst CheckoutPage = lazy(() =>\n import('./pages/customer/CheckoutPage').then((m) => ({ default: m.CheckoutPage }))\n);\nconst OrderTrackingPage = lazy(() =>\n import('./pages/customer/OrderTrackingPage').then((m) => ({ default: m.OrderTrackingPage }))\n);\nconst OrderHistoryPage = lazy(() =>\n import('./pages/customer/OrderHistoryPage').then((m) => ({ default: m.OrderHistoryPage }))\n);\nconst CustomerProfilePage = lazy(() =>\n import('./pages/customer/CustomerProfilePage').then((m) => ({ default: m.CustomerProfilePage }))\n);\nconst SavedAddressesPage = lazy(() =>\n import('./pages/customer/SavedAddressesPage').then((m) => ({ default: m.SavedAddressesPage }))\n);\nconst FavoritesPage = lazy(() =>\n import('./pages/customer/FavoritesPage').then((m) => ({ default: m.FavoritesPage }))\n);\nconst ReviewsPage = lazy(() =>\n import('./pages/customer/ReviewsPage').then((m) => ({ default: m.ReviewsPage }))\n);\nconst PaymentMethodsPage = lazy(() =>\n import('./pages/customer/PaymentMethodsPage').then((m) => ({ default: m.PaymentMethodsPage }))\n);\nconst DirectServiceBookingPage = lazy(() =>\n import('./pages/customer/DirectServiceBookingPage').then((m) => ({\n default: m.DirectServiceBookingPage,\n }))\n);\nconst BookingDetailsPage = lazy(() =>\n import('./pages/customer/BookingDetailsPage').then((m) => ({ default: m.BookingDetailsPage }))\n);\n\n// Lazy loaded pages - Cart Owner\nconst CartOwnerDashboard = lazy(() =>\n import('./pages/cart-owner/CartOwnerDashboard').then((m) => ({ default: m.CartOwnerDashboard }))\n);\nconst CartServiceConfigPage = lazy(() =>\n import('./pages/cart-owner/CartServiceConfigPage').then((m) => ({\n default: m.CartServiceConfigPage,\n }))\n);\nconst InventoryManagementPage = lazy(() =>\n import('./pages/cart-owner/InventoryManagementPage').then((m) => ({\n default: m.InventoryManagementPage,\n }))\n);\nconst OrderManagementPage = lazy(() =>\n import('./pages/cart-owner/OrderManagementPage').then((m) => ({\n default: m.OrderManagementPage,\n }))\n);\nconst AnalyticsDashboard = lazy(() =>\n import('./pages/cart-owner/AnalyticsDashboard').then((m) => ({ default: m.AnalyticsDashboard }))\n);\nconst StaffManagementPage = lazy(() =>\n import('./pages/cart-owner/StaffManagementPage').then((m) => ({\n default: m.StaffManagementPage,\n }))\n);\nconst BusinessSettingsPage = lazy(() =>\n import('./pages/cart-owner/BusinessSettingsPage').then((m) => ({\n default: m.BusinessSettingsPage,\n }))\n);\nconst CartOwnerProfilePage = lazy(() =>\n import('./pages/cart-owner/CartOwnerProfilePage').then((m) => ({\n default: m.CartOwnerProfilePage,\n }))\n);\n\n// Lazy loaded pages - Worker\nconst WorkerDashboard = lazy(() =>\n import('./pages/worker/WorkerDashboard').then((m) => ({ default: m.WorkerDashboard }))\n);\nconst WorkerOrdersPage = lazy(() =>\n import('./pages/worker/WorkerOrdersPage').then((m) => ({ default: m.WorkerOrdersPage }))\n);\nconst WorkerSchedulePage = lazy(() =>\n import('./pages/worker/WorkerSchedulePage').then((m) => ({ default: m.WorkerSchedulePage }))\n);\nconst WorkerProfilePage = lazy(() =>\n import('./pages/worker/WorkerProfilePage').then((m) => ({ default: m.WorkerProfilePage }))\n);\nconst TaskDetailsPage = lazy(() =>\n import('./pages/worker/TaskDetailsPage').then((m) => ({ default: m.TaskDetailsPage }))\n);\n\n// Lazy loaded pages - Investor\nconst InvestorDashboard = lazy(() =>\n import('./pages/investor/InvestorDashboard').then((m) => ({ default: m.InvestorDashboard }))\n);\nconst InvestorPortfolioPage = lazy(() =>\n import('./pages/investor/InvestorPortfolioPage').then((m) => ({\n default: m.InvestorPortfolioPage,\n }))\n);\nconst InvestmentOpportunitiesPage = lazy(() =>\n import('./pages/investor/InvestmentOpportunitiesPage').then((m) => ({\n default: m.InvestmentOpportunitiesPage,\n }))\n);\nconst InvestmentDetailsPage = lazy(() =>\n import('./pages/investor/InvestmentDetailsPage').then((m) => ({\n default: m.InvestmentDetailsPage,\n }))\n);\nconst InvestorInvestmentsPage = lazy(() =>\n import('./pages/investor/InvestorInvestmentsPage').then((m) => ({\n default: m.InvestorInvestmentsPage,\n }))\n);\nconst InvestorAnalyticsPage = lazy(() =>\n import('./pages/investor/InvestorAnalyticsPage').then((m) => ({\n default: m.InvestorAnalyticsPage,\n }))\n);\nconst InvestorProfilePage = lazy(() =>\n import('./pages/investor/InvestorProfilePage').then((m) => ({\n default: m.InvestorProfilePage,\n }))\n);\n\n// Lazy loaded pages - Admin\nconst AdminDashboard = lazy(() =>\n import('./pages/admin/AdminDashboard').then((m) => ({ default: m.AdminDashboard }))\n);\nconst UserManagementPage = lazy(() =>\n import('./pages/admin/UserManagementPage').then((m) => ({ default: m.UserManagementPage }))\n);\nconst CartManagementPage = lazy(() =>\n import('./pages/admin/CartManagementPage').then((m) => ({ default: m.CartManagementPage }))\n);\nconst AdminAnalyticsPage = lazy(() =>\n import('./pages/admin/AdminAnalyticsPage').then((m) => ({ default: m.AdminAnalyticsPage }))\n);\nconst AdminOrdersPage = lazy(() =>\n import('./pages/admin/AdminOrdersPage').then((m) => ({ default: m.AdminOrdersPage }))\n);\nconst AdminProfilePage = lazy(() =>\n import('./pages/admin/AdminProfilePage').then((m) => ({ default: m.AdminProfilePage }))\n);\nconst AdminSettingsPage = lazy(() =>\n import('./pages/admin/AdminSettingsPage').then((m) => ({ default: m.AdminSettingsPage }))\n);\nconst AdminFinancialPage = lazy(() =>\n import('./pages/admin/AdminFinancialPage').then((m) => ({ default: m.AdminFinancialPage }))\n);\n\n// Lazy loaded pages - Common\nconst NotificationCenterPage = lazy(() =>\n import('./pages/common/NotificationCenterPage').then((m) => ({\n default: m.NotificationCenterPage,\n }))\n);\nconst SettingsPage = lazy(() =>\n import('./pages/common/SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\nconst HelpSupportPage = lazy(() =>\n import('./pages/common/HelpSupportPage').then((m) => ({ default: m.HelpSupportPage }))\n);\n\n// Loading fallback component\nconst PageLoader: FC = () => (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary\" />\n </div>\n);\n\nexport const KadaikodiRoutes: FC = () => {\n const { basePath, isStandalone } = useKadaikodi();\n const location = useLocation();\n\n // Normalize base path\n const normalizedBasePath = basePath === '/' ? '' : (basePath ?? '').replace(/\\/$/, '');\n\n // Guard: Only render if path matches basePath (when integrated)\n if (normalizedBasePath && !isStandalone) {\n const pathMatches =\n location.pathname === normalizedBasePath ||\n location.pathname.startsWith(normalizedBasePath + '/');\n\n if (!pathMatches) {\n return null;\n }\n }\n\n return (\n <div className=\"flex flex-col min-h-full\">\n <Suspense fallback={<PageLoader />}>\n <Routes>\n {/* Home - Eager loaded */}\n <Route index element={<HomePage />} />\n\n {/* Customer Routes */}\n <Route path=\"customer/dashboard\" element={<CustomerDashboard />} />\n <Route path=\"customer/discover\" element={<CartDiscoveryPage />} />\n <Route path=\"customer/cart/:cartId\" element={<CartDetailPage />} />\n <Route\n path=\"customer/cart/:cartId/direct-service\"\n element={<DirectServiceBookingPage />}\n />\n <Route path=\"customer/checkout\" element={<CheckoutPage />} />\n <Route path=\"customer/orders/:orderId/track\" element={<OrderTrackingPage />} />\n <Route path=\"customer/orders\" element={<OrderHistoryPage />} />\n <Route path=\"customer/profile\" element={<CustomerProfilePage />} />\n <Route path=\"customer/addresses\" element={<SavedAddressesPage />} />\n <Route path=\"customer/favorites\" element={<FavoritesPage />} />\n <Route path=\"customer/reviews\" element={<ReviewsPage />} />\n <Route path=\"customer/payment-methods\" element={<PaymentMethodsPage />} />\n <Route path=\"customer/booking/:bookingId\" element={<BookingDetailsPage />} />\n\n {/* Cart Owner Routes */}\n <Route path=\"cart-owner/dashboard\" element={<CartOwnerDashboard />} />\n <Route path=\"cart-owner/service-config\" element={<CartServiceConfigPage />} />\n <Route path=\"cart-owner/inventory\" element={<InventoryManagementPage />} />\n <Route path=\"cart-owner/orders\" element={<OrderManagementPage />} />\n <Route path=\"cart-owner/analytics\" element={<AnalyticsDashboard />} />\n <Route path=\"cart-owner/staff\" element={<StaffManagementPage />} />\n <Route path=\"cart-owner/settings\" element={<BusinessSettingsPage />} />\n <Route path=\"cart-owner/profile\" element={<CartOwnerProfilePage />} />\n\n {/* Worker Routes */}\n <Route path=\"worker/dashboard\" element={<WorkerDashboard />} />\n <Route path=\"worker/orders\" element={<WorkerOrdersPage />} />\n <Route path=\"worker/schedule\" element={<WorkerSchedulePage />} />\n <Route path=\"worker/profile\" element={<WorkerProfilePage />} />\n <Route path=\"worker/task/:taskId\" element={<TaskDetailsPage />} />\n\n {/* Investor Routes */}\n <Route path=\"investor/dashboard\" element={<InvestorDashboard />} />\n <Route path=\"investor/portfolio\" element={<InvestorPortfolioPage />} />\n <Route path=\"investor/opportunities\" element={<InvestmentOpportunitiesPage />} />\n <Route path=\"investor/opportunity/:id\" element={<InvestmentDetailsPage />} />\n <Route path=\"investor/investments/:id\" element={<InvestmentDetailsPage />} />\n <Route path=\"investor/investments\" element={<InvestorInvestmentsPage />} />\n <Route path=\"investor/analytics\" element={<InvestorAnalyticsPage />} />\n <Route path=\"investor/profile\" element={<InvestorProfilePage />} />\n\n {/* Admin Routes */}\n <Route path=\"admin/dashboard\" element={<AdminDashboard />} />\n <Route path=\"admin/users\" element={<UserManagementPage />} />\n <Route path=\"admin/carts\" element={<CartManagementPage />} />\n <Route path=\"admin/analytics\" element={<AdminAnalyticsPage />} />\n <Route path=\"admin/orders\" element={<AdminOrdersPage />} />\n <Route path=\"admin/profile\" element={<AdminProfilePage />} />\n <Route path=\"admin/settings\" element={<AdminSettingsPage />} />\n <Route path=\"admin/financial\" element={<AdminFinancialPage />} />\n\n {/* Common Routes */}\n <Route path=\"notifications\" element={<NotificationCenterPage />} />\n <Route path=\"settings\" element={<SettingsPage />} />\n <Route path=\"help\" element={<HelpSupportPage />} />\n\n {/* Fallback */}\n <Route path=\"*\" element={<Navigate to=\"/\" replace />} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KadaikodiRoutes.js","names":[],"sources":["../../src/kadaikodi/KadaikodiRoutes.tsx"],"sourcesContent":["/**\n * Kadaikodi Routes\n * @module kadaikodi\n */\n\nimport { type FC, lazy, Suspense } from 'react';\nimport { Routes, Route, Navigate, useLocation } from 'react-router-dom';\nimport { useKadaikodi } from './context/KadaikodiContext';\n\n// Eager load - HomePage (primary landing page)\nimport { HomePage } from './pages/HomePage';\n\n// Lazy loaded pages - Customer\nconst CustomerDashboard = lazy(() =>\n import('./pages/customer/CustomerDashboard').then((m) => ({ default: m.CustomerDashboard }))\n);\nconst CartDiscoveryPage = lazy(() =>\n import('./pages/customer/CartDiscoveryPage').then((m) => ({ default: m.CartDiscoveryPage }))\n);\nconst CartDetailPage = lazy(() =>\n import('./pages/customer/CartDetailPage').then((m) => ({ default: m.CartDetailPage }))\n);\nconst CheckoutPage = lazy(() =>\n import('./pages/customer/CheckoutPage').then((m) => ({ default: m.CheckoutPage }))\n);\nconst OrderTrackingPage = lazy(() =>\n import('./pages/customer/OrderTrackingPage').then((m) => ({ default: m.OrderTrackingPage }))\n);\nconst OrderHistoryPage = lazy(() =>\n import('./pages/customer/OrderHistoryPage').then((m) => ({ default: m.OrderHistoryPage }))\n);\nconst CustomerProfilePage = lazy(() =>\n import('./pages/customer/CustomerProfilePage').then((m) => ({ default: m.CustomerProfilePage }))\n);\nconst SavedAddressesPage = lazy(() =>\n import('./pages/customer/SavedAddressesPage').then((m) => ({ default: m.SavedAddressesPage }))\n);\nconst FavoritesPage = lazy(() =>\n import('./pages/customer/FavoritesPage').then((m) => ({ default: m.FavoritesPage }))\n);\nconst ReviewsPage = lazy(() =>\n import('./pages/customer/ReviewsPage').then((m) => ({ default: m.ReviewsPage }))\n);\nconst PaymentMethodsPage = lazy(() =>\n import('./pages/customer/PaymentMethodsPage').then((m) => ({ default: m.PaymentMethodsPage }))\n);\nconst DirectServiceBookingPage = lazy(() =>\n import('./pages/customer/DirectServiceBookingPage').then((m) => ({\n default: m.DirectServiceBookingPage,\n }))\n);\nconst BookingDetailsPage = lazy(() =>\n import('./pages/customer/BookingDetailsPage').then((m) => ({ default: m.BookingDetailsPage }))\n);\n\n// Lazy loaded pages - Cart Owner\nconst CartOwnerDashboard = lazy(() =>\n import('./pages/cart-owner/CartOwnerDashboard').then((m) => ({ default: m.CartOwnerDashboard }))\n);\nconst CartServiceConfigPage = lazy(() =>\n import('./pages/cart-owner/CartServiceConfigPage').then((m) => ({\n default: m.CartServiceConfigPage,\n }))\n);\nconst InventoryManagementPage = lazy(() =>\n import('./pages/cart-owner/InventoryManagementPage').then((m) => ({\n default: m.InventoryManagementPage,\n }))\n);\nconst OrderManagementPage = lazy(() =>\n import('./pages/cart-owner/OrderManagementPage').then((m) => ({\n default: m.OrderManagementPage,\n }))\n);\nconst AnalyticsDashboard = lazy(() =>\n import('./pages/cart-owner/AnalyticsDashboard').then((m) => ({ default: m.AnalyticsDashboard }))\n);\nconst StaffManagementPage = lazy(() =>\n import('./pages/cart-owner/StaffManagementPage').then((m) => ({\n default: m.StaffManagementPage,\n }))\n);\nconst BusinessSettingsPage = lazy(() =>\n import('./pages/cart-owner/BusinessSettingsPage').then((m) => ({\n default: m.BusinessSettingsPage,\n }))\n);\nconst CartOwnerProfilePage = lazy(() =>\n import('./pages/cart-owner/CartOwnerProfilePage').then((m) => ({\n default: m.CartOwnerProfilePage,\n }))\n);\nconst InvestmentListingPage = lazy(() =>\n import('./pages/cart-owner/InvestmentListingPage').then((m) => ({\n default: m.InvestmentListingPage,\n }))\n);\nconst MerchantOnboardingPage = lazy(() =>\n import('./pages/cart-owner/MerchantOnboardingPage').then((m) => ({\n default: m.MerchantOnboardingPage,\n }))\n);\n\n// Lazy loaded pages - Worker\nconst WorkerDashboard = lazy(() =>\n import('./pages/worker/WorkerDashboard').then((m) => ({ default: m.WorkerDashboard }))\n);\nconst WorkerOrdersPage = lazy(() =>\n import('./pages/worker/WorkerOrdersPage').then((m) => ({ default: m.WorkerOrdersPage }))\n);\nconst WorkerSchedulePage = lazy(() =>\n import('./pages/worker/WorkerSchedulePage').then((m) => ({ default: m.WorkerSchedulePage }))\n);\nconst WorkerProfilePage = lazy(() =>\n import('./pages/worker/WorkerProfilePage').then((m) => ({ default: m.WorkerProfilePage }))\n);\nconst TaskDetailsPage = lazy(() =>\n import('./pages/worker/TaskDetailsPage').then((m) => ({ default: m.TaskDetailsPage }))\n);\n\n// Lazy loaded pages - Investor\nconst InvestorDashboard = lazy(() =>\n import('./pages/investor/InvestorDashboard').then((m) => ({ default: m.InvestorDashboard }))\n);\nconst InvestorPortfolioPage = lazy(() =>\n import('./pages/investor/InvestorPortfolioPage').then((m) => ({\n default: m.InvestorPortfolioPage,\n }))\n);\nconst InvestmentOpportunitiesPage = lazy(() =>\n import('./pages/investor/InvestmentOpportunitiesPage').then((m) => ({\n default: m.InvestmentOpportunitiesPage,\n }))\n);\nconst InvestmentDetailsPage = lazy(() =>\n import('./pages/investor/InvestmentDetailsPage').then((m) => ({\n default: m.InvestmentDetailsPage,\n }))\n);\nconst InvestorInvestmentsPage = lazy(() =>\n import('./pages/investor/InvestorInvestmentsPage').then((m) => ({\n default: m.InvestorInvestmentsPage,\n }))\n);\nconst InvestorAnalyticsPage = lazy(() =>\n import('./pages/investor/InvestorAnalyticsPage').then((m) => ({\n default: m.InvestorAnalyticsPage,\n }))\n);\nconst InvestorProfilePage = lazy(() =>\n import('./pages/investor/InvestorProfilePage').then((m) => ({\n default: m.InvestorProfilePage,\n }))\n);\n\n// Lazy loaded pages - Admin\nconst AdminDashboard = lazy(() =>\n import('./pages/admin/AdminDashboard').then((m) => ({ default: m.AdminDashboard }))\n);\nconst UserManagementPage = lazy(() =>\n import('./pages/admin/UserManagementPage').then((m) => ({ default: m.UserManagementPage }))\n);\nconst CartManagementPage = lazy(() =>\n import('./pages/admin/CartManagementPage').then((m) => ({ default: m.CartManagementPage }))\n);\nconst AdminAnalyticsPage = lazy(() =>\n import('./pages/admin/AdminAnalyticsPage').then((m) => ({ default: m.AdminAnalyticsPage }))\n);\nconst AdminOrdersPage = lazy(() =>\n import('./pages/admin/AdminOrdersPage').then((m) => ({ default: m.AdminOrdersPage }))\n);\nconst AdminProfilePage = lazy(() =>\n import('./pages/admin/AdminProfilePage').then((m) => ({ default: m.AdminProfilePage }))\n);\nconst AdminSettingsPage = lazy(() =>\n import('./pages/admin/AdminSettingsPage').then((m) => ({ default: m.AdminSettingsPage }))\n);\nconst AdminFinancialPage = lazy(() =>\n import('./pages/admin/AdminFinancialPage').then((m) => ({ default: m.AdminFinancialPage }))\n);\n\n// Lazy loaded pages - Common\nconst NotificationCenterPage = lazy(() =>\n import('./pages/common/NotificationCenterPage').then((m) => ({\n default: m.NotificationCenterPage,\n }))\n);\nconst SettingsPage = lazy(() =>\n import('./pages/common/SettingsPage').then((m) => ({ default: m.SettingsPage }))\n);\nconst HelpSupportPage = lazy(() =>\n import('./pages/common/HelpSupportPage').then((m) => ({ default: m.HelpSupportPage }))\n);\n\n// Loading fallback component\nconst PageLoader: FC = () => (\n <div className=\"flex items-center justify-center min-h-[400px]\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary\" />\n </div>\n);\n\nexport const KadaikodiRoutes: FC = () => {\n const { basePath, isStandalone } = useKadaikodi();\n const location = useLocation();\n\n // Normalize base path\n const normalizedBasePath = basePath === '/' ? '' : (basePath ?? '').replace(/\\/$/, '');\n\n // Guard: Only render if path matches basePath (when integrated)\n if (normalizedBasePath && !isStandalone) {\n const pathMatches =\n location.pathname === normalizedBasePath ||\n location.pathname.startsWith(normalizedBasePath + '/');\n\n if (!pathMatches) {\n return null;\n }\n }\n\n return (\n <div className=\"flex flex-col min-h-full\">\n <Suspense fallback={<PageLoader />}>\n <Routes>\n {/* Home - Eager loaded */}\n <Route index element={<HomePage />} />\n\n {/* Customer Routes */}\n <Route path=\"customer/dashboard\" element={<CustomerDashboard />} />\n <Route path=\"customer/discover\" element={<CartDiscoveryPage />} />\n <Route path=\"customer/cart/:cartId\" element={<CartDetailPage />} />\n <Route\n path=\"customer/cart/:cartId/direct-service\"\n element={<DirectServiceBookingPage />}\n />\n <Route path=\"customer/checkout\" element={<CheckoutPage />} />\n <Route path=\"customer/orders/:orderId/track\" element={<OrderTrackingPage />} />\n <Route path=\"customer/orders\" element={<OrderHistoryPage />} />\n <Route path=\"customer/profile\" element={<CustomerProfilePage />} />\n <Route path=\"customer/addresses\" element={<SavedAddressesPage />} />\n <Route path=\"customer/favorites\" element={<FavoritesPage />} />\n <Route path=\"customer/reviews\" element={<ReviewsPage />} />\n <Route path=\"customer/payment-methods\" element={<PaymentMethodsPage />} />\n <Route path=\"customer/booking/:bookingId\" element={<BookingDetailsPage />} />\n\n {/* Cart Owner Routes */}\n <Route path=\"cart-owner/dashboard\" element={<CartOwnerDashboard />} />\n <Route path=\"cart-owner/service-config\" element={<CartServiceConfigPage />} />\n <Route path=\"cart-owner/inventory\" element={<InventoryManagementPage />} />\n <Route path=\"cart-owner/orders\" element={<OrderManagementPage />} />\n <Route path=\"cart-owner/analytics\" element={<AnalyticsDashboard />} />\n <Route path=\"cart-owner/staff\" element={<StaffManagementPage />} />\n <Route path=\"cart-owner/settings\" element={<BusinessSettingsPage />} />\n <Route path=\"cart-owner/profile\" element={<CartOwnerProfilePage />} />\n <Route path=\"cart-owner/list-investment\" element={<InvestmentListingPage />} />\n <Route path=\"cart-owner/onboarding\" element={<MerchantOnboardingPage />} />\n\n {/* Worker Routes */}\n <Route path=\"worker/dashboard\" element={<WorkerDashboard />} />\n <Route path=\"worker/orders\" element={<WorkerOrdersPage />} />\n <Route path=\"worker/schedule\" element={<WorkerSchedulePage />} />\n <Route path=\"worker/profile\" element={<WorkerProfilePage />} />\n <Route path=\"worker/task/:taskId\" element={<TaskDetailsPage />} />\n\n {/* Investor Routes */}\n <Route path=\"investor/dashboard\" element={<InvestorDashboard />} />\n <Route path=\"investor/portfolio\" element={<InvestorPortfolioPage />} />\n <Route path=\"investor/opportunities\" element={<InvestmentOpportunitiesPage />} />\n <Route path=\"investor/opportunity/:id\" element={<InvestmentDetailsPage />} />\n <Route path=\"investor/investments/:id\" element={<InvestmentDetailsPage />} />\n <Route path=\"investor/investments\" element={<InvestorInvestmentsPage />} />\n <Route path=\"investor/analytics\" element={<InvestorAnalyticsPage />} />\n <Route path=\"investor/profile\" element={<InvestorProfilePage />} />\n\n {/* Admin Routes */}\n <Route path=\"admin/dashboard\" element={<AdminDashboard />} />\n <Route path=\"admin/users\" element={<UserManagementPage />} />\n <Route path=\"admin/carts\" element={<CartManagementPage />} />\n <Route path=\"admin/analytics\" element={<AdminAnalyticsPage />} />\n <Route path=\"admin/orders\" element={<AdminOrdersPage />} />\n <Route path=\"admin/profile\" element={<AdminProfilePage />} />\n <Route path=\"admin/settings\" element={<AdminSettingsPage />} />\n <Route path=\"admin/financial\" element={<AdminFinancialPage />} />\n\n {/* Common Routes */}\n <Route path=\"notifications\" element={<NotificationCenterPage />} />\n <Route path=\"settings\" element={<SettingsPage />} />\n <Route path=\"help\" element={<HelpSupportPage />} />\n\n {/* Fallback */}\n <Route path=\"*\" element={<Navigate to=\"/\" replace />} />\n </Routes>\n </Suspense>\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import { chartPalette as t } from "./lib/palette.js";
|
|
3
|
+
import { useMounted as n, usePrefersReducedMotion as r } from "./lib/hooks.js";
|
|
4
|
+
import { toPercent as i } from "./lib/format.js";
|
|
5
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
6
|
+
//#region src/kadaikodi/components/viz/AllocationBar.tsx
|
|
7
|
+
function s({ segments: s, label: c, rightLabel: l, showLegend: u = !0, height: d = 12, className: f }) {
|
|
8
|
+
let p = n(), m = r();
|
|
9
|
+
if (s.length === 0) return null;
|
|
10
|
+
let h = s.reduce((e, t) => e + Math.max(0, t.value), 0) || 1, g = t(s.length), _ = s.map((e, t) => ({
|
|
11
|
+
segment: e,
|
|
12
|
+
color: e.color ?? g[t],
|
|
13
|
+
pct: i(e.value, h, 1)
|
|
14
|
+
}));
|
|
15
|
+
return /* @__PURE__ */ o("div", {
|
|
16
|
+
className: e("flex flex-col gap-2", f),
|
|
17
|
+
children: [
|
|
18
|
+
c !== void 0 || l !== void 0 ? /* @__PURE__ */ o("div", {
|
|
19
|
+
className: "flex items-baseline justify-between gap-3 text-sm",
|
|
20
|
+
children: [/* @__PURE__ */ a("span", {
|
|
21
|
+
className: "font-medium text-text-secondary",
|
|
22
|
+
children: c
|
|
23
|
+
}), /* @__PURE__ */ a("span", {
|
|
24
|
+
className: "font-semibold tabular-nums text-text-primary",
|
|
25
|
+
children: l
|
|
26
|
+
})]
|
|
27
|
+
}) : null,
|
|
28
|
+
/* @__PURE__ */ a("div", {
|
|
29
|
+
className: "flex w-full overflow-hidden rounded-full bg-bg-sunken",
|
|
30
|
+
style: { height: d },
|
|
31
|
+
role: "img",
|
|
32
|
+
"aria-label": _.map((e) => `${e.segment.label} ${e.pct}%`).join(", "),
|
|
33
|
+
children: _.map((e, t) => /* @__PURE__ */ a("div", {
|
|
34
|
+
title: `${e.segment.label}: ${e.pct}%`,
|
|
35
|
+
className: "h-full first:rounded-l-full last:rounded-r-full",
|
|
36
|
+
style: {
|
|
37
|
+
width: p || m ? `${e.pct}%` : "0%",
|
|
38
|
+
backgroundColor: e.color,
|
|
39
|
+
transition: m ? void 0 : "width 640ms cubic-bezier(0.22,1,0.36,1)",
|
|
40
|
+
transitionDelay: m ? void 0 : `${t * 60}ms`
|
|
41
|
+
}
|
|
42
|
+
}, `${e.segment.label}-${t}`))
|
|
43
|
+
}),
|
|
44
|
+
u ? /* @__PURE__ */ a("ul", {
|
|
45
|
+
className: "flex flex-wrap gap-x-4 gap-y-1 text-xs text-text-secondary",
|
|
46
|
+
children: _.map((e, t) => /* @__PURE__ */ o("li", {
|
|
47
|
+
className: "inline-flex items-center gap-1.5",
|
|
48
|
+
children: [
|
|
49
|
+
/* @__PURE__ */ a("span", {
|
|
50
|
+
"aria-hidden": "true",
|
|
51
|
+
className: "inline-block h-2.5 w-2.5 rounded-full",
|
|
52
|
+
style: { backgroundColor: e.color }
|
|
53
|
+
}),
|
|
54
|
+
/* @__PURE__ */ a("span", { children: e.segment.label }),
|
|
55
|
+
/* @__PURE__ */ o("span", {
|
|
56
|
+
className: "tabular-nums text-text-muted",
|
|
57
|
+
children: [e.pct, "%"]
|
|
58
|
+
})
|
|
59
|
+
]
|
|
60
|
+
}, `${e.segment.label}-${t}`))
|
|
61
|
+
}) : null
|
|
62
|
+
]
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { s as AllocationBar };
|
|
67
|
+
|
|
68
|
+
//# sourceMappingURL=AllocationBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AllocationBar.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/AllocationBar.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport { chartPalette } from './lib/palette';\nimport { toPercent } from './lib/format';\nimport { useMounted, usePrefersReducedMotion } from './lib/hooks';\nimport type { Segment } from './lib/types';\n\nexport interface AllocationBarProps {\n /** Segments that make up the bar; widths are proportional to their values. */\n segments: Segment[];\n /** Optional label shown above the bar (left). */\n label?: ReactNode;\n /** Headline value shown above the bar (right), e.g. \"82% utilized\". */\n rightLabel?: ReactNode;\n showLegend?: boolean;\n /** Bar height in pixels. */\n height?: number;\n className?: string;\n}\n\n/**\n * A single horizontal bar split into labeled, tokenized segments that sum to\n * 100% — ideal for utilization / capacity breakdowns.\n */\nexport function AllocationBar({\n segments,\n label,\n rightLabel,\n showLegend = true,\n height = 12,\n className,\n}: AllocationBarProps) {\n const mounted = useMounted();\n const reduced = usePrefersReducedMotion();\n\n if (segments.length === 0) {\n return null;\n }\n\n const total = segments.reduce((acc, s) => acc + Math.max(0, s.value), 0) || 1;\n const palette = chartPalette(segments.length);\n const parts = segments.map((segment, i) => ({\n segment,\n color: segment.color ?? palette[i],\n pct: toPercent(segment.value, total, 1),\n }));\n\n return (\n <div className={cn('flex flex-col gap-2', className)}>\n {label !== undefined || rightLabel !== undefined ? (\n <div className=\"flex items-baseline justify-between gap-3 text-sm\">\n <span className=\"font-medium text-text-secondary\">{label}</span>\n <span className=\"font-semibold tabular-nums text-text-primary\">{rightLabel}</span>\n </div>\n ) : null}\n <div\n className=\"flex w-full overflow-hidden rounded-full bg-bg-sunken\"\n style={{ height }}\n role=\"img\"\n aria-label={parts.map((p) => `${p.segment.label} ${p.pct}%`).join(', ')}\n >\n {parts.map((part, i) => (\n <div\n key={`${part.segment.label}-${i}`}\n title={`${part.segment.label}: ${part.pct}%`}\n className=\"h-full first:rounded-l-full last:rounded-r-full\"\n style={{\n width: mounted || reduced ? `${part.pct}%` : '0%',\n backgroundColor: part.color,\n transition: reduced ? undefined : 'width 640ms cubic-bezier(0.22,1,0.36,1)',\n transitionDelay: reduced ? undefined : `${i * 60}ms`,\n }}\n />\n ))}\n </div>\n {showLegend ? (\n <ul className=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-text-secondary\">\n {parts.map((part, i) => (\n <li key={`${part.segment.label}-${i}`} className=\"inline-flex items-center gap-1.5\">\n <span\n aria-hidden=\"true\"\n className=\"inline-block h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: part.color }}\n />\n <span>{part.segment.label}</span>\n <span className=\"tabular-nums text-text-muted\">{part.pct}%</span>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;;AAwBA,SAAgB,EAAc,EAC5B,aACA,UACA,eACA,gBAAa,IACb,YAAS,IACT,gBACqB;CACrB,IAAM,IAAU,GAAY,EACtB,IAAU,GAAyB;AAEzC,KAAI,EAAS,WAAW,EACtB,QAAO;CAGT,IAAM,IAAQ,EAAS,QAAQ,GAAK,MAAM,IAAM,KAAK,IAAI,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,GACtE,IAAU,EAAa,EAAS,OAAO,EACvC,IAAQ,EAAS,KAAK,GAAS,OAAO;EAC1C;EACA,OAAO,EAAQ,SAAS,EAAQ;EAChC,KAAK,EAAU,EAAQ,OAAO,GAAO,EAAE;EACxC,EAAE;AAEH,QACE,kBAAC,OAAD;EAAK,WAAW,EAAG,uBAAuB,EAAU;YAApD;GACG,MAAU,KAAA,KAAa,MAAe,KAAA,IACrC,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,QAAD;KAAM,WAAU;eAAmC;KAAa,CAAA,EAChE,kBAAC,QAAD;KAAM,WAAU;eAAgD;KAAkB,CAAA,CAC9E;QACJ;GACJ,kBAAC,OAAD;IACE,WAAU;IACV,OAAO,EAAE,WAAQ;IACjB,MAAK;IACL,cAAY,EAAM,KAAK,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG,EAAE,IAAI,GAAG,CAAC,KAAK,KAAK;cAEtE,EAAM,KAAK,GAAM,MAChB,kBAAC,OAAD;KAEE,OAAO,GAAG,EAAK,QAAQ,MAAM,IAAI,EAAK,IAAI;KAC1C,WAAU;KACV,OAAO;MACL,OAAO,KAAW,IAAU,GAAG,EAAK,IAAI,KAAK;MAC7C,iBAAiB,EAAK;MACtB,YAAY,IAAU,KAAA,IAAY;MAClC,iBAAiB,IAAU,KAAA,IAAY,GAAG,IAAI,GAAG;MAClD;KACD,EATK,GAAG,EAAK,QAAQ,MAAM,GAAG,IAS9B,CACF;IACE,CAAA;GACL,IACC,kBAAC,MAAD;IAAI,WAAU;cACX,EAAM,KAAK,GAAM,MAChB,kBAAC,MAAD;KAAuC,WAAU;eAAjD;MACE,kBAAC,QAAD;OACE,eAAY;OACZ,WAAU;OACV,OAAO,EAAE,iBAAiB,EAAK,OAAO;OACtC,CAAA;MACF,kBAAC,QAAD,EAAA,UAAO,EAAK,QAAQ,OAAa,CAAA;MACjC,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CAAgD,EAAK,KAAI,IAAQ;;MAC9D;OARI,GAAG,EAAK,QAAQ,MAAM,GAAG,IAQ7B,CACL;IACC,CAAA,GACH;GACA"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { ACCENT as e } from "./lib/palette.js";
|
|
2
|
+
import { useMounted as t, usePrefersReducedMotion as n, useVizId as r } from "./lib/hooks.js";
|
|
3
|
+
import { buildAreaPath as i, buildLinePath as a } from "./lib/geometry.js";
|
|
4
|
+
import { CartesianFrame as o } from "./lib/CartesianFrame.js";
|
|
5
|
+
import { formatCompact as s } from "./lib/format.js";
|
|
6
|
+
import { jsx as c, jsxs as l } from "react/jsx-runtime";
|
|
7
|
+
//#region src/kadaikodi/components/viz/AreaChart.tsx
|
|
8
|
+
function u({ series: u, height: d = 200, valueFormatter: f = s, title: p, className: m }) {
|
|
9
|
+
let h = r("area-grad"), g = t(), _ = n();
|
|
10
|
+
if (u.length === 0) return null;
|
|
11
|
+
let v = u.map((e) => e.value), y = u.map((e) => e.label), b = Math.min(...v), x = Math.max(...v), S = x - b || Math.abs(x) || 1;
|
|
12
|
+
return /* @__PURE__ */ c(o, {
|
|
13
|
+
labels: y,
|
|
14
|
+
domain: [b - S * .12, x + S * .12],
|
|
15
|
+
height: d,
|
|
16
|
+
title: p ?? `Area chart of ${u.length} points`,
|
|
17
|
+
formatValue: f,
|
|
18
|
+
className: m,
|
|
19
|
+
tooltip: (e) => /* @__PURE__ */ l("span", { children: [/* @__PURE__ */ l("span", {
|
|
20
|
+
className: "text-text-secondary",
|
|
21
|
+
children: [y[e], ": "]
|
|
22
|
+
}), /* @__PURE__ */ c("span", {
|
|
23
|
+
className: "font-semibold tabular-nums",
|
|
24
|
+
children: f(v[e])
|
|
25
|
+
})] }),
|
|
26
|
+
children: ({ px: t, py: n, plotBottom: r, activeIndex: o }) => {
|
|
27
|
+
let s = v.map((e, r) => ({
|
|
28
|
+
x: t(r),
|
|
29
|
+
y: n(e)
|
|
30
|
+
})), u = a(s), d = i(s, r), f = s[s.length - 1];
|
|
31
|
+
return /* @__PURE__ */ l("g", {
|
|
32
|
+
style: { color: e },
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ c("defs", { children: /* @__PURE__ */ l("linearGradient", {
|
|
35
|
+
id: h,
|
|
36
|
+
x1: "0",
|
|
37
|
+
y1: "0",
|
|
38
|
+
x2: "0",
|
|
39
|
+
y2: "1",
|
|
40
|
+
children: [/* @__PURE__ */ c("stop", {
|
|
41
|
+
offset: "0%",
|
|
42
|
+
stopColor: "currentColor",
|
|
43
|
+
stopOpacity: .34
|
|
44
|
+
}), /* @__PURE__ */ c("stop", {
|
|
45
|
+
offset: "100%",
|
|
46
|
+
stopColor: "currentColor",
|
|
47
|
+
stopOpacity: .02
|
|
48
|
+
})]
|
|
49
|
+
}) }),
|
|
50
|
+
/* @__PURE__ */ c("path", {
|
|
51
|
+
d,
|
|
52
|
+
fill: `url(#${h})`,
|
|
53
|
+
stroke: "none",
|
|
54
|
+
style: {
|
|
55
|
+
opacity: g || _ ? 1 : 0,
|
|
56
|
+
transition: _ ? void 0 : "opacity 700ms ease"
|
|
57
|
+
}
|
|
58
|
+
}),
|
|
59
|
+
/* @__PURE__ */ c("path", {
|
|
60
|
+
d: u,
|
|
61
|
+
fill: "none",
|
|
62
|
+
stroke: "currentColor",
|
|
63
|
+
strokeWidth: 2,
|
|
64
|
+
strokeLinecap: "round",
|
|
65
|
+
strokeLinejoin: "round",
|
|
66
|
+
vectorEffect: "non-scaling-stroke",
|
|
67
|
+
pathLength: 1,
|
|
68
|
+
style: {
|
|
69
|
+
strokeDasharray: 1,
|
|
70
|
+
strokeDashoffset: g || _ ? 0 : 1,
|
|
71
|
+
transition: _ ? void 0 : "stroke-dashoffset 900ms ease"
|
|
72
|
+
}
|
|
73
|
+
}),
|
|
74
|
+
/* @__PURE__ */ c("circle", {
|
|
75
|
+
cx: f.x,
|
|
76
|
+
cy: f.y,
|
|
77
|
+
r: 3.5,
|
|
78
|
+
fill: "currentColor"
|
|
79
|
+
}),
|
|
80
|
+
o === null ? null : /* @__PURE__ */ l("g", { children: [/* @__PURE__ */ c("circle", {
|
|
81
|
+
cx: t(o),
|
|
82
|
+
cy: n(v[o]),
|
|
83
|
+
r: 7,
|
|
84
|
+
fill: "currentColor",
|
|
85
|
+
opacity: .16
|
|
86
|
+
}), /* @__PURE__ */ c("circle", {
|
|
87
|
+
cx: t(o),
|
|
88
|
+
cy: n(v[o]),
|
|
89
|
+
r: 3.5,
|
|
90
|
+
fill: "currentColor",
|
|
91
|
+
stroke: "var(--color-bg-surface)",
|
|
92
|
+
strokeWidth: 1.5
|
|
93
|
+
})] })
|
|
94
|
+
]
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//#endregion
|
|
100
|
+
export { u as AreaChart };
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=AreaChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AreaChart.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/AreaChart.tsx"],"sourcesContent":["import { ACCENT } from './lib/palette';\nimport { CartesianFrame } from './lib/CartesianFrame';\nimport { buildAreaPath, buildLinePath } from './lib/geometry';\nimport { formatCompact } from './lib/format';\nimport { useMounted, usePrefersReducedMotion, useVizId } from './lib/hooks';\nimport type { LabeledValue } from './lib/types';\n\nexport interface AreaChartProps {\n series: LabeledValue[];\n /** Pixel height of the plot. */\n height?: number;\n /** Formats axis + tooltip values. Defaults to compact notation. */\n valueFormatter?: (value: number) => string;\n /** Accessible title; defaults to a generic description. */\n title?: string;\n className?: string;\n}\n\n/**\n * Gradient-fill area chart with x/y axes, faint grid and a pointer/keyboard\n * hover readout. Draws itself in on mount unless reduced-motion is requested.\n */\nexport function AreaChart({\n series,\n height = 200,\n valueFormatter = formatCompact,\n title,\n className,\n}: AreaChartProps) {\n const gradientId = useVizId('area-grad');\n const mounted = useMounted();\n const reduced = usePrefersReducedMotion();\n\n if (series.length === 0) {\n return null;\n }\n\n const values = series.map((s) => s.value);\n const labels = series.map((s) => s.label);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const span = max - min || Math.abs(max) || 1;\n const domain: [number, number] = [min - span * 0.12, max + span * 0.12];\n const chartTitle = title ?? `Area chart of ${series.length} points`;\n\n return (\n <CartesianFrame\n labels={labels}\n domain={domain}\n height={height}\n title={chartTitle}\n formatValue={valueFormatter}\n className={className}\n tooltip={(i) => (\n <span>\n <span className=\"text-text-secondary\">{labels[i]}: </span>\n <span className=\"font-semibold tabular-nums\">{valueFormatter(values[i])}</span>\n </span>\n )}\n >\n {({ px, py, plotBottom, activeIndex }) => {\n const points = values.map((v, i) => ({ x: px(i), y: py(v) }));\n const line = buildLinePath(points);\n const area = buildAreaPath(points, plotBottom);\n const last = points[points.length - 1];\n return (\n <g style={{ color: ACCENT }}>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor=\"currentColor\" stopOpacity={0.34} />\n <stop offset=\"100%\" stopColor=\"currentColor\" stopOpacity={0.02} />\n </linearGradient>\n </defs>\n <path\n d={area}\n fill={`url(#${gradientId})`}\n stroke=\"none\"\n style={{\n opacity: mounted || reduced ? 1 : 0,\n transition: reduced ? undefined : 'opacity 700ms ease',\n }}\n />\n <path\n d={line}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={2}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n vectorEffect=\"non-scaling-stroke\"\n pathLength={1}\n style={{\n strokeDasharray: 1,\n strokeDashoffset: mounted || reduced ? 0 : 1,\n transition: reduced ? undefined : 'stroke-dashoffset 900ms ease',\n }}\n />\n <circle cx={last.x} cy={last.y} r={3.5} fill=\"currentColor\" />\n {activeIndex !== null ? (\n <g>\n <circle\n cx={px(activeIndex)}\n cy={py(values[activeIndex])}\n r={7}\n fill=\"currentColor\"\n opacity={0.16}\n />\n <circle\n cx={px(activeIndex)}\n cy={py(values[activeIndex])}\n r={3.5}\n fill=\"currentColor\"\n stroke=\"var(--color-bg-surface)\"\n strokeWidth={1.5}\n />\n </g>\n ) : null}\n </g>\n );\n }}\n </CartesianFrame>\n );\n}\n"],"mappings":";;;;;;;AAsBA,SAAgB,EAAU,EACxB,WACA,YAAS,KACT,oBAAiB,GACjB,UACA,gBACiB;CACjB,IAAM,IAAa,EAAS,YAAY,EAClC,IAAU,GAAY,EACtB,IAAU,GAAyB;AAEzC,KAAI,EAAO,WAAW,EACpB,QAAO;CAGT,IAAM,IAAS,EAAO,KAAK,MAAM,EAAE,MAAM,EACnC,IAAS,EAAO,KAAK,MAAM,EAAE,MAAM,EACnC,IAAM,KAAK,IAAI,GAAG,EAAO,EACzB,IAAM,KAAK,IAAI,GAAG,EAAO,EACzB,IAAO,IAAM,KAAO,KAAK,IAAI,EAAI,IAAI;AAI3C,QACE,kBAAC,GAAD;EACU;EACA,QANqB,CAAC,IAAM,IAAO,KAAM,IAAM,IAAO,IAAK;EAO3D;EACR,OAPe,KAAS,iBAAiB,EAAO,OAAO;EAQvD,aAAa;EACF;EACX,UAAU,MACR,kBAAC,QAAD,EAAA,UAAA,CACE,kBAAC,QAAD;GAAM,WAAU;aAAhB,CAAuC,EAAO,IAAG,KAAS;MAC1D,kBAAC,QAAD;GAAM,WAAU;aAA8B,EAAe,EAAO,GAAG;GAAQ,CAAA,CAC1E,EAAA,CAAA;aAGP,EAAE,OAAI,OAAI,eAAY,qBAAkB;GACxC,IAAM,IAAS,EAAO,KAAK,GAAG,OAAO;IAAE,GAAG,EAAG,EAAE;IAAE,GAAG,EAAG,EAAE;IAAE,EAAE,EACvD,IAAO,EAAc,EAAO,EAC5B,IAAO,EAAc,GAAQ,EAAW,EACxC,IAAO,EAAO,EAAO,SAAS;AACpC,UACE,kBAAC,KAAD;IAAG,OAAO,EAAE,OAAO,GAAQ;cAA3B;KACE,kBAAC,QAAD,EAAA,UACE,kBAAC,kBAAD;MAAgB,IAAI;MAAY,IAAG;MAAI,IAAG;MAAI,IAAG;MAAI,IAAG;gBAAxD,CACE,kBAAC,QAAD;OAAM,QAAO;OAAK,WAAU;OAAe,aAAa;OAAQ,CAAA,EAChE,kBAAC,QAAD;OAAM,QAAO;OAAO,WAAU;OAAe,aAAa;OAAQ,CAAA,CACnD;SACZ,CAAA;KACP,kBAAC,QAAD;MACK;MACH,MAAM,QAAQ,EAAW;MACzB,QAAO;MACP,OAAO;OACL,SAAS,KAAW,IAAU,IAAI;OAClC,YAAY,IAAU,KAAA,IAAY;OACnC;MACD,CAAA;KACF,kBAAC,QAAD;MACE,GAAG;MACH,MAAK;MACL,QAAO;MACP,aAAa;MACb,eAAc;MACd,gBAAe;MACf,cAAa;MACb,YAAY;MACZ,OAAO;OACL,iBAAiB;OACjB,kBAAkB,KAAW,IAAU,IAAI;OAC3C,YAAY,IAAU,KAAA,IAAY;OACnC;MACD,CAAA;KACF,kBAAC,UAAD;MAAQ,IAAI,EAAK;MAAG,IAAI,EAAK;MAAG,GAAG;MAAK,MAAK;MAAiB,CAAA;KAC7D,MAAgB,OAkBb,OAjBF,kBAAC,KAAD,EAAA,UAAA,CACE,kBAAC,UAAD;MACE,IAAI,EAAG,EAAY;MACnB,IAAI,EAAG,EAAO,GAAa;MAC3B,GAAG;MACH,MAAK;MACL,SAAS;MACT,CAAA,EACF,kBAAC,UAAD;MACE,IAAI,EAAG,EAAY;MACnB,IAAI,EAAG,EAAO,GAAa;MAC3B,GAAG;MACH,MAAK;MACL,QAAO;MACP,aAAa;MACb,CAAA,CACA,EAAA,CAAA;KAEJ;;;EAGO,CAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import { VizAvatar as t } from "./lib/Avatar.js";
|
|
3
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
+
//#region src/kadaikodi/components/viz/AvatarStack.tsx
|
|
5
|
+
function i({ people: i, max: a = 5, size: o = 32, className: s }) {
|
|
6
|
+
if (i.length === 0) return null;
|
|
7
|
+
let c = i.slice(0, a), l = i.length - c.length, u = Math.round(o * .32);
|
|
8
|
+
return /* @__PURE__ */ r("div", {
|
|
9
|
+
className: e("flex items-center", s),
|
|
10
|
+
role: "img",
|
|
11
|
+
"aria-label": `${i.length} people: ${i.map((e) => e.name).join(", ")}`,
|
|
12
|
+
children: [c.map((e, r) => /* @__PURE__ */ n("span", {
|
|
13
|
+
style: { marginLeft: r === 0 ? 0 : -u },
|
|
14
|
+
children: /* @__PURE__ */ n(t, {
|
|
15
|
+
name: e.name,
|
|
16
|
+
src: e.avatarUrl,
|
|
17
|
+
size: o,
|
|
18
|
+
ring: !0
|
|
19
|
+
})
|
|
20
|
+
}, `${e.name}-${r}`)), l > 0 ? /* @__PURE__ */ r("span", {
|
|
21
|
+
className: "inline-flex items-center justify-center rounded-full border border-border-subtle bg-bg-elevated font-medium text-text-secondary ring-2 ring-[var(--color-bg-surface)]",
|
|
22
|
+
style: {
|
|
23
|
+
width: o,
|
|
24
|
+
height: o,
|
|
25
|
+
marginLeft: -u,
|
|
26
|
+
fontSize: Math.round(o * .34)
|
|
27
|
+
},
|
|
28
|
+
"aria-hidden": "true",
|
|
29
|
+
children: ["+", l]
|
|
30
|
+
}) : null]
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { i as AvatarStack };
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=AvatarStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvatarStack.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/AvatarStack.tsx"],"sourcesContent":["import { cn } from '../../utils/cn';\nimport { VizAvatar } from './lib/Avatar';\nimport type { Person } from './lib/types';\n\nexport interface AvatarStackProps {\n people: Person[];\n /** Maximum avatars shown before collapsing into a \"+N\" chip. */\n max?: number;\n /** Pixel diameter of each avatar. */\n size?: number;\n className?: string;\n}\n\n/** Overlapping avatars with a \"+N\" overflow chip. */\nexport function AvatarStack({ people, max = 5, size = 32, className }: AvatarStackProps) {\n if (people.length === 0) {\n return null;\n }\n const shown = people.slice(0, max);\n const overflow = people.length - shown.length;\n const overlap = Math.round(size * 0.32);\n\n return (\n <div\n className={cn('flex items-center', className)}\n role=\"img\"\n aria-label={`${people.length} people: ${people.map((p) => p.name).join(', ')}`}\n >\n {shown.map((person, i) => (\n <span key={`${person.name}-${i}`} style={{ marginLeft: i === 0 ? 0 : -overlap }}>\n <VizAvatar name={person.name} src={person.avatarUrl} size={size} ring />\n </span>\n ))}\n {overflow > 0 ? (\n <span\n className=\"inline-flex items-center justify-center rounded-full border border-border-subtle bg-bg-elevated font-medium text-text-secondary ring-2 ring-[var(--color-bg-surface)]\"\n style={{\n width: size,\n height: size,\n marginLeft: -overlap,\n fontSize: Math.round(size * 0.34),\n }}\n aria-hidden=\"true\"\n >\n +{overflow}\n </span>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;AAcA,SAAgB,EAAY,EAAE,WAAQ,SAAM,GAAG,UAAO,IAAI,gBAA+B;AACvF,KAAI,EAAO,WAAW,EACpB,QAAO;CAET,IAAM,IAAQ,EAAO,MAAM,GAAG,EAAI,EAC5B,IAAW,EAAO,SAAS,EAAM,QACjC,IAAU,KAAK,MAAM,IAAO,IAAK;AAEvC,QACE,kBAAC,OAAD;EACE,WAAW,EAAG,qBAAqB,EAAU;EAC7C,MAAK;EACL,cAAY,GAAG,EAAO,OAAO,WAAW,EAAO,KAAK,MAAM,EAAE,KAAK,CAAC,KAAK,KAAK;YAH9E,CAKG,EAAM,KAAK,GAAQ,MAClB,kBAAC,QAAD;GAAkC,OAAO,EAAE,YAAY,MAAM,IAAI,IAAI,CAAC,GAAS;aAC7E,kBAAC,GAAD;IAAW,MAAM,EAAO;IAAM,KAAK,EAAO;IAAiB;IAAM,MAAA;IAAO,CAAA;GACnE,EAFI,GAAG,EAAO,KAAK,GAAG,IAEtB,CACP,EACD,IAAW,IACV,kBAAC,QAAD;GACE,WAAU;GACV,OAAO;IACL,OAAO;IACP,QAAQ;IACR,YAAY,CAAC;IACb,UAAU,KAAK,MAAM,IAAO,IAAK;IAClC;GACD,eAAY;aARd,CASC,KACG,EACG;OACL,KACA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { chartPalette as e } from "./lib/palette.js";
|
|
2
|
+
import { useMounted as t, usePrefersReducedMotion as n } from "./lib/hooks.js";
|
|
3
|
+
import { ResponsiveSvg as r } from "./lib/ResponsiveSvg.js";
|
|
4
|
+
import { scaleLinear as i } from "./lib/geometry.js";
|
|
5
|
+
import { formatCompact as a } from "./lib/format.js";
|
|
6
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
7
|
+
//#region src/kadaikodi/components/viz/BarChart.tsx
|
|
8
|
+
var c = {
|
|
9
|
+
top: 20,
|
|
10
|
+
bottom: 26,
|
|
11
|
+
left: 8,
|
|
12
|
+
right: 8
|
|
13
|
+
};
|
|
14
|
+
function l({ series: l, height: u = 220, valueFormatter: d = a, colorful: f = !1, hideValues: p = !1, title: m, className: h }) {
|
|
15
|
+
let g = t(), _ = n();
|
|
16
|
+
if (l.length === 0) return null;
|
|
17
|
+
let v = l.map((e) => e.value), y = Math.max(...v, 0) || 1, b = e(l.length);
|
|
18
|
+
return /* @__PURE__ */ o(r, {
|
|
19
|
+
height: u,
|
|
20
|
+
title: m ?? `Bar chart of ${l.length} categories`,
|
|
21
|
+
className: h,
|
|
22
|
+
desc: l.map((e) => `${e.label}: ${d(e.value)}`).join(", "),
|
|
23
|
+
children: ({ width: e }) => {
|
|
24
|
+
let t = c.left, n = e - c.right, r = c.top, a = u - c.bottom, m = a - r, h = (n - t) / l.length, v = Math.min(56, h * .62);
|
|
25
|
+
return /* @__PURE__ */ s("g", { children: [/* @__PURE__ */ o("line", {
|
|
26
|
+
x1: t,
|
|
27
|
+
x2: n,
|
|
28
|
+
y1: a,
|
|
29
|
+
y2: a,
|
|
30
|
+
stroke: "var(--color-chart-axis)",
|
|
31
|
+
strokeWidth: 1,
|
|
32
|
+
vectorEffect: "non-scaling-stroke",
|
|
33
|
+
opacity: .5
|
|
34
|
+
}), l.map((e, n) => {
|
|
35
|
+
let r = i(e.value, 0, y, 0, m), c = t + h * n + h / 2, l = c - v / 2, x = a - r, S = e.color ?? (f ? b[n] : "var(--color-accent-primary)");
|
|
36
|
+
return /* @__PURE__ */ s("g", { children: [
|
|
37
|
+
/* @__PURE__ */ o("title", { children: `${e.label}: ${d(e.value)}` }),
|
|
38
|
+
/* @__PURE__ */ o("rect", {
|
|
39
|
+
x: l,
|
|
40
|
+
y: x,
|
|
41
|
+
width: v,
|
|
42
|
+
height: Math.max(0, r),
|
|
43
|
+
rx: 4,
|
|
44
|
+
fill: S,
|
|
45
|
+
style: {
|
|
46
|
+
transformBox: "fill-box",
|
|
47
|
+
transformOrigin: "bottom",
|
|
48
|
+
transform: g || _ ? "scaleY(1)" : "scaleY(0)",
|
|
49
|
+
transition: _ ? void 0 : "transform 620ms cubic-bezier(0.22,1,0.36,1)",
|
|
50
|
+
transitionDelay: _ ? void 0 : `${n * 45}ms`
|
|
51
|
+
}
|
|
52
|
+
}),
|
|
53
|
+
p ? null : /* @__PURE__ */ o("text", {
|
|
54
|
+
x: c,
|
|
55
|
+
y: x - 6,
|
|
56
|
+
textAnchor: "middle",
|
|
57
|
+
fontSize: 10,
|
|
58
|
+
fontWeight: 600,
|
|
59
|
+
fill: "var(--color-text-secondary)",
|
|
60
|
+
style: {
|
|
61
|
+
opacity: g || _ ? 1 : 0,
|
|
62
|
+
transition: _ ? void 0 : "opacity 400ms ease",
|
|
63
|
+
transitionDelay: _ ? void 0 : `${n * 45 + 220}ms`
|
|
64
|
+
},
|
|
65
|
+
children: d(e.value)
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ o("text", {
|
|
68
|
+
x: c,
|
|
69
|
+
y: u - 8,
|
|
70
|
+
textAnchor: "middle",
|
|
71
|
+
fontSize: 10,
|
|
72
|
+
fill: "var(--color-chart-axis)",
|
|
73
|
+
children: e.label
|
|
74
|
+
})
|
|
75
|
+
] }, `${e.label}-${n}`);
|
|
76
|
+
})] });
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
//#endregion
|
|
81
|
+
export { l as BarChart };
|
|
82
|
+
|
|
83
|
+
//# sourceMappingURL=BarChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BarChart.js","names":[],"sources":["../../../../src/kadaikodi/components/viz/BarChart.tsx"],"sourcesContent":["import { ACCENT, chartPalette } from './lib/palette';\nimport { ResponsiveSvg } from './lib/ResponsiveSvg';\nimport { scaleLinear } from './lib/geometry';\nimport { formatCompact } from './lib/format';\nimport { useMounted, usePrefersReducedMotion } from './lib/hooks';\nimport type { Segment } from './lib/types';\n\nexport interface BarChartProps {\n /** Bars to render. A `color` on a datum overrides the palette. */\n series: Segment[];\n height?: number;\n valueFormatter?: (value: number) => string;\n /** Color each bar from the categorical palette instead of a single accent. */\n colorful?: boolean;\n /** Hide the value label above each bar. */\n hideValues?: boolean;\n title?: string;\n className?: string;\n}\n\nconst PAD = { top: 20, bottom: 26, left: 8, right: 8 };\n\n/** Vertical bar chart with value labels and an animated grow-in. */\nexport function BarChart({\n series,\n height = 220,\n valueFormatter = formatCompact,\n colorful = false,\n hideValues = false,\n title,\n className,\n}: BarChartProps) {\n const mounted = useMounted();\n const reduced = usePrefersReducedMotion();\n\n if (series.length === 0) {\n return null;\n }\n\n const values = series.map((s) => s.value);\n const max = Math.max(...values, 0) || 1;\n const palette = chartPalette(series.length);\n const chartTitle = title ?? `Bar chart of ${series.length} categories`;\n\n return (\n <ResponsiveSvg\n height={height}\n title={chartTitle}\n className={className}\n desc={series.map((s) => `${s.label}: ${valueFormatter(s.value)}`).join(', ')}\n >\n {({ width }) => {\n const plotLeft = PAD.left;\n const plotRight = width - PAD.right;\n const plotTop = PAD.top;\n const plotBottom = height - PAD.bottom;\n const plotH = plotBottom - plotTop;\n const slot = (plotRight - plotLeft) / series.length;\n const barWidth = Math.min(56, slot * 0.62);\n return (\n <g>\n <line\n x1={plotLeft}\n x2={plotRight}\n y1={plotBottom}\n y2={plotBottom}\n stroke=\"var(--color-chart-axis)\"\n strokeWidth={1}\n vectorEffect=\"non-scaling-stroke\"\n opacity={0.5}\n />\n {series.map((datum, i) => {\n const barH = scaleLinear(datum.value, 0, max, 0, plotH);\n const cx = plotLeft + slot * i + slot / 2;\n const x = cx - barWidth / 2;\n const y = plotBottom - barH;\n const color = datum.color ?? (colorful ? palette[i] : ACCENT);\n return (\n <g key={`${datum.label}-${i}`}>\n <title>{`${datum.label}: ${valueFormatter(datum.value)}`}</title>\n <rect\n x={x}\n y={y}\n width={barWidth}\n height={Math.max(0, barH)}\n rx={4}\n fill={color}\n style={{\n transformBox: 'fill-box',\n transformOrigin: 'bottom',\n transform: mounted || reduced ? 'scaleY(1)' : 'scaleY(0)',\n transition: reduced\n ? undefined\n : 'transform 620ms cubic-bezier(0.22,1,0.36,1)',\n transitionDelay: reduced ? undefined : `${i * 45}ms`,\n }}\n />\n {hideValues ? null : (\n <text\n x={cx}\n y={y - 6}\n textAnchor=\"middle\"\n fontSize={10}\n fontWeight={600}\n fill=\"var(--color-text-secondary)\"\n style={{\n opacity: mounted || reduced ? 1 : 0,\n transition: reduced ? undefined : 'opacity 400ms ease',\n transitionDelay: reduced ? undefined : `${i * 45 + 220}ms`,\n }}\n >\n {valueFormatter(datum.value)}\n </text>\n )}\n <text\n x={cx}\n y={height - 8}\n textAnchor=\"middle\"\n fontSize={10}\n fill=\"var(--color-chart-axis)\"\n >\n {datum.label}\n </text>\n </g>\n );\n })}\n </g>\n );\n }}\n </ResponsiveSvg>\n );\n}\n"],"mappings":";;;;;;;AAoBA,IAAM,IAAM;CAAE,KAAK;CAAI,QAAQ;CAAI,MAAM;CAAG,OAAO;CAAG;AAGtD,SAAgB,EAAS,EACvB,WACA,YAAS,KACT,oBAAiB,GACjB,cAAW,IACX,gBAAa,IACb,UACA,gBACgB;CAChB,IAAM,IAAU,GAAY,EACtB,IAAU,GAAyB;AAEzC,KAAI,EAAO,WAAW,EACpB,QAAO;CAGT,IAAM,IAAS,EAAO,KAAK,MAAM,EAAE,MAAM,EACnC,IAAM,KAAK,IAAI,GAAG,GAAQ,EAAE,IAAI,GAChC,IAAU,EAAa,EAAO,OAAO;AAG3C,QACE,kBAAC,GAAD;EACU;EACR,OALe,KAAS,gBAAgB,EAAO,OAAO;EAM3C;EACX,MAAM,EAAO,KAAK,MAAM,GAAG,EAAE,MAAM,IAAI,EAAe,EAAE,MAAM,GAAG,CAAC,KAAK,KAAK;aAE1E,EAAE,eAAY;GACd,IAAM,IAAW,EAAI,MACf,IAAY,IAAQ,EAAI,OACxB,IAAU,EAAI,KACd,IAAa,IAAS,EAAI,QAC1B,IAAQ,IAAa,GACrB,KAAQ,IAAY,KAAY,EAAO,QACvC,IAAW,KAAK,IAAI,IAAI,IAAO,IAAK;AAC1C,UACE,kBAAC,KAAD,EAAA,UAAA,CACE,kBAAC,QAAD;IACE,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,QAAO;IACP,aAAa;IACb,cAAa;IACb,SAAS;IACT,CAAA,EACD,EAAO,KAAK,GAAO,MAAM;IACxB,IAAM,IAAO,EAAY,EAAM,OAAO,GAAG,GAAK,GAAG,EAAM,EACjD,IAAK,IAAW,IAAO,IAAI,IAAO,GAClC,IAAI,IAAK,IAAW,GACpB,IAAI,IAAa,GACjB,IAAQ,EAAM,UAAU,IAAW,EAAQ,KAAA;AACjD,WACE,kBAAC,KAAD,EAAA,UAAA;KACE,kBAAC,SAAD,EAAA,UAAQ,GAAG,EAAM,MAAM,IAAI,EAAe,EAAM,MAAM,IAAW,CAAA;KACjE,kBAAC,QAAD;MACK;MACA;MACH,OAAO;MACP,QAAQ,KAAK,IAAI,GAAG,EAAK;MACzB,IAAI;MACJ,MAAM;MACN,OAAO;OACL,cAAc;OACd,iBAAiB;OACjB,WAAW,KAAW,IAAU,cAAc;OAC9C,YAAY,IACR,KAAA,IACA;OACJ,iBAAiB,IAAU,KAAA,IAAY,GAAG,IAAI,GAAG;OAClD;MACD,CAAA;KACD,IAAa,OACZ,kBAAC,QAAD;MACE,GAAG;MACH,GAAG,IAAI;MACP,YAAW;MACX,UAAU;MACV,YAAY;MACZ,MAAK;MACL,OAAO;OACL,SAAS,KAAW,IAAU,IAAI;OAClC,YAAY,IAAU,KAAA,IAAY;OAClC,iBAAiB,IAAU,KAAA,IAAY,GAAG,IAAI,KAAK,IAAI;OACxD;gBAEA,EAAe,EAAM,MAAM;MACvB,CAAA;KAET,kBAAC,QAAD;MACE,GAAG;MACH,GAAG,IAAS;MACZ,YAAW;MACX,UAAU;MACV,MAAK;gBAEJ,EAAM;MACF,CAAA;KACL,EAAA,EA7CI,GAAG,EAAM,MAAM,GAAG,IA6CtB;KAEN,CACA,EAAA,CAAA;;EAGM,CAAA"}
|