@rayvelez/findash-ui 1.1.0 → 2.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.
- package/README.md +77 -174
- package/dist/index.d.mts +12 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.js +89 -37
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +90 -39
- package/dist/index.mjs.map +1 -1
- package/dist/theme.css +2 -188
- package/package.json +5 -3
- package/tailwind.preset.js +20 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils.ts","../src/components/SalesStatisticsCard.tsx","../src/components/CurrentBalanceCard.tsx","../src/components/InvestmentGrowthCard.tsx","../src/components/BtcPriceCard.tsx","../src/components/MarketCapCard.tsx","../src/components/MarketForecastCard.tsx","../src/components/PortfolioAllocationCard.tsx","../src/components/WatchlistCard.tsx","../src/components/RecentTransactionsCard.tsx","../src/components/QuickActionsCard.tsx","../src/components/FloatingNavBar.tsx","../src/components/Sidebar.tsx","../src/components/MobileNav.tsx","../src/components/DashboardTemplate.tsx"],"names":["twMerge","clsx","jsxs","jsx","defaultActions","Fragment","defaultNavItems","defaultUser","useState"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function to merge Tailwind CSS classes with clsx\n * @param inputs - Class values to merge\n * @returns Merged class string\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { SalesStatisticsCardProps } from \"../types\";\n\n/**\n * SalesStatisticsCard - Displays visitor statistics with decorative bar chart\n *\n * @example\n * ```tsx\n * <SalesStatisticsCard\n * visitors={2025}\n * updatedDaysAgo={1}\n * onPeriodChange={(period) => console.log(period)}\n * />\n * ```\n */\nexport function SalesStatisticsCard({\n visitors = 2025,\n updatedDaysAgo = 1,\n onPeriodChange,\n isLoading = false,\n}: SalesStatisticsCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-accent-dark dark:bg-black text-accent-dark-foreground p-6 rounded-3xl shadow-lg relative overflow-hidden flex-1 min-h-[300px] animate-pulse\">\n <div className=\"h-6 bg-white/10 rounded w-32 mb-2\" />\n <div className=\"h-4 bg-white/10 rounded w-24\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-accent-dark dark:bg-black text-accent-dark-foreground p-6 rounded-3xl shadow-lg relative overflow-hidden flex-1 min-h-[300px]\">\n <div className=\"flex justify-between items-start z-10 relative\">\n <div>\n <h2 className=\"text-xl font-medium\">Sales statistics</h2>\n <p className=\"text-muted-foreground text-xs mt-1\">\n Updated {updatedDaysAgo} {updatedDaysAgo === 1 ? \"day\" : \"days\"} ago\n </p>\n </div>\n <button\n onClick={() => onPeriodChange?.(\"monthly\")}\n className=\"flex items-center gap-2 bg-white/5 hover:bg-white/10 px-3 py-1.5 rounded-full text-xs transition-colors border border-white/10\"\n >\n Monthly\n <span className=\"material-icons-round text-sm\">expand_more</span>\n </button>\n </div>\n\n <div className=\"mt-8 z-10 relative\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span className=\"text-muted-foreground text-sm\">Visitors</span>\n <div className=\"w-5 h-5 rounded-full bg-primary flex items-center justify-center\">\n <span className=\"material-icons-round text-primary-foreground text-xs transform rotate-45\">\n arrow_upward\n </span>\n </div>\n </div>\n <p className=\"text-5xl font-medium tracking-tight\">\n {visitors.toLocaleString()}\n </p>\n </div>\n\n {/* Decorative bar chart */}\n <div className=\"absolute bottom-6 right-6 flex items-end gap-3 h-32 w-1/2 justify-end\">\n <div className=\"w-20 relative group\">\n <div className=\"absolute -top-6 text-center w-full text-xs text-muted-foreground mb-2\">\n September\n </div>\n <div className=\"h-16 w-full border border-muted-foreground/30 rounded-t-xl pattern-lines-light opacity-30 absolute -top-16 left-0\" />\n <div className=\"h-24 w-full bg-primary rounded-xl overflow-hidden relative shadow-lg transform transition-transform group-hover:scale-105\">\n <div className=\"absolute bottom-0 left-0 right-0 h-10 bg-secondary rounded-b-xl\" />\n </div>\n </div>\n <div className=\"w-24 relative group\">\n <div className=\"absolute -top-6 text-center w-full text-xs text-muted-foreground mb-2\">\n November\n </div>\n <div className=\"h-12 w-full border border-muted-foreground/30 rounded-t-xl pattern-lines-light opacity-30 absolute -top-12 left-0\" />\n <div className=\"h-32 w-full bg-primary rounded-xl overflow-hidden relative shadow-lg transform transition-transform group-hover:scale-105\">\n <div className=\"absolute bottom-0 left-0 right-0 h-8 bg-secondary rounded-b-xl\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { CurrentBalanceCardProps } from \"../types\";\n\n/**\n * CurrentBalanceCard - Displays current balance with gauge visualization\n *\n * @example\n * ```tsx\n * <CurrentBalanceCard\n * balance={15368}\n * percentageChange={14}\n * averageScore={18324}\n * onPrevious={() => {}}\n * onNext={() => {}}\n * />\n * ```\n */\nexport function CurrentBalanceCard({\n balance = 15368,\n percentageChange = 14,\n averageScore = 18324,\n currency = \"$\",\n onPrevious,\n onNext,\n isLoading = false,\n}: CurrentBalanceCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex-1 animate-pulse\">\n <div className=\"h-6 bg-muted rounded w-32 mb-4\" />\n <div className=\"bg-muted rounded-3xl h-36\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex-1\">\n <div className=\"flex justify-between items-center mb-4\">\n <h2 className=\"text-lg font-medium\">Current balance</h2>\n <div className=\"flex gap-2\">\n <button\n onClick={onPrevious}\n className=\"w-8 h-8 rounded-full border border-border flex items-center justify-center hover:bg-muted transition-colors\"\n >\n <span className=\"material-icons-round text-sm\">arrow_back</span>\n </button>\n <button\n onClick={onNext}\n className=\"w-8 h-8 rounded-full border border-border flex items-center justify-center hover:bg-muted transition-colors\"\n >\n <span className=\"material-icons-round text-sm\">arrow_forward</span>\n </button>\n </div>\n </div>\n\n <div className=\"bg-primary rounded-3xl p-5 relative overflow-hidden h-36 flex flex-col justify-between\">\n <div className=\"w-10 h-10 bg-card rounded-xl flex items-center justify-center shadow-sm\">\n <span className=\"material-icons-round text-foreground\">show_chart</span>\n </div>\n\n {/* Gauge visualization */}\n <div className=\"absolute right-4 bottom-4 w-40 h-40\">\n <svg className=\"w-full h-full overflow-visible\" viewBox=\"0 0 100 50\">\n <path\n d=\"M 10 50 A 40 40 0 0 1 90 50\"\n fill=\"none\"\n stroke=\"rgba(0,0,0,0.1)\"\n strokeLinecap=\"round\"\n strokeWidth=\"12\"\n />\n <path\n className=\"opacity-20\"\n d=\"M 60 16 A 40 40 0 0 1 90 50\"\n fill=\"none\"\n stroke=\"#000\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M 10 50 A 40 40 0 0 1 60 16\"\n fill=\"none\"\n stroke=\"hsl(var(--foreground))\"\n strokeLinecap=\"round\"\n strokeWidth=\"12\"\n />\n <circle\n cx=\"45\"\n cy=\"35\"\n fill=\"hsl(var(--secondary))\"\n r=\"3\"\n stroke=\"hsl(var(--foreground))\"\n strokeWidth=\"1\"\n />\n </svg>\n <div className=\"absolute top-[8px] right-[2px] w-12 h-20 rounded-tr-full pattern-lines opacity-40 rotate-12 origin-bottom-left pointer-events-none\" />\n </div>\n\n <div className=\"flex justify-between items-end relative z-10\">\n <div>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-2xl font-bold text-primary-foreground\">\n {percentageChange}%\n </span>\n <div className=\"w-4 h-4 rounded-full bg-card flex items-center justify-center\">\n <span className=\"material-icons-round text-[10px] text-foreground\">\n north_east\n </span>\n </div>\n </div>\n <p className=\"text-xs text-primary-foreground/70 font-medium\">\n Avg score: {averageScore.toLocaleString()}\n {currency}\n </p>\n </div>\n <div className=\"text-right mr-4 mb-2\">\n <span className=\"text-2xl font-bold text-primary-foreground\">\n {balance.toLocaleString()}\n {currency}\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { InvestmentGrowthCardProps } from \"../types\";\n\n/**\n * InvestmentGrowthCard - Displays investment growth metrics with gauge visualization\n *\n * @example\n * ```tsx\n * <InvestmentGrowthCard\n * percentage={8.2}\n * monthlyAverage={12450}\n * totalValue={24890}\n * />\n * ```\n */\nexport function InvestmentGrowthCard({\n percentage = 8.2,\n monthlyAverage = 12450,\n totalValue = 24890,\n currency = \"$\",\n onPrevious,\n onNext,\n isLoading = false,\n}: InvestmentGrowthCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex-1 animate-pulse\">\n <div className=\"h-6 bg-muted rounded w-40 mb-4\" />\n <div className=\"bg-muted rounded-3xl h-36\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex-1\">\n <div className=\"flex justify-between items-center mb-4\">\n <h2 className=\"text-lg font-medium\">Investment growth</h2>\n <div className=\"flex gap-2\">\n <button\n onClick={onPrevious}\n className=\"w-8 h-8 rounded-full border border-border flex items-center justify-center hover:bg-muted transition-colors\"\n >\n <span className=\"material-icons-round text-sm\">arrow_back</span>\n </button>\n <button\n onClick={onNext}\n className=\"w-8 h-8 rounded-full border border-border flex items-center justify-center hover:bg-muted transition-colors\"\n >\n <span className=\"material-icons-round text-sm\">arrow_forward</span>\n </button>\n </div>\n </div>\n\n <div className=\"bg-[hsl(25,100%,65%)] rounded-3xl p-5 relative overflow-hidden h-36 flex flex-col justify-between\">\n <div className=\"w-10 h-10 bg-card rounded-xl flex items-center justify-center shadow-sm\">\n <span className=\"material-icons-round text-foreground\">trending_up</span>\n </div>\n\n {/* Gauge visualization */}\n <div className=\"absolute right-4 bottom-4 w-40 h-40\">\n <svg className=\"w-full h-full overflow-visible\" viewBox=\"0 0 100 50\">\n <path\n d=\"M 10 50 A 40 40 0 0 1 90 50\"\n fill=\"none\"\n stroke=\"rgba(0,0,0,0.1)\"\n strokeLinecap=\"round\"\n strokeWidth=\"12\"\n />\n <path\n className=\"opacity-20\"\n d=\"M 60 16 A 40 40 0 0 1 90 50\"\n fill=\"none\"\n stroke=\"#000\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M 10 50 A 40 40 0 0 1 60 16\"\n fill=\"none\"\n stroke=\"hsl(var(--foreground))\"\n strokeLinecap=\"round\"\n strokeWidth=\"12\"\n />\n <circle\n cx=\"45\"\n cy=\"35\"\n fill=\"hsl(25,100%,75%)\"\n r=\"3\"\n stroke=\"hsl(var(--foreground))\"\n strokeWidth=\"1\"\n />\n </svg>\n <div className=\"absolute top-[8px] right-[2px] w-12 h-20 rounded-tr-full pattern-lines opacity-40 rotate-12 origin-bottom-left pointer-events-none\" />\n </div>\n\n <div className=\"flex justify-between items-end relative z-10\">\n <div>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-2xl font-bold text-primary-foreground\">\n {percentage}%\n </span>\n <div className=\"w-4 h-4 rounded-full bg-card flex items-center justify-center\">\n <span className=\"material-icons-round text-[10px] text-foreground\">\n north_east\n </span>\n </div>\n </div>\n <p className=\"text-xs text-primary-foreground/70 font-medium\">\n Monthly avg: {monthlyAverage.toLocaleString()}\n {currency}\n </p>\n </div>\n <div className=\"text-right mr-4 mb-2\">\n <span className=\"text-2xl font-bold text-primary-foreground\">\n {totalValue.toLocaleString()}\n {currency}\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { BtcPriceCardProps } from \"../types\";\n\n/**\n * BtcPriceCard - Displays Bitcoin price with progress indicator\n *\n * @example\n * ```tsx\n * <BtcPriceCard price={21105} changePercentage={28.21} />\n * ```\n */\nexport function BtcPriceCard({\n price = 21105,\n changePercentage = 28.21,\n currency = \"$\",\n isLoading = false,\n}: BtcPriceCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-primary p-6 rounded-3xl relative h-48 flex flex-col justify-between shadow-lg animate-pulse\">\n <div className=\"h-4 bg-primary-foreground/20 rounded w-16\" />\n <div className=\"h-8 bg-primary-foreground/20 rounded w-24 mt-2\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-primary p-6 rounded-3xl relative h-48 flex flex-col justify-between shadow-lg transition-transform hover:-translate-y-1 duration-300\">\n <div className=\"flex justify-between items-start\">\n <div>\n <p className=\"text-primary-foreground/70 text-xs font-medium\">BTC price</p>\n <h3 className=\"text-3xl font-bold text-primary-foreground mt-1\">\n {price.toLocaleString()}\n {currency}\n </h3>\n </div>\n <span className=\"material-icons-round text-primary-foreground/70 text-sm\">\n north_east\n </span>\n </div>\n\n <div className=\"relative\">\n <span className=\"text-xs font-bold text-primary-foreground mb-1 block\">\n +{changePercentage.toFixed(2)}%\n </span>\n <div className=\"h-8 w-full border border-primary-foreground/50 rounded-full flex overflow-hidden relative\">\n <div className=\"w-2/3 h-full pattern-lines border-r border-primary-foreground/50 opacity-60\" />\n <div className=\"absolute top-1/2 -translate-y-1/2 left-[66%] w-3 h-3 bg-secondary border border-primary-foreground rounded-full z-10 shadow-sm\" />\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { MarketCapCardProps } from \"../types\";\n\n/**\n * MarketCapCard - Displays market cap forecast with line chart\n *\n * @example\n * ```tsx\n * <MarketCapCard value=\"1,3trln$\" />\n * ```\n */\nexport function MarketCapCard({\n value = \"1,3trln$\",\n isLoading = false,\n}: MarketCapCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-secondary p-6 rounded-3xl relative h-48 flex flex-col justify-between shadow-lg animate-pulse\">\n <div className=\"h-4 bg-secondary-foreground/20 rounded w-32\" />\n <div className=\"h-8 bg-secondary-foreground/20 rounded w-24 mt-2\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-secondary p-6 rounded-3xl relative h-48 flex flex-col justify-between shadow-lg transition-transform hover:-translate-y-1 duration-300\">\n <div className=\"flex justify-between items-start\">\n <div>\n <p className=\"text-secondary-foreground/70 text-xs font-medium\">\n Market cap forecast\n </p>\n <h3 className=\"text-3xl font-bold text-secondary-foreground mt-1\">{value}</h3>\n </div>\n <span className=\"material-icons-round text-secondary-foreground/70 text-sm\">\n north_east\n </span>\n </div>\n\n <div className=\"relative h-16 w-full flex items-end\">\n <svg\n className=\"w-full h-full overflow-visible\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 100 40\"\n >\n <path\n d=\"M0 40 L0 35 Q 20 35 40 25 T 60 15 T 100 5 L 100 40 Z\"\n fill=\"rgba(255,255,255,0.2)\"\n />\n <path\n d=\"M0 35 Q 20 35 40 25 T 60 15 T 100 5\"\n fill=\"none\"\n stroke=\"hsl(243 40% 55%)\"\n strokeWidth=\"1.5\"\n />\n <circle\n cx=\"60\"\n cy=\"15\"\n fill=\"hsl(var(--primary))\"\n r=\"3\"\n stroke=\"hsl(243 40% 55%)\"\n strokeWidth=\"1.5\"\n />\n </svg>\n <div className=\"absolute inset-0 top-[20px] left-[10px] w-full h-full flex justify-between px-2 opacity-10 pointer-events-none\">\n {[...Array(8)].map((_, i) => (\n <div key={i} className=\"w-px h-full bg-secondary-foreground\" />\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { MarketForecastCardProps, ForecastItem } from \"../types\";\n\nconst defaultForecasts: ForecastItem[] = [\n { year: \"2023\", description: \"Explosive growth of DeFi\", completed: false },\n { year: \"2024\", description: \"Mainstream adoption of CBDCs\", completed: false },\n { year: \"2025\", description: \"1 BTC reaches $500K\", completed: false },\n { year: \"2027\", description: \"Widespread retail use\", completed: true },\n];\n\n/**\n * MarketForecastCard - Displays market forecast timeline\n *\n * @example\n * ```tsx\n * <MarketForecastCard\n * forecasts={[\n * { year: \"2024\", description: \"Market milestone\", completed: false }\n * ]}\n * />\n * ```\n */\nexport function MarketForecastCard({\n forecasts = defaultForecasts,\n isLoading = false,\n}: MarketForecastCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex flex-col animate-pulse\">\n <div className=\"flex items-center gap-4 mb-8\">\n <div className=\"w-10 h-10 rounded-full bg-muted\" />\n <div className=\"h-6 bg-muted rounded w-32\" />\n </div>\n <div className=\"space-y-6\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"flex gap-6\">\n <div className=\"w-4 h-4 rounded-full bg-muted\" />\n <div className=\"flex-1 space-y-2\">\n <div className=\"h-4 bg-muted rounded w-12\" />\n <div className=\"h-3 bg-muted rounded w-full\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex flex-col\">\n <div className=\"flex items-center gap-4 mb-8\">\n <div className=\"w-10 h-10 rounded-full bg-primary flex items-center justify-center shadow-sm\">\n <span className=\"material-icons-outlined text-primary-foreground text-lg\">\n timeline\n </span>\n </div>\n <h2 className=\"text-xl font-bold w-24 leading-tight\">Market forecast</h2>\n </div>\n\n <div className=\"relative pl-2\">\n <div className=\"absolute left-[7px] top-2 bottom-4 w-0.5 bg-border\" />\n <div className=\"space-y-6 relative\">\n {forecasts.map((item) => (\n <div key={item.year} className=\"flex gap-6 relative group cursor-pointer\">\n <div\n className={cn(\n \"w-4 h-4 rounded-full z-10 mt-1 transition-colors\",\n item.completed\n ? \"bg-foreground shadow-md\"\n : \"border-2 border-muted-foreground bg-card group-hover:border-primary group-hover:bg-primary\"\n )}\n />\n <div>\n <h4 className=\"font-bold text-sm\">{item.year}</h4>\n <p className=\"text-xs text-muted-foreground mt-1 leading-relaxed\">\n {item.description}\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { PortfolioAllocationCardProps, PortfolioAllocation } from \"../types\";\n\nconst defaultAllocations: PortfolioAllocation[] = [\n { asset: \"Bitcoin\", symbol: \"BTC\", percentage: 45, color: \"bg-primary\" },\n { asset: \"Ethereum\", symbol: \"ETH\", percentage: 30, color: \"bg-secondary\" },\n { asset: \"Solana\", symbol: \"SOL\", percentage: 15, color: \"bg-foreground\" },\n { asset: \"Others\", symbol: \"---\", percentage: 10, color: \"bg-muted\" },\n];\n\n/**\n * PortfolioAllocationCard - Displays portfolio breakdown with progress bar\n *\n * @example\n * ```tsx\n * <PortfolioAllocationCard\n * allocations={[\n * { asset: \"Bitcoin\", symbol: \"BTC\", percentage: 45, color: \"bg-primary\" }\n * ]}\n * onOptionsClick={() => {}}\n * />\n * ```\n */\nexport function PortfolioAllocationCard({\n allocations = defaultAllocations,\n onOptionsClick,\n isLoading = false,\n}: PortfolioAllocationCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft animate-pulse\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-full bg-muted\" />\n <div className=\"h-6 bg-muted rounded w-20\" />\n </div>\n </div>\n <div className=\"h-3 bg-muted rounded-full mb-6\" />\n <div className=\"space-y-3\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"h-4 bg-muted rounded\" />\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-full bg-secondary flex items-center justify-center\">\n <span className=\"material-icons-outlined text-secondary-foreground text-lg\">\n pie_chart\n </span>\n </div>\n <h2 className=\"text-lg font-bold\">Portfolio</h2>\n </div>\n <button\n onClick={onOptionsClick}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n >\n <span className=\"material-icons-round text-xl\">more_horiz</span>\n </button>\n </div>\n\n {/* Progress bar */}\n <div className=\"h-3 w-full rounded-full flex overflow-hidden mb-6\">\n {allocations.map((item) => (\n <div\n key={item.symbol}\n className={`${item.color} h-full`}\n style={{ width: `${item.percentage}%` }}\n />\n ))}\n </div>\n\n {/* Legend */}\n <div className=\"space-y-3\">\n {allocations.map((item) => (\n <div key={item.symbol} className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className={`w-3 h-3 rounded-full ${item.color}`} />\n <span className=\"text-sm font-medium\">{item.asset}</span>\n <span className=\"text-xs text-muted-foreground\">{item.symbol}</span>\n </div>\n <span className=\"text-sm font-semibold\">{item.percentage}%</span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { WatchlistCardProps, WatchlistItem } from \"../types\";\n\nconst defaultItems: WatchlistItem[] = [\n { name: \"Cardano\", symbol: \"ADA\", price: \"0.58\", change: \"+5.2%\", positive: true },\n { name: \"Polkadot\", symbol: \"DOT\", price: \"7.23\", change: \"-2.1%\", positive: false },\n { name: \"Avalanche\", symbol: \"AVAX\", price: \"35.80\", change: \"+12.4%\", positive: true },\n];\n\n/**\n * WatchlistCard - Displays cryptocurrency watchlist\n *\n * @example\n * ```tsx\n * <WatchlistCard\n * items={[\n * { name: \"Cardano\", symbol: \"ADA\", price: \"0.58\", change: \"+5.2%\", positive: true }\n * ]}\n * onViewAll={() => {}}\n * />\n * ```\n */\nexport function WatchlistCard({\n items = defaultItems,\n onViewAll,\n isLoading = false,\n}: WatchlistCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft animate-pulse\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-full bg-muted\" />\n <div className=\"h-6 bg-muted rounded w-24\" />\n </div>\n </div>\n <div className=\"space-y-4\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"h-14 bg-muted rounded-2xl\" />\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-full bg-primary flex items-center justify-center\">\n <span className=\"material-icons-outlined text-primary-foreground text-lg\">\n visibility\n </span>\n </div>\n <h2 className=\"text-lg font-bold\">Watchlist</h2>\n </div>\n <button\n onClick={onViewAll}\n className=\"text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1\"\n >\n View all\n <span className=\"material-icons-round text-sm\">chevron_right</span>\n </button>\n </div>\n\n <div className=\"space-y-4\">\n {items.map((item) => (\n <div\n key={item.symbol}\n className=\"flex items-center justify-between p-3 bg-muted/50 rounded-2xl hover:bg-muted transition-colors cursor-pointer\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"w-9 h-9 rounded-full bg-foreground/10 flex items-center justify-center\">\n <span className=\"text-xs font-bold\">{item.symbol.slice(0, 2)}</span>\n </div>\n <div>\n <p className=\"text-sm font-semibold\">{item.name}</p>\n <p className=\"text-xs text-muted-foreground\">{item.symbol}</p>\n </div>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm font-semibold\">${item.price}</p>\n <p\n className={`text-xs font-medium ${\n item.positive\n ? \"text-primary-foreground bg-primary\"\n : \"text-destructive-foreground bg-destructive\"\n } px-1.5 py-0.5 rounded-full inline-block`}\n >\n {item.change}\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { RecentTransactionsCardProps, TransactionUser } from \"../types\";\n\nconst defaultUsers: TransactionUser[] = [\n {\n alt: \"User 1\",\n avatarUrl:\n \"https://lh3.googleusercontent.com/aida-public/AB6AXuApu0rGff7tq3lGfdm47JIyS5ULIPTuAydDnsjl11A1SRLyiOGRyn1P7khEGNH0erCwP2UwyxZoeoHqrQClYEBEwItYsZk8gnHQSnu9JpXnsa__Z5Yz5Ok5PEX-qXxG_ONKWzeKdX6ALutpdIZE_VF6TiW9xKToY7KYz40rYE0xteAHzx6wSqg1iwFBNEUUlBJahjf-RzeUlEQNKDPttu4ngQK1T5XuN7Vw-VnF05ByVwaaFFbdH-M_cNmJBd4_sGrbR3ep6exhg-o\",\n },\n {\n alt: \"User 2\",\n avatarUrl:\n \"https://lh3.googleusercontent.com/aida-public/AB6AXuDLX09bvZI-Ho3yvNXrbVUxbOjupQc8G5HZrhkDqUUVjPq3wJ7-I6u9kwER506K-_EY5tIXPrpFo2Ep896M8cdLTb8PmEGExVwVNArKqj6nUxefS-iAT1MSTaFgWpGTUfHXGjMhZxFrapq9Jnr9Vy8hi0d2ay9Or4yLXtuBX5SNkNtSIRj24Dzdc11Y8YlJv00uNOhvrtt07arU3FIcfX48U72tlGaA37F8AWH7mNmLSlwSi1R6iGnQnjv3NDf-r7PqBdHz3LaS3Jc\",\n },\n];\n\n/**\n * RecentTransactionsCard - Displays recent transaction summary\n *\n * @example\n * ```tsx\n * <RecentTransactionsCard\n * summary=\"12,53 ETH/1 BTC\"\n * users={[{ alt: \"User\", avatarUrl: \"...\" }]}\n * />\n * ```\n */\nexport function RecentTransactionsCard({\n summary = \"12,53 ETH/1 BTC\",\n users = defaultUsers,\n onOptionsClick,\n isLoading = false,\n}: RecentTransactionsCardProps) {\n if (isLoading) {\n return (\n <div className=\"xl:col-span-2 bg-card p-6 rounded-3xl shadow-soft h-fit animate-pulse\">\n <div className=\"flex justify-between items-start mb-6\">\n <div className=\"flex items-center gap-4\">\n <div className=\"w-12 h-12 rounded-full bg-muted\" />\n <div className=\"space-y-2\">\n <div className=\"h-5 bg-muted rounded w-40\" />\n <div className=\"h-4 bg-muted rounded w-24\" />\n </div>\n </div>\n </div>\n <div className=\"h-14 bg-muted rounded-2xl\" />\n </div>\n );\n }\n\n return (\n <div className=\"xl:col-span-2 bg-card p-6 rounded-3xl shadow-soft h-fit\">\n <div className=\"flex justify-between items-start mb-6\">\n <div className=\"flex items-center gap-4\">\n <div className=\"w-12 h-12 rounded-full bg-foreground text-background flex items-center justify-center\">\n <span className=\"material-icons-outlined\">bubble_chart</span>\n </div>\n <div>\n <h2 className=\"text-lg font-bold\">Recent Transactions</h2>\n <p className=\"text-muted-foreground text-sm\">Sell currency</p>\n </div>\n </div>\n <div className=\"flex -space-x-2\">\n {users.map((user, index) => (\n <img\n key={index}\n alt={user.alt}\n className=\"w-10 h-10 rounded-full border-2 border-card\"\n src={user.avatarUrl}\n />\n ))}\n </div>\n </div>\n <div className=\"bg-muted p-4 rounded-2xl flex justify-between items-center\">\n <div className=\"flex items-center gap-3\">\n <span className=\"material-icons-outlined text-muted-foreground\">\n account_balance_wallet\n </span>\n <span className=\"font-medium text-sm\">{summary}</span>\n </div>\n <button\n onClick={onOptionsClick}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n <span className=\"material-icons-round\">more_vert</span>\n </button>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { QuickActionsCardProps, ActionItem, ScheduledTransfer } from \"../types\";\n\nconst defaultActions: ActionItem[] = [\n { icon: \"add_circle\", label: \"Buy\", color: \"bg-primary text-primary-foreground\" },\n { icon: \"remove_circle\", label: \"Sell\", color: \"bg-secondary text-secondary-foreground\" },\n { icon: \"swap_horiz\", label: \"Swap\", color: \"bg-foreground text-background\" },\n { icon: \"send\", label: \"Send\", color: \"bg-muted text-foreground\" },\n];\n\nconst defaultScheduledTransfer: ScheduledTransfer = {\n description: \"0.5 ETH → Wallet #2\",\n timeUntil: \"In 2 days\",\n};\n\n/**\n * QuickActionsCard - Quick action buttons with scheduled transfer\n *\n * @example\n * ```tsx\n * <QuickActionsCard\n * actions={[{ icon: \"add_circle\", label: \"Buy\", color: \"bg-primary\" }]}\n * scheduledTransfer={{ description: \"0.5 ETH → Wallet\", timeUntil: \"In 2 days\" }}\n * onActionClick={(action) => console.log(action)}\n * />\n * ```\n */\nexport function QuickActionsCard({\n actions = defaultActions,\n scheduledTransfer = defaultScheduledTransfer,\n onActionClick,\n isLoading = false,\n}: QuickActionsCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-accent-dark dark:bg-black text-accent-dark-foreground p-6 rounded-3xl shadow-soft animate-pulse\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"h-6 bg-white/10 rounded w-32\" />\n <div className=\"w-8 h-8 rounded-full bg-white/10\" />\n </div>\n <div className=\"grid grid-cols-4 gap-3 mb-6\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"flex flex-col items-center gap-2\">\n <div className=\"w-12 h-12 rounded-2xl bg-white/10\" />\n <div className=\"h-3 bg-white/10 rounded w-8\" />\n </div>\n ))}\n </div>\n <div className=\"h-16 bg-white/5 rounded-2xl\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-accent-dark dark:bg-black text-accent-dark-foreground p-6 rounded-3xl shadow-soft\">\n <div className=\"flex justify-between items-center mb-6\">\n <h2 className=\"text-lg font-bold\">Quick Actions</h2>\n <div className=\"w-8 h-8 rounded-full bg-white/10 flex items-center justify-center\">\n <span className=\"material-icons-round text-sm\">bolt</span>\n </div>\n </div>\n\n <div className=\"grid grid-cols-4 gap-3\">\n {actions.map((action) => (\n <button\n key={action.label}\n onClick={() => onActionClick?.(action)}\n className=\"flex flex-col items-center gap-2 group\"\n >\n <div\n className={`w-12 h-12 rounded-2xl ${action.color} flex items-center justify-center transition-transform group-hover:scale-110 shadow-lg`}\n >\n <span className=\"material-icons-round\">{action.icon}</span>\n </div>\n <span className=\"text-xs font-medium text-muted-foreground group-hover:text-accent-dark-foreground transition-colors\">\n {action.label}\n </span>\n </button>\n ))}\n </div>\n\n {scheduledTransfer && (\n <div className=\"mt-6 p-4 bg-white/5 rounded-2xl border border-white/10\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <span className=\"material-icons-outlined text-primary\">schedule</span>\n <div>\n <p className=\"text-sm font-medium\">Scheduled transfer</p>\n <p className=\"text-xs text-muted-foreground\">\n {scheduledTransfer.description}\n </p>\n </div>\n </div>\n <span className=\"text-xs text-muted-foreground\">\n {scheduledTransfer.timeUntil}\n </span>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { FloatingNavBarProps, ActionItem } from \"../types\";\n\nconst defaultActions: ActionItem[] = [\n { icon: \"add_circle\", label: \"Buy\" },\n { icon: \"remove_circle\", label: \"Sell\" },\n { icon: \"swap_horiz\", label: \"Swap\" },\n { icon: \"send\", label: \"Send\" },\n { icon: \"account_balance_wallet\", label: \"Wallet\" },\n { icon: \"bar_chart\", label: \"Analytics\" },\n];\n\n/**\n * FloatingNavBar - Floating action bar with liquid glass effect\n *\n * @example\n * ```tsx\n * <FloatingNavBar\n * actions={[\n * { icon: \"add_circle\", label: \"Buy\" },\n * { icon: \"remove_circle\", label: \"Sell\" },\n * ]}\n * onActionClick={(action) => console.log(action)}\n * />\n * ```\n */\nexport function FloatingNavBar({\n actions = defaultActions,\n onActionClick,\n}: FloatingNavBarProps) {\n return (\n <>\n {/* SVG Filter for liquid glass distortion */}\n <svg className=\"hidden\">\n <defs>\n <filter id=\"glass-distortion\">\n <feTurbulence\n type=\"fractalNoise\"\n baseFrequency=\"0.01\"\n numOctaves=\"3\"\n result=\"noise\"\n />\n <feDisplacementMap\n in=\"SourceGraphic\"\n in2=\"noise\"\n scale=\"6\"\n xChannelSelector=\"R\"\n yChannelSelector=\"G\"\n />\n </filter>\n </defs>\n </svg>\n\n <div className=\"fixed bottom-6 left-1/2 -translate-x-1/2 z-50\">\n <div className=\"liquidGlass-wrapper rounded-3xl p-1\">\n <div className=\"liquidGlass-effect rounded-3xl\" />\n <div className=\"liquidGlass-tint rounded-3xl\" />\n <div className=\"liquidGlass-shine rounded-3xl\" />\n\n <div className=\"liquidGlass-content flex items-center gap-2 sm:gap-3 px-3 sm:px-5 py-3 sm:py-4\">\n {actions.map((action, index) => (\n <button\n key={action.label}\n onClick={() => onActionClick?.(action)}\n className={cn(\n \"w-12 h-12 sm:w-14 sm:h-14 rounded-2xl bg-background/40 hover:bg-primary hover:text-primary-foreground items-center justify-center transition-all duration-300 hover:scale-110 group backdrop-blur-sm\",\n index < 4 ? \"flex\" : \"hidden sm:flex\"\n )}\n title={action.label}\n >\n <span className=\"material-icons-round text-2xl sm:text-3xl group-hover:text-primary-foreground transition-colors\">\n {action.icon}\n </span>\n </button>\n ))}\n </div>\n </div>\n </div>\n </>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { SidebarProps, NavItem, UserInfo } from \"../types\";\n\nconst defaultNavItems: NavItem[] = [\n { icon: \"dashboard\", label: \"Dashboard\", active: true },\n { icon: \"account_balance_wallet\", label: \"Wallet\", active: false },\n { icon: \"analytics\", label: \"Analytics\", active: false },\n { icon: \"swap_horiz\", label: \"Transactions\", active: false },\n];\n\nconst defaultUser: UserInfo = {\n name: \"Alex Morgan\",\n role: \"Premium User\",\n avatarUrl:\n \"https://lh3.googleusercontent.com/aida-public/AB6AXuAOo_5Kr126T6MHRuT6vvn0AOhE9osWQx3QcuqMljDeMkNf_ZbpM3o6GJnJRnZ78mRrjXpZkmn2bZXZrEp37pv7z35DJzPgruHStOKVsKzyird-Athm2EOkwXhcivP6D_kuA9Z-o2OGONNpa5Us1pXcuKJNWbzqImuWkfYkTdFzv1BUayGF_VyekDIcygoEPjacRcsarKHujq1Yfc57ux_DdoufrlRxVnNfiDWra2_OVlievLaWr_kC-4NriyAzRUctHgucD15RZy0\",\n};\n\n/**\n * Sidebar - Desktop sidebar navigation\n *\n * @example\n * ```tsx\n * <Sidebar\n * navItems={[{ icon: \"dashboard\", label: \"Dashboard\", active: true }]}\n * user={{ name: \"Alex\", role: \"Premium\", avatarUrl: \"...\" }}\n * onToggleTheme={() => {}}\n * isCollapsed={false}\n * onToggleCollapse={() => {}}\n * />\n * ```\n */\nexport function Sidebar({\n navItems = defaultNavItems,\n user = defaultUser,\n onToggleTheme,\n isCollapsed,\n onToggleCollapse,\n onNavItemClick,\n}: SidebarProps) {\n return (\n <aside\n className={cn(\n \"h-screen fixed left-0 top-0 border-r border-border flex-col justify-between py-8 px-4 z-50 transition-all duration-300 bg-card hidden lg:flex\",\n isCollapsed ? \"w-20\" : \"w-20 lg:w-64\"\n )}\n >\n <div>\n {/* Logo */}\n <div className=\"flex items-center justify-center lg:justify-start lg:px-4 mb-12\">\n <div className=\"w-10 h-10 bg-primary rounded-xl flex items-center justify-center text-primary-foreground font-bold text-xl\">\n <span className=\"material-icons-round\">grid_view</span>\n </div>\n <span\n className={cn(\n \"ml-3 font-bold text-xl tracking-tight transition-opacity duration-200\",\n isCollapsed ? \"hidden\" : \"hidden lg:block\"\n )}\n >\n FinDash\n </span>\n </div>\n\n {/* Navigation */}\n <nav className=\"space-y-2\">\n {navItems.map((item) => (\n <a\n key={item.label}\n href={item.href || \"#\"}\n onClick={(e) => {\n e.preventDefault();\n onNavItemClick?.(item);\n }}\n className={cn(\n \"flex items-center justify-center lg:justify-start lg:px-4 py-3 rounded-xl transition-colors\",\n item.active\n ? \"bg-muted text-foreground\"\n : \"text-muted-foreground hover:text-foreground hover:bg-muted/50\",\n isCollapsed && \"lg:justify-center lg:px-0\"\n )}\n >\n <span className=\"material-icons-round text-2xl\">{item.icon}</span>\n <span\n className={cn(\n \"ml-4 font-medium transition-opacity duration-200\",\n isCollapsed ? \"hidden\" : \"hidden lg:block\"\n )}\n >\n {item.label}\n </span>\n </a>\n ))}\n </nav>\n </div>\n\n <div>\n {/* User Profile */}\n <div className=\"flex items-center justify-center lg:justify-start lg:px-4 py-3 mb-4\">\n <img\n alt=\"User Profile\"\n className=\"w-10 h-10 rounded-full border-2 border-card\"\n src={user.avatarUrl}\n />\n <div className={cn(\"ml-3\", isCollapsed ? \"hidden\" : \"hidden lg:block\")}>\n <p className=\"text-sm font-semibold\">{user.name}</p>\n <p className=\"text-xs text-muted-foreground\">{user.role}</p>\n </div>\n </div>\n\n {/* Theme Toggle */}\n <button\n onClick={onToggleTheme}\n className={cn(\n \"w-full flex items-center justify-center lg:justify-start lg:px-4 py-3 text-muted-foreground hover:text-foreground hover:bg-muted/50 rounded-xl transition-colors\",\n isCollapsed && \"lg:justify-center lg:px-0\"\n )}\n >\n <span className=\"material-icons-round text-2xl\">dark_mode</span>\n <span\n className={cn(\n \"ml-4 font-medium transition-opacity duration-200\",\n isCollapsed ? \"hidden\" : \"hidden lg:block\"\n )}\n >\n Toggle Theme\n </span>\n </button>\n\n {/* Collapse Toggle - Desktop only */}\n <button\n onClick={onToggleCollapse}\n className={cn(\n \"hidden lg:flex w-full items-center justify-center lg:justify-start lg:px-4 py-3 text-muted-foreground hover:text-foreground hover:bg-muted/50 rounded-xl transition-colors mt-2\",\n isCollapsed && \"lg:justify-center lg:px-0\"\n )}\n >\n <span\n className={cn(\n \"material-icons-round text-2xl transition-transform duration-300\",\n isCollapsed ? \"rotate-180\" : \"\"\n )}\n >\n chevron_left\n </span>\n <span\n className={cn(\n \"ml-4 font-medium transition-opacity duration-200\",\n isCollapsed ? \"hidden\" : \"block\"\n )}\n >\n Collapse\n </span>\n </button>\n </div>\n </aside>\n );\n}\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { cn } from \"../utils\";\nimport type { MobileNavProps, NavItem, UserInfo } from \"../types\";\n\nconst defaultNavItems: NavItem[] = [\n { icon: \"dashboard\", label: \"Dashboard\", active: true },\n { icon: \"account_balance_wallet\", label: \"Wallet\", active: false },\n { icon: \"analytics\", label: \"Analytics\", active: false },\n { icon: \"swap_horiz\", label: \"Transactions\", active: false },\n];\n\nconst defaultUser: UserInfo = {\n name: \"Alex Morgan\",\n role: \"Premium User\",\n avatarUrl:\n \"https://lh3.googleusercontent.com/aida-public/AB6AXuAOo_5Kr126T6MHRuT6vvn0AOhE9osWQx3QcuqMljDeMkNf_ZbpM3o6GJnJRnZ78mRrjXpZkmn2bZXZrEp37pv7z35DJzPgruHStOKVsKzyird-Athm2EOkwXhcivP6D_kuA9Z-o2OGONNpa5Us1pXcuKJNWbzqImuWkfYkTdFzv1BUayGF_VyekDIcygoEPjacRcsarKHujq1Yfc57ux_DdoufrlRxVnNfiDWra2_OVlievLaWr_kC-4NriyAzRUctHgucD15RZy0\",\n};\n\n/**\n * MobileNav - Mobile/tablet top navigation with slide-out menu\n *\n * @example\n * ```tsx\n * <MobileNav\n * navItems={[{ icon: \"dashboard\", label: \"Dashboard\", active: true }]}\n * user={{ name: \"Alex\", role: \"Premium\", avatarUrl: \"...\" }}\n * onToggleTheme={() => {}}\n * />\n * ```\n */\nexport function MobileNav({\n navItems = defaultNavItems,\n user = defaultUser,\n onToggleTheme,\n onNavItemClick,\n}: MobileNavProps) {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n return (\n <>\n {/* Top Navigation Bar */}\n <header className=\"lg:hidden fixed top-0 left-0 right-0 h-16 bg-card border-b border-border flex items-center justify-between px-4 z-50\">\n {/* Logo */}\n <div className=\"flex items-center\">\n <div className=\"w-10 h-10 bg-primary rounded-xl flex items-center justify-center text-primary-foreground font-bold text-xl\">\n <span className=\"material-icons-round\">grid_view</span>\n </div>\n <span className=\"ml-3 font-bold text-xl tracking-tight\">FinDash</span>\n </div>\n\n {/* Right side actions */}\n <div className=\"flex items-center gap-2\">\n {/* Theme Toggle */}\n <button\n onClick={onToggleTheme}\n className=\"w-10 h-10 flex items-center justify-center rounded-xl hover:bg-muted transition-colors\"\n >\n <span className=\"material-icons-round text-2xl\">dark_mode</span>\n </button>\n\n {/* Hamburger Button */}\n <button\n onClick={() => setIsMenuOpen(true)}\n className=\"w-10 h-10 flex items-center justify-center rounded-xl hover:bg-muted transition-colors\"\n >\n <span className=\"material-icons-round text-2xl\">menu</span>\n </button>\n </div>\n </header>\n\n {/* Backdrop */}\n <div\n className={cn(\n \"lg:hidden fixed inset-0 bg-black/50 z-[99] transition-opacity duration-300\",\n isMenuOpen ? \"opacity-100 pointer-events-auto\" : \"opacity-0 pointer-events-none\"\n )}\n onClick={() => setIsMenuOpen(false)}\n />\n\n {/* Half Page Menu Overlay */}\n <div\n className={cn(\n \"lg:hidden fixed top-0 right-0 h-full w-1/2 min-w-[280px] max-w-[400px] bg-background z-[100] transition-transform duration-300 flex flex-col shadow-2xl\",\n isMenuOpen ? \"translate-x-0\" : \"translate-x-full\"\n )}\n >\n {/* Menu Header */}\n <div className=\"h-16 flex items-center justify-between px-4 border-b border-border\">\n <div className=\"flex items-center\">\n <div className=\"w-10 h-10 bg-primary rounded-xl flex items-center justify-center text-primary-foreground font-bold text-xl\">\n <span className=\"material-icons-round\">grid_view</span>\n </div>\n <span className=\"ml-3 font-bold text-xl tracking-tight\">FinDash</span>\n </div>\n\n {/* Close Button */}\n <button\n onClick={() => setIsMenuOpen(false)}\n className=\"w-10 h-10 flex items-center justify-center rounded-xl hover:bg-muted transition-colors\"\n >\n <span className=\"material-icons-round text-2xl\">close</span>\n </button>\n </div>\n\n {/* Navigation Links */}\n <nav className=\"flex-1 flex flex-col items-center justify-center gap-4 p-6\">\n {navItems.map((item) => (\n <a\n key={item.label}\n href={item.href || \"#\"}\n onClick={(e) => {\n e.preventDefault();\n onNavItemClick?.(item);\n setIsMenuOpen(false);\n }}\n className={cn(\n \"w-full max-w-sm flex items-center gap-4 px-6 py-4 rounded-2xl transition-colors text-lg\",\n item.active\n ? \"bg-muted text-foreground\"\n : \"text-muted-foreground hover:text-foreground hover:bg-muted/50\"\n )}\n >\n <span className=\"material-icons-round text-3xl\">{item.icon}</span>\n <span className=\"font-medium\">{item.label}</span>\n </a>\n ))}\n </nav>\n\n {/* Bottom Section */}\n <div className=\"p-4 border-t border-border\">\n {/* User Profile */}\n <div className=\"flex items-center gap-3\">\n <img\n alt=\"User Profile\"\n className=\"w-10 h-10 rounded-full border-2 border-card\"\n src={user.avatarUrl}\n />\n <div>\n <p className=\"text-sm font-semibold\">{user.name}</p>\n <p className=\"text-xs text-muted-foreground\">{user.role}</p>\n </div>\n </div>\n </div>\n </div>\n </>\n );\n}\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { cn } from \"../utils\";\nimport type { DashboardTemplateProps } from \"../types\";\nimport { Sidebar } from \"./Sidebar\";\nimport { MobileNav } from \"./MobileNav\";\nimport { SalesStatisticsCard } from \"./SalesStatisticsCard\";\nimport { CurrentBalanceCard } from \"./CurrentBalanceCard\";\nimport { InvestmentGrowthCard } from \"./InvestmentGrowthCard\";\nimport { RecentTransactionsCard } from \"./RecentTransactionsCard\";\nimport { MarketForecastCard } from \"./MarketForecastCard\";\nimport { BtcPriceCard } from \"./BtcPriceCard\";\nimport { MarketCapCard } from \"./MarketCapCard\";\nimport { PortfolioAllocationCard } from \"./PortfolioAllocationCard\";\nimport { WatchlistCard } from \"./WatchlistCard\";\nimport { FloatingNavBar } from \"./FloatingNavBar\";\n\n/**\n * DashboardTemplate - Complete financial dashboard layout\n */\nexport function DashboardTemplate({\n data = {},\n isLoading = false,\n onThemeToggle,\n onNavItemClick,\n onActionClick,\n className,\n}: DashboardTemplateProps) {\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false);\n\n return (\n <div className={cn(\"min-h-screen flex pb-24\", className)}>\n <MobileNav onToggleTheme={onThemeToggle || (() => {})} onNavItemClick={onNavItemClick} user={data.user} />\n <Sidebar\n onToggleTheme={onThemeToggle || (() => {})}\n isCollapsed={isSidebarCollapsed}\n onToggleCollapse={() => setIsSidebarCollapsed(!isSidebarCollapsed)}\n onNavItemClick={onNavItemClick}\n user={data.user}\n />\n <main className={cn(\"flex-1 p-6 lg:p-10 max-w-[1600px] mx-auto transition-all duration-300 pt-20 lg:pt-6\", isSidebarCollapsed ? \"lg:ml-20\" : \"ml-0 lg:ml-64\")}>\n <div className=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6\">\n <div className=\"space-y-6 flex flex-col\">\n <SalesStatisticsCard visitors={data.salesStatistics?.visitors} updatedDaysAgo={data.salesStatistics?.updatedDaysAgo} isLoading={isLoading} />\n <CurrentBalanceCard balance={data.balance?.currentBalance} percentageChange={data.balance?.percentageChange} averageScore={data.balance?.averageScore} isLoading={isLoading} />\n <InvestmentGrowthCard percentage={data.investmentGrowth?.percentage} monthlyAverage={data.investmentGrowth?.monthlyAverage} totalValue={data.investmentGrowth?.totalValue} isLoading={isLoading} />\n </div>\n <div className=\"md:col-span-1 xl:col-span-2 grid grid-cols-1 xl:grid-cols-2 gap-6\">\n <RecentTransactionsCard summary={data.transactions?.summary} users={data.transactions?.users} isLoading={isLoading} />\n <div className=\"space-y-6 flex flex-col\">\n <MarketForecastCard forecasts={data.forecasts} isLoading={isLoading} />\n <PortfolioAllocationCard allocations={data.portfolio} isLoading={isLoading} />\n </div>\n <div className=\"space-y-6 flex flex-col\">\n <BtcPriceCard price={data.btcPrice?.price} changePercentage={data.btcPrice?.changePercentage} isLoading={isLoading} />\n <MarketCapCard value={data.marketCap?.value} isLoading={isLoading} />\n <WatchlistCard items={data.watchlist} isLoading={isLoading} />\n </div>\n </div>\n </div>\n </main>\n <FloatingNavBar onActionClick={onActionClick} />\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils.ts","../src/components/Icon.tsx","../src/components/SalesStatisticsCard.tsx","../src/components/CurrentBalanceCard.tsx","../src/components/InvestmentGrowthCard.tsx","../src/components/BtcPriceCard.tsx","../src/components/MarketCapCard.tsx","../src/components/MarketForecastCard.tsx","../src/components/PortfolioAllocationCard.tsx","../src/components/WatchlistCard.tsx","../src/components/RecentTransactionsCard.tsx","../src/components/QuickActionsCard.tsx","../src/components/FloatingNavBar.tsx","../src/components/Sidebar.tsx","../src/components/MobileNav.tsx","../src/components/DashboardTemplate.tsx"],"names":["twMerge","clsx","jsx","jsxs","Fragment","defaultActions","defaultNavItems","defaultUser","useState"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function to merge Tailwind CSS classes with clsx\n * @param inputs - Class values to merge\n * @returns Merged class string\n */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\n\nexport type IconName =\n | \"add_circle\"\n | \"remove_circle\"\n | \"swap_horiz\"\n | \"send\"\n | \"account_balance_wallet\"\n | \"bar_chart\"\n | \"arrow_back\"\n | \"arrow_forward\"\n | \"show_chart\"\n | \"trending_up\"\n | \"dark_mode\"\n | \"menu\"\n | \"grid_view\"\n | \"close\"\n | \"more_horiz\"\n | \"more_vert\"\n | \"bolt\"\n | \"schedule\"\n | \"bubble_chart\"\n | \"expand_more\"\n | \"dashboard\"\n | \"analytics\"\n | \"chevron_right\"\n | \"arrow_outward\"\n | \"north_east\"\n | \"arrow_upward\"\n | \"timeline\"\n | \"pie_chart\"\n | \"visibility\"\n | \"chevron_left\";\n\ninterface IconProps {\n name: IconName;\n className?: string;\n size?: number;\n}\n\nconst icons: Record<IconName, React.ReactNode> = {\n add_circle: (\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11h-4v4h-2v-4H7v-2h4V7h2v4h4v2z\" />\n ),\n remove_circle: (\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm5 11H7v-2h10v2z\" />\n ),\n swap_horiz: (\n <path d=\"M6.99 11L3 15l3.99 4v-3H14v-2H6.99v-3zM21 9l-3.99-4v3H10v2h7.01v3L21 9z\" />\n ),\n send: (\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\n ),\n account_balance_wallet: (\n <path d=\"M21 18v1c0 1.1-.9 2-2 2H5c-1.11 0-2-.9-2-2V5c0-1.1.89-2 2-2h14c1.1 0 2 .9 2 2v1h-9c-1.11 0-2 .9-2 2v8c0 1.1.89 2 2 2h9zm-9-2h10V8H12v8zm4-2.5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\" />\n ),\n bar_chart: (\n <path d=\"M4 9h4v11H4V9zm6-5h4v16h-4V4zm6 8h4v8h-4v-8z\" />\n ),\n arrow_back: (\n <path d=\"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" />\n ),\n arrow_forward: (\n <path d=\"M12 4l-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z\" />\n ),\n show_chart: (\n <path d=\"M3.5 18.49l6-6.01 4 4L22 6.92l-1.41-1.41-7.09 7.97-4-4L2 16.99z\" />\n ),\n trending_up: (\n <path d=\"M16 6l2.29 2.29-4.88 4.88-4-4L2 16.59 3.41 18l6-6 4 4 6.3-6.29L22 12V6z\" />\n ),\n dark_mode: (\n <path d=\"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1z\" />\n ),\n menu: (\n <path d=\"M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z\" />\n ),\n grid_view: (\n <path d=\"M3 3v8h8V3H3zm6 6H5V5h4v4zm-6 4v8h8v-8H3zm6 6H5v-4h4v4zm4-16v8h8V3h-8zm6 6h-4V5h4v4zm-6 4v8h8v-8h-8zm6 6h-4v-4h4v4z\" />\n ),\n close: (\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\n ),\n more_horiz: (\n <path d=\"M6 10c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-6 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n ),\n more_vert: (\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n ),\n bolt: (\n <path d=\"M11 21h-1l1-7H7.5c-.58 0-.57-.32-.38-.66.19-.34.05-.08.07-.12C8.48 10.94 10.42 7.54 13 3h1l-1 7h3.5c.49 0 .56.33.47.51l-.07.15C12.96 17.55 11 21 11 21z\" />\n ),\n schedule: (\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\" />\n ),\n bubble_chart: (\n <>\n <circle cx=\"7.2\" cy=\"14.4\" r=\"3.2\" />\n <circle cx=\"14.8\" cy=\"18\" r=\"2\" />\n <circle cx=\"15.2\" cy=\"8.8\" r=\"4.8\" />\n </>\n ),\n expand_more: (\n <path d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\" />\n ),\n dashboard: (\n <path d=\"M3 13h8V3H3v10zm0 8h8v-6H3v6zm10 0h8V11h-8v10zm0-18v6h8V3h-8z\" />\n ),\n analytics: (\n <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\" />\n ),\n chevron_right: (\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\" />\n ),\n arrow_outward: (\n <path d=\"M6 6v2h8.59L5 17.59 6.41 19 16 9.41V18h2V6z\" />\n ),\n north_east: (\n <path d=\"M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5z\" />\n ),\n arrow_upward: (\n <path d=\"M4 12l1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\" />\n ),\n timeline: (\n <path d=\"M23 8c0 1.1-.9 2-2 2-.18 0-.35-.02-.51-.07l-3.56 3.55c.05.16.07.34.07.52 0 1.1-.9 2-2 2s-2-.9-2-2c0-.18.02-.36.07-.52l-2.55-2.55c-.16.05-.34.07-.52.07s-.36-.02-.52-.07l-4.55 4.56c.05.16.07.33.07.51 0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2c.18 0 .35.02.51.07l4.56-4.55C8.02 9.36 8 9.18 8 9c0-1.1.9-2 2-2s2 .9 2 2c0 .18-.02.36-.07.52l2.55 2.55c.16-.05.34-.07.52-.07s.36.02.52.07l3.55-3.56C19.02 8.35 19 8.18 19 8c0-1.1.9-2 2-2s2 .9 2 2z\" />\n ),\n pie_chart: (\n <path d=\"M11 2v20c-5.07-.5-9-4.79-9-10s3.93-9.5 9-10zm2.03 0v8.99H22c-.47-4.74-4.24-8.52-8.97-8.99zm0 11.01V22c4.74-.47 8.5-4.25 8.97-8.99h-8.97z\" />\n ),\n visibility: (\n <path d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\" />\n ),\n chevron_left: (\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\" />\n ),\n};\n\n/**\n * Icon component - Inline SVG icons (no external dependencies)\n */\nexport function Icon({ name, className, size = 24 }: IconProps) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={cn(\"inline-block shrink-0\", className)}\n >\n {icons[name]}\n </svg>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { SalesStatisticsCardProps } from \"../types\";\nimport { Icon } from \"./Icon\";\n\n/**\n * SalesStatisticsCard - Displays visitor statistics with decorative bar chart\n *\n * @example\n * ```tsx\n * <SalesStatisticsCard\n * visitors={2025}\n * updatedDaysAgo={1}\n * onPeriodChange={(period) => console.log(period)}\n * />\n * ```\n */\nexport function SalesStatisticsCard({\n visitors = 2025,\n updatedDaysAgo = 1,\n onPeriodChange,\n isLoading = false,\n}: SalesStatisticsCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-accent-dark dark:bg-black text-accent-dark-foreground p-6 rounded-3xl shadow-lg relative overflow-hidden flex-1 min-h-[300px] animate-pulse\">\n <div className=\"h-6 bg-white/10 rounded w-32 mb-2\" />\n <div className=\"h-4 bg-white/10 rounded w-24\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-accent-dark dark:bg-black text-accent-dark-foreground p-6 rounded-3xl shadow-lg relative overflow-hidden flex-1 min-h-[300px]\">\n <div className=\"flex justify-between items-start z-10 relative\">\n <div>\n <h2 className=\"text-xl font-medium\">Sales statistics</h2>\n <p className=\"text-muted-foreground text-xs mt-1\">\n Updated {updatedDaysAgo} {updatedDaysAgo === 1 ? \"day\" : \"days\"} ago\n </p>\n </div>\n <button\n onClick={() => onPeriodChange?.(\"monthly\")}\n className=\"flex items-center gap-2 bg-white/5 hover:bg-white/10 px-3 py-1.5 rounded-full text-xs transition-colors border border-white/10\"\n >\n Monthly\n <Icon name=\"expand_more\" size={14} />\n </button>\n </div>\n\n <div className=\"mt-8 z-10 relative\">\n <div className=\"flex items-center gap-2 mb-1\">\n <span className=\"text-muted-foreground text-sm\">Visitors</span>\n <div className=\"w-5 h-5 rounded-full bg-primary flex items-center justify-center\">\n <Icon name=\"arrow_upward\" size={12} className=\"text-primary-foreground rotate-45\" />\n </div>\n </div>\n <p className=\"text-5xl font-medium tracking-tight\">\n {visitors.toLocaleString()}\n </p>\n </div>\n\n {/* Decorative bar chart */}\n <div className=\"absolute bottom-6 right-6 flex items-end gap-3 h-32 w-1/2 justify-end\">\n <div className=\"w-20 relative group\">\n <div className=\"absolute -top-6 text-center w-full text-xs text-muted-foreground mb-2\">\n September\n </div>\n <div className=\"h-16 w-full border border-muted-foreground/30 rounded-t-xl pattern-lines-light opacity-30 absolute -top-16 left-0\" />\n <div className=\"h-24 w-full bg-primary rounded-xl overflow-hidden relative shadow-lg transform transition-transform group-hover:scale-105\">\n <div className=\"absolute bottom-0 left-0 right-0 h-10 bg-secondary rounded-b-xl\" />\n </div>\n </div>\n <div className=\"w-24 relative group\">\n <div className=\"absolute -top-6 text-center w-full text-xs text-muted-foreground mb-2\">\n November\n </div>\n <div className=\"h-12 w-full border border-muted-foreground/30 rounded-t-xl pattern-lines-light opacity-30 absolute -top-12 left-0\" />\n <div className=\"h-32 w-full bg-primary rounded-xl overflow-hidden relative shadow-lg transform transition-transform group-hover:scale-105\">\n <div className=\"absolute bottom-0 left-0 right-0 h-8 bg-secondary rounded-b-xl\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { CurrentBalanceCardProps } from \"../types\";\nimport { Icon } from \"./Icon\";\n\n/**\n * CurrentBalanceCard - Displays current balance with gauge visualization\n *\n * @example\n * ```tsx\n * <CurrentBalanceCard\n * balance={15368}\n * percentageChange={14}\n * averageScore={18324}\n * onPrevious={() => {}}\n * onNext={() => {}}\n * />\n * ```\n */\nexport function CurrentBalanceCard({\n balance = 15368,\n percentageChange = 14,\n averageScore = 18324,\n currency = \"$\",\n onPrevious,\n onNext,\n isLoading = false,\n}: CurrentBalanceCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex-1 animate-pulse\">\n <div className=\"h-6 bg-muted rounded w-32 mb-4\" />\n <div className=\"bg-muted rounded-3xl h-36\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex-1\">\n <div className=\"flex justify-between items-center mb-4\">\n <h2 className=\"text-lg font-medium\">Current balance</h2>\n <div className=\"flex gap-2\">\n <button\n onClick={onPrevious}\n className=\"w-8 h-8 rounded-full border border-border flex items-center justify-center hover:bg-muted transition-colors\"\n >\n <Icon name=\"arrow_back\" size={14} />\n </button>\n <button\n onClick={onNext}\n className=\"w-8 h-8 rounded-full border border-border flex items-center justify-center hover:bg-muted transition-colors\"\n >\n <Icon name=\"arrow_forward\" size={14} />\n </button>\n </div>\n </div>\n\n <div className=\"bg-primary rounded-3xl p-5 relative overflow-hidden h-36 flex flex-col justify-between\">\n <div className=\"w-10 h-10 bg-card rounded-xl flex items-center justify-center shadow-sm\">\n <Icon name=\"show_chart\" size={24} className=\"text-foreground\" />\n </div>\n\n {/* Gauge visualization */}\n <div className=\"absolute right-4 bottom-4 w-40 h-40\">\n <svg className=\"w-full h-full overflow-visible\" viewBox=\"0 0 100 50\">\n <path\n d=\"M 10 50 A 40 40 0 0 1 90 50\"\n fill=\"none\"\n stroke=\"rgba(0,0,0,0.1)\"\n strokeLinecap=\"round\"\n strokeWidth=\"12\"\n />\n <path\n className=\"opacity-20\"\n d=\"M 60 16 A 40 40 0 0 1 90 50\"\n fill=\"none\"\n stroke=\"#000\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M 10 50 A 40 40 0 0 1 60 16\"\n fill=\"none\"\n stroke=\"hsl(var(--foreground))\"\n strokeLinecap=\"round\"\n strokeWidth=\"12\"\n />\n <circle\n cx=\"45\"\n cy=\"35\"\n fill=\"hsl(var(--secondary))\"\n r=\"3\"\n stroke=\"hsl(var(--foreground))\"\n strokeWidth=\"1\"\n />\n </svg>\n <div className=\"absolute top-[8px] right-[2px] w-12 h-20 rounded-tr-full pattern-lines opacity-40 rotate-12 origin-bottom-left pointer-events-none\" />\n </div>\n\n <div className=\"flex justify-between items-end relative z-10\">\n <div>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-2xl font-bold text-primary-foreground\">\n {percentageChange}%\n </span>\n <div className=\"w-4 h-4 rounded-full bg-card flex items-center justify-center\">\n <Icon name=\"north_east\" size={10} className=\"text-foreground\" />\n </div>\n </div>\n <p className=\"text-xs text-primary-foreground/70 font-medium\">\n Avg score: {averageScore.toLocaleString()}\n {currency}\n </p>\n </div>\n <div className=\"text-right mr-4 mb-2\">\n <span className=\"text-2xl font-bold text-primary-foreground\">\n {balance.toLocaleString()}\n {currency}\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { InvestmentGrowthCardProps } from \"../types\";\nimport { Icon } from \"./Icon\";\n\n/**\n * InvestmentGrowthCard - Displays investment growth metrics with gauge visualization\n *\n * @example\n * ```tsx\n * <InvestmentGrowthCard\n * percentage={8.2}\n * monthlyAverage={12450}\n * totalValue={24890}\n * />\n * ```\n */\nexport function InvestmentGrowthCard({\n percentage = 8.2,\n monthlyAverage = 12450,\n totalValue = 24890,\n currency = \"$\",\n onPrevious,\n onNext,\n isLoading = false,\n}: InvestmentGrowthCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex-1 animate-pulse\">\n <div className=\"h-6 bg-muted rounded w-40 mb-4\" />\n <div className=\"bg-muted rounded-3xl h-36\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex-1\">\n <div className=\"flex justify-between items-center mb-4\">\n <h2 className=\"text-lg font-medium\">Investment growth</h2>\n <div className=\"flex gap-2\">\n <button\n onClick={onPrevious}\n className=\"w-8 h-8 rounded-full border border-border flex items-center justify-center hover:bg-muted transition-colors\"\n >\n <Icon name=\"arrow_back\" size={14} />\n </button>\n <button\n onClick={onNext}\n className=\"w-8 h-8 rounded-full border border-border flex items-center justify-center hover:bg-muted transition-colors\"\n >\n <Icon name=\"arrow_forward\" size={14} />\n </button>\n </div>\n </div>\n\n <div className=\"bg-[hsl(25,100%,65%)] rounded-3xl p-5 relative overflow-hidden h-36 flex flex-col justify-between\">\n <div className=\"w-10 h-10 bg-card rounded-xl flex items-center justify-center shadow-sm\">\n <Icon name=\"trending_up\" size={24} className=\"text-foreground\" />\n </div>\n\n {/* Gauge visualization */}\n <div className=\"absolute right-4 bottom-4 w-40 h-40\">\n <svg className=\"w-full h-full overflow-visible\" viewBox=\"0 0 100 50\">\n <path\n d=\"M 10 50 A 40 40 0 0 1 90 50\"\n fill=\"none\"\n stroke=\"rgba(0,0,0,0.1)\"\n strokeLinecap=\"round\"\n strokeWidth=\"12\"\n />\n <path\n className=\"opacity-20\"\n d=\"M 60 16 A 40 40 0 0 1 90 50\"\n fill=\"none\"\n stroke=\"#000\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M 10 50 A 40 40 0 0 1 60 16\"\n fill=\"none\"\n stroke=\"hsl(var(--foreground))\"\n strokeLinecap=\"round\"\n strokeWidth=\"12\"\n />\n <circle\n cx=\"45\"\n cy=\"35\"\n fill=\"hsl(25,100%,75%)\"\n r=\"3\"\n stroke=\"hsl(var(--foreground))\"\n strokeWidth=\"1\"\n />\n </svg>\n <div className=\"absolute top-[8px] right-[2px] w-12 h-20 rounded-tr-full pattern-lines opacity-40 rotate-12 origin-bottom-left pointer-events-none\" />\n </div>\n\n <div className=\"flex justify-between items-end relative z-10\">\n <div>\n <div className=\"flex items-center gap-1\">\n <span className=\"text-2xl font-bold text-primary-foreground\">\n {percentage}%\n </span>\n <div className=\"w-4 h-4 rounded-full bg-card flex items-center justify-center\">\n <Icon name=\"north_east\" size={10} className=\"text-foreground\" />\n </div>\n </div>\n <p className=\"text-xs text-primary-foreground/70 font-medium\">\n Monthly avg: {monthlyAverage.toLocaleString()}\n {currency}\n </p>\n </div>\n <div className=\"text-right mr-4 mb-2\">\n <span className=\"text-2xl font-bold text-primary-foreground\">\n {totalValue.toLocaleString()}\n {currency}\n </span>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { BtcPriceCardProps } from \"../types\";\nimport { Icon } from \"./Icon\";\n\n/**\n * BtcPriceCard - Displays Bitcoin price with progress indicator\n *\n * @example\n * ```tsx\n * <BtcPriceCard price={21105} changePercentage={28.21} />\n * ```\n */\nexport function BtcPriceCard({\n price = 21105,\n changePercentage = 28.21,\n currency = \"$\",\n isLoading = false,\n}: BtcPriceCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-primary p-6 rounded-3xl relative h-48 flex flex-col justify-between shadow-lg animate-pulse\">\n <div className=\"h-4 bg-primary-foreground/20 rounded w-16\" />\n <div className=\"h-8 bg-primary-foreground/20 rounded w-24 mt-2\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-primary p-6 rounded-3xl relative h-48 flex flex-col justify-between shadow-lg transition-transform hover:-translate-y-1 duration-300\">\n <div className=\"flex justify-between items-start\">\n <div>\n <p className=\"text-primary-foreground/70 text-xs font-medium\">BTC price</p>\n <h3 className=\"text-3xl font-bold text-primary-foreground mt-1\">\n {price.toLocaleString()}\n {currency}\n </h3>\n </div>\n <Icon name=\"north_east\" size={14} className=\"text-primary-foreground/70\" />\n </div>\n\n <div className=\"relative\">\n <span className=\"text-xs font-bold text-primary-foreground mb-1 block\">\n +{changePercentage.toFixed(2)}%\n </span>\n <div className=\"h-8 w-full border border-primary-foreground/50 rounded-full flex overflow-hidden relative\">\n <div className=\"w-2/3 h-full pattern-lines border-r border-primary-foreground/50 opacity-60\" />\n <div className=\"absolute top-1/2 -translate-y-1/2 left-[66%] w-3 h-3 bg-secondary border border-primary-foreground rounded-full z-10 shadow-sm\" />\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { MarketCapCardProps } from \"../types\";\nimport { Icon } from \"./Icon\";\n\n/**\n * MarketCapCard - Displays market cap forecast with line chart\n *\n * @example\n * ```tsx\n * <MarketCapCard value=\"1,3trln$\" />\n * ```\n */\nexport function MarketCapCard({\n value = \"1,3trln$\",\n isLoading = false,\n}: MarketCapCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-secondary p-6 rounded-3xl relative h-48 flex flex-col justify-between shadow-lg animate-pulse\">\n <div className=\"h-4 bg-secondary-foreground/20 rounded w-32\" />\n <div className=\"h-8 bg-secondary-foreground/20 rounded w-24 mt-2\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-secondary p-6 rounded-3xl relative h-48 flex flex-col justify-between shadow-lg transition-transform hover:-translate-y-1 duration-300\">\n <div className=\"flex justify-between items-start\">\n <div>\n <p className=\"text-secondary-foreground/70 text-xs font-medium\">\n Market cap forecast\n </p>\n <h3 className=\"text-3xl font-bold text-secondary-foreground mt-1\">{value}</h3>\n </div>\n <Icon name=\"north_east\" size={14} className=\"text-secondary-foreground/70\" />\n </div>\n\n <div className=\"relative h-16 w-full flex items-end\">\n <svg\n className=\"w-full h-full overflow-visible\"\n preserveAspectRatio=\"none\"\n viewBox=\"0 0 100 40\"\n >\n <path\n d=\"M0 40 L0 35 Q 20 35 40 25 T 60 15 T 100 5 L 100 40 Z\"\n fill=\"rgba(255,255,255,0.2)\"\n />\n <path\n d=\"M0 35 Q 20 35 40 25 T 60 15 T 100 5\"\n fill=\"none\"\n stroke=\"hsl(243 40% 55%)\"\n strokeWidth=\"1.5\"\n />\n <circle\n cx=\"60\"\n cy=\"15\"\n fill=\"hsl(var(--primary))\"\n r=\"3\"\n stroke=\"hsl(243 40% 55%)\"\n strokeWidth=\"1.5\"\n />\n </svg>\n <div className=\"absolute inset-0 top-[20px] left-[10px] w-full h-full flex justify-between px-2 opacity-10 pointer-events-none\">\n {[...Array(8)].map((_, i) => (\n <div key={i} className=\"w-px h-full bg-secondary-foreground\" />\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { MarketForecastCardProps, ForecastItem } from \"../types\";\nimport { Icon } from \"./Icon\";\n\nconst defaultForecasts: ForecastItem[] = [\n { year: \"2023\", description: \"Explosive growth of DeFi\", completed: false },\n { year: \"2024\", description: \"Mainstream adoption of CBDCs\", completed: false },\n { year: \"2025\", description: \"1 BTC reaches $500K\", completed: false },\n { year: \"2027\", description: \"Widespread retail use\", completed: true },\n];\n\n/**\n * MarketForecastCard - Displays market forecast timeline\n *\n * @example\n * ```tsx\n * <MarketForecastCard\n * forecasts={[\n * { year: \"2024\", description: \"Market milestone\", completed: false }\n * ]}\n * />\n * ```\n */\nexport function MarketForecastCard({\n forecasts = defaultForecasts,\n isLoading = false,\n}: MarketForecastCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex flex-col animate-pulse\">\n <div className=\"flex items-center gap-4 mb-8\">\n <div className=\"w-10 h-10 rounded-full bg-muted\" />\n <div className=\"h-6 bg-muted rounded w-32\" />\n </div>\n <div className=\"space-y-6\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"flex gap-6\">\n <div className=\"w-4 h-4 rounded-full bg-muted\" />\n <div className=\"flex-1 space-y-2\">\n <div className=\"h-4 bg-muted rounded w-12\" />\n <div className=\"h-3 bg-muted rounded w-full\" />\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft flex flex-col\">\n <div className=\"flex items-center gap-4 mb-8\">\n <div className=\"w-10 h-10 rounded-full bg-primary flex items-center justify-center shadow-sm\">\n <Icon name=\"timeline\" size={18} className=\"text-primary-foreground\" />\n </div>\n <h2 className=\"text-xl font-bold w-24 leading-tight\">Market forecast</h2>\n </div>\n\n <div className=\"relative pl-2\">\n <div className=\"absolute left-[7px] top-2 bottom-4 w-0.5 bg-border\" />\n <div className=\"space-y-6 relative\">\n {forecasts.map((item) => (\n <div key={item.year} className=\"flex gap-6 relative group cursor-pointer\">\n <div\n className={cn(\n \"w-4 h-4 rounded-full z-10 mt-1 transition-colors\",\n item.completed\n ? \"bg-foreground shadow-md\"\n : \"border-2 border-muted-foreground bg-card group-hover:border-primary group-hover:bg-primary\"\n )}\n />\n <div>\n <h4 className=\"font-bold text-sm\">{item.year}</h4>\n <p className=\"text-xs text-muted-foreground mt-1 leading-relaxed\">\n {item.description}\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { PortfolioAllocationCardProps, PortfolioAllocation } from \"../types\";\nimport { Icon } from \"./Icon\";\n\nconst defaultAllocations: PortfolioAllocation[] = [\n { asset: \"Bitcoin\", symbol: \"BTC\", percentage: 45, color: \"bg-primary\" },\n { asset: \"Ethereum\", symbol: \"ETH\", percentage: 30, color: \"bg-secondary\" },\n { asset: \"Solana\", symbol: \"SOL\", percentage: 15, color: \"bg-foreground\" },\n { asset: \"Others\", symbol: \"---\", percentage: 10, color: \"bg-muted\" },\n];\n\n/**\n * PortfolioAllocationCard - Displays portfolio breakdown with progress bar\n *\n * @example\n * ```tsx\n * <PortfolioAllocationCard\n * allocations={[\n * { asset: \"Bitcoin\", symbol: \"BTC\", percentage: 45, color: \"bg-primary\" }\n * ]}\n * onOptionsClick={() => {}}\n * />\n * ```\n */\nexport function PortfolioAllocationCard({\n allocations = defaultAllocations,\n onOptionsClick,\n isLoading = false,\n}: PortfolioAllocationCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft animate-pulse\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-full bg-muted\" />\n <div className=\"h-6 bg-muted rounded w-20\" />\n </div>\n </div>\n <div className=\"h-3 bg-muted rounded-full mb-6\" />\n <div className=\"space-y-3\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"h-4 bg-muted rounded\" />\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-full bg-secondary flex items-center justify-center\">\n <Icon name=\"pie_chart\" size={18} className=\"text-secondary-foreground\" />\n </div>\n <h2 className=\"text-lg font-bold\">Portfolio</h2>\n </div>\n <button\n onClick={onOptionsClick}\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n >\n <Icon name=\"more_horiz\" size={20} />\n </button>\n </div>\n\n {/* Progress bar */}\n <div className=\"h-3 w-full rounded-full flex overflow-hidden mb-6\">\n {allocations.map((item) => (\n <div\n key={item.symbol}\n className={`${item.color} h-full`}\n style={{ width: `${item.percentage}%` }}\n />\n ))}\n </div>\n\n {/* Legend */}\n <div className=\"space-y-3\">\n {allocations.map((item) => (\n <div key={item.symbol} className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className={`w-3 h-3 rounded-full ${item.color}`} />\n <span className=\"text-sm font-medium\">{item.asset}</span>\n <span className=\"text-xs text-muted-foreground\">{item.symbol}</span>\n </div>\n <span className=\"text-sm font-semibold\">{item.percentage}%</span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { WatchlistCardProps, WatchlistItem } from \"../types\";\nimport { Icon } from \"./Icon\";\n\nconst defaultItems: WatchlistItem[] = [\n { name: \"Cardano\", symbol: \"ADA\", price: \"0.58\", change: \"+5.2%\", positive: true },\n { name: \"Polkadot\", symbol: \"DOT\", price: \"7.23\", change: \"-2.1%\", positive: false },\n { name: \"Avalanche\", symbol: \"AVAX\", price: \"35.80\", change: \"+12.4%\", positive: true },\n];\n\n/**\n * WatchlistCard - Displays cryptocurrency watchlist\n *\n * @example\n * ```tsx\n * <WatchlistCard\n * items={[\n * { name: \"Cardano\", symbol: \"ADA\", price: \"0.58\", change: \"+5.2%\", positive: true }\n * ]}\n * onViewAll={() => {}}\n * />\n * ```\n */\nexport function WatchlistCard({\n items = defaultItems,\n onViewAll,\n isLoading = false,\n}: WatchlistCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft animate-pulse\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-full bg-muted\" />\n <div className=\"h-6 bg-muted rounded w-24\" />\n </div>\n </div>\n <div className=\"space-y-4\">\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"h-14 bg-muted rounded-2xl\" />\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"bg-card p-6 rounded-3xl shadow-soft\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"flex items-center gap-3\">\n <div className=\"w-10 h-10 rounded-full bg-primary flex items-center justify-center\">\n <Icon name=\"visibility\" size={18} className=\"text-primary-foreground\" />\n </div>\n <h2 className=\"text-lg font-bold\">Watchlist</h2>\n </div>\n <button\n onClick={onViewAll}\n className=\"text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1\"\n >\n View all\n <Icon name=\"chevron_right\" size={14} />\n </button>\n </div>\n\n <div className=\"space-y-4\">\n {items.map((item) => (\n <div\n key={item.symbol}\n className=\"flex items-center justify-between p-3 bg-muted/50 rounded-2xl hover:bg-muted transition-colors cursor-pointer\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"w-9 h-9 rounded-full bg-foreground/10 flex items-center justify-center\">\n <span className=\"text-xs font-bold\">{item.symbol.slice(0, 2)}</span>\n </div>\n <div>\n <p className=\"text-sm font-semibold\">{item.name}</p>\n <p className=\"text-xs text-muted-foreground\">{item.symbol}</p>\n </div>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm font-semibold\">${item.price}</p>\n <p\n className={`text-xs font-medium ${\n item.positive\n ? \"text-primary-foreground bg-primary\"\n : \"text-destructive-foreground bg-destructive\"\n } px-1.5 py-0.5 rounded-full inline-block`}\n >\n {item.change}\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { RecentTransactionsCardProps, TransactionUser } from \"../types\";\nimport { Icon } from \"./Icon\";\n\nconst defaultUsers: TransactionUser[] = [\n {\n alt: \"User 1\",\n avatarUrl:\n \"https://lh3.googleusercontent.com/aida-public/AB6AXuApu0rGff7tq3lGfdm47JIyS5ULIPTuAydDnsjl11A1SRLyiOGRyn1P7khEGNH0erCwP2UwyxZoeoHqrQClYEBEwItYsZk8gnHQSnu9JpXnsa__Z5Yz5Ok5PEX-qXxG_ONKWzeKdX6ALutpdIZE_VF6TiW9xKToY7KYz40rYE0xteAHzx6wSqg1iwFBNEUUlBJahjf-RzeUlEQNKDPttu4ngQK1T5XuN7Vw-VnF05ByVwaaFFbdH-M_cNmJBd4_sGrbR3ep6exhg-o\",\n },\n {\n alt: \"User 2\",\n avatarUrl:\n \"https://lh3.googleusercontent.com/aida-public/AB6AXuDLX09bvZI-Ho3yvNXrbVUxbOjupQc8G5HZrhkDqUUVjPq3wJ7-I6u9kwER506K-_EY5tIXPrpFo2Ep896M8cdLTb8PmEGExVwVNArKqj6nUxefS-iAT1MSTaFgWpGTUfHXGjMhZxFrapq9Jnr9Vy8hi0d2ay9Or4yLXtuBX5SNkNtSIRj24Dzdc11Y8YlJv00uNOhvrtt07arU3FIcfX48U72tlGaA37F8AWH7mNmLSlwSi1R6iGnQnjv3NDf-r7PqBdHz3LaS3Jc\",\n },\n];\n\n/**\n * RecentTransactionsCard - Displays recent transaction summary\n *\n * @example\n * ```tsx\n * <RecentTransactionsCard\n * summary=\"12,53 ETH/1 BTC\"\n * users={[{ alt: \"User\", avatarUrl: \"...\" }]}\n * />\n * ```\n */\nexport function RecentTransactionsCard({\n summary = \"12,53 ETH/1 BTC\",\n users = defaultUsers,\n onOptionsClick,\n isLoading = false,\n}: RecentTransactionsCardProps) {\n if (isLoading) {\n return (\n <div className=\"xl:col-span-2 bg-card p-6 rounded-3xl shadow-soft h-fit animate-pulse\">\n <div className=\"flex justify-between items-start mb-6\">\n <div className=\"flex items-center gap-4\">\n <div className=\"w-12 h-12 rounded-full bg-muted\" />\n <div className=\"space-y-2\">\n <div className=\"h-5 bg-muted rounded w-40\" />\n <div className=\"h-4 bg-muted rounded w-24\" />\n </div>\n </div>\n </div>\n <div className=\"h-14 bg-muted rounded-2xl\" />\n </div>\n );\n }\n\n return (\n <div className=\"xl:col-span-2 bg-card p-6 rounded-3xl shadow-soft h-fit\">\n <div className=\"flex justify-between items-start mb-6\">\n <div className=\"flex items-center gap-4\">\n <div className=\"w-12 h-12 rounded-full bg-foreground text-background flex items-center justify-center\">\n <Icon name=\"bubble_chart\" size={24} />\n </div>\n <div>\n <h2 className=\"text-lg font-bold\">Recent Transactions</h2>\n <p className=\"text-muted-foreground text-sm\">Sell currency</p>\n </div>\n </div>\n <div className=\"flex -space-x-2\">\n {users.map((user, index) => (\n <img\n key={index}\n alt={user.alt}\n className=\"w-10 h-10 rounded-full border-2 border-card\"\n src={user.avatarUrl}\n />\n ))}\n </div>\n </div>\n <div className=\"bg-muted p-4 rounded-2xl flex justify-between items-center\">\n <div className=\"flex items-center gap-3\">\n <Icon name=\"account_balance_wallet\" size={24} className=\"text-muted-foreground\" />\n <span className=\"font-medium text-sm\">{summary}</span>\n </div>\n <button\n onClick={onOptionsClick}\n className=\"text-muted-foreground hover:text-foreground\"\n >\n <Icon name=\"more_vert\" size={24} />\n </button>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport type { QuickActionsCardProps, ActionItem, ScheduledTransfer } from \"../types\";\nimport { Icon, type IconName } from \"./Icon\";\n\nconst defaultActions: ActionItem[] = [\n { icon: \"add_circle\", label: \"Buy\", color: \"bg-primary text-primary-foreground\" },\n { icon: \"remove_circle\", label: \"Sell\", color: \"bg-secondary text-secondary-foreground\" },\n { icon: \"swap_horiz\", label: \"Swap\", color: \"bg-foreground text-background\" },\n { icon: \"send\", label: \"Send\", color: \"bg-muted text-foreground\" },\n];\n\nconst defaultScheduledTransfer: ScheduledTransfer = {\n description: \"0.5 ETH → Wallet #2\",\n timeUntil: \"In 2 days\",\n};\n\n/**\n * QuickActionsCard - Quick action buttons with scheduled transfer\n *\n * @example\n * ```tsx\n * <QuickActionsCard\n * actions={[{ icon: \"add_circle\", label: \"Buy\", color: \"bg-primary\" }]}\n * scheduledTransfer={{ description: \"0.5 ETH → Wallet\", timeUntil: \"In 2 days\" }}\n * onActionClick={(action) => console.log(action)}\n * />\n * ```\n */\nexport function QuickActionsCard({\n actions = defaultActions,\n scheduledTransfer = defaultScheduledTransfer,\n onActionClick,\n isLoading = false,\n}: QuickActionsCardProps) {\n if (isLoading) {\n return (\n <div className=\"bg-accent-dark dark:bg-black text-accent-dark-foreground p-6 rounded-3xl shadow-soft animate-pulse\">\n <div className=\"flex justify-between items-center mb-6\">\n <div className=\"h-6 bg-white/10 rounded w-32\" />\n <div className=\"w-8 h-8 rounded-full bg-white/10\" />\n </div>\n <div className=\"grid grid-cols-4 gap-3 mb-6\">\n {[1, 2, 3, 4].map((i) => (\n <div key={i} className=\"flex flex-col items-center gap-2\">\n <div className=\"w-12 h-12 rounded-2xl bg-white/10\" />\n <div className=\"h-3 bg-white/10 rounded w-8\" />\n </div>\n ))}\n </div>\n <div className=\"h-16 bg-white/5 rounded-2xl\" />\n </div>\n );\n }\n\n return (\n <div className=\"bg-accent-dark dark:bg-black text-accent-dark-foreground p-6 rounded-3xl shadow-soft\">\n <div className=\"flex justify-between items-center mb-6\">\n <h2 className=\"text-lg font-bold\">Quick Actions</h2>\n <div className=\"w-8 h-8 rounded-full bg-white/10 flex items-center justify-center\">\n <Icon name=\"bolt\" size={14} />\n </div>\n </div>\n\n <div className=\"grid grid-cols-4 gap-3\">\n {actions.map((action) => (\n <button\n key={action.label}\n onClick={() => onActionClick?.(action)}\n className=\"flex flex-col items-center gap-2 group\"\n >\n <div\n className={`w-12 h-12 rounded-2xl ${action.color} flex items-center justify-center transition-transform group-hover:scale-110 shadow-lg`}\n >\n <Icon name={action.icon as IconName} size={24} />\n </div>\n <span className=\"text-xs font-medium text-muted-foreground group-hover:text-accent-dark-foreground transition-colors\">\n {action.label}\n </span>\n </button>\n ))}\n </div>\n\n {scheduledTransfer && (\n <div className=\"mt-6 p-4 bg-white/5 rounded-2xl border border-white/10\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Icon name=\"schedule\" size={24} className=\"text-primary\" />\n <div>\n <p className=\"text-sm font-medium\">Scheduled transfer</p>\n <p className=\"text-xs text-muted-foreground\">\n {scheduledTransfer.description}\n </p>\n </div>\n </div>\n <span className=\"text-xs text-muted-foreground\">\n {scheduledTransfer.timeUntil}\n </span>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { FloatingNavBarProps, ActionItem } from \"../types\";\nimport { Icon, type IconName } from \"./Icon\";\n\nconst defaultActions: ActionItem[] = [\n { icon: \"add_circle\", label: \"Buy\" },\n { icon: \"remove_circle\", label: \"Sell\" },\n { icon: \"swap_horiz\", label: \"Swap\" },\n { icon: \"send\", label: \"Send\" },\n { icon: \"account_balance_wallet\", label: \"Wallet\" },\n { icon: \"bar_chart\", label: \"Analytics\" },\n];\n\n/**\n * FloatingNavBar - Floating action bar with liquid glass effect\n *\n * @example\n * ```tsx\n * <FloatingNavBar\n * actions={[\n * { icon: \"add_circle\", label: \"Buy\" },\n * { icon: \"remove_circle\", label: \"Sell\" },\n * ]}\n * onActionClick={(action) => console.log(action)}\n * />\n * ```\n */\nexport function FloatingNavBar({\n actions = defaultActions,\n onActionClick,\n}: FloatingNavBarProps) {\n return (\n <>\n {/* SVG Filter for liquid glass distortion */}\n <svg className=\"hidden\">\n <defs>\n <filter id=\"glass-distortion\">\n <feTurbulence\n type=\"fractalNoise\"\n baseFrequency=\"0.01\"\n numOctaves=\"3\"\n result=\"noise\"\n />\n <feDisplacementMap\n in=\"SourceGraphic\"\n in2=\"noise\"\n scale=\"6\"\n xChannelSelector=\"R\"\n yChannelSelector=\"G\"\n />\n </filter>\n </defs>\n </svg>\n\n <div className=\"fixed bottom-6 left-1/2 -translate-x-1/2 z-50\">\n <div className=\"liquidGlass-wrapper rounded-3xl p-1\">\n <div className=\"liquidGlass-effect rounded-3xl\" />\n <div className=\"liquidGlass-tint rounded-3xl\" />\n <div className=\"liquidGlass-shine rounded-3xl\" />\n\n <div className=\"liquidGlass-content flex items-center gap-2 sm:gap-3 px-3 sm:px-5 py-3 sm:py-4\">\n {actions.map((action, index) => (\n <button\n key={action.label}\n onClick={() => onActionClick?.(action)}\n className={cn(\n \"w-12 h-12 sm:w-14 sm:h-14 rounded-2xl bg-background/40 hover:bg-primary hover:text-primary-foreground items-center justify-center transition-all duration-300 hover:scale-110 group backdrop-blur-sm\",\n index < 4 ? \"flex\" : \"hidden sm:flex\"\n )}\n title={action.label}\n >\n <Icon name={action.icon as IconName} size={28} className=\"group-hover:text-primary-foreground transition-colors\" />\n </button>\n ))}\n </div>\n </div>\n </div>\n </>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../utils\";\nimport type { SidebarProps, NavItem, UserInfo } from \"../types\";\nimport { Icon, type IconName } from \"./Icon\";\n\nconst defaultNavItems: NavItem[] = [\n { icon: \"dashboard\", label: \"Dashboard\", active: true },\n { icon: \"account_balance_wallet\", label: \"Wallet\", active: false },\n { icon: \"analytics\", label: \"Analytics\", active: false },\n { icon: \"swap_horiz\", label: \"Transactions\", active: false },\n];\n\nconst defaultUser: UserInfo = {\n name: \"Alex Morgan\",\n role: \"Premium User\",\n avatarUrl:\n \"https://lh3.googleusercontent.com/aida-public/AB6AXuAOo_5Kr126T6MHRuT6vvn0AOhE9osWQx3QcuqMljDeMkNf_ZbpM3o6GJnJRnZ78mRrjXpZkmn2bZXZrEp37pv7z35DJzPgruHStOKVsKzyird-Athm2EOkwXhcivP6D_kuA9Z-o2OGONNpa5Us1pXcuKJNWbzqImuWkfYkTdFzv1BUayGF_VyekDIcygoEPjacRcsarKHujq1Yfc57ux_DdoufrlRxVnNfiDWra2_OVlievLaWr_kC-4NriyAzRUctHgucD15RZy0\",\n};\n\n/**\n * Sidebar - Desktop sidebar navigation\n *\n * @example\n * ```tsx\n * <Sidebar\n * navItems={[{ icon: \"dashboard\", label: \"Dashboard\", active: true }]}\n * user={{ name: \"Alex\", role: \"Premium\", avatarUrl: \"...\" }}\n * onToggleTheme={() => {}}\n * isCollapsed={false}\n * onToggleCollapse={() => {}}\n * />\n * ```\n */\nexport function Sidebar({\n navItems = defaultNavItems,\n user = defaultUser,\n onToggleTheme,\n isCollapsed,\n onToggleCollapse,\n onNavItemClick,\n}: SidebarProps) {\n return (\n <aside\n className={cn(\n \"h-screen fixed left-0 top-0 border-r border-border flex-col justify-between py-8 px-4 z-50 transition-all duration-300 bg-card hidden lg:flex\",\n isCollapsed ? \"w-20\" : \"w-20 lg:w-64\"\n )}\n >\n <div>\n {/* Logo */}\n <div className=\"flex items-center justify-center lg:justify-start lg:px-4 mb-12\">\n <div className=\"w-10 h-10 bg-primary rounded-xl flex items-center justify-center text-primary-foreground font-bold text-xl\">\n <Icon name=\"grid_view\" size={24} />\n </div>\n <span\n className={cn(\n \"ml-3 font-bold text-xl tracking-tight transition-opacity duration-200\",\n isCollapsed ? \"hidden\" : \"hidden lg:block\"\n )}\n >\n FinDash\n </span>\n </div>\n\n {/* Navigation */}\n <nav className=\"space-y-2\">\n {navItems.map((item) => (\n <a\n key={item.label}\n href={item.href || \"#\"}\n onClick={(e) => {\n e.preventDefault();\n onNavItemClick?.(item);\n }}\n className={cn(\n \"flex items-center justify-center lg:justify-start lg:px-4 py-3 rounded-xl transition-colors\",\n item.active\n ? \"bg-muted text-foreground\"\n : \"text-muted-foreground hover:text-foreground hover:bg-muted/50\",\n isCollapsed && \"lg:justify-center lg:px-0\"\n )}\n >\n <Icon name={item.icon as IconName} size={24} />\n <span\n className={cn(\n \"ml-4 font-medium transition-opacity duration-200\",\n isCollapsed ? \"hidden\" : \"hidden lg:block\"\n )}\n >\n {item.label}\n </span>\n </a>\n ))}\n </nav>\n </div>\n\n <div>\n {/* User Profile */}\n <div className=\"flex items-center justify-center lg:justify-start lg:px-4 py-3 mb-4\">\n <img\n alt=\"User Profile\"\n className=\"w-10 h-10 rounded-full border-2 border-card\"\n src={user.avatarUrl}\n />\n <div className={cn(\"ml-3\", isCollapsed ? \"hidden\" : \"hidden lg:block\")}>\n <p className=\"text-sm font-semibold\">{user.name}</p>\n <p className=\"text-xs text-muted-foreground\">{user.role}</p>\n </div>\n </div>\n\n {/* Theme Toggle */}\n <button\n onClick={onToggleTheme}\n className={cn(\n \"w-full flex items-center justify-center lg:justify-start lg:px-4 py-3 text-muted-foreground hover:text-foreground hover:bg-muted/50 rounded-xl transition-colors\",\n isCollapsed && \"lg:justify-center lg:px-0\"\n )}\n >\n <Icon name=\"dark_mode\" size={24} />\n <span\n className={cn(\n \"ml-4 font-medium transition-opacity duration-200\",\n isCollapsed ? \"hidden\" : \"hidden lg:block\"\n )}\n >\n Toggle Theme\n </span>\n </button>\n\n {/* Collapse Toggle - Desktop only */}\n <button\n onClick={onToggleCollapse}\n className={cn(\n \"hidden lg:flex w-full items-center justify-center lg:justify-start lg:px-4 py-3 text-muted-foreground hover:text-foreground hover:bg-muted/50 rounded-xl transition-colors mt-2\",\n isCollapsed && \"lg:justify-center lg:px-0\"\n )}\n >\n <Icon\n name=\"chevron_left\"\n size={24}\n className={cn(\n \"transition-transform duration-300\",\n isCollapsed ? \"rotate-180\" : \"\"\n )}\n />\n <span\n className={cn(\n \"ml-4 font-medium transition-opacity duration-200\",\n isCollapsed ? \"hidden\" : \"block\"\n )}\n >\n Collapse\n </span>\n </button>\n </div>\n </aside>\n );\n}\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { cn } from \"../utils\";\nimport type { MobileNavProps, NavItem, UserInfo } from \"../types\";\nimport { Icon, type IconName } from \"./Icon\";\n\nconst defaultNavItems: NavItem[] = [\n { icon: \"dashboard\", label: \"Dashboard\", active: true },\n { icon: \"account_balance_wallet\", label: \"Wallet\", active: false },\n { icon: \"analytics\", label: \"Analytics\", active: false },\n { icon: \"swap_horiz\", label: \"Transactions\", active: false },\n];\n\nconst defaultUser: UserInfo = {\n name: \"Alex Morgan\",\n role: \"Premium User\",\n avatarUrl:\n \"https://lh3.googleusercontent.com/aida-public/AB6AXuAOo_5Kr126T6MHRuT6vvn0AOhE9osWQx3QcuqMljDeMkNf_ZbpM3o6GJnJRnZ78mRrjXpZkmn2bZXZrEp37pv7z35DJzPgruHStOKVsKzyird-Athm2EOkwXhcivP6D_kuA9Z-o2OGONNpa5Us1pXcuKJNWbzqImuWkfYkTdFzv1BUayGF_VyekDIcygoEPjacRcsarKHujq1Yfc57ux_DdoufrlRxVnNfiDWra2_OVlievLaWr_kC-4NriyAzRUctHgucD15RZy0\",\n};\n\n/**\n * MobileNav - Mobile/tablet top navigation with slide-out menu\n *\n * @example\n * ```tsx\n * <MobileNav\n * navItems={[{ icon: \"dashboard\", label: \"Dashboard\", active: true }]}\n * user={{ name: \"Alex\", role: \"Premium\", avatarUrl: \"...\" }}\n * onToggleTheme={() => {}}\n * />\n * ```\n */\nexport function MobileNav({\n navItems = defaultNavItems,\n user = defaultUser,\n onToggleTheme,\n onNavItemClick,\n}: MobileNavProps) {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n return (\n <>\n {/* Top Navigation Bar */}\n <header className=\"lg:hidden fixed top-0 left-0 right-0 h-16 bg-card border-b border-border flex items-center justify-between px-4 z-50\">\n {/* Logo */}\n <div className=\"flex items-center\">\n <div className=\"w-10 h-10 bg-primary rounded-xl flex items-center justify-center text-primary-foreground font-bold text-xl\">\n <Icon name=\"grid_view\" size={24} />\n </div>\n <span className=\"ml-3 font-bold text-xl tracking-tight\">FinDash</span>\n </div>\n\n {/* Right side actions */}\n <div className=\"flex items-center gap-2\">\n {/* Theme Toggle */}\n <button\n onClick={onToggleTheme}\n className=\"w-10 h-10 flex items-center justify-center rounded-xl hover:bg-muted transition-colors\"\n >\n <Icon name=\"dark_mode\" size={24} />\n </button>\n\n {/* Hamburger Button */}\n <button\n onClick={() => setIsMenuOpen(true)}\n className=\"w-10 h-10 flex items-center justify-center rounded-xl hover:bg-muted transition-colors\"\n >\n <Icon name=\"menu\" size={24} />\n </button>\n </div>\n </header>\n\n {/* Backdrop */}\n <div\n className={cn(\n \"lg:hidden fixed inset-0 bg-black/50 z-[99] transition-opacity duration-300\",\n isMenuOpen ? \"opacity-100 pointer-events-auto\" : \"opacity-0 pointer-events-none\"\n )}\n onClick={() => setIsMenuOpen(false)}\n />\n\n {/* Half Page Menu Overlay */}\n <div\n className={cn(\n \"lg:hidden fixed top-0 right-0 h-full w-1/2 min-w-[280px] max-w-[400px] bg-background z-[100] transition-transform duration-300 flex flex-col shadow-2xl\",\n isMenuOpen ? \"translate-x-0\" : \"translate-x-full\"\n )}\n >\n {/* Menu Header */}\n <div className=\"h-16 flex items-center justify-between px-4 border-b border-border\">\n <div className=\"flex items-center\">\n <div className=\"w-10 h-10 bg-primary rounded-xl flex items-center justify-center text-primary-foreground font-bold text-xl\">\n <Icon name=\"grid_view\" size={24} />\n </div>\n <span className=\"ml-3 font-bold text-xl tracking-tight\">FinDash</span>\n </div>\n\n {/* Close Button */}\n <button\n onClick={() => setIsMenuOpen(false)}\n className=\"w-10 h-10 flex items-center justify-center rounded-xl hover:bg-muted transition-colors\"\n >\n <Icon name=\"close\" size={24} />\n </button>\n </div>\n\n {/* Navigation Links */}\n <nav className=\"flex-1 flex flex-col items-center justify-center gap-4 p-6\">\n {navItems.map((item) => (\n <a\n key={item.label}\n href={item.href || \"#\"}\n onClick={(e) => {\n e.preventDefault();\n onNavItemClick?.(item);\n setIsMenuOpen(false);\n }}\n className={cn(\n \"w-full max-w-sm flex items-center gap-4 px-6 py-4 rounded-2xl transition-colors text-lg\",\n item.active\n ? \"bg-muted text-foreground\"\n : \"text-muted-foreground hover:text-foreground hover:bg-muted/50\"\n )}\n >\n <Icon name={item.icon as IconName} size={30} />\n <span className=\"font-medium\">{item.label}</span>\n </a>\n ))}\n </nav>\n\n {/* Bottom Section */}\n <div className=\"p-4 border-t border-border\">\n {/* User Profile */}\n <div className=\"flex items-center gap-3\">\n <img\n alt=\"User Profile\"\n className=\"w-10 h-10 rounded-full border-2 border-card\"\n src={user.avatarUrl}\n />\n <div>\n <p className=\"text-sm font-semibold\">{user.name}</p>\n <p className=\"text-xs text-muted-foreground\">{user.role}</p>\n </div>\n </div>\n </div>\n </div>\n </>\n );\n}\n","import * as React from \"react\";\nimport { useState } from \"react\";\nimport { cn } from \"../utils\";\nimport type { DashboardTemplateProps } from \"../types\";\nimport { Sidebar } from \"./Sidebar\";\nimport { MobileNav } from \"./MobileNav\";\nimport { SalesStatisticsCard } from \"./SalesStatisticsCard\";\nimport { CurrentBalanceCard } from \"./CurrentBalanceCard\";\nimport { InvestmentGrowthCard } from \"./InvestmentGrowthCard\";\nimport { RecentTransactionsCard } from \"./RecentTransactionsCard\";\nimport { MarketForecastCard } from \"./MarketForecastCard\";\nimport { BtcPriceCard } from \"./BtcPriceCard\";\nimport { MarketCapCard } from \"./MarketCapCard\";\nimport { PortfolioAllocationCard } from \"./PortfolioAllocationCard\";\nimport { WatchlistCard } from \"./WatchlistCard\";\nimport { FloatingNavBar } from \"./FloatingNavBar\";\n\n/**\n * DashboardTemplate - Complete financial dashboard layout\n */\nexport function DashboardTemplate({\n data = {},\n isLoading = false,\n onThemeToggle,\n onNavItemClick,\n onActionClick,\n className,\n}: DashboardTemplateProps) {\n const [isSidebarCollapsed, setIsSidebarCollapsed] = useState(false);\n\n return (\n <div className={cn(\"min-h-screen flex pb-24\", className)}>\n <MobileNav onToggleTheme={onThemeToggle || (() => {})} onNavItemClick={onNavItemClick} user={data.user} />\n <Sidebar\n onToggleTheme={onThemeToggle || (() => {})}\n isCollapsed={isSidebarCollapsed}\n onToggleCollapse={() => setIsSidebarCollapsed(!isSidebarCollapsed)}\n onNavItemClick={onNavItemClick}\n user={data.user}\n />\n <main className={cn(\"flex-1 p-6 lg:p-10 max-w-[1600px] mx-auto transition-all duration-300 pt-20 lg:pt-6\", isSidebarCollapsed ? \"lg:ml-20\" : \"ml-0 lg:ml-64\")}>\n <div className=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6\">\n <div className=\"space-y-6 flex flex-col\">\n <SalesStatisticsCard visitors={data.salesStatistics?.visitors} updatedDaysAgo={data.salesStatistics?.updatedDaysAgo} isLoading={isLoading} />\n <CurrentBalanceCard balance={data.balance?.currentBalance} percentageChange={data.balance?.percentageChange} averageScore={data.balance?.averageScore} isLoading={isLoading} />\n <InvestmentGrowthCard percentage={data.investmentGrowth?.percentage} monthlyAverage={data.investmentGrowth?.monthlyAverage} totalValue={data.investmentGrowth?.totalValue} isLoading={isLoading} />\n </div>\n <div className=\"md:col-span-1 xl:col-span-2 grid grid-cols-1 xl:grid-cols-2 gap-6\">\n <RecentTransactionsCard summary={data.transactions?.summary} users={data.transactions?.users} isLoading={isLoading} />\n <div className=\"space-y-6 flex flex-col\">\n <MarketForecastCard forecasts={data.forecasts} isLoading={isLoading} />\n <PortfolioAllocationCard allocations={data.portfolio} isLoading={isLoading} />\n </div>\n <div className=\"space-y-6 flex flex-col\">\n <BtcPriceCard price={data.btcPrice?.price} changePercentage={data.btcPrice?.changePercentage} isLoading={isLoading} />\n <MarketCapCard value={data.marketCap?.value} isLoading={isLoading} />\n <WatchlistCard items={data.watchlist} isLoading={isLoading} />\n </div>\n </div>\n </div>\n </main>\n <FloatingNavBar onActionClick={onActionClick} />\n </div>\n );\n}\n"]}
|