# @mostajs/qrpanel Encodeur QR pur JS (zéro-dép) + figures + payloads typés. Versions 1→10, niveau M, v≥7 avec INFO DE VERSION (sinon QR rejeté). Reed-Solomon GF(256), 8 masques. ## exports (. = src/index.js) qrMatrix(text) → {matrix,size}. qrSvg(text,{scale=4,margin=4,dark,light}) → . qrLive(text,caption?,{scale=6,margin=3,maxWidth=240,dark,light}) →
scannable + légende. ## ./payloads (chaînes scan-and-act) qrWifi({ssid,password,security=WPA,hidden}) · qrTel(num) · qrSms(num,body) · qrEmail(to,{subject,body}) · qrGeo(lat,lng) · qrUrl(u) · qrMeCard({name,tel,email,url,note}) · qrVCard({name,org,title,tel,email,url,adr,note}) · qrEvent({title,start,end,location,description}) [VEVENT] ## ./figures qrLogo(text,{logo,logoScale=.2,scale,margin,dark,light}) → SVG + logo central (⚠ payload court). qrCard(text,{title,subtitle,logo}) · qrBadge(text,{name,role,event}) · qrSheet([{data,caption}],{cols=3}) ## ./png (Node, node:zlib) qrPng(text,{scale=6,margin=4}) → data:image/png;base64 (emails/billets où le SVG est bloqué) ## ./decode (Node, dépend de jsqr) — DÉCODAGE (qrpanel encode ET décode, v0.6) decodeQr(imageData|{data,width,height}[, w, h]) → string|null (texte du QR depuis une image RGBA) ## ./browser-scan (asset navigateur) — scanner caméra prêt à servir (v0.6) Fichier JS autonome à servir tel quel (