aufraeumen: shadcn nur noch zum Bauen, tote Exporte und Test-Attrappen raus, Lint-Regeln scharf

- shadcn liefert zur Laufzeit nichts: gebraucht wird nur shadcn/tailwind.css beim Bauen
  (am PC und im CI, beide mit npm ci inkl. devDependencies). Also devDependency; 325
  Pakete im Lockfile haengen ausschliesslich daran und sind jetzt "dev".
- @testing-library/user-event war nirgends benutzt: entfernt.
- Dialog/Sheet: ungenutzte Trigger/Close/Footer und "use client" raus.
- test/setup.ts: ResizeObserver-Attrappe fuer Recharts und Kraftgraph entfernt - beide
  gibt es nicht mehr, und Radix' Dialog misst nichts.
- eslint.config.js: Die vier React-Compiler-Regeln sollten laut Kommentar auf "error",
  sobald ihr Zaehler 0 ist. Er ist 0 - jetzt error. Veraltete Zahlen und "Recharts" im
  Kommentar korrigiert.
- lib/utils.ts bleibt (Ziel von components.json fuer die shadcn-CLI), jetzt mit Kommentar.
- Lockfile: npm 11.17 traegt sechs optionale wasm32-Unterpakete zusaetzlich ein, auch
  ohne diese Aenderung; die sind wieder raus, damit der Diff nur das Gewollte zeigt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-09-24 15:42:13 +02:00
co-authored by Claude Opus 5.5
parent bd12667231
commit 29ec6f2ccf
7 changed files with 344 additions and 118 deletions
+3 -41
View File
@@ -9,44 +9,6 @@ afterEach(() => {
localStorage.clear()
})
// jsdom rechnet kein Layout: JEDES Element ist 0x0, und es gibt keinen ResizeObserver.
// Messende Komponenten (Recharts' ResponsiveContainer, der Kraftgraph) zeichnen daraufhin
// gar nichts und warnen "width(0) and height(0)".
//
// Diese Attrappe meldet den Beobachtern EINMAL eine plausible Groesse, damit solche
// Komponenten ueberhaupt rendern. Sie ist bewusst konstant: Tests hier pruefen Logik und
// Struktur, nie gemessene Pixel — auf echte Layout-Werte darf sich kein Test stuetzen.
const TEST_BREITE = 800
const TEST_HOEHE = 400
class TestResizeObserver implements ResizeObserver {
constructor(private rueckruf: ResizeObserverCallback) {}
observe(ziel: Element) {
const rect = {
width: TEST_BREITE, height: TEST_HOEHE, top: 0, left: 0,
right: TEST_BREITE, bottom: TEST_HOEHE, x: 0, y: 0,
toJSON: () => ({}),
} as DOMRectReadOnly
const eintrag = {
target: ziel,
contentRect: rect,
borderBoxSize: [{ inlineSize: TEST_BREITE, blockSize: TEST_HOEHE }],
contentBoxSize: [{ inlineSize: TEST_BREITE, blockSize: TEST_HOEHE }],
devicePixelContentBoxSize: [{ inlineSize: TEST_BREITE, blockSize: TEST_HOEHE }],
} as unknown as ResizeObserverEntry
// Asynchron wie das Original — ein synchroner Rueckruf im Konstruktor-Pfad wuerde
// React mitten im Rendern aktualisieren.
queueMicrotask(() => this.rueckruf([eintrag], this))
}
unobserve() {}
disconnect() {}
}
globalThis.ResizeObserver = TestResizeObserver as unknown as typeof ResizeObserver
// Denselben Dienst fuer Komponenten, die direkt messen statt zu beobachten.
for (const [name, wert] of [["offsetWidth", TEST_BREITE], ["offsetHeight", TEST_HOEHE]] as const) {
Object.defineProperty(HTMLElement.prototype, name, { configurable: true, value: wert })
}
// Bis 09/2026 stand hier eine ResizeObserver-Attrappe fuer Recharts und den Kraftgraph. Beide
// sind mit dem Box-Wart-Umbau entfallen, und Radix' Dialog misst nichts. Braucht ein kuenftiger
// Baustein wieder Layout-Masse, meldet jsdom das deutlich ("ResizeObserver is not defined").