components / 02

marked tabs

selection stays familiar. the active thought gets a human mark.

shadcnnpx shadcn@latest add berkantay/cheez/marked-tabs
live

playground

selected: notes
small details should still feel made by someone.
orientation
activation
character
active mark
hover mark
active ink
hover ink
<MarkedTabs defaultValue="notes" orientation="horizontal">
  <MarkedTabsList activateOnFocus={false}>
    <MarkedTabsTrigger
      value="notes"
      mark="underline"
      interactionMark="short-underline"
      character="rushed"
      markColor="#ff4f2e"
      interactionColor="#35d9ff"
    >
      notes
    </MarkedTabsTrigger>
  </MarkedTabsList>
  <MarkedTabsPanel value="notes">...</MarkedTabsPanel>
</MarkedTabs>
behavior

states

one purpose per state
inactive
hover
focus visible
active
disabled
active + hover
reference

api

composable parts, native ref forwarding
partproptypedefaultpurpose
Rootvalueanycontrolled active tab
RootdefaultValueany0initial uncontrolled tab
RootonValueChangefunctionselection callback
Rootorientation"horizontal" | "vertical""horizontal"layout and arrow-key axis
ListactivateOnFocusbooleanfalseautomatic or manual keyboard activation
ListloopFocusbooleantruewrap arrow-key focus
Triggervalueanyrequiredconnects trigger and panel
Triggerdisabledbooleanfalseremoves a tab from interaction
TriggermarkCheezType"underline"persistent active mark
TriggerinteractionMarkCheezType"short-underline"hover and focus mark
TriggermarkColorstring"#ff4f2e"active mark color
TriggerinteractionColorstringmarkColorhover and focus color
Triggermarkedbooleanundefinedcontrolled mark visibility
Triggercharacter"calm" | "rushed" | "chaotic""rushed"drawing personality
Panelvalueanyrequiredmatching trigger value
PanelkeepMountedbooleanfalseretain inactive panel DOM

behavior notes

  • inactive tabs remain visually quiet
  • hover and focus use a shorter interaction mark
  • the selected tab keeps its full active mark
  • arrow keys follow the chosen orientation
  • manual activation uses Enter or Space; automatic activation follows focus
  • disabled tabs are skipped by keyboard navigation