fix: focus ring invisible on hosts using pre-0.13 theme tokens (Issue epam/ai-dial-admin-frontend#4138) - #810
Merged
PolinaGurinovich97 merged 1 commit intoAug 11, 2026
Conversation
…pam/ai-dial-admin-frontend#4138) The `focus-black` border token fell straight to its light default when `--stroke-focus-black` was undefined. Hosts themed by the DIAL themes service still ship the pre-0.13 `--stroke-focus`, so every focus ring built on the token rendered `#161B2D` — the dark theme's own `--bg-layer-2`, i.e. a border painted in the background colour. Fall back through `--stroke-focus` before the light default, matching the legacy-token fallback pattern used for the DialGrid theme in #806. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
dearsimanovich-epam
requested review from
Alexander-Kezik,
PolinaGurinovich97,
hhharmEpm,
valerydluski and
ya092
as code owners
August 10, 2026 21:26
PolinaGurinovich97
approved these changes
Aug 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description and UI changes:
Follow-up to #806/#807, same failure mode one layer up — in the token map rather than a component's theme constants.
The
focus→focus-blackrename in #801 moved the token from--stroke-focusto--stroke-focus-black. The DIAL themes service (epam/ai-dial-chat-themes,static/config.json) still ships onlystroke-focus, so on every host themed by it the utility drops straight to the built-in light default:On the dark theme the focus border is painted in exactly the background colour.
.dial-inputalso setsoutline-width: 0, so there is no outline to fall back to and the field simply looks inactive when clicked.This is the failure mode the migration guide itself calls out:
One line, same legacy-token middle fallback as #806:
borderColorsis spread intoborderColor,stroke,divideColor, andextend.outlineColor, so all 24 occurrences indist/index.cssmove together — the focus ring onInput,Button,IconButton,FabButton,DropdownIcon,Accordion,Calendar,InlineSelect,Slider, and the markdown-editor toolbar.--stroke-focusis the contrast focus colour in the legacy palette (near-black on light, near-white on dark), which is exactly whatfocus-blackwants, so the chain is semantically right and restores the pre-0.13 rendering. Light themes and hosts with no theme at all are byte-identical to today (#161B2Deither way).focus-blueis left alone — the themes config has no legacy equivalent and#6785FBreads fine on both palettes.Verification
npx vitest run— 1935 passed, 2 skipped, 151 files.Button.specasserts the class name rather than the resolved value, so it is unaffected.npm run typecheckreports 56 pre-existing errors inFileManagerspecs ondevelopment, unchanged by this PR (verified by stashing).Wider context, not addressed here: ~15 other Colors 2.0 tokens are in the same position —
--bg-layer-raised,--bg-layer-sunken, the--bg-control-*family,--text-control-*,--text-accent— each with a clean legacy counterpart in the themes config, each still resolving to a light default on dark-themed hosts. The durable fix is for the themes service to ship the 2.0 token set; happy to open an issue to track the rest rather than let them surface one bug report at a time.Issues:
Checklist:
(Issue #<TICKET_ID>)— the issue lives inepam/ai-dial-admin-frontend, so it is fully qualifiedNew Component Checklist:
n/a — no new component; one token value changed, no API or behaviour change.
🤖 Generated with Claude Code