fix: emoji picker and page icon design spec violations (#186)#197
Conversation
- Emoji buttons: add 44px minimum touch targets on mobile (sm:min-h-8 on desktop) - Page icon button: add 44px minimum touch targets on mobile - Filter input: add border border-white/[0.06] and focus:ring-2 focus:ring-ring - Page icon "Add icon" button: show on mobile with max-sm:opacity-100 - Emoji picker: use viewport-relative width on mobile to prevent clipping - Add static analysis regression tests for all four violations Co-authored-by: Ona <no-reply@ona.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
[ci-fix] This PR has failed CI 3+ times. Needs human investigation. Root cause: The This branch has the old version of the migration (plain Fix: Rebase the branch onto current |
|
[shepherd:conflict] Rebased on main but checks fail. The rebase resolves the merge conflict in This is a genuine semantic conflict between two design decisions:
A human needs to decide which behavior is correct, or update the test to allow Conflicting files: |
|
Review: 1 blocking issue found The PR correctly addresses all four violations from issue #186 — touch targets, input styling, mobile visibility, and responsive picker width. Blocking:
Pushing a fix for this now. |
The emoji grid used grid-cols-8 with min-w-[44px] touch targets, causing overflow on 375px viewports (8×44px = 352px exceeds available width). Changed to grid-cols-6 on mobile, grid-cols-8 on sm+ breakpoint. Co-authored-by: Ona <no-reply@ona.com>
The page-icon hover-reveal wrapper had transition-opacity which violates the design spec requirement for instant hover states. The static analysis test correctly caught this. Removed the class to make the opacity change instant. Co-authored-by: Ona <no-reply@ona.com>
|
Static analysis: 3 instances of arbitrary spacing values ( Visual verification: ✅ No visual regressions. Emoji picker renders correctly on desktop (8-col grid) and mobile (6-col grid, full-width). Filter input has border and focus ring. "Add icon" button visible on mobile. Touch targets adequate. No clipping or overflow. |
|
✅ Post-merge verification passed. E2E suite: 46/47 passed. The 1 failure ( Ad-hoc smoke tests (all passed):
Skipped:
|
Closes #186
What
The emoji picker and page icon components introduced in PR #185 had four design spec violations: emoji buttons and page icon buttons had touch targets below the 44px mobile minimum, the filter input was missing its border and focus ring, the "Add icon" button was invisible on mobile (hover-only opacity), and the emoji picker clipped on narrow mobile viewports.
How
Applied responsive Tailwind classes to enforce 44px minimum touch targets on mobile while preserving desktop sizes. Added
border border-white/[0.06]andfocus:ring-2 focus:ring-ringto the filter input per the input spec. Made the "Add icon" button visible on mobile withmax-sm:opacity-100. Changed the picker width from fixedw-72tow-[calc(100vw-16px)] sm:w-72so it fits within narrow viewports.Testing
Added 7 static analysis regression tests in
src/components/emoji-picker-design-spec.test.tsthat verify:All 220 tests pass. Lint and typecheck clean.