@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.
- package/dist/kadaikodi/KadaikodiRoot.d.ts.map +1 -1
- package/dist/kadaikodi/KadaikodiRoot.js +69 -72
- package/dist/kadaikodi/KadaikodiRoot.js.map +1 -1
- package/dist/kadaikodi/components/InvestmentCard.d.ts.map +1 -1
- package/dist/kadaikodi/components/InvestmentCard.js +58 -54
- package/dist/kadaikodi/components/InvestmentCard.js.map +1 -1
- package/dist/kadaikodi/components/OrderCard.d.ts.map +1 -1
- package/dist/kadaikodi/components/StatusBadge.d.ts.map +1 -1
- package/dist/kadaikodi/components/StatusBadge.js +25 -14
- package/dist/kadaikodi/components/StatusBadge.js.map +1 -1
- package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts +24 -0
- package/dist/kadaikodi/hooks/useKadaikodiApi.d.ts.map +1 -1
- package/dist/kadaikodi/hooks/useKadaikodiApi.js +177 -132
- package/dist/kadaikodi/hooks/useKadaikodiApi.js.map +1 -1
- package/dist/kadaikodi/pages/HomePage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/HomePage.js +284 -282
- package/dist/kadaikodi/pages/HomePage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts +7 -2
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js +319 -228
- package/dist/kadaikodi/pages/admin/AdminAnalyticsPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js +1 -1
- package/dist/kadaikodi/pages/admin/AdminOrdersPage.js.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts +10 -4
- package/dist/kadaikodi/pages/admin/CartManagementPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/admin/CartManagementPage.js +320 -279
- package/dist/kadaikodi/pages/admin/CartManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js +365 -292
- package/dist/kadaikodi/pages/cart-owner/MerchantOnboardingPage.js.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts +7 -2
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js +300 -158
- package/dist/kadaikodi/pages/cart-owner/StaffManagementPage.js.map +1 -1
- package/dist/kadaikodi/pages/common/SettingsPage.js +286 -286
- package/dist/kadaikodi/pages/common/SettingsPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDetailPage.js +3 -3
- package/dist/kadaikodi/pages/customer/CartDetailPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts +13 -3
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js +270 -220
- package/dist/kadaikodi/pages/customer/CartDiscoveryPage.js.map +1 -1
- package/dist/kadaikodi/pages/customer/CustomerDashboard.js +97 -97
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js +1 -1
- package/dist/kadaikodi/pages/customer/OrderTrackingPage.js.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts +5 -3
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.d.ts.map +1 -1
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js +286 -199
- package/dist/kadaikodi/pages/worker/TaskDetailsPage.js.map +1 -1
- package/dist/kadaikodi/types/index.d.ts +46 -2
- package/dist/kadaikodi/types/index.d.ts.map +1 -1
- package/dist/shared/hooks/useTr.d.ts +2 -0
- package/dist/shared/hooks/useTr.d.ts.map +1 -0
- package/dist/shared/hooks/useTr.js +14 -0
- package/dist/shared/hooks/useTr.js.map +1 -0
- 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,
|
|
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 {
|
|
3
|
-
import {
|
|
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 {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
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
|
|
10
|
+
var w = new i({ defaultOptions: { queries: {
|
|
11
11
|
staleTime: 300 * 1e3,
|
|
12
12
|
retry: 1
|
|
13
|
-
} } }),
|
|
14
|
-
let { registerNavItems:
|
|
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 (
|
|
16
|
+
if (T) return T([
|
|
20
17
|
{
|
|
21
18
|
id: "kadaikodi-home",
|
|
22
|
-
label:
|
|
23
|
-
path:
|
|
24
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
31
|
-
path:
|
|
32
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
39
|
-
path:
|
|
40
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
47
|
-
path:
|
|
48
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
55
|
-
path:
|
|
56
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
63
|
-
path:
|
|
64
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
71
|
-
path:
|
|
72
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
79
|
-
path:
|
|
80
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
87
|
-
path:
|
|
88
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
95
|
-
path:
|
|
96
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
103
|
-
path:
|
|
104
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
111
|
-
path:
|
|
112
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
119
|
-
path:
|
|
120
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
127
|
-
path:
|
|
128
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
135
|
-
path:
|
|
136
|
-
icon: /* @__PURE__ */
|
|
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:
|
|
143
|
-
path:
|
|
144
|
-
icon: /* @__PURE__ */
|
|
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
|
-
|
|
151
|
-
|
|
152
|
-
|
|
147
|
+
T,
|
|
148
|
+
D,
|
|
149
|
+
O
|
|
153
150
|
]), r(() => {
|
|
154
|
-
if (
|
|
151
|
+
if (E) return E([{
|
|
155
152
|
id: "kadaikodi-status",
|
|
156
|
-
label:
|
|
153
|
+
label: O("kadaikodi.footer.ready", "Kadaikodi Ready"),
|
|
157
154
|
type: "status",
|
|
158
155
|
order: 10,
|
|
159
156
|
section: "left"
|
|
160
157
|
}]);
|
|
161
|
-
}, [
|
|
162
|
-
client:
|
|
163
|
-
children: /* @__PURE__ */ C
|
|
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__ */
|
|
164
|
+
children: /* @__PURE__ */ S(e, {
|
|
168
165
|
...i,
|
|
169
|
-
children: /* @__PURE__ */
|
|
166
|
+
children: /* @__PURE__ */ S(n, {})
|
|
170
167
|
})
|
|
171
168
|
})
|
|
172
169
|
});
|
|
173
170
|
};
|
|
174
171
|
//#endregion
|
|
175
|
-
export {
|
|
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;
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
-
|
|
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:
|
|
30
|
+
currency: f,
|
|
27
31
|
maximumFractionDigits: 0
|
|
28
32
|
}).format(e);
|
|
29
|
-
return /* @__PURE__ */
|
|
33
|
+
return /* @__PURE__ */ s(c, {
|
|
30
34
|
treatment: "plain",
|
|
31
35
|
role: "button",
|
|
32
36
|
tabIndex: 0,
|
|
33
|
-
onClick: () =>
|
|
37
|
+
onClick: () => g?.(r),
|
|
34
38
|
onKeyDown: (e) => {
|
|
35
|
-
(e.key === "Enter" || e.key === " ") && (e.preventDefault(),
|
|
39
|
+
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), g?.(r));
|
|
36
40
|
},
|
|
37
|
-
className:
|
|
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__ */
|
|
43
|
+
/* @__PURE__ */ s("div", {
|
|
40
44
|
className: "flex items-start justify-between",
|
|
41
|
-
children: [/* @__PURE__ */
|
|
45
|
+
children: [/* @__PURE__ */ o("h3", {
|
|
42
46
|
className: "text-base font-semibold text-text-primary truncate",
|
|
43
|
-
children:
|
|
44
|
-
}), /* @__PURE__ */
|
|
47
|
+
children: i
|
|
48
|
+
}), /* @__PURE__ */ o(n, { status: h })]
|
|
45
49
|
}),
|
|
46
|
-
/* @__PURE__ */
|
|
50
|
+
/* @__PURE__ */ s("div", {
|
|
47
51
|
className: "mt-4",
|
|
48
52
|
children: [
|
|
49
|
-
/* @__PURE__ */
|
|
53
|
+
/* @__PURE__ */ s("div", {
|
|
50
54
|
className: "flex items-center justify-between text-sm",
|
|
51
|
-
children: [/* @__PURE__ */
|
|
55
|
+
children: [/* @__PURE__ */ o("span", {
|
|
52
56
|
className: "text-text-secondary",
|
|
53
|
-
children: "Raised"
|
|
54
|
-
}), /* @__PURE__ */
|
|
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__ */
|
|
63
|
+
/* @__PURE__ */ o("div", {
|
|
60
64
|
className: "mt-1.5 h-2 w-full rounded-full bg-bg-sunken overflow-hidden",
|
|
61
|
-
children: /* @__PURE__ */
|
|
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__ */
|
|
70
|
+
/* @__PURE__ */ s("div", {
|
|
67
71
|
className: "mt-1.5 flex items-center justify-between text-xs text-text-secondary",
|
|
68
|
-
children: [/* @__PURE__ */
|
|
72
|
+
children: [/* @__PURE__ */ o("span", { children: S(d) }), /* @__PURE__ */ o("span", { children: S(u) })]
|
|
69
73
|
})
|
|
70
74
|
]
|
|
71
75
|
}),
|
|
72
|
-
/* @__PURE__ */
|
|
76
|
+
/* @__PURE__ */ s("div", {
|
|
73
77
|
className: "mt-4 flex items-center justify-between",
|
|
74
|
-
children: [/* @__PURE__ */
|
|
78
|
+
children: [/* @__PURE__ */ s("div", {
|
|
75
79
|
className: "flex items-center gap-1.5 text-sm",
|
|
76
80
|
children: [
|
|
77
|
-
/* @__PURE__ */ a
|
|
78
|
-
/* @__PURE__ */
|
|
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:
|
|
84
|
+
children: p
|
|
81
85
|
}),
|
|
82
|
-
/* @__PURE__ */
|
|
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__ */
|
|
88
|
-
className:
|
|
89
|
-
children: [/* @__PURE__ */
|
|
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 {
|
|
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\
|
|
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;
|
|
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;
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
|
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
|
-
},
|
|
12
|
+
}, a = new Set([
|
|
12
13
|
"open",
|
|
13
14
|
"active",
|
|
14
15
|
"preparing",
|
|
15
16
|
"out_for_delivery",
|
|
16
17
|
"processing",
|
|
17
|
-
"returning"
|
|
18
|
-
|
|
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
|
|
50
|
+
function s(e) {
|
|
43
51
|
return e.replace(/_/g, " ").replace(/\b\w/g, (e) => e.toUpperCase());
|
|
44
52
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
}),
|
|
63
|
+
}), c(u, s)]
|
|
53
64
|
});
|
|
54
65
|
};
|
|
55
66
|
//#endregion
|
|
56
|
-
export {
|
|
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 {
|
|
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"}
|