import { Link } from 'react-router-dom';
import type { Portfolio } from '@/shared/api/responses';
export function PortfolioCard({ portfolio }: { portfolio: Portfolio }) {
const chipStyle = (bg: string): React.CSSProperties => ({
background: bg,
padding: '4px 10px',
borderRadius: 6,
fontSize: 12,
color: '#fff',
fontWeight: 500,
});
return (
(e.currentTarget.style.boxShadow = '0 2px 8px rgba(0,0,0,0.08)')}
onMouseLeave={(e) => (e.currentTarget.style.boxShadow = 'none')}
>
{portfolio.name}
{portfolio.totalValue?.toLocaleString('ru-RU', {
minimumFractionDigits: 2,
maximumFractionDigits: 2,
})}
{portfolio.currency}
{portfolio.description && (
{portfolio.description}
)}
{portfolio.shareCount > 0 && (
{portfolio.shareCount} {pluralize(portfolio.shareCount, 'акция', 'акции', 'акций')}
)}
{portfolio.bondCount > 0 && (
{portfolio.bondCount}{' '}
{pluralize(portfolio.bondCount, 'облигация', 'облигации', 'облигаций')}
)}
{portfolio.positionCount}{' '}
{pluralize(portfolio.positionCount, 'позиция', 'позиции', 'позиций')}
обновлён {new Date(portfolio.updatedAt).toLocaleDateString('ru-RU')}
);
}
function pluralize(n: number, one: string, few: string, many: string): string {
if (n % 10 === 1 && n % 100 !== 11) return one;
if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)) return few;
return many;
}