コンポーネントカタログComponent Catalog
「最もシンプルで、最も信頼でき、一貫した佇まいを持つ」ことを競争軸とする、汎用デザインシステムの部品リファレンス。地は白に近いグレージュ、署名色は一点だけ。署名色は臙脂に固定せず、アプリごとにブランド色を定義できる(左下のAPP BRANDで切替)。見本(プロダクトの図)は角丸を持ち、カタログの版面(地)は罫と図番号だけで組む——図と地に異なる文法を与えることで、図のJabaracDesignらしさが際立つ。A component reference for a general-purpose design system that competes on being "the simplest, the most trustworthy, with a consistent bearing." The ground is a near-white greige; the signature color appears just once. It is not fixed to crimson—each app defines its own brand color (switch it under APP BRAND, lower left). The specimens (the product figures) carry rounded corners, while the catalog's page (the ground) is set with rules and figure numbers alone—giving figure and ground different grammars lets the JabaracDesign character of the figure stand out.
Color & Theming
配色・テーマ--brand-base を1つ差し替えるだけで自分のブランド色を持てる(左下のAPP BRANDで切替して確認できる)。Nightの明度調整は color-mix で自動導出され、各アプリ色でも効く。The ground is greige. The signature color (--brand) is not a product color but a symbolic one, used only for the logo, the breath line, the core of selection, and the seal of sharing. It is a token, not a fixed value—an app gets its own brand color by swapping a single --brand-base (try it under APP BRAND, lower left). Night's brightness adjustment is derived automatically with color-mix and works for every app color.| トークンtoken | 色(現在のモード)color (current mode) | 役割role |
|---|---|---|
| 地・面(奥→手前)ground & surface (back → front) | ||
| --bg | | 最背面の地backmost ground |
| --bg-line | | 地の上の罫rule on the ground |
| --bg-raised | | 持ち上がった地(プロダクトの面)raised ground (product surface) |
| --surface | | 面(カード等)surface (cards, etc.) |
| --line | | 罫rule |
| 文字(本文→補助)text (body → muted) | ||
| --text | | 本文body text |
| --text-muted | | 補助文字muted text |
| 署名色(ブランド・テーマ可能)signature (brand · themeable) | ||
| --brand | | 署名色(記号の一点のみ)signature (a single symbolic point) |
| --brand-soft | | 署名色・淡signature, soft |
| --on-brand | | 署名色塗りの上の文字text on a brand fill |
| 主動作・分類・状態action · classification · status | ||
| --cta | | 主動作(沈むトープ)primary action (sunken taupe) |
| --on-cta | | 主動作の上の文字text on the primary action |
| --accent | | 分類色(現在のアプリ)classification (current app) |
| --ok | | 成功(Moss)success (Moss) |
| --err | | エラー(Ember)error (Ember) |
| トークンtoken | 色(固定)color (fixed) | 色相hue |
|---|---|---|
| --red | | 赤red |
| --orange | | 橙orange |
| --yellow | | 黄yellow |
| --green | | 緑green |
| --teal | | 青緑teal |
| --blue | | 青blue |
| --purple | | 紫purple |
| --pink | | 桃pink |
| --brown | | 茶brown |
| --gray | | 灰gray |
--accent は、表示中アプリがこの中から選んだ1色を指す(House=--yellow)。彩度を落として地に沈める原則のまま、タグ・ドットなど分類の一点に用いる。Classification colors are fixed values in the primitive layer—unchanged when you switch theme (Light/Night) or app (which is why the values above read the same in both modes). The semantic --accent points to one of them chosen by the current app (House = --yellow). Used—desaturated and sunken into the ground—only at single points of classification such as tags and dots.--brand-base を1つ定義するだけで署名色を持つ。臙脂はその既定(House)に過ぎない。掟一画面で署名色が出るのは記号の一点のみ——ロゴ・息継ぎ線・選択の核・共有の封。通常のボタンには使わない(主動作はTaupe)。棄却アプリごとに鮮やかな主張色を複数持たせる案は、スイートが騒がしくなるため捨てた。色は1色、しかも沈める。採用分類色は Notion 流に色相環10色(--red…--gray)へ拡張。ただし彩度は落として地に沈める原則は不変——分類はタグ・ドットの一点に留め、面を塗らない。旧名(--c-sand等)は近い色相のエイリアスとして温存した。AdoptedThe signature is a token, not a fixed value. Each app gets its signature by defining a single --brand-base. Crimson is merely the default (House). RuleOn one screen the signature appears at only one symbolic point—logo, breath line, the core of selection, the seal of sharing. It is never used on ordinary buttons (the primary action is Taupe). RejectedGiving each app several vivid assertive colors was discarded—it makes the suite noisy. One color, and a sunken one at that.AdoptedClassification colors are extended to a Notion-style hue wheel of ten (--red…--gray). The rule is unchanged—desaturated and sunken into the ground: classification stays at a single point (tag, dot), never filling a surface. The old names (--c-sand, etc.) are kept as aliases to the nearest hue.Typography
書体この記録は 過去3年 にわたり 1,284 件を数える。詳細は 配色の章 を参照。本文中の強調は地の色へ引き上げ、数値は等幅、リンクは署名色を使わず罫で示す。This record counts 1,284 entries over the past three years. See the Color chapter for details. In-text emphasis is lifted to the ground color, numbers are monospaced, and links are shown with a rule rather than the signature color.
最もシンプルで、最も信頼でき、一貫した佇まいを持つ。JabaracDesign 思想The simplest, the most trustworthy, a consistent bearing.JabaracDesign philosophy
- マーカーは署名色を使わず、地に沈む罫の点で示す。Markers avoid the signature color, shown as a rule-dot that sinks into the ground.
- 署名色は記号色——ロゴ・息継ぎ線・選択の核・共有の封にのみ用いる。The signature is a symbolic color—used only for logo, breath line, the core of selection, the seal of sharing.
- 箇条書きは本文と同じ行間で、項目間にだけ一拍の余白を置く。Lists share the body's leading, placing a single beat of space only between items.
.ty-strong(強調)/.ty-num(等幅数字)/.ty-link(罫リンク)/.ty-quote(引用・署名色の縦罫)/.ty-list(箇条書き)。.ty-strong (emphasis) / .ty-num (monospaced figures) / .ty-link (rule link) / .ty-quote (quote · signature-color vertical rule) / .ty-list (bulleted list).| role | 書体font | size | 行間leading | 主な用途primary use |
|---|---|---|---|---|
| .ty-display | 明朝 500Mincho 500 | 32 | 1.5 | 章扉・最大標題Chapter title · largest |
| .ty-headline | 明朝 500Mincho 500 | 26 | 1.5 | ヘッドラインHeadline |
| .ty-title | 明朝 500Mincho 500 | 22 | 1.55 | タイトル・カード見出しTitle · card heading |
| .ty-subhead | 角ゴ 700Gothic 700 | 17 | 1.6 | サブヘッドラインSubheadline |
| .ty-lead | 角ゴ 400Gothic 400 | 17 | 1.75 | リード(導入段落)Lead (intro paragraph) |
| .ty-body | 角ゴ 400Gothic 400 | 15 | 1.9 | 本文Body |
| .ty-supporting | 角ゴ 400Gothic 400 | 13 | 1.8 | サポーティングテキストSupporting text |
| .ty-caption | 角ゴ 400Gothic 400 | 11.5 | 1.7 | キャプション・脚注Caption · footnote |
| .ty-label | 角ゴ 700Gothic 700 | 11.5 | 1.5 | ラベル・オーバーライン(字間.14em)Label · overline (tracking .14em) |
| .ty-data | 明朝 tnumMincho tnum | 32 | 1.2 | 数値(桁が動いても揺れない)Numbers (steady as digits change) |
採用二層を書体で分離した。明朝=記憶・蓄積(見出し・数値・署名)、角ゴ=操作・現在(本文・UI)。和文は palt で詰め、数値は tnum で等幅。色(ink→ash)でも階層を作り、サイズだけに頼らない。
棄却等比スケール(modular scale 1.25 等)。機械的な均一刻みは全レイヤーが既定値へ収束する「AI感」を強めるため、重みで不均等に刻んだ(上は大胆に、下は密に)。
保留リンク色。署名色は記号色のため本文リンクには使わず、当面は罫(下線)で示す。色付きリンクを導入するかは、用途が固まるまで保留。
AdoptedThe two layers are split by typeface. Mincho = memory & accumulation (headings, numbers, signature); Gothic = action & the present (body, UI). Japanese is tightened with palt, numbers monospaced with tnum. Density (ink→ash) builds hierarchy too, so it never rests on size alone.
RejectedA geometric scale (modular scale 1.25, etc.). Mechanically even steps push every layer toward the default—the "AI look"—so it is stepped unevenly by weight (bold at the top, dense at the bottom).
DeferredLink color. Since the signature is a symbolic color, body links don't use it and are shown with a rule (underline) for now. Whether to introduce a colored link is deferred until the use is settled.
Space & Radius
余白・角丸・段| トークンtoken | 値value | 用途use |
|---|---|---|
| --space-* | 4 / 8 / 16 / 24 / 32 / 56 | 機械的な等差ではなく、図版の前は広く・補足の前は詰めるNot a mechanical progression—wide before a figure, tight before a note |
| --radius-* | control 10 / card 12 / surface 16control 10 / card 12 / surface 16 | 角丸はプロダクト見本の中にのみ。版面(カタログ地)は角丸ゼロRounding lives only inside product specimens. The page (catalog ground) has none |
| --tap-* | min 42 / main 48min 42 / main 48 | 片手・最小タップを前提とした下限A floor assuming one-handed, minimum taps |
| --shadow-* | pop / float(既定は0)pop / float (default 0) | 面は罫で分ける。影は Sheet・FAB・Snackbar に限るSurfaces split by rules. Shadow is limited to Sheet, FAB, Snackbar |
Motion
動き--ease と、方向の規則(肯定は下から上へ満ち、破壊・退場は上から下へ引く)で全部品を統率する。Motion is limited to "explaining the system's behavior." There is no movement for mood. A shared easing --ease and a rule of direction (the affirmative fills upward from below; the destructive or departing draws downward from above) govern every component.prefers-reduced-motion では一切動かない。On press, color fills; a beat after release, it drains. The affirmative fills with the signature from below; the destructive with Ember from above. Under prefers-reduced-motion nothing moves at all.Chips
選択チップ点+塗り+枠+太字 の四重表現で、色覚に依存させない。色は分類色(--accent)に追従する。Choices for single or multiple selection. Selection is a fourfold expression—dot + fill + border + bold—so it never relies on color vision. The color follows the classification accent (--accent).| prop | 値value | 既定default | 備考notes |
|---|---|---|---|
| select | single / multi | single | — |
| accent | --accent / .alt | --accent | 表示中プロダクトの分類色the current product's classification color |
| variant | default / ghost | default | ghost=追加用ghost = for adding |
| label | ≤ 6字目安≤ ~6 chars | — | 長文は折返し崩れlong text breaks the wrap |
採用満ち引き(潮)の比喩を選択状態に直結させた——選択=水位が下から満ち、解除=水位が引く。共通surgeの押下駆動ではなく、選択/解除そのものが動きを起こす。色は記号色 brand ではなく分類色 --accent に追従。
採用四重表現の一つ「点」を静止画ではなく動かす。常設した核を scale で満たし、選択が「点く」瞬間そのものを所作にする。
棄却マテリアル的なリップル(中心から広がる波紋)。出自が他システムで JabaracDesign の身体感に合わず、満ち引きへ置換した。
AdoptedThe tide metaphor is tied directly to selection state—select = the level fills from below, deselect = the level ebbs away. Rather than the shared press-driven surge, the act of selecting or deselecting is itself what moves. The color follows the classification --accent, not the symbolic brand.
AdoptedOne of the fourfold cues, the "dot," is moved rather than left static. A permanent core is filled with scale, making the very instant of selection a gesture.
RejectedThe Material-style ripple (a wave spreading from the center). Its origin is another system and it clashes with the bodily feel of JabaracDesign, so it was replaced with the surge.
Text Fields
入力| prop | 値value | 既定default | 備考notes |
|---|---|---|---|
| type | memo / letter | memo | letter は明朝・字数表示letter: Mincho, with count |
| maxlength | — | 200(letter)200 (letter) | 超過で EmberEmber on overflow |
| min-height | 48 / 72 | 72(area)72 (area) | — |
Switch
トグル| prop | 値value | 既定default | 備考notes |
|---|---|---|---|
| checked | true / false | false | オンは署名色(設定の例外)on is the signature color (settings exception) |
| size | md / sm | md | sm は密なリスト用sm for dense lists |
| field | — | — | 題+補足の行に内包するwrap in a title + note row |
Stepper
数量の増減| prop | 値value | 備考notes |
|---|---|---|
| step | 数値number | 用途別(分=5 / 回数=1)by use (minutes = 5 / count = 1) |
| min / max | 数値number | 境界で当該ボタンを無効化disable the relevant button at a bound |
| unit | 文字text | 明朝・等幅数字Mincho · monospaced figures |
Slider
連続値| prop | 値value | 既定default | 備考notes |
|---|---|---|---|
| min / max | 数値number | 0 / 100 | 端にラベルを添えられるend labels optional |
| value | min–max | — | 数値表示は明朝・tnumreadout in Mincho · tnum |
| disabled | — | — | トラックは ash に沈むtrack recedes to ash |
Radio / Check
単一・複数選択Segmented
表示切替Cards
保管札・記録カードよく晴れた。少し早く起きられた。A clear morning. Woke a little earlier.
ありがとう。おつかれさま。Thank you. Well done today.
aria-busy="true" を付けると、アイコン円・時刻・題(1行)・本文(2行)がプレースホルダに組み上がる(別に .sk-card は作らない=実部品の状態で組む)。実演と再生は Skeleton 節。The card has a skeleton state: add aria-busy="true" and the icon circle, time, title (1 line), and body (2 lines) compose into placeholders—no separate .sk-card (built from the real parts' state). A live demo and replay are in the Skeleton section.| prop | 値value | 備考notes |
|---|---|---|
| kind | log / note | 記録者の助詞が変わるthe recorder's particle changes |
| accent | product依存product-dependent | アイコン円の色color of the icon circle |
| lines | ≤ 2 | 3行目は省略し詳細へa third line is truncated to detail |
| seal | saved / shared | shared のみ署名色。既読は表示しないsignature only for shared. read state not shown |
List Item
設定・選択リスト入力へTo entry
Bottom Sheet
選択シートDialog
確認・破壊的操作この記録を削除しますかDelete this record?
削除すると、共有先のタイムラインからも消えます。Deleting also removes it from the timelines you shared it to.
Tab Bar
フッターナビ| prop | 値value | 備考notes |
|---|---|---|
| items | 2–4 + FAB2–4 + FAB | 5枠までup to 5 slots |
| selected | index | 署名色+上辺インジケータsignature color + top-edge indicator |
| fab | 記録record | 中央固定。塗り署名色を許す例外fixed center. the exception that allows a filled signature |
Snackbar
一時的な通知prefers-reduced-motion では滑らず即時に切り替わる。It slides in from the bottom and exits downward after about four seconds. "Undo" reverses it at once and briefly notes that it was undone. Under prefers-reduced-motion it switches instantly without sliding.Feedback
保存・取り消し・エラー| prop | 値value | 備考notes |
|---|---|---|
| type | success / error | success=Moss / error=Embersuccess = Moss / error = Ember |
| action | undo / retry | 常に1つalways one |
| tone | — | 謝らない。事実→現状→回復手段no apology. fact → state → recovery |
Progress
待ち時間| prop | 値value | 備考notes |
|---|---|---|
| type | 確定 / 不確定determinate / indeterminate | 確定=バー、不確定=回転・ドットdeterminate = bar, indeterminate = spin / dots |
| value | 0–100 | 確定のみ。%は明朝・tnumdeterminate only. % in Mincho · tnum |
| size | md / sm | バー4/3px・回転26/18pxbar 4/3px · spin 26/18px |
Avatar
人の識別| prop | 値value | 備考notes |
|---|---|---|
| size | sm / md / lg | 28 / 40 / 56 |
| status | 在席 / 不在present / away | Moss / ash。記号色は不可Moss / ash. no signature color |
| stack | +N | 重ねの末尾に残数overflow count at the tail |
| fallback | 頭文字initial | 明朝(記憶の層)Mincho (layer of memory) |
Tag / Badge
分類・件数| prop | 値value | 備考notes |
|---|---|---|
| variant | 分類 / app / 状態plain / app / status | app=分類色、状態=ok/errapp = accent, status = ok/err |
| size | md / sm | — |
| removable | — | × で外す。フィルタ向けremove with ×. for filters |
| count | 数値number | バッジのみ署名色を許すonly the badge may use the signature |
Section Header
署名・一拍置く見出し| 要素element | 仕様spec |
|---|---|
| 息継ぎ線Breath line | 幅28px・太さ1.5px・色=brand。一画面に主見出しの1本のみ28px wide · 1.5px thick · color = brand. Only one, for the main heading, per screen |
| 補助Support | 色=ash・字間.22em・主見出しの後に配置color = ash · tracking .22em · placed after the main heading |
| 沈黙Silence | 見出し上に1行分の余白を確保し、一拍置くreserve a line of space above the heading—a beat of pause |
Tooltip
補足ラベル.below で下に出す。hover だけに頼らず focus でも出すのが要点(アクセシビリティ)。Use .below when there's no room above. The key is not relying on hover alone—it also appears on focus (accessibility).Tabs
タブ・表示切替Drawer
ナビゲーションドロワー| prop | 値value | 備考notes |
|---|---|---|
| side | left | 既定は左。横から滑り込むdefault left. glides in from the side |
| item | アイコン+題icon + label | 現在地は aria-current+署名色左罫current: aria-current + signature left rule |
| dismiss | scrim / Esc | 外側・Escape・項目選択で閉じるcloses on scrim / Escape / selection |
| elevation | float | 浮く面の例外として影を許すa floating-surface exception allows shadow |
Table
データ表.tbl)とは別の、プロダクトのデータ表。数字は静かな主役——明朝・等幅(tnum)・右寄せ。行は罫で分け、ホバーで淡く沈む。見出しをタップ(+Space/Enter)で並べ替え、aria-sort を反映する。A list of records—a product data table, distinct from the catalog's spec table (.tbl). Numbers are the quiet protagonist—Mincho, monospaced (tnum), right-aligned. Rows are divided by rules and sink lightly on hover. Tap a header (or Space/Enter) to sort, reflected in aria-sort.| 種類Type | 時刻Time | 分Min |
|---|---|---|
| できごとEvent | 07:30 | 12 |
| 睡眠Sleep | 23:10 | 430 |
| 散歩Walk | 12:40 | 35 |
| 読書Reading | 21:00 | 60 |
| prop | 値value | 備考notes |
|---|---|---|
| column | text / numtext / num | num=明朝・tnum・右寄せnum = Mincho · tnum · right-aligned |
| sortable | — | 見出しで昇降。data-sortで基準値sort on header. sort key via data-sort |
| row | — | 罫で分け、ホバーで淡く。カード化しないdivided by rules, light hover. no cards |
| label | aria-label | 表には名前を与える(必須)give the table a name (required) |
Accordion
開閉リストaria-expanded/aria-controls で示し、ネイティブの <button> なので Enter/Space で開閉できる。Only the open item takes the signature color, and its caret rotates. Accessibility is conveyed with aria-expanded / aria-controls; being a native <button>, it toggles with Enter/Space.| prop | 値value | 備考notes |
|---|---|---|
| expanded | true / false | 複数同時に開ける(独立)multiple may be open (independent) |
| head | 題+指標title + caret | 明朝。開=署名色、▾が回るMincho. open = signature, caret rotates |
| a11y | aria-expanded | <button>+aria-controls。Enter/Space可<button> + aria-controls. Enter/Space |
Empty State
空の状態Search
検索Image
画像object-fit:cover で収める。角丸はプロパティ(既定はカード角丸/r-none・r-control・r-card・r-surface・round)。読み込み中(aria-busy)は同じ器がスケルトンの箱になり、レイアウトが飛ばない。An image is fit into an aspect-ratio container with object-fit:cover. The corner radius is a property (default card radius / r-none・r-control・r-card・r-surface・round). While loading (aria-busy), the same container becomes a skeleton box, so the layout never jumps.round(1:1の円)/右:r-surface(1:1)。器がアスペクト比を持つので、画像の有無でレイアウトが動かない。Left: default (3:2, card radius) / center: round (1:1 circle) / right: r-surface (1:1). The container owns the aspect ratio, so layout doesn't shift whether the image is present or not.aria-busy="true" を親に付けると、器がそのままプレースホルダの箱になる。アスペクト比・角丸はそのまま保たれる。Set aria-busy="true" on the parent and the container becomes a placeholder box—keeping the very same aspect ratio and corner radius.| prop | 値value | 備考notes |
|---|---|---|
| radius | none / control / card / surface / round | 既定 card。round=円default card. round = circle |
| aspect | inline aspect-ratioinline aspect-ratio | 既定 3/2。器が比率を保持default 3/2. container holds the ratio |
| fit | cover | object-fit で器に収めるobject-fit to fill the container |
| alt | 必須required | 装飾なら空 altempty alt if decorative |
Iconography
アイコンcurrentColor で親に従う——だからボタンやリストの中で文字色のまま沈み、署名色を奪わない。本採用は約50点で、Core/Actions/Media/Navigation/Voice の5系統に分かれる。実物一覧と分類フィルタは アイコン一覧 にまとめている。A family of symbols drawn in line. All are unified to a 24px grid, 1.6 stroke, no fill, round caps and joins—matching weight and density so the bearing is never disturbed. Color follows the parent via currentColor, so inside a button or list an icon recedes in the text color and never steals the signature. The adopted set is about fifty marks across five families: Core, Actions, Media, Navigation, and Voice. The full specimen sheet with category filters lives in the icon index.currentColor=本文色(ash)で沈み、Night でも自動で反転する。アプリ固有の Voice 系(ビブラート・エッジ等)まで含む全点は アイコン一覧 へ。Drawn on one grid at one stroke weight, separate marks read as a single family. No color is set, so they recede in currentColor—the body ink (ash)—and invert automatically in Night. The complete set, including the app-specific Voice family (vibrato, edge, and so on), is in the icon index.| 項目item | 値value | 備考notes |
|---|---|---|
| viewBox | 0 0 24 24 | 升目を揃えるa shared grid |
| stroke | 1.6 / round | 端・角ともに丸round cap and join |
| fill | none | 塗らず線で描くline only, no fill |
| color | currentColor | 親の文字色に従うfollows the parent text color |
| category | Core / Actions / Media / Navigation / Voice | 複数所属あり・OR で絞るmulti-tagged · filter by OR |
currentColor に従う。アイコンが自前の色を持つと、一画面の署名色(記号の一点)と競合する。文字色のまま沈め、強調は配置と余白で行う。掟升目・線幅・端の丸めを全点で揃える——「同じ手で描いた」連続性が、網羅性より佇まいを支える。棄却比較用に作った別案(線の太い系統など)はプレビューでは隠し、本採用の1.6系だけを掲げる。迷いを並べない。作法新規アイコンは images/icons/ に 24px・線1.6・塗りなしで追加し、アイコン一覧 の配列へ分類とともに登録する。AdoptedIcons carry no color of their own; they follow currentColor. If an icon owned a color, it would compete with the screen's single signature point. It recedes in the text color, and emphasis is made by placement and space. RuleGrid, stroke weight, and corner rounding are matched across every mark—the continuity of "drawn by one hand" upholds the bearing more than coverage does. RejectedAlternate studies (heavier-stroke families and the like) are hidden in the preview; only the adopted 1.6 family is shown. Hesitation is not put on display. MannerA new icon is added to images/icons/ at 24px, 1.6 stroke, no fill, then registered—with its categories—into the array behind the icon index.Skeleton
読み込みの器aria-busy="true"——標準ARIAで支援技術に「読み込み中」が伝わり、配下のプリミティブ(アバター・テキスト・画像)が自分のスケルトン姿になる。合成物(カード)は実部品を aria-busy 下に置くだけ。シマー(背景グラデの掃引)は採らず、静かな息で急かさない。It holds the page by placing the shape of what's coming (so layout doesn't jump after load). The trigger is aria-busy="true"—standard ARIA tells assistive tech "loading," and descendant primitives (avatar, text, image) take their own skeleton form. A composite (card) just places its real parts under aria-busy. No shimmer (a sweeping gradient); a quiet breath that doesn't rush..av 指定どおり)、テキスト=行(--skel-lines で行数)、画像=器の箱。どれも実部品が aria-busy 下で姿を変えただけ。Avatar = circle (size from .av), text = lines (--skel-lines sets the count), image = the container box. Each is the real primitive changing form under aria-busy.よく晴れた。少し早く起きられた。新しい一日が静かに始まった。A clear morning. Woke a little earlier. A new day began quietly.
.sk-card を作らず、実部品の状態で組むのが要点。"Replay loading" turns the same card into a skeleton for ~1.8s, then it resolves into content. Because the container is identical, nothing shifts—the point is composing from the real parts' state, not authoring a separate .sk-card.採用スケルトンはプリミティブの状態。合成物に作り込まず、アバター・テキスト・画像が自分の読み込み姿を持つ。カードは実部品を aria-busy 下に置くだけで正しい形になり、中身が変わっても skeleton がズレない(DRY・合成で増える)。
採用入口は aria-busy。独自フラグでなく標準ARIA。支援技術に読み込みが伝わり、a11yと一体で実装できる。
棄却斜めに走るシマー(背景グラデの掃引)。anti-ai-look が名指しする「背景グラデ・雰囲気の運動」に当たるため、静かな息(ゆっくりした濃淡)に置換。prefers-reduced-motion では静止。
作法Progress と使い分ける——形が分かる読み込み=Skeleton/不確定な待ち=Progress。
AdoptedSkeleton is a state of the primitive. Not authored into composites—avatar, text, and image each own their loading form. A card just places its real parts under aria-busy and gets the right shape; the skeleton never drifts when content changes (DRY, composes by addition).
AdoptedThe trigger is aria-busy. A standard ARIA attribute, not a custom flag. Assistive tech learns it's loading, so it ships hand-in-hand with accessibility.
RejectedA diagonal shimmer (a sweeping gradient). It's exactly the "background gradient / ambient motion" the anti-ai-look policy names, so it's replaced with a quiet breath. Under prefers-reduced-motion it holds still.
MannerUse it apart from Progress—a load whose shape is known = Skeleton; an indeterminate wait = Progress.
Record Flow
適用例・記録フローよく晴れた。少し早く起きられた。A clear morning. Woke a little earlier.
採用再利用動線を一級市民に。多くの記録は前回に近い。「前回を再利用」を画面上部に置き、一括初期化で最小タップへ寄せた(原則4・速さと片手性)。
採用確認の代わりに取り消し。保存は即時に終え、ダイアログで割り込まない。回復路は Snackbar に残す。
作法この適用例は新しい部品を一つも足していない。既存の chip / textarea / stepper / switch / button / card / snackbar を組むだけで一つのプロダクト画面が成立する——「作法による一貫性」の実証。
AdoptedReuse as a first-class path. Most records resemble the last. "Reuse last" sits at the top of the screen, filling everything at once to minimize taps (Principle 4 · speed & one-handedness).
AdoptedUndo instead of confirm. Saving finishes instantly without a dialog interrupting; the recovery path is left in the Snackbar.
MannerThis example adds no new component. Composing the existing chip / textarea / stepper / switch / button / card / snackbar is enough to form a whole product screen—proof of "consistency through manner."
Playground
試作場・色を上書きして試す採用上書きは部品でなく1点の色トークン。#pgScreen に --brand / --brand-soft / --accent を渡すだけで、配下の全部品が再テーマされる。各部品はセマンティックトークンしか参照しないため、色の経路が1本に集約されている。
作法これは適用例の発展形——色を触れる試作場。アプリは tokens/themes.css で --brand-base を1つ定義するだけで自分のブランドを持つ。
AdoptedThe override is a single color token, not a component. Pass --brand / --brand-soft / --accent to #pgScreen and every part beneath re-themes. Because each component references only semantic tokens, the color path is funneled into one channel.
MannerThis is the applied example, made tweakable—a sandbox for color. An app gets its own brand by defining a single --brand-base in tokens/themes.css.
Action Flow
適用例・操作シートと確認⋯ で Bottom Sheet を下から出し、「削除する」で破壊的確認の Dialog を開く。確認で消し、Snackbar で取り消す。新しい部品は一つも足していない——既存の Card / Avatar / Bottom Sheet / Dialog を組むだけ。An applied example composing four parts. The ⋯ on a record card (with an avatar) raises a Bottom Sheet from below; "Delete" opens a destructive Dialog. Confirming removes it, reversible via the Snackbar. No new component—just the existing Card / Avatar / Bottom Sheet / Dialog, composed.よく晴れた。少し早く起きられた。A clear morning. Woke a little earlier.
公園まで歩いた。風が気持ちよかった。Walked to the park. The breeze felt good.
おつかれさま。今日もありがとう。Well done today. Thank you again.
この記録を削除しますかDelete this record?
削除すると、共有先のタイムラインからも消えます。Deleting also removes it from the timelines you shared it to.
⋯ → 下から操作シート(共有・編集・削除)。削除は Ember で最下段に分け、押すと確認ダイアログ(息継ぎ線も確定も Ember)。確認で消し、Snackbar の「取り消す」で戻せる。シート背後の暗幕タップ・Escape でも閉じる。A card's ⋯ → the action sheet rises (share, edit, delete). Delete is set apart at the bottom in Ember; pressing it opens the confirmation dialog (breath and confirm both Ember). Confirming removes it, reversible via the Snackbar's "undo." Tapping the scrim or pressing Escape closes it too.採用新しい部品を足さず、既存の状態と所作で組む。Card に Avatar を載せ、⋯ で Bottom Sheet(下から満ちる面)を出し、破壊的操作だけ Dialog(取り消せない一線)へ。方向の規則・署名色の規律・回復路(Snackbar)が、別々の部品をまたいでそのまま効く。
作法オーバーレイは枠内に収める擬似ビューポート(Drawer と同じ)。シート/ダイアログの暗幕・Escape・項目選択で閉じる。確定の既定フォーカスは「やめる」(破壊を急がせない)。
AdoptedCompose from existing states and gestures—no new component. Put an avatar on a card, raise a Bottom Sheet (a surface filling from below) on ⋯, and send only the destructive action to a Dialog (the irreversible line). The rule of direction, the signature-color discipline, and the recovery path (Snackbar) carry across the separate parts unchanged.
MannerThe overlay is kept inside a pseudo-viewport (as with the Drawer). Sheet and dialog close on scrim, Escape, or selection. Default focus on confirm is "Cancel"—never rushing the destructive choice.
--brand-base を差し替える。理由なき額縁・無意味な装飾・均一なリズムを排し、設計判断は欄外の註に採用・棄却として残した。This book is set in the grammar of a "printed specification sample book." The specimens (figures) carry rounded corners; the page (ground) is divided by rules and figure numbers. The CSS is managed with two layers of design tokens (Primitive→Semantic), and the signature color is not fixed—each app swaps --brand-base. Gratuitous frames, meaningless ornament, and uniform rhythm are excluded; design decisions are left in the margin notes as adopted and rejected.