@microcosmmoney/portal-react 3.12.2 → 3.12.4

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 (30) hide show
  1. package/dist/components/auction/auction-page.js +9 -9
  2. package/dist/components/dashboard/assets-summary.js +2 -2
  3. package/dist/components/dashboard/dashboard-overview.js +1 -1
  4. package/dist/components/dashboard/ecosystem-stats.js +2 -2
  5. package/dist/components/dashboard/lock-periods.js +1 -1
  6. package/dist/components/dashboard/market-overview-bar.js +3 -3
  7. package/dist/components/dashboard/mcc-token-stats.js +1 -1
  8. package/dist/components/dashboard/mcd-stats.js +1 -1
  9. package/dist/components/dashboard/mining-weight.js +1 -1
  10. package/dist/components/dashboard/minting-stats.js +2 -2
  11. package/dist/components/dashboard/my-mining.js +1 -1
  12. package/dist/components/dashboard/price-chart.js +3 -3
  13. package/dist/components/dashboard/quick-actions.js +2 -2
  14. package/dist/components/fragment/fragment-page.js +1 -1
  15. package/dist/components/income/manager-income-page.js +3 -3
  16. package/dist/components/lending/lending-page.js +1 -1
  17. package/dist/components/mcd/mcd-page.js +8 -8
  18. package/dist/components/mining/mining-page.js +2 -2
  19. package/dist/components/organization/organization-page.js +18 -18
  20. package/dist/components/profile/email-change-card.js +2 -2
  21. package/dist/components/profile/profile-page.js +3 -3
  22. package/dist/components/profile/two-factor-settings.js +1 -1
  23. package/dist/components/queue/queue-status-page.js +2 -2
  24. package/dist/components/reincarnation/reincarnation-page.js +1 -1
  25. package/dist/components/rewards/rewards-page.js +1 -1
  26. package/dist/components/stations/station-list-page.js +2 -2
  27. package/dist/components/territory/territory-page.js +18 -18
  28. package/dist/components/voting/voting-page.js +1 -1
  29. package/dist/components/wallet/wallet-page.js +8 -8
  30. package/package.json +1 -1
@@ -65,7 +65,7 @@ function TerritoryCard({ unit, onClick }) {
65
65
  const occupancy = unit.max_capacity && unit.max_capacity > 0
66
66
  ? Math.round(((unit.member_count ?? 0) / unit.max_capacity) * 100)
67
67
  : 0;
68
- return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 cursor-pointer transition-colors overflow-hidden", onClick: onClick, children: [(0, jsx_runtime_1.jsx)("div", { className: "aspect-[4/3] bg-neutral-800 relative flex items-center justify-center overflow-hidden", children: unit.image_url ? ((0, jsx_runtime_1.jsx)("img", { src: unit.image_url, alt: unit.unit_name, className: "w-full h-full object-cover" })) : ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center justify-center text-neutral-600", children: [getTypeIcon(unitType, 'w-10 h-10'), (0, jsx_runtime_1.jsx)("span", { className: "text-xs mt-2 capitalize", children: unitType })] })) }), (0, jsx_runtime_1.jsxs)("div", { className: "p-3 space-y-2", style: { backgroundColor: '#0a0e14' }, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 flex-wrap", children: [(0, jsx_runtime_1.jsx)("span", { className: `border px-1.5 py-0.5 rounded text-xs capitalize ${getTypeBadgeColor(unitType)}`, children: unitType }), (0, jsx_runtime_1.jsxs)("span", { className: "text-xs text-yellow-400", children: [(0, jsx_runtime_1.jsx)(IconZap, { className: "w-3 h-3 inline-block -mt-0.5 mr-0.5" }), "+", techBonus, "%"] }), unit.short_id && ((0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-500 font-mono ml-auto", children: unit.short_id }))] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-white font-bold text-sm truncate", children: unit.unit_name }), unit.full_path && ((0, jsx_runtime_1.jsx)("p", { className: "text-neutral-500 text-xs font-mono truncate", children: unit.full_path }))] }), unit.description && ((0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400 text-xs line-clamp-2", children: unit.description })), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-4 pt-2 border-t border-neutral-700/50 text-xs text-neutral-400", children: [(0, jsx_runtime_1.jsxs)("span", { className: "flex items-center gap-1", children: [(0, jsx_runtime_1.jsx)(IconUsers, { className: "w-3.5 h-3.5" }), fmt(unit.member_count ?? 0)] }), (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center gap-1", children: [(0, jsx_runtime_1.jsx)(IconVault, { className: "w-3.5 h-3.5" }), fmt(Math.round(unit.vault_balance ?? 0)), " MCD"] }), (0, jsx_runtime_1.jsxs)("span", { className: "ml-auto", children: [occupancy, "%"] })] })] })] }));
68
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 cursor-pointer transition-colors overflow-hidden", onClick: onClick, children: [(0, jsx_runtime_1.jsx)("div", { className: "aspect-[4/3] bg-neutral-800 relative flex items-center justify-center overflow-hidden", children: unit.image_url ? ((0, jsx_runtime_1.jsx)("img", { src: unit.image_url, alt: unit.unit_name, className: "w-full h-full object-cover" })) : ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center justify-center text-neutral-600", children: [getTypeIcon(unitType, 'w-10 h-10'), (0, jsx_runtime_1.jsx)("span", { className: "text-xs mt-2 capitalize", children: unitType })] })) }), (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 space-y-1.5 2xs:space-y-2 min-w-0", style: { backgroundColor: '#0a0e14' }, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 flex-wrap min-w-0", children: [(0, jsx_runtime_1.jsx)("span", { className: `border px-1 2xs:px-1.5 py-0.5 rounded text-[10px] 2xs:text-xs capitalize ${getTypeBadgeColor(unitType)}`, children: unitType }), (0, jsx_runtime_1.jsxs)("span", { className: "text-[10px] 2xs:text-xs text-yellow-400 whitespace-nowrap", children: [(0, jsx_runtime_1.jsx)(IconZap, { className: "w-2.5 h-2.5 2xs:w-3 2xs:h-3 inline-block -mt-0.5 mr-0.5" }), "+", techBonus, "%"] }), unit.short_id && ((0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs text-neutral-500 font-mono ml-auto truncate", children: unit.short_id }))] }), (0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-white font-bold text-xs 2xs:text-sm truncate", children: unit.unit_name }), unit.full_path && ((0, jsx_runtime_1.jsx)("p", { className: "text-neutral-500 text-[10px] 2xs:text-xs font-mono truncate", children: unit.full_path }))] }), unit.description && ((0, jsx_runtime_1.jsx)("p", { className: "hidden 2xs:block text-neutral-400 text-[10px] 2xs:text-xs line-clamp-2", children: unit.description })), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 2xs:gap-4 pt-1.5 2xs:pt-2 border-t border-neutral-700/50 text-[10px] 2xs:text-xs text-neutral-400 min-w-0", children: [(0, jsx_runtime_1.jsxs)("span", { className: "flex items-center gap-1 min-w-0 truncate", children: [(0, jsx_runtime_1.jsx)(IconUsers, { className: "w-3 h-3 2xs:w-3.5 2xs:h-3.5 shrink-0" }), fmt(unit.member_count ?? 0)] }), (0, jsx_runtime_1.jsxs)("span", { className: "flex items-center gap-1 min-w-0 truncate", children: [(0, jsx_runtime_1.jsx)(IconVault, { className: "w-3 h-3 2xs:w-3.5 2xs:h-3.5 shrink-0" }), fmt(Math.round(unit.vault_balance ?? 0)), " MCD"] }), (0, jsx_runtime_1.jsxs)("span", { className: "ml-auto shrink-0", children: [occupancy, "%"] })] })] })] }));
69
69
  }
70
70
  function IncomeChart({ territoryId }) {
71
71
  const { data: raw, loading } = (0, auth_react_1.useTerritoryIncome)(territoryId, '30d');
@@ -85,10 +85,10 @@ function IncomeChart({ territoryId }) {
85
85
  return raw.data ?? [];
86
86
  }, [raw]);
87
87
  if (loading)
88
- return (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-6", children: (0, jsx_runtime_1.jsx)("div", { className: "h-64 flex items-center justify-center", children: (0, jsx_runtime_1.jsx)(Spinner, {}) }) });
88
+ return (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-2 2xs:p-3 sm:p-4 md:p-6", children: (0, jsx_runtime_1.jsx)("div", { className: "h-[180px] 2xs:h-[220px] sm:h-64 flex items-center justify-center", children: (0, jsx_runtime_1.jsx)(Spinner, {}) }) });
89
89
  if (chartData.length === 0)
90
90
  return null;
91
- return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-4 flex items-center gap-2 text-sm", children: [(0, jsx_runtime_1.jsx)(IconZap, { className: "w-4 h-4 text-cyan-400" }), "Income Trend (30D)"] }), (0, jsx_runtime_1.jsx)("div", { className: "h-64", children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: "100%", children: (0, jsx_runtime_1.jsxs)(recharts_1.LineChart, { data: chartData, margin: { top: 5, right: 10, left: 0, bottom: 5 }, children: [(0, jsx_runtime_1.jsx)(recharts_1.CartesianGrid, { strokeDasharray: "3 3", stroke: "#404040" }), (0, jsx_runtime_1.jsx)(recharts_1.XAxis, { dataKey: "date", tick: { fill: '#a3a3a3', fontSize: 11 }, axisLine: { stroke: '#525252' } }), (0, jsx_runtime_1.jsx)(recharts_1.YAxis, { tick: { fill: '#a3a3a3', fontSize: 11 }, axisLine: { stroke: '#525252' } }), (0, jsx_runtime_1.jsx)(recharts_1.Tooltip, { contentStyle: { backgroundColor: '#171717', border: '1px solid #404040', borderRadius: '8px' }, labelStyle: { color: '#a3a3a3' }, itemStyle: { color: '#fff' } }), (0, jsx_runtime_1.jsx)(recharts_1.Line, { type: "monotone", dataKey: "income", name: "Daily Income", stroke: "#22d3ee", strokeWidth: 2, dot: false, activeDot: { r: 4 } }), (0, jsx_runtime_1.jsx)(recharts_1.Line, { type: "monotone", dataKey: "cumulative", name: "Cumulative", stroke: "#ffffff", strokeWidth: 2, dot: false, activeDot: { r: 4 } })] }) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-center gap-6 mt-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-3 h-0.5 bg-cyan-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400", children: "Daily Income" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-3 h-0.5 bg-white" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400", children: "Cumulative" })] })] })] }));
91
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-2 2xs:mb-3 sm:mb-4 flex items-center gap-1.5 2xs:gap-2 text-xs 2xs:text-sm sm:text-base", children: [(0, jsx_runtime_1.jsx)(IconZap, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-cyan-400 shrink-0" }), "Income Trend (30D)"] }), (0, jsx_runtime_1.jsx)("div", { className: "h-[180px] 2xs:h-[220px] sm:h-[300px]", children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: "100%", children: (0, jsx_runtime_1.jsxs)(recharts_1.LineChart, { data: chartData, margin: { top: 5, right: 10, left: 0, bottom: 5 }, children: [(0, jsx_runtime_1.jsx)(recharts_1.CartesianGrid, { strokeDasharray: "3 3", stroke: "#404040" }), (0, jsx_runtime_1.jsx)(recharts_1.XAxis, { dataKey: "date", tick: { fill: '#a3a3a3', fontSize: 11 }, axisLine: { stroke: '#525252' } }), (0, jsx_runtime_1.jsx)(recharts_1.YAxis, { tick: { fill: '#a3a3a3', fontSize: 11 }, axisLine: { stroke: '#525252' } }), (0, jsx_runtime_1.jsx)(recharts_1.Tooltip, { contentStyle: { backgroundColor: '#171717', border: '1px solid #404040', borderRadius: '8px' }, labelStyle: { color: '#a3a3a3' }, itemStyle: { color: '#fff' } }), (0, jsx_runtime_1.jsx)(recharts_1.Line, { type: "monotone", dataKey: "income", name: "Daily Income", stroke: "#22d3ee", strokeWidth: 2, dot: false, activeDot: { r: 4 } }), (0, jsx_runtime_1.jsx)(recharts_1.Line, { type: "monotone", dataKey: "cumulative", name: "Cumulative", stroke: "#ffffff", strokeWidth: 2, dot: false, activeDot: { r: 4 } })] }) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-center gap-3 2xs:gap-4 sm:gap-6 mt-2 2xs:mt-3 flex-wrap", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-2.5 2xs:w-3 h-0.5 bg-cyan-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs text-neutral-400", children: "Daily Income" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-2.5 2xs:w-3 h-0.5 bg-white" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs text-neutral-400", children: "Cumulative" })] })] })] }));
92
92
  }
93
93
  const RANK_BADGE = { 1: 'bg-cyan-400/20 text-cyan-400', 2: 'bg-white/20 text-white', 3: 'bg-cyan-300/20 text-cyan-300' };
94
94
  function MemberRanking({ territoryId }) {
@@ -99,13 +99,13 @@ function MemberRanking({ territoryId }) {
99
99
  return Array.isArray(raw) ? raw : raw.data ?? [];
100
100
  }, [raw]);
101
101
  if (loading)
102
- return (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-6", children: (0, jsx_runtime_1.jsx)("div", { className: "h-64 flex items-center justify-center", children: (0, jsx_runtime_1.jsx)(Spinner, {}) }) });
102
+ return (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-2 2xs:p-3 sm:p-4 md:p-6", children: (0, jsx_runtime_1.jsx)("div", { className: "h-[180px] 2xs:h-[220px] sm:h-64 flex items-center justify-center", children: (0, jsx_runtime_1.jsx)(Spinner, {}) }) });
103
103
  if (rankList.length === 0)
104
104
  return null;
105
- return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-4 flex items-center gap-2 text-sm", children: [(0, jsx_runtime_1.jsx)(IconShield, { className: "w-4 h-4 text-cyan-400" }), "Member Contribution Ranking"] }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-2", children: rankList.map((m, idx) => {
105
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-2 2xs:mb-3 sm:mb-4 flex items-center gap-1.5 2xs:gap-2 text-xs 2xs:text-sm sm:text-base", children: [(0, jsx_runtime_1.jsx)(IconShield, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-cyan-400 shrink-0" }), "Member Contribution Ranking"] }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-1.5 2xs:space-y-2", children: rankList.map((m, idx) => {
106
106
  const rank = m.rank ?? idx + 1;
107
107
  const name = m.nickname || m.display_name || 'Unknown';
