diff --git a/dashboard/src/__tests__/touch-targets.test.ts b/dashboard/src/__tests__/touch-targets.test.ts index feccead9b..3e04db473 100644 --- a/dashboard/src/__tests__/touch-targets.test.ts +++ b/dashboard/src/__tests__/touch-targets.test.ts @@ -21,7 +21,7 @@ describe('Mobile touch targets (issue #2350)', () => { const lines = src.split('\n'); let found = false; for (let i = 0; i < lines.length; i++) { - if (lines[i].includes('aria-label="New Session')) { + if (lines[i].includes("aria.newSession") || lines[i].includes('aria-label="New Session')) { // Search within 5 lines in both directions for className with min-h for (let j = Math.max(0, i - 5); j <= Math.min(lines.length - 1, i + 5); j++) { if (lines[j].includes('className="') && lines[j].includes('min-h-[44px]')) { diff --git a/dashboard/src/components/CreatePipelineModal.tsx b/dashboard/src/components/CreatePipelineModal.tsx index 6307d8565..c596a5763 100644 --- a/dashboard/src/components/CreatePipelineModal.tsx +++ b/dashboard/src/components/CreatePipelineModal.tsx @@ -2,7 +2,8 @@ * components/CreatePipelineModal.tsx — Modal dialog for creating new pipelines. */ -import { useState, useEffect, useRef, useCallback } from 'react'; +import { useState, useEffect, useRef, useCallback } from 'react' +import { useT } from '../i18n/context'; import { useFocusTrap } from '../hooks/useFocusTrap'; import { useNavigate } from 'react-router-dom'; import { X, Loader2, Plus, Trash2 } from 'lucide-react'; @@ -26,6 +27,7 @@ function makeStep(): StepRow { } export default function CreatePipelineModal({ open, onClose }: CreatePipelineModalProps) { + const t = useT(); const navigate = useNavigate(); const nameRef = useRef(null); const trapRef = useFocusTrap(open); @@ -118,11 +120,11 @@ export default function CreatePipelineModal({ open, onClose }: CreatePipelineMod
-
+
{/* Header */}

New Pipeline

-
diff --git a/dashboard/src/components/CreateSessionModal.tsx b/dashboard/src/components/CreateSessionModal.tsx index a0946d86f..54cba4d61 100644 --- a/dashboard/src/components/CreateSessionModal.tsx +++ b/dashboard/src/components/CreateSessionModal.tsx @@ -2,7 +2,8 @@ * components/CreateSessionModal.tsx — Modal dialog for creating new sessions. */ -import { useState, useEffect, useRef, useCallback } from 'react'; +import { useState, useEffect, useRef, useCallback } from 'react' +import { useT } from '../i18n/context'; import { useFocusTrap } from '../hooks/useFocusTrap'; import { useNavigate } from 'react-router-dom'; import { X, Loader2, Plus, Trash2 } from 'lucide-react'; @@ -21,6 +22,7 @@ function makeRow(): BatchRow { } export default function CreateSessionModal({ open, onClose }: CreateSessionModalProps) { + const t = useT(); const navigate = useNavigate(); const workDirRef = useRef(null); const abortRef = useRef(null); @@ -192,7 +194,7 @@ export default function CreateSessionModal({ open, onClose }: CreateSessionModal /> {/* Modal */} -
+
{/* Header */}
@@ -235,7 +237,7 @@ export default function CreateSessionModal({ open, onClose }: CreateSessionModal )}
- diff --git a/dashboard/src/components/Layout.tsx b/dashboard/src/components/Layout.tsx index 6d9fda73b..d3174761a 100644 --- a/dashboard/src/components/Layout.tsx +++ b/dashboard/src/components/Layout.tsx @@ -4,7 +4,8 @@ import { logger } from '../utils/logger'; */ import { NavLink, Outlet } from 'react-router-dom'; -import { useEffect, useState } from 'react'; +import { useEffect, useState } from 'react' +import { useT } from '../i18n/context'; import Breadcrumb from './shared/Breadcrumb'; import { ErrorBoundary } from './shared/ErrorBoundary'; import { useTheme } from '../hooks/useTheme'; @@ -105,6 +106,7 @@ function isMobileSidebarViewport(): boolean { } export default function Layout() { + const t = useT(); const sseConnected = useStore((s) => s.sseConnected); const setSseConnected = useStore((s) => s.setSseConnected); const sseError = useStore((s) => s.sseError); @@ -406,7 +408,7 @@ export default function Layout() { {/* ── Sidebar ─────────────────────────────────────────── */}
{/* Nav links */} -