Sakuga Back to Sakuga
Theme
Sound
Jump to a component

AniCanonKit · Productions

Timesheet

Timesheet is what gets generated for a cut, on a frame grid (24 a second, a heavier tick each second): each video's bracket, the key frames it starts and ends on, and one line per video (where it opens, how it continues). A key sits on a rail above the frames, its number centred in its badge, with a hairline down to its exact frame, which may fall between the ticks.

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

Live, from @anicanon/sakuga 2.0.0

Sakuga for iOS and Android is coming

iOS

Web only

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

Android

Web only

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

Use it for
What gets generated for a cut, on a frame grid: each video's bracket, the key frames it starts and ends on, and one line per video.
Not for
TimesheetExample.jsxReact
import { Timesheet } from '@anicanon/sakuga/anicanonkit';

export default function TimesheetExample() {
  return (
    <Timesheet
      seconds={9}
      note="Keys are the frames a video starts and ends on"
      spans={[
        { start: 0, end: 120, label: 'Video 3', detail: 'opens on the board' },
        {
          start: 120,
          end: 216,
          label: 'Video 4',
          detail: 'continues from key 2',
        },
      ]}
      keys={[
        { at: 10, label: '1' },
        { at: 120, label: '2' },
        { at: 206, label: '3' },
      ]}
    />
  );
}

PropsTimesheetProps

secondsrequired
number
spansrequired
{ start: number; end: number; label: string; detail?: string; }[]
fps
number
label
string
note
string
keys
{ at: number; label: string; }[]
className
string
TimesheetExample.swiftiOS · coming soon
TimesheetExample.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

tsheet-bgTimesheet: the frame grid.
bg-canvasneutral-50#f6f6f8
bg-canvasneutral-950#07070a
tsheet-tickTimesheet: a quarter-second tick.
border-hairlineshade-a08rgba(11,10,16,0.08)
border-hairlinewhite-a06rgba(255,255,255,0.06)
tsheet-tick-secondTimesheet: a second.
border-controlshade-a52rgba(11,10,16,0.52)
border-controlwhite-a45rgba(255,255,255,0.45)
tsheet-spanTimesheet: a video's bracket.
text-secondaryneutral-800#2e2d36
text-secondaryneutral-200#dcdcde
tsheet-key-bgTimesheet: a key frame.
text-primaryneutral-925#0b0a10
text-primaryneutral-0#ffffff
tsheet-key-fgTimesheet: key number.
bg-canvasneutral-50#f6f6f8
bg-canvasneutral-950#07070a
tsheet-metaTimesheet: labels on top.
text-mutedneutral-600#5c5b67
text-mutedneutral-400#a3a3a7
tsheet-labelTimesheet: span labels.
text-secondaryneutral-800#2e2d36
text-secondaryneutral-200#dcdcde
tsheet-label-strongTimesheet: span names.
text-primaryneutral-925#0b0a10
text-primaryneutral-0#ffffff

Space and shape

tsheet-gap
gap-sm
6px
tsheet-top-gap
gap-lg
12px
tsheet-grid-height
its own value
28px
tsheet-grid-radius
radius-xs
4px
tsheet-grid-i-width
line-hairline
1px
tsheet-span-top
its own value
calc((28px - 16px) / 2)
tsheet-span-height
its own value
16px
tsheet-span-border-width
line-hairline
1px
tsheet-span-radius
radius-xs
4px
tsheet-key-top
inset-xs
4px
tsheet-key-size
icon-size-md
20px
tsheet-key-margin-left
its own value
calc(20px / -2)
tsheet-key-radius
radius-full
9999px
tsheet-labels-span-padding-right
inset-md
12px
Aa
tsheet-key-gap
gap-xs
4px
tsheet-key-line-width
line-hairline
1px

Type

tsheet-top-font
text-eyebrow
700 11px/14px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
tsheet-top-letter-spacing
tracking-caps
.06em
tsheet-top-span-font-weight
weight-medium
500
tsheet-key-font
text-micro
700 12px/16px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
tsheet-labels-font
text-small
500 12px/16px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
tsheet-labels-b-font-weight
weight-bold
700

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; a group named by label (default "Videos to make") whose label, note, key frame labels (with "at frame 24") and each video's line (with "frames 0 to 48") read as text.
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.