@rayvelez/findash-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,527 @@
1
+ import { ClassValue } from 'clsx';
2
+ import * as react_jsx_runtime from 'react/jsx-runtime';
3
+
4
+ /**
5
+ * Utility function to merge Tailwind CSS classes with clsx
6
+ * @param inputs - Class values to merge
7
+ * @returns Merged class string
8
+ */
9
+ declare function cn(...inputs: ClassValue[]): string;
10
+
11
+ /**
12
+ * FinDash UI - Type Definitions
13
+ */
14
+ /**
15
+ * User information for profile displays
16
+ */
17
+ interface UserInfo {
18
+ /** User's display name */
19
+ name: string;
20
+ /** User's role or subscription tier */
21
+ role: string;
22
+ /** URL to user's avatar image */
23
+ avatarUrl: string;
24
+ }
25
+ /**
26
+ * Navigation item for sidebar/mobile nav
27
+ */
28
+ interface NavItem {
29
+ /** Material icon name */
30
+ icon: string;
31
+ /** Display label */
32
+ label: string;
33
+ /** Whether this item is currently active */
34
+ active: boolean;
35
+ /** Optional URL for navigation */
36
+ href?: string;
37
+ }
38
+ /**
39
+ * Action item for floating nav bar and quick actions
40
+ */
41
+ interface ActionItem {
42
+ /** Material icon name */
43
+ icon: string;
44
+ /** Action label */
45
+ label: string;
46
+ /** Optional color class */
47
+ color?: string;
48
+ }
49
+ /**
50
+ * Portfolio allocation entry
51
+ */
52
+ interface PortfolioAllocation {
53
+ /** Asset name (e.g., "Bitcoin") */
54
+ asset: string;
55
+ /** Asset symbol (e.g., "BTC") */
56
+ symbol: string;
57
+ /** Percentage of portfolio (0-100) */
58
+ percentage: number;
59
+ /** Tailwind color class (e.g., "bg-primary") */
60
+ color: string;
61
+ }
62
+ /**
63
+ * Watchlist cryptocurrency item
64
+ */
65
+ interface WatchlistItem {
66
+ /** Cryptocurrency name */
67
+ name: string;
68
+ /** Cryptocurrency symbol */
69
+ symbol: string;
70
+ /** Current price as string */
71
+ price: string;
72
+ /** Price change (e.g., "+5.2%") */
73
+ change: string;
74
+ /** Whether the change is positive */
75
+ positive: boolean;
76
+ }
77
+ /**
78
+ * Market forecast timeline item
79
+ */
80
+ interface ForecastItem {
81
+ /** Year of the forecast */
82
+ year: string;
83
+ /** Forecast description */
84
+ description: string;
85
+ /** Whether this milestone has been completed */
86
+ completed: boolean;
87
+ }
88
+ /**
89
+ * Transaction user for avatar display
90
+ */
91
+ interface TransactionUser {
92
+ /** Alt text for avatar */
93
+ alt: string;
94
+ /** Avatar image URL */
95
+ avatarUrl: string;
96
+ }
97
+ /**
98
+ * Scheduled transfer information
99
+ */
100
+ interface ScheduledTransfer {
101
+ /** Amount and destination (e.g., "0.5 ETH → Wallet #2") */
102
+ description: string;
103
+ /** Time until transfer (e.g., "In 2 days") */
104
+ timeUntil: string;
105
+ }
106
+ /**
107
+ * Props for SalesStatisticsCard
108
+ */
109
+ interface SalesStatisticsCardProps {
110
+ /** Number of visitors */
111
+ visitors?: number;
112
+ /** Days since last update */
113
+ updatedDaysAgo?: number;
114
+ /** Callback when period changes */
115
+ onPeriodChange?: (period: string) => void;
116
+ /** Loading state */
117
+ isLoading?: boolean;
118
+ }
119
+ /**
120
+ * Props for CurrentBalanceCard
121
+ */
122
+ interface CurrentBalanceCardProps {
123
+ /** Current balance amount */
124
+ balance?: number;
125
+ /** Percentage change */
126
+ percentageChange?: number;
127
+ /** Average score/value */
128
+ averageScore?: number;
129
+ /** Currency symbol */
130
+ currency?: string;
131
+ /** Previous button callback */
132
+ onPrevious?: () => void;
133
+ /** Next button callback */
134
+ onNext?: () => void;
135
+ /** Loading state */
136
+ isLoading?: boolean;
137
+ }
138
+ /**
139
+ * Props for InvestmentGrowthCard
140
+ */
141
+ interface InvestmentGrowthCardProps {
142
+ /** Growth percentage */
143
+ percentage?: number;
144
+ /** Monthly average value */
145
+ monthlyAverage?: number;
146
+ /** Total value */
147
+ totalValue?: number;
148
+ /** Currency symbol */
149
+ currency?: string;
150
+ /** Previous button callback */
151
+ onPrevious?: () => void;
152
+ /** Next button callback */
153
+ onNext?: () => void;
154
+ /** Loading state */
155
+ isLoading?: boolean;
156
+ }
157
+ /**
158
+ * Props for BtcPriceCard
159
+ */
160
+ interface BtcPriceCardProps {
161
+ /** Bitcoin price */
162
+ price?: number;
163
+ /** Percentage change */
164
+ changePercentage?: number;
165
+ /** Currency symbol */
166
+ currency?: string;
167
+ /** Loading state */
168
+ isLoading?: boolean;
169
+ }
170
+ /**
171
+ * Props for MarketCapCard
172
+ */
173
+ interface MarketCapCardProps {
174
+ /** Market cap value as formatted string */
175
+ value?: string;
176
+ /** Loading state */
177
+ isLoading?: boolean;
178
+ }
179
+ /**
180
+ * Props for MarketForecastCard
181
+ */
182
+ interface MarketForecastCardProps {
183
+ /** Array of forecast items */
184
+ forecasts?: ForecastItem[];
185
+ /** Loading state */
186
+ isLoading?: boolean;
187
+ }
188
+ /**
189
+ * Props for PortfolioAllocationCard
190
+ */
191
+ interface PortfolioAllocationCardProps {
192
+ /** Array of portfolio allocations */
193
+ allocations?: PortfolioAllocation[];
194
+ /** Options button callback */
195
+ onOptionsClick?: () => void;
196
+ /** Loading state */
197
+ isLoading?: boolean;
198
+ }
199
+ /**
200
+ * Props for WatchlistCard
201
+ */
202
+ interface WatchlistCardProps {
203
+ /** Array of watchlist items */
204
+ items?: WatchlistItem[];
205
+ /** View all button callback */
206
+ onViewAll?: () => void;
207
+ /** Loading state */
208
+ isLoading?: boolean;
209
+ }
210
+ /**
211
+ * Props for RecentTransactionsCard
212
+ */
213
+ interface RecentTransactionsCardProps {
214
+ /** Transaction summary text */
215
+ summary?: string;
216
+ /** Array of user avatars to display */
217
+ users?: TransactionUser[];
218
+ /** Options button callback */
219
+ onOptionsClick?: () => void;
220
+ /** Loading state */
221
+ isLoading?: boolean;
222
+ }
223
+ /**
224
+ * Props for QuickActionsCard
225
+ */
226
+ interface QuickActionsCardProps {
227
+ /** Array of action items */
228
+ actions?: ActionItem[];
229
+ /** Scheduled transfer info */
230
+ scheduledTransfer?: ScheduledTransfer;
231
+ /** Action click callback */
232
+ onActionClick?: (action: ActionItem) => void;
233
+ /** Loading state */
234
+ isLoading?: boolean;
235
+ }
236
+ /**
237
+ * Props for FloatingNavBar
238
+ */
239
+ interface FloatingNavBarProps {
240
+ /** Array of action items */
241
+ actions?: ActionItem[];
242
+ /** Action click callback */
243
+ onActionClick?: (action: ActionItem) => void;
244
+ }
245
+ /**
246
+ * Props for Sidebar
247
+ */
248
+ interface SidebarProps {
249
+ /** Navigation items */
250
+ navItems?: NavItem[];
251
+ /** User information */
252
+ user?: UserInfo;
253
+ /** Theme toggle callback */
254
+ onToggleTheme: () => void;
255
+ /** Whether sidebar is collapsed */
256
+ isCollapsed: boolean;
257
+ /** Toggle collapse callback */
258
+ onToggleCollapse: () => void;
259
+ /** Navigation item click callback */
260
+ onNavItemClick?: (item: NavItem) => void;
261
+ }
262
+ /**
263
+ * Props for MobileNav
264
+ */
265
+ interface MobileNavProps {
266
+ /** Navigation items */
267
+ navItems?: NavItem[];
268
+ /** User information */
269
+ user?: UserInfo;
270
+ /** Theme toggle callback */
271
+ onToggleTheme: () => void;
272
+ /** Navigation item click callback */
273
+ onNavItemClick?: (item: NavItem) => void;
274
+ }
275
+ /**
276
+ * Complete dashboard data structure
277
+ */
278
+ interface DashboardData {
279
+ /** User information */
280
+ user?: UserInfo;
281
+ /** Balance data */
282
+ balance?: {
283
+ currentBalance: number;
284
+ percentageChange: number;
285
+ averageScore: number;
286
+ };
287
+ /** Investment growth data */
288
+ investmentGrowth?: {
289
+ percentage: number;
290
+ monthlyAverage: number;
291
+ totalValue: number;
292
+ };
293
+ /** BTC price data */
294
+ btcPrice?: {
295
+ price: number;
296
+ changePercentage: number;
297
+ };
298
+ /** Market cap data */
299
+ marketCap?: {
300
+ value: string;
301
+ };
302
+ /** Sales statistics data */
303
+ salesStatistics?: {
304
+ visitors: number;
305
+ updatedDaysAgo: number;
306
+ };
307
+ /** Portfolio allocations */
308
+ portfolio?: PortfolioAllocation[];
309
+ /** Watchlist items */
310
+ watchlist?: WatchlistItem[];
311
+ /** Market forecasts */
312
+ forecasts?: ForecastItem[];
313
+ /** Transaction data */
314
+ transactions?: {
315
+ summary: string;
316
+ users?: TransactionUser[];
317
+ };
318
+ /** Quick actions */
319
+ quickActions?: ActionItem[];
320
+ /** Scheduled transfer */
321
+ scheduledTransfer?: ScheduledTransfer;
322
+ }
323
+ /**
324
+ * Props for DashboardTemplate
325
+ */
326
+ interface DashboardTemplateProps {
327
+ /** Dashboard data */
328
+ data?: DashboardData;
329
+ /** Global loading state */
330
+ isLoading?: boolean;
331
+ /** Theme toggle callback */
332
+ onThemeToggle?: () => void;
333
+ /** Navigation item click callback */
334
+ onNavItemClick?: (item: NavItem) => void;
335
+ /** Floating action click callback */
336
+ onActionClick?: (action: ActionItem) => void;
337
+ /** Additional className for wrapper */
338
+ className?: string;
339
+ }
340
+
341
+ /**
342
+ * SalesStatisticsCard - Displays visitor statistics with decorative bar chart
343
+ *
344
+ * @example
345
+ * ```tsx
346
+ * <SalesStatisticsCard
347
+ * visitors={2025}
348
+ * updatedDaysAgo={1}
349
+ * onPeriodChange={(period) => console.log(period)}
350
+ * />
351
+ * ```
352
+ */
353
+ declare function SalesStatisticsCard({ visitors, updatedDaysAgo, onPeriodChange, isLoading, }: SalesStatisticsCardProps): react_jsx_runtime.JSX.Element;
354
+
355
+ /**
356
+ * CurrentBalanceCard - Displays current balance with gauge visualization
357
+ *
358
+ * @example
359
+ * ```tsx
360
+ * <CurrentBalanceCard
361
+ * balance={15368}
362
+ * percentageChange={14}
363
+ * averageScore={18324}
364
+ * onPrevious={() => {}}
365
+ * onNext={() => {}}
366
+ * />
367
+ * ```
368
+ */
369
+ declare function CurrentBalanceCard({ balance, percentageChange, averageScore, currency, onPrevious, onNext, isLoading, }: CurrentBalanceCardProps): react_jsx_runtime.JSX.Element;
370
+
371
+ /**
372
+ * InvestmentGrowthCard - Displays investment growth metrics with gauge visualization
373
+ *
374
+ * @example
375
+ * ```tsx
376
+ * <InvestmentGrowthCard
377
+ * percentage={8.2}
378
+ * monthlyAverage={12450}
379
+ * totalValue={24890}
380
+ * />
381
+ * ```
382
+ */
383
+ declare function InvestmentGrowthCard({ percentage, monthlyAverage, totalValue, currency, onPrevious, onNext, isLoading, }: InvestmentGrowthCardProps): react_jsx_runtime.JSX.Element;
384
+
385
+ /**
386
+ * BtcPriceCard - Displays Bitcoin price with progress indicator
387
+ *
388
+ * @example
389
+ * ```tsx
390
+ * <BtcPriceCard price={21105} changePercentage={28.21} />
391
+ * ```
392
+ */
393
+ declare function BtcPriceCard({ price, changePercentage, currency, isLoading, }: BtcPriceCardProps): react_jsx_runtime.JSX.Element;
394
+
395
+ /**
396
+ * MarketCapCard - Displays market cap forecast with line chart
397
+ *
398
+ * @example
399
+ * ```tsx
400
+ * <MarketCapCard value="1,3trln$" />
401
+ * ```
402
+ */
403
+ declare function MarketCapCard({ value, isLoading, }: MarketCapCardProps): react_jsx_runtime.JSX.Element;
404
+
405
+ /**
406
+ * MarketForecastCard - Displays market forecast timeline
407
+ *
408
+ * @example
409
+ * ```tsx
410
+ * <MarketForecastCard
411
+ * forecasts={[
412
+ * { year: "2024", description: "Market milestone", completed: false }
413
+ * ]}
414
+ * />
415
+ * ```
416
+ */
417
+ declare function MarketForecastCard({ forecasts, isLoading, }: MarketForecastCardProps): react_jsx_runtime.JSX.Element;
418
+
419
+ /**
420
+ * PortfolioAllocationCard - Displays portfolio breakdown with progress bar
421
+ *
422
+ * @example
423
+ * ```tsx
424
+ * <PortfolioAllocationCard
425
+ * allocations={[
426
+ * { asset: "Bitcoin", symbol: "BTC", percentage: 45, color: "bg-primary" }
427
+ * ]}
428
+ * onOptionsClick={() => {}}
429
+ * />
430
+ * ```
431
+ */
432
+ declare function PortfolioAllocationCard({ allocations, onOptionsClick, isLoading, }: PortfolioAllocationCardProps): react_jsx_runtime.JSX.Element;
433
+
434
+ /**
435
+ * WatchlistCard - Displays cryptocurrency watchlist
436
+ *
437
+ * @example
438
+ * ```tsx
439
+ * <WatchlistCard
440
+ * items={[
441
+ * { name: "Cardano", symbol: "ADA", price: "0.58", change: "+5.2%", positive: true }
442
+ * ]}
443
+ * onViewAll={() => {}}
444
+ * />
445
+ * ```
446
+ */
447
+ declare function WatchlistCard({ items, onViewAll, isLoading, }: WatchlistCardProps): react_jsx_runtime.JSX.Element;
448
+
449
+ /**
450
+ * RecentTransactionsCard - Displays recent transaction summary
451
+ *
452
+ * @example
453
+ * ```tsx
454
+ * <RecentTransactionsCard
455
+ * summary="12,53 ETH/1 BTC"
456
+ * users={[{ alt: "User", avatarUrl: "..." }]}
457
+ * />
458
+ * ```
459
+ */
460
+ declare function RecentTransactionsCard({ summary, users, onOptionsClick, isLoading, }: RecentTransactionsCardProps): react_jsx_runtime.JSX.Element;
461
+
462
+ /**
463
+ * QuickActionsCard - Quick action buttons with scheduled transfer
464
+ *
465
+ * @example
466
+ * ```tsx
467
+ * <QuickActionsCard
468
+ * actions={[{ icon: "add_circle", label: "Buy", color: "bg-primary" }]}
469
+ * scheduledTransfer={{ description: "0.5 ETH → Wallet", timeUntil: "In 2 days" }}
470
+ * onActionClick={(action) => console.log(action)}
471
+ * />
472
+ * ```
473
+ */
474
+ declare function QuickActionsCard({ actions, scheduledTransfer, onActionClick, isLoading, }: QuickActionsCardProps): react_jsx_runtime.JSX.Element;
475
+
476
+ /**
477
+ * FloatingNavBar - Floating action bar with liquid glass effect
478
+ *
479
+ * @example
480
+ * ```tsx
481
+ * <FloatingNavBar
482
+ * actions={[
483
+ * { icon: "add_circle", label: "Buy" },
484
+ * { icon: "remove_circle", label: "Sell" },
485
+ * ]}
486
+ * onActionClick={(action) => console.log(action)}
487
+ * />
488
+ * ```
489
+ */
490
+ declare function FloatingNavBar({ actions, onActionClick, }: FloatingNavBarProps): react_jsx_runtime.JSX.Element;
491
+
492
+ /**
493
+ * Sidebar - Desktop sidebar navigation
494
+ *
495
+ * @example
496
+ * ```tsx
497
+ * <Sidebar
498
+ * navItems={[{ icon: "dashboard", label: "Dashboard", active: true }]}
499
+ * user={{ name: "Alex", role: "Premium", avatarUrl: "..." }}
500
+ * onToggleTheme={() => {}}
501
+ * isCollapsed={false}
502
+ * onToggleCollapse={() => {}}
503
+ * />
504
+ * ```
505
+ */
506
+ declare function Sidebar({ navItems, user, onToggleTheme, isCollapsed, onToggleCollapse, onNavItemClick, }: SidebarProps): react_jsx_runtime.JSX.Element;
507
+
508
+ /**
509
+ * MobileNav - Mobile/tablet top navigation with slide-out menu
510
+ *
511
+ * @example
512
+ * ```tsx
513
+ * <MobileNav
514
+ * navItems={[{ icon: "dashboard", label: "Dashboard", active: true }]}
515
+ * user={{ name: "Alex", role: "Premium", avatarUrl: "..." }}
516
+ * onToggleTheme={() => {}}
517
+ * />
518
+ * ```
519
+ */
520
+ declare function MobileNav({ navItems, user, onToggleTheme, onNavItemClick, }: MobileNavProps): react_jsx_runtime.JSX.Element;
521
+
522
+ /**
523
+ * DashboardTemplate - Complete financial dashboard layout
524
+ */
525
+ declare function DashboardTemplate({ data, isLoading, onThemeToggle, onNavItemClick, onActionClick, className, }: DashboardTemplateProps): react_jsx_runtime.JSX.Element;
526
+
527
+ export { type ActionItem, BtcPriceCard, type BtcPriceCardProps, CurrentBalanceCard, type CurrentBalanceCardProps, type DashboardData, DashboardTemplate, type DashboardTemplateProps, FloatingNavBar, type FloatingNavBarProps, type ForecastItem, InvestmentGrowthCard, type InvestmentGrowthCardProps, MarketCapCard, type MarketCapCardProps, MarketForecastCard, type MarketForecastCardProps, MobileNav, type MobileNavProps, type NavItem, type PortfolioAllocation, PortfolioAllocationCard, type PortfolioAllocationCardProps, QuickActionsCard, type QuickActionsCardProps, RecentTransactionsCard, type RecentTransactionsCardProps, SalesStatisticsCard, type SalesStatisticsCardProps, type ScheduledTransfer, Sidebar, type SidebarProps, type TransactionUser, type UserInfo, WatchlistCard, type WatchlistCardProps, type WatchlistItem, cn };