Sakuga Back to Sakuga
Theme
Sound
Jump to a component

Core · Feedback

Notice

A single line of context inside a page: something to know (info) or something that needs action (attention), with an optional action on the right. Not for errors that block, use the page state for those.

@anicanon/sakuga/uiv1.0Used onWeb · iOS · Android

Live, from @anicanon/sakuga 2.0.0

Sakuga for iOS and Android is coming

iOS

Coming soon

Notice 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

Notice 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
One line of context inside a page: something to know, or something that needs action, with an optional action.
Not for
  • Confirming that something finishedToast
  • A failure where the content should beEmptyState
  • A correction pinned to work on a sheetSlip

Guidelines

Motion: state changes fade with motion-fast; entrances use motion-base and ease-enter.

NoticeExample.jsxReact
import { Button, Notice } from '@anicanon/sakuga/ui';

export default function NoticeExample() {
  return (
    <>
      <Notice
        tone="attention"
        title="Two scenes need a Festival look."
        text="Nothing fits yet."
      >
        <Button variant="primary" size="sm" icon="plus">
          Add a look
        </Button>
      </Notice>
      <Notice title="Build changed." text="New looks use it." />
    </>
  );
}

PropsNoticeProps

tone
'info' | 'attention'Default 'info'
icon
IconName
Defaults by tone: info, or warning for attention.
media
ReactNode
Drawn in place of the icon, e.g. a Loader.
title
string
The bold lead-in.
text
string
children
ReactNode
The action, usually a small Button.
className
string

An IconName is any of the names Icon lists.

NoticeExample.swiftiOS · coming soon
NoticeExample.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

notice-info-bgNotice, info: fill.
bg-fill-subtleshade-a06rgba(11,10,16,0.06)
bg-fill-subtlewhite-a08rgba(255,255,255,0.08)
notice-info-iconNotice, info: icon.
text-mutedneutral-600#5c5b67
text-mutedneutral-400#a3a3a7
notice-attention-bgNotice, attention: fill.
accent-subtlecamellia-600-a10rgba(194,51,95,0.1)
accent-subtlecamellia-400-a14rgba(244,119,159,0.14)
notice-attention-iconNotice, attention: icon.
text-accentcamellia-700#b42354
text-accentcamellia-400#f4779f
notice-titleNotice: bold lead.
text-primaryneutral-925#0b0a10
text-primaryneutral-0#ffffff
notice-textNotice: body text.
text-secondaryneutral-800#2e2d36
text-secondaryneutral-200#dcdcde

Space and shape

notice-gap
gap-lg
12px
notice-padding-y
inset-md
12px
notice-padding-x
inset-lg
16px
notice-radius
radius-md
12px
notice-action-gap
gap-md
8px
notice-icon-size
icon-size-md
20px

Type

notice-font
text-caption
500 13px/18px "Funnel Sans", system-ui, -apple-system, "Segoe UI", sans-serif
notice-body-b-font-weight
weight-bold
700

Motion

notice-rise-in-animation
motion-rise
sk-rise-in 240ms cubic-bezier(0, 0, 0, 1)

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 itself; the title and text read in place, the icon is hidden, and any action in it takes focus. With tone "attention" it says its title and text once, through the page’s one live region, when it appears: a status role on words there from the start is rarely read. A loader passed as media keeps its name.
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.