components / 14

marked accordion

opening a section does more than reveal content. the hand circles back and claims the whole thought.

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

playground

1 open

no. paths use SVG and the Web Animations API already available in the browser.

size
character
boundary
open title
indicator
boundary ink
title ink
expansion
<MarkedAccordion
  value={value}
  onValueChange={setValue}
  size="medium"
  character="rushed"
  frameMark="corner-box"
>
  <MarkedAccordionItem value="motion">
    <MarkedAccordionHeader>
      <MarkedAccordionTrigger>does this need motion?</MarkedAccordionTrigger>
    </MarkedAccordionHeader>
    <MarkedAccordionPanel>no external motion library.</MarkedAccordionPanel>
  </MarkedAccordionItem>
</MarkedAccordion>
behavior

states

single, multiple, disabled, searchable
single

no. paths use SVG and the Web Animations API already available in the browser.

multiple

no. paths use SVG and the Web Animations API already available in the browser.

yes. normalized paths stretch with the marked element while keeping their drawing character.

disabled item

no. paths use SVG and the Web Animations API already available in the browser.

whole set disabled

no. paths use SVG and the Web Animations API already available in the browser.

large bubble

browser searchable

composition

configure the hand

progressive controls, all open
three decisions

keep the whole configuration visible or collapse what you have already settled.

drawing character

ink intensity
64%

reference

api

root, item, header, trigger, panel
partproptypedefaultpurpose
Rootvaluestring[]controlled expanded items
RootdefaultValuestring[][]initial expanded items
RootonValueChangefunctionexpansion callback with reason
Rootmultiplebooleanfalseallow several open panels
Rootdisabledbooleanfalsedisable the whole set
RootkeepMountedbooleanfalseretain closed panel DOM
RoothiddenUntilFoundbooleanfalseallow browser find to reveal content
Rootsize"small" | "medium" | "large""medium"spacing and type scale
RootframeMarkCheezType"corner-box"expanded item boundary
RootframeColorstring"#8f74ff"boundary ink
RootopenMarkCheezType"underline"expanded title mark
RootopenColorstring"#b7ff3c"expanded title ink
RootinteractionMarkCheezType"short-underline"hover and focus mark
RootinteractionColorstring"#35d9ff"interaction ink
RooticonMarkCheezType"cross"hand-drawn plus/close glyph
RooticonColorstring"#ff5fa2"glyph ink
Rootcharacter"calm" | "rushed" | "chaotic""rushed"drawing personality
Itemvaluestringrequiredstable item identity
Itemdisabledbooleanfalsedisable one section
ItemonOpenChangefunctionlocal expansion callback
ItemframeMarkCheezTyperoot valuelocal boundary override
PanelkeepMountedbooleanroot valuelocal mounting override
PanelcontentClassNamestringinner content styling

behavior notes

  • every heading contains a native button tied to its panel
  • Tab follows normal document order between triggers
  • the panel animates using Base UI's measured CSS height variable
  • multiple mode accepts several expanded values
  • hidden-until-found lets browser search reveal closed content
  • the rotating cross is a Cheez drawing, not a stock plus icon