feat(C): Phase C — Core UI prüfen, vervollständigen, testen

C-ERR-BOUNDARY: ErrorBoundary erweitert (trace_id, Fallback-UI, PluginErrorBoundary)
C-NOTIF: NotificationDropdown mit System-Channel-Link
C-DOCS: ApiDocs.tsx Seite (Swagger UI iframe)
C-A11Y: aria-label, min-h-touch, focus-visible ergänzt
C-FE-TEST: 29 neue Tests (ErrorBoundary, ApiDocs, PrintButton, themeStore, NotificationDropdown)
C-DOC: ui-design-guidelines.md aktualisiert

Verifiziert (keine Änderungen nötig):
- C-TAGS, C-CF, C-FILTER, C-DEDUP, C-ONBOARD, C-THEME, C-PWA, C-PRINT

TSC: 0 errors, Build: erfolgreich, Vitest: 29/29 passed
This commit is contained in:
Agent Zero
2026-08-13 21:57:59 +02:00
parent 0e72d4624d
commit 25b2581653
15 changed files with 713 additions and 62 deletions
+1 -1
View File
@@ -10,7 +10,7 @@ import { useAIUIControl } from '@/hooks/useAIUIControl';
import { PluginRegistry } from '@/components/plugins/PluginRegistry';
import { AIUIControlIndicator } from '@/components/ai-ui-control/AIUIControlIndicator';
import { WindowContainer } from '@/components/window/WindowContainer';
import { ErrorBoundary } from '@/components/ErrorBoundary';
import { ErrorBoundary } from '@/components/common/ErrorBoundary';
import { WelcomeDialog } from '@/components/onboarding/WelcomeDialog';
import { OnboardingTour } from '@/components/onboarding/OnboardingTour';
import { useOnboardingStore } from '@/store/onboardingStore';
@@ -7,7 +7,7 @@ import React from 'react';
import { TopBar } from './TopBar';
import { ToastContainer } from '@/components/ui/Toast';
import { PluginRegistry } from '@/components/plugins/PluginRegistry';
import { ErrorBoundary } from '@/components/ErrorBoundary';
import { ErrorBoundary } from '@/components/common/ErrorBoundary';
import { Outlet } from 'react-router-dom';
export function StartLayout() {
+2 -1
View File
@@ -98,8 +98,9 @@ export function TopBar() {
<button
key={win.id}
onClick={() => restoreWindow(win.id)}
className="flex items-center gap-1.5 bg-secondary-100 text-secondary-700 px-3 py-1 rounded-md text-sm hover:bg-secondary-200"
className="flex items-center gap-1.5 bg-secondary-100 text-secondary-700 px-3 py-1 rounded-md text-sm hover:bg-secondary-200 min-h-touch focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500"
title={win.title}
aria-label={`Fenster wiederherstellen: ${win.title}`}
>
<Layers className="w-3.5 h-3.5" />
<span className="max-w-32 truncate">{win.title}</span>