// about-page.jsx — Standalone About page for Elevate Noir // Uses the obsidian aesthetic system (obsidianStyles) shared with the // main prototype. const ab = obsidianStyles; // ───────────────────────────────────────────────────────────────────── // SIMPLE NAV — matches main site nav but with current-page state // ───────────────────────────────────────────────────────────────────── function AboutNav() { const [scrolled, setScrolled] = React.useState(false); React.useEffect(() => { const on = () => setScrolled(window.scrollY > 32); window.addEventListener('scroll', on, { passive: true }); on(); return () => window.removeEventListener('scroll', on); }, []); return ( ); } // ───────────────────────────────────────────────────────────────────── // HERO — minimal, type-driven // ───────────────────────────────────────────────────────────────────── function AboutHero() { return (
{/* faint background mark */}
{/* grain */}
◇ ABOUT · MMXXVI · BLACK DREAM

The story behind the night.

Elevate Noir is not a fundraiser, not a networking mixer, not a fashion show — though it holds all of those. It is a room built deliberately, for a community that deserves to be celebrated at the highest level.

); } // ───────────────────────────────────────────────────────────────────── // LETTER FROM THE FOUNDER // ───────────────────────────────────────────────────────────────────── function AboutFounder() { return (
◇ A LETTER
From the
founder.
FOUNDER · ELEVATE NOIR
Angel Wiafe
Founder · Party & Bash

Toronto is a city of ambition and culture. It is also a city where Black professionals routinely walk into rooms where they are the only one, where Black-owned businesses build extraordinary work without the platforms to amplify it, and where the spaces designed to celebrate excellence are too often borrowed.

I built Elevate Noir because I wanted to attend an evening that did not yet exist — one where culture, capital, and community could meet in the same room, and where the production value matched the depth of the work happening in our city.

"This is not a donation. It is a strategic investment in Black excellence — and an evening built so beautifully that our community deserves nothing less."

Every choice — the venue, the table settings, the program, the runway — has been made with one question: would the people I most admire feel celebrated here? If the answer is anything short of an unequivocal yes, we keep going until it is.

We are saving you a seat at the table.

— Angel.

); } // ───────────────────────────────────────────────────────────────────── // THE NUMBERS — pulled from the deck // ───────────────────────────────────────────────────────────────────── function AboutNumbers() { return (
◇ BY THE NUMBERS

What this night is.

Designed for a curated, high-intent audience — and built with production that meets it.

{[ { n: '250+', l: 'Professionals', d: 'Business owners, creatives, consultants, career-driven individuals.' }, { n: '7', l: 'Distinct acts', d: 'Vendors · dining · panels · runway · entertainment · auction · after-party.' }, { n: '16', l: 'Partner spots', d: 'Across Title, Gold, Silver, and Community tiers.' }, { n: '$40K', l: 'Sponsorship goal', d: 'Underwriting the production, programming, and community access.' }, ].map((s, i) => (
{ e.currentTarget.style.borderColor = `${ab.gold}55`; e.currentTarget.style.transform = 'translateY(-4px)'; }} onMouseLeave={(e) => { e.currentTarget.style.borderColor = ab.graySoft; e.currentTarget.style.transform = 'none'; }} >
{s.n}
{s.l}

{s.d}

))}
); } // ───────────────────────────────────────────────────────────────────── // WHO IS IN THE ROOM // ───────────────────────────────────────────────────────────────────── function AboutAudience() { return (
◇ WHO IS IN THE ROOM

A room designed on purpose.

Guests arrive having said yes to an evening that asks them to show up at their highest level — black tie, full presence, real conversation.

{[ { h: 'Business owners', b: 'Founders and leaders of established and emerging Black-owned companies across the GTA.' }, { h: 'Creatives', b: 'Designers, photographers, art directors, musicians, writers — the cultural shapers.' }, { h: 'Consultants', b: 'Strategy, finance, legal, and brand professionals serving the next generation.' }, { h: 'Career-driven', b: 'Mid- and senior-level professionals across tech, healthcare, media, and finance.' }, { h: 'Tastemakers', b: 'Stylists, hosts, editors, and influencers who set the tone of Toronto culture.' }, { h: 'Allies & partners', b: 'Brands and organizations committing to the long-term work of Black economic growth.' }, ].map(p => (
{p.h}

{p.b}

))}
); } // ───────────────────────────────────────────────────────────────────── // PARTY & BASH — the studio // ───────────────────────────────────────────────────────────────────── function AboutPartyBash() { return (
◇ THE STUDIO BEHIND IT

Party & Bash.

A luxury event design company creating immersive, intentional experiences across Toronto — from intimate celebrations to large-scale cultural moments.

{[ { h: 'Design', b: 'Décor, florals, lighting, and immersive atmosphere built around a single intentional concept per evening.' }, { h: 'Curation', b: 'Vendors, talent, and partnerships handpicked for fit — from Black-owned restaurants to designers to entertainment.' }, { h: 'Production', b: 'End-to-end execution: timelines, run-of-show, hospitality, and the thousand details guests never see.' }, ].map((c, i) => (
0{i + 1} ━
{c.h}

{c.b}

))}
OUR BELIEF

People should not just attend an event — they should feel inspired, connected, and fully immersed in it.

Visit the studio →
); } // ───────────────────────────────────────────────────────────────────── // CTA — return to the prototype // ───────────────────────────────────────────────────────────────────── function AboutCTA() { return (
◇ SATURDAY · OCTOBER 17 · 2026

We are saving
you a seat.

Reserve a seat → Partner with us
); } // ───────────────────────────────────────────────────────────────────── // APP // ───────────────────────────────────────────────────────────────────── function AboutApp() { return ( <> ); } ReactDOM.createRoot(document.getElementById('root')).render();