108
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3 p-2 bg-neutral-800 rounded hover:bg-neutral-700 transition-colors", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-8 text-center", children: rank <= 3 ? ((0, jsx_runtime_1.jsxs)("span", { className: `inline-block px-1.5 py-0.5 rounded text-xs font-bold ${RANK_BADGE[rank] ?? ''}`, children: ["#", rank] })) : ((0, jsx_runtime_1.jsxs)("span", { className: "text-neutral-500 font-mono text-sm", children: ["#", rank] })) }), (0, jsx_runtime_1.jsx)("div", { className: "w-8 h-8 rounded-full bg-neutral-700 flex items-center justify-center text-xs text-white font-bold flex-shrink-0", children: name.slice(0, 2).toUpperCase() }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1 min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white text-sm truncate", children: name }), m.email && (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs truncate", children: m.email })] }), (0, jsx_runtime_1.jsxs)("div", { className: "text-right flex-shrink-0", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-white font-mono font-medium text-sm", children: (m.contribution ?? 0).toLocaleString() }), (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 text-xs ml-1", children: "MCD" })] })] }, m.user_id || idx));
108
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 2xs:gap-3 p-1.5 2xs:p-2 bg-neutral-800 rounded hover:bg-neutral-700 transition-colors min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-6 2xs:w-8 text-center shrink-0", children: rank <= 3 ? ((0, jsx_runtime_1.jsxs)("span", { className: `inline-block px-1 2xs:px-1.5 py-0.5 rounded text-[10px] 2xs:text-xs font-bold ${RANK_BADGE[rank] ?? ''}`, children: ["#", rank] })) : ((0, jsx_runtime_1.jsxs)("span", { className: "text-neutral-500 font-mono text-[10px] 2xs:text-xs sm:text-sm", children: ["#", rank] })) }), (0, jsx_runtime_1.jsx)("div", { className: "w-6 h-6 2xs:w-8 2xs:h-8 rounded-full bg-neutral-700 flex items-center justify-center text-[10px] 2xs:text-xs text-white font-bold flex-shrink-0", children: name.slice(0, 2).toUpperCase() }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1 min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm truncate", children: name }), m.email && (0, jsx_runtime_1.jsx)("div", { className: "hidden xs:block text-neutral-500 text-[10px] 2xs:text-xs truncate", children: m.email })] }), (0, jsx_runtime_1.jsxs)("div", { className: "text-right flex-shrink-0", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-white font-mono font-medium text-xs 2xs:text-sm", children: (m.contribution ?? 0).toLocaleString() }), (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 text-[10px] 2xs:text-xs ml-1", children: "MCD" })] })] }, m.user_id || idx));
109
109
  }) })] }));
110
110
  }
111
111
  function KPIHistoryChart({ territoryId }) {
@@ -119,12 +119,12 @@ function KPIHistoryChart({ territoryId }) {
119
119
  return raw.data ?? [];
120
120
  }, [raw]);
121
121
  if (loading)
122
- return (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-6", children: (0, jsx_runtime_1.jsx)("div", { className: "h-64 flex items-center justify-center", children: (0, jsx_runtime_1.jsx)(Spinner, {}) }) });
122
+ return (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg p-2 2xs:p-3 sm:p-4 md:p-6", children: (0, jsx_runtime_1.jsx)("div", { className: "h-[180px] 2xs:h-[220px] sm:h-64 flex items-center justify-center", children: (0, jsx_runtime_1.jsx)(Spinner, {}) }) });
123
123
  if (chartData.length === 0)
124
124
  return null;
125
125
  const gradMember = `kpi-member-${uid}`;
126
126
  const gradVolume = `kpi-volume-${uid}`;
127
- return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-4 flex items-center gap-2 text-sm", children: [(0, jsx_runtime_1.jsx)(IconEdit3, { className: "w-4 h-4 text-cyan-400" }), "KPI History"] }), (0, jsx_runtime_1.jsx)("div", { className: "h-64", children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: "100%", children: (0, jsx_runtime_1.jsxs)(recharts_1.AreaChart, { data: chartData, margin: { top: 5, right: 10, left: 0, bottom: 5 }, children: [(0, jsx_runtime_1.jsxs)("defs", { children: [(0, jsx_runtime_1.jsxs)("linearGradient", { id: gradMember, x1: "0", y1: "0", x2: "0", y2: "1", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "5%", stopColor: "#22d3ee", stopOpacity: 0.3 }), (0, jsx_runtime_1.jsx)("stop", { offset: "95%", stopColor: "#22d3ee", stopOpacity: 0 })] }), (0, jsx_runtime_1.jsxs)("linearGradient", { id: gradVolume, x1: "0", y1: "0", x2: "0", y2: "1", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "5%", stopColor: "#ffffff", stopOpacity: 0.3 }), (0, jsx_runtime_1.jsx)("stop", { offset: "95%", stopColor: "#ffffff", stopOpacity: 0 })] })] }), (0, jsx_runtime_1.jsx)(recharts_1.CartesianGrid, { strokeDasharray: "3 3", stroke: "#404040" }), (0, jsx_runtime_1.jsx)(recharts_1.XAxis, { dataKey: "date", tick: { fill: '#a3a3a3', fontSize: 11 }, axisLine: { stroke: '#525252' } }), (0, jsx_runtime_1.jsx)(recharts_1.YAxis, { domain: [0, 100], tick: { fill: '#a3a3a3', fontSize: 11 }, axisLine: { stroke: '#525252' }, tickFormatter: (v) => `${v}%` }), (0, jsx_runtime_1.jsx)(recharts_1.Tooltip, { contentStyle: { backgroundColor: '#171717', border: '1px solid #404040', borderRadius: '8px' }, labelStyle: { color: '#a3a3a3' }, formatter: (value) => [`${Number(value).toFixed(1)}%`, ''] }), (0, jsx_runtime_1.jsx)(recharts_1.Area, { type: "monotone", dataKey: "member_progress", name: "Member Progress", stroke: "#22d3ee", strokeWidth: 2, fill: `url(#${gradMember})` }), (0, jsx_runtime_1.jsx)(recharts_1.Area, { type: "monotone", dataKey: "volume_progress", name: "Volume Progress", stroke: "#ffffff", strokeWidth: 2, fill: `url(#${gradVolume})` })] }) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-center gap-6 mt-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-3 h-3 rounded-full bg-cyan-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400", children: "Member Progress" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-3 h-3 rounded-full bg-white" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400", children: "Volume Progress" })] })] })] }));
127
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-2 2xs:mb-3 sm:mb-4 flex items-center gap-1.5 2xs:gap-2 text-xs 2xs:text-sm sm:text-base", children: [(0, jsx_runtime_1.jsx)(IconEdit3, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-cyan-400 shrink-0" }), "KPI History"] }), (0, jsx_runtime_1.jsx)("div", { className: "h-[180px] 2xs:h-[220px] sm:h-[300px]", children: (0, jsx_runtime_1.jsx)(recharts_1.ResponsiveContainer, { width: "100%", height: "100%", children: (0, jsx_runtime_1.jsxs)(recharts_1.AreaChart, { data: chartData, margin: { top: 5, right: 10, left: 0, bottom: 5 }, children: [(0, jsx_runtime_1.jsxs)("defs", { children: [(0, jsx_runtime_1.jsxs)("linearGradient", { id: gradMember, x1: "0", y1: "0", x2: "0", y2: "1", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "5%", stopColor: "#22d3ee", stopOpacity: 0.3 }), (0, jsx_runtime_1.jsx)("stop", { offset: "95%", stopColor: "#22d3ee", stopOpacity: 0 })] }), (0, jsx_runtime_1.jsxs)("linearGradient", { id: gradVolume, x1: "0", y1: "0", x2: "0", y2: "1", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "5%", stopColor: "#ffffff", stopOpacity: 0.3 }), (0, jsx_runtime_1.jsx)("stop", { offset: "95%", stopColor: "#ffffff", stopOpacity: 0 })] })] }), (0, jsx_runtime_1.jsx)(recharts_1.CartesianGrid, { strokeDasharray: "3 3", stroke: "#404040" }), (0, jsx_runtime_1.jsx)(recharts_1.XAxis, { dataKey: "date", tick: { fill: '#a3a3a3', fontSize: 11 }, axisLine: { stroke: '#525252' } }), (0, jsx_runtime_1.jsx)(recharts_1.YAxis, { domain: [0, 100], tick: { fill: '#a3a3a3', fontSize: 11 }, axisLine: { stroke: '#525252' }, tickFormatter: (v) => `${v}%` }), (0, jsx_runtime_1.jsx)(recharts_1.Tooltip, { contentStyle: { backgroundColor: '#171717', border: '1px solid #404040', borderRadius: '8px' }, labelStyle: { color: '#a3a3a3' }, formatter: (value) => [`${Number(value).toFixed(1)}%`, ''] }), (0, jsx_runtime_1.jsx)(recharts_1.Area, { type: "monotone", dataKey: "member_progress", name: "Member Progress", stroke: "#22d3ee", strokeWidth: 2, fill: `url(#${gradMember})` }), (0, jsx_runtime_1.jsx)(recharts_1.Area, { type: "monotone", dataKey: "volume_progress", name: "Volume Progress", stroke: "#ffffff", strokeWidth: 2, fill: `url(#${gradVolume})` })] }) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-center gap-3 2xs:gap-4 sm:gap-6 mt-2 2xs:mt-3 flex-wrap", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-2.5 h-2.5 2xs:w-3 2xs:h-3 rounded-full bg-cyan-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs text-neutral-400", children: "Member Progress" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-2.5 h-2.5 2xs:w-3 2xs:h-3 rounded-full bg-white" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs text-neutral-400", children: "Volume Progress" })] })] })] }));
128
128
  }
129
129
  function EditTerritoryDialog({ territory, open, onClose, onSaved }) {
130
130
  const { update, loading: updating } = (0, auth_react_1.useTerritoryUpdate)();
@@ -148,7 +148,7 @@ function EditTerritoryDialog({ territory, open, onClose, onSaved }) {
148
148
  }, [update, territory.unit_id, name, desc, onSaved, onClose]);
149
149
  if (!open)
150
150
  return null;
151
- return ((0, jsx_runtime_1.jsxs)("div", { className: "fixed inset-0 z-50 flex items-center justify-center", onClick: onClose, children: [(0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 bg-black/60" }), (0, jsx_runtime_1.jsxs)("div", { className: "relative bg-neutral-900 border border-neutral-700 rounded-lg w-full max-w-lg p-6 space-y-4 mx-4", onClick: (e) => e.stopPropagation(), children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-white font-bold text-lg", children: "Edit Territory" }), (0, jsx_runtime_1.jsxs)("p", { className: "text-neutral-500 text-xs font-mono mt-1", children: [territory.unit_type, " \u00B7 ", territory.full_path || territory.short_id || territory.unit_id] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-3", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "text-xs text-neutral-400 tracking-wider block mb-1", children: "unit_name *" }), (0, jsx_runtime_1.jsx)("input", { value: name, onChange: (e) => setName(e.target.value), className: "w-full bg-neutral-800 border border-neutral-700 text-white px-3 py-2 rounded text-sm focus:border-cyan-400/50 outline-none" })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "text-xs text-neutral-400 tracking-wider block mb-1", children: "description" }), (0, jsx_runtime_1.jsx)("textarea", { value: desc, onChange: (e) => setDesc(e.target.value), rows: 3, className: "w-full bg-neutral-800 border border-neutral-700 text-white px-3 py-2 rounded text-sm focus:border-cyan-400/50 outline-none resize-none" })] })] }), error && (0, jsx_runtime_1.jsx)("p", { className: "text-red-400 text-xs", children: error }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-end gap-3 pt-2", children: [(0, jsx_runtime_1.jsx)("button", { onClick: onClose, disabled: updating, className: "px-4 py-2 text-sm text-neutral-400 border border-neutral-700 rounded hover:bg-neutral-800 transition-colors", children: "Cancel" }), (0, jsx_runtime_1.jsx)("button", { onClick: handleSave, disabled: updating, className: "px-4 py-2 text-sm text-white bg-cyan-700 hover:bg-cyan-600 rounded transition-colors disabled:opacity-50", children: updating ? 'Saving...' : 'Save' })] })] })] }));
151
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-2 2xs:p-3", onClick: onClose, children: [(0, jsx_runtime_1.jsx)("div", { className: "fixed inset-0 bg-black/60" }), (0, jsx_runtime_1.jsxs)("div", { className: "relative bg-neutral-900 border border-neutral-700 rounded-lg w-full max-w-[calc(100vw-1rem)] 2xs:max-w-sm sm:max-w-md lg:max-w-lg p-2 2xs:p-3 sm:p-4 md:p-6 space-y-2 2xs:space-y-3 sm:space-y-4", onClick: (e) => e.stopPropagation(), children: [(0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-white font-bold text-base 2xs:text-lg truncate", children: "Edit Territory" }), (0, jsx_runtime_1.jsxs)("p", { className: "text-neutral-500 text-[10px] 2xs:text-xs font-mono mt-1 truncate", children: [territory.unit_type, " \u00B7 ", territory.full_path || territory.short_id || territory.unit_id] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-2 2xs:space-y-3", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "text-[10px] 2xs:text-xs text-neutral-400 tracking-wider block mb-1", children: "unit_name *" }), (0, jsx_runtime_1.jsx)("input", { value: name, onChange: (e) => setName(e.target.value), className: "w-full bg-neutral-800 border border-neutral-700 text-white px-2 2xs:px-3 py-1.5 2xs:py-2 rounded text-xs 2xs:text-sm focus:border-cyan-400/50 outline-none" })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "text-[10px] 2xs:text-xs text-neutral-400 tracking-wider block mb-1", children: "description" }), (0, jsx_runtime_1.jsx)("textarea", { value: desc, onChange: (e) => setDesc(e.target.value), rows: 3, className: "w-full bg-neutral-800 border border-neutral-700 text-white px-2 2xs:px-3 py-1.5 2xs:py-2 rounded text-xs 2xs:text-sm focus:border-cyan-400/50 outline-none resize-none" })] })] }), error && (0, jsx_runtime_1.jsx)("p", { className: "text-red-400 text-[10px] 2xs:text-xs", children: error }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-end gap-2 2xs:gap-3 pt-1 2xs:pt-2", children: [(0, jsx_runtime_1.jsx)("button", { onClick: onClose, disabled: updating, className: "px-3 2xs:px-4 py-1.5 2xs:py-2 text-xs 2xs:text-sm text-neutral-400 border border-neutral-700 rounded hover:bg-neutral-800 transition-colors whitespace-nowrap", children: "Cancel" }), (0, jsx_runtime_1.jsx)("button", { onClick: handleSave, disabled: updating, className: "px-3 2xs:px-4 py-1.5 2xs:py-2 text-xs 2xs:text-sm text-white bg-cyan-700 hover:bg-cyan-600 rounded transition-colors disabled:opacity-50 whitespace-nowrap", children: updating ? 'Saving...' : 'Save' })] })] })] }));
152
152
  }
