fix(layout): replace hardcoded 'Hochladen' with m.upload_action() + aria-label
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -363,6 +363,7 @@
|
||||
"doc_panel_discussion_annotation_tab": "Annotation · Seite {page}",
|
||||
"pdf_annotations_show": "Annotierungen anzeigen",
|
||||
"pdf_annotations_hide": "Annotierungen verbergen",
|
||||
"upload_action": "Hochladen",
|
||||
"upload_drop_hint": "Einzeln oder mehrere Dateien auf einmal hochladen",
|
||||
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
||||
"upload_filename_hint": "Tipp: 2024-03-15_Mueller_Hans.pdf → Datum und Absender werden vorausgefüllt",
|
||||
|
||||
@@ -363,6 +363,7 @@
|
||||
"doc_panel_discussion_annotation_tab": "Annotation · Page {page}",
|
||||
"pdf_annotations_show": "Show annotations",
|
||||
"pdf_annotations_hide": "Hide annotations",
|
||||
"upload_action": "Upload",
|
||||
"upload_drop_hint": "Drop one or multiple files at once",
|
||||
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
||||
"upload_filename_hint": "Tip: 2024-03-15_Mueller_Hans.pdf → date and sender pre-filled",
|
||||
|
||||
@@ -363,6 +363,7 @@
|
||||
"doc_panel_discussion_annotation_tab": "Anotación · Página {page}",
|
||||
"pdf_annotations_show": "Mostrar anotaciones",
|
||||
"pdf_annotations_hide": "Ocultar anotaciones",
|
||||
"upload_action": "Subir",
|
||||
"upload_drop_hint": "Uno o varios archivos a la vez",
|
||||
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
||||
"upload_filename_hint": "Consejo: 2024-03-15_Mueller_Hans.pdf → fecha y remitente prellenados",
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import './layout.css';
|
||||
import { page } from '$app/state';
|
||||
import { onMount } from 'svelte';
|
||||
import * as m from '$lib/paraglide/messages.js';
|
||||
import LanguageSwitcher from '$lib/components/LanguageSwitcher.svelte';
|
||||
import ThemeToggle from '$lib/components/ThemeToggle.svelte';
|
||||
import NotificationBell from '$lib/components/NotificationBell.svelte';
|
||||
@@ -55,6 +56,7 @@ const userInitials = $derived.by(() => {
|
||||
{#if data?.user}
|
||||
<a
|
||||
href="/documents/new"
|
||||
aria-label={m.upload_action()}
|
||||
class="inline-flex items-center gap-2 rounded-sm border border-white/25 px-3.5 py-1.5 font-sans text-[11px] font-bold tracking-[.12em] text-white uppercase transition-colors hover:bg-white/10"
|
||||
>
|
||||
<svg
|
||||
@@ -73,7 +75,7 @@ const userInitials = $derived.by(() => {
|
||||
<polyline points="17 8 12 3 7 8" />
|
||||
<line x1="12" y1="3" x2="12" y2="15" />
|
||||
</svg>
|
||||
Hochladen
|
||||
{m.upload_action()}
|
||||
</a>
|
||||
{/if}
|
||||
<!-- Language selector (desktop only — mobile lives in nav drawer) -->
|
||||
|
||||
@@ -48,6 +48,22 @@ describe('Layout – user avatar button', () => {
|
||||
});
|
||||
});
|
||||
|
||||
// ─── Upload link ──────────────────────────────────────────────────────────────
|
||||
|
||||
describe('Layout – upload link', () => {
|
||||
it('has aria-label for screen reader access', async () => {
|
||||
render(Layout, { data: makeData(), children: emptySnippet });
|
||||
const link = page.getByRole('link', { name: /Hochladen|Upload|Subir/i });
|
||||
await expect.element(link).toHaveAttribute('aria-label');
|
||||
});
|
||||
|
||||
it('navigates to /documents/new', async () => {
|
||||
render(Layout, { data: makeData(), children: emptySnippet });
|
||||
const link = page.getByRole('link', { name: /Hochladen|Upload|Subir/i });
|
||||
await expect.element(link).toHaveAttribute('href', '/documents/new');
|
||||
});
|
||||
});
|
||||
|
||||
// ─── Dropdown ─────────────────────────────────────────────────────────────────
|
||||
|
||||
describe('Layout – user dropdown', () => {
|
||||
|
||||
Reference in New Issue
Block a user