mirror of
https://github.com/cheveguerra/bot-whatsapp.git
synced 2026-04-18 19:49:16 +00:00
78 lines
2.3 KiB
TypeScript
78 lines
2.3 KiB
TypeScript
import { component$, useStyles$ } from '@builder.io/qwik'
|
|
import { useContent, useLocation, ContentMenu } from '@builder.io/qwik-city'
|
|
import styles from './breadcrumbs.css?inline'
|
|
|
|
export const Breadcrumbs = component$(() => {
|
|
useStyles$(styles)
|
|
|
|
const { menu } = useContent()
|
|
const loc = useLocation()
|
|
|
|
const breadcrumbs = createBreadcrumbs(menu, loc.pathname)
|
|
if (breadcrumbs.length === 0) {
|
|
return null
|
|
}
|
|
|
|
return (
|
|
<nav class="breadcrumbs">
|
|
{breadcrumbs.map((b) => (
|
|
<span>{b.href ? <a href={b.href}>{b.text}</a> : b.text}</span>
|
|
))}
|
|
</nav>
|
|
)
|
|
})
|
|
|
|
export function createBreadcrumbs(
|
|
menu: ContentMenu | undefined,
|
|
pathname: string
|
|
) {
|
|
if (menu?.items) {
|
|
for (const indexA of menu.items) {
|
|
const breadcrumbA: ContentBreadcrumb = {
|
|
text: indexA.text,
|
|
}
|
|
if (typeof indexA.href === 'string') {
|
|
breadcrumbA.href = indexA.href
|
|
}
|
|
if (indexA.href === pathname) {
|
|
return [breadcrumbA]
|
|
}
|
|
|
|
if (indexA.items) {
|
|
for (const indexB of indexA.items) {
|
|
const breadcrumbB: ContentBreadcrumb = {
|
|
text: indexB.text,
|
|
}
|
|
if (typeof indexB.href === 'string') {
|
|
breadcrumbB.href = indexB.href
|
|
}
|
|
if (indexB.href === pathname) {
|
|
return [breadcrumbA, breadcrumbB]
|
|
}
|
|
|
|
if (indexB.items) {
|
|
for (const indexC of indexB.items) {
|
|
const breadcrumbC: ContentBreadcrumb = {
|
|
text: indexC.text,
|
|
}
|
|
if (typeof indexC.href === 'string') {
|
|
breadcrumbC.href = indexC.href
|
|
}
|
|
if (indexC.href === pathname) {
|
|
return [breadcrumbA, breadcrumbB, breadcrumbC]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return []
|
|
}
|
|
|
|
interface ContentBreadcrumb {
|
|
text: string
|
|
href?: string
|
|
}
|