Skip to content

Commit 49d091e

Browse files
author
Olayinka Adelakun
committed
fix(a11y): resolve WCAG 2.1 Level A and AA violations on settings general page
1 parent 6f7c1f8 commit 49d091e

13 files changed

Lines changed: 298 additions & 5 deletions

File tree

src/frontend/src/components/common/pageLayout/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { To } from "react-router-dom";
2+
import { useTranslation } from "react-i18next";
23
import { CustomBanner } from "@/customization/components/custom-banner";
34
import { useCustomNavigate } from "@/customization/hooks/use-custom-navigate";
45
import { Button } from "../../ui/button";
@@ -21,11 +22,16 @@ export default function PageLayout({
2122
backTo?: To;
2223
}) {
2324
const navigate = useCustomNavigate();
25+
const { t } = useTranslation();
2426

2527
return (
2628
<div className="flex w-full flex-1 flex-col justify-between overflow-auto overflow-x-hidden bg-background">
2729
<div className="mx-auto flex w-full max-w-[1440px] flex-1 flex-col">
28-
<div className="flex flex-col gap-4 p-6 pt-0">
30+
<div
31+
role="region"
32+
aria-labelledby="page-layout-heading"
33+
className="flex flex-col gap-4 p-6 pt-0"
34+
>
2935
<CustomBanner />
3036
<div className="flex w-full items-center justify-between gap-4 space-y-0.5 pb-2 pt-10">
3137
<div className="flex w-full flex-col">
@@ -37,6 +43,7 @@ export default function PageLayout({
3743
navigate(backTo);
3844
}}
3945
data-testid="back_page_button"
46+
aria-label={t("navigation.goBack")}
4047
>
4148
<ForwardedIconComponent
4249
name="ChevronLeft"
@@ -45,6 +52,7 @@ export default function PageLayout({
4552
</Button>
4653
)}
4754
<h2
55+
id="page-layout-heading"
4856
className="text-2xl font-bold tracking-tight"
4957
data-testid="mainpage_title"
5058
>

src/frontend/src/components/core/sidebarComponent/index.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useTranslation } from "react-i18next";
12
import { useLocation } from "react-router-dom";
23
import { CustomLink } from "@/customization/components/custom-link";
34
import { useIsMobile } from "@/hooks/use-mobile";
@@ -21,13 +22,19 @@ type SideBarButtonsComponentProps = {
2122
};
2223

2324
const SideBarButtonsComponent = ({ items }: SideBarButtonsComponentProps) => {
25+
const { t } = useTranslation();
2426
const location = useLocation();
2527
const pathname = location.pathname;
2628

2729
const isMobile = useIsMobile();
2830

2931
return (
30-
<Sidebar collapsible={isMobile ? "icon" : "none"} className="border-none">
32+
<Sidebar
33+
collapsible={isMobile ? "icon" : "none"}
34+
className="border-none"
35+
role="navigation"
36+
aria-label={t("settings.nav.label")}
37+
>
3138
<SidebarContent className="pr-6">
3239
<SidebarGroup>
3340
<SidebarGroupContent>

src/frontend/src/locales/de.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,6 +1656,7 @@
16561656
"settings.mcpClient.title": "Langflow MCP-Client",
16571657
"settings.nav.apiKeys": "Langflow-API-Schlüssel",
16581658
"settings.nav.dbProviders": "Datenbankanbieter",
1659+
"settings.nav.label": "Einstellungsnavigation",
16591660
"settings.nav.general": "Allgemein",
16601661
"settings.nav.globalVariables": "Globale Variablen",
16611662
"settings.nav.mcpClient": "Langflow MCP-Client",
@@ -1672,6 +1673,8 @@
16721673
"settings.passwordTitle": "Speicherposition",
16731674
"settings.profilePictureCategory.People": "Personen",
16741675
"settings.profilePictureCategory.Space": "Bereich",
1676+
"settings.avatarAlt": "{{folder}} Avatar {{index}}",
1677+
"navigation.goBack": "Zurück",
16751678
"settings.profilePictureDescription": "Wähle das Bild aus, das als dein Profilbild angezeigt werden soll.",
16761679
"settings.profilePictureTitle": "Profilbild",
16771680
"settings.recordingKeyboard": "Aufnahme Ihres Keyboards",

src/frontend/src/locales/en.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,8 @@
288288
"settings.profilePictureDescription": "Choose the image that appears as your profile picture.",
289289
"settings.profilePictureCategory.People": "People",
290290
"settings.profilePictureCategory.Space": "Space",
291+
"settings.avatarAlt": "{{folder}} avatar {{index}}",
292+
"navigation.goBack": "Go back",
291293
"settings.apiKeysTitle": "Langflow API Keys",
292294
"settings.apiKeys.columnName": "Name",
293295
"settings.apiKeys.columnKey": "Key",
@@ -501,6 +503,7 @@
501503
"sidebar.emptyMessage": "Start creating a project or flow",
502504
"sidebar.knowledge": "Knowledge",
503505
"sidebar.myFiles": "My Files",
506+
"settings.nav.label": "Settings navigation",
504507
"settings.nav.general": "General",
505508
"settings.nav.mcpServers": "MCP Servers",
506509
"settings.nav.mcpClient": "Langflow MCP Client",

src/frontend/src/locales/es.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,6 +1656,7 @@
16561656
"settings.mcpClient.title": "Cliente Langflow MCP",
16571657
"settings.nav.apiKeys": "Claves API de Langflow",
16581658
"settings.nav.dbProviders": "Proveedores de bases de datos",
1659+
"settings.nav.label": "Navegación de configuración",
16591660
"settings.nav.general": "Tema general",
16601661
"settings.nav.globalVariables": "Variables globales",
16611662
"settings.nav.mcpClient": "Cliente Langflow MCP",
@@ -1672,6 +1673,8 @@
16721673
"settings.passwordTitle": "Contraseña",
16731674
"settings.profilePictureCategory.People": "Personas",
16741675
"settings.profilePictureCategory.Space": "Espacio",
1676+
"settings.avatarAlt": "avatar {{folder}} {{index}}",
1677+
"navigation.goBack": "Volver",
16751678
"settings.profilePictureDescription": "Elige la imagen que quieras que aparezca como foto de perfil.",
16761679
"settings.profilePictureTitle": "Foto de perfil",
16771680
"settings.recordingKeyboard": "Grabar el teclado",

src/frontend/src/locales/fr.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,6 +1656,7 @@
16561656
"settings.mcpClient.title": "Client Langflow MCP",
16571657
"settings.nav.apiKeys": "Clés API Langflow",
16581658
"settings.nav.dbProviders": "Fournisseurs de bases de données",
1659+
"settings.nav.label": "Navigation des paramètres",
16591660
"settings.nav.general": "Général",
16601661
"settings.nav.globalVariables": "Variables globales",
16611662
"settings.nav.mcpClient": "Client Langflow MCP",
@@ -1672,6 +1673,8 @@
16721673
"settings.passwordTitle": "Mot de passe",
16731674
"settings.profilePictureCategory.People": "Personnes",
16741675
"settings.profilePictureCategory.Space": "Espace",
1676+
"settings.avatarAlt": "avatar {{folder}} {{index}}",
1677+
"navigation.goBack": "Retour",
16751678
"settings.profilePictureDescription": "Choisissez l'image qui apparaîtra comme photo de profil.",
16761679
"settings.profilePictureTitle": "Photo de profil",
16771680
"settings.recordingKeyboard": "Enregistrer votre clavier",

src/frontend/src/locales/ja.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,6 +1656,7 @@
16561656
"settings.mcpClient.title": "Langflow MCP クライアント",
16571657
"settings.nav.apiKeys": "Langflow API キー",
16581658
"settings.nav.dbProviders": "DBプロバイダー",
1659+
"settings.nav.label": "設定ナビゲーション",
16591660
"settings.nav.general": "一般",
16601661
"settings.nav.globalVariables": "グローバル変数",
16611662
"settings.nav.mcpClient": "Langflow MCP クライアント",
@@ -1672,6 +1673,8 @@
16721673
"settings.passwordTitle": "パスワード",
16731674
"settings.profilePictureCategory.People": "担当者",
16741675
"settings.profilePictureCategory.Space": "スペース",
1676+
"settings.avatarAlt": "{{folder}}アバター{{index}}",
1677+
"navigation.goBack": "戻る",
16751678
"settings.profilePictureDescription": "プロフィール写真として表示される画像を選んでください。",
16761679
"settings.profilePictureTitle": "プロフィール写真",
16771680
"settings.recordingKeyboard": "キーボードの録音",

src/frontend/src/locales/pt.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,6 +1656,7 @@
16561656
"settings.mcpClient.title": "Cliente Langflow MCP",
16571657
"settings.nav.apiKeys": "Chaves de API do Langflow",
16581658
"settings.nav.dbProviders": "Provedores de banco de dados",
1659+
"settings.nav.label": "Navegação de configurações",
16591660
"settings.nav.general": "Geral",
16601661
"settings.nav.globalVariables": "Variáveis globais",
16611662
"settings.nav.mcpClient": "Cliente Langflow MCP",
@@ -1672,6 +1673,8 @@
16721673
"settings.passwordTitle": "Senha",
16731674
"settings.profilePictureCategory.People": "Pessoas",
16741675
"settings.profilePictureCategory.Space": "Espaço",
1676+
"settings.avatarAlt": "avatar {{folder}} {{index}}",
1677+
"navigation.goBack": "Voltar",
16751678
"settings.profilePictureDescription": "Escolha a imagem que aparecerá como sua foto de perfil.",
16761679
"settings.profilePictureTitle": "Foto de perfil",
16771680
"settings.recordingKeyboard": "Gravando o teclado",

src/frontend/src/locales/zh-Hans.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1656,6 +1656,7 @@
16561656
"settings.mcpClient.title": "Langflow MCP 客户端",
16571657
"settings.nav.apiKeys": "Langflow API 密钥",
16581658
"settings.nav.dbProviders": "数据库提供商",
1659+
"settings.nav.label": "设置导航",
16591660
"settings.nav.general": "常规",
16601661
"settings.nav.globalVariables": "全局变量",
16611662
"settings.nav.mcpClient": "Langflow MCP 客户端",
@@ -1672,6 +1673,8 @@
16721673
"settings.passwordTitle": "密码",
16731674
"settings.profilePictureCategory.People": "人员",
16741675
"settings.profilePictureCategory.Space": "空间",
1676+
"settings.avatarAlt": "{{folder}}头像{{index}}",
1677+
"navigation.goBack": "返回",
16751678
"settings.profilePictureDescription": "选择要作为个人头像显示的图片。",
16761679
"settings.profilePictureTitle": "头像",
16771680
"settings.recordingKeyboard": "录制键盘",

src/frontend/src/pages/FlowPage/components/TraceComponent/TraceDetailView.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,6 @@ export function TraceDetailView({ traceId, flowName }: TraceDetailViewProps) {
102102
);
103103
}
104104

105-
const headerTitle = `${trace.name || flowName || "Trace"}`;
106-
107105
return (
108106
<div
109107
className="flex h-full flex-col overflow-hidden"

0 commit comments

Comments
 (0)