Files
ai-wpa/components/balance/BalanceDisplay.tsx
2025-08-30 18:18:57 +05:30

62 lines
1.6 KiB
TypeScript

'use client'
import React from 'react'
import { useAuth } from '@/contexts/AuthContext'
import { Badge } from '@/components/ui/badge'
import { Wallet } from 'lucide-react'
interface BalanceDisplayProps {
variant?: 'default' | 'compact' | 'badge'
showIcon?: boolean
className?: string
}
export function BalanceDisplay({
variant = 'default',
showIcon = true,
className = '',
}: BalanceDisplayProps) {
const { user } = useAuth()
if (!user) return null
const balance = user.balance || 0
const formatBalance = (amount: number) => {
return new Intl.NumberFormat('en-IN', {
style: 'currency',
currency: 'INR',
minimumFractionDigits: 0,
maximumFractionDigits: 2,
}).format(amount)
}
if (variant === 'badge') {
return (
<Badge variant="secondary" className={`${className}`}>
{showIcon && <Wallet className="h-3 w-3 mr-1" />}
{formatBalance(balance)}
</Badge>
)
}
if (variant === 'compact') {
return (
<div className={`flex items-center space-x-1 text-sm ${className}`}>
{showIcon && <Wallet className="h-4 w-4 text-muted-foreground" />}
<span className="font-medium">{formatBalance(balance)}</span>
</div>
)
}
return (
<div className={`flex items-center space-x-2 ${className}`}>
{showIcon && <Wallet className="h-5 w-5 text-muted-foreground" />}
<div>
<div className="text-lg font-semibold">{formatBalance(balance)}</div>
{/* <div className="text-xs text-muted-foreground">Balance</div> */}
</div>
</div>
)
}