/* ============================================================================
app-a.jsx — DESIGN A page components ("Editorial" · Archivo)
Reads content from props (fed by runtime.js → content-a.js or the editor).
Exposes window.PAGES = { home, about, reel, credits, contact }.
========================================================================== */
(function () {
const Media = window.Media;
const useBreakpoint = window.useBreakpoint;
const ReelGallery = window.ReelGallery;
const SocialBar = window.SocialBar;
/* palette */
const accent = '#a8552a', bone = '#e8dcc4', espresso = '#1c1814',
muted = '#a89878', surface = '#231d17';
const fontUI = '"Archivo", system-ui, sans-serif';
/* responsive helper: pick(desktop, tablet, phone) */
function mk(bp) {
const P = bp === 'phone', T = bp === 'tablet';
return function (d, t, p) { return P ? p : (T ? (t === undefined ? d : t) : d); };
}
function Root(props) {
const bp = props.bp;
return React.createElement('div', {
style: {
width: bp === 'desktop' ? 1440 : '100%',
maxWidth: 1440, margin: '0 auto',
background: espresso, color: bone, fontFamily: fontUI,
overflow: 'hidden'
}
}, props.children);
}
/* shared nav */
function NavBar({ active, all, bp }) {
const r = mk(bp);
const meta = all.meta || {};
const nav = all.nav || {};
const links = [['home', 'Home', 'index.html'], ['about', 'About', 'about.html'], ['reel', 'Reel', 'reel.html'],
['credits', 'Credits', 'credits.html'], ['contact', 'Contact', 'contact.html']]
.filter(function (x) { return nav[x[0]] !== false; });
return (
);
}
function SiteFooter({ all, bp }) {
const r = mk(bp);
const home = all.home || {};
const f = all.footer || {};
const ci = all.contactInfo || {};
const meta = all.meta || {};
const showMats = f.showMaterials !== false;
const mats = (Array.isArray(f.materials) ? f.materials : [
{ label: 'Résumé ↓ PDF', useResume: true, newTab: true },
{ label: 'Headshots ↓', href: 'contact.html', newTab: false },
{ label: 'Reel ↗', href: 'reel.html', newTab: false }
]).filter((m) => m && m.label && (m.href || m.useResume));
const creditText = (f.creditText != null && f.creditText !== '') ? f.creditText : 'Site by michaelarondesign.com';
const creditUrl = f.creditUrl || 'https://michaelarondesign.com';
const showCredit = f.showCredit !== false;
const lp = (href, newTab) => (newTab || /^https?:\/\//i.test(href || '') || /\.pdf(\?|#|$)/i.test(href || '')) ? { href, target: '_blank', rel: 'noopener noreferrer' } : { href };
return (
{home.contactEyebrow}
Let's talk .
{home.contactLead}
{showMats && (
Materials
{mats.map((m, i) => {
const mhref = m.useResume ? ((all.meta && all.meta.resumeFile) || '') : m.href;
return
{m.label} ;
})}
)}
{meta.copyright}
{ci.cityLine}
);
}
function Footer({ all, bp }) {
return ;
}
/* ===================== HOME ===================== */
function Home({ c, all }) {
const bp = useBreakpoint(); const r = mk(bp);
const gallery = ((all.reel && all.reel.gallery) || []).filter(g => g && g.thumb && g.video);
const hasGallery = gallery.length > 0;
return (
{/* hero */}
{c.eyebrowNo} · {c.eyebrow}
{c.nameLine1}{c.nameLine2}
{window.__rich(c.intro, accent)}
{c.stats.map((s) => (
))}
{/* selected work */}
{c.workEyebrow}
{c.workTitle}
{(!all.footer || all.footer.showFullCredits !== false) &&
Full credits → }
{c.work.map((w, i) => (
{w.featured &&
Now in production
}
{w.role} {w.year}
{w.title}
{w.meta}
))}
{/* bio essay */}
{c.bioEyebrow}
{c.bioKicker}
{c.bioHeadlineA}{c.bioHeadlineAccent} {c.bioHeadlineB}
I
{c.bioLead}
{c.bioPara2}
{c.bioPara3}
{c.bioPara4}
{/* reel */}
{c.reelEyebrow}
{c.reelTitle}
{c.reelMeta}
{hasGallery
?
: }
{/* other chapters */}
{c.chaptersEyebrow}
{c.chaptersTitle}
{c.chaptersLead}
{c.chapters.filter((ch) => ch && ch.on !== false && (ch.title || ch.era || ch.body)).map((ch, i) => (
{ch.era}
{ch.title}
{ch.body}
))}
{/* contact footer */}
);
}
/* shared video player frame with corner brackets + play button */
function PlayerFrame({ poster, video, big }) {
if (video) {
return
;
}
const sz = big ? 112 : 96;
return (
{[{ top: 16, left: 16, borderTop: `1px solid ${accent}`, borderLeft: `1px solid ${accent}` },
{ top: 16, right: 16, borderTop: `1px solid ${accent}`, borderRight: `1px solid ${accent}` },
{ bottom: 16, left: 16, borderBottom: `1px solid ${accent}`, borderLeft: `1px solid ${accent}` },
{ bottom: 16, right: 16, borderBottom: `1px solid ${accent}`, borderRight: `1px solid ${accent}` }
].map((s, i) =>
)}
);
}
/* ===================== ABOUT ===================== */
function About({ c, all }) {
const bp = useBreakpoint(); const r = mk(bp);
const prod = (c.productionShots || []).filter((p) => p && p.on !== false && p.image);
const hasProd = prod.length > 0;
return (
{c.eyebrow}
{c.titleLine1}{c.titleLine2}
{window.__rich(c.lead, accent)}
{c.actsEyebrow}
{c.actsTitleA}{c.actsTitleAccent} {c.actsTitleB}
{c.acts.map((act, i) => (
{act.title}
{act.body.map((p, j) =>
{p}
)}
))}
{c.timelineEyebrow}
{c.timelineTitle}
{c.timeline.map((t, i) => (
))}
{c.galleryEyebrow}
{c.galleryTitle}
{c.gallery.map((p, i) => (
{p.caption}
))}
{hasProd && (
{c.productionEyebrow}
{c.productionTitle}
{c.productionLead ?
{window.__rich(c.productionLead, accent)}
: null}
{prod.map((p, i) => {
const rot = [-3, 2.5, -1.5, 3, -2.5, 1.5][i % 6];
return (
{ e.currentTarget.style.transform = 'rotate(0deg) scale(1.04)'; e.currentTarget.style.zIndex = 5; }}
onMouseLeave={(e) => { e.currentTarget.style.transform = `rotate(${rot}deg)`; e.currentTarget.style.zIndex = 'auto'; }}>
{p.caption}
{p.project ? {p.project}
: null}
);
})}
)}
);
}
/* ===================== REEL ===================== */
function Reel({ c, all }) {
const bp = useBreakpoint(); const r = mk(bp);
const gallery = (c.gallery || []).filter(g => g && g.thumb && g.video);
const hasGallery = gallery.length > 0;
return (
{c.eyebrow}
{c.titleLine1}{c.titleLine2}
{window.__rich(c.lead, accent)}
{c.metaUpdated} · {c.metaRuntime}
{hasGallery
?
:
{!c.video &&
{c.nowPlayingTag}
{c.nowPlayingName}
}
}
{!hasGallery && (
{c.chaptersLabel}
{c.chapters.map((ch, i) => (
))}
)}
{!hasGallery && (
{c.archiveEyebrow}
{c.archiveTitle}
{c.archive.map((a, i) => (
{a.tag}
{a.body}
{a.meta}
))}
)}
);
}
/* ===================== CREDITS ===================== */
function Credits({ c, all }) {
const bp = useBreakpoint(); const r = mk(bp);
const cols = '88px 2.2fr 1.2fr 1.1fr 1.3fr 140px';
return (
{c.eyebrow}
{c.titleLine1}{c.titleLine2}
{window.__rich(c.lead, accent)}
{bp !== 'phone' &&
Year
Title
Role
Network · Studio
Notes
Status
}
{c.groups.map((g, gi) => (
{g.head}
{g.rows.map((row, i) => (
bp === 'phone' ? (
{row.year} {row.hot ? '● Current' : 'Available'}
{row.title}
{row.role}{row.net ? ' · ' + row.net : ''}
{row.note &&
{row.note}
}
) : (
{row.year}
{row.title}
{row.role}
{row.net}
{row.note}
{row.hot ? '● Current' : 'Available'}
)
))}
))}
{c.skills.map((col, i) => (
{col.h}
{col.items.map((it, j) =>
{it}
)}
))}
);
}
/* ===================== CONTACT ===================== */
function Contact({ c, all }) {
const bp = useBreakpoint(); const r = mk(bp);
const inputStyle = { width: '100%', boxSizing: 'border-box', background: 'transparent', border: 'none', borderBottom: `1px solid ${surface}`, padding: '14px 0', color: bone, fontSize: 17, fontFamily: fontUI, outline: 'none' };
const labelStyle = { fontSize: 10, letterSpacing: '0.22em', textTransform: 'uppercase', color: muted, fontWeight: 600, marginBottom: 8, display: 'block' };
const mailto = 'mailto:' + all.contactInfo.email + '?subject=Inquiry%20for%20Michael%20Aron';
return (
{c.eyebrow}
{c.titleA}{c.titleAccent}
{window.__rich(c.lead, accent)}
{c.cards.map((card, i) => {
const href = card.label.toLowerCase().includes('phone') ? 'tel:' + card.value.replace(/[^0-9+]/g, '')
: card.label.toLowerCase().includes('email') ? 'mailto:' + card.value : null;
const inner = (
{card.label}
{card.value}
{card.meta}
);
const st = { padding: r('56px 48px', '40px 32px', '36px 20px'), borderRight: i < 2 && bp !== 'phone' ? `1px solid ${surface}` : 'none', borderBottom: bp === 'phone' && i < 2 ? `1px solid ${surface}` : 'none', textDecoration: 'none', display: 'block', color: bone };
return href ?
{inner} :
{inner}
;
})}
{c.showForm !== false && (
{c.formEyebrow}
{c.formTitle}
{c.formLead}
)}
Factsheet
{c.factsheet.map((f, i) => (
{f.k}
{f.v}
))}
{c.showPressKit !== false && (
Press kit
{c.pressKit.map((p, i) => (
{p.label} ↓
{p.meta}
))}
)}
{c.closingA}{c.closingAccent}
);
}
window.PAGES = { home: Home, about: About, reel: Reel, credits: Credits, contact: Contact };
})();