Theme
Sound
Jump to a component
Core · Containers
Panel
Panel is a Studio card: an AniCanon™ icon, a title, one line that explains it, an optional action, then its controls.
Live, from @anicanon/sakuga 2.0.0
Sakuga for iOS and Android is coming
iOS
Web only
Panel is made for the web, and isn’t part of Sakuga for iOS yet.
Android
Web only
Panel is made for the web, and isn’t part of Sakuga for Android yet.
- Use it for
- A Studio card that explains itself: an AniCanon™ icon, a title, a one-line subtitle, an optional action, then its controls.
- Not for
- A folded section showing its current valuePanelRow
- The top of a side panel in StoryPanelHeader
- A heading over a shelfSectionHeader
- A task that needs the page's whole attentionDialog
Guidelines
- Every Panel explains itself in its subtitle ("Core shot decisions, with a technique library behind them").
- The header icon comes from the AniCanon™ set and takes
panel-icon. - Put collapsed settings in rows below Panels rather than opening every Panel at once.
- The action may be a component: pass it in
slot="action"(a close button, Remove). selectedmarks the one picked among several panels (a take chosen to cast).
import { Button, Panel } from '@anicanon/sakuga/ui';
export default function PanelExample() {
return (
<Panel
icon="camera"
title="Camera and framing"
subtitle="Core shot decisions, with a technique library behind them"
action={
<Button variant="ghost" size="sm" icon="film">
Techniques
</Button>
}
>
<p
style={{
margin: 0,
color: 'var(--text-secondary)',
font: '400 14px/20px var(--font-sans)',
}}
>
Tiles go here.
</p>
</Panel>
);
}PropsPanelProps
iconIconNametitlestringsubtitlestringactionReactNodeselectedbooleanOne choice among several (a take picked).
childrenReactNodeOr slot="action".
classNamestringAn IconName is any of the names Icon lists.
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
panel-bgPanel: card surface in the Studio.bg-surfaceneutral-0#ffffffbg-surfaceneutral-900#111117panel-borderPanel: card edge.border-hairlineshade-a08rgba(11,10,16,0.08)border-hairlinewhite-a06rgba(255,255,255,0.06)panel-iconPanel: header icon.accentcamellia-600#c2335faccentcamellia-400#f4779fpanel-titlePanel: header title.text-primaryneutral-925#0b0a10text-primaryneutral-0#ffffffpanel-subtitlePanel: header line under the title.text-mutedneutral-600#5c5b67text-mutedneutral-400#a3a3a7Space and shape
panel-gapgap-xl16px
panel-paddinginset-lg16px
panel-radiusradius-lg16px
panel-inset-ring-widthline-hairline1px
panel-head-gapgap-lg12px
panel-icon-padding-topinset-2xs2px
panel-sub-margin-topgap-2xs2px
panel-icon-sizeicon-size-md20px
panel-selected-inset-ring-widthline-strong2px
panel-forced-selected-widthline-strong2px
Type
panel-font-familyfont-sansFunnel Sans
panel-title-fonttext-label600 14px/20px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
panel-sub-fonttext-caption500 13px/18px "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
- A region named by
title, with the title as a level-3 heading that ends in "selected" whenselected, and the subtitle as text; the icon is hidden, and the action and controls take focus in order. - 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.