feat: improve frontend accessibility, dark mode, and UX
Build and Push Multi-Platform Images / build-and-push (push) Successful in 18s

- Replace div with semantic button elements in AppLayout for accessibility
- Use Ant Design theme tokens instead of hardcoded colors in MailDetailPage
- Add loading state to refresh buttons and pagination info
- Add German empty state messages to tables
- Clean up unnecessary ConfigProvider wrappers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
bjoernpoettkerandClaude Sonnet 4.6 committed 2026-05-21 14:45:33 +02:00
1 parent e9d42ce172
commit 7de22c9418
8 files changed
+43 -31

No files matched your search

@@ -1,7 +1,9 @@
import { useEffect, useState } from 'react';
import { Table, Popover, Button, Space, message, ConfigProvider, Tooltip } from 'antd';
import { Table, Popover, Button, Space, message, Tooltip, Typography } from 'antd';
import { AuthImage } from '../utils/auth-resource';
import { ReloadOutlined } from '@ant-design/icons';
const { Title } = Typography;
import dayjs from 'dayjs';
import { posteingangApi } from '../api/posteingang';
import type { PosteingangDocument } from '../api/posteingang';
@@ -98,7 +100,7 @@ export default function PosteingangPage() {
render: (text: string) => dayjs(text).format('DD.MM.YYYY HH:mm'),
},
{
title: 'Aktion',
title: 'Aktionen',
key: 'action',
width: 150,
render: (_: any, record: PosteingangDocument) => (
@@ -110,10 +112,9 @@ export default function PosteingangPage() {
];
return (
<ConfigProvider>
<div style={{ padding: '0 24px 24px' }}>
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 16 }}>
<h2>Posteingang</h2>
<div>
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 16 }}>
<Title level={3} style={{ margin: 0 }}>Posteingang</Title>
<Space>
<Tooltip title="Manuell aktualisieren">
<Button icon={<ReloadOutlined />} onClick={fetchData} loading={loading} />
@@ -125,9 +126,10 @@ export default function PosteingangPage() {
dataSource={data}
rowKey="id"
loading={loading}
pagination={{ pageSize: 20 }}
pagination={{ pageSize: 20, showSizeChanger: true, showTotal: (t) => `${t} Dokumente` }}
locale={{ emptyText: 'Keine Einträge vorhanden' }}
/>
<DocumentEditModal
documentId={selectedDoc?.id || null}
document={selectedDoc}
@@ -137,7 +139,6 @@ export default function PosteingangPage() {
isPosteingang={true}
hasNextDocument={data.length > 1}
/>
</div>
</ConfigProvider>
</div>
);
}