pounce/frontend/src/components/Breadcrumbs.tsx
yves.gugger cff0ba0984 feat: Add Admin Panel enhancements, Blog system, and OAuth
Admin Panel:
- User Detail Modal with full profile info
- Bulk tier upgrade for multiple users
- User export to CSV
- Price Alerts overview tab
- Domain Health Check trigger
- Email Test functionality
- Scheduler Status with job info and last runs
- Activity Log for admin actions
- Blog management tab with CRUD

Blog System:
- BlogPost model with full content management
- Public API: list, featured, categories, single post
- Admin API: create, update, delete, publish/unpublish
- Frontend blog listing page with categories
- Frontend blog detail page with styling
- View count tracking

OAuth:
- Google OAuth integration
- GitHub OAuth integration
- OAuth callback handling
- Provider selection on login/register

Other improvements:
- Domain checker with check_all_domains function
- Admin activity logging
- Breadcrumbs component
- Toast notification component
- Various UI/UX improvements
2025-12-09 16:52:54 +01:00

58 lines
1.4 KiB
TypeScript

'use client'
import Link from 'next/link'
import { ChevronRight, Home } from 'lucide-react'
import clsx from 'clsx'
export interface BreadcrumbItem {
label: string
href?: string
}
interface BreadcrumbsProps {
items: BreadcrumbItem[]
className?: string
}
export function Breadcrumbs({ items, className }: BreadcrumbsProps) {
return (
<nav
aria-label="Breadcrumb"
className={clsx("flex items-center gap-1 text-body-sm", className)}
>
<Link
href="/"
className="flex items-center gap-1 text-foreground-muted hover:text-foreground transition-colors"
>
<Home className="w-4 h-4" />
<span className="sr-only">Home</span>
</Link>
{items.map((item, index) => {
const isLast = index === items.length - 1
return (
<div key={index} className="flex items-center gap-1">
<ChevronRight className="w-4 h-4 text-foreground-subtle" />
{isLast || !item.href ? (
<span className={clsx(
isLast ? "text-foreground font-medium" : "text-foreground-muted"
)}>
{item.label}
</span>
) : (
<Link
href={item.href}
className="text-foreground-muted hover:text-foreground transition-colors"
>
{item.label}
</Link>
)}
</div>
)
})}
</nav>
)
}