2.9 KiB
2.9 KiB
| 1 | component | layer | reference_size_1080x1920 | minimum_hit_area | outline | corner_radius | states | color_role | content_rule | motion_rule | acceptance |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | TopResourceChip | HUD | 220x72 | 220x72 | 4px tinted ink | 16px | normal/change/insufficient | currency | icon+value; max 7 digits; use compact suffix after 999999 | change pulse 180ms; value roll 300ms | No clipping in CJK and 200% value test |
| 3 | PrimaryButton | HUD or Modal | 360x112 | 360x112 | 6px outer + 2px inner highlight | 20px | normal/hover/pressed/disabled/locked | primary gold or cyan | verb first; maximum 6 Chinese characters | press 70ms down + 110ms rebound | Disabled state still readable at 4.5:1 |
| 4 | SecondaryButton | HUD or Modal | 240x96 | 240x96 | 5px outer | 18px | normal/pressed/disabled | slate violet | icon optional; never compete with primary | press 60ms down + 100ms rebound | Primary remains dominant in grayscale |
| 5 | DangerButton | Modal | 240x96 | 240x96 | 5px outer | 18px | normal/pressed/disabled | danger crimson | must include destructive verb and icon | press 60ms; no idle pulse | Not used for ordinary exit or back |
| 6 | ModalPanel | Modal | 880xAuto | n/a | 8px outer + 3px inner bevel | 28px | enter/idle/exit | panel violet | one decision per modal; max two primary choices | enter 220ms overshoot; exit 160ms | Background dim 58-68%; no stacked modal |
| 7 | TutorialBubble | Modal | 820x220 | n/a | 6px outer + 2px inner | 24px | enter/idle/advance | warm parchment or violet | one sentence; highlight one keyword only | type or fade 180-260ms; pointer bounce 600ms | Pointer targets current control; text <= 44 Chinese chars |
| 8 | BoardNode | WorldUI | 132x132 | 132x132 | 6px outer | 50% | locked/current/cleared/reward/boss | node semantic | icon + ring + state badge; no text inside | unlock 300ms; reward pulse 900ms; current breathe 1200ms | Recognizable at 64x64 thumbnail |
| 9 | PathRibbon | WorldUI | 72px width | n/a | 4px shadow edge | 36px | current/cleared/locked | path gold | current path saturated; cleared desaturated 25% | flow sweep 600ms only on unlock | Never overlaps tappable node center |
| 10 | TileCard | Choice | 320x440 | 320x440 | 7px outer + quality frame | 24px | normal/focused/selected/disabled | quality dual-code | title + icon + 2-line effect + cost | deal 180ms stagger; select 220ms | All candidates visible without horizontal scroll |
| 11 | RewardCard | Reward | 280x390 | 280x390 | 7px outer + quality frame | 24px | hidden/reveal/claimed | quality dual-code | icon occupies 52-60%; quantity bottom-right | common flip 250ms; legendary 633ms | Quality readable without glow and without color |
| 12 | StatusIcon | CombatHUD | 72x72 | 88x88 | 3px outer | 16px | active/expiring/stacked | status semantic | icon + stack count; timer ring outside | enter 120ms; expiry flash 300ms | At most 6 expanded; overflow collapses |
| 13 | BossGauge | CombatHUD | 760x64 | n/a | 5px outer | 20px | normal/phase/break/danger | boss crimson or biome accent | name + phase marks + HP; no decorative text | phase break 350ms; damage lag 220ms | Readable over all six biome palettes |
| 14 | Toast | HUD | 680x92 | n/a | 4px outer | 18px | info/success/warning/error | semantic neutral | one line + icon; no input | enter 180ms; hold 1400ms; exit 160ms | Does not cover dice button or boss tell |