From cd4d710cf19a6f9a10c1bea1fe5ee248807d7ac1 Mon Sep 17 00:00:00 2001 From: Paul Bakaus Date: Tue, 21 Jul 2026 02:23:08 -0700 Subject: [PATCH] Delete the orphaned interaction-design.md Nothing has loaded it since bbed6eef (Jul 15) rewrote shape.md, which held its only referrer, a parenthetical example in a list of files that might be useful. It was never in the Commands table or command-metadata, so no route reached it either, yet all 189 lines shipped into every one of the 14 provider bundles. The eight interactive states and focus rings it covered live in craft-floor.md's States check and, in more depth, in audit.md, polish.md, and layout.md. Its CSS anchor positioning, Popover API, and roving tabindex material has no home elsewhere; recover it from git if a command turns out to want it. Co-Authored-By: Claude --- skill/reference/interaction-design.md | 189 -------------------------- 1 file changed, 189 deletions(-) delete mode 100644 skill/reference/interaction-design.md diff --git a/skill/reference/interaction-design.md b/skill/reference/interaction-design.md deleted file mode 100644 index c42c9d810..000000000 --- a/skill/reference/interaction-design.md +++ /dev/null @@ -1,189 +0,0 @@ -# Interaction Design - -## The Eight Interactive States - -Every interactive element needs these states designed: - -| State | When | Visual Treatment | -|-------|------|------------------| -| **Default** | At rest | Base styling | -| **Hover** | Pointer over (not touch) | Subtle lift, color shift | -| **Focus** | Keyboard/programmatic focus | Visible ring (see below) | -| **Active** | Being pressed | Pressed in, darker | -| **Disabled** | Not interactive | Reduced opacity, no pointer | -| **Loading** | Processing | Spinner, skeleton | -| **Error** | Invalid state | Red border, icon, message | -| **Success** | Completed | Green check, confirmation | - -**The common miss**: Designing hover without focus, or vice versa. They're different. Keyboard users never see hover states. - -## Focus Rings: Do Them Right - -**Never `outline: none` without replacement.** It's an accessibility violation. Instead, use `:focus-visible` to show focus only for keyboard users: - -```css -/* Hide focus ring for mouse/touch */ -button:focus { - outline: none; -} - -/* Show focus ring for keyboard */ -button:focus-visible { - outline: 2px solid var(--color-accent); - outline-offset: 2px; -} -``` - -**Focus ring design**: -- High contrast (3:1 minimum against adjacent colors) -- 2-3px thick -- Offset from element (not inside it) -- Consistent across all interactive elements - -## Form Design: The Non-Obvious - -**Placeholders aren't labels.** They disappear on input. Always use visible `