fix(ui): draw one focus ring, not two
src/index.css already declared "one visible, consistent focus treatment", but shadcn's primitives ship a `focus-visible:ring-[3px]` of their own, so every button and input actually drew two: a soft translucent halo hugging the border, then a hard 2px outline 2px further out. The global rule is the one that stays, because it also covers the links and bare table buttons that never go through a primitive. The rings come out of button.tsx and input.tsx instead. Its `border-radius: 2px` goes too. That was squaring the corners of every control with no radius utility of its own — the rule-history triggers in Settings measured `rad=0`, so a focused one drew a sharp rectangle. The outline now follows each element's own radius. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
f4223573e4
commit
f85b967a9d
3 files changed
+18
-6
No files matched your search
+9
-2
@@ -173,11 +173,18 @@
|
||||
}
|
||||
|
||||
/* One visible, consistent focus treatment. Keyboard users get a ring on the
|
||||
accent colour, which clears 3:1 on every surface in both themes. */
|
||||
accent colour, which clears 3:1 on every surface in both themes.
|
||||
Deliberately the ONLY focus indicator: shadcn's primitives ship a second,
|
||||
softer `ring` box-shadow of their own, and the two together read as a halo
|
||||
inside a line. Those are stripped in button.tsx and input.tsx instead of
|
||||
dropping this, because this one rule covers links, table buttons and
|
||||
anything else that never goes through a primitive.
|
||||
It sets no border-radius on purpose — an earlier version pinned 2px here,
|
||||
which squared the corners of every control that had no radius utility of
|
||||
its own. The outline follows each element's own radius. */
|
||||
:focus-visible {
|
||||
outline: 2px solid var(--budget-accent);
|
||||
outline-offset: 2px;
|
||||
border-radius: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user