// Shared small components used across styles const Redact = ({ w = 60, children }) => ( {children || "\u00A0"} ); const Stamp = ({ text = "CONFIDENTIAL", color = "#8b0000", rot = -6, size = 1 }) => (
{text}
); const FileNumber = ({ id, prefix = "FILE №" }) => ( {prefix} {id} ); // crosshair / target marker const Crosshair = ({ size = 14, color = "#8b0000" }) => ( ); // Credibility pips const Credibility = ({ n, color = "#8b0000" }) => ( {[1,2,3,4,5].map(i => ( ))} ); // placeholder imagery — distressed gradient with file-folder tone const EvidencePlaceholder = ({ label = "EVIDENCE", caseId, seed = 1, variant = "kraft" }) => { const tints = { kraft: ["#3a2e1c", "#1a1410"], paper: ["#c9bda0", "#a89b78"], dark: ["#1a1816", "#070605"], red: ["#2a0808", "#0a0202"], }; const [a, b] = tints[variant] || tints.kraft; // pseudorandom streaks const streaks = Array.from({ length: 7 }).map((_, i) => ({ y: ((seed * 37 + i * 13) % 90) + 5, w: 20 + ((seed * 11 + i * 7) % 60), o: 0.05 + (((seed + i) % 5) * 0.03), })); return (
{streaks.map((s, i) => ( ))} {/* corner markers */}
+ {label}
{caseId}
[photo redacted]
+
{/* center small crosshair */}
); }; Object.assign(window, { Redact, Stamp, FileNumber, Crosshair, Credibility, EvidencePlaceholder });