Files
umbyte-landing/frontend/src/components/Icons.tsx
T
admin b117f3a740 feat(landing): второй продукт — Бонитировка
Компания с одним продуктом читается как случайный проект; два продукта в
смежных нишах агропрома показывают специализацию. Бонитировка работает на
живых хозяйствах и имеет свой сайт — по статусу это тоже production.
Добавлена иконка оценочного листа.
2026-08-20 00:10:26 +03:00

110 lines
3.4 KiB
TypeScript

import type { FC, SVGProps } from 'react';
export const Logo: FC<{ size?: number; accent?: string }> = ({
size = 32,
accent = '#22D3EE',
}) => (
<svg width={size} height={size} viewBox="0 0 72 72">
<rect x="6" y="6" width="60" height="60" rx="14" fill="#312E81" />
<circle cx="22" cy="22" r="3.5" fill="white" />
<circle cx="36" cy="22" r="3.5" fill="white" opacity="0.4" />
<circle cx="50" cy="22" r="3.5" fill="white" />
<circle cx="22" cy="36" r="3.5" fill="white" opacity="0.4" />
<circle cx="36" cy="36" r="5" fill={accent} />
<circle cx="50" cy="36" r="3.5" fill="white" />
<circle cx="22" cy="50" r="3.5" fill="white" />
<circle cx="36" cy="50" r="3.5" fill="white" opacity="0.4" />
<circle cx="50" cy="50" r="3.5" fill="white" />
</svg>
);
export const ArrowRightIcon: FC<SVGProps<SVGSVGElement>> = (props) => (
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth={2.5} {...props}>
<path d="M5 12h14M13 5l7 7-7 7" />
</svg>
);
export const ProductIcon: FC<{ name: string; size?: number }> = ({
name,
size = 24,
}) => {
const common = {
width: size,
height: size,
viewBox: '0 0 24 24',
fill: 'none',
stroke: 'currentColor',
strokeWidth: 2,
};
switch (name) {
case 'agroto':
return (
<svg {...common}>
<path d="M12 2L2 7l10 5 10-5-10-5z" />
<path d="M2 17l10 5 10-5" />
<path d="M2 12l10 5 10-5" />
</svg>
);
// Бонитировка — оценочный лист с галочками: планшет с отметками.
case 'bonitirovka':
return (
<svg {...common}>
<rect x="4" y="3" width="16" height="18" rx="2" />
<path d="M9 3h6v3H9z" />
<path d="M8 11l1.6 1.6L13 9" />
<path d="M8 16.5h8" />
</svg>
);
case 'smart-home':
return (
<svg {...common}>
<path d="M3 12l9-9 9 9v9a2 2 0 01-2 2h-4v-7H10v7H6a2 2 0 01-2-2z" />
</svg>
);
default:
return (
<svg {...common}>
<rect x="3" y="3" width="18" height="18" rx="3" />
</svg>
);
}
};
export const ApproachIcon: FC<{ name: string; size?: number }> = ({
name,
size = 18,
}) => {
const common = {
width: size,
height: size,
viewBox: '0 0 24 24',
fill: 'none',
stroke: 'currentColor',
strokeWidth: 2.5,
};
switch (name) {
case 'clock':
return (
<svg {...common}>
<circle cx="12" cy="12" r="9" />
<path d="M12 7v5l3 3" />
</svg>
);
case 'sparkle':
return (
<svg {...common}>
<circle cx="12" cy="12" r="3" />
<path d="M12 2v4M12 18v4M2 12h4M18 12h4" />
</svg>
);
case 'grid':
return (
<svg {...common}>
<path d="M3 3h7v7H3zM14 3h7v7h-7zM14 14h7v7h-7zM3 14h7v7H3z" />
</svg>
);
default:
return null;
}
};