fix(ui): address PR review feedback (duplicates, types, labels)
This commit is contained in:
parent
54900d6358
commit
802e296246
@ -40,11 +40,7 @@ class Translator {
|
||||
setLocale(locale: string) {
|
||||
if (this.locale === locale) return;
|
||||
this.locale = locale;
|
||||
try {
|
||||
localStorage.setItem('moltbot-locale', locale);
|
||||
} catch (e) {
|
||||
// ignore
|
||||
}
|
||||
// localStorage persistence is handled by the app's UiSettings to avoid sync issues.
|
||||
this.notify();
|
||||
}
|
||||
|
||||
@ -68,7 +64,7 @@ class Translator {
|
||||
|
||||
private resolve(table: TranslationMap | undefined, key: string): any {
|
||||
if (!table) return undefined;
|
||||
return key.split('.').reduce((obj, i) => (obj ? obj[i] : null), table);
|
||||
return key.split('.').reduce((obj, i) => (obj ? (obj as any)[i] : null), table);
|
||||
}
|
||||
|
||||
private interpolate(text: string, params?: Record<string, string | number>) {
|
||||
|
||||
@ -1 +1 @@
|
||||
export type TranslationMap = Record<string, any>; // Relaxed type for nested objects
|
||||
export type TranslationMap = Record<string, unknown>; // Relaxed type for nested objects
|
||||
|
||||
@ -105,7 +105,7 @@ export function renderApp(state: AppViewState) {
|
||||
const presenceCount = state.presenceEntries.length;
|
||||
const sessionsCount = state.sessionsResult?.count ?? null;
|
||||
const cronNext = state.cronStatus?.nextWakeAtMs ?? null;
|
||||
const chatDisabledReason = state.connected ? null : t("status.disconnected") + " from gateway.";
|
||||
const chatDisabledReason = state.connected ? null : t("status.disconnected_from_gateway");
|
||||
const isChat = state.tab === "chat";
|
||||
const chatFocus = isChat && (state.settings.chatFocusMode || state.onboarding);
|
||||
const showThinking = state.onboarding ? false : state.settings.chatShowThinking;
|
||||
@ -122,40 +122,28 @@ export function renderApp(state: AppViewState) {
|
||||
state.applySettings({
|
||||
...state.settings,
|
||||
navCollapsed: !state.settings.navCollapsed,
|
||||
})}
|
||||
@click=${() =>
|
||||
state.applySettings({
|
||||
...state.settings,
|
||||
navCollapsed: !state.settings.navCollapsed,
|
||||
})}
|
||||
title="${state.settings.navCollapsed ? t("sidebar.expand") : t("sidebar.collapse")}"
|
||||
aria-label="${state.settings.navCollapsed ? t("sidebar.expand") : t("sidebar.collapse")}"
|
||||
>
|
||||
<span class="nav-collapse-toggle__icon">${icons.menu}</span>
|
||||
>
|
||||
<span class="nav-collapse-toggle__icon">${icons.menu}</span>
|
||||
</button>
|
||||
<div class="brand">
|
||||
<div class="brand-logo">
|
||||
<img src="https://mintcdn.com/clawdhub/4rYvG-uuZrMK_URE/assets/pixel-lobster.svg?fit=max&auto=format&n=4rYvG-uuZrMK_URE&q=85&s=da2032e9eac3b5d9bfe7eb96ca6a8a26" alt="Moltbot" />
|
||||
</div>
|
||||
<div class="brand-text">
|
||||
<div class="brand-text">
|
||||
<div class="brand-title">${t("brand.title")}</div>
|
||||
<div class="brand-sub">${t("brand.subtitle")}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topbar-status">
|
||||
<div class="pill">
|
||||
<span class="statusDot ${state.connected ? "ok" : ""}"></span>
|
||||
<div class="pill">
|
||||
<span class="statusDot ${state.connected ? "ok" : ""}"></span>
|
||||
<span>${t("status.health")}</span>
|
||||
<span class="mono">${state.connected ? t("status.ok") : t("status.offline")}</span>
|
||||
</div>
|
||||
</div>
|
||||
${renderThemeToggle(state)}
|
||||
</div>
|
||||
</header>
|
||||
@ -177,7 +165,7 @@ export function renderApp(state: AppViewState) {
|
||||
}}
|
||||
aria-expanded=${!isGroupCollapsed}
|
||||
>
|
||||
<span class="nav-label__text">${group.label}</span>
|
||||
<span class="nav-label__text">${t("nav.group." + group.label)}</span>
|
||||
<span class="nav-label__chevron">${isGroupCollapsed ? "+" : "−"}</span>
|
||||
</button>
|
||||
<div class="nav-group__items">
|
||||
@ -186,29 +174,21 @@ export function renderApp(state: AppViewState) {
|
||||
</div>
|
||||
`;
|
||||
})}
|
||||
<div class="nav-group nav-group--links">
|
||||
<div class="nav-label nav-label--static">
|
||||
<div class="nav-group nav-group--links">
|
||||
<div class="nav-label nav-label--static">
|
||||
<span class="nav-label__text">${t("nav.resources")}</span>
|
||||
</div>
|
||||
<div class="nav-group__items">
|
||||
</div>
|
||||
<div class="nav-group__items">
|
||||
<a
|
||||
class="nav-item nav-item--external"
|
||||
href="https://docs.molt.bot"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
title="Docs (opens in new tab)"
|
||||
>
|
||||
<span class="nav-item__icon" aria-hidden="true">${icons.book}</span>
|
||||
title="${t("nav.docs")} (opens in new tab)"
|
||||
>
|
||||
<span class="nav-item__icon" aria-hidden="true">${icons.book}</span>
|
||||
<span class="nav-item__text">${t("nav.docs")}</span>
|
||||
</a>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
@ -157,6 +157,7 @@ export function renderOverview(props: OverviewProps) {
|
||||
/>
|
||||
</label>
|
||||
<label class="field">
|
||||
<span>Default Session Key</span>
|
||||
<input
|
||||
.value=${props.settings.sessionKey}
|
||||
@input=${(e: Event) => {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user