๐Ÿ™ Onigiri

The Crunchyroll design system, rendered live from its own tokens and components. It cannot drift from what ships.

Docs draft

AppHeader

When to use it

useThe site bar: logo, primary nav links, search/watchlist/account cluster. Premium members get no upsell; free users get the crown chip (Try free / Go per trial eligibility); logged-out keeps the crown chip and the placeholder account trigger โ€” there is no separate Log in button in the reference.
useMinimal: centered logo only, for auth and checkout flows.

Variants

session ยท premium-member / free-try / free-go / logged-out / minimal / loading โ€” Mirrors the old assembled set's real combinations. Loading skeletons the icon cluster and hides the nav; the account trigger stays.

Anatomy

.HeaderLink โ€” rest text.secondary โ†’ hover text.primary โ†’ active/open accent.text (the old raw-orange active died with the fill-not-text ruling). Caret boolean renders the dropdown chevron (Categories, News); Open state pairs with the attached panel. aria-current on the active link, aria-expanded on caret links.

nav divider โ€” 1px border.subtle rule between the primary group (New/Popular/Simulcast/Categories) and the secondary group (Manga/Games/Store/News) โ€” from the old header's Bar.

.HeaderPremium โ€” Crown upsell chip: crown accent.base + offer line accent.text over 'Premium' text.primary. Offer = Try free (trial-eligible) / Go.

.HeaderUser โ€” Avatar trigger: Avatar 32 (or placeholder person circle when logged out) + caret. Badge boolean shows the unread dot ringed in bg.primary so it reads over any avatar.

.HeaderIcon โ€” 40px icon button with currentColor state layers; NotificationBadge overlays the corner.

.HeaderLogo โ€” INTERIM home for the logo lockup until the Brand page owns logos.

menus โ€” The mega menu (onigiri.mega-menu) and user menu (onigiri.user-menu) attach under the caret links and .HeaderUser; they are Menu/MenuItem compositions, not header variants.

Design specifications

height60px on color.bg.primary, border.subtle bottom
linktype.body, space.8 padding
premium-chipcrown 24 color.accent.base; offer type.caption color.accent.text; Premium type.label color.text.primary
skeleton40px circles in color.bg.secondary โ€” the card Loading pattern's tokens

Accessibility

header landmark + nav with a label; the logo link is named 'Crunchyroll home'; menus open from labeled buttons.