jotis.meRegula

SidebarNav

Navegación lateral de 296px de las apps de la suite: marca, búsqueda, secciones, ajustes y ficha del usuario.

Cuándo usarlo

Props. brand (texto o nodo), search, items [{icon, label, href, active, badge}], footerItems, user (props de AvatarLabel).

Visual. Ítems text-md-semibold en text-secondary, icono 24px fg-quaternary; activo bg-secondary_hover. Fondo bg-primary y línea derecha border-secondary.

Accesibilidad. Es un <nav> llamado "Principal"; el ítem active lleva aria-current="page". Un ítem sin href se pinta como texto, no como enlace a #.

Ampliaciones sobre la guía. onLogout se llama al pulsar el botón de cerrar sesión de la ficha del usuario (en la guía no hacía nada) y labels cambia "Principal", "Buscar" y "Cerrar sesión".

Ejemplos

Props

PropTipoPor defectoDescripción
brandReactNode—Marca arriba: texto (en Bricolage Grotesque bold) o un nodo, como un AppIcon con el nombre.
searchboolean—Muestra el buscador bajo la marca.
itemsobligatoriaSidebarNavItem[]—
footerItemsOmit<SidebarNavItem, "badge">[]—Ítems pegados abajo, como Ajustes.
userAvatarLabelProps—Ficha del usuario al pie, con el botón de cerrar sesión.
onLogout(() => void)—Al pulsar el botón de cerrar sesión de la ficha del usuario (ampliación sobre la guía).
labelsPartial<SidebarNavLabels>—Textos que trae el componente, para sustituirlos.
classNamestring—

Código

import { SidebarNav } from "@jotis-me/react";

export default function Page() {
	return (
		<>
			<SidebarNav
				brand="jotis.me"
				search
				items={[
					{ icon: "home-line", label: "Inicio", href: "/", active: true },
					{ icon: "currency-euro", label: "Pecunia", href: "/pecunia/", badge: 3 },
				]}
				footerItems={[{ icon: "settings-02", label: "Ajustes", href: "/ajustes/" }]}
				user={{ initials: "AD", name: "Administrador", supporting: "admin@jotis.me" }}
			/>
		</>
	);
}

Funciona sin directiva (los ítems son enlaces). onLogout es una función: si la usas, envuélvelo en un .tsx y úsalo con client:load.