Skip to content

feat(ux): depth + entrance on shared EmptyState (visual craft)#139

Merged
os-zhuang merged 1 commit into
mainfrom
feat/craft-empty-state
Jun 11, 2026
Merged

feat(ux): depth + entrance on shared EmptyState (visual craft)#139
os-zhuang merged 1 commit into
mainfrom
feat/craft-empty-state

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

What

First slice of the 视觉工艺 (visual craft) track. The shared EmptyState (used on every empty/error/idle screen) was a flat grey square with a static icon. Now:

  • the icon sits in a layered badge — a faint concentric halo behind a tinted tile — for depth
  • switched from neutral grey to the brand tint
  • the group eases in: the badge springs (ZoomIn), title/description/action rise with a short stagger

The root stays a plain View so flex-1 centering is owned by layout, not the animation — only the inner pieces animate.

Verification

  • tsc --noEmit clean, eslint clean, 1337 tests pass
  • Verified live on the notifications error state (9.0 server): badge + halo, title, description, retry button, correctly centered, easing in.
  • Note: an earlier attempt made the root an Animated.View, which broke flex-1 centering on web (empty state pinned top-left). Caught it in the browser preview and refactored to animate only the children — included here as the fix.

🤖 Generated with Claude Code

Give every empty/error/idle screen more personality: the icon now sits in
a layered badge (a faint concentric halo behind a tinted tile) instead of
a flat grey square, switched to the brand tint, and the group eases in —
the badge springs (ZoomIn), the title/description/action rise with a short
stagger. The root stays a plain View so flex-1 centering is never affected
by the animation; only the inner pieces animate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@os-zhuang os-zhuang merged commit 533788e into main Jun 11, 2026
1 check passed
@os-zhuang os-zhuang deleted the feat/craft-empty-state branch June 11, 2026 16:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant