Fix header overlap in invoice PDF and Bongbetic wordmark on light theme

react-pdf wraps text once at the first flex measure; when yoga then shrank
the vendor column the cached lines ran under the INVOICE meta column. The
header now pins column widths (299 + 24 + 192 pt), sizes the logo from its
own aspect (stacked above the text when it would leave under 160 pt), uses
absolute per-Text line heights, and turns hyphenation off.

Also: repeating table header with an orphan-header guard, wrap=false rows,
Page n of N footer, GSTIN printed only when present, one Text per address
line, HTML twin header grid. The light-theme header showed the white-text
wordmark; the ternary was inverted.

Adds vitest + pdfjs-dist harness that fails on the old document (address
overlaps Invoice No.) and passes on the new one.
This commit is contained in:
2026-10-04 03:57:47 +05:30
parent d2ee9e32b3
commit f7a1302e94
12 changed files with 1269 additions and 126 deletions
+7 -1
View File
@@ -9,6 +9,7 @@
"dev": "vite",
"build": "tsc --noEmit && vite build",
"preview": "vite preview",
"test": "vitest run",
"tauri": "tauri",
"app:dev": "tauri dev",
"app:build": "tauri build --features custom-protocol",
@@ -33,8 +34,13 @@
"@types/react": "^19.2.0",
"@types/react-dom": "^19.2.0",
"@vitejs/plugin-react": "^5.2.0",
"pdfjs-dist": "6.4.299",
"sass": "^1.105.1",
"typescript": "^5.9.3",
"vite": "^7.3.6"
"vite": "^7.3.6",
"vitest": "^5.0.3"
},
"optionalDependencies": {
"@napi-rs/canvas": "^1.0.10"
}
}