@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
@@ -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 }))), k = r(() => import("./pages/worker/WorkerOrdersPage.js").then((e) => ({ default: e.WorkerOrdersPage }))), re = r(() => import("./pages/worker/WorkerSchedulePage.js").then((e) => ({ default: e.WorkerSchedulePage }))), A = r(() => import("./pages/worker/WorkerProfilePage.js").then((e) => ({ default: e.WorkerProfilePage }))), j = r(() => import("./pages/worker/TaskDetailsPage.js").then((e) => ({ default: e.TaskDetailsPage }))), M = r(() => import("./pages/investor/InvestorDashboard.js").then((e) => ({ default: e.InvestorDashboard }))), N = r(() => import("./pages/investor/InvestorPortfolioPage.js").then((e) => ({ default: e.InvestorPortfolioPage }))), P = r(() => import("./pages/investor/InvestmentOpportunitiesPage.js").then((e) => ({ default: e.InvestmentOpportunitiesPage }))), F = r(() => import("./pages/investor/InvestmentDetailsPage.js").then((e) => ({ default: e.InvestmentDetailsPage }))), I = r(() => import("./pages/investor/InvestorInvestmentsPage.js").then((e) => ({ default: e.InvestorInvestmentsPage }))), L = r(() => import("./pages/investor/InvestorAnalyticsPage.js").then((e) => ({ default: e.InvestorAnalyticsPage }))), R = r(() => import("./pages/investor/InvestorProfilePage.js").then((e) => ({ default: e.InvestorProfilePage }))), z = r(() => import("./pages/admin/AdminDashboard.js").then((e) => ({ default: e.AdminDashboard }))), B = r(() => import("./pages/admin/UserManagementPage.js").then((e) => ({ default: e.UserManagementPage }))), V = r(() => import("./pages/admin/CartManagementPage.js").then((e) => ({ default: e.CartManagementPage }))), H = r(() => import("./pages/admin/AdminAnalyticsPage.js").then((e) => ({ default: e.AdminAnalyticsPage }))), U = r(() => import("./pages/admin/AdminOrdersPage.js").then((e) => ({ default: e.AdminOrdersPage }))), W = r(() => import("./pages/admin/AdminProfilePage.js").then((e) => ({ default: e.AdminProfilePage }))), G = r(() => import("./pages/admin/AdminSettingsPage.js").then((e) => ({ default: e.AdminSettingsPage }))), K = r(() => import("./pages/admin/AdminFinancialPage.js").then((e) => ({ default: e.AdminFinancialPage }))), q = r(() => import("./pages/common/NotificationCenterPage.js").then((e) => ({ default: e.NotificationCenterPage }))), J = r(() => import("./pages/common/SettingsPage.js").then((e) => ({ default: e.SettingsPage }))), Y = r(() => import("./pages/common/HelpSupportPage.js").then((e) => ({ default: e.HelpSupportPage }))), X = () => /* @__PURE__ */ o("div", {
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(X, {}),
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: "worker/dashboard",
106
+ path: "cart-owner/list-investment",
107
107
  element: /* @__PURE__ */ o(O, {})
108
108
  }),
109
109
  /* @__PURE__ */ o(i, {
110
- path: "worker/orders",
110
+ path: "cart-owner/onboarding",
111
111
  element: /* @__PURE__ */ o(k, {})
112
112
  }),
113
113
  /* @__PURE__ */ o(i, {
114
- path: "worker/schedule",
114
+ path: "worker/dashboard",
115
115
  element: /* @__PURE__ */ o(re, {})
116
116
  }),
117
117
  /* @__PURE__ */ o(i, {
118
- path: "worker/profile",
118
+ path: "worker/orders",
119
119
  element: /* @__PURE__ */ o(A, {})
120
120
  }),
121
121
  /* @__PURE__ */ o(i, {
122
- path: "worker/task/:taskId",
122
+ path: "worker/schedule",
123
123
  element: /* @__PURE__ */ o(j, {})
124
124
  }),
125
125
  /* @__PURE__ */ o(i, {
126
- path: "investor/dashboard",
126
+ path: "worker/profile",
127
127
  element: /* @__PURE__ */ o(M, {})
128
128
  }),
129
129
  /* @__PURE__ */ o(i, {
130
- path: "investor/portfolio",
130
+ path: "worker/task/:taskId",
131
131
  element: /* @__PURE__ */ o(N, {})
132
132
  }),
133
133
  /* @__PURE__ */ o(i, {
134
- path: "investor/opportunities",
134
+ path: "investor/dashboard",
135
135
  element: /* @__PURE__ */ o(P, {})
136
136
  }),
137
137
  /* @__PURE__ */ o(i, {
138
- path: "investor/opportunity/:id",
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(F, {})
151
+ element: /* @__PURE__ */ o(L, {})
144
152
  }),
145
153
  /* @__PURE__ */ o(i, {
146
154
  path: "investor/investments",
147
- element: /* @__PURE__ */ o(I, {})
155
+ element: /* @__PURE__ */ o(R, {})
148
156
  }),
149
157
  /* @__PURE__ */ o(i, {
150
158
  path: "investor/analytics",
151
- element: /* @__PURE__ */ o(L, {})
159
+ element: /* @__PURE__ */ o(z, {})
152
160
  }),
153
161
  /* @__PURE__ */ o(i, {
154
162
  path: "investor/profile",
155
- element: /* @__PURE__ */ o(R, {})
163
+ element: /* @__PURE__ */ o(B, {})
156
164
  }),
157
165
  /* @__PURE__ */ o(i, {
158
166
  path: "admin/dashboard",
159
- element: /* @__PURE__ */ o(z, {})
167
+ element: /* @__PURE__ */ o(V, {})
160
168
  }),
161
169
  /* @__PURE__ */ o(i, {
162
170
  path: "admin/users",
163
- element: /* @__PURE__ */ o(B, {})
171
+ element: /* @__PURE__ */ o(H, {})
164
172
  }),
165
173
  /* @__PURE__ */ o(i, {
166
174
  path: "admin/carts",
167
- element: /* @__PURE__ */ o(V, {})
175
+ element: /* @__PURE__ */ o(U, {})
168
176
  }),
169
177
  /* @__PURE__ */ o(i, {
170
178
  path: "admin/analytics",
171
- element: /* @__PURE__ */ o(H, {})
179
+ element: /* @__PURE__ */ o(W, {})
172
180
  }),
173
181
  /* @__PURE__ */ o(i, {
174
182
  path: "admin/orders",
175
- element: /* @__PURE__ */ o(U, {})
183
+ element: /* @__PURE__ */ o(G, {})
176
184
  }),
177
185
  /* @__PURE__ */ o(i, {
178
186
  path: "admin/profile",
179
- element: /* @__PURE__ */ o(W, {})
187
+ element: /* @__PURE__ */ o(K, {})
180
188
  }),
181
189
  /* @__PURE__ */ o(i, {
182
190
  path: "admin/settings",
183
- element: /* @__PURE__ */ o(G, {})
191
+ element: /* @__PURE__ */ o(q, {})
184
192
  }),
185
193
  /* @__PURE__ */ o(i, {
186
194
  path: "admin/financial",
187
- element: /* @__PURE__ */ o(K, {})
195
+ element: /* @__PURE__ */ o(J, {})
188
196
  }),
189
197
  /* @__PURE__ */ o(i, {
190
198
  path: "notifications",
191
- element: /* @__PURE__ */ o(q, {})
199
+ element: /* @__PURE__ */ o(Y, {})
192
200
  }),
193
201
  /* @__PURE__ */ o(i, {
194
202
  path: "settings",
195
- element: /* @__PURE__ */ o(J, {})
203
+ element: /* @__PURE__ */ o(X, {})
196
204
  }),
197
205
  /* @__PURE__ */ o(i, {
198
206
  path: "help",
199
- element: /* @__PURE__ */ o(Y, {})
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"}
@@ -0,0 +1,4 @@
1
+ import "./lib/palette.js";
2
+ import "lucide-react";
3
+ import "react/jsx-runtime";
4
+ import "@burdenoff/fe-libs/ui";