Sakuga Back to Sakuga
Theme
Sound
Jump to a component

AniCanonKit · Story

EntityRow

EntityRow is the one row kind on Story: a picture, the name, its state, and the work that told it as a chip on the right.

@anicanon/sakuga/anicanonkitv1.0Used onWebFrom AniCanon™

Live, from @anicanon/sakuga 2.0.0

Sakuga for iOS and Android is coming

iOS

Web only

EntityRow is made for the web, and isn’t part of Sakuga for iOS yet.

Android

Web only

EntityRow is made for the web, and isn’t part of Sakuga for Android yet.

Use it for
Every row on Story: a character, a bond, a place, an event or a question, with its state and the work that told it.
Not for
  • A row outside Story, such as a take or a settingListRow
  • An open question with its planted, raised and answered stepsQuestionRow
  • Something found in writing, waiting for the personProposalCard
  • The people in a character's life beside their nameCastAvatar

Guidelines

  • visual picks the picture: a portrait (avatar), two overlapping portraits for a bond (pair), a place's art (place), an event's shape (event), a question's three-step track (question).
  • State is before/after (drawn as StateChange) or any badges in slot="state".
  • faded for something that no longer counts at this moment.
EntityRowExample.jsxReact
import { EntityRow } from '@anicanon/sakuga/anicanonkit';

export default function EntityRowExample() {
  return (
    <EntityRow
      visual={{ kind: 'question', stage: 2 }}
      name="Cure, or the next threat?"
      after="Escalated"
      chip="Ep 1"
    />
  );
}

PropsEntityRowProps

namerequired
string
visual
Visual
before
string
after
string
afterVariant
'new' | 'alert'
afterIcon
IconName
beforeIcon
IconName
chip
string
faded
boolean
state
ReactNode
The state in place of before/after (as slot="state").
end
ReactNode
What sits at the end (as slot="end").
children
ReactNode
className
string

An IconName is any of the names Icon lists.

Types

Visual is one of 9 names.

EntityRowExample.swiftiOS · coming soon
EntityRowExample.ktAndroid · coming soon

Each token reads a role, and the role lands on a value in each theme. Change the role and every component that reads it follows.

Colour

entity-nameEntityRow: name.
text-primaryneutral-925#0b0a10
text-primaryneutral-0#ffffff
entity-chip-borderEntityRow: the told-by chip outline.
border-dividershade-a12rgba(11,10,16,0.12)
border-dividerwhite-a12rgba(255,255,255,0.12)
entity-chip-fgEntityRow: the told-by chip label.
text-mutedneutral-600#5c5b67
text-mutedneutral-400#a3a3a7
entity-visual-bgEntityRow: picture placeholder.
bg-fill-subtleshade-a06rgba(11,10,16,0.06)
bg-fill-subtlewhite-a08rgba(255,255,255,0.08)
entity-visual-fgEntityRow: initials and icons in the picture slot.
text-mutedneutral-600#5c5b67
text-mutedneutral-400#a3a3a7
entity-pair-gapEntityRow: the ring between two overlapping portraits.
bg-surfaceneutral-0#ffffff
bg-surfaceneutral-900#111117

Space and shape

entity-gap
gap-md
8px
entity-min-height
its own value
40px
entity-padding-y
inset-xs
4px
entity-visual-faded-opacity
opacity-muted
0.6
entity-chip-faded-inset-ring-width
line-hairline
1px
entity-words-gap
gap-xs
4px
entity-chip-height
its own value
20px
entity-chip-padding-x
inset-sm
8px
entity-chip-radius
radius-full
9999px
entity-chip-inset-ring-width
line-hairline
1px
entity-visual-place-radius
radius-xs
4px
entity-visual-pair-width
its own value
44px
entity-visual-pair-img-size
its own value
24px
entity-visual-pair-img-ring-width
line-strong
2px
entity-visual-pair-img-margin-left
its own value
calc(-1 * 8px)
entity-visual-slot-width
its own value
44px
entity-visual-maki-height
its own value
32px
entity-visual-question-i-size
its own value
8px
entity-visual-question-i-radius
radius-xs
4px
entity-visual-question-b-width
its own value
4px
entity-visual-question-b-height
line-strong
2px
entity-visual-question-b-radius
radius-full
9999px
entity-visual-place-icon-size
icon-size-xs
14px
entity-visual-slot-icon-size
icon-size-sm
16px

Type

entity-words-b-font
text-caption-strong
600 13px/18px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
entity-chip-font
text-small-strong
600 12px/16px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
entity-visual-initial-font
text-micro
700 12px/16px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif

Checked automatically with axe-core 4.11.4 against WCAG 2.2 A and AA, on the live preview above, in light and dark, on 26 October 2026.

Result
No issues found, in light or in dark.
By design
Not focusable; the name, "not at this moment" when faded, its state and the chip read as text in order, then whatever sits at the end. Pictures and initials are hidden, and a faded row dims its picture while its words stay readable.
Not tested
The automated check doesn't test keyboard use, focus order or what a screen reader says. The lines above are the design system's own account of them.