import { useState, useMemo } from "react"; const fontLink = document.createElement("link"); fontLink.rel = "stylesheet"; fontLink.href = "https://fonts.googleapis.com/css2?family=Unbounded:wght@300;400;500;700&family=League+Spartan:wght@400;600;700&family=Montserrat:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap"; document.head.appendChild(fontLink); const C = { terra:"rgb(194,89,32)", amber:"rgb(209,147,49)", olive:"rgb(178,174,65)", slate:"rgb(145,167,171)", navy:"rgb(20,19,59)", offwhite:"rgb(250,250,248)", border:"rgb(224,224,232)", muted:"rgb(126,125,147)", body:"rgb(91,90,118)", }; const F = { display:"'Unbounded',sans-serif", ui:"'League Spartan',sans-serif", body:"'Montserrat',sans-serif", }; const Colorbar = () => (
); const BrandMark = () => (
{[[18,C.terra],[14,C.amber],[10,C.olive],[7,C.slate]].map(([w,c],i)=>(
))}
AI for Interior
Designers™
); const Eyebrow = ({c=C.muted,mb=6,children})=>(
{children}
); const Rule = ({children})=>(
{children}
); const Notice = ({accent=C.amber,label,children})=>(
{label}
{children}
); const SaveBadge = ({children})=>( {children} ); // ── DATA ────────────────────────────────────────────── const HPMKT_EVENTS = [ { id:"hp26", num:1, label:"Fall HPMKT 2026", date:"Oct 17–18, 2026", role:"LAUNCH", color:C.amber, days:2, stops:6, note:"The launch event. Two full days in showroom row. Every brand present at the launch is in every press release, every social post, every industry conversation that follows.", }, { id:"hp27s", num:2, label:"Spring HPMKT 2027", date:"Apr 10–11, 2027", role:"The Village™ Announced", color:C.terra, days:2, stops:6, note:"The Village™ goes public here. The brands present at spring 2027 are named co-presenters when the permanent campus is announced publicly.", }, { id:"hp27f", num:3, label:"Fall HPMKT 2027", date:"Oct 23–24, 2027", role:"Year 2 Flagship", color:C.olive, days:2, stops:6, note:"Year 2. The Village™ is operational. The circuit has proven itself across 13 events. This stop carries the most prestige of any event on the 2027 circuit.", }, ]; const STOP_RATE = 4500; // base rate per stop // Stop types at HPMKT const STOP_TYPES = [ {id:"opening", label:"Opening Stop", premium:1500, desc:"Jenna opens both days from this showroom. Maximum foot traffic. First brand designers experience.", position:"Stop 1"}, {id:"mid", label:"Mid-Circuit Stop", premium:0, desc:"Core session stop. 1-hour AI session tailored to brand category. Coach or Jenna facilitates.", position:"Stops 2–4"}, {id:"closing", label:"Closing Stop", premium:1500, desc:"Jenna closes both days from this showroom. Final impression. Field Day enrollment offer made here.", position:"Stop 5–6"}, {id:"night", label:"Night Event Host", premium:2500, desc:"Evening event in brand's space, open to all of market week. The biggest social moment of both nights.", position:"Evening"}, ]; // Co-sponsor model const CO_SPONSOR = { solo: { label:"Solo Stop", split:1, perBrand: STOP_RATE, desc:"Brand owns the full stop. Exclusive category. Full 60 minutes." }, co2: { label:"Co-Sponsor (2)", split:2, perBrand: STOP_RATE/2, desc:"Two complementary brands share the stop. Each pays half. Session blends both categories." }, }; // Multi-market tiers const MULTI_TIERS = [ {events:1, label:"Single Market", pct:0, badge:null, example:"One HPMKT activation"}, {events:2, label:"Two-Market Partner", pct:0.10, badge:"Save 10%", example:"Launch + Spring 2027"}, {events:3, label:"Three-Market Founding Partner", pct:0.20, badge:"Save 20%", example:"All three HPMKT events"}, ]; // Andmore operator model const ANDMORE_PACKAGES = [ { id:"co_present", name:"Co-Presenter", fee:"Annual — structure TBD", color:C.amber, desc:"Andmore co-presents all three HPMKT activations. Their name is on the event. They promote to their designer database. Their showroom tenants get 48-hour priority to claim stop slots before public release.", gets:[ "Co-presenter title on all 3 HPMKT AI Day activations", "Logo on all event materials, registration pages, and social content", "Andmore showroom tenants get priority stop slot access", "Andmore promotes AI Day in all pre-market designer communications", "Village™ co-founding partner conversation — first right", "Revenue share on stops above a floor (if Option 2 agreed)", ], }, { id:"title", name:"Title Sponsor", fee:"$18,000 / year — all 3 HPMKT events", color:C.terra, desc:"Andmore's name is in the event title. 'AI Day at HPMKT — Presented by Andmore.' Full integration across all marketing. The most visible brand on the circuit.", gets:[ "'Presented by Andmore' in event title across all 3 HPMKT dates", "Full logo integration on registration, social, press materials", "Andmore-hosted opening moment on Day 1 of each event", "Andmore's designer database promoted to first", "Village™ naming rights conversation — permanent campus", ], }, { id:"building", name:"Building Partner", fee:"$8,000 / year", color:C.olive, desc:"Andmore co-presents at the building level. Their showroom infrastructure, their foot traffic context, their marketing reach. AIID runs the event inside it.", gets:[ "Co-presented by Andmore on all HPMKT event materials", "Building-level signage during both market days", "Andmore Markets app promotion to all registered market attendees", "Priority stop slot for Andmore-affiliated showrooms", ], }, ]; // HPMKT specific stops pre-mapped to brands const HPMKT_STOP_PLAN = [ {stop:1, position:"Opening", type:"opening", brands:["Kravet"], solo:true, note:"Fabric to Frame. Jenna opens from Kravet's showroom both days."}, {stop:2, position:"Stop 2", type:"mid", brands:["Feizy","TBD"], solo:false, note:"The Rug Room. Co-sponsor with a complementary textile or floor covering brand."}, {stop:3, position:"Stop 3", type:"mid", brands:["Ferguson"], solo:true, note:"AI for Kitchen + Bath. Artfully Designed co-brand."}, {stop:4, position:"Stop 4", type:"mid", brands:["TBD","TBD"], solo:false, note:"Open co-sponsor stop. Brand Voice or Faster Sourcing topic. Two complementary brands."}, {stop:5, position:"Stop 5", type:"mid", brands:["IDS"], solo:true, note:"IDS co-presenter stop. Where to Begin session. Jenna + IDS coach."}, {stop:6, position:"Closing", type:"closing", brands:["Hooker"], solo:true, note:"AI for Design Firms. Jenna closes from Hooker's showroom both days."}, {stop:"night", position:"Night Event", type:"night", brands:["Kravet","Open"], solo:false, note:"Night event hosted by Kravet with a second brand co-hosting. Open to all of market week."}, ]; const TABS = ["HPMKT Stop Plan","Co-Sponsor Model","Multi-Market Calculator","Andmore Pitch","The Proposal"]; export default function App() { const [tab, setTab] = useState(0); // Calculator state const [selEvents, setSelEvents] = useState(["hp26"]); const [stopType, setStopType] = useState("mid"); const [sponsorType, setSponsorType] = useState("solo"); const [addNight, setAddNight] = useState(false); const [openAndmore, setOpenAndmore] = useState(null); const toggleEvent = (id) => { setSelEvents(s => s.includes(id) ? s.filter(x=>x!==id) : [...s,id]); }; const calc = useMemo(() => { const n = selEvents.length; const tier = MULTI_TIERS.find(t=>t.events===n) || MULTI_TIERS[0]; const stopPremium = STOP_TYPES.find(t=>t.id===stopType)?.premium || 0; const basePerEvent = STOP_RATE + stopPremium; const nightAdd = addNight ? (STOP_RATE + 2500) : 0; const totalPerEvent = basePerEvent + nightAdd; const alaCarte = totalPerEvent * n; const sponsorFactor = sponsorType === "co2" ? 0.5 : 1; const alaCarteBrand = alaCarte * sponsorFactor; const discount = alaCarteBrand * tier.pct; const packageTotal = alaCarteBrand - discount; const perEvent = n > 0 ? packageTotal / n : 0; return { n, tier, alaCarte, alaCarteBrand, discount, packageTotal, perEvent, stopPremium, basePerEvent, totalPerEvent }; }, [selEvents, stopType, sponsorType, addNight]); // Revenue AIID collects per event (both brands if co-sponsor) const aiidCollects = useMemo(() => { const stopPremium = STOP_TYPES.find(t=>t.id===stopType)?.premium || 0; const nightAdd = addNight ? (STOP_RATE + 2500) : 0; // AIID collects full stop fee regardless of split return STOP_RATE + stopPremium + nightAdd; }, [stopType, addNight]); return (
HPMKT + Andmore — Partnership Pitch
{/* Hero */}
HPMKT Oct 2026 Launch
Andmore Co-Presenter
$4,500 per stop.
Split it. Share it. Scale it.
Co-sponsor model. Multi-market savings. Three HPMKT activations.
{[ {val:"$4,500", label:"Per stop rate"}, {val:"$2,250", label:"Co-sponsor split"}, {val:"3", label:"HPMKT markets"}, {val:"20%", label:"3-market savings"}, ].map((s,i)=>(
{s.val}
{s.label}
))}
{/* Tabs */}
{TABS.map((t,i)=>( ))}
{/* ── TAB 0: HPMKT STOP PLAN ── */} {tab===0 && (
Six permanent showroom stops across two days inside High Point Market. Designers pre-register and move through the circuit — each stop is 60 minutes in a brand's own showroom. $4,500 per stop. Solo or co-sponsored. Andmore co-presents at the building level and promotes to their full designer database. {/* Three market events */} Three HPMKT Activations — 2026 + 2027
{HPMKT_EVENTS.map((ev,i)=>(
{ev.label} {ev.role}
{ev.date} · {ev.days} days · {ev.stops} stops
{ev.note}
6 stops
$27K
gross per event
))}
{/* Stop plan for HPMKT */} HPMKT Stop Plan — Per Event
This is the structure for each of the three HPMKT activations. Stop slots carry over from year to year for committed partners — same position, same city, renewal right locked in.
{HPMKT_STOP_PLAN.map((s,i)=>{ const isOpen = s.brands.some(b=>b==="TBD"); const isCo = !s.solo; const stopFeeTotal = s.type==="opening"||s.type==="closing" ? STOP_RATE+1500 : s.type==="night" ? STOP_RATE+2500 : STOP_RATE; const perBrandFee = isCo ? stopFeeTotal/2 : stopFeeTotal; return (
{s.stop}
{s.position} {isCo && CO-SPONSOR} {isOpen && OPEN}
{s.note}
{isCo &&
${stopFeeTotal.toLocaleString()} solo
}
${perBrandFee.toLocaleString()}
{isCo?"per brand":"per stop"}
{/* Brand chips */}
{s.brands.map((brand,j)=>(
{brand} {brand==="TBD" && available}
))}
); })} {/* HPMKT revenue summary */}
AIID Revenue — Per HPMKT Event {[ {item:"4 solo stops @ $4,500", val:18000}, {item:"1 co-sponsor stop (full $4,500)", val:4500}, {item:"Opening premium (Stop 1)", val:1500}, {item:"Closing premium (Stop 6)", val:1500}, {item:"Night event hosting", val:7000}, ].map((r,i)=>(
{r.item} ${r.val.toLocaleString()}
))}
Gross per HPMKT Event
AIID collects regardless of co-sponsor splits
$32,500
)} {/* ── TAB 1: CO-SPONSOR MODEL ── */} {tab===1 && (
One stop. One 60-minute session. Two complementary brands share the space, the audience, and the fee. Each brand pays $2,250 instead of $4,500. AIID collects the full $4,500 regardless. The session is designed to blend both categories — which makes the content richer, not diluted. Solo vs. Co-Sponsor — Side by Side
{[ { type:"Solo Stop", price:4500, perBrand:4500, color:C.amber, pros:["Full 60 minutes — one brand's story","Complete category exclusivity in city","Session topic locked to one product category","Maximum brand focus for designers in room"], best:"Brands with a strong standalone AI story. Opening and closing positions always solo.", }, { type:"Co-Sponsor Stop", price:4500, perBrand:2250, color:C.olive, pros:["Half the investment — $2,250 per brand","Complementary brands add session depth","Shared audience still capped per stop","Both brands named in all marketing for this stop"], best:"Mid-circuit stops where two brands tell the same sourcing story. Rug + fabric. Lighting + hardware. K+B cabinet + countertop.", }, ].map((opt,i)=>(
{opt.type}
${opt.perBrand.toLocaleString()}
per brand · stop total ${opt.price.toLocaleString()}
{opt.pros.map((p,j)=>(
{p}
))}
Best For
{opt.best}
))}
Complementary Co-Sponsor Pairings
The best co-sponsor pairings tell a complete sourcing story together. A designer in the room gets more value from two brands that complement each other than from one brand alone. These pairings are proven material combinations in the design specification process.
{[ { cat:"Material Sourcing",color:C.terra, pairs:[ {a:"Feizy (Rugs)", b:"Kravet (Fabric + Wallcovering)", session:"The complete material palette — floor to wall. AI for sourcing, presenting, and specifying both in one workflow."}, {a:"Any rug brand", b:"Any hardwood / flooring brand", session:"Floor surfaces — AI for comparing, specifying, and presenting layered floor materials to clients."}, ], }, { cat:"Kitchen + Bath",color:C.olive, pairs:[ {a:"Ferguson (Plumbing)", b:"Cabinet / hardware brand", session:"AI for K+B specification — from fixture selection to hardware finish coordination. One workflow, two categories."}, {a:"Countertop brand", b:"Cabinet brand", session:"Surface specification. AI for material boards, client presentations, and lead time tracking."}, ], }, { cat:"Furniture + Accessories",color:C.amber, pairs:[ {a:"Hooker (Furniture)", b:"Howard Elliott (Accessories)", session:"AI for Design Firms — from furniture sourcing to accessory layering. Full room specification in one session."}, {a:"Any seating brand", b:"Any lighting brand", session:"Ambient + functional design. AI for spec documents, lead times, and client communication."}, ], }, ].map((group,gi)=>(
{group.cat} {group.pairs.map((pair,pi)=>(
{pair.a} + {pair.b} $2,250 each
{pair.session}
))}
))} {/* Key rule */}
The Key Rule
AIID always collects the full $4,500 stop fee regardless of how many brands split it. Co-sponsoring is a decision the brands make between themselves. From AIID's perspective, the stop is sold. The session runs. The curriculum is produced. The split is a lower barrier to entry that fills stops faster and creates richer sessions — not a revenue reduction.
)} {/* ── TAB 2: MULTI-MARKET CALCULATOR ── */} {tab===2 && (
Brands that commit to more than one HPMKT activation save on their per-stop investment. Three markets is the founding partner tier — 20% off and your name on the event at every HPMKT activation through 2027. The discount applies to the brand's share, whether they are solo or co-sponsoring. {/* Event selector */} Step 1 — Choose Your HPMKT Markets
{HPMKT_EVENTS.map((ev)=>{ const sel = selEvents.includes(ev.id); return ( ); })}
{/* Stop position */} Step 2 — Stop Position
{STOP_TYPES.filter(t=>t.id!=="night").map(st=>{ const active = stopType===st.id; const total = STOP_RATE + st.premium; return ( ); })}
{/* Co-sponsor toggle */} Step 3 — Solo or Co-Sponsor
{Object.entries(CO_SPONSOR).map(([key,opt])=>{ const active = sponsorType===key; return ( ); })}
{/* Night event toggle */} {/* Results */}
{/* Tier indicator */}
Your Package {calc.tier.badge && {calc.tier.badge}}
{calc.tier.label}
{/* Three number grid */}
Markets
{calc.n}
À La Carte
${calc.alaCarteBrand.toLocaleString()}
Your Total
${Math.round(calc.packageTotal).toLocaleString()}
{calc.discount>0 &&
save ${Math.round(calc.discount).toLocaleString()}
}
{/* Per-event line */}
Per market event ${Math.round(calc.perEvent).toLocaleString()}
{/* Breakdown */} Breakdown {[ {label:`${STOP_TYPES.find(t=>t.id===stopType)?.label} × ${calc.n} markets`, val:`$${calc.alaCarteBrand.toLocaleString()}`}, calc.tier.pct>0 && {label:`${calc.tier.label} discount (${(calc.tier.pct*100).toFixed(0)}%)`, val:`–$${Math.round(calc.discount).toLocaleString()}`, green:true}, ].filter(Boolean).map((r,i)=>(
{r.label} {r.val}
))}
{sponsorType==="co2"?"Your Share (co-sponsor)":"Your Investment"}
{sponsorType==="co2" ? `AIID collects $${aiidCollects*calc.n/1+aiidCollects*0} full stop fees` : "AIID collects full stop fee regardless"}
${Math.round(calc.packageTotal).toLocaleString()}
{/* Tier comparison */} All Tiers — Quick Compare
{["Commitment","Solo / Stop","Co-Sponsor","Savings"].map((h,i)=>(
0?"center":"left"}}>{h}
))}
{MULTI_TIERS.map((tier,i)=>{ const stopFeeWithPos = STOP_RATE + (STOP_TYPES.find(t=>t.id===stopType)?.premium||0); const soloTotal = stopFeeWithPos * tier.events * (1-tier.pct); const coTotal = (stopFeeWithPos/2) * tier.events * (1-tier.pct); return (
{tier.label}
{tier.example}
${soloTotal.toLocaleString()}
${coTotal.toLocaleString()}
{tier.badge ? {tier.badge} : }
); })}
)} {/* ── TAB 3: ANDMORE PITCH ── */} {tab===3 && (
Andmore is not a stop sponsor. They are the co-presenter who sits above every stop. Their name is on the event. Their designer database is the promotion engine. Their showroom tenants get priority access to stop slots. This is an institutional partnership — not a brand stop. Three Partnership Options — Present All Three {ANDMORE_PACKAGES.map((pkg,i)=>{ const open = openAndmore===i; return (
{open && (
{pkg.desc}
What Andmore Gets {pkg.gets.map((item,j)=>(
{item}
))}
)}
); })} {/* How Andmore + stop brands work together */} How the Two Layers Work Together
Andmore Layer vs. Stop Sponsor Layer {[ { role:"Andmore (Building Operator)", color:C.amber, what:"Co-presents the event. Promotes to their designer database. Provides building context and marketing reach. Their showroom tenants get priority to claim stops. Does NOT host a stop — they own the event.", fee:"Building partnership fee or co-presenter structure — TBD", }, { role:"Individual Showroom Brands", color:C.olive, what:"Each pays $4,500 per stop to host a 1-hour AI session in their own showroom. Solo or co-sponsored. Their category is exclusive in their city. They are the content. Andmore brings the audience.", fee:"$4,500 per stop — or $2,250 per brand if co-sponsored", }, ].map((r,i)=>(
{r.role}
{r.what}
{r.fee}
))}
The Opening Line for Andmore
"AI Day is launching at HPMKT in October. I want Andmore's name on it as co-presenter. Your showroom tenants get priority access to stop slots — which means your brands are the first to participate. Your designer database is the promotion list. And this is the model we are expanding to AmericasMart Atlanta and Las Vegas in 2027. I want to build this with Andmore, not around you."
)} {/* ── TAB 4: THE PROPOSAL ── */} {tab===4 && (
One page per partner. Three sections: what the circuit is, what their specific package looks like, and the clear ask with deadline. The numbers are already calculated. The exclusivity is already defined. The proposal is the confirmation of a conversation, not the start of one. Proposal Structure — Per Brand {[ { n:"01", title:"The Circuit", copy:"AI Day is a curated AI education circuit running through permanent design center buildings across 13 cities in 2026–2027. Designers pre-register and move through 4–6 permanent showroom stops per event. Each stop is 60 minutes, tailored to the host brand's category. Free for designers. Fully brand-funded.", color:C.muted, }, { n:"02", title:"Your Package", copy:"[Brand name] hosts [position] stop at [cities/markets]. [Solo/co-sponsor with X]. Your category — [category] — is exclusive in each committed market. No competing brand in your category gets a stop in your city for the year. Your investment: $[X] per market / $[X] total / [discount tier].", color:C.amber, }, { n:"03", title:"What You Get", copy:"60 minutes in your own showroom. Pre-registered designers. AIID curriculum built around your product category. Your brand in all event marketing for your markets. Post-event attendance report within 5 business days. Category exclusivity in each committed market. [Renewal right for 2028 if multi-market].", color:C.olive, }, { n:"04", title:"The Ask", copy:"[Stop position] at [markets] — $[amount]. 50% deposit holds your date and locks exclusivity. Balance due 30 days before first event. Deadline to commit: [date]. After [date] your category opens to other brands.", color:C.terra, }, ].map((s,i)=>(
{s.n}
{s.title}
{s.copy}
))} Quick Proposal — Each Named Brand at HPMKT {[ { brand:"Kravet", position:"Opening Stop", markets:"All 3 HPMKT (Oct 2026 + Apr 2027 + Oct 2027)", type:"solo", feePerMarket: STOP_RATE + 1500, tier:MULTI_TIERS[2], exclusivity:"Fabric + Wallcovering — locked across all three HPMKT activations", ask:"Commit by Aug 15 to be named in all AI Day HPMKT launch marketing.", color:C.amber, }, { brand:"Feizy", position:"Mid-Circuit Stop (The Rug Room)", markets:"All 3 HPMKT — co-sponsor option available", type:"co2", feePerMarket: STOP_RATE / 2, tier:MULTI_TIERS[2], exclusivity:"Rugs + Textiles — exclusive across all three HPMKT activations", ask:"Commit by Aug 15. Solo or co-sponsor with a complementary textile brand — Feizy's choice.", color:C.terra, }, { brand:"Ferguson / Artfully Designed", position:"Mid-Circuit Stop (AI for K+B)", markets:"All 3 HPMKT + attach to Aug engagement", type:"solo", feePerMarket: STOP_RATE, tier:MULTI_TIERS[2], exclusivity:"Kitchen + Bath — locked across HPMKT. Connect to Artfully Designed brand.", ask:"Close in the same call that confirms the August engagement. Don't let the hold expire.", color:C.olive, }, { brand:"Hooker Furniture", position:"Closing Stop", markets:"All 3 HPMKT", type:"solo", feePerMarket: STOP_RATE + 1500, tier:MULTI_TIERS[2], exclusivity:"Furniture — closing stop at all three HPMKT activations", ask:"Commit by Aug 15. The closing position is the most memorable stop. No other furniture brand gets it.", color:C.navy, }, ].map((brand,i)=>{ const alaCarteTotal = brand.feePerMarket * 3; const discount = alaCarteTotal * brand.tier.pct; const total = alaCarteTotal - discount; return (
{brand.brand}
{brand.position}
{brand.markets}
{discount>0 &&
${alaCarteTotal.toLocaleString()}
}
${Math.round(total).toLocaleString()}
{brand.tier.badge}
Exclusivity
{brand.exclusivity}
The Ask
{brand.ask}
); })} {/* Footer CTA */}
Deadline for All HPMKT Launch Partners
August 15, 2026
All stop slots must be committed by August 15 to be named in the September 1 press release and all pre-launch marketing. After August 15, any uncommitted slot opens to other brands in that category. The first brand to commit owns their city.
Partnerships@aiforinteriordesigners.com · Julia Reinert, Director of Partnerships
)}
); }