/* Visual mockups: NFC cards, Phones, QR codes */
const { useEffect: mUseEffect, useState: mUseState, useRef: mUseRef } = React;
// ----- NFC Card -----
// material: matte | metal | glass | white | wood
function NFCCard({ material = 'matte', name = 'COLLINS S. WONDER', role = 'Head of Design · ZenTag', mono = false, className = '', style = {}, sheen = true }) {
const materials = {
matte: {
bg: 'linear-gradient(135deg, #18181c 0%, #0a0a0d 60%, #1d1d24 100%)',
border: '1px solid rgba(255,255,255,0.08)',
logoColor: '#fff',
subColor: '#86868b',
accent: 'var(--accent)',
},
metal: {
bg: 'linear-gradient(135deg, #d8dce4 0%, #8a8f9a 25%, #f0f1f4 50%, #6b6f78 80%, #c2c6cf 100%)',
border: '1px solid rgba(255,255,255,0.4)',
logoColor: '#0a0a0d',
subColor: '#2d2d35',
accent: '#0a0a0d',
},
glass: {
bg: 'linear-gradient(135deg, rgba(140,160,200,0.35) 0%, rgba(80,90,120,0.18) 50%, rgba(180,200,240,0.30) 100%)',
border: '1px solid rgba(255,255,255,0.35)',
logoColor: '#fff',
subColor: 'rgba(255,255,255,0.7)',
accent: '#fff',
},
white: {
bg: 'linear-gradient(160deg, #ffffff 0%, #ececef 100%)',
border: '1px solid rgba(0,0,0,0.06)',
logoColor: '#0a0a0d',
subColor: '#5a5a62',
accent: 'var(--accent)',
},
wood: {
bg: 'linear-gradient(135deg, #5a3a22 0%, #3a2412 40%, #6b4424 80%, #4a2e18 100%)',
border: '1px solid rgba(120,80,40,0.5)',
logoColor: '#e7d4b8',
subColor: '#b89a72',
accent: '#e7d4b8',
},
};
const m = materials[material] || materials.matte;
const woodGrain = material === 'wood' ? (
) : null;
const metalSheen = material === 'metal' ? (
) : null;
const glassHi = material === 'glass' ? (
) : null;
return (
{woodGrain}
{metalSheen}
{glassHi}
{/* Chip */}
{/* NFC wave */}
{/* Brand mark */}
ZENTAG · NFC
{name}
{role}
{/* mini logo */}
{/* Subtle radial */}
);
}
// ----- Phone Frame -----
function PhoneFrame({ children, className = '', style = {}, brand = 'iphone' }) {
return (
{/* Dynamic island */}
{children}
);
}
// ----- Profile screen inside phone -----
function ProfileScreen({ compact = false }) {
return (
{/* Status bar */}
9:41
5G
{/* Cover gradient */}
{/* Avatar */}
{/* Content */}
Collins S. Wonder
Head of Design · ZenTag
Pokuase, Accra
{/* Quick actions */}
{['Save', 'Call', 'Email'].map((l, i) => (
{l}
))}
{/* Social grid */}
{SocialList.slice(0,5).map(({ name, Comp }) => (
))}
{/* Featured links */}
{!compact && (
collinswonder.design
Portfolio · 12 projects
Book a 30-min call
Next slot · Today 4:30 PM
)}
{/* Bottom indicator */}
);
}
// ----- QR Code (procedural-looking) -----
function QRCode({ size = 180, accentDots = true, brand = true }) {
// Pseudo-stable random pattern based on coord parity
const cells = 21;
const pattern = mUseRef(null);
if (!pattern.current) {
const seed = (x, y) => ((x * 374761393 + y * 668265263) >>> 0) % 1000;
const m = [];
for (let y = 0; y < cells; y++) {
const row = [];
for (let x = 0; x < cells; x++) {
row.push(seed(x, y) > 540 ? 1 : 0);
}
m.push(row);
}
pattern.current = m;
}
const m = pattern.current;
const cs = size / cells;
// Reserve corners for finder patterns
const isFinder = (x, y) => (
(x < 7 && y < 7) || (x >= cells - 7 && y < 7) || (x < 7 && y >= cells - 7)
);
// Reserve center for logo
const isCenter = (x, y) => Math.abs(x - cells/2) < 3 && Math.abs(y - cells/2) < 3;
return (
{/* center logo */}
{brand && (
)}
);
}
Object.assign(window, { NFCCard, PhoneFrame, ProfileScreen, QRCode });