@microcosmmoney/portal-react 3.9.0 → 3.10.0

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.
@@ -5,6 +5,7 @@ exports.MicrocosmWalletPage = MicrocosmWalletPage;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const react_1 = require("react");
7
7
  const auth_react_1 = require("@microcosmmoney/auth-react");
8
+ const mainstream_tokens_1 = require("../../config/mainstream-tokens");
8
9
  /* ── helpers ── */
9
10
  const fmt = (n, d = 2) => n.toLocaleString('en-US', { minimumFractionDigits: d, maximumFractionDigits: d });
10
11
  const fmtUSD = (n) => '$' + n.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
@@ -68,7 +69,11 @@ function LockPeriodCard({ lock, hideBalance }) {
68
69
  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}%` } }) }) })] }));
69
70
  }
70
71
  /* ── token icon ── */
71
- function TokenIcon({ symbol, color }) {
72
+ function TokenIcon({ symbol, color, logoURI }) {
73
+ const [err, setErr] = (0, react_1.useState)(false);
74
+ if (logoURI && !err) {
75
+ 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) }));
76
+ }
72
77
  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) }));
73
78
  }
74
79
  function AssetList({ holdings, hideBalance, showWalletColumn, isLoading, }) {
@@ -79,7 +84,7 @@ function AssetList({ holdings, hideBalance, showWalletColumn, isLoading, }) {
79
84
  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: "No valued assets found" }) }));
80
85
  }
81
86
  const gridCols = showWalletColumn ? 'grid-cols-4' : 'grid-cols-3';
82
- 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: "Token" }), showWalletColumn && (0, jsx_runtime_1.jsx)("div", { children: "Wallet" }), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: "Amount" }), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: "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 }), (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: "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}`))) })] }));
87
+ 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: "Token" }), showWalletColumn && (0, jsx_runtime_1.jsx)("div", { children: "Wallet" }), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: "Amount" }), (0, jsx_runtime_1.jsx)("div", { className: "text-right", children: "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: "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}`))) })] }));
83
88
  }
84
89
  function MicrocosmWalletPage({ basePath = '', onNavigate }) {
85
90
  const { balance: mccData, price: mccPrice, loading: mccLoading, refresh: refreshMCC } = (0, auth_react_1.useMCC)(60000);
@@ -103,18 +108,28 @@ function MicrocosmWalletPage({ basePath = '', onNavigate }) {
103
108
  const mask = (v) => (hideBalance ? '****' : v);
104
109
  const resolvePath = (p) => (basePath ? `${basePath.replace(/\/$/, '')}${p}` : p);
105
110
  /* ── build on-chain asset holdings from multiBalance ── */
106
- const TOKEN_META = {
107
- SOL: { name: 'Solana', color: 'bg-purple-600' },
108
- MCC: { name: 'Microcosm Coin', color: 'bg-cyan-600' },
109
- USDC: { name: 'USD Coin', color: 'bg-blue-600' },
110
- USDT: { name: 'Tether', color: 'bg-green-600' },
111
- };
112
111
  const TOKEN_PRICES = {
113
- SOL: 0, // we don't have SOL price from market data, show 0
112
+ SOL: 0,
114
113
  MCC: price,
114
+ MCD: 0,
115
115
  USDC: 1,
116
116
  USDT: 1,
117
117
  };
118
+ const TRACKED_SYMBOLS = [
119
+ ['SOL', (p) => Number(p?.sol_balance ?? p?.sol?.balance ?? 0)],
120
+ ['MCC', (p) => Number(p?.mcc_balance ?? 0)],
121
+ ['MCD', (p) => Number(p?.mcd_balance ?? 0)],
122
+ ['USDC', (p) => Number(p?.usdc_balance ?? 0)],
123
+ ['USDT', (p) => Number(p?.usdt_balance ?? 0)],
124
+ ];
125
+ const lookupMeta = (sym) => {
126
+ const cfg = mainstream_tokens_1.TOKEN_BY_SYMBOL.get(sym);
127
+ return {
128
+ name: cfg?.name ?? sym,
129
+ color: cfg?.color ?? 'bg-neutral-600',
130
+ logoURI: cfg?.logoURI,
131
+ };
132
+ };
118
133
  function buildHoldings(walletAddr) {
119
134
  if (!multiBalance)
120
135
  return [];
@@ -124,24 +139,19 @@ function MicrocosmWalletPage({ basePath = '', onNavigate }) {
124
139
  : multiBalance;
125
140
  for (const wb of sources) {
126
141
  const p = wb.portfolio || {};
127
- const entries = [
128
- ['SOL', p.sol_balance ?? 0],
129
- ['MCC', p.mcc_balance ?? 0],
130
- ['USDC', p.usdc_balance ?? 0],
131
- ['USDT', p.usdt_balance ?? 0],
132
- ];
133
- for (const [sym, bal] of entries) {
142
+ for (const [sym, get] of TRACKED_SYMBOLS) {
143
+ const bal = get(p);
134
144
  if (bal <= 0)
135
145
  continue;
136
- const meta = TOKEN_META[sym] || { name: sym, color: 'bg-neutral-600' };
146
+ const meta = lookupMeta(sym);
137
147
  const tp = TOKEN_PRICES[sym] ?? 0;
138
- const usdVal = bal * tp;
139
148
  items.push({
140
149
  symbol: sym,
141
150
  name: meta.name,
142
151
  color: meta.color,
152
+ logoURI: meta.logoURI,
143
153
  balance: bal,
144
- usdValue: usdVal,
154
+ usdValue: bal * tp,
145
155
  price: tp,
146
156
  wallet: wb.wallet_address,
147
157
  walletShort: `${wb.wallet_address.slice(0, 4)}...${wb.wallet_address.slice(-4)}`,
@@ -157,21 +167,21 @@ function MicrocosmWalletPage({ basePath = '', onNavigate }) {
157
167
  const agg = {};
158
168
  for (const wb of multiBalance) {
159
169
  const p = wb.portfolio || {};
160
- agg['SOL'] = (agg['SOL'] || 0) + (p.sol_balance ?? 0);
161
- agg['MCC'] = (agg['MCC'] || 0) + (p.mcc_balance ?? 0);
162
- agg['USDC'] = (agg['USDC'] || 0) + (p.usdc_balance ?? 0);
163
- agg['USDT'] = (agg['USDT'] || 0) + (p.usdt_balance ?? 0);
170
+ for (const [sym, get] of TRACKED_SYMBOLS) {
171
+ agg[sym] = (agg[sym] || 0) + get(p);
172
+ }
164
173
  }
165
174
  const items = [];
166
175
  for (const [sym, bal] of Object.entries(agg)) {
167
176
  if (bal <= 0)
168
177
  continue;
169
- const meta = TOKEN_META[sym] || { name: sym, color: 'bg-neutral-600' };
178
+ const meta = lookupMeta(sym);
170
179
  const tp = TOKEN_PRICES[sym] ?? 0;
171
180
  items.push({
172
181
  symbol: sym,
173
182
  name: meta.name,
174
183
  color: meta.color,
184
+ logoURI: meta.logoURI,
175
185
  balance: bal,
176
186
  usdValue: bal * tp,
177
187
  price: tp,
@@ -0,0 +1,13 @@
1
+ export interface MainstreamToken {
2
+ symbol: string;
3
+ name: string;
4
+ mint: string;
5
+ decimals: number;
6
+ color: string;
7
+ isStablecoin: boolean;
8
+ isNative?: boolean;
9
+ logoURI?: string;
10
+ }
11
+ export declare const MAINSTREAM_TOKENS: MainstreamToken[];
12
+ export declare const TOKEN_BY_MINT: Map<string, MainstreamToken>;
13
+ export declare const TOKEN_BY_SYMBOL: Map<string, MainstreamToken>;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TOKEN_BY_SYMBOL = exports.TOKEN_BY_MINT = exports.MAINSTREAM_TOKENS = void 0;
4
+ const T = 'https://microcosm.money/assets/tokens';
5
+ exports.MAINSTREAM_TOKENS = [
6
+ { symbol: "SOL", name: "Solana", mint: "So11111111111111111111111111111111111111112", decimals: 9, color: "bg-purple-500", isStablecoin: false, isNative: true, logoURI: `${T}/sol.png` },
7
+ { symbol: "MCC", name: "Microcosm Coin", mint: "MCCn6eqiTGzaiPKECg3viPmkdkS9YmkguqKvRcTxCsb", decimals: 9, color: "bg-cyan-500", isStablecoin: false, logoURI: `${T}/mcc.jpg` },
8
+ { symbol: "MCD", name: "Microcosm Dollar", mint: "MCDAhpfpKrsvXd1i95jToVd5SRL2xrZbeEriBbBJAn2", decimals: 9, color: "bg-amber-500", isStablecoin: true, logoURI: `${T}/mcd.jpg` },
9
+ { symbol: "USDC", name: "USD Coin", mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", decimals: 6, color: "bg-blue-500", isStablecoin: true, logoURI: `${T}/usdc.png` },
10
+ { symbol: "USDT", name: "Tether USD", mint: "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB", decimals: 6, color: "bg-green-500", isStablecoin: true, logoURI: `${T}/usdt.png` },
11
+ { symbol: "WBTC", name: "Wrapped Bitcoin", mint: "3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh", decimals: 8, color: "bg-orange-500", isStablecoin: false, logoURI: `${T}/wbtc.png` },
12
+ { symbol: "WETH", name: "Wrapped Ether", mint: "7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs", decimals: 8, color: "bg-blue-400", isStablecoin: false, logoURI: `${T}/weth.png` },
13
+ { symbol: "JUP", name: "Jupiter", mint: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN", decimals: 6, color: "bg-lime-500", isStablecoin: false, logoURI: `${T}/jup.png` },
14
+ { symbol: "RAY", name: "Raydium", mint: "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R", decimals: 6, color: "bg-cyan-500", isStablecoin: false, logoURI: `${T}/ray.png` },
15
+ { symbol: "ORCA", name: "Orca", mint: "orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE", decimals: 6, color: "bg-yellow-500", isStablecoin: false, logoURI: `${T}/orca.png` },
16
+ { symbol: "PYTH", name: "Pyth Network", mint: "HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3", decimals: 6, color: "bg-violet-500", isStablecoin: false, logoURI: `${T}/pyth.png` },
17
+ { symbol: "JTO", name: "Jito", mint: "jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL", decimals: 9, color: "bg-emerald-500", isStablecoin: false, logoURI: `${T}/jto.png` },
18
+ { symbol: "BONK", name: "Bonk", mint: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263", decimals: 5, color: "bg-orange-400", isStablecoin: false, logoURI: `${T}/bonk.png` },
19
+ { symbol: "WIF", name: "dogwifhat", mint: "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm", decimals: 6, color: "bg-pink-500", isStablecoin: false, logoURI: `${T}/wif.png` },
20
+ { symbol: "RENDER", name: "Render", mint: "rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof", decimals: 8, color: "bg-teal-500", isStablecoin: false, logoURI: `${T}/render.png` },
21
+ { symbol: "HNT", name: "Helium", mint: "hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux", decimals: 8, color: "bg-sky-500", isStablecoin: false, logoURI: `${T}/hnt.png` },
22
+ { symbol: "W", name: "Wormhole", mint: "85VBFQZC9TZkfaptBWjvUw7YbZjy52A6mjtPGjstQAmQ", decimals: 6, color: "bg-slate-500", isStablecoin: false, logoURI: `${T}/w.png` },
23
+ { symbol: "MSOL", name: "Marinade SOL", mint: "mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So", decimals: 9, color: "bg-rose-500", isStablecoin: false, logoURI: `${T}/msol.png` },
24
+ { symbol: "JITOSOL", name: "Jito Staked SOL", mint: "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn", decimals: 9, color: "bg-emerald-400", isStablecoin: false, logoURI: `${T}/jitosol.png` },
25
+ { symbol: "BSOL", name: "BlazeStake SOL", mint: "bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1", decimals: 9, color: "bg-orange-300", isStablecoin: false, logoURI: `${T}/bsol.png` },
26
+ { symbol: "INF", name: "Infinity", mint: "5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm", decimals: 9, color: "bg-indigo-500", isStablecoin: false, logoURI: `${T}/inf.png` },
27
+ { symbol: "JUPSOL", name: "Jupiter Staked SOL", mint: "jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v", decimals: 9, color: "bg-lime-400", isStablecoin: false, logoURI: `${T}/jupsol.png` },
28
+ { symbol: "TRUMP", name: "Official Trump", mint: "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN", decimals: 6, color: "bg-red-500", isStablecoin: false, logoURI: `${T}/trump.png` },
29
+ { symbol: "POPCAT", name: "Popcat", mint: "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr", decimals: 9, color: "bg-orange-300", isStablecoin: false, logoURI: `${T}/popcat.png` },
30
+ { symbol: "MEW", name: "Cat in a Dogs World", mint: "MEW1gQWJ3nEXg2qgERiKu7FAFj79PHvQVREQUzScPP5", decimals: 5, color: "bg-stone-500", isStablecoin: false, logoURI: `${T}/mew.png` },
31
+ { symbol: "FARTCOIN", name: "Fartcoin", mint: "9BB6NFEcjBCtnNLFko2FqVQBq8HHM13kCyYcdQbgpump", decimals: 6, color: "bg-green-400", isStablecoin: false, logoURI: `${T}/fartcoin.png` },
32
+ { symbol: "PNUT", name: "Peanut the Squirrel", mint: "2qEHjDLDLbuBgRYvsxhc5D6uDWAivNFZGan56P1tpump", decimals: 6, color: "bg-amber-400", isStablecoin: false, logoURI: `${T}/pnut.png` },
33
+ { symbol: "GOAT", name: "Goatseus Maximus", mint: "CzLSujWBLFsSjncfkh59rUFqvafWcY5tzedWJSuypump", decimals: 6, color: "bg-zinc-500", isStablecoin: false, logoURI: `${T}/goat.png` },
34
+ { symbol: "MICHI", name: "michi", mint: "5mbK36SZ7J19An8jFochhQS4of8g6BwUjbeCSxBSoWdp", decimals: 6, color: "bg-yellow-400", isStablecoin: false, logoURI: `${T}/michi.png` },
35
+ { symbol: "GIGA", name: "Gigachad", mint: "63LfDmNb3MQ8mw9MtZ2To9bEA2M71kZUUGq5tiJxcqj9", decimals: 5, color: "bg-stone-400", isStablecoin: false, logoURI: `${T}/giga.png` },
36
+ { symbol: "MOTHER", name: "Mother Iggy", mint: "3S8qX1MsMqRbiwKg2cQyx7nis1oHMgaCuc9c4VfvVdPN", decimals: 6, color: "bg-pink-400", isStablecoin: false, logoURI: `${T}/mother.png` },
37
+ { symbol: "SLERF", name: "Slerf", mint: "7BgBvyjrZX1YKz4oh9mjb8ZScatkkwb8DzFx7LoiVkM3", decimals: 9, color: "bg-amber-500", isStablecoin: false, logoURI: `${T}/slerf.png` },
38
+ { symbol: "MOODENG", name: "Moo Deng", mint: "ED5nyyWEzpPPiWimP8vYm7sD7TD3LAt3Q3gRTWHzPJBY", decimals: 6, color: "bg-red-400", isStablecoin: false, logoURI: `${T}/moodeng.png` },
39
+ { symbol: "AI16Z", name: "ai16z", mint: "HeLp6NuQkmYB4pYWo2zYs22mESHXPQYzXbB8n4V98jwC", decimals: 9, color: "bg-purple-400", isStablecoin: false, logoURI: `${T}/ai16z.png` },
40
+ { symbol: "ARC", name: "AI Rig Complex", mint: "61V8vBaqAGMpgDQi4JcAwo1dmBGHsyhzodcPqnEVpump", decimals: 6, color: "bg-cyan-400", isStablecoin: false, logoURI: `${T}/arc.png` },
41
+ { symbol: "GRIFFAIN", name: "GRIFFAIN", mint: "KENJSUYLASHUMfHyy5o4Hp2FdNqZg1AsUPhfH2kYvEP", decimals: 6, color: "bg-teal-400", isStablecoin: false, logoURI: `${T}/griffain.png` },
42
+ { symbol: "ZEREBRO", name: "Zerebro", mint: "8x5VqbHA8D7NkD52uNuS5nnt3PwA8pLD34ymskeSo2Wn", decimals: 6, color: "bg-indigo-400", isStablecoin: false, logoURI: `${T}/zerebro.png` },
43
+ { symbol: "LUCE", name: "Luce", mint: "CBdCxKo9QavR9hfShgpEBG3zekorAeD7W1jfq2o3pump", decimals: 6, color: "bg-yellow-300", isStablecoin: false, logoURI: `${T}/luce.png` },
44
+ { symbol: "DRIFT", name: "Drift", mint: "DriFtupJYLTosbwoN8koMbEYSx54aFAVLddWsbksjwg7", decimals: 6, color: "bg-violet-400", isStablecoin: false, logoURI: `${T}/drift.png` },
45
+ { symbol: "KMNO", name: "Kamino", mint: "KMNo3nJsBXfcpJTVhZcXLW7RmTwTt4GVFE7suUBo9sS", decimals: 6, color: "bg-fuchsia-500", isStablecoin: false, logoURI: `${T}/kmno.png` },
46
+ { symbol: "MNGO", name: "Mango", mint: "MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac", decimals: 6, color: "bg-orange-500", isStablecoin: false, logoURI: `${T}/mngo.png` },
47
+ { symbol: "FIDA", name: "Bonfida", mint: "EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp", decimals: 6, color: "bg-blue-400", isStablecoin: false, logoURI: `${T}/fida.png` },
48
+ { symbol: "SRM", name: "Serum", mint: "SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt", decimals: 6, color: "bg-cyan-300", isStablecoin: false, logoURI: `${T}/srm.png` },
49
+ { symbol: "STEP", name: "Step", mint: "StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT", decimals: 9, color: "bg-amber-400", isStablecoin: false, logoURI: `${T}/step.png` },
50
+ { symbol: "MAPS", name: "Maps", mint: "MAPS41MDahZ9QdKXhVa4dWB9RuyfV4XqhyAZ8XcYepb", decimals: 6, color: "bg-rose-400", isStablecoin: false, logoURI: `${T}/maps.png` },
51
+ { symbol: "OXY", name: "Oxygen", mint: "z3dn17yLaGMKffVogeFHQ9zWVcXgqgf3PQnDsNs2g6M", decimals: 6, color: "bg-purple-300", isStablecoin: false, logoURI: `${T}/oxy.png` },
52
+ { symbol: "DUST", name: "DUST Protocol", mint: "DUSTawucrTsGU8hcqRdHDCbuYhCPADMLM2VcCb8VnFnQ", decimals: 9, color: "bg-stone-500", isStablecoin: false, logoURI: `${T}/dust.png` },
53
+ { symbol: "FORGE", name: "Forge", mint: "FoRGERiW7odcCBGU1bztZi16osPBHjxharvDathL5eds", decimals: 9, color: "bg-orange-500", isStablecoin: false, logoURI: `${T}/forge.png` },
54
+ { symbol: "AURY", name: "Aurory", mint: "AURYydfxJib1ZkTir1Jn1J9ECYUtjb6rKQVmtYaixWPP", decimals: 9, color: "bg-yellow-500", isStablecoin: false, logoURI: `${T}/aury.png` },
55
+ { symbol: "PORT", name: "Port Finance", mint: "PoRTjZMPXb9T7dyU7tpLEZRQj7e6ssfAE62j2oQuc6y", decimals: 6, color: "bg-blue-300", isStablecoin: false, logoURI: `${T}/port.png` },
56
+ { symbol: "LIQ", name: "LIQ", mint: "4wjPQJ6PrkC4dHhYghwJzGBVP78DkBzA2U3kHoFNBuhj", decimals: 6, color: "bg-emerald-300", isStablecoin: false, logoURI: `${T}/liq.png` },
57
+ { symbol: "SUNNY", name: "Sunny", mint: "SUNNYWgPQmFxe9wTZzNK7iPnJ3vYDrkgnxJRJm1s3ag", decimals: 6, color: "bg-yellow-300", isStablecoin: false, logoURI: `${T}/sunny.png` },
58
+ { symbol: "SAMO", name: "Samoyedcoin", mint: "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU", decimals: 9, color: "bg-orange-400", isStablecoin: false, logoURI: `${T}/samo.png` },
59
+ { symbol: "SHDW", name: "Shadow Token", mint: "SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y", decimals: 9, color: "bg-zinc-500", isStablecoin: false, logoURI: `${T}/shdw.png` },
60
+ { symbol: "ATLAS", name: "Star Atlas", mint: "ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx", decimals: 8, color: "bg-indigo-300", isStablecoin: false, logoURI: `${T}/atlas.png` },
61
+ { symbol: "POLIS", name: "Star Atlas DAO", mint: "poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk", decimals: 8, color: "bg-indigo-500", isStablecoin: false, logoURI: `${T}/polis.png` },
62
+ ];
63
+ exports.TOKEN_BY_MINT = new Map(exports.MAINSTREAM_TOKENS.map(t => [t.mint, t]));
64
+ exports.TOKEN_BY_SYMBOL = new Map(exports.MAINSTREAM_TOKENS.map(t => [t.symbol, t]));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microcosmmoney/portal-react",
3
- "version": "3.9.0",
3
+ "version": "3.10.0",
4
4
  "description": "Microcosm Portal UI components for React/Next.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",