@burdenoff/microfe-kadaikodi 2026.802.1 → 2026.830.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/kadaikodi/KadaikodiRoot.d.ts.map +1 -1
  2. package/dist/kadaikodi/KadaikodiRoot.js +69 -72
  3. package/dist/kadaikodi/KadaikodiRoot.js.map +1 -1
  4. package/dist/kadaikodi/components/InvestmentCard.d.ts.map +1 -1
  5. package/dist/kadaikodi/components/InvestmentCard.js +58 -54
  6. package/dist/kadaikodi/components/InvestmentCard.js.map +1 -1
  7. package/dist/kadaikodi/components/OrderCard.d.ts.map +1 -1
  8. package/dist/kadaikodi/components/StatusBadge.d.ts.map +1 -1
  9. package/dist/kadaikodi/components/StatusBadge.js +25 -14
  10. package/dist/kadaikodi/components/StatusBadge.js.map +1 -1
  11. package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts +24 -0
  12. package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts.map +1 -1
  13. package/dist/kadaikodi/hooks/useKadaikodiApi.js +177 -132
  14. package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
  15. package/dist/kadaikodi/pages/HomePage.d.ts.map +1 -1
  16. package/dist/kadaikodi/pages/HomePage.js +284 -282
  17. package/dist/kadaikodi/pages/HomePage.js.map +1 -1
  18. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts +7 -2
  19. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts.map +1 -1
  20. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +319 -228
  21. package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
  22. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +1 -1
  23. package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
  24. package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts +10 -4
  25. package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts.map +1 -1
  26. package/dist/kadaikodi/pages/admin/CartManagementPage.js +320 -279
  27. package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
  28. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.d.ts.map +1 -1
  29. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +365 -292
  30. package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -1
  31. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts +7 -2
  32. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts.map +1 -1
  33. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +300 -158
  34. package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
  35. package/dist/kadaikodi/pages/common/SettingsPage.js +286 -286
  36. package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
  37. package/dist/kadaikodi/pages/customer/CartDetailPage.d.ts.map +1 -1
  38. package/dist/kadaikodi/pages/customer/CartDetailPage.js +3 -3
  39. package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
  40. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts +13 -3
  41. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts.map +1 -1
  42. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +270 -220
  43. package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
  44. package/dist/kadaikodi/pages/customer/CustomerDashboard.js +97 -97
  45. package/dist/kadaikodi/pages/customer/OrderTrackingPage.d.ts.map +1 -1
  46. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +1 -1
  47. package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
  48. package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts +5 -3
  49. package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts.map +1 -1
  50. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +286 -199
  51. package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
  52. package/dist/kadaikodi/types/index.d.ts +46 -2
  53. package/dist/kadaikodi/types/index.d.ts.map +1 -1
  54. package/dist/shared/hooks/useTr.d.ts +2 -0
  55. package/dist/shared/hooks/useTr.d.ts.map +1 -0
  56. package/dist/shared/hooks/useTr.js +14 -0
  57. package/dist/shared/hooks/useTr.js.map +1 -0
  58. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"KadaikodiRoot.d.ts","sourceRoot":"","sources":["../../src/kadaikodi/KadaikodiRoot.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAyBhC,OAAO,KAAK,EAAE,kBAAkB,EAAW,MAAM,SAAS,CAAC;AAY3D,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAqMhD,CAAC"}
