pages/ValuePartnership/PartnershipsPage/QrCodeCanvas.jsxjavascript
import { useEffect, useRef } from "react";
import PropTypes from "prop-types";
import QRCode from "qrcode";
/**
* Renders `url` as a QR code onto a canvas via the `qrcode` package
* (ported from value-slideview(-filter).js's showQRCode).
*
* @param {Object} props
* @param {string} props.url - URL/text to encode.
* @param {number} [props.size=220] - Canvas width/height in px.
*/
export const QrCodeCanvas = ({ url, size = 220 }) => {
const canvasRef = useRef(null);
useEffect(() => {
if (!canvasRef.current) return;
QRCode.toCanvas(canvasRef.current, url, { width: size }, (error) => {
// eslint-disable-next-line no-console
if (error) console.error("QR code generation failed:", error);
});
}, [url, size]);
return <canvas ref={canvasRef} width={size} height={size} />;
};
QrCodeCanvas.propTypes = {
url: PropTypes.string.isRequired,
size: PropTypes.number,
};