@chainberry/ui-components 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2130 -45
- package/dist/index.mjs +10227 -3106
- package/dist/styles.css +1 -1
- package/package.json +13 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,77 +1,2162 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
19
|
-
import { NavItemConfig } from '../../../react-app/src/components/nav/navConfig';
|
|
20
|
-
import { NavItemProps } from '../../../react-app/src/components/nav/NavItem';
|
|
21
|
-
import { NavLabel } from '../../../react-app/src/components/nav/NavLabel';
|
|
22
|
-
import { NavPreset } from '../../../react-app/src/components/nav/navConfig';
|
|
23
|
-
import { PRIMARY_NAV } from '../../../react-app/src/components/nav/navConfig';
|
|
24
|
-
import { SectionHeading } from '../../../react-app/src/components/nav/SectionHeading';
|
|
1
|
+
import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
|
|
2
|
+
import { ClassProp } from 'class-variance-authority/types';
|
|
3
|
+
import { ComponentProps } from 'react';
|
|
4
|
+
import { Context } from 'react';
|
|
5
|
+
import { DayPicker } from 'react-day-picker';
|
|
6
|
+
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
7
|
+
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
8
|
+
import { IconSvgElement } from '@hugeicons/react';
|
|
9
|
+
import { JSX } from 'react';
|
|
10
|
+
import * as LabelPrimitive from '@radix-ui/react-label';
|
|
11
|
+
import * as PopoverPrimitive from '@radix-ui/react-popover';
|
|
12
|
+
import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';
|
|
13
|
+
import * as React_2 from 'react';
|
|
14
|
+
import { ReactNode } from 'react';
|
|
15
|
+
import { Separator as Separator_2 } from 'radix-ui';
|
|
16
|
+
import { Tabs as Tabs_2 } from 'radix-ui';
|
|
17
|
+
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
|
|
18
|
+
import { VariantProps } from 'class-variance-authority';
|
|
25
19
|
|
|
20
|
+
/** Earliest date the account has data for — the lower bound of "Maximum". */
|
|
21
|
+
declare const ACCOUNT_START: Date;
|
|
22
|
+
|
|
23
|
+
export declare function ActionFooter({ actions, bleed, className, ...props }: {
|
|
24
|
+
actions: FooterAction[];
|
|
25
|
+
/** "dialog" → break out of a Dialog's p-6 to sit flush at the bottom */
|
|
26
|
+
bleed?: "dialog";
|
|
27
|
+
className?: string;
|
|
28
|
+
} & Omit<ComponentProps<"div">, "className">): JSX.Element;
|
|
29
|
+
|
|
30
|
+
export declare function AppHeaderV1({ user, navMode, onNavModeChange, headerMode, onHeaderModeChange, onAccount, onLogout, onTakeTour, onResetDemo, }: {
|
|
31
|
+
user?: HeaderUser;
|
|
32
|
+
navMode?: NavPreset;
|
|
33
|
+
onNavModeChange?: (mode: NavPreset) => void;
|
|
34
|
+
headerMode?: HeaderMode;
|
|
35
|
+
onHeaderModeChange?: (mode: HeaderMode) => void;
|
|
36
|
+
onAccount?: () => void;
|
|
37
|
+
onLogout?: () => void;
|
|
38
|
+
onTakeTour?: () => void;
|
|
39
|
+
onResetDemo?: () => void;
|
|
40
|
+
}): JSX.Element;
|
|
41
|
+
|
|
42
|
+
export declare function AppHeaderV2({ user, navMode, onNavModeChange, headerMode, onHeaderModeChange, notifications, searchPlaceholder, extension, onNavigate, onAccount, onLogout, onTakeTour, onResetDemo, onViewAllNotifications, }: {
|
|
43
|
+
user?: HeaderUser;
|
|
44
|
+
navMode?: NavPreset;
|
|
45
|
+
onNavModeChange?: (mode: NavPreset) => void;
|
|
46
|
+
headerMode?: HeaderMode;
|
|
47
|
+
onHeaderModeChange?: (mode: HeaderMode) => void;
|
|
48
|
+
notifications?: NotificationItemData[];
|
|
49
|
+
searchPlaceholder?: string;
|
|
50
|
+
/** Extra px the frosted background grows downward, so a page's sticky
|
|
51
|
+
sub-header shares this ONE blurred surface (no second backdrop-filter). */
|
|
52
|
+
extension?: number;
|
|
53
|
+
/** navigate to an app page (from the search "Go to" results) */
|
|
54
|
+
onNavigate?: (id: string) => void;
|
|
55
|
+
onAccount?: () => void;
|
|
56
|
+
onLogout?: () => void;
|
|
57
|
+
onTakeTour?: () => void;
|
|
58
|
+
onResetDemo?: () => void;
|
|
59
|
+
onViewAllNotifications?: () => void;
|
|
60
|
+
}): JSX.Element;
|
|
61
|
+
|
|
62
|
+
/** Fallback for any asset without an explicit colour above. */
|
|
63
|
+
declare const ASSET_COLOR_FALLBACK = "#94A3B8";
|
|
64
|
+
|
|
65
|
+
/** Stable brand-ish colour per asset, so a code shows the same hue in every
|
|
66
|
+
donut and legend. Shades stay within the app's blue → violet → cyan family. */
|
|
67
|
+
declare const ASSET_COLORS: Record<string, string>;
|
|
68
|
+
|
|
69
|
+
/** Distinct currency/network pairs present in the ledger, sorted. */
|
|
70
|
+
declare const ASSET_OPTIONS: AssetOption[];
|
|
71
|
+
|
|
72
|
+
declare function assetColor(code: string): string;
|
|
73
|
+
|
|
74
|
+
declare type AssetOption = {
|
|
75
|
+
key: string;
|
|
76
|
+
currency: string;
|
|
77
|
+
network: string;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/** One slice of an asset-breakdown donut. */
|
|
81
|
+
declare type AssetSlice = {
|
|
82
|
+
/** asset code, e.g. "USDT" */
|
|
83
|
+
code: string;
|
|
84
|
+
/** whole-number percentage of the total */
|
|
85
|
+
percent: number;
|
|
86
|
+
/** formatted fiat value for this slice, e.g. "$359.68" (for tooltips) */
|
|
87
|
+
amount?: string;
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export declare function AssetValue({ value, code, icon, className, }: {
|
|
91
|
+
/** the text to show, e.g. "USDT" or "1,582.18 USDT" */
|
|
92
|
+
value: string;
|
|
93
|
+
/** currency/network code — drives the logo (and its initials fallback) */
|
|
94
|
+
code: string;
|
|
95
|
+
/** show the leading coin logo */
|
|
96
|
+
icon?: boolean;
|
|
97
|
+
className?: string;
|
|
98
|
+
}): JSX.Element;
|
|
99
|
+
|
|
100
|
+
export declare function Avatar({ src, name, size, className, }: {
|
|
101
|
+
src?: string;
|
|
102
|
+
name?: string;
|
|
103
|
+
size?: number;
|
|
104
|
+
className?: string;
|
|
105
|
+
}): JSX.Element;
|
|
106
|
+
|
|
107
|
+
declare function Badge({ variant, value, }: {
|
|
108
|
+
variant?: BadgeVariant;
|
|
109
|
+
/** text for the count variant; ignored by soon/ext */
|
|
110
|
+
value?: string | number;
|
|
111
|
+
}): JSX.Element;
|
|
26
112
|
export { Badge }
|
|
27
113
|
export { Badge as NavBadge }
|
|
28
114
|
|
|
115
|
+
export declare type BadgeTone = "primary" | "sky" | "emerald" | "amber" | "red" | "slate" | "violet" | "orange";
|
|
116
|
+
|
|
117
|
+
declare type BadgeVariant = "count" | "soon" | "ext";
|
|
29
118
|
export { BadgeVariant }
|
|
30
119
|
export { BadgeVariant as NavBadgeVariant }
|
|
31
120
|
|
|
32
|
-
export
|
|
121
|
+
export declare const badgeVariants: (props?: ({
|
|
122
|
+
variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link" | null | undefined;
|
|
123
|
+
} & ClassProp) | undefined) => string;
|
|
124
|
+
|
|
125
|
+
export declare namespace balancesData {
|
|
126
|
+
export {
|
|
127
|
+
balancesTotals,
|
|
128
|
+
CURRENCY_BALANCES
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export declare namespace balancesRecentTransactions {
|
|
133
|
+
export {
|
|
134
|
+
RecentTxDirection,
|
|
135
|
+
WalletRef,
|
|
136
|
+
RecentTransaction,
|
|
137
|
+
RECENT_TRANSACTIONS,
|
|
138
|
+
RECENT_TRANSACTIONS as default
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export declare function BalancesSummary({ totalAssets, totalPending, activeWallets, totalWallets,
|
|
143
|
+
/** When false, hides the "/ total" suffix and shows just the active count. */
|
|
144
|
+
showTotalWallets,
|
|
145
|
+
/** When true, renders the Total pending value in amber (matches the table). */
|
|
146
|
+
pendingAmber, className, }: {
|
|
147
|
+
totalAssets: string;
|
|
148
|
+
totalPending: string;
|
|
149
|
+
activeWallets: number;
|
|
150
|
+
totalWallets: number;
|
|
151
|
+
showTotalWallets?: boolean;
|
|
152
|
+
pendingAmber?: boolean;
|
|
153
|
+
className?: string;
|
|
154
|
+
}): JSX.Element;
|
|
155
|
+
|
|
156
|
+
/** Roll-up shown in the summary card at the top of the Balances screen. */
|
|
157
|
+
declare function balancesTotals(balances: CurrencyBalance[]): {
|
|
158
|
+
totalAssets: string;
|
|
159
|
+
totalPending: string;
|
|
160
|
+
activeWallets: number;
|
|
161
|
+
totalWallets: number;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
export declare namespace balancesTypes {
|
|
165
|
+
export {
|
|
166
|
+
Wallet,
|
|
167
|
+
CurrencyBalance
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export declare function BlockchainDetails({ detail, show, showRefund, className, }: {
|
|
172
|
+
detail: TransactionDetail;
|
|
173
|
+
show?: Partial<Record<BlockchainField, boolean>>;
|
|
174
|
+
/** render the second "Refund" block */
|
|
175
|
+
showRefund?: boolean;
|
|
176
|
+
className?: string;
|
|
177
|
+
}): JSX.Element;
|
|
178
|
+
|
|
179
|
+
export declare type BlockchainField = "from" | "fromWallet" | "fromTag" | "to" | "toWallet" | "toTag" | "hash" | "fee";
|
|
180
|
+
|
|
181
|
+
export declare function Button({ className, variant, size, asChild, ...props }: React_2.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & {
|
|
182
|
+
asChild?: boolean;
|
|
183
|
+
}): React_2.JSX.Element;
|
|
184
|
+
|
|
185
|
+
declare type ButtonVariant = ComponentProps<typeof Button>["variant"];
|
|
186
|
+
|
|
187
|
+
export declare const buttonVariants: (props?: ({
|
|
188
|
+
variant?: "default" | "outline" | "secondary" | "ghost" | "destructive" | "link" | null | undefined;
|
|
189
|
+
size?: "default" | "xs" | "sm" | "lg" | "icon" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
|
|
190
|
+
} & ClassProp) | undefined) => string;
|
|
191
|
+
|
|
192
|
+
export declare function Calendar({ className, classNames, showOutsideDays, ...props }: ComponentProps<typeof DayPicker>): JSX.Element;
|
|
193
|
+
|
|
194
|
+
export declare function Checkbox({ className, ...props }: ComponentProps<typeof CheckboxPrimitive.Root>): JSX.Element;
|
|
195
|
+
|
|
196
|
+
/** A convertible asset and its live USD price (drives rates + fiat values). */
|
|
197
|
+
declare type Coin = {
|
|
198
|
+
code: string;
|
|
199
|
+
name: string;
|
|
200
|
+
/** USD price of one unit, e.g. 3121 for ETH */
|
|
201
|
+
price: number;
|
|
202
|
+
/** networks this coin can be received on, e.g. ["ETH", "TRON"] */
|
|
203
|
+
networks: string[];
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
/** A depositable asset and the networks it can be received over. */
|
|
207
|
+
declare type Coin_2 = {
|
|
208
|
+
code: string;
|
|
209
|
+
name: string;
|
|
210
|
+
/** network codes valid for this coin, e.g. ["ETH", "TRON"] */
|
|
211
|
+
networks: string[];
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
/** A withdrawable asset and the networks it can be sent over. */
|
|
215
|
+
declare type Coin_3 = {
|
|
216
|
+
code: string;
|
|
217
|
+
name: string;
|
|
218
|
+
/** network codes valid for this coin, e.g. ["ETH", "TRON"] */
|
|
219
|
+
networks: string[];
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
export declare function CoinLogo({ src, code, className, }: {
|
|
223
|
+
/** image URL; when absent, initials are shown */
|
|
224
|
+
src?: string;
|
|
225
|
+
/** currency/network code — used for alt text and the initials fallback */
|
|
226
|
+
code: string;
|
|
227
|
+
className?: string;
|
|
228
|
+
}): JSX.Element;
|
|
229
|
+
|
|
230
|
+
/** Convertible assets and their live USD price. */
|
|
231
|
+
declare const COINS: Coin[];
|
|
232
|
+
|
|
233
|
+
/** Depositable assets and the networks each can arrive over. */
|
|
234
|
+
declare const COINS_2: Coin_2[];
|
|
235
|
+
|
|
236
|
+
/** Withdrawable assets and the networks each can move over. */
|
|
237
|
+
declare const COINS_3: Coin_3[];
|
|
238
|
+
|
|
239
|
+
/** Path to an asset logo, or undefined when we have no artwork for the code. */
|
|
240
|
+
declare function coinSrc(code: string): string | undefined;
|
|
241
|
+
|
|
242
|
+
export declare type Column<T> = {
|
|
243
|
+
id: string;
|
|
244
|
+
/** header label — also the label shown in the Columns menu */
|
|
245
|
+
header: string;
|
|
246
|
+
cell: (row: T) => ReactNode;
|
|
247
|
+
align?: "start" | "end";
|
|
248
|
+
/** enable click-to-sort on this column (requires `sortValue`) */
|
|
249
|
+
sortable?: boolean;
|
|
250
|
+
/** comparable value used for sorting (number sorts numerically) */
|
|
251
|
+
sortValue?: (row: T) => number | string;
|
|
252
|
+
/** false → column can't be hidden from the Columns menu */
|
|
253
|
+
canHide?: boolean;
|
|
254
|
+
headClassName?: string;
|
|
255
|
+
cellClassName?: string;
|
|
256
|
+
/** custom placeholder shown in this column while `loading` */
|
|
257
|
+
skeleton?: ReactNode;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
export declare type ColumnOption = {
|
|
261
|
+
id: string;
|
|
262
|
+
label: string;
|
|
263
|
+
/** false → shown as disabled (cannot be hidden) */
|
|
264
|
+
canHide?: boolean;
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
export declare function ColumnsMenu({ columns, visible, onChange, label, }: {
|
|
268
|
+
columns: ColumnOption[];
|
|
269
|
+
visible: Record<string, boolean>;
|
|
270
|
+
onChange: (id: string, next: boolean) => void;
|
|
271
|
+
label?: string;
|
|
272
|
+
}): JSX.Element;
|
|
273
|
+
|
|
274
|
+
export declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel, cancelLabel, destructive, onConfirm, }: {
|
|
275
|
+
open: boolean;
|
|
276
|
+
onOpenChange: (open: boolean) => void;
|
|
277
|
+
title: ReactNode;
|
|
278
|
+
description?: ReactNode;
|
|
279
|
+
confirmLabel?: string;
|
|
280
|
+
cancelLabel?: string;
|
|
281
|
+
destructive?: boolean;
|
|
282
|
+
onConfirm: () => void;
|
|
283
|
+
}): JSX.Element;
|
|
284
|
+
|
|
285
|
+
/** Past conversions — the team audit trail. Mixed members, wallets and pairs. */
|
|
286
|
+
declare const CONVERSION_HISTORY: ConversionRecord[];
|
|
287
|
+
|
|
288
|
+
/** One past conversion — the team audit trail. */
|
|
289
|
+
declare type ConversionRecord = {
|
|
290
|
+
id: string;
|
|
291
|
+
/** e.g. "Jul 14, 2026" */
|
|
292
|
+
date: string;
|
|
293
|
+
/** e.g. "02:27 PM" */
|
|
294
|
+
time: string;
|
|
295
|
+
/** team member who initiated it */
|
|
296
|
+
initiator: string;
|
|
297
|
+
/** wallet the funds were converted from */
|
|
298
|
+
wallet: string;
|
|
299
|
+
fromCoin: string;
|
|
300
|
+
toCoin: string;
|
|
301
|
+
/** signed from figure — an outflow, e.g. "-2.00" */
|
|
302
|
+
fromAmount: string;
|
|
303
|
+
/** signed to figure — an inflow, e.g. "+6,229.32" */
|
|
304
|
+
toAmount: string;
|
|
305
|
+
/** human rate line, e.g. "1 ETH = 3,121.00 USDT" */
|
|
306
|
+
rate: string;
|
|
307
|
+
/** USD value of the conversion, e.g. "$6,242.00" */
|
|
308
|
+
fiatValue: string;
|
|
309
|
+
status: TxStatus;
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
/** Conversion fee taken on every swap (0.2%). */
|
|
313
|
+
declare const CONVERT_FEE_RATE = 0.002;
|
|
314
|
+
|
|
315
|
+
export declare namespace convertData {
|
|
316
|
+
export {
|
|
317
|
+
figureToNumber,
|
|
318
|
+
formatUsd,
|
|
319
|
+
formatCrypto,
|
|
320
|
+
CONVERT_FEE_RATE,
|
|
321
|
+
NETWORK_NAMES,
|
|
322
|
+
COINS,
|
|
323
|
+
HOLDINGS,
|
|
324
|
+
CONVERSION_HISTORY
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export declare function ConvertHistoryTable({ data, className, }: {
|
|
329
|
+
data: ConversionRecord[];
|
|
330
|
+
className?: string;
|
|
331
|
+
}): JSX.Element;
|
|
332
|
+
|
|
333
|
+
export declare function ConvertPanel({ currentUser, onSubmit, className, }: {
|
|
334
|
+
/** team member shown as the initiator of a submitted conversion */
|
|
335
|
+
currentUser?: string;
|
|
336
|
+
/** called when a conversion is confirmed — e.g. to prepend it to history */
|
|
337
|
+
onSubmit?: (record: ConversionRecord) => void;
|
|
338
|
+
className?: string;
|
|
339
|
+
}): JSX.Element;
|
|
340
|
+
|
|
341
|
+
export declare function ConvertPickerField({ id, label, value, options, onChange, placeholder, emptyMessage, disabled, className, }: {
|
|
342
|
+
id?: string;
|
|
343
|
+
label?: ReactNode;
|
|
344
|
+
value: string | null;
|
|
345
|
+
options: ConvertPickerOption[];
|
|
346
|
+
onChange: (value: string) => void;
|
|
347
|
+
placeholder?: ReactNode;
|
|
348
|
+
emptyMessage?: ReactNode;
|
|
349
|
+
disabled?: boolean;
|
|
350
|
+
className?: string;
|
|
351
|
+
}): JSX.Element;
|
|
352
|
+
|
|
353
|
+
export declare type ConvertPickerOption = {
|
|
354
|
+
value: string;
|
|
355
|
+
/** primary line — shown both in the list and in the closed trigger */
|
|
356
|
+
label: ReactNode;
|
|
357
|
+
/** muted secondary line */
|
|
358
|
+
sublabel?: ReactNode;
|
|
359
|
+
/** leading visual, e.g. <CoinLogo /> or <CurrencyNetwork /> */
|
|
360
|
+
leading?: ReactNode;
|
|
361
|
+
/** right-aligned trailing content, e.g. an available balance */
|
|
362
|
+
meta?: ReactNode;
|
|
363
|
+
disabled?: boolean;
|
|
364
|
+
};
|
|
365
|
+
|
|
366
|
+
export declare function ConvertSummary({ fromCoin, toCoin, payAmount, payFiat, receiveAmount, receiveFiat, rateLabel, feeLabel, fromWalletName, fromWalletAddress, toWalletName, toWalletAddress, footer, className, }: {
|
|
367
|
+
fromCoin: string | null;
|
|
368
|
+
toCoin: string | null;
|
|
369
|
+
payAmount?: string | null;
|
|
370
|
+
payFiat?: string | null;
|
|
371
|
+
receiveAmount?: string | null;
|
|
372
|
+
receiveFiat?: string | null;
|
|
373
|
+
rateLabel?: string | null;
|
|
374
|
+
feeLabel?: string | null;
|
|
375
|
+
fromWalletName?: string | null;
|
|
376
|
+
fromWalletAddress?: string | null;
|
|
377
|
+
toWalletName?: string | null;
|
|
378
|
+
toWalletAddress?: string | null;
|
|
379
|
+
footer?: ReactNode;
|
|
380
|
+
className?: string;
|
|
381
|
+
}): JSX.Element;
|
|
382
|
+
|
|
383
|
+
export declare namespace convertTypes {
|
|
384
|
+
export {
|
|
385
|
+
Coin,
|
|
386
|
+
Holding,
|
|
387
|
+
ConversionRecord
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
export declare function CopyableId({ value, head, tail, revealOnHover, asLink, href, className, }: {
|
|
392
|
+
value: string;
|
|
393
|
+
head?: number;
|
|
394
|
+
tail?: number;
|
|
395
|
+
revealOnHover?: boolean;
|
|
396
|
+
/** render the value as a TextLink instead of plain monospace text */
|
|
397
|
+
asLink?: boolean;
|
|
398
|
+
href?: string;
|
|
399
|
+
className?: string;
|
|
400
|
+
}): JSX.Element;
|
|
401
|
+
|
|
402
|
+
export declare function CopyButton({ value, className }: {
|
|
403
|
+
value: string;
|
|
404
|
+
className?: string;
|
|
405
|
+
}): JSX.Element;
|
|
406
|
+
|
|
407
|
+
/** How many rows the current selection matches across the full ledger. */
|
|
408
|
+
declare function countMatches(f: TxFilter): number;
|
|
409
|
+
|
|
410
|
+
declare const CURRENCY_BALANCES: CurrencyBalance[];
|
|
411
|
+
|
|
412
|
+
/** One currency's rolled-up balance plus the Main/Payout wallets it holds. */
|
|
413
|
+
declare type CurrencyBalance = {
|
|
414
|
+
/** Asset ticker, e.g. "USDT". */
|
|
415
|
+
code: string;
|
|
416
|
+
/** Full currency name, e.g. "Tether". */
|
|
417
|
+
name: string;
|
|
418
|
+
totalAmount: string;
|
|
419
|
+
totalAmountFiat: string;
|
|
420
|
+
totalPending: string;
|
|
421
|
+
totalPendingFiat: string;
|
|
422
|
+
wallets: Wallet[];
|
|
423
|
+
};
|
|
424
|
+
|
|
425
|
+
export declare function CurrencyNetwork({ code, network, codeSrc, networkSrc, size, className, }: {
|
|
426
|
+
code: string;
|
|
427
|
+
network: string;
|
|
428
|
+
/** resolved logo URLs (e.g. from an asset map); initials shown when absent */
|
|
429
|
+
codeSrc?: string;
|
|
430
|
+
networkSrc?: string;
|
|
431
|
+
/** icon scale — "sm" (default) or "md" (larger) */
|
|
432
|
+
size?: keyof typeof SIZES;
|
|
433
|
+
className?: string;
|
|
434
|
+
}): JSX.Element;
|
|
435
|
+
|
|
436
|
+
declare const DAILY_BALANCES: DailyBalance[];
|
|
437
|
+
|
|
438
|
+
/** One day in the daily-balances ledger. `null` figures render as an em dash. */
|
|
439
|
+
declare type DailyBalance = {
|
|
440
|
+
date: string;
|
|
441
|
+
openingBalance: string | null;
|
|
442
|
+
closingBalance: string | null;
|
|
443
|
+
/** signed diff string, e.g. "$4.83"; `null` renders as an em dash */
|
|
444
|
+
diff: string | null;
|
|
445
|
+
userDeposits: string;
|
|
446
|
+
userWithdrawals: string;
|
|
447
|
+
otherDeposits: string;
|
|
448
|
+
otherWithdrawals: string;
|
|
449
|
+
};
|
|
450
|
+
|
|
451
|
+
export declare function DailyBalancesTable({ data, pageSize, }: {
|
|
452
|
+
data: DailyBalance[];
|
|
453
|
+
/** paginate when set; omit to render every row */
|
|
454
|
+
pageSize?: number;
|
|
455
|
+
}): JSX.Element;
|
|
456
|
+
|
|
457
|
+
export declare function DataTable<T>({ columns, data, getRowId, layout, density, pageSize, loading, skeletonRows, searchable, searchPlaceholder, searchFilter, searchScopes, defaultSearchScope, onSearchScopeChange, query: queryProp, onQueryChange, columnToggle, columnVisibility: columnVisibilityProp, onColumnVisibilityChange, onRowClick, rowLeading, emptyMessage, toolbarFilters, toolbarActions, toolbarBelow, }: DataTableProps<T>): JSX.Element;
|
|
458
|
+
|
|
459
|
+
export declare type DataTableProps<T> = {
|
|
460
|
+
columns: Column<T>[];
|
|
461
|
+
data: T[];
|
|
462
|
+
/** stable unique key per row */
|
|
463
|
+
getRowId: (row: T) => string;
|
|
464
|
+
layout?: "auto" | "fill";
|
|
465
|
+
/** row vertical padding: "comfortable" (default) or "compact" (shorter rows) */
|
|
466
|
+
density?: "comfortable" | "compact";
|
|
467
|
+
/** rows per page; omit to show all rows and hide the footer */
|
|
468
|
+
pageSize?: number;
|
|
469
|
+
loading?: boolean;
|
|
470
|
+
/** skeleton rows to render while loading (default 10) */
|
|
471
|
+
skeletonRows?: number;
|
|
472
|
+
/** render a search input in the toolbar (needs `searchFilter`) */
|
|
473
|
+
searchable?: boolean;
|
|
474
|
+
searchPlaceholder?: string;
|
|
475
|
+
searchFilter?: (row: T, query: string) => boolean;
|
|
476
|
+
/** Optional field-scope dropdown at the right of the search box. UI only:
|
|
477
|
+
picking a scope swaps the placeholder to "Search by <label>" and notifies
|
|
478
|
+
`onSearchScopeChange`; it does NOT filter (that's the backend's job). */
|
|
479
|
+
searchScopes?: {
|
|
480
|
+
value: string;
|
|
481
|
+
label: string;
|
|
482
|
+
}[];
|
|
483
|
+
defaultSearchScope?: string;
|
|
484
|
+
onSearchScopeChange?: (value: string) => void;
|
|
485
|
+
/** controlled search query — drives filtering even when the built-in search
|
|
486
|
+
input isn't rendered (e.g. when an external toolbar owns it) */
|
|
487
|
+
query?: string;
|
|
488
|
+
onQueryChange?: (value: string) => void;
|
|
489
|
+
/** render the Columns visibility menu in the toolbar */
|
|
490
|
+
columnToggle?: boolean;
|
|
491
|
+
/** controlled column visibility (else internal state) */
|
|
492
|
+
columnVisibility?: Record<string, boolean>;
|
|
493
|
+
onColumnVisibilityChange?: (id: string, next: boolean) => void;
|
|
494
|
+
onRowClick?: (row: T) => void;
|
|
495
|
+
/** leading cell before the first column (e.g. a status dot) */
|
|
496
|
+
rowLeading?: (row: T) => ReactNode;
|
|
497
|
+
emptyMessage?: ReactNode;
|
|
498
|
+
/** toolbar slots — domain-specific controls */
|
|
499
|
+
toolbarFilters?: ReactNode;
|
|
500
|
+
toolbarActions?: ReactNode;
|
|
501
|
+
toolbarBelow?: ReactNode;
|
|
502
|
+
};
|
|
503
|
+
|
|
504
|
+
declare type DateField = "createdAt" | "confirmedAt";
|
|
505
|
+
|
|
506
|
+
/** Past incoming deposits — the audit trail of received funds. Mixed senders,
|
|
507
|
+
receiving wallets, chains and statuses (confirmed / processing / pending). */
|
|
508
|
+
declare const DEPOSIT_HISTORY: DepositRecord[];
|
|
509
|
+
|
|
510
|
+
/** Named treasury wallets that can receive funds. Their address is the deposit
|
|
511
|
+
address shown for the chosen coin+network. */
|
|
512
|
+
declare const DEPOSIT_WALLETS: DepositWallet[];
|
|
513
|
+
|
|
514
|
+
export declare namespace depositData {
|
|
515
|
+
export {
|
|
516
|
+
figureToNumber_2 as figureToNumber,
|
|
517
|
+
formatUsd_2 as formatUsd,
|
|
518
|
+
NETWORKS,
|
|
519
|
+
COINS_2 as COINS,
|
|
520
|
+
DEPOSIT_WALLETS,
|
|
521
|
+
DEPOSIT_HISTORY
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
export declare function DepositHistoryTable({ data, className, }: {
|
|
526
|
+
data: DepositRecord[];
|
|
527
|
+
className?: string;
|
|
528
|
+
}): JSX.Element;
|
|
529
|
+
|
|
530
|
+
export declare function DepositPanel({ className }: {
|
|
531
|
+
className?: string;
|
|
532
|
+
}): JSX.Element;
|
|
533
|
+
|
|
534
|
+
export declare function DepositPickerField({ id, label, value, options, onChange, placeholder, emptyMessage, disabled, className, }: {
|
|
535
|
+
id?: string;
|
|
536
|
+
label?: ReactNode;
|
|
537
|
+
value: string | null;
|
|
538
|
+
options: DepositPickerOption[];
|
|
539
|
+
onChange: (value: string) => void;
|
|
540
|
+
placeholder?: ReactNode;
|
|
541
|
+
emptyMessage?: ReactNode;
|
|
542
|
+
disabled?: boolean;
|
|
543
|
+
className?: string;
|
|
544
|
+
}): JSX.Element;
|
|
545
|
+
|
|
546
|
+
export declare type DepositPickerOption = {
|
|
547
|
+
value: string;
|
|
548
|
+
/** primary line — shown both in the list and in the closed trigger */
|
|
549
|
+
label: ReactNode;
|
|
550
|
+
/** muted secondary line */
|
|
551
|
+
sublabel?: ReactNode;
|
|
552
|
+
/** leading visual, e.g. <CoinLogo /> or <CurrencyNetwork /> */
|
|
553
|
+
leading?: ReactNode;
|
|
554
|
+
/** right-aligned trailing content, e.g. an available balance */
|
|
555
|
+
meta?: ReactNode;
|
|
556
|
+
disabled?: boolean;
|
|
557
|
+
};
|
|
558
|
+
|
|
559
|
+
export declare function DepositReceiveCard({ wallet, coin, network, networkName, className, }: {
|
|
560
|
+
wallet: DepositWallet | null;
|
|
561
|
+
coin: string | null;
|
|
562
|
+
network: string | null;
|
|
563
|
+
networkName?: string;
|
|
564
|
+
className?: string;
|
|
565
|
+
}): JSX.Element;
|
|
566
|
+
|
|
567
|
+
/** One past incoming deposit — the audit trail of received funds. */
|
|
568
|
+
declare type DepositRecord = {
|
|
569
|
+
id: string;
|
|
570
|
+
/** e.g. "Jul 14, 2026" */
|
|
571
|
+
date: string;
|
|
572
|
+
/** e.g. "02:27 PM" */
|
|
573
|
+
time: string;
|
|
574
|
+
/** external sender's on-chain address the funds came from */
|
|
575
|
+
fromAddress: string;
|
|
576
|
+
/** named treasury wallet that received it, e.g. "Low Risk Wallet" */
|
|
577
|
+
toWallet: string;
|
|
578
|
+
toAddress: string;
|
|
579
|
+
coin: string;
|
|
580
|
+
network: string;
|
|
581
|
+
/** signed crypto figure — an inflow, e.g. "+1,200.00" */
|
|
582
|
+
amount: string;
|
|
583
|
+
/** signed fiat sub-line, e.g. "+$1,200.00" */
|
|
584
|
+
amountFiat: string;
|
|
585
|
+
/** confirmation progress, e.g. "12/12" — omit when not applicable */
|
|
586
|
+
confirmations?: string;
|
|
587
|
+
status: TxStatus;
|
|
588
|
+
};
|
|
589
|
+
|
|
590
|
+
export declare namespace depositTypes {
|
|
591
|
+
export {
|
|
592
|
+
Network,
|
|
593
|
+
Coin_2 as Coin,
|
|
594
|
+
DepositWallet,
|
|
595
|
+
DepositRecord
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
/** A named treasury wallet that can RECEIVE funds — its address is the deposit
|
|
600
|
+
address for the chosen coin+network. */
|
|
601
|
+
declare type DepositWallet = {
|
|
602
|
+
id: string;
|
|
603
|
+
/** human label, e.g. "Low Risk Wallet" */
|
|
604
|
+
name: string;
|
|
605
|
+
/** optional risk/purpose tag shown as a small pill */
|
|
606
|
+
purpose?: "low" | "medium" | "high" | "operational" | "payout";
|
|
607
|
+
coin: string;
|
|
608
|
+
network: string;
|
|
609
|
+
/** full on-chain deposit address (rendered in full + as a QR, copyable) */
|
|
610
|
+
address: string;
|
|
611
|
+
/** current balance, shown for context when picking */
|
|
612
|
+
amount: string;
|
|
613
|
+
amountFiat: string;
|
|
614
|
+
fiatRate: number;
|
|
615
|
+
/** destination tag / memo for tag-based chains (TON, XRP, …) — must be sent
|
|
616
|
+
alongside the address or the deposit can't be credited */
|
|
617
|
+
tag?: string;
|
|
618
|
+
};
|
|
33
619
|
|
|
34
|
-
export {
|
|
620
|
+
export declare function DetailField({ label, show, className, children, }: {
|
|
621
|
+
label: string;
|
|
622
|
+
/** false hides the field entirely */
|
|
623
|
+
show?: boolean;
|
|
624
|
+
className?: string;
|
|
625
|
+
children: ReactNode;
|
|
626
|
+
}): JSX.Element | null;
|
|
35
627
|
|
|
36
|
-
export
|
|
628
|
+
export declare function Dialog(props: ComponentProps<typeof DialogPrimitive.Root>): JSX.Element;
|
|
37
629
|
|
|
38
|
-
export
|
|
630
|
+
export declare function DialogClose(props: ComponentProps<typeof DialogPrimitive.Close>): JSX.Element;
|
|
39
631
|
|
|
40
|
-
export {
|
|
632
|
+
export declare function DialogContent({ className, children, showClose, ...props }: ComponentProps<typeof DialogPrimitive.Content> & {
|
|
633
|
+
showClose?: boolean;
|
|
634
|
+
}): JSX.Element;
|
|
41
635
|
|
|
42
|
-
export {
|
|
636
|
+
export declare function DialogDescription({ className, ...props }: ComponentProps<typeof DialogPrimitive.Description>): JSX.Element;
|
|
43
637
|
|
|
44
|
-
export {
|
|
638
|
+
export declare function DialogFooter({ className, ...props }: ComponentProps<"div">): JSX.Element;
|
|
45
639
|
|
|
46
|
-
export {
|
|
640
|
+
export declare function DialogHeader({ className, ...props }: ComponentProps<"div">): JSX.Element;
|
|
47
641
|
|
|
48
|
-
export {
|
|
642
|
+
export declare function DialogTitle({ className, ...props }: ComponentProps<typeof DialogPrimitive.Title>): JSX.Element;
|
|
49
643
|
|
|
50
|
-
export
|
|
644
|
+
export declare function DialogTrigger(props: ComponentProps<typeof DialogPrimitive.Trigger>): JSX.Element;
|
|
645
|
+
|
|
646
|
+
export declare function DonutChart({ segments, size, thickness, gap, animate, className, }: {
|
|
647
|
+
segments: DonutSegment[];
|
|
648
|
+
/** rendered width/height in px */
|
|
649
|
+
size?: number;
|
|
650
|
+
/** ring thickness in viewBox units (viewBox is 100×100) */
|
|
651
|
+
thickness?: number;
|
|
652
|
+
/** gap between segments in viewBox units */
|
|
653
|
+
gap?: number;
|
|
654
|
+
/** draw the ring in on mount (default true) */
|
|
655
|
+
animate?: boolean;
|
|
656
|
+
className?: string;
|
|
657
|
+
}): JSX.Element;
|
|
658
|
+
|
|
659
|
+
export declare type DonutSegment = {
|
|
660
|
+
/** primary tooltip line + React key — e.g. the currency code "USDT" */
|
|
661
|
+
label: string;
|
|
662
|
+
/** any non-negative magnitude — segments are drawn proportional to the total */
|
|
663
|
+
value: number;
|
|
664
|
+
color: string;
|
|
665
|
+
/** secondary tooltip line — e.g. the amount "$359.68 · 28%" */
|
|
666
|
+
detail?: string;
|
|
667
|
+
};
|
|
668
|
+
|
|
669
|
+
export declare type DownloadFormat = {
|
|
670
|
+
label: string;
|
|
671
|
+
value: string;
|
|
672
|
+
icon?: IconSvgElement;
|
|
673
|
+
};
|
|
674
|
+
|
|
675
|
+
export declare function DownloadMenu({ formats, onDownload, label, align, className, }: {
|
|
676
|
+
formats?: DownloadFormat[];
|
|
677
|
+
onDownload?: (value: string) => void;
|
|
678
|
+
label?: string;
|
|
679
|
+
align?: "start" | "center" | "end";
|
|
680
|
+
className?: string;
|
|
681
|
+
}): JSX.Element;
|
|
682
|
+
|
|
683
|
+
export declare function DropdownMenu(props: ComponentProps<typeof DropdownMenuPrimitive.Root>): JSX.Element;
|
|
684
|
+
|
|
685
|
+
export declare function DropdownMenuCheckboxItem({ className, children, checked, ...props }: ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>): JSX.Element;
|
|
686
|
+
|
|
687
|
+
export declare function DropdownMenuContent({ className, sideOffset, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Content>): JSX.Element;
|
|
688
|
+
|
|
689
|
+
export declare function DropdownMenuGroup(props: ComponentProps<typeof DropdownMenuPrimitive.Group>): JSX.Element;
|
|
690
|
+
|
|
691
|
+
export declare function DropdownMenuItem({ className, inset, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
|
692
|
+
inset?: boolean;
|
|
693
|
+
}): JSX.Element;
|
|
694
|
+
|
|
695
|
+
export declare function DropdownMenuLabel({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Label>): JSX.Element;
|
|
696
|
+
|
|
697
|
+
export declare function DropdownMenuRadioGroup(props: ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>): JSX.Element;
|
|
698
|
+
|
|
699
|
+
export declare function DropdownMenuRadioItem({ className, children, ...props }: ComponentProps<typeof DropdownMenuPrimitive.RadioItem>): JSX.Element;
|
|
700
|
+
|
|
701
|
+
export declare function DropdownMenuSeparator({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.Separator>): JSX.Element;
|
|
702
|
+
|
|
703
|
+
export declare function DropdownMenuSub(props: ComponentProps<typeof DropdownMenuPrimitive.Sub>): JSX.Element;
|
|
704
|
+
|
|
705
|
+
export declare function DropdownMenuSubContent({ className, ...props }: ComponentProps<typeof DropdownMenuPrimitive.SubContent>): JSX.Element;
|
|
706
|
+
|
|
707
|
+
export declare function DropdownMenuSubTrigger({ className, children, ...props }: ComponentProps<typeof DropdownMenuPrimitive.SubTrigger>): JSX.Element;
|
|
708
|
+
|
|
709
|
+
export declare function DropdownMenuTrigger(props: ComponentProps<typeof DropdownMenuPrimitive.Trigger>): JSX.Element;
|
|
710
|
+
|
|
711
|
+
declare const EMPTY_FILTER: TxFilter;
|
|
712
|
+
|
|
713
|
+
declare type Endpoint = {
|
|
714
|
+
/** human label, e.g. a named wallet — omit for a raw typed address */
|
|
715
|
+
label?: string;
|
|
716
|
+
address: string;
|
|
717
|
+
};
|
|
718
|
+
|
|
719
|
+
declare const EXPORT_HISTORY: ExportEntry[];
|
|
720
|
+
|
|
721
|
+
/** A previously generated export, listed under "Export history". */
|
|
722
|
+
declare type ExportEntry = {
|
|
723
|
+
id: string;
|
|
724
|
+
file: string;
|
|
725
|
+
period: string;
|
|
726
|
+
generatedBy: string;
|
|
727
|
+
};
|
|
728
|
+
|
|
729
|
+
export declare function ExportHistoryList({ entries, onDownload, className, }: {
|
|
730
|
+
entries: ExportEntry[];
|
|
731
|
+
onDownload?: (entry: ExportEntry) => void;
|
|
732
|
+
className?: string;
|
|
733
|
+
}): JSX.Element;
|
|
734
|
+
|
|
735
|
+
/** "42,120.00" → 42120.0 (drops grouping commas and any sign). */
|
|
736
|
+
declare function figureToNumber(value: string): number;
|
|
737
|
+
|
|
738
|
+
/** "42,120.00" → 42120.0 (drops grouping commas and any sign). */
|
|
739
|
+
declare function figureToNumber_2(value: string): number;
|
|
740
|
+
|
|
741
|
+
/** "42,120.00" → 42120.0 (drops grouping commas and any sign). */
|
|
742
|
+
declare function figureToNumber_3(value: string): number;
|
|
743
|
+
|
|
744
|
+
declare function filterMatches(tx: Transaction, f: TxFilter): boolean;
|
|
745
|
+
|
|
746
|
+
/** A short, human name summarizing the selection — used to prefill the preset name. */
|
|
747
|
+
declare function filterToName(f: TxFilter): string;
|
|
748
|
+
|
|
749
|
+
export declare function findNavItem(id: string): NavItemConfig | undefined;
|
|
750
|
+
|
|
751
|
+
export declare type FooterAction = {
|
|
752
|
+
key?: string;
|
|
753
|
+
label: ReactNode;
|
|
754
|
+
onClick?: () => void;
|
|
755
|
+
variant?: ButtonVariant;
|
|
756
|
+
/** which side of the bar — default "end" (right) */
|
|
757
|
+
align?: "start" | "end";
|
|
758
|
+
disabled?: boolean;
|
|
759
|
+
type?: "button" | "submit";
|
|
760
|
+
className?: string;
|
|
761
|
+
};
|
|
762
|
+
|
|
763
|
+
/** Grouped crypto figure, 2–8 decimals, e.g. 6229.32 → "6,229.32". */
|
|
764
|
+
declare function formatCrypto(value: number): string;
|
|
765
|
+
|
|
766
|
+
/** Format a USD amount, e.g. 12000 → "$12,000.00". */
|
|
767
|
+
declare function formatUsd(value: number): string;
|
|
768
|
+
|
|
769
|
+
/** Format a USD amount, e.g. 12000 → "$12,000.00". */
|
|
770
|
+
declare function formatUsd_2(value: number): string;
|
|
771
|
+
|
|
772
|
+
/** Format a USD amount, e.g. 12000 → "$12,000.00". */
|
|
773
|
+
declare function formatUsd_3(value: number): string;
|
|
774
|
+
|
|
775
|
+
/** FULL_NAV — the complete app navigation. */
|
|
776
|
+
export declare const FULL_NAV: NavGroupConfig[];
|
|
777
|
+
|
|
778
|
+
/** Synthesise the full Reports dataset for a period + view. Pure + deterministic. */
|
|
779
|
+
declare function getReportData(period: PeriodSelection, view?: ReportView): ReportData;
|
|
780
|
+
|
|
781
|
+
/** Which app header is shown — V1 (no search, just this menu) or V2 (search). */
|
|
782
|
+
export declare type HeaderMode = "v1" | "v2";
|
|
783
|
+
|
|
784
|
+
export declare function HeaderSearch({ onNavigate, placeholder, docsBaseUrl, }: {
|
|
785
|
+
onNavigate?: (id: string) => void;
|
|
786
|
+
placeholder?: string;
|
|
787
|
+
docsBaseUrl?: string;
|
|
788
|
+
}): JSX.Element;
|
|
789
|
+
|
|
790
|
+
export declare const HeaderStickyContext: Context<HeaderStickyValue>;
|
|
791
|
+
|
|
792
|
+
export declare type HeaderStickyValue = {
|
|
793
|
+
/** Pixels to grow the header's frosted background by (0 = just the header). */
|
|
794
|
+
setExtension: (px: number) => void;
|
|
795
|
+
/** Top offset (px) a page's sticky sub-header should pin to. */
|
|
796
|
+
stickyTop: number;
|
|
797
|
+
};
|
|
798
|
+
|
|
799
|
+
export declare type HeaderUser = {
|
|
800
|
+
name?: string;
|
|
801
|
+
avatarSrc?: string;
|
|
802
|
+
};
|
|
803
|
+
|
|
804
|
+
/** A treasury wallet holding a coin — a valid source to convert FROM. */
|
|
805
|
+
declare type Holding = {
|
|
806
|
+
id: string;
|
|
807
|
+
/** wallet label, e.g. "Low Risk Wallet" */
|
|
808
|
+
name: string;
|
|
809
|
+
/** optional risk/purpose tag shown as a small pill */
|
|
810
|
+
purpose?: "low" | "medium" | "high" | "operational" | "payout";
|
|
811
|
+
coin: string;
|
|
812
|
+
/** network the holding sits on, e.g. "ETH" / "TRON" */
|
|
813
|
+
network: string;
|
|
814
|
+
/** the wallet's on-chain address (rendered truncated, copyable in full) */
|
|
815
|
+
address: string;
|
|
816
|
+
/** available crypto figure, pre-formatted (e.g. "16.100000") — also the limit */
|
|
817
|
+
amount: string;
|
|
818
|
+
amountFiat: string;
|
|
819
|
+
};
|
|
820
|
+
|
|
821
|
+
/** Treasury wallets holding each coin — valid sources to convert from. */
|
|
822
|
+
declare const HOLDINGS: Holding[];
|
|
823
|
+
|
|
824
|
+
export declare const ICON_NAMES: IconName[];
|
|
825
|
+
|
|
826
|
+
export declare type IconName = keyof typeof icons;
|
|
827
|
+
|
|
828
|
+
export declare const ICONS: {
|
|
829
|
+
grid: [string, {
|
|
830
|
+
[key: string]: string | number;
|
|
831
|
+
}][] | readonly (readonly [string, {
|
|
832
|
+
readonly [key: string]: string | number;
|
|
833
|
+
}])[];
|
|
834
|
+
checkc: [string, {
|
|
835
|
+
[key: string]: string | number;
|
|
836
|
+
}][] | readonly (readonly [string, {
|
|
837
|
+
readonly [key: string]: string | number;
|
|
838
|
+
}])[];
|
|
839
|
+
swap: [string, {
|
|
840
|
+
[key: string]: string | number;
|
|
841
|
+
}][] | readonly (readonly [string, {
|
|
842
|
+
readonly [key: string]: string | number;
|
|
843
|
+
}])[];
|
|
844
|
+
shield: [string, {
|
|
845
|
+
[key: string]: string | number;
|
|
846
|
+
}][] | readonly (readonly [string, {
|
|
847
|
+
readonly [key: string]: string | number;
|
|
848
|
+
}])[];
|
|
849
|
+
wallet: [string, {
|
|
850
|
+
[key: string]: string | number;
|
|
851
|
+
}][] | readonly (readonly [string, {
|
|
852
|
+
readonly [key: string]: string | number;
|
|
853
|
+
}])[];
|
|
854
|
+
down: [string, {
|
|
855
|
+
[key: string]: string | number;
|
|
856
|
+
}][] | readonly (readonly [string, {
|
|
857
|
+
readonly [key: string]: string | number;
|
|
858
|
+
}])[];
|
|
859
|
+
up: [string, {
|
|
860
|
+
[key: string]: string | number;
|
|
861
|
+
}][] | readonly (readonly [string, {
|
|
862
|
+
readonly [key: string]: string | number;
|
|
863
|
+
}])[];
|
|
864
|
+
convert: [string, {
|
|
865
|
+
[key: string]: string | number;
|
|
866
|
+
}][] | readonly (readonly [string, {
|
|
867
|
+
readonly [key: string]: string | number;
|
|
868
|
+
}])[];
|
|
869
|
+
transfer: [string, {
|
|
870
|
+
[key: string]: string | number;
|
|
871
|
+
}][] | readonly (readonly [string, {
|
|
872
|
+
readonly [key: string]: string | number;
|
|
873
|
+
}])[];
|
|
874
|
+
book: [string, {
|
|
875
|
+
[key: string]: string | number;
|
|
876
|
+
}][] | readonly (readonly [string, {
|
|
877
|
+
readonly [key: string]: string | number;
|
|
878
|
+
}])[];
|
|
879
|
+
invoice: [string, {
|
|
880
|
+
[key: string]: string | number;
|
|
881
|
+
}][] | readonly (readonly [string, {
|
|
882
|
+
readonly [key: string]: string | number;
|
|
883
|
+
}])[];
|
|
884
|
+
payout: [string, {
|
|
885
|
+
[key: string]: string | number;
|
|
886
|
+
}][] | readonly (readonly [string, {
|
|
887
|
+
readonly [key: string]: string | number;
|
|
888
|
+
}])[];
|
|
889
|
+
bank: [string, {
|
|
890
|
+
[key: string]: string | number;
|
|
891
|
+
}][] | readonly (readonly [string, {
|
|
892
|
+
readonly [key: string]: string | number;
|
|
893
|
+
}])[];
|
|
894
|
+
chart: [string, {
|
|
895
|
+
[key: string]: string | number;
|
|
896
|
+
}][] | readonly (readonly [string, {
|
|
897
|
+
readonly [key: string]: string | number;
|
|
898
|
+
}])[];
|
|
899
|
+
code: [string, {
|
|
900
|
+
[key: string]: string | number;
|
|
901
|
+
}][] | readonly (readonly [string, {
|
|
902
|
+
readonly [key: string]: string | number;
|
|
903
|
+
}])[];
|
|
904
|
+
widget: [string, {
|
|
905
|
+
[key: string]: string | number;
|
|
906
|
+
}][] | readonly (readonly [string, {
|
|
907
|
+
readonly [key: string]: string | number;
|
|
908
|
+
}])[];
|
|
909
|
+
org: [string, {
|
|
910
|
+
[key: string]: string | number;
|
|
911
|
+
}][] | readonly (readonly [string, {
|
|
912
|
+
readonly [key: string]: string | number;
|
|
913
|
+
}])[];
|
|
914
|
+
users: [string, {
|
|
915
|
+
[key: string]: string | number;
|
|
916
|
+
}][] | readonly (readonly [string, {
|
|
917
|
+
readonly [key: string]: string | number;
|
|
918
|
+
}])[];
|
|
919
|
+
list: [string, {
|
|
920
|
+
[key: string]: string | number;
|
|
921
|
+
}][] | readonly (readonly [string, {
|
|
922
|
+
readonly [key: string]: string | number;
|
|
923
|
+
}])[];
|
|
924
|
+
card: [string, {
|
|
925
|
+
[key: string]: string | number;
|
|
926
|
+
}][] | readonly (readonly [string, {
|
|
927
|
+
readonly [key: string]: string | number;
|
|
928
|
+
}])[];
|
|
929
|
+
help: [string, {
|
|
930
|
+
[key: string]: string | number;
|
|
931
|
+
}][] | readonly (readonly [string, {
|
|
932
|
+
readonly [key: string]: string | number;
|
|
933
|
+
}])[];
|
|
934
|
+
coins: [string, {
|
|
935
|
+
[key: string]: string | number;
|
|
936
|
+
}][] | readonly (readonly [string, {
|
|
937
|
+
readonly [key: string]: string | number;
|
|
938
|
+
}])[];
|
|
939
|
+
safe: [string, {
|
|
940
|
+
[key: string]: string | number;
|
|
941
|
+
}][] | readonly (readonly [string, {
|
|
942
|
+
readonly [key: string]: string | number;
|
|
943
|
+
}])[];
|
|
944
|
+
useraccount: [string, {
|
|
945
|
+
[key: string]: string | number;
|
|
946
|
+
}][] | readonly (readonly [string, {
|
|
947
|
+
readonly [key: string]: string | number;
|
|
948
|
+
}])[];
|
|
949
|
+
global: [string, {
|
|
950
|
+
[key: string]: string | number;
|
|
951
|
+
}][] | readonly (readonly [string, {
|
|
952
|
+
readonly [key: string]: string | number;
|
|
953
|
+
}])[];
|
|
954
|
+
settings: [string, {
|
|
955
|
+
[key: string]: string | number;
|
|
956
|
+
}][] | readonly (readonly [string, {
|
|
957
|
+
readonly [key: string]: string | number;
|
|
958
|
+
}])[];
|
|
959
|
+
};
|
|
960
|
+
|
|
961
|
+
declare const icons: {
|
|
962
|
+
grid: [string, {
|
|
963
|
+
[key: string]: string | number;
|
|
964
|
+
}][] | readonly (readonly [string, {
|
|
965
|
+
readonly [key: string]: string | number;
|
|
966
|
+
}])[];
|
|
967
|
+
checkc: [string, {
|
|
968
|
+
[key: string]: string | number;
|
|
969
|
+
}][] | readonly (readonly [string, {
|
|
970
|
+
readonly [key: string]: string | number;
|
|
971
|
+
}])[];
|
|
972
|
+
swap: [string, {
|
|
973
|
+
[key: string]: string | number;
|
|
974
|
+
}][] | readonly (readonly [string, {
|
|
975
|
+
readonly [key: string]: string | number;
|
|
976
|
+
}])[];
|
|
977
|
+
shield: [string, {
|
|
978
|
+
[key: string]: string | number;
|
|
979
|
+
}][] | readonly (readonly [string, {
|
|
980
|
+
readonly [key: string]: string | number;
|
|
981
|
+
}])[];
|
|
982
|
+
wallet: [string, {
|
|
983
|
+
[key: string]: string | number;
|
|
984
|
+
}][] | readonly (readonly [string, {
|
|
985
|
+
readonly [key: string]: string | number;
|
|
986
|
+
}])[];
|
|
987
|
+
down: [string, {
|
|
988
|
+
[key: string]: string | number;
|
|
989
|
+
}][] | readonly (readonly [string, {
|
|
990
|
+
readonly [key: string]: string | number;
|
|
991
|
+
}])[];
|
|
992
|
+
up: [string, {
|
|
993
|
+
[key: string]: string | number;
|
|
994
|
+
}][] | readonly (readonly [string, {
|
|
995
|
+
readonly [key: string]: string | number;
|
|
996
|
+
}])[];
|
|
997
|
+
convert: [string, {
|
|
998
|
+
[key: string]: string | number;
|
|
999
|
+
}][] | readonly (readonly [string, {
|
|
1000
|
+
readonly [key: string]: string | number;
|
|
1001
|
+
}])[];
|
|
1002
|
+
transfer: [string, {
|
|
1003
|
+
[key: string]: string | number;
|
|
1004
|
+
}][] | readonly (readonly [string, {
|
|
1005
|
+
readonly [key: string]: string | number;
|
|
1006
|
+
}])[];
|
|
1007
|
+
book: [string, {
|
|
1008
|
+
[key: string]: string | number;
|
|
1009
|
+
}][] | readonly (readonly [string, {
|
|
1010
|
+
readonly [key: string]: string | number;
|
|
1011
|
+
}])[];
|
|
1012
|
+
invoice: [string, {
|
|
1013
|
+
[key: string]: string | number;
|
|
1014
|
+
}][] | readonly (readonly [string, {
|
|
1015
|
+
readonly [key: string]: string | number;
|
|
1016
|
+
}])[];
|
|
1017
|
+
payout: [string, {
|
|
1018
|
+
[key: string]: string | number;
|
|
1019
|
+
}][] | readonly (readonly [string, {
|
|
1020
|
+
readonly [key: string]: string | number;
|
|
1021
|
+
}])[];
|
|
1022
|
+
bank: [string, {
|
|
1023
|
+
[key: string]: string | number;
|
|
1024
|
+
}][] | readonly (readonly [string, {
|
|
1025
|
+
readonly [key: string]: string | number;
|
|
1026
|
+
}])[];
|
|
1027
|
+
chart: [string, {
|
|
1028
|
+
[key: string]: string | number;
|
|
1029
|
+
}][] | readonly (readonly [string, {
|
|
1030
|
+
readonly [key: string]: string | number;
|
|
1031
|
+
}])[];
|
|
1032
|
+
code: [string, {
|
|
1033
|
+
[key: string]: string | number;
|
|
1034
|
+
}][] | readonly (readonly [string, {
|
|
1035
|
+
readonly [key: string]: string | number;
|
|
1036
|
+
}])[];
|
|
1037
|
+
widget: [string, {
|
|
1038
|
+
[key: string]: string | number;
|
|
1039
|
+
}][] | readonly (readonly [string, {
|
|
1040
|
+
readonly [key: string]: string | number;
|
|
1041
|
+
}])[];
|
|
1042
|
+
org: [string, {
|
|
1043
|
+
[key: string]: string | number;
|
|
1044
|
+
}][] | readonly (readonly [string, {
|
|
1045
|
+
readonly [key: string]: string | number;
|
|
1046
|
+
}])[];
|
|
1047
|
+
users: [string, {
|
|
1048
|
+
[key: string]: string | number;
|
|
1049
|
+
}][] | readonly (readonly [string, {
|
|
1050
|
+
readonly [key: string]: string | number;
|
|
1051
|
+
}])[];
|
|
1052
|
+
list: [string, {
|
|
1053
|
+
[key: string]: string | number;
|
|
1054
|
+
}][] | readonly (readonly [string, {
|
|
1055
|
+
readonly [key: string]: string | number;
|
|
1056
|
+
}])[];
|
|
1057
|
+
card: [string, {
|
|
1058
|
+
[key: string]: string | number;
|
|
1059
|
+
}][] | readonly (readonly [string, {
|
|
1060
|
+
readonly [key: string]: string | number;
|
|
1061
|
+
}])[];
|
|
1062
|
+
help: [string, {
|
|
1063
|
+
[key: string]: string | number;
|
|
1064
|
+
}][] | readonly (readonly [string, {
|
|
1065
|
+
readonly [key: string]: string | number;
|
|
1066
|
+
}])[];
|
|
1067
|
+
coins: [string, {
|
|
1068
|
+
[key: string]: string | number;
|
|
1069
|
+
}][] | readonly (readonly [string, {
|
|
1070
|
+
readonly [key: string]: string | number;
|
|
1071
|
+
}])[];
|
|
1072
|
+
safe: [string, {
|
|
1073
|
+
[key: string]: string | number;
|
|
1074
|
+
}][] | readonly (readonly [string, {
|
|
1075
|
+
readonly [key: string]: string | number;
|
|
1076
|
+
}])[];
|
|
1077
|
+
useraccount: [string, {
|
|
1078
|
+
[key: string]: string | number;
|
|
1079
|
+
}][] | readonly (readonly [string, {
|
|
1080
|
+
readonly [key: string]: string | number;
|
|
1081
|
+
}])[];
|
|
1082
|
+
global: [string, {
|
|
1083
|
+
[key: string]: string | number;
|
|
1084
|
+
}][] | readonly (readonly [string, {
|
|
1085
|
+
readonly [key: string]: string | number;
|
|
1086
|
+
}])[];
|
|
1087
|
+
settings: [string, {
|
|
1088
|
+
[key: string]: string | number;
|
|
1089
|
+
}][] | readonly (readonly [string, {
|
|
1090
|
+
readonly [key: string]: string | number;
|
|
1091
|
+
}])[];
|
|
1092
|
+
};
|
|
1093
|
+
|
|
1094
|
+
export declare function Input({ className, type, ...props }: React_2.ComponentProps<"input">): React_2.JSX.Element;
|
|
1095
|
+
|
|
1096
|
+
declare function isFilterEmpty(f: TxFilter): boolean;
|
|
1097
|
+
|
|
1098
|
+
export declare function Label({ className, ...props }: ComponentProps<typeof LabelPrimitive.Root>): JSX.Element;
|
|
1099
|
+
|
|
1100
|
+
export declare function Logo({ src, alt, href, collapsed, }: {
|
|
1101
|
+
src?: string;
|
|
1102
|
+
alt?: string;
|
|
1103
|
+
href?: string;
|
|
1104
|
+
collapsed?: boolean;
|
|
1105
|
+
}): JSX.Element;
|
|
1106
|
+
|
|
1107
|
+
/** Flat id → item lookup across both presets (for route → page wiring). PRIMARY
|
|
1108
|
+
listed first so FULL wins for shared ids, while PRIMARY-only ids (e.g. the
|
|
1109
|
+
Treasury "All Transactions") still resolve. */
|
|
1110
|
+
export declare const NAV_ITEMS: Record<string, NavItemConfig>;
|
|
1111
|
+
|
|
1112
|
+
/** Named presets, for Storybook selects and app wiring. */
|
|
1113
|
+
export declare const NAV_PRESETS: Record<NavPreset, NavGroupConfig[]>;
|
|
51
1114
|
|
|
52
1115
|
/** @deprecated use the props of `Badge` instead. */
|
|
53
1116
|
export declare type NavBadgeProps = ComponentProps<typeof Badge>;
|
|
54
1117
|
|
|
55
|
-
export
|
|
1118
|
+
export declare function NavDrawer({ config, preset, activeId, collapsed: collapsedProp, logoSrc, onNavigate, }: {
|
|
1119
|
+
/** explicit nav config; overrides preset */
|
|
1120
|
+
config?: NavGroupConfig[];
|
|
1121
|
+
preset?: NavPreset;
|
|
1122
|
+
activeId?: string;
|
|
1123
|
+
collapsed?: boolean;
|
|
1124
|
+
/** override the logo image */
|
|
1125
|
+
logoSrc?: string;
|
|
1126
|
+
onNavigate?: (id: string) => void;
|
|
1127
|
+
}): JSX.Element;
|
|
1128
|
+
|
|
1129
|
+
export declare function NavGroup({ label, icon, items, divider, activeId, collapsed, open, onToggle, onNavigate, }: {
|
|
1130
|
+
label?: string;
|
|
1131
|
+
icon?: IconName;
|
|
1132
|
+
items?: NavItemConfig[];
|
|
1133
|
+
/** draw a separator rule above the group */
|
|
1134
|
+
divider?: boolean;
|
|
1135
|
+
activeId?: string;
|
|
1136
|
+
collapsed?: boolean;
|
|
1137
|
+
/** controlled expanded state (accordion). Falls back to internal state. */
|
|
1138
|
+
open?: boolean;
|
|
1139
|
+
onToggle?: () => void;
|
|
1140
|
+
onNavigate?: (id: string) => void;
|
|
1141
|
+
}): JSX.Element;
|
|
1142
|
+
|
|
1143
|
+
export declare type NavGroupConfig = {
|
|
1144
|
+
/** section heading; omit for ungrouped top-level rows */
|
|
1145
|
+
label?: string;
|
|
1146
|
+
/** icon shown next to the heading; makes the section a collapsible row */
|
|
1147
|
+
icon?: IconName;
|
|
1148
|
+
/** render a separator rule above this group */
|
|
1149
|
+
divider?: boolean;
|
|
1150
|
+
items: NavItemConfig[];
|
|
1151
|
+
};
|
|
1152
|
+
|
|
1153
|
+
export declare function NavIcon({ name, active, size, }: {
|
|
1154
|
+
name?: IconName;
|
|
1155
|
+
active?: boolean;
|
|
1156
|
+
size?: number;
|
|
1157
|
+
}): JSX.Element;
|
|
1158
|
+
|
|
1159
|
+
export declare function NavItem({ id, label, icon, active, collapsed, sub, badge, soon, ext, onNavigate, }: NavItemProps): JSX.Element;
|
|
1160
|
+
|
|
1161
|
+
export declare type NavItemConfig = {
|
|
1162
|
+
/** stable key + route id */
|
|
1163
|
+
id: string;
|
|
1164
|
+
/** visible text */
|
|
1165
|
+
label: string;
|
|
1166
|
+
/** icon key (see ICONS) */
|
|
1167
|
+
icon: IconName;
|
|
1168
|
+
/** count pill */
|
|
1169
|
+
badge?: number;
|
|
1170
|
+
/** "SOON" tag */
|
|
1171
|
+
soon?: boolean;
|
|
1172
|
+
/** external URL → renders an anchor + ↗ */
|
|
1173
|
+
ext?: string;
|
|
1174
|
+
};
|
|
1175
|
+
|
|
1176
|
+
export declare type NavItemProps = {
|
|
1177
|
+
id: string;
|
|
1178
|
+
label: string;
|
|
1179
|
+
icon: IconName;
|
|
1180
|
+
active?: boolean;
|
|
1181
|
+
collapsed?: boolean;
|
|
1182
|
+
/** nested sub-item — slightly smaller text + icon */
|
|
1183
|
+
sub?: boolean;
|
|
1184
|
+
badge?: number;
|
|
1185
|
+
soon?: boolean;
|
|
1186
|
+
/** external URL → renders an anchor + ↗ */
|
|
1187
|
+
ext?: string;
|
|
1188
|
+
onNavigate?: (id: string) => void;
|
|
1189
|
+
};
|
|
1190
|
+
|
|
1191
|
+
export declare function NavLabel({ text }: {
|
|
1192
|
+
text?: string;
|
|
1193
|
+
}): JSX.Element;
|
|
1194
|
+
|
|
1195
|
+
export declare type NavPreset = "primary" | "full";
|
|
1196
|
+
|
|
1197
|
+
export declare function NavRailSection({ label, icon, items, activeId, onNavigate, }: {
|
|
1198
|
+
label: string;
|
|
1199
|
+
icon: IconName;
|
|
1200
|
+
items: NavItemConfig[];
|
|
1201
|
+
activeId?: string;
|
|
1202
|
+
onNavigate?: (id: string) => void;
|
|
1203
|
+
}): JSX.Element;
|
|
1204
|
+
|
|
1205
|
+
export declare function NavSection({ label, icon, expanded, onToggle, controls, }: {
|
|
1206
|
+
label: string;
|
|
1207
|
+
icon: IconName;
|
|
1208
|
+
expanded?: boolean;
|
|
1209
|
+
onToggle?: () => void;
|
|
1210
|
+
/** id of the region this header toggles (aria-controls) */
|
|
1211
|
+
controls?: string;
|
|
1212
|
+
}): JSX.Element;
|
|
1213
|
+
|
|
1214
|
+
/** A row "needs action" — awaiting approval or flagged for a currency mismatch. */
|
|
1215
|
+
declare function needsAction(tx: Transaction): boolean;
|
|
1216
|
+
|
|
1217
|
+
/** A blockchain a coin can arrive over, e.g. { code: "ETH", name: "Ethereum" }. */
|
|
1218
|
+
declare type Network = {
|
|
1219
|
+
code: string;
|
|
1220
|
+
name: string;
|
|
1221
|
+
};
|
|
1222
|
+
|
|
1223
|
+
/** A blockchain a coin can move over, e.g. { code: "ETH", name: "Ethereum" }. */
|
|
1224
|
+
declare type Network_2 = {
|
|
1225
|
+
code: string;
|
|
1226
|
+
name: string;
|
|
1227
|
+
};
|
|
1228
|
+
|
|
1229
|
+
/** Human network labels for the detail view (table shows the short ticker). */
|
|
1230
|
+
declare const NETWORK_LABELS: Record<string, string>;
|
|
1231
|
+
|
|
1232
|
+
/** Human network names for the codes used on holdings. */
|
|
1233
|
+
declare const NETWORK_NAMES: Record<string, string>;
|
|
1234
|
+
|
|
1235
|
+
/** Networks referenced across the sample data. */
|
|
1236
|
+
declare const NETWORKS: Record<string, Network>;
|
|
1237
|
+
|
|
1238
|
+
/** Networks referenced across the sample data. */
|
|
1239
|
+
declare const NETWORKS_2: Record<string, Network_2>;
|
|
1240
|
+
|
|
1241
|
+
export declare function NotificationItem({ icon, tone, title, detail, time, unread, }: NotificationItemData): JSX.Element;
|
|
1242
|
+
|
|
1243
|
+
export declare type NotificationItemData = {
|
|
1244
|
+
id: string;
|
|
1245
|
+
icon: IconSvgElement;
|
|
1246
|
+
tone: NotificationTone;
|
|
1247
|
+
title: string;
|
|
1248
|
+
detail: string;
|
|
1249
|
+
time: string;
|
|
1250
|
+
unread?: boolean;
|
|
1251
|
+
};
|
|
1252
|
+
|
|
1253
|
+
export declare function NotificationsMenu({ items, onViewAll, }: {
|
|
1254
|
+
items?: NotificationItemData[];
|
|
1255
|
+
onViewAll?: () => void;
|
|
1256
|
+
}): JSX.Element;
|
|
1257
|
+
|
|
1258
|
+
export declare function NotificationsPanel({ items, max, onViewAll, className, }: {
|
|
1259
|
+
items: NotificationItemData[];
|
|
1260
|
+
/** how many rows to show before "View all" */
|
|
1261
|
+
max?: number;
|
|
1262
|
+
onViewAll?: () => void;
|
|
1263
|
+
className?: string;
|
|
1264
|
+
}): JSX.Element;
|
|
1265
|
+
|
|
1266
|
+
export declare type NotificationTone = "blue" | "red" | "green";
|
|
1267
|
+
|
|
1268
|
+
declare type OptionKey = "search" | "tabs" | "filters" | "columns" | "refresh" | "download";
|
|
1269
|
+
|
|
1270
|
+
export declare function PageContainer({ className, children, }: {
|
|
1271
|
+
className?: string;
|
|
1272
|
+
children: ReactNode;
|
|
1273
|
+
}): JSX.Element;
|
|
1274
|
+
|
|
1275
|
+
export declare function PageTitle({ children, defaultOpen, }: {
|
|
1276
|
+
children: ReactNode;
|
|
1277
|
+
defaultOpen?: boolean;
|
|
1278
|
+
}): JSX.Element;
|
|
1279
|
+
|
|
1280
|
+
export declare function PageTitleChip({ label, className, }: {
|
|
1281
|
+
label?: string;
|
|
1282
|
+
className?: string;
|
|
1283
|
+
}): JSX.Element;
|
|
1284
|
+
|
|
1285
|
+
export declare function PageTitlePanel({ title, description, tips, tipsLabel, children, className, }: {
|
|
1286
|
+
/** Bold heading inside the panel. */
|
|
1287
|
+
title: ReactNode;
|
|
1288
|
+
/** Lead paragraph explaining the screen. */
|
|
1289
|
+
description?: ReactNode;
|
|
1290
|
+
/** Optional numbered "what to try" hints. */
|
|
1291
|
+
tips?: ReactNode[];
|
|
1292
|
+
tipsLabel?: string;
|
|
1293
|
+
/** Freeform content — replaces description/tips when provided. */
|
|
1294
|
+
children?: ReactNode;
|
|
1295
|
+
className?: string;
|
|
1296
|
+
}): JSX.Element | null;
|
|
1297
|
+
|
|
1298
|
+
export declare function Pagination({ className, ...props }: ComponentProps<"nav">): JSX.Element;
|
|
1299
|
+
|
|
1300
|
+
export declare function PaginationContent({ className, ...props }: ComponentProps<"ul">): JSX.Element;
|
|
1301
|
+
|
|
1302
|
+
export declare function PaginationEllipsis({ className, ...props }: ComponentProps<"span">): JSX.Element;
|
|
1303
|
+
|
|
1304
|
+
export declare function PaginationItem(props: ComponentProps<"li">): JSX.Element;
|
|
1305
|
+
|
|
1306
|
+
export declare function PaginationLink({ className, isActive, size, ...props }: PaginationLinkProps): JSX.Element;
|
|
1307
|
+
|
|
1308
|
+
declare type PaginationLinkProps = ComponentProps<"button"> & {
|
|
1309
|
+
isActive?: boolean;
|
|
1310
|
+
size?: "default" | "icon" | "sm";
|
|
1311
|
+
};
|
|
1312
|
+
|
|
1313
|
+
export declare function PaginationNext({ className, ...props }: PaginationLinkProps): JSX.Element;
|
|
1314
|
+
|
|
1315
|
+
export declare function PaginationPrevious({ className, ...props }: PaginationLinkProps): JSX.Element;
|
|
1316
|
+
|
|
1317
|
+
/**
|
|
1318
|
+
* Gates the app behind a single hardcoded password. Once entered correctly the
|
|
1319
|
+
* unlock is persisted in localStorage, so it is only required once per browser.
|
|
1320
|
+
*/
|
|
1321
|
+
export declare function PasswordGate({ children }: {
|
|
1322
|
+
children: ReactNode;
|
|
1323
|
+
}): JSX.Element;
|
|
1324
|
+
|
|
1325
|
+
export declare function PaymentType({ type, label, }: {
|
|
1326
|
+
type: "deposit" | "withdraw";
|
|
1327
|
+
/** overrides the default capitalized `type` text */
|
|
1328
|
+
label?: string;
|
|
1329
|
+
}): JSX.Element;
|
|
1330
|
+
|
|
1331
|
+
export declare function PeriodPicker({ value, onChange, today, className, }: {
|
|
1332
|
+
value: PeriodSelection;
|
|
1333
|
+
onChange: (next: PeriodSelection) => void;
|
|
1334
|
+
/** reference "now" for the relative presets */
|
|
1335
|
+
today?: Date;
|
|
1336
|
+
className?: string;
|
|
1337
|
+
}): JSX.Element;
|
|
1338
|
+
|
|
1339
|
+
/** The reporting period: either a whole month or a custom day range. Months are
|
|
1340
|
+
pinned to the first of the month; ranges carry an inclusive from/to and, when
|
|
1341
|
+
chosen from a preset (e.g. "Last 7 days"), the preset's label for display. */
|
|
1342
|
+
declare type PeriodSelection = {
|
|
1343
|
+
mode: "month";
|
|
1344
|
+
month: Date;
|
|
1345
|
+
} | {
|
|
1346
|
+
mode: "range";
|
|
1347
|
+
from: Date;
|
|
1348
|
+
to: Date;
|
|
1349
|
+
label?: string;
|
|
1350
|
+
};
|
|
1351
|
+
|
|
1352
|
+
export declare function Popover(props: ComponentProps<typeof PopoverPrimitive.Root>): JSX.Element;
|
|
1353
|
+
|
|
1354
|
+
export declare function PopoverAnchor(props: ComponentProps<typeof PopoverPrimitive.Anchor>): JSX.Element;
|
|
1355
|
+
|
|
1356
|
+
export declare function PopoverContent({ className, align, sideOffset, ...props }: ComponentProps<typeof PopoverPrimitive.Content>): JSX.Element;
|
|
1357
|
+
|
|
1358
|
+
export declare function PopoverTrigger(props: ComponentProps<typeof PopoverPrimitive.Trigger>): JSX.Element;
|
|
1359
|
+
|
|
1360
|
+
declare type PresetDef = {
|
|
1361
|
+
id: string;
|
|
1362
|
+
label: string;
|
|
1363
|
+
/** null → the "All" default; otherwise a row predicate */
|
|
1364
|
+
match: ((tx: Transaction) => boolean) | null;
|
|
1365
|
+
/** leading icon shown on the preset chip */
|
|
1366
|
+
icon?: PresetIcon;
|
|
1367
|
+
};
|
|
1368
|
+
|
|
1369
|
+
declare type PresetDef_2 = {
|
|
1370
|
+
id: PresetId;
|
|
1371
|
+
label: string;
|
|
1372
|
+
range: (today: Date) => {
|
|
1373
|
+
from: Date;
|
|
1374
|
+
to: Date;
|
|
1375
|
+
};
|
|
1376
|
+
};
|
|
1377
|
+
|
|
1378
|
+
declare type PresetIcon = "alert" | "filter" | "deposit";
|
|
1379
|
+
|
|
1380
|
+
declare type PresetId = "today" | "yesterday" | "today-yesterday" | "last-7" | "last-14" | "last-28" | "last-30" | "this-week" | "last-week" | "this-month" | "last-month" | "maximum";
|
|
1381
|
+
|
|
1382
|
+
/** Resolve a preset into a labelled range PeriodSelection. */
|
|
1383
|
+
declare function presetPeriod(def: PresetDef_2, today?: Date): PeriodSelection;
|
|
1384
|
+
|
|
1385
|
+
declare const PRESETS: PresetDef_2[];
|
|
1386
|
+
|
|
1387
|
+
/** PRIMARY_NAV — the trimmed MVP navigation. */
|
|
1388
|
+
export declare const PRIMARY_NAV: NavGroupConfig[];
|
|
1389
|
+
|
|
1390
|
+
export declare function QrCode({ value, className, }: {
|
|
1391
|
+
value: string;
|
|
1392
|
+
className?: string;
|
|
1393
|
+
}): JSX.Element;
|
|
1394
|
+
|
|
1395
|
+
export declare function RadioGroup({ className, ...props }: ComponentProps<typeof RadioGroupPrimitive.Root>): JSX.Element;
|
|
1396
|
+
|
|
1397
|
+
export declare function RadioGroupItem({ className, ...props }: ComponentProps<typeof RadioGroupPrimitive.Item>): JSX.Element;
|
|
1398
|
+
|
|
1399
|
+
declare const RECENT_TRANSACTIONS: RecentTransaction[];
|
|
1400
|
+
|
|
1401
|
+
declare type RecentTransaction = {
|
|
1402
|
+
/** stable id + React key */
|
|
1403
|
+
id: string;
|
|
1404
|
+
/** movement label, e.g. "Manual Deposit" · "Auto Transfer" · "Manual Withdraw" */
|
|
1405
|
+
label: string;
|
|
1406
|
+
direction: RecentTxDirection;
|
|
1407
|
+
status: TxStatus;
|
|
1408
|
+
/** currency code, big badge, e.g. "USDT" */
|
|
1409
|
+
currency: string;
|
|
1410
|
+
/** network ticker, small overlay badge, e.g. "TRX" */
|
|
1411
|
+
network: string;
|
|
1412
|
+
/** signed coin figure, e.g. "+20.00" (transfers are unsigned) */
|
|
1413
|
+
amount: string;
|
|
1414
|
+
/** signed fiat sub-line, e.g. "+$20.00" */
|
|
1415
|
+
amountFiat: string;
|
|
1416
|
+
from: WalletRef;
|
|
1417
|
+
to: WalletRef;
|
|
1418
|
+
/** date, e.g. "Mar 10, 2024" */
|
|
1419
|
+
date: string;
|
|
1420
|
+
/** time, e.g. "11:31 AM" */
|
|
1421
|
+
time: string;
|
|
1422
|
+
/** who triggered it — omitted for automated (system) movements */
|
|
1423
|
+
initiatedBy?: string;
|
|
1424
|
+
txHash: string;
|
|
1425
|
+
};
|
|
1426
|
+
|
|
1427
|
+
export declare function RecentTransactionsPanel({ transactions, open, onOpenChange, }: {
|
|
1428
|
+
transactions: RecentTransaction[];
|
|
1429
|
+
open: boolean;
|
|
1430
|
+
onOpenChange: (open: boolean) => void;
|
|
1431
|
+
}): JSX.Element;
|
|
1432
|
+
|
|
1433
|
+
/** Direction drives the header icon and the amount color. */
|
|
1434
|
+
declare type RecentTxDirection = "in" | "out" | "transfer";
|
|
1435
|
+
|
|
1436
|
+
declare const REFERENCE_TODAY: Date;
|
|
1437
|
+
|
|
1438
|
+
declare const REPORT_SUMMARIES: ReportSummary[];
|
|
1439
|
+
|
|
1440
|
+
declare type ReportData = {
|
|
1441
|
+
/** true when the period falls outside the data window — render the empty state */
|
|
1442
|
+
isEmpty: boolean;
|
|
1443
|
+
summaries: ReportSummary[];
|
|
1444
|
+
dailyBalances: DailyBalance[];
|
|
1445
|
+
};
|
|
1446
|
+
|
|
1447
|
+
export declare namespace reportsData {
|
|
1448
|
+
export {
|
|
1449
|
+
assetColor,
|
|
1450
|
+
ASSET_COLORS,
|
|
1451
|
+
ASSET_COLOR_FALLBACK,
|
|
1452
|
+
REPORT_SUMMARIES,
|
|
1453
|
+
DAILY_BALANCES,
|
|
1454
|
+
EXPORT_HISTORY
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
export declare namespace reportsPresets {
|
|
1459
|
+
export {
|
|
1460
|
+
presetPeriod,
|
|
1461
|
+
REFERENCE_TODAY,
|
|
1462
|
+
ACCOUNT_START,
|
|
1463
|
+
PresetId,
|
|
1464
|
+
PresetDef_2 as PresetDef,
|
|
1465
|
+
PRESETS
|
|
1466
|
+
}
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
export declare namespace reportsReportData {
|
|
1470
|
+
export {
|
|
1471
|
+
getReportData,
|
|
1472
|
+
ReportView,
|
|
1473
|
+
ReportData,
|
|
1474
|
+
getReportData as default
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
export declare function ReportsSummaryEmpty({ className }: {
|
|
1479
|
+
className?: string;
|
|
1480
|
+
}): JSX.Element;
|
|
1481
|
+
|
|
1482
|
+
export declare namespace reportsTypes {
|
|
1483
|
+
export {
|
|
1484
|
+
PeriodSelection,
|
|
1485
|
+
AssetSlice,
|
|
1486
|
+
ReportSummary,
|
|
1487
|
+
DailyBalance,
|
|
1488
|
+
ExportEntry
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
/** A summary card: a headline fiat total plus its per-asset breakdown. */
|
|
1493
|
+
declare type ReportSummary = {
|
|
1494
|
+
label: string;
|
|
1495
|
+
total: string;
|
|
1496
|
+
slices: AssetSlice[];
|
|
1497
|
+
};
|
|
1498
|
+
|
|
1499
|
+
export declare function ReportSummaryCard({ summary, emphasized, className, }: {
|
|
1500
|
+
summary: ReportSummary;
|
|
1501
|
+
/** headline value weight — semibold when true (default), normal (400) when false */
|
|
1502
|
+
emphasized?: boolean;
|
|
1503
|
+
className?: string;
|
|
1504
|
+
}): JSX.Element;
|
|
1505
|
+
|
|
1506
|
+
/** The three-column summary banner: one rounded card split by vertical rules. */
|
|
1507
|
+
export declare function ReportSummaryGroup({ summaries, className, }: {
|
|
1508
|
+
summaries: ReportSummary[];
|
|
1509
|
+
className?: string;
|
|
1510
|
+
}): JSX.Element;
|
|
1511
|
+
|
|
1512
|
+
declare type ReportView = "volume" | "transactions";
|
|
1513
|
+
|
|
1514
|
+
declare const RISK_OPTIONS: {
|
|
1515
|
+
value: RiskLevel_2;
|
|
1516
|
+
label: string;
|
|
1517
|
+
}[];
|
|
1518
|
+
|
|
1519
|
+
export declare function RiskAssessment({ assessment, actionRequired, onApprove, onReject, className, }: {
|
|
1520
|
+
assessment: RiskAssessment_2;
|
|
1521
|
+
/** show the Approve / Reject state (Pending Approval / Currency Mismatch) */
|
|
1522
|
+
actionRequired?: boolean;
|
|
1523
|
+
onApprove?: () => void;
|
|
1524
|
+
onReject?: () => void;
|
|
1525
|
+
className?: string;
|
|
1526
|
+
}): JSX.Element;
|
|
1527
|
+
|
|
1528
|
+
declare type RiskAssessment_2 = {
|
|
1529
|
+
/** 0–100 risk score */
|
|
1530
|
+
score: number;
|
|
1531
|
+
/** bucket for the signal bars + score color */
|
|
1532
|
+
level: RiskLevel_2;
|
|
1533
|
+
/** engine decision — picks the status icon + tone */
|
|
1534
|
+
decision: RiskDecision;
|
|
1535
|
+
/** vendor that produced the score, e.g. "Crystal" */
|
|
1536
|
+
provider: string;
|
|
1537
|
+
/** short human-readable justification */
|
|
1538
|
+
reason: string;
|
|
1539
|
+
};
|
|
1540
|
+
|
|
1541
|
+
/** Outcome of the KYT/risk engine — drives the RiskAssessment status chip. */
|
|
1542
|
+
declare type RiskDecision = "auto-approved" | "approved" | "manual-review" | "flagged" | "rejected";
|
|
1543
|
+
|
|
1544
|
+
export declare type RiskLevel = "low" | "medium" | "high";
|
|
1545
|
+
|
|
1546
|
+
declare type RiskLevel_2 = "low" | "medium" | "high";
|
|
1547
|
+
|
|
1548
|
+
export declare function RiskSignal({ level }: {
|
|
1549
|
+
level: RiskLevel;
|
|
1550
|
+
}): JSX.Element;
|
|
1551
|
+
|
|
1552
|
+
export declare const SAMPLE_NOTIFICATIONS: NotificationItemData[];
|
|
1553
|
+
|
|
1554
|
+
/** Saved / named destination addresses (allow-list). Scoped per coin+network. */
|
|
1555
|
+
declare const SAVED_ADDRESSES: SavedAddress[];
|
|
1556
|
+
|
|
1557
|
+
declare const SAVED_PRESETS: PresetDef[];
|
|
1558
|
+
|
|
1559
|
+
/** A saved/named destination address money can be sent TO. Scoped to coin+network. */
|
|
1560
|
+
declare type SavedAddress = {
|
|
1561
|
+
id: string;
|
|
1562
|
+
/** human label, e.g. "Binance Hot Wallet" */
|
|
1563
|
+
label: string;
|
|
1564
|
+
coin: string;
|
|
1565
|
+
network: string;
|
|
1566
|
+
address: string;
|
|
1567
|
+
};
|
|
1568
|
+
|
|
1569
|
+
export declare function SavedPresetsBar({ presets, activeId, getCount, onToggle, onDelete, onCreateView, onReset, resetDisabled, }: {
|
|
1570
|
+
presets: PresetDef[];
|
|
1571
|
+
activeId: string | null;
|
|
1572
|
+
getCount: (preset: PresetDef) => number;
|
|
1573
|
+
onToggle: (id: string) => void;
|
|
1574
|
+
onDelete: (id: string) => void;
|
|
1575
|
+
onCreateView: () => void;
|
|
1576
|
+
onReset: () => void;
|
|
1577
|
+
resetDisabled?: boolean;
|
|
1578
|
+
}): JSX.Element;
|
|
1579
|
+
|
|
1580
|
+
export declare function SavePresetDialog({ open, onOpenChange, filter, onSave, }: {
|
|
1581
|
+
open: boolean;
|
|
1582
|
+
onOpenChange: (open: boolean) => void;
|
|
1583
|
+
filter: TxFilter;
|
|
1584
|
+
onSave: (name: string, filter: TxFilter) => void;
|
|
1585
|
+
}): JSX.Element;
|
|
1586
|
+
|
|
1587
|
+
export declare function ScrollArea({ children, className, viewportClassName, ...rootProps }: ComponentProps<"div"> & {
|
|
1588
|
+
viewportClassName?: string;
|
|
1589
|
+
}): JSX.Element;
|
|
1590
|
+
|
|
1591
|
+
export declare function SectionHeading({ label, collapsible, expanded, onToggle, controls, }: {
|
|
1592
|
+
label?: string;
|
|
1593
|
+
collapsible?: boolean;
|
|
1594
|
+
expanded?: boolean;
|
|
1595
|
+
onToggle?: () => void;
|
|
1596
|
+
/** id of the region this heading toggles (aria-controls) */
|
|
1597
|
+
controls?: string;
|
|
1598
|
+
}): JSX.Element;
|
|
1599
|
+
|
|
1600
|
+
export declare function Separator({ className, orientation, decorative, ...props }: React_2.ComponentProps<typeof Separator_2.Root>): React_2.JSX.Element;
|
|
1601
|
+
|
|
1602
|
+
export declare function SidePanel(props: ComponentProps<typeof DialogPrimitive.Root>): JSX.Element;
|
|
1603
|
+
|
|
1604
|
+
export declare function SidePanelBody({ className, ...props }: ComponentProps<"div">): JSX.Element;
|
|
1605
|
+
|
|
1606
|
+
export declare function SidePanelClose(props: ComponentProps<typeof DialogPrimitive.Close>): JSX.Element;
|
|
1607
|
+
|
|
1608
|
+
export declare function SidePanelContent({ className, children, side, showClose, ...props }: ComponentProps<typeof DialogPrimitive.Content> & {
|
|
1609
|
+
side?: "right" | "left";
|
|
1610
|
+
showClose?: boolean;
|
|
1611
|
+
}): JSX.Element;
|
|
1612
|
+
|
|
1613
|
+
export declare function SidePanelDescription({ className, ...props }: ComponentProps<typeof DialogPrimitive.Description>): JSX.Element;
|
|
1614
|
+
|
|
1615
|
+
export declare function SidePanelFooter({ className, ...props }: ComponentProps<"div">): JSX.Element;
|
|
1616
|
+
|
|
1617
|
+
/** Panel header — no hard border; instead a gradient fades the scrolling body
|
|
1618
|
+
out beneath it, so content appears to dissolve as it scrolls under. */
|
|
1619
|
+
export declare function SidePanelHeader({ className, children, ...props }: ComponentProps<"div">): JSX.Element;
|
|
1620
|
+
|
|
1621
|
+
/** Standard section heading for panels and modals. */
|
|
1622
|
+
export declare function SidePanelSectionTitle({ className, ...props }: ComponentProps<"h3">): JSX.Element;
|
|
1623
|
+
|
|
1624
|
+
/** Divider between sections — inset to the body padding (not full-bleed). The
|
|
1625
|
+
standard section divider for panels and modals. */
|
|
1626
|
+
export declare function SidePanelSeparator({ className, ...props }: ComponentProps<typeof Separator>): JSX.Element;
|
|
1627
|
+
|
|
1628
|
+
export declare function SidePanelTitle({ className, ...props }: ComponentProps<typeof DialogPrimitive.Title>): JSX.Element;
|
|
1629
|
+
|
|
1630
|
+
export declare function SidePanelTrigger(props: ComponentProps<typeof DialogPrimitive.Trigger>): JSX.Element;
|
|
1631
|
+
|
|
1632
|
+
declare const SIZES: {
|
|
1633
|
+
readonly xs: {
|
|
1634
|
+
readonly logo: "size-5";
|
|
1635
|
+
readonly badge: "size-2.5";
|
|
1636
|
+
readonly pos: "-right-1.5 -bottom-0.5";
|
|
1637
|
+
readonly ring: "border";
|
|
1638
|
+
};
|
|
1639
|
+
readonly sm: {
|
|
1640
|
+
readonly logo: "size-7";
|
|
1641
|
+
readonly badge: "size-3.5";
|
|
1642
|
+
readonly pos: "-right-2.5 -bottom-1";
|
|
1643
|
+
readonly ring: "border-2";
|
|
1644
|
+
};
|
|
1645
|
+
readonly md: {
|
|
1646
|
+
readonly logo: "size-9";
|
|
1647
|
+
readonly badge: "size-4";
|
|
1648
|
+
readonly pos: "-right-2 -bottom-1";
|
|
1649
|
+
readonly ring: "border-2";
|
|
1650
|
+
};
|
|
1651
|
+
};
|
|
1652
|
+
|
|
1653
|
+
export declare function Skeleton({ className, ...props }: ComponentProps<"div">): JSX.Element;
|
|
1654
|
+
|
|
1655
|
+
export declare function SortHeader({ label, sort, onSort, align, }: {
|
|
1656
|
+
label: string;
|
|
1657
|
+
/** current sort direction for this column, or false when not sorted by it */
|
|
1658
|
+
sort?: "asc" | "desc" | false;
|
|
1659
|
+
onSort?: () => void;
|
|
1660
|
+
align?: "start" | "end";
|
|
1661
|
+
}): JSX.Element;
|
|
1662
|
+
|
|
1663
|
+
/** Named treasury wallets available as withdrawal sources. */
|
|
1664
|
+
declare const SOURCE_WALLETS: SourceWallet[];
|
|
1665
|
+
|
|
1666
|
+
/** A named treasury wallet money can be sent FROM. Scoped to one coin+network. */
|
|
1667
|
+
declare type SourceWallet = {
|
|
1668
|
+
id: string;
|
|
1669
|
+
/** human label, e.g. "Low Risk Wallet" */
|
|
1670
|
+
name: string;
|
|
1671
|
+
/** optional risk/purpose tag shown as a small pill */
|
|
1672
|
+
purpose?: "low" | "medium" | "high" | "operational" | "payout";
|
|
1673
|
+
coin: string;
|
|
1674
|
+
network: string;
|
|
1675
|
+
/** full on-chain address (rendered truncated, copyable in full) */
|
|
1676
|
+
address: string;
|
|
1677
|
+
/** available crypto figure, pre-formatted (e.g. "42,120.00") — also the limit */
|
|
1678
|
+
amount: string;
|
|
1679
|
+
amountFiat: string;
|
|
1680
|
+
/** USD value of one unit, used to compute the recap fiat equivalent */
|
|
1681
|
+
fiatRate: number;
|
|
1682
|
+
};
|
|
1683
|
+
|
|
1684
|
+
declare const STATUS_META: Record<TxStatus, {
|
|
1685
|
+
label: string;
|
|
1686
|
+
tone: BadgeTone;
|
|
1687
|
+
}>;
|
|
1688
|
+
|
|
1689
|
+
/** Display order (reading order) for status lists. */
|
|
1690
|
+
declare const STATUS_ORDER: TxStatus[];
|
|
1691
|
+
|
|
1692
|
+
export declare function StatusBadge({ children, tone, className, }: {
|
|
1693
|
+
children: ReactNode;
|
|
1694
|
+
tone?: BadgeTone;
|
|
1695
|
+
className?: string;
|
|
1696
|
+
}): JSX.Element;
|
|
1697
|
+
|
|
1698
|
+
export declare function Table({ className, containerClassName, ...props }: React_2.ComponentProps<"table"> & {
|
|
1699
|
+
containerClassName?: string;
|
|
1700
|
+
}): React_2.JSX.Element;
|
|
1701
|
+
|
|
1702
|
+
export declare function TableBody({ className, ...props }: React_2.ComponentProps<"tbody">): React_2.JSX.Element;
|
|
1703
|
+
|
|
1704
|
+
export declare function TableCaption({ className, ...props }: React_2.ComponentProps<"caption">): React_2.JSX.Element;
|
|
1705
|
+
|
|
1706
|
+
export declare function TableCell({ className, ...props }: React_2.ComponentProps<"td">): React_2.JSX.Element;
|
|
1707
|
+
|
|
1708
|
+
export declare function TableFooter({ className, ...props }: React_2.ComponentProps<"tfoot">): React_2.JSX.Element;
|
|
1709
|
+
|
|
1710
|
+
export declare function TableHead({ className, ...props }: React_2.ComponentProps<"th">): React_2.JSX.Element;
|
|
1711
|
+
|
|
1712
|
+
export declare function TableHeader({ className, ...props }: React_2.ComponentProps<"thead">): React_2.JSX.Element;
|
|
1713
|
+
|
|
1714
|
+
export declare function TableRow({ className, ...props }: React_2.ComponentProps<"tr">): React_2.JSX.Element;
|
|
1715
|
+
|
|
1716
|
+
export declare function Tabs({ className, orientation, ...props }: React_2.ComponentProps<typeof Tabs_2.Root>): React_2.JSX.Element;
|
|
1717
|
+
|
|
1718
|
+
export declare function TabsContent({ className, ...props }: React_2.ComponentProps<typeof Tabs_2.Content>): React_2.JSX.Element;
|
|
1719
|
+
|
|
1720
|
+
export declare function TabsList({ className, variant, ...props }: React_2.ComponentProps<typeof Tabs_2.List> & VariantProps<typeof tabsListVariants>): React_2.JSX.Element;
|
|
1721
|
+
|
|
1722
|
+
export declare const tabsListVariants: (props?: ({
|
|
1723
|
+
variant?: "default" | "line" | null | undefined;
|
|
1724
|
+
} & ClassProp) | undefined) => string;
|
|
1725
|
+
|
|
1726
|
+
export declare function TabsTrigger({ className, ...props }: React_2.ComponentProps<typeof Tabs_2.Trigger>): React_2.JSX.Element;
|
|
1727
|
+
|
|
1728
|
+
export declare function TextLink({ href, className, children, ...props }: ComponentProps<"a">): JSX.Element;
|
|
1729
|
+
|
|
1730
|
+
export declare function TextStack({ primary, secondary, align, tabularNums, primaryClassName, secondaryClassName, className, }: {
|
|
1731
|
+
primary: ReactNode;
|
|
1732
|
+
secondary?: ReactNode;
|
|
1733
|
+
align?: "start" | "end";
|
|
1734
|
+
tabularNums?: boolean;
|
|
1735
|
+
primaryClassName?: string;
|
|
1736
|
+
secondaryClassName?: string;
|
|
1737
|
+
className?: string;
|
|
1738
|
+
}): JSX.Element;
|
|
1739
|
+
|
|
1740
|
+
/** Solid dot color per tone — for the small status swatches in the filter list. */
|
|
1741
|
+
declare const TONE_DOT: Record<BadgeTone, string>;
|
|
1742
|
+
|
|
1743
|
+
export declare function Tooltip(props: ComponentProps<typeof TooltipPrimitive.Root>): JSX.Element;
|
|
1744
|
+
|
|
1745
|
+
export declare function TooltipContent({ className, sideOffset, children, ...props }: ComponentProps<typeof TooltipPrimitive.Content>): JSX.Element;
|
|
1746
|
+
|
|
1747
|
+
export declare function TooltipProvider({ delayDuration, ...props }: ComponentProps<typeof TooltipPrimitive.Provider>): JSX.Element;
|
|
1748
|
+
|
|
1749
|
+
export declare function TooltipTrigger(props: ComponentProps<typeof TooltipPrimitive.Trigger>): JSX.Element;
|
|
1750
|
+
|
|
1751
|
+
declare function toTransactionDetail(tx: Transaction): TransactionDetail;
|
|
1752
|
+
|
|
1753
|
+
declare type Transaction = {
|
|
1754
|
+
/** stable id + React key */
|
|
1755
|
+
id: string;
|
|
1756
|
+
type: TxType;
|
|
1757
|
+
status: TxStatus;
|
|
1758
|
+
risk: RiskLevel_2;
|
|
1759
|
+
/** signed coin figure, e.g. "+1,582.18" or "-140.80" */
|
|
1760
|
+
amount: string;
|
|
1761
|
+
/** currency code appended after the amount, e.g. "USDT" */
|
|
1762
|
+
currency: string;
|
|
1763
|
+
/** signed fiat sub-line, e.g. "+$1,582.18" */
|
|
1764
|
+
amountFiat: string;
|
|
1765
|
+
/** network ticker shown under the currency, e.g. "ETH" */
|
|
1766
|
+
network: string;
|
|
1767
|
+
/** created date, e.g. "Jul 05, 2026" */
|
|
1768
|
+
createdAt: string;
|
|
1769
|
+
/** created time, e.g. "02:27 PM" */
|
|
1770
|
+
createdTime: string;
|
|
1771
|
+
/** confirmed date — omit while still pending */
|
|
1772
|
+
confirmedAt?: string;
|
|
1773
|
+
confirmedTime?: string;
|
|
1774
|
+
/** full user id (rendered truncated) */
|
|
1775
|
+
userId: string;
|
|
1776
|
+
/** full order id (rendered truncated) */
|
|
1777
|
+
orderId: string;
|
|
1778
|
+
};
|
|
1779
|
+
|
|
1780
|
+
/** Fields the search box can scope to (UI only — the backend does the search).
|
|
1781
|
+
Exported so the page can wire TransactionsTableOptions to this table. */
|
|
1782
|
+
export declare const TRANSACTION_SEARCH_SCOPES: {
|
|
1783
|
+
value: string;
|
|
1784
|
+
label: string;
|
|
1785
|
+
}[];
|
|
1786
|
+
|
|
1787
|
+
/** The table's columns as toggle options — for the Columns menu in the toolbar. */
|
|
1788
|
+
export declare const transactionColumnOptions: ColumnOption[];
|
|
1789
|
+
|
|
1790
|
+
/** The full transaction, as shown in the Transaction Details side panel.
|
|
1791
|
+
* Extends the table row with the fields only the detail view needs. */
|
|
1792
|
+
declare type TransactionDetail = Transaction & {
|
|
1793
|
+
/** human network label, e.g. "TRX Shasta" */
|
|
1794
|
+
networkLabel: string;
|
|
1795
|
+
updatedAt: string;
|
|
1796
|
+
updatedTime: string;
|
|
1797
|
+
/** end-customer's on-chain wallet */
|
|
1798
|
+
customerWallet: string;
|
|
1799
|
+
/** Destination tag/memo for tag-based chains (TON, XRP, …). When present, the
|
|
1800
|
+
* customer wallet shows as Address + Tag, and From/To split into Wallet + Tag. */
|
|
1801
|
+
customerTag?: string;
|
|
1802
|
+
/** expected deposit amount, e.g. "14.00 USDT" */
|
|
1803
|
+
expectedAmount: string;
|
|
1804
|
+
/** conversion rate line, e.g. "1 USDT = $1.00" */
|
|
1805
|
+
rate: string;
|
|
1806
|
+
/** commission fee, e.g. "3.00 USDT" */
|
|
1807
|
+
commissionFee: string;
|
|
1808
|
+
riskAssessment: RiskAssessment_2;
|
|
1809
|
+
fromAddress: string;
|
|
1810
|
+
/** From-side destination tag (tag-based chains) — splits From into Wallet + Tag. */
|
|
1811
|
+
fromTag?: string;
|
|
1812
|
+
toAddress: string;
|
|
1813
|
+
/** To-side destination tag (tag-based chains) — splits To into Wallet + Tag. */
|
|
1814
|
+
toTag?: string;
|
|
1815
|
+
txHash: string;
|
|
1816
|
+
/** network fee with unit, e.g. "6.23 TRX Shasta" */
|
|
1817
|
+
txFee: string;
|
|
1818
|
+
transactionUid: string;
|
|
1819
|
+
partnerPaymentId: string;
|
|
1820
|
+
};
|
|
1821
|
+
|
|
1822
|
+
export declare function TransactionDetailPanel({ detail, open, onOpenChange, show, onApprove, onReject, }: {
|
|
1823
|
+
detail: TransactionDetail | null;
|
|
1824
|
+
open: boolean;
|
|
1825
|
+
onOpenChange: (open: boolean) => void;
|
|
1826
|
+
/** per-section, per-field visibility — every value defaults to shown */
|
|
1827
|
+
show?: TransactionDetailVisibility;
|
|
1828
|
+
/** Risk Assessment approve/reject handlers (Pending Approval / Currency Mismatch) */
|
|
1829
|
+
onApprove?: () => void;
|
|
1830
|
+
onReject?: () => void;
|
|
1831
|
+
}): JSX.Element;
|
|
1832
|
+
|
|
1833
|
+
export declare type TransactionDetailVisibility = {
|
|
1834
|
+
summary?: Partial<Record<TransactionSummaryField, boolean>>;
|
|
1835
|
+
info?: Partial<Record<TransactionInfoField, boolean>>;
|
|
1836
|
+
/** false hides the whole Risk Assessment section */
|
|
1837
|
+
riskAssessment?: boolean;
|
|
1838
|
+
blockchain?: Partial<Record<BlockchainField, boolean>>;
|
|
1839
|
+
/** false hides the second "Refund" block */
|
|
1840
|
+
showRefund?: boolean;
|
|
1841
|
+
reference?: Partial<Record<TransactionReferenceField, boolean>>;
|
|
1842
|
+
};
|
|
1843
|
+
|
|
1844
|
+
export declare function TransactionInfo({ detail, show, className, }: {
|
|
1845
|
+
detail: TransactionDetail;
|
|
1846
|
+
show?: Partial<Record<TransactionInfoField, boolean>>;
|
|
1847
|
+
className?: string;
|
|
1848
|
+
}): JSX.Element;
|
|
1849
|
+
|
|
1850
|
+
export declare type TransactionInfoField = "currency" | "network" | "createdAt" | "updatedAt" | "userId" | "customerWallet" | "address" | "tag" | "expectedAmount" | "rate" | "commissionFee";
|
|
1851
|
+
|
|
1852
|
+
export declare function TransactionReference({ detail, show, className, }: {
|
|
1853
|
+
detail: TransactionDetail;
|
|
1854
|
+
show?: Partial<Record<TransactionReferenceField, boolean>>;
|
|
1855
|
+
className?: string;
|
|
1856
|
+
}): JSX.Element;
|
|
1857
|
+
|
|
1858
|
+
export declare type TransactionReferenceField = "transactionUid" | "partnerPaymentId";
|
|
1859
|
+
|
|
1860
|
+
/** Full ledger — the hand-written sample plus 243 generated test rows. */
|
|
1861
|
+
declare const TRANSACTIONS: Transaction[];
|
|
1862
|
+
|
|
1863
|
+
export declare namespace transactionsData {
|
|
1864
|
+
export {
|
|
1865
|
+
coinSrc,
|
|
1866
|
+
needsAction,
|
|
1867
|
+
toTransactionDetail,
|
|
1868
|
+
TRANSACTIONS,
|
|
1869
|
+
PresetIcon,
|
|
1870
|
+
PresetDef,
|
|
1871
|
+
SAVED_PRESETS,
|
|
1872
|
+
NETWORK_LABELS
|
|
1873
|
+
}
|
|
1874
|
+
}
|
|
1875
|
+
|
|
1876
|
+
export declare function TransactionsFilterPanel({ open, onOpenChange, value, onApply, onSave, }: {
|
|
1877
|
+
open: boolean;
|
|
1878
|
+
onOpenChange: (open: boolean) => void;
|
|
1879
|
+
value: TxFilter;
|
|
1880
|
+
onApply: (filter: TxFilter) => void;
|
|
1881
|
+
onSave: (filter: TxFilter) => void;
|
|
1882
|
+
}): JSX.Element;
|
|
1883
|
+
|
|
1884
|
+
export declare namespace transactionsFilters {
|
|
1885
|
+
export {
|
|
1886
|
+
isFilterEmpty,
|
|
1887
|
+
filterMatches,
|
|
1888
|
+
countMatches,
|
|
1889
|
+
filterToName,
|
|
1890
|
+
DateField,
|
|
1891
|
+
TxFilter,
|
|
1892
|
+
EMPTY_FILTER,
|
|
1893
|
+
TYPE_OPTIONS,
|
|
1894
|
+
RISK_OPTIONS,
|
|
1895
|
+
AssetOption,
|
|
1896
|
+
ASSET_OPTIONS
|
|
1897
|
+
}
|
|
1898
|
+
}
|
|
1899
|
+
|
|
1900
|
+
export declare namespace transactionsStatuses {
|
|
1901
|
+
export {
|
|
1902
|
+
STATUS_META,
|
|
1903
|
+
STATUS_ORDER,
|
|
1904
|
+
TONE_DOT
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
|
|
1908
|
+
export declare function TransactionsTable({ data, loading, onRowClick, query, columnVisibility, presets, }: TransactionsTableProps): JSX.Element;
|
|
1909
|
+
|
|
1910
|
+
export declare function TransactionsTableOptions({ search, onSearchChange, searchScopes, searchScope, onSearchScopeChange, searchPlaceholder, segment, onSegmentChange, tabs, tabCounts, onFilter, filterCount, columns, columnVisibility, onColumnChange, onRefresh, refreshing, onDownload, show, className, }: {
|
|
1911
|
+
search: string;
|
|
1912
|
+
onSearchChange: (value: string) => void;
|
|
1913
|
+
searchScopes?: {
|
|
1914
|
+
value: string;
|
|
1915
|
+
label: string;
|
|
1916
|
+
}[];
|
|
1917
|
+
searchScope?: string;
|
|
1918
|
+
onSearchScopeChange?: (value: string) => void;
|
|
1919
|
+
searchPlaceholder?: string;
|
|
1920
|
+
segment: string;
|
|
1921
|
+
onSegmentChange: (value: string) => void;
|
|
1922
|
+
tabs?: {
|
|
1923
|
+
value: string;
|
|
1924
|
+
label: string;
|
|
1925
|
+
}[];
|
|
1926
|
+
/** per-tab counts (by tab value) → blue badge after the label when > 0 */
|
|
1927
|
+
tabCounts?: Record<string, number>;
|
|
1928
|
+
onFilter?: () => void;
|
|
1929
|
+
filterCount?: number;
|
|
1930
|
+
columns: ColumnOption[];
|
|
1931
|
+
columnVisibility: Record<string, boolean>;
|
|
1932
|
+
onColumnChange: (id: string, next: boolean) => void;
|
|
1933
|
+
onRefresh?: () => void;
|
|
1934
|
+
refreshing?: boolean;
|
|
1935
|
+
onDownload?: (format: string) => void;
|
|
1936
|
+
show?: TransactionsTableOptionsVisibility;
|
|
1937
|
+
className?: string;
|
|
1938
|
+
}): JSX.Element;
|
|
1939
|
+
|
|
1940
|
+
export declare type TransactionsTableOptionsVisibility = Partial<Record<OptionKey, boolean>>;
|
|
1941
|
+
|
|
1942
|
+
export declare type TransactionsTableProps = {
|
|
1943
|
+
data: Transaction[];
|
|
1944
|
+
loading?: boolean;
|
|
1945
|
+
onRowClick?: (tx: Transaction) => void;
|
|
1946
|
+
/** controlled search query (owned by the page, shared with the toolbar) */
|
|
1947
|
+
query?: string;
|
|
1948
|
+
/** controlled column visibility (owned by the page, shared with the toolbar) */
|
|
1949
|
+
columnVisibility?: Record<string, boolean>;
|
|
1950
|
+
/** the SavedPresetsBar row, rendered just above the table */
|
|
1951
|
+
presets?: ReactNode;
|
|
1952
|
+
};
|
|
1953
|
+
|
|
1954
|
+
export declare namespace transactionsTypes {
|
|
1955
|
+
export {
|
|
1956
|
+
TxType,
|
|
1957
|
+
TxStatus,
|
|
1958
|
+
RiskLevel_2 as RiskLevel,
|
|
1959
|
+
Transaction,
|
|
1960
|
+
RiskDecision,
|
|
1961
|
+
RiskAssessment_2 as RiskAssessment,
|
|
1962
|
+
TransactionDetail
|
|
1963
|
+
}
|
|
1964
|
+
}
|
|
1965
|
+
|
|
1966
|
+
export declare function TransactionSummary({ detail, show, className, }: {
|
|
1967
|
+
detail: TransactionDetail;
|
|
1968
|
+
show?: Partial<Record<TransactionSummaryField, boolean>>;
|
|
1969
|
+
className?: string;
|
|
1970
|
+
}): JSX.Element;
|
|
1971
|
+
|
|
1972
|
+
export declare type TransactionSummaryField = "type" | "status" | "amount" | "amountFiat";
|
|
1973
|
+
|
|
1974
|
+
declare type TxFilter = {
|
|
1975
|
+
types: TxType[];
|
|
1976
|
+
statuses: TxStatus[];
|
|
1977
|
+
/** "CURRENCY/NETWORK" keys, e.g. "USDT/ETH" */
|
|
1978
|
+
assets: string[];
|
|
1979
|
+
risks: RiskLevel_2[];
|
|
1980
|
+
dateField: DateField;
|
|
1981
|
+
/** ISO date strings from <input type="date">, e.g. "2026-07-01" */
|
|
1982
|
+
from?: string;
|
|
1983
|
+
to?: string;
|
|
1984
|
+
};
|
|
1985
|
+
|
|
1986
|
+
declare type TxStatus = "created" | "confirmed" | "rejected" | "failed" | "pending-approval" | "processing" | "expired" | "cancelled" | "refunded" | "partially-confirmed" | "under-review" | "settled" | "currency-mismatch";
|
|
1987
|
+
|
|
1988
|
+
declare type TxType = "deposit" | "withdraw";
|
|
1989
|
+
|
|
1990
|
+
declare const TYPE_OPTIONS: {
|
|
1991
|
+
value: TxType;
|
|
1992
|
+
label: string;
|
|
1993
|
+
}[];
|
|
1994
|
+
|
|
1995
|
+
export declare function UiBadge({ className, variant, asChild, ...props }: React_2.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
|
|
1996
|
+
asChild?: boolean;
|
|
1997
|
+
}): React_2.JSX.Element;
|
|
1998
|
+
|
|
1999
|
+
export declare function useHeaderExtension(): HeaderStickyValue;
|
|
2000
|
+
|
|
2001
|
+
export declare function UserMenu({ name, avatarSrc, navMode, onNavModeChange, headerMode, onHeaderModeChange, onAccount, onLogout, onTakeTour, onResetDemo, }: {
|
|
2002
|
+
name?: string;
|
|
2003
|
+
avatarSrc?: string;
|
|
2004
|
+
/** current navigation preset — MVP ("primary") or Full ("full") */
|
|
2005
|
+
navMode?: NavPreset;
|
|
2006
|
+
onNavModeChange?: (mode: NavPreset) => void;
|
|
2007
|
+
/** current app-header version — V1 (no search) or V2 (search) */
|
|
2008
|
+
headerMode?: HeaderMode;
|
|
2009
|
+
onHeaderModeChange?: (mode: HeaderMode) => void;
|
|
2010
|
+
onAccount?: () => void;
|
|
2011
|
+
onLogout?: () => void;
|
|
2012
|
+
onTakeTour?: () => void;
|
|
2013
|
+
onResetDemo?: () => void;
|
|
2014
|
+
}): JSX.Element;
|
|
2015
|
+
|
|
2016
|
+
/** A named wallet within a currency, on a specific network. */
|
|
2017
|
+
declare type Wallet = {
|
|
2018
|
+
id: string;
|
|
2019
|
+
/** "Main" | "Payout". */
|
|
2020
|
+
name: string;
|
|
2021
|
+
/** Optional secondary line under the name, e.g. "min $5,000". */
|
|
2022
|
+
note?: string;
|
|
2023
|
+
/** Network code for the icon (resolved via coinSrc), e.g. "ETH", "TRON". */
|
|
2024
|
+
network: string;
|
|
2025
|
+
/** Network label shown next to the icon, e.g. "Ethereum". */
|
|
2026
|
+
networkName: string;
|
|
2027
|
+
amount: string;
|
|
2028
|
+
amountFiat: string;
|
|
2029
|
+
/** Pending crypto figure; omit when the wallet holds no pending funds. */
|
|
2030
|
+
pending?: string;
|
|
2031
|
+
pendingFiat?: string;
|
|
2032
|
+
};
|
|
2033
|
+
|
|
2034
|
+
export declare type WalletActionId = "withdraw" | "deposit" | "convert";
|
|
2035
|
+
|
|
2036
|
+
export declare function WalletBalancesTable({ balances, actionsVariant, className, }: {
|
|
2037
|
+
balances: CurrencyBalance[];
|
|
2038
|
+
actionsVariant?: "icons" | "menu";
|
|
2039
|
+
className?: string;
|
|
2040
|
+
}): JSX.Element;
|
|
2041
|
+
|
|
2042
|
+
/** One end of a movement — a named treasury wallet or an on-chain address. */
|
|
2043
|
+
declare type WalletRef = {
|
|
2044
|
+
/** what's shown, e.g. "Low Risk Wallet" or a truncated address */
|
|
2045
|
+
label: string;
|
|
2046
|
+
/** full value copied to the clipboard */
|
|
2047
|
+
value: string;
|
|
2048
|
+
/** true → on-chain address (monospace); false → a named wallet */
|
|
2049
|
+
address?: boolean;
|
|
2050
|
+
};
|
|
56
2051
|
|
|
57
|
-
export {
|
|
2052
|
+
export declare function WalletRowActions({ variant,
|
|
2053
|
+
/** context for accessible labels, e.g. the wallet name */
|
|
2054
|
+
label, onAction, }: {
|
|
2055
|
+
variant?: "icons" | "menu";
|
|
2056
|
+
label?: string;
|
|
2057
|
+
onAction?: (id: WalletActionId) => void;
|
|
2058
|
+
}): JSX.Element;
|
|
58
2059
|
|
|
59
|
-
|
|
2060
|
+
/** Past withdrawals — the team audit trail. Mixed members, wallets and chains. */
|
|
2061
|
+
declare const WITHDRAWAL_HISTORY: WithdrawalRecord[];
|
|
60
2062
|
|
|
61
|
-
|
|
2063
|
+
/** One past withdrawal — the audit-trail row shown in the history table. */
|
|
2064
|
+
declare type WithdrawalRecord = {
|
|
2065
|
+
id: string;
|
|
2066
|
+
/** e.g. "Jul 14, 2026" */
|
|
2067
|
+
date: string;
|
|
2068
|
+
/** e.g. "02:27 PM" */
|
|
2069
|
+
time: string;
|
|
2070
|
+
/** team member who initiated it (multi-user account audit trail) */
|
|
2071
|
+
initiator: string;
|
|
2072
|
+
/** named source wallet, e.g. "High Risk Wallet" */
|
|
2073
|
+
fromWallet: string;
|
|
2074
|
+
fromAddress: string;
|
|
2075
|
+
/** named destination, e.g. "Binance Hot Wallet" */
|
|
2076
|
+
toLabel: string;
|
|
2077
|
+
toAddress: string;
|
|
2078
|
+
coin: string;
|
|
2079
|
+
network: string;
|
|
2080
|
+
/** signed crypto figure — an outflow, e.g. "-1,200.00" */
|
|
2081
|
+
amount: string;
|
|
2082
|
+
/** signed fiat sub-line, e.g. "-$1,200.00" */
|
|
2083
|
+
amountFiat: string;
|
|
2084
|
+
status: TxStatus;
|
|
2085
|
+
};
|
|
62
2086
|
|
|
63
|
-
export
|
|
2087
|
+
export declare namespace withdrawData {
|
|
2088
|
+
export {
|
|
2089
|
+
figureToNumber_3 as figureToNumber,
|
|
2090
|
+
formatUsd_3 as formatUsd,
|
|
2091
|
+
NETWORKS_2 as NETWORKS,
|
|
2092
|
+
COINS_3 as COINS,
|
|
2093
|
+
SOURCE_WALLETS,
|
|
2094
|
+
SAVED_ADDRESSES,
|
|
2095
|
+
WITHDRAWAL_HISTORY
|
|
2096
|
+
}
|
|
2097
|
+
}
|
|
64
2098
|
|
|
65
|
-
export {
|
|
2099
|
+
export declare function WithdrawHistoryTable({ data, className, }: {
|
|
2100
|
+
data: WithdrawalRecord[];
|
|
2101
|
+
className?: string;
|
|
2102
|
+
}): JSX.Element;
|
|
66
2103
|
|
|
67
|
-
export {
|
|
2104
|
+
export declare function WithdrawPanel({ currentUser, onSubmit, className, }: {
|
|
2105
|
+
/** team member shown as the initiator of a submitted withdrawal */
|
|
2106
|
+
currentUser?: string;
|
|
2107
|
+
/** called when a withdrawal is confirmed — e.g. to prepend it to history */
|
|
2108
|
+
onSubmit?: (record: WithdrawalRecord) => void;
|
|
2109
|
+
className?: string;
|
|
2110
|
+
}): JSX.Element;
|
|
68
2111
|
|
|
69
|
-
export {
|
|
2112
|
+
export declare function WithdrawPickerField({ id, label, value, options, onChange, placeholder, emptyMessage, disabled, className, }: {
|
|
2113
|
+
id?: string;
|
|
2114
|
+
label?: ReactNode;
|
|
2115
|
+
value: string | null;
|
|
2116
|
+
options: WithdrawPickerOption[];
|
|
2117
|
+
onChange: (value: string) => void;
|
|
2118
|
+
placeholder?: ReactNode;
|
|
2119
|
+
emptyMessage?: ReactNode;
|
|
2120
|
+
disabled?: boolean;
|
|
2121
|
+
className?: string;
|
|
2122
|
+
}): JSX.Element;
|
|
70
2123
|
|
|
71
|
-
export
|
|
2124
|
+
export declare type WithdrawPickerOption = {
|
|
2125
|
+
value: string;
|
|
2126
|
+
/** primary line — shown both in the list and in the closed trigger */
|
|
2127
|
+
label: ReactNode;
|
|
2128
|
+
/** muted secondary line */
|
|
2129
|
+
sublabel?: ReactNode;
|
|
2130
|
+
/** leading visual, e.g. <CoinLogo /> or <CurrencyNetwork /> */
|
|
2131
|
+
leading?: ReactNode;
|
|
2132
|
+
/** right-aligned trailing content, e.g. an available balance */
|
|
2133
|
+
meta?: ReactNode;
|
|
2134
|
+
disabled?: boolean;
|
|
2135
|
+
};
|
|
72
2136
|
|
|
73
|
-
export {
|
|
2137
|
+
export declare function WithdrawSummary({ coin, network, networkName, amount, amountFiat, from, to, footer, className, }: {
|
|
2138
|
+
coin: string | null;
|
|
2139
|
+
network: string | null;
|
|
2140
|
+
networkName?: string;
|
|
2141
|
+
/** crypto figure, e.g. "1,200.00" — empty/null shows a zeroed preview */
|
|
2142
|
+
amount?: string | null;
|
|
2143
|
+
/** fiat equivalent, e.g. "$1,200.00" */
|
|
2144
|
+
amountFiat?: string | null;
|
|
2145
|
+
from?: Endpoint | null;
|
|
2146
|
+
to?: Endpoint | null;
|
|
2147
|
+
/** actions rendered at the bottom of the card, e.g. the Withdraw button */
|
|
2148
|
+
footer?: ReactNode;
|
|
2149
|
+
className?: string;
|
|
2150
|
+
}): JSX.Element;
|
|
74
2151
|
|
|
75
|
-
export
|
|
2152
|
+
export declare namespace withdrawTypes {
|
|
2153
|
+
export {
|
|
2154
|
+
Network_2 as Network,
|
|
2155
|
+
Coin_3 as Coin,
|
|
2156
|
+
SourceWallet,
|
|
2157
|
+
SavedAddress,
|
|
2158
|
+
WithdrawalRecord
|
|
2159
|
+
}
|
|
2160
|
+
}
|
|
76
2161
|
|
|
77
2162
|
export { }
|