// dudu 桌面端 UI kit · 共享元素:Lucide 图标子集、mac 窗口框、伪二维码 // 通过 window 共享给其余 text/babel 脚本 function DuduIcon({ d, size = 16, sw = 2, children, ...rest }) { return ( ); } const DuIcons = { Mic: (p) => ( ), Settings: (p) => ( ), Check: (p) => , X: (p) => , ChevronDown: (p) => , ChevronRight: (p) => , Sun: (p) => ( ), Moon: (p) => , AudioLines: (p) => ( ), User: (p) => ( ), LogOut: (p) => ( ), }; // dudu 圆嘴 logo(currentColor 线条版) function DuduLogo({ size = 20, sw = 3.5 }) { return ( ); } // mac 风格窗口(红绿灯 + 标题) function MacWindow({ title, width = 460, children, style }) { return (
{title}
{children}
); } // 伪二维码占位(确定性图案,仅作占位 — 接入后端 /v1/auth/qr 后替换) function FakeQr({ size = 148, seed = 7 }) { const n = 17; const cells = []; let s = seed; const rnd = () => { s = (s * 16807) % 2147483647; return s / 2147483647; }; for (let y = 0; y < n; y++) { for (let x = 0; x < n; x++) { const corner = (x < 5 && y < 5) || (x > n - 6 && y < 5) || (x < 5 && y > n - 6); let on; if (corner) { const cx = x > n - 6 ? x - (n - 5) : x, cy = y > n - 6 ? y - (n - 5) : y; on = cx === 0 || cx === 4 || cy === 0 || cy === 4 || (cx > 1 && cx < 3 + 1 && cy > 1 && cy < 3 + 1); } else { on = rnd() > 0.52; } if (on) cells.push(); } } return (
{cells}
); } Object.assign(window, { DuduIcon, DuIcons, DuduLogo, MacWindow, FakeQr });