feat(admin): Control Center redesign, Explore dual-view и полный RU/EN i18n
CI / test (push) Failing after 3m9s
CI / push-image (push) Has been skipped
CI / ci-done (push) Failing after 0s

Refs EventHub/EventHubFrontAdmin#32
This commit is contained in:
2026-07-14 17:58:33 +03:00
parent de379e28bf
commit fd2c1f10ad
95 changed files with 12699 additions and 4410 deletions
+37
View File
@@ -0,0 +1,37 @@
import { Link } from 'react-router-dom';
import { ChevronRight } from 'lucide-react';
import { cn } from '@/lib/utils';
export type BreadcrumbItem = {
label: string;
href?: string;
};
interface BreadcrumbsProps {
items: BreadcrumbItem[];
className?: string;
}
export function Breadcrumbs({ items, className }: BreadcrumbsProps) {
if (items.length === 0) return null;
return (
<nav aria-label="Хлебные крошки" className={cn('flex flex-wrap items-center gap-1 text-sm text-muted-foreground', className)}>
{items.map((item, index) => {
const isLast = index === items.length - 1;
return (
<span key={`${item.label}-${index}`} className="inline-flex items-center gap-1">
{index > 0 && <ChevronRight className="h-3.5 w-3.5 opacity-60" />}
{item.href && !isLast ? (
<Link to={item.href} className="hover:text-foreground hover:underline underline-offset-4">
{item.label}
</Link>
) : (
<span className={cn(isLast && 'font-medium text-foreground')}>{item.label}</span>
)}
</span>
);
})}
</nav>
);
}