fix(ui): simplify login and suppress pointer focus ring on locale select

This commit is contained in:
Codex
2026-09-13 15:57:57 +02:00
parent 7d826e46c0
commit 45db3a239b
7 changed files with 93 additions and 9 deletions
+7 -1
View File
@@ -12,6 +12,7 @@ export function FullHeader({ onLogout }: { onLogout?: () => Promise<void> }) {
const user = useAuthUser();
const [fullscreenPending, setFullscreenPending] = useState(false);
const [logoutPending, setLogoutPending] = useState(false);
const [languagePointerFocus, setLanguagePointerFocus] = useState(false);
const [error, setError] = useState<string>();
if (shell?.mode !== "full") return null;
const fullscreenLabel = shell.fullscreen ? t("Exit fullscreen") : t("Enter fullscreen");
@@ -41,7 +42,12 @@ export function FullHeader({ onLogout }: { onLogout?: () => Promise<void> }) {
<span className="thot-full-header__brand">Thoth<span>II</span></span>
<div className="thot-full-header__controls">
<label className="sr-only" htmlFor="thot-ui-language">{t("Interface language")}</label>
<select id="thot-ui-language" className="thot-shell-select" value={shell.locale} onChange={event => shell.changeLocale(event.target.value)}>
<select id="thot-ui-language" className="thot-shell-select" value={shell.locale}
data-pointer-focus={languagePointerFocus || undefined}
onPointerDown={() => setLanguagePointerFocus(true)}
onKeyDown={event => { if (event.key !== "Escape") setLanguagePointerFocus(false); }}
onBlur={() => setLanguagePointerFocus(false)}
onChange={event => shell.changeLocale(event.target.value)}>
{availableLocales.map(({ code, name }) => <option key={code} value={code} lang={code}>{name}</option>)}
</select>
<Button variant="ghost" size="icon" aria-label={shell.theme === "light" ? t("Use dark theme") : t("Use light theme")}