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 = () => (
);
const Notice = ({accent=C.amber,label,children})=>(
{label}
);
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 (
{/* Hero */}
{/* Tabs */}
{[[18,C.terra],[14,C.amber],[10,C.olive],[7,C.slate]].map(([w,c],i)=>(
Designers™
);
const Eyebrow = ({c=C.muted,mb=6,children})=>(
))}
AI for InteriorDesigners™
{children}
);
const Rule = ({children})=>(
{children}
{children}
HPMKT + Andmore — Partnership Pitch
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.
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.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)=>(
))}
{/* Stop plan for HPMKT */}
HPMKT Stop Plan — Per Event
{/* Brand chips */}
);
})}
{/* 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)=>(
)}
{/* ── 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
{ev.label}
{ev.role}
{ev.date} · {ev.days} days · {ev.stops} stops
{ev.note}
6 stops
$27K
gross 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"}
{s.brands.map((brand,j)=>(
{brand}
{brand==="TBD" && available}
))}
{r.item}
${r.val.toLocaleString()}
))}
Gross per HPMKT Event
AIID collects regardless of co-sponsor splits
$32,500
{[
{
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}
))}
Complementary Co-Sponsor Pairings
{group.cat}
{group.pairs.map((pair,pi)=>(
))}
))}
{/* Key rule */}
The Key Rule
)}
{/* ── 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
Step 2 — Stop Position
Step 3 — Solo or Co-Sponsor
${opt.perBrand.toLocaleString()}
per brand · stop total ${opt.price.toLocaleString()}
{opt.pros.map((p,j)=>(
{p}
))}
Best For
{opt.best}
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)=>(
{pair.a}
+
{pair.b}
$2,250 each
{pair.session}
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.
{HPMKT_EVENTS.map((ev)=>{
const sel = selEvents.includes(ev.id);
return (
);
})}
{/* 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 */}
{Object.entries(CO_SPONSOR).map(([key,opt])=>{
const active = sponsorType===key;
return (
);
})}
{/* Night event toggle */}