153
153
  function TerritoryDetailView({ territoryId, territory, onBack }) {
154
154
  const { data: detailedStats, loading: statsLoading } = (0, auth_react_1.useTerritoryDetailedStats)(territoryId);
@@ -162,7 +162,7 @@ function TerritoryDetailView({ territoryId, territory, onBack }) {
162
162
  const maxCapacity = territory?.max_capacity ?? stats?.stats?.max_capacity ?? stats?.metrics?.max_capacity ?? 0;
163
163
  const vaultBalance = territory?.vault_balance ?? stats?.stats?.vault_balance ?? stats?.metrics?.vault_mcd ?? 0;
164
164
  const occupancy = maxCapacity > 0 ? Math.round((memberCount / maxCapacity) * 100) : 0;
165
- return ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("button", { onClick: onBack, className: "flex items-center gap-2 text-sm text-neutral-400 hover:text-white transition-colors bg-transparent border-none cursor-pointer", children: [(0, jsx_runtime_1.jsx)(IconArrowLeft, { className: "w-4 h-4" }), "Back to list"] }), territory && ((0, jsx_runtime_1.jsxs)("button", { onClick: () => setEditOpen(true), className: "flex items-center gap-1.5 px-3 py-1.5 text-sm text-white bg-cyan-700 hover:bg-cyan-600 rounded transition-colors", children: [(0, jsx_runtime_1.jsx)(IconEdit3, { className: "w-3.5 h-3.5" }), "Edit"] }))] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-6", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-5", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-28 h-28 bg-neutral-800 rounded-lg flex items-center justify-center overflow-hidden flex-shrink-0", children: territory?.image_url ? ((0, jsx_runtime_1.jsx)("img", { src: territory.image_url, alt: territory.unit_name, className: "w-full h-full object-cover" })) : ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center text-neutral-600", children: [getTypeIcon(unitType, 'w-10 h-10'), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] mt-1 capitalize", children: unitType })] })) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3 flex-wrap", children: [(0, jsx_runtime_1.jsx)("h2", { className: "text-xl font-bold text-white", children: territory?.unit_name ?? territoryId }), territory?.short_id && ((0, jsx_runtime_1.jsx)("span", { className: "text-sm text-neutral-400 font-mono bg-neutral-800 px-2 py-0.5 rounded", children: territory.short_id })), (0, jsx_runtime_1.jsx)("span", { className: `border px-1.5 py-0.5 rounded text-xs capitalize ${getTypeBadgeColor(unitType)}`, children: unitType }), occupancy >= 90 ? ((0, jsx_runtime_1.jsx)("span", { className: "text-xs bg-white/20 text-white px-1.5 py-0.5 rounded", children: "Qualified" })) : ((0, jsx_runtime_1.jsx)("span", { className: "text-xs bg-neutral-500/20 text-neutral-400 px-1.5 py-0.5 rounded", children: "Not Qualified" }))] }), territory?.manager_display_name && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 mt-2 text-xs text-emerald-400", children: [(0, jsx_runtime_1.jsx)(IconShield, { className: "w-3.5 h-3.5" }), "Magistrate: ", territory.manager_display_name] })), territory?.full_path && ((0, jsx_runtime_1.jsx)("p", { className: "text-neutral-500 text-sm font-mono mt-1", children: territory.full_path })), territory?.description && ((0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400 text-sm mt-2", children: territory.description }))] })] }) }), statsLoading ? ((0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4", children: [...Array(4)].map((_, i) => (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-24" }, i)) })) : ((0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)(IconUsers, { className: "w-5 h-5 text-neutral-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400", children: "Members" })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-2xl font-bold text-white font-mono", children: fmt(memberCount) }), (0, jsx_runtime_1.jsxs)("p", { className: "text-xs text-neutral-500 mt-1", children: ["Capacity: ", (0, jsx_runtime_1.jsx)("span", { className: "font-mono", children: fmt(maxCapacity) })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)(IconVault, { className: "w-5 h-5 text-neutral-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400", children: "Vault Balance" })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-2xl font-bold text-white font-mono", children: fmt(Math.round(vaultBalance)) }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs text-neutral-500 mt-1", children: "MCD" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)(IconZap, { className: "w-5 h-5 text-yellow-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400", children: "Tech Bonus" })] }), (0, jsx_runtime_1.jsxs)("p", { className: "text-2xl font-bold text-white font-mono", children: ["+", stats?.tech_bonus ?? techBonus, "%"] }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs text-neutral-500 mt-1", children: "Mining output bonus" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)(IconSettings, { className: "w-5 h-5 text-neutral-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400", children: "Occupancy" })] }), (0, jsx_runtime_1.jsxs)("p", { className: "text-2xl font-bold text-white font-mono", children: [occupancy, "%"] }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs text-neutral-500 mt-1", children: "Members / Capacity" })] })] })), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-4 flex items-center gap-2 text-sm", children: [(0, jsx_runtime_1.jsx)(IconEdit3, { className: "w-4 h-4 text-cyan-400" }), "KPI Progress"] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between text-sm mb-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400", children: "Members" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-white font-mono", children: [fmt(memberCount), " / ", fmt(maxCapacity)] })] }), (0, jsx_runtime_1.jsx)("div", { className: "h-2 bg-neutral-800 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-cyan-400 rounded-full transition-all duration-500", style: { width: `${Math.min(occupancy, 100)}%` } }) }), (0, jsx_runtime_1.jsxs)("p", { className: "text-xs text-neutral-500 font-mono mt-1", children: [occupancy, "% filled"] })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between text-sm mb-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400", children: "Vault Balance" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-white font-mono", children: [fmt(Math.round(vaultBalance)), " MCD"] })] }), (0, jsx_runtime_1.jsx)("div", { className: "h-2 bg-neutral-800 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-cyan-400 rounded-full transition-all duration-500", style: { width: `${Math.min(vaultBalance > 0 ? Math.max(Math.log10(vaultBalance) * 10, 5) : 0, 100)}%` } }) }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs text-neutral-500 mt-1", children: "Current vault funds" })] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-3 flex items-center gap-2 text-sm", children: [(0, jsx_runtime_1.jsx)(IconSettings, { className: "w-4 h-4 text-cyan-400" }), "Distribution Mechanism"] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-800 rounded p-4", children: [(0, jsx_runtime_1.jsx)("h4", { className: "text-white font-semibold text-sm mb-2", children: "Auto Distribution by Contribution" }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400 text-sm", children: "Vault MCD is distributed daily at 1% of balance, allocated to miners proportional to their mining activity." }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-500 text-xs mt-2", children: "Distribution ratio: Miners 100% (by contribution)" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-6", children: [(0, jsx_runtime_1.jsx)(IncomeChart, { territoryId: territoryId }), (0, jsx_runtime_1.jsx)(MemberRanking, { territoryId: territoryId })] }), (0, jsx_runtime_1.jsx)(KPIHistoryChart, { territoryId: territoryId }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-4 border-b border-neutral-700/50", children: (0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold flex items-center gap-2 text-sm", children: [(0, jsx_runtime_1.jsx)(IconUsers, { className: "w-4 h-4 text-cyan-400" }), "Members (", memberList.length, ")"] }) }), (0, jsx_runtime_1.jsx)("div", { className: "overflow-x-auto", children: membersLoading ? ((0, jsx_runtime_1.jsx)("div", { className: "p-6 flex justify-center", children: (0, jsx_runtime_1.jsx)(Spinner, {}) })) : memberList.length === 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "p-8 text-center text-neutral-500 text-sm", children: "No members found" })) : ((0, jsx_runtime_1.jsxs)("table", { className: "w-full text-sm", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { className: "border-b border-neutral-700/50", children: [(0, jsx_runtime_1.jsx)("th", { className: "text-left px-4 py-3 text-neutral-400 font-medium", children: "Name / UID" }), (0, jsx_runtime_1.jsx)("th", { className: "text-left px-4 py-3 text-neutral-400 font-medium", children: "Role" }), (0, jsx_runtime_1.jsx)("th", { className: "text-left px-4 py-3 text-neutral-400 font-medium", children: "Email" }), (0, jsx_runtime_1.jsx)("th", { className: "text-left px-4 py-3 text-neutral-400 font-medium", children: "Joined" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: memberList.map((member, idx) => ((0, jsx_runtime_1.jsxs)("tr", { className: "border-b border-neutral-800/50 hover:bg-neutral-800/30", children: [(0, jsx_runtime_1.jsxs)("td", { className: "px-4 py-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white", children: member.display_name || member.username || 'Unknown' }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs font-mono", children: member.uid ? `${member.uid.slice(0, 12)}...` : '-' })] }), (0, jsx_runtime_1.jsx)("td", { className: "px-4 py-3", children: (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-300 capitalize", children: member.role || member.level_name || 'Miner' }) }), (0, jsx_runtime_1.jsx)("td", { className: "px-4 py-3", children: (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400 font-mono text-xs", children: member.email ? (member.email.length > 20 ? member.email.slice(0, 20) + '...' : member.email) : '-' }) }), (0, jsx_runtime_1.jsx)("td", { className: "px-4 py-3", children: (0, jsx_runtime_1.jsxs)("span", { className: "text-neutral-400 flex items-center gap-1", children: [(0, jsx_runtime_1.jsx)(IconCalendar, { className: "w-3 h-3" }), member.joined_at || member.created_at ? new Date(member.joined_at || member.created_at).toLocaleDateString() : '-'] }) })] }, member.uid || idx))) })] })) })] }), territory && ((0, jsx_runtime_1.jsx)(EditTerritoryDialog, { territory: territory, open: editOpen, onClose: () => setEditOpen(false), onSaved: () => { } }))] }));
165
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "max-w-7xl mx-auto px-2 py-3 space-y-2 2xs:px-3 2xs:py-4 2xs:space-y-3 sm:px-6 sm:py-6 sm:space-y-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [(0, jsx_runtime_1.jsxs)("button", { onClick: onBack, className: "flex items-center gap-1.5 2xs:gap-2 text-xs 2xs:text-sm text-neutral-400 hover:text-white transition-colors bg-transparent border-none cursor-pointer whitespace-nowrap", children: [(0, jsx_runtime_1.jsx)(IconArrowLeft, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 shrink-0" }), "Back to list"] }), territory && ((0, jsx_runtime_1.jsxs)("button", { onClick: () => setEditOpen(true), className: "flex items-center gap-1 2xs:gap-1.5 px-2 2xs:px-3 py-1 2xs:py-1.5 text-xs 2xs:text-sm text-white bg-cyan-700 hover:bg-cyan-600 rounded transition-colors whitespace-nowrap", children: [(0, jsx_runtime_1.jsx)(IconEdit3, { className: "w-3 h-3 2xs:w-3.5 2xs:h-3.5 shrink-0" }), "Edit"] }))] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 md:p-6", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2 2xs:gap-3 sm:gap-5 min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "w-16 h-16 2xs:w-20 2xs:h-20 sm:w-28 sm:h-28 bg-neutral-800 rounded-lg flex items-center justify-center overflow-hidden flex-shrink-0", children: territory?.image_url ? ((0, jsx_runtime_1.jsx)("img", { src: territory.image_url, alt: territory.unit_name, className: "w-full h-full object-cover" })) : ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center text-neutral-600", children: [getTypeIcon(unitType, 'w-7 h-7 2xs:w-8 2xs:h-8 sm:w-10 sm:h-10'), (0, jsx_runtime_1.jsx)("span", { className: "text-[8px] 2xs:text-[10px] mt-1 capitalize", children: unitType })] })) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 sm:gap-3 flex-wrap min-w-0", children: [(0, jsx_runtime_1.jsx)("h2", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl font-bold text-white truncate min-w-0", children: territory?.unit_name ?? territoryId }), territory?.short_id && ((0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs sm:text-sm text-neutral-400 font-mono bg-neutral-800 px-1.5 2xs:px-2 py-0.5 rounded", children: territory.short_id })), (0, jsx_runtime_1.jsx)("span", { className: `border px-1 2xs:px-1.5 py-0.5 rounded text-[10px] 2xs:text-xs capitalize ${getTypeBadgeColor(unitType)}`, children: unitType }), occupancy >= 90 ? ((0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs bg-white/20 text-white px-1 2xs:px-1.5 py-0.5 rounded", children: "Qualified" })) : ((0, jsx_runtime_1.jsx)("span", { className: "hidden xs:inline text-[10px] 2xs:text-xs bg-neutral-500/20 text-neutral-400 px-1 2xs:px-1.5 py-0.5 rounded", children: "Not Qualified" }))] }), territory?.manager_display_name && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1 2xs:gap-1.5 mt-1.5 2xs:mt-2 text-[10px] 2xs:text-xs text-emerald-400 min-w-0", children: [(0, jsx_runtime_1.jsx)(IconShield, { className: "w-3 h-3 2xs:w-3.5 2xs:h-3.5 shrink-0" }), (0, jsx_runtime_1.jsxs)("span", { className: "truncate", children: ["Magistrate: ", territory.manager_display_name] })] })), territory?.full_path && ((0, jsx_runtime_1.jsx)("p", { className: "hidden 2xs:block text-neutral-500 text-[10px] 2xs:text-xs sm:text-sm font-mono mt-1 truncate", children: territory.full_path })), territory?.description && ((0, jsx_runtime_1.jsx)("p", { className: "hidden xs:block text-neutral-400 text-xs 2xs:text-sm mt-1 2xs:mt-2 line-clamp-2", children: territory.description }))] })] }) }), statsLoading ? ((0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-2 2xs:grid-cols-2 sm:grid-cols-4 gap-1.5 2xs:gap-2 sm:gap-3", children: [...Array(4)].map((_, i) => (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-20 2xs:h-24" }, i)) })) : ((0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 2xs:grid-cols-2 sm:grid-cols-4 gap-1.5 2xs:gap-2 sm:gap-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 mb-1 2xs:mb-2 min-w-0", children: [(0, jsx_runtime_1.jsx)(IconUsers, { className: "w-4 h-4 2xs:w-5 2xs:h-5 text-neutral-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs text-neutral-400 truncate", children: "Members" })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl font-bold text-white font-mono truncate", children: fmt(memberCount) }), (0, jsx_runtime_1.jsxs)("p", { className: "text-[10px] 2xs:text-xs text-neutral-500 mt-1 truncate", children: ["Capacity: ", (0, jsx_runtime_1.jsx)("span", { className: "font-mono", children: fmt(maxCapacity) })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 mb-1 2xs:mb-2 min-w-0", children: [(0, jsx_runtime_1.jsx)(IconVault, { className: "w-4 h-4 2xs:w-5 2xs:h-5 text-neutral-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs text-neutral-400 truncate", children: "Vault Balance" })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl font-bold text-white font-mono truncate", children: fmt(Math.round(vaultBalance)) }), (0, jsx_runtime_1.jsx)("p", { className: "text-[10px] 2xs:text-xs text-neutral-500 mt-1", children: "MCD" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 mb-1 2xs:mb-2 min-w-0", children: [(0, jsx_runtime_1.jsx)(IconZap, { className: "w-4 h-4 2xs:w-5 2xs:h-5 text-yellow-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs text-neutral-400 truncate", children: "Tech Bonus" })] }), (0, jsx_runtime_1.jsxs)("p", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl font-bold text-white font-mono truncate", children: ["+", stats?.tech_bonus ?? techBonus, "%"] }), (0, jsx_runtime_1.jsx)("p", { className: "text-[10px] 2xs:text-xs text-neutral-500 mt-1 truncate", children: "Mining output bonus" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 mb-1 2xs:mb-2 min-w-0", children: [(0, jsx_runtime_1.jsx)(IconSettings, { className: "w-4 h-4 2xs:w-5 2xs:h-5 text-neutral-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs text-neutral-400 truncate", children: "Occupancy" })] }), (0, jsx_runtime_1.jsxs)("p", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl font-bold text-white font-mono truncate", children: [occupancy, "%"] }), (0, jsx_runtime_1.jsx)("p", { className: "text-[10px] 2xs:text-xs text-neutral-500 mt-1 truncate", children: "Members / Capacity" })] })] })), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-2 2xs:mb-3 sm:mb-4 flex items-center gap-1.5 2xs:gap-2 text-xs 2xs:text-sm sm:text-base", children: [(0, jsx_runtime_1.jsx)(IconEdit3, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-cyan-400 shrink-0" }), "KPI Progress"] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-2 2xs:gap-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between text-xs 2xs:text-sm mb-1.5 2xs:mb-2 gap-2 min-w-0", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400 truncate", children: "Members" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-white font-mono truncate", children: [fmt(memberCount), " / ", fmt(maxCapacity)] })] }), (0, jsx_runtime_1.jsx)("div", { className: "h-1.5 2xs:h-2 bg-neutral-800 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-cyan-400 rounded-full transition-all duration-500", style: { width: `${Math.min(occupancy, 100)}%` } }) }), (0, jsx_runtime_1.jsxs)("p", { className: "text-[10px] 2xs:text-xs text-neutral-500 font-mono mt-1", children: [occupancy, "% filled"] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between text-xs 2xs:text-sm mb-1.5 2xs:mb-2 gap-2 min-w-0", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400 truncate", children: "Vault Balance" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-white font-mono truncate", children: [fmt(Math.round(vaultBalance)), " MCD"] })] }), (0, jsx_runtime_1.jsx)("div", { className: "h-1.5 2xs:h-2 bg-neutral-800 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-cyan-400 rounded-full transition-all duration-500", style: { width: `${Math.min(vaultBalance > 0 ? Math.max(Math.log10(vaultBalance) * 10, 5) : 0, 100)}%` } }) }), (0, jsx_runtime_1.jsx)("p", { className: "text-[10px] 2xs:text-xs text-neutral-500 mt-1", children: "Current vault funds" })] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold mb-2 2xs:mb-3 flex items-center gap-1.5 2xs:gap-2 text-xs 2xs:text-sm sm:text-base", children: [(0, jsx_runtime_1.jsx)(IconSettings, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-cyan-400 shrink-0" }), "Distribution Mechanism"] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-800 rounded p-2 2xs:p-3 sm:p-4", children: [(0, jsx_runtime_1.jsx)("h4", { className: "text-white font-semibold text-xs 2xs:text-sm mb-1.5 2xs:mb-2", children: "Auto Distribution by Contribution" }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400 text-xs 2xs:text-sm", children: "Vault MCD is distributed daily at 1% of balance, allocated to miners proportional to their mining activity." }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-500 text-[10px] 2xs:text-xs mt-1.5 2xs:mt-2", children: "Distribution ratio: Miners 100% (by contribution)" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 lg:grid-cols-2 gap-1.5 2xs:gap-2 sm:gap-3", children: [(0, jsx_runtime_1.jsx)(IncomeChart, { territoryId: territoryId }), (0, jsx_runtime_1.jsx)(MemberRanking, { territoryId: territoryId })] }), (0, jsx_runtime_1.jsx)(KPIHistoryChart, { territoryId: territoryId }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-2 2xs:p-3 sm:p-4 border-b border-neutral-700/50", children: (0, jsx_runtime_1.jsxs)("h3", { className: "text-white font-semibold flex items-center gap-1.5 2xs:gap-2 text-xs 2xs:text-sm sm:text-base", children: [(0, jsx_runtime_1.jsx)(IconUsers, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-cyan-400 shrink-0" }), "Members (", memberList.length, ")"] }) }), (0, jsx_runtime_1.jsx)("div", { className: "overflow-x-auto", children: membersLoading ? ((0, jsx_runtime_1.jsx)("div", { className: "p-4 2xs:p-6 flex justify-center", children: (0, jsx_runtime_1.jsx)(Spinner, {}) })) : memberList.length === 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "p-6 2xs:p-8 text-center text-neutral-500 text-xs 2xs:text-sm", children: "No members found" })) : ((0, jsx_runtime_1.jsxs)("table", { className: "w-full text-xs 2xs:text-sm", children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsxs)("tr", { className: "border-b border-neutral-700/50", children: [(0, jsx_runtime_1.jsx)("th", { className: "text-left px-2 2xs:px-3 sm:px-4 py-2 2xs:py-3 text-neutral-400 font-medium text-[10px] 2xs:text-xs sm:text-sm", children: "Name / UID" }), (0, jsx_runtime_1.jsx)("th", { className: "text-left px-2 2xs:px-3 sm:px-4 py-2 2xs:py-3 text-neutral-400 font-medium text-[10px] 2xs:text-xs sm:text-sm", children: "Role" }), (0, jsx_runtime_1.jsx)("th", { className: "hidden sm:table-cell text-left px-2 2xs:px-3 sm:px-4 py-2 2xs:py-3 text-neutral-400 font-medium text-[10px] 2xs:text-xs sm:text-sm", children: "Email" }), (0, jsx_runtime_1.jsx)("th", { className: "hidden sm:table-cell text-left px-2 2xs:px-3 sm:px-4 py-2 2xs:py-3 text-neutral-400 font-medium text-[10px] 2xs:text-xs sm:text-sm", children: "Joined" })] }) }), (0, jsx_runtime_1.jsx)("tbody", { children: memberList.map((member, idx) => ((0, jsx_runtime_1.jsxs)("tr", { className: "border-b border-neutral-800/50 hover:bg-neutral-800/30", children: [(0, jsx_runtime_1.jsxs)("td", { className: "px-2 2xs:px-3 sm:px-4 py-2 2xs:py-3 min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm truncate", children: member.display_name || member.username || 'Unknown' }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-[10px] 2xs:text-xs font-mono truncate", children: member.uid ? `${member.uid.slice(0, 8)}...` : '-' })] }), (0, jsx_runtime_1.jsx)("td", { className: "px-2 2xs:px-3 sm:px-4 py-2 2xs:py-3", children: (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-300 capitalize text-[10px] 2xs:text-xs sm:text-sm", children: member.role || member.level_name || 'Miner' }) }), (0, jsx_runtime_1.jsx)("td", { className: "hidden sm:table-cell px-2 2xs:px-3 sm:px-4 py-2 2xs:py-3", children: (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400 font-mono text-xs", children: member.email ? (member.email.length > 20 ? member.email.slice(0, 20) + '...' : member.email) : '-' }) }), (0, jsx_runtime_1.jsx)("td", { className: "hidden sm:table-cell px-2 2xs:px-3 sm:px-4 py-2 2xs:py-3", children: (0, jsx_runtime_1.jsxs)("span", { className: "text-neutral-400 flex items-center gap-1 text-xs", children: [(0, jsx_runtime_1.jsx)(IconCalendar, { className: "w-3 h-3 shrink-0" }), member.joined_at || member.created_at ? new Date(member.joined_at || member.created_at).toLocaleDateString() : '-'] }) })] }, member.uid || idx))) })] })) })] }), territory && ((0, jsx_runtime_1.jsx)(EditTerritoryDialog, { territory: territory, open: editOpen, onClose: () => setEditOpen(false), onSaved: () => { } }))] }));
166
166
  }
