diff --git a/packages/dashboard/app/components/RightDock.tsx b/packages/dashboard/app/components/RightDock.tsx index 5a076639b6..b0e44324cc 100644 --- a/packages/dashboard/app/components/RightDock.tsx +++ b/packages/dashboard/app/components/RightDock.tsx @@ -1,5 +1,6 @@ import { useCallback, useEffect, useMemo, useRef, useState, type KeyboardEvent as ReactKeyboardEvent } from "react"; import { Maximize2 } from "lucide-react"; +import { useTranslation } from "react-i18next"; import { findOverflowViewEntry, getVisibleOverflowViewEntries, @@ -89,6 +90,9 @@ FN-6882 splits right-dock entries into launcher actions and inline views. Action FNXC:Navigation 2026-06-22-09:00: The right dock is visible by default on tablet/desktop project screens. Show/hide is owned solely by the canonical Header right-sidebar toggle (the in-dock collapse toggle was removed); the dock takes only `open` and renders null when closed so the main content reclaims the space. + +FNXC:i18n 2026-06-22-00:00: +Right-dock affordance labels are user-facing accessibility copy, so route them through the app namespace and keep English defaults colocated with the component for tests and fallback rendering. */ export function RightDock({ open, @@ -97,6 +101,7 @@ export function RightDock({ onExpand, footerVisible = false, }: RightDockProps) { + const { t } = useTranslation("app"); const entries = useMemo(() => getVisibleOverflowViewEntries(visibilityOptions), [visibilityOptions]); const [selectedKey, setSelectedKey] = useState(() => readStoredRightDockView(visibilityOptions)); const [width, setWidth] = useState(readStoredRightDockWidth); @@ -198,12 +203,13 @@ export function RightDock({ const SelectedIcon = selectedEntry.icon; const dockWidth = `${width}px`; + const expandSelectedViewLabel = t("rightDock.expandView", "Expand {{label}}", { label: selectedEntry.label }); return (