blog.z0x.ca/src/components/Breadcrumbs.astro
2024-10-06 19:34:24 -07:00

58 lines
1.4 KiB
Text

---
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from '@/components/ui/breadcrumb'
import { Icon } from 'astro-icon/components'
export interface BreadcrumbItem {
href?: string
label: string
icon?: string
}
interface Props {
items: BreadcrumbItem[]
class?: string
}
const { items, class: className } = Astro.props
---
<Breadcrumb className={className}>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="/">
<Icon name="lucide:home" class="size-4" />
</BreadcrumbLink>
</BreadcrumbItem>
{
items.map((item, index) => (
<>
<BreadcrumbSeparator />
<BreadcrumbItem>
{index === items.length - 1 ? (
<BreadcrumbPage>
<span class="flex items-center gap-x-2">
{item.icon && <Icon name={item.icon} class="size-4" />}
{item.label}
</span>
</BreadcrumbPage>
) : (
<BreadcrumbLink href={item.href}>
<span class="flex items-center gap-x-2">
{item.icon && <Icon name={item.icon} class="size-4" />}
{item.label}
</span>
</BreadcrumbLink>
)}
</BreadcrumbItem>
</>
))
}
</BreadcrumbList>
</Breadcrumb>