167
167
  function MicrocosmTerritoryPage({ basePath = '', onNavigate }) {
168
168
  const t = (0, i18n_context_1.useTranslations)('territoryDash');
@@ -189,14 +189,14 @@ function MicrocosmTerritoryPage({ basePath = '', onNavigate }) {
189
189
  return ((0, jsx_runtime_1.jsx)(TerritoryDetailView, { territoryId: selectedId, territory: selectedTerritory, onBack: () => setSelectedId(null) }));
190
190
  }
191
191
  if (summaryLoading && territoriesLoading) {
192
- return ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-6", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-between", children: (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-8 w-56" }) }), (0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4", children: [...Array(4)].map((_, i) => (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-24" }, i)) }), (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-14" }), (0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: [...Array(6)].map((_, i) => (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-72" }, i)) })] }));
192
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "max-w-7xl mx-auto px-2 py-3 space-y-2 2xs:px-3 2xs:py-4 2xs:space-y-3 sm:px-6 sm:py-6 sm:space-y-6", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-between", children: (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-6 2xs:h-8 w-40 2xs:w-56" }) }), (0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-2 2xs:grid-cols-2 sm:grid-cols-4 gap-1.5 2xs:gap-2 sm:gap-3", children: [...Array(4)].map((_, i) => (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-20 2xs:h-24" }, i)) }), (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-12 2xs:h-14" }), (0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-1 2xs:grid-cols-2 lg:grid-cols-3 gap-1.5 2xs:gap-2 sm:gap-3", children: [...Array(6)].map((_, i) => (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-60 2xs:h-72" }, i)) })] }));
193
193
  }
194
- return ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-6", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-2xl font-bold text-white", children: t('title', 'Territory Management') }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400 text-sm mt-1", children: t('subtitle', 'Manage territories, view KPI and vault balances') })] }), (0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-4", children: [
195
- { label: 'Total Territories', value: sum?.total_stations ?? 0, icon: (0, jsx_runtime_1.jsx)(IconBuilding2, { className: "w-4 h-4 text-cyan-400" }), suffix: '' },
196
- { label: 'Total Members', value: sum?.total_members ?? 0, icon: (0, jsx_runtime_1.jsx)(IconUsers, { className: "w-4 h-4 text-neutral-400" }), suffix: '' },
197
- { label: 'Total Vault MCD', value: Math.round(sum?.total_vault_mcd ?? 0), icon: (0, jsx_runtime_1.jsx)(IconVault, { className: "w-4 h-4 text-neutral-400" }), suffix: ' MCD' },
198
- { label: 'Avg KPI', value: sum?.avg_kpi_score != null ? Math.round(sum.avg_kpi_score * 100) : 0, icon: (0, jsx_runtime_1.jsx)(IconEdit3, { className: "w-4 h-4 text-neutral-400" }), suffix: '%' },
199
- ].map((s) => ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [s.icon, (0, jsx_runtime_1.jsx)("span", { className: "text-sm text-neutral-400", children: s.label })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-2xl font-bold text-white font-mono", children: summaryLoading ? (0, jsx_runtime_1.jsx)(Spinner, {}) : (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [fmt(s.value), s.suffix] }) })] }, s.label))) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col sm:flex-row gap-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "relative flex-1", children: [(0, jsx_runtime_1.jsx)(IconSearch, { className: "w-4 h-4 absolute left-3 top-1/2 -translate-y-1/2 text-neutral-500" }), (0, jsx_runtime_1.jsx)("input", { type: "text", placeholder: t('searchPlaceholder', 'Search territories...'), value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), className: "w-full pl-10 pr-3 py-2 bg-neutral-800 border border-neutral-700 rounded-lg text-white text-sm placeholder:text-neutral-500 outline-none focus:border-cyan-400/50 transition-colors" })] }), (0, jsx_runtime_1.jsx)("div", { className: "flex gap-2 flex-wrap", children: UNIT_TYPE_LABELS.map((ut) => ((0, jsx_runtime_1.jsx)("button", { onClick: () => setFilterType(ut.key), className: `px-3 py-2 text-sm rounded-lg border transition-colors ${filterType === ut.key
194
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "max-w-7xl mx-auto px-2 py-3 space-y-2 2xs:px-3 2xs:py-4 2xs:space-y-3 sm:px-6 sm:py-6 sm:space-y-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl md:text-3xl font-bold text-white truncate", children: t('title', 'Territory Management') }), (0, jsx_runtime_1.jsx)("p", { className: "text-[10px] 2xs:text-xs sm:text-sm text-neutral-400 mt-1", children: t('subtitle', 'Manage territories, view KPI and vault balances') })] }), (0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-2 2xs:grid-cols-2 xs:grid-cols-2 sm:grid-cols-4 gap-1.5 2xs:gap-2 sm:gap-3", children: [
195
+ { label: 'Total Territories', value: sum?.total_stations ?? 0, icon: (0, jsx_runtime_1.jsx)(IconBuilding2, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-cyan-400 shrink-0" }), suffix: '' },
196
+ { label: 'Total Members', value: sum?.total_members ?? 0, icon: (0, jsx_runtime_1.jsx)(IconUsers, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-neutral-400 shrink-0" }), suffix: '' },
197
+ { label: 'Total Vault MCD', value: Math.round(sum?.total_vault_mcd ?? 0), icon: (0, jsx_runtime_1.jsx)(IconVault, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-neutral-400 shrink-0" }), suffix: ' MCD' },
198
+ { label: 'Avg KPI', value: sum?.avg_kpi_score != null ? Math.round(sum.avg_kpi_score * 100) : 0, icon: (0, jsx_runtime_1.jsx)(IconEdit3, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 text-neutral-400 shrink-0" }), suffix: '%' },
199
+ ].map((s) => ((0, jsx_runtime_1.jsxs)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 mb-1 2xs:mb-2 min-w-0", children: [s.icon, (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] 2xs:text-xs sm:text-sm text-neutral-400 truncate", children: s.label })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl font-bold text-white font-mono truncate", children: summaryLoading ? (0, jsx_runtime_1.jsx)(Spinner, {}) : (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [fmt(s.value), s.suffix] }) })] }, s.label))) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors p-2 2xs:p-3 sm:p-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col sm:flex-row gap-2 2xs:gap-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "relative flex-1 min-w-0", children: [(0, jsx_runtime_1.jsx)(IconSearch, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 absolute left-2.5 2xs:left-3 top-1/2 -translate-y-1/2 text-neutral-500" }), (0, jsx_runtime_1.jsx)("input", { type: "text", placeholder: t('searchPlaceholder', 'Search territories...'), value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), className: "w-full pl-8 2xs:pl-10 pr-2 2xs:pr-3 py-1.5 2xs:py-2 bg-neutral-800 border border-neutral-700 rounded-lg text-white text-xs 2xs:text-sm placeholder:text-neutral-500 outline-none focus:border-cyan-400/50 transition-colors" })] }), (0, jsx_runtime_1.jsx)("div", { className: "flex gap-1.5 2xs:gap-2 flex-wrap", children: UNIT_TYPE_LABELS.map((ut) => ((0, jsx_runtime_1.jsx)("button", { onClick: () => setFilterType(ut.key), className: `px-2 2xs:px-3 py-1.5 2xs:py-2 text-xs 2xs:text-sm rounded-lg border transition-colors whitespace-nowrap ${filterType === ut.key
200
200
  ? 'bg-cyan-700 text-white border-cyan-700'
201
- : 'bg-transparent border-neutral-700 text-neutral-400 hover:text-neutral-200 hover:border-neutral-500'}`, children: ut.label }, ut.key))) })] }) }), territoriesLoading ? ((0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: [...Array(6)].map((_, i) => (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-72" }, i)) })) : filteredTerritories.length === 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-12 text-center", children: [(0, jsx_runtime_1.jsx)(IconImage, { className: "w-12 h-12 mx-auto mb-4 text-neutral-600" }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400", children: t('nftNotFound', 'No territories found') }), searchTerm && ((0, jsx_runtime_1.jsx)("p", { className: "text-xs text-neutral-500 mt-1", children: t('searchHint', 'Try adjusting your search or filter criteria') }))] }) })) : ((0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: filteredTerritories.map((unit) => ((0, jsx_runtime_1.jsx)(TerritoryCard, { unit: unit, onClick: () => setSelectedId(unit.unit_id) }, unit.unit_id))) }))] }));
201
+ : 'bg-transparent border-neutral-700 text-neutral-400 hover:text-neutral-200 hover:border-neutral-500'}`, children: ut.label }, ut.key))) })] }) }), territoriesLoading ? ((0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-1 2xs:grid-cols-2 lg:grid-cols-3 gap-1.5 2xs:gap-2 sm:gap-3", children: [...Array(6)].map((_, i) => (0, jsx_runtime_1.jsx)(Skeleton, { className: "h-72" }, i)) })) : filteredTerritories.length === 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6 2xs:p-8 sm:p-12 text-center", children: [(0, jsx_runtime_1.jsx)(IconImage, { className: "w-10 h-10 2xs:w-12 2xs:h-12 mx-auto mb-3 2xs:mb-4 text-neutral-600" }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs 2xs:text-sm text-neutral-400", children: t('nftNotFound', 'No territories found') }), searchTerm && ((0, jsx_runtime_1.jsx)("p", { className: "text-[10px] 2xs:text-xs text-neutral-500 mt-1", children: t('searchHint', 'Try adjusting your search or filter criteria') }))] }) })) : ((0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-1 2xs:grid-cols-2 lg:grid-cols-3 gap-1.5 2xs:gap-2 sm:gap-3", children: filteredTerritories.map((unit) => ((0, jsx_runtime_1.jsx)(TerritoryCard, { unit: unit, onClick: () => setSelectedId(unit.unit_id) }, unit.unit_id))) }))] }));
202
202
  }
@@ -14,5 +14,5 @@ const UsersIcon = ({ className }) => ((0, jsx_runtime_1.jsxs)("svg", { xmlns: "h
14
14
  const CoinsIcon = ({ className }) => ((0, jsx_runtime_1.jsxs)("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", className: className, children: [(0, jsx_runtime_1.jsx)("circle", { cx: "8", cy: "8", r: "6" }), (0, jsx_runtime_1.jsx)("path", { d: "M18.09 10.37A6 6 0 1 1 10.34 18" }), (0, jsx_runtime_1.jsx)("path", { d: "M7 6h1v4" }), (0, jsx_runtime_1.jsx)("path", { d: "m16.71 13.88.7.71-2.82 2.82" })] }));
15
15
  function MicrocosmVotingPage({ basePath = '', onNavigate }) {
16
16
  const t = (0, i18n_context_1.useTranslations)('votingDash');
17
- return ((0, jsx_runtime_1.jsxs)("div", { className: "max-w-7xl mx-auto p-6 space-y-6", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-2xl font-bold text-white tracking-wider", children: t('title', 'Community Voting') }), (0, jsx_runtime_1.jsxs)("span", { className: "inline-flex items-center bg-cyan-400/20 text-cyan-400 border border-cyan-400/30 text-xs px-2.5 py-0.5 rounded-full font-medium", children: [(0, jsx_runtime_1.jsx)(ConstructionIcon, { className: "w-3 h-3 mr-1" }), t('underConstruction', 'Under Construction')] })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-neutral-400", children: t('subtitle', 'Token-driven community governance and decision-making mechanism') })] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-neutral-400 text-sm mb-4", children: [(0, jsx_runtime_1.jsx)(TargetIcon, { className: "w-4 h-4" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('buildGoal', 'Build Goal') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-4", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-neutral-300 text-sm leading-relaxed", children: t('buildDesc', 'Microcosm community voting system uses a "Capital Voting" mechanism -- users vote with MCC Tokens, making every vote carry real economic weight.') }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700 hover:border-cyan-400/50 transition-colors", children: [(0, jsx_runtime_1.jsx)(ShieldIcon, { className: "w-5 h-5 text-white mb-2" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-sm font-medium mb-1", children: t('antiSybil', 'Anti-Sybil Attack') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs", children: t('antiSybilDesc', 'Voting requires real capital investment, effectively preventing ballot stuffing and fake votes') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700 hover:border-cyan-400/50 transition-colors", children: [(0, jsx_runtime_1.jsx)(CoinsIcon, { className: "w-5 h-5 text-white mb-2" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-sm font-medium mb-1", children: t('economicGame', 'Economic Game Theory') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs", children: t('economicGameDesc', 'Voters bear economic consequences for their choices, promoting rational decision-making') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700 hover:border-cyan-400/50 transition-colors", children: [(0, jsx_runtime_1.jsx)(UsersIcon, { className: "w-5 h-5 text-white mb-2" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-sm font-medium mb-1", children: t('communityGov', 'Community Governance') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs", children: t('communityGovDesc', 'Major decisions are made jointly by token-holding community, achieving decentralized governance') })] })] })] })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3 mb-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-2 rounded bg-neutral-800", children: (0, jsx_runtime_1.jsx)(SwordsIcon, { className: "w-5 h-5 text-white" }) }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white font-medium", children: t('bettingMode', 'Betting Mode Voting') }), (0, jsx_runtime_1.jsx)("span", { className: "inline-block bg-cyan-400/20 text-cyan-400 border border-cyan-400/30 text-xs px-2.5 py-0.5 rounded-full font-medium mt-1", children: t('bettingVote', 'Betting Vote') })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-3", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400 text-sm leading-relaxed", children: t('bettingDesc', 'Voters invest MCC into their supported option. After voting ends, funds from the losing side are distributed equally among all voters on the winning side.') }), (0, jsx_runtime_1.jsxs)("div", { className: "p-3 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-400 tracking-wider mb-2", children: t('mechanismLabel', 'Mechanism') }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-1.5 text-xs text-neutral-400", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "1." }), (0, jsx_runtime_1.jsx)("span", { children: t('bettingStep1', 'Users vote for an option with MCC') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "2." }), (0, jsx_runtime_1.jsx)("span", { children: t('bettingStep2', 'After voting closes, results are tallied, the side with more votes wins') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "3." }), (0, jsx_runtime_1.jsx)("span", { children: t('bettingStep3', 'MCC from losing side distributed proportionally to winning voters') })] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-500", children: t('bettingUseCase', 'Use cases: Market predictions, community disputes, direction choices') })] })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3 mb-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-2 rounded bg-neutral-800", children: (0, jsx_runtime_1.jsx)(HeartIcon, { className: "w-5 h-5 text-red-400" }) }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white font-medium", children: t('publicWelfareMode', 'Public Welfare Voting') }), (0, jsx_runtime_1.jsx)("span", { className: "inline-block bg-white/20 text-white border border-white/30 text-xs px-2.5 py-0.5 rounded-full font-medium mt-1", children: t('publicWelfareVote', 'Public Welfare Vote') })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-3", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400 text-sm leading-relaxed", children: t('publicWelfareDesc', 'Regardless of outcome, all MCC invested by voters goes to the foundation pool, funding third-party project development and ecosystem building.') }), (0, jsx_runtime_1.jsxs)("div", { className: "p-3 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-400 tracking-wider mb-2", children: t('mechanismLabel', 'Mechanism') }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-1.5 text-xs text-neutral-400", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "1." }), (0, jsx_runtime_1.jsx)("span", { children: t('welfareStep1', 'Users vote with MCC on an option') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "2." }), (0, jsx_runtime_1.jsx)("span", { children: t('welfareStep2', 'Results tallied after deadline, majority decision executed') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "3." }), (0, jsx_runtime_1.jsx)("span", { children: t('welfareStep3', 'All voting funds (both sides) go to the foundation') })] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-500", children: t('publicUseCase', 'Use cases: Public proposals, ecosystem fund allocation, project support decisions') })] })] }) })] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-neutral-400 text-sm mb-4", children: [(0, jsx_runtime_1.jsx)(VoteIcon, { className: "w-4 h-4" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('votingRules', 'Voting Rules') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-400 tracking-wider mb-1", children: "voting_currency" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-sm font-medium", children: t('votingCurrency', 'MCC (Microcosm Coin)') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs mt-1", children: t('votingCurrencyDesc', 'Votes use MCC Token, invested funds are locked') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-400 tracking-wider mb-1", children: "vote_weight" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-sm font-medium", children: t('voteWeight', '1 MCC = 1 Vote') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs mt-1", children: t('voteWeightDesc', 'Voting weight proportional to invested amount') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-400 tracking-wider mb-1", children: "min_participation" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-sm font-medium", children: t('minParticipation', 'Miner Level or Above') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs mt-1", children: t('minParticipationDesc', 'Must reach Miner rank to participate in voting') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-400 tracking-wider mb-1", children: "foundation_fund" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-sm font-medium", children: t('foundationFund', 'Support Third-party Projects') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs mt-1", children: t('foundationFundDesc', 'Public welfare voting funds used for ecosystem building') })] })] })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "text-center py-8", children: [(0, jsx_runtime_1.jsx)(ConstructionIcon, { className: "w-10 h-10 text-neutral-700 mx-auto mb-3" }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-500 text-sm", children: t('comingSoon', 'Community voting feature is under development, stay tuned') }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-500 text-xs mt-1", children: "Coming Soon" })] })] }));
17
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "max-w-7xl mx-auto px-2 py-3 space-y-2 2xs:px-3 2xs:py-4 2xs:space-y-3 sm:px-6 sm:py-6 sm:space-y-6", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 sm:gap-3 flex-wrap", children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl md:text-3xl font-bold text-white tracking-wider", children: t('title', 'Community Voting') }), (0, jsx_runtime_1.jsxs)("span", { className: "inline-flex items-center bg-cyan-400/20 text-cyan-400 border border-cyan-400/30 text-[10px] 2xs:text-xs px-2 py-0.5 rounded-full font-medium whitespace-nowrap", children: [(0, jsx_runtime_1.jsx)(ConstructionIcon, { className: "w-2.5 h-2.5 2xs:w-3 2xs:h-3 mr-1" }), t('underConstruction', 'Under Construction')] })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-[10px] 2xs:text-xs sm:text-sm text-neutral-400", children: t('subtitle', 'Token-driven community governance and decision-making mechanism') })] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-neutral-400 text-xs 2xs:text-sm mb-2 2xs:mb-3 sm:mb-4", children: [(0, jsx_runtime_1.jsx)(TargetIcon, { className: "w-3 h-3 2xs:w-4 2xs:h-4" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('buildGoal', 'Build Goal') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-2 2xs:space-y-3 sm:space-y-4", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-neutral-300 text-xs 2xs:text-sm leading-relaxed", children: t('buildDesc', 'Microcosm community voting system uses a "Capital Voting" mechanism -- users vote with MCC Tokens, making every vote carry real economic weight.') }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 2xs:grid-cols-2 lg:grid-cols-3 gap-1.5 2xs:gap-2 sm:gap-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700 hover:border-cyan-400/50 transition-colors min-w-0", children: [(0, jsx_runtime_1.jsx)(ShieldIcon, { className: "w-4 h-4 2xs:w-5 2xs:h-5 text-white mb-1 2xs:mb-2" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm font-medium mb-1", children: t('antiSybil', 'Anti-Sybil Attack') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-[10px] 2xs:text-xs", children: t('antiSybilDesc', 'Voting requires real capital investment, effectively preventing ballot stuffing and fake votes') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700 hover:border-cyan-400/50 transition-colors min-w-0", children: [(0, jsx_runtime_1.jsx)(CoinsIcon, { className: "w-4 h-4 2xs:w-5 2xs:h-5 text-white mb-1 2xs:mb-2" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm font-medium mb-1", children: t('economicGame', 'Economic Game Theory') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-[10px] 2xs:text-xs", children: t('economicGameDesc', 'Voters bear economic consequences for their choices, promoting rational decision-making') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700 hover:border-cyan-400/50 transition-colors min-w-0", children: [(0, jsx_runtime_1.jsx)(UsersIcon, { className: "w-4 h-4 2xs:w-5 2xs:h-5 text-white mb-1 2xs:mb-2" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm font-medium mb-1", children: t('communityGov', 'Community Governance') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-[10px] 2xs:text-xs", children: t('communityGovDesc', 'Major decisions are made jointly by token-holding community, achieving decentralized governance') })] })] })] })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-1.5 2xs:gap-2 sm:gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 2xs:gap-3 mb-2 2xs:mb-3 sm:mb-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-1.5 2xs:p-2 rounded bg-neutral-800 shrink-0", children: (0, jsx_runtime_1.jsx)(SwordsIcon, { className: "w-4 h-4 2xs:w-5 2xs:h-5 text-white" }) }), (0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white font-medium text-xs 2xs:text-sm sm:text-base truncate", children: t('bettingMode', 'Betting Mode Voting') }), (0, jsx_runtime_1.jsx)("span", { className: "inline-block bg-cyan-400/20 text-cyan-400 border border-cyan-400/30 text-[10px] 2xs:text-xs px-2 py-0.5 rounded-full font-medium mt-1", children: t('bettingVote', 'Betting Vote') })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-2 2xs:space-y-3", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400 text-xs 2xs:text-sm leading-relaxed", children: t('bettingDesc', 'Voters invest MCC into their supported option. After voting ends, funds from the losing side are distributed equally among all voters on the winning side.') }), (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[10px] 2xs:text-xs text-neutral-400 tracking-wider mb-1.5 2xs:mb-2", children: t('mechanismLabel', 'Mechanism') }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-1.5 text-[10px] 2xs:text-xs text-neutral-400", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "1." }), (0, jsx_runtime_1.jsx)("span", { children: t('bettingStep1', 'Users vote for an option with MCC') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "2." }), (0, jsx_runtime_1.jsx)("span", { children: t('bettingStep2', 'After voting closes, results are tallied, the side with more votes wins') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "3." }), (0, jsx_runtime_1.jsx)("span", { children: t('bettingStep3', 'MCC from losing side distributed proportionally to winning voters') })] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-[10px] 2xs:text-xs text-neutral-500", children: t('bettingUseCase', 'Use cases: Market predictions, community disputes, direction choices') })] })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 2xs:gap-3 mb-2 2xs:mb-3 sm:mb-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-1.5 2xs:p-2 rounded bg-neutral-800 shrink-0", children: (0, jsx_runtime_1.jsx)(HeartIcon, { className: "w-4 h-4 2xs:w-5 2xs:h-5 text-red-400" }) }), (0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white font-medium text-xs 2xs:text-sm sm:text-base truncate", children: t('publicWelfareMode', 'Public Welfare Voting') }), (0, jsx_runtime_1.jsx)("span", { className: "inline-block bg-white/20 text-white border border-white/30 text-[10px] 2xs:text-xs px-2 py-0.5 rounded-full font-medium mt-1", children: t('publicWelfareVote', 'Public Welfare Vote') })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-2 2xs:space-y-3", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-neutral-400 text-xs 2xs:text-sm leading-relaxed", children: t('publicWelfareDesc', 'Regardless of outcome, all MCC invested by voters goes to the foundation pool, funding third-party project development and ecosystem building.') }), (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[10px] 2xs:text-xs text-neutral-400 tracking-wider mb-1.5 2xs:mb-2", children: t('mechanismLabel', 'Mechanism') }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-1.5 text-[10px] 2xs:text-xs text-neutral-400", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "1." }), (0, jsx_runtime_1.jsx)("span", { children: t('welfareStep1', 'Users vote with MCC on an option') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "2." }), (0, jsx_runtime_1.jsx)("span", { children: t('welfareStep2', 'Results tallied after deadline, majority decision executed') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-500 mt-0.5", children: "3." }), (0, jsx_runtime_1.jsx)("span", { children: t('welfareStep3', 'All voting funds (both sides) go to the foundation') })] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-[10px] 2xs:text-xs text-neutral-500", children: t('publicUseCase', 'Use cases: Public proposals, ecosystem fund allocation, project support decisions') })] })] }) })] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-neutral-400 text-xs 2xs:text-sm mb-2 2xs:mb-3 sm:mb-4", children: [(0, jsx_runtime_1.jsx)(VoteIcon, { className: "w-3 h-3 2xs:w-4 2xs:h-4" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('votingRules', 'Voting Rules') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 2xs:grid-cols-2 gap-1.5 2xs:gap-2 sm:gap-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700 min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[10px] 2xs:text-xs text-neutral-400 tracking-wider mb-1 truncate", children: "voting_currency" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm font-medium truncate", children: t('votingCurrency', 'MCC (Microcosm Coin)') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-[10px] 2xs:text-xs mt-1", children: t('votingCurrencyDesc', 'Votes use MCC Token, invested funds are locked') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700 min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[10px] 2xs:text-xs text-neutral-400 tracking-wider mb-1 truncate", children: "vote_weight" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm font-medium truncate", children: t('voteWeight', '1 MCC = 1 Vote') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-[10px] 2xs:text-xs mt-1", children: t('voteWeightDesc', 'Voting weight proportional to invested amount') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700 min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[10px] 2xs:text-xs text-neutral-400 tracking-wider mb-1 truncate", children: "min_participation" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm font-medium truncate", children: t('minParticipation', 'Miner Level or Above') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-[10px] 2xs:text-xs mt-1", children: t('minParticipationDesc', 'Must reach Miner rank to participate in voting') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700 min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[10px] 2xs:text-xs text-neutral-400 tracking-wider mb-1 truncate", children: "foundation_fund" }), (0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm font-medium truncate", children: t('foundationFund', 'Support Third-party Projects') }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-[10px] 2xs:text-xs mt-1", children: t('foundationFundDesc', 'Public welfare voting funds used for ecosystem building') })] })] })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "text-center py-6 2xs:py-8", children: [(0, jsx_runtime_1.jsx)(ConstructionIcon, { className: "w-8 h-8 2xs:w-10 2xs:h-10 text-neutral-700 mx-auto mb-2 2xs:mb-3" }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-500 text-xs 2xs:text-sm", children: t('comingSoon', 'Community voting feature is under development, stay tuned') }), (0, jsx_runtime_1.jsx)("p", { className: "text-neutral-500 text-[10px] 2xs:text-xs mt-1", children: "Coming Soon" })] })] }));
18
18
  }
@@ -62,14 +62,14 @@ function LockPeriodCard({ lock, hideBalance }) {
62
62
  const daysLeft = Math.floor(msLeft / 86400000);
63
63
  const hoursLeft = Math.floor((msLeft % 86400000) / 3600000);
64
64
  const fmtDT = (d) => d.toLocaleString('en-US', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', hour12: false });
65
- return ((0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between items-start mb-3", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "text-xs text-neutral-400 tracking-wider mb-1", children: ["reason: ", lock.reason] }), (0, jsx_runtime_1.jsxs)("div", { className: "text-2xl font-bold text-white font-mono", children: [hideBalance ? '****' : fmt(lock.amount), " MCC"] })] }), (0, jsx_runtime_1.jsx)("span", { className: "text-[10px] bg-cyan-400/20 text-cyan-400 border border-cyan-400/30 px-2 py-0.5 rounded font-mono", children: "LOCKED" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-1 text-sm", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between text-neutral-400", children: [(0, jsx_runtime_1.jsx)("span", { children: "lock_start" }), (0, jsx_runtime_1.jsx)("span", { className: "text-white", children: fmtDT(start) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between text-neutral-400", children: [(0, jsx_runtime_1.jsx)("span", { children: "lock_end" }), (0, jsx_runtime_1.jsx)("span", { className: "text-white", children: fmtDT(end) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between font-bold mt-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400", children: "remaining" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-cyan-400", children: [daysLeft, "d ", hoursLeft, "h"] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "mt-3", children: (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-700 rounded-full h-2 overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: "bg-cyan-400 h-2 rounded-full transition-all duration-700", style: { width: `${progress}%` } }) }) })] }));
65
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between items-start mb-2 2xs:mb-3 gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "min-w-0 flex-1", children: [(0, jsx_runtime_1.jsxs)("div", { className: "text-[10px] 2xs:text-xs text-neutral-400 tracking-wider mb-1 truncate", children: ["reason: ", lock.reason] }), (0, jsx_runtime_1.jsxs)("div", { className: "text-lg 2xs:text-xl xs:text-2xl font-bold text-white font-mono", children: [hideBalance ? '****' : fmt(lock.amount), " MCC"] })] }), (0, jsx_runtime_1.jsx)("span", { className: "text-[8px] 2xs:text-[10px] bg-cyan-400/20 text-cyan-400 border border-cyan-400/30 px-1.5 py-0.5 rounded font-mono whitespace-nowrap", children: "LOCKED" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-1 text-[10px] 2xs:text-xs sm:text-sm", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between text-neutral-400", children: [(0, jsx_runtime_1.jsx)("span", { children: "lock_start" }), (0, jsx_runtime_1.jsx)("span", { className: "text-white", children: fmtDT(start) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between text-neutral-400", children: [(0, jsx_runtime_1.jsx)("span", { children: "lock_end" }), (0, jsx_runtime_1.jsx)("span", { className: "text-white", children: fmtDT(end) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between font-bold mt-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400", children: "remaining" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-cyan-400", children: [daysLeft, "d ", hoursLeft, "h"] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "mt-3", children: (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-700 rounded-full h-2 overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: "bg-cyan-400 h-2 rounded-full transition-all duration-700", style: { width: `${progress}%` } }) }) })] }));
66
66
  }
67
67
  function TokenIcon({ symbol, color, logoURI }) {
68
68
  const [err, setErr] = (0, react_1.useState)(false);
69
69
  if (logoURI && !err) {
70
- return ((0, jsx_runtime_1.jsx)("img", { src: logoURI, alt: symbol, className: "w-10 h-10 rounded-full object-cover bg-neutral-800", onError: () => setErr(true) }));
70
+ return ((0, jsx_runtime_1.jsx)("img", { src: logoURI, alt: symbol, className: "w-6 h-6 2xs:w-7 2xs:h-7 sm:w-10 sm:h-10 rounded-full object-cover bg-neutral-800 shrink-0", onError: () => setErr(true) }));
71
71
  }
72
- return ((0, jsx_runtime_1.jsx)("div", { className: `w-10 h-10 rounded-full flex items-center justify-center text-white font-bold text-sm ${color}`, children: symbol.slice(0, 2) }));
72
+ return ((0, jsx_runtime_1.jsx)("div", { className: `w-6 h-6 2xs:w-7 2xs:h-7 sm:w-10 sm:h-10 rounded-full flex items-center justify-center text-white font-bold text-[10px] 2xs:text-xs sm:text-sm shrink-0 ${color}`, children: symbol.slice(0, 2) }));
73
73
  }
74
74
  function AssetList({ holdings, hideBalance, showWalletColumn, isLoading, }) {
75
75
  const t = (0, i18n_context_1.useTranslations)('walletDash');
@@ -79,8 +79,8 @@ function AssetList({ holdings, hideBalance, showWalletColumn, isLoading, }) {
79
79
  if (holdings.length === 0) {
80
80
  return ((0, jsx_runtime_1.jsx)("div", { className: "text-center py-8 text-neutral-500", children: (0, jsx_runtime_1.jsx)("p", { className: "text-sm", children: t('noValuedAssets', 'No valued assets found') }) }));
81
81
  }
82
- const gridCols = showWalletColumn ? 'grid-cols-4' : 'grid-cols-3';
83
- return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: `gap-4 py-2 px-4 border-b border-neutral-700 text-xs font-medium text-neutral-400 tracking-wider grid ${gridCols}`, children: [(0, jsx_runtime_1.jsx)("div", { children: t('token', 'Token') }), showWalletColumn && (0, jsx_runtime_1.jsx)("div", { children: t('wallet', 'Wallet') }), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: t('amount', 'Amount') }), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: t('valuation', 'Valuation') })] }), (0, jsx_runtime_1.jsx)("div", { className: "divide-y divide-neutral-800", children: holdings.map((h, idx) => ((0, jsx_runtime_1.jsxs)("div", { className: `gap-4 py-3 px-4 items-center hover:bg-neutral-700 transition-colors rounded grid ${gridCols}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)(TokenIcon, { symbol: h.symbol, color: h.color, logoURI: h.logoURI }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white font-medium text-sm", children: h.symbol }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-500", children: h.name })] })] }), showWalletColumn && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("code", { className: "text-xs text-neutral-400 font-mono", children: h.walletShort }), h.isPrimary && (0, jsx_runtime_1.jsx)("span", { className: "ml-1 text-[10px] text-cyan-400", children: t('primary', 'Primary') })] })), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: (0, jsx_runtime_1.jsx)("div", { className: "text-white text-sm font-mono", children: hideBalance ? '****' : fmt(h.balance, h.balance < 1 ? 6 : 4) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "text-right", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-neutral-300 text-sm font-mono", children: hideBalance ? '****' : fmtUSD(h.usdValue) }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-500", children: fmtUSD(h.price) })] })] }, `${h.symbol}-${h.wallet || idx}`))) })] }));
82
+ const gridCols = showWalletColumn ? 'grid-cols-[1fr_auto_auto] xs:grid-cols-4' : 'grid-cols-[1fr_auto_auto] xs:grid-cols-3';
83
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: `gap-2 2xs:gap-3 sm:gap-4 py-1.5 2xs:py-2 px-2 2xs:px-3 sm:px-4 border-b border-neutral-700 text-[9px] 2xs:text-[10px] sm:text-xs font-medium text-neutral-400 tracking-wider grid ${gridCols}`, children: [(0, jsx_runtime_1.jsx)("div", { children: t('token', 'Token') }), showWalletColumn && (0, jsx_runtime_1.jsx)("div", { className: "hidden xs:block", children: t('wallet', 'Wallet') }), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: t('amount', 'Amount') }), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: t('valuation', 'Valuation') })] }), (0, jsx_runtime_1.jsx)("div", { className: "divide-y divide-neutral-800", children: holdings.map((h, idx) => ((0, jsx_runtime_1.jsxs)("div", { className: `gap-2 2xs:gap-3 sm:gap-4 py-2 2xs:py-2.5 sm:py-3 px-2 2xs:px-3 sm:px-4 items-center hover:bg-neutral-700 transition-colors rounded grid ${gridCols}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 sm:gap-3 min-w-0", children: [(0, jsx_runtime_1.jsx)(TokenIcon, { symbol: h.symbol, color: h.color, logoURI: h.logoURI }), (0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-white font-medium text-xs 2xs:text-sm truncate", children: h.symbol }), (0, jsx_runtime_1.jsx)("div", { className: "text-[9px] 2xs:text-[10px] sm:text-xs text-neutral-500 truncate", children: h.name })] })] }), showWalletColumn && ((0, jsx_runtime_1.jsxs)("div", { className: "hidden xs:block", children: [(0, jsx_runtime_1.jsx)("code", { className: "text-[10px] sm:text-xs text-neutral-400 font-mono", children: h.walletShort }), h.isPrimary && (0, jsx_runtime_1.jsx)("span", { className: "ml-1 text-[9px] sm:text-[10px] text-cyan-400", children: t('primary', 'Primary') })] })), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: (0, jsx_runtime_1.jsx)("div", { className: "text-white text-xs 2xs:text-sm sm:text-base font-mono whitespace-nowrap", children: hideBalance ? '****' : fmt(h.balance, h.balance < 1 ? 6 : 4) }) }), (0, jsx_runtime_1.jsxs)("div", { className: "text-right", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-neutral-300 text-xs 2xs:text-sm sm:text-base font-mono whitespace-nowrap", children: hideBalance ? '****' : fmtUSD(h.usdValue) }), (0, jsx_runtime_1.jsx)("div", { className: "text-[9px] 2xs:text-[10px] sm:text-xs text-neutral-500", children: fmtUSD(h.price) })] })] }, `${h.symbol}-${h.wallet || idx}`))) })] }));
84
84
  }
85
85
  function MicrocosmWalletPage({ basePath = '', onNavigate }) {
86
86
  const t = (0, i18n_context_1.useTranslations)('walletDash');
@@ -204,9 +204,9 @@ function MicrocosmWalletPage({ basePath = '', onNavigate }) {
204
204
  }
205
205
  };
206
206
  const anyError = false;
207
- return ((0, jsx_runtime_1.jsxs)("div", { className: "max-w-7xl mx-auto p-6 space-y-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-2xl font-bold text-white tracking-wider", children: t('title', 'Wallet') }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-neutral-400 mt-1", children: t('subtitle', 'On-chain assets & balances') })] }), (0, jsx_runtime_1.jsxs)("button", { className: "flex items-center gap-2 px-3 py-1.5 text-sm border border-neutral-700 rounded text-neutral-400 hover:bg-neutral-800 hover:text-neutral-300 bg-transparent transition-colors disabled:opacity-50", onClick: handleRefresh, disabled: isRefreshing || multiLoading, children: [(0, jsx_runtime_1.jsx)(IconRefresh, { className: isRefreshing || multiLoading ? 'animate-spin' : '' }), t('refresh', 'Refresh')] })] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-between mb-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-neutral-400 text-sm", children: [(0, jsx_runtime_1.jsx)(IconWallet, { className: "text-cyan-400" }), (0, jsx_runtime_1.jsx)("span", { children: isAllTab ? t('totalAssetValue', 'Total Asset Value') : t('walletAssetValue', 'Wallet Asset Value') }), (0, jsx_runtime_1.jsx)("button", { onClick: () => setHideBalance(!hideBalance), className: "hover:text-white transition-colors", children: hideBalance ? (0, jsx_runtime_1.jsx)(IconEyeOff, {}) : (0, jsx_runtime_1.jsx)(IconEye, {}) })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex items-baseline gap-2 mb-1", children: (0, jsx_runtime_1.jsx)("span", { className: "text-3xl font-bold text-white font-mono", children: hideBalance ? '****' : (activeUsdValue > 0 ? fmtUSD(activeUsdValue) : '--') }) }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-xs", children: hideBalance ? '****' : t('aggregatedDesc', 'Aggregated from on-chain token balances') })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [walletList.length > 1 && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1 mb-4 overflow-x-auto pb-1", children: [(0, jsx_runtime_1.jsxs)("button", { onClick: () => setActiveTab('all'), className: `px-3 py-1.5 text-xs rounded whitespace-nowrap transition-colors ${activeTab === 'all'
207
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "max-w-7xl mx-auto px-2 py-3 space-y-2 2xs:px-3 2xs:py-4 2xs:space-y-3 xs:px-4 xs:space-y-4 sm:px-6 sm:py-6 sm:space-y-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl md:text-3xl font-bold text-white tracking-wider", children: t('title', 'Wallet') }), (0, jsx_runtime_1.jsx)("p", { className: "text-[10px] 2xs:text-xs sm:text-sm text-neutral-400 mt-1 truncate", children: t('subtitle', 'On-chain assets & balances') })] }), (0, jsx_runtime_1.jsxs)("button", { className: "flex items-center gap-1.5 2xs:gap-2 px-2 2xs:px-3 py-1.5 2xs:py-2 sm:px-4 sm:py-2.5 text-xs 2xs:text-sm border border-neutral-700 rounded text-neutral-400 hover:bg-neutral-800 hover:text-neutral-300 bg-transparent transition-colors disabled:opacity-50 whitespace-nowrap shrink-0", onClick: handleRefresh, disabled: isRefreshing || multiLoading, children: [(0, jsx_runtime_1.jsx)(IconRefresh, { className: isRefreshing || multiLoading ? 'animate-spin' : '' }), t('refresh', 'Refresh')] })] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-between mb-1.5 2xs:mb-2 sm:mb-3 md:mb-4", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 text-neutral-400 text-xs 2xs:text-sm min-w-0", children: [(0, jsx_runtime_1.jsx)(IconWallet, { className: "text-cyan-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "truncate", children: isAllTab ? t('totalAssetValue', 'Total Asset Value') : t('walletAssetValue', 'Wallet Asset Value') }), (0, jsx_runtime_1.jsx)("button", { onClick: () => setHideBalance(!hideBalance), className: "hover:text-white transition-colors shrink-0", children: hideBalance ? (0, jsx_runtime_1.jsx)(IconEyeOff, {}) : (0, jsx_runtime_1.jsx)(IconEye, {}) })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex items-baseline gap-2 mb-1", children: (0, jsx_runtime_1.jsx)("span", { className: "text-lg 2xs:text-xl xs:text-2xl sm:text-3xl font-bold text-white font-mono break-all", children: hideBalance ? '****' : (activeUsdValue > 0 ? fmtUSD(activeUsdValue) : '--') }) }), (0, jsx_runtime_1.jsx)("div", { className: "text-neutral-500 text-[9px] 2xs:text-[10px] sm:text-xs", children: hideBalance ? '****' : t('aggregatedDesc', 'Aggregated from on-chain token balances') })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [walletList.length > 1 && ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1 mb-2 2xs:mb-3 sm:mb-4 overflow-x-auto pb-1", children: [(0, jsx_runtime_1.jsxs)("button", { onClick: () => setActiveTab('all'), className: `px-2 2xs:px-3 py-1 2xs:py-1.5 text-[10px] 2xs:text-xs rounded whitespace-nowrap transition-colors ${activeTab === 'all'
208
208
  ? 'bg-cyan-700 text-white'
209
- : 'bg-neutral-800 text-neutral-400 hover:text-white hover:bg-neutral-700'}`, children: [t('overview', 'Overview'), " (", walletList.length, " ", t('wallets', 'wallets'), ")"] }), walletList.map((w) => ((0, jsx_runtime_1.jsxs)("button", { onClick: () => setActiveTab(w.wallet_address), className: `px-3 py-1.5 text-xs rounded whitespace-nowrap transition-colors flex items-center gap-1 ${activeTab === w.wallet_address
209
+ : 'bg-neutral-800 text-neutral-400 hover:text-white hover:bg-neutral-700'}`, children: [t('overview', 'Overview'), " (", walletList.length, " ", t('wallets', 'wallets'), ")"] }), walletList.map((w) => ((0, jsx_runtime_1.jsxs)("button", { onClick: () => setActiveTab(w.wallet_address), className: `px-2 2xs:px-3 py-1 2xs:py-1.5 text-[10px] 2xs:text-xs rounded whitespace-nowrap transition-colors flex items-center gap-1 ${activeTab === w.wallet_address
210
210
  ? 'bg-cyan-700 text-white'
211
- : 'bg-neutral-800 text-neutral-400 hover:text-white hover:bg-neutral-700'}`, children: [(0, jsx_runtime_1.jsxs)("code", { className: "font-mono", children: [w.wallet_address.slice(0, 4), "...", w.wallet_address.slice(-4)] }), w.is_primary && (0, jsx_runtime_1.jsx)("span", { className: "text-cyan-400 text-[10px]", children: t('primary', 'Primary') })] }, w.wallet_address)))] })), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-neutral-400 text-sm mb-4", children: [(0, jsx_runtime_1.jsx)(IconCreditCard, { className: "text-cyan-400" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('onChainAssets', 'On-Chain Assets') }), multiLoading && (0, jsx_runtime_1.jsx)(Spinner, { size: "w-3 h-3" })] }), multiLoading ? ((0, jsx_runtime_1.jsx)("div", { className: "py-10", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center gap-3", children: [(0, jsx_runtime_1.jsx)(Spinner, { size: "w-6 h-6" }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-neutral-400", children: t('syncingOnChainData', 'Syncing on-chain data...') }), (0, jsx_runtime_1.jsx)("div", { className: "w-48 h-1 bg-neutral-800 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-cyan-400/60 rounded-full animate-pulse", style: { width: '60%' } }) })] }) })) : ((0, jsx_runtime_1.jsx)(AssetList, { holdings: activeHoldings, hideBalance: hideBalance, showWalletColumn: showWalletCol, isLoading: multiLoading })), (0, jsx_runtime_1.jsx)("div", { className: "mt-4 pt-3 border-t border-neutral-700 space-y-2", children: isAllTab ? ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2 text-xs text-neutral-500", children: [(0, jsx_runtime_1.jsx)(IconInfo, { className: "mt-0.5 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { children: t('allWalletsNote', 'Aggregated on-chain balances across {count} wallets. Low-value assets (<$1) are hidden.', { count: walletList.length }) })] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-xs text-neutral-500", children: [(0, jsx_runtime_1.jsx)(IconInfo, { className: "shrink-0" }), (0, jsx_runtime_1.jsxs)("span", { children: [t('currentWallet', 'Current wallet'), ":"] }), (0, jsx_runtime_1.jsx)("code", { className: "text-neutral-400 bg-neutral-800 px-2 py-0.5 rounded font-mono", children: activeTab }), walletList.find((w) => w.wallet_address === activeTab)?.is_primary && ((0, jsx_runtime_1.jsx)("span", { className: "text-cyan-400 bg-cyan-400/20 px-1.5 py-0.5 rounded text-[10px]", children: t('primary', 'Primary') }))] }), (0, jsx_runtime_1.jsxs)("a", { href: `https://solscan.io/account/${activeTab}`, target: "_blank", rel: "noopener noreferrer", className: "text-cyan-400 hover:text-cyan-300 text-xs flex items-center gap-1", children: [t('viewOnSolscan', 'View on Solscan'), " ", (0, jsx_runtime_1.jsx)(IconExternalLink, { className: "w-3 h-3" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2 text-xs text-neutral-500", children: [(0, jsx_runtime_1.jsx)(IconInfo, { className: "mt-0.5 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { children: t('singleWalletNote', 'Showing on-chain balances for this wallet only. Low-value assets (<$1) are hidden.') })] })] })) })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-4 bg-cyan-400/20 rounded-xl border border-cyan-400/30", children: (0, jsx_runtime_1.jsx)(IconWallet, { className: "w-8 h-8 text-cyan-400" }) }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-400 tracking-wider mb-1", children: t('mccBalance', 'MCC Balance') }), (0, jsx_runtime_1.jsx)("div", { className: "text-4xl font-bold text-white font-mono", children: mccLoading ? (0, jsx_runtime_1.jsx)(Spinner, {}) : mask(fmt(mccBalance)) }), (0, jsx_runtime_1.jsxs)("div", { className: "text-sm text-neutral-500 mt-1", children: [mccLoading ? '' : mask(`${fmtUSD(totalUsd)}`), !mccLoading && price > 0 && ((0, jsx_runtime_1.jsxs)("span", { className: "ml-2 text-xs text-neutral-600", children: ["@ ", fmtUSD(price), "/MCC"] }))] })] })] }), (0, jsx_runtime_1.jsxs)("button", { onClick: () => onNavigate?.(resolvePath('/mcc/mining')), className: "flex items-center gap-2 px-4 py-2 bg-cyan-700 hover:bg-cyan-600 text-white rounded text-sm transition-colors", children: [(0, jsx_runtime_1.jsx)(IconExternalLink, { className: "h-4 w-4" }), t('mintRecords', 'Mining Records')] })] }), walletList.length > 1 && mccData?.wallets && mccData.wallets.length > 1 && ((0, jsx_runtime_1.jsx)("div", { className: "mt-4 space-y-2", children: mccData.wallets.map((wb) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between p-3 bg-neutral-800 rounded border border-neutral-700 text-sm", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsxs)("span", { className: "text-neutral-400 font-mono", children: [wb.wallet_address.slice(0, 6), "...", wb.wallet_address.slice(-4)] }), wb.is_primary && ((0, jsx_runtime_1.jsx)("span", { className: "text-[10px] bg-cyan-400/20 text-cyan-400 px-1.5 py-0.5 rounded", children: "PRIMARY" }))] }), (0, jsx_runtime_1.jsxs)("span", { className: "text-cyan-400 font-mono font-bold", children: [mask(fmt(wb.balance ?? 0, 3)), " MCC"] })] }, wb.wallet_address))) }))] }) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-neutral-400 text-sm mb-4", children: [(0, jsx_runtime_1.jsx)(IconGift, { className: "text-cyan-400" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('mcdPoints', 'MCD Points') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)(IconCreditCard, { className: "h-4 w-4 text-cyan-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400 tracking-wider", children: t('currentBalance', 'Current Balance') })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-cyan-400 font-mono", children: mcdLoading ? (0, jsx_runtime_1.jsx)(Spinner, {}) : mask(fmt(mcdAmount, 6)) }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-500 mt-1", children: "MCD" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-4 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)(IconTrendingUp, { className: "h-4 w-4 text-neutral-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-neutral-400 tracking-wider", children: t('totalReceived', 'Total Received') })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-white font-mono", children: mcdLoading ? (0, jsx_runtime_1.jsx)(Spinner, {}) : mask(fmt(mcdTotalReceived, 6)) }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-neutral-500 mt-1", children: "MCD" })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "mt-4 pt-3 border-t border-neutral-700 space-y-2", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2 text-xs text-neutral-500", children: [(0, jsx_runtime_1.jsx)(IconGift, { className: "w-3 h-3 mt-0.5 shrink-0" }), (0, jsx_runtime_1.jsxs)("span", { children: [t('income', 'Income'), ": ", (0, jsx_runtime_1.jsx)("span", { className: "text-white", children: mask(fmt(mcdTotalReceived, 0)) }), ' · ', t('spent', 'Spent'), ": ", (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400", children: mask(fmt(mcdSpent, 0)) }), ' · ', t('mcdDistributionNote', 'MCD is distributed daily to eligible miners.')] })] }) })] }) }), activeLocks.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-neutral-400 text-sm mb-4", children: [(0, jsx_runtime_1.jsx)(IconLock, { className: "w-4 h-4" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('lockPeriod14Days', 'Lock Period (14 days)') })] }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-3", children: activeLocks.map((lock) => ((0, jsx_runtime_1.jsx)(LockPeriodCard, { lock: lock, hideBalance: hideBalance }, lock.lock_id))) }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-3 text-xs text-neutral-500 font-mono", children: [t('totalLocked', 'Total locked'), ": ", mask(fmt(lockedAmount, 2)), " MCC"] })] }) })), walletList.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 text-neutral-400 text-sm mb-4", children: [(0, jsx_runtime_1.jsx)(IconWallet, { className: "w-4 h-4 text-cyan-400" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('connectedWallets', 'Connected Wallets') })] }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-2", children: walletList.map((w) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between p-3 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)("code", { className: "text-sm text-neutral-300 font-mono", children: w.wallet_address }), w.is_primary && ((0, jsx_runtime_1.jsx)("span", { className: "text-[10px] bg-cyan-400/20 text-cyan-400 border border-cyan-400/30 px-1.5 py-0.5 rounded font-mono", children: "PRIMARY" }))] }), (0, jsx_runtime_1.jsx)("a", { href: `https://solscan.io/account/${w.wallet_address}`, target: "_blank", rel: "noopener noreferrer", className: "text-cyan-400 hover:text-cyan-300 transition-colors", children: (0, jsx_runtime_1.jsx)(IconExternalLink, { className: "w-4 h-4" }) })] }, w.wallet_address))) })] }) }))] }));
211
+ : 'bg-neutral-800 text-neutral-400 hover:text-white hover:bg-neutral-700'}`, children: [(0, jsx_runtime_1.jsxs)("code", { className: "font-mono", children: [w.wallet_address.slice(0, 4), "...", w.wallet_address.slice(-4)] }), w.is_primary && (0, jsx_runtime_1.jsx)("span", { className: "text-cyan-400 text-[9px] 2xs:text-[10px]", children: t('primary', 'Primary') })] }, w.wallet_address)))] })), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 text-neutral-400 text-xs 2xs:text-sm mb-1.5 2xs:mb-2 sm:mb-3 md:mb-4", children: [(0, jsx_runtime_1.jsx)(IconCreditCard, { className: "text-cyan-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('onChainAssets', 'On-Chain Assets') }), multiLoading && (0, jsx_runtime_1.jsx)(Spinner, { size: "w-3 h-3" })] }), multiLoading ? ((0, jsx_runtime_1.jsx)("div", { className: "py-10", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center gap-3", children: [(0, jsx_runtime_1.jsx)(Spinner, { size: "w-6 h-6" }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-neutral-400", children: t('syncingOnChainData', 'Syncing on-chain data...') }), (0, jsx_runtime_1.jsx)("div", { className: "w-48 h-1 bg-neutral-800 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-cyan-400/60 rounded-full animate-pulse", style: { width: '60%' } }) })] }) })) : ((0, jsx_runtime_1.jsx)(AssetList, { holdings: activeHoldings, hideBalance: hideBalance, showWalletColumn: showWalletCol, isLoading: multiLoading })), (0, jsx_runtime_1.jsx)("div", { className: "mt-3 2xs:mt-4 pt-2 2xs:pt-3 border-t border-neutral-700 space-y-1.5 2xs:space-y-2", children: isAllTab ? ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-1.5 2xs:gap-2 text-[10px] 2xs:text-xs text-neutral-500", children: [(0, jsx_runtime_1.jsx)(IconInfo, { className: "mt-0.5 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { children: t('allWalletsNote', 'Aggregated on-chain balances across {count} wallets. Low-value assets (<$1) are hidden.', { count: walletList.length }) })] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-1.5 2xs:space-y-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between gap-2 flex-wrap", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 text-[10px] 2xs:text-xs text-neutral-500 min-w-0", children: [(0, jsx_runtime_1.jsx)(IconInfo, { className: "shrink-0" }), (0, jsx_runtime_1.jsxs)("span", { className: "hidden 2xs:inline", children: [t('currentWallet', 'Current wallet'), ":"] }), (0, jsx_runtime_1.jsx)("code", { className: "text-neutral-400 bg-neutral-800 px-1.5 py-0.5 rounded font-mono truncate min-w-0 max-w-[140px] 2xs:max-w-[180px] sm:max-w-none", children: activeTab }), walletList.find((w) => w.wallet_address === activeTab)?.is_primary && ((0, jsx_runtime_1.jsx)("span", { className: "text-cyan-400 bg-cyan-400/20 px-1.5 py-0.5 rounded text-[9px] 2xs:text-[10px] shrink-0", children: t('primary', 'Primary') }))] }), (0, jsx_runtime_1.jsxs)("a", { href: `https://solscan.io/account/${activeTab}`, target: "_blank", rel: "noopener noreferrer", className: "text-cyan-400 hover:text-cyan-300 text-[10px] 2xs:text-xs flex items-center gap-1 whitespace-nowrap", children: [t('viewOnSolscan', 'View on Solscan'), " ", (0, jsx_runtime_1.jsx)(IconExternalLink, { className: "w-3 h-3" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-1.5 2xs:gap-2 text-[10px] 2xs:text-xs text-neutral-500", children: [(0, jsx_runtime_1.jsx)(IconInfo, { className: "mt-0.5 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { children: t('singleWalletNote', 'Showing on-chain balances for this wallet only. Low-value assets (<$1) are hidden.') })] })] })) })] }) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 sm:gap-3 min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-cyan-400/20 rounded-xl border border-cyan-400/30 shrink-0", children: (0, jsx_runtime_1.jsx)(IconWallet, { className: "w-4 h-4 2xs:w-5 2xs:h-5 sm:w-8 sm:h-8 text-cyan-400" }) }), (0, jsx_runtime_1.jsxs)("div", { className: "min-w-0", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-[9px] 2xs:text-[10px] sm:text-xs text-neutral-400 tracking-wider mb-0.5 2xs:mb-1", children: t('mccBalance', 'MCC Balance') }), (0, jsx_runtime_1.jsx)("div", { className: "text-lg 2xs:text-xl xs:text-2xl sm:text-3xl md:text-4xl font-bold text-white font-mono truncate", children: mccLoading ? (0, jsx_runtime_1.jsx)(Spinner, {}) : mask(fmt(mccBalance)) }), (0, jsx_runtime_1.jsxs)("div", { className: "text-[10px] 2xs:text-xs sm:text-sm text-neutral-500 mt-0.5 2xs:mt-1 truncate", children: [mccLoading ? '' : mask(`${fmtUSD(totalUsd)}`), !mccLoading && price > 0 && ((0, jsx_runtime_1.jsxs)("span", { className: "ml-1 2xs:ml-2 text-[9px] 2xs:text-[10px] sm:text-xs text-neutral-600", children: ["@ ", fmtUSD(price), "/MCC"] }))] })] })] }), (0, jsx_runtime_1.jsxs)("button", { onClick: () => onNavigate?.(resolvePath('/mcc/mining')), className: "flex items-center gap-1 2xs:gap-2 px-2 2xs:px-3 py-1.5 2xs:py-2 sm:px-4 sm:py-2.5 bg-cyan-700 hover:bg-cyan-600 text-white rounded text-[10px] 2xs:text-xs sm:text-sm transition-colors whitespace-nowrap shrink-0", children: [(0, jsx_runtime_1.jsx)(IconExternalLink, { className: "h-3 w-3 2xs:h-4 2xs:w-4" }), (0, jsx_runtime_1.jsx)("span", { className: "hidden 2xs:inline", children: t('mintRecords', 'Mining Records') }), (0, jsx_runtime_1.jsx)("span", { className: "2xs:hidden", children: t('mintRecords', 'Records') })] })] }), walletList.length > 1 && mccData?.wallets && mccData.wallets.length > 1 && ((0, jsx_runtime_1.jsx)("div", { className: "mt-3 2xs:mt-4 space-y-1.5 2xs:space-y-2", children: mccData.wallets.map((wb) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between gap-2 p-2 2xs:p-3 bg-neutral-800 rounded border border-neutral-700 text-xs 2xs:text-sm", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 min-w-0", children: [(0, jsx_runtime_1.jsxs)("span", { className: "text-neutral-400 font-mono truncate", children: [(0, jsx_runtime_1.jsxs)("span", { className: "2xs:hidden", children: [wb.wallet_address.slice(0, 4), "...", wb.wallet_address.slice(-4)] }), (0, jsx_runtime_1.jsxs)("span", { className: "hidden 2xs:inline sm:hidden", children: [wb.wallet_address.slice(0, 6), "...", wb.wallet_address.slice(-4)] }), (0, jsx_runtime_1.jsxs)("span", { className: "hidden sm:inline", children: [wb.wallet_address.slice(0, 8), "...", wb.wallet_address.slice(-8)] })] }), wb.is_primary && ((0, jsx_runtime_1.jsx)("span", { className: "text-[9px] 2xs:text-[10px] bg-cyan-400/20 text-cyan-400 px-1 2xs:px-1.5 py-0.5 rounded shrink-0", children: "PRIMARY" }))] }), (0, jsx_runtime_1.jsxs)("span", { className: "text-cyan-400 font-mono font-bold whitespace-nowrap shrink-0", children: [mask(fmt(wb.balance ?? 0, 3)), " MCC"] })] }, wb.wallet_address))) }))] }) }), (0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg hover:border-cyan-400/50 transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 text-neutral-400 text-xs 2xs:text-sm mb-1.5 2xs:mb-2 sm:mb-3 md:mb-4", children: [(0, jsx_runtime_1.jsx)(IconGift, { className: "text-cyan-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('mcdPoints', 'MCD Points') })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 gap-1.5 2xs:gap-2 sm:gap-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 mb-1.5 2xs:mb-2", children: [(0, jsx_runtime_1.jsx)(IconCreditCard, { className: "h-3 w-3 2xs:h-4 2xs:w-4 text-cyan-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[8px] 2xs:text-[10px] sm:text-xs text-neutral-400 tracking-wider truncate", children: t('currentBalance', 'Current Balance') })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl font-bold text-cyan-400 font-mono truncate", children: mcdLoading ? (0, jsx_runtime_1.jsx)(Spinner, {}) : mask(fmt(mcdAmount, 6)) }), (0, jsx_runtime_1.jsx)("div", { className: "text-[9px] 2xs:text-[10px] sm:text-xs text-neutral-500 mt-0.5 2xs:mt-1", children: "MCD" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 bg-neutral-800 rounded border border-neutral-700 min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 mb-1.5 2xs:mb-2", children: [(0, jsx_runtime_1.jsx)(IconTrendingUp, { className: "h-3 w-3 2xs:h-4 2xs:w-4 text-neutral-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "text-[8px] 2xs:text-[10px] sm:text-xs text-neutral-400 tracking-wider truncate", children: t('totalReceived', 'Total Received') })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-base 2xs:text-lg xs:text-xl sm:text-2xl font-bold text-white font-mono truncate", children: mcdLoading ? (0, jsx_runtime_1.jsx)(Spinner, {}) : mask(fmt(mcdTotalReceived, 6)) }), (0, jsx_runtime_1.jsx)("div", { className: "text-[9px] 2xs:text-[10px] sm:text-xs text-neutral-500 mt-0.5 2xs:mt-1", children: "MCD" })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "mt-3 2xs:mt-4 pt-2 2xs:pt-3 border-t border-neutral-700 space-y-1.5 2xs:space-y-2", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-1.5 2xs:gap-2 text-[10px] 2xs:text-xs text-neutral-500", children: [(0, jsx_runtime_1.jsx)(IconGift, { className: "w-3 h-3 mt-0.5 shrink-0" }), (0, jsx_runtime_1.jsxs)("span", { children: [t('income', 'Income'), ": ", (0, jsx_runtime_1.jsx)("span", { className: "text-white", children: mask(fmt(mcdTotalReceived, 0)) }), ' · ', t('spent', 'Spent'), ": ", (0, jsx_runtime_1.jsx)("span", { className: "text-neutral-400", children: mask(fmt(mcdSpent, 0)) }), ' · ', t('mcdDistributionNote', 'MCD is distributed daily to eligible miners.')] })] }) })] }) }), activeLocks.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 text-neutral-400 text-xs 2xs:text-sm mb-1.5 2xs:mb-2 sm:mb-3 md:mb-4", children: [(0, jsx_runtime_1.jsx)(IconLock, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 sm:w-5 sm:h-5 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('lockPeriod14Days', 'Lock Period (14 days)') })] }), (0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-1 gap-1.5 2xs:gap-2 sm:gap-3", children: activeLocks.map((lock) => ((0, jsx_runtime_1.jsx)(LockPeriodCard, { lock: lock, hideBalance: hideBalance }, lock.lock_id))) }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-2 2xs:mt-3 text-[10px] 2xs:text-xs text-neutral-500 font-mono break-all", children: [t('totalLocked', 'Total locked'), ": ", mask(fmt(lockedAmount, 2)), " MCC"] })] }) })), walletList.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "bg-neutral-900 border border-neutral-700 rounded-lg transition-colors", children: (0, jsx_runtime_1.jsxs)("div", { className: "p-2 2xs:p-3 sm:p-4 md:p-6", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 text-neutral-400 text-xs 2xs:text-sm mb-1.5 2xs:mb-2 sm:mb-3 md:mb-4", children: [(0, jsx_runtime_1.jsx)(IconWallet, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4 sm:w-5 sm:h-5 text-cyan-400 shrink-0" }), (0, jsx_runtime_1.jsx)("span", { className: "tracking-wider", children: t('connectedWallets', 'Connected Wallets') })] }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-1.5 2xs:space-y-2", children: walletList.map((w) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between gap-2 p-2 2xs:p-3 bg-neutral-800 rounded border border-neutral-700", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1.5 2xs:gap-2 sm:gap-3 min-w-0", children: [(0, jsx_runtime_1.jsxs)("code", { className: "text-[10px] 2xs:text-xs sm:text-sm text-neutral-300 font-mono truncate", children: [(0, jsx_runtime_1.jsxs)("span", { className: "2xs:hidden", children: [w.wallet_address.slice(0, 4), "...", w.wallet_address.slice(-4)] }), (0, jsx_runtime_1.jsxs)("span", { className: "hidden 2xs:inline xs:hidden", children: [w.wallet_address.slice(0, 6), "...", w.wallet_address.slice(-6)] }), (0, jsx_runtime_1.jsxs)("span", { className: "hidden xs:inline sm:hidden", children: [w.wallet_address.slice(0, 8), "...", w.wallet_address.slice(-8)] }), (0, jsx_runtime_1.jsx)("span", { className: "hidden sm:inline", children: w.wallet_address })] }), w.is_primary && ((0, jsx_runtime_1.jsx)("span", { className: "text-[8px] 2xs:text-[10px] bg-cyan-400/20 text-cyan-400 border border-cyan-400/30 px-1 2xs:px-1.5 py-0.5 rounded font-mono shrink-0", children: "PRIMARY" }))] }), (0, jsx_runtime_1.jsx)("a", { href: `https://solscan.io/account/${w.wallet_address}`, target: "_blank", rel: "noopener noreferrer", className: "text-cyan-400 hover:text-cyan-300 transition-colors shrink-0", children: (0, jsx_runtime_1.jsx)(IconExternalLink, { className: "w-3.5 h-3.5 2xs:w-4 2xs:h-4" }) })] }, w.wallet_address))) })] }) }))] }));
212
212
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microcosmmoney/portal-react",
3
- "version": "3.12.2",
3
+ "version": "3.12.4",
4
4
  "description": "Microcosm Portal UI components for React/Next.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",