1
+ {"version":3,"file":"KadaikodiRoot.d.ts","sourceRoot":"","sources":["../../src/kadaikodi/KadaikodiRoot.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAyBhC,OAAO,KAAK,EAAE,kBAAkB,EAAW,MAAM,SAAS,CAAC;AAY3D,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CA8LhD,CAAC"}
@@ -1,177 +1,174 @@
1
1
  import { KadaikodiProvider as e } from "./context/KadaikodiContext.js";
2
- import { KadaikodiRoutes as t } from "./KadaikodiRoutes.js";
3
- import { useCallback as n, useEffect as r } from "react";
2
+ import { useTr as t } from "../shared/hooks/useTr.js";
3
+ import { KadaikodiRoutes as n } from "./KadaikodiRoutes.js";
4
+ import { useEffect as r } from "react";
4
5
  import { QueryClient as i, QueryClientProvider as a } from "@tanstack/react-query";
5
- import { useI18n as o } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
6
- import { BarChart3 as s, ClipboardList as c, FileText as l, Heart as u, Home as d, LineChart as f, Package as p, PieChart as m, Search as h, Settings as g, ShoppingBag as _, ShoppingCart as v, Store as y, TrendingUp as b, Users as x, Wallet as S } from "lucide-react";
7
- import { jsx as C } from "react/jsx-runtime";
8
- import { FeatureFlagProvider as w } from "@burdenoff/fe-libs/shared/feature-flags";
6
+ import { BarChart3 as o, ClipboardList as s, FileText as c, Heart as l, Home as u, LineChart as d, Package as f, PieChart as p, Search as m, Settings as h, ShoppingBag as g, ShoppingCart as _, Store as v, TrendingUp as y, Users as b, Wallet as x } from "lucide-react";
7
+ import { jsx as S } from "react/jsx-runtime";
8
+ import { FeatureFlagProvider as C } from "@burdenoff/fe-libs/shared/feature-flags";
9
9
  //#region src/kadaikodi/KadaikodiRoot.tsx
10
- var T = new i({ defaultOptions: { queries: {
10
+ var w = new i({ defaultOptions: { queries: {
11
11
  staleTime: 300 * 1e3,
12
12
  retry: 1
13
- } } }), E = (i) => {
14
- let { registerNavItems: E, registerFooterItems: D, basePath: O = "/" } = i, { t: k } = o(), A = n((e, t) => {
15
- let n = k(e);
16
- return n === e ? t : n;
17
- }, [k]), j = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
13
+ } } }), T = (i) => {
14
+ let { registerNavItems: T, registerFooterItems: E, basePath: D = "/" } = i, O = t(), k = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
18
15
  return r(() => {
19
- if (E) return E([
16
+ if (T) return T([
20
17
  {
21
18
  id: "kadaikodi-home",
22
- label: A("kadaikodi.nav.home", "Home"),
23
- path: j(O, ""),
24
- icon: /* @__PURE__ */ C(d, { size: 20 }),
19
+ label: O("kadaikodi.nav.home", "Home"),
20
+ path: k(D, ""),
21
+ icon: /* @__PURE__ */ S(u, { size: 20 }),
25
22
  order: 1,
26
23
  group: "main"
27
24
  },
28
25
  {
29
26
  id: "kadaikodi-discover",
30
- label: A("kadaikodi.nav.discover", "Discover"),
31
- path: j(O, "customer/discover"),
32
- icon: /* @__PURE__ */ C(h, { size: 20 }),
27
+ label: O("kadaikodi.nav.discover", "Discover"),
28
+ path: k(D, "customer/discover"),
29
+ icon: /* @__PURE__ */ S(m, { size: 20 }),
33
30
  order: 10,
34
31
  group: "customer"
35
32
  },
36
33
  {
37
34
  id: "kadaikodi-orders",
38
- label: A("kadaikodi.nav.myOrders", "My Orders"),
39
- path: j(O, "customer/orders"),
40
- icon: /* @__PURE__ */ C(_, { size: 20 }),
35
+ label: O("kadaikodi.nav.myOrders", "My Orders"),
36
+ path: k(D, "customer/orders"),
37
+ icon: /* @__PURE__ */ S(g, { size: 20 }),
41
38
  order: 11,
42
39
  group: "customer"
43
40
  },
44
41
  {
45
42
  id: "kadaikodi-favorites",
46
- label: A("kadaikodi.nav.favorites", "Favorites"),
47
- path: j(O, "customer/favorites"),
48
- icon: /* @__PURE__ */ C(u, { size: 20 }),
43
+ label: O("kadaikodi.nav.favorites", "Favorites"),
44
+ path: k(D, "customer/favorites"),
45
+ icon: /* @__PURE__ */ S(l, { size: 20 }),
49
46
  order: 12,
50
47
  group: "customer"
51
48
  },
52
49
  {
53
50
  id: "kadaikodi-my-cart",
54
- label: A("kadaikodi.nav.myCart", "My Cart"),
55
- path: j(O, "cart-owner/dashboard"),
56
- icon: /* @__PURE__ */ C(y, { size: 20 }),
51
+ label: O("kadaikodi.nav.myCart", "My Cart"),
52
+ path: k(D, "cart-owner/dashboard"),
53
+ icon: /* @__PURE__ */ S(v, { size: 20 }),
57
54
  order: 20,
58
55
  group: "cart-owner"
59
56
  },
60
57
  {
61
58
  id: "kadaikodi-inventory",
62
- label: A("kadaikodi.nav.inventory", "Inventory"),
63
- path: j(O, "cart-owner/inventory"),
64
- icon: /* @__PURE__ */ C(p, { size: 20 }),
59
+ label: O("kadaikodi.nav.inventory", "Inventory"),
60
+ path: k(D, "cart-owner/inventory"),
61
+ icon: /* @__PURE__ */ S(f, { size: 20 }),
65
62
  order: 21,
66
63
  group: "cart-owner"
67
64
  },
68
65
  {
69
66
  id: "kadaikodi-cart-orders",
70
- label: A("kadaikodi.nav.cartOrders", "Cart Orders"),
71
- path: j(O, "cart-owner/orders"),
72
- icon: /* @__PURE__ */ C(v, { size: 20 }),
67
+ label: O("kadaikodi.nav.cartOrders", "Cart Orders"),
68
+ path: k(D, "cart-owner/orders"),
69
+ icon: /* @__PURE__ */ S(_, { size: 20 }),
73
70
  order: 22,
74
71
  group: "cart-owner"
75
72
  },
76
73
  {
77
74
  id: "kadaikodi-tasks",
78
- label: A("kadaikodi.nav.myTasks", "My Tasks"),
79
- path: j(O, "worker/dashboard"),
80
- icon: /* @__PURE__ */ C(c, { size: 20 }),
75
+ label: O("kadaikodi.nav.myTasks", "My Tasks"),
76
+ path: k(D, "worker/dashboard"),
77
+ icon: /* @__PURE__ */ S(s, { size: 20 }),
81
78
  order: 30,
82
79
  group: "worker"
83
80
  },
84
81
  {
85
82
  id: "kadaikodi-investments",
86
- label: A("kadaikodi.nav.investments", "Investments"),
87
- path: j(O, "investor/dashboard"),
88
- icon: /* @__PURE__ */ C(b, { size: 20 }),
83
+ label: O("kadaikodi.nav.investments", "Investments"),
84
+ path: k(D, "investor/dashboard"),
85
+ icon: /* @__PURE__ */ S(y, { size: 20 }),
89
86
  order: 40,
90
87
  group: "investor"
91
88
  },
92
89
  {
93
90
  id: "kadaikodi-portfolio",
94
- label: A("kadaikodi.nav.portfolio", "Portfolio"),
95
- path: j(O, "investor/portfolio"),
96
- icon: /* @__PURE__ */ C(m, { size: 20 }),
91
+ label: O("kadaikodi.nav.portfolio", "Portfolio"),
92
+ path: k(D, "investor/portfolio"),
93
+ icon: /* @__PURE__ */ S(p, { size: 20 }),
97
94
  order: 41,
98
95
  group: "investor"
99
96
  },
100
97
  {
101
98
  id: "kadaikodi-opportunities",
102
- label: A("kadaikodi.nav.opportunities", "Opportunities"),
103
- path: j(O, "investor/opportunities"),
104
- icon: /* @__PURE__ */ C(f, { size: 20 }),
99
+ label: O("kadaikodi.nav.opportunities", "Opportunities"),
100
+ path: k(D, "investor/opportunities"),
101
+ icon: /* @__PURE__ */ S(d, { size: 20 }),
105
102
  order: 42,
106
103
  group: "investor"
107
104
  },
108
105
  {
109
106
  id: "kadaikodi-admin",
110
- label: A("kadaikodi.nav.adminPanel", "Admin Panel"),
111
- path: j(O, "admin/dashboard"),
112
- icon: /* @__PURE__ */ C(g, { size: 20 }),
107
+ label: O("kadaikodi.nav.adminPanel", "Admin Panel"),
108
+ path: k(D, "admin/dashboard"),
109
+ icon: /* @__PURE__ */ S(h, { size: 20 }),
113
110
  order: 50,
114
111
  group: "admin"
115
112
  },
116
113
  {
117
114
  id: "kadaikodi-users",
118
- label: A("kadaikodi.nav.users", "Users"),
119
- path: j(O, "admin/users"),
120
- icon: /* @__PURE__ */ C(x, { size: 20 }),
115
+ label: O("kadaikodi.nav.users", "Users"),
116
+ path: k(D, "admin/users"),
117
+ icon: /* @__PURE__ */ S(b, { size: 20 }),
121
118
  order: 51,
122
119
  group: "admin"
123
120
  },
124
121
  {
125
122
  id: "kadaikodi-analytics",
126
- label: A("kadaikodi.nav.analytics", "Analytics"),
127
- path: j(O, "admin/analytics"),
128
- icon: /* @__PURE__ */ C(s, { size: 20 }),
123
+ label: O("kadaikodi.nav.analytics", "Analytics"),
124
+ path: k(D, "admin/analytics"),
125
+ icon: /* @__PURE__ */ S(o, { size: 20 }),
129
126
  order: 52,
130
127
  group: "admin"
131
128
  },
132
129
  {
133
130
  id: "kadaikodi-financial",
134
- label: A("kadaikodi.nav.financial", "Financial"),
135
- path: j(O, "admin/financial"),
136
- icon: /* @__PURE__ */ C(S, { size: 20 }),
131
+ label: O("kadaikodi.nav.financial", "Financial"),
132
+ path: k(D, "admin/financial"),
133
+ icon: /* @__PURE__ */ S(x, { size: 20 }),
137
134
  order: 53,
138
135
  group: "admin"
139
136
  },
140
137
  {
141
138
  id: "kadaikodi-settings",
142
- label: A("kadaikodi.nav.settings", "Settings"),
143
- path: j(O, "settings"),
144
- icon: /* @__PURE__ */ C(l, { size: 20 }),
139
+ label: O("kadaikodi.nav.settings", "Settings"),
140
+ path: k(D, "settings"),
141
+ icon: /* @__PURE__ */ S(c, { size: 20 }),
145
142
  order: 100,
146
143
  group: "system"
147
144
  }
148
145
  ]);
149
146
  }, [
150
- E,
151
- O,
152
- A
147
+ T,
148
+ D,
149
+ O
153
150
  ]), r(() => {
154
- if (D) return D([{
151
+ if (E) return E([{
155
152
  id: "kadaikodi-status",
156
- label: A("kadaikodi.footer.ready", "Kadaikodi Ready"),
153
+ label: O("kadaikodi.footer.ready", "Kadaikodi Ready"),
157
154
  type: "status",
158
155
  order: 10,
159
156
  section: "left"
160
157
  }]);
161
- }, [D, A]), /* @__PURE__ */ C(a, {
162
- client: T,
163
- children: /* @__PURE__ */ C(w, {
158
+ }, [E, O]), /* @__PURE__ */ S(a, {
159
+ client: w,
160
+ children: /* @__PURE__ */ S(C, {
164
161
  workspaceId: null,
165
162
  gateway: "global",
166
163
  defaultEnabled: !0,
167
- children: /* @__PURE__ */ C(e, {
164
+ children: /* @__PURE__ */ S(e, {
168
165
  ...i,
169
- children: /* @__PURE__ */ C(t, {})
166
+ children: /* @__PURE__ */ S(n, {})
170
167
  })
171
168
  })
172
169
  });
173
170
  };
174
171
  //#endregion
175
- export { E as KadaikodiRoot };
172
+ export { T as KadaikodiRoot };
176
173
 
177
174
  //# sourceMappingURL=KadaikodiRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"KadaikodiRoot.js","names":[],"sources":["../../src/kadaikodi/KadaikodiRoot.tsx"],"sourcesContent":["/**\n * Kadaikodi Root Component\n * @module kadaikodi\n */\n\nimport type { FC } from 'react';\nimport { useCallback, useEffect } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n Home,\n Search,\n ShoppingBag,\n Heart,\n Store,\n Package,\n ClipboardList,\n TrendingUp,\n PieChart,\n BarChart3,\n Settings,\n Users,\n ShoppingCart,\n LineChart,\n Wallet,\n FileText,\n} from 'lucide-react';\nimport { KadaikodiProvider } from './context/KadaikodiContext';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { KadaikodiRoutes } from './KadaikodiRoutes';\nimport type { KadaikodiRootProps, NavItem } from './types';\n\n// Create a query client for this microfrontend\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 5 * 60 * 1000,\n retry: 1,\n },\n },\n});\n\nexport const KadaikodiRoot: FC<KadaikodiRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const { t: translate } = useI18n();\n const t = useCallback(\n (key: string, fallback: string): string => {\n const value = translate(key);\n return value === key ? fallback : value;\n },\n [translate]\n );\n\n // Helper to join paths correctly\n const joinPath = (base: string, path: string): string => {\n const cleanBase = base.endsWith('/') ? base.slice(0, -1) : base;\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n return cleanBase + cleanPath;\n };\n\n // Register navigation items with shell on mount\n useEffect(() => {\n if (!registerNavItems) return;\n\n const navItems: NavItem[] = [\n // Main\n {\n id: 'kadaikodi-home',\n label: t('kadaikodi.nav.home', 'Home'),\n path: joinPath(basePath, ''),\n icon: <Home size={20} />,\n order: 1,\n group: 'main',\n },\n\n // Customer Section\n {\n id: 'kadaikodi-discover',\n label: t('kadaikodi.nav.discover', 'Discover'),\n path: joinPath(basePath, 'customer/discover'),\n icon: <Search size={20} />,\n order: 10,\n group: 'customer',\n },\n {\n id: 'kadaikodi-orders',\n label: t('kadaikodi.nav.myOrders', 'My Orders'),\n path: joinPath(basePath, 'customer/orders'),\n icon: <ShoppingBag size={20} />,\n order: 11,\n group: 'customer',\n },\n {\n id: 'kadaikodi-favorites',\n label: t('kadaikodi.nav.favorites', 'Favorites'),\n path: joinPath(basePath, 'customer/favorites'),\n icon: <Heart size={20} />,\n order: 12,\n group: 'customer',\n },\n\n // Cart Owner Section\n {\n id: 'kadaikodi-my-cart',\n label: t('kadaikodi.nav.myCart', 'My Cart'),\n path: joinPath(basePath, 'cart-owner/dashboard'),\n icon: <Store size={20} />,\n order: 20,\n group: 'cart-owner',\n },\n {\n id: 'kadaikodi-inventory',\n label: t('kadaikodi.nav.inventory', 'Inventory'),\n path: joinPath(basePath, 'cart-owner/inventory'),\n icon: <Package size={20} />,\n order: 21,\n group: 'cart-owner',\n },\n {\n id: 'kadaikodi-cart-orders',\n label: t('kadaikodi.nav.cartOrders', 'Cart Orders'),\n path: joinPath(basePath, 'cart-owner/orders'),\n icon: <ShoppingCart size={20} />,\n order: 22,\n group: 'cart-owner',\n },\n\n // Worker Section\n {\n id: 'kadaikodi-tasks',\n label: t('kadaikodi.nav.myTasks', 'My Tasks'),\n path: joinPath(basePath, 'worker/dashboard'),\n icon: <ClipboardList size={20} />,\n order: 30,\n group: 'worker',\n },\n\n // Investor Section\n {\n id: 'kadaikodi-investments',\n label: t('kadaikodi.nav.investments', 'Investments'),\n path: joinPath(basePath, 'investor/dashboard'),\n icon: <TrendingUp size={20} />,\n order: 40,\n group: 'investor',\n },\n {\n id: 'kadaikodi-portfolio',\n label: t('kadaikodi.nav.portfolio', 'Portfolio'),\n path: joinPath(basePath, 'investor/portfolio'),\n icon: <PieChart size={20} />,\n order: 41,\n group: 'investor',\n },\n {\n id: 'kadaikodi-opportunities',\n label: t('kadaikodi.nav.opportunities', 'Opportunities'),\n path: joinPath(basePath, 'investor/opportunities'),\n icon: <LineChart size={20} />,\n order: 42,\n group: 'investor',\n },\n\n // Admin Section\n {\n id: 'kadaikodi-admin',\n label: t('kadaikodi.nav.adminPanel', 'Admin Panel'),\n path: joinPath(basePath, 'admin/dashboard'),\n icon: <Settings size={20} />,\n order: 50,\n group: 'admin',\n },\n {\n id: 'kadaikodi-users',\n label: t('kadaikodi.nav.users', 'Users'),\n path: joinPath(basePath, 'admin/users'),\n icon: <Users size={20} />,\n order: 51,\n group: 'admin',\n },\n {\n id: 'kadaikodi-analytics',\n label: t('kadaikodi.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'admin/analytics'),\n icon: <BarChart3 size={20} />,\n order: 52,\n group: 'admin',\n },\n {\n id: 'kadaikodi-financial',\n label: t('kadaikodi.nav.financial', 'Financial'),\n path: joinPath(basePath, 'admin/financial'),\n icon: <Wallet size={20} />,\n order: 53,\n group: 'admin',\n },\n\n // System\n {\n id: 'kadaikodi-settings',\n label: t('kadaikodi.nav.settings', 'Settings'),\n path: joinPath(basePath, 'settings'),\n icon: <FileText size={20} />,\n order: 100,\n group: 'system',\n },\n ];\n\n const cleanup = registerNavItems(navItems);\n return cleanup;\n }, [registerNavItems, basePath, t]);\n\n // Register footer items\n useEffect(() => {\n if (!registerFooterItems) return;\n\n const footerItems = [\n {\n id: 'kadaikodi-status',\n label: t('kadaikodi.footer.ready', 'Kadaikodi Ready'),\n type: 'status' as const,\n order: 10,\n section: 'left' as const,\n },\n ];\n\n const cleanup = registerFooterItems(footerItems);\n return cleanup;\n }, [registerFooterItems, t]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <KadaikodiProvider {...props}>\n <KadaikodiRoutes />\n </KadaikodiProvider>\n </FeatureFlagProvider>\n </QueryClientProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"KadaikodiRoot.js","names":[],"sources":["../../src/kadaikodi/KadaikodiRoot.tsx"],"sourcesContent":["/**\n * Kadaikodi Root Component\n * @module kadaikodi\n */\n\nimport type { FC } from 'react';\nimport { useEffect } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport {\n Home,\n Search,\n ShoppingBag,\n Heart,\n Store,\n Package,\n ClipboardList,\n TrendingUp,\n PieChart,\n BarChart3,\n Settings,\n Users,\n ShoppingCart,\n LineChart,\n Wallet,\n FileText,\n} from 'lucide-react';\nimport { KadaikodiProvider } from './context/KadaikodiContext';\nimport { useTr } from '../shared/hooks/useTr';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport { KadaikodiRoutes } from './KadaikodiRoutes';\nimport type { KadaikodiRootProps, NavItem } from './types';\n\n// Create a query client for this microfrontend\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n staleTime: 5 * 60 * 1000,\n retry: 1,\n },\n },\n});\n\nexport const KadaikodiRoot: FC<KadaikodiRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const tr = useTr();\n\n // Helper to join paths correctly\n const joinPath = (base: string, path: string): string => {\n const cleanBase = base.endsWith('/') ? base.slice(0, -1) : base;\n const cleanPath = path.startsWith('/') ? path : `/${path}`;\n return cleanBase + cleanPath;\n };\n\n // Register navigation items with shell on mount\n useEffect(() => {\n if (!registerNavItems) return;\n\n const navItems: NavItem[] = [\n // Main\n {\n id: 'kadaikodi-home',\n label: tr('kadaikodi.nav.home', 'Home'),\n path: joinPath(basePath, ''),\n icon: <Home size={20} />,\n order: 1,\n group: 'main',\n },\n\n // Customer Section\n {\n id: 'kadaikodi-discover',\n label: tr('kadaikodi.nav.discover', 'Discover'),\n path: joinPath(basePath, 'customer/discover'),\n icon: <Search size={20} />,\n order: 10,\n group: 'customer',\n },\n {\n id: 'kadaikodi-orders',\n label: tr('kadaikodi.nav.myOrders', 'My Orders'),\n path: joinPath(basePath, 'customer/orders'),\n icon: <ShoppingBag size={20} />,\n order: 11,\n group: 'customer',\n },\n {\n id: 'kadaikodi-favorites',\n label: tr('kadaikodi.nav.favorites', 'Favorites'),\n path: joinPath(basePath, 'customer/favorites'),\n icon: <Heart size={20} />,\n order: 12,\n group: 'customer',\n },\n\n // Cart Owner Section\n {\n id: 'kadaikodi-my-cart',\n label: tr('kadaikodi.nav.myCart', 'My Cart'),\n path: joinPath(basePath, 'cart-owner/dashboard'),\n icon: <Store size={20} />,\n order: 20,\n group: 'cart-owner',\n },\n {\n id: 'kadaikodi-inventory',\n label: tr('kadaikodi.nav.inventory', 'Inventory'),\n path: joinPath(basePath, 'cart-owner/inventory'),\n icon: <Package size={20} />,\n order: 21,\n group: 'cart-owner',\n },\n {\n id: 'kadaikodi-cart-orders',\n label: tr('kadaikodi.nav.cartOrders', 'Cart Orders'),\n path: joinPath(basePath, 'cart-owner/orders'),\n icon: <ShoppingCart size={20} />,\n order: 22,\n group: 'cart-owner',\n },\n\n // Worker Section\n {\n id: 'kadaikodi-tasks',\n label: tr('kadaikodi.nav.myTasks', 'My Tasks'),\n path: joinPath(basePath, 'worker/dashboard'),\n icon: <ClipboardList size={20} />,\n order: 30,\n group: 'worker',\n },\n\n // Investor Section\n {\n id: 'kadaikodi-investments',\n label: tr('kadaikodi.nav.investments', 'Investments'),\n path: joinPath(basePath, 'investor/dashboard'),\n icon: <TrendingUp size={20} />,\n order: 40,\n group: 'investor',\n },\n {\n id: 'kadaikodi-portfolio',\n label: tr('kadaikodi.nav.portfolio', 'Portfolio'),\n path: joinPath(basePath, 'investor/portfolio'),\n icon: <PieChart size={20} />,\n order: 41,\n group: 'investor',\n },\n {\n id: 'kadaikodi-opportunities',\n label: tr('kadaikodi.nav.opportunities', 'Opportunities'),\n path: joinPath(basePath, 'investor/opportunities'),\n icon: <LineChart size={20} />,\n order: 42,\n group: 'investor',\n },\n\n // Admin Section\n {\n id: 'kadaikodi-admin',\n label: tr('kadaikodi.nav.adminPanel', 'Admin Panel'),\n path: joinPath(basePath, 'admin/dashboard'),\n icon: <Settings size={20} />,\n order: 50,\n group: 'admin',\n },\n {\n id: 'kadaikodi-users',\n label: tr('kadaikodi.nav.users', 'Users'),\n path: joinPath(basePath, 'admin/users'),\n icon: <Users size={20} />,\n order: 51,\n group: 'admin',\n },\n {\n id: 'kadaikodi-analytics',\n label: tr('kadaikodi.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'admin/analytics'),\n icon: <BarChart3 size={20} />,\n order: 52,\n group: 'admin',\n },\n {\n id: 'kadaikodi-financial',\n label: tr('kadaikodi.nav.financial', 'Financial'),\n path: joinPath(basePath, 'admin/financial'),\n icon: <Wallet size={20} />,\n order: 53,\n group: 'admin',\n },\n\n // System\n {\n id: 'kadaikodi-settings',\n label: tr('kadaikodi.nav.settings', 'Settings'),\n path: joinPath(basePath, 'settings'),\n icon: <FileText size={20} />,\n order: 100,\n group: 'system',\n },\n ];\n\n const cleanup = registerNavItems(navItems);\n return cleanup;\n }, [registerNavItems, basePath, tr]);\n\n // Register footer items\n useEffect(() => {\n if (!registerFooterItems) return;\n\n const footerItems = [\n {\n id: 'kadaikodi-status',\n label: tr('kadaikodi.footer.ready', 'Kadaikodi Ready'),\n type: 'status' as const,\n order: 10,\n section: 'left' as const,\n },\n ];\n\n const cleanup = registerFooterItems(footerItems);\n return cleanup;\n }, [registerFooterItems, tr]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <KadaikodiProvider {...props}>\n <KadaikodiRoutes />\n </KadaikodiProvider>\n </FeatureFlagProvider>\n </QueryClientProvider>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"InvestmentCard.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/components/InvestmentCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE5D,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA+ElD,CAAC"}
1
+ {"version":3,"file":"InvestmentCard.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/components/InvestmentCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAMhC,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE5D,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwBD,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAoFlD,CAAC"}
@@ -1,98 +1,102 @@
1
- import { cn as e } from "../utils/cn.js";
2
- import { StatusBadge as t } from "./StatusBadge.js";
3
- import { AlertTriangle as n, Shield as r, TrendingUp as i } from "lucide-react";
4
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
- import { GlassCard as s } from "@burdenoff/fe-libs/ui";
1
+ import { useTr as e } from "../../shared/hooks/useTr.js";
2
+ import { cn as t } from "../utils/cn.js";
3
+ import { StatusBadge as n } from "./StatusBadge.js";
4
+ import { AlertTriangle as r, Shield as i, TrendingUp as a } from "lucide-react";
5
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
6
+ import { GlassCard as c } from "@burdenoff/fe-libs/ui";
6
7
  //#region src/kadaikodi/components/InvestmentCard.tsx
7
- var c = {
8
- low: {
9
- label: "Low Risk",
10
- icon: r,
11
- color: "text-status-success-text"
12
- },
13
- medium: {
14
- label: "Medium Risk",
15
- icon: n,
16
- color: "text-status-warning-text"
17
- },
18
- high: {
19
- label: "High Risk",
20
- icon: n,
21
- color: "text-status-error-text"
22
- }
23
- }, l = ({ id: n, cartName: r, targetAmount: l, raisedAmount: u, currency: d = "INR", expectedReturns: f, riskLevel: p, status: m, onClick: h, className: g }) => {
24
- let _ = l > 0 ? Math.min(u / l * 100, 100) : 0, v = c[p], y = v.icon, b = (e) => new Intl.NumberFormat(void 0, {
8
+ function l(e) {
9
+ return {
10
+ low: {
11
+ label: e("kadaikodi.components.investmentCard.lowRisk", "Low Risk"),
12
+ icon: i,
13
+ color: "text-status-success-text"
14
+ },
15
+ medium: {
16
+ label: e("kadaikodi.components.investmentCard.mediumRisk", "Medium Risk"),
17
+ icon: r,
18
+ color: "text-status-warning-text"
19
+ },
20
+ high: {
21
+ label: e("kadaikodi.components.investmentCard.highRisk", "High Risk"),
22
+ icon: r,
23
+ color: "text-status-error-text"
24
+ }
25
+ };
26
+ }
27
+ var u = ({ id: r, cartName: i, targetAmount: u, raisedAmount: d, currency: f = "INR", expectedReturns: p, riskLevel: m, status: h, onClick: g, className: _ }) => {
28
+ let v = e(), y = u > 0 ? Math.min(d / u * 100, 100) : 0, b = l(v)[m], x = b.icon, S = (e) => new Intl.NumberFormat(void 0, {
25
29
  style: "currency",
26
- currency: d,
30
+ currency: f,
27
31
  maximumFractionDigits: 0
28
32
  }).format(e);
29
- return /* @__PURE__ */ o(s, {
33
+ return /* @__PURE__ */ s(c, {
30
34
  treatment: "plain",
31
35
  role: "button",
32
36
  tabIndex: 0,
33
- onClick: () => h?.(n),
37
+ onClick: () => g?.(r),
34
38
  onKeyDown: (e) => {
35
- (e.key === "Enter" || e.key === " ") && (e.preventDefault(), h?.(n));
39
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), g?.(r));
36
40
  },
37
- className: e("p-4 border-border-seam cursor-pointer", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]", g),
41
+ className: t("p-4 border-border-seam cursor-pointer", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]", _),
38
42
  children: [
39
- /* @__PURE__ */ o("div", {
43
+ /* @__PURE__ */ s("div", {
40
44
  className: "flex items-start justify-between",
41
- children: [/* @__PURE__ */ a("h3", {
45
+ children: [/* @__PURE__ */ o("h3", {
42
46
  className: "text-base font-semibold text-text-primary truncate",
43
- children: r
44
- }), /* @__PURE__ */ a(t, { status: m })]
47
+ children: i
48
+ }), /* @__PURE__ */ o(n, { status: h })]
45
49
  }),
46
- /* @__PURE__ */ o("div", {
50
+ /* @__PURE__ */ s("div", {
47
51
  className: "mt-4",
48
52
  children: [
49
- /* @__PURE__ */ o("div", {
53
+ /* @__PURE__ */ s("div", {
50
54
  className: "flex items-center justify-between text-sm",
51
- children: [/* @__PURE__ */ a("span", {
55
+ children: [/* @__PURE__ */ o("span", {
52
56
  className: "text-text-secondary",
53
- children: "Raised"
54
- }), /* @__PURE__ */ o("span", {
57
+ children: v("kadaikodi.components.investmentCard.raised", "Raised")
58
+ }), /* @__PURE__ */ s("span", {
55
59
  className: "font-medium text-text-primary",
56
- children: [Math.round(_), "%"]
60
+ children: [Math.round(y), "%"]
57
61
  })]
58
62
  }),
59
- /* @__PURE__ */ a("div", {
63
+ /* @__PURE__ */ o("div", {
60
64
  className: "mt-1.5 h-2 w-full rounded-full bg-bg-sunken overflow-hidden",
61
- children: /* @__PURE__ */ a("div", {
65
+ children: /* @__PURE__ */ o("div", {
62
66
  className: "h-full rounded-full bg-action-primary-bg shadow-[var(--shadow-glow)] transition-all duration-300",
63
- style: { width: `${_}%` }
67
+ style: { width: `${y}%` }
64
68
  })
65
69
  }),
66
- /* @__PURE__ */ o("div", {
70
+ /* @__PURE__ */ s("div", {
67
71
  className: "mt-1.5 flex items-center justify-between text-xs text-text-secondary",
68
- children: [/* @__PURE__ */ a("span", { children: b(u) }), /* @__PURE__ */ a("span", { children: b(l) })]
72
+ children: [/* @__PURE__ */ o("span", { children: S(d) }), /* @__PURE__ */ o("span", { children: S(u) })]
69
73
  })
70
74
  ]
71
75
  }),
72
- /* @__PURE__ */ o("div", {
76
+ /* @__PURE__ */ s("div", {
73
77
  className: "mt-4 flex items-center justify-between",
74
- children: [/* @__PURE__ */ o("div", {
78
+ children: [/* @__PURE__ */ s("div", {
75
79
  className: "flex items-center gap-1.5 text-sm",
76
80
  children: [
77
- /* @__PURE__ */ a(i, { className: "h-3.5 w-3.5 text-status-success-text" }),
78
- /* @__PURE__ */ a("span", {
81
+ /* @__PURE__ */ o(a, { className: "h-3.5 w-3.5 text-status-success-text" }),
82
+ /* @__PURE__ */ o("span", {
79
83
  className: "font-medium tabular-nums text-text-primary",
80
- children: f
84
+ children: p
81
85
  }),
82
- /* @__PURE__ */ a("span", {
86
+ /* @__PURE__ */ o("span", {
83
87
  className: "text-text-secondary",
84
- children: "returns"
88
+ children: v("kadaikodi.components.investmentCard.returns", "returns")
85
89
  })
86
90
  ]
87
- }), /* @__PURE__ */ o("div", {
88
- className: e("flex items-center gap-1 text-xs font-medium", v.color),
89
- children: [/* @__PURE__ */ a(y, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ a("span", { children: v.label })]
91
+ }), /* @__PURE__ */ s("div", {
92
+ className: t("flex items-center gap-1 text-xs font-medium", b.color),
93
+ children: [/* @__PURE__ */ o(x, { className: "h-3.5 w-3.5" }), /* @__PURE__ */ o("span", { children: b.label })]
90
94
  })]
91
95
  })
92
96
  ]
93
97
  });
94
98
  };
95
99
  //#endregion
96
- export { l as InvestmentCard };
100
+ export { u as InvestmentCard };
97
101
 
98
102
  //# sourceMappingURL=InvestmentCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InvestmentCard.js","names":[],"sources":["../../../src/kadaikodi/components/InvestmentCard.tsx"],"sourcesContent":["/**\n * Investment Card Component\n * @module kadaikodi/components\n *\n * Displays an investment opportunity with cart name, target/raised amounts,\n * progress bar, expected returns, risk level, and status.\n */\n\nimport type { FC } from 'react';\nimport { TrendingUp, AlertTriangle, Shield } from 'lucide-react';\nimport { GlassCard } from '@burdenoff/fe-libs/ui';\nimport { cn } from '../utils/cn';\nimport { StatusBadge } from './StatusBadge';\nimport type { InvestmentStatus, RiskLevel } from '../types';\n\ninterface InvestmentCardProps {\n id: string;\n cartName: string;\n targetAmount: number;\n raisedAmount: number;\n currency?: string;\n expectedReturns: string;\n riskLevel: RiskLevel;\n status: InvestmentStatus;\n onClick?: (id: string) => void;\n className?: string;\n}\n\nconst riskConfig: Record<RiskLevel, { label: string; icon: typeof Shield; color: string }> = {\n low: {\n label: 'Low Risk',\n icon: Shield,\n color: 'text-status-success-text',\n },\n medium: {\n label: 'Medium Risk',\n icon: AlertTriangle,\n color: 'text-status-warning-text',\n },\n high: {\n label: 'High Risk',\n icon: AlertTriangle,\n color: 'text-status-error-text',\n },\n};\n\nexport const InvestmentCard: FC<InvestmentCardProps> = ({\n id,\n cartName,\n targetAmount,\n raisedAmount,\n currency = 'INR',\n expectedReturns,\n riskLevel,\n status,\n onClick,\n className,\n}) => {\n const progress = targetAmount > 0 ? Math.min((raisedAmount / targetAmount) * 100, 100) : 0;\n const risk = riskConfig[riskLevel];\n const RiskIcon = risk.icon;\n\n const formatAmount = (amount: number) =>\n new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency,\n maximumFractionDigits: 0,\n }).format(amount);\n\n return (\n <GlassCard\n treatment=\"plain\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onClick?.(id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick?.(id);\n }\n }}\n className={cn(\n 'p-4 border-border-seam cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]',\n className\n )}\n >\n {/* Header */}\n <div className=\"flex items-start justify-between\">\n <h3 className=\"text-base font-semibold text-text-primary truncate\">{cartName}</h3>\n <StatusBadge status={status} />\n </div>\n\n {/* Progress Bar */}\n <div className=\"mt-4\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"text-text-secondary\">Raised</span>\n <span className=\"font-medium text-text-primary\">{Math.round(progress)}%</span>\n </div>\n <div className=\"mt-1.5 h-2 w-full rounded-full bg-bg-sunken overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-action-primary-bg shadow-[var(--shadow-glow)] transition-all duration-300\"\n style={{ width: `${progress}%` }}\n />\n </div>\n <div className=\"mt-1.5 flex items-center justify-between text-xs text-text-secondary\">\n <span>{formatAmount(raisedAmount)}</span>\n <span>{formatAmount(targetAmount)}</span>\n </div>\n </div>\n\n {/* Details */}\n <div className=\"mt-4 flex items-center justify-between\">\n <div className=\"flex items-center gap-1.5 text-sm\">\n <TrendingUp className=\"h-3.5 w-3.5 text-status-success-text\" />\n <span className=\"font-medium tabular-nums text-text-primary\">{expectedReturns}</span>\n <span className=\"text-text-secondary\">returns</span>\n </div>\n <div className={cn('flex items-center gap-1 text-xs font-medium', risk.color)}>\n <RiskIcon className=\"h-3.5 w-3.5\" />\n <span>{risk.label}</span>\n </div>\n </div>\n </GlassCard>\n );\n};\n"],"mappings":";;;;;;AA4BA,IAAM,IAAuF;CAC3F,KAAK;EACH,OAAO;EACP,MAAM;EACN,OAAO;EACR;CACD,QAAQ;EACN,OAAO;EACP,MAAM;EACN,OAAO;EACR;CACD,MAAM;EACJ,OAAO;EACP,MAAM;EACN,OAAO;EACR;CACF,EAEY,KAA2C,EACtD,OACA,aACA,iBACA,iBACA,cAAW,OACX,oBACA,cACA,WACA,YACA,mBACI;CACJ,IAAM,IAAW,IAAe,IAAI,KAAK,IAAK,IAAe,IAAgB,KAAK,IAAI,GAAG,GACnF,IAAO,EAAW,IAClB,IAAW,EAAK,MAEhB,KAAgB,MACpB,IAAI,KAAK,aAAa,KAAA,GAAW;EAC/B,OAAO;EACP;EACA,uBAAuB;EACxB,CAAC,CAAC,OAAO,EAAO;AAEnB,QACE,kBAAC,GAAD;EACE,WAAU;EACV,MAAK;EACL,UAAU;EACV,eAAe,IAAU,EAAG;EAC5B,YAAY,MAAM;AAChB,IAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,SACjC,EAAE,gBAAgB,EAClB,IAAU,EAAG;;EAGjB,WAAW,EACT,yCACA,gGACA,EACD;YAfH;GAkBE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,MAAD;KAAI,WAAU;eAAsD;KAAc,CAAA,EAClF,kBAAC,GAAD,EAAqB,WAAU,CAAA,CAC3B;;GAGN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBAAsB;OAAa,CAAA,EACnD,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CAAiD,KAAK,MAAM,EAAS,EAAC,IAAQ;SAC1E;;KACN,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,OAAD;OACE,WAAU;OACV,OAAO,EAAE,OAAO,GAAG,EAAS,IAAI;OAChC,CAAA;MACE,CAAA;KACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD,EAAA,UAAO,EAAa,EAAa,EAAQ,CAAA,EACzC,kBAAC,QAAD,EAAA,UAAO,EAAa,EAAa,EAAQ,CAAA,CACrC;;KACF;;GAGN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,GAAD,EAAY,WAAU,wCAAyC,CAAA;MAC/D,kBAAC,QAAD;OAAM,WAAU;iBAA8C;OAAuB,CAAA;MACrF,kBAAC,QAAD;OAAM,WAAU;iBAAsB;OAAc,CAAA;MAChD;QACN,kBAAC,OAAD;KAAK,WAAW,EAAG,+CAA+C,EAAK,MAAM;eAA7E,CACE,kBAAC,GAAD,EAAU,WAAU,eAAgB,CAAA,EACpC,kBAAC,QAAD,EAAA,UAAO,EAAK,OAAa,CAAA,CACrB;OACF;;GACI"}
1
+ {"version":3,"file":"InvestmentCard.js","names":[],"sources":["../../../src/kadaikodi/components/InvestmentCard.tsx"],"sourcesContent":["/**\n * Investment Card Component\n * @module kadaikodi/components\n *\n * Displays an investment opportunity with cart name, target/raised amounts,\n * progress bar, expected returns, risk level, and status.\n */\n\nimport type { FC } from 'react';\nimport { TrendingUp, AlertTriangle, Shield } from 'lucide-react';\nimport { GlassCard } from '@burdenoff/fe-libs/ui';\nimport { cn } from '../utils/cn';\nimport { StatusBadge } from './StatusBadge';\nimport { useTr } from '../../shared/hooks/useTr';\nimport type { InvestmentStatus, RiskLevel } from '../types';\n\ninterface InvestmentCardProps {\n id: string;\n cartName: string;\n targetAmount: number;\n raisedAmount: number;\n currency?: string;\n expectedReturns: string;\n riskLevel: RiskLevel;\n status: InvestmentStatus;\n onClick?: (id: string) => void;\n className?: string;\n}\n\nfunction getRiskConfig(\n tr: ReturnType<typeof useTr>\n): Record<RiskLevel, { label: string; icon: typeof Shield; color: string }> {\n return {\n low: {\n label: tr('kadaikodi.components.investmentCard.lowRisk', 'Low Risk'),\n icon: Shield,\n color: 'text-status-success-text',\n },\n medium: {\n label: tr('kadaikodi.components.investmentCard.mediumRisk', 'Medium Risk'),\n icon: AlertTriangle,\n color: 'text-status-warning-text',\n },\n high: {\n label: tr('kadaikodi.components.investmentCard.highRisk', 'High Risk'),\n icon: AlertTriangle,\n color: 'text-status-error-text',\n },\n };\n}\n\nexport const InvestmentCard: FC<InvestmentCardProps> = ({\n id,\n cartName,\n targetAmount,\n raisedAmount,\n currency = 'INR',\n expectedReturns,\n riskLevel,\n status,\n onClick,\n className,\n}) => {\n const tr = useTr();\n const progress = targetAmount > 0 ? Math.min((raisedAmount / targetAmount) * 100, 100) : 0;\n const risk = getRiskConfig(tr)[riskLevel];\n const RiskIcon = risk.icon;\n\n const formatAmount = (amount: number) =>\n new Intl.NumberFormat(undefined, {\n style: 'currency',\n currency,\n maximumFractionDigits: 0,\n }).format(amount);\n\n return (\n <GlassCard\n treatment=\"plain\"\n role=\"button\"\n tabIndex={0}\n onClick={() => onClick?.(id)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick?.(id);\n }\n }}\n className={cn(\n 'p-4 border-border-seam cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]',\n className\n )}\n >\n {/* Header */}\n <div className=\"flex items-start justify-between\">\n <h3 className=\"text-base font-semibold text-text-primary truncate\">{cartName}</h3>\n <StatusBadge status={status} />\n </div>\n\n {/* Progress Bar */}\n <div className=\"mt-4\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"text-text-secondary\">\n {tr('kadaikodi.components.investmentCard.raised', 'Raised')}\n </span>\n <span className=\"font-medium text-text-primary\">{Math.round(progress)}%</span>\n </div>\n <div className=\"mt-1.5 h-2 w-full rounded-full bg-bg-sunken overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-action-primary-bg shadow-[var(--shadow-glow)] transition-all duration-300\"\n style={{ width: `${progress}%` }}\n />\n </div>\n <div className=\"mt-1.5 flex items-center justify-between text-xs text-text-secondary\">\n <span>{formatAmount(raisedAmount)}</span>\n <span>{formatAmount(targetAmount)}</span>\n </div>\n </div>\n\n {/* Details */}\n <div className=\"mt-4 flex items-center justify-between\">\n <div className=\"flex items-center gap-1.5 text-sm\">\n <TrendingUp className=\"h-3.5 w-3.5 text-status-success-text\" />\n <span className=\"font-medium tabular-nums text-text-primary\">{expectedReturns}</span>\n <span className=\"text-text-secondary\">\n {tr('kadaikodi.components.investmentCard.returns', 'returns')}\n </span>\n </div>\n <div className={cn('flex items-center gap-1 text-xs font-medium', risk.color)}>\n <RiskIcon className=\"h-3.5 w-3.5\" />\n <span>{risk.label}</span>\n </div>\n </div>\n </GlassCard>\n );\n};\n"],"mappings":";;;;;;;AA6BA,SAAS,EACP,GAC0E;AAC1E,QAAO;EACL,KAAK;GACH,OAAO,EAAG,+CAA+C,WAAW;GACpE,MAAM;GACN,OAAO;GACR;EACD,QAAQ;GACN,OAAO,EAAG,kDAAkD,cAAc;GAC1E,MAAM;GACN,OAAO;GACR;EACD,MAAM;GACJ,OAAO,EAAG,gDAAgD,YAAY;GACtE,MAAM;GACN,OAAO;GACR;EACF;;AAGH,IAAa,KAA2C,EACtD,OACA,aACA,iBACA,iBACA,cAAW,OACX,oBACA,cACA,WACA,YACA,mBACI;CACJ,IAAM,IAAK,GAAO,EACZ,IAAW,IAAe,IAAI,KAAK,IAAK,IAAe,IAAgB,KAAK,IAAI,GAAG,GACnF,IAAO,EAAc,EAAG,CAAC,IACzB,IAAW,EAAK,MAEhB,KAAgB,MACpB,IAAI,KAAK,aAAa,KAAA,GAAW;EAC/B,OAAO;EACP;EACA,uBAAuB;EACxB,CAAC,CAAC,OAAO,EAAO;AAEnB,QACE,kBAAC,GAAD;EACE,WAAU;EACV,MAAK;EACL,UAAU;EACV,eAAe,IAAU,EAAG;EAC5B,YAAY,MAAM;AAChB,IAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,SACjC,EAAE,gBAAgB,EAClB,IAAU,EAAG;;EAGjB,WAAW,EACT,yCACA,gGACA,EACD;YAfH;GAkBE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,MAAD;KAAI,WAAU;eAAsD;KAAc,CAAA,EAClF,kBAAC,GAAD,EAAqB,WAAU,CAAA,CAC3B;;GAGN,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD;OAAM,WAAU;iBACb,EAAG,8CAA8C,SAAS;OACtD,CAAA,EACP,kBAAC,QAAD;OAAM,WAAU;iBAAhB,CAAiD,KAAK,MAAM,EAAS,EAAC,IAAQ;SAC1E;;KACN,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,OAAD;OACE,WAAU;OACV,OAAO,EAAE,OAAO,GAAG,EAAS,IAAI;OAChC,CAAA;MACE,CAAA;KACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD,EAAA,UAAO,EAAa,EAAa,EAAQ,CAAA,EACzC,kBAAC,QAAD,EAAA,UAAO,EAAa,EAAa,EAAQ,CAAA,CACrC;;KACF;;GAGN,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,GAAD,EAAY,WAAU,wCAAyC,CAAA;MAC/D,kBAAC,QAAD;OAAM,WAAU;iBAA8C;OAAuB,CAAA;MACrF,kBAAC,QAAD;OAAM,WAAU;iBACb,EAAG,+CAA+C,UAAU;OACxD,CAAA;MACH;QACN,kBAAC,OAAD;KAAK,WAAW,EAAG,+CAA+C,EAAK,MAAM;eAA7E,CACE,kBAAC,GAAD,EAAU,WAAU,eAAgB,CAAA,EACpC,kBAAC,QAAD,EAAA,UAAO,EAAK,OAAa,CAAA,CACrB;OACF;;GACI"}
@@ -1 +1 @@
1
- {"version":3,"file":"OrderCard.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/components/OrderCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAsExC,CAAC"}
1
+ {"version":3,"file":"OrderCard.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/components/OrderCard.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAMhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CA2ExC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/components/StatusBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGhC,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4DD,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAsB5C,CAAC"}
1
+ {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../../src/kadaikodi/components/StatusBadge.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAIhC,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+ED,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAuB5C,CAAC"}
@@ -1,21 +1,23 @@
1
- import { cn as e } from "../utils/cn.js";
2
- import { jsx as t, jsxs as n } from "react/jsx-runtime";
1
+ import { useTr as e } from "../../shared/hooks/useTr.js";
2
+ import { cn as t } from "../utils/cn.js";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
4
  //#region src/kadaikodi/components/StatusBadge.tsx
4
- var r = {
5
+ var i = {
5
6
  success: "bg-status-success-bg-subtle text-status-success-text",
6
7
  warning: "bg-status-warning-bg-subtle text-status-warning-text",
7
8
  destructive: "bg-status-error-bg-subtle text-status-error-text",
8
9
  secondary: "bg-bg-sunken text-text-secondary",
9
10
  info: "bg-[var(--color-accent-soft)] text-text-primary",
10
11
  outline: "border border-border-seam text-text-primary"
11
- }, i = new Set([
12
+ }, a = new Set([
12
13
  "open",
13
14
  "active",
14
15
  "preparing",
15
16
  "out_for_delivery",
16
17
  "processing",
17
- "returning"
18
- ]), a = {
18
+ "returning",
19
+ "in_progress"
20
+ ]), o = {
19
21
  open: "success",
20
22
  closed: "destructive",
21
23
  busy: "warning",
@@ -28,6 +30,12 @@ var r = {
28
30
  delivered: "success",
29
31
  cancelled: "destructive",
30
32
  refunded: "outline",
33
+ paid: "success",
34
+ verified: "success",
35
+ paused: "warning",
36
+ suspended: "destructive",
37
+ in_progress: "info",
38
+ blocked: "warning",
31
39
  funded: "success",
32
40
  returning: "info",
33
41
  active: "success",
@@ -39,20 +47,23 @@ var r = {
39
47
  processing: "warning",
40
48
  completed: "success"
41
49
  };
42
- function o(e) {
50
+ function s(e) {
43
51
  return e.replace(/_/g, " ").replace(/\b\w/g, (e) => e.toUpperCase());
44
52
  }
45
- var s = ({ status: s, className: c }) => {
46
- let l = s.toLowerCase(), u = a[l] || "secondary", d = i.has(l);
47
- return /* @__PURE__ */ n("span", {
48
- className: e("inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium", r[u], c),
49
- children: [d && /* @__PURE__ */ t("span", {
53
+ function c(e, t) {
54
+ return e(`kadaikodi.status.${t.toLowerCase()}`, s(t));
55
+ }
56
+ var l = ({ status: s, className: l }) => {
57
+ let u = e(), d = s.toLowerCase(), f = o[d] || "secondary", p = a.has(d);
58
+ return /* @__PURE__ */ r("span", {
59
+ className: t("inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium", i[f], l),
60
+ children: [p && /* @__PURE__ */ n("span", {
50
61
  "aria-hidden": "true",
51
62
  className: "size-1.5 rounded-full bg-current motion-safe:animate-vc-glow-pulse"
52
- }), o(s)]
63
+ }), c(u, s)]
53
64
  });
54
65
  };
55
66
  //#endregion
56
- export { s as StatusBadge };
67
+ export { l as StatusBadge };
57
68
 
58
69
  //# sourceMappingURL=StatusBadge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBadge.js","names":[],"sources":["../../../src/kadaikodi/components/StatusBadge.tsx"],"sourcesContent":["/**\n * Status Badge Component\n * @module kadaikodi/components\n *\n * A colored badge based on status value with semantic color mapping\n * for various order, cart, and investment statuses.\n */\n\nimport type { FC } from 'react';\nimport { cn } from '../utils/cn';\n\ninterface StatusBadgeProps {\n status: string;\n className?: string;\n}\n\ntype BadgeVariant = 'success' | 'warning' | 'destructive' | 'secondary' | 'info' | 'outline';\n\nconst variantStyles: Record<BadgeVariant, string> = {\n success: 'bg-status-success-bg-subtle text-status-success-text',\n warning: 'bg-status-warning-bg-subtle text-status-warning-text',\n destructive: 'bg-status-error-bg-subtle text-status-error-text',\n secondary: 'bg-bg-sunken text-text-secondary',\n info: 'bg-[var(--color-accent-soft)] text-text-primary',\n outline: 'border border-border-seam text-text-primary',\n};\n\n// Statuses that represent a \"live\" / in-progress condition get a subtle,\n// opacity-only glow pulse (reduced-motion safe via motion-safe:).\nconst liveStatuses = new Set([\n 'open',\n 'active',\n 'preparing',\n 'out_for_delivery',\n 'processing',\n 'returning',\n]);\n\nconst statusVariantMap: Record<string, BadgeVariant> = {\n // Cart statuses\n open: 'success',\n closed: 'destructive',\n busy: 'warning',\n temporarily_closed: 'warning',\n\n // Order statuses\n pending: 'secondary',\n confirmed: 'info',\n preparing: 'warning',\n ready: 'success',\n out_for_delivery: 'info',\n delivered: 'success',\n cancelled: 'destructive',\n refunded: 'outline',\n\n // Investment statuses\n funded: 'success',\n returning: 'info',\n\n // Generic statuses\n active: 'success',\n inactive: 'secondary',\n draft: 'secondary',\n archived: 'outline',\n error: 'destructive',\n failed: 'destructive',\n processing: 'warning',\n completed: 'success',\n};\n\nfunction formatStatusLabel(status: string): string {\n return status.replace(/_/g, ' ').replace(/\\b\\w/g, (char) => char.toUpperCase());\n}\n\nexport const StatusBadge: FC<StatusBadgeProps> = ({ status, className }) => {\n const key = status.toLowerCase();\n const variant = statusVariantMap[key] || 'secondary';\n const isLive = liveStatuses.has(key);\n\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium',\n variantStyles[variant],\n className\n )}\n >\n {isLive && (\n <span\n aria-hidden=\"true\"\n className=\"size-1.5 rounded-full bg-current motion-safe:animate-vc-glow-pulse\"\n />\n )}\n {formatStatusLabel(status)}\n </span>\n );\n};\n"],"mappings":";;;AAkBA,IAAM,IAA8C;CAClD,SAAS;CACT,SAAS;CACT,aAAa;CACb,WAAW;CACX,MAAM;CACN,SAAS;CACV,EAIK,IAAe,IAAI,IAAI;CAC3B;CACA;CACA;CACA;CACA;CACA;CACD,CAAC,EAEI,IAAiD;CAErD,MAAM;CACN,QAAQ;CACR,MAAM;CACN,oBAAoB;CAGpB,SAAS;CACT,WAAW;CACX,WAAW;CACX,OAAO;CACP,kBAAkB;CAClB,WAAW;CACX,WAAW;CACX,UAAU;CAGV,QAAQ;CACR,WAAW;CAGX,QAAQ;CACR,UAAU;CACV,OAAO;CACP,UAAU;CACV,OAAO;CACP,QAAQ;CACR,YAAY;CACZ,WAAW;CACZ;AAED,SAAS,EAAkB,GAAwB;AACjD,QAAO,EAAO,QAAQ,MAAM,IAAI,CAAC,QAAQ,UAAU,MAAS,EAAK,aAAa,CAAC;;AAGjF,IAAa,KAAqC,EAAE,WAAQ,mBAAgB;CAC1E,IAAM,IAAM,EAAO,aAAa,EAC1B,IAAU,EAAiB,MAAQ,aACnC,IAAS,EAAa,IAAI,EAAI;AAEpC,QACE,kBAAC,QAAD;EACE,WAAW,EACT,mFACA,EAAc,IACd,EACD;YALH,CAOG,KACC,kBAAC,QAAD;GACE,eAAY;GACZ,WAAU;GACV,CAAA,EAEH,EAAkB,EAAO,CACrB"}
1
+ {"version":3,"file":"StatusBadge.js","names":[],"sources":["../../../src/kadaikodi/components/StatusBadge.tsx"],"sourcesContent":["/**\n * Status Badge Component\n * @module kadaikodi/components\n *\n * A colored badge based on status value with semantic color mapping\n * for various order, cart, and investment statuses.\n */\n\nimport type { FC } from 'react';\nimport { cn } from '../utils/cn';\nimport { useTr } from '../../shared/hooks/useTr';\n\ninterface StatusBadgeProps {\n status: string;\n className?: string;\n}\n\ntype BadgeVariant = 'success' | 'warning' | 'destructive' | 'secondary' | 'info' | 'outline';\n\nconst variantStyles: Record<BadgeVariant, string> = {\n success: 'bg-status-success-bg-subtle text-status-success-text',\n warning: 'bg-status-warning-bg-subtle text-status-warning-text',\n destructive: 'bg-status-error-bg-subtle text-status-error-text',\n secondary: 'bg-bg-sunken text-text-secondary',\n info: 'bg-[var(--color-accent-soft)] text-text-primary',\n outline: 'border border-border-seam text-text-primary',\n};\n\n// Statuses that represent a \"live\" / in-progress condition get a subtle,\n// opacity-only glow pulse (reduced-motion safe via motion-safe:).\nconst liveStatuses = new Set([\n 'open',\n 'active',\n 'preparing',\n 'out_for_delivery',\n 'processing',\n 'returning',\n 'in_progress',\n]);\n\nconst statusVariantMap: Record<string, BadgeVariant> = {\n // Cart statuses\n open: 'success',\n closed: 'destructive',\n busy: 'warning',\n temporarily_closed: 'warning',\n\n // Order statuses\n pending: 'secondary',\n confirmed: 'info',\n preparing: 'warning',\n ready: 'success',\n out_for_delivery: 'info',\n delivered: 'success',\n cancelled: 'destructive',\n refunded: 'outline',\n\n // Payment statuses (KadaikodiPaymentStatus)\n paid: 'success',\n\n // Provider lifecycle (KadaikodiProviderStatus)\n verified: 'success',\n paused: 'warning',\n suspended: 'destructive',\n\n // Worker task statuses (KadaikodiWorkerTaskStatus)\n in_progress: 'info',\n blocked: 'warning',\n\n // Investment statuses\n funded: 'success',\n returning: 'info',\n\n // Generic statuses\n active: 'success',\n inactive: 'secondary',\n draft: 'secondary',\n archived: 'outline',\n error: 'destructive',\n failed: 'destructive',\n processing: 'warning',\n completed: 'success',\n};\n\nfunction formatStatusLabel(status: string): string {\n return status.replace(/_/g, ' ').replace(/\\b\\w/g, (char) => char.toUpperCase());\n}\n\nfunction getStatusLabel(tr: ReturnType<typeof useTr>, status: string): string {\n const key = status.toLowerCase();\n // Try a namespaced translation key first; fall back to the English-formatted label.\n return tr(`kadaikodi.status.${key}`, formatStatusLabel(status));\n}\n\nexport const StatusBadge: FC<StatusBadgeProps> = ({ status, className }) => {\n const tr = useTr();\n const key = status.toLowerCase();\n const variant = statusVariantMap[key] || 'secondary';\n const isLive = liveStatuses.has(key);\n\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium',\n variantStyles[variant],\n className\n )}\n >\n {isLive && (\n <span\n aria-hidden=\"true\"\n className=\"size-1.5 rounded-full bg-current motion-safe:animate-vc-glow-pulse\"\n />\n )}\n {getStatusLabel(tr, status)}\n </span>\n );\n};\n"],"mappings":";;;;AAmBA,IAAM,IAA8C;CAClD,SAAS;CACT,SAAS;CACT,aAAa;CACb,WAAW;CACX,MAAM;CACN,SAAS;CACV,EAIK,IAAe,IAAI,IAAI;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC,EAEI,IAAiD;CAErD,MAAM;CACN,QAAQ;CACR,MAAM;CACN,oBAAoB;CAGpB,SAAS;CACT,WAAW;CACX,WAAW;CACX,OAAO;CACP,kBAAkB;CAClB,WAAW;CACX,WAAW;CACX,UAAU;CAGV,MAAM;CAGN,UAAU;CACV,QAAQ;CACR,WAAW;CAGX,aAAa;CACb,SAAS;CAGT,QAAQ;CACR,WAAW;CAGX,QAAQ;CACR,UAAU;CACV,OAAO;CACP,UAAU;CACV,OAAO;CACP,QAAQ;CACR,YAAY;CACZ,WAAW;CACZ;AAED,SAAS,EAAkB,GAAwB;AACjD,QAAO,EAAO,QAAQ,MAAM,IAAI,CAAC,QAAQ,UAAU,MAAS,EAAK,aAAa,CAAC;;AAGjF,SAAS,EAAe,GAA8B,GAAwB;AAG5E,QAAO,EAAG,oBAFE,EAAO,aAAa,IAEK,EAAkB,EAAO,CAAC;;AAGjE,IAAa,KAAqC,EAAE,WAAQ,mBAAgB;CAC1E,IAAM,IAAK,GAAO,EACZ,IAAM,EAAO,aAAa,EAC1B,IAAU,EAAiB,MAAQ,aACnC,IAAS,EAAa,IAAI,EAAI;AAEpC,QACE,kBAAC,QAAD;EACE,WAAW,EACT,mFACA,EAAc,IACd,EACD;YALH,CAOG,KACC,kBAAC,QAAD;GACE,eAAY;GACZ,WAAU;GACV,CAAA,EAEH,EAAe,GAAI,EAAO,CACtB"}