Jump to a component
AniCanonKit · Characters
VoiceTiles
Voices to cast from, each a tile with its name and a few words on how it sounds ("Bright, determined"). Choosing a tile plays the voice and selects it; five across.
Live, from @anicanon/sakuga 2.0.0
Sakuga for iOS and Android is coming
iOS
Coming soon
VoiceTiles for iOS is in the roughs. The tokens it will read are the ones on this page, the same on every platform.
Android
Coming soon
VoiceTiles for Android is in the roughs. The tokens it will read are the ones on this page, the same on every platform.
- Use it for
- Casting a voice: a tile per voice with its name and a few words on how it sounds ("Bright, determined"), where choosing one plays it and selects it.
- Not for
- Hearing the voice already castAudioPlayer
- Choosing among sound options in the cutWaveform
- A direction choice drawn as iconsOptionTiles
Guidelines
With sound on, a new voice plays the choose sound (README · Sound).
import { VoiceTiles } from '@anicanon/sakuga/anicanonkit';
export default function VoiceTilesExample() {
return (
<VoiceTiles
label="Archetype"
value="Shounen Hero"
options={[
{ label: 'Shounen Hero', description: 'Bright, determined' },
{ label: 'Cool', description: 'Low, unhurried' },
{ label: 'Gruff Mentor', description: 'Weathered, warm' },
{ label: 'Stoic Warrior', description: 'Flat, steady' },
{ label: 'Genki', description: 'Fast, sunny' },
]}
/>
);
}PropsVoiceTilesProps
optionsrequired{ label: string; value?: string; description?: string; }[]valuestringcolumnsnumberlabelstringonChange(value: string) => voidclassNamestringEach token reads a role, and the role lands on a value in each theme. Change the role and every component that reads it follows.
Space and shape
voice-play-icon-sizeicon-size-xsvoices-gapgap-mdvoice-active-scalescale-pressvoice-gapgap-mdvoice-padding-yinset-smvoice-padding-rightinset-smvoice-padding-leftinset-smvoice-radiusradius-mdvoice-inset-ring-widthline-hairlinevoice-checked-inset-ring-widthline-strongvoice-focus-outline-offsetfocus-ring-offsetvoice-play-sizevoice-play-radiusradius-fullvoice-forced-edge-widthline-hairlinevoice-forced-selected-widthline-heavyType
voice-font-familyfont-sansvoice-words-b-fonttext-caption-strongvoice-words-small-fonttext-smallMotion
voice-press-durationmotion-fastvoice-press-easingease-standardvoice-active-durationmotion-instantvoice-durationmotion-fastvoice-easingease-standardChecked 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
- A radio group named by
labeland one Tab stop: arrows move to a voice and choose it throughonChange, each a radio read by its name and description and "checked" when chosen; the play mark is hidden. - 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.