BetaBeta pública — Consulta las notas de lanzamiento
Documentación

Breadcrumb

Navegación de migas de pan estándar con múltiples niveles.

Paquete
@solidiom/breadcrumb
Versión
0.0.1-next.0
Estado
stable

Ejemplos

import * as Breadcrumb from "@solidiom/breadcrumb"

;<Breadcrumb.Root>
  <Breadcrumb.List>
    <Breadcrumb.Item>
      <Breadcrumb.Link href="/">Inicio</Breadcrumb.Link>
    </Breadcrumb.Item>
    <Breadcrumb.Separator />
    <Breadcrumb.Item>
      <Breadcrumb.Link href="/productos">Productos</Breadcrumb.Link>
    </Breadcrumb.Item>
    <Breadcrumb.Separator />
    <Breadcrumb.Item>
      <Breadcrumb.Link href="/productos/widget" current>
        Widget
      </Breadcrumb.Link>
    </Breadcrumb.Item>
  </Breadcrumb.List>
</Breadcrumb.Root>

Con elipsis

Usa Ellipsis para indicar niveles omitidos en una ruta de migas de pan profundamente anidada.

;<Breadcrumb.Root>
  <Breadcrumb.List>
    <Breadcrumb.Item>
      <Breadcrumb.Link href="/">Inicio</Breadcrumb.Link>
    </Breadcrumb.Item>
    <Breadcrumb.Separator />
    <Breadcrumb.Ellipsis />
    <Breadcrumb.Separator />
    <Breadcrumb.Item>
      <Breadcrumb.Link href="/productos/widget" current>
        Widget
      </Breadcrumb.Link>
    </Breadcrumb.Item>
  </Breadcrumb.List>
</Breadcrumb.Root>

Separador personalizado

Proporciona contenido personalizado a Separator para cambiar el divisor visual entre elementos.

;<Breadcrumb.Root>
  <Breadcrumb.List>
    <Breadcrumb.Item>
      <Breadcrumb.Link href="/">Inicio</Breadcrumb.Link>
    </Breadcrumb.Item>
    <Breadcrumb.Separator>&gt;</Breadcrumb.Separator>
    <Breadcrumb.Item>
      <Breadcrumb.Link href="/docs" current>
        Documentación
      </Breadcrumb.Link>
    </Breadcrumb.Item>
  </Breadcrumb.List>
</Breadcrumb.Root>
Ver código fuente
        /**
 * @solidiom/breadcrumb — Hierarchical navigation breadcrumb.
 *
 * Parts: Root, List, Item, Link, Separator, Ellipsis.
 */

import { type JSX } from "@solidjs/web"
import { applySemanticAttrs } from "@solidiom/runtime"

// ─── Props ─────────────────────────────────────────────────────────────────────

export interface RootProps {
  children: JSX.Element
  class?: string
}

export interface ListProps {
  children: JSX.Element
  class?: string
}

export interface ItemProps {
  children: JSX.Element
  class?: string
}

export interface LinkProps {
  children: JSX.Element
  href: string
  current?: boolean
  class?: string
}

export interface SeparatorProps {
  children?: JSX.Element
  class?: string
}

export interface EllipsisProps {
  children?: JSX.Element
  class?: string
}

// ─── Parts ─────────────────────────────────────────────────────────────────────

export function Root(props: RootProps) {
  return (
    <nav
      aria-label="Breadcrumb"
      class={props.class}
      {...applySemanticAttrs({ scope: "breadcrumb", part: "root" })}
    >
      {props.children}
    </nav>
  )
}

export function List(props: ListProps) {
  return (
    <ol class={props.class} {...applySemanticAttrs({ scope: "breadcrumb", part: "list" })}>
      {props.children}
    </ol>
  )
}

export function Item(props: ItemProps) {
  return (
    <li class={props.class} {...applySemanticAttrs({ scope: "breadcrumb", part: "item" })}>
      {props.children}
    </li>
  )
}

export function Link(props: LinkProps) {
  return (
    <a
      href={props.href}
      aria-current={props.current ? "page" : undefined}
      class={props.class}
      {...applySemanticAttrs({ scope: "breadcrumb", part: "link" })}
    >
      {props.children}
    </a>
  )
}

export function Separator(props: SeparatorProps) {
  return (
    <span
      role="presentation"
      aria-hidden="true"
      class={props.class}
      {...applySemanticAttrs({ scope: "breadcrumb", part: "separator" })}
    >
      {props.children ?? "/"}
    </span>
  )
}

export function Ellipsis(props: EllipsisProps) {
  return (
    <span
      role="presentation"
      class={props.class}
      {...applySemanticAttrs({ scope: "breadcrumb", part: "ellipsis" })}
    >
      {props.children ?? "..."}
    </span>
  )
}