@rayvelez/findash-ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
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":["jsxs","jsx","defaultActions","defaultNavItems","defaultUser","Fragment","useState"],"mappings":"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","file":"index.mjs","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"]}
package/dist/theme.css ADDED
@@ -0,0 +1,188 @@
1
+ /* FinDash UI - Theme CSS */
2
+ /* Import this file in your application entry point */
3
+
4
+ /* Financial Dashboard Design System - All colors in HSL */
5
+
6
+ :root {
7
+ /* Light theme - greyish background from design */
8
+ --background: 100 8% 92%;
9
+ --foreground: 220 13% 18%;
10
+
11
+ --card: 0 0% 100%;
12
+ --card-foreground: 220 13% 18%;
13
+
14
+ --popover: 0 0% 100%;
15
+ --popover-foreground: 220 13% 18%;
16
+
17
+ /* Vibrant green primary #9DFF9D */
18
+ --primary: 120 100% 81%;
19
+ --primary-foreground: 220 13% 13%;
20
+
21
+ /* Light purple secondary #B8B5FF */
22
+ --secondary: 243 100% 85%;
23
+ --secondary-foreground: 220 13% 13%;
24
+
25
+ --muted: 220 9% 85%;
26
+ --muted-foreground: 220 9% 46%;
27
+
28
+ --accent: 220 9% 95%;
29
+ --accent-foreground: 220 13% 18%;
30
+
31
+ /* Dark accent for special cards */
32
+ --accent-dark: 240 6% 10%;
33
+ --accent-dark-foreground: 0 0% 100%;
34
+
35
+ --destructive: 0 84% 60%;
36
+ --destructive-foreground: 0 0% 100%;
37
+
38
+ --border: 220 13% 87%;
39
+ --input: 220 13% 87%;
40
+ --ring: 120 100% 81%;
41
+
42
+ --radius: 1.5rem;
43
+
44
+ --sidebar-background: 0 0% 100%;
45
+ --sidebar-foreground: 220 9% 46%;
46
+ --sidebar-primary: 220 13% 18%;
47
+ --sidebar-primary-foreground: 0 0% 100%;
48
+ --sidebar-accent: 220 9% 95%;
49
+ --sidebar-accent-foreground: 220 13% 18%;
50
+ --sidebar-border: 220 13% 91%;
51
+ --sidebar-ring: 120 100% 81%;
52
+ }
53
+
54
+ .dark {
55
+ /* Dark theme */
56
+ --background: 0 0% 7%;
57
+ --foreground: 220 14% 96%;
58
+
59
+ --card: 0 0% 12%;
60
+ --card-foreground: 220 14% 96%;
61
+
62
+ --popover: 0 0% 12%;
63
+ --popover-foreground: 220 14% 96%;
64
+
65
+ /* Keep vibrant green primary */
66
+ --primary: 120 100% 81%;
67
+ --primary-foreground: 220 13% 13%;
68
+
69
+ /* Keep light purple secondary */
70
+ --secondary: 243 100% 85%;
71
+ --secondary-foreground: 220 13% 13%;
72
+
73
+ --muted: 220 9% 20%;
74
+ --muted-foreground: 220 9% 65%;
75
+
76
+ --accent: 220 9% 20%;
77
+ --accent-foreground: 220 14% 96%;
78
+
79
+ --accent-dark: 0 0% 0%;
80
+ --accent-dark-foreground: 0 0% 100%;
81
+
82
+ --destructive: 0 62% 30%;
83
+ --destructive-foreground: 0 0% 100%;
84
+
85
+ --border: 220 9% 20%;
86
+ --input: 220 9% 20%;
87
+ --ring: 120 100% 81%;
88
+
89
+ --sidebar-background: 0 0% 12%;
90
+ --sidebar-foreground: 220 9% 65%;
91
+ --sidebar-primary: 220 14% 96%;
92
+ --sidebar-primary-foreground: 0 0% 0%;
93
+ --sidebar-accent: 220 9% 18%;
94
+ --sidebar-accent-foreground: 220 14% 96%;
95
+ --sidebar-border: 220 9% 18%;
96
+ --sidebar-ring: 120 100% 81%;
97
+ }
98
+
99
+ /* Base styles */
100
+ * {
101
+ border-color: hsl(var(--border));
102
+ }
103
+
104
+ /* Custom scrollbar */
105
+ ::-webkit-scrollbar {
106
+ width: 8px;
107
+ }
108
+ ::-webkit-scrollbar-track {
109
+ background: transparent;
110
+ }
111
+ ::-webkit-scrollbar-thumb {
112
+ background-color: hsl(var(--muted-foreground) / 0.3);
113
+ border-radius: 20px;
114
+ }
115
+
116
+ /* Pattern utilities for decorative elements */
117
+ .pattern-lines {
118
+ background-image: repeating-linear-gradient(
119
+ 45deg,
120
+ transparent,
121
+ transparent 5px,
122
+ hsl(var(--foreground) / 0.1) 5px,
123
+ hsl(var(--foreground) / 0.1) 6px
124
+ );
125
+ }
126
+
127
+ .pattern-lines-light {
128
+ background-image: repeating-linear-gradient(
129
+ 45deg,
130
+ transparent,
131
+ transparent 5px,
132
+ hsl(0 0% 100% / 0.2) 5px,
133
+ hsl(0 0% 100% / 0.2) 6px
134
+ );
135
+ }
136
+
137
+ /* LIQUID GLASS STYLES */
138
+ .liquidGlass-wrapper {
139
+ position: relative;
140
+ display: flex;
141
+ font-weight: 600;
142
+ overflow: hidden;
143
+ color: hsl(var(--foreground));
144
+ cursor: pointer;
145
+ box-shadow: 0 6px 6px rgba(0, 0, 0, 0.2), 0 0 20px rgba(0, 0, 0, 0.1);
146
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 2.2);
147
+ }
148
+
149
+ .liquidGlass-effect {
150
+ position: absolute;
151
+ z-index: 0;
152
+ inset: 0;
153
+ backdrop-filter: blur(20px);
154
+ -webkit-backdrop-filter: blur(20px);
155
+ filter: url(#glass-distortion);
156
+ overflow: hidden;
157
+ isolation: isolate;
158
+ }
159
+
160
+ .liquidGlass-tint {
161
+ z-index: 1;
162
+ position: absolute;
163
+ inset: 0;
164
+ background: rgba(255, 255, 255, 0.25);
165
+ }
166
+
167
+ .dark .liquidGlass-tint {
168
+ background: rgba(255, 255, 255, 0.1);
169
+ }
170
+
171
+ .liquidGlass-shine {
172
+ position: absolute;
173
+ inset: 0;
174
+ z-index: 2;
175
+ overflow: hidden;
176
+ box-shadow: inset 2px 2px 1px 0 rgba(255, 255, 255, 0.5),
177
+ inset -1px -1px 1px 1px rgba(255, 255, 255, 0.5);
178
+ }
179
+
180
+ .dark .liquidGlass-shine {
181
+ box-shadow: inset 2px 2px 1px 0 rgba(255, 255, 255, 0.2),
182
+ inset -1px -1px 1px 1px rgba(255, 255, 255, 0.2);
183
+ }
184
+
185
+ .liquidGlass-content {
186
+ z-index: 3;
187
+ position: relative;
188
+ }
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@rayvelez/findash-ui",
3
+ "version": "1.0.0",
4
+ "description": "FinDash UI - A modern financial dashboard design system built with React and Tailwind CSS",
5
+ "main": "./dist/index.js",
6
+ "module": "./dist/index.mjs",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.mjs"
13
+ },
14
+ "require": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.js"
17
+ }
18
+ },
19
+ "./styles": "./dist/theme.css",
20
+ "./tailwind.preset": "./tailwind.preset.js"
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "tailwind.preset.js"
25
+ ],
26
+ "scripts": {
27
+ "build": "tsup",
28
+ "dev": "tsup --watch",
29
+ "lint": "eslint src/",
30
+ "typecheck": "tsc --noEmit"
31
+ },
32
+ "peerDependencies": {
33
+ "react": "^18.0.0",
34
+ "react-dom": "^18.0.0",
35
+ "tailwindcss": "^3.4.0"
36
+ },
37
+ "dependencies": {
38
+ "clsx": "^2.1.1",
39
+ "tailwind-merge": "^2.6.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/react": "^18.3.0",
43
+ "@types/react-dom": "^18.3.0",
44
+ "tsup": "^8.0.0",
45
+ "typescript": "^5.4.0"
46
+ },
47
+ "keywords": [
48
+ "react",
49
+ "ui",
50
+ "components",
51
+ "design-system",
52
+ "tailwindcss",
53
+ "financial",
54
+ "dashboard",
55
+ "findash"
56
+ ],
57
+ "author": "FinDash",
58
+ "license": "MIT",
59
+ "repository": {
60
+ "type": "git",
61
+ "url": "https://github.com/your-org/findash-ui"
62
+ },
63
+ "sideEffects": [
64
+ "**/*.css"
65
+ ]
66
+ }
@@ -0,0 +1,97 @@
1
+ /**
2
+ * FinDash UI Tailwind CSS Preset
3
+ *
4
+ * Add this preset to your tailwind.config.js:
5
+ *
6
+ * ```js
7
+ * import findashPreset from "@findash/ui/tailwind.preset";
8
+ *
9
+ * export default {
10
+ * presets: [findashPreset],
11
+ * // ... your config
12
+ * }
13
+ * ```
14
+ */
15
+
16
+ /** @type {import('tailwindcss').Config} */
17
+ module.exports = {
18
+ theme: {
19
+ extend: {
20
+ fontFamily: {
21
+ sans: ["Outfit", "sans-serif"],
22
+ display: ["Outfit", "sans-serif"],
23
+ },
24
+ colors: {
25
+ border: "hsl(var(--border))",
26
+ input: "hsl(var(--input))",
27
+ ring: "hsl(var(--ring))",
28
+ background: "hsl(var(--background))",
29
+ foreground: "hsl(var(--foreground))",
30
+ primary: {
31
+ DEFAULT: "hsl(var(--primary))",
32
+ foreground: "hsl(var(--primary-foreground))",
33
+ },
34
+ secondary: {
35
+ DEFAULT: "hsl(var(--secondary))",
36
+ foreground: "hsl(var(--secondary-foreground))",
37
+ },
38
+ destructive: {
39
+ DEFAULT: "hsl(var(--destructive))",
40
+ foreground: "hsl(var(--destructive-foreground))",
41
+ },
42
+ muted: {
43
+ DEFAULT: "hsl(var(--muted))",
44
+ foreground: "hsl(var(--muted-foreground))",
45
+ },
46
+ accent: {
47
+ DEFAULT: "hsl(var(--accent))",
48
+ foreground: "hsl(var(--accent-foreground))",
49
+ dark: "hsl(var(--accent-dark))",
50
+ "dark-foreground": "hsl(var(--accent-dark-foreground))",
51
+ },
52
+ popover: {
53
+ DEFAULT: "hsl(var(--popover))",
54
+ foreground: "hsl(var(--popover-foreground))",
55
+ },
56
+ card: {
57
+ DEFAULT: "hsl(var(--card))",
58
+ foreground: "hsl(var(--card-foreground))",
59
+ },
60
+ sidebar: {
61
+ DEFAULT: "hsl(var(--sidebar-background))",
62
+ foreground: "hsl(var(--sidebar-foreground))",
63
+ primary: "hsl(var(--sidebar-primary))",
64
+ "primary-foreground": "hsl(var(--sidebar-primary-foreground))",
65
+ accent: "hsl(var(--sidebar-accent))",
66
+ "accent-foreground": "hsl(var(--sidebar-accent-foreground))",
67
+ border: "hsl(var(--sidebar-border))",
68
+ ring: "hsl(var(--sidebar-ring))",
69
+ },
70
+ },
71
+ borderRadius: {
72
+ lg: "var(--radius)",
73
+ md: "calc(var(--radius) - 2px)",
74
+ sm: "calc(var(--radius) - 4px)",
75
+ "2xl": "1.5rem",
76
+ "3xl": "2rem",
77
+ },
78
+ boxShadow: {
79
+ soft: "0 4px 20px -2px rgba(0, 0, 0, 0.05)",
80
+ },
81
+ keyframes: {
82
+ "accordion-down": {
83
+ from: { height: "0" },
84
+ to: { height: "var(--radix-accordion-content-height)" },
85
+ },
86
+ "accordion-up": {
87
+ from: { height: "var(--radix-accordion-content-height)" },
88
+ to: { height: "0" },
89
+ },
90
+ },
91
+ animation: {
92
+ "accordion-down": "accordion-down 0.2s ease-out",
93
+ "accordion-up": "accordion-up 0.2s ease-out",
94
+ },
95
+ },
96
+ },
97
+ };