import { useEffect, useState } from "react";
import QRCode from "qrcode";
/**
* QR-Inhalt für ein Einzelstück. Bewusst das Custom-Scheme `vorrania://` statt
* einer https-URL: Die normale Kamera-App öffnet damit trotzdem die App, aber
* OHNE an eine feste Domain gebunden zu sein. Das ist für einen selbstgehosteten
* Dienst nötig (jede Instanz hat eine andere URL) und der QR verrät keinen Server.
* Die App öffnet die UID am gerade aktiven Server.
*/
export const itemDeepLink = (uid) => `vorrania://i/${uid}`;
/** Kleines QR-Bild für einen Wert (asynchron erzeugt). */
export function QrImg({ text, size = 60 }) {
const [url, setUrl] = useState(null);
useEffect(() => {
let ok = true;
QRCode.toDataURL(text, { margin: 1, width: size * 2 })
.then((u) => { if (ok) setUrl(u); })
.catch(() => {});
return () => { ok = false; };
}, [text, size]);
return url
?
: ;
}
const esc = (s) => (s || "").replace(/[<>&]/g, "");
/** Druckt QR-Etiketten in einem neuen Fenster. entries: [{ text, line1, line2 }]. */
export async function printQrLabels(title, entries) {
const labels = await Promise.all(entries.map(async (e) => {
const url = await QRCode.toDataURL(e.text, { margin: 1, width: 260 });
return `