Skip to main content

Sidebar

Interactive

See Sidebar in Storybook for every variant, with live controls.

The app's primary navigation column, grouped into titled sections.

import { Sidebar } from "@kairosis/eidos";

<Sidebar
header={<span style={{ fontWeight: 600 }}>eidos</span>}
sections={[
{
title: "Workspace",
items: [
{ id: "runs", label: "Runs", icon: "play", count: 12 },
{ id: "sources", label: "Sources", icon: "database" },
],
},
]}
activeItem={active}
onSelect={setActive}
/>;

Props

PropTypeDefaultDescription
sectionsSidebarSection[]Required
activeItemstringId of the current item
onSelect(id: string) => void
headerReactNodeAbove the sections — usually the wordmark
footerReactNodeBelow a top border — usually the user
widthnumber232px

SidebarSection is { title?, items }; SidebarItem is { id, label, icon?, count?, badge? }.

Guidelines

  • There is no Eidos logo. Render "eidos" in lowercase Geist Semibold wherever a mark would go. Don't draw one.
  • Items are real buttons and set aria-current when active.
  • Section titles are uppercase mono — write them in sentence case; CSS uppercases them.
  • count is a mono number at the right edge; badge takes an arbitrary node for anything richer.