Sakuga Back to Sakuga
Theme
Sound
Jump to a component

AniCanonKit · AniCanon™

FragmentBalance

The Fragments balance in its places: a pill in top bars, a block in the sidebar, a held line while a generation is running, inline: the mark and an amount inside a sentence ("~520 is held when you start"), and card: the balance as a wallet card. Built only from core components and tokens; it lives in AniCanonKit, not the core.

@anicanon/sakuga/anicanonkitv1.0Used onWeb · iOS · AndroidFrom AniCanon™

Live, from @anicanon/sakuga 2.0.0

Sakuga for iOS and Android is coming

iOS

Coming soon

FragmentBalance 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

FragmentBalance 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
The Fragments balance in its places: a pill in a top bar, a block in the sidebar, a hold while a generation runs, an amount inside a sentence ("~520 is held when you start"), and the wallet card that leads the Fragments page on desktop and phone.
Not for

Guidelines

card is the vault at wallet size, in a bank card's proportions (1.586:1, the ISO ID-1 card, with its small corner), for the Fragments screen on phone and desktop. It is also the balance at stake on the app-consent page. The balance is its headline, title (the plan) sits in the corner, held and text run along the foot, and image rests in the far corner behind nothing but the card. It keeps its dark vault in both themes, like a card in a wallet. Use it once per screen, at the top. Say the promise on it: "available · Fragments never expire" goes in caption.

FragmentBalanceExample.jsxReact
import { FragmentBalance } from '@anicanon/sakuga/anicanonkit';

export default function FragmentBalanceExample() {
  return (
    <>
      <FragmentBalance amount="9,427" />
      <FragmentBalance variant="block" amount="9,427" />
      <FragmentBalance
        variant="held"
        amount="20"
        text="Charged when you approve it."
      />
      <FragmentBalance
        variant="card"
        amount="9,427"
        title="Creator"
        held="520"
        text="for 2 jobs in progress"
      />
    </>
  );
}

PropsFragmentBalanceProps

amountrequired
string
variant
'pill' | 'block' | 'held' | 'inline' | 'card'
caption
string
title
string
text
string
held
string
card: what jobs in progress hold, read along the foot with the mark ("520" is read "520 held").
image
string
card: the plan's own art, resting in the far corner.
href
string
block: where it leads; without it, a button that runs onClick.
onClick
MouseEventHandler
FragmentBalanceExample.swiftiOS · coming soon
FragmentBalanceExample.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

fragments-vault-bgFragments balance card: the soul-vault surface, dark in both themes.
spirit-vault#15112a
spirit-vault#15112a
fragments-rimFragments balance card: violet rim and the dot-screentone watermark.
spirit-500#8b6cf0
spirit-500#8b6cf0
fragments-eyebrowFragments balance card: the pink FRAGMENTS eyebrow. The Dark accent in both themes, because the vault is dark in both.
camellia-400#f4779f
camellia-400#f4779f
fragments-amountFragments balance card: the balance figure.
text-on-medianeutral-0#ffffff
text-on-medianeutral-0#ffffff
fragments-captionFragments balance card: secondary lines.
text-on-media-mutedneutral-400#a3a3a7
text-on-media-mutedneutral-400#a3a3a7

Space and shape

fragments-pill-gap
gap-sm
6px
fragments-pill-height
its own value
28px
fragments-pill-padding-x
inset-sm
8px
fragments-pill-radius
radius-full
9999px
fragments-pill-inset-ring-width
line-hairline
1px
fragments-block-gap
gap-lg
12px
fragments-block-padding
inset-md
12px
fragments-block-radius
radius-md
12px
fragments-block-inset-ring-width
line-hairline
1px
fragments-held-gap
gap-lg
12px
fragments-held-padding-y
inset-md
12px
fragments-held-padding-x
inset-lg
16px
fragments-held-radius
radius-md
12px
fragments-block-mark-size
its own value
28px
fragments-held-mark-size
icon-size-md
20px
fragments-pill-mark-size
icon-size-sm
16px
fragments-big-mark-size
its own value
28px
fragments-foot-mark-size
icon-size-xs
14px
fragments-inline-mark-size
icon-size-xs
14px
fragments-inline-vertical-align
its own value
calc(-1 * 2px)
fragments-inline-gap
gap-2xs
2px
fragments-block-active-scale
scale-press-lg
.98
fragments-card-gap
gap-2xs
2px
fragments-card-aspect-ratio
its own value
1.586/1
fragments-card-padding
inset-lg
16px
fragments-card-radius
radius-md
12px
fragments-card-inset-ring-width
line-hairline
1px
fragments-card-art-right
its own value
calc(-1 * 24px)
fragments-card-art-bottom
its own value
calc(-1 * 16px)
fragments-card-art-height
its own value
176px
fragments-plan-inset
inset-lg
16px
fragments-big-gap
gap-md
8px
fragments-big-margin-top
gap-lg
12px
fragments-foot-gap
gap-sm
6px
fragments-foot-padding-top
inset-lg
16px

Type

fragments-font-family
font-sans
Funnel Sans
fragments-pill-font
text-micro
700 12px/16px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
fragments-caption-font-weight
weight-medium
500
fragments-eyebrow-font
text-eyebrow
700 11px/14px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
fragments-eyebrow-letter-spacing
tracking-caps
.06em
fragments-amount-font
text-title-3
700 20px/26px "Funnel Display", "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
fragments-held-b-font-weight
text-label-weight
600
fragments-held-b-font-size
text-label-size
14px
Aa
fragments-held-span-font-size
text-caption-size
13px
Aa
fragments-inline-font-weight
weight-strong
600
fragments-inline-caption-font-weight
weight-medium
500
fragments-plan-font
text-micro
700 12px/16px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
fragments-big-font
text-title-1
700 30px/36px "Funnel Display", "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
fragments-big-letter-spacing
its own value
calc(-1 * -.01em)
fragments-card-caption-font
text-caption
500 13px/18px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
fragments-foot-font
text-caption
500 13px/18px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
fragments-foot-b-font-weight
weight-bold
700

Motion

fragments-block-duration
motion-fast
160ms
fragments-block-easing
ease-standard
cubic-bezier(0.2, 0, 0, 1)
fragments-block-active-duration
motion-instant
100ms

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
The variant decides: block is a link named "Fragments balance: 1,240" (a button running onClick without href), card a group of that name, and pill, card and inline read their amount as "1,240 fragments"; held is said once through the page's live region when it appears ("120 held"), then reads as its text. The mark is hidden in every variant.